@pierre/diffs 1.0.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 (441) hide show
  1. package/LICENSE.txt +201 -0
  2. package/README.md +26 -0
  3. package/dist/components/File.d.ts +78 -0
  4. package/dist/components/File.d.ts.map +1 -0
  5. package/dist/components/File.js +322 -0
  6. package/dist/components/File.js.map +1 -0
  7. package/dist/components/FileDiff.d.ts +90 -0
  8. package/dist/components/FileDiff.d.ts.map +1 -0
  9. package/dist/components/FileDiff.js +392 -0
  10. package/dist/components/FileDiff.js.map +1 -0
  11. package/dist/components/FileStream.d.ts +40 -0
  12. package/dist/components/FileStream.d.ts.map +1 -0
  13. package/dist/components/FileStream.js +161 -0
  14. package/dist/components/FileStream.js.map +1 -0
  15. package/dist/components/web-components.d.ts +5 -0
  16. package/dist/components/web-components.d.ts.map +1 -0
  17. package/dist/components/web-components.js +25 -0
  18. package/dist/components/web-components.js.map +1 -0
  19. package/dist/constants.d.ts +21 -0
  20. package/dist/constants.d.ts.map +1 -0
  21. package/dist/constants.js +23 -0
  22. package/dist/constants.js.map +1 -0
  23. package/dist/highlighter/languages/areLanguagesAttached.d.ts +7 -0
  24. package/dist/highlighter/languages/areLanguagesAttached.d.ts.map +1 -0
  25. package/dist/highlighter/languages/areLanguagesAttached.js +11 -0
  26. package/dist/highlighter/languages/areLanguagesAttached.js.map +1 -0
  27. package/dist/highlighter/languages/attachResolvedLanguages.d.ts +9 -0
  28. package/dist/highlighter/languages/attachResolvedLanguages.d.ts.map +1 -0
  29. package/dist/highlighter/languages/attachResolvedLanguages.js +20 -0
  30. package/dist/highlighter/languages/attachResolvedLanguages.js.map +1 -0
  31. package/dist/highlighter/languages/cleanUpResolvedLanguages.d.ts +5 -0
  32. package/dist/highlighter/languages/cleanUpResolvedLanguages.d.ts.map +1 -0
  33. package/dist/highlighter/languages/cleanUpResolvedLanguages.js +11 -0
  34. package/dist/highlighter/languages/cleanUpResolvedLanguages.js.map +1 -0
  35. package/dist/highlighter/languages/constants.d.ts +11 -0
  36. package/dist/highlighter/languages/constants.d.ts.map +1 -0
  37. package/dist/highlighter/languages/constants.js +8 -0
  38. package/dist/highlighter/languages/constants.js.map +1 -0
  39. package/dist/highlighter/languages/getResolvedLanguages.d.ts +9 -0
  40. package/dist/highlighter/languages/getResolvedLanguages.d.ts.map +1 -0
  41. package/dist/highlighter/languages/getResolvedLanguages.js +16 -0
  42. package/dist/highlighter/languages/getResolvedLanguages.js.map +1 -0
  43. package/dist/highlighter/languages/getResolvedOrResolveLanguage.d.ts +9 -0
  44. package/dist/highlighter/languages/getResolvedOrResolveLanguage.d.ts.map +1 -0
  45. package/dist/highlighter/languages/getResolvedOrResolveLanguage.js +11 -0
  46. package/dist/highlighter/languages/getResolvedOrResolveLanguage.js.map +1 -0
  47. package/dist/highlighter/languages/hasResolvedLanguages.d.ts +7 -0
  48. package/dist/highlighter/languages/hasResolvedLanguages.d.ts.map +1 -0
  49. package/dist/highlighter/languages/hasResolvedLanguages.js +11 -0
  50. package/dist/highlighter/languages/hasResolvedLanguages.js.map +1 -0
  51. package/dist/highlighter/languages/resolveLanguage.d.ts +9 -0
  52. package/dist/highlighter/languages/resolveLanguage.d.ts.map +1 -0
  53. package/dist/highlighter/languages/resolveLanguage.js +30 -0
  54. package/dist/highlighter/languages/resolveLanguage.js.map +1 -0
  55. package/dist/highlighter/languages/resolveLanguages.d.ts +9 -0
  56. package/dist/highlighter/languages/resolveLanguages.d.ts.map +1 -0
  57. package/dist/highlighter/languages/resolveLanguages.js +25 -0
  58. package/dist/highlighter/languages/resolveLanguages.js.map +1 -0
  59. package/dist/highlighter/shared_highlighter.d.ts +21 -0
  60. package/dist/highlighter/shared_highlighter.d.ts.map +1 -0
  61. package/dist/highlighter/shared_highlighter.js +71 -0
  62. package/dist/highlighter/shared_highlighter.js.map +1 -0
  63. package/dist/highlighter/themes/areThemesAttached.d.ts +7 -0
  64. package/dist/highlighter/themes/areThemesAttached.d.ts.map +1 -0
  65. package/dist/highlighter/themes/areThemesAttached.js +12 -0
  66. package/dist/highlighter/themes/areThemesAttached.js.map +1 -0
  67. package/dist/highlighter/themes/attachResolvedThemes.d.ts +7 -0
  68. package/dist/highlighter/themes/attachResolvedThemes.d.ts.map +1 -0
  69. package/dist/highlighter/themes/attachResolvedThemes.js +24 -0
  70. package/dist/highlighter/themes/attachResolvedThemes.js.map +1 -0
  71. package/dist/highlighter/themes/cleanUpResolvedThemes.d.ts +5 -0
  72. package/dist/highlighter/themes/cleanUpResolvedThemes.d.ts.map +1 -0
  73. package/dist/highlighter/themes/cleanUpResolvedThemes.js +11 -0
  74. package/dist/highlighter/themes/cleanUpResolvedThemes.js.map +1 -0
  75. package/dist/highlighter/themes/constants.d.ts +11 -0
  76. package/dist/highlighter/themes/constants.d.ts.map +1 -0
  77. package/dist/highlighter/themes/constants.js +9 -0
  78. package/dist/highlighter/themes/constants.js.map +1 -0
  79. package/dist/highlighter/themes/getResolvedOrResolveTheme.d.ts +7 -0
  80. package/dist/highlighter/themes/getResolvedOrResolveTheme.d.ts.map +1 -0
  81. package/dist/highlighter/themes/getResolvedOrResolveTheme.js +11 -0
  82. package/dist/highlighter/themes/getResolvedOrResolveTheme.js.map +1 -0
  83. package/dist/highlighter/themes/getResolvedThemes.d.ts +7 -0
  84. package/dist/highlighter/themes/getResolvedThemes.d.ts.map +1 -0
  85. package/dist/highlighter/themes/getResolvedThemes.js +16 -0
  86. package/dist/highlighter/themes/getResolvedThemes.js.map +1 -0
  87. package/dist/highlighter/themes/hasResolvedThemes.d.ts +7 -0
  88. package/dist/highlighter/themes/hasResolvedThemes.d.ts.map +1 -0
  89. package/dist/highlighter/themes/hasResolvedThemes.js +11 -0
  90. package/dist/highlighter/themes/hasResolvedThemes.js.map +1 -0
  91. package/dist/highlighter/themes/registerCustomTheme.d.ts +7 -0
  92. package/dist/highlighter/themes/registerCustomTheme.d.ts.map +1 -0
  93. package/dist/highlighter/themes/registerCustomTheme.js +14 -0
  94. package/dist/highlighter/themes/registerCustomTheme.js.map +1 -0
  95. package/dist/highlighter/themes/resolveTheme.d.ts +7 -0
  96. package/dist/highlighter/themes/resolveTheme.d.ts.map +1 -0
  97. package/dist/highlighter/themes/resolveTheme.js +35 -0
  98. package/dist/highlighter/themes/resolveTheme.js.map +1 -0
  99. package/dist/highlighter/themes/resolveThemes.d.ts +7 -0
  100. package/dist/highlighter/themes/resolveThemes.d.ts.map +1 -0
  101. package/dist/highlighter/themes/resolveThemes.js +21 -0
  102. package/dist/highlighter/themes/resolveThemes.js.map +1 -0
  103. package/dist/index.d.ts +84 -0
  104. package/dist/index.js +83 -0
  105. package/dist/managers/LineSelectionManager.d.ts +64 -0
  106. package/dist/managers/LineSelectionManager.d.ts.map +1 -0
  107. package/dist/managers/LineSelectionManager.js +276 -0
  108. package/dist/managers/LineSelectionManager.js.map +1 -0
  109. package/dist/managers/MouseEventManager.d.ts +64 -0
  110. package/dist/managers/MouseEventManager.d.ts.map +1 -0
  111. package/dist/managers/MouseEventManager.js +244 -0
  112. package/dist/managers/MouseEventManager.js.map +1 -0
  113. package/dist/managers/ResizeManager.d.ts +11 -0
  114. package/dist/managers/ResizeManager.d.ts.map +1 -0
  115. package/dist/managers/ResizeManager.js +132 -0
  116. package/dist/managers/ResizeManager.js.map +1 -0
  117. package/dist/managers/ScrollSyncManager.d.ts +15 -0
  118. package/dist/managers/ScrollSyncManager.d.ts.map +1 -0
  119. package/dist/managers/ScrollSyncManager.js +54 -0
  120. package/dist/managers/ScrollSyncManager.js.map +1 -0
  121. package/dist/managers/UniversalRenderingManager.d.ts +6 -0
  122. package/dist/managers/UniversalRenderingManager.d.ts.map +1 -0
  123. package/dist/managers/UniversalRenderingManager.js +32 -0
  124. package/dist/managers/UniversalRenderingManager.js.map +1 -0
  125. package/dist/react/File.d.ts +19 -0
  126. package/dist/react/File.d.ts.map +1 -0
  127. package/dist/react/File.js +36 -0
  128. package/dist/react/File.js.map +1 -0
  129. package/dist/react/FileDiff.d.ts +22 -0
  130. package/dist/react/FileDiff.d.ts.map +1 -0
  131. package/dist/react/FileDiff.js +36 -0
  132. package/dist/react/FileDiff.js.map +1 -0
  133. package/dist/react/MultiFileDiff.d.ts +24 -0
  134. package/dist/react/MultiFileDiff.d.ts.map +1 -0
  135. package/dist/react/MultiFileDiff.js +38 -0
  136. package/dist/react/MultiFileDiff.js.map +1 -0
  137. package/dist/react/PatchDiff.d.ts +21 -0
  138. package/dist/react/PatchDiff.d.ts.map +1 -0
  139. package/dist/react/PatchDiff.js +42 -0
  140. package/dist/react/PatchDiff.js.map +1 -0
  141. package/dist/react/WorkerPoolContext.d.ts +20 -0
  142. package/dist/react/WorkerPoolContext.d.ts.map +1 -0
  143. package/dist/react/WorkerPoolContext.js +41 -0
  144. package/dist/react/WorkerPoolContext.js.map +1 -0
  145. package/dist/react/constants.d.ts +7 -0
  146. package/dist/react/constants.d.ts.map +1 -0
  147. package/dist/react/constants.js +11 -0
  148. package/dist/react/constants.js.map +1 -0
  149. package/dist/react/index.d.ts +17 -0
  150. package/dist/react/index.js +14 -0
  151. package/dist/react/jsx.d.ts +12 -0
  152. package/dist/react/jsx.d.ts.map +1 -0
  153. package/dist/react/types.d.ts +34 -0
  154. package/dist/react/types.d.ts.map +1 -0
  155. package/dist/react/types.js +1 -0
  156. package/dist/react/utils/renderDiffChildren.d.ts +29 -0
  157. package/dist/react/utils/renderDiffChildren.d.ts.map +1 -0
  158. package/dist/react/utils/renderDiffChildren.js +32 -0
  159. package/dist/react/utils/renderDiffChildren.js.map +1 -0
  160. package/dist/react/utils/renderFileChildren.d.ts +25 -0
  161. package/dist/react/utils/renderFileChildren.d.ts.map +1 -0
  162. package/dist/react/utils/renderFileChildren.js +28 -0
  163. package/dist/react/utils/renderFileChildren.js.map +1 -0
  164. package/dist/react/utils/templateRender.d.ts +7 -0
  165. package/dist/react/utils/templateRender.d.ts.map +1 -0
  166. package/dist/react/utils/templateRender.js +14 -0
  167. package/dist/react/utils/templateRender.js.map +1 -0
  168. package/dist/react/utils/useFileDiffInstance.d.ts +31 -0
  169. package/dist/react/utils/useFileDiffInstance.d.ts.map +1 -0
  170. package/dist/react/utils/useFileDiffInstance.js +54 -0
  171. package/dist/react/utils/useFileDiffInstance.js.map +1 -0
  172. package/dist/react/utils/useFileInstance.d.ts +27 -0
  173. package/dist/react/utils/useFileInstance.d.ts.map +1 -0
  174. package/dist/react/utils/useFileInstance.js +49 -0
  175. package/dist/react/utils/useFileInstance.js.map +1 -0
  176. package/dist/react/utils/useStableCallback.d.ts +5 -0
  177. package/dist/react/utils/useStableCallback.d.ts.map +1 -0
  178. package/dist/react/utils/useStableCallback.js +14 -0
  179. package/dist/react/utils/useStableCallback.js.map +1 -0
  180. package/dist/renderers/DiffHunksRenderer.d.ts +62 -0
  181. package/dist/renderers/DiffHunksRenderer.d.ts.map +1 -0
  182. package/dist/renderers/DiffHunksRenderer.js +651 -0
  183. package/dist/renderers/DiffHunksRenderer.js.map +1 -0
  184. package/dist/renderers/FileRenderer.d.ts +49 -0
  185. package/dist/renderers/FileRenderer.d.ts.map +1 -0
  186. package/dist/renderers/FileRenderer.js +239 -0
  187. package/dist/renderers/FileRenderer.js.map +1 -0
  188. package/dist/shiki-stream/index.d.ts +4 -0
  189. package/dist/shiki-stream/index.js +4 -0
  190. package/dist/shiki-stream/stream.d.ts +17 -0
  191. package/dist/shiki-stream/stream.d.ts.map +1 -0
  192. package/dist/shiki-stream/stream.js +32 -0
  193. package/dist/shiki-stream/stream.js.map +1 -0
  194. package/dist/shiki-stream/tokenizer.d.ts +24 -0
  195. package/dist/shiki-stream/tokenizer.d.ts.map +1 -0
  196. package/dist/shiki-stream/tokenizer.js +71 -0
  197. package/dist/shiki-stream/tokenizer.js.map +1 -0
  198. package/dist/shiki-stream/types.d.ts +45 -0
  199. package/dist/shiki-stream/types.d.ts.map +1 -0
  200. package/dist/shiki-stream/types.js +0 -0
  201. package/dist/sprite.d.ts +6 -0
  202. package/dist/sprite.d.ts.map +1 -0
  203. package/dist/sprite.js +55 -0
  204. package/dist/sprite.js.map +1 -0
  205. package/dist/ssr/FileDiffReact.d.ts +21 -0
  206. package/dist/ssr/FileDiffReact.d.ts.map +1 -0
  207. package/dist/ssr/FileDiffReact.js +53 -0
  208. package/dist/ssr/FileDiffReact.js.map +1 -0
  209. package/dist/ssr/index.d.ts +6 -0
  210. package/dist/ssr/index.js +6 -0
  211. package/dist/ssr/preloadDiffs.d.ts +72 -0
  212. package/dist/ssr/preloadDiffs.d.ts.map +1 -0
  213. package/dist/ssr/preloadDiffs.js +66 -0
  214. package/dist/ssr/preloadDiffs.js.map +1 -0
  215. package/dist/ssr/preloadFile.d.ts +23 -0
  216. package/dist/ssr/preloadFile.d.ts.map +1 -0
  217. package/dist/ssr/preloadFile.js +26 -0
  218. package/dist/ssr/preloadFile.js.map +1 -0
  219. package/dist/ssr/preloadPatchFile.d.ts +15 -0
  220. package/dist/ssr/preloadPatchFile.d.ts.map +1 -0
  221. package/dist/ssr/preloadPatchFile.js +17 -0
  222. package/dist/ssr/preloadPatchFile.js.map +1 -0
  223. package/dist/ssr/renderHTML.d.ts +7 -0
  224. package/dist/ssr/renderHTML.d.ts.map +1 -0
  225. package/dist/ssr/renderHTML.js +11 -0
  226. package/dist/ssr/renderHTML.js.map +1 -0
  227. package/dist/string-import.d.ts +6 -0
  228. package/dist/string-import.d.ts.map +1 -0
  229. package/dist/style.js +6 -0
  230. package/dist/style.js.map +1 -0
  231. package/dist/themes/pierre-dark.js +1328 -0
  232. package/dist/themes/pierre-dark.js.map +1 -0
  233. package/dist/themes/pierre-light.js +1328 -0
  234. package/dist/themes/pierre-light.js.map +1 -0
  235. package/dist/types.d.ts +238 -0
  236. package/dist/types.d.ts.map +1 -0
  237. package/dist/types.js +0 -0
  238. package/dist/utils/areFilesEqual.d.ts +7 -0
  239. package/dist/utils/areFilesEqual.d.ts.map +1 -0
  240. package/dist/utils/areFilesEqual.js +8 -0
  241. package/dist/utils/areFilesEqual.js.map +1 -0
  242. package/dist/utils/areObjectsEqual.d.ts +5 -0
  243. package/dist/utils/areObjectsEqual.d.ts.map +1 -0
  244. package/dist/utils/areObjectsEqual.js +18 -0
  245. package/dist/utils/areObjectsEqual.js.map +1 -0
  246. package/dist/utils/areOptionsEqual.d.ts +9 -0
  247. package/dist/utils/areOptionsEqual.d.ts.map +1 -0
  248. package/dist/utils/areOptionsEqual.js +12 -0
  249. package/dist/utils/areOptionsEqual.js.map +1 -0
  250. package/dist/utils/areSelectionsEqual.d.ts +7 -0
  251. package/dist/utils/areSelectionsEqual.d.ts.map +1 -0
  252. package/dist/utils/areSelectionsEqual.js +8 -0
  253. package/dist/utils/areSelectionsEqual.js.map +1 -0
  254. package/dist/utils/areThemesEqual.d.ts +7 -0
  255. package/dist/utils/areThemesEqual.d.ts.map +1 -0
  256. package/dist/utils/areThemesEqual.js +9 -0
  257. package/dist/utils/areThemesEqual.js.map +1 -0
  258. package/dist/utils/cleanLastNewline.d.ts +5 -0
  259. package/dist/utils/cleanLastNewline.d.ts.map +1 -0
  260. package/dist/utils/cleanLastNewline.js +8 -0
  261. package/dist/utils/cleanLastNewline.js.map +1 -0
  262. package/dist/utils/createAnnotationElement.d.ts +8 -0
  263. package/dist/utils/createAnnotationElement.d.ts.map +1 -0
  264. package/dist/utils/createAnnotationElement.js +21 -0
  265. package/dist/utils/createAnnotationElement.js.map +1 -0
  266. package/dist/utils/createAnnotationWrapperNode.d.ts +5 -0
  267. package/dist/utils/createAnnotationWrapperNode.d.ts.map +1 -0
  268. package/dist/utils/createAnnotationWrapperNode.js +12 -0
  269. package/dist/utils/createAnnotationWrapperNode.js.map +1 -0
  270. package/dist/utils/createCodeNode.d.ts +12 -0
  271. package/dist/utils/createCodeNode.d.ts.map +1 -0
  272. package/dist/utils/createCodeNode.js +12 -0
  273. package/dist/utils/createCodeNode.js.map +1 -0
  274. package/dist/utils/createEmptyRowBuffer.d.ts +7 -0
  275. package/dist/utils/createEmptyRowBuffer.d.ts.map +1 -0
  276. package/dist/utils/createEmptyRowBuffer.js +16 -0
  277. package/dist/utils/createEmptyRowBuffer.js.map +1 -0
  278. package/dist/utils/createFileHeaderElement.d.ts +17 -0
  279. package/dist/utils/createFileHeaderElement.d.ts.map +1 -0
  280. package/dist/utils/createFileHeaderElement.js +84 -0
  281. package/dist/utils/createFileHeaderElement.js.map +1 -0
  282. package/dist/utils/createHoverContentNode.d.ts +5 -0
  283. package/dist/utils/createHoverContentNode.d.ts.map +1 -0
  284. package/dist/utils/createHoverContentNode.js +15 -0
  285. package/dist/utils/createHoverContentNode.js.map +1 -0
  286. package/dist/utils/createNoNewlineElement.d.ts +7 -0
  287. package/dist/utils/createNoNewlineElement.d.ts.map +1 -0
  288. package/dist/utils/createNoNewlineElement.js +24 -0
  289. package/dist/utils/createNoNewlineElement.js.map +1 -0
  290. package/dist/utils/createPreElement.d.ts +18 -0
  291. package/dist/utils/createPreElement.d.ts.map +1 -0
  292. package/dist/utils/createPreElement.js +28 -0
  293. package/dist/utils/createPreElement.js.map +1 -0
  294. package/dist/utils/createRowNodes.d.ts +8 -0
  295. package/dist/utils/createRowNodes.d.ts.map +1 -0
  296. package/dist/utils/createRowNodes.js +20 -0
  297. package/dist/utils/createRowNodes.js.map +1 -0
  298. package/dist/utils/createSeparator.d.ts +25 -0
  299. package/dist/utils/createSeparator.d.ts.map +1 -0
  300. package/dist/utils/createSeparator.js +69 -0
  301. package/dist/utils/createSeparator.js.map +1 -0
  302. package/dist/utils/createSpanNodeFromToken.d.ts +7 -0
  303. package/dist/utils/createSpanNodeFromToken.d.ts.map +1 -0
  304. package/dist/utils/createSpanNodeFromToken.js +13 -0
  305. package/dist/utils/createSpanNodeFromToken.js.map +1 -0
  306. package/dist/utils/createStyleElement.d.ts +7 -0
  307. package/dist/utils/createStyleElement.d.ts.map +1 -0
  308. package/dist/utils/createStyleElement.js +19 -0
  309. package/dist/utils/createStyleElement.js.map +1 -0
  310. package/dist/utils/createTransformerWithState.d.ts +13 -0
  311. package/dist/utils/createTransformerWithState.d.ts.map +1 -0
  312. package/dist/utils/createTransformerWithState.js +56 -0
  313. package/dist/utils/createTransformerWithState.js.map +1 -0
  314. package/dist/utils/createUnsafeCSSStyleNode.d.ts +5 -0
  315. package/dist/utils/createUnsafeCSSStyleNode.d.ts.map +1 -0
  316. package/dist/utils/createUnsafeCSSStyleNode.js +12 -0
  317. package/dist/utils/createUnsafeCSSStyleNode.js.map +1 -0
  318. package/dist/utils/cssWrappers.d.ts +6 -0
  319. package/dist/utils/cssWrappers.d.ts.map +1 -0
  320. package/dist/utils/cssWrappers.js +21 -0
  321. package/dist/utils/cssWrappers.js.map +1 -0
  322. package/dist/utils/diffAcceptRejectHunk.d.ts +7 -0
  323. package/dist/utils/diffAcceptRejectHunk.d.ts.map +1 -0
  324. package/dist/utils/diffAcceptRejectHunk.js +82 -0
  325. package/dist/utils/diffAcceptRejectHunk.js.map +1 -0
  326. package/dist/utils/formatCSSVariablePrefix.d.ts +5 -0
  327. package/dist/utils/formatCSSVariablePrefix.d.ts.map +1 -0
  328. package/dist/utils/formatCSSVariablePrefix.js +8 -0
  329. package/dist/utils/formatCSSVariablePrefix.js.map +1 -0
  330. package/dist/utils/getFiletypeFromFileName.d.ts +9 -0
  331. package/dist/utils/getFiletypeFromFileName.d.ts.map +1 -0
  332. package/dist/utils/getFiletypeFromFileName.js +343 -0
  333. package/dist/utils/getFiletypeFromFileName.js.map +1 -0
  334. package/dist/utils/getHighlighterOptions.d.ts +14 -0
  335. package/dist/utils/getHighlighterOptions.d.ts.map +1 -0
  336. package/dist/utils/getHighlighterOptions.js +13 -0
  337. package/dist/utils/getHighlighterOptions.js.map +1 -0
  338. package/dist/utils/getHighlighterThemeStyles.d.ts +16 -0
  339. package/dist/utils/getHighlighterThemeStyles.d.ts.map +1 -0
  340. package/dist/utils/getHighlighterThemeStyles.js +40 -0
  341. package/dist/utils/getHighlighterThemeStyles.js.map +1 -0
  342. package/dist/utils/getHunkSeparatorSlotName.d.ts +5 -0
  343. package/dist/utils/getHunkSeparatorSlotName.d.ts.map +1 -0
  344. package/dist/utils/getHunkSeparatorSlotName.js +8 -0
  345. package/dist/utils/getHunkSeparatorSlotName.js.map +1 -0
  346. package/dist/utils/getIconForType.d.ts +8 -0
  347. package/dist/utils/getIconForType.d.ts.map +1 -0
  348. package/dist/utils/getIconForType.js +15 -0
  349. package/dist/utils/getIconForType.js.map +1 -0
  350. package/dist/utils/getLineAnnotationName.d.ts +7 -0
  351. package/dist/utils/getLineAnnotationName.d.ts.map +1 -0
  352. package/dist/utils/getLineAnnotationName.js +8 -0
  353. package/dist/utils/getLineAnnotationName.js.map +1 -0
  354. package/dist/utils/getLineEndingType.d.ts +5 -0
  355. package/dist/utils/getLineEndingType.d.ts.map +1 -0
  356. package/dist/utils/getLineEndingType.js +11 -0
  357. package/dist/utils/getLineEndingType.js.map +1 -0
  358. package/dist/utils/getLineNodes.d.ts +7 -0
  359. package/dist/utils/getLineNodes.d.ts.map +1 -0
  360. package/dist/utils/getLineNodes.js +15 -0
  361. package/dist/utils/getLineNodes.js.map +1 -0
  362. package/dist/utils/getSingularPatch.d.ts +7 -0
  363. package/dist/utils/getSingularPatch.d.ts.map +1 -0
  364. package/dist/utils/getSingularPatch.js +20 -0
  365. package/dist/utils/getSingularPatch.js.map +1 -0
  366. package/dist/utils/getThemes.d.ts +7 -0
  367. package/dist/utils/getThemes.d.ts.map +1 -0
  368. package/dist/utils/getThemes.js +16 -0
  369. package/dist/utils/getThemes.js.map +1 -0
  370. package/dist/utils/getTotalLineCountFromHunks.d.ts +7 -0
  371. package/dist/utils/getTotalLineCountFromHunks.d.ts.map +1 -0
  372. package/dist/utils/getTotalLineCountFromHunks.js +10 -0
  373. package/dist/utils/getTotalLineCountFromHunks.js.map +1 -0
  374. package/dist/utils/hast_utils.d.ts +31 -0
  375. package/dist/utils/hast_utils.d.ts.map +1 -0
  376. package/dist/utils/hast_utils.js +42 -0
  377. package/dist/utils/hast_utils.js.map +1 -0
  378. package/dist/utils/isWorkerContext.d.ts +5 -0
  379. package/dist/utils/isWorkerContext.d.ts.map +1 -0
  380. package/dist/utils/isWorkerContext.js +8 -0
  381. package/dist/utils/isWorkerContext.js.map +1 -0
  382. package/dist/utils/parseDiffDecorations.d.ts +31 -0
  383. package/dist/utils/parseDiffDecorations.d.ts.map +1 -0
  384. package/dist/utils/parseDiffDecorations.js +34 -0
  385. package/dist/utils/parseDiffDecorations.js.map +1 -0
  386. package/dist/utils/parseDiffFromFile.d.ts +14 -0
  387. package/dist/utils/parseDiffFromFile.d.ts.map +1 -0
  388. package/dist/utils/parseDiffFromFile.js +23 -0
  389. package/dist/utils/parseDiffFromFile.js.map +1 -0
  390. package/dist/utils/parseLineType.d.ts +11 -0
  391. package/dist/utils/parseLineType.d.ts.map +1 -0
  392. package/dist/utils/parseLineType.js +16 -0
  393. package/dist/utils/parseLineType.js.map +1 -0
  394. package/dist/utils/parsePatchFiles.d.ts +16 -0
  395. package/dist/utils/parsePatchFiles.d.ts.map +1 -0
  396. package/dist/utils/parsePatchFiles.js +204 -0
  397. package/dist/utils/parsePatchFiles.js.map +1 -0
  398. package/dist/utils/prerenderHTMLIfNecessary.d.ts +5 -0
  399. package/dist/utils/prerenderHTMLIfNecessary.d.ts.map +1 -0
  400. package/dist/utils/prerenderHTMLIfNecessary.js +10 -0
  401. package/dist/utils/prerenderHTMLIfNecessary.js.map +1 -0
  402. package/dist/utils/processLine.d.ts +8 -0
  403. package/dist/utils/processLine.d.ts.map +1 -0
  404. package/dist/utils/processLine.js +42 -0
  405. package/dist/utils/processLine.js.map +1 -0
  406. package/dist/utils/renderDiffWithHighlighter.d.ts +7 -0
  407. package/dist/utils/renderDiffWithHighlighter.d.ts.map +1 -0
  408. package/dist/utils/renderDiffWithHighlighter.js +323 -0
  409. package/dist/utils/renderDiffWithHighlighter.js.map +1 -0
  410. package/dist/utils/renderFileWithHighlighter.d.ts +10 -0
  411. package/dist/utils/renderFileWithHighlighter.d.ts.map +1 -0
  412. package/dist/utils/renderFileWithHighlighter.js +52 -0
  413. package/dist/utils/renderFileWithHighlighter.js.map +1 -0
  414. package/dist/utils/setLanguageOverride.d.ts +7 -0
  415. package/dist/utils/setLanguageOverride.d.ts.map +1 -0
  416. package/dist/utils/setLanguageOverride.js +11 -0
  417. package/dist/utils/setLanguageOverride.js.map +1 -0
  418. package/dist/utils/setWrapperNodeProps.d.ts +20 -0
  419. package/dist/utils/setWrapperNodeProps.d.ts.map +1 -0
  420. package/dist/utils/setWrapperNodeProps.js +29 -0
  421. package/dist/utils/setWrapperNodeProps.js.map +1 -0
  422. package/dist/worker/WorkerPoolManager.d.ts +72 -0
  423. package/dist/worker/WorkerPoolManager.d.ts.map +1 -0
  424. package/dist/worker/WorkerPoolManager.js +421 -0
  425. package/dist/worker/WorkerPoolManager.js.map +1 -0
  426. package/dist/worker/getOrCreateWorkerPoolSingleton.d.ts +16 -0
  427. package/dist/worker/getOrCreateWorkerPoolSingleton.d.ts.map +1 -0
  428. package/dist/worker/getOrCreateWorkerPoolSingleton.js +20 -0
  429. package/dist/worker/getOrCreateWorkerPoolSingleton.js.map +1 -0
  430. package/dist/worker/index.d.ts +4 -0
  431. package/dist/worker/index.js +4 -0
  432. package/dist/worker/types.d.ts +140 -0
  433. package/dist/worker/types.d.ts.map +1 -0
  434. package/dist/worker/types.js +0 -0
  435. package/dist/worker/worker-portable.d.ts +1 -0
  436. package/dist/worker/worker-portable.js +14872 -0
  437. package/dist/worker/worker-portable.js.map +1 -0
  438. package/dist/worker/worker.d.ts +1 -0
  439. package/dist/worker/worker.js +1061 -0
  440. package/dist/worker/worker.js.map +1 -0
  441. package/package.json +76 -0
