@pierre/diffs 1.5.1 → 1.6.0-beta.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (304) hide show
  1. package/README.md +4 -3
  2. package/dist/components/CodeView.d.ts +2 -1
  3. package/dist/components/CodeView.d.ts.map +1 -1
  4. package/dist/components/CodeView.js +27 -16
  5. package/dist/components/CodeView.js.map +1 -1
  6. package/dist/components/File.d.ts.map +1 -1
  7. package/dist/components/File.js +14 -7
  8. package/dist/components/File.js.map +1 -1
  9. package/dist/components/FileDiff.d.ts +7 -4
  10. package/dist/components/FileDiff.d.ts.map +1 -1
  11. package/dist/components/FileDiff.js +16 -9
  12. package/dist/components/FileDiff.js.map +1 -1
  13. package/dist/components/FileStream.d.ts +6 -4
  14. package/dist/components/FileStream.d.ts.map +1 -1
  15. package/dist/components/FileStream.js +49 -36
  16. package/dist/components/FileStream.js.map +1 -1
  17. package/dist/components/VirtualizedFile.d.ts.map +1 -1
  18. package/dist/components/VirtualizedFile.js +10 -5
  19. package/dist/components/VirtualizedFile.js.map +1 -1
  20. package/dist/components/VirtualizedFileDiff.d.ts.map +1 -1
  21. package/dist/components/VirtualizedFileDiff.js +3 -4
  22. package/dist/components/VirtualizedFileDiff.js.map +1 -1
  23. package/dist/constants.d.ts +3 -2
  24. package/dist/constants.d.ts.map +1 -1
  25. package/dist/constants.js +2 -1
  26. package/dist/constants.js.map +1 -1
  27. package/dist/editor/editor.d.ts +2 -1
  28. package/dist/editor/editor.d.ts.map +1 -1
  29. package/dist/editor/editor.js +10 -3
  30. package/dist/editor/editor.js.map +1 -1
  31. package/dist/editor/getChangedDocumentLines.d.ts +6 -0
  32. package/dist/editor/getChangedDocumentLines.d.ts.map +1 -0
  33. package/dist/editor/getChangedDocumentLines.js +35 -0
  34. package/dist/editor/getChangedDocumentLines.js.map +1 -0
  35. package/dist/editor/tokenizer.d.ts +6 -4
  36. package/dist/editor/tokenizer.d.ts.map +1 -1
  37. package/dist/editor/tokenizer.js +25 -470
  38. package/dist/editor/tokenizer.js.map +1 -1
  39. package/dist/highlighter/DiffsEditorTokenizer.d.ts +16 -0
  40. package/dist/highlighter/DiffsEditorTokenizer.d.ts.map +1 -0
  41. package/dist/highlighter/DiffsEditorTokenizer.js +0 -0
  42. package/dist/highlighter/DiffsHighlighter.d.ts +41 -0
  43. package/dist/highlighter/DiffsHighlighter.d.ts.map +1 -0
  44. package/dist/highlighter/DiffsHighlighter.js +39 -0
  45. package/dist/highlighter/DiffsHighlighter.js.map +1 -0
  46. package/dist/highlighter/backends/highlights.d.ts +26 -0
  47. package/dist/highlighter/backends/highlights.d.ts.map +1 -0
  48. package/dist/highlighter/backends/highlights.js +71 -0
  49. package/dist/highlighter/backends/highlights.js.map +1 -0
  50. package/dist/highlighter/backends/shiki.d.ts +27 -0
  51. package/dist/highlighter/backends/shiki.d.ts.map +1 -0
  52. package/dist/highlighter/backends/shiki.js +107 -0
  53. package/dist/highlighter/backends/shiki.js.map +1 -0
  54. package/dist/highlighter/highlighterType.d.ts +13 -0
  55. package/dist/highlighter/highlighterType.d.ts.map +1 -0
  56. package/dist/highlighter/highlighterType.js +32 -0
  57. package/dist/highlighter/highlighterType.js.map +1 -0
  58. package/dist/highlighter/highlights-editor.d.ts +24 -0
  59. package/dist/highlighter/highlights-editor.d.ts.map +1 -0
  60. package/dist/highlighter/highlights-editor.js +166 -0
  61. package/dist/highlighter/highlights-editor.js.map +1 -0
  62. package/dist/highlighter/highlights-stream.d.ts +20 -0
  63. package/dist/highlighter/highlights-stream.d.ts.map +1 -0
  64. package/dist/highlighter/highlights-stream.js +93 -0
  65. package/dist/highlighter/highlights-stream.js.map +1 -0
  66. package/dist/highlighter/languages/areLanguagesAttached.d.ts +2 -1
  67. package/dist/highlighter/languages/areLanguagesAttached.d.ts.map +1 -1
  68. package/dist/highlighter/languages/areLanguagesAttached.js +4 -6
  69. package/dist/highlighter/languages/areLanguagesAttached.js.map +1 -1
  70. package/dist/highlighter/languages/attachResolvedLanguages.d.ts +6 -1
  71. package/dist/highlighter/languages/attachResolvedLanguages.d.ts.map +1 -1
  72. package/dist/highlighter/languages/attachResolvedLanguages.js +6 -11
  73. package/dist/highlighter/languages/attachResolvedLanguages.js.map +1 -1
  74. package/dist/highlighter/languages/constants.d.ts +1 -1
  75. package/dist/highlighter/languages/getResolvedLanguages.d.ts +1 -1
  76. package/dist/highlighter/languages/getResolvedOrResolveLanguage.d.ts +1 -1
  77. package/dist/highlighter/languages/resolveLanguage.d.ts +1 -1
  78. package/dist/highlighter/languages/resolveLanguage.d.ts.map +1 -1
  79. package/dist/highlighter/languages/resolveLanguage.js +19 -16
  80. package/dist/highlighter/languages/resolveLanguage.js.map +1 -1
  81. package/dist/highlighter/languages/resolveLanguages.d.ts +1 -1
  82. package/dist/highlighter/shared_highlighter.d.ts +23 -9
  83. package/dist/highlighter/shared_highlighter.d.ts.map +1 -1
  84. package/dist/highlighter/shared_highlighter.js +59 -47
  85. package/dist/highlighter/shared_highlighter.js.map +1 -1
  86. package/dist/highlighter/shiki-editor.d.ts +25 -0
  87. package/dist/highlighter/shiki-editor.d.ts.map +1 -0
  88. package/dist/highlighter/shiki-editor.js +483 -0
  89. package/dist/highlighter/shiki-editor.js.map +1 -0
  90. package/dist/highlighter/shiki-stream.d.ts +20 -0
  91. package/dist/highlighter/shiki-stream.d.ts.map +1 -0
  92. package/dist/highlighter/shiki-stream.js +60 -0
  93. package/dist/highlighter/shiki-stream.js.map +1 -0
  94. package/dist/highlighter/stream-tokenizer.d.ts +40 -0
  95. package/dist/highlighter/stream-tokenizer.d.ts.map +1 -0
  96. package/dist/highlighter/stream-tokenizer.js +70 -0
  97. package/dist/highlighter/stream-tokenizer.js.map +1 -0
  98. package/dist/highlighter/themes/areThemesAttached.d.ts +3 -2
  99. package/dist/highlighter/themes/areThemesAttached.d.ts.map +1 -1
  100. package/dist/highlighter/themes/areThemesAttached.js +5 -4
  101. package/dist/highlighter/themes/areThemesAttached.js.map +1 -1
  102. package/dist/highlighter/themes/attachResolvedThemes.d.ts +5 -2
  103. package/dist/highlighter/themes/attachResolvedThemes.d.ts.map +1 -1
  104. package/dist/highlighter/themes/attachResolvedThemes.js +4 -16
  105. package/dist/highlighter/themes/attachResolvedThemes.js.map +1 -1
  106. package/dist/highlighter/themes/cleanUpResolvedThemes.d.ts +3 -1
  107. package/dist/highlighter/themes/cleanUpResolvedThemes.d.ts.map +1 -1
  108. package/dist/highlighter/themes/cleanUpResolvedThemes.js +8 -5
  109. package/dist/highlighter/themes/cleanUpResolvedThemes.js.map +1 -1
  110. package/dist/highlighter/themes/createCSSVariablesTheme.d.ts +7 -0
  111. package/dist/highlighter/themes/createCSSVariablesTheme.d.ts.map +1 -0
  112. package/dist/highlighter/themes/createCSSVariablesTheme.js +89 -0
  113. package/dist/highlighter/themes/createCSSVariablesTheme.js.map +1 -0
  114. package/dist/highlighter/themes/createCachedLoader.d.ts +5 -0
  115. package/dist/highlighter/themes/createCachedLoader.d.ts.map +1 -0
  116. package/dist/highlighter/themes/createCachedLoader.js +15 -0
  117. package/dist/highlighter/themes/createCachedLoader.js.map +1 -0
  118. package/dist/highlighter/themes/getResolvedOrResolveTheme.d.ts +3 -2
  119. package/dist/highlighter/themes/getResolvedOrResolveTheme.d.ts.map +1 -1
  120. package/dist/highlighter/themes/getResolvedOrResolveTheme.js +4 -4
  121. package/dist/highlighter/themes/getResolvedOrResolveTheme.js.map +1 -1
  122. package/dist/highlighter/themes/getResolvedThemes.d.ts +3 -2
  123. package/dist/highlighter/themes/getResolvedThemes.d.ts.map +1 -1
  124. package/dist/highlighter/themes/getResolvedThemes.js +4 -3
  125. package/dist/highlighter/themes/getResolvedThemes.js.map +1 -1
  126. package/dist/highlighter/themes/hasResolvedThemes.d.ts +2 -2
  127. package/dist/highlighter/themes/hasResolvedThemes.d.ts.map +1 -1
  128. package/dist/highlighter/themes/hasResolvedThemes.js +4 -3
  129. package/dist/highlighter/themes/hasResolvedThemes.js.map +1 -1
  130. package/dist/highlighter/themes/registerCustomCSSVariableTheme.d.ts.map +1 -1
  131. package/dist/highlighter/themes/registerCustomCSSVariableTheme.js +3 -3
  132. package/dist/highlighter/themes/registerCustomCSSVariableTheme.js.map +1 -1
  133. package/dist/highlighter/themes/registerCustomTheme.d.ts +9 -4
  134. package/dist/highlighter/themes/registerCustomTheme.d.ts.map +1 -1
  135. package/dist/highlighter/themes/registerCustomTheme.js +8 -16
  136. package/dist/highlighter/themes/registerCustomTheme.js.map +1 -1
  137. package/dist/highlighter/themes/resolveTheme.d.ts +3 -2
  138. package/dist/highlighter/themes/resolveTheme.d.ts.map +1 -1
  139. package/dist/highlighter/themes/resolveTheme.js +4 -7
  140. package/dist/highlighter/themes/resolveTheme.js.map +1 -1
  141. package/dist/highlighter/themes/resolveThemes.d.ts +3 -2
  142. package/dist/highlighter/themes/resolveThemes.d.ts.map +1 -1
  143. package/dist/highlighter/themes/resolveThemes.js +4 -7
  144. package/dist/highlighter/themes/resolveThemes.js.map +1 -1
  145. package/dist/highlighter/themes/themeResolver.d.ts +10 -4
  146. package/dist/highlighter/themes/themeResolver.d.ts.map +1 -1
  147. package/dist/highlighter/themes/themeResolver.js +141 -2
  148. package/dist/highlighter/themes/themeResolver.js.map +1 -1
  149. package/dist/highlighter/themes/types.d.ts +23 -0
  150. package/dist/highlighter/themes/types.d.ts.map +1 -0
  151. package/dist/highlighter/themes/types.js +0 -0
  152. package/dist/highlighter/tokenizer-types.d.ts +35 -0
  153. package/dist/highlighter/tokenizer-types.d.ts.map +1 -0
  154. package/dist/highlighter/tokenizer-types.js +0 -0
  155. package/dist/highlighter/types.d.ts +55 -0
  156. package/dist/highlighter/types.d.ts.map +1 -0
  157. package/dist/highlighter/types.js +0 -0
  158. package/dist/index.d.ts +14 -10
  159. package/dist/index.js +16 -18
  160. package/dist/managers/InteractionManager.d.ts.map +1 -1
  161. package/dist/managers/InteractionManager.js +2 -2
  162. package/dist/managers/InteractionManager.js.map +1 -1
  163. package/dist/node_modules/.pnpm/@types_hast@3.0.4/node_modules/@types/hast/index.d.ts +9 -1
  164. package/dist/node_modules/.pnpm/@types_hast@3.0.4/node_modules/@types/hast/index.d.ts.map +1 -1
  165. package/dist/react/CodeView.js +1 -1
  166. package/dist/react/index.d.ts +8 -3
  167. package/dist/renderers/DiffHunksRenderer.d.ts +3 -2
  168. package/dist/renderers/DiffHunksRenderer.d.ts.map +1 -1
  169. package/dist/renderers/DiffHunksRenderer.js +50 -24
  170. package/dist/renderers/DiffHunksRenderer.js.map +1 -1
  171. package/dist/renderers/FileRenderer.d.ts +2 -1
  172. package/dist/renderers/FileRenderer.d.ts.map +1 -1
  173. package/dist/renderers/FileRenderer.js +33 -24
  174. package/dist/renderers/FileRenderer.js.map +1 -1
  175. package/dist/shiki-stream/index.d.ts +3 -3
  176. package/dist/shiki-stream/index.js +1 -2
  177. package/dist/shiki-stream/stream.d.ts +4 -4
  178. package/dist/shiki-stream/stream.d.ts.map +1 -1
  179. package/dist/shiki-stream/stream.js +20 -9
  180. package/dist/shiki-stream/stream.js.map +1 -1
  181. package/dist/shiki-stream/types.d.ts +7 -38
  182. package/dist/shiki-stream/types.d.ts.map +1 -1
  183. package/dist/ssr/FileDiffReact.js +1 -1
  184. package/dist/ssr/index.d.ts +7 -2
  185. package/dist/ssr/renderHTML.js +2 -2
  186. package/dist/ssr/renderHTML.js.map +1 -1
  187. package/dist/style.js +1 -1
  188. package/dist/style.js.map +1 -1
  189. package/dist/types.d.ts +13 -13
  190. package/dist/types.d.ts.map +1 -1
  191. package/dist/utils/computeVirtualFileMetrics.d.ts +2 -1
  192. package/dist/utils/computeVirtualFileMetrics.d.ts.map +1 -1
  193. package/dist/utils/computeVirtualFileMetrics.js +5 -3
  194. package/dist/utils/computeVirtualFileMetrics.js.map +1 -1
  195. package/dist/utils/createSpanNodeFromToken.d.ts +3 -2
  196. package/dist/utils/createSpanNodeFromToken.d.ts.map +1 -1
  197. package/dist/utils/createSpanNodeFromToken.js +4 -5
  198. package/dist/utils/createSpanNodeFromToken.js.map +1 -1
  199. package/dist/utils/cssWrappers.d.ts.map +1 -1
  200. package/dist/utils/cssWrappers.js +12 -0
  201. package/dist/utils/cssWrappers.js.map +1 -1
  202. package/dist/utils/getDiffHunksRendererOptions.js +1 -0
  203. package/dist/utils/getDiffHunksRendererOptions.js.map +1 -1
  204. package/dist/utils/getFiletypeFromFileName.d.ts.map +1 -1
  205. package/dist/utils/getFiletypeFromFileName.js +21 -3
  206. package/dist/utils/getFiletypeFromFileName.js.map +1 -1
  207. package/dist/utils/getHighlighterOptions.d.ts.map +1 -1
  208. package/dist/utils/getHighlighterOptions.js +3 -2
  209. package/dist/utils/getHighlighterOptions.js.map +1 -1
  210. package/dist/utils/getHighlighterThemeStyles.d.ts +2 -1
  211. package/dist/utils/getHighlighterThemeStyles.d.ts.map +1 -1
  212. package/dist/utils/getHighlighterThemeStyles.js +13 -3
  213. package/dist/utils/getHighlighterThemeStyles.js.map +1 -1
  214. package/dist/utils/getTokenOptions.d.ts +7 -0
  215. package/dist/utils/getTokenOptions.d.ts.map +1 -0
  216. package/dist/utils/getTokenOptions.js +16 -0
  217. package/dist/utils/getTokenOptions.js.map +1 -0
  218. package/dist/utils/hastToHtml.d.ts +10 -0
  219. package/dist/utils/hastToHtml.d.ts.map +1 -0
  220. package/dist/utils/hastToHtml.js +125 -0
  221. package/dist/utils/hastToHtml.js.map +1 -0
  222. package/dist/utils/parseDiffDecorations.d.ts +2 -1
  223. package/dist/utils/parseDiffDecorations.d.ts.map +1 -1
  224. package/dist/utils/platform.d.ts +2 -1
  225. package/dist/utils/platform.d.ts.map +1 -1
  226. package/dist/utils/platform.js +6 -1
  227. package/dist/utils/platform.js.map +1 -1
  228. package/dist/utils/renderDiffWithHighlighter.d.ts +3 -2
  229. package/dist/utils/renderDiffWithHighlighter.d.ts.map +1 -1
  230. package/dist/utils/renderDiffWithHighlighter.js +33 -48
  231. package/dist/utils/renderDiffWithHighlighter.js.map +1 -1
  232. package/dist/utils/renderFileWithHighlighter.d.ts +3 -2
  233. package/dist/utils/renderFileWithHighlighter.d.ts.map +1 -1
  234. package/dist/utils/renderFileWithHighlighter.js +10 -26
  235. package/dist/utils/renderFileWithHighlighter.js.map +1 -1
  236. package/dist/utils/renderTokenLines.d.ts +17 -0
  237. package/dist/utils/renderTokenLines.d.ts.map +1 -0
  238. package/dist/utils/renderTokenLines.js +246 -0
  239. package/dist/utils/renderTokenLines.js.map +1 -0
  240. package/dist/utils/resolvePreferredHighlighter.d.ts +13 -0
  241. package/dist/utils/resolvePreferredHighlighter.d.ts.map +1 -0
  242. package/dist/utils/resolvePreferredHighlighter.js +11 -0
  243. package/dist/utils/resolvePreferredHighlighter.js.map +1 -0
  244. package/dist/utils/setDeferredArrayItem.d.ts +5 -0
  245. package/dist/utils/setDeferredArrayItem.d.ts.map +1 -0
  246. package/dist/utils/setDeferredArrayItem.js +39 -0
  247. package/dist/utils/setDeferredArrayItem.js.map +1 -0
  248. package/dist/utils/tokenStyle.d.ts +7 -0
  249. package/dist/utils/tokenStyle.d.ts.map +1 -0
  250. package/dist/utils/tokenStyle.js +28 -0
  251. package/dist/utils/tokenStyle.js.map +1 -0
  252. package/dist/utils/tokensToHtml.d.ts +8 -0
  253. package/dist/utils/tokensToHtml.d.ts.map +1 -0
  254. package/dist/utils/tokensToHtml.js +45 -0
  255. package/dist/utils/tokensToHtml.js.map +1 -0
  256. package/dist/utils/wrapTokenFragments.js.map +1 -1
  257. package/dist/worker/WorkerPoolManager.d.ts +10 -2
  258. package/dist/worker/WorkerPoolManager.d.ts.map +1 -1
  259. package/dist/worker/WorkerPoolManager.js +85 -60
  260. package/dist/worker/WorkerPoolManager.js.map +1 -1
  261. package/dist/worker/errors.d.ts +35 -0
  262. package/dist/worker/errors.d.ts.map +1 -0
  263. package/dist/worker/errors.js +52 -0
  264. package/dist/worker/errors.js.map +1 -0
  265. package/dist/worker/hastLinesTransport.d.ts +14 -0
  266. package/dist/worker/hastLinesTransport.d.ts.map +1 -0
  267. package/dist/worker/hastLinesTransport.js +156 -0
  268. package/dist/worker/hastLinesTransport.js.map +1 -0
  269. package/dist/worker/highlights-sAHlxqlf.js +317 -0
  270. package/dist/worker/highlights-sAHlxqlf.js.map +1 -0
  271. package/dist/worker/index.d.ts +2 -1
  272. package/dist/worker/index.js +2 -1
  273. package/dist/worker/shiki-Bx2JpdqZ.js +697 -0
  274. package/dist/worker/shiki-Bx2JpdqZ.js.map +1 -0
  275. package/dist/worker/stream-tokenizer-YZ6M1qSx.js +424 -0
  276. package/dist/worker/stream-tokenizer-YZ6M1qSx.js.map +1 -0
  277. package/dist/worker/types.d.ts +18 -3
  278. package/dist/worker/types.d.ts.map +1 -1
  279. package/dist/worker/worker-portable.js +41 -13319
  280. package/dist/worker/worker-portable.js.map +1 -1
  281. package/dist/worker/worker.js +693 -352
  282. package/dist/worker/worker.js.map +1 -1
  283. package/dist/worker/workerMessage.d.ts +24 -0
  284. package/dist/worker/workerMessage.d.ts.map +1 -0
  285. package/dist/worker/workerMessage.js +0 -0
  286. package/package.json +33 -29
  287. package/dist/highlighter/themes/constants.d.ts +0 -5
  288. package/dist/highlighter/themes/constants.d.ts.map +0 -1
  289. package/dist/highlighter/themes/constants.js +0 -6
  290. package/dist/highlighter/themes/constants.js.map +0 -1
  291. package/dist/highlighter/themes/themeResolution.d.ts +0 -7
  292. package/dist/highlighter/themes/themeResolution.d.ts.map +0 -1
  293. package/dist/highlighter/themes/themeResolution.js +0 -21
  294. package/dist/highlighter/themes/themeResolution.js.map +0 -1
  295. package/dist/shiki-stream/tokenizer.d.ts +0 -23
  296. package/dist/shiki-stream/tokenizer.d.ts.map +0 -1
  297. package/dist/shiki-stream/tokenizer.js +0 -72
  298. package/dist/shiki-stream/tokenizer.js.map +0 -1
  299. package/dist/utils/createTransformerWithState.d.ts +0 -12
  300. package/dist/utils/createTransformerWithState.d.ts.map +0 -1
  301. package/dist/utils/createTransformerWithState.js +0 -89
  302. package/dist/utils/createTransformerWithState.js.map +0 -1
  303. package/dist/worker/wasm-B9ZqxnKj.js +0 -8
  304. package/dist/worker/wasm-B9ZqxnKj.js.map +0 -1
