jamis
Version:
一种支持通过JSON配置方式生成页面的组件库
47 lines (46 loc) • 1.46 kB
TypeScript
import type { CodeToTokensOptions, GrammarState, HighlighterCore, HighlighterGeneric, ThemedToken } from 'shiki';
export type ShikiStreamTokenizerOptions = CodeToTokensOptions<string, string> & {
highlighter: HighlighterCore | HighlighterGeneric<any, any>;
};
export interface ShikiStreamTokenizerEnqueueResult {
/**
* 要撤回的行数
*/
recall: number;
/**
* 稳定行
*/
stable: ThemedToken[][];
/**
* 不稳定行
*/
unstable: ThemedToken[][];
}
/**
* 修改自 shiki-stream 的 tokenizer。
*
* 和 shiki-stream 实现的不同:
* - tokenizer 会拆分代码块为两个 subtrunk,第一个 subtrunk 可以包含多行。
* - 这个实现可以避免 chunk 过大时引入额外开销。
*/
export declare class ShikiStreamTokenizer {
readonly options: ShikiStreamTokenizerOptions;
linesUnstable: ThemedToken[][];
lastUnstableCodeChunk: string;
lastStableGrammarState: GrammarState | undefined;
constructor(options: ShikiStreamTokenizerOptions);
/**
* 使用 tokenizer 处理一个代码片段。
*/
enqueue(chunk: string): Promise<ShikiStreamTokenizerEnqueueResult>;
close(): {
stable: ThemedToken[][];
};
clear(): void;
}
/**
* 将代码字符串 chunk 按行分割为至多两个 subtrunks
* @param chunk 代码字符串
* @returns subtrunks 数组
*/
export declare function splitToSubTrunks(chunk: string): string[];