@@ -0,0 +1,40 @@
1
+ import { BaseCodeOptions, SupportedLanguages, ThemeTypes, ThemedToken } from "../types.js";
2
+ import { RecallToken } from "../shiki-stream/types.js";
3
+
4
+ //#region src/components/FileStream.d.ts
5
+ interface FileStreamOptions extends BaseCodeOptions {
6
+ lang?: SupportedLanguages;
7
+ startingLineIndex?: number;
8
+ onPreRender?(instance: FileStream): unknown;
9
+ onPostRender?(instance: FileStream): unknown;
10
+ onStreamStart?(controller: WritableStreamDefaultController): unknown;
11
+ onStreamWrite?(token: ThemedToken | RecallToken): unknown;
12
+ onStreamClose?(): unknown;
13
+ onStreamAbort?(reason: unknown): unknown;
14
+ }
15
+ declare class FileStream {
16
+ options: FileStreamOptions;
17
+ private highlighter;
18
+ private stream;
19
+ private abortController;
20
+ private fileContainer;
21
+ pre: HTMLPreElement | undefined;
22
+ private code;
23
+ constructor(options?: FileStreamOptions);
24
+ cleanUp(): void;
25
+ setThemeType(themeType: ThemeTypes): void;
26
+ private initializeHighlighter;
27
+ private queuedSetupArgs;
28
+ setup(_source: ReadableStream<string>, _wrapper: HTMLElement): Promise<void>;
29
+ private setupStream;
30
+ private queuedTokens;
31
+ private handleWrite;
32
+ private currentLineIndex;
33
+ private currentLineElement;
34
+ private render;
35
+ private createLine;
36
+ private getOrCreateFileContainer;
37
+ }
38
+ //#endregion
39
+ export { FileStream, FileStreamOptions };
40
+ //# sourceMappingURL=FileStream.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FileStream.d.ts","names":["options: FileStreamOptions"],"sources":["../../src/components/FileStream.ts"],"sourcesContent":[],"mappings":";;;;UAmBiB,iBAAA,SAA0B;SAClC;EADT,iBAAiB,CAAA,EAAA,MAAA;EACR,WAAA,EAAA,QAAA,EAGgB,UAHhB,CAAA,EAAA,OAAA;EAGgB,YAAA,EAAA,QAAA,EACC,UADD,CAAA,EAAA,OAAA;EACC,aAAA,EAAA,UAAA,EAEG,+BAFH,CAAA,EAAA,OAAA;EAEG,aAAA,EAAA,KAAA,EACL,WADK,GACS,WADT,CAAA,EAAA,OAAA;EACL,aAAA,GAAA,EAAA,OAAA;EAAc,aAAA,EAAA,MAAA,EAAA,OAAA,CAAA,EAAA,OAAA;;AARK,cAa9B,UAAA,CAb8B;EAa3C,OAAa,EAQiB,iBARjB;EAQiB,QAAA,WAAA;EAHvB,QAAA,MAAA;EAGuB,QAAA,eAAA;EASJ,QAAA,aAAA;EA6Bb,GAAA,EAzCN,cAyCM,GAAA,SAAA;EACC,QAAA,IAAA;EACT,WAAA,CAAA,OAAA,CAAA,EAxCyB,iBAwCzB;EAAA,OAAA,CAAA,CAAA,EAAA,IAAA;0BA/BqB;;;iBA6Bb,kCACC,cACT"}
@@ -0,0 +1,161 @@
1
+ import { DEFAULT_THEMES, DIFFS_TAG_NAME } from "../constants.js";
2
+ import { getSharedHighlighter } from "../highlighter/shared_highlighter.js";
3
+ import { getHighlighterOptions } from "../utils/getHighlighterOptions.js";
4
+ import { formatCSSVariablePrefix } from "../utils/formatCSSVariablePrefix.js";
5
+ import { getHighlighterThemeStyles } from "../utils/getHighlighterThemeStyles.js";
6
+ import { createCodeNode } from "../utils/createCodeNode.js";
7
+ import { setPreNodeProperties } from "../utils/setWrapperNodeProps.js";
8
+ import { queueRender } from "../managers/UniversalRenderingManager.js";
9
+ import { CodeToTokenTransformStream } from "../shiki-stream/stream.js";
10
+ import { createRowNodes } from "../utils/createRowNodes.js";
11
+ import { createSpanFromToken } from "../utils/createSpanNodeFromToken.js";
12
+
13
+ //#region src/components/FileStream.ts
14
+ var FileStream = class {
15
+ highlighter;
16
+ stream;
17
+ abortController;
18
+ fileContainer;
19
+ pre;
20
+ code;
21
+ constructor(options = { theme: DEFAULT_THEMES }) {
22
+ this.options = options;
23
+ this.currentLineIndex = this.options.startingLineIndex ?? 1;
24
+ }
25
+ cleanUp() {
26
+ this.abortController?.abort();
27
+ this.abortController = void 0;
28
+ }
29
+ setThemeType(themeType) {
30
+ if ((this.options.themeType ?? "system") === themeType) return;
31
+ this.options = {
32
+ ...this.options,
33
+ themeType
34
+ };
35
+ if (this.pre != null) switch (themeType) {
36
+ case "system":
37
+ delete this.pre.dataset.themeType;
38
+ break;
39
+ case "light":
40
+ case "dark":
41
+ this.pre.dataset.themeType = themeType;
42
+ break;
43
+ }
44
+ }
45
+ async initializeHighlighter() {
46
+ this.highlighter = await getSharedHighlighter(getHighlighterOptions(this.options.lang, this.options));
47
+ return this.highlighter;
48
+ }
49
+ queuedSetupArgs;
50
+ async setup(_source, _wrapper) {
51
+ const isSettingUp = this.queuedSetupArgs != null;
52
+ this.queuedSetupArgs = [_source, _wrapper];
53
+ if (isSettingUp) return;
54
+ this.highlighter ??= await this.initializeHighlighter();
55
+ const [source, wrapper] = this.queuedSetupArgs;
56
+ this.queuedSetupArgs = void 0;
57
+ const stream = source;
58
+ this.setupStream(stream, wrapper, this.highlighter);
59
+ }
60
+ setupStream(stream, wrapper, highlighter) {
61
+ const { disableLineNumbers = false, overflow = "scroll", theme = DEFAULT_THEMES, themeType = "system" } = this.options;
62
+ const fileContainer = this.getOrCreateFileContainer();
63
+ if (fileContainer.parentElement == null) wrapper.appendChild(fileContainer);
64
+ this.pre ??= document.createElement("pre");
65
+ if (this.pre.parentElement == null) fileContainer.shadowRoot?.appendChild(this.pre);
66
+ const themeStyles = getHighlighterThemeStyles({
67
+ theme,
68
+ highlighter
69
+ });
70
+ const baseThemeType = typeof theme === "string" ? highlighter.getTheme(theme).type : void 0;
71
+ const pre = setPreNodeProperties({
72
+ diffIndicators: "none",
73
+ disableBackground: true,
74
+ disableLineNumbers,
75
+ overflow,
76
+ pre: this.pre,
77
+ split: false,
78
+ themeType: baseThemeType ?? themeType,
79
+ themeStyles,
80
+ totalLines: 0
81
+ });
82
+ pre.innerHTML = "";
83
+ this.pre = pre;
84
+ this.code = createCodeNode({ pre });
85
+ this.abortController?.abort();
86
+ this.abortController = new AbortController();
87
+ const { onStreamStart, onStreamClose, onStreamAbort } = this.options;
88
+ this.stream = stream;
89
+ this.stream.pipeThrough(typeof theme === "string" ? new CodeToTokenTransformStream({
90
+ ...this.options,
91
+ theme,
92
+ highlighter,
93
+ allowRecalls: true,
94
+ defaultColor: false,
95
+ cssVariablePrefix: formatCSSVariablePrefix()
96
+ }) : new CodeToTokenTransformStream({
97
+ ...this.options,
98
+ themes: theme,
99
+ highlighter,
100
+ allowRecalls: true,
101
+ defaultColor: false,
102
+ cssVariablePrefix: formatCSSVariablePrefix()
103
+ })).pipeTo(new WritableStream({
104
+ start(controller) {
105
+ onStreamStart?.(controller);
106
+ },
107
+ close() {
108
+ onStreamClose?.();
109
+ },
110
+ abort(reason) {
111
+ onStreamAbort?.(reason);
112
+ },
113
+ write: this.handleWrite
114
+ }), { signal: this.abortController.signal }).catch((error) => {
115
+ if (error.name !== "AbortError") console.error("FileStream pipe error:", error);
116
+ });
117
+ }
118
+ queuedTokens = [];
119
+ handleWrite = (token) => {
120
+ if ("recall" in token && this.queuedTokens.length >= token.recall) this.queuedTokens.length = this.queuedTokens.length - token.recall;
121
+ else this.queuedTokens.push(token);
122
+ queueRender(this.render);
123
+ this.options.onStreamWrite?.(token);
124
+ };
125
+ currentLineIndex;
126
+ currentLineElement;
127
+ render = () => {
128
+ this.options.onPreRender?.(this);
129
+ const linesToAppend = [];
130
+ for (const token of this.queuedTokens) if ("recall" in token) {
131
+ if (this.currentLineElement == null) throw new Error("FileStream.render: no current line element, shouldnt be possible to get here");
132
+ if (token.recall > this.currentLineElement.childNodes.length) throw new Error(`FileStream.render: Token recall exceed the current line, there's probably a bug...`);
133
+ for (let i = 0; i < token.recall; i++) this.currentLineElement.lastChild?.remove();
134
+ } else {
135
+ const span = createSpanFromToken(token);
136
+ if (this.currentLineElement == null) linesToAppend.push(this.createLine());
137
+ this.currentLineElement?.appendChild(span);
138
+ if (token.content === "\n") {
139
+ this.currentLineIndex++;
140
+ linesToAppend.push(this.createLine());
141
+ }
142
+ }
143
+ for (const line of linesToAppend) this.code?.appendChild(line);
144
+ this.queuedTokens.length = 0;
145
+ this.options.onPostRender?.(this);
146
+ };
147
+ createLine() {
148
+ const { row, content } = createRowNodes(this.currentLineIndex);
149
+ this.currentLineElement = content;
150
+ return row;
151
+ }
152
+ getOrCreateFileContainer(fileContainer) {
153
+ if (fileContainer != null && fileContainer === this.fileContainer || fileContainer == null && this.fileContainer != null) return this.fileContainer;
154
+ this.fileContainer = fileContainer ?? document.createElement(DIFFS_TAG_NAME);
155
+ return this.fileContainer;
156
+ }
157
+ };
158
+
159
+ //#endregion
160
+ export { FileStream };
161
+ //# sourceMappingURL=FileStream.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FileStream.js","names":["options: FileStreamOptions","linesToAppend: HTMLElement[]"],"sources":["../../src/components/FileStream.ts"],"sourcesContent":["import { DEFAULT_THEMES, DIFFS_TAG_NAME } from '../constants';\nimport { getSharedHighlighter } from '../highlighter/shared_highlighter';\nimport { queueRender } from '../managers/UniversalRenderingManager';\nimport { CodeToTokenTransformStream, type RecallToken } from '../shiki-stream';\nimport type {\n BaseCodeOptions,\n DiffsHighlighter,\n SupportedLanguages,\n ThemeTypes,\n ThemedToken,\n} from '../types';\nimport { createCodeNode } from '../utils/createCodeNode';\nimport { createRowNodes } from '../utils/createRowNodes';\nimport { createSpanFromToken } from '../utils/createSpanNodeFromToken';\nimport { formatCSSVariablePrefix } from '../utils/formatCSSVariablePrefix';\nimport { getHighlighterOptions } from '../utils/getHighlighterOptions';\nimport { getHighlighterThemeStyles } from '../utils/getHighlighterThemeStyles';\nimport { setPreNodeProperties } from '../utils/setWrapperNodeProps';\n\nexport interface FileStreamOptions extends BaseCodeOptions {\n lang?: SupportedLanguages;\n startingLineIndex?: number;\n\n onPreRender?(instance: FileStream): unknown;\n onPostRender?(instance: FileStream): unknown;\n\n onStreamStart?(controller: WritableStreamDefaultController): unknown;\n onStreamWrite?(token: ThemedToken | RecallToken): unknown;\n onStreamClose?(): unknown;\n onStreamAbort?(reason: unknown): unknown;\n}\n\nexport class FileStream {\n private highlighter: DiffsHighlighter | undefined;\n private stream: ReadableStream<string> | undefined;\n private abortController: AbortController | undefined;\n private fileContainer: HTMLElement | undefined;\n pre: HTMLPreElement | undefined;\n private code: HTMLElement | undefined;\n\n constructor(public options: FileStreamOptions = { theme: DEFAULT_THEMES }) {\n this.currentLineIndex = this.options.startingLineIndex ?? 1;\n }\n\n cleanUp(): void {\n this.abortController?.abort();\n this.abortController = undefined;\n }\n\n setThemeType(themeType: ThemeTypes): void {\n if ((this.options.themeType ?? 'system') === themeType) {\n return;\n }\n this.options = { ...this.options, themeType };\n\n // Update pre element theme mode\n if (this.pre != null) {\n switch (themeType) {\n case 'system':\n delete this.pre.dataset.themeType;\n break;\n case 'light':\n case 'dark':\n this.pre.dataset.themeType = themeType;\n break;\n }\n }\n }\n\n private async initializeHighlighter(): Promise<DiffsHighlighter> {\n this.highlighter = await getSharedHighlighter(\n getHighlighterOptions(this.options.lang, this.options)\n );\n return this.highlighter;\n }\n\n private queuedSetupArgs: [ReadableStream<string>, HTMLElement] | undefined;\n async setup(\n _source: ReadableStream<string>,\n _wrapper: HTMLElement\n ): Promise<void> {\n const isSettingUp = this.queuedSetupArgs != null;\n this.queuedSetupArgs = [_source, _wrapper];\n if (isSettingUp) {\n // TODO(amadeus): Make it so that this function can be properly\n // awaitable, maybe?\n return;\n }\n this.highlighter ??= await this.initializeHighlighter();\n\n const [source, wrapper] = this.queuedSetupArgs;\n this.queuedSetupArgs = undefined;\n\n const stream = source;\n\n this.setupStream(stream, wrapper, this.highlighter);\n }\n\n private setupStream(\n stream: ReadableStream<string>,\n wrapper: HTMLElement,\n highlighter: DiffsHighlighter\n ): void {\n const {\n disableLineNumbers = false,\n overflow = 'scroll',\n theme = DEFAULT_THEMES,\n themeType = 'system',\n } = this.options;\n const fileContainer = this.getOrCreateFileContainer();\n if (fileContainer.parentElement == null) {\n wrapper.appendChild(fileContainer);\n }\n this.pre ??= document.createElement('pre');\n if (this.pre.parentElement == null) {\n fileContainer.shadowRoot?.appendChild(this.pre);\n }\n const themeStyles = getHighlighterThemeStyles({ theme, highlighter });\n const baseThemeType =\n typeof theme === 'string' ? highlighter.getTheme(theme).type : undefined;\n const pre = setPreNodeProperties({\n diffIndicators: 'none',\n disableBackground: true,\n disableLineNumbers,\n overflow,\n pre: this.pre,\n split: false,\n themeType: baseThemeType ?? themeType,\n themeStyles,\n totalLines: 0,\n });\n pre.innerHTML = '';\n\n this.pre = pre;\n this.code = createCodeNode({ pre });\n this.abortController?.abort();\n this.abortController = new AbortController();\n const { onStreamStart, onStreamClose, onStreamAbort } = this.options;\n this.stream = stream;\n this.stream\n .pipeThrough(\n typeof theme === 'string'\n ? new CodeToTokenTransformStream({\n ...this.options,\n theme,\n highlighter,\n allowRecalls: true,\n defaultColor: false,\n cssVariablePrefix: formatCSSVariablePrefix(),\n })\n : new CodeToTokenTransformStream({\n ...this.options,\n themes: theme,\n highlighter,\n allowRecalls: true,\n defaultColor: false,\n cssVariablePrefix: formatCSSVariablePrefix(),\n })\n )\n .pipeTo(\n new WritableStream({\n start(controller) {\n onStreamStart?.(controller);\n },\n close() {\n onStreamClose?.();\n },\n abort(reason) {\n onStreamAbort?.(reason);\n },\n write: this.handleWrite,\n }),\n { signal: this.abortController.signal }\n )\n .catch((error) => {\n // Ignore AbortError - it's expected when cleaning up\n if (error.name !== 'AbortError') {\n console.error('FileStream pipe error:', error);\n }\n });\n }\n\n private queuedTokens: (ThemedToken | RecallToken)[] = [];\n private handleWrite = (token: ThemedToken | RecallToken) => {\n // If we've recalled tokens we haven't rendered yet, we can just yeet them\n // and never apply them\n if ('recall' in token && this.queuedTokens.length >= token.recall) {\n this.queuedTokens.length = this.queuedTokens.length - token.recall;\n } else {\n this.queuedTokens.push(token);\n }\n queueRender(this.render);\n this.options.onStreamWrite?.(token);\n };\n\n private currentLineIndex: number;\n private currentLineElement: HTMLElement | undefined;\n private render = () => {\n this.options.onPreRender?.(this);\n const linesToAppend: HTMLElement[] = [];\n for (const token of this.queuedTokens) {\n if ('recall' in token) {\n if (this.currentLineElement == null) {\n throw new Error(\n 'FileStream.render: no current line element, shouldnt be possible to get here'\n );\n }\n if (token.recall > this.currentLineElement.childNodes.length) {\n throw new Error(\n `FileStream.render: Token recall exceed the current line, there's probably a bug...`\n );\n }\n for (let i = 0; i < token.recall; i++) {\n this.currentLineElement.lastChild?.remove();\n }\n } else {\n const span = createSpanFromToken(token);\n if (this.currentLineElement == null) {\n linesToAppend.push(this.createLine());\n }\n this.currentLineElement?.appendChild(span);\n if (token.content === '\\n') {\n this.currentLineIndex++;\n linesToAppend.push(this.createLine());\n }\n }\n }\n for (const line of linesToAppend) {\n this.code?.appendChild(line);\n }\n this.queuedTokens.length = 0;\n this.options.onPostRender?.(this);\n };\n\n private createLine(): HTMLElement {\n const { row, content } = createRowNodes(this.currentLineIndex);\n this.currentLineElement = content;\n return row;\n }\n\n private getOrCreateFileContainer(fileContainer?: HTMLElement): HTMLElement {\n if (\n (fileContainer != null && fileContainer === this.fileContainer) ||\n (fileContainer == null && this.fileContainer != null)\n ) {\n return this.fileContainer;\n }\n this.fileContainer =\n fileContainer ?? document.createElement(DIFFS_TAG_NAME);\n return this.fileContainer;\n }\n}\n"],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ //#region src/components/web-components.d.ts
2
+ declare const DiffsContainerLoaded: boolean;
3
+ //#endregion
4
+ export { DiffsContainerLoaded };
5
+ //# sourceMappingURL=web-components.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"web-components.d.ts","names":[],"sources":["../../src/components/web-components.ts"],"sourcesContent":[],"mappings":";cAsCa"}
@@ -0,0 +1,25 @@
1
+ import { DIFFS_TAG_NAME } from "../constants.js";
2
+ import style_default from "../style.js";
3
+
4
+ //#region src/components/web-components.ts
5
+ if (typeof HTMLElement !== "undefined" && customElements.get(DIFFS_TAG_NAME) == null) {
6
+ let sheet;
7
+ class FileDiffContainer extends HTMLElement {
8
+ constructor() {
9
+ super();
10
+ if (this.shadowRoot != null) return;
11
+ const shadowRoot = this.attachShadow({ mode: "open" });
12
+ if (sheet == null) {
13
+ sheet = new CSSStyleSheet();
14
+ sheet.replaceSync(`@layer base, theme, unsafe;\n@layer base {\n${style_default}\n}`);
15
+ }
16
+ shadowRoot.adoptedStyleSheets = [sheet];
17
+ }
18
+ }
19
+ customElements.define(DIFFS_TAG_NAME, FileDiffContainer);
20
+ }
21
+ const DiffsContainerLoaded = true;
22
+
23
+ //#endregion
24
+ export { DiffsContainerLoaded };
25
+ //# sourceMappingURL=web-components.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"web-components.js","names":["sheet: CSSStyleSheet | undefined","styles"],"sources":["../../src/components/web-components.ts"],"sourcesContent":["import { DIFFS_TAG_NAME } from '../constants';\nimport styles from '../style.css';\n\n// If HTMLElement is undefined it usually means we are in a server environment\n// so best to just not do anything\nif (\n typeof HTMLElement !== 'undefined' &&\n customElements.get(DIFFS_TAG_NAME) == null\n) {\n let sheet: CSSStyleSheet | undefined;\n\n class FileDiffContainer extends HTMLElement {\n constructor() {\n super();\n // If shadow root is already open, we can sorta assume the\n // CSS is already in place\n if (this.shadowRoot != null) {\n return;\n }\n const shadowRoot = this.attachShadow({ mode: 'open' });\n if (sheet == null) {\n sheet = new CSSStyleSheet();\n // Declare layer order first, then wrap base styles in @layer to match SSR behavior\n sheet.replaceSync(\n `@layer base, theme, unsafe;\\n@layer base {\\n${styles}\\n}`\n );\n }\n shadowRoot.adoptedStyleSheets = [sheet];\n }\n // Not sure if we need to do anything here yet...\n // connectedCallback() {\n // this.dataset.diffsContainer = '';\n // }\n }\n\n customElements.define(DIFFS_TAG_NAME, FileDiffContainer);\n}\n\nexport const DiffsContainerLoaded = true;\n"],"mappings":";;;;AAKA,IACE,OAAO,gBAAgB,eACvB,eAAe,IAAI,eAAe,IAAI,MACtC;CACA,IAAIA;CAEJ,MAAM,0BAA0B,YAAY;EAC1C,cAAc;AACZ,UAAO;AAGP,OAAI,KAAK,cAAc,KACrB;GAEF,MAAM,aAAa,KAAK,aAAa,EAAE,MAAM,QAAQ,CAAC;AACtD,OAAI,SAAS,MAAM;AACjB,YAAQ,IAAI,eAAe;AAE3B,UAAM,YACJ,+CAA+CC,cAAO,KACvD;;AAEH,cAAW,qBAAqB,CAAC,MAAM;;;AAQ3C,gBAAe,OAAO,gBAAgB,kBAAkB;;AAG1D,MAAa,uBAAuB"}
@@ -0,0 +1,21 @@
1
+ import { ThemesType } from "./types.js";
2
+
3
+ //#region src/constants.d.ts
4
+ declare const DIFFS_TAG_NAME: "diffs-container";
5
+ declare const COMMIT_METADATA_SPLIT: RegExp;
6
+ declare const GIT_DIFF_FILE_BREAK_REGEX: RegExp;
7
+ declare const UNIFIED_DIFF_FILE_BREAK_REGEX: RegExp;
8
+ declare const FILE_CONTEXT_BLOB: RegExp;
9
+ declare const HUNK_HEADER: RegExp;
10
+ declare const SPLIT_WITH_NEWLINES: RegExp;
11
+ declare const FILENAME_HEADER_REGEX: RegExp;
12
+ declare const FILENAME_HEADER_REGEX_GIT: RegExp;
13
+ declare const ALTERNATE_FILE_NAMES_GIT: RegExp;
14
+ declare const FILE_MODE_FROM_INDEX: RegExp;
15
+ declare const HEADER_METADATA_SLOT_ID = "header-metadata";
16
+ declare const DEFAULT_THEMES: ThemesType;
17
+ declare const UNSAFE_CSS_ATTRIBUTE = "data-unsafe-css";
18
+ declare const CORE_CSS_ATTRIBUTE = "data-core-css";
19
+ //#endregion
20
+ export { ALTERNATE_FILE_NAMES_GIT, COMMIT_METADATA_SPLIT, CORE_CSS_ATTRIBUTE, DEFAULT_THEMES, DIFFS_TAG_NAME, FILENAME_HEADER_REGEX, FILENAME_HEADER_REGEX_GIT, FILE_CONTEXT_BLOB, FILE_MODE_FROM_INDEX, GIT_DIFF_FILE_BREAK_REGEX, HEADER_METADATA_SLOT_ID, HUNK_HEADER, SPLIT_WITH_NEWLINES, UNIFIED_DIFF_FILE_BREAK_REGEX, UNSAFE_CSS_ATTRIBUTE };
21
+ //# sourceMappingURL=constants.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.d.ts","names":["COMMIT_METADATA_SPLIT: RegExp","GIT_DIFF_FILE_BREAK_REGEX: RegExp","UNIFIED_DIFF_FILE_BREAK_REGEX: RegExp","FILE_CONTEXT_BLOB: RegExp","HUNK_HEADER: RegExp","SPLIT_WITH_NEWLINES: RegExp","FILENAME_HEADER_REGEX: RegExp","FILENAME_HEADER_REGEX_GIT: RegExp","ALTERNATE_FILE_NAMES_GIT: RegExp","FILE_MODE_FROM_INDEX: RegExp","DEFAULT_THEMES: ThemesType"],"sources":["../src/constants.ts"],"sourcesContent":[],"mappings":";;;cAEa;cAGAA,uBAAuB;AAHvB,cAIAC,yBAJiB,EAIU,MAJV;AAGjBD,cAEAE,6BAFuB,EAEQ,MAFR;AACvBD,cAEAE,iBAF2B,EAER,MAFQ;AAC3BD,cAEAE,WAFAF,EAEa,MAFkB;AAC/BC,cAGAE,mBAHmB,EAGE,MAHF;AACnBD,cAGAE,qBAHa,EAGU,MAHV;AAEbD,cAEAE,yBAFqB,EAEM,MAFN;AACrBD,cAGAE,wBAHuB,EAGG,MAHH;AACvBD,cAIAE,oBAJ2B,EAIL,MAJK;AAE3BD,cAKA,uBAAA,GAL0B,iBAAA;AAE1BC,cAKAC,cALsB,EAKN,UALM;AAGtB,cAOA,oBAAA,GAPA,iBAAA;AAEAA,cAMA,kBAAA,GANgB,eAAA"}
@@ -0,0 +1,23 @@
1
+ //#region src/constants.ts
2
+ const DIFFS_TAG_NAME = "diffs-container";
3
+ const COMMIT_METADATA_SPLIT = /(?=^From [a-f0-9]+ .+$)/m;
4
+ const GIT_DIFF_FILE_BREAK_REGEX = /(?=^diff --git)/gm;
5
+ const UNIFIED_DIFF_FILE_BREAK_REGEX = /(?=^---\s+\S)/gm;
6
+ const FILE_CONTEXT_BLOB = /(?=^@@ )/gm;
7
+ const HUNK_HEADER = /^@@ -(\d+)(?:,(\d+))? \+(\d+)(?:,(\d+))? @@(?: (.*))?/m;
8
+ const SPLIT_WITH_NEWLINES = /(?<=\n)/;
9
+ const FILENAME_HEADER_REGEX = /^(---|\+\+\+)\s+([^\t\r\n]+)/;
10
+ const FILENAME_HEADER_REGEX_GIT = /^(---|\+\+\+)\s+[ab]\/([^\t\r\n]+)/;
11
+ const ALTERNATE_FILE_NAMES_GIT = /^diff --git (?:"a\/(.+?)"|a\/(.+?)) (?:"b\/(.+?)"|b\/(.+?))$/;
12
+ const FILE_MODE_FROM_INDEX = /^index (?:[0-9a-f]+)\.\.(?:[0-9a-f]+)(?: (\d+))?/;
13
+ const HEADER_METADATA_SLOT_ID = "header-metadata";
14
+ const DEFAULT_THEMES = {
15
+ dark: "pierre-dark",
16
+ light: "pierre-light"
17
+ };
18
+ const UNSAFE_CSS_ATTRIBUTE = "data-unsafe-css";
19
+ const CORE_CSS_ATTRIBUTE = "data-core-css";
20
+
21
+ //#endregion
22
+ export { ALTERNATE_FILE_NAMES_GIT, COMMIT_METADATA_SPLIT, CORE_CSS_ATTRIBUTE, DEFAULT_THEMES, DIFFS_TAG_NAME, FILENAME_HEADER_REGEX, FILENAME_HEADER_REGEX_GIT, FILE_CONTEXT_BLOB, FILE_MODE_FROM_INDEX, GIT_DIFF_FILE_BREAK_REGEX, HEADER_METADATA_SLOT_ID, HUNK_HEADER, SPLIT_WITH_NEWLINES, UNIFIED_DIFF_FILE_BREAK_REGEX, UNSAFE_CSS_ATTRIBUTE };
23
+ //# sourceMappingURL=constants.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.js","names":["COMMIT_METADATA_SPLIT: RegExp","GIT_DIFF_FILE_BREAK_REGEX: RegExp","UNIFIED_DIFF_FILE_BREAK_REGEX: RegExp","FILE_CONTEXT_BLOB: RegExp","HUNK_HEADER: RegExp","SPLIT_WITH_NEWLINES: RegExp","FILENAME_HEADER_REGEX: RegExp","FILENAME_HEADER_REGEX_GIT: RegExp","ALTERNATE_FILE_NAMES_GIT: RegExp","FILE_MODE_FROM_INDEX: RegExp","DEFAULT_THEMES: ThemesType"],"sources":["../src/constants.ts"],"sourcesContent":["import type { ThemesType } from './types';\n\nexport const DIFFS_TAG_NAME = 'diffs-container' as const;\n\n// Misc patch/content parsing regexes\nexport const COMMIT_METADATA_SPLIT: RegExp = /(?=^From [a-f0-9]+ .+$)/m;\nexport const GIT_DIFF_FILE_BREAK_REGEX: RegExp = /(?=^diff --git)/gm;\nexport const UNIFIED_DIFF_FILE_BREAK_REGEX: RegExp = /(?=^---\\s+\\S)/gm;\nexport const FILE_CONTEXT_BLOB: RegExp = /(?=^@@ )/gm;\nexport const HUNK_HEADER: RegExp =\n /^@@ -(\\d+)(?:,(\\d+))? \\+(\\d+)(?:,(\\d+))? @@(?: (.*))?/m;\nexport const SPLIT_WITH_NEWLINES: RegExp = /(?<=\\n)/;\nexport const FILENAME_HEADER_REGEX: RegExp = /^(---|\\+\\+\\+)\\s+([^\\t\\r\\n]+)/;\nexport const FILENAME_HEADER_REGEX_GIT: RegExp =\n /^(---|\\+\\+\\+)\\s+[ab]\\/([^\\t\\r\\n]+)/;\nexport const ALTERNATE_FILE_NAMES_GIT: RegExp =\n /^diff --git (?:\"a\\/(.+?)\"|a\\/(.+?)) (?:\"b\\/(.+?)\"|b\\/(.+?))$/;\nexport const FILE_MODE_FROM_INDEX: RegExp =\n /^index (?:[0-9a-f]+)\\.\\.(?:[0-9a-f]+)(?: (\\d+))?/;\n\nexport const HEADER_METADATA_SLOT_ID = 'header-metadata';\n\nexport const DEFAULT_THEMES: ThemesType = {\n dark: 'pierre-dark',\n light: 'pierre-light',\n};\n\nexport const UNSAFE_CSS_ATTRIBUTE = 'data-unsafe-css';\nexport const CORE_CSS_ATTRIBUTE = 'data-core-css';\n"],"mappings":";AAEA,MAAa,iBAAiB;AAG9B,MAAaA,wBAAgC;AAC7C,MAAaC,4BAAoC;AACjD,MAAaC,gCAAwC;AACrD,MAAaC,oBAA4B;AACzC,MAAaC,cACX;AACF,MAAaC,sBAA8B;AAC3C,MAAaC,wBAAgC;AAC7C,MAAaC,4BACX;AACF,MAAaC,2BACX;AACF,MAAaC,uBACX;AAEF,MAAa,0BAA0B;AAEvC,MAAaC,iBAA6B;CACxC,MAAM;CACN,OAAO;CACR;AAED,MAAa,uBAAuB;AACpC,MAAa,qBAAqB"}
@@ -0,0 +1,7 @@
1
+ import { SupportedLanguages } from "../../types.js";
2
+
3
+ //#region src/highlighter/languages/areLanguagesAttached.d.ts
4
+ declare function areLanguagesAttached(languages: SupportedLanguages | SupportedLanguages[]): boolean;
5
+ //#endregion
6
+ export { areLanguagesAttached };
7
+ //# sourceMappingURL=areLanguagesAttached.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"areLanguagesAttached.d.ts","names":[],"sources":["../../../src/highlighter/languages/areLanguagesAttached.ts"],"sourcesContent":[],"mappings":";;;iBAGgB,oBAAA,YACH,qBAAqB"}
@@ -0,0 +1,11 @@
1
+ import { AttachedLanguages } from "./constants.js";
2
+
3
+ //#region src/highlighter/languages/areLanguagesAttached.ts
4
+ function areLanguagesAttached(languages) {
5
+ for (const language of Array.isArray(languages) ? languages : [languages]) if (!AttachedLanguages.has(language)) return false;
6
+ return true;
7
+ }
8
+
9
+ //#endregion
10
+ export { areLanguagesAttached };
11
+ //# sourceMappingURL=areLanguagesAttached.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"areLanguagesAttached.js","names":[],"sources":["../../../src/highlighter/languages/areLanguagesAttached.ts"],"sourcesContent":["import type { SupportedLanguages } from '../../types';\nimport { AttachedLanguages } from './constants';\n\nexport function areLanguagesAttached(\n languages: SupportedLanguages | SupportedLanguages[]\n): boolean {\n for (const language of Array.isArray(languages) ? languages : [languages]) {\n if (!AttachedLanguages.has(language)) {\n return false;\n }\n }\n return true;\n}\n"],"mappings":";;;AAGA,SAAgB,qBACd,WACS;AACT,MAAK,MAAM,YAAY,MAAM,QAAQ,UAAU,GAAG,YAAY,CAAC,UAAU,CACvE,KAAI,CAAC,kBAAkB,IAAI,SAAS,CAClC,QAAO;AAGX,QAAO"}
@@ -0,0 +1,9 @@
1
+ import { DiffsHighlighter } from "../../types.js";
2
+ import { ResolvedLanguage } from "../../worker/types.js";
3
+ import "../../worker/index.js";
4
+
5
+ //#region src/highlighter/languages/attachResolvedLanguages.d.ts
6
+ declare function attachResolvedLanguages(resolvedLanguages: ResolvedLanguage | ResolvedLanguage[], highlighter: DiffsHighlighter): void;
7
+ //#endregion
8
+ export { attachResolvedLanguages };
9
+ //# sourceMappingURL=attachResolvedLanguages.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"attachResolvedLanguages.d.ts","names":[],"sources":["../../../src/highlighter/languages/attachResolvedLanguages.ts"],"sourcesContent":[],"mappings":";;;;;iBAIgB,uBAAA,oBACK,mBAAmB,iCACzB"}
@@ -0,0 +1,20 @@
1
+ import { AttachedLanguages, ResolvedLanguages } from "./constants.js";
2
+
3
+ //#region src/highlighter/languages/attachResolvedLanguages.ts
4
+ function attachResolvedLanguages(resolvedLanguages, highlighter) {
5
+ resolvedLanguages = Array.isArray(resolvedLanguages) ? resolvedLanguages : [resolvedLanguages];
6
+ for (const resolvedLang of resolvedLanguages) {
7
+ if (AttachedLanguages.has(resolvedLang.name)) continue;
8
+ let lang = ResolvedLanguages.get(resolvedLang.name);
9
+ if (lang == null) {
10
+ lang = resolvedLang;
11
+ ResolvedLanguages.set(resolvedLang.name, lang);
12
+ }
13
+ AttachedLanguages.add(lang.name);
14
+ highlighter.loadLanguageSync(lang.data);
15
+ }
16
+ }
17
+
18
+ //#endregion
19
+ export { attachResolvedLanguages };
20
+ //# sourceMappingURL=attachResolvedLanguages.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"attachResolvedLanguages.js","names":[],"sources":["../../../src/highlighter/languages/attachResolvedLanguages.ts"],"sourcesContent":["import type { DiffsHighlighter } from '../../types';\nimport type { ResolvedLanguage } from '../../worker';\nimport { AttachedLanguages, ResolvedLanguages } from './constants';\n\nexport function attachResolvedLanguages(\n resolvedLanguages: ResolvedLanguage | ResolvedLanguage[],\n highlighter: DiffsHighlighter\n): void {\n resolvedLanguages = Array.isArray(resolvedLanguages)\n ? resolvedLanguages\n : [resolvedLanguages];\n\n for (const resolvedLang of resolvedLanguages) {\n if (AttachedLanguages.has(resolvedLang.name)) continue;\n let lang = ResolvedLanguages.get(resolvedLang.name);\n if (lang == null) {\n lang = resolvedLang;\n ResolvedLanguages.set(resolvedLang.name, lang);\n }\n AttachedLanguages.add(lang.name);\n highlighter.loadLanguageSync(lang.data);\n }\n}\n"],"mappings":";;;AAIA,SAAgB,wBACd,mBACA,aACM;AACN,qBAAoB,MAAM,QAAQ,kBAAkB,GAChD,oBACA,CAAC,kBAAkB;AAEvB,MAAK,MAAM,gBAAgB,mBAAmB;AAC5C,MAAI,kBAAkB,IAAI,aAAa,KAAK,CAAE;EAC9C,IAAI,OAAO,kBAAkB,IAAI,aAAa,KAAK;AACnD,MAAI,QAAQ,MAAM;AAChB,UAAO;AACP,qBAAkB,IAAI,aAAa,MAAM,KAAK;;AAEhD,oBAAkB,IAAI,KAAK,KAAK;AAChC,cAAY,iBAAiB,KAAK,KAAK"}
@@ -0,0 +1,5 @@
1
+ //#region src/highlighter/languages/cleanUpResolvedLanguages.d.ts
2
+ declare function cleanUpResolvedLanguages(): void;
3
+ //#endregion
4
+ export { cleanUpResolvedLanguages };
5
+ //# sourceMappingURL=cleanUpResolvedLanguages.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cleanUpResolvedLanguages.d.ts","names":[],"sources":["../../../src/highlighter/languages/cleanUpResolvedLanguages.ts"],"sourcesContent":[],"mappings":";iBAEgB,wBAAA,CAAA"}
@@ -0,0 +1,11 @@
1
+ import { AttachedLanguages, ResolvedLanguages } from "./constants.js";
2
+
3
+ //#region src/highlighter/languages/cleanUpResolvedLanguages.ts
4
+ function cleanUpResolvedLanguages() {
5
+ ResolvedLanguages.clear();
6
+ AttachedLanguages.clear();
7
+ }
8
+
9
+ //#endregion
10
+ export { cleanUpResolvedLanguages };
11
+ //# sourceMappingURL=cleanUpResolvedLanguages.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cleanUpResolvedLanguages.js","names":[],"sources":["../../../src/highlighter/languages/cleanUpResolvedLanguages.ts"],"sourcesContent":["import { AttachedLanguages, ResolvedLanguages } from './constants';\n\nexport function cleanUpResolvedLanguages(): void {\n ResolvedLanguages.clear();\n AttachedLanguages.clear();\n}\n"],"mappings":";;;AAEA,SAAgB,2BAAiC;AAC/C,mBAAkB,OAAO;AACzB,mBAAkB,OAAO"}
@@ -0,0 +1,11 @@
1
+ import { SupportedLanguages } from "../../types.js";
2
+ import { ResolvedLanguage } from "../../worker/types.js";
3
+ import "../../worker/index.js";
4
+
5
+ //#region src/highlighter/languages/constants.d.ts
6
+ declare const ResolvedLanguages: Map<SupportedLanguages, ResolvedLanguage>;
7
+ declare const ResolvingLanguages: Map<SupportedLanguages, Promise<ResolvedLanguage>>;
8
+ declare const AttachedLanguages: Set<string>;
9
+ //#endregion
10
+ export { AttachedLanguages, ResolvedLanguages, ResolvingLanguages };
11
+ //# sourceMappingURL=constants.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.d.ts","names":["ResolvedLanguages: Map<SupportedLanguages, ResolvedLanguage>","ResolvingLanguages: Map<\n SupportedLanguages,\n Promise<ResolvedLanguage>\n>","AttachedLanguages: Set<string>"],"sources":["../../../src/highlighter/languages/constants.ts"],"sourcesContent":[],"mappings":";;;;;cAGaA,mBAAmB,IAAI,oBAAoB;cAG3CC,oBAAoB,IAC/B,oBACA,QAAQ;cAGGC,mBAAmB"}
@@ -0,0 +1,8 @@
1
+ //#region src/highlighter/languages/constants.ts
2
+ const ResolvedLanguages = /* @__PURE__ */ new Map();
3
+ const ResolvingLanguages = /* @__PURE__ */ new Map();
4
+ const AttachedLanguages = /* @__PURE__ */ new Set();
5
+
6
+ //#endregion
7
+ export { AttachedLanguages, ResolvedLanguages, ResolvingLanguages };
8
+ //# sourceMappingURL=constants.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.js","names":["ResolvedLanguages: Map<SupportedLanguages, ResolvedLanguage>","ResolvingLanguages: Map<\n SupportedLanguages,\n Promise<ResolvedLanguage>\n>","AttachedLanguages: Set<string>"],"sources":["../../../src/highlighter/languages/constants.ts"],"sourcesContent":["import type { SupportedLanguages } from '../../types';\nimport type { ResolvedLanguage } from '../../worker';\n\nexport const ResolvedLanguages: Map<SupportedLanguages, ResolvedLanguage> =\n new Map();\n\nexport const ResolvingLanguages: Map<\n SupportedLanguages,\n Promise<ResolvedLanguage>\n> = new Map();\n\nexport const AttachedLanguages: Set<string> = new Set();\n"],"mappings":";AAGA,MAAaA,oCACX,IAAI,KAAK;AAEX,MAAaC,qCAGT,IAAI,KAAK;AAEb,MAAaC,oCAAiC,IAAI,KAAK"}
@@ -0,0 +1,9 @@
1
+ import { SupportedLanguages } from "../../types.js";
2
+ import { ResolvedLanguage } from "../../worker/types.js";
3
+ import "../../worker/index.js";
4
+
5
+ //#region src/highlighter/languages/getResolvedLanguages.d.ts
6
+ declare function getResolvedLanguages(languages: SupportedLanguages[]): ResolvedLanguage[];
7
+ //#endregion
8
+ export { getResolvedLanguages };
9
+ //# sourceMappingURL=getResolvedLanguages.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getResolvedLanguages.d.ts","names":[],"sources":["../../../src/highlighter/languages/getResolvedLanguages.ts"],"sourcesContent":[],"mappings":";;;;;iBAOgB,oBAAA,YACH,uBACV"}
@@ -0,0 +1,16 @@
1
+ import { ResolvedLanguages } from "./constants.js";
2
+
3
+ //#region src/highlighter/languages/getResolvedLanguages.ts
4
+ function getResolvedLanguages(languages) {
5
+ const resolvedLanguages = [];
6
+ for (const language of languages) {
7
+ const resolvedLanguage = ResolvedLanguages.get(language);
8
+ if (resolvedLanguage == null) throw new Error(`getResolvedLanguages: ${language} is not resolved. Please resolve languages before calling getResolvedLanguages`);
9
+ resolvedLanguages.push(resolvedLanguage);
10
+ }
11
+ return resolvedLanguages;
12
+ }
13
+
14
+ //#endregion
15
+ export { getResolvedLanguages };
16
+ //# sourceMappingURL=getResolvedLanguages.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getResolvedLanguages.js","names":["resolvedLanguages: ResolvedLanguage[]"],"sources":["../../../src/highlighter/languages/getResolvedLanguages.ts"],"sourcesContent":["import type { SupportedLanguages } from '../../types';\nimport type { ResolvedLanguage } from '../../worker';\nimport { ResolvedLanguages } from './constants';\n\n// This method should only be called if you know all languages are resolved,\n// otherwise it will fail. The main intention is a helper to avoid an async\n// tick if we don't actually need it\nexport function getResolvedLanguages(\n languages: SupportedLanguages[]\n): ResolvedLanguage[] {\n const resolvedLanguages: ResolvedLanguage[] = [];\n for (const language of languages) {\n const resolvedLanguage = ResolvedLanguages.get(language);\n if (resolvedLanguage == null) {\n throw new Error(\n `getResolvedLanguages: ${language} is not resolved. Please resolve languages before calling getResolvedLanguages`\n );\n }\n resolvedLanguages.push(resolvedLanguage);\n }\n return resolvedLanguages;\n}\n"],"mappings":";;;AAOA,SAAgB,qBACd,WACoB;CACpB,MAAMA,oBAAwC,EAAE;AAChD,MAAK,MAAM,YAAY,WAAW;EAChC,MAAM,mBAAmB,kBAAkB,IAAI,SAAS;AACxD,MAAI,oBAAoB,KACtB,OAAM,IAAI,MACR,yBAAyB,SAAS,gFACnC;AAEH,oBAAkB,KAAK,iBAAiB;;AAE1C,QAAO"}
@@ -0,0 +1,9 @@
1
+ import { SupportedLanguages } from "../../types.js";
2
+ import { ResolvedLanguage } from "../../worker/types.js";
3
+ import "../../worker/index.js";
4
+
5
+ //#region src/highlighter/languages/getResolvedOrResolveLanguage.d.ts
6
+ declare function getResolvedOrResolveLanguage(language: Exclude<SupportedLanguages, "text">): ResolvedLanguage | Promise<ResolvedLanguage>;
7
+ //#endregion
8
+ export { getResolvedOrResolveLanguage };
9
+ //# sourceMappingURL=getResolvedOrResolveLanguage.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getResolvedOrResolveLanguage.d.ts","names":[],"sources":["../../../src/highlighter/languages/getResolvedOrResolveLanguage.ts"],"sourcesContent":[],"mappings":";;;;;iBAKgB,4BAAA,WACJ,QAAQ,8BACjB,mBAAmB,QAAQ"}
@@ -0,0 +1,11 @@
1
+ import { ResolvedLanguages } from "./constants.js";
2
+ import { resolveLanguage } from "./resolveLanguage.js";
3
+
4
+ //#region src/highlighter/languages/getResolvedOrResolveLanguage.ts
5
+ function getResolvedOrResolveLanguage(language) {
6
+ return ResolvedLanguages.get(language) ?? resolveLanguage(language);
7
+ }
8
+
9
+ //#endregion
10
+ export { getResolvedOrResolveLanguage };
11
+ //# sourceMappingURL=getResolvedOrResolveLanguage.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getResolvedOrResolveLanguage.js","names":[],"sources":["../../../src/highlighter/languages/getResolvedOrResolveLanguage.ts"],"sourcesContent":["import type { SupportedLanguages } from '../../types';\nimport type { ResolvedLanguage } from '../../worker';\nimport { ResolvedLanguages } from './constants';\nimport { resolveLanguage } from './resolveLanguage';\n\nexport function getResolvedOrResolveLanguage(\n language: Exclude<SupportedLanguages, 'text'>\n): ResolvedLanguage | Promise<ResolvedLanguage> {\n return ResolvedLanguages.get(language) ?? resolveLanguage(language);\n}\n"],"mappings":";;;;AAKA,SAAgB,6BACd,UAC8C;AAC9C,QAAO,kBAAkB,IAAI,SAAS,IAAI,gBAAgB,SAAS"}
@@ -0,0 +1,7 @@
1
+ import { SupportedLanguages } from "../../types.js";
2
+
3
+ //#region src/highlighter/languages/hasResolvedLanguages.d.ts
4
+ declare function hasResolvedLanguages(languages: SupportedLanguages | SupportedLanguages[]): boolean;
5
+ //#endregion
6
+ export { hasResolvedLanguages };
7
+ //# sourceMappingURL=hasResolvedLanguages.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hasResolvedLanguages.d.ts","names":[],"sources":["../../../src/highlighter/languages/hasResolvedLanguages.ts"],"sourcesContent":[],"mappings":";;;iBAGgB,oBAAA,YACH,qBAAqB"}
@@ -0,0 +1,11 @@
1
+ import { ResolvedLanguages } from "./constants.js";
2
+
3
+ //#region src/highlighter/languages/hasResolvedLanguages.ts
4
+ function hasResolvedLanguages(languages) {
5
+ for (const language of Array.isArray(languages) ? languages : [languages]) if (!ResolvedLanguages.has(language)) return false;
6
+ return true;
7
+ }
8
+
9
+ //#endregion
10
+ export { hasResolvedLanguages };
11
+ //# sourceMappingURL=hasResolvedLanguages.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hasResolvedLanguages.js","names":[],"sources":["../../../src/highlighter/languages/hasResolvedLanguages.ts"],"sourcesContent":["import type { SupportedLanguages } from '../../types';\nimport { ResolvedLanguages } from './constants';\n\nexport function hasResolvedLanguages(\n languages: SupportedLanguages | SupportedLanguages[]\n): boolean {\n for (const language of Array.isArray(languages) ? languages : [languages]) {\n if (!ResolvedLanguages.has(language)) {\n return false;\n }\n }\n return true;\n}\n"],"mappings":";;;AAGA,SAAgB,qBACd,WACS;AACT,MAAK,MAAM,YAAY,MAAM,QAAQ,UAAU,GAAG,YAAY,CAAC,UAAU,CACvE,KAAI,CAAC,kBAAkB,IAAI,SAAS,CAClC,QAAO;AAGX,QAAO"}
@@ -0,0 +1,9 @@
1
+ import { SupportedLanguages } from "../../types.js";
2
+ import { ResolvedLanguage } from "../../worker/types.js";
3
+ import "../../worker/index.js";
4
+
5
+ //#region src/highlighter/languages/resolveLanguage.d.ts
6
+ declare function resolveLanguage(lang: Exclude<SupportedLanguages, "text">): Promise<ResolvedLanguage>;
7
+ //#endregion
8
+ export { resolveLanguage };
9
+ //# sourceMappingURL=resolveLanguage.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resolveLanguage.d.ts","names":[],"sources":["../../../src/highlighter/languages/resolveLanguage.ts"],"sourcesContent":[],"mappings":";;;;;iBAOsB,eAAA,OACd,QAAQ,8BACb,QAAQ"}
@@ -0,0 +1,30 @@
1
+ import { ResolvedLanguages, ResolvingLanguages } from "./constants.js";
2
+ import { isWorkerContext } from "../../utils/isWorkerContext.js";
3
+ import { bundledLanguages } from "shiki";
4
+
5
+ //#region src/highlighter/languages/resolveLanguage.ts
6
+ async function resolveLanguage(lang) {
7
+ if (isWorkerContext()) throw new Error(`resolveLanguage("${lang}") cannot be called from a worker context. Languages must be pre-resolved on the main thread and passed to the worker via the resolvedLanguages parameter.`);
8
+ const resolver = ResolvingLanguages.get(lang);
9
+ if (resolver != null) return resolver;
10
+ try {
11
+ const loader = bundledLanguages[lang];
12
+ if (loader == null) throw new Error("resolveLanguage: \"${lang}\" not found in bundled languages");
13
+ const resolver$1 = loader().then(({ default: data }) => {
14
+ const resolvedLang = {
15
+ name: lang,
16
+ data
17
+ };
18
+ if (!ResolvedLanguages.has(lang)) ResolvedLanguages.set(lang, resolvedLang);
19
+ return resolvedLang;
20
+ });
21
+ ResolvingLanguages.set(lang, resolver$1);
22
+ return await resolver$1;
23
+ } finally {
24
+ ResolvingLanguages.delete(lang);
25
+ }
26
+ }
27
+
28
+ //#endregion
29
+ export { resolveLanguage };
30
+ //# sourceMappingURL=resolveLanguage.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resolveLanguage.js","names":["resolver"],"sources":["../../../src/highlighter/languages/resolveLanguage.ts"],"sourcesContent":["import { bundledLanguages } from 'shiki';\n\nimport type { SupportedLanguages } from '../../types';\nimport { isWorkerContext } from '../../utils/isWorkerContext';\nimport type { ResolvedLanguage } from '../../worker';\nimport { ResolvedLanguages, ResolvingLanguages } from './constants';\n\nexport async function resolveLanguage(\n lang: Exclude<SupportedLanguages, 'text'>\n): Promise<ResolvedLanguage> {\n // Prevent dynamic imports in worker contexts\n if (isWorkerContext()) {\n throw new Error(\n `resolveLanguage(\"${lang}\") cannot be called from a worker context. ` +\n 'Languages must be pre-resolved on the main thread and passed to the worker via the resolvedLanguages parameter.'\n );\n }\n\n const resolver = ResolvingLanguages.get(lang);\n if (resolver != null) {\n return resolver;\n }\n\n try {\n const loader = bundledLanguages[lang];\n if (loader == null) {\n throw new Error(\n 'resolveLanguage: \"${lang}\" not found in bundled languages'\n );\n }\n\n const resolver = loader().then(({ default: data }) => {\n const resolvedLang = { name: lang, data };\n if (!ResolvedLanguages.has(lang)) {\n ResolvedLanguages.set(lang, resolvedLang);\n }\n return resolvedLang;\n });\n ResolvingLanguages.set(lang, resolver);\n return await resolver;\n } finally {\n ResolvingLanguages.delete(lang);\n }\n}\n"],"mappings":";;;;;AAOA,eAAsB,gBACpB,MAC2B;AAE3B,KAAI,iBAAiB,CACnB,OAAM,IAAI,MACR,oBAAoB,KAAK,4JAE1B;CAGH,MAAM,WAAW,mBAAmB,IAAI,KAAK;AAC7C,KAAI,YAAY,KACd,QAAO;AAGT,KAAI;EACF,MAAM,SAAS,iBAAiB;AAChC,MAAI,UAAU,KACZ,OAAM,IAAI,MACR,8DACD;EAGH,MAAMA,aAAW,QAAQ,CAAC,MAAM,EAAE,SAAS,WAAW;GACpD,MAAM,eAAe;IAAE,MAAM;IAAM;IAAM;AACzC,OAAI,CAAC,kBAAkB,IAAI,KAAK,CAC9B,mBAAkB,IAAI,MAAM,aAAa;AAE3C,UAAO;IACP;AACF,qBAAmB,IAAI,MAAMA,WAAS;AACtC,SAAO,MAAMA;WACL;AACR,qBAAmB,OAAO,KAAK"}