@@ -1,14 +1,14 @@
1
1
  import { DEFAULT_THEMES } from "../constants.js";
2
- import { areLanguagesAttached } from "../highlighter/languages/areLanguagesAttached.js";
2
+ import { HighlighterDisposedError, resolveHighlighterType } from "../highlighter/highlighterType.js";
3
3
  import { getThemes } from "../utils/getThemes.js";
4
- import { attachResolvedThemes } from "../highlighter/themes/attachResolvedThemes.js";
5
- import { getSharedHighlighter } from "../highlighter/shared_highlighter.js";
4
+ import { getHighlighterIfLoaded, getSharedHighlighter } from "../highlighter/shared_highlighter.js";
6
5
  import { areThemesEqual } from "../utils/areThemesEqual.js";
7
- import { hasResolvedThemes } from "../highlighter/themes/hasResolvedThemes.js";
6
+ import { areLanguagesAttached } from "../highlighter/languages/areLanguagesAttached.js";
8
7
  import { areFileRenderOptionsEqual } from "../utils/areFileRenderOptionsEqual.js";
9
8
  import { getCustomExtensionsMap, getCustomExtensionsVersion, getFiletypeFromFileName } from "../utils/getFiletypeFromFileName.js";
10
9
  import { isFilePlainText } from "../utils/isFilePlainText.js";
