@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.
Files changed (305) hide show
  1. package/dist/components/AdvancedVirtualizedFileDiff.d.ts +40 -0
  2. package/dist/components/AdvancedVirtualizedFileDiff.d.ts.map +1 -0
  3. package/dist/components/AdvancedVirtualizedFileDiff.js +145 -0
  4. package/dist/components/AdvancedVirtualizedFileDiff.js.map +1 -0
  5. package/dist/components/AdvancedVirtualizer.d.ts +38 -0
  6. package/dist/components/AdvancedVirtualizer.d.ts.map +1 -0
  7. package/dist/components/AdvancedVirtualizer.js +201 -0
  8. package/dist/components/AdvancedVirtualizer.js.map +1 -0
  9. package/dist/components/File.d.ts +60 -29
  10. package/dist/components/File.d.ts.map +1 -1
  11. package/dist/components/File.js +226 -26
  12. package/dist/components/File.js.map +1 -1
  13. package/dist/components/FileDiff.d.ts +44 -12
  14. package/dist/components/FileDiff.d.ts.map +1 -1
  15. package/dist/components/FileDiff.js +510 -71
  16. package/dist/components/FileDiff.js.map +1 -1
  17. package/dist/components/FileStream.d.ts +5 -0
  18. package/dist/components/FileStream.d.ts.map +1 -1
  19. package/dist/components/FileStream.js +66 -8
  20. package/dist/components/FileStream.js.map +1 -1
  21. package/dist/components/VirtualizedFile.d.ts +33 -0
  22. package/dist/components/VirtualizedFile.d.ts.map +1 -0
  23. package/dist/components/VirtualizedFile.js +227 -0
  24. package/dist/components/VirtualizedFile.js.map +1 -0
  25. package/dist/components/VirtualizedFileDiff.d.ts +39 -0
  26. package/dist/components/VirtualizedFileDiff.d.ts.map +1 -0
  27. package/dist/components/VirtualizedFileDiff.js +316 -0
  28. package/dist/components/VirtualizedFileDiff.js.map +1 -0
  29. package/dist/components/Virtualizer.d.ts +63 -0
  30. package/dist/components/Virtualizer.d.ts.map +1 -0
  31. package/dist/components/Virtualizer.js +369 -0
  32. package/dist/components/Virtualizer.js.map +1 -0
  33. package/dist/components/VirtulizerDevelopment.d.ts +14 -0
  34. package/dist/components/VirtulizerDevelopment.d.ts.map +1 -0
  35. package/dist/components/web-components.d.ts +1 -1
  36. package/dist/components/web-components.d.ts.map +1 -1
  37. package/dist/constants.d.ts +6 -8
  38. package/dist/constants.d.ts.map +1 -1
  39. package/dist/constants.js +16 -7
  40. package/dist/constants.js.map +1 -1
  41. package/dist/highlighter/languages/areLanguagesAttached.d.ts.map +1 -1
  42. package/dist/highlighter/languages/attachResolvedLanguages.d.ts.map +1 -1
  43. package/dist/highlighter/languages/cleanUpResolvedLanguages.d.ts.map +1 -1
  44. package/dist/highlighter/languages/constants.d.ts +3 -1
  45. package/dist/highlighter/languages/constants.d.ts.map +1 -1
  46. package/dist/highlighter/languages/constants.js +2 -1
  47. package/dist/highlighter/languages/constants.js.map +1 -1
  48. package/dist/highlighter/languages/getResolvedLanguages.d.ts.map +1 -1
  49. package/dist/highlighter/languages/getResolvedOrResolveLanguage.d.ts +1 -1
  50. package/dist/highlighter/languages/getResolvedOrResolveLanguage.d.ts.map +1 -1
  51. package/dist/highlighter/languages/hasResolvedLanguages.d.ts.map +1 -1
  52. package/dist/highlighter/languages/registerCustomLanguage.d.ts +19 -0
  53. package/dist/highlighter/languages/registerCustomLanguage.d.ts.map +1 -0
  54. package/dist/highlighter/languages/registerCustomLanguage.js +21 -0
  55. package/dist/highlighter/languages/registerCustomLanguage.js.map +1 -0
  56. package/dist/highlighter/languages/resolveLanguage.d.ts +1 -1
  57. package/dist/highlighter/languages/resolveLanguage.d.ts.map +1 -1
  58. package/dist/highlighter/languages/resolveLanguage.js +4 -3
  59. package/dist/highlighter/languages/resolveLanguage.js.map +1 -1
  60. package/dist/highlighter/languages/resolveLanguages.d.ts.map +1 -1
  61. package/dist/highlighter/shared_highlighter.d.ts.map +1 -1
  62. package/dist/highlighter/shared_highlighter.js.map +1 -1
  63. package/dist/highlighter/themes/areThemesAttached.d.ts.map +1 -1
  64. package/dist/highlighter/themes/attachResolvedThemes.d.ts.map +1 -1
  65. package/dist/highlighter/themes/cleanUpResolvedThemes.d.ts.map +1 -1
  66. package/dist/highlighter/themes/constants.d.ts.map +1 -1
  67. package/dist/highlighter/themes/getResolvedOrResolveTheme.d.ts.map +1 -1
  68. package/dist/highlighter/themes/getResolvedThemes.d.ts.map +1 -1
  69. package/dist/highlighter/themes/hasResolvedThemes.d.ts.map +1 -1
  70. package/dist/highlighter/themes/registerCustomCSSVariableTheme.d.ts.map +1 -1
  71. package/dist/highlighter/themes/registerCustomTheme.d.ts.map +1 -1
  72. package/dist/highlighter/themes/resolveTheme.d.ts.map +1 -1
  73. package/dist/highlighter/themes/resolveThemes.d.ts.map +1 -1
  74. package/dist/index.d.ts +17 -12
  75. package/dist/index.js +14 -9
  76. package/dist/managers/LineSelectionManager.d.ts +14 -15
  77. package/dist/managers/LineSelectionManager.d.ts.map +1 -1
  78. package/dist/managers/LineSelectionManager.js +60 -71
  79. package/dist/managers/LineSelectionManager.js.map +1 -1
  80. package/dist/managers/MouseEventManager.d.ts +13 -6
  81. package/dist/managers/MouseEventManager.d.ts.map +1 -1
  82. package/dist/managers/MouseEventManager.js +161 -47
  83. package/dist/managers/MouseEventManager.js.map +1 -1
  84. package/dist/managers/ResizeManager.d.ts +6 -1
  85. package/dist/managers/ResizeManager.d.ts.map +1 -1
  86. package/dist/managers/ResizeManager.js +114 -64
  87. package/dist/managers/ResizeManager.js.map +1 -1
  88. package/dist/managers/ScrollSyncManager.d.ts.map +1 -1
  89. package/dist/managers/UniversalRenderingManager.d.ts.map +1 -1
  90. package/dist/react/File.d.ts +1 -0
  91. package/dist/react/File.d.ts.map +1 -1
  92. package/dist/react/File.js +2 -1
  93. package/dist/react/File.js.map +1 -1
  94. package/dist/react/FileDiff.d.ts +1 -0
  95. package/dist/react/FileDiff.d.ts.map +1 -1
  96. package/dist/react/FileDiff.js +2 -1
  97. package/dist/react/FileDiff.js.map +1 -1
  98. package/dist/react/MultiFileDiff.d.ts +1 -0
  99. package/dist/react/MultiFileDiff.d.ts.map +1 -1
  100. package/dist/react/MultiFileDiff.js +2 -1
  101. package/dist/react/MultiFileDiff.js.map +1 -1
  102. package/dist/react/PatchDiff.d.ts +1 -0
  103. package/dist/react/PatchDiff.d.ts.map +1 -1
  104. package/dist/react/PatchDiff.js +3 -2
  105. package/dist/react/PatchDiff.js.map +1 -1
  106. package/dist/react/Virtualizer.d.ts +25 -0
  107. package/dist/react/Virtualizer.d.ts.map +1 -0
  108. package/dist/react/Virtualizer.js +38 -0
  109. package/dist/react/Virtualizer.js.map +1 -0
  110. package/dist/react/WorkerPoolContext.d.ts.map +1 -1
  111. package/dist/react/WorkerPoolContext.js +1 -1
  112. package/dist/react/WorkerPoolContext.js.map +1 -1
  113. package/dist/react/constants.d.ts.map +1 -1
  114. package/dist/react/index.d.ts +3 -2
  115. package/dist/react/index.js +2 -1
  116. package/dist/react/jsx.d.ts.map +1 -1
  117. package/dist/react/types.d.ts +5 -3
  118. package/dist/react/types.d.ts.map +1 -1
  119. package/dist/react/utils/renderDiffChildren.d.ts +5 -5
  120. package/dist/react/utils/renderDiffChildren.d.ts.map +1 -1
  121. package/dist/react/utils/renderFileChildren.d.ts +5 -5
  122. package/dist/react/utils/renderFileChildren.d.ts.map +1 -1
  123. package/dist/react/utils/templateRender.d.ts.map +1 -1
  124. package/dist/react/utils/useFileDiffInstance.d.ts +5 -3
  125. package/dist/react/utils/useFileDiffInstance.d.ts.map +1 -1
  126. package/dist/react/utils/useFileDiffInstance.js +6 -2
  127. package/dist/react/utils/useFileDiffInstance.js.map +1 -1
  128. package/dist/react/utils/useFileInstance.d.ts +5 -3
  129. package/dist/react/utils/useFileInstance.d.ts.map +1 -1
  130. package/dist/react/utils/useFileInstance.js +6 -2
  131. package/dist/react/utils/useFileInstance.js.map +1 -1
  132. package/dist/react/utils/useStableCallback.d.ts.map +1 -1
  133. package/dist/react/utils/useStableCallback.js.map +1 -1
  134. package/dist/renderers/DiffHunksRenderer.d.ts +15 -10
  135. package/dist/renderers/DiffHunksRenderer.d.ts.map +1 -1
  136. package/dist/renderers/DiffHunksRenderer.js +249 -140
  137. package/dist/renderers/DiffHunksRenderer.js.map +1 -1
  138. package/dist/renderers/FileRenderer.d.ts +12 -5
  139. package/dist/renderers/FileRenderer.d.ts.map +1 -1
  140. package/dist/renderers/FileRenderer.js +90 -31
  141. package/dist/renderers/FileRenderer.js.map +1 -1
  142. package/dist/shiki-stream/stream.d.ts +2 -2
  143. package/dist/shiki-stream/stream.d.ts.map +1 -1
  144. package/dist/shiki-stream/stream.js.map +1 -1
  145. package/dist/shiki-stream/tokenizer.d.ts +2 -2
  146. package/dist/shiki-stream/tokenizer.d.ts.map +1 -1
  147. package/dist/shiki-stream/tokenizer.js.map +1 -1
  148. package/dist/shiki-stream/types.d.ts +18 -18
  149. package/dist/shiki-stream/types.d.ts.map +1 -1
  150. package/dist/sprite.d.ts +1 -1
  151. package/dist/sprite.d.ts.map +1 -1
  152. package/dist/ssr/FileDiffReact.d.ts.map +1 -1
  153. package/dist/ssr/FileDiffReact.js +1 -1
  154. package/dist/ssr/index.d.ts +2 -2
  155. package/dist/ssr/preloadDiffs.d.ts.map +1 -1
  156. package/dist/ssr/preloadFile.d.ts.map +1 -1
  157. package/dist/ssr/preloadPatchFile.d.ts.map +1 -1
  158. package/dist/ssr/preloadPatchFile.js.map +1 -1
  159. package/dist/ssr/renderHTML.d.ts.map +1 -1
  160. package/dist/style.js +1 -1
  161. package/dist/style.js.map +1 -1
  162. package/dist/types.d.ts +198 -165
  163. package/dist/types.d.ts.map +1 -1
  164. package/dist/utils/areDiffLineAnnotationsEqual.d.ts.map +1 -1
  165. package/dist/utils/areDiffLineAnnotationsEqual.js.map +1 -1
  166. package/dist/utils/areFilesEqual.d.ts.map +1 -1
  167. package/dist/utils/areHunkDataEqual.d.ts.map +1 -1
  168. package/dist/utils/areLineAnnotationsEqual.d.ts.map +1 -1
  169. package/dist/utils/areObjectsEqual.d.ts.map +1 -1
  170. package/dist/utils/areOptionsEqual.d.ts +1 -1
  171. package/dist/utils/areOptionsEqual.d.ts.map +1 -1
  172. package/dist/utils/arePrePropertiesEqual.d.ts.map +1 -1
  173. package/dist/utils/arePrePropertiesEqual.js +1 -1
  174. package/dist/utils/arePrePropertiesEqual.js.map +1 -1
  175. package/dist/utils/areRenderRangesEqual.d.ts.map +1 -1
  176. package/dist/utils/areSelectionsEqual.d.ts.map +1 -1
  177. package/dist/utils/areThemesEqual.d.ts.map +1 -1
  178. package/dist/utils/areVirtualWindowSpecsEqual.d.ts.map +1 -1
  179. package/dist/utils/areWorkerStatsEqual.d.ts.map +1 -1
  180. package/dist/utils/cleanLastNewline.d.ts.map +1 -1
  181. package/dist/utils/createAnnotationElement.d.ts.map +1 -1
  182. package/dist/utils/createAnnotationWrapperNode.d.ts.map +1 -1
  183. package/dist/utils/createContentColumn.d.ts +7 -0
  184. package/dist/utils/createContentColumn.d.ts.map +1 -0
  185. package/dist/utils/createContentColumn.js +17 -0
  186. package/dist/utils/createContentColumn.js.map +1 -0
  187. package/dist/utils/createEmptyRowBuffer.d.ts.map +1 -1
  188. package/dist/utils/createEmptyRowBuffer.js +2 -1
  189. package/dist/utils/createEmptyRowBuffer.js.map +1 -1
  190. package/dist/utils/createFileHeaderElement.d.ts.map +1 -1
  191. package/dist/utils/createHoverContentNode.d.ts.map +1 -1
  192. package/dist/utils/createNoNewlineElement.d.ts +2 -1
  193. package/dist/utils/createNoNewlineElement.d.ts.map +1 -1
  194. package/dist/utils/createNoNewlineElement.js +3 -6
  195. package/dist/utils/createNoNewlineElement.js.map +1 -1
  196. package/dist/utils/createPreElement.d.ts +2 -1
  197. package/dist/utils/createPreElement.d.ts.map +1 -1
  198. package/dist/utils/createPreElement.js +4 -3
  199. package/dist/utils/createPreElement.js.map +1 -1
  200. package/dist/utils/createRowNodes.d.ts.map +1 -1
  201. package/dist/utils/createSeparator.d.ts.map +1 -1
  202. package/dist/utils/createSeparator.js +2 -2
  203. package/dist/utils/createSeparator.js.map +1 -1
  204. package/dist/utils/createSpanNodeFromToken.d.ts.map +1 -1
  205. package/dist/utils/createSpanNodeFromToken.js.map +1 -1
  206. package/dist/utils/createStyleElement.d.ts.map +1 -1
  207. package/dist/utils/createTransformerWithState.d.ts.map +1 -1
  208. package/dist/utils/createUnsafeCSSStyleNode.d.ts.map +1 -1
  209. package/dist/utils/createWindowFromScrollPosition.d.ts.map +1 -1
  210. package/dist/utils/cssWrappers.d.ts.map +1 -1
  211. package/dist/utils/diffAcceptRejectHunk.d.ts +1 -1
  212. package/dist/utils/diffAcceptRejectHunk.d.ts.map +1 -1
  213. package/dist/utils/formatCSSVariablePrefix.d.ts +1 -1
  214. package/dist/utils/formatCSSVariablePrefix.d.ts.map +1 -1
  215. package/dist/utils/getFiletypeFromFileName.d.ts +2 -1
  216. package/dist/utils/getFiletypeFromFileName.d.ts.map +1 -1
  217. package/dist/utils/getFiletypeFromFileName.js +14 -4
  218. package/dist/utils/getFiletypeFromFileName.js.map +1 -1
  219. package/dist/utils/getHighlighterOptions.d.ts.map +1 -1
  220. package/dist/utils/getHighlighterThemeStyles.d.ts.map +1 -1
  221. package/dist/utils/getHunkSeparatorSlotName.d.ts +3 -1
  222. package/dist/utils/getHunkSeparatorSlotName.d.ts.map +1 -1
  223. package/dist/utils/getHunkSeparatorSlotName.js.map +1 -1
  224. package/dist/utils/getIconForType.d.ts +1 -1
  225. package/dist/utils/getIconForType.d.ts.map +1 -1
  226. package/dist/utils/getLineAnnotationName.d.ts.map +1 -1
  227. package/dist/utils/getLineEndingType.d.ts +1 -1
  228. package/dist/utils/getLineEndingType.d.ts.map +1 -1
  229. package/dist/utils/getLineNodes.d.ts.map +1 -1
  230. package/dist/utils/getOrCreateCodeNode.d.ts +4 -2
  231. package/dist/utils/getOrCreateCodeNode.d.ts.map +1 -1
  232. package/dist/utils/getOrCreateCodeNode.js +9 -6
  233. package/dist/utils/getOrCreateCodeNode.js.map +1 -1
  234. package/dist/utils/getSingularPatch.d.ts.map +1 -1
  235. package/dist/utils/getThemes.d.ts.map +1 -1
  236. package/dist/utils/getTotalLineCountFromHunks.d.ts.map +1 -1
  237. package/dist/utils/hast_utils.d.ts +6 -3
  238. package/dist/utils/hast_utils.d.ts.map +1 -1
  239. package/dist/utils/hast_utils.js +28 -4
  240. package/dist/utils/hast_utils.js.map +1 -1
  241. package/dist/utils/isDefaultRenderRange.d.ts.map +1 -1
  242. package/dist/utils/isWorkerContext.d.ts.map +1 -1
  243. package/dist/utils/iterateOverDiff.d.ts +28 -13
  244. package/dist/utils/iterateOverDiff.d.ts.map +1 -1
  245. package/dist/utils/iterateOverDiff.js +101 -60
  246. package/dist/utils/iterateOverDiff.js.map +1 -1
  247. package/dist/utils/iterateOverFile.d.ts +50 -0
  248. package/dist/utils/iterateOverFile.d.ts.map +1 -0
  249. package/dist/utils/iterateOverFile.js +49 -0
  250. package/dist/utils/iterateOverFile.js.map +1 -0
  251. package/dist/utils/parseDiffDecorations.d.ts.map +1 -1
  252. package/dist/utils/parseDiffFromFile.d.ts +6 -6
  253. package/dist/utils/parseDiffFromFile.d.ts.map +1 -1
  254. package/dist/utils/parseDiffFromFile.js +3 -2
  255. package/dist/utils/parseDiffFromFile.js.map +1 -1
  256. package/dist/utils/parseLineType.d.ts +1 -1
  257. package/dist/utils/parseLineType.d.ts.map +1 -1
  258. package/dist/utils/parsePatchFiles.d.ts +12 -10
  259. package/dist/utils/parsePatchFiles.d.ts.map +1 -1
  260. package/dist/utils/parsePatchFiles.js +20 -11
  261. package/dist/utils/parsePatchFiles.js.map +1 -1
  262. package/dist/utils/prerenderHTMLIfNecessary.d.ts.map +1 -1
  263. package/dist/utils/processLine.d.ts.map +1 -1
  264. package/dist/utils/processLine.js +7 -24
  265. package/dist/utils/processLine.js.map +1 -1
  266. package/dist/utils/renderDiffWithHighlighter.d.ts +4 -3
  267. package/dist/utils/renderDiffWithHighlighter.d.ts.map +1 -1
  268. package/dist/utils/renderDiffWithHighlighter.js +18 -16
  269. package/dist/utils/renderDiffWithHighlighter.js.map +1 -1
  270. package/dist/utils/renderFileWithHighlighter.d.ts +7 -2
  271. package/dist/utils/renderFileWithHighlighter.d.ts.map +1 -1
  272. package/dist/utils/renderFileWithHighlighter.js +30 -4
  273. package/dist/utils/renderFileWithHighlighter.js.map +1 -1
  274. package/dist/utils/resolveVirtualFileMetrics.d.ts +7 -0
  275. package/dist/utils/resolveVirtualFileMetrics.d.ts.map +1 -0
  276. package/dist/utils/resolveVirtualFileMetrics.js +25 -0
  277. package/dist/utils/resolveVirtualFileMetrics.js.map +1 -0
  278. package/dist/utils/setLanguageOverride.d.ts +2 -1
  279. package/dist/utils/setLanguageOverride.d.ts.map +1 -1
  280. package/dist/utils/setLanguageOverride.js.map +1 -1
  281. package/dist/utils/setWrapperNodeProps.d.ts +1 -0
  282. package/dist/utils/setWrapperNodeProps.d.ts.map +1 -1
  283. package/dist/utils/setWrapperNodeProps.js +19 -12
  284. package/dist/utils/setWrapperNodeProps.js.map +1 -1
  285. package/dist/utils/splitFileContents.d.ts +12 -0
  286. package/dist/utils/splitFileContents.d.ts.map +1 -0
  287. package/dist/utils/splitFileContents.js +17 -0
  288. package/dist/utils/splitFileContents.js.map +1 -0
  289. package/dist/utils/trimPatchContext.d.ts +11 -0
  290. package/dist/utils/trimPatchContext.d.ts.map +1 -0
  291. package/dist/utils/trimPatchContext.js +99 -0
  292. package/dist/utils/trimPatchContext.js.map +1 -0
  293. package/dist/worker/WorkerPoolManager.d.ts +3 -3
  294. package/dist/worker/WorkerPoolManager.d.ts.map +1 -1
  295. package/dist/worker/WorkerPoolManager.js +39 -26
  296. package/dist/worker/WorkerPoolManager.js.map +1 -1
  297. package/dist/worker/getOrCreateWorkerPoolSingleton.d.ts.map +1 -1
  298. package/dist/worker/getOrCreateWorkerPoolSingleton.js.map +1 -1
  299. package/dist/worker/types.d.ts +26 -26
  300. package/dist/worker/types.d.ts.map +1 -1
  301. package/dist/worker/worker-portable.js +352 -154
  302. package/dist/worker/worker-portable.js.map +1 -1
  303. package/dist/worker/worker.js +222 -113
  304. package/dist/worker/worker.js.map +1 -1
  305. 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 (themeType === "system") delete pre.dataset.themeType;
