@pierre/diffs 1.5.2 → 1.6.0-beta.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +4 -3
- package/dist/components/CodeView.d.ts.map +1 -1
- package/dist/components/CodeView.js +6 -5
- package/dist/components/CodeView.js.map +1 -1
- package/dist/components/File.d.ts.map +1 -1
- package/dist/components/File.js +11 -6
- package/dist/components/File.js.map +1 -1
- package/dist/components/FileDiff.d.ts.map +1 -1
- package/dist/components/FileDiff.js +12 -7
- package/dist/components/FileDiff.js.map +1 -1
- package/dist/components/FileStream.d.ts +6 -4
- package/dist/components/FileStream.d.ts.map +1 -1
- package/dist/components/FileStream.js +49 -36
- package/dist/components/FileStream.js.map +1 -1
- package/dist/constants.d.ts +3 -2
- package/dist/constants.d.ts.map +1 -1
- package/dist/constants.js +2 -1
- package/dist/constants.js.map +1 -1
- package/dist/editor/editor.d.ts +2 -1
- package/dist/editor/editor.d.ts.map +1 -1
- package/dist/editor/editor.js +5 -1
- package/dist/editor/editor.js.map +1 -1
- package/dist/editor/tokenizer.d.ts +6 -4
- package/dist/editor/tokenizer.d.ts.map +1 -1
- package/dist/editor/tokenizer.js +25 -470
- package/dist/editor/tokenizer.js.map +1 -1
- package/dist/highlighter/DiffsEditorTokenizer.d.ts +16 -0
- package/dist/highlighter/DiffsEditorTokenizer.d.ts.map +1 -0
- package/dist/highlighter/DiffsEditorTokenizer.js +0 -0
- package/dist/highlighter/DiffsHighlighter.d.ts +41 -0
- package/dist/highlighter/DiffsHighlighter.d.ts.map +1 -0
- package/dist/highlighter/DiffsHighlighter.js +39 -0
- package/dist/highlighter/DiffsHighlighter.js.map +1 -0
- package/dist/highlighter/backends/highlights.d.ts +26 -0
- package/dist/highlighter/backends/highlights.d.ts.map +1 -0
- package/dist/highlighter/backends/highlights.js +71 -0
- package/dist/highlighter/backends/highlights.js.map +1 -0
- package/dist/highlighter/backends/shiki.d.ts +27 -0
- package/dist/highlighter/backends/shiki.d.ts.map +1 -0
- package/dist/highlighter/backends/shiki.js +107 -0
- package/dist/highlighter/backends/shiki.js.map +1 -0
- package/dist/highlighter/highlighterType.d.ts +13 -0
- package/dist/highlighter/highlighterType.d.ts.map +1 -0
- package/dist/highlighter/highlighterType.js +32 -0
- package/dist/highlighter/highlighterType.js.map +1 -0
- package/dist/highlighter/highlights-editor.d.ts +24 -0
- package/dist/highlighter/highlights-editor.d.ts.map +1 -0
- package/dist/highlighter/highlights-editor.js +166 -0
- package/dist/highlighter/highlights-editor.js.map +1 -0
- package/dist/highlighter/highlights-stream.d.ts +20 -0
- package/dist/highlighter/highlights-stream.d.ts.map +1 -0
- package/dist/highlighter/highlights-stream.js +93 -0
- package/dist/highlighter/highlights-stream.js.map +1 -0
- package/dist/highlighter/languages/areLanguagesAttached.d.ts +2 -1
- package/dist/highlighter/languages/areLanguagesAttached.d.ts.map +1 -1
- package/dist/highlighter/languages/areLanguagesAttached.js +4 -6
- package/dist/highlighter/languages/areLanguagesAttached.js.map +1 -1
- package/dist/highlighter/languages/attachResolvedLanguages.d.ts +6 -1
- package/dist/highlighter/languages/attachResolvedLanguages.d.ts.map +1 -1
- package/dist/highlighter/languages/attachResolvedLanguages.js +6 -11
- package/dist/highlighter/languages/attachResolvedLanguages.js.map +1 -1
- package/dist/highlighter/languages/constants.d.ts +1 -1
- package/dist/highlighter/languages/getResolvedLanguages.d.ts +1 -1
- package/dist/highlighter/languages/getResolvedOrResolveLanguage.d.ts +1 -1
- package/dist/highlighter/languages/resolveLanguage.d.ts +1 -1
- package/dist/highlighter/languages/resolveLanguage.d.ts.map +1 -1
- package/dist/highlighter/languages/resolveLanguage.js +19 -16
- package/dist/highlighter/languages/resolveLanguage.js.map +1 -1
- package/dist/highlighter/languages/resolveLanguages.d.ts +1 -1
- package/dist/highlighter/shared_highlighter.d.ts +23 -9
- package/dist/highlighter/shared_highlighter.d.ts.map +1 -1
- package/dist/highlighter/shared_highlighter.js +59 -47
- package/dist/highlighter/shared_highlighter.js.map +1 -1
- package/dist/highlighter/shiki-editor.d.ts +25 -0
- package/dist/highlighter/shiki-editor.d.ts.map +1 -0
- package/dist/highlighter/shiki-editor.js +483 -0
- package/dist/highlighter/shiki-editor.js.map +1 -0
- package/dist/highlighter/shiki-stream.d.ts +20 -0
- package/dist/highlighter/shiki-stream.d.ts.map +1 -0
- package/dist/highlighter/shiki-stream.js +60 -0
- package/dist/highlighter/shiki-stream.js.map +1 -0
- package/dist/highlighter/stream-tokenizer.d.ts +40 -0
- package/dist/highlighter/stream-tokenizer.d.ts.map +1 -0
- package/dist/highlighter/stream-tokenizer.js +70 -0
- package/dist/highlighter/stream-tokenizer.js.map +1 -0
- package/dist/highlighter/themes/areThemesAttached.d.ts +3 -2
- package/dist/highlighter/themes/areThemesAttached.d.ts.map +1 -1
- package/dist/highlighter/themes/areThemesAttached.js +5 -4
- package/dist/highlighter/themes/areThemesAttached.js.map +1 -1
- package/dist/highlighter/themes/attachResolvedThemes.d.ts +5 -2
- package/dist/highlighter/themes/attachResolvedThemes.d.ts.map +1 -1
- package/dist/highlighter/themes/attachResolvedThemes.js +4 -16
- package/dist/highlighter/themes/attachResolvedThemes.js.map +1 -1
- package/dist/highlighter/themes/cleanUpResolvedThemes.d.ts +3 -1
- package/dist/highlighter/themes/cleanUpResolvedThemes.d.ts.map +1 -1
- package/dist/highlighter/themes/cleanUpResolvedThemes.js +8 -5
- package/dist/highlighter/themes/cleanUpResolvedThemes.js.map +1 -1
- package/dist/highlighter/themes/createCSSVariablesTheme.d.ts +7 -0
- package/dist/highlighter/themes/createCSSVariablesTheme.d.ts.map +1 -0
- package/dist/highlighter/themes/createCSSVariablesTheme.js +89 -0
- package/dist/highlighter/themes/createCSSVariablesTheme.js.map +1 -0
- package/dist/highlighter/themes/createCachedLoader.d.ts +5 -0
- package/dist/highlighter/themes/createCachedLoader.d.ts.map +1 -0
- package/dist/highlighter/themes/createCachedLoader.js +15 -0
- package/dist/highlighter/themes/createCachedLoader.js.map +1 -0
- package/dist/highlighter/themes/getResolvedOrResolveTheme.d.ts +3 -2
- package/dist/highlighter/themes/getResolvedOrResolveTheme.d.ts.map +1 -1
- package/dist/highlighter/themes/getResolvedOrResolveTheme.js +4 -4
- package/dist/highlighter/themes/getResolvedOrResolveTheme.js.map +1 -1
- package/dist/highlighter/themes/getResolvedThemes.d.ts +3 -2
- package/dist/highlighter/themes/getResolvedThemes.d.ts.map +1 -1
- package/dist/highlighter/themes/getResolvedThemes.js +4 -3
- package/dist/highlighter/themes/getResolvedThemes.js.map +1 -1
- package/dist/highlighter/themes/hasResolvedThemes.d.ts +2 -2
- package/dist/highlighter/themes/hasResolvedThemes.d.ts.map +1 -1
- package/dist/highlighter/themes/hasResolvedThemes.js +4 -3
- package/dist/highlighter/themes/hasResolvedThemes.js.map +1 -1
- package/dist/highlighter/themes/registerCustomCSSVariableTheme.d.ts.map +1 -1
- package/dist/highlighter/themes/registerCustomCSSVariableTheme.js +3 -3
- package/dist/highlighter/themes/registerCustomCSSVariableTheme.js.map +1 -1
- package/dist/highlighter/themes/registerCustomTheme.d.ts +9 -4
- package/dist/highlighter/themes/registerCustomTheme.d.ts.map +1 -1
- package/dist/highlighter/themes/registerCustomTheme.js +8 -16
- package/dist/highlighter/themes/registerCustomTheme.js.map +1 -1
- package/dist/highlighter/themes/resolveTheme.d.ts +3 -2
- package/dist/highlighter/themes/resolveTheme.d.ts.map +1 -1
- package/dist/highlighter/themes/resolveTheme.js +4 -7
- package/dist/highlighter/themes/resolveTheme.js.map +1 -1
- package/dist/highlighter/themes/resolveThemes.d.ts +3 -2
- package/dist/highlighter/themes/resolveThemes.d.ts.map +1 -1
- package/dist/highlighter/themes/resolveThemes.js +4 -7
- package/dist/highlighter/themes/resolveThemes.js.map +1 -1
- package/dist/highlighter/themes/themeResolver.d.ts +10 -4
- package/dist/highlighter/themes/themeResolver.d.ts.map +1 -1
- package/dist/highlighter/themes/themeResolver.js +141 -2
- package/dist/highlighter/themes/themeResolver.js.map +1 -1
- package/dist/highlighter/themes/types.d.ts +23 -0
- package/dist/highlighter/themes/types.d.ts.map +1 -0
- package/dist/highlighter/themes/types.js +0 -0
- package/dist/highlighter/tokenizer-types.d.ts +35 -0
- package/dist/highlighter/tokenizer-types.d.ts.map +1 -0
- package/dist/highlighter/tokenizer-types.js +0 -0
- package/dist/highlighter/types.d.ts +55 -0
- package/dist/highlighter/types.d.ts.map +1 -0
- package/dist/highlighter/types.js +0 -0
- package/dist/index.d.ts +14 -10
- package/dist/index.js +16 -18
- package/dist/managers/InteractionManager.d.ts.map +1 -1
- package/dist/managers/InteractionManager.js +2 -2
- package/dist/managers/InteractionManager.js.map +1 -1
- package/dist/node_modules/.pnpm/@types_hast@3.0.4/node_modules/@types/hast/index.d.ts +9 -1
- package/dist/node_modules/.pnpm/@types_hast@3.0.4/node_modules/@types/hast/index.d.ts.map +1 -1
- package/dist/react/CodeView.js +1 -1
- package/dist/react/index.d.ts +8 -3
- package/dist/renderers/DiffHunksRenderer.d.ts +2 -1
- package/dist/renderers/DiffHunksRenderer.d.ts.map +1 -1
- package/dist/renderers/DiffHunksRenderer.js +31 -22
- package/dist/renderers/DiffHunksRenderer.js.map +1 -1
- package/dist/renderers/FileRenderer.d.ts +2 -1
- package/dist/renderers/FileRenderer.d.ts.map +1 -1
- package/dist/renderers/FileRenderer.js +33 -24
- package/dist/renderers/FileRenderer.js.map +1 -1
- package/dist/shiki-stream/index.d.ts +3 -3
- package/dist/shiki-stream/index.js +1 -2
- package/dist/shiki-stream/stream.d.ts +4 -4
- package/dist/shiki-stream/stream.d.ts.map +1 -1
- package/dist/shiki-stream/stream.js +20 -9
- package/dist/shiki-stream/stream.js.map +1 -1
- package/dist/shiki-stream/types.d.ts +7 -38
- package/dist/shiki-stream/types.d.ts.map +1 -1
- package/dist/ssr/FileDiffReact.js +1 -1
- package/dist/ssr/index.d.ts +7 -2
- package/dist/ssr/renderHTML.js +2 -2
- package/dist/ssr/renderHTML.js.map +1 -1
- package/dist/style.js +1 -1
- package/dist/style.js.map +1 -1
- package/dist/types.d.ts +10 -11
- package/dist/types.d.ts.map +1 -1
- package/dist/utils/createSpanNodeFromToken.d.ts +3 -2
- package/dist/utils/createSpanNodeFromToken.d.ts.map +1 -1
- package/dist/utils/createSpanNodeFromToken.js +4 -5
- package/dist/utils/createSpanNodeFromToken.js.map +1 -1
- package/dist/utils/cssWrappers.d.ts.map +1 -1
- package/dist/utils/cssWrappers.js +12 -0
- package/dist/utils/cssWrappers.js.map +1 -1
- package/dist/utils/getHighlighterOptions.d.ts.map +1 -1
- package/dist/utils/getHighlighterOptions.js +3 -2
- package/dist/utils/getHighlighterOptions.js.map +1 -1
- package/dist/utils/getHighlighterThemeStyles.d.ts +2 -1
- package/dist/utils/getHighlighterThemeStyles.d.ts.map +1 -1
- package/dist/utils/getHighlighterThemeStyles.js +13 -3
- package/dist/utils/getHighlighterThemeStyles.js.map +1 -1
- package/dist/utils/getTokenOptions.d.ts +7 -0
- package/dist/utils/getTokenOptions.d.ts.map +1 -0
- package/dist/utils/getTokenOptions.js +16 -0
- package/dist/utils/getTokenOptions.js.map +1 -0
- package/dist/utils/hastToHtml.d.ts +10 -0
- package/dist/utils/hastToHtml.d.ts.map +1 -0
- package/dist/utils/hastToHtml.js +125 -0
- package/dist/utils/hastToHtml.js.map +1 -0
- package/dist/utils/parseDiffDecorations.d.ts +2 -1
- package/dist/utils/parseDiffDecorations.d.ts.map +1 -1
- package/dist/utils/renderDiffWithHighlighter.d.ts +3 -2
- package/dist/utils/renderDiffWithHighlighter.d.ts.map +1 -1
- package/dist/utils/renderDiffWithHighlighter.js +33 -48
- package/dist/utils/renderDiffWithHighlighter.js.map +1 -1
- package/dist/utils/renderFileWithHighlighter.d.ts +3 -2
- package/dist/utils/renderFileWithHighlighter.d.ts.map +1 -1
- package/dist/utils/renderFileWithHighlighter.js +10 -26
- package/dist/utils/renderFileWithHighlighter.js.map +1 -1
- package/dist/utils/renderTokenLines.d.ts +17 -0
- package/dist/utils/renderTokenLines.d.ts.map +1 -0
- package/dist/utils/renderTokenLines.js +246 -0
- package/dist/utils/renderTokenLines.js.map +1 -0
- package/dist/utils/resolvePreferredHighlighter.d.ts +13 -0
- package/dist/utils/resolvePreferredHighlighter.d.ts.map +1 -0
- package/dist/utils/resolvePreferredHighlighter.js +11 -0
- package/dist/utils/resolvePreferredHighlighter.js.map +1 -0
- package/dist/utils/setDeferredArrayItem.d.ts +5 -0
- package/dist/utils/setDeferredArrayItem.d.ts.map +1 -0
- package/dist/utils/setDeferredArrayItem.js +39 -0
- package/dist/utils/setDeferredArrayItem.js.map +1 -0
- package/dist/utils/tokenStyle.d.ts +7 -0
- package/dist/utils/tokenStyle.d.ts.map +1 -0
- package/dist/utils/tokenStyle.js +28 -0
- package/dist/utils/tokenStyle.js.map +1 -0
- package/dist/utils/tokensToHtml.d.ts +8 -0
- package/dist/utils/tokensToHtml.d.ts.map +1 -0
- package/dist/utils/tokensToHtml.js +45 -0
- package/dist/utils/tokensToHtml.js.map +1 -0
- package/dist/utils/wrapTokenFragments.js.map +1 -1
- package/dist/worker/WorkerPoolManager.d.ts +2 -2
- package/dist/worker/WorkerPoolManager.d.ts.map +1 -1
- package/dist/worker/WorkerPoolManager.js +56 -46
- package/dist/worker/WorkerPoolManager.js.map +1 -1
- package/dist/worker/hastLinesTransport.d.ts +14 -0
- package/dist/worker/hastLinesTransport.d.ts.map +1 -0
- package/dist/worker/hastLinesTransport.js +156 -0
- package/dist/worker/hastLinesTransport.js.map +1 -0
- package/dist/worker/highlights-sAHlxqlf.js +317 -0
- package/dist/worker/highlights-sAHlxqlf.js.map +1 -0
- package/dist/worker/index.d.ts +1 -1
- package/dist/worker/shiki-Bx2JpdqZ.js +697 -0
- package/dist/worker/shiki-Bx2JpdqZ.js.map +1 -0
- package/dist/worker/stream-tokenizer-YZ6M1qSx.js +424 -0
- package/dist/worker/stream-tokenizer-YZ6M1qSx.js.map +1 -0
- package/dist/worker/types.d.ts +5 -3
- package/dist/worker/types.d.ts.map +1 -1
- package/dist/worker/worker-portable.js +41 -13337
- package/dist/worker/worker-portable.js.map +1 -1
- package/dist/worker/worker.js +672 -349
- package/dist/worker/worker.js.map +1 -1
- package/dist/worker/workerMessage.d.ts +24 -0
- package/dist/worker/workerMessage.d.ts.map +1 -0
- package/dist/worker/workerMessage.js +0 -0
- package/package.json +33 -29
- package/dist/highlighter/themes/constants.d.ts +0 -5
- package/dist/highlighter/themes/constants.d.ts.map +0 -1
- package/dist/highlighter/themes/constants.js +0 -6
- package/dist/highlighter/themes/constants.js.map +0 -1
- package/dist/highlighter/themes/themeResolution.d.ts +0 -7
- package/dist/highlighter/themes/themeResolution.d.ts.map +0 -1
- package/dist/highlighter/themes/themeResolution.js +0 -21
- package/dist/highlighter/themes/themeResolution.js.map +0 -1
- package/dist/shiki-stream/tokenizer.d.ts +0 -23
- package/dist/shiki-stream/tokenizer.d.ts.map +0 -1
- package/dist/shiki-stream/tokenizer.js +0 -72
- package/dist/shiki-stream/tokenizer.js.map +0 -1
- package/dist/utils/createTransformerWithState.d.ts +0 -12
- package/dist/utils/createTransformerWithState.d.ts.map +0 -1
- package/dist/utils/createTransformerWithState.js +0 -89
- package/dist/utils/createTransformerWithState.js.map +0 -1
- package/dist/worker/wasm-B9ZqxnKj.js +0 -8
- package/dist/worker/wasm-B9ZqxnKj.js.map +0 -1
|
@@ -1,70 +1,82 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { attachResolvedLanguages } from "./languages/attachResolvedLanguages.js";
|
|
1
|
+
import { HighlighterDisposedError, acquireHighlighterType, getHighlighterType, releaseHighlighterType, resolveHighlighterType } from "./highlighterType.js";
|
|
3
2
|
import { cleanUpResolvedLanguages } from "./languages/cleanUpResolvedLanguages.js";
|
|
4
|
-
import { getResolvedOrResolveLanguage } from "./languages/getResolvedOrResolveLanguage.js";
|
|
5
3
|
import { areThemesAttached } from "./themes/areThemesAttached.js";
|
|
6
|
-
import { themeResolver } from "./themes/themeResolver.js";
|
|
7
|
-
import { attachResolvedThemes } from "./themes/attachResolvedThemes.js";
|
|
8
4
|
import { cleanUpResolvedThemes } from "./themes/cleanUpResolvedThemes.js";
|
|
9
|
-
import { getResolvedOrResolveTheme } from "./themes/getResolvedOrResolveTheme.js";
|
|
10
|
-
import { createHighlighter, createJavaScriptRegexEngine, createOnigurumaEngine } from "shiki";
|
|
11
|
-
import { pierreThemes } from "@pierre/theming/themes";
|
|
12
5
|
//#region src/highlighter/shared_highlighter.ts
|
|
13
6
|
let highlighter;
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
7
|
+
/**
|
|
8
|
+
* Creates an instance the caller must dispose. Defaults to the active type
|
|
9
|
+
* or DEFAULT_HIGHLIGHTER; rejects if a different type is already active.
|
|
10
|
+
*/
|
|
11
|
+
async function createHighlighter(type) {
|
|
12
|
+
const resolvedType = resolveHighlighterType(type);
|
|
13
|
+
acquireHighlighterType(resolvedType);
|
|
14
|
+
try {
|
|
15
|
+
if (resolvedType === "highlights") {
|
|
16
|
+
const { HighlightsHighlighter } = await import("./backends/highlights.js");
|
|
17
|
+
return new HighlightsHighlighter();
|
|
18
|
+
}
|
|
19
|
+
const { ShikiHighlighter } = await import("./backends/shiki.js");
|
|
20
|
+
return await ShikiHighlighter.create(resolvedType);
|
|
21
|
+
} finally {
|
|
22
|
+
releaseHighlighterType();
|
|
28
23
|
}
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
24
|
+
}
|
|
25
|
+
async function getSharedHighlighter({ themes, langs, preferredHighlighter }) {
|
|
26
|
+
dropDisposedHighlighter();
|
|
27
|
+
const cached = highlighter ??= createHighlighter(getHighlighterType() ?? preferredHighlighter);
|
|
28
|
+
let instance;
|
|
29
|
+
try {
|
|
30
|
+
instance = await cached;
|
|
31
|
+
} catch (error) {
|
|
32
|
+
if (highlighter === cached) highlighter = void 0;
|
|
33
|
+
throw error;
|
|
34
34
|
}
|
|
35
|
-
if (
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
attachResolvedThemes(themes, instance);
|
|
39
|
-
})]);
|
|
35
|
+
if (highlighter === cached) highlighter = instance;
|
|
36
|
+
await Promise.all([instance.themeResolver.resolveThemes(themes), instance.loadLanguages(langs)]);
|
|
37
|
+
if (instance.isDisposed) throw new HighlighterDisposedError();
|
|
40
38
|
return instance;
|
|
41
39
|
}
|
|
42
|
-
function
|
|
43
|
-
|
|
40
|
+
function dropDisposedHighlighter() {
|
|
41
|
+
if (highlighter != null && !("then" in highlighter) && highlighter.isDisposed) highlighter = void 0;
|
|
42
|
+
}
|
|
43
|
+
function isHighlighterLoaded() {
|
|
44
|
+
dropDisposedHighlighter();
|
|
45
|
+
return highlighter != null && !("then" in highlighter);
|
|
44
46
|
}
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
47
|
+
/**
|
|
48
|
+
* Returns undefined if the theme or language is not loaded.
|
|
49
|
+
*/
|
|
50
|
+
function getHighlighterIfLoaded({ theme, lang } = {}) {
|
|
51
|
+
dropDisposedHighlighter();
|
|
52
|
+
const instance = highlighter;
|
|
53
|
+
if (instance == null || "then" in instance || theme != null && !areThemesAttached(theme, instance) || lang != null && !instance.hasLoadedLanguages([lang])) return;
|
|
54
|
+
return instance;
|
|
49
55
|
}
|
|
50
|
-
function isHighlighterLoading(
|
|
51
|
-
return
|
|
56
|
+
function isHighlighterLoading() {
|
|
57
|
+
return highlighter != null && "then" in highlighter;
|
|
52
58
|
}
|
|
53
|
-
function isHighlighterNull(
|
|
54
|
-
|
|
59
|
+
function isHighlighterNull() {
|
|
60
|
+
dropDisposedHighlighter();
|
|
61
|
+
return highlighter == null;
|
|
55
62
|
}
|
|
56
63
|
async function preloadHighlighter(options) {
|
|
57
64
|
await getSharedHighlighter(options);
|
|
58
65
|
}
|
|
66
|
+
/**
|
|
67
|
+
* Disposes an already loaded shared instance synchronously and clears caches.
|
|
68
|
+
* Instances from createHighlighter() must be disposed separately before
|
|
69
|
+
* switching types.
|
|
70
|
+
*/
|
|
59
71
|
async function disposeHighlighter() {
|
|
60
|
-
|
|
61
|
-
|
|
72
|
+
const cached = highlighter;
|
|
73
|
+
highlighter = void 0;
|
|
62
74
|
cleanUpResolvedLanguages();
|
|
63
75
|
cleanUpResolvedThemes();
|
|
64
|
-
|
|
76
|
+
if (cached != null && "then" in cached) (await cached.catch(() => void 0))?.dispose();
|
|
77
|
+
else cached?.dispose();
|
|
65
78
|
}
|
|
66
|
-
for (const descriptor of pierreThemes.getThemes()) themeResolver.registerThemeIfAbsent(descriptor.name, descriptor.load);
|
|
67
79
|
//#endregion
|
|
68
|
-
export { disposeHighlighter, getHighlighterIfLoaded, getSharedHighlighter, isHighlighterLoaded, isHighlighterLoading, isHighlighterNull, preloadHighlighter };
|
|
80
|
+
export { HighlighterDisposedError, createHighlighter, disposeHighlighter, getHighlighterIfLoaded, getHighlighterType, getSharedHighlighter, isHighlighterLoaded, isHighlighterLoading, isHighlighterNull, preloadHighlighter };
|
|
69
81
|
|
|
70
82
|
//# sourceMappingURL=shared_highlighter.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shared_highlighter.js","names":[],"sources":["../../src/highlighter/shared_highlighter.ts"],"sourcesContent":["import type {
|
|
1
|
+
{"version":3,"file":"shared_highlighter.js","names":[],"sources":["../../src/highlighter/shared_highlighter.ts"],"sourcesContent":["import type {\n DiffsHighlighter,\n DiffsThemeNames,\n HighlighterTypes,\n SupportedLanguages,\n ThemesType,\n} from '../types';\nimport {\n acquireHighlighterType,\n getHighlighterType,\n HighlighterDisposedError,\n releaseHighlighterType,\n resolveHighlighterType,\n} from './highlighterType';\nimport { cleanUpResolvedLanguages } from './languages/cleanUpResolvedLanguages';\nimport { areThemesAttached } from './themes/areThemesAttached';\nimport { cleanUpResolvedThemes } from './themes/cleanUpResolvedThemes';\n\nexport {\n getHighlighterType,\n HighlighterDisposedError,\n} from './highlighterType';\n\nlet highlighter: DiffsHighlighter | Promise<DiffsHighlighter> | undefined;\n\nexport interface HighlighterOptions {\n themes: DiffsThemeNames[];\n langs: SupportedLanguages[];\n preferredHighlighter?: HighlighterTypes;\n}\n\n/**\n * Creates an instance the caller must dispose. Defaults to the active type\n * or DEFAULT_HIGHLIGHTER; rejects if a different type is already active.\n */\nexport async function createHighlighter(\n type?: HighlighterTypes\n): Promise<DiffsHighlighter> {\n const resolvedType = resolveHighlighterType(type);\n // Reserve the type before importing to prevent concurrent backend loads.\n acquireHighlighterType(resolvedType);\n try {\n if (resolvedType === 'highlights') {\n const { HighlightsHighlighter } = await import('./backends/highlights');\n return new HighlightsHighlighter();\n }\n const { ShikiHighlighter } = await import('./backends/shiki');\n return await ShikiHighlighter.create(resolvedType);\n } finally {\n releaseHighlighterType();\n }\n}\n\nexport async function getSharedHighlighter({\n themes,\n langs,\n preferredHighlighter,\n}: HighlighterOptions): Promise<DiffsHighlighter> {\n dropDisposedHighlighter();\n const cached = (highlighter ??= createHighlighter(\n getHighlighterType() ?? preferredHighlighter\n ));\n let instance: DiffsHighlighter;\n try {\n instance = await cached;\n } catch (error) {\n // Allow retries without clearing a newer request.\n if (highlighter === cached) {\n highlighter = undefined;\n }\n throw error;\n }\n if (highlighter === cached) {\n highlighter = instance;\n }\n await Promise.all([\n instance.themeResolver.resolveThemes(themes),\n instance.loadLanguages(langs),\n ]);\n // disposeHighlighter() may run while themes and languages load.\n if (instance.isDisposed) {\n throw new HighlighterDisposedError();\n }\n return instance;\n}\n\n// Direct dispose() calls leave the shared reference pointing to a dead instance.\nfunction dropDisposedHighlighter(): void {\n if (\n highlighter != null &&\n !('then' in highlighter) &&\n highlighter.isDisposed\n ) {\n highlighter = undefined;\n }\n}\n\nexport function isHighlighterLoaded(): boolean {\n dropDisposedHighlighter();\n return highlighter != null && !('then' in highlighter);\n}\n\ninterface GetHighlighterIfLoadedProps {\n theme?: DiffsThemeNames | ThemesType;\n lang?: SupportedLanguages;\n}\n\n/**\n * Returns undefined if the theme or language is not loaded.\n */\nexport function getHighlighterIfLoaded({\n theme,\n lang,\n}: GetHighlighterIfLoadedProps = {}): DiffsHighlighter | undefined {\n dropDisposedHighlighter();\n const instance = highlighter;\n if (\n instance == null ||\n 'then' in instance ||\n (theme != null && !areThemesAttached(theme, instance)) ||\n (lang != null && !instance.hasLoadedLanguages([lang]))\n ) {\n return undefined;\n }\n return instance;\n}\n\nexport function isHighlighterLoading(): boolean {\n return highlighter != null && 'then' in highlighter;\n}\n\nexport function isHighlighterNull(): boolean {\n dropDisposedHighlighter();\n return highlighter == null;\n}\n\nexport async function preloadHighlighter(\n options: HighlighterOptions\n): Promise<void> {\n await getSharedHighlighter(options);\n}\n\n/**\n * Disposes an already loaded shared instance synchronously and clears caches.\n * Instances from createHighlighter() must be disposed separately before\n * switching types.\n */\nexport async function disposeHighlighter(): Promise<void> {\n const cached = highlighter;\n highlighter = undefined;\n cleanUpResolvedLanguages();\n cleanUpResolvedThemes();\n if (cached != null && 'then' in cached) {\n // A failed initialization has nothing to dispose.\n (await cached.catch(() => undefined))?.dispose();\n } else {\n cached?.dispose();\n }\n}\n"],"mappings":";;;;;AAuBA,IAAI;;;;;AAYJ,eAAsB,kBACpB,MAC2B;CAC3B,MAAM,eAAe,uBAAuB,IAAI;CAEhD,uBAAuB,YAAY;CACnC,IAAI;EACF,IAAI,iBAAiB,cAAc;GACjC,MAAM,EAAE,0BAA0B,MAAM,OAAO;GAC/C,OAAO,IAAI,sBAAsB;EACnC;EACA,MAAM,EAAE,qBAAqB,MAAM,OAAO;EAC1C,OAAO,MAAM,iBAAiB,OAAO,YAAY;CACnD,UAAU;EACR,uBAAuB;CACzB;AACF;AAEA,eAAsB,qBAAqB,EACzC,QACA,OACA,wBACgD;CAChD,wBAAwB;CACxB,MAAM,SAAU,gBAAgB,kBAC9B,mBAAmB,KAAK,oBAC1B;CACA,IAAI;CACJ,IAAI;EACF,WAAW,MAAM;CACnB,SAAS,OAAO;EAEd,IAAI,gBAAgB,QAClB,cAAc,KAAA;EAEhB,MAAM;CACR;CACA,IAAI,gBAAgB,QAClB,cAAc;CAEhB,MAAM,QAAQ,IAAI,CAChB,SAAS,cAAc,cAAc,MAAM,GAC3C,SAAS,cAAc,KAAK,CAC9B,CAAC;CAED,IAAI,SAAS,YACX,MAAM,IAAI,yBAAyB;CAErC,OAAO;AACT;AAGA,SAAS,0BAAgC;CACvC,IACE,eAAe,QACf,EAAE,UAAU,gBACZ,YAAY,YAEZ,cAAc,KAAA;AAElB;AAEA,SAAgB,sBAA+B;CAC7C,wBAAwB;CACxB,OAAO,eAAe,QAAQ,EAAE,UAAU;AAC5C;;;;AAUA,SAAgB,uBAAuB,EACrC,OACA,SAC+B,CAAC,GAAiC;CACjE,wBAAwB;CACxB,MAAM,WAAW;CACjB,IACE,YAAY,QACZ,UAAU,YACT,SAAS,QAAQ,CAAC,kBAAkB,OAAO,QAAQ,KACnD,QAAQ,QAAQ,CAAC,SAAS,mBAAmB,CAAC,IAAI,CAAC,GAEpD;CAEF,OAAO;AACT;AAEA,SAAgB,uBAAgC;CAC9C,OAAO,eAAe,QAAQ,UAAU;AAC1C;AAEA,SAAgB,oBAA6B;CAC3C,wBAAwB;CACxB,OAAO,eAAe;AACxB;AAEA,eAAsB,mBACpB,SACe;CACf,MAAM,qBAAqB,OAAO;AACpC;;;;;;AAOA,eAAsB,qBAAoC;CACxD,MAAM,SAAS;CACf,cAAc,KAAA;CACd,yBAAyB;CACzB,sBAAsB;CACtB,IAAI,UAAU,QAAQ,UAAU,QAE9B,CAAC,MAAM,OAAO,YAAY,KAAA,CAAS,EAAA,EAAI,QAAQ;MAE/C,QAAQ,QAAQ;AAEpB"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { DiffsEditorTokenizer } from "./DiffsEditorTokenizer.js";
|
|
2
|
+
import { DiffsEditorTokenizerOptions } from "./tokenizer-types.js";
|
|
3
|
+
import { DiffsHighlighter } from "./DiffsHighlighter.js";
|
|
4
|
+
import "./types.js";
|
|
5
|
+
import { HighlightedToken, RenderRange } from "../types.js";
|
|
6
|
+
import { TextDocumentChange } from "../editor/textDocument.js";
|
|
7
|
+
import { HighlighterCore } from "shiki/core";
|
|
8
|
+
//#region src/highlighter/shiki-editor.d.ts
|
|
9
|
+
/** TextMate state caching and background work for a single editable document. */
|
|
10
|
+
declare class ShikiEditorTokenizer implements DiffsEditorTokenizer {
|
|
11
|
+
#private;
|
|
12
|
+
private readonly backend?;
|
|
13
|
+
getStringCommentRegexpRangesInLine(lineIndex: number): [number, number][] | null;
|
|
14
|
+
constructor(highlighter: HighlighterCore, options: DiffsEditorTokenizerOptions, backend?: Pick<DiffsHighlighter, 'getTheme' | 'loadLanguages'> | undefined);
|
|
15
|
+
setTheme(themeName: string): void;
|
|
16
|
+
dispose(): void;
|
|
17
|
+
tokenize(change: TextDocumentChange, renderRange?: RenderRange, hostRealignsRows?: boolean): Map<number, Array<HighlightedToken>>;
|
|
18
|
+
prebuildStateStack(renderRange?: RenderRange): void;
|
|
19
|
+
stopBackgroundTokenize(): void;
|
|
20
|
+
pauseBackgroundTokenize(): void;
|
|
21
|
+
resumeBackgroundTokenize(): void;
|
|
22
|
+
}
|
|
23
|
+
//#endregion
|
|
24
|
+
export { ShikiEditorTokenizer };
|
|
25
|
+
//# sourceMappingURL=shiki-editor.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"shiki-editor.d.ts","names":[],"sources":["../../src/highlighter/shiki-editor.ts"],"mappings":";;;;;;;;;cAoBa,gCAAgC;;mBAwGxB;EA1BnB,mCACE;EAsBF,YACE,aAAa,iBACb,SAAS,6BACQ,UAAU,KACzB;EAiBJ,SAAS;EA0BT;EAOA,SACE,QAAQ,oBACR,cAAc,aACd,6BACC,YAAY,MAAM;EAwOrB,mBAAmB,cAAc;EAKjC;EAiBA;EAYA"}
|