11
10
  import { renderFileWithHighlighter } from "../utils/renderFileWithHighlighter.js";
11
+ import { WorkerPoolTaskCanceledError, WorkerPoolTerminatedError, WorkerPoolWorkerError, isHandledWorkerPoolError, markWorkerErrorReported } from "./errors.js";
12
12
  import { areDiffTargetsEqual } from "../utils/areDiffTargetsEqual.js";
13
13
  import { areFilesEqual } from "../utils/areFilesEqual.js";
14
14
  import { areDiffRenderOptionsEqual } from "../utils/areDiffRenderOptionsEqual.js";
@@ -18,24 +18,15 @@ import { getResolvedLanguages } from "../highlighter/languages/getResolvedLangua
18
18
  import { hasResolvedLanguages } from "../highlighter/languages/hasResolvedLanguages.js";
19
19
  import { resolveLanguages } from "../highlighter/languages/resolveLanguages.js";
20
20
  import { getResolvedThemes } from "../highlighter/themes/getResolvedThemes.js";
21
+ import { hasResolvedThemes } from "../highlighter/themes/hasResolvedThemes.js";
21
22
  import { resolveThemes } from "../highlighter/themes/resolveThemes.js";
23
+ import { decodeHastLines } from "./hastLinesTransport.js";
22
24
  import LRUMapPkg from "lru_map";
