@openclaw/diffs 2026.5.27-beta.1 → 2026.5.28-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.
- package/README.md +1 -0
- package/dist/assets/viewer-runtime.js +50 -50
- package/dist/index.js +419 -81
- package/node_modules/@pierre/diffs/dist/components/CodeView.d.ts +22 -7
- package/node_modules/@pierre/diffs/dist/components/CodeView.d.ts.map +1 -1
- package/node_modules/@pierre/diffs/dist/components/CodeView.js +202 -105
- package/node_modules/@pierre/diffs/dist/components/CodeView.js.map +1 -1
- package/node_modules/@pierre/diffs/dist/components/File.d.ts +2 -0
- package/node_modules/@pierre/diffs/dist/components/File.d.ts.map +1 -1
- package/node_modules/@pierre/diffs/dist/components/File.js +13 -9
- package/node_modules/@pierre/diffs/dist/components/File.js.map +1 -1
- package/node_modules/@pierre/diffs/dist/components/FileDiff.d.ts +2 -0
- package/node_modules/@pierre/diffs/dist/components/FileDiff.d.ts.map +1 -1
- package/node_modules/@pierre/diffs/dist/components/FileDiff.js +12 -6
- package/node_modules/@pierre/diffs/dist/components/FileDiff.js.map +1 -1
- package/node_modules/@pierre/diffs/dist/components/VirtualizedFile.d.ts +4 -2
- package/node_modules/@pierre/diffs/dist/components/VirtualizedFile.d.ts.map +1 -1
- package/node_modules/@pierre/diffs/dist/components/VirtualizedFile.js +23 -6
- package/node_modules/@pierre/diffs/dist/components/VirtualizedFile.js.map +1 -1
- package/node_modules/@pierre/diffs/dist/components/VirtualizedFileDiff.d.ts +9 -8
- package/node_modules/@pierre/diffs/dist/components/VirtualizedFileDiff.d.ts.map +1 -1
- package/node_modules/@pierre/diffs/dist/components/VirtualizedFileDiff.js +329 -142
- package/node_modules/@pierre/diffs/dist/components/VirtualizedFileDiff.js.map +1 -1
- package/node_modules/@pierre/diffs/dist/constants.d.ts.map +1 -1
- package/node_modules/@pierre/diffs/dist/index.d.ts +2 -2
- package/node_modules/@pierre/diffs/dist/index.js +3 -3
- package/node_modules/@pierre/diffs/dist/react/index.d.ts +2 -2
- package/node_modules/@pierre/diffs/dist/renderers/DiffHunksRenderer.d.ts +1 -0
- package/node_modules/@pierre/diffs/dist/renderers/DiffHunksRenderer.d.ts.map +1 -1
- package/node_modules/@pierre/diffs/dist/renderers/DiffHunksRenderer.js +12 -5
- package/node_modules/@pierre/diffs/dist/renderers/DiffHunksRenderer.js.map +1 -1
- package/node_modules/@pierre/diffs/dist/renderers/FileRenderer.d.ts +1 -0
- package/node_modules/@pierre/diffs/dist/renderers/FileRenderer.d.ts.map +1 -1
- package/node_modules/@pierre/diffs/dist/renderers/FileRenderer.js +4 -1
- package/node_modules/@pierre/diffs/dist/renderers/FileRenderer.js.map +1 -1
- package/node_modules/@pierre/diffs/dist/ssr/index.d.ts +2 -2
- package/node_modules/@pierre/diffs/dist/types.d.ts +7 -1
- package/node_modules/@pierre/diffs/dist/types.d.ts.map +1 -1
- package/node_modules/@pierre/diffs/dist/utils/computeEstimatedDiffHeights.d.ts +28 -0
- package/node_modules/@pierre/diffs/dist/utils/computeEstimatedDiffHeights.d.ts.map +1 -0
- package/node_modules/@pierre/diffs/dist/utils/computeEstimatedDiffHeights.js +111 -0
- package/node_modules/@pierre/diffs/dist/utils/computeEstimatedDiffHeights.js.map +1 -0
- package/node_modules/@pierre/diffs/dist/utils/getDiffHunksRendererOptions.d.ts +8 -0
- package/node_modules/@pierre/diffs/dist/utils/getDiffHunksRendererOptions.d.ts.map +1 -0
- package/node_modules/@pierre/diffs/dist/utils/getDiffHunksRendererOptions.js +31 -0
- package/node_modules/@pierre/diffs/dist/utils/getDiffHunksRendererOptions.js.map +1 -0
- package/node_modules/@pierre/diffs/dist/utils/getFileRendererOptions.d.ts +8 -0
- package/node_modules/@pierre/diffs/dist/utils/getFileRendererOptions.d.ts.map +1 -0
- package/node_modules/@pierre/diffs/dist/utils/getFileRendererOptions.js +24 -0
- package/node_modules/@pierre/diffs/dist/utils/getFileRendererOptions.js.map +1 -0
- package/node_modules/@pierre/diffs/dist/utils/iterateOverDiff.js +29 -30
- package/node_modules/@pierre/diffs/dist/utils/iterateOverDiff.js.map +1 -1
- package/node_modules/@pierre/diffs/dist/utils/parsePatchFiles.js +8 -1
- package/node_modules/@pierre/diffs/dist/utils/parsePatchFiles.js.map +1 -1
- package/node_modules/@pierre/diffs/dist/utils/virtualDiffLayout.d.ts +65 -0
- package/node_modules/@pierre/diffs/dist/utils/virtualDiffLayout.d.ts.map +1 -0
- package/node_modules/@pierre/diffs/dist/utils/virtualDiffLayout.js +94 -0
- package/node_modules/@pierre/diffs/dist/utils/virtualDiffLayout.js.map +1 -0
- package/node_modules/@pierre/diffs/dist/worker/WorkerPoolManager.d.ts +4 -1
- package/node_modules/@pierre/diffs/dist/worker/WorkerPoolManager.d.ts.map +1 -1
- package/node_modules/@pierre/diffs/dist/worker/WorkerPoolManager.js +49 -24
- package/node_modules/@pierre/diffs/dist/worker/WorkerPoolManager.js.map +1 -1
- package/node_modules/@pierre/diffs/dist/worker/types.d.ts +2 -0
- package/node_modules/@pierre/diffs/dist/worker/types.d.ts.map +1 -1
- package/node_modules/@pierre/diffs/dist/worker/worker-portable.js +163 -40
- package/node_modules/@pierre/diffs/dist/worker/worker-portable.js.map +1 -1
- package/node_modules/@pierre/diffs/dist/worker/worker.js +60 -30
- package/node_modules/@pierre/diffs/dist/worker/worker.js.map +1 -1
- package/node_modules/@pierre/diffs/package.json +1 -1
- package/node_modules/@shikijs/core/node_modules/@shikijs/types/LICENSE +22 -0
- package/node_modules/@shikijs/core/node_modules/@shikijs/types/README.md +7 -0
- package/node_modules/@shikijs/core/node_modules/@shikijs/types/dist/index.d.mts +885 -0
- package/node_modules/@shikijs/core/node_modules/@shikijs/types/dist/index.mjs +8 -0
- package/node_modules/@shikijs/core/node_modules/@shikijs/types/package.json +36 -0
- package/node_modules/@shikijs/engine-javascript/node_modules/@shikijs/types/LICENSE +22 -0
- package/node_modules/@shikijs/engine-javascript/node_modules/@shikijs/types/README.md +7 -0
- package/node_modules/@shikijs/engine-javascript/node_modules/@shikijs/types/dist/index.d.mts +885 -0
- package/node_modules/@shikijs/engine-javascript/node_modules/@shikijs/types/dist/index.mjs +8 -0
- package/node_modules/@shikijs/engine-javascript/node_modules/@shikijs/types/package.json +36 -0
- package/node_modules/@shikijs/engine-oniguruma/node_modules/@shikijs/types/LICENSE +22 -0
- package/node_modules/@shikijs/engine-oniguruma/node_modules/@shikijs/types/README.md +7 -0
- package/node_modules/@shikijs/engine-oniguruma/node_modules/@shikijs/types/dist/index.d.mts +885 -0
- package/node_modules/@shikijs/engine-oniguruma/node_modules/@shikijs/types/dist/index.mjs +8 -0
- package/node_modules/@shikijs/engine-oniguruma/node_modules/@shikijs/types/package.json +36 -0
- package/node_modules/@shikijs/langs/dist/apex.mjs +1 -1
- package/node_modules/@shikijs/langs/dist/bird2.mjs +1 -1
- package/node_modules/@shikijs/langs/dist/c3.mjs +1 -1
- package/node_modules/@shikijs/langs/dist/cobol.mjs +1 -1
- package/node_modules/@shikijs/langs/dist/csharp.mjs +1 -1
- package/node_modules/@shikijs/langs/dist/css.mjs +1 -1
- package/node_modules/@shikijs/langs/dist/dart.mjs +1 -1
- package/node_modules/@shikijs/langs/dist/emacs-lisp.mjs +1 -1
- package/node_modules/@shikijs/langs/dist/es-tag-sql.mjs +1 -1
- package/node_modules/@shikijs/langs/dist/go.mjs +1 -1
- package/node_modules/@shikijs/langs/dist/hack.mjs +1 -1
- package/node_modules/@shikijs/langs/dist/julia.mjs +1 -1
- package/node_modules/@shikijs/langs/dist/just.mjs +1 -1
- package/node_modules/@shikijs/langs/dist/kusto.mjs +1 -1
- package/node_modules/@shikijs/langs/dist/latex.mjs +1 -1
- package/node_modules/@shikijs/langs/dist/luau.mjs +1 -1
- package/node_modules/@shikijs/langs/dist/nextflow-groovy.mjs +1 -1
- package/node_modules/@shikijs/langs/dist/php.mjs +1 -1
- package/node_modules/@shikijs/langs/dist/ruby.mjs +1 -1
- package/node_modules/@shikijs/langs/dist/sql.mjs +1 -1
- package/node_modules/@shikijs/langs/dist/typespec.mjs +1 -1
- package/node_modules/@shikijs/langs/package.json +6 -3
- package/node_modules/@shikijs/themes/node_modules/@shikijs/types/LICENSE +22 -0
- package/node_modules/@shikijs/themes/node_modules/@shikijs/types/README.md +7 -0
- package/node_modules/@shikijs/themes/node_modules/@shikijs/types/dist/index.d.mts +885 -0
- package/node_modules/@shikijs/themes/node_modules/@shikijs/types/dist/index.mjs +8 -0
- package/node_modules/@shikijs/themes/node_modules/@shikijs/types/package.json +36 -0
- package/node_modules/@shikijs/transformers/node_modules/@shikijs/types/LICENSE +22 -0
- package/node_modules/@shikijs/transformers/node_modules/@shikijs/types/README.md +7 -0
- package/node_modules/@shikijs/transformers/node_modules/@shikijs/types/dist/index.d.mts +885 -0
- package/node_modules/@shikijs/transformers/node_modules/@shikijs/types/dist/index.mjs +8 -0
- package/node_modules/@shikijs/transformers/node_modules/@shikijs/types/package.json +36 -0
- package/node_modules/@shikijs/types/dist/index.d.mts +686 -684
- package/node_modules/@shikijs/types/dist/index.mjs +8 -7
- package/node_modules/@shikijs/types/package.json +6 -3
- package/node_modules/diff/CONTRIBUTING.md +1 -1
- package/node_modules/diff/dist/diff.js +32 -73
- package/node_modules/diff/dist/diff.min.js +1 -1
- package/node_modules/diff/libcjs/diff/word.d.ts.map +1 -1
- package/node_modules/diff/libcjs/diff/word.js +31 -15
- package/node_modules/diff/libcjs/util/string.d.ts +2 -14
- package/node_modules/diff/libcjs/util/string.d.ts.map +1 -1
- package/node_modules/diff/libcjs/util/string.js +2 -61
- package/node_modules/diff/libesm/diff/word.d.ts.map +1 -1
- package/node_modules/diff/libesm/diff/word.js +31 -16
- package/node_modules/diff/libesm/util/string.d.ts +2 -14
- package/node_modules/diff/libesm/util/string.d.ts.map +1 -1
- package/node_modules/diff/libesm/util/string.js +2 -58
- package/node_modules/diff/package.json +24 -22
- package/node_modules/diff/release-notes.md +0 -28
- package/node_modules/shiki/node_modules/@shikijs/langs/LICENSE +22 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/README.md +7 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/1c-query.d.mts +3 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/1c-query.mjs +2 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/1c.d.mts +3 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/1c.mjs +2 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/abap.d.mts +3 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/abap.mjs +5 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/actionscript-3.d.mts +3 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/actionscript-3.mjs +5 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/ada.d.mts +3 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/ada.mjs +5 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/adoc.d.mts +3 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/adoc.mjs +2 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/angular-expression.d.mts +3 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/angular-expression.mjs +5 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/angular-html.d.mts +3 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/angular-html.mjs +16 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/angular-inline-style.d.mts +3 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/angular-inline-style.mjs +8 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/angular-inline-template.d.mts +3 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/angular-inline-template.mjs +10 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/angular-let-declaration.d.mts +3 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/angular-let-declaration.mjs +8 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/angular-template-blocks.d.mts +3 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/angular-template-blocks.mjs +10 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/angular-template.d.mts +3 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/angular-template.mjs +8 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/angular-ts.d.mts +3 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/angular-ts.mjs +18 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/apache.d.mts +3 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/apache.mjs +5 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/apex.d.mts +3 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/apex.mjs +5 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/apl.d.mts +3 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/apl.mjs +16 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/applescript.d.mts +3 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/applescript.mjs +5 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/ara.d.mts +3 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/ara.mjs +5 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/asciidoc.d.mts +3 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/asciidoc.mjs +5 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/asm.d.mts +3 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/asm.mjs +5 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/astro.d.mts +3 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/astro.mjs +18 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/awk.d.mts +3 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/awk.mjs +5 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/ballerina.d.mts +3 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/ballerina.mjs +5 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/bash.d.mts +3 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/bash.mjs +2 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/bat.d.mts +3 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/bat.mjs +5 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/batch.d.mts +3 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/batch.mjs +2 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/be.d.mts +3 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/be.mjs +2 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/beancount.d.mts +3 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/beancount.mjs +5 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/berry.d.mts +3 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/berry.mjs +5 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/bibtex.d.mts +3 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/bibtex.mjs +5 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/bicep.d.mts +3 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/bicep.mjs +5 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/bird.d.mts +3 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/bird.mjs +2 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/bird2.d.mts +3 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/bird2.mjs +5 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/blade.d.mts +3 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/blade.mjs +20 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/bsl.d.mts +3 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/bsl.mjs +8 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/c.d.mts +3 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/c.mjs +5 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/c3.d.mts +3 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/c3.mjs +5 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/cadence.d.mts +3 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/cadence.mjs +5 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/cairo.d.mts +3 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/cairo.mjs +8 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/cdc.d.mts +3 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/cdc.mjs +2 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/cjs.d.mts +3 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/cjs.mjs +2 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/clarity.d.mts +3 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/clarity.mjs +5 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/clj.d.mts +3 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/clj.mjs +2 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/clojure.d.mts +3 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/clojure.mjs +5 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/closure-templates.d.mts +3 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/closure-templates.mjs +2 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/cmake.d.mts +3 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/cmake.mjs +5 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/cmd.d.mts +3 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/cmd.mjs +2 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/cobol.d.mts +3 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/cobol.mjs +10 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/codeowners.d.mts +3 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/codeowners.mjs +5 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/codeql.d.mts +3 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/codeql.mjs +5 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/coffee.d.mts +3 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/coffee.mjs +8 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/coffeescript.d.mts +3 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/coffeescript.mjs +2 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/common-lisp.d.mts +3 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/common-lisp.mjs +5 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/console.d.mts +3 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/console.mjs +2 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/coq.d.mts +3 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/coq.mjs +5 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/cpp-macro.d.mts +3 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/cpp-macro.mjs +12 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/cpp.d.mts +3 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/cpp.mjs +14 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/cql.d.mts +3 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/cql.mjs +2 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/crystal.d.mts +3 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/crystal.mjs +18 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/cs.d.mts +3 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/cs.mjs +2 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/csharp.d.mts +3 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/csharp.mjs +5 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/css.d.mts +3 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/css.mjs +5 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/csv.d.mts +3 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/csv.mjs +5 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/cts.d.mts +3 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/cts.mjs +2 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/cue.d.mts +3 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/cue.mjs +5 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/cypher.d.mts +3 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/cypher.mjs +5 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/d.d.mts +3 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/d.mjs +5 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/dart.d.mts +3 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/dart.mjs +5 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/dax.d.mts +3 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/dax.mjs +5 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/desktop.d.mts +3 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/desktop.mjs +5 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/diff.d.mts +3 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/diff.mjs +5 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/docker.d.mts +3 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/docker.mjs +5 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/dockerfile.d.mts +3 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/dockerfile.mjs +2 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/dotenv.d.mts +3 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/dotenv.mjs +5 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/dream-maker.d.mts +3 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/dream-maker.mjs +5 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/edge.d.mts +3 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/edge.mjs +12 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/elisp.d.mts +3 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/elisp.mjs +2 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/elixir.d.mts +3 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/elixir.mjs +8 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/elm.d.mts +3 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/elm.mjs +8 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/emacs-lisp.d.mts +3 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/emacs-lisp.mjs +5 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/erb.d.mts +3 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/erb.mjs +10 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/erl.d.mts +3 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/erl.mjs +2 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/erlang.d.mts +3 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/erlang.mjs +8 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/es-tag-css.d.mts +3 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/es-tag-css.mjs +12 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/es-tag-glsl.d.mts +3 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/es-tag-glsl.mjs +12 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/es-tag-html.d.mts +3 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/es-tag-html.mjs +12 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/es-tag-sql.d.mts +3 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/es-tag-sql.mjs +10 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/es-tag-xml.d.mts +3 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/es-tag-xml.mjs +8 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/f.d.mts +3 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/f.mjs +2 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/f03.d.mts +3 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/f03.mjs +2 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/f08.d.mts +3 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/f08.mjs +2 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/f18.d.mts +3 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/f18.mjs +2 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/f77.d.mts +3 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/f77.mjs +2 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/f90.d.mts +3 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/f90.mjs +2 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/f95.d.mts +3 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/f95.mjs +2 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/fennel.d.mts +3 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/fennel.mjs +5 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/fish.d.mts +3 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/fish.mjs +5 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/fluent.d.mts +3 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/fluent.mjs +5 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/for.d.mts +3 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/for.mjs +2 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/fortran-fixed-form.d.mts +3 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/fortran-fixed-form.mjs +8 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/fortran-free-form.d.mts +3 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/fortran-free-form.mjs +5 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/fs.d.mts +3 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/fs.mjs +2 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/fsharp.d.mts +3 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/fsharp.mjs +8 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/fsl.d.mts +3 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/fsl.mjs +2 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/ftl.d.mts +3 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/ftl.mjs +2 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/gd.d.mts +3 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/gd.mjs +2 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/gdresource.d.mts +3 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/gdresource.mjs +10 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/gdscript.d.mts +3 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/gdscript.mjs +5 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/gdshader.d.mts +3 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/gdshader.mjs +5 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/genie.d.mts +3 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/genie.mjs +5 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/gherkin.d.mts +3 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/gherkin.mjs +5 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/git-commit.d.mts +3 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/git-commit.mjs +8 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/git-rebase.d.mts +3 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/git-rebase.mjs +8 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/gjs.d.mts +3 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/gjs.mjs +2 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/gleam.d.mts +3 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/gleam.mjs +5 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/glimmer-js.d.mts +3 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/glimmer-js.mjs +14 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/glimmer-ts.d.mts +3 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/glimmer-ts.mjs +14 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/glsl.d.mts +3 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/glsl.mjs +8 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/gn.d.mts +3 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/gn.mjs +5 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/gnuplot.d.mts +3 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/gnuplot.mjs +5 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/go.d.mts +3 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/go.mjs +5 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/gql.d.mts +3 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/gql.mjs +2 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/graphql.d.mts +3 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/graphql.mjs +14 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/groovy.d.mts +3 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/groovy.mjs +5 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/gts.d.mts +3 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/gts.mjs +2 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/hack.d.mts +3 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/hack.mjs +10 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/haml.d.mts +3 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/haml.mjs +10 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/handlebars.d.mts +3 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/handlebars.mjs +14 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/haskell.d.mts +3 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/haskell.mjs +5 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/haxe.d.mts +3 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/haxe.mjs +5 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/hbs.d.mts +3 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/hbs.mjs +2 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/hcl.d.mts +3 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/hcl.mjs +5 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/hjson.d.mts +3 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/hjson.mjs +5 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/hlsl.d.mts +3 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/hlsl.mjs +5 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/hs.d.mts +3 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/hs.mjs +2 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/html-derivative.d.mts +3 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/html-derivative.mjs +8 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/html.d.mts +3 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/html.mjs +10 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/http.d.mts +3 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/http.mjs +14 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/hurl.d.mts +3 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/hurl.mjs +12 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/hxml.d.mts +3 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/hxml.mjs +8 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/hy.d.mts +3 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/hy.mjs +5 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/imba.d.mts +3 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/imba.mjs +5 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/index.d.mts +3 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/index.mjs +353 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/ini.d.mts +3 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/ini.mjs +5 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/jade.d.mts +3 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/jade.mjs +2 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/java.d.mts +3 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/java.mjs +5 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/javascript.d.mts +3 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/javascript.mjs +5 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/jinja-html.d.mts +3 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/jinja-html.mjs +8 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/jinja.d.mts +3 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/jinja.mjs +8 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/jison.d.mts +3 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/jison.mjs +8 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/jl.d.mts +3 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/jl.mjs +2 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/js.d.mts +3 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/js.mjs +2 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/json.d.mts +3 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/json.mjs +5 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/json5.d.mts +3 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/json5.mjs +5 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/jsonc.d.mts +3 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/jsonc.mjs +5 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/jsonl.d.mts +3 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/jsonl.mjs +5 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/jsonnet.d.mts +3 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/jsonnet.mjs +5 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/jssm.d.mts +3 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/jssm.mjs +5 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/jsx.d.mts +3 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/jsx.mjs +5 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/julia.d.mts +3 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/julia.mjs +16 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/just.d.mts +3 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/just.mjs +18 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/kdl.d.mts +3 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/kdl.mjs +5 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/kotlin.d.mts +3 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/kotlin.mjs +5 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/kql.d.mts +3 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/kql.mjs +2 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/kt.d.mts +3 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/kt.mjs +2 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/kts.d.mts +3 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/kts.mjs +2 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/kusto.d.mts +3 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/kusto.mjs +5 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/latex.d.mts +3 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/latex.mjs +8 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/lean.d.mts +3 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/lean.mjs +5 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/lean4.d.mts +3 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/lean4.mjs +2 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/less.d.mts +3 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/less.mjs +5 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/liquid.d.mts +3 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/liquid.mjs +14 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/lisp.d.mts +3 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/lisp.mjs +2 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/lit.d.mts +3 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/lit.mjs +2 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/llvm.d.mts +3 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/llvm.mjs +5 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/log.d.mts +3 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/log.mjs +5 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/logo.d.mts +3 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/logo.mjs +5 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/lua.d.mts +3 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/lua.mjs +8 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/luau.d.mts +3 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/luau.mjs +5 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/make.d.mts +3 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/make.mjs +5 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/makefile.d.mts +3 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/makefile.mjs +2 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/markdown-nix.d.mts +3 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/markdown-nix.mjs +5 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/markdown-vue.d.mts +3 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/markdown-vue.mjs +5 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/markdown.d.mts +3 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/markdown.mjs +5 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/marko.d.mts +3 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/marko.mjs +14 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/matlab.d.mts +3 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/matlab.mjs +5 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/mbt.d.mts +3 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/mbt.mjs +2 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/mbti.d.mts +3 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/mbti.mjs +2 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/md.d.mts +3 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/md.mjs +2 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/mdc.d.mts +3 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/mdc.mjs +12 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/mdx.d.mts +3 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/mdx.mjs +5 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/mediawiki.d.mts +3 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/mediawiki.mjs +2 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/mermaid.d.mts +3 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/mermaid.mjs +5 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/mips.d.mts +3 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/mips.mjs +2 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/mipsasm.d.mts +3 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/mipsasm.mjs +5 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/mjs.d.mts +3 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/mjs.mjs +2 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/mmd.d.mts +3 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/mmd.mjs +2 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/mojo.d.mts +3 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/mojo.mjs +5 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/moonbit.d.mts +3 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/moonbit.mjs +5 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/move.d.mts +3 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/move.mjs +5 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/mts.d.mts +3 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/mts.mjs +2 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/nar.d.mts +3 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/nar.mjs +2 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/narrat.d.mts +3 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/narrat.mjs +5 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/nextflow-groovy.d.mts +3 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/nextflow-groovy.mjs +5 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/nextflow.d.mts +3 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/nextflow.mjs +8 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/nf.d.mts +3 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/nf.mjs +2 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/nginx.d.mts +3 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/nginx.mjs +8 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/nim.d.mts +3 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/nim.mjs +20 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/nix.d.mts +3 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/nix.mjs +8 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/nu.d.mts +3 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/nu.mjs +2 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/nushell.d.mts +3 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/nushell.mjs +5 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/objc.d.mts +3 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/objc.mjs +2 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/objective-c.d.mts +3 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/objective-c.mjs +5 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/objective-cpp.d.mts +3 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/objective-cpp.mjs +5 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/ocaml.d.mts +3 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/ocaml.mjs +5 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/odin.d.mts +3 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/odin.mjs +5 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/openscad.d.mts +3 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/openscad.mjs +5 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/pascal.d.mts +3 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/pascal.mjs +5 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/perl.d.mts +3 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/perl.mjs +16 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/perl6.d.mts +3 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/perl6.mjs +2 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/php.d.mts +3 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/php.mjs +18 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/pkl.d.mts +3 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/pkl.mjs +5 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/plsql.d.mts +3 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/plsql.mjs +5 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/po.d.mts +3 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/po.mjs +5 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/polar.d.mts +3 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/polar.mjs +5 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/postcss.d.mts +3 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/postcss.mjs +5 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/pot.d.mts +3 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/pot.mjs +2 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/potx.d.mts +3 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/potx.mjs +2 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/powerquery.d.mts +3 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/powerquery.mjs +5 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/powershell.d.mts +3 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/powershell.mjs +5 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/prisma.d.mts +3 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/prisma.mjs +5 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/prolog.d.mts +3 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/prolog.mjs +5 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/properties.d.mts +3 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/properties.mjs +2 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/proto.d.mts +3 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/proto.mjs +5 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/protobuf.d.mts +3 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/protobuf.mjs +2 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/ps.d.mts +3 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/ps.mjs +2 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/ps1.d.mts +3 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/ps1.mjs +2 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/pug.d.mts +3 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/pug.mjs +12 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/puppet.d.mts +3 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/puppet.mjs +5 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/purescript.d.mts +3 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/purescript.mjs +5 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/py.d.mts +3 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/py.mjs +2 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/python.d.mts +3 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/python.mjs +5 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/ql.d.mts +3 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/ql.mjs +2 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/qml.d.mts +3 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/qml.mjs +8 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/qmldir.d.mts +3 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/qmldir.mjs +5 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/qss.d.mts +3 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/qss.mjs +5 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/r.d.mts +3 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/r.mjs +5 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/racket.d.mts +3 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/racket.mjs +5 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/raku.d.mts +3 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/raku.mjs +5 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/razor.d.mts +3 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/razor.mjs +10 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/rb.d.mts +3 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/rb.mjs +2 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/reg.d.mts +3 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/reg.mjs +5 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/regex.d.mts +3 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/regex.mjs +2 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/regexp.d.mts +3 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/regexp.mjs +5 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/rel.d.mts +3 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/rel.mjs +5 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/riscv.d.mts +3 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/riscv.mjs +5 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/ron.d.mts +3 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/ron.mjs +5 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/rosmsg.d.mts +3 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/rosmsg.mjs +5 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/rs.d.mts +3 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/rs.mjs +2 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/rst.d.mts +3 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/rst.mjs +22 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/ruby.d.mts +3 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/ruby.mjs +30 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/rust.d.mts +3 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/rust.mjs +5 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/sas.d.mts +3 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/sas.mjs +8 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/sass.d.mts +3 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/sass.mjs +5 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/scad.d.mts +3 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/scad.mjs +2 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/scala.d.mts +3 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/scala.mjs +5 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/scheme.d.mts +3 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/scheme.mjs +5 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/scss.d.mts +3 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/scss.mjs +8 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/sdbl.d.mts +3 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/sdbl.mjs +5 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/sh.d.mts +3 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/sh.mjs +2 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/shader.d.mts +3 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/shader.mjs +2 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/shaderlab.d.mts +3 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/shaderlab.mjs +8 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/shell.d.mts +3 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/shell.mjs +2 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/shellscript.d.mts +3 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/shellscript.mjs +5 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/shellsession.d.mts +3 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/shellsession.mjs +8 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/smalltalk.d.mts +3 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/smalltalk.mjs +5 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/solidity.d.mts +3 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/solidity.mjs +5 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/soy.d.mts +3 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/soy.mjs +8 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/sparql.d.mts +3 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/sparql.mjs +8 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/spl.d.mts +3 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/spl.mjs +2 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/splunk.d.mts +3 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/splunk.mjs +5 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/sql.d.mts +3 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/sql.mjs +5 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/ssh-config.d.mts +3 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/ssh-config.mjs +5 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/stata.d.mts +3 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/stata.mjs +8 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/styl.d.mts +3 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/styl.mjs +2 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/stylus.d.mts +3 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/stylus.mjs +5 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/surql.d.mts +3 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/surql.mjs +2 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/surrealql.d.mts +3 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/surrealql.mjs +8 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/svelte.d.mts +3 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/svelte.mjs +14 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/swift.d.mts +3 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/swift.mjs +5 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/system-verilog.d.mts +3 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/system-verilog.mjs +5 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/systemd.d.mts +3 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/systemd.mjs +5 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/talon.d.mts +3 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/talon.mjs +2 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/talonscript.d.mts +3 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/talonscript.mjs +5 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/tasl.d.mts +3 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/tasl.mjs +5 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/tcl.d.mts +3 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/tcl.mjs +5 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/templ.d.mts +3 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/templ.mjs +12 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/terraform.d.mts +3 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/terraform.mjs +5 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/tex.d.mts +3 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/tex.mjs +8 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/tf.d.mts +3 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/tf.mjs +2 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/tfvars.d.mts +3 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/tfvars.mjs +2 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/toml.d.mts +3 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/toml.mjs +5 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/tres.d.mts +3 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/tres.mjs +2 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/ts-tags.d.mts +3 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/ts-tags.mjs +18 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/ts.d.mts +3 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/ts.mjs +2 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/tscn.d.mts +3 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/tscn.mjs +2 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/tsp.d.mts +3 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/tsp.mjs +2 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/tsv.d.mts +3 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/tsv.mjs +5 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/tsx.d.mts +3 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/tsx.mjs +5 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/turtle.d.mts +3 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/turtle.mjs +5 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/twig.d.mts +3 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/twig.mjs +18 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/typ.d.mts +3 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/typ.mjs +2 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/typescript.d.mts +3 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/typescript.mjs +5 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/typespec.d.mts +3 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/typespec.mjs +5 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/typst.d.mts +3 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/typst.mjs +5 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/v.d.mts +3 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/v.mjs +5 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/vala.d.mts +3 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/vala.mjs +5 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/vb.d.mts +3 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/vb.mjs +5 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/verilog.d.mts +3 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/verilog.mjs +5 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/vhdl.d.mts +3 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/vhdl.mjs +5 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/vim.d.mts +3 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/vim.mjs +2 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/viml.d.mts +3 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/viml.mjs +5 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/vimscript.d.mts +3 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/vimscript.mjs +2 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/vue-directives.d.mts +3 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/vue-directives.mjs +5 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/vue-html.d.mts +3 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/vue-html.mjs +8 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/vue-interpolations.d.mts +3 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/vue-interpolations.mjs +5 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/vue-sfc-style-variable-injection.d.mts +3 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/vue-sfc-style-variable-injection.mjs +8 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/vue-vine.d.mts +3 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/vue-vine.mjs +18 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/vue.d.mts +3 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/vue.mjs +26 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/vy.d.mts +3 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/vy.mjs +2 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/vyper.d.mts +3 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/vyper.mjs +5 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/wasm.d.mts +3 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/wasm.mjs +5 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/wenyan.d.mts +3 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/wenyan.mjs +5 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/wgsl.d.mts +3 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/wgsl.mjs +5 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/wiki.d.mts +3 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/wiki.mjs +2 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/wikitext.d.mts +3 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/wikitext.mjs +5 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/wit.d.mts +3 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/wit.mjs +5 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/wl.d.mts +3 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/wl.mjs +2 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/wolfram.d.mts +3 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/wolfram.mjs +5 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/xml.d.mts +3 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/xml.mjs +8 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/xsl.d.mts +3 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/xsl.mjs +8 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/yaml.d.mts +3 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/yaml.mjs +5 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/yml.d.mts +3 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/yml.mjs +2 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/zenscript.d.mts +3 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/zenscript.mjs +5 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/zig.d.mts +3 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/zig.mjs +5 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/zsh.d.mts +3 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/dist/zsh.mjs +2 -0
- package/node_modules/shiki/node_modules/@shikijs/langs/package.json +384 -0
- package/node_modules/shiki/node_modules/@shikijs/types/LICENSE +22 -0
- package/node_modules/shiki/node_modules/@shikijs/types/README.md +7 -0
- package/node_modules/shiki/node_modules/@shikijs/types/dist/index.d.mts +885 -0
- package/node_modules/shiki/node_modules/@shikijs/types/dist/index.mjs +8 -0
- package/node_modules/shiki/node_modules/@shikijs/types/package.json +36 -0
- package/npm-shrinkwrap.json +90 -14
- package/package.json +10 -8
|
@@ -8,7 +8,7 @@ interface GetCachesResult {
|
|
|
8
8
|
diffCache: LRUMapPkg.LRUMap<string, RenderDiffResult>;
|
|
9
9
|
}
|
|
10
10
|
interface ThemeSubscriber {
|
|
11
|
-
|
|
11
|
+
onThemeChange(): void;
|
|
12
12
|
}
|
|
13
13
|
type RenderTaskInstance = FileRendererInstance | DiffRendererInstance;
|
|
14
14
|
declare class WorkerPoolManager {
|
|
@@ -16,6 +16,7 @@ declare class WorkerPoolManager {
|
|
|
16
16
|
private highlighter;
|
|
17
17
|
private readonly preferredHighlighter;
|
|
18
18
|
private renderOptions;
|
|
19
|
+
private renderOptionsRequestVersion;
|
|
19
20
|
private renderOptionsVersion;
|
|
20
21
|
private initialized;
|
|
21
22
|
private workers;
|
|
@@ -101,6 +102,7 @@ declare class WorkerPoolManager {
|
|
|
101
102
|
private detachInstanceFromRenderTask;
|
|
102
103
|
private removeQueuedTask;
|
|
103
104
|
private removeActiveTask;
|
|
105
|
+
private invalidateRenderTasks;
|
|
104
106
|
private clearQueuedInstanceRequests;
|
|
105
107
|
private clearHighlightKey;
|
|
106
108
|
private trackInstanceRequests;
|
|
@@ -111,6 +113,7 @@ declare class WorkerPoolManager {
|
|
|
111
113
|
private hasMatchingFileInstanceTask;
|
|
112
114
|
private hasMatchingDiffInstanceTask;
|
|
113
115
|
private getTaskByHighlightKey;
|
|
116
|
+
private isCurrentRenderTask;
|
|
114
117
|
private iterateRenderTasks;
|
|
115
118
|
private generateRequestId;
|
|
116
119
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WorkerPoolManager.d.ts","names":["LRUMapPkg","FileContents","FileDiffMetadata","HunkExpansionRegion","RenderDiffOptions","RenderDiffResult","RenderFileOptions","RenderFileResult","SupportedLanguages","ThemedDiffResult","ThemedFileResult","DiffRendererInstance","FileRendererInstance","WorkerInitializationRenderOptions","WorkerPoolOptions","WorkerRenderingOptions","WorkerStats","GetCachesResult","LRUMap","ThemeSubscriber","RenderTaskInstance","WorkerPoolManager","langs","theme","useTokenTransformer","lineDiffType","maxLineDiffLength","tokenizeMaxLineLength","preferredHighlighter","Partial","Promise","Map"],"sources":["../../src/worker/WorkerPoolManager.d.ts"],"sourcesContent":["import LRUMapPkg from 'lru_map';\nimport type { FileContents, FileDiffMetadata, HunkExpansionRegion, RenderDiffOptions, RenderDiffResult, RenderFileOptions, RenderFileResult, SupportedLanguages, ThemedDiffResult, ThemedFileResult } from '../types';\nimport type { DiffRendererInstance, FileRendererInstance, WorkerInitializationRenderOptions, WorkerPoolOptions, WorkerRenderingOptions, WorkerStats } from './types';\ninterface GetCachesResult {\n fileCache: LRUMapPkg.LRUMap<string, RenderFileResult>;\n diffCache: LRUMapPkg.LRUMap<string, RenderDiffResult>;\n}\ninterface ThemeSubscriber {\n
|
|
1
|
+
{"version":3,"file":"WorkerPoolManager.d.ts","names":["LRUMapPkg","FileContents","FileDiffMetadata","HunkExpansionRegion","RenderDiffOptions","RenderDiffResult","RenderFileOptions","RenderFileResult","SupportedLanguages","ThemedDiffResult","ThemedFileResult","DiffRendererInstance","FileRendererInstance","WorkerInitializationRenderOptions","WorkerPoolOptions","WorkerRenderingOptions","WorkerStats","GetCachesResult","LRUMap","ThemeSubscriber","RenderTaskInstance","WorkerPoolManager","langs","theme","useTokenTransformer","lineDiffType","maxLineDiffLength","tokenizeMaxLineLength","preferredHighlighter","Partial","Promise","Map"],"sources":["../../src/worker/WorkerPoolManager.d.ts"],"sourcesContent":["import LRUMapPkg from 'lru_map';\nimport type { FileContents, FileDiffMetadata, HunkExpansionRegion, RenderDiffOptions, RenderDiffResult, RenderFileOptions, RenderFileResult, SupportedLanguages, ThemedDiffResult, ThemedFileResult } from '../types';\nimport type { DiffRendererInstance, FileRendererInstance, WorkerInitializationRenderOptions, WorkerPoolOptions, WorkerRenderingOptions, WorkerStats } from './types';\ninterface GetCachesResult {\n fileCache: LRUMapPkg.LRUMap<string, RenderFileResult>;\n diffCache: LRUMapPkg.LRUMap<string, RenderDiffResult>;\n}\ninterface ThemeSubscriber {\n onThemeChange(): void;\n}\ntype RenderTaskInstance = FileRendererInstance | DiffRendererInstance;\nexport declare class WorkerPoolManager {\n private options;\n private highlighter;\n private readonly preferredHighlighter;\n private renderOptions;\n private renderOptionsRequestVersion;\n private renderOptionsVersion;\n private initialized;\n private workers;\n private queuedTasks;\n private queuedTaskByInstance;\n private taskByHighlightKey;\n private activeTaskById;\n private activeRequestByInstance;\n private nextRequestId;\n private themeSubscribers;\n private workersFailed;\n private statSubscribers;\n private fileCache;\n private diffCache;\n private _queuedBroadcast;\n private lifecycleGeneration;\n constructor(options: WorkerPoolOptions, { langs, theme, useTokenTransformer, lineDiffType, maxLineDiffLength, tokenizeMaxLineLength, preferredHighlighter }: WorkerInitializationRenderOptions);\n isWorkingPool(): boolean;\n getFileResultCache(file: FileContents): RenderFileResult | undefined;\n getDiffResultCache(diff: FileDiffMetadata): RenderDiffResult | undefined;\n inspectCaches(): GetCachesResult;\n evictFileFromCache(cacheKey: string): boolean;\n evictDiffFromCache(cacheKey: string): boolean;\n setRenderOptions({ theme, useTokenTransformer, lineDiffType, maxLineDiffLength, tokenizeMaxLineLength }: Partial<WorkerRenderingOptions>): Promise<void>;\n getFileRenderOptions(): RenderFileOptions;\n getDiffRenderOptions(): RenderDiffOptions;\n private setRenderOptionsOnWorkers;\n subscribeToThemeChanges(instance: ThemeSubscriber): () => void;\n unsubscribeToThemeChanges(instance: ThemeSubscriber): void;\n subscribeToStatChanges(callback: (stats: WorkerStats) => unknown): () => void;\n private queueBroadcastStateChanges;\n private _broadcastStateChanges;\n cleanUpTasks(instance: RenderTaskInstance): void;\n isInitialized(): boolean;\n initialize(languages?: SupportedLanguages[]): Promise<void>;\n private initializeWorkers;\n private drainQueue;\n highlightFileAST(instance: FileRendererInstance, file: FileContents): void;\n primeFileHighlightCache(file: FileContents): void;\n getPlainFileAST(file: FileContents, startingLine: number, totalLines: number, lines?: string[]): ThemedFileResult | undefined;\n highlightDiffAST(instance: DiffRendererInstance, diff: FileDiffMetadata): void;\n primeDiffHighlightCache(diff: FileDiffMetadata): void;\n getPlainDiffAST(diff: FileDiffMetadata, startingLine: number, totalLines: number, expandedHunks?: Map<number, HunkExpansionRegion> | true, collapsedContextThreshold?: number): ThemedDiffResult | undefined;\n terminate(): void;\n private isCurrentLifecycle;\n private queueInitialization;\n private cancelActiveWorkerTasks;\n private terminateWorkers;\n getStats(): WorkerStats;\n private submitTask;\n private submitCacheTask;\n private enqueueRenderTask;\n private resolveLanguagesAndExecuteTask;\n private handleWorkerMessage;\n private _queuedDrain;\n private queueDrain;\n private assignWorkerToTask;\n private cleanWorkerAndTask;\n private executeTask;\n private maybeAttachCustomExtensions;\n private syncCustomExtensionVersion;\n private getAvailableWorker;\n private getFileHighlightKey;\n private getDiffHighlightKey;\n private getHighlightKeyForRequest;\n private hasActiveRequest;\n private addInstanceToTask;\n private detachInstanceFromQueuedTasks;\n private detachInstanceFromRenderTask;\n private removeQueuedTask;\n private removeActiveTask;\n private invalidateRenderTasks;\n private clearQueuedInstanceRequests;\n private clearHighlightKey;\n private trackInstanceRequests;\n private clearInstanceRequests;\n private notifyFileInstances;\n private notifyDiffInstances;\n private notifyHighlightError;\n private hasMatchingFileInstanceTask;\n private hasMatchingDiffInstanceTask;\n private getTaskByHighlightKey;\n private isCurrentRenderTask;\n private iterateRenderTasks;\n private generateRequestId;\n}\nexport {};\n//# sourceMappingURL=WorkerPoolManager.d.ts.map"],"mappings":"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"}
|
|
@@ -9,8 +9,8 @@ import { areFilesEqual } from "../utils/areFilesEqual.js";
|
|
|
9
9
|
import { getCustomExtensionsMap, getCustomExtensionsVersion, getFiletypeFromFileName } from "../utils/getFiletypeFromFileName.js";
|
|
10
10
|
import { isFilePlainText } from "../utils/isFilePlainText.js";
|
|
11
11
|
import { renderFileWithHighlighter } from "../utils/renderFileWithHighlighter.js";
|
|
12
|
-
import { areDiffRenderOptionsEqual } from "../utils/areDiffRenderOptionsEqual.js";
|
|
13
12
|
import { areDiffTargetsEqual } from "../utils/areDiffTargetsEqual.js";
|
|
13
|
+
import { areDiffRenderOptionsEqual } from "../utils/areDiffRenderOptionsEqual.js";
|
|
14
14
|
import { isDiffPlainText } from "../utils/isDiffPlainText.js";
|
|
15
15
|
import { renderDiffWithHighlighter } from "../utils/renderDiffWithHighlighter.js";
|
|
16
16
|
import { getResolvedLanguages } from "../highlighter/languages/getResolvedLanguages.js";
|
|
@@ -31,6 +31,7 @@ var WorkerPoolManager = class {
|
|
|
31
31
|
highlighter;
|
|
32
32
|
preferredHighlighter;
|
|
33
33
|
renderOptions;
|
|
34
|
+
renderOptionsRequestVersion = 0;
|
|
34
35
|
renderOptionsVersion = 0;
|
|
35
36
|
initialized = false;
|
|
36
37
|
workers = [];
|
|
@@ -93,6 +94,8 @@ var WorkerPoolManager = class {
|
|
|
93
94
|
}
|
|
94
95
|
async setRenderOptions({ theme = DEFAULT_THEMES, useTokenTransformer = false, lineDiffType = "word-alt", maxLineDiffLength = 1e3, tokenizeMaxLineLength = 1e3 }) {
|
|
95
96
|
const { lifecycleGeneration } = this;
|
|
97
|
+
const renderOptionsRequestVersion = ++this.renderOptionsRequestVersion;
|
|
98
|
+
const isCurrentRequest = () => this.isCurrentLifecycle(lifecycleGeneration) && this.renderOptionsRequestVersion === renderOptionsRequestVersion;
|
|
96
99
|
try {
|
|
97
100
|
const newRenderOptions = {
|
|
98
101
|
theme,
|
|
@@ -102,32 +105,32 @@ var WorkerPoolManager = class {
|
|
|
102
105
|
tokenizeMaxLineLength
|
|
103
106
|
};
|
|
104
107
|
if (!this.isInitialized()) await this.initialize();
|
|
105
|
-
if (!
|
|
108
|
+
if (!isCurrentRequest() || areDiffRenderOptionsEqual(newRenderOptions, this.renderOptions)) return;
|
|
106
109
|
const themeNames = getThemes(theme);
|
|
107
110
|
let resolvedThemes = [];
|
|
108
111
|
if (!areThemesEqual(newRenderOptions.theme, this.renderOptions.theme)) if (hasResolvedThemes(themeNames)) resolvedThemes = getResolvedThemes(themeNames);
|
|
109
112
|
else resolvedThemes = await resolveThemes(themeNames);
|
|
110
|
-
if (!
|
|
111
|
-
if (this.highlighter != null)
|
|
112
|
-
|
|
113
|
-
await
|
|
114
|
-
} else {
|
|
115
|
-
const [highlighter] = await Promise.all([getSharedHighlighter({
|
|
113
|
+
if (!isCurrentRequest()) return;
|
|
114
|
+
if (this.highlighter != null) attachResolvedThemes(resolvedThemes, this.highlighter);
|
|
115
|
+
else {
|
|
116
|
+
const highlighter = await getSharedHighlighter({
|
|
116
117
|
themes: themeNames,
|
|
117
118
|
langs: ["text"],
|
|
118
119
|
preferredHighlighter: this.preferredHighlighter
|
|
119
|
-
})
|
|
120
|
-
if (!
|
|
120
|
+
});
|
|
121
|
+
if (!isCurrentRequest()) return;
|
|
121
122
|
this.highlighter = highlighter;
|
|
122
123
|
}
|
|
123
|
-
|
|
124
|
+
const workerSetup = this.setRenderOptionsOnWorkers(newRenderOptions, resolvedThemes);
|
|
124
125
|
this.renderOptions = newRenderOptions;
|
|
125
126
|
this.renderOptionsVersion++;
|
|
126
127
|
this.diffCache.clear();
|
|
127
128
|
this.fileCache.clear();
|
|
128
|
-
|
|
129
|
+
this.invalidateRenderTasks();
|
|
130
|
+
for (const instance of this.themeSubscribers) instance.onThemeChange();
|
|
131
|
+
await workerSetup;
|
|
129
132
|
} catch (error) {
|
|
130
|
-
if (error instanceof WorkerPoolTerminatedError || !
|
|
133
|
+
if (error instanceof WorkerPoolTerminatedError || !isCurrentRequest()) return;
|
|
131
134
|
throw error;
|
|
132
135
|
}
|
|
133
136
|
}
|
|
@@ -167,6 +170,7 @@ var WorkerPoolManager = class {
|
|
|
167
170
|
requestStart: Date.now()
|
|
168
171
|
};
|
|
169
172
|
this.activeTaskById.set(id, task);
|
|
173
|
+
managedWorker.pendingSetupRequestId = id;
|
|
170
174
|
managedWorker.worker.postMessage(task.request);
|
|
171
175
|
}));
|
|
172
176
|
}
|
|
@@ -283,7 +287,8 @@ var WorkerPoolManager = class {
|
|
|
283
287
|
const worker = this.options.workerFactory();
|
|
284
288
|
const managedWorker = {
|
|
285
289
|
worker,
|
|
286
|
-
|
|
290
|
+
requestId: void 0,
|
|
291
|
+
pendingSetupRequestId: void 0,
|
|
287
292
|
initialized: false,
|
|
288
293
|
langs: new Set(["text", ...resolvedLanguages.map(({ name }) => name)]),
|
|
289
294
|
customExtensionsVersion: 0
|
|
@@ -447,7 +452,7 @@ var WorkerPoolManager = class {
|
|
|
447
452
|
})(),
|
|
448
453
|
totalWorkers: this.workers.length,
|
|
449
454
|
workersFailed: this.workersFailed,
|
|
450
|
-
busyWorkers: this.workers.filter((w) => w.
|
|
455
|
+
busyWorkers: this.workers.filter((w) => w.requestId != null || w.pendingSetupRequestId != null).length,
|
|
451
456
|
queuedTasks: this.queuedTasks.length,
|
|
452
457
|
activeTasks: this.activeTaskById.size,
|
|
453
458
|
themeSubscribers: this.themeSubscribers.size,
|
|
@@ -468,6 +473,7 @@ var WorkerPoolManager = class {
|
|
|
468
473
|
this.detachInstanceFromQueuedTasks(instance);
|
|
469
474
|
const id = this.generateRequestId();
|
|
470
475
|
const requestStart = Date.now();
|
|
476
|
+
const { renderOptionsVersion } = this;
|
|
471
477
|
const task = (() => {
|
|
472
478
|
switch (request.type) {
|
|
473
479
|
case "file": return {
|
|
@@ -480,6 +486,7 @@ var WorkerPoolManager = class {
|
|
|
480
486
|
instances: new Set([instance]),
|
|
481
487
|
primeCache: false,
|
|
482
488
|
highlightKey,
|
|
489
|
+
renderOptionsVersion,
|
|
483
490
|
requestStart
|
|
484
491
|
};
|
|
485
492
|
case "diff": return {
|
|
@@ -492,6 +499,7 @@ var WorkerPoolManager = class {
|
|
|
492
499
|
instances: new Set([instance]),
|
|
493
500
|
primeCache: false,
|
|
494
501
|
highlightKey,
|
|
502
|
+
renderOptionsVersion,
|
|
495
503
|
requestStart
|
|
496
504
|
};
|
|
497
505
|
}
|
|
@@ -502,6 +510,7 @@ var WorkerPoolManager = class {
|
|
|
502
510
|
if (this.initialized === false) this.queueInitialization();
|
|
503
511
|
const id = this.generateRequestId();
|
|
504
512
|
const requestStart = Date.now();
|
|
513
|
+
const { renderOptionsVersion } = this;
|
|
505
514
|
const task = (() => {
|
|
506
515
|
switch (request.type) {
|
|
507
516
|
case "file": return {
|
|
@@ -514,6 +523,7 @@ var WorkerPoolManager = class {
|
|
|
514
523
|
instances: /* @__PURE__ */ new Set(),
|
|
515
524
|
primeCache: true,
|
|
516
525
|
highlightKey,
|
|
526
|
+
renderOptionsVersion,
|
|
517
527
|
requestStart
|
|
518
528
|
};
|
|
519
529
|
case "diff": return {
|
|
@@ -526,6 +536,7 @@ var WorkerPoolManager = class {
|
|
|
526
536
|
instances: /* @__PURE__ */ new Set(),
|
|
527
537
|
primeCache: true,
|
|
528
538
|
highlightKey,
|
|
539
|
+
renderOptionsVersion,
|
|
529
540
|
requestStart
|
|
530
541
|
};
|
|
531
542
|
}
|
|
@@ -544,7 +555,7 @@ var WorkerPoolManager = class {
|
|
|
544
555
|
if (workerMissingLangs.length > 0) if (hasResolvedLanguages(workerMissingLangs)) task.request.resolvedLanguages = getResolvedLanguages(workerMissingLangs);
|
|
545
556
|
else task.request.resolvedLanguages = await resolveLanguages(workerMissingLangs);
|
|
546
557
|
if (!this.activeTaskById.has(task.id)) {
|
|
547
|
-
if (availableWorker.
|
|
558
|
+
if (availableWorker.requestId === task.id) {
|
|
548
559
|
this.cleanWorkerAndTask(availableWorker, task);
|
|
549
560
|
this.queueBroadcastStateChanges();
|
|
550
561
|
if (this.queuedTasks.length > 0) this.queueDrain();
|
|
@@ -582,6 +593,7 @@ var WorkerPoolManager = class {
|
|
|
582
593
|
case "file": {
|
|
583
594
|
if (task.type !== "file") throw new Error("handleWorkerMessage: task/response dont match");
|
|
584
595
|
const { result, options } = response;
|
|
596
|
+
if (!this.isCurrentRenderTask(task) || !areFileRenderOptionsEqual(options, this.getFileRenderOptions())) throw IGNORE_RESPONSE;
|
|
585
597
|
const { request } = task;
|
|
586
598
|
this.syncCustomExtensionVersion(managedWorker, request);
|
|
587
599
|
if (request.file.cacheKey != null) this.fileCache.set(request.file.cacheKey, {
|
|
@@ -594,6 +606,7 @@ var WorkerPoolManager = class {
|
|
|
594
606
|
case "diff": {
|
|
595
607
|
if (task.type !== "diff") throw new Error("handleWorkerMessage: task/response dont match");
|
|
596
608
|
const { result, options } = response;
|
|
609
|
+
if (!this.isCurrentRenderTask(task) || !areDiffRenderOptionsEqual(options, this.getDiffRenderOptions())) throw IGNORE_RESPONSE;
|
|
597
610
|
const { request } = task;
|
|
598
611
|
this.syncCustomExtensionVersion(managedWorker, request);
|
|
599
612
|
if (request.diff.cacheKey != null) this.diffCache.set(request.diff.cacheKey, {
|
|
@@ -607,7 +620,7 @@ var WorkerPoolManager = class {
|
|
|
607
620
|
} catch (error) {
|
|
608
621
|
if (error !== IGNORE_RESPONSE) console.error(error, task, response);
|
|
609
622
|
}
|
|
610
|
-
this.cleanWorkerAndTask(managedWorker, task);
|
|
623
|
+
this.cleanWorkerAndTask(managedWorker, task, response.id);
|
|
611
624
|
this.queueBroadcastStateChanges();
|
|
612
625
|
if (this.queuedTasks.length > 0) this.queueDrain();
|
|
613
626
|
}
|
|
@@ -618,15 +631,16 @@ var WorkerPoolManager = class {
|
|
|
618
631
|
this.queueBroadcastStateChanges();
|
|
619
632
|
}
|
|
620
633
|
assignWorkerToTask(task, managedWorker) {
|
|
621
|
-
managedWorker.
|
|
634
|
+
managedWorker.requestId = task.id;
|
|
622
635
|
if (isRenderTask(task)) {
|
|
623
636
|
this.clearQueuedInstanceRequests(task);
|
|
624
637
|
this.trackInstanceRequests(task);
|
|
625
638
|
}
|
|
626
639
|
this.activeTaskById.set(task.id, task);
|
|
627
640
|
}
|
|
628
|
-
cleanWorkerAndTask(managedWorker, task) {
|
|
629
|
-
managedWorker.
|
|
641
|
+
cleanWorkerAndTask(managedWorker, task, requestId = task?.id) {
|
|
642
|
+
if (managedWorker.requestId === requestId) managedWorker.requestId = void 0;
|
|
643
|
+
if (managedWorker.pendingSetupRequestId === requestId) managedWorker.pendingSetupRequestId = void 0;
|
|
630
644
|
if (task != null) {
|
|
631
645
|
if (isRenderTask(task)) {
|
|
632
646
|
this.clearInstanceRequests(task);
|
|
@@ -664,7 +678,7 @@ var WorkerPoolManager = class {
|
|
|
664
678
|
getAvailableWorker(langs) {
|
|
665
679
|
let worker;
|
|
666
680
|
for (const managedWorker of this.workers) {
|
|
667
|
-
if (managedWorker.
|
|
681
|
+
if (managedWorker.requestId != null || managedWorker.pendingSetupRequestId != null || !managedWorker.initialized) continue;
|
|
668
682
|
worker = managedWorker;
|
|
669
683
|
if (langs.length === 0) break;
|
|
670
684
|
let hasEveryLang = true;
|
|
@@ -722,6 +736,13 @@ var WorkerPoolManager = class {
|
|
|
722
736
|
this.clearHighlightKey(task);
|
|
723
737
|
this.activeTaskById.delete(task.id);
|
|
724
738
|
}
|
|
739
|
+
invalidateRenderTasks() {
|
|
740
|
+
for (let index = this.queuedTasks.length - 1; index >= 0; index--) {
|
|
741
|
+
const task = this.queuedTasks[index];
|
|
742
|
+
if (task.renderOptionsVersion !== this.renderOptionsVersion) this.removeQueuedTask(task);
|
|
743
|
+
}
|
|
744
|
+
for (const task of Array.from(this.activeTaskById.values())) if (isRenderTask(task) && task.renderOptionsVersion !== this.renderOptionsVersion) this.removeActiveTask(task);
|
|
745
|
+
}
|
|
725
746
|
clearQueuedInstanceRequests(task) {
|
|
726
747
|
for (const instance of getInstances(task)) if (this.queuedTaskByInstance.get(instance) === task) this.queuedTaskByInstance.delete(instance);
|
|
727
748
|
}
|
|
@@ -744,15 +765,19 @@ var WorkerPoolManager = class {
|
|
|
744
765
|
for (const instance of getInstances(task)) if (this.activeRequestByInstance.get(instance) === task.id) instance.onHighlightError(error);
|
|
745
766
|
}
|
|
746
767
|
hasMatchingFileInstanceTask(instance, file) {
|
|
747
|
-
for (const task of this.iterateRenderTasks()) if (task.type === "file" && task.instances.has(instance) && areFilesEqual(file, task.request.file)) return true;
|
|
768
|
+
for (const task of this.iterateRenderTasks()) if (task.type === "file" && this.isCurrentRenderTask(task) && task.instances.has(instance) && areFilesEqual(file, task.request.file)) return true;
|
|
748
769
|
return false;
|
|
749
770
|
}
|
|
750
771
|
hasMatchingDiffInstanceTask(instance, diff) {
|
|
751
|
-
for (const task of this.iterateRenderTasks()) if (task.type === "diff" && task.instances.has(instance) && areDiffTargetsEqual(task.request.diff, diff)) return true;
|
|
772
|
+
for (const task of this.iterateRenderTasks()) if (task.type === "diff" && this.isCurrentRenderTask(task) && task.instances.has(instance) && areDiffTargetsEqual(task.request.diff, diff)) return true;
|
|
752
773
|
return false;
|
|
753
774
|
}
|
|
754
775
|
getTaskByHighlightKey(highlightKey) {
|
|
755
|
-
|
|
776
|
+
const task = this.taskByHighlightKey.get(highlightKey);
|
|
777
|
+
return task != null && this.isCurrentRenderTask(task) ? task : void 0;
|
|
778
|
+
}
|
|
779
|
+
isCurrentRenderTask(task) {
|
|
780
|
+
return task.renderOptionsVersion === this.renderOptionsVersion;
|
|
756
781
|
}
|
|
757
782
|
*iterateRenderTasks() {
|
|
758
783
|
for (const task of this.queuedTasks) yield task;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WorkerPoolManager.js","names":["options: WorkerPoolOptions","newRenderOptions: WorkerRenderingOptions","resolvedThemes: ThemeRegistrationResolved[]","taskPromises: Promise<void>[]","task: SetRenderOptionsWorkerTask","resolvedLanguages: ResolvedLanguage[]","initPromises: Promise<unknown>[]","managedWorker: ManagedWorker","task: InitializeWorkerTask","task: RenderTask","worker: ManagedWorker | undefined"],"sources":["../../src/worker/WorkerPoolManager.ts"],"sourcesContent":["import LRUMapPkg from 'lru_map';\n\nimport { DEFAULT_THEMES } from '../constants';\nimport { getResolvedLanguages } from '../highlighter/languages/getResolvedLanguages';\nimport { hasResolvedLanguages } from '../highlighter/languages/hasResolvedLanguages';\nimport { resolveLanguages } from '../highlighter/languages/resolveLanguages';\nimport { getSharedHighlighter } from '../highlighter/shared_highlighter';\nimport { attachResolvedThemes } from '../highlighter/themes/attachResolvedThemes';\nimport { getResolvedThemes } from '../highlighter/themes/getResolvedThemes';\nimport { hasResolvedThemes } from '../highlighter/themes/hasResolvedThemes';\nimport { resolveThemes } from '../highlighter/themes/resolveThemes';\nimport type {\n DiffsHighlighter,\n FileContents,\n FileDiffMetadata,\n HighlighterTypes,\n HunkExpansionRegion,\n RenderDiffOptions,\n RenderDiffResult,\n RenderFileOptions,\n RenderFileResult,\n SupportedLanguages,\n ThemedDiffResult,\n ThemedFileResult,\n ThemeRegistrationResolved,\n} from '../types';\nimport { areDiffRenderOptionsEqual } from '../utils/areDiffRenderOptionsEqual';\nimport { areDiffTargetsEqual } from '../utils/areDiffTargetsEqual';\nimport { areFileRenderOptionsEqual } from '../utils/areFileRenderOptionsEqual';\nimport { areFilesEqual } from '../utils/areFilesEqual';\nimport { areThemesEqual } from '../utils/areThemesEqual';\nimport {\n getCustomExtensionsMap,\n getCustomExtensionsVersion,\n getFiletypeFromFileName,\n} from '../utils/getFiletypeFromFileName';\nimport { getThemes } from '../utils/getThemes';\nimport { isDiffPlainText } from '../utils/isDiffPlainText';\nimport { isFilePlainText } from '../utils/isFilePlainText';\nimport { renderDiffWithHighlighter } from '../utils/renderDiffWithHighlighter';\nimport { renderFileWithHighlighter } from '../utils/renderFileWithHighlighter';\nimport type {\n AllWorkerTasks,\n DiffRendererInstance,\n FileRendererInstance,\n InitializeWorkerRequest,\n InitializeWorkerTask,\n RenderDiffRequest,\n RenderDiffTask,\n RenderFileRequest,\n RenderFileTask,\n ResolvedLanguage,\n SetRenderOptionsWorkerTask,\n SubmitRequest,\n WorkerInitializationRenderOptions,\n WorkerPoolOptions,\n WorkerRenderingOptions,\n WorkerRequestId,\n WorkerResponse,\n WorkerStats,\n} from './types';\n\nconst IGNORE_RESPONSE = Symbol('IGNORE_RESPONSE');\n\nclass WorkerPoolTerminatedError extends Error {\n constructor() {\n super('WorkerPoolManager: operation canceled because the pool terminated');\n }\n}\n\ninterface GetCachesResult {\n fileCache: LRUMapPkg.LRUMap<string, RenderFileResult>;\n diffCache: LRUMapPkg.LRUMap<string, RenderDiffResult>;\n}\n\ninterface ManagedWorker {\n worker: Worker;\n request_id: string | undefined;\n initialized: boolean;\n langs: Set<SupportedLanguages>;\n customExtensionsVersion: number;\n}\n\ninterface ThemeSubscriber {\n rerender(): void;\n}\n\ntype RenderTask = RenderFileTask | RenderDiffTask;\n\ntype RenderTaskInstance = FileRendererInstance | DiffRendererInstance;\n\nexport class WorkerPoolManager {\n private highlighter: DiffsHighlighter | undefined;\n private readonly preferredHighlighter: HighlighterTypes;\n private renderOptions: WorkerRenderingOptions;\n private renderOptionsVersion = 0;\n private initialized: Promise<void> | boolean = false;\n private workers: ManagedWorker[] = [];\n // Tasks that are waiting to get processed by a worker\n private queuedTasks: RenderTask[] = [];\n private queuedTaskByInstance = new Map<RenderTaskInstance, RenderTask>();\n\n // Tasks that map to highlightKey are essentially singular, so we only\n // need one map to include queued and active\n private taskByHighlightKey = new Map<string, RenderTask>();\n\n // Tasks that have already been sent to a worker and are awaiting a response.\n private activeTaskById = new Map<WorkerRequestId, AllWorkerTasks>();\n private activeRequestByInstance = new Map<\n RenderTaskInstance,\n WorkerRequestId\n >();\n\n private nextRequestId = 0;\n private themeSubscribers = new Set<ThemeSubscriber>();\n private workersFailed = false;\n private statSubscribers = new Set<(stats: WorkerStats) => unknown>();\n private fileCache: LRUMapPkg.LRUMap<string, RenderFileResult>;\n private diffCache: LRUMapPkg.LRUMap<string, RenderDiffResult>;\n private _queuedBroadcast: number | undefined;\n // Incremented on terminate so async lifecycle work can identify stale results.\n private lifecycleGeneration = 0;\n\n constructor(\n private options: WorkerPoolOptions,\n {\n langs,\n theme = DEFAULT_THEMES,\n useTokenTransformer = false,\n lineDiffType = 'word-alt',\n maxLineDiffLength = 1000,\n tokenizeMaxLineLength = 1000,\n preferredHighlighter = 'shiki-js',\n }: WorkerInitializationRenderOptions\n ) {\n this.preferredHighlighter = preferredHighlighter;\n this.renderOptions = {\n theme,\n useTokenTransformer,\n lineDiffType,\n maxLineDiffLength,\n tokenizeMaxLineLength,\n };\n this.fileCache = new LRUMapPkg.LRUMap(options.totalASTLRUCacheSize ?? 100);\n this.diffCache = new LRUMapPkg.LRUMap(options.totalASTLRUCacheSize ?? 100);\n this.queueInitialization(langs);\n }\n\n public isWorkingPool(): boolean {\n return !this.workersFailed;\n }\n\n public getFileResultCache(file: FileContents): RenderFileResult | undefined {\n return file.cacheKey != null\n ? this.fileCache.get(file.cacheKey)\n : undefined;\n }\n\n public getDiffResultCache(\n diff: FileDiffMetadata\n ): RenderDiffResult | undefined {\n return diff.cacheKey != null\n ? this.diffCache.get(diff.cacheKey)\n : undefined;\n }\n\n public inspectCaches(): GetCachesResult {\n const { fileCache, diffCache } = this;\n return { fileCache, diffCache };\n }\n\n public evictFileFromCache(cacheKey: string): boolean {\n try {\n return this.fileCache.delete(cacheKey) !== undefined;\n } finally {\n this.queueBroadcastStateChanges();\n }\n }\n\n public evictDiffFromCache(cacheKey: string): boolean {\n try {\n return this.diffCache.delete(cacheKey) !== undefined;\n } finally {\n this.queueBroadcastStateChanges();\n }\n }\n\n async setRenderOptions({\n theme = DEFAULT_THEMES,\n useTokenTransformer = false,\n lineDiffType = 'word-alt',\n maxLineDiffLength = 1000,\n tokenizeMaxLineLength = 1000,\n }: Partial<WorkerRenderingOptions>): Promise<void> {\n const { lifecycleGeneration } = this;\n try {\n const newRenderOptions: WorkerRenderingOptions = {\n theme,\n useTokenTransformer,\n lineDiffType,\n maxLineDiffLength,\n tokenizeMaxLineLength,\n };\n if (!this.isInitialized()) {\n await this.initialize();\n }\n if (\n !this.isCurrentLifecycle(lifecycleGeneration) ||\n areDiffRenderOptionsEqual(newRenderOptions, this.renderOptions)\n ) {\n return;\n }\n\n const themeNames = getThemes(theme);\n let resolvedThemes: ThemeRegistrationResolved[] = [];\n if (!areThemesEqual(newRenderOptions.theme, this.renderOptions.theme)) {\n if (hasResolvedThemes(themeNames)) {\n resolvedThemes = getResolvedThemes(themeNames);\n } else {\n resolvedThemes = await resolveThemes(themeNames);\n }\n }\n\n if (!this.isCurrentLifecycle(lifecycleGeneration)) {\n return;\n }\n\n if (this.highlighter != null) {\n attachResolvedThemes(resolvedThemes, this.highlighter);\n await this.setRenderOptionsOnWorkers(newRenderOptions, resolvedThemes);\n } else {\n const [highlighter] = await Promise.all([\n getSharedHighlighter({\n themes: themeNames,\n langs: ['text'],\n preferredHighlighter: this.preferredHighlighter,\n }),\n this.setRenderOptionsOnWorkers(newRenderOptions, resolvedThemes),\n ]);\n if (!this.isCurrentLifecycle(lifecycleGeneration)) {\n return;\n }\n this.highlighter = highlighter;\n }\n\n if (!this.isCurrentLifecycle(lifecycleGeneration)) {\n return;\n }\n\n this.renderOptions = newRenderOptions;\n this.renderOptionsVersion++;\n this.diffCache.clear();\n this.fileCache.clear();\n\n for (const instance of this.themeSubscribers) {\n instance.rerender();\n }\n } catch (error) {\n if (\n error instanceof WorkerPoolTerminatedError ||\n !this.isCurrentLifecycle(lifecycleGeneration)\n ) {\n return;\n }\n throw error;\n }\n }\n\n public getFileRenderOptions(): RenderFileOptions {\n const { tokenizeMaxLineLength, theme, useTokenTransformer } =\n this.renderOptions;\n return { theme, useTokenTransformer, tokenizeMaxLineLength };\n }\n\n public getDiffRenderOptions(): RenderDiffOptions {\n return { ...this.renderOptions };\n }\n\n private async setRenderOptionsOnWorkers(\n renderOptions: WorkerRenderingOptions,\n resolvedThemes: ThemeRegistrationResolved[]\n ): Promise<void> {\n if (this.workersFailed) {\n return;\n }\n if (!this.isInitialized()) {\n await this.initialize();\n }\n const taskPromises: Promise<void>[] = [];\n for (const managedWorker of this.workers) {\n if (!managedWorker.initialized) {\n console.log({ managedWorker });\n throw new Error(\n 'setRenderOptionsOnWorkers: Somehow we have an uninitialized worker'\n );\n }\n taskPromises.push(\n new Promise<void>((resolve, reject) => {\n const id = this.generateRequestId();\n const task: SetRenderOptionsWorkerTask = {\n type: 'set-render-options',\n id,\n request: {\n type: 'set-render-options',\n id,\n renderOptions,\n resolvedThemes,\n },\n resolve,\n reject,\n requestStart: Date.now(),\n };\n // NOTE(amadeus): We intentionally ignore the normal active requests\n // infra because these tasks should technically interrupt the normal\n // flow and should be processed by the worker when ready immediately\n this.activeTaskById.set(id, task);\n managedWorker.worker.postMessage(task.request);\n })\n );\n }\n await Promise.all(taskPromises);\n }\n\n public subscribeToThemeChanges(instance: ThemeSubscriber): () => void {\n this.themeSubscribers.add(instance);\n this.queueBroadcastStateChanges();\n return () => {\n this.unsubscribeToThemeChanges(instance);\n this.queueBroadcastStateChanges();\n };\n }\n\n public unsubscribeToThemeChanges(instance: ThemeSubscriber): void {\n this.themeSubscribers.delete(instance);\n this.queueBroadcastStateChanges();\n }\n\n public subscribeToStatChanges(\n callback: (stats: WorkerStats) => unknown\n ): () => void {\n this.statSubscribers.add(callback);\n callback(this.getStats());\n return () => {\n this.statSubscribers.delete(callback);\n };\n }\n\n private queueBroadcastStateChanges() {\n if (this._queuedBroadcast != null) return;\n this._queuedBroadcast = requestAnimationFrame(this._broadcastStateChanges);\n }\n\n private _broadcastStateChanges = () => {\n if (this._queuedBroadcast != null) {\n cancelAnimationFrame(this._queuedBroadcast);\n this._queuedBroadcast = undefined;\n }\n const stats = this.getStats();\n for (const callback of this.statSubscribers) {\n callback(stats);\n }\n };\n\n public cleanUpTasks(instance: RenderTaskInstance): void {\n this.detachInstanceFromQueuedTasks(instance);\n const requestId = this.activeRequestByInstance.get(instance);\n if (requestId != null) {\n const task = this.activeTaskById.get(requestId);\n if (isRenderTask(task)) {\n this.detachInstanceFromRenderTask(task, instance);\n if (!task.primeCache && task.instances.size === 0) {\n this.removeActiveTask(task);\n }\n } else {\n this.activeTaskById.delete(requestId);\n }\n }\n this.activeRequestByInstance.delete(instance);\n this.queueBroadcastStateChanges();\n }\n\n public isInitialized(): boolean {\n return this.initialized === true;\n }\n\n public async initialize(languages: SupportedLanguages[] = []): Promise<void> {\n if (this.initialized === true) {\n return;\n } else if (this.initialized === false) {\n const { lifecycleGeneration } = this;\n this.initialized = new Promise((resolve, reject) => {\n void (async () => {\n try {\n const themes = getThemes(this.renderOptions.theme);\n let resolvedThemes: ThemeRegistrationResolved[] = [];\n if (hasResolvedThemes(themes)) {\n resolvedThemes = getResolvedThemes(themes);\n } else {\n resolvedThemes = await resolveThemes(themes);\n }\n if (!this.isCurrentLifecycle(lifecycleGeneration)) {\n resolve();\n return;\n }\n\n let resolvedLanguages: ResolvedLanguage[] = [];\n if (hasResolvedLanguages(languages)) {\n resolvedLanguages = getResolvedLanguages(languages);\n } else {\n resolvedLanguages = await resolveLanguages(languages);\n }\n if (!this.isCurrentLifecycle(lifecycleGeneration)) {\n resolve();\n return;\n }\n\n const [highlighter] = await Promise.all([\n getSharedHighlighter({\n themes,\n langs: ['text', ...languages],\n preferredHighlighter: this.preferredHighlighter,\n }),\n this.initializeWorkers(resolvedThemes, resolvedLanguages),\n ]);\n\n if (!this.isCurrentLifecycle(lifecycleGeneration)) {\n this.terminateWorkers();\n resolve();\n return;\n }\n this.highlighter = highlighter;\n this.initialized = true;\n this.diffCache.clear();\n this.fileCache.clear();\n this.drainQueue();\n this.queueBroadcastStateChanges();\n resolve();\n } catch (e) {\n if (\n e instanceof WorkerPoolTerminatedError ||\n !this.isCurrentLifecycle(lifecycleGeneration)\n ) {\n resolve();\n return;\n }\n this.initialized = false;\n this.workersFailed = true;\n this.queueBroadcastStateChanges();\n reject(e);\n }\n })();\n });\n this.queueBroadcastStateChanges();\n } else {\n return this.initialized;\n }\n }\n\n private async initializeWorkers(\n resolvedThemes: ThemeRegistrationResolved[],\n resolvedLanguages: ResolvedLanguage[]\n ): Promise<void> {\n this.workersFailed = false;\n const initPromises: Promise<unknown>[] = [];\n const customExtensionVersion = getCustomExtensionsVersion();\n const customExtensionMap =\n customExtensionVersion > 0 ? getCustomExtensionsMap() : undefined;\n if (this.workers.length > 0) {\n this.terminateWorkers();\n }\n for (let i = 0; i < (this.options.poolSize ?? 8); i++) {\n const worker = this.options.workerFactory();\n const managedWorker: ManagedWorker = {\n worker,\n request_id: undefined,\n initialized: false,\n langs: new Set(['text', ...resolvedLanguages.map(({ name }) => name)]),\n customExtensionsVersion: 0,\n };\n worker.addEventListener(\n 'message',\n (event: MessageEvent<WorkerResponse>) => {\n this.handleWorkerMessage(managedWorker, event.data);\n }\n );\n worker.addEventListener('error', (error) =>\n console.error('Worker error:', error, managedWorker)\n );\n this.workers.push(managedWorker);\n initPromises.push(\n new Promise<void>((resolve, reject) => {\n const id = this.generateRequestId();\n const task: InitializeWorkerTask = {\n type: 'initialize',\n id,\n request: {\n type: 'initialize',\n id,\n renderOptions: this.renderOptions,\n preferredHighlighter: this.preferredHighlighter,\n resolvedThemes,\n resolvedLanguages,\n customExtensionsVersion:\n customExtensionMap != null ? customExtensionVersion : undefined,\n customExtensionMap,\n },\n resolve() {\n managedWorker.initialized = true;\n resolve();\n },\n reject,\n requestStart: Date.now(),\n };\n this.activeTaskById.set(id, task);\n this.executeTask(managedWorker, task);\n })\n );\n }\n await Promise.all(initPromises);\n }\n\n private drainQueue = () => {\n this._queuedDrain = undefined;\n // If we are initializing or things got cancelled while initializing, we\n // should not attempt to drain the queue\n if (this.initialized !== true || this.queuedTasks.length === 0) {\n return;\n }\n for (let i = 0; i < this.queuedTasks.length; ) {\n const task = this.queuedTasks[i];\n // If any instance has a request in progress, we should wait for it to\n // finish before starting work that would notify that instance.\n if (this.hasActiveRequest(task)) {\n i++;\n continue;\n }\n const langs = getLangsFromTask(task);\n const availableWorker = this.getAvailableWorker(langs);\n if (availableWorker == null) {\n break;\n }\n this.queuedTasks.splice(i, 1);\n this.assignWorkerToTask(task, availableWorker);\n void this.resolveLanguagesAndExecuteTask(availableWorker, task, langs);\n }\n this.queueBroadcastStateChanges();\n };\n\n public highlightFileAST(\n instance: FileRendererInstance,\n file: FileContents\n ): void {\n const cachedResult = this.getFileResultCache(file);\n // If we've already highlighted the file or it's plain text, we should not\n // attempt to highlight. This should be mostly never hit, but it's just an\n // extra level of safety\n if (\n isFilePlainText(file) ||\n (cachedResult != null &&\n areFileRenderOptionsEqual(\n cachedResult.options,\n this.getFileRenderOptions()\n ))\n ) {\n return;\n }\n if (!this.hasMatchingFileInstanceTask(instance, file)) {\n this.submitTask(instance, { type: 'file', file });\n }\n }\n\n public primeFileHighlightCache(file: FileContents): void {\n if (file.cacheKey == null) {\n console.warn(\n `WorkerPoolManager.primeFileHighlightCache: priming highlight cache requires file.cacheKey; skipping \"${file.name}\".`\n );\n return;\n }\n const cachedResult = this.getFileResultCache(file);\n const highlightKey = this.getFileHighlightKey(file);\n if (\n highlightKey == null ||\n isFilePlainText(file) ||\n (cachedResult != null &&\n areFileRenderOptionsEqual(\n cachedResult.options,\n this.getFileRenderOptions()\n ))\n ) {\n return;\n }\n const existingTask = this.getTaskByHighlightKey(highlightKey);\n if (existingTask != null) {\n existingTask.primeCache = true;\n } else {\n this.submitCacheTask({ type: 'file', file }, highlightKey);\n }\n }\n\n public getPlainFileAST(\n file: FileContents,\n startingLine: number,\n totalLines: number,\n lines?: string[]\n ): ThemedFileResult | undefined {\n if (this.highlighter == null) {\n this.queueInitialization();\n return undefined;\n }\n return renderFileWithHighlighter(\n file,\n this.highlighter,\n this.renderOptions,\n { forcePlainText: true, startingLine, totalLines, lines }\n );\n }\n\n public highlightDiffAST(\n instance: DiffRendererInstance,\n diff: FileDiffMetadata\n ): void {\n const cachedResult = this.getDiffResultCache(diff);\n // If we've already highlighted the diff or it's plain text, we should not\n // attempt to highlight. This should be mostly never hit, but it's just an\n // extra level of safety\n if (\n isDiffPlainText(diff) ||\n (cachedResult != null &&\n areDiffRenderOptionsEqual(\n cachedResult.options,\n this.getDiffRenderOptions()\n ))\n ) {\n return;\n }\n if (!this.hasMatchingDiffInstanceTask(instance, diff)) {\n this.submitTask(instance, { type: 'diff', diff });\n }\n }\n\n public primeDiffHighlightCache(diff: FileDiffMetadata): void {\n if (diff.cacheKey == null) {\n console.warn(\n `WorkerPoolManager.primeDiffHighlightCache: priming highlight cache requires diff.cacheKey; skipping \"${diff.prevName ?? diff.name}\" -> \"${diff.name}\".`\n );\n return;\n }\n const cachedResult = this.getDiffResultCache(diff);\n const highlightKey = this.getDiffHighlightKey(diff);\n if (\n highlightKey == null ||\n isDiffPlainText(diff) ||\n (cachedResult != null &&\n areDiffRenderOptionsEqual(\n cachedResult.options,\n this.getDiffRenderOptions()\n ))\n ) {\n return;\n }\n const existingTask = this.getTaskByHighlightKey(highlightKey);\n if (existingTask != null) {\n existingTask.primeCache = true;\n } else {\n this.submitCacheTask({ type: 'diff', diff }, highlightKey);\n }\n }\n\n public getPlainDiffAST(\n diff: FileDiffMetadata,\n startingLine: number,\n totalLines: number,\n expandedHunks?: Map<number, HunkExpansionRegion> | true,\n collapsedContextThreshold?: number\n ): ThemedDiffResult | undefined {\n return this.highlighter != null\n ? renderDiffWithHighlighter(diff, this.highlighter, this.renderOptions, {\n forcePlainText: true,\n startingLine,\n totalLines,\n expandedHunks,\n collapsedContextThreshold,\n })\n : undefined;\n }\n\n public terminate(): void {\n this.lifecycleGeneration++;\n this.cancelActiveWorkerTasks();\n this.terminateWorkers();\n this.fileCache.clear();\n this.diffCache.clear();\n this.activeRequestByInstance.clear();\n this.queuedTasks.length = 0;\n this.queuedTaskByInstance.clear();\n this.taskByHighlightKey.clear();\n this.activeTaskById.clear();\n this.highlighter = undefined;\n this.initialized = false;\n this.workersFailed = false;\n this.queueBroadcastStateChanges();\n }\n\n private isCurrentLifecycle(lifecycleGeneration: number): boolean {\n return this.lifecycleGeneration === lifecycleGeneration;\n }\n\n private queueInitialization(languages?: SupportedLanguages[]): void {\n void this.initialize(languages).catch((error) => {\n console.error(error);\n });\n }\n\n private cancelActiveWorkerTasks(): void {\n const error = new WorkerPoolTerminatedError();\n for (const task of this.activeTaskById.values()) {\n if ('reject' in task) {\n task.reject(error);\n }\n }\n }\n\n private terminateWorkers() {\n for (const managedWorker of this.workers) {\n managedWorker.worker.terminate();\n }\n this.workers.length = 0;\n }\n\n public getStats(): WorkerStats {\n return {\n managerState: (() => {\n if (this.initialized === false) {\n return 'waiting';\n }\n if (this.initialized !== true) {\n return 'initializing';\n }\n return 'initialized';\n })(),\n totalWorkers: this.workers.length,\n workersFailed: this.workersFailed,\n busyWorkers: this.workers.filter((w) => w.request_id != null).length,\n queuedTasks: this.queuedTasks.length,\n activeTasks: this.activeTaskById.size,\n themeSubscribers: this.themeSubscribers.size,\n fileCacheSize: this.fileCache.size,\n diffCacheSize: this.diffCache.size,\n };\n }\n\n private submitTask(\n instance: FileRendererInstance,\n request: Omit<RenderFileRequest, 'id'>\n ): void;\n private submitTask(\n instance: DiffRendererInstance,\n request: Omit<RenderDiffRequest, 'id'>\n ): void;\n private submitTask(\n instance: FileRendererInstance | DiffRendererInstance,\n request: SubmitRequest\n ): void {\n if (this.initialized === false) {\n this.queueInitialization();\n }\n\n const highlightKey = this.getHighlightKeyForRequest(request);\n const existingTask =\n highlightKey != null\n ? this.getTaskByHighlightKey(highlightKey)\n : undefined;\n if (existingTask != null) {\n this.detachInstanceFromQueuedTasks(instance, existingTask);\n this.addInstanceToTask(existingTask, instance);\n this.queueBroadcastStateChanges();\n return;\n }\n\n this.detachInstanceFromQueuedTasks(instance);\n const id = this.generateRequestId();\n const requestStart = Date.now();\n const task: RenderTask = (() => {\n switch (request.type) {\n case 'file':\n return {\n type: 'file',\n id,\n request: { ...request, id },\n instances: new Set([instance as FileRendererInstance]),\n primeCache: false,\n highlightKey,\n requestStart,\n };\n case 'diff':\n return {\n type: 'diff',\n id,\n request: { ...request, id },\n instances: new Set([instance as DiffRendererInstance]),\n primeCache: false,\n highlightKey,\n requestStart,\n };\n }\n })();\n this.enqueueRenderTask(task, instance);\n }\n\n private submitCacheTask(request: SubmitRequest, highlightKey: string): void {\n if (this.initialized === false) {\n this.queueInitialization();\n }\n const id = this.generateRequestId();\n const requestStart = Date.now();\n const task: RenderTask = (() => {\n switch (request.type) {\n case 'file':\n return {\n type: 'file',\n id,\n request: { ...request, id },\n instances: new Set<FileRendererInstance>(),\n primeCache: true,\n highlightKey,\n requestStart,\n };\n case 'diff':\n return {\n type: 'diff',\n id,\n request: { ...request, id },\n instances: new Set<DiffRendererInstance>(),\n primeCache: true,\n highlightKey,\n requestStart,\n };\n }\n })();\n this.enqueueRenderTask(task);\n }\n\n private enqueueRenderTask(\n task: RenderTask,\n instance?: RenderTaskInstance\n ): void {\n this.queuedTasks.push(task);\n if (instance != null) {\n this.queuedTaskByInstance.set(instance, task);\n }\n if (task.highlightKey != null) {\n this.taskByHighlightKey.set(task.highlightKey, task);\n }\n this.queueDrain();\n }\n\n private async resolveLanguagesAndExecuteTask(\n availableWorker: ManagedWorker,\n task: RenderFileTask | RenderDiffTask,\n langs: SupportedLanguages[]\n ): Promise<void> {\n try {\n // Add resolved languages if required\n const workerMissingLangs = langs.filter(\n (lang) => !availableWorker.langs.has(lang)\n );\n\n if (workerMissingLangs.length > 0) {\n if (hasResolvedLanguages(workerMissingLangs)) {\n task.request.resolvedLanguages =\n getResolvedLanguages(workerMissingLangs);\n } else {\n task.request.resolvedLanguages =\n await resolveLanguages(workerMissingLangs);\n }\n }\n // If the task has been cleaned up after awaiting language resolving,\n // lets fully clean it up\n if (!this.activeTaskById.has(task.id)) {\n if (availableWorker.request_id === task.id) {\n this.cleanWorkerAndTask(availableWorker, task);\n this.queueBroadcastStateChanges();\n if (this.queuedTasks.length > 0) {\n this.queueDrain();\n }\n }\n return;\n }\n this.executeTask(availableWorker, task);\n } catch {\n this.cleanWorkerAndTask(availableWorker, task);\n this.queueBroadcastStateChanges();\n if (this.queuedTasks.length > 0) {\n this.queueDrain();\n }\n }\n }\n\n private handleWorkerMessage(\n managedWorker: ManagedWorker,\n response: WorkerResponse\n ): void {\n const task = this.activeTaskById.get(response.id);\n try {\n if (task == null) {\n // If we can't find a task for this response, it probably means the\n // component has been unmounted, so we should silently ignore it\n throw IGNORE_RESPONSE;\n } else if (response.type === 'error') {\n const error = new Error(response.error);\n if (response.stack) {\n error.stack = response.stack;\n }\n if ('reject' in task) {\n task.reject(error);\n } else if (isRenderTask(task)) {\n this.notifyHighlightError(task, error);\n } else {\n throw new Error('handleWorkerMessage: unknown task type');\n }\n throw error;\n } else {\n switch (response.requestType) {\n case 'initialize':\n if (task.type !== 'initialize') {\n throw new Error('handleWorkerMessage: task/response dont match');\n }\n this.syncCustomExtensionVersion(managedWorker, task.request);\n task.resolve();\n break;\n case 'set-render-options':\n if (task.type !== 'set-render-options') {\n throw new Error('handleWorkerMessage: task/response dont match');\n }\n task.resolve();\n break;\n case 'file': {\n if (task.type !== 'file') {\n throw new Error('handleWorkerMessage: task/response dont match');\n }\n const { result, options } = response;\n const { request } = task;\n this.syncCustomExtensionVersion(managedWorker, request);\n if (request.file.cacheKey != null) {\n this.fileCache.set(request.file.cacheKey, { result, options });\n }\n this.notifyFileInstances(task, result, options);\n break;\n }\n case 'diff': {\n if (task.type !== 'diff') {\n throw new Error('handleWorkerMessage: task/response dont match');\n }\n const { result, options } = response;\n const { request } = task;\n this.syncCustomExtensionVersion(managedWorker, request);\n if (request.diff.cacheKey != null) {\n this.diffCache.set(request.diff.cacheKey, { result, options });\n }\n this.notifyDiffInstances(task, result, options);\n break;\n }\n }\n }\n } catch (error) {\n if (error !== IGNORE_RESPONSE) {\n console.error(error, task, response);\n }\n }\n\n this.cleanWorkerAndTask(managedWorker, task);\n this.queueBroadcastStateChanges();\n if (this.queuedTasks.length > 0) {\n // We queue drain so that potentially multiple workers can free up\n // allowing for better language matches if possible\n this.queueDrain();\n }\n }\n\n private _queuedDrain: Promise<void> | undefined;\n private queueDrain() {\n if (this._queuedDrain != null) return;\n this._queuedDrain = Promise.resolve().then(this.drainQueue);\n this.queueBroadcastStateChanges();\n }\n\n private assignWorkerToTask(\n task: AllWorkerTasks,\n managedWorker: ManagedWorker\n ) {\n managedWorker.request_id = task.id;\n if (isRenderTask(task)) {\n this.clearQueuedInstanceRequests(task);\n this.trackInstanceRequests(task);\n }\n this.activeTaskById.set(task.id, task);\n }\n\n private cleanWorkerAndTask(\n managedWorker: ManagedWorker,\n task?: AllWorkerTasks\n ) {\n managedWorker.request_id = undefined;\n if (task != null) {\n if (isRenderTask(task)) {\n this.clearInstanceRequests(task);\n this.clearHighlightKey(task);\n }\n this.activeTaskById.delete(task.id);\n }\n }\n\n private executeTask(\n managedWorker: ManagedWorker,\n task: AllWorkerTasks\n ): void {\n if (shouldSyncCustomExtensions(task.request)) {\n this.maybeAttachCustomExtensions(managedWorker, task.request);\n }\n if (!this.activeTaskById.has(task.id)) {\n this.assignWorkerToTask(task, managedWorker);\n }\n for (const lang of getLangsFromTask(task)) {\n managedWorker.langs.add(lang);\n }\n try {\n managedWorker.worker.postMessage(task.request);\n } catch (error) {\n console.error('Failed to post message to worker:', error);\n if (isRenderTask(task)) {\n this.notifyHighlightError(task, error);\n } else if ('reject' in task) {\n task.reject(error as Error);\n }\n this.cleanWorkerAndTask(managedWorker, task);\n if (this.queuedTasks.length > 0) {\n this.queueDrain();\n }\n }\n this.queueBroadcastStateChanges();\n }\n\n private maybeAttachCustomExtensions(\n managedWorker: ManagedWorker,\n request: InitializeWorkerRequest | RenderFileRequest | RenderDiffRequest\n ): void {\n if (request.customExtensionsVersion != null) {\n return;\n }\n const version = getCustomExtensionsVersion();\n if (managedWorker.customExtensionsVersion >= version) {\n return;\n }\n request.customExtensionsVersion = version;\n request.customExtensionMap = getCustomExtensionsMap();\n }\n\n private syncCustomExtensionVersion(\n managedWorker: ManagedWorker,\n request: InitializeWorkerRequest | RenderFileRequest | RenderDiffRequest\n ): void {\n if (request.customExtensionsVersion == null) {\n return;\n }\n managedWorker.customExtensionsVersion = request.customExtensionsVersion;\n }\n\n private getAvailableWorker(\n langs: SupportedLanguages[]\n ): ManagedWorker | undefined {\n let worker: ManagedWorker | undefined;\n for (const managedWorker of this.workers) {\n if (managedWorker.request_id != null || !managedWorker.initialized) {\n continue;\n }\n worker = managedWorker;\n if (langs.length === 0) {\n break;\n }\n let hasEveryLang = true;\n for (const lang of langs) {\n if (!managedWorker.langs.has(lang)) {\n hasEveryLang = false;\n break;\n }\n }\n if (hasEveryLang) {\n break;\n }\n }\n return worker;\n }\n\n private getFileHighlightKey(file: FileContents): string | undefined {\n if (file.cacheKey == null) {\n return undefined;\n }\n return `file:${file.cacheKey}:${this.renderOptionsVersion}`;\n }\n\n private getDiffHighlightKey(diff: FileDiffMetadata): string | undefined {\n if (diff.cacheKey == null) {\n return undefined;\n }\n return `diff:${diff.cacheKey}:${this.renderOptionsVersion}`;\n }\n\n private getHighlightKeyForRequest(\n request: SubmitRequest\n ): string | undefined {\n switch (request.type) {\n case 'file':\n return this.getFileHighlightKey(request.file);\n case 'diff':\n return this.getDiffHighlightKey(request.diff);\n }\n }\n\n private hasActiveRequest(task: RenderTask): boolean {\n for (const instance of getInstances(task)) {\n if (this.activeRequestByInstance.has(instance)) {\n return true;\n }\n }\n return false;\n }\n\n private addInstanceToTask(\n task: RenderTask,\n instance: FileRendererInstance | DiffRendererInstance\n ): void {\n if (task.type === 'file') {\n task.instances.add(instance as FileRendererInstance);\n } else {\n task.instances.add(instance as DiffRendererInstance);\n }\n if (this.activeTaskById.has(task.id)) {\n this.activeRequestByInstance.set(instance, task.id);\n } else {\n this.queuedTaskByInstance.set(instance, task);\n }\n }\n\n private detachInstanceFromQueuedTasks(\n instance: RenderTaskInstance,\n exceptTask?: RenderTask\n ): void {\n const task = this.queuedTaskByInstance.get(instance);\n if (task == null || task === exceptTask) {\n return;\n }\n this.queuedTaskByInstance.delete(instance);\n this.detachInstanceFromRenderTask(task, instance);\n if (!task.primeCache && task.instances.size === 0) {\n this.removeQueuedTask(task);\n }\n }\n\n private detachInstanceFromRenderTask(\n task: RenderTask,\n instance: RenderTaskInstance\n ): void {\n if (task.type === 'file') {\n task.instances.delete(instance as FileRendererInstance);\n } else {\n task.instances.delete(instance as DiffRendererInstance);\n }\n }\n\n private removeQueuedTask(task: RenderTask): void {\n const index = this.queuedTasks.indexOf(task);\n if (index !== -1) {\n this.queuedTasks.splice(index, 1);\n }\n this.clearQueuedInstanceRequests(task);\n this.clearHighlightKey(task);\n }\n\n private removeActiveTask(task: RenderTask): void {\n this.clearInstanceRequests(task);\n this.clearHighlightKey(task);\n this.activeTaskById.delete(task.id);\n }\n\n private clearQueuedInstanceRequests(task: RenderTask): void {\n for (const instance of getInstances(task)) {\n if (this.queuedTaskByInstance.get(instance) === task) {\n this.queuedTaskByInstance.delete(instance);\n }\n }\n }\n\n private clearHighlightKey(task: RenderTask): void {\n if (\n task.highlightKey != null &&\n this.taskByHighlightKey.get(task.highlightKey) === task\n ) {\n this.taskByHighlightKey.delete(task.highlightKey);\n }\n }\n\n private trackInstanceRequests(task: RenderTask): void {\n for (const instance of getInstances(task)) {\n this.activeRequestByInstance.set(instance, task.id);\n }\n }\n\n private clearInstanceRequests(task: RenderTask): void {\n for (const instance of getInstances(task)) {\n if (this.activeRequestByInstance.get(instance) === task.id) {\n this.activeRequestByInstance.delete(instance);\n }\n }\n }\n\n private notifyFileInstances(\n task: RenderFileTask,\n result: ThemedFileResult,\n options: RenderFileOptions\n ): void {\n for (const instance of task.instances) {\n if (this.activeRequestByInstance.get(instance) === task.id) {\n instance.onHighlightSuccess(task.request.file, result, options);\n }\n }\n }\n\n private notifyDiffInstances(\n task: RenderDiffTask,\n result: ThemedDiffResult,\n options: RenderDiffOptions\n ): void {\n for (const instance of task.instances) {\n if (this.activeRequestByInstance.get(instance) === task.id) {\n instance.onHighlightSuccess(task.request.diff, result, options);\n }\n }\n }\n\n private notifyHighlightError(task: RenderTask, error: unknown): void {\n for (const instance of getInstances(task)) {\n if (this.activeRequestByInstance.get(instance) === task.id) {\n instance.onHighlightError(error);\n }\n }\n }\n\n private hasMatchingFileInstanceTask(\n instance: FileRendererInstance,\n file: FileContents\n ): boolean {\n for (const task of this.iterateRenderTasks()) {\n if (\n task.type === 'file' &&\n task.instances.has(instance) &&\n areFilesEqual(file, task.request.file)\n ) {\n return true;\n }\n }\n return false;\n }\n\n private hasMatchingDiffInstanceTask(\n instance: DiffRendererInstance,\n diff: FileDiffMetadata\n ): boolean {\n for (const task of this.iterateRenderTasks()) {\n if (\n task.type === 'diff' &&\n task.instances.has(instance) &&\n areDiffTargetsEqual(task.request.diff, diff)\n ) {\n return true;\n }\n }\n return false;\n }\n\n private getTaskByHighlightKey(highlightKey: string): RenderTask | undefined {\n return this.taskByHighlightKey.get(highlightKey);\n }\n\n private *iterateRenderTasks(): Generator<RenderTask> {\n for (const task of this.queuedTasks) {\n yield task;\n }\n for (const task of this.activeTaskById.values()) {\n if (isRenderTask(task)) {\n yield task;\n }\n }\n }\n\n private generateRequestId(): WorkerRequestId {\n return `req_${++this.nextRequestId}`;\n }\n}\n\nfunction shouldSyncCustomExtensions(\n request: AllWorkerTasks['request']\n): request is InitializeWorkerRequest | RenderFileRequest | RenderDiffRequest {\n return (\n request.type === 'initialize' ||\n request.type === 'file' ||\n request.type === 'diff'\n );\n}\n\nfunction getLangsFromTask(task: AllWorkerTasks): SupportedLanguages[] {\n const langs = new Set<SupportedLanguages>();\n if (task.type === 'initialize' || task.type === 'set-render-options') {\n return [];\n }\n switch (task.type) {\n case 'file': {\n langs.add(\n task.request.file.lang ??\n getFiletypeFromFileName(task.request.file.name)\n );\n break;\n }\n case 'diff': {\n langs.add(\n task.request.diff.lang ??\n getFiletypeFromFileName(task.request.diff.name)\n );\n langs.add(\n task.request.diff.lang ??\n getFiletypeFromFileName(task.request.diff.prevName ?? '-')\n );\n break;\n }\n }\n langs.delete('text');\n return Array.from(langs);\n}\n\nfunction isRenderTask(task: AllWorkerTasks | undefined): task is RenderTask {\n return task?.type === 'file' || task?.type === 'diff';\n}\n\nfunction getInstances(\n task: RenderTask\n): Set<FileRendererInstance | DiffRendererInstance> {\n return task.instances as Set<FileRendererInstance | DiffRendererInstance>;\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"WorkerPoolManager.js","names":["options: WorkerPoolOptions","newRenderOptions: WorkerRenderingOptions","resolvedThemes: ThemeRegistrationResolved[]","taskPromises: Promise<void>[]","task: SetRenderOptionsWorkerTask","resolvedLanguages: ResolvedLanguage[]","initPromises: Promise<unknown>[]","managedWorker: ManagedWorker","task: InitializeWorkerTask","task: RenderTask","worker: ManagedWorker | undefined"],"sources":["../../src/worker/WorkerPoolManager.ts"],"sourcesContent":["import LRUMapPkg from 'lru_map';\n\nimport { DEFAULT_THEMES } from '../constants';\nimport { getResolvedLanguages } from '../highlighter/languages/getResolvedLanguages';\nimport { hasResolvedLanguages } from '../highlighter/languages/hasResolvedLanguages';\nimport { resolveLanguages } from '../highlighter/languages/resolveLanguages';\nimport { getSharedHighlighter } from '../highlighter/shared_highlighter';\nimport { attachResolvedThemes } from '../highlighter/themes/attachResolvedThemes';\nimport { getResolvedThemes } from '../highlighter/themes/getResolvedThemes';\nimport { hasResolvedThemes } from '../highlighter/themes/hasResolvedThemes';\nimport { resolveThemes } from '../highlighter/themes/resolveThemes';\nimport type {\n DiffsHighlighter,\n FileContents,\n FileDiffMetadata,\n HighlighterTypes,\n HunkExpansionRegion,\n RenderDiffOptions,\n RenderDiffResult,\n RenderFileOptions,\n RenderFileResult,\n SupportedLanguages,\n ThemedDiffResult,\n ThemedFileResult,\n ThemeRegistrationResolved,\n} from '../types';\nimport { areDiffRenderOptionsEqual } from '../utils/areDiffRenderOptionsEqual';\nimport { areDiffTargetsEqual } from '../utils/areDiffTargetsEqual';\nimport { areFileRenderOptionsEqual } from '../utils/areFileRenderOptionsEqual';\nimport { areFilesEqual } from '../utils/areFilesEqual';\nimport { areThemesEqual } from '../utils/areThemesEqual';\nimport {\n getCustomExtensionsMap,\n getCustomExtensionsVersion,\n getFiletypeFromFileName,\n} from '../utils/getFiletypeFromFileName';\nimport { getThemes } from '../utils/getThemes';\nimport { isDiffPlainText } from '../utils/isDiffPlainText';\nimport { isFilePlainText } from '../utils/isFilePlainText';\nimport { renderDiffWithHighlighter } from '../utils/renderDiffWithHighlighter';\nimport { renderFileWithHighlighter } from '../utils/renderFileWithHighlighter';\nimport type {\n AllWorkerTasks,\n DiffRendererInstance,\n FileRendererInstance,\n InitializeWorkerRequest,\n InitializeWorkerTask,\n RenderDiffRequest,\n RenderDiffTask,\n RenderFileRequest,\n RenderFileTask,\n ResolvedLanguage,\n SetRenderOptionsWorkerTask,\n SubmitRequest,\n WorkerInitializationRenderOptions,\n WorkerPoolOptions,\n WorkerRenderingOptions,\n WorkerRequestId,\n WorkerResponse,\n WorkerStats,\n} from './types';\n\nconst IGNORE_RESPONSE = Symbol('IGNORE_RESPONSE');\n\nclass WorkerPoolTerminatedError extends Error {\n constructor() {\n super('WorkerPoolManager: operation canceled because the pool terminated');\n }\n}\n\ninterface GetCachesResult {\n fileCache: LRUMapPkg.LRUMap<string, RenderFileResult>;\n diffCache: LRUMapPkg.LRUMap<string, RenderDiffResult>;\n}\n\ninterface ManagedWorker {\n worker: Worker;\n requestId: string | undefined;\n pendingSetupRequestId: WorkerRequestId | undefined;\n initialized: boolean;\n langs: Set<SupportedLanguages>;\n customExtensionsVersion: number;\n}\n\ninterface ThemeSubscriber {\n onThemeChange(): void;\n}\n\ntype RenderTask = RenderFileTask | RenderDiffTask;\n\ntype RenderTaskInstance = FileRendererInstance | DiffRendererInstance;\n\nexport class WorkerPoolManager {\n private highlighter: DiffsHighlighter | undefined;\n private readonly preferredHighlighter: HighlighterTypes;\n private renderOptions: WorkerRenderingOptions;\n private renderOptionsRequestVersion = 0;\n private renderOptionsVersion = 0;\n private initialized: Promise<void> | boolean = false;\n private workers: ManagedWorker[] = [];\n // Tasks that are waiting to get processed by a worker\n private queuedTasks: RenderTask[] = [];\n private queuedTaskByInstance = new Map<RenderTaskInstance, RenderTask>();\n\n // Tasks that map to highlightKey are essentially singular, so we only\n // need one map to include queued and active\n private taskByHighlightKey = new Map<string, RenderTask>();\n\n // Tasks that have already been sent to a worker and are awaiting a response.\n private activeTaskById = new Map<WorkerRequestId, AllWorkerTasks>();\n private activeRequestByInstance = new Map<\n RenderTaskInstance,\n WorkerRequestId\n >();\n\n private nextRequestId = 0;\n private themeSubscribers = new Set<ThemeSubscriber>();\n private workersFailed = false;\n private statSubscribers = new Set<(stats: WorkerStats) => unknown>();\n private fileCache: LRUMapPkg.LRUMap<string, RenderFileResult>;\n private diffCache: LRUMapPkg.LRUMap<string, RenderDiffResult>;\n private _queuedBroadcast: number | undefined;\n // Incremented on terminate so async lifecycle work can identify stale results.\n private lifecycleGeneration = 0;\n\n constructor(\n private options: WorkerPoolOptions,\n {\n langs,\n theme = DEFAULT_THEMES,\n useTokenTransformer = false,\n lineDiffType = 'word-alt',\n maxLineDiffLength = 1000,\n tokenizeMaxLineLength = 1000,\n preferredHighlighter = 'shiki-js',\n }: WorkerInitializationRenderOptions\n ) {\n this.preferredHighlighter = preferredHighlighter;\n this.renderOptions = {\n theme,\n useTokenTransformer,\n lineDiffType,\n maxLineDiffLength,\n tokenizeMaxLineLength,\n };\n this.fileCache = new LRUMapPkg.LRUMap(options.totalASTLRUCacheSize ?? 100);\n this.diffCache = new LRUMapPkg.LRUMap(options.totalASTLRUCacheSize ?? 100);\n this.queueInitialization(langs);\n }\n\n public isWorkingPool(): boolean {\n return !this.workersFailed;\n }\n\n public getFileResultCache(file: FileContents): RenderFileResult | undefined {\n return file.cacheKey != null\n ? this.fileCache.get(file.cacheKey)\n : undefined;\n }\n\n public getDiffResultCache(\n diff: FileDiffMetadata\n ): RenderDiffResult | undefined {\n return diff.cacheKey != null\n ? this.diffCache.get(diff.cacheKey)\n : undefined;\n }\n\n public inspectCaches(): GetCachesResult {\n const { fileCache, diffCache } = this;\n return { fileCache, diffCache };\n }\n\n public evictFileFromCache(cacheKey: string): boolean {\n try {\n return this.fileCache.delete(cacheKey) !== undefined;\n } finally {\n this.queueBroadcastStateChanges();\n }\n }\n\n public evictDiffFromCache(cacheKey: string): boolean {\n try {\n return this.diffCache.delete(cacheKey) !== undefined;\n } finally {\n this.queueBroadcastStateChanges();\n }\n }\n\n async setRenderOptions({\n theme = DEFAULT_THEMES,\n useTokenTransformer = false,\n lineDiffType = 'word-alt',\n maxLineDiffLength = 1000,\n tokenizeMaxLineLength = 1000,\n }: Partial<WorkerRenderingOptions>): Promise<void> {\n const { lifecycleGeneration } = this;\n const renderOptionsRequestVersion = ++this.renderOptionsRequestVersion;\n const isCurrentRequest = (): boolean =>\n this.isCurrentLifecycle(lifecycleGeneration) &&\n this.renderOptionsRequestVersion === renderOptionsRequestVersion;\n try {\n const newRenderOptions: WorkerRenderingOptions = {\n theme,\n useTokenTransformer,\n lineDiffType,\n maxLineDiffLength,\n tokenizeMaxLineLength,\n };\n if (!this.isInitialized()) {\n await this.initialize();\n }\n if (\n !isCurrentRequest() ||\n areDiffRenderOptionsEqual(newRenderOptions, this.renderOptions)\n ) {\n return;\n }\n\n const themeNames = getThemes(theme);\n let resolvedThemes: ThemeRegistrationResolved[] = [];\n if (!areThemesEqual(newRenderOptions.theme, this.renderOptions.theme)) {\n if (hasResolvedThemes(themeNames)) {\n resolvedThemes = getResolvedThemes(themeNames);\n } else {\n resolvedThemes = await resolveThemes(themeNames);\n }\n }\n\n if (!isCurrentRequest()) {\n return;\n }\n\n if (this.highlighter != null) {\n attachResolvedThemes(resolvedThemes, this.highlighter);\n } else {\n const highlighter = await getSharedHighlighter({\n themes: themeNames,\n langs: ['text'],\n preferredHighlighter: this.preferredHighlighter,\n });\n if (!isCurrentRequest()) {\n return;\n }\n this.highlighter = highlighter;\n }\n\n const workerSetup = this.setRenderOptionsOnWorkers(\n newRenderOptions,\n resolvedThemes\n );\n\n this.renderOptions = newRenderOptions;\n this.renderOptionsVersion++;\n this.diffCache.clear();\n this.fileCache.clear();\n this.invalidateRenderTasks();\n\n for (const instance of this.themeSubscribers) {\n instance.onThemeChange();\n }\n\n await workerSetup;\n } catch (error) {\n if (error instanceof WorkerPoolTerminatedError || !isCurrentRequest()) {\n return;\n }\n throw error;\n }\n }\n\n public getFileRenderOptions(): RenderFileOptions {\n const { tokenizeMaxLineLength, theme, useTokenTransformer } =\n this.renderOptions;\n return { theme, useTokenTransformer, tokenizeMaxLineLength };\n }\n\n public getDiffRenderOptions(): RenderDiffOptions {\n return { ...this.renderOptions };\n }\n\n private async setRenderOptionsOnWorkers(\n renderOptions: WorkerRenderingOptions,\n resolvedThemes: ThemeRegistrationResolved[]\n ): Promise<void> {\n if (this.workersFailed) {\n return;\n }\n if (!this.isInitialized()) {\n await this.initialize();\n }\n const taskPromises: Promise<void>[] = [];\n for (const managedWorker of this.workers) {\n if (!managedWorker.initialized) {\n console.log({ managedWorker });\n throw new Error(\n 'setRenderOptionsOnWorkers: Somehow we have an uninitialized worker'\n );\n }\n taskPromises.push(\n new Promise<void>((resolve, reject) => {\n const id = this.generateRequestId();\n const task: SetRenderOptionsWorkerTask = {\n type: 'set-render-options',\n id,\n request: {\n type: 'set-render-options',\n id,\n renderOptions,\n resolvedThemes,\n },\n resolve,\n reject,\n requestStart: Date.now(),\n };\n // Render-option updates are posted immediately, but the worker stays\n // unavailable for new render work until it acknowledges this message.\n this.activeTaskById.set(id, task);\n managedWorker.pendingSetupRequestId = id;\n managedWorker.worker.postMessage(task.request);\n })\n );\n }\n await Promise.all(taskPromises);\n }\n\n public subscribeToThemeChanges(instance: ThemeSubscriber): () => void {\n this.themeSubscribers.add(instance);\n this.queueBroadcastStateChanges();\n return () => {\n this.unsubscribeToThemeChanges(instance);\n this.queueBroadcastStateChanges();\n };\n }\n\n public unsubscribeToThemeChanges(instance: ThemeSubscriber): void {\n this.themeSubscribers.delete(instance);\n this.queueBroadcastStateChanges();\n }\n\n public subscribeToStatChanges(\n callback: (stats: WorkerStats) => unknown\n ): () => void {\n this.statSubscribers.add(callback);\n callback(this.getStats());\n return () => {\n this.statSubscribers.delete(callback);\n };\n }\n\n private queueBroadcastStateChanges() {\n if (this._queuedBroadcast != null) return;\n this._queuedBroadcast = requestAnimationFrame(this._broadcastStateChanges);\n }\n\n private _broadcastStateChanges = () => {\n if (this._queuedBroadcast != null) {\n cancelAnimationFrame(this._queuedBroadcast);\n this._queuedBroadcast = undefined;\n }\n const stats = this.getStats();\n for (const callback of this.statSubscribers) {\n callback(stats);\n }\n };\n\n public cleanUpTasks(instance: RenderTaskInstance): void {\n this.detachInstanceFromQueuedTasks(instance);\n const requestId = this.activeRequestByInstance.get(instance);\n if (requestId != null) {\n const task = this.activeTaskById.get(requestId);\n if (isRenderTask(task)) {\n this.detachInstanceFromRenderTask(task, instance);\n if (!task.primeCache && task.instances.size === 0) {\n this.removeActiveTask(task);\n }\n } else {\n this.activeTaskById.delete(requestId);\n }\n }\n this.activeRequestByInstance.delete(instance);\n this.queueBroadcastStateChanges();\n }\n\n public isInitialized(): boolean {\n return this.initialized === true;\n }\n\n public async initialize(languages: SupportedLanguages[] = []): Promise<void> {\n if (this.initialized === true) {\n return;\n } else if (this.initialized === false) {\n const { lifecycleGeneration } = this;\n this.initialized = new Promise((resolve, reject) => {\n void (async () => {\n try {\n const themes = getThemes(this.renderOptions.theme);\n let resolvedThemes: ThemeRegistrationResolved[] = [];\n if (hasResolvedThemes(themes)) {\n resolvedThemes = getResolvedThemes(themes);\n } else {\n resolvedThemes = await resolveThemes(themes);\n }\n if (!this.isCurrentLifecycle(lifecycleGeneration)) {\n resolve();\n return;\n }\n\n let resolvedLanguages: ResolvedLanguage[] = [];\n if (hasResolvedLanguages(languages)) {\n resolvedLanguages = getResolvedLanguages(languages);\n } else {\n resolvedLanguages = await resolveLanguages(languages);\n }\n if (!this.isCurrentLifecycle(lifecycleGeneration)) {\n resolve();\n return;\n }\n\n const [highlighter] = await Promise.all([\n getSharedHighlighter({\n themes,\n langs: ['text', ...languages],\n preferredHighlighter: this.preferredHighlighter,\n }),\n this.initializeWorkers(resolvedThemes, resolvedLanguages),\n ]);\n\n if (!this.isCurrentLifecycle(lifecycleGeneration)) {\n this.terminateWorkers();\n resolve();\n return;\n }\n this.highlighter = highlighter;\n this.initialized = true;\n this.diffCache.clear();\n this.fileCache.clear();\n this.drainQueue();\n this.queueBroadcastStateChanges();\n resolve();\n } catch (e) {\n if (\n e instanceof WorkerPoolTerminatedError ||\n !this.isCurrentLifecycle(lifecycleGeneration)\n ) {\n resolve();\n return;\n }\n this.initialized = false;\n this.workersFailed = true;\n this.queueBroadcastStateChanges();\n reject(e);\n }\n })();\n });\n this.queueBroadcastStateChanges();\n } else {\n return this.initialized;\n }\n }\n\n private async initializeWorkers(\n resolvedThemes: ThemeRegistrationResolved[],\n resolvedLanguages: ResolvedLanguage[]\n ): Promise<void> {\n this.workersFailed = false;\n const initPromises: Promise<unknown>[] = [];\n const customExtensionVersion = getCustomExtensionsVersion();\n const customExtensionMap =\n customExtensionVersion > 0 ? getCustomExtensionsMap() : undefined;\n if (this.workers.length > 0) {\n this.terminateWorkers();\n }\n for (let i = 0; i < (this.options.poolSize ?? 8); i++) {\n const worker = this.options.workerFactory();\n const managedWorker: ManagedWorker = {\n worker,\n requestId: undefined,\n pendingSetupRequestId: undefined,\n initialized: false,\n langs: new Set(['text', ...resolvedLanguages.map(({ name }) => name)]),\n customExtensionsVersion: 0,\n };\n worker.addEventListener(\n 'message',\n (event: MessageEvent<WorkerResponse>) => {\n this.handleWorkerMessage(managedWorker, event.data);\n }\n );\n worker.addEventListener('error', (error) =>\n console.error('Worker error:', error, managedWorker)\n );\n this.workers.push(managedWorker);\n initPromises.push(\n new Promise<void>((resolve, reject) => {\n const id = this.generateRequestId();\n const task: InitializeWorkerTask = {\n type: 'initialize',\n id,\n request: {\n type: 'initialize',\n id,\n renderOptions: this.renderOptions,\n preferredHighlighter: this.preferredHighlighter,\n resolvedThemes,\n resolvedLanguages,\n customExtensionsVersion:\n customExtensionMap != null ? customExtensionVersion : undefined,\n customExtensionMap,\n },\n resolve() {\n managedWorker.initialized = true;\n resolve();\n },\n reject,\n requestStart: Date.now(),\n };\n this.activeTaskById.set(id, task);\n this.executeTask(managedWorker, task);\n })\n );\n }\n await Promise.all(initPromises);\n }\n\n private drainQueue = () => {\n this._queuedDrain = undefined;\n // If we are initializing or things got cancelled while initializing, we\n // should not attempt to drain the queue\n if (this.initialized !== true || this.queuedTasks.length === 0) {\n return;\n }\n for (let i = 0; i < this.queuedTasks.length; ) {\n const task = this.queuedTasks[i];\n // If any instance has a request in progress, we should wait for it to\n // finish before starting work that would notify that instance.\n if (this.hasActiveRequest(task)) {\n i++;\n continue;\n }\n const langs = getLangsFromTask(task);\n const availableWorker = this.getAvailableWorker(langs);\n if (availableWorker == null) {\n break;\n }\n this.queuedTasks.splice(i, 1);\n this.assignWorkerToTask(task, availableWorker);\n void this.resolveLanguagesAndExecuteTask(availableWorker, task, langs);\n }\n this.queueBroadcastStateChanges();\n };\n\n public highlightFileAST(\n instance: FileRendererInstance,\n file: FileContents\n ): void {\n const cachedResult = this.getFileResultCache(file);\n // If we've already highlighted the file or it's plain text, we should not\n // attempt to highlight. This should be mostly never hit, but it's just an\n // extra level of safety\n if (\n isFilePlainText(file) ||\n (cachedResult != null &&\n areFileRenderOptionsEqual(\n cachedResult.options,\n this.getFileRenderOptions()\n ))\n ) {\n return;\n }\n if (!this.hasMatchingFileInstanceTask(instance, file)) {\n this.submitTask(instance, { type: 'file', file });\n }\n }\n\n public primeFileHighlightCache(file: FileContents): void {\n if (file.cacheKey == null) {\n console.warn(\n `WorkerPoolManager.primeFileHighlightCache: priming highlight cache requires file.cacheKey; skipping \"${file.name}\".`\n );\n return;\n }\n const cachedResult = this.getFileResultCache(file);\n const highlightKey = this.getFileHighlightKey(file);\n if (\n highlightKey == null ||\n isFilePlainText(file) ||\n (cachedResult != null &&\n areFileRenderOptionsEqual(\n cachedResult.options,\n this.getFileRenderOptions()\n ))\n ) {\n return;\n }\n const existingTask = this.getTaskByHighlightKey(highlightKey);\n if (existingTask != null) {\n existingTask.primeCache = true;\n } else {\n this.submitCacheTask({ type: 'file', file }, highlightKey);\n }\n }\n\n public getPlainFileAST(\n file: FileContents,\n startingLine: number,\n totalLines: number,\n lines?: string[]\n ): ThemedFileResult | undefined {\n if (this.highlighter == null) {\n this.queueInitialization();\n return undefined;\n }\n return renderFileWithHighlighter(\n file,\n this.highlighter,\n this.renderOptions,\n { forcePlainText: true, startingLine, totalLines, lines }\n );\n }\n\n public highlightDiffAST(\n instance: DiffRendererInstance,\n diff: FileDiffMetadata\n ): void {\n const cachedResult = this.getDiffResultCache(diff);\n // If we've already highlighted the diff or it's plain text, we should not\n // attempt to highlight. This should be mostly never hit, but it's just an\n // extra level of safety\n if (\n isDiffPlainText(diff) ||\n (cachedResult != null &&\n areDiffRenderOptionsEqual(\n cachedResult.options,\n this.getDiffRenderOptions()\n ))\n ) {\n return;\n }\n if (!this.hasMatchingDiffInstanceTask(instance, diff)) {\n this.submitTask(instance, { type: 'diff', diff });\n }\n }\n\n public primeDiffHighlightCache(diff: FileDiffMetadata): void {\n if (diff.cacheKey == null) {\n console.warn(\n `WorkerPoolManager.primeDiffHighlightCache: priming highlight cache requires diff.cacheKey; skipping \"${diff.prevName ?? diff.name}\" -> \"${diff.name}\".`\n );\n return;\n }\n const cachedResult = this.getDiffResultCache(diff);\n const highlightKey = this.getDiffHighlightKey(diff);\n if (\n highlightKey == null ||\n isDiffPlainText(diff) ||\n (cachedResult != null &&\n areDiffRenderOptionsEqual(\n cachedResult.options,\n this.getDiffRenderOptions()\n ))\n ) {\n return;\n }\n const existingTask = this.getTaskByHighlightKey(highlightKey);\n if (existingTask != null) {\n existingTask.primeCache = true;\n } else {\n this.submitCacheTask({ type: 'diff', diff }, highlightKey);\n }\n }\n\n public getPlainDiffAST(\n diff: FileDiffMetadata,\n startingLine: number,\n totalLines: number,\n expandedHunks?: Map<number, HunkExpansionRegion> | true,\n collapsedContextThreshold?: number\n ): ThemedDiffResult | undefined {\n return this.highlighter != null\n ? renderDiffWithHighlighter(diff, this.highlighter, this.renderOptions, {\n forcePlainText: true,\n startingLine,\n totalLines,\n expandedHunks,\n collapsedContextThreshold,\n })\n : undefined;\n }\n\n public terminate(): void {\n this.lifecycleGeneration++;\n this.cancelActiveWorkerTasks();\n this.terminateWorkers();\n this.fileCache.clear();\n this.diffCache.clear();\n this.activeRequestByInstance.clear();\n this.queuedTasks.length = 0;\n this.queuedTaskByInstance.clear();\n this.taskByHighlightKey.clear();\n this.activeTaskById.clear();\n this.highlighter = undefined;\n this.initialized = false;\n this.workersFailed = false;\n this.queueBroadcastStateChanges();\n }\n\n private isCurrentLifecycle(lifecycleGeneration: number): boolean {\n return this.lifecycleGeneration === lifecycleGeneration;\n }\n\n private queueInitialization(languages?: SupportedLanguages[]): void {\n void this.initialize(languages).catch((error) => {\n console.error(error);\n });\n }\n\n private cancelActiveWorkerTasks(): void {\n const error = new WorkerPoolTerminatedError();\n for (const task of this.activeTaskById.values()) {\n if ('reject' in task) {\n task.reject(error);\n }\n }\n }\n\n private terminateWorkers() {\n for (const managedWorker of this.workers) {\n managedWorker.worker.terminate();\n }\n this.workers.length = 0;\n }\n\n public getStats(): WorkerStats {\n return {\n managerState: (() => {\n if (this.initialized === false) {\n return 'waiting';\n }\n if (this.initialized !== true) {\n return 'initializing';\n }\n return 'initialized';\n })(),\n totalWorkers: this.workers.length,\n workersFailed: this.workersFailed,\n busyWorkers: this.workers.filter(\n (w) => w.requestId != null || w.pendingSetupRequestId != null\n ).length,\n queuedTasks: this.queuedTasks.length,\n activeTasks: this.activeTaskById.size,\n themeSubscribers: this.themeSubscribers.size,\n fileCacheSize: this.fileCache.size,\n diffCacheSize: this.diffCache.size,\n };\n }\n\n private submitTask(\n instance: FileRendererInstance,\n request: Omit<RenderFileRequest, 'id'>\n ): void;\n private submitTask(\n instance: DiffRendererInstance,\n request: Omit<RenderDiffRequest, 'id'>\n ): void;\n private submitTask(\n instance: FileRendererInstance | DiffRendererInstance,\n request: SubmitRequest\n ): void {\n if (this.initialized === false) {\n this.queueInitialization();\n }\n\n const highlightKey = this.getHighlightKeyForRequest(request);\n const existingTask =\n highlightKey != null\n ? this.getTaskByHighlightKey(highlightKey)\n : undefined;\n if (existingTask != null) {\n this.detachInstanceFromQueuedTasks(instance, existingTask);\n this.addInstanceToTask(existingTask, instance);\n this.queueBroadcastStateChanges();\n return;\n }\n\n this.detachInstanceFromQueuedTasks(instance);\n const id = this.generateRequestId();\n const requestStart = Date.now();\n const { renderOptionsVersion } = this;\n const task: RenderTask = (() => {\n switch (request.type) {\n case 'file':\n return {\n type: 'file',\n id,\n request: { ...request, id },\n instances: new Set([instance as FileRendererInstance]),\n primeCache: false,\n highlightKey,\n renderOptionsVersion,\n requestStart,\n };\n case 'diff':\n return {\n type: 'diff',\n id,\n request: { ...request, id },\n instances: new Set([instance as DiffRendererInstance]),\n primeCache: false,\n highlightKey,\n renderOptionsVersion,\n requestStart,\n };\n }\n })();\n this.enqueueRenderTask(task, instance);\n }\n\n private submitCacheTask(request: SubmitRequest, highlightKey: string): void {\n if (this.initialized === false) {\n this.queueInitialization();\n }\n const id = this.generateRequestId();\n const requestStart = Date.now();\n const { renderOptionsVersion } = this;\n const task: RenderTask = (() => {\n switch (request.type) {\n case 'file':\n return {\n type: 'file',\n id,\n request: { ...request, id },\n instances: new Set<FileRendererInstance>(),\n primeCache: true,\n highlightKey,\n renderOptionsVersion,\n requestStart,\n };\n case 'diff':\n return {\n type: 'diff',\n id,\n request: { ...request, id },\n instances: new Set<DiffRendererInstance>(),\n primeCache: true,\n highlightKey,\n renderOptionsVersion,\n requestStart,\n };\n }\n })();\n this.enqueueRenderTask(task);\n }\n\n private enqueueRenderTask(\n task: RenderTask,\n instance?: RenderTaskInstance\n ): void {\n this.queuedTasks.push(task);\n if (instance != null) {\n this.queuedTaskByInstance.set(instance, task);\n }\n if (task.highlightKey != null) {\n this.taskByHighlightKey.set(task.highlightKey, task);\n }\n this.queueDrain();\n }\n\n private async resolveLanguagesAndExecuteTask(\n availableWorker: ManagedWorker,\n task: RenderFileTask | RenderDiffTask,\n langs: SupportedLanguages[]\n ): Promise<void> {\n try {\n // Add resolved languages if required\n const workerMissingLangs = langs.filter(\n (lang) => !availableWorker.langs.has(lang)\n );\n\n if (workerMissingLangs.length > 0) {\n if (hasResolvedLanguages(workerMissingLangs)) {\n task.request.resolvedLanguages =\n getResolvedLanguages(workerMissingLangs);\n } else {\n task.request.resolvedLanguages =\n await resolveLanguages(workerMissingLangs);\n }\n }\n // If the task has been cleaned up after awaiting language resolving,\n // lets fully clean it up\n if (!this.activeTaskById.has(task.id)) {\n if (availableWorker.requestId === task.id) {\n this.cleanWorkerAndTask(availableWorker, task);\n this.queueBroadcastStateChanges();\n if (this.queuedTasks.length > 0) {\n this.queueDrain();\n }\n }\n return;\n }\n this.executeTask(availableWorker, task);\n } catch {\n this.cleanWorkerAndTask(availableWorker, task);\n this.queueBroadcastStateChanges();\n if (this.queuedTasks.length > 0) {\n this.queueDrain();\n }\n }\n }\n\n private handleWorkerMessage(\n managedWorker: ManagedWorker,\n response: WorkerResponse\n ): void {\n const task = this.activeTaskById.get(response.id);\n try {\n if (task == null) {\n // If we can't find a task for this response, it probably means the\n // component has been unmounted, so we should silently ignore it\n throw IGNORE_RESPONSE;\n } else if (response.type === 'error') {\n const error = new Error(response.error);\n if (response.stack) {\n error.stack = response.stack;\n }\n if ('reject' in task) {\n task.reject(error);\n } else if (isRenderTask(task)) {\n this.notifyHighlightError(task, error);\n } else {\n throw new Error('handleWorkerMessage: unknown task type');\n }\n throw error;\n } else {\n switch (response.requestType) {\n case 'initialize':\n if (task.type !== 'initialize') {\n throw new Error('handleWorkerMessage: task/response dont match');\n }\n this.syncCustomExtensionVersion(managedWorker, task.request);\n task.resolve();\n break;\n case 'set-render-options':\n if (task.type !== 'set-render-options') {\n throw new Error('handleWorkerMessage: task/response dont match');\n }\n task.resolve();\n break;\n case 'file': {\n if (task.type !== 'file') {\n throw new Error('handleWorkerMessage: task/response dont match');\n }\n const { result, options } = response;\n if (\n !this.isCurrentRenderTask(task) ||\n !areFileRenderOptionsEqual(options, this.getFileRenderOptions())\n ) {\n throw IGNORE_RESPONSE;\n }\n const { request } = task;\n this.syncCustomExtensionVersion(managedWorker, request);\n if (request.file.cacheKey != null) {\n this.fileCache.set(request.file.cacheKey, { result, options });\n }\n this.notifyFileInstances(task, result, options);\n break;\n }\n case 'diff': {\n if (task.type !== 'diff') {\n throw new Error('handleWorkerMessage: task/response dont match');\n }\n const { result, options } = response;\n if (\n !this.isCurrentRenderTask(task) ||\n !areDiffRenderOptionsEqual(options, this.getDiffRenderOptions())\n ) {\n throw IGNORE_RESPONSE;\n }\n const { request } = task;\n this.syncCustomExtensionVersion(managedWorker, request);\n if (request.diff.cacheKey != null) {\n this.diffCache.set(request.diff.cacheKey, { result, options });\n }\n this.notifyDiffInstances(task, result, options);\n break;\n }\n }\n }\n } catch (error) {\n if (error !== IGNORE_RESPONSE) {\n console.error(error, task, response);\n }\n }\n\n this.cleanWorkerAndTask(managedWorker, task, response.id);\n this.queueBroadcastStateChanges();\n if (this.queuedTasks.length > 0) {\n // We queue drain so that potentially multiple workers can free up\n // allowing for better language matches if possible\n this.queueDrain();\n }\n }\n\n private _queuedDrain: Promise<void> | undefined;\n private queueDrain() {\n if (this._queuedDrain != null) return;\n this._queuedDrain = Promise.resolve().then(this.drainQueue);\n this.queueBroadcastStateChanges();\n }\n\n private assignWorkerToTask(\n task: AllWorkerTasks,\n managedWorker: ManagedWorker\n ) {\n managedWorker.requestId = task.id;\n if (isRenderTask(task)) {\n this.clearQueuedInstanceRequests(task);\n this.trackInstanceRequests(task);\n }\n this.activeTaskById.set(task.id, task);\n }\n\n private cleanWorkerAndTask(\n managedWorker: ManagedWorker,\n task?: AllWorkerTasks,\n requestId: WorkerRequestId | undefined = task?.id\n ) {\n if (managedWorker.requestId === requestId) {\n managedWorker.requestId = undefined;\n }\n if (managedWorker.pendingSetupRequestId === requestId) {\n managedWorker.pendingSetupRequestId = undefined;\n }\n if (task != null) {\n if (isRenderTask(task)) {\n this.clearInstanceRequests(task);\n this.clearHighlightKey(task);\n }\n this.activeTaskById.delete(task.id);\n }\n }\n\n private executeTask(\n managedWorker: ManagedWorker,\n task: AllWorkerTasks\n ): void {\n if (shouldSyncCustomExtensions(task.request)) {\n this.maybeAttachCustomExtensions(managedWorker, task.request);\n }\n if (!this.activeTaskById.has(task.id)) {\n this.assignWorkerToTask(task, managedWorker);\n }\n for (const lang of getLangsFromTask(task)) {\n managedWorker.langs.add(lang);\n }\n try {\n managedWorker.worker.postMessage(task.request);\n } catch (error) {\n console.error('Failed to post message to worker:', error);\n if (isRenderTask(task)) {\n this.notifyHighlightError(task, error);\n } else if ('reject' in task) {\n task.reject(error as Error);\n }\n this.cleanWorkerAndTask(managedWorker, task);\n if (this.queuedTasks.length > 0) {\n this.queueDrain();\n }\n }\n this.queueBroadcastStateChanges();\n }\n\n private maybeAttachCustomExtensions(\n managedWorker: ManagedWorker,\n request: InitializeWorkerRequest | RenderFileRequest | RenderDiffRequest\n ): void {\n if (request.customExtensionsVersion != null) {\n return;\n }\n const version = getCustomExtensionsVersion();\n if (managedWorker.customExtensionsVersion >= version) {\n return;\n }\n request.customExtensionsVersion = version;\n request.customExtensionMap = getCustomExtensionsMap();\n }\n\n private syncCustomExtensionVersion(\n managedWorker: ManagedWorker,\n request: InitializeWorkerRequest | RenderFileRequest | RenderDiffRequest\n ): void {\n if (request.customExtensionsVersion == null) {\n return;\n }\n managedWorker.customExtensionsVersion = request.customExtensionsVersion;\n }\n\n private getAvailableWorker(\n langs: SupportedLanguages[]\n ): ManagedWorker | undefined {\n let worker: ManagedWorker | undefined;\n for (const managedWorker of this.workers) {\n if (\n managedWorker.requestId != null ||\n managedWorker.pendingSetupRequestId != null ||\n !managedWorker.initialized\n ) {\n continue;\n }\n worker = managedWorker;\n if (langs.length === 0) {\n break;\n }\n let hasEveryLang = true;\n for (const lang of langs) {\n if (!managedWorker.langs.has(lang)) {\n hasEveryLang = false;\n break;\n }\n }\n if (hasEveryLang) {\n break;\n }\n }\n return worker;\n }\n\n private getFileHighlightKey(file: FileContents): string | undefined {\n if (file.cacheKey == null) {\n return undefined;\n }\n return `file:${file.cacheKey}:${this.renderOptionsVersion}`;\n }\n\n private getDiffHighlightKey(diff: FileDiffMetadata): string | undefined {\n if (diff.cacheKey == null) {\n return undefined;\n }\n return `diff:${diff.cacheKey}:${this.renderOptionsVersion}`;\n }\n\n private getHighlightKeyForRequest(\n request: SubmitRequest\n ): string | undefined {\n switch (request.type) {\n case 'file':\n return this.getFileHighlightKey(request.file);\n case 'diff':\n return this.getDiffHighlightKey(request.diff);\n }\n }\n\n private hasActiveRequest(task: RenderTask): boolean {\n for (const instance of getInstances(task)) {\n if (this.activeRequestByInstance.has(instance)) {\n return true;\n }\n }\n return false;\n }\n\n private addInstanceToTask(\n task: RenderTask,\n instance: FileRendererInstance | DiffRendererInstance\n ): void {\n if (task.type === 'file') {\n task.instances.add(instance as FileRendererInstance);\n } else {\n task.instances.add(instance as DiffRendererInstance);\n }\n if (this.activeTaskById.has(task.id)) {\n this.activeRequestByInstance.set(instance, task.id);\n } else {\n this.queuedTaskByInstance.set(instance, task);\n }\n }\n\n private detachInstanceFromQueuedTasks(\n instance: RenderTaskInstance,\n exceptTask?: RenderTask\n ): void {\n const task = this.queuedTaskByInstance.get(instance);\n if (task == null || task === exceptTask) {\n return;\n }\n this.queuedTaskByInstance.delete(instance);\n this.detachInstanceFromRenderTask(task, instance);\n if (!task.primeCache && task.instances.size === 0) {\n this.removeQueuedTask(task);\n }\n }\n\n private detachInstanceFromRenderTask(\n task: RenderTask,\n instance: RenderTaskInstance\n ): void {\n if (task.type === 'file') {\n task.instances.delete(instance as FileRendererInstance);\n } else {\n task.instances.delete(instance as DiffRendererInstance);\n }\n }\n\n private removeQueuedTask(task: RenderTask): void {\n const index = this.queuedTasks.indexOf(task);\n if (index !== -1) {\n this.queuedTasks.splice(index, 1);\n }\n this.clearQueuedInstanceRequests(task);\n this.clearHighlightKey(task);\n }\n\n private removeActiveTask(task: RenderTask): void {\n this.clearInstanceRequests(task);\n this.clearHighlightKey(task);\n this.activeTaskById.delete(task.id);\n }\n\n private invalidateRenderTasks(): void {\n for (let index = this.queuedTasks.length - 1; index >= 0; index--) {\n const task = this.queuedTasks[index];\n if (task.renderOptionsVersion !== this.renderOptionsVersion) {\n this.removeQueuedTask(task);\n }\n }\n\n for (const task of Array.from(this.activeTaskById.values())) {\n if (\n isRenderTask(task) &&\n task.renderOptionsVersion !== this.renderOptionsVersion\n ) {\n this.removeActiveTask(task);\n }\n }\n }\n\n private clearQueuedInstanceRequests(task: RenderTask): void {\n for (const instance of getInstances(task)) {\n if (this.queuedTaskByInstance.get(instance) === task) {\n this.queuedTaskByInstance.delete(instance);\n }\n }\n }\n\n private clearHighlightKey(task: RenderTask): void {\n if (\n task.highlightKey != null &&\n this.taskByHighlightKey.get(task.highlightKey) === task\n ) {\n this.taskByHighlightKey.delete(task.highlightKey);\n }\n }\n\n private trackInstanceRequests(task: RenderTask): void {\n for (const instance of getInstances(task)) {\n this.activeRequestByInstance.set(instance, task.id);\n }\n }\n\n private clearInstanceRequests(task: RenderTask): void {\n for (const instance of getInstances(task)) {\n if (this.activeRequestByInstance.get(instance) === task.id) {\n this.activeRequestByInstance.delete(instance);\n }\n }\n }\n\n private notifyFileInstances(\n task: RenderFileTask,\n result: ThemedFileResult,\n options: RenderFileOptions\n ): void {\n for (const instance of task.instances) {\n if (this.activeRequestByInstance.get(instance) === task.id) {\n instance.onHighlightSuccess(task.request.file, result, options);\n }\n }\n }\n\n private notifyDiffInstances(\n task: RenderDiffTask,\n result: ThemedDiffResult,\n options: RenderDiffOptions\n ): void {\n for (const instance of task.instances) {\n if (this.activeRequestByInstance.get(instance) === task.id) {\n instance.onHighlightSuccess(task.request.diff, result, options);\n }\n }\n }\n\n private notifyHighlightError(task: RenderTask, error: unknown): void {\n for (const instance of getInstances(task)) {\n if (this.activeRequestByInstance.get(instance) === task.id) {\n instance.onHighlightError(error);\n }\n }\n }\n\n private hasMatchingFileInstanceTask(\n instance: FileRendererInstance,\n file: FileContents\n ): boolean {\n for (const task of this.iterateRenderTasks()) {\n if (\n task.type === 'file' &&\n this.isCurrentRenderTask(task) &&\n task.instances.has(instance) &&\n areFilesEqual(file, task.request.file)\n ) {\n return true;\n }\n }\n return false;\n }\n\n private hasMatchingDiffInstanceTask(\n instance: DiffRendererInstance,\n diff: FileDiffMetadata\n ): boolean {\n for (const task of this.iterateRenderTasks()) {\n if (\n task.type === 'diff' &&\n this.isCurrentRenderTask(task) &&\n task.instances.has(instance) &&\n areDiffTargetsEqual(task.request.diff, diff)\n ) {\n return true;\n }\n }\n return false;\n }\n\n private getTaskByHighlightKey(highlightKey: string): RenderTask | undefined {\n const task = this.taskByHighlightKey.get(highlightKey);\n return task != null && this.isCurrentRenderTask(task) ? task : undefined;\n }\n\n private isCurrentRenderTask(task: RenderTask): boolean {\n return task.renderOptionsVersion === this.renderOptionsVersion;\n }\n\n private *iterateRenderTasks(): Generator<RenderTask> {\n for (const task of this.queuedTasks) {\n yield task;\n }\n for (const task of this.activeTaskById.values()) {\n if (isRenderTask(task)) {\n yield task;\n }\n }\n }\n\n private generateRequestId(): WorkerRequestId {\n return `req_${++this.nextRequestId}`;\n }\n}\n\nfunction shouldSyncCustomExtensions(\n request: AllWorkerTasks['request']\n): request is InitializeWorkerRequest | RenderFileRequest | RenderDiffRequest {\n return (\n request.type === 'initialize' ||\n request.type === 'file' ||\n request.type === 'diff'\n );\n}\n\nfunction getLangsFromTask(task: AllWorkerTasks): SupportedLanguages[] {\n const langs = new Set<SupportedLanguages>();\n if (task.type === 'initialize' || task.type === 'set-render-options') {\n return [];\n }\n switch (task.type) {\n case 'file': {\n langs.add(\n task.request.file.lang ??\n getFiletypeFromFileName(task.request.file.name)\n );\n break;\n }\n case 'diff': {\n langs.add(\n task.request.diff.lang ??\n getFiletypeFromFileName(task.request.diff.name)\n );\n langs.add(\n task.request.diff.lang ??\n getFiletypeFromFileName(task.request.diff.prevName ?? '-')\n );\n break;\n }\n }\n langs.delete('text');\n return Array.from(langs);\n}\n\nfunction isRenderTask(task: AllWorkerTasks | undefined): task is RenderTask {\n return task?.type === 'file' || task?.type === 'diff';\n}\n\nfunction getInstances(\n task: RenderTask\n): Set<FileRendererInstance | DiffRendererInstance> {\n return task.instances as Set<FileRendererInstance | DiffRendererInstance>;\n}\n"],"mappings":"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"}
|
|
@@ -133,6 +133,7 @@ interface RenderFileTask {
|
|
|
133
133
|
instances: Set<FileRendererInstance>;
|
|
134
134
|
primeCache: boolean;
|
|
135
135
|
highlightKey?: string;
|
|
136
|
+
renderOptionsVersion: number;
|
|
136
137
|
requestStart: number;
|
|
137
138
|
}
|
|
138
139
|
interface RenderDiffTask {
|
|
@@ -142,6 +143,7 @@ interface RenderDiffTask {
|
|
|
142
143
|
instances: Set<DiffRendererInstance>;
|
|
143
144
|
primeCache: boolean;
|
|
144
145
|
highlightKey?: string;
|
|
146
|
+
renderOptionsVersion: number;
|
|
145
147
|
requestStart: number;
|
|
146
148
|
}
|
|
147
149
|
type AllWorkerTasks = InitializeWorkerTask | SetRenderOptionsWorkerTask | RenderFileTask | RenderDiffTask;
|