@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,1061 @@
1
+ import { createJavaScriptRegexEngine } from "@shikijs/engine-javascript";
2
+ import { createHighlighterCoreSync } from "shiki/core";
3
+ import { diffChars, diffWordsWithSpace } from "diff";
4
+ import { transformerStyleToClass } from "@shikijs/transformers";
5
+
6
+ //#region src/constants.ts
7
+ const DEFAULT_THEMES = {
8
+ dark: "pierre-dark",
9
+ light: "pierre-light"
10
+ };
11
+
12
+ //#endregion
13
+ //#region src/highlighter/languages/constants.ts
14
+ const ResolvedLanguages = /* @__PURE__ */ new Map();
15
+ const AttachedLanguages = /* @__PURE__ */ new Set();
16
+
17
+ //#endregion
18
+ //#region src/highlighter/languages/attachResolvedLanguages.ts
19
+ function attachResolvedLanguages(resolvedLanguages, highlighter$1) {
20
+ resolvedLanguages = Array.isArray(resolvedLanguages) ? resolvedLanguages : [resolvedLanguages];
21
+ for (const resolvedLang of resolvedLanguages) {
22
+ if (AttachedLanguages.has(resolvedLang.name)) continue;
23
+ let lang = ResolvedLanguages.get(resolvedLang.name);
24
+ if (lang == null) {
25
+ lang = resolvedLang;
26
+ ResolvedLanguages.set(resolvedLang.name, lang);
27
+ }
28
+ AttachedLanguages.add(lang.name);
29
+ highlighter$1.loadLanguageSync(lang.data);
30
+ }
31
+ }
32
+
33
+ //#endregion
34
+ //#region src/highlighter/themes/constants.ts
35
+ const ResolvedThemes = /* @__PURE__ */ new Map();
36
+ const AttachedThemes = /* @__PURE__ */ new Set();
37
+
38
+ //#endregion
39
+ //#region src/highlighter/themes/attachResolvedThemes.ts
40
+ function attachResolvedThemes(themes, highlighter$1) {
41
+ themes = Array.isArray(themes) ? themes : [themes];
42
+ for (let themeRef of themes) {
43
+ let resolvedTheme;
44
+ if (typeof themeRef === "string") {
45
+ resolvedTheme = ResolvedThemes.get(themeRef);
46
+ if (resolvedTheme == null) throw new Error(`loadResolvedThemes: ${themeRef} is not resolved, you must resolve it before calling loadResolvedThemes`);
47
+ } else {
48
+ resolvedTheme = themeRef;
49
+ themeRef = themeRef.name;
50
+ if (!ResolvedThemes.has(themeRef)) ResolvedThemes.set(themeRef, resolvedTheme);
51
+ }
52
+ if (AttachedThemes.has(themeRef)) continue;
53
+ AttachedThemes.add(themeRef);
54
+ highlighter$1.loadThemeSync(resolvedTheme);
55
+ }
56
+ }
57
+
58
+ //#endregion
59
+ //#region src/utils/cleanLastNewline.ts
60
+ function cleanLastNewline(contents) {
61
+ return contents.replace(/\n$|\r\n$/, "");
62
+ }
63
+
64
+ //#endregion
65
+ //#region src/utils/hast_utils.ts
66
+ function createTextNodeElement(value) {
67
+ return {
68
+ type: "text",
69
+ value
70
+ };
71
+ }
72
+ function createHastElement({ tagName, children = [], properties = {} }) {
73
+ return {
74
+ type: "element",
75
+ tagName,
76
+ properties,
77
+ children
78
+ };
79
+ }
80
+ function findCodeElement(nodes) {
81
+ let firstChild = nodes.children[0];
82
+ while (firstChild != null) {
83
+ if (firstChild.type === "element" && firstChild.tagName === "code") return firstChild;
84
+ if ("children" in firstChild) firstChild = firstChild.children[0];
85
+ else firstChild = null;
86
+ }
87
+ }
88
+
89
+ //#endregion
90
+ //#region src/utils/processLine.ts
91
+ function processLine(node, line, state) {
92
+ const lineInfo = typeof state.lineInfo === "function" ? state.lineInfo(line) : state.lineInfo[line];
93
+ if (lineInfo == null) {
94
+ console.error({
95
+ node,
96
+ line,
97
+ state
98
+ });
99
+ throw new Error(`processLine: line ${line}, contains no state.lineInfo`);
100
+ }
101
+ node.tagName = "span";
102
+ node.properties["data-column-content"] = "";
103
+ if (node.children.length === 0) node.children.push(createTextNodeElement("\n"));
104
+ return createHastElement({
105
+ tagName: "div",
106
+ children: [createHastElement({
107
+ tagName: "span",
108
+ children: [createHastElement({
109
+ tagName: "span",
110
+ children: [{
111
+ type: "text",
112
+ value: `${lineInfo.lineNumber}`
113
+ }],
114
+ properties: { "data-line-number-content": "" }
115
+ })],
116
+ properties: { "data-column-number": "" }
117
+ }), node],
118
+ properties: {
119
+ "data-line": lineInfo.lineNumber,
120
+ "data-alt-line": lineInfo.altLineNumber,
121
+ "data-line-type": lineInfo.type,
122
+ "data-line-index": lineInfo.lineIndex >= 0 ? lineInfo.lineIndex : void 0
123
+ }
124
+ });
125
+ }
126
+
127
+ //#endregion
128
+ //#region src/utils/createTransformerWithState.ts
129
+ function createTransformerWithState(useCSSClasses = false) {
130
+ const state = { lineInfo: {} };
131
+ const transformers = [{
132
+ line(node) {
133
+ delete node.properties.class;
134
+ return node;
135
+ },
136
+ pre(pre) {
137
+ const code = findCodeElement(pre);
138
+ const children = [];
139
+ if (code != null) {
140
+ let index = 1;
141
+ for (const node of code.children) {
142
+ if (node.type !== "element") continue;
143
+ children.push(processLine(node, index, state));
144
+ index++;
145
+ }
146
+ code.children = children;
147
+ }
148
+ return pre;
149
+ }
150
+ }];
151
+ if (useCSSClasses) transformers.push(tokenStyleNormalizer, toClass);
152
+ return {
153
+ state,
154
+ transformers,
155
+ toClass
156
+ };
157
+ }
158
+ const toClass = transformerStyleToClass({ classPrefix: "hl-" });
159
+ const tokenStyleNormalizer = {
160
+ name: "token-style-normalizer",
161
+ tokens(lines) {
162
+ for (const line of lines) for (const token of line) {
163
+ if (token.htmlStyle != null) continue;
164
+ const style = {};
165
+ if (token.color != null) style.color = token.color;
166
+ if (token.bgColor != null) style["background-color"] = token.bgColor;
167
+ if (token.fontStyle != null && token.fontStyle !== 0) {
168
+ if ((token.fontStyle & 1) !== 0) style["font-style"] = "italic";
169
+ if ((token.fontStyle & 2) !== 0) style["font-weight"] = "bold";
170
+ if ((token.fontStyle & 4) !== 0) style["text-decoration"] = "underline";
171
+ }
172
+ if (Object.keys(style).length > 0) token.htmlStyle = style;
173
+ }
174
+ }
175
+ };
176
+
177
+ //#endregion
178
+ //#region src/utils/formatCSSVariablePrefix.ts
179
+ function formatCSSVariablePrefix(prefix = "diffs") {
180
+ return `--${prefix}-`;
181
+ }
182
+
183
+ //#endregion
184
+ //#region src/utils/getFiletypeFromFileName.ts
185
+ const EXTENSION_TO_FILE_FORMAT = {
186
+ "1c": "1c",
187
+ abap: "abap",
188
+ as: "actionscript-3",
189
+ ada: "ada",
190
+ adb: "ada",
191
+ ads: "ada",
192
+ adoc: "asciidoc",
193
+ asciidoc: "asciidoc",
194
+ "component.html": "angular-html",
195
+ "component.ts": "angular-ts",
196
+ conf: "nginx",
197
+ htaccess: "apache",
198
+ cls: "tex",
199
+ trigger: "apex",
200
+ apl: "apl",
201
+ applescript: "applescript",
202
+ scpt: "applescript",
203
+ ara: "ara",
204
+ asm: "asm",
205
+ s: "riscv",
206
+ astro: "astro",
207
+ awk: "awk",
208
+ bal: "ballerina",
209
+ sh: "zsh",
210
+ bash: "zsh",
211
+ bat: "cmd",
212
+ cmd: "cmd",
213
+ be: "berry",
214
+ beancount: "beancount",
215
+ bib: "bibtex",
216
+ bicep: "bicep",
217
+ "blade.php": "blade",
218
+ bsl: "bsl",
219
+ c: "c",
220
+ h: "objective-cpp",
221
+ cs: "csharp",
222
+ cpp: "cpp",
223
+ hpp: "cpp",
224
+ cc: "cpp",
225
+ cxx: "cpp",
226
+ hh: "cpp",
227
+ cdc: "cdc",
228
+ cairo: "cairo",
229
+ clar: "clarity",
230
+ clj: "clojure",
231
+ cljs: "clojure",
232
+ cljc: "clojure",
233
+ soy: "soy",
234
+ cmake: "cmake",
235
+ "CMakeLists.txt": "cmake",
236
+ cob: "cobol",
237
+ cbl: "cobol",
238
+ cobol: "cobol",
239
+ CODEOWNERS: "codeowners",
240
+ ql: "ql",
241
+ coffee: "coffeescript",
242
+ lisp: "lisp",
243
+ cl: "lisp",
244
+ lsp: "lisp",
245
+ log: "log",
246
+ v: "verilog",
247
+ cql: "cql",
248
+ cr: "crystal",
249
+ css: "css",
250
+ csv: "csv",
251
+ cue: "cue",
252
+ cypher: "cypher",
253
+ cyp: "cypher",
254
+ d: "d",
255
+ dart: "dart",
256
+ dax: "dax",
257
+ desktop: "desktop",
258
+ diff: "diff",
259
+ patch: "diff",
260
+ Dockerfile: "dockerfile",
261
+ dockerfile: "dockerfile",
262
+ env: "dotenv",
263
+ dm: "dream-maker",
264
+ edge: "edge",
265
+ el: "emacs-lisp",
266
+ ex: "elixir",
267
+ exs: "elixir",
268
+ elm: "elm",
269
+ erb: "erb",
270
+ erl: "erlang",
271
+ hrl: "erlang",
272
+ f: "fortran-fixed-form",
273
+ for: "fortran-fixed-form",
274
+ fs: "fsharp",
275
+ fsi: "fsharp",
276
+ fsx: "fsharp",
277
+ f03: "f03",
278
+ f08: "f08",
279
+ f18: "f18",
280
+ f77: "f77",
281
+ f90: "fortran-free-form",
282
+ f95: "fortran-free-form",
283
+ fnl: "fennel",
284
+ fish: "fish",
285
+ ftl: "ftl",
286
+ tres: "gdresource",
287
+ res: "gdresource",
288
+ gd: "gdscript",
289
+ gdshader: "gdshader",
290
+ gs: "genie",
291
+ feature: "gherkin",
292
+ COMMIT_EDITMSG: "git-commit",
293
+ "git-rebase-todo": "git-rebase",
294
+ gjs: "glimmer-js",
295
+ gleam: "gleam",
296
+ gts: "glimmer-ts",
297
+ glsl: "glsl",
298
+ vert: "glsl",
299
+ frag: "glsl",
300
+ shader: "shaderlab",
301
+ gp: "gnuplot",
302
+ plt: "gnuplot",
303
+ gnuplot: "gnuplot",
304
+ go: "go",
305
+ graphql: "graphql",
306
+ gql: "graphql",
307
+ groovy: "groovy",
308
+ gvy: "groovy",
309
+ hack: "hack",
310
+ haml: "haml",
311
+ hbs: "handlebars",
312
+ handlebars: "handlebars",
313
+ hs: "haskell",
314
+ lhs: "haskell",
315
+ hx: "haxe",
316
+ hcl: "hcl",
317
+ hjson: "hjson",
318
+ hlsl: "hlsl",
319
+ fx: "hlsl",
320
+ html: "html",
321
+ htm: "html",
322
+ http: "http",
323
+ rest: "http",
324
+ hxml: "hxml",
325
+ hy: "hy",
326
+ imba: "imba",
327
+ ini: "ini",
328
+ cfg: "ini",
329
+ jade: "pug",
330
+ pug: "pug",
331
+ java: "java",
332
+ js: "javascript",
333
+ mjs: "javascript",
334
+ cjs: "javascript",
335
+ jinja: "jinja",
336
+ jinja2: "jinja",
337
+ j2: "jinja",
338
+ jison: "jison",
339
+ jl: "julia",
340
+ json: "json",
341
+ json5: "json5",
342
+ jsonc: "jsonc",
343
+ jsonl: "jsonl",
344
+ jsonnet: "jsonnet",
345
+ libsonnet: "jsonnet",
346
+ jssm: "jssm",
347
+ jsx: "jsx",
348
+ kt: "kotlin",
349
+ kts: "kts",
350
+ kql: "kusto",
351
+ tex: "tex",
352
+ ltx: "tex",
353
+ lean: "lean4",
354
+ less: "less",
355
+ liquid: "liquid",
356
+ lit: "lit",
357
+ ll: "llvm",
358
+ logo: "logo",
359
+ lua: "lua",
360
+ luau: "luau",
361
+ Makefile: "makefile",
362
+ mk: "makefile",
363
+ makefile: "makefile",
364
+ md: "markdown",
365
+ markdown: "markdown",
366
+ marko: "marko",
367
+ m: "wolfram",
368
+ mat: "matlab",
369
+ mdc: "mdc",
370
+ mdx: "mdx",
371
+ wiki: "wikitext",
372
+ mediawiki: "wikitext",
373
+ mmd: "mermaid",
374
+ mermaid: "mermaid",
375
+ mips: "mipsasm",
376
+ mojo: "mojo",
377
+ "🔥": "mojo",
378
+ move: "move",
379
+ nar: "narrat",
380
+ nf: "nextflow",
381
+ nim: "nim",
382
+ nims: "nim",
383
+ nimble: "nim",
384
+ nix: "nix",
385
+ nu: "nushell",
386
+ mm: "objective-cpp",
387
+ ml: "ocaml",
388
+ mli: "ocaml",
389
+ mll: "ocaml",
390
+ mly: "ocaml",
391
+ pas: "pascal",
392
+ p: "pascal",
393
+ pl: "prolog",
394
+ pm: "perl",
395
+ t: "perl",
396
+ raku: "raku",
397
+ p6: "raku",
398
+ pl6: "raku",
399
+ php: "php",
400
+ phtml: "php",
401
+ pls: "plsql",
402
+ sql: "sql",
403
+ po: "po",
404
+ polar: "polar",
405
+ pcss: "postcss",
406
+ pot: "pot",
407
+ potx: "potx",
408
+ pq: "powerquery",
409
+ pqm: "powerquery",
410
+ ps1: "powershell",
411
+ psm1: "powershell",
412
+ psd1: "powershell",
413
+ prisma: "prisma",
414
+ pro: "prolog",
415
+ P: "prolog",
416
+ properties: "properties",
417
+ proto: "protobuf",
418
+ pp: "puppet",
419
+ purs: "purescript",
420
+ py: "python",
421
+ pyw: "python",
422
+ pyi: "python",
423
+ qml: "qml",
424
+ qmldir: "qmldir",
425
+ qss: "qss",
426
+ r: "r",
427
+ R: "r",
428
+ rkt: "racket",
429
+ rktl: "racket",
430
+ razor: "razor",
431
+ cshtml: "razor",
432
+ rb: "ruby",
433
+ rbw: "ruby",
434
+ reg: "reg",
435
+ regex: "regexp",
436
+ rel: "rel",
437
+ rs: "rust",
438
+ rst: "rst",
439
+ rake: "ruby",
440
+ gemspec: "ruby",
441
+ sas: "sas",
442
+ sass: "sass",
443
+ scala: "scala",
444
+ sc: "scala",
445
+ scm: "scheme",
446
+ ss: "scheme",
447
+ sld: "scheme",
448
+ scss: "scss",
449
+ sdbl: "sdbl",
450
+ shadergraph: "shader",
451
+ st: "smalltalk",
452
+ sol: "solidity",
453
+ sparql: "sparql",
454
+ rq: "sparql",
455
+ spl: "splunk",
456
+ config: "ssh-config",
457
+ do: "stata",
458
+ ado: "stata",
459
+ dta: "stata",
460
+ styl: "stylus",
461
+ stylus: "stylus",
462
+ svelte: "svelte",
463
+ swift: "swift",
464
+ sv: "system-verilog",
465
+ svh: "system-verilog",
466
+ service: "systemd",
467
+ socket: "systemd",
468
+ device: "systemd",
469
+ timer: "systemd",
470
+ talon: "talonscript",
471
+ tasl: "tasl",
472
+ tcl: "tcl",
473
+ templ: "templ",
474
+ tf: "tf",
475
+ tfvars: "tfvars",
476
+ toml: "toml",
477
+ ts: "typescript",
478
+ tsp: "typespec",
479
+ tsv: "tsv",
480
+ tsx: "tsx",
481
+ ttl: "turtle",
482
+ twig: "twig",
483
+ typ: "typst",
484
+ vv: "v",
485
+ vala: "vala",
486
+ vapi: "vala",
487
+ vb: "vb",
488
+ vbs: "vb",
489
+ bas: "vb",
490
+ vh: "verilog",
491
+ vhd: "vhdl",
492
+ vhdl: "vhdl",
493
+ vim: "vimscript",
494
+ vue: "vue",
495
+ "vine.ts": "vue-vine",
496
+ vy: "vyper",
497
+ wasm: "wasm",
498
+ wat: "wasm",
499
+ wy: "文言",
500
+ wgsl: "wgsl",
501
+ wit: "wit",
502
+ wl: "wolfram",
503
+ nb: "wolfram",
504
+ xml: "xml",
505
+ xsl: "xsl",
506
+ xslt: "xsl",
507
+ yaml: "yaml",
508
+ yml: "yml",
509
+ zs: "zenscript",
510
+ zig: "zig",
511
+ zsh: "zsh",
512
+ sty: "tex"
513
+ };
514
+ function getFiletypeFromFileName(fileName) {
515
+ if (EXTENSION_TO_FILE_FORMAT[fileName] != null) return EXTENSION_TO_FILE_FORMAT[fileName];
516
+ const compoundMatch = fileName.match(/\.([^/\\]+\.[^/\\]+)$/);
517
+ if (compoundMatch != null && EXTENSION_TO_FILE_FORMAT[compoundMatch[1]] != null) return EXTENSION_TO_FILE_FORMAT[compoundMatch[1]] ?? "text";
518
+ return EXTENSION_TO_FILE_FORMAT[fileName.match(/\.([^.]+)$/)?.[1] ?? ""] ?? "text";
519
+ }
520
+
521
+ //#endregion
522
+ //#region src/utils/getHighlighterThemeStyles.ts
523
+ function getHighlighterThemeStyles({ theme = DEFAULT_THEMES, highlighter: highlighter$1, prefix }) {
524
+ let styles = "";
525
+ if (typeof theme === "string") {
526
+ const themeData = highlighter$1.getTheme(theme);
527
+ styles += `color:${themeData.fg};`;
528
+ styles += `background-color:${themeData.bg};`;
529
+ styles += `${formatCSSVariablePrefix(prefix)}fg:${themeData.fg};`;
530
+ styles += `${formatCSSVariablePrefix(prefix)}bg:${themeData.bg};`;
531
+ styles += getThemeVariables(themeData, prefix);
532
+ } else {
533
+ let themeData = highlighter$1.getTheme(theme.dark);
534
+ styles += `${formatCSSVariablePrefix(prefix)}dark:${themeData.fg};`;
535
+ styles += `${formatCSSVariablePrefix(prefix)}dark-bg:${themeData.bg};`;
536
+ styles += getThemeVariables(themeData, prefix, "dark");
537
+ themeData = highlighter$1.getTheme(theme.light);
538
+ styles += `${formatCSSVariablePrefix(prefix)}light:${themeData.fg};`;
539
+ styles += `${formatCSSVariablePrefix(prefix)}light-bg:${themeData.bg};`;
540
+ styles += getThemeVariables(themeData, prefix, "light");
541
+ }
542
+ return styles;
543
+ }
544
+ function getThemeVariables(themeData, prefix, modePrefix) {
545
+ modePrefix = modePrefix != null ? `${modePrefix}-` : "";
546
+ let styles = "";
547
+ const additionGreen = themeData.colors?.["gitDecoration.addedResourceForeground"] ?? themeData.colors?.["terminal.ansiGreen"];
548
+ if (additionGreen != null) styles += `${formatCSSVariablePrefix(prefix)}${modePrefix}addition-color:${additionGreen};`;
549
+ const deletionRed = themeData.colors?.["gitDecoration.deletedResourceForeground"] ?? themeData.colors?.["terminal.ansiRed"];
550
+ if (deletionRed != null) styles += `${formatCSSVariablePrefix(prefix)}${modePrefix}deletion-color:${deletionRed};`;
551
+ const modifiedBlue = themeData.colors?.["gitDecoration.modifiedResourceForeground"] ?? themeData.colors?.["terminal.ansiBlue"];
552
+ if (modifiedBlue != null) styles += `${formatCSSVariablePrefix(prefix)}${modePrefix}modified-color:${modifiedBlue};`;
553
+ return styles;
554
+ }
555
+
556
+ //#endregion
557
+ //#region src/utils/getLineNodes.ts
558
+ function getLineNodes(nodes) {
559
+ let firstChild = nodes.children[0];
560
+ while (firstChild != null) {
561
+ if (firstChild.type === "element" && firstChild.tagName === "code") return firstChild.children;
562
+ if ("children" in firstChild) firstChild = firstChild.children[0];
563
+ else firstChild = null;
564
+ }
565
+ console.error(nodes);
566
+ throw new Error("getLineNodes: Unable to find children");
567
+ }
568
+
569
+ //#endregion
570
+ //#region src/utils/parseDiffDecorations.ts
571
+ function createDiffSpanDecoration({ line, spanStart, spanLength }) {
572
+ return {
573
+ start: {
574
+ line,
575
+ character: spanStart
576
+ },
577
+ end: {
578
+ line,
579
+ character: spanStart + spanLength
580
+ },
581
+ properties: { "data-diff-span": "" },
582
+ alwaysWrap: true
583
+ };
584
+ }
585
+ function pushOrJoinSpan({ item, arr, enableJoin, isNeutral = false, isLastItem = false }) {
586
+ const lastItem = arr[arr.length - 1];
587
+ if (lastItem == null || isLastItem || !enableJoin) {
588
+ arr.push([isNeutral ? 0 : 1, item.value]);
589
+ return;
590
+ }
591
+ const isLastItemNeutral = lastItem[0] === 0;
592
+ if (isNeutral === isLastItemNeutral || isNeutral && item.value.length === 1 && !isLastItemNeutral) {
593
+ lastItem[1] += item.value;
594
+ return;
595
+ }
596
+ arr.push([isNeutral ? 0 : 1, item.value]);
597
+ }
598
+
599
+ //#endregion
600
+ //#region src/utils/renderDiffWithHighlighter.ts
601
+ function renderDiffWithHighlighter(diff, highlighter$1, options, forcePlainText = false) {
602
+ const baseThemeType = (() => {
603
+ const theme = options.theme ?? DEFAULT_THEMES;
604
+ if (typeof theme === "string") return highlighter$1.getTheme(theme).type;
605
+ })();
606
+ const themeStyles = getHighlighterThemeStyles({
607
+ theme: options.theme,
608
+ highlighter: highlighter$1
609
+ });
610
+ if (diff.newLines != null && diff.oldLines != null) {
611
+ const { oldContent, newContent, oldInfo, newInfo, oldDecorations, newDecorations } = processLines({
612
+ hunks: diff.hunks,
613
+ oldLines: diff.oldLines,
614
+ newLines: diff.newLines,
615
+ lineDiffType: options.lineDiffType
616
+ });
617
+ return {
618
+ code: renderTwoFiles({
619
+ oldFile: {
620
+ name: diff.prevName ?? diff.name,
621
+ contents: oldContent
622
+ },
623
+ oldInfo,
624
+ oldDecorations,
625
+ newFile: {
626
+ name: diff.name,
627
+ contents: newContent
628
+ },
629
+ newInfo,
630
+ newDecorations,
631
+ highlighter: highlighter$1,
632
+ options,
633
+ languageOverride: forcePlainText ? "text" : diff.lang
634
+ }),
635
+ themeStyles,
636
+ baseThemeType
637
+ };
638
+ }
639
+ const hunks = [];
640
+ let lineIndex = 0;
641
+ for (const hunk of diff.hunks) {
642
+ const { oldContent, newContent, oldInfo, newInfo, oldDecorations, newDecorations, lineIndex: newLineIndex } = processLines({
643
+ hunks: [hunk],
644
+ lineIndex,
645
+ lineDiffType: options.lineDiffType
646
+ });
647
+ const oldFile = {
648
+ name: diff.prevName ?? diff.name,
649
+ contents: oldContent
650
+ };
651
+ const newFile = {
652
+ name: diff.name,
653
+ contents: newContent
654
+ };
655
+ hunks.push(renderTwoFiles({
656
+ oldFile,
657
+ oldInfo,
658
+ oldDecorations,
659
+ newFile,
660
+ newInfo,
661
+ newDecorations,
662
+ highlighter: highlighter$1,
663
+ options,
664
+ languageOverride: forcePlainText ? "text" : diff.lang
665
+ }));
666
+ lineIndex = newLineIndex;
667
+ }
668
+ return {
669
+ code: (() => {
670
+ if (hunks.length <= 1) {
671
+ const hunk = hunks[0] ?? {
672
+ oldLines: [],
673
+ newLines: []
674
+ };
675
+ if (hunk.newLines.length === 0 || hunk.oldLines.length === 0) return hunk;
676
+ }
677
+ return { hunks };
678
+ })(),
679
+ themeStyles,
680
+ baseThemeType
681
+ };
682
+ }
683
+ function computeLineDiffDecorations({ oldLine, newLine, oldLineIndex, newLineIndex, oldDecorations, newDecorations, lineDiffType }) {
684
+ if (oldLine == null || newLine == null || lineDiffType === "none") return;
685
+ oldLine = cleanLastNewline(oldLine);
686
+ newLine = cleanLastNewline(newLine);
687
+ const lineDiff = lineDiffType === "char" ? diffChars(oldLine, newLine) : diffWordsWithSpace(oldLine, newLine);
688
+ const deletionSpans = [];
689
+ const additionSpans = [];
690
+ const enableJoin = lineDiffType === "word-alt";
691
+ for (const item of lineDiff) {
692
+ const isLastItem = item === lineDiff[lineDiff.length - 1];
693
+ if (!item.added && !item.removed) {
694
+ pushOrJoinSpan({
695
+ item,
696
+ arr: deletionSpans,
697
+ enableJoin,
698
+ isNeutral: true,
699
+ isLastItem
700
+ });
701
+ pushOrJoinSpan({
702
+ item,
703
+ arr: additionSpans,
704
+ enableJoin,
705
+ isNeutral: true,
706
+ isLastItem
707
+ });
708
+ } else if (item.removed) pushOrJoinSpan({
709
+ item,
710
+ arr: deletionSpans,
711
+ enableJoin,
712
+ isLastItem
713
+ });
714
+ else pushOrJoinSpan({
715
+ item,
716
+ arr: additionSpans,
717
+ enableJoin,
718
+ isLastItem
719
+ });
720
+ }
721
+ let spanIndex = 0;
722
+ for (const span of deletionSpans) {
723
+ if (span[0] === 1) oldDecorations.push(createDiffSpanDecoration({
724
+ line: oldLineIndex - 1,
725
+ spanStart: spanIndex,
726
+ spanLength: span[1].length
727
+ }));
728
+ spanIndex += span[1].length;
729
+ }
730
+ spanIndex = 0;
731
+ for (const span of additionSpans) {
732
+ if (span[0] === 1) newDecorations.push(createDiffSpanDecoration({
733
+ line: newLineIndex - 1,
734
+ spanStart: spanIndex,
735
+ spanLength: span[1].length
736
+ }));
737
+ spanIndex += span[1].length;
738
+ }
739
+ }
740
+ function processLines({ hunks, oldLines, newLines, lineIndex = 0, lineDiffType }) {
741
+ const oldInfo = {};
742
+ const newInfo = {};
743
+ const oldDecorations = [];
744
+ const newDecorations = [];
745
+ let newLineIndex = 1;
746
+ let oldLineIndex = 1;
747
+ let newLineNumber = 1;
748
+ let oldLineNumber = 1;
749
+ let oldContent = "";
750
+ let newContent = "";
751
+ for (const hunk of hunks) {
752
+ while (oldLines != null && newLines != null && newLineIndex < hunk.additionStart && oldLineIndex < hunk.deletionStart) {
753
+ oldInfo[oldLineIndex] = {
754
+ type: "context-expanded",
755
+ lineNumber: oldLineNumber,
756
+ lineIndex
757
+ };
758
+ newInfo[newLineIndex] = {
759
+ type: "context-expanded",
760
+ lineNumber: newLineNumber,
761
+ lineIndex
762
+ };
763
+ oldContent += oldLines[oldLineIndex - 1];
764
+ newContent += newLines[newLineIndex - 1];
765
+ oldLineIndex++;
766
+ newLineIndex++;
767
+ oldLineNumber++;
768
+ newLineNumber++;
769
+ lineIndex++;
770
+ }
771
+ oldLineNumber = hunk.deletionStart;
772
+ newLineNumber = hunk.additionStart;
773
+ for (const hunkContent of hunk.hunkContent) if (hunkContent.type === "context") for (const line of hunkContent.lines) {
774
+ oldInfo[oldLineIndex] = {
775
+ type: "context",
776
+ lineNumber: oldLineNumber,
777
+ lineIndex
778
+ };
779
+ newInfo[newLineIndex] = {
780
+ type: "context",
781
+ lineNumber: newLineNumber,
782
+ lineIndex
783
+ };
784
+ oldContent += line;
785
+ newContent += line;
786
+ oldLineIndex++;
787
+ newLineIndex++;
788
+ newLineNumber++;
789
+ oldLineNumber++;
790
+ lineIndex++;
791
+ }
792
+ else {
793
+ const len = Math.max(hunkContent.additions.length, hunkContent.deletions.length);
794
+ let i = 0;
795
+ while (i < len) {
796
+ const oldLine = hunkContent.deletions[i];
797
+ const newLine = hunkContent.additions[i];
798
+ computeLineDiffDecorations({
799
+ newLine,
800
+ oldLine,
801
+ oldLineIndex,
802
+ newLineIndex,
803
+ oldDecorations,
804
+ newDecorations,
805
+ lineDiffType
806
+ });
807
+ if (oldLine != null) {
808
+ oldInfo[oldLineIndex] = {
809
+ type: "change-deletion",
810
+ lineNumber: oldLineNumber,
811
+ lineIndex
812
+ };
813
+ oldContent += oldLine;
814
+ oldLineIndex++;
815
+ oldLineNumber++;
816
+ }
817
+ if (newLine != null) {
818
+ newInfo[newLineIndex] = {
819
+ type: "change-addition",
820
+ lineNumber: newLineNumber,
821
+ lineIndex
822
+ };
823
+ newContent += newLine;
824
+ newLineIndex++;
825
+ newLineNumber++;
826
+ }
827
+ lineIndex++;
828
+ i++;
829
+ }
830
+ }
831
+ if (oldLines == null || newLines == null || hunk !== hunks[hunks.length - 1]) continue;
832
+ while (oldLineIndex <= oldLines.length || newLineIndex <= oldLines.length) {
833
+ const oldLine = oldLines[oldLineIndex - 1];
834
+ const newLine = newLines[newLineIndex - 1];
835
+ if (oldLine == null && newLine == null) break;
836
+ if (oldLine != null) {
837
+ oldInfo[oldLineIndex] = {
838
+ type: "context-expanded",
839
+ lineNumber: oldLineNumber,
840
+ lineIndex
841
+ };
842
+ oldContent += oldLine;
843
+ oldLineIndex++;
844
+ oldLineNumber++;
845
+ }
846
+ if (newLine != null) {
847
+ newInfo[newLineIndex] = {
848
+ type: "context-expanded",
849
+ lineNumber: newLineNumber,
850
+ lineIndex
851
+ };
852
+ newContent += newLine;
853
+ newLineIndex++;
854
+ newLineNumber++;
855
+ }
856
+ lineIndex++;
857
+ }
858
+ }
859
+ return {
860
+ oldContent: cleanLastNewline(oldContent),
861
+ newContent: cleanLastNewline(newContent),
862
+ oldInfo,
863
+ newInfo,
864
+ oldDecorations,
865
+ newDecorations,
866
+ lineIndex
867
+ };
868
+ }
869
+ function renderTwoFiles({ oldFile, newFile, oldInfo, newInfo, highlighter: highlighter$1, oldDecorations, newDecorations, languageOverride, options: { theme: themeOrThemes = DEFAULT_THEMES,...options } }) {
870
+ const oldLang = languageOverride ?? getFiletypeFromFileName(oldFile.name);
871
+ const newLang = languageOverride ?? getFiletypeFromFileName(newFile.name);
872
+ const { state, transformers } = createTransformerWithState();
873
+ const hastConfig = (() => {
874
+ return typeof themeOrThemes === "string" ? {
875
+ ...options,
876
+ lang: "text",
877
+ theme: themeOrThemes,
878
+ transformers,
879
+ decorations: void 0,
880
+ defaultColor: false,
881
+ cssVariablePrefix: formatCSSVariablePrefix()
882
+ } : {
883
+ ...options,
884
+ lang: "text",
885
+ themes: themeOrThemes,
886
+ transformers,
887
+ decorations: void 0,
888
+ defaultColor: false,
889
+ cssVariablePrefix: formatCSSVariablePrefix()
890
+ };
891
+ })();
892
+ return {
893
+ oldLines: (() => {
894
+ if (oldFile.contents === "") return [];
895
+ hastConfig.lang = oldLang;
896
+ state.lineInfo = oldInfo;
897
+ hastConfig.decorations = oldDecorations;
898
+ return getLineNodes(highlighter$1.codeToHast(oldFile.contents, hastConfig));
899
+ })(),
900
+ newLines: (() => {
901
+ if (newFile.contents === "") return [];
902
+ hastConfig.lang = newLang;
903
+ hastConfig.decorations = newDecorations;
904
+ state.lineInfo = newInfo;
905
+ return getLineNodes(highlighter$1.codeToHast(newFile.contents, hastConfig));
906
+ })()
907
+ };
908
+ }
909
+
910
+ //#endregion
911
+ //#region src/utils/renderFileWithHighlighter.ts
912
+ function renderFileWithHighlighter(file, highlighter$1, { theme = DEFAULT_THEMES, tokenizeMaxLineLength }, forcePlainText = false) {
913
+ const { state, transformers } = createTransformerWithState();
914
+ const lang = forcePlainText ? "text" : file.lang ?? getFiletypeFromFileName(file.name);
915
+ const baseThemeType = (() => {
916
+ if (typeof theme === "string") return highlighter$1.getTheme(theme).type;
917
+ })();
918
+ const themeStyles = getHighlighterThemeStyles({
919
+ theme,
920
+ highlighter: highlighter$1
921
+ });
922
+ state.lineInfo = (shikiLineNumber) => ({
923
+ type: "context",
924
+ lineIndex: shikiLineNumber - 1,
925
+ lineNumber: shikiLineNumber
926
+ });
927
+ const hastConfig = (() => {
928
+ if (typeof theme === "string") return {
929
+ lang,
930
+ theme,
931
+ transformers,
932
+ defaultColor: false,
933
+ cssVariablePrefix: formatCSSVariablePrefix(),
934
+ tokenizeMaxLineLength
935
+ };
936
+ return {
937
+ lang,
938
+ themes: theme,
939
+ transformers,
940
+ defaultColor: false,
941
+ cssVariablePrefix: formatCSSVariablePrefix(),
942
+ tokenizeMaxLineLength
943
+ };
944
+ })();
945
+ return {
946
+ code: getLineNodes(highlighter$1.codeToHast(cleanLastNewline(file.contents), hastConfig)),
947
+ themeStyles,
948
+ baseThemeType
949
+ };
950
+ }
951
+
952
+ //#endregion
953
+ //#region src/worker/worker.ts
954
+ let highlighter;
955
+ let renderOptions = {
956
+ theme: DEFAULT_THEMES,
957
+ tokenizeMaxLineLength: 1e3,
958
+ lineDiffType: "word-alt"
959
+ };
960
+ self.addEventListener("error", (event) => {
961
+ console.error("[Shiki Worker] Unhandled error:", event.error);
962
+ });
963
+ self.addEventListener("message", (event) => {
964
+ const request = event.data;
965
+ try {
966
+ switch (request.type) {
967
+ case "initialize":
968
+ handleInitialize(request);
969
+ break;
970
+ case "set-render-options":
971
+ handleSetRenderOptions(request);
972
+ break;
973
+ case "file":
974
+ handleRenderFile(request);
975
+ break;
976
+ case "diff":
977
+ handleRenderDiff(request);
978
+ break;
979
+ default: throw new Error(`Unknown request type: ${request.type}`);
980
+ }
981
+ } catch (error) {
982
+ console.error("Worker error:", error);
983
+ sendError(request.id, error);
984
+ }
985
+ });
986
+ function handleInitialize({ id, renderOptions: options, resolvedThemes, resolvedLanguages }) {
987
+ const highlighter$1 = getHighlighter();
988
+ attachResolvedThemes(resolvedThemes, highlighter$1);
989
+ if (resolvedLanguages != null) attachResolvedLanguages(resolvedLanguages, highlighter$1);
990
+ renderOptions = options;
991
+ postMessage({
992
+ type: "success",
993
+ id,
994
+ requestType: "initialize",
995
+ sentAt: Date.now()
996
+ });
997
+ }
998
+ function handleSetRenderOptions({ id, renderOptions: options, resolvedThemes }) {
999
+ attachResolvedThemes(resolvedThemes, getHighlighter());
1000
+ renderOptions = options;
1001
+ postMessage({
1002
+ type: "success",
1003
+ id,
1004
+ requestType: "set-render-options",
1005
+ sentAt: Date.now()
1006
+ });
1007
+ }
1008
+ function handleRenderFile({ id, file, resolvedLanguages }) {
1009
+ const highlighter$1 = getHighlighter();
1010
+ if (resolvedLanguages != null) attachResolvedLanguages(resolvedLanguages, highlighter$1);
1011
+ const fileOptions = {
1012
+ theme: renderOptions.theme,
1013
+ tokenizeMaxLineLength: renderOptions.tokenizeMaxLineLength
1014
+ };
1015
+ sendFileSuccess(id, renderFileWithHighlighter(file, highlighter$1, fileOptions), fileOptions);
1016
+ }
1017
+ function handleRenderDiff({ id, diff, resolvedLanguages }) {
1018
+ const highlighter$1 = getHighlighter();
1019
+ if (resolvedLanguages != null) attachResolvedLanguages(resolvedLanguages, highlighter$1);
1020
+ sendDiffSuccess(id, renderDiffWithHighlighter(diff, highlighter$1, renderOptions), renderOptions);
1021
+ }
1022
+ function getHighlighter() {
1023
+ highlighter ??= createHighlighterCoreSync({
1024
+ themes: [],
1025
+ langs: [],
1026
+ engine: createJavaScriptRegexEngine()
1027
+ });
1028
+ return highlighter;
1029
+ }
1030
+ function sendFileSuccess(id, result, options) {
1031
+ postMessage({
1032
+ type: "success",
1033
+ requestType: "file",
1034
+ id,
1035
+ result,
1036
+ options,
1037
+ sentAt: Date.now()
1038
+ });
1039
+ }
1040
+ function sendDiffSuccess(id, result, options) {
1041
+ postMessage({
1042
+ type: "success",
1043
+ requestType: "diff",
1044
+ id,
1045
+ result,
1046
+ options,
1047
+ sentAt: Date.now()
1048
+ });
1049
+ }
1050
+ function sendError(id, error) {
1051
+ const response = {
1052
+ type: "error",
1053
+ id,
1054
+ error: error instanceof Error ? error.message : String(error),
1055
+ stack: error instanceof Error ? error.stack : void 0
1056
+ };
1057
+ postMessage(response);
1058
+ }
1059
+
1060
+ //#endregion
1061
+ //# sourceMappingURL=worker.js.map