23
25
  //#region src/worker/WorkerPoolManager.ts
24
26
  const IGNORE_RESPONSE = Symbol("IGNORE_RESPONSE");
25
27
  const DEFAULT_WORKER_INITIALIZATION_TIMEOUT = 1e4;
26
- var WorkerPoolTerminatedError = class extends Error {
27
- constructor() {
28
- super("WorkerPoolManager: operation canceled because the pool terminated");
29
- }
30
- };
31
- var WorkerPoolTaskCanceledError = class extends Error {
32
- constructor() {
33
- super("WorkerPoolManager: operation canceled before the task completed");
34
- }
35
- };
36
28
  var WorkerPoolManager = class {
37
29
  options;
38
- highlighter;
39
30
  preferredHighlighter;
40
31
  renderOptions;
41
32
  renderOptionsRequestVersion = 0;
@@ -55,9 +46,9 @@ var WorkerPoolManager = class {
55
46
  diffCache;
56
47
  _queuedBroadcast;
57
48
  lifecycleGeneration = 0;
58
- constructor(options, { langs, theme = DEFAULT_THEMES, useTokenTransformer = false, lineDiffType = "word-alt", maxLineDiffLength = 1e3, tokenizeMaxLineLength = 1e3, preferredHighlighter = "shiki-js" }) {
49
+ constructor(options, { langs, theme = DEFAULT_THEMES, useTokenTransformer = false, lineDiffType = "word-alt", maxLineDiffLength = 1e3, tokenizeMaxLineLength = 1e3, preferredHighlighter }) {
59
50
  this.options = options;
60
- this.preferredHighlighter = preferredHighlighter;
51
+ this.preferredHighlighter = resolveHighlighterType(preferredHighlighter);
61
52
  this.renderOptions = {
62
53
  theme,
63
54
  useTokenTransformer,
@@ -115,20 +106,11 @@ var WorkerPoolManager = class {
115
106
  if (!isCurrentRequest() || areDiffRenderOptionsEqual(newRenderOptions, this.renderOptions)) return;
116
107
  const themeNames = getThemes(theme);
117
108
  let resolvedThemes = [];
118
- if (!areThemesEqual(newRenderOptions.theme, this.renderOptions.theme)) {
119
- if (hasResolvedThemes(themeNames)) resolvedThemes = getResolvedThemes(themeNames);
120
- else resolvedThemes = await resolveThemes(themeNames);
121
- }
109
+ if (!areThemesEqual(newRenderOptions.theme, this.renderOptions.theme)) resolvedThemes = hasResolvedThemes(themeNames, this.preferredHighlighter) ? getResolvedThemes(themeNames, this.preferredHighlighter) : await resolveThemes(themeNames, this.preferredHighlighter);
122
110
  if (!isCurrentRequest()) return;
123
- if (this.highlighter != null) attachResolvedThemes(resolvedThemes, this.highlighter);
124
- else {
125
- const highlighter = await getSharedHighlighter({
126
- themes: themeNames,
127
- langs: ["text"],
128
- preferredHighlighter: this.preferredHighlighter
129
- });
111
+ if (getHighlighterIfLoaded({ theme }) == null) {
112
+ await this.loadSharedHighlighter(themeNames, ["text"]);
130
113
  if (!isCurrentRequest()) return;
131
- this.highlighter = highlighter;
132
114
  }
133
115
  const workerSetup = this.setRenderOptionsOnWorkers(newRenderOptions, resolvedThemes);
134
116
  this.renderOptions = newRenderOptions;
@@ -236,38 +218,32 @@ var WorkerPoolManager = class {
236
218
  return this.initialized === true;
237
219
  }
238
220
  async initialize(languages = []) {
239
- if (this.initialized === true) return;
240
- else if (this.initialized === false) {
221
+ if (this.initialized === true) {
222
+ if (getHighlighterIfLoaded({ theme: this.renderOptions.theme }) == null) await this.loadSharedHighlighter(getThemes(this.renderOptions.theme), ["text", ...languages]);
223
+ return;
224
+ } else if (this.initialized === false) {
241
225
  const { lifecycleGeneration } = this;
242
- this.initialized = new Promise((resolve, reject) => {
226
+ const initialization = new Promise((resolve, reject) => {
243
227
  (async () => {
244
228
  try {
245
229
  const themes = getThemes(this.renderOptions.theme);
246
- let resolvedThemes = [];
247
- if (hasResolvedThemes(themes)) resolvedThemes = getResolvedThemes(themes);
248
- else resolvedThemes = await resolveThemes(themes);
230
+ const resolvedThemes = hasResolvedThemes(themes, this.preferredHighlighter) ? getResolvedThemes(themes, this.preferredHighlighter) : await resolveThemes(themes, this.preferredHighlighter);
249
231
  if (!this.isCurrentLifecycle(lifecycleGeneration)) {
250
232
  resolve();
251
233
  return;
252
234
  }
253
235
  let resolvedLanguages = [];
254
- if (hasResolvedLanguages(languages)) resolvedLanguages = getResolvedLanguages(languages);
255
- else resolvedLanguages = await resolveLanguages(languages);
236
+ if (this.preferredHighlighter !== "highlights") resolvedLanguages = hasResolvedLanguages(languages) ? getResolvedLanguages(languages) : await resolveLanguages(languages);
256
237
  if (!this.isCurrentLifecycle(lifecycleGeneration)) {
257
238
  resolve();
258
239
  return;
259
240
  }
260
- const [highlighter] = await Promise.all([getSharedHighlighter({
261
- themes,
262
- langs: ["text", ...languages],
263
- preferredHighlighter: this.preferredHighlighter
264
- }), this.initializeWorkers(resolvedThemes, resolvedLanguages)]);
241
+ await Promise.all([this.loadSharedHighlighter(themes, ["text", ...languages]), this.initializeWorkers(resolvedThemes, resolvedLanguages)]);
265
242
  if (!this.isCurrentLifecycle(lifecycleGeneration)) {
266
243
  this.terminateWorkers();
267
244
  resolve();
268
245
  return;
269
246
  }
270
- this.highlighter = highlighter;
271
247
  this.initialized = true;
272
248
  this.diffCache.clear();
273
249
  this.fileCache.clear();
@@ -290,9 +266,22 @@ var WorkerPoolManager = class {
290
266
  }
291
267
  })();
292
268
  });
269
+ this.initialized = initialization;
293
270
  this.queueBroadcastStateChanges();
271
+ return initialization;
294
272
  } else return this.initialized;
295
273
  }
274
+ async loadSharedHighlighter(themes, langs) {
275
+ try {
276
+ await getSharedHighlighter({
277
+ themes,
278
+ langs,
279
+ preferredHighlighter: this.preferredHighlighter
280
+ });
281
+ } catch (error) {
282
+ if (!(error instanceof HighlighterDisposedError)) throw error;
283
+ }
284
+ }
296
285
  async initializeWorkers(resolvedThemes, resolvedLanguages) {
297
286
  this.workersFailed = false;
298
287
  const initPromises = [];
@@ -321,6 +310,7 @@ var WorkerPoolManager = class {
321
310
  id,
322
311
  request: {
323
312
  type: "initialize",
313
+ resultFormat: "hast-ops-v1",
324
314
  id,
325
315
  renderOptions: this.renderOptions,
326
316
  preferredHighlighter: this.preferredHighlighter,
@@ -353,13 +343,29 @@ var WorkerPoolManager = class {
353
343
  if (timeoutId != null) clearTimeout(timeoutId);
354
344
  }
355
345
  }
356
- handleWorkerError(managedWorker, error) {
357
- console.error("Worker error:", error, managedWorker);
346
+ /**
347
+ * Pass worker errors to onWorkerError, or log them if no callback is set.
348
+ *
349
+ * A startup error rejects initialization so components can highlight on the
350
+ * main thread. Other requests wait for their own responses: worker.ts catches
351
+ * request errors, so this event may be unrelated to the current request.
352
+ * A worker that stops responding remains busy and receives no further work.
353
+ */
354
+ handleWorkerError(managedWorker, event) {
355
+ const { onWorkerError } = this.options;
356
+ if (onWorkerError != null) try {
357
+ onWorkerError(event, managedWorker.worker);
358
+ } catch (hookError) {
359
+ console.error("WorkerPoolManager: onWorkerError threw:", hookError);
360
+ }
361
+ else console.error("Worker error:", event, managedWorker);
358
362
  const { pendingSetupRequestId } = managedWorker;
359
363
  if (pendingSetupRequestId == null) return;
360
364
  const task = this.activeTaskById.get(pendingSetupRequestId);
361
365
  if (task?.type !== "initialize") return;
362
- task.reject(normalizeWorkerError(error));
366
+ const error = errorFromWorkerErrorEvent(event);
367
+ if (onWorkerError != null) markWorkerErrorReported(error);
368
+ task.reject(error);
363
369
  this.cleanWorkerAndTask(managedWorker, task);
364
370
  }
365
371
  drainQueue = () => {
@@ -414,11 +420,12 @@ var WorkerPoolManager = class {
414
420
  }
415
421
  }
416
422
  getPlainFileAST(file, startingLine, totalLines, lines) {
417
- if (this.highlighter == null) {
423
+ const highlighter = getHighlighterIfLoaded({ theme: this.renderOptions.theme });
424
+ if (highlighter == null) {
418
425
  this.queueInitialization();
419
426
  return;
420
427
  }
421
- return renderFileWithHighlighter(file, this.highlighter, this.renderOptions, {
428
+ return renderFileWithHighlighter(file, highlighter, this.renderOptions, {
422
429
  forcePlainText: true,
423
430
  startingLine,
424
431
  totalLines,
@@ -459,13 +466,18 @@ var WorkerPoolManager = class {
459
466
  }
460
467
  }
461
468
  getPlainDiffAST(diff, startingLine, totalLines, expandedHunks, collapsedContextThreshold) {
462
- return this.highlighter != null ? renderDiffWithHighlighter(diff, this.highlighter, this.renderOptions, {
469
+ const highlighter = getHighlighterIfLoaded({ theme: this.renderOptions.theme });
470
+ if (highlighter == null) {
471
+ this.queueInitialization();
472
+ return;
473
+ }
474
+ return renderDiffWithHighlighter(diff, highlighter, this.renderOptions, {
463
475
  forcePlainText: true,
464
476
  startingLine,
465
477
  totalLines,
466
478
  expandedHunks,
467
479
  collapsedContextThreshold
468
- }) : void 0;
480
+ });
469
481
  }
470
482
  terminate() {
471
483
  this.lifecycleGeneration++;
@@ -480,7 +492,6 @@ var WorkerPoolManager = class {
480
492
  this.queuedTaskByInstance.clear();
481
493
  this.taskByHighlightKey.clear();
482
494
  this.activeTaskById.clear();
483
- this.highlighter = void 0;
484
495
  this.initialized = false;
485
496
  this.workersFailed = false;
486
497
  this.queueBroadcastStateChanges();
@@ -490,6 +501,7 @@ var WorkerPoolManager = class {
490
501
  }
491
502
  queueInitialization(languages) {
492
503
  this.initialize(languages).catch((error) => {
504
+ if (isHandledWorkerPoolError(error)) return;
493
505
  console.error(error);
494
506
  });
495
507
  }
@@ -615,15 +627,12 @@ var WorkerPoolManager = class {
615
627
  }
616
628
  async resolveLanguagesAndExecuteTask(availableWorker, task, langs) {
617
629
  try {
618
- const mainThreadLangs = langs.filter((lang) => !areLanguagesAttached(lang));
619
- if (mainThreadLangs.length > 0) getSharedHighlighter({
620
- themes: getThemes(this.renderOptions.theme),
621
- langs: ["text", ...mainThreadLangs],
622
- preferredHighlighter: this.preferredHighlighter
623
- }).catch((error) => {
630
+ const highlighter = getHighlighterIfLoaded();
631
+ const mainThreadLangs = langs.filter((lang) => highlighter == null || !areLanguagesAttached(lang, highlighter));
632
+ if (mainThreadLangs.length > 0) this.loadSharedHighlighter(getThemes(this.renderOptions.theme), ["text", ...mainThreadLangs]).catch((error) => {
624
633
  console.error(error);
625
634
  });
626
- const workerMissingLangs = langs.filter((lang) => !availableWorker.langs.has(lang));
635
+ const workerMissingLangs = this.preferredHighlighter === "highlights" ? [] : langs.filter((lang) => !availableWorker.langs.has(lang));
627
636
  if (workerMissingLangs.length > 0) {
628
637
  if (hasResolvedLanguages(workerMissingLangs)) task.request.resolvedLanguages = getResolvedLanguages(workerMissingLangs);
629
638
  else task.request.resolvedLanguages = await resolveLanguages(workerMissingLangs);
@@ -671,9 +680,13 @@ var WorkerPoolManager = class {
671
680
  break;
672
681
  case "file": {
673
682
  if (task.type !== "file") throw new Error("handleWorkerMessage: task/response dont match");
674
- const { result, options } = response;
683
+ const { options } = response;
675
684
  if (!this.isCurrentRenderTask(task) || !areFileRenderOptionsEqual(options, this.getFileRenderOptions())) throw IGNORE_RESPONSE;
676
685
  const { request } = task;
686
+ const result = {
687
+ ...response.result,
688
+ code: decodeHastLines(response.result.code)
689
+ };
677
690
  this.syncCustomExtensionVersion(managedWorker, request);
678
691
  if (task.cacheKeyAtDispatch != null) this.fileCache.set(task.cacheKeyAtDispatch, {
679
692
  result,
@@ -685,9 +698,16 @@ var WorkerPoolManager = class {
685
698
  }
686
699
  case "diff": {
687
700
  if (task.type !== "diff") throw new Error("handleWorkerMessage: task/response dont match");
688
- const { result, options } = response;
701
+ const { options } = response;
689
702
  if (!this.isCurrentRenderTask(task) || !areDiffRenderOptionsEqual(options, this.getDiffRenderOptions())) throw IGNORE_RESPONSE;
690
703
  const { request } = task;
704
+ const result = {
705
+ ...response.result,
706
+ code: {
707
+ deletionLines: decodeHastLines(response.result.code.deletionLines),
708
+ additionLines: decodeHastLines(response.result.code.additionLines)
709
+ }
710
+ };
691
711
  this.syncCustomExtensionVersion(managedWorker, request);
692
712
  if (task.cacheKeyAtDispatch != null) this.diffCache.set(task.cacheKeyAtDispatch, {
693
713
  result,
@@ -922,6 +942,11 @@ function normalizeWorkerError(error) {
922
942
  }
923
943
  return new Error(String(error));
924
944
  }
945
+ function errorFromWorkerErrorEvent(event) {
946
+ const cause = "error" in event ? event.error : void 0;
947
+ const message = "message" in event && typeof event.message === "string" && event.message !== "" ? event.message : cause instanceof Error ? cause.message : "the worker script failed to load (the error event carries no message)";
948
+ return new WorkerPoolWorkerError(`WorkerPoolManager: worker failed: ${message}`, cause instanceof Error ? { cause } : void 0);
949
+ }
925
950
  //#endregion
926
951
  export { WorkerPoolManager };
927
952