4
- else pre.dataset.themeType = themeType;
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.dataset.indicators = diffIndicators;
15
+ pre.setAttribute("data-indicators", diffIndicators);
9
16
  break;
10
17
  case "none":
11
- delete pre.dataset.indicators;
18
+ pre.removeAttribute("data-indicators");
12
19
  break;
13
20
  }
14
- if (disableLineNumbers) pre.dataset.disableLineNumbers = "";
15
- else delete pre.dataset.disableLineNumbers;
16
- if (disableBackground) delete pre.dataset.background;
17
- else pre.dataset.background = "";
18
- pre.dataset.type = split ? "split" : "file";
19
- pre.dataset.overflow = overflow;
20
- pre.dataset.diffs = "";
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 (themeType === 'system') {\n delete pre.dataset.themeType;\n } else {\n pre.dataset.themeType = themeType;\n }\n switch (diffIndicators) {\n case 'bars':\n case 'classic':\n pre.dataset.indicators = diffIndicators;\n break;\n case 'none':\n delete pre.dataset.indicators;\n break;\n }\n if (disableLineNumbers) {\n pre.dataset.disableLineNumbers = '';\n } else {\n delete pre.dataset.disableLineNumbers;\n }\n if (disableBackground) {\n delete pre.dataset.background;\n } else {\n pre.dataset.background = '';\n }\n pre.dataset.type = split ? 'split' : 'file';\n pre.dataset.overflow = overflow;\n pre.dataset.diffs = '';\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,gBACA,mBACA,oBACA,UACA,OACA,aACA,WACA,cAEc;AAChB,KAAI,cAAc,SAChB,QAAO,IAAI,QAAQ;KAEnB,KAAI,QAAQ,YAAY;AAE1B,SAAQ,gBAAR;EACE,KAAK;EACL,KAAK;AACH,OAAI,QAAQ,aAAa;AACzB;EACF,KAAK;AACH,UAAO,IAAI,QAAQ;AACnB;;AAEJ,KAAI,mBACF,KAAI,QAAQ,qBAAqB;KAEjC,QAAO,IAAI,QAAQ;AAErB,KAAI,kBACF,QAAO,IAAI,QAAQ;KAEnB,KAAI,QAAQ,aAAa;AAE3B,KAAI,QAAQ,OAAO,QAAQ,UAAU;AACrC,KAAI,QAAQ,WAAW;AACvB,KAAI,QAAQ,QAAQ;AACpB,KAAI,WAAW;AAEf,KAAI,QAAQ;AAEZ,KAAI,MAAM,YACR,2CACA,GAAG,GAAG,aAAa,OAAO,IAC3B;AACD,QAAO"}
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":["options: WorkerPoolOptions"],"sources":["../../src/worker/WorkerPoolManager.ts"],"sourcesContent":[],"mappings":";;;;;UAqDU,eAAA;aACG,SAAA,CAAU,eAAe;EAL/B,SAIG,EAEG,SAAA,CAAU,MAFb,CAAA,MAAA,EAE4B,gBAF5B,CAAA;;UAYA,eAAA,CAXa;EACe,QAAA,EAAA,EAAA,IAAA;;AAAf,cAcV,iBAAA,CAdU;EAAA,QAUb,OAAA;EAIV,QAAa,WAAA;EAoBQ,QAAA,aAAA;EAEf,QAAA,WAAA;EACA,QAAA,OAAA;EACA,QAAA,SAAA;EACA,QAAA,YAAA;EACC,QAAA,aAAA;EAYoB,QAAA,gBAAA;EAAe,QAAA,aAAA;EAMf,QAAA,kBAAA;EAAmB,QAAA,eAAA;EAM3B,QAAA,SAAA;EAsBf,QAAA,SAAA;EACA,QAAA,gBAAA;EACA,WAAA,CAAA,OAAA,EAtDiB,iBAsDjB,EAAA;IAAA,KAAA;IAAA,KAAA;IAAA,YAAA;IAAA;EAAA,CAAA,EAhDG,iCAgDH;EACS,aAAA,CAAA,CAAA,EAAA,OAAA;EAAR,kBAAA,CAAA,IAAA,EArCsB,YAqCtB,CAAA,EArCqC,gBAqCrC,GAAA,SAAA;EAAkC,kBAAA,CAAA,IAAA,EA/BZ,gBA+BY,CAAA,EA/BO,gBA+BP,GAAA,SAAA;EAoDb,aAAA,CAAA,CAAA,EA7EP,eA6EO;EAKA,kBAAA,CAAA,QAAA,EAAA,MAAA,CAAA,EAAA,OAAA;EAiDU,kBAAA,CAAA,QAAA,EAAA,MAAA,CAAA,EAAA,OAAA;EASE,gBAAA,CAAA;IAAA,KAAA;IAAA,YAAA;IAAA;EAAA,CAAA,EAnHjC,OAmHiC,CAnHzB,sBAmHyB,CAAA,CAAA,EAnHC,OAmHD,CAAA,IAAA,CAAA;EAMhB,oBAAA,CAAA,CAAA,EArEI,iBAqEJ;EA0BR,oBAAA,CAAA,CAAA,EA1FY,iBA0FZ;EAAuB,QAAA,yBAAA;EAoBP,uBAAA,CAAA,QAAA,EA7DM,eA6DN,CAAA,EAAA,GAAA,GAAA,IAAA;EAA4B,yBAAA,CAAA,QAAA,EApDpB,eAoDoB,CAAA,EAAA,IAAA;EAoI7B,sBAAA,CAAA,QAAA,EAAA,CAAA,KAAA,EAlLP,WAkLO,EAAA,GAAA,OAAA,CAAA,EAAA,GAAA,GAAA,IAAA;EAA4B,QAAA,0BAAA;EAoBjC,QAAA,sBAAA;EAAe,mBAAA,CAAA,QAAA,EA5KzB,oBA4KyB,GA5KF,oBA4KE,CAAA,EAAA,IAAA;EAczB,aAAA,CAAA,CAAA,EAAA,OAAA;EACJ,UAAA,CAAA,SAAA,CAAA,EAvKoB,kBAuKpB,EAAA,CAAA,EAvKgD,OAuKhD,CAAA,IAAA,CAAA;EAsBA,QAAA,iBAAA;EAGsB,QAAA,UAAA;EAAZ,gBAAA,CAAA,QAAA,EA5DS,oBA4DT,EAAA,IAAA,EA5DqC,YA4DrC,CAAA,EAAA,IAAA;EACf,eAAA,CAAA,IAAA,EAzCmB,YAyCnB,CAAA,EAzCkC,gBAyClC,GAAA,SAAA;EA+BS,gBAAA,CAAA,QAAA,EA1DA,oBA0DA,EAAA,IAAA,EAzDJ,gBAyDI,CAAA,EAAA,IAAA;EAAA,eAAA,CAAA,IAAA,EAnCJ,gBAmCI,EAAA,YAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,aAAA,CAAA,EAhCM,GAgCN,CAAA,MAAA,EAhCkB,mBAgClB,CAAA,GAAA,IAAA,CAAA,EA/BT,gBA+BS,GAAA,SAAA;;;cAAA"}
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":";;;;;UAGUiB,eAAAA;aACKjB,SAAAA,CAAUkB,eAAeX;EAD9BU,SAAAA,EAEKjB,SAAAA,CAAUkB,MAFA,CAAA,MAAA,EAEeb,gBAFf,CAAA;;UAIfc,eAAAA,CAHeD;EACeb,QAAAA,EAAAA,EAAAA,IAAAA;;AAAT,cAKVe,iBAAAA,CALU;EAErBD,QAAAA,OAAAA;EAGWC,QAAAA,WAAAA;EAgBIN,QAAAA,aAAAA;EAAqBO,QAAAA,WAAAA;EAAOC,QAAAA,OAAAA;EAAOC,QAAAA,SAAAA;EAAcC,QAAAA,YAAAA;EAAyBX,QAAAA,aAAAA;EAEtEZ,QAAAA,gBAAAA;EAAeM,QAAAA,aAAAA;EACfL,QAAAA,kBAAAA;EAAmBG,QAAAA,eAAAA;EAC3BY,QAAAA,SAAAA;EAGEK,QAAAA,SAAAA;EAAOC,QAAAA,gBAAAA;EAAcC,WAAAA,CAAAA,OAAAA,EAPnBV,iBAOmBU,EAAAA;IAAAA,KAAAA;IAAAA,KAAAA;IAAAA,YAAAA;IAAAA;EAAAA,CAAAA,EAPuDX,iCAOvDW;EAAiCT,aAAAA,CAAAA,CAAAA,EAAAA,OAAAA;EAARU,kBAAAA,CAAAA,IAAAA,EALxCxB,YAKwCwB,CAAAA,EALzBlB,gBAKyBkB,GAAAA,SAAAA;EAAkCC,kBAAAA,CAAAA,IAAAA,EAJ1ExB,gBAI0EwB,CAAAA,EAJvDrB,gBAIuDqB,GAAAA,SAAAA;EAC3EpB,aAAAA,CAAAA,CAAAA,EAJPW,eAIOX;EACAF,kBAAAA,CAAAA,QAAAA,EAAAA,MAAAA,CAAAA,EAAAA,OAAAA;EAEUe,kBAAAA,CAAAA,QAAAA,EAAAA,MAAAA,CAAAA,EAAAA,OAAAA;EACEA,gBAAAA,CAAAA;IAAAA,KAAAA;IAAAA,YAAAA;IAAAA;EAAAA,CAAAA,EAL6BM,OAK7BN,CALqCJ,sBAKrCI,CAAAA,CAAAA,EAL+DO,OAK/DP,CAAAA,IAAAA,CAAAA;EACKH,oBAAAA,CAAAA,CAAAA,EALjBV,iBAKiBU;EAGXJ,oBAAAA,CAAAA,CAAAA,EAPNR,iBAOMQ;EAAuBD,QAAAA,yBAAAA;EAE9BH,uBAAAA,CAAAA,QAAAA,EAPWW,eAOXX,CAAAA,EAAAA,GAAAA,GAAAA,IAAAA;EAAuBkB,yBAAAA,CAAAA,QAAAA,EANVP,eAMUO,CAAAA,EAAAA,IAAAA;EAGnBd,sBAAAA,CAAAA,QAAAA,EAAAA,CAAAA,KAAAA,EARcI,WAQdJ,EAAAA,GAAAA,OAAAA,CAAAA,EAAAA,GAAAA,GAAAA,IAAAA;EAA4BX,QAAAA,0BAAAA;EACjCA,QAAAA,sBAAAA;EAA2ES,mBAAAA,CAAAA,QAAAA,EANnEE,oBAMmEF,GAN5CC,oBAM4CD,CAAAA,EAAAA,IAAAA;EACtEC,aAAAA,CAAAA,CAAAA,EAAAA,OAAAA;EAA4BT,UAAAA,CAAAA,SAAAA,CAAAA,EALhCM,kBAKgCN,EAAAA,CAAAA,EALTwB,OAKSxB,CAAAA,IAAAA,CAAAA;EACjCA,QAAAA,iBAAAA;EAAwFC,QAAAA,UAAAA;EAAZwB,gBAAAA,CAAAA,QAAAA,EAHvEf,oBAGuEe,EAAAA,IAAAA,EAH3C1B,YAG2C0B,CAAAA,EAAAA,IAAAA;EAA8ElB,eAAAA,CAAAA,IAAAA,EAF1JR,YAE0JQ,EAAAA,YAAAA,EAAAA,MAAAA,EAAAA,UAAAA,EAAAA,MAAAA,EAAAA,KAAAA,CAAAA,EAAAA,MAAAA,EAAAA,CAAAA,EAF/EC,gBAE+ED,GAAAA,SAAAA;EAGpKO,gBAAAA,CAAAA,QAAAA,EAJeL,oBAIfK,EAAAA,IAAAA,EAJ2Cd,gBAI3Cc,CAAAA,EAAAA,IAAAA;EAAW,eAAA,CAAA,IAAA,EAHDd,gBAGC,EAAA,YAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,aAAA,CAAA,EAH2EyB,GAG3E,CAAA,MAAA,EAHuFxB,mBAGvF,CAAA,GAAA,IAAA,EAAA,yBAAA,CAAA,EAAA,MAAA,CAAA,EAHyJM,gBAGzJ,GAAA,SAAA;;;cAAXO"}
@@ -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 = this.taskQueue.filter((task) => {
177
- if ("instance" in task) return task.instance !== instance;
178
- return true;
179
- });
180
- for (const [id, task] of Array.from(this.pendingTasks)) if ("instance" in task && task.instance === instance) this.pendingTasks.delete(id);
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.length === 0) return;
270
- while (this.taskQueue.length > 0) {
271
- const task = this.taskQueue[0];
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, true);
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.length = 0;
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.length,
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.instanceRequestMap.set(instance, id);
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
- if (task.type === "file" || task.type === "diff") {
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 && "instance" in task && this.instanceRequestMap.get(task.instance) === response.id) this.instanceRequestMap.delete(task.instance);
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.length > 0) this.queueDrain();
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
- managedWorker.request_id = void 0;
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);