@pierre/diffs 1.1.0-beta.6 → 1.1.0-beta.8
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/dist/components/AdvancedVirtualizedFileDiff.d.ts +40 -0
- package/dist/components/AdvancedVirtualizedFileDiff.d.ts.map +1 -0
- package/dist/components/AdvancedVirtualizedFileDiff.js +145 -0
- package/dist/components/AdvancedVirtualizedFileDiff.js.map +1 -0
- package/dist/components/AdvancedVirtualizer.d.ts +38 -0
- package/dist/components/AdvancedVirtualizer.d.ts.map +1 -0
- package/dist/components/AdvancedVirtualizer.js +201 -0
- package/dist/components/AdvancedVirtualizer.js.map +1 -0
- package/dist/components/File.d.ts +58 -33
- package/dist/components/File.d.ts.map +1 -1
- package/dist/components/File.js +223 -22
- package/dist/components/File.js.map +1 -1
- package/dist/components/FileDiff.d.ts +42 -16
- package/dist/components/FileDiff.d.ts.map +1 -1
- package/dist/components/FileDiff.js +505 -65
- package/dist/components/FileDiff.js.map +1 -1
- package/dist/components/FileStream.d.ts +5 -0
- package/dist/components/FileStream.d.ts.map +1 -1
- package/dist/components/FileStream.js +66 -8
- package/dist/components/FileStream.js.map +1 -1
- package/dist/components/VirtualizedFile.d.ts +33 -0
- package/dist/components/VirtualizedFile.d.ts.map +1 -0
- package/dist/components/VirtualizedFile.js +227 -0
- package/dist/components/VirtualizedFile.js.map +1 -0
- package/dist/components/VirtualizedFileDiff.d.ts +39 -0
- package/dist/components/VirtualizedFileDiff.d.ts.map +1 -0
- package/dist/components/VirtualizedFileDiff.js +316 -0
- package/dist/components/VirtualizedFileDiff.js.map +1 -0
- package/dist/components/Virtualizer.d.ts +63 -0
- package/dist/components/Virtualizer.d.ts.map +1 -0
- package/dist/components/Virtualizer.js +369 -0
- package/dist/components/Virtualizer.js.map +1 -0
- package/dist/components/VirtulizerDevelopment.d.ts +14 -0
- package/dist/components/VirtulizerDevelopment.d.ts.map +1 -0
- package/dist/components/web-components.d.ts +1 -1
- package/dist/components/web-components.d.ts.map +1 -1
- package/dist/constants.d.ts +4 -7
- package/dist/constants.d.ts.map +1 -1
- package/dist/constants.js +14 -6
- package/dist/constants.js.map +1 -1
- package/dist/highlighter/languages/areLanguagesAttached.d.ts.map +1 -1
- package/dist/highlighter/languages/attachResolvedLanguages.d.ts.map +1 -1
- package/dist/highlighter/languages/cleanUpResolvedLanguages.d.ts.map +1 -1
- package/dist/highlighter/languages/constants.d.ts.map +1 -1
- package/dist/highlighter/languages/getResolvedLanguages.d.ts.map +1 -1
- package/dist/highlighter/languages/getResolvedOrResolveLanguage.d.ts +1 -1
- package/dist/highlighter/languages/getResolvedOrResolveLanguage.d.ts.map +1 -1
- package/dist/highlighter/languages/hasResolvedLanguages.d.ts.map +1 -1
- package/dist/highlighter/languages/registerCustomLanguage.d.ts +11 -4
- package/dist/highlighter/languages/registerCustomLanguage.d.ts.map +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/resolveLanguages.d.ts.map +1 -1
- package/dist/highlighter/shared_highlighter.d.ts.map +1 -1
- package/dist/highlighter/shared_highlighter.js.map +1 -1
- package/dist/highlighter/themes/areThemesAttached.d.ts.map +1 -1
- package/dist/highlighter/themes/attachResolvedThemes.d.ts.map +1 -1
- package/dist/highlighter/themes/cleanUpResolvedThemes.d.ts.map +1 -1
- package/dist/highlighter/themes/constants.d.ts.map +1 -1
- package/dist/highlighter/themes/getResolvedOrResolveTheme.d.ts.map +1 -1
- package/dist/highlighter/themes/getResolvedThemes.d.ts.map +1 -1
- package/dist/highlighter/themes/hasResolvedThemes.d.ts.map +1 -1
- package/dist/highlighter/themes/registerCustomCSSVariableTheme.d.ts.map +1 -1
- package/dist/highlighter/themes/registerCustomTheme.d.ts.map +1 -1
- package/dist/highlighter/themes/resolveTheme.d.ts.map +1 -1
- package/dist/highlighter/themes/resolveThemes.d.ts.map +1 -1
- package/dist/index.d.ts +13 -10
- package/dist/index.js +10 -7
- package/dist/managers/LineSelectionManager.d.ts +14 -15
- package/dist/managers/LineSelectionManager.d.ts.map +1 -1
- package/dist/managers/LineSelectionManager.js +60 -71
- package/dist/managers/LineSelectionManager.js.map +1 -1
- package/dist/managers/MouseEventManager.d.ts +13 -6
- package/dist/managers/MouseEventManager.d.ts.map +1 -1
- package/dist/managers/MouseEventManager.js +161 -47
- package/dist/managers/MouseEventManager.js.map +1 -1
- package/dist/managers/ResizeManager.d.ts +6 -1
- package/dist/managers/ResizeManager.d.ts.map +1 -1
- package/dist/managers/ResizeManager.js +114 -64
- package/dist/managers/ResizeManager.js.map +1 -1
- package/dist/managers/ScrollSyncManager.d.ts.map +1 -1
- package/dist/managers/UniversalRenderingManager.d.ts.map +1 -1
- package/dist/react/File.d.ts +1 -0
- package/dist/react/File.d.ts.map +1 -1
- package/dist/react/File.js +2 -1
- package/dist/react/File.js.map +1 -1
- package/dist/react/FileDiff.d.ts +1 -0
- package/dist/react/FileDiff.d.ts.map +1 -1
- package/dist/react/FileDiff.js +2 -1
- package/dist/react/FileDiff.js.map +1 -1
- package/dist/react/MultiFileDiff.d.ts +1 -0
- package/dist/react/MultiFileDiff.d.ts.map +1 -1
- package/dist/react/MultiFileDiff.js +2 -1
- package/dist/react/MultiFileDiff.js.map +1 -1
- package/dist/react/PatchDiff.d.ts +1 -0
- package/dist/react/PatchDiff.d.ts.map +1 -1
- package/dist/react/PatchDiff.js +3 -2
- package/dist/react/PatchDiff.js.map +1 -1
- package/dist/react/Virtualizer.d.ts +25 -0
- package/dist/react/Virtualizer.d.ts.map +1 -0
- package/dist/react/Virtualizer.js +38 -0
- package/dist/react/Virtualizer.js.map +1 -0
- package/dist/react/WorkerPoolContext.d.ts.map +1 -1
- package/dist/react/WorkerPoolContext.js +1 -1
- package/dist/react/WorkerPoolContext.js.map +1 -1
- package/dist/react/constants.d.ts.map +1 -1
- package/dist/react/index.d.ts +3 -2
- package/dist/react/index.js +2 -1
- package/dist/react/jsx.d.ts.map +1 -1
- package/dist/react/types.d.ts +5 -3
- package/dist/react/types.d.ts.map +1 -1
- package/dist/react/utils/renderDiffChildren.d.ts +5 -5
- package/dist/react/utils/renderDiffChildren.d.ts.map +1 -1
- package/dist/react/utils/renderFileChildren.d.ts +5 -5
- package/dist/react/utils/renderFileChildren.d.ts.map +1 -1
- package/dist/react/utils/templateRender.d.ts.map +1 -1
- package/dist/react/utils/useFileDiffInstance.d.ts +5 -3
- package/dist/react/utils/useFileDiffInstance.d.ts.map +1 -1
- package/dist/react/utils/useFileDiffInstance.js +6 -2
- package/dist/react/utils/useFileDiffInstance.js.map +1 -1
- package/dist/react/utils/useFileInstance.d.ts +5 -3
- package/dist/react/utils/useFileInstance.d.ts.map +1 -1
- package/dist/react/utils/useFileInstance.js +6 -2
- package/dist/react/utils/useFileInstance.js.map +1 -1
- package/dist/react/utils/useStableCallback.d.ts.map +1 -1
- package/dist/react/utils/useStableCallback.js.map +1 -1
- package/dist/renderers/DiffHunksRenderer.d.ts +15 -10
- package/dist/renderers/DiffHunksRenderer.d.ts.map +1 -1
- package/dist/renderers/DiffHunksRenderer.js +240 -136
- package/dist/renderers/DiffHunksRenderer.js.map +1 -1
- package/dist/renderers/FileRenderer.d.ts +12 -5
- package/dist/renderers/FileRenderer.d.ts.map +1 -1
- package/dist/renderers/FileRenderer.js +90 -31
- package/dist/renderers/FileRenderer.js.map +1 -1
- package/dist/shiki-stream/stream.d.ts +2 -2
- package/dist/shiki-stream/stream.d.ts.map +1 -1
- package/dist/shiki-stream/stream.js.map +1 -1
- package/dist/shiki-stream/tokenizer.d.ts +2 -2
- package/dist/shiki-stream/tokenizer.d.ts.map +1 -1
- package/dist/shiki-stream/tokenizer.js.map +1 -1
- package/dist/shiki-stream/types.d.ts +18 -18
- package/dist/shiki-stream/types.d.ts.map +1 -1
- package/dist/sprite.d.ts +1 -1
- package/dist/sprite.d.ts.map +1 -1
- package/dist/ssr/FileDiffReact.d.ts.map +1 -1
- package/dist/ssr/FileDiffReact.js +1 -1
- package/dist/ssr/index.d.ts +2 -2
- package/dist/ssr/preloadDiffs.d.ts.map +1 -1
- package/dist/ssr/preloadFile.d.ts.map +1 -1
- package/dist/ssr/preloadPatchFile.d.ts.map +1 -1
- package/dist/ssr/preloadPatchFile.js.map +1 -1
- package/dist/ssr/renderHTML.d.ts.map +1 -1
- package/dist/style.js +1 -1
- package/dist/style.js.map +1 -1
- package/dist/types.d.ts +191 -172
- package/dist/types.d.ts.map +1 -1
- package/dist/utils/areDiffLineAnnotationsEqual.d.ts.map +1 -1
- package/dist/utils/areDiffLineAnnotationsEqual.js.map +1 -1
- package/dist/utils/areFilesEqual.d.ts.map +1 -1
- package/dist/utils/areHunkDataEqual.d.ts.map +1 -1
- package/dist/utils/areLineAnnotationsEqual.d.ts.map +1 -1
- package/dist/utils/areObjectsEqual.d.ts.map +1 -1
- package/dist/utils/areOptionsEqual.d.ts +1 -1
- package/dist/utils/areOptionsEqual.d.ts.map +1 -1
- package/dist/utils/arePrePropertiesEqual.d.ts.map +1 -1
- package/dist/utils/arePrePropertiesEqual.js +1 -1
- package/dist/utils/arePrePropertiesEqual.js.map +1 -1
- package/dist/utils/areRenderRangesEqual.d.ts.map +1 -1
- package/dist/utils/areSelectionsEqual.d.ts.map +1 -1
- package/dist/utils/areThemesEqual.d.ts.map +1 -1
- package/dist/utils/areVirtualWindowSpecsEqual.d.ts.map +1 -1
- package/dist/utils/areWorkerStatsEqual.d.ts.map +1 -1
- package/dist/utils/cleanLastNewline.d.ts.map +1 -1
- package/dist/utils/createAnnotationElement.d.ts.map +1 -1
- package/dist/utils/createAnnotationWrapperNode.d.ts.map +1 -1
- package/dist/utils/createContentColumn.d.ts +7 -0
- package/dist/utils/createContentColumn.d.ts.map +1 -0
- package/dist/utils/createContentColumn.js +17 -0
- package/dist/utils/createContentColumn.js.map +1 -0
- package/dist/utils/createEmptyRowBuffer.d.ts.map +1 -1
- package/dist/utils/createEmptyRowBuffer.js +2 -1
- package/dist/utils/createEmptyRowBuffer.js.map +1 -1
- package/dist/utils/createFileHeaderElement.d.ts.map +1 -1
- package/dist/utils/createHoverContentNode.d.ts.map +1 -1
- package/dist/utils/createNoNewlineElement.d.ts +2 -1
- package/dist/utils/createNoNewlineElement.d.ts.map +1 -1
- package/dist/utils/createNoNewlineElement.js +3 -6
- package/dist/utils/createNoNewlineElement.js.map +1 -1
- package/dist/utils/createPreElement.d.ts +2 -1
- package/dist/utils/createPreElement.d.ts.map +1 -1
- package/dist/utils/createPreElement.js +4 -3
- package/dist/utils/createPreElement.js.map +1 -1
- package/dist/utils/createRowNodes.d.ts.map +1 -1
- package/dist/utils/createSeparator.d.ts.map +1 -1
- package/dist/utils/createSeparator.js +1 -1
- package/dist/utils/createSeparator.js.map +1 -1
- package/dist/utils/createSpanNodeFromToken.d.ts.map +1 -1
- package/dist/utils/createSpanNodeFromToken.js.map +1 -1
- package/dist/utils/createStyleElement.d.ts.map +1 -1
- package/dist/utils/createTransformerWithState.d.ts.map +1 -1
- package/dist/utils/createUnsafeCSSStyleNode.d.ts.map +1 -1
- package/dist/utils/createWindowFromScrollPosition.d.ts.map +1 -1
- package/dist/utils/cssWrappers.d.ts.map +1 -1
- package/dist/utils/diffAcceptRejectHunk.d.ts +1 -1
- package/dist/utils/diffAcceptRejectHunk.d.ts.map +1 -1
- package/dist/utils/formatCSSVariablePrefix.d.ts +1 -1
- package/dist/utils/formatCSSVariablePrefix.d.ts.map +1 -1
- package/dist/utils/getFiletypeFromFileName.d.ts.map +1 -1
- package/dist/utils/getHighlighterOptions.d.ts.map +1 -1
- package/dist/utils/getHighlighterThemeStyles.d.ts.map +1 -1
- package/dist/utils/getHunkSeparatorSlotName.d.ts +3 -1
- package/dist/utils/getHunkSeparatorSlotName.d.ts.map +1 -1
- package/dist/utils/getHunkSeparatorSlotName.js.map +1 -1
- package/dist/utils/getIconForType.d.ts +1 -1
- package/dist/utils/getIconForType.d.ts.map +1 -1
- package/dist/utils/getLineAnnotationName.d.ts.map +1 -1
- package/dist/utils/getLineEndingType.d.ts +1 -1
- package/dist/utils/getLineEndingType.d.ts.map +1 -1
- package/dist/utils/getLineNodes.d.ts.map +1 -1
- package/dist/utils/getOrCreateCodeNode.d.ts +4 -2
- package/dist/utils/getOrCreateCodeNode.d.ts.map +1 -1
- package/dist/utils/getOrCreateCodeNode.js +9 -6
- package/dist/utils/getOrCreateCodeNode.js.map +1 -1
- package/dist/utils/getSingularPatch.d.ts.map +1 -1
- package/dist/utils/getThemes.d.ts.map +1 -1
- package/dist/utils/getTotalLineCountFromHunks.d.ts.map +1 -1
- package/dist/utils/hast_utils.d.ts +6 -3
- package/dist/utils/hast_utils.d.ts.map +1 -1
- package/dist/utils/hast_utils.js +28 -4
- package/dist/utils/hast_utils.js.map +1 -1
- package/dist/utils/isDefaultRenderRange.d.ts.map +1 -1
- package/dist/utils/isWorkerContext.d.ts.map +1 -1
- package/dist/utils/iterateOverDiff.d.ts +26 -13
- package/dist/utils/iterateOverDiff.d.ts.map +1 -1
- package/dist/utils/iterateOverDiff.js +94 -55
- package/dist/utils/iterateOverDiff.js.map +1 -1
- package/dist/utils/iterateOverFile.d.ts +50 -0
- package/dist/utils/iterateOverFile.d.ts.map +1 -0
- package/dist/utils/iterateOverFile.js +49 -0
- package/dist/utils/iterateOverFile.js.map +1 -0
- package/dist/utils/parseDiffDecorations.d.ts.map +1 -1
- package/dist/utils/parseDiffFromFile.d.ts +6 -6
- package/dist/utils/parseDiffFromFile.d.ts.map +1 -1
- package/dist/utils/parseDiffFromFile.js +3 -2
- package/dist/utils/parseDiffFromFile.js.map +1 -1
- package/dist/utils/parseLineType.d.ts +1 -1
- package/dist/utils/parseLineType.d.ts.map +1 -1
- package/dist/utils/parsePatchFiles.d.ts +12 -10
- package/dist/utils/parsePatchFiles.d.ts.map +1 -1
- package/dist/utils/parsePatchFiles.js +16 -9
- package/dist/utils/parsePatchFiles.js.map +1 -1
- package/dist/utils/prerenderHTMLIfNecessary.d.ts.map +1 -1
- package/dist/utils/processLine.d.ts.map +1 -1
- package/dist/utils/processLine.js +7 -24
- package/dist/utils/processLine.js.map +1 -1
- package/dist/utils/renderDiffWithHighlighter.d.ts +2 -2
- package/dist/utils/renderDiffWithHighlighter.d.ts.map +1 -1
- package/dist/utils/renderDiffWithHighlighter.js +15 -14
- package/dist/utils/renderDiffWithHighlighter.js.map +1 -1
- package/dist/utils/renderFileWithHighlighter.d.ts +7 -2
- package/dist/utils/renderFileWithHighlighter.d.ts.map +1 -1
- package/dist/utils/renderFileWithHighlighter.js +30 -4
- package/dist/utils/renderFileWithHighlighter.js.map +1 -1
- package/dist/utils/resolveVirtualFileMetrics.d.ts +7 -0
- package/dist/utils/resolveVirtualFileMetrics.d.ts.map +1 -0
- package/dist/utils/resolveVirtualFileMetrics.js +24 -0
- package/dist/utils/resolveVirtualFileMetrics.js.map +1 -0
- package/dist/utils/setLanguageOverride.d.ts.map +1 -1
- package/dist/utils/setWrapperNodeProps.d.ts +1 -0
- package/dist/utils/setWrapperNodeProps.d.ts.map +1 -1
- package/dist/utils/setWrapperNodeProps.js +19 -12
- package/dist/utils/setWrapperNodeProps.js.map +1 -1
- package/dist/utils/splitFileContents.d.ts +12 -0
- package/dist/utils/splitFileContents.d.ts.map +1 -0
- package/dist/utils/splitFileContents.js +17 -0
- package/dist/utils/splitFileContents.js.map +1 -0
- package/dist/utils/trimPatchContext.d.ts +5 -5
- package/dist/utils/trimPatchContext.d.ts.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 +36 -24
- package/dist/worker/WorkerPoolManager.js.map +1 -1
- package/dist/worker/getOrCreateWorkerPoolSingleton.d.ts.map +1 -1
- package/dist/worker/getOrCreateWorkerPoolSingleton.js.map +1 -1
- package/dist/worker/types.d.ts +26 -26
- package/dist/worker/types.d.ts.map +1 -1
- package/dist/worker/worker-portable.js +323 -143
- package/dist/worker/worker-portable.js.map +1 -1
- package/dist/worker/worker.js +206 -106
- package/dist/worker/worker.js.map +1 -1
- package/package.json +52 -53
package/dist/worker/worker.js
CHANGED
|
@@ -4,6 +4,7 @@ import { diffChars, diffWordsWithSpace } from "diff";
|
|
|
4
4
|
import { transformerStyleToClass } from "@shikijs/transformers";
|
|
5
5
|
|
|
6
6
|
//#region src/constants.ts
|
|
7
|
+
const SPLIT_WITH_NEWLINES = /(?<=\n)/;
|
|
7
8
|
const DEFAULT_THEMES = {
|
|
8
9
|
dark: "pierre-dark",
|
|
9
10
|
light: "pierre-light"
|
|
@@ -74,14 +75,6 @@ function createTextNodeElement(value) {
|
|
|
74
75
|
value
|
|
75
76
|
};
|
|
76
77
|
}
|
|
77
|
-
function createHastElement({ tagName, children = [], properties = {} }) {
|
|
78
|
-
return {
|
|
79
|
-
type: "element",
|
|
80
|
-
tagName,
|
|
81
|
-
properties,
|
|
82
|
-
children
|
|
83
|
-
};
|
|
84
|
-
}
|
|
85
78
|
function findCodeElement(nodes) {
|
|
86
79
|
let firstChild = nodes.children[0];
|
|
87
80
|
while (firstChild != null) {
|
|
@@ -104,30 +97,13 @@ function processLine(node, line, state) {
|
|
|
104
97
|
});
|
|
105
98
|
throw new Error(errorMessage);
|
|
106
99
|
}
|
|
107
|
-
node.tagName = "
|
|
108
|
-
node.properties["data-
|
|
100
|
+
node.tagName = "div";
|
|
101
|
+
node.properties["data-line"] = lineInfo.lineNumber;
|
|
102
|
+
node.properties["data-alt-line"] = lineInfo.altLineNumber;
|
|
103
|
+
node.properties["data-line-type"] = lineInfo.type;
|
|
104
|
+
node.properties["data-line-index"] = lineInfo.lineIndex;
|
|
109
105
|
if (node.children.length === 0) node.children.push(createTextNodeElement("\n"));
|
|
110
|
-
return
|
|
111
|
-
tagName: "div",
|
|
112
|
-
children: [createHastElement({
|
|
113
|
-
tagName: "span",
|
|
114
|
-
children: [createHastElement({
|
|
115
|
-
tagName: "span",
|
|
116
|
-
children: [{
|
|
117
|
-
type: "text",
|
|
118
|
-
value: `${lineInfo.lineNumber}`
|
|
119
|
-
}],
|
|
120
|
-
properties: { "data-line-number-content": "" }
|
|
121
|
-
})],
|
|
122
|
-
properties: { "data-column-number": "" }
|
|
123
|
-
}), node],
|
|
124
|
-
properties: {
|
|
125
|
-
"data-line": lineInfo.lineNumber,
|
|
126
|
-
"data-alt-line": lineInfo.altLineNumber,
|
|
127
|
-
"data-line-type": lineInfo.type,
|
|
128
|
-
"data-line-index": lineInfo.lineIndex
|
|
129
|
-
}
|
|
130
|
-
});
|
|
106
|
+
return node;
|
|
131
107
|
}
|
|
132
108
|
|
|
133
109
|
//#endregion
|
|
@@ -668,16 +644,21 @@ function iterateOverDiff({ diff, diffStyle, startingLine = 0, totalLines = Infin
|
|
|
668
644
|
hunk,
|
|
669
645
|
collapsedBefore: 0,
|
|
670
646
|
collapsedAfter: 0,
|
|
671
|
-
unifiedDeletionLineIndex: unifiedLineIndex$1 + index,
|
|
672
|
-
unifiedAdditionLineIndex: unifiedLineIndex$1 + index,
|
|
673
|
-
splitLineIndex: splitLineIndex$1 + index,
|
|
674
|
-
deletionLineIndex: deletionLineIndex$1 + index,
|
|
675
|
-
additionLineIndex: additionLineIndex$1 + index,
|
|
676
|
-
deletionLineNumber: deletionLineNumber$1 + index,
|
|
677
|
-
additionLineNumber: additionLineNumber$1 + index,
|
|
678
647
|
type: "context-expanded",
|
|
679
|
-
|
|
680
|
-
|
|
648
|
+
deletionLine: {
|
|
649
|
+
lineNumber: deletionLineNumber$1 + index,
|
|
650
|
+
lineIndex: deletionLineIndex$1 + index,
|
|
651
|
+
noEOFCR: false,
|
|
652
|
+
unifiedLineIndex: unifiedLineIndex$1 + index,
|
|
653
|
+
splitLineIndex: splitLineIndex$1 + index
|
|
654
|
+
},
|
|
655
|
+
additionLine: {
|
|
656
|
+
unifiedLineIndex: unifiedLineIndex$1 + index,
|
|
657
|
+
splitLineIndex: splitLineIndex$1 + index,
|
|
658
|
+
lineIndex: additionLineIndex$1 + index,
|
|
659
|
+
lineNumber: additionLineNumber$1 + index,
|
|
660
|
+
noEOFCR: false
|
|
661
|
+
}
|
|
681
662
|
})) break hunkIterator;
|
|
682
663
|
} else state.incrementCounts(1, 1);
|
|
683
664
|
index++;
|
|
@@ -696,16 +677,21 @@ function iterateOverDiff({ diff, diffStyle, startingLine = 0, totalLines = Infin
|
|
|
696
677
|
hunk,
|
|
697
678
|
collapsedBefore: getPendingCollapsed(),
|
|
698
679
|
collapsedAfter: 0,
|
|
699
|
-
unifiedDeletionLineIndex: unifiedLineIndex$1 + index,
|
|
700
|
-
unifiedAdditionLineIndex: unifiedLineIndex$1 + index,
|
|
701
|
-
splitLineIndex: splitLineIndex$1 + index,
|
|
702
|
-
deletionLineIndex: deletionLineIndex$1 + index,
|
|
703
|
-
additionLineIndex: additionLineIndex$1 + index,
|
|
704
|
-
deletionLineNumber: deletionLineNumber$1 + index,
|
|
705
|
-
additionLineNumber: additionLineNumber$1 + index,
|
|
706
680
|
type: "context-expanded",
|
|
707
|
-
|
|
708
|
-
|
|
681
|
+
deletionLine: {
|
|
682
|
+
lineNumber: deletionLineNumber$1 + index,
|
|
683
|
+
lineIndex: deletionLineIndex$1 + index,
|
|
684
|
+
noEOFCR: false,
|
|
685
|
+
unifiedLineIndex: unifiedLineIndex$1 + index,
|
|
686
|
+
splitLineIndex: splitLineIndex$1 + index
|
|
687
|
+
},
|
|
688
|
+
additionLine: {
|
|
689
|
+
unifiedLineIndex: unifiedLineIndex$1 + index,
|
|
690
|
+
splitLineIndex: splitLineIndex$1 + index,
|
|
691
|
+
lineIndex: additionLineIndex$1 + index,
|
|
692
|
+
lineNumber: additionLineNumber$1 + index,
|
|
693
|
+
noEOFCR: false
|
|
694
|
+
}
|
|
709
695
|
})) break hunkIterator;
|
|
710
696
|
} else state.incrementCounts(1, 1);
|
|
711
697
|
index++;
|
|
@@ -737,16 +723,21 @@ function iterateOverDiff({ diff, diffStyle, startingLine = 0, totalLines = Infin
|
|
|
737
723
|
hunk,
|
|
738
724
|
collapsedBefore: getPendingCollapsed(),
|
|
739
725
|
collapsedAfter: getTrailingCollapsedAfter(unifiedRowIndex, splitRowIndex),
|
|
740
|
-
unifiedDeletionLineIndex: unifiedRowIndex,
|
|
741
|
-
unifiedAdditionLineIndex: unifiedRowIndex,
|
|
742
|
-
splitLineIndex: splitRowIndex,
|
|
743
|
-
deletionLineIndex: deletionLineIndex + index,
|
|
744
|
-
additionLineIndex: additionLineIndex + index,
|
|
745
|
-
deletionLineNumber: deletionLineNumber + index,
|
|
746
|
-
additionLineNumber: additionLineNumber + index,
|
|
747
726
|
type: "context",
|
|
748
|
-
|
|
749
|
-
|
|
727
|
+
deletionLine: {
|
|
728
|
+
lineNumber: deletionLineNumber + index,
|
|
729
|
+
lineIndex: deletionLineIndex + index,
|
|
730
|
+
noEOFCR: isLastLine && hunk.noEOFCRDeletions,
|
|
731
|
+
unifiedLineIndex: unifiedRowIndex,
|
|
732
|
+
splitLineIndex: splitRowIndex
|
|
733
|
+
},
|
|
734
|
+
additionLine: {
|
|
735
|
+
unifiedLineIndex: unifiedRowIndex,
|
|
736
|
+
splitLineIndex: splitRowIndex,
|
|
737
|
+
lineIndex: additionLineIndex + index,
|
|
738
|
+
lineNumber: additionLineNumber + index,
|
|
739
|
+
noEOFCR: isLastLine && hunk.noEOFCRAdditions
|
|
740
|
+
}
|
|
750
741
|
})) break hunkIterator;
|
|
751
742
|
} else state.incrementCounts(1, 1);
|
|
752
743
|
index++;
|
|
@@ -811,16 +802,21 @@ function iterateOverDiff({ diff, diffStyle, startingLine = 0, totalLines = Infin
|
|
|
811
802
|
hunk: void 0,
|
|
812
803
|
collapsedBefore: 0,
|
|
813
804
|
collapsedAfter: isLastLine ? collapsedLines : 0,
|
|
814
|
-
unifiedDeletionLineIndex: unifiedLineIndex + index,
|
|
815
|
-
unifiedAdditionLineIndex: unifiedLineIndex + index,
|
|
816
|
-
splitLineIndex: splitLineIndex + index,
|
|
817
|
-
additionLineIndex: additionLineIndex + index,
|
|
818
|
-
deletionLineIndex: deletionLineIndex + index,
|
|
819
|
-
additionLineNumber: additionLineNumber + index,
|
|
820
|
-
deletionLineNumber: deletionLineNumber + index,
|
|
821
805
|
type: "context-expanded",
|
|
822
|
-
|
|
823
|
-
|
|
806
|
+
deletionLine: {
|
|
807
|
+
lineNumber: deletionLineNumber + index,
|
|
808
|
+
lineIndex: deletionLineIndex + index,
|
|
809
|
+
noEOFCR: false,
|
|
810
|
+
unifiedLineIndex: unifiedLineIndex + index,
|
|
811
|
+
splitLineIndex: splitLineIndex + index
|
|
812
|
+
},
|
|
813
|
+
additionLine: {
|
|
814
|
+
unifiedLineIndex: unifiedLineIndex + index,
|
|
815
|
+
splitLineIndex: splitLineIndex + index,
|
|
816
|
+
lineIndex: additionLineIndex + index,
|
|
817
|
+
lineNumber: additionLineNumber + index,
|
|
818
|
+
noEOFCR: false
|
|
819
|
+
}
|
|
824
820
|
})) break hunkIterator;
|
|
825
821
|
} else state.incrementCounts(1, 1);
|
|
826
822
|
index++;
|
|
@@ -899,37 +895,56 @@ function getChangeIterationRanges(state, content, diffStyle) {
|
|
|
899
895
|
return merged;
|
|
900
896
|
}
|
|
901
897
|
function getChangeLineData({ hunkIndex, hunk, collapsedAfter, collapsedBefore, diffStyle, index, unifiedLineIndex, splitLineIndex, additionLineIndex, deletionLineIndex, additionLineNumber, deletionLineNumber, content, isLastContent, unifiedCount, splitCount }) {
|
|
902
|
-
|
|
898
|
+
const unifiedDeletionLineIndex = index < content.deletions ? unifiedLineIndex + index : void 0;
|
|
899
|
+
const unifiedAdditionLineIndex = diffStyle === "unified" ? index >= content.deletions ? unifiedLineIndex + index : void 0 : index < content.additions ? unifiedLineIndex + content.deletions + index : void 0;
|
|
900
|
+
const resolvedSplitLineIndex = diffStyle === "unified" ? splitLineIndex + (index < content.deletions ? index : index - content.deletions) : splitLineIndex + index;
|
|
901
|
+
const deletionLineIndexValue = index < content.deletions ? deletionLineIndex + index : void 0;
|
|
902
|
+
const deletionLineNumberValue = index < content.deletions ? deletionLineNumber + index : void 0;
|
|
903
|
+
const additionLineIndexValue = diffStyle === "unified" ? index >= content.deletions ? additionLineIndex + (index - content.deletions) : void 0 : index < content.additions ? additionLineIndex + index : void 0;
|
|
904
|
+
const additionLineNumberValue = diffStyle === "unified" ? index >= content.deletions ? additionLineNumber + (index - content.deletions) : void 0 : index < content.additions ? additionLineNumber + index : void 0;
|
|
905
|
+
const noEOFCRDeletion = diffStyle === "unified" ? isLastContent && index === content.deletions - 1 && hunk.noEOFCRDeletions : isLastContent && index === splitCount - 1 && hunk.noEOFCRDeletions;
|
|
906
|
+
const noEOFCRAddition = diffStyle === "unified" ? isLastContent && index === unifiedCount - 1 && hunk.noEOFCRAdditions : isLastContent && index === splitCount - 1 && hunk.noEOFCRAdditions;
|
|
907
|
+
const deletionLine = deletionLineIndexValue != null && deletionLineNumberValue != null && unifiedDeletionLineIndex != null ? {
|
|
908
|
+
lineNumber: deletionLineNumberValue,
|
|
909
|
+
lineIndex: deletionLineIndexValue,
|
|
910
|
+
noEOFCR: noEOFCRDeletion,
|
|
911
|
+
unifiedLineIndex: unifiedDeletionLineIndex,
|
|
912
|
+
splitLineIndex: resolvedSplitLineIndex
|
|
913
|
+
} : void 0;
|
|
914
|
+
const additionLine = additionLineIndexValue != null && additionLineNumberValue != null && unifiedAdditionLineIndex != null ? {
|
|
915
|
+
unifiedLineIndex: unifiedAdditionLineIndex,
|
|
916
|
+
splitLineIndex: resolvedSplitLineIndex,
|
|
917
|
+
lineIndex: additionLineIndexValue,
|
|
918
|
+
lineNumber: additionLineNumberValue,
|
|
919
|
+
noEOFCR: noEOFCRAddition
|
|
920
|
+
} : void 0;
|
|
921
|
+
if (deletionLine == null && additionLine != null) return {
|
|
922
|
+
type: "change",
|
|
923
|
+
hunkIndex,
|
|
924
|
+
hunk,
|
|
925
|
+
collapsedAfter,
|
|
926
|
+
collapsedBefore,
|
|
927
|
+
deletionLine: void 0,
|
|
928
|
+
additionLine
|
|
929
|
+
};
|
|
930
|
+
else if (deletionLine != null && additionLine == null) return {
|
|
903
931
|
type: "change",
|
|
904
932
|
hunkIndex,
|
|
905
933
|
hunk,
|
|
906
934
|
collapsedAfter,
|
|
907
935
|
collapsedBefore,
|
|
908
|
-
|
|
909
|
-
|
|
910
|
-
splitLineIndex: splitLineIndex + (index < content.deletions ? index : index - content.deletions),
|
|
911
|
-
additionLineIndex: index >= content.deletions ? additionLineIndex + (index - content.deletions) : void 0,
|
|
912
|
-
additionLineNumber: index >= content.deletions ? additionLineNumber + (index - content.deletions) : void 0,
|
|
913
|
-
deletionLineIndex: index < content.deletions ? deletionLineIndex + index : void 0,
|
|
914
|
-
deletionLineNumber: index < content.deletions ? deletionLineNumber + index : void 0,
|
|
915
|
-
noEOFCRDeletion: isLastContent && index === content.deletions - 1 && hunk.noEOFCRDeletions,
|
|
916
|
-
noEOFCRAddition: isLastContent && index === unifiedCount - 1 && hunk.noEOFCRAdditions
|
|
936
|
+
deletionLine,
|
|
937
|
+
additionLine: void 0
|
|
917
938
|
};
|
|
939
|
+
if (deletionLine == null || additionLine == null) throw new Error("iterateOverDiff: missing change line data");
|
|
918
940
|
return {
|
|
919
941
|
type: "change",
|
|
920
942
|
hunkIndex,
|
|
921
943
|
hunk,
|
|
922
944
|
collapsedAfter,
|
|
923
945
|
collapsedBefore,
|
|
924
|
-
|
|
925
|
-
|
|
926
|
-
splitLineIndex: splitLineIndex + index,
|
|
927
|
-
additionLineIndex: index < content.additions ? additionLineIndex + index : void 0,
|
|
928
|
-
additionLineNumber: index < content.additions ? additionLineNumber + index : void 0,
|
|
929
|
-
deletionLineIndex: index < content.deletions ? deletionLineIndex + index : void 0,
|
|
930
|
-
deletionLineNumber: index < content.deletions ? deletionLineNumber + index : void 0,
|
|
931
|
-
noEOFCRDeletion: isLastContent && index === splitCount - 1 && hunk.noEOFCRDeletions,
|
|
932
|
-
noEOFCRAddition: isLastContent && index === splitCount - 1 && hunk.noEOFCRAdditions
|
|
946
|
+
deletionLine,
|
|
947
|
+
additionLine
|
|
933
948
|
};
|
|
934
949
|
}
|
|
935
950
|
|
|
@@ -965,8 +980,8 @@ function pushOrJoinSpan({ item, arr, enableJoin, isNeutral = false, isLastItem =
|
|
|
965
980
|
|
|
966
981
|
//#endregion
|
|
967
982
|
//#region src/utils/renderDiffWithHighlighter.ts
|
|
968
|
-
const DEFAULT_PLAIN_TEXT_OPTIONS = { forcePlainText: false };
|
|
969
|
-
function renderDiffWithHighlighter(diff, highlighter$1, options, { forcePlainText, startingLine, totalLines, expandedHunks, collapsedContextThreshold = DEFAULT_COLLAPSED_CONTEXT_THRESHOLD } = DEFAULT_PLAIN_TEXT_OPTIONS) {
|
|
983
|
+
const DEFAULT_PLAIN_TEXT_OPTIONS$1 = { forcePlainText: false };
|
|
984
|
+
function renderDiffWithHighlighter(diff, highlighter$1, options, { forcePlainText, startingLine, totalLines, expandedHunks, collapsedContextThreshold = DEFAULT_COLLAPSED_CONTEXT_THRESHOLD } = DEFAULT_PLAIN_TEXT_OPTIONS$1) {
|
|
970
985
|
if (forcePlainText) {
|
|
971
986
|
startingLine ??= 0;
|
|
972
987
|
totalLines ??= Infinity;
|
|
@@ -1019,33 +1034,34 @@ function renderDiffWithHighlighter(diff, highlighter$1, options, { forcePlainTex
|
|
|
1019
1034
|
totalLines,
|
|
1020
1035
|
expandedHunks: isWindowedHighlight ? expandedHunksForIteration : true,
|
|
1021
1036
|
collapsedContextThreshold,
|
|
1022
|
-
callback: ({ hunkIndex,
|
|
1037
|
+
callback: ({ hunkIndex, additionLine, deletionLine, type }) => {
|
|
1023
1038
|
const bucket = getBucketForHunk(hunkIndex);
|
|
1024
|
-
|
|
1025
|
-
|
|
1026
|
-
|
|
1039
|
+
const splitLineIndex = additionLine != null ? additionLine.splitLineIndex : deletionLine.splitLineIndex;
|
|
1040
|
+
if (type === "change" && additionLine != null && deletionLine != null) computeLineDiffDecorations({
|
|
1041
|
+
additionLine: diff.additionLines[additionLine.lineIndex],
|
|
1042
|
+
deletionLine: diff.deletionLines[deletionLine.lineIndex],
|
|
1027
1043
|
deletionLineIndex: bucket.deletionContent.length,
|
|
1028
1044
|
additionLineIndex: bucket.additionContent.length,
|
|
1029
1045
|
deletionDecorations: bucket.deletionDecorations,
|
|
1030
1046
|
additionDecorations: bucket.additionDecorations,
|
|
1031
1047
|
lineDiffType
|
|
1032
1048
|
});
|
|
1033
|
-
if (
|
|
1034
|
-
appendContent(diff.deletionLines[
|
|
1049
|
+
if (deletionLine != null) {
|
|
1050
|
+
appendContent(diff.deletionLines[deletionLine.lineIndex], deletionLine.lineIndex, bucket.deletionSegments, bucket.deletionContent);
|
|
1035
1051
|
bucket.deletionInfo.push({
|
|
1036
1052
|
type: type === "change" ? "change-deletion" : type,
|
|
1037
|
-
lineNumber:
|
|
1038
|
-
altLineNumber: type === "change" ? void 0 :
|
|
1039
|
-
lineIndex: `${
|
|
1053
|
+
lineNumber: deletionLine.lineNumber,
|
|
1054
|
+
altLineNumber: type === "change" ? void 0 : additionLine.lineNumber ?? void 0,
|
|
1055
|
+
lineIndex: `${deletionLine.unifiedLineIndex},${splitLineIndex}`
|
|
1040
1056
|
});
|
|
1041
1057
|
}
|
|
1042
|
-
if (
|
|
1043
|
-
appendContent(diff.additionLines[
|
|
1058
|
+
if (additionLine != null) {
|
|
1059
|
+
appendContent(diff.additionLines[additionLine.lineIndex], additionLine.lineIndex, bucket.additionSegments, bucket.additionContent);
|
|
1044
1060
|
bucket.additionInfo.push({
|
|
1045
1061
|
type: type === "change" ? "change-addition" : type,
|
|
1046
|
-
lineNumber:
|
|
1047
|
-
altLineNumber: type === "change" ? void 0 :
|
|
1048
|
-
lineIndex: `${
|
|
1062
|
+
lineNumber: additionLine.lineNumber,
|
|
1063
|
+
altLineNumber: type === "change" ? void 0 : deletionLine.lineNumber ?? void 0,
|
|
1064
|
+
lineIndex: `${additionLine.unifiedLineIndex},${splitLineIndex}`
|
|
1049
1065
|
});
|
|
1050
1066
|
}
|
|
1051
1067
|
}
|
|
@@ -1212,9 +1228,78 @@ function renderTwoFiles({ deletionFile, additionFile, deletionInfo, additionInfo
|
|
|
1212
1228
|
};
|
|
1213
1229
|
}
|
|
1214
1230
|
|
|
1231
|
+
//#endregion
|
|
1232
|
+
//#region src/utils/iterateOverFile.ts
|
|
1233
|
+
/**
|
|
1234
|
+
* Iterates over lines in a file with optional windowing support.
|
|
1235
|
+
*
|
|
1236
|
+
* Similar to `iterateOverDiff` but simplified for linear file content.
|
|
1237
|
+
* Supports viewport windowing for virtualization scenarios.
|
|
1238
|
+
*
|
|
1239
|
+
* @param props - Configuration for iteration
|
|
1240
|
+
* @param props.lines - Pre-split array of lines (use splitFileContents() to create from string)
|
|
1241
|
+
* @param props.startingLine - Optional starting line index (0-based, default: 0)
|
|
1242
|
+
* @param props.totalLines - Optional max lines to iterate (default: Infinity)
|
|
1243
|
+
* @param props.callback - Callback invoked for each line in the window.
|
|
1244
|
+
* Return `true` to stop iteration early.
|
|
1245
|
+
*
|
|
1246
|
+
* @example
|
|
1247
|
+
* ```typescript
|
|
1248
|
+
* const lines = splitFileContents('line1\nline2\nline3');
|
|
1249
|
+
* iterateOverFile({
|
|
1250
|
+
* lines,
|
|
1251
|
+
* startingLine: 0,
|
|
1252
|
+
* totalLines: 10,
|
|
1253
|
+
* callback: ({ lineIndex, lineNumber, content, isLastLine }) => {
|
|
1254
|
+
* console.log(`Line ${lineNumber}: ${content}`);
|
|
1255
|
+
* if (content.includes('stop')) return true; // Stop iteration
|
|
1256
|
+
* }
|
|
1257
|
+
* });
|
|
1258
|
+
* ```
|
|
1259
|
+
*/
|
|
1260
|
+
function iterateOverFile({ lines, startingLine = 0, totalLines = Infinity, callback }) {
|
|
1261
|
+
const len = Math.min(startingLine + totalLines, lines.length);
|
|
1262
|
+
const lastLineIndex = (() => {
|
|
1263
|
+
const lastLine = lines.at(-1);
|
|
1264
|
+
if (lastLine === "" || lastLine === "\n" || lastLine === "\r\n" || lastLine === "\r") return Math.max(0, lines.length - 2);
|
|
1265
|
+
return lines.length - 1;
|
|
1266
|
+
})();
|
|
1267
|
+
for (let lineIndex = startingLine; lineIndex < len; lineIndex++) {
|
|
1268
|
+
const isLastLine = lineIndex === lastLineIndex;
|
|
1269
|
+
if (callback({
|
|
1270
|
+
lineIndex,
|
|
1271
|
+
lineNumber: lineIndex + 1,
|
|
1272
|
+
content: lines[lineIndex],
|
|
1273
|
+
isLastLine
|
|
1274
|
+
}) === true || isLastLine) break;
|
|
1275
|
+
}
|
|
1276
|
+
}
|
|
1277
|
+
|
|
1278
|
+
//#endregion
|
|
1279
|
+
//#region src/utils/splitFileContents.ts
|
|
1280
|
+
/**
|
|
1281
|
+
* Splits file contents into lines using the same logic as diff parsing.
|
|
1282
|
+
* - Preserves trailing newlines on each line
|
|
1283
|
+
*
|
|
1284
|
+
* @param contents - The raw file contents string
|
|
1285
|
+
* @returns Array of lines with newlines preserved
|
|
1286
|
+
*/
|
|
1287
|
+
function splitFileContents(contents) {
|
|
1288
|
+
return contents !== "" ? contents.split(SPLIT_WITH_NEWLINES) : [];
|
|
1289
|
+
}
|
|
1290
|
+
|
|
1215
1291
|
//#endregion
|
|
1216
1292
|
//#region src/utils/renderFileWithHighlighter.ts
|
|
1217
|
-
|
|
1293
|
+
const DEFAULT_PLAIN_TEXT_OPTIONS = { forcePlainText: false };
|
|
1294
|
+
function renderFileWithHighlighter(file, highlighter$1, { theme = DEFAULT_THEMES, tokenizeMaxLineLength }, { forcePlainText, startingLine, totalLines, lines } = DEFAULT_PLAIN_TEXT_OPTIONS) {
|
|
1295
|
+
if (forcePlainText) {
|
|
1296
|
+
startingLine ??= 0;
|
|
1297
|
+
totalLines ??= Infinity;
|
|
1298
|
+
} else {
|
|
1299
|
+
startingLine = 0;
|
|
1300
|
+
totalLines = Infinity;
|
|
1301
|
+
}
|
|
1302
|
+
const isWindowedHighlight = startingLine > 0 || totalLines < Infinity;
|
|
1218
1303
|
const { state, transformers } = createTransformerWithState();
|
|
1219
1304
|
const lang = forcePlainText ? "text" : file.lang ?? getFiletypeFromFileName(file.name);
|
|
1220
1305
|
const baseThemeType = (() => {
|
|
@@ -1226,8 +1311,8 @@ function renderFileWithHighlighter(file, highlighter$1, { theme = DEFAULT_THEMES
|
|
|
1226
1311
|
});
|
|
1227
1312
|
state.lineInfo = (shikiLineNumber) => ({
|
|
1228
1313
|
type: "context",
|
|
1229
|
-
lineIndex: shikiLineNumber - 1,
|
|
1230
|
-
lineNumber: shikiLineNumber
|
|
1314
|
+
lineIndex: shikiLineNumber - 1 + startingLine,
|
|
1315
|
+
lineNumber: shikiLineNumber + startingLine
|
|
1231
1316
|
});
|
|
1232
1317
|
const hastConfig = (() => {
|
|
1233
1318
|
if (typeof theme === "string") return {
|
|
@@ -1247,12 +1332,27 @@ function renderFileWithHighlighter(file, highlighter$1, { theme = DEFAULT_THEMES
|
|
|
1247
1332
|
tokenizeMaxLineLength
|
|
1248
1333
|
};
|
|
1249
1334
|
})();
|
|
1335
|
+
const highlightedLines = getLineNodes(highlighter$1.codeToHast(isWindowedHighlight ? extractWindowedFileContent(lines ?? splitFileContents(file.contents), startingLine, totalLines) : cleanLastNewline(file.contents), hastConfig));
|
|
1336
|
+
const code = isWindowedHighlight ? new Array(startingLine) : highlightedLines;
|
|
1337
|
+
if (isWindowedHighlight) code.push(...highlightedLines);
|
|
1250
1338
|
return {
|
|
1251
|
-
code
|
|
1339
|
+
code,
|
|
1252
1340
|
themeStyles,
|
|
1253
1341
|
baseThemeType
|
|
1254
1342
|
};
|
|
1255
1343
|
}
|
|
1344
|
+
function extractWindowedFileContent(lines, startingLine, totalLines) {
|
|
1345
|
+
let windowContent = "";
|
|
1346
|
+
iterateOverFile({
|
|
1347
|
+
lines,
|
|
1348
|
+
startingLine,
|
|
1349
|
+
totalLines,
|
|
1350
|
+
callback({ content }) {
|
|
1351
|
+
windowContent += content;
|
|
1352
|
+
}
|
|
1353
|
+
});
|
|
1354
|
+
return windowContent;
|
|
1355
|
+
}
|
|
1256
1356
|
|
|
1257
1357
|
//#endregion
|
|
1258
1358
|
//#region src/worker/worker.ts
|