@pierre/diffs 1.5.1 → 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 +2 -1
- package/dist/components/CodeView.d.ts.map +1 -1
- package/dist/components/CodeView.js +27 -16
- package/dist/components/CodeView.js.map +1 -1
- package/dist/components/File.d.ts.map +1 -1
- package/dist/components/File.js +14 -7
- package/dist/components/File.js.map +1 -1
- package/dist/components/FileDiff.d.ts +7 -4
- package/dist/components/FileDiff.d.ts.map +1 -1
- package/dist/components/FileDiff.js +16 -9
- 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/components/VirtualizedFile.d.ts.map +1 -1
- package/dist/components/VirtualizedFile.js +10 -5
- package/dist/components/VirtualizedFile.js.map +1 -1
- package/dist/components/VirtualizedFileDiff.d.ts.map +1 -1
- package/dist/components/VirtualizedFileDiff.js +3 -4
- package/dist/components/VirtualizedFileDiff.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 +10 -3
- package/dist/editor/editor.js.map +1 -1
- package/dist/editor/getChangedDocumentLines.d.ts +6 -0
- package/dist/editor/getChangedDocumentLines.d.ts.map +1 -0
- package/dist/editor/getChangedDocumentLines.js +35 -0
- package/dist/editor/getChangedDocumentLines.js.map +1 -0
- 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 +3 -2
- package/dist/renderers/DiffHunksRenderer.d.ts.map +1 -1
- package/dist/renderers/DiffHunksRenderer.js +50 -24
- 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 +13 -13
- package/dist/types.d.ts.map +1 -1
- package/dist/utils/computeVirtualFileMetrics.d.ts +2 -1
- package/dist/utils/computeVirtualFileMetrics.d.ts.map +1 -1
- package/dist/utils/computeVirtualFileMetrics.js +5 -3
- package/dist/utils/computeVirtualFileMetrics.js.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/getDiffHunksRendererOptions.js +1 -0
- package/dist/utils/getDiffHunksRendererOptions.js.map +1 -1
- package/dist/utils/getFiletypeFromFileName.d.ts.map +1 -1
- package/dist/utils/getFiletypeFromFileName.js +21 -3
- package/dist/utils/getFiletypeFromFileName.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/platform.d.ts +2 -1
- package/dist/utils/platform.d.ts.map +1 -1
- package/dist/utils/platform.js +6 -1
- package/dist/utils/platform.js.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 +10 -2
- package/dist/worker/WorkerPoolManager.d.ts.map +1 -1
- package/dist/worker/WorkerPoolManager.js +85 -60
- package/dist/worker/WorkerPoolManager.js.map +1 -1
- package/dist/worker/errors.d.ts +35 -0
- package/dist/worker/errors.d.ts.map +1 -0
- package/dist/worker/errors.js +52 -0
- package/dist/worker/errors.js.map +1 -0
- 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 +2 -1
- package/dist/worker/index.js +2 -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 +18 -3
- package/dist/worker/types.d.ts.map +1 -1
- package/dist/worker/worker-portable.js +41 -13319
- package/dist/worker/worker-portable.js.map +1 -1
- package/dist/worker/worker.js +693 -352
- 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,14 +1,14 @@
|
|
|
1
1
|
import { DEFAULT_THEMES } from "../constants.js";
|
|
2
|
-
import {
|
|
2
|
+
import { HighlighterDisposedError, resolveHighlighterType } from "../highlighter/highlighterType.js";
|
|
3
3
|
import { getThemes } from "../utils/getThemes.js";
|
|
4
|
-
import {
|
|
5
|
-
import { getSharedHighlighter } from "../highlighter/shared_highlighter.js";
|
|
4
|
+
import { getHighlighterIfLoaded, getSharedHighlighter } from "../highlighter/shared_highlighter.js";
|
|
6
5
|
import { areThemesEqual } from "../utils/areThemesEqual.js";
|
|
7
|
-
import {
|
|
6
|
+
import { areLanguagesAttached } from "../highlighter/languages/areLanguagesAttached.js";
|
|
8
7
|
import { areFileRenderOptionsEqual } from "../utils/areFileRenderOptionsEqual.js";
|
|
9
8
|
import { getCustomExtensionsMap, getCustomExtensionsVersion, getFiletypeFromFileName } from "../utils/getFiletypeFromFileName.js";
|
|
10
9
|
import { isFilePlainText } from "../utils/isFilePlainText.js";
|
|
11
10
|
import { renderFileWithHighlighter } from "../utils/renderFileWithHighlighter.js";
|
|
11
|
+
import { WorkerPoolTaskCanceledError, WorkerPoolTerminatedError, WorkerPoolWorkerError, isHandledWorkerPoolError, markWorkerErrorReported } from "./errors.js";
|
|
12
12
|
import { areDiffTargetsEqual } from "../utils/areDiffTargetsEqual.js";
|
|
13
13
|
import { areFilesEqual } from "../utils/areFilesEqual.js";
|
|
14
14
|
import { areDiffRenderOptionsEqual } from "../utils/areDiffRenderOptionsEqual.js";
|
|
@@ -18,24 +18,15 @@ import { getResolvedLanguages } from "../highlighter/languages/getResolvedLangua
|
|
|
18
18
|
import { hasResolvedLanguages } from "../highlighter/languages/hasResolvedLanguages.js";
|
|
19
19
|
import { resolveLanguages } from "../highlighter/languages/resolveLanguages.js";
|
|
20
20
|
import { getResolvedThemes } from "../highlighter/themes/getResolvedThemes.js";
|
|
21
|
+
import { hasResolvedThemes } from "../highlighter/themes/hasResolvedThemes.js";
|
|
21
22
|
import { resolveThemes } from "../highlighter/themes/resolveThemes.js";
|
|
23
|
+
import { decodeHastLines } from "./hastLinesTransport.js";
|
|
22
24
|
import LRUMapPkg from "lru_map";
|
|
23
25
|
//#region src/worker/WorkerPoolManager.ts
|
|
24
26
|
const IGNORE_RESPONSE = Symbol("IGNORE_RESPONSE");
|
|
25
27
|
const DEFAULT_WORKER_INITIALIZATION_TIMEOUT = 1e4;
|
|
26
|
-
var WorkerPoolTerminatedError = class extends Error {
|
|
27
|
-
constructor() {
|
|
28
|
-
super("WorkerPoolManager: operation canceled because the pool terminated");
|
|
29
|
-
}
|
|
30
|
-
};
|
|
31
|
-
var WorkerPoolTaskCanceledError = class extends Error {
|
|
32
|
-
constructor() {
|
|
33
|
-
super("WorkerPoolManager: operation canceled before the task completed");
|
|
34
|
-
}
|
|
35
|
-
};
|
|
36
28
|
var WorkerPoolManager = class {
|
|
37
29
|
options;
|
|
38
|
-
highlighter;
|
|
39
30
|
preferredHighlighter;
|
|
40
31
|
renderOptions;
|
|
41
32
|
renderOptionsRequestVersion = 0;
|
|
@@ -55,9 +46,9 @@ var WorkerPoolManager = class {
|
|
|
55
46
|
diffCache;
|
|
56
47
|
_queuedBroadcast;
|
|
57
48
|
lifecycleGeneration = 0;
|
|
58
|
-
constructor(options, { langs, theme = DEFAULT_THEMES, useTokenTransformer = false, lineDiffType = "word-alt", maxLineDiffLength = 1e3, tokenizeMaxLineLength = 1e3, preferredHighlighter
|
|
49
|
+
constructor(options, { langs, theme = DEFAULT_THEMES, useTokenTransformer = false, lineDiffType = "word-alt", maxLineDiffLength = 1e3, tokenizeMaxLineLength = 1e3, preferredHighlighter }) {
|
|
59
50
|
this.options = options;
|
|
60
|
-
this.preferredHighlighter = preferredHighlighter;
|
|
51
|
+
this.preferredHighlighter = resolveHighlighterType(preferredHighlighter);
|
|
61
52
|
this.renderOptions = {
|
|
62
53
|
theme,
|
|
63
54
|
useTokenTransformer,
|
|
@@ -115,20 +106,11 @@ var WorkerPoolManager = class {
|
|
|
115
106
|
if (!isCurrentRequest() || areDiffRenderOptionsEqual(newRenderOptions, this.renderOptions)) return;
|
|
116
107
|
const themeNames = getThemes(theme);
|
|
117
108
|
let resolvedThemes = [];
|
|
118
|
-
if (!areThemesEqual(newRenderOptions.theme, this.renderOptions.theme))
|
|
119
|
-
if (hasResolvedThemes(themeNames)) resolvedThemes = getResolvedThemes(themeNames);
|
|
120
|
-
else resolvedThemes = await resolveThemes(themeNames);
|
|
121
|
-
}
|
|
109
|
+
if (!areThemesEqual(newRenderOptions.theme, this.renderOptions.theme)) resolvedThemes = hasResolvedThemes(themeNames, this.preferredHighlighter) ? getResolvedThemes(themeNames, this.preferredHighlighter) : await resolveThemes(themeNames, this.preferredHighlighter);
|
|
122
110
|
if (!isCurrentRequest()) return;
|
|
123
|
-
if (
|
|
124
|
-
|
|
125
|
-
const highlighter = await getSharedHighlighter({
|
|
126
|
-
themes: themeNames,
|
|
127
|
-
langs: ["text"],
|
|
128
|
-
preferredHighlighter: this.preferredHighlighter
|
|
129
|
-
});
|
|
111
|
+
if (getHighlighterIfLoaded({ theme }) == null) {
|
|
112
|
+
await this.loadSharedHighlighter(themeNames, ["text"]);
|
|
130
113
|
if (!isCurrentRequest()) return;
|
|
131
|
-
this.highlighter = highlighter;
|
|
132
114
|
}
|
|
133
115
|
const workerSetup = this.setRenderOptionsOnWorkers(newRenderOptions, resolvedThemes);
|
|
134
116
|
this.renderOptions = newRenderOptions;
|
|
@@ -236,38 +218,32 @@ var WorkerPoolManager = class {
|
|
|
236
218
|
return this.initialized === true;
|
|
237
219
|
}
|
|
238
220
|
async initialize(languages = []) {
|
|
239
|
-
if (this.initialized === true)
|
|
240
|
-
|
|
221
|
+
if (this.initialized === true) {
|
|
222
|
+
if (getHighlighterIfLoaded({ theme: this.renderOptions.theme }) == null) await this.loadSharedHighlighter(getThemes(this.renderOptions.theme), ["text", ...languages]);
|
|
223
|
+
return;
|
|
224
|
+
} else if (this.initialized === false) {
|
|
241
225
|
const { lifecycleGeneration } = this;
|
|
242
|
-
|
|
226
|
+
const initialization = new Promise((resolve, reject) => {
|
|
243
227
|
(async () => {
|
|
244
228
|
try {
|
|
245
229
|
const themes = getThemes(this.renderOptions.theme);
|
|
246
|
-
|
|
247
|
-
if (hasResolvedThemes(themes)) resolvedThemes = getResolvedThemes(themes);
|
|
248
|
-
else resolvedThemes = await resolveThemes(themes);
|
|
230
|
+
const resolvedThemes = hasResolvedThemes(themes, this.preferredHighlighter) ? getResolvedThemes(themes, this.preferredHighlighter) : await resolveThemes(themes, this.preferredHighlighter);
|
|
249
231
|
if (!this.isCurrentLifecycle(lifecycleGeneration)) {
|
|
250
232
|
resolve();
|
|
251
233
|
return;
|
|
252
234
|
}
|
|
253
235
|
let resolvedLanguages = [];
|
|
254
|
-
if (hasResolvedLanguages(languages))
|
|
255
|
-
else resolvedLanguages = await resolveLanguages(languages);
|
|
236
|
+
if (this.preferredHighlighter !== "highlights") resolvedLanguages = hasResolvedLanguages(languages) ? getResolvedLanguages(languages) : await resolveLanguages(languages);
|
|
256
237
|
if (!this.isCurrentLifecycle(lifecycleGeneration)) {
|
|
257
238
|
resolve();
|
|
258
239
|
return;
|
|
259
240
|
}
|
|
260
|
-
|
|
261
|
-
themes,
|
|
262
|
-
langs: ["text", ...languages],
|
|
263
|
-
preferredHighlighter: this.preferredHighlighter
|
|
264
|
-
}), this.initializeWorkers(resolvedThemes, resolvedLanguages)]);
|
|
241
|
+
await Promise.all([this.loadSharedHighlighter(themes, ["text", ...languages]), this.initializeWorkers(resolvedThemes, resolvedLanguages)]);
|
|
265
242
|
if (!this.isCurrentLifecycle(lifecycleGeneration)) {
|
|
266
243
|
this.terminateWorkers();
|
|
267
244
|
resolve();
|
|
268
245
|
return;
|
|
269
246
|
}
|
|
270
|
-
this.highlighter = highlighter;
|
|
271
247
|
this.initialized = true;
|
|
272
248
|
this.diffCache.clear();
|
|
273
249
|
this.fileCache.clear();
|
|
@@ -290,9 +266,22 @@ var WorkerPoolManager = class {
|
|
|
290
266
|
}
|
|
291
267
|
})();
|
|
292
268
|
});
|
|
269
|
+
this.initialized = initialization;
|
|
293
270
|
this.queueBroadcastStateChanges();
|
|
271
|
+
return initialization;
|
|
294
272
|
} else return this.initialized;
|
|
295
273
|
}
|
|
274
|
+
async loadSharedHighlighter(themes, langs) {
|
|
275
|
+
try {
|
|
276
|
+
await getSharedHighlighter({
|
|
277
|
+
themes,
|
|
278
|
+
langs,
|
|
279
|
+
preferredHighlighter: this.preferredHighlighter
|
|
280
|
+
});
|
|
281
|
+
} catch (error) {
|
|
282
|
+
if (!(error instanceof HighlighterDisposedError)) throw error;
|
|
283
|
+
}
|
|
284
|
+
}
|
|
296
285
|
async initializeWorkers(resolvedThemes, resolvedLanguages) {
|
|
297
286
|
this.workersFailed = false;
|
|
298
287
|
const initPromises = [];
|
|
@@ -321,6 +310,7 @@ var WorkerPoolManager = class {
|
|
|
321
310
|
id,
|
|
322
311
|
request: {
|
|
323
312
|
type: "initialize",
|
|
313
|
+
resultFormat: "hast-ops-v1",
|
|
324
314
|
id,
|
|
325
315
|
renderOptions: this.renderOptions,
|
|
326
316
|
preferredHighlighter: this.preferredHighlighter,
|
|
@@ -353,13 +343,29 @@ var WorkerPoolManager = class {
|
|
|
353
343
|
if (timeoutId != null) clearTimeout(timeoutId);
|
|
354
344
|
}
|
|
355
345
|
}
|
|
356
|
-
|
|
357
|
-
|
|
346
|
+
/**
|
|
347
|
+
* Pass worker errors to onWorkerError, or log them if no callback is set.
|
|
348
|
+
*
|
|
349
|
+
* A startup error rejects initialization so components can highlight on the
|
|
350
|
+
* main thread. Other requests wait for their own responses: worker.ts catches
|
|
351
|
+
* request errors, so this event may be unrelated to the current request.
|
|
352
|
+
* A worker that stops responding remains busy and receives no further work.
|
|
353
|
+
*/
|
|
354
|
+
handleWorkerError(managedWorker, event) {
|
|
355
|
+
const { onWorkerError } = this.options;
|
|
356
|
+
if (onWorkerError != null) try {
|
|
357
|
+
onWorkerError(event, managedWorker.worker);
|
|
358
|
+
} catch (hookError) {
|
|
359
|
+
console.error("WorkerPoolManager: onWorkerError threw:", hookError);
|
|
360
|
+
}
|
|
361
|
+
else console.error("Worker error:", event, managedWorker);
|
|
358
362
|
const { pendingSetupRequestId } = managedWorker;
|
|
359
363
|
if (pendingSetupRequestId == null) return;
|
|
360
364
|
const task = this.activeTaskById.get(pendingSetupRequestId);
|
|
361
365
|
if (task?.type !== "initialize") return;
|
|
362
|
-
|
|
366
|
+
const error = errorFromWorkerErrorEvent(event);
|
|
367
|
+
if (onWorkerError != null) markWorkerErrorReported(error);
|
|
368
|
+
task.reject(error);
|
|
363
369
|
this.cleanWorkerAndTask(managedWorker, task);
|
|
364
370
|
}
|
|
365
371
|
drainQueue = () => {
|
|
@@ -414,11 +420,12 @@ var WorkerPoolManager = class {
|
|
|
414
420
|
}
|
|
415
421
|
}
|
|
416
422
|
getPlainFileAST(file, startingLine, totalLines, lines) {
|
|
417
|
-
|
|
423
|
+
const highlighter = getHighlighterIfLoaded({ theme: this.renderOptions.theme });
|
|
424
|
+
if (highlighter == null) {
|
|
418
425
|
this.queueInitialization();
|
|
419
426
|
return;
|
|
420
427
|
}
|
|
421
|
-
return renderFileWithHighlighter(file,
|
|
428
|
+
return renderFileWithHighlighter(file, highlighter, this.renderOptions, {
|
|
422
429
|
forcePlainText: true,
|
|
423
430
|
startingLine,
|
|
424
431
|
totalLines,
|
|
@@ -459,13 +466,18 @@ var WorkerPoolManager = class {
|
|
|
459
466
|
}
|
|
460
467
|
}
|
|
461
468
|
getPlainDiffAST(diff, startingLine, totalLines, expandedHunks, collapsedContextThreshold) {
|
|
462
|
-
|
|
469
|
+
const highlighter = getHighlighterIfLoaded({ theme: this.renderOptions.theme });
|
|
470
|
+
if (highlighter == null) {
|
|
471
|
+
this.queueInitialization();
|
|
472
|
+
return;
|
|
473
|
+
}
|
|
474
|
+
return renderDiffWithHighlighter(diff, highlighter, this.renderOptions, {
|
|
463
475
|
forcePlainText: true,
|
|
464
476
|
startingLine,
|
|
465
477
|
totalLines,
|
|
466
478
|
expandedHunks,
|
|
467
479
|
collapsedContextThreshold
|
|
468
|
-
})
|
|
480
|
+
});
|
|
469
481
|
}
|
|
470
482
|
terminate() {
|
|
471
483
|
this.lifecycleGeneration++;
|
|
@@ -480,7 +492,6 @@ var WorkerPoolManager = class {
|
|
|
480
492
|
this.queuedTaskByInstance.clear();
|
|
481
493
|
this.taskByHighlightKey.clear();
|
|
482
494
|
this.activeTaskById.clear();
|
|
483
|
-
this.highlighter = void 0;
|
|
484
495
|
this.initialized = false;
|
|
485
496
|
this.workersFailed = false;
|
|
486
497
|
this.queueBroadcastStateChanges();
|
|
@@ -490,6 +501,7 @@ var WorkerPoolManager = class {
|
|
|
490
501
|
}
|
|
491
502
|
queueInitialization(languages) {
|
|
492
503
|
this.initialize(languages).catch((error) => {
|
|
504
|
+
if (isHandledWorkerPoolError(error)) return;
|
|
493
505
|
console.error(error);
|
|
494
506
|
});
|
|
495
507
|
}
|
|
@@ -615,15 +627,12 @@ var WorkerPoolManager = class {
|
|
|
615
627
|
}
|
|
616
628
|
async resolveLanguagesAndExecuteTask(availableWorker, task, langs) {
|
|
617
629
|
try {
|
|
618
|
-
const
|
|
619
|
-
|
|
620
|
-
|
|
621
|
-
langs: ["text", ...mainThreadLangs],
|
|
622
|
-
preferredHighlighter: this.preferredHighlighter
|
|
623
|
-
}).catch((error) => {
|
|
630
|
+
const highlighter = getHighlighterIfLoaded();
|
|
631
|
+
const mainThreadLangs = langs.filter((lang) => highlighter == null || !areLanguagesAttached(lang, highlighter));
|
|
632
|
+
if (mainThreadLangs.length > 0) this.loadSharedHighlighter(getThemes(this.renderOptions.theme), ["text", ...mainThreadLangs]).catch((error) => {
|
|
624
633
|
console.error(error);
|
|
625
634
|
});
|
|
626
|
-
const workerMissingLangs = langs.filter((lang) => !availableWorker.langs.has(lang));
|
|
635
|
+
const workerMissingLangs = this.preferredHighlighter === "highlights" ? [] : langs.filter((lang) => !availableWorker.langs.has(lang));
|
|
627
636
|
if (workerMissingLangs.length > 0) {
|
|
628
637
|
if (hasResolvedLanguages(workerMissingLangs)) task.request.resolvedLanguages = getResolvedLanguages(workerMissingLangs);
|
|
629
638
|
else task.request.resolvedLanguages = await resolveLanguages(workerMissingLangs);
|
|
@@ -671,9 +680,13 @@ var WorkerPoolManager = class {
|
|
|
671
680
|
break;
|
|
672
681
|
case "file": {
|
|
673
682
|
if (task.type !== "file") throw new Error("handleWorkerMessage: task/response dont match");
|
|
674
|
-
const {
|
|
683
|
+
const { options } = response;
|
|
675
684
|
if (!this.isCurrentRenderTask(task) || !areFileRenderOptionsEqual(options, this.getFileRenderOptions())) throw IGNORE_RESPONSE;
|
|
676
685
|
const { request } = task;
|
|
686
|
+
const result = {
|
|
687
|
+
...response.result,
|
|
688
|
+
code: decodeHastLines(response.result.code)
|
|
689
|
+
};
|
|
677
690
|
this.syncCustomExtensionVersion(managedWorker, request);
|
|
678
691
|
if (task.cacheKeyAtDispatch != null) this.fileCache.set(task.cacheKeyAtDispatch, {
|
|
679
692
|
result,
|
|
@@ -685,9 +698,16 @@ var WorkerPoolManager = class {
|
|
|
685
698
|
}
|
|
686
699
|
case "diff": {
|
|
687
700
|
if (task.type !== "diff") throw new Error("handleWorkerMessage: task/response dont match");
|
|
688
|
-
const {
|
|
701
|
+
const { options } = response;
|
|
689
702
|
if (!this.isCurrentRenderTask(task) || !areDiffRenderOptionsEqual(options, this.getDiffRenderOptions())) throw IGNORE_RESPONSE;
|
|
690
703
|
const { request } = task;
|
|
704
|
+
const result = {
|
|
705
|
+
...response.result,
|
|
706
|
+
code: {
|
|
707
|
+
deletionLines: decodeHastLines(response.result.code.deletionLines),
|
|
708
|
+
additionLines: decodeHastLines(response.result.code.additionLines)
|
|
709
|
+
}
|
|
710
|
+
};
|
|
691
711
|
this.syncCustomExtensionVersion(managedWorker, request);
|
|
692
712
|
if (task.cacheKeyAtDispatch != null) this.diffCache.set(task.cacheKeyAtDispatch, {
|
|
693
713
|
result,
|
|
@@ -922,6 +942,11 @@ function normalizeWorkerError(error) {
|
|
|
922
942
|
}
|
|
923
943
|
return new Error(String(error));
|
|
924
944
|
}
|
|
945
|
+
function errorFromWorkerErrorEvent(event) {
|
|
946
|
+
const cause = "error" in event ? event.error : void 0;
|
|
947
|
+
const message = "message" in event && typeof event.message === "string" && event.message !== "" ? event.message : cause instanceof Error ? cause.message : "the worker script failed to load (the error event carries no message)";
|
|
948
|
+
return new WorkerPoolWorkerError(`WorkerPoolManager: worker failed: ${message}`, cause instanceof Error ? { cause } : void 0);
|
|
949
|
+
}
|
|
925
950
|
//#endregion
|
|
926
951
|
export { WorkerPoolManager };
|
|
927
952
|
|