@pierre/diffs 1.1.0-beta.1 → 1.1.0-beta.10
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 +60 -29
- package/dist/components/File.d.ts.map +1 -1
- package/dist/components/File.js +226 -26
- package/dist/components/File.js.map +1 -1
- package/dist/components/FileDiff.d.ts +44 -12
- package/dist/components/FileDiff.d.ts.map +1 -1
- package/dist/components/FileDiff.js +510 -71
- 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 +6 -8
- package/dist/constants.d.ts.map +1 -1
- package/dist/constants.js +16 -7
- 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 +3 -1
- package/dist/highlighter/languages/constants.d.ts.map +1 -1
- package/dist/highlighter/languages/constants.js +2 -1
- package/dist/highlighter/languages/constants.js.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 +19 -0
- package/dist/highlighter/languages/registerCustomLanguage.d.ts.map +1 -0
- package/dist/highlighter/languages/registerCustomLanguage.js +21 -0
- package/dist/highlighter/languages/registerCustomLanguage.js.map +1 -0
- 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 +4 -3
- package/dist/highlighter/languages/resolveLanguage.js.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 +17 -12
- package/dist/index.js +14 -9
- 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 +249 -140
- 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 +198 -165
- 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 +2 -2
- 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 +2 -1
- package/dist/utils/getFiletypeFromFileName.d.ts.map +1 -1
- package/dist/utils/getFiletypeFromFileName.js +14 -4
- package/dist/utils/getFiletypeFromFileName.js.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 +28 -13
- package/dist/utils/iterateOverDiff.d.ts.map +1 -1
- package/dist/utils/iterateOverDiff.js +101 -60
- 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 +20 -11
- 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 +4 -3
- package/dist/utils/renderDiffWithHighlighter.d.ts.map +1 -1
- package/dist/utils/renderDiffWithHighlighter.js +18 -16
- 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 +25 -0
- package/dist/utils/resolveVirtualFileMetrics.js.map +1 -0
- package/dist/utils/setLanguageOverride.d.ts +2 -1
- package/dist/utils/setLanguageOverride.d.ts.map +1 -1
- package/dist/utils/setLanguageOverride.js.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 +11 -0
- package/dist/utils/trimPatchContext.d.ts.map +1 -0
- package/dist/utils/trimPatchContext.js +99 -0
- package/dist/utils/trimPatchContext.js.map +1 -0
- package/dist/worker/WorkerPoolManager.d.ts +3 -3
- package/dist/worker/WorkerPoolManager.d.ts.map +1 -1
- package/dist/worker/WorkerPoolManager.js +39 -26
- 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 +352 -154
- package/dist/worker/worker-portable.js.map +1 -1
- package/dist/worker/worker.js +222 -113
- package/dist/worker/worker.js.map +1 -1
- package/package.json +52 -53
|
@@ -1,23 +1,30 @@
|
|
|
1
1
|
//#region src/utils/setWrapperNodeProps.ts
|
|
2
|
-
function setPreNodeProperties(pre, { diffIndicators, disableBackground, disableLineNumbers, overflow, split, themeStyles, themeType, totalLines }) {
|
|
3
|
-
if (
|
|
4
|
-
|
|
2
|
+
function setPreNodeProperties(pre, { type, diffIndicators, disableBackground, disableLineNumbers, overflow, split, themeStyles, themeType, totalLines }) {
|
|
3
|
+
if (type === "diff") {
|
|
4
|
+
pre.setAttribute("data-diff", "");
|
|
5
|
+
pre.removeAttribute("data-file");
|
|
6
|
+
} else {
|
|
7
|
+
pre.setAttribute("data-file", "");
|
|
8
|
+
pre.removeAttribute("data-diff");
|
|
9
|
+
}
|
|
10
|
+
if (themeType === "system") pre.removeAttribute("data-theme-type");
|
|
11
|
+
else pre.setAttribute("data-theme-type", themeType);
|
|
5
12
|
switch (diffIndicators) {
|
|
6
13
|
case "bars":
|
|
7
14
|
case "classic":
|
|
8
|
-
pre.
|
|
15
|
+
pre.setAttribute("data-indicators", diffIndicators);
|
|
9
16
|
break;
|
|
10
17
|
case "none":
|
|
11
|
-
|
|
18
|
+
pre.removeAttribute("data-indicators");
|
|
12
19
|
break;
|
|
13
20
|
}
|
|
14
|
-
if (disableLineNumbers) pre.
|
|
15
|
-
else
|
|
16
|
-
if (disableBackground)
|
|
17
|
-
else pre.
|
|
18
|
-
pre.
|
|
19
|
-
pre.
|
|
20
|
-
pre.
|
|
21
|
+
if (disableLineNumbers) pre.setAttribute("data-disable-line-numbers", "");
|
|
22
|
+
else pre.removeAttribute("data-disable-line-numbers");
|
|
23
|
+
if (disableBackground) pre.removeAttribute("data-background");
|
|
24
|
+
else pre.setAttribute("data-background", "");
|
|
25
|
+
if (type === "diff") pre.setAttribute("data-diff-type", split ? "split" : "single");
|
|
26
|
+
else pre.removeAttribute("data-diff-type");
|
|
27
|
+
pre.setAttribute("data-overflow", overflow);
|
|
21
28
|
pre.tabIndex = 0;
|
|
22
29
|
pre.style = themeStyles;
|
|
23
30
|
pre.style.setProperty("--diffs-min-number-column-width-default", `${`${totalLines}`.length}ch`);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"setWrapperNodeProps.js","names":[],"sources":["../../src/utils/setWrapperNodeProps.ts"],"sourcesContent":["import type { PrePropertiesConfig } from '../types';\n\nexport function setPreNodeProperties(\n pre: HTMLPreElement,\n {\n diffIndicators,\n disableBackground,\n disableLineNumbers,\n overflow,\n split,\n themeStyles,\n themeType,\n totalLines,\n }: PrePropertiesConfig\n): HTMLPreElement {\n if (
|
|
1
|
+
{"version":3,"file":"setWrapperNodeProps.js","names":[],"sources":["../../src/utils/setWrapperNodeProps.ts"],"sourcesContent":["import type { PrePropertiesConfig } from '../types';\n\nexport function setPreNodeProperties(\n pre: HTMLPreElement,\n {\n type,\n diffIndicators,\n disableBackground,\n disableLineNumbers,\n overflow,\n split,\n themeStyles,\n themeType,\n totalLines,\n }: PrePropertiesConfig\n): HTMLPreElement {\n if (type === 'diff') {\n pre.setAttribute('data-diff', '');\n pre.removeAttribute('data-file');\n } else {\n pre.setAttribute('data-file', '');\n pre.removeAttribute('data-diff');\n }\n if (themeType === 'system') {\n pre.removeAttribute('data-theme-type');\n } else {\n pre.setAttribute('data-theme-type', themeType);\n }\n switch (diffIndicators) {\n case 'bars':\n case 'classic':\n pre.setAttribute('data-indicators', diffIndicators);\n break;\n case 'none':\n pre.removeAttribute('data-indicators');\n break;\n }\n if (disableLineNumbers) {\n pre.setAttribute('data-disable-line-numbers', '');\n } else {\n pre.removeAttribute('data-disable-line-numbers');\n }\n if (disableBackground) {\n pre.removeAttribute('data-background');\n } else {\n pre.setAttribute('data-background', '');\n }\n if (type === 'diff') {\n pre.setAttribute('data-diff-type', split ? 'split' : 'single');\n } else {\n pre.removeAttribute('data-diff-type');\n }\n pre.setAttribute('data-overflow', overflow);\n pre.tabIndex = 0;\n // Set theme color custom properties as inline styles on pre element\n pre.style = themeStyles;\n // Set CSS custom property for line number column width\n pre.style.setProperty(\n '--diffs-min-number-column-width-default',\n `${`${totalLines}`.length}ch`\n );\n return pre;\n}\n"],"mappings":";AAEA,SAAgB,qBACd,KACA,EACE,MACA,gBACA,mBACA,oBACA,UACA,OACA,aACA,WACA,cAEc;AAChB,KAAI,SAAS,QAAQ;AACnB,MAAI,aAAa,aAAa,GAAG;AACjC,MAAI,gBAAgB,YAAY;QAC3B;AACL,MAAI,aAAa,aAAa,GAAG;AACjC,MAAI,gBAAgB,YAAY;;AAElC,KAAI,cAAc,SAChB,KAAI,gBAAgB,kBAAkB;KAEtC,KAAI,aAAa,mBAAmB,UAAU;AAEhD,SAAQ,gBAAR;EACE,KAAK;EACL,KAAK;AACH,OAAI,aAAa,mBAAmB,eAAe;AACnD;EACF,KAAK;AACH,OAAI,gBAAgB,kBAAkB;AACtC;;AAEJ,KAAI,mBACF,KAAI,aAAa,6BAA6B,GAAG;KAEjD,KAAI,gBAAgB,4BAA4B;AAElD,KAAI,kBACF,KAAI,gBAAgB,kBAAkB;KAEtC,KAAI,aAAa,mBAAmB,GAAG;AAEzC,KAAI,SAAS,OACX,KAAI,aAAa,kBAAkB,QAAQ,UAAU,SAAS;KAE9D,KAAI,gBAAgB,iBAAiB;AAEvC,KAAI,aAAa,iBAAiB,SAAS;AAC3C,KAAI,WAAW;AAEf,KAAI,QAAQ;AAEZ,KAAI,MAAM,YACR,2CACA,GAAG,GAAG,aAAa,OAAO,IAC3B;AACD,QAAO"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
//#region src/utils/splitFileContents.d.ts
|
|
2
|
+
/**
|
|
3
|
+
* Splits file contents into lines using the same logic as diff parsing.
|
|
4
|
+
* - Preserves trailing newlines on each line
|
|
5
|
+
*
|
|
6
|
+
* @param contents - The raw file contents string
|
|
7
|
+
* @returns Array of lines with newlines preserved
|
|
8
|
+
*/
|
|
9
|
+
declare function splitFileContents(contents: string): string[];
|
|
10
|
+
//#endregion
|
|
11
|
+
export { splitFileContents };
|
|
12
|
+
//# sourceMappingURL=splitFileContents.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"splitFileContents.d.ts","names":["splitFileContents"],"sources":["../../src/utils/splitFileContents.d.ts"],"sourcesContent":["/**\n * Splits file contents into lines using the same logic as diff parsing.\n * - Preserves trailing newlines on each line\n *\n * @param contents - The raw file contents string\n * @returns Array of lines with newlines preserved\n */\nexport declare function splitFileContents(contents: string): string[];\n//# sourceMappingURL=splitFileContents.d.ts.map"],"mappings":";;AAOA;;;;;;iBAAwBA,iBAAAA"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { SPLIT_WITH_NEWLINES } from "../constants.js";
|
|
2
|
+
|
|
3
|
+
//#region src/utils/splitFileContents.ts
|
|
4
|
+
/**
|
|
5
|
+
* Splits file contents into lines using the same logic as diff parsing.
|
|
6
|
+
* - Preserves trailing newlines on each line
|
|
7
|
+
*
|
|
8
|
+
* @param contents - The raw file contents string
|
|
9
|
+
* @returns Array of lines with newlines preserved
|
|
10
|
+
*/
|
|
11
|
+
function splitFileContents(contents) {
|
|
12
|
+
return contents !== "" ? contents.split(SPLIT_WITH_NEWLINES) : [];
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
//#endregion
|
|
16
|
+
export { splitFileContents };
|
|
17
|
+
//# sourceMappingURL=splitFileContents.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"splitFileContents.js","names":[],"sources":["../../src/utils/splitFileContents.ts"],"sourcesContent":["import { SPLIT_WITH_NEWLINES } from '../constants';\n\n/**\n * Splits file contents into lines using the same logic as diff parsing.\n * - Preserves trailing newlines on each line\n *\n * @param contents - The raw file contents string\n * @returns Array of lines with newlines preserved\n */\nexport function splitFileContents(contents: string): string[] {\n return contents !== '' ? contents.split(SPLIT_WITH_NEWLINES) : [];\n}\n"],"mappings":";;;;;;;;;;AASA,SAAgB,kBAAkB,UAA4B;AAC5D,QAAO,aAAa,KAAK,SAAS,MAAM,oBAAoB,GAAG,EAAE"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
//#region src/utils/trimPatchContext.d.ts
|
|
2
|
+
/**
|
|
3
|
+
* A utility function to trim out excess context lines from a patch file. It
|
|
4
|
+
* will maintain line numbers, and properly update the hunk context markers, as
|
|
5
|
+
* well as be able to create new hunks where necessary if there's excessive
|
|
6
|
+
* context between changes
|
|
7
|
+
*/
|
|
8
|
+
declare function trimPatchContext(patch: string, contextSize?: number): string;
|
|
9
|
+
//#endregion
|
|
10
|
+
export { trimPatchContext };
|
|
11
|
+
//# sourceMappingURL=trimPatchContext.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"trimPatchContext.d.ts","names":["trimPatchContext"],"sources":["../../src/utils/trimPatchContext.d.ts"],"sourcesContent":["/**\n * A utility function to trim out excess context lines from a patch file. It\n * will maintain line numbers, and properly update the hunk context markers, as\n * well as be able to create new hunks where necessary if there's excessive\n * context between changes\n */\nexport declare function trimPatchContext(patch: string, contextSize?: number): string;\n//# sourceMappingURL=trimPatchContext.d.ts.map"],"mappings":";;AAMA;;;;;iBAAwBA,gBAAAA"}
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
import { HUNK_HEADER } from "../constants.js";
|
|
2
|
+
|
|
3
|
+
//#region src/utils/trimPatchContext.ts
|
|
4
|
+
/**
|
|
5
|
+
* A utility function to trim out excess context lines from a patch file. It
|
|
6
|
+
* will maintain line numbers, and properly update the hunk context markers, as
|
|
7
|
+
* well as be able to create new hunks where necessary if there's excessive
|
|
8
|
+
* context between changes
|
|
9
|
+
*/
|
|
10
|
+
function trimPatchContext(patch, contextSize = 10) {
|
|
11
|
+
const lines = [];
|
|
12
|
+
let currentHunk;
|
|
13
|
+
for (const line of patch.split("\n")) {
|
|
14
|
+
const parsedHunkHeader = line.match(HUNK_HEADER);
|
|
15
|
+
if (parsedHunkHeader != null) {
|
|
16
|
+
if (currentHunk != null) {
|
|
17
|
+
if (currentHunk.hunkLines.length > 0) {
|
|
18
|
+
flushContextLines(currentHunk, contextSize);
|
|
19
|
+
flushHunk(currentHunk, lines);
|
|
20
|
+
}
|
|
21
|
+
currentHunk = void 0;
|
|
22
|
+
}
|
|
23
|
+
const additionStart = parseInt(parsedHunkHeader[3]);
|
|
24
|
+
const deletionStart = parseInt(parsedHunkHeader[1]);
|
|
25
|
+
const additionCount = parseInt(parsedHunkHeader[4] ?? "1");
|
|
26
|
+
const deletionCount = parseInt(parsedHunkHeader[2] ?? "1");
|
|
27
|
+
if (isNaN(additionStart) || isNaN(deletionStart) || isNaN(additionCount) || isNaN(deletionCount)) lines.push(line);
|
|
28
|
+
else currentHunk = {
|
|
29
|
+
hunkContextString: parsedHunkHeader[5] ?? "",
|
|
30
|
+
additionStart,
|
|
31
|
+
deletionStart,
|
|
32
|
+
additionCount: 0,
|
|
33
|
+
deletionCount: 0,
|
|
34
|
+
hunkLines: [],
|
|
35
|
+
contextLines: []
|
|
36
|
+
};
|
|
37
|
+
continue;
|
|
38
|
+
}
|
|
39
|
+
if (currentHunk == null) {
|
|
40
|
+
lines.push(line);
|
|
41
|
+
continue;
|
|
42
|
+
}
|
|
43
|
+
if (line.startsWith(" ")) {
|
|
44
|
+
currentHunk.contextLines.push(line);
|
|
45
|
+
if (currentHunk.hunkLines.length > 0 && currentHunk.contextLines.length === contextSize * 2 + 1) {
|
|
46
|
+
const removedItems = currentHunk.contextLines.slice(contextSize);
|
|
47
|
+
flushContextLines(currentHunk, contextSize);
|
|
48
|
+
const { additionCount: emittedAdditionCount, deletionCount: emittedDeletionCount } = currentHunk;
|
|
49
|
+
flushHunk(currentHunk, lines);
|
|
50
|
+
removedItems.shift();
|
|
51
|
+
currentHunk = {
|
|
52
|
+
hunkContextString: "",
|
|
53
|
+
additionStart: currentHunk.additionStart + emittedAdditionCount + 1,
|
|
54
|
+
deletionStart: currentHunk.deletionStart + emittedDeletionCount + 1,
|
|
55
|
+
deletionCount: 0,
|
|
56
|
+
additionCount: 0,
|
|
57
|
+
contextLines: removedItems,
|
|
58
|
+
hunkLines: []
|
|
59
|
+
};
|
|
60
|
+
}
|
|
61
|
+
} else if (line !== "") {
|
|
62
|
+
flushContextLines(currentHunk, contextSize);
|
|
63
|
+
currentHunk.hunkLines.push(line);
|
|
64
|
+
if (line.startsWith("+")) currentHunk.additionCount += 1;
|
|
65
|
+
else if (line.startsWith("-")) currentHunk.deletionCount += 1;
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
if (currentHunk != null && currentHunk.hunkLines.length > 0) {
|
|
69
|
+
flushContextLines(currentHunk, contextSize);
|
|
70
|
+
flushHunk(currentHunk, lines);
|
|
71
|
+
}
|
|
72
|
+
return lines.join("\n");
|
|
73
|
+
}
|
|
74
|
+
function flushContextLines(hunk, contextSize) {
|
|
75
|
+
if (hunk.contextLines.length > contextSize) if (hunk.hunkLines.length === 0) {
|
|
76
|
+
const difference = hunk.contextLines.length - contextSize;
|
|
77
|
+
hunk.contextLines.splice(0, difference);
|
|
78
|
+
hunk.additionStart += difference;
|
|
79
|
+
hunk.deletionStart += difference;
|
|
80
|
+
} else hunk.contextLines.length = contextSize;
|
|
81
|
+
if (hunk.contextLines.length > 0) {
|
|
82
|
+
hunk.hunkLines.push(...hunk.contextLines);
|
|
83
|
+
hunk.additionCount += hunk.contextLines.length;
|
|
84
|
+
hunk.deletionCount += hunk.contextLines.length;
|
|
85
|
+
hunk.contextLines.length = 0;
|
|
86
|
+
}
|
|
87
|
+
return hunk;
|
|
88
|
+
}
|
|
89
|
+
function flushHunk(hunk, lines) {
|
|
90
|
+
lines.push(`@@ -${formatHunkRange(hunk.deletionStart, hunk.deletionCount)} +${formatHunkRange(hunk.additionStart, hunk.additionCount)} @@${hunk.hunkContextString !== "" ? ` ${hunk.hunkContextString}` : ""}`);
|
|
91
|
+
lines.push(...hunk.hunkLines);
|
|
92
|
+
}
|
|
93
|
+
function formatHunkRange(start, count) {
|
|
94
|
+
return count === 1 ? `${start}` : `${start},${count}`;
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
//#endregion
|
|
98
|
+
export { trimPatchContext };
|
|
99
|
+
//# sourceMappingURL=trimPatchContext.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"trimPatchContext.js","names":["lines: string[]","currentHunk: CurrentHunk | undefined"],"sources":["../../src/utils/trimPatchContext.ts"],"sourcesContent":["import { HUNK_HEADER } from '../constants';\n\ninterface CurrentHunk {\n hunkContextString: string;\n additionStart: number;\n deletionStart: number;\n additionCount: number;\n deletionCount: number;\n hunkLines: string[];\n contextLines: string[];\n}\n\n/**\n * A utility function to trim out excess context lines from a patch file. It\n * will maintain line numbers, and properly update the hunk context markers, as\n * well as be able to create new hunks where necessary if there's excessive\n * context between changes\n */\nexport function trimPatchContext(patch: string, contextSize = 10): string {\n const lines: string[] = [];\n\n let currentHunk: CurrentHunk | undefined;\n for (const line of patch.split('\\n')) {\n const parsedHunkHeader = line.match(HUNK_HEADER);\n // If we've come across a new hunk boundary, then we should close out the\n // current hunk and setup a new one\n if (parsedHunkHeader != null) {\n if (currentHunk != null) {\n if (currentHunk.hunkLines.length > 0) {\n flushContextLines(currentHunk, contextSize);\n flushHunk(currentHunk, lines);\n }\n currentHunk = undefined;\n }\n\n const additionStart = parseInt(parsedHunkHeader[3]);\n const deletionStart = parseInt(parsedHunkHeader[1]);\n const additionCount = parseInt(parsedHunkHeader[4] ?? '1');\n const deletionCount = parseInt(parsedHunkHeader[2] ?? '1');\n\n // If we can't parse valid numbers out of the hunk header\n // lets just skip the hunk altogether\n if (\n isNaN(additionStart) ||\n isNaN(deletionStart) ||\n isNaN(additionCount) ||\n isNaN(deletionCount)\n ) {\n lines.push(line);\n } else {\n currentHunk = {\n hunkContextString: parsedHunkHeader[5] ?? '',\n additionStart,\n deletionStart,\n additionCount: 0,\n deletionCount: 0,\n hunkLines: [],\n contextLines: [],\n };\n }\n continue;\n }\n\n // If we don't have a current hunk, then we should just assume this is\n // general metadata\n if (currentHunk == null) {\n lines.push(line);\n continue;\n }\n\n // If we are dealing with a context line...\n if (line.startsWith(' ')) {\n currentHunk.contextLines.push(line);\n // If we've exceeded double our context window size + 1, that means we\n // should create a new hunk...\n if (\n currentHunk.hunkLines.length > 0 &&\n currentHunk.contextLines.length === contextSize * 2 + 1\n ) {\n const removedItems = currentHunk.contextLines.slice(contextSize);\n flushContextLines(currentHunk, contextSize);\n const {\n additionCount: emittedAdditionCount,\n deletionCount: emittedDeletionCount,\n } = currentHunk;\n flushHunk(currentHunk, lines);\n\n removedItems.shift();\n currentHunk = {\n // NOTE(amadeus): Not sure there's an easy way to manage this context\n // string stuff, so lets just remove it from auto generated hunks\n hunkContextString: '',\n additionStart: currentHunk.additionStart + emittedAdditionCount + 1,\n deletionStart: currentHunk.deletionStart + emittedDeletionCount + 1,\n deletionCount: 0,\n additionCount: 0,\n contextLines: removedItems,\n hunkLines: [],\n };\n }\n } else if (line !== '') {\n flushContextLines(currentHunk, contextSize);\n currentHunk.hunkLines.push(line);\n if (line.startsWith('+')) {\n currentHunk.additionCount += 1;\n } else if (line.startsWith('-')) {\n currentHunk.deletionCount += 1;\n }\n }\n }\n\n if (currentHunk != null && currentHunk.hunkLines.length > 0) {\n flushContextLines(currentHunk, contextSize);\n flushHunk(currentHunk, lines);\n }\n\n return lines.join('\\n');\n}\n\nfunction flushContextLines(hunk: CurrentHunk, contextSize: number) {\n if (hunk.contextLines.length > contextSize) {\n // If this context group is at the beginning of the hunk, truncate from the\n // beginning\n if (hunk.hunkLines.length === 0) {\n const difference = hunk.contextLines.length - contextSize;\n hunk.contextLines.splice(0, difference);\n hunk.additionStart += difference;\n hunk.deletionStart += difference;\n }\n // Otherwise truncate from the end\n else {\n hunk.contextLines.length = contextSize;\n }\n }\n if (hunk.contextLines.length > 0) {\n hunk.hunkLines.push(...hunk.contextLines);\n hunk.additionCount += hunk.contextLines.length;\n hunk.deletionCount += hunk.contextLines.length;\n hunk.contextLines.length = 0;\n }\n return hunk;\n}\n\nfunction flushHunk(hunk: CurrentHunk, lines: string[]) {\n lines.push(\n `@@ -${formatHunkRange(hunk.deletionStart, hunk.deletionCount)} +${formatHunkRange(hunk.additionStart, hunk.additionCount)} @@${hunk.hunkContextString !== '' ? ` ${hunk.hunkContextString}` : ''}`\n );\n lines.push(...hunk.hunkLines);\n}\n\nfunction formatHunkRange(start: number, count: number): string {\n return count === 1 ? `${start}` : `${start},${count}`;\n}\n"],"mappings":";;;;;;;;;AAkBA,SAAgB,iBAAiB,OAAe,cAAc,IAAY;CACxE,MAAMA,QAAkB,EAAE;CAE1B,IAAIC;AACJ,MAAK,MAAM,QAAQ,MAAM,MAAM,KAAK,EAAE;EACpC,MAAM,mBAAmB,KAAK,MAAM,YAAY;AAGhD,MAAI,oBAAoB,MAAM;AAC5B,OAAI,eAAe,MAAM;AACvB,QAAI,YAAY,UAAU,SAAS,GAAG;AACpC,uBAAkB,aAAa,YAAY;AAC3C,eAAU,aAAa,MAAM;;AAE/B,kBAAc;;GAGhB,MAAM,gBAAgB,SAAS,iBAAiB,GAAG;GACnD,MAAM,gBAAgB,SAAS,iBAAiB,GAAG;GACnD,MAAM,gBAAgB,SAAS,iBAAiB,MAAM,IAAI;GAC1D,MAAM,gBAAgB,SAAS,iBAAiB,MAAM,IAAI;AAI1D,OACE,MAAM,cAAc,IACpB,MAAM,cAAc,IACpB,MAAM,cAAc,IACpB,MAAM,cAAc,CAEpB,OAAM,KAAK,KAAK;OAEhB,eAAc;IACZ,mBAAmB,iBAAiB,MAAM;IAC1C;IACA;IACA,eAAe;IACf,eAAe;IACf,WAAW,EAAE;IACb,cAAc,EAAE;IACjB;AAEH;;AAKF,MAAI,eAAe,MAAM;AACvB,SAAM,KAAK,KAAK;AAChB;;AAIF,MAAI,KAAK,WAAW,IAAI,EAAE;AACxB,eAAY,aAAa,KAAK,KAAK;AAGnC,OACE,YAAY,UAAU,SAAS,KAC/B,YAAY,aAAa,WAAW,cAAc,IAAI,GACtD;IACA,MAAM,eAAe,YAAY,aAAa,MAAM,YAAY;AAChE,sBAAkB,aAAa,YAAY;IAC3C,MAAM,EACJ,eAAe,sBACf,eAAe,yBACb;AACJ,cAAU,aAAa,MAAM;AAE7B,iBAAa,OAAO;AACpB,kBAAc;KAGZ,mBAAmB;KACnB,eAAe,YAAY,gBAAgB,uBAAuB;KAClE,eAAe,YAAY,gBAAgB,uBAAuB;KAClE,eAAe;KACf,eAAe;KACf,cAAc;KACd,WAAW,EAAE;KACd;;aAEM,SAAS,IAAI;AACtB,qBAAkB,aAAa,YAAY;AAC3C,eAAY,UAAU,KAAK,KAAK;AAChC,OAAI,KAAK,WAAW,IAAI,CACtB,aAAY,iBAAiB;YACpB,KAAK,WAAW,IAAI,CAC7B,aAAY,iBAAiB;;;AAKnC,KAAI,eAAe,QAAQ,YAAY,UAAU,SAAS,GAAG;AAC3D,oBAAkB,aAAa,YAAY;AAC3C,YAAU,aAAa,MAAM;;AAG/B,QAAO,MAAM,KAAK,KAAK;;AAGzB,SAAS,kBAAkB,MAAmB,aAAqB;AACjE,KAAI,KAAK,aAAa,SAAS,YAG7B,KAAI,KAAK,UAAU,WAAW,GAAG;EAC/B,MAAM,aAAa,KAAK,aAAa,SAAS;AAC9C,OAAK,aAAa,OAAO,GAAG,WAAW;AACvC,OAAK,iBAAiB;AACtB,OAAK,iBAAiB;OAItB,MAAK,aAAa,SAAS;AAG/B,KAAI,KAAK,aAAa,SAAS,GAAG;AAChC,OAAK,UAAU,KAAK,GAAG,KAAK,aAAa;AACzC,OAAK,iBAAiB,KAAK,aAAa;AACxC,OAAK,iBAAiB,KAAK,aAAa;AACxC,OAAK,aAAa,SAAS;;AAE7B,QAAO;;AAGT,SAAS,UAAU,MAAmB,OAAiB;AACrD,OAAM,KACJ,OAAO,gBAAgB,KAAK,eAAe,KAAK,cAAc,CAAC,IAAI,gBAAgB,KAAK,eAAe,KAAK,cAAc,CAAC,KAAK,KAAK,sBAAsB,KAAK,IAAI,KAAK,sBAAsB,KAChM;AACD,OAAM,KAAK,GAAG,KAAK,UAAU;;AAG/B,SAAS,gBAAgB,OAAe,OAAuB;AAC7D,QAAO,UAAU,IAAI,GAAG,UAAU,GAAG,MAAM,GAAG"}
|
|
@@ -57,19 +57,19 @@ declare class WorkerPoolManager {
|
|
|
57
57
|
private initializeWorkers;
|
|
58
58
|
private drainQueue;
|
|
59
59
|
highlightFileAST(instance: FileRendererInstance, file: FileContents): void;
|
|
60
|
-
getPlainFileAST(file: FileContents): ThemedFileResult | undefined;
|
|
60
|
+
getPlainFileAST(file: FileContents, startingLine: number, totalLines: number, lines?: string[]): ThemedFileResult | undefined;
|
|
61
61
|
highlightDiffAST(instance: DiffRendererInstance, diff: FileDiffMetadata): void;
|
|
62
|
-
getPlainDiffAST(diff: FileDiffMetadata, startingLine: number, totalLines: number, expandedHunks?: Map<number, HunkExpansionRegion> | true): ThemedDiffResult | undefined;
|
|
62
|
+
getPlainDiffAST(diff: FileDiffMetadata, startingLine: number, totalLines: number, expandedHunks?: Map<number, HunkExpansionRegion> | true, collapsedContextThreshold?: number): ThemedDiffResult | undefined;
|
|
63
63
|
terminate(): void;
|
|
64
64
|
private terminateWorkers;
|
|
65
65
|
getStats(): WorkerStats;
|
|
66
66
|
private submitTask;
|
|
67
|
-
private submitTask;
|
|
68
67
|
private resolveLanguagesAndExecuteTask;
|
|
69
68
|
private handleWorkerMessage;
|
|
70
69
|
private _queuedDrain;
|
|
71
70
|
private queueDrain;
|
|
72
71
|
private assignWorkerToTask;
|
|
72
|
+
private clearWorkerTask;
|
|
73
73
|
private executeTask;
|
|
74
74
|
private getAvailableWorker;
|
|
75
75
|
private generateRequestId;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WorkerPoolManager.d.ts","names":["
|
|
1
|
+
{"version":3,"file":"WorkerPoolManager.d.ts","names":["LRUMapPkg","FileContents","FileDiffMetadata","HunkExpansionRegion","RenderDiffOptions","RenderDiffResult","RenderFileOptions","RenderFileResult","SupportedLanguages","ThemedDiffResult","ThemedFileResult","DiffRendererInstance","FileRendererInstance","WorkerInitializationRenderOptions","WorkerPoolOptions","WorkerRenderingOptions","WorkerStats","GetCachesResult","LRUMap","ThemeSubscriber","WorkerPoolManager","langs","theme","lineDiffType","tokenizeMaxLineLength","Partial","Promise","Map"],"sources":["../../src/worker/WorkerPoolManager.d.ts"],"sourcesContent":["import LRUMapPkg from 'lru_map';\nimport type { FileContents, FileDiffMetadata, HunkExpansionRegion, RenderDiffOptions, RenderDiffResult, RenderFileOptions, RenderFileResult, SupportedLanguages, ThemedDiffResult, ThemedFileResult } from '../types';\nimport type { DiffRendererInstance, FileRendererInstance, WorkerInitializationRenderOptions, WorkerPoolOptions, WorkerRenderingOptions, WorkerStats } from './types';\ninterface GetCachesResult {\n fileCache: LRUMapPkg.LRUMap<string, RenderFileResult>;\n diffCache: LRUMapPkg.LRUMap<string, RenderDiffResult>;\n}\ninterface ThemeSubscriber {\n rerender(): void;\n}\nexport declare class WorkerPoolManager {\n private options;\n private highlighter;\n private renderOptions;\n private initialized;\n private workers;\n private taskQueue;\n private pendingTasks;\n private nextRequestId;\n private themeSubscribers;\n private workersFailed;\n private instanceRequestMap;\n private statSubscribers;\n private fileCache;\n private diffCache;\n private _queuedBroadcast;\n constructor(options: WorkerPoolOptions, { langs, theme, lineDiffType, tokenizeMaxLineLength }: WorkerInitializationRenderOptions);\n isWorkingPool(): boolean;\n getFileResultCache(file: FileContents): RenderFileResult | undefined;\n getDiffResultCache(diff: FileDiffMetadata): RenderDiffResult | undefined;\n inspectCaches(): GetCachesResult;\n evictFileFromCache(cacheKey: string): boolean;\n evictDiffFromCache(cacheKey: string): boolean;\n setRenderOptions({ theme, lineDiffType, tokenizeMaxLineLength }: Partial<WorkerRenderingOptions>): Promise<void>;\n getFileRenderOptions(): RenderFileOptions;\n getDiffRenderOptions(): RenderDiffOptions;\n private setRenderOptionsOnWorkers;\n subscribeToThemeChanges(instance: ThemeSubscriber): () => void;\n unsubscribeToThemeChanges(instance: ThemeSubscriber): void;\n subscribeToStatChanges(callback: (stats: WorkerStats) => unknown): () => void;\n private queueBroadcastStateChanges;\n private _broadcastStateChanges;\n cleanUpPendingTasks(instance: FileRendererInstance | DiffRendererInstance): void;\n isInitialized(): boolean;\n initialize(languages?: SupportedLanguages[]): Promise<void>;\n private initializeWorkers;\n private drainQueue;\n highlightFileAST(instance: FileRendererInstance, file: FileContents): void;\n getPlainFileAST(file: FileContents, startingLine: number, totalLines: number, lines?: string[]): ThemedFileResult | undefined;\n highlightDiffAST(instance: DiffRendererInstance, diff: FileDiffMetadata): void;\n getPlainDiffAST(diff: FileDiffMetadata, startingLine: number, totalLines: number, expandedHunks?: Map<number, HunkExpansionRegion> | true, collapsedContextThreshold?: number): ThemedDiffResult | undefined;\n terminate(): void;\n private terminateWorkers;\n getStats(): WorkerStats;\n private submitTask;\n private resolveLanguagesAndExecuteTask;\n private handleWorkerMessage;\n private _queuedDrain;\n private queueDrain;\n private assignWorkerToTask;\n private clearWorkerTask;\n private executeTask;\n private getAvailableWorker;\n private generateRequestId;\n}\nexport {};\n//# sourceMappingURL=WorkerPoolManager.d.ts.map"],"mappings":"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"}
|
|
@@ -22,7 +22,7 @@ var WorkerPoolManager = class {
|
|
|
22
22
|
renderOptions;
|
|
23
23
|
initialized = false;
|
|
24
24
|
workers = [];
|
|
25
|
-
taskQueue =
|
|
25
|
+
taskQueue = /* @__PURE__ */ new Map();
|
|
26
26
|
pendingTasks = /* @__PURE__ */ new Map();
|
|
27
27
|
nextRequestId = 0;
|
|
28
28
|
themeSubscribers = /* @__PURE__ */ new Set();
|
|
@@ -173,11 +173,12 @@ var WorkerPoolManager = class {
|
|
|
173
173
|
for (const callback of this.statSubscribers) callback(stats);
|
|
174
174
|
};
|
|
175
175
|
cleanUpPendingTasks(instance) {
|
|
176
|
-
this.taskQueue
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
176
|
+
this.taskQueue.delete(instance);
|
|
177
|
+
const requestId = this.instanceRequestMap.get(instance);
|
|
178
|
+
if (requestId != null) {
|
|
179
|
+
this.pendingTasks.delete(requestId);
|
|
180
|
+
this.instanceRequestMap.delete(instance);
|
|
181
|
+
}
|
|
181
182
|
this.queueBroadcastStateChanges();
|
|
182
183
|
}
|
|
183
184
|
isInitialized() {
|
|
@@ -266,14 +267,13 @@ var WorkerPoolManager = class {
|
|
|
266
267
|
}
|
|
267
268
|
drainQueue = () => {
|
|
268
269
|
this._queuedDrain = void 0;
|
|
269
|
-
if (this.initialized !== true || this.taskQueue.
|
|
270
|
-
|
|
271
|
-
|
|
270
|
+
if (this.initialized !== true || this.taskQueue.size === 0) return;
|
|
271
|
+
for (const [instance, task] of this.taskQueue) {
|
|
272
|
+
if (this.instanceRequestMap.has(instance)) continue;
|
|
272
273
|
const langs = getLangsFromTask(task);
|
|
273
274
|
const availableWorker = this.getAvailableWorker(langs);
|
|
274
275
|
if (availableWorker == null) break;
|
|
275
276
|
this.assignWorkerToTask(task, availableWorker);
|
|
276
|
-
this.taskQueue.shift();
|
|
277
277
|
this.resolveLanguagesAndExecuteTask(availableWorker, task, langs);
|
|
278
278
|
}
|
|
279
279
|
this.queueBroadcastStateChanges();
|
|
@@ -286,12 +286,17 @@ var WorkerPoolManager = class {
|
|
|
286
286
|
file
|
|
287
287
|
});
|
|
288
288
|
}
|
|
289
|
-
getPlainFileAST(file) {
|
|
289
|
+
getPlainFileAST(file, startingLine, totalLines, lines) {
|
|
290
290
|
if (this.highlighter == null) {
|
|
291
291
|
this.initialize();
|
|
292
292
|
return;
|
|
293
293
|
}
|
|
294
|
-
return renderFileWithHighlighter(file, this.highlighter, this.renderOptions,
|
|
294
|
+
return renderFileWithHighlighter(file, this.highlighter, this.renderOptions, {
|
|
295
|
+
forcePlainText: true,
|
|
296
|
+
startingLine,
|
|
297
|
+
totalLines,
|
|
298
|
+
lines
|
|
299
|
+
});
|
|
295
300
|
}
|
|
296
301
|
highlightDiffAST(instance, diff) {
|
|
297
302
|
if ((diff.lang ?? getFiletypeFromFileName(diff.name)) === "text") return;
|
|
@@ -301,12 +306,13 @@ var WorkerPoolManager = class {
|
|
|
301
306
|
diff
|
|
302
307
|
});
|
|
303
308
|
}
|
|
304
|
-
getPlainDiffAST(diff, startingLine, totalLines, expandedHunks) {
|
|
309
|
+
getPlainDiffAST(diff, startingLine, totalLines, expandedHunks, collapsedContextThreshold) {
|
|
305
310
|
return this.highlighter != null ? renderDiffWithHighlighter(diff, this.highlighter, this.renderOptions, {
|
|
306
311
|
forcePlainText: true,
|
|
307
312
|
startingLine,
|
|
308
313
|
totalLines,
|
|
309
|
-
expandedHunks
|
|
314
|
+
expandedHunks,
|
|
315
|
+
collapsedContextThreshold
|
|
310
316
|
}) : void 0;
|
|
311
317
|
}
|
|
312
318
|
terminate() {
|
|
@@ -314,7 +320,7 @@ var WorkerPoolManager = class {
|
|
|
314
320
|
this.fileCache.clear();
|
|
315
321
|
this.diffCache.clear();
|
|
316
322
|
this.instanceRequestMap.clear();
|
|
317
|
-
this.taskQueue.
|
|
323
|
+
this.taskQueue.clear();
|
|
318
324
|
this.pendingTasks.clear();
|
|
319
325
|
this.highlighter = void 0;
|
|
320
326
|
this.initialized = false;
|
|
@@ -335,7 +341,7 @@ var WorkerPoolManager = class {
|
|
|
335
341
|
totalWorkers: this.workers.length,
|
|
336
342
|
workersFailed: this.workersFailed,
|
|
337
343
|
busyWorkers: this.workers.filter((w) => w.request_id != null).length,
|
|
338
|
-
queuedTasks: this.taskQueue.
|
|
344
|
+
queuedTasks: this.taskQueue.size,
|
|
339
345
|
pendingTasks: this.pendingTasks.size,
|
|
340
346
|
themeSubscribers: this.themeSubscribers.size,
|
|
341
347
|
fileCacheSize: this.fileCache.size,
|
|
@@ -370,17 +376,18 @@ var WorkerPoolManager = class {
|
|
|
370
376
|
};
|
|
371
377
|
}
|
|
372
378
|
})();
|
|
373
|
-
this.
|
|
374
|
-
this.taskQueue.push(task);
|
|
379
|
+
this.taskQueue.set(instance, task);
|
|
375
380
|
this.queueDrain();
|
|
376
381
|
}
|
|
377
382
|
async resolveLanguagesAndExecuteTask(availableWorker, task, langs) {
|
|
378
|
-
|
|
383
|
+
try {
|
|
379
384
|
const workerMissingLangs = langs.filter((lang) => !availableWorker.langs.has(lang));
|
|
380
385
|
if (workerMissingLangs.length > 0) if (hasResolvedLanguages(workerMissingLangs)) task.request.resolvedLanguages = getResolvedLanguages(workerMissingLangs);
|
|
381
386
|
else task.request.resolvedLanguages = await resolveLanguages(workerMissingLangs);
|
|
387
|
+
this.executeTask(availableWorker, task);
|
|
388
|
+
} catch {
|
|
389
|
+
this.clearWorkerTask(task, availableWorker);
|
|
382
390
|
}
|
|
383
|
-
this.executeTask(availableWorker, task);
|
|
384
391
|
}
|
|
385
392
|
handleWorkerMessage(managedWorker, response) {
|
|
386
393
|
const task = this.pendingTasks.get(response.id);
|
|
@@ -430,11 +437,9 @@ var WorkerPoolManager = class {
|
|
|
430
437
|
} catch (error) {
|
|
431
438
|
if (error !== IGNORE_RESPONSE) console.error(error, task, response);
|
|
432
439
|
}
|
|
433
|
-
if (task != null
|
|
434
|
-
this.pendingTasks.delete(response.id);
|
|
435
|
-
managedWorker.request_id = void 0;
|
|
440
|
+
if (task != null) this.clearWorkerTask(task, managedWorker);
|
|
436
441
|
this.queueBroadcastStateChanges();
|
|
437
|
-
if (this.taskQueue.
|
|
442
|
+
if (this.taskQueue.size > 0) this.queueDrain();
|
|
438
443
|
}
|
|
439
444
|
_queuedDrain;
|
|
440
445
|
queueDrain() {
|
|
@@ -444,16 +449,24 @@ var WorkerPoolManager = class {
|
|
|
444
449
|
}
|
|
445
450
|
assignWorkerToTask(task, managedWorker) {
|
|
446
451
|
managedWorker.request_id = task.id;
|
|
452
|
+
if ("instance" in task) {
|
|
453
|
+
this.taskQueue.delete(task.instance);
|
|
454
|
+
this.instanceRequestMap.set(task.instance, task.id);
|
|
455
|
+
}
|
|
447
456
|
this.pendingTasks.set(task.id, task);
|
|
448
457
|
}
|
|
458
|
+
clearWorkerTask(task, managedWorker) {
|
|
459
|
+
managedWorker.request_id = void 0;
|
|
460
|
+
if ("instance" in task) this.instanceRequestMap.delete(task.instance);
|
|
461
|
+
this.pendingTasks.delete(task.id);
|
|
462
|
+
}
|
|
449
463
|
executeTask(managedWorker, task) {
|
|
450
464
|
this.assignWorkerToTask(task, managedWorker);
|
|
451
465
|
for (const lang of getLangsFromTask(task)) managedWorker.langs.add(lang);
|
|
452
466
|
try {
|
|
453
467
|
managedWorker.worker.postMessage(task.request);
|
|
454
468
|
} catch (error) {
|
|
455
|
-
|
|
456
|
-
this.pendingTasks.delete(task.id);
|
|
469
|
+
this.clearWorkerTask(task, managedWorker);
|
|
457
470
|
console.error("Failed to post message to worker:", error);
|
|
458
471
|
if ("instance" in task) task.instance.onHighlightError(error);
|
|
459
472
|
else if ("reject" in task) task.reject(error);
|