@pierre/diffs 1.0.0-beta.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE.txt +201 -0
- package/README.md +26 -0
- package/dist/components/File.d.ts +78 -0
- package/dist/components/File.d.ts.map +1 -0
- package/dist/components/File.js +322 -0
- package/dist/components/File.js.map +1 -0
- package/dist/components/FileDiff.d.ts +90 -0
- package/dist/components/FileDiff.d.ts.map +1 -0
- package/dist/components/FileDiff.js +392 -0
- package/dist/components/FileDiff.js.map +1 -0
- package/dist/components/FileStream.d.ts +40 -0
- package/dist/components/FileStream.d.ts.map +1 -0
- package/dist/components/FileStream.js +161 -0
- package/dist/components/FileStream.js.map +1 -0
- package/dist/components/web-components.d.ts +5 -0
- package/dist/components/web-components.d.ts.map +1 -0
- package/dist/components/web-components.js +25 -0
- package/dist/components/web-components.js.map +1 -0
- package/dist/constants.d.ts +21 -0
- package/dist/constants.d.ts.map +1 -0
- package/dist/constants.js +23 -0
- package/dist/constants.js.map +1 -0
- package/dist/highlighter/languages/areLanguagesAttached.d.ts +7 -0
- package/dist/highlighter/languages/areLanguagesAttached.d.ts.map +1 -0
- package/dist/highlighter/languages/areLanguagesAttached.js +11 -0
- package/dist/highlighter/languages/areLanguagesAttached.js.map +1 -0
- package/dist/highlighter/languages/attachResolvedLanguages.d.ts +9 -0
- package/dist/highlighter/languages/attachResolvedLanguages.d.ts.map +1 -0
- package/dist/highlighter/languages/attachResolvedLanguages.js +20 -0
- package/dist/highlighter/languages/attachResolvedLanguages.js.map +1 -0
- package/dist/highlighter/languages/cleanUpResolvedLanguages.d.ts +5 -0
- package/dist/highlighter/languages/cleanUpResolvedLanguages.d.ts.map +1 -0
- package/dist/highlighter/languages/cleanUpResolvedLanguages.js +11 -0
- package/dist/highlighter/languages/cleanUpResolvedLanguages.js.map +1 -0
- package/dist/highlighter/languages/constants.d.ts +11 -0
- package/dist/highlighter/languages/constants.d.ts.map +1 -0
- package/dist/highlighter/languages/constants.js +8 -0
- package/dist/highlighter/languages/constants.js.map +1 -0
- package/dist/highlighter/languages/getResolvedLanguages.d.ts +9 -0
- package/dist/highlighter/languages/getResolvedLanguages.d.ts.map +1 -0
- package/dist/highlighter/languages/getResolvedLanguages.js +16 -0
- package/dist/highlighter/languages/getResolvedLanguages.js.map +1 -0
- package/dist/highlighter/languages/getResolvedOrResolveLanguage.d.ts +9 -0
- package/dist/highlighter/languages/getResolvedOrResolveLanguage.d.ts.map +1 -0
- package/dist/highlighter/languages/getResolvedOrResolveLanguage.js +11 -0
- package/dist/highlighter/languages/getResolvedOrResolveLanguage.js.map +1 -0
- package/dist/highlighter/languages/hasResolvedLanguages.d.ts +7 -0
- package/dist/highlighter/languages/hasResolvedLanguages.d.ts.map +1 -0
- package/dist/highlighter/languages/hasResolvedLanguages.js +11 -0
- package/dist/highlighter/languages/hasResolvedLanguages.js.map +1 -0
- package/dist/highlighter/languages/resolveLanguage.d.ts +9 -0
- package/dist/highlighter/languages/resolveLanguage.d.ts.map +1 -0
- package/dist/highlighter/languages/resolveLanguage.js +30 -0
- package/dist/highlighter/languages/resolveLanguage.js.map +1 -0
- package/dist/highlighter/languages/resolveLanguages.d.ts +9 -0
- package/dist/highlighter/languages/resolveLanguages.d.ts.map +1 -0
- package/dist/highlighter/languages/resolveLanguages.js +25 -0
- package/dist/highlighter/languages/resolveLanguages.js.map +1 -0
- package/dist/highlighter/shared_highlighter.d.ts +21 -0
- package/dist/highlighter/shared_highlighter.d.ts.map +1 -0
- package/dist/highlighter/shared_highlighter.js +71 -0
- package/dist/highlighter/shared_highlighter.js.map +1 -0
- package/dist/highlighter/themes/areThemesAttached.d.ts +7 -0
- package/dist/highlighter/themes/areThemesAttached.d.ts.map +1 -0
- package/dist/highlighter/themes/areThemesAttached.js +12 -0
- package/dist/highlighter/themes/areThemesAttached.js.map +1 -0
- package/dist/highlighter/themes/attachResolvedThemes.d.ts +7 -0
- package/dist/highlighter/themes/attachResolvedThemes.d.ts.map +1 -0
- package/dist/highlighter/themes/attachResolvedThemes.js +24 -0
- package/dist/highlighter/themes/attachResolvedThemes.js.map +1 -0
- package/dist/highlighter/themes/cleanUpResolvedThemes.d.ts +5 -0
- package/dist/highlighter/themes/cleanUpResolvedThemes.d.ts.map +1 -0
- package/dist/highlighter/themes/cleanUpResolvedThemes.js +11 -0
- package/dist/highlighter/themes/cleanUpResolvedThemes.js.map +1 -0
- package/dist/highlighter/themes/constants.d.ts +11 -0
- package/dist/highlighter/themes/constants.d.ts.map +1 -0
- package/dist/highlighter/themes/constants.js +9 -0
- package/dist/highlighter/themes/constants.js.map +1 -0
- package/dist/highlighter/themes/getResolvedOrResolveTheme.d.ts +7 -0
- package/dist/highlighter/themes/getResolvedOrResolveTheme.d.ts.map +1 -0
- package/dist/highlighter/themes/getResolvedOrResolveTheme.js +11 -0
- package/dist/highlighter/themes/getResolvedOrResolveTheme.js.map +1 -0
- package/dist/highlighter/themes/getResolvedThemes.d.ts +7 -0
- package/dist/highlighter/themes/getResolvedThemes.d.ts.map +1 -0
- package/dist/highlighter/themes/getResolvedThemes.js +16 -0
- package/dist/highlighter/themes/getResolvedThemes.js.map +1 -0
- package/dist/highlighter/themes/hasResolvedThemes.d.ts +7 -0
- package/dist/highlighter/themes/hasResolvedThemes.d.ts.map +1 -0
- package/dist/highlighter/themes/hasResolvedThemes.js +11 -0
- package/dist/highlighter/themes/hasResolvedThemes.js.map +1 -0
- package/dist/highlighter/themes/registerCustomTheme.d.ts +7 -0
- package/dist/highlighter/themes/registerCustomTheme.d.ts.map +1 -0
- package/dist/highlighter/themes/registerCustomTheme.js +14 -0
- package/dist/highlighter/themes/registerCustomTheme.js.map +1 -0
- package/dist/highlighter/themes/resolveTheme.d.ts +7 -0
- package/dist/highlighter/themes/resolveTheme.d.ts.map +1 -0
- package/dist/highlighter/themes/resolveTheme.js +35 -0
- package/dist/highlighter/themes/resolveTheme.js.map +1 -0
- package/dist/highlighter/themes/resolveThemes.d.ts +7 -0
- package/dist/highlighter/themes/resolveThemes.d.ts.map +1 -0
- package/dist/highlighter/themes/resolveThemes.js +21 -0
- package/dist/highlighter/themes/resolveThemes.js.map +1 -0
- package/dist/index.d.ts +84 -0
- package/dist/index.js +83 -0
- package/dist/managers/LineSelectionManager.d.ts +64 -0
- package/dist/managers/LineSelectionManager.d.ts.map +1 -0
- package/dist/managers/LineSelectionManager.js +276 -0
- package/dist/managers/LineSelectionManager.js.map +1 -0
- package/dist/managers/MouseEventManager.d.ts +64 -0
- package/dist/managers/MouseEventManager.d.ts.map +1 -0
- package/dist/managers/MouseEventManager.js +244 -0
- package/dist/managers/MouseEventManager.js.map +1 -0
- package/dist/managers/ResizeManager.d.ts +11 -0
- package/dist/managers/ResizeManager.d.ts.map +1 -0
- package/dist/managers/ResizeManager.js +132 -0
- package/dist/managers/ResizeManager.js.map +1 -0
- package/dist/managers/ScrollSyncManager.d.ts +15 -0
- package/dist/managers/ScrollSyncManager.d.ts.map +1 -0
- package/dist/managers/ScrollSyncManager.js +54 -0
- package/dist/managers/ScrollSyncManager.js.map +1 -0
- package/dist/managers/UniversalRenderingManager.d.ts +6 -0
- package/dist/managers/UniversalRenderingManager.d.ts.map +1 -0
- package/dist/managers/UniversalRenderingManager.js +32 -0
- package/dist/managers/UniversalRenderingManager.js.map +1 -0
- package/dist/react/File.d.ts +19 -0
- package/dist/react/File.d.ts.map +1 -0
- package/dist/react/File.js +36 -0
- package/dist/react/File.js.map +1 -0
- package/dist/react/FileDiff.d.ts +22 -0
- package/dist/react/FileDiff.d.ts.map +1 -0
- package/dist/react/FileDiff.js +36 -0
- package/dist/react/FileDiff.js.map +1 -0
- package/dist/react/MultiFileDiff.d.ts +24 -0
- package/dist/react/MultiFileDiff.d.ts.map +1 -0
- package/dist/react/MultiFileDiff.js +38 -0
- package/dist/react/MultiFileDiff.js.map +1 -0
- package/dist/react/PatchDiff.d.ts +21 -0
- package/dist/react/PatchDiff.d.ts.map +1 -0
- package/dist/react/PatchDiff.js +42 -0
- package/dist/react/PatchDiff.js.map +1 -0
- package/dist/react/WorkerPoolContext.d.ts +20 -0
- package/dist/react/WorkerPoolContext.d.ts.map +1 -0
- package/dist/react/WorkerPoolContext.js +41 -0
- package/dist/react/WorkerPoolContext.js.map +1 -0
- package/dist/react/constants.d.ts +7 -0
- package/dist/react/constants.d.ts.map +1 -0
- package/dist/react/constants.js +11 -0
- package/dist/react/constants.js.map +1 -0
- package/dist/react/index.d.ts +17 -0
- package/dist/react/index.js +14 -0
- package/dist/react/jsx.d.ts +12 -0
- package/dist/react/jsx.d.ts.map +1 -0
- package/dist/react/types.d.ts +34 -0
- package/dist/react/types.d.ts.map +1 -0
- package/dist/react/types.js +1 -0
- package/dist/react/utils/renderDiffChildren.d.ts +29 -0
- package/dist/react/utils/renderDiffChildren.d.ts.map +1 -0
- package/dist/react/utils/renderDiffChildren.js +32 -0
- package/dist/react/utils/renderDiffChildren.js.map +1 -0
- package/dist/react/utils/renderFileChildren.d.ts +25 -0
- package/dist/react/utils/renderFileChildren.d.ts.map +1 -0
- package/dist/react/utils/renderFileChildren.js +28 -0
- package/dist/react/utils/renderFileChildren.js.map +1 -0
- package/dist/react/utils/templateRender.d.ts +7 -0
- package/dist/react/utils/templateRender.d.ts.map +1 -0
- package/dist/react/utils/templateRender.js +14 -0
- package/dist/react/utils/templateRender.js.map +1 -0
- package/dist/react/utils/useFileDiffInstance.d.ts +31 -0
- package/dist/react/utils/useFileDiffInstance.d.ts.map +1 -0
- package/dist/react/utils/useFileDiffInstance.js +54 -0
- package/dist/react/utils/useFileDiffInstance.js.map +1 -0
- package/dist/react/utils/useFileInstance.d.ts +27 -0
- package/dist/react/utils/useFileInstance.d.ts.map +1 -0
- package/dist/react/utils/useFileInstance.js +49 -0
- package/dist/react/utils/useFileInstance.js.map +1 -0
- package/dist/react/utils/useStableCallback.d.ts +5 -0
- package/dist/react/utils/useStableCallback.d.ts.map +1 -0
- package/dist/react/utils/useStableCallback.js +14 -0
- package/dist/react/utils/useStableCallback.js.map +1 -0
- package/dist/renderers/DiffHunksRenderer.d.ts +62 -0
- package/dist/renderers/DiffHunksRenderer.d.ts.map +1 -0
- package/dist/renderers/DiffHunksRenderer.js +651 -0
- package/dist/renderers/DiffHunksRenderer.js.map +1 -0
- package/dist/renderers/FileRenderer.d.ts +49 -0
- package/dist/renderers/FileRenderer.d.ts.map +1 -0
- package/dist/renderers/FileRenderer.js +239 -0
- package/dist/renderers/FileRenderer.js.map +1 -0
- package/dist/shiki-stream/index.d.ts +4 -0
- package/dist/shiki-stream/index.js +4 -0
- package/dist/shiki-stream/stream.d.ts +17 -0
- package/dist/shiki-stream/stream.d.ts.map +1 -0
- package/dist/shiki-stream/stream.js +32 -0
- package/dist/shiki-stream/stream.js.map +1 -0
- package/dist/shiki-stream/tokenizer.d.ts +24 -0
- package/dist/shiki-stream/tokenizer.d.ts.map +1 -0
- package/dist/shiki-stream/tokenizer.js +71 -0
- package/dist/shiki-stream/tokenizer.js.map +1 -0
- package/dist/shiki-stream/types.d.ts +45 -0
- package/dist/shiki-stream/types.d.ts.map +1 -0
- package/dist/shiki-stream/types.js +0 -0
- package/dist/sprite.d.ts +6 -0
- package/dist/sprite.d.ts.map +1 -0
- package/dist/sprite.js +55 -0
- package/dist/sprite.js.map +1 -0
- package/dist/ssr/FileDiffReact.d.ts +21 -0
- package/dist/ssr/FileDiffReact.d.ts.map +1 -0
- package/dist/ssr/FileDiffReact.js +53 -0
- package/dist/ssr/FileDiffReact.js.map +1 -0
- package/dist/ssr/index.d.ts +6 -0
- package/dist/ssr/index.js +6 -0
- package/dist/ssr/preloadDiffs.d.ts +72 -0
- package/dist/ssr/preloadDiffs.d.ts.map +1 -0
- package/dist/ssr/preloadDiffs.js +66 -0
- package/dist/ssr/preloadDiffs.js.map +1 -0
- package/dist/ssr/preloadFile.d.ts +23 -0
- package/dist/ssr/preloadFile.d.ts.map +1 -0
- package/dist/ssr/preloadFile.js +26 -0
- package/dist/ssr/preloadFile.js.map +1 -0
- package/dist/ssr/preloadPatchFile.d.ts +15 -0
- package/dist/ssr/preloadPatchFile.d.ts.map +1 -0
- package/dist/ssr/preloadPatchFile.js +17 -0
- package/dist/ssr/preloadPatchFile.js.map +1 -0
- package/dist/ssr/renderHTML.d.ts +7 -0
- package/dist/ssr/renderHTML.d.ts.map +1 -0
- package/dist/ssr/renderHTML.js +11 -0
- package/dist/ssr/renderHTML.js.map +1 -0
- package/dist/string-import.d.ts +6 -0
- package/dist/string-import.d.ts.map +1 -0
- package/dist/style.js +6 -0
- package/dist/style.js.map +1 -0
- package/dist/themes/pierre-dark.js +1328 -0
- package/dist/themes/pierre-dark.js.map +1 -0
- package/dist/themes/pierre-light.js +1328 -0
- package/dist/themes/pierre-light.js.map +1 -0
- package/dist/types.d.ts +238 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +0 -0
- package/dist/utils/areFilesEqual.d.ts +7 -0
- package/dist/utils/areFilesEqual.d.ts.map +1 -0
- package/dist/utils/areFilesEqual.js +8 -0
- package/dist/utils/areFilesEqual.js.map +1 -0
- package/dist/utils/areObjectsEqual.d.ts +5 -0
- package/dist/utils/areObjectsEqual.d.ts.map +1 -0
- package/dist/utils/areObjectsEqual.js +18 -0
- package/dist/utils/areObjectsEqual.js.map +1 -0
- package/dist/utils/areOptionsEqual.d.ts +9 -0
- package/dist/utils/areOptionsEqual.d.ts.map +1 -0
- package/dist/utils/areOptionsEqual.js +12 -0
- package/dist/utils/areOptionsEqual.js.map +1 -0
- package/dist/utils/areSelectionsEqual.d.ts +7 -0
- package/dist/utils/areSelectionsEqual.d.ts.map +1 -0
- package/dist/utils/areSelectionsEqual.js +8 -0
- package/dist/utils/areSelectionsEqual.js.map +1 -0
- package/dist/utils/areThemesEqual.d.ts +7 -0
- package/dist/utils/areThemesEqual.d.ts.map +1 -0
- package/dist/utils/areThemesEqual.js +9 -0
- package/dist/utils/areThemesEqual.js.map +1 -0
- package/dist/utils/cleanLastNewline.d.ts +5 -0
- package/dist/utils/cleanLastNewline.d.ts.map +1 -0
- package/dist/utils/cleanLastNewline.js +8 -0
- package/dist/utils/cleanLastNewline.js.map +1 -0
- package/dist/utils/createAnnotationElement.d.ts +8 -0
- package/dist/utils/createAnnotationElement.d.ts.map +1 -0
- package/dist/utils/createAnnotationElement.js +21 -0
- package/dist/utils/createAnnotationElement.js.map +1 -0
- package/dist/utils/createAnnotationWrapperNode.d.ts +5 -0
- package/dist/utils/createAnnotationWrapperNode.d.ts.map +1 -0
- package/dist/utils/createAnnotationWrapperNode.js +12 -0
- package/dist/utils/createAnnotationWrapperNode.js.map +1 -0
- package/dist/utils/createCodeNode.d.ts +12 -0
- package/dist/utils/createCodeNode.d.ts.map +1 -0
- package/dist/utils/createCodeNode.js +12 -0
- package/dist/utils/createCodeNode.js.map +1 -0
- package/dist/utils/createEmptyRowBuffer.d.ts +7 -0
- package/dist/utils/createEmptyRowBuffer.d.ts.map +1 -0
- package/dist/utils/createEmptyRowBuffer.js +16 -0
- package/dist/utils/createEmptyRowBuffer.js.map +1 -0
- package/dist/utils/createFileHeaderElement.d.ts +17 -0
- package/dist/utils/createFileHeaderElement.d.ts.map +1 -0
- package/dist/utils/createFileHeaderElement.js +84 -0
- package/dist/utils/createFileHeaderElement.js.map +1 -0
- package/dist/utils/createHoverContentNode.d.ts +5 -0
- package/dist/utils/createHoverContentNode.d.ts.map +1 -0
- package/dist/utils/createHoverContentNode.js +15 -0
- package/dist/utils/createHoverContentNode.js.map +1 -0
- package/dist/utils/createNoNewlineElement.d.ts +7 -0
- package/dist/utils/createNoNewlineElement.d.ts.map +1 -0
- package/dist/utils/createNoNewlineElement.js +24 -0
- package/dist/utils/createNoNewlineElement.js.map +1 -0
- package/dist/utils/createPreElement.d.ts +18 -0
- package/dist/utils/createPreElement.d.ts.map +1 -0
- package/dist/utils/createPreElement.js +28 -0
- package/dist/utils/createPreElement.js.map +1 -0
- package/dist/utils/createRowNodes.d.ts +8 -0
- package/dist/utils/createRowNodes.d.ts.map +1 -0
- package/dist/utils/createRowNodes.js +20 -0
- package/dist/utils/createRowNodes.js.map +1 -0
- package/dist/utils/createSeparator.d.ts +25 -0
- package/dist/utils/createSeparator.d.ts.map +1 -0
- package/dist/utils/createSeparator.js +69 -0
- package/dist/utils/createSeparator.js.map +1 -0
- package/dist/utils/createSpanNodeFromToken.d.ts +7 -0
- package/dist/utils/createSpanNodeFromToken.d.ts.map +1 -0
- package/dist/utils/createSpanNodeFromToken.js +13 -0
- package/dist/utils/createSpanNodeFromToken.js.map +1 -0
- package/dist/utils/createStyleElement.d.ts +7 -0
- package/dist/utils/createStyleElement.d.ts.map +1 -0
- package/dist/utils/createStyleElement.js +19 -0
- package/dist/utils/createStyleElement.js.map +1 -0
- package/dist/utils/createTransformerWithState.d.ts +13 -0
- package/dist/utils/createTransformerWithState.d.ts.map +1 -0
- package/dist/utils/createTransformerWithState.js +56 -0
- package/dist/utils/createTransformerWithState.js.map +1 -0
- package/dist/utils/createUnsafeCSSStyleNode.d.ts +5 -0
- package/dist/utils/createUnsafeCSSStyleNode.d.ts.map +1 -0
- package/dist/utils/createUnsafeCSSStyleNode.js +12 -0
- package/dist/utils/createUnsafeCSSStyleNode.js.map +1 -0
- package/dist/utils/cssWrappers.d.ts +6 -0
- package/dist/utils/cssWrappers.d.ts.map +1 -0
- package/dist/utils/cssWrappers.js +21 -0
- package/dist/utils/cssWrappers.js.map +1 -0
- package/dist/utils/diffAcceptRejectHunk.d.ts +7 -0
- package/dist/utils/diffAcceptRejectHunk.d.ts.map +1 -0
- package/dist/utils/diffAcceptRejectHunk.js +82 -0
- package/dist/utils/diffAcceptRejectHunk.js.map +1 -0
- package/dist/utils/formatCSSVariablePrefix.d.ts +5 -0
- package/dist/utils/formatCSSVariablePrefix.d.ts.map +1 -0
- package/dist/utils/formatCSSVariablePrefix.js +8 -0
- package/dist/utils/formatCSSVariablePrefix.js.map +1 -0
- package/dist/utils/getFiletypeFromFileName.d.ts +9 -0
- package/dist/utils/getFiletypeFromFileName.d.ts.map +1 -0
- package/dist/utils/getFiletypeFromFileName.js +343 -0
- package/dist/utils/getFiletypeFromFileName.js.map +1 -0
- package/dist/utils/getHighlighterOptions.d.ts +14 -0
- package/dist/utils/getHighlighterOptions.d.ts.map +1 -0
- package/dist/utils/getHighlighterOptions.js +13 -0
- package/dist/utils/getHighlighterOptions.js.map +1 -0
- package/dist/utils/getHighlighterThemeStyles.d.ts +16 -0
- package/dist/utils/getHighlighterThemeStyles.d.ts.map +1 -0
- package/dist/utils/getHighlighterThemeStyles.js +40 -0
- package/dist/utils/getHighlighterThemeStyles.js.map +1 -0
- package/dist/utils/getHunkSeparatorSlotName.d.ts +5 -0
- package/dist/utils/getHunkSeparatorSlotName.d.ts.map +1 -0
- package/dist/utils/getHunkSeparatorSlotName.js +8 -0
- package/dist/utils/getHunkSeparatorSlotName.js.map +1 -0
- package/dist/utils/getIconForType.d.ts +8 -0
- package/dist/utils/getIconForType.d.ts.map +1 -0
- package/dist/utils/getIconForType.js +15 -0
- package/dist/utils/getIconForType.js.map +1 -0
- package/dist/utils/getLineAnnotationName.d.ts +7 -0
- package/dist/utils/getLineAnnotationName.d.ts.map +1 -0
- package/dist/utils/getLineAnnotationName.js +8 -0
- package/dist/utils/getLineAnnotationName.js.map +1 -0
- package/dist/utils/getLineEndingType.d.ts +5 -0
- package/dist/utils/getLineEndingType.d.ts.map +1 -0
- package/dist/utils/getLineEndingType.js +11 -0
- package/dist/utils/getLineEndingType.js.map +1 -0
- package/dist/utils/getLineNodes.d.ts +7 -0
- package/dist/utils/getLineNodes.d.ts.map +1 -0
- package/dist/utils/getLineNodes.js +15 -0
- package/dist/utils/getLineNodes.js.map +1 -0
- package/dist/utils/getSingularPatch.d.ts +7 -0
- package/dist/utils/getSingularPatch.d.ts.map +1 -0
- package/dist/utils/getSingularPatch.js +20 -0
- package/dist/utils/getSingularPatch.js.map +1 -0
- package/dist/utils/getThemes.d.ts +7 -0
- package/dist/utils/getThemes.d.ts.map +1 -0
- package/dist/utils/getThemes.js +16 -0
- package/dist/utils/getThemes.js.map +1 -0
- package/dist/utils/getTotalLineCountFromHunks.d.ts +7 -0
- package/dist/utils/getTotalLineCountFromHunks.d.ts.map +1 -0
- package/dist/utils/getTotalLineCountFromHunks.js +10 -0
- package/dist/utils/getTotalLineCountFromHunks.js.map +1 -0
- package/dist/utils/hast_utils.d.ts +31 -0
- package/dist/utils/hast_utils.d.ts.map +1 -0
- package/dist/utils/hast_utils.js +42 -0
- package/dist/utils/hast_utils.js.map +1 -0
- package/dist/utils/isWorkerContext.d.ts +5 -0
- package/dist/utils/isWorkerContext.d.ts.map +1 -0
- package/dist/utils/isWorkerContext.js +8 -0
- package/dist/utils/isWorkerContext.js.map +1 -0
- package/dist/utils/parseDiffDecorations.d.ts +31 -0
- package/dist/utils/parseDiffDecorations.d.ts.map +1 -0
- package/dist/utils/parseDiffDecorations.js +34 -0
- package/dist/utils/parseDiffDecorations.js.map +1 -0
- package/dist/utils/parseDiffFromFile.d.ts +14 -0
- package/dist/utils/parseDiffFromFile.d.ts.map +1 -0
- package/dist/utils/parseDiffFromFile.js +23 -0
- package/dist/utils/parseDiffFromFile.js.map +1 -0
- package/dist/utils/parseLineType.d.ts +11 -0
- package/dist/utils/parseLineType.d.ts.map +1 -0
- package/dist/utils/parseLineType.js +16 -0
- package/dist/utils/parseLineType.js.map +1 -0
- package/dist/utils/parsePatchFiles.d.ts +16 -0
- package/dist/utils/parsePatchFiles.d.ts.map +1 -0
- package/dist/utils/parsePatchFiles.js +204 -0
- package/dist/utils/parsePatchFiles.js.map +1 -0
- package/dist/utils/prerenderHTMLIfNecessary.d.ts +5 -0
- package/dist/utils/prerenderHTMLIfNecessary.d.ts.map +1 -0
- package/dist/utils/prerenderHTMLIfNecessary.js +10 -0
- package/dist/utils/prerenderHTMLIfNecessary.js.map +1 -0
- package/dist/utils/processLine.d.ts +8 -0
- package/dist/utils/processLine.d.ts.map +1 -0
- package/dist/utils/processLine.js +42 -0
- package/dist/utils/processLine.js.map +1 -0
- package/dist/utils/renderDiffWithHighlighter.d.ts +7 -0
- package/dist/utils/renderDiffWithHighlighter.d.ts.map +1 -0
- package/dist/utils/renderDiffWithHighlighter.js +323 -0
- package/dist/utils/renderDiffWithHighlighter.js.map +1 -0
- package/dist/utils/renderFileWithHighlighter.d.ts +10 -0
- package/dist/utils/renderFileWithHighlighter.d.ts.map +1 -0
- package/dist/utils/renderFileWithHighlighter.js +52 -0
- package/dist/utils/renderFileWithHighlighter.js.map +1 -0
- package/dist/utils/setLanguageOverride.d.ts +7 -0
- package/dist/utils/setLanguageOverride.d.ts.map +1 -0
- package/dist/utils/setLanguageOverride.js +11 -0
- package/dist/utils/setLanguageOverride.js.map +1 -0
- package/dist/utils/setWrapperNodeProps.d.ts +20 -0
- package/dist/utils/setWrapperNodeProps.d.ts.map +1 -0
- package/dist/utils/setWrapperNodeProps.js +29 -0
- package/dist/utils/setWrapperNodeProps.js.map +1 -0
- package/dist/worker/WorkerPoolManager.d.ts +72 -0
- package/dist/worker/WorkerPoolManager.d.ts.map +1 -0
- package/dist/worker/WorkerPoolManager.js +421 -0
- package/dist/worker/WorkerPoolManager.js.map +1 -0
- package/dist/worker/getOrCreateWorkerPoolSingleton.d.ts +16 -0
- package/dist/worker/getOrCreateWorkerPoolSingleton.d.ts.map +1 -0
- package/dist/worker/getOrCreateWorkerPoolSingleton.js +20 -0
- package/dist/worker/getOrCreateWorkerPoolSingleton.js.map +1 -0
- package/dist/worker/index.d.ts +4 -0
- package/dist/worker/index.js +4 -0
- package/dist/worker/types.d.ts +140 -0
- package/dist/worker/types.d.ts.map +1 -0
- package/dist/worker/types.js +0 -0
- package/dist/worker/worker-portable.d.ts +1 -0
- package/dist/worker/worker-portable.js +14872 -0
- package/dist/worker/worker-portable.js.map +1 -0
- package/dist/worker/worker.d.ts +1 -0
- package/dist/worker/worker.js +1061 -0
- package/dist/worker/worker.js.map +1 -0
- package/package.json +76 -0
|
@@ -0,0 +1,421 @@
|
|
|
1
|
+
import { DEFAULT_THEMES } from "../constants.js";
|
|
2
|
+
import { attachResolvedThemes } from "../highlighter/themes/attachResolvedThemes.js";
|
|
3
|
+
import { getSharedHighlighter } from "../highlighter/shared_highlighter.js";
|
|
4
|
+
import { getThemes } from "../utils/getThemes.js";
|
|
5
|
+
import { hasResolvedThemes } from "../highlighter/themes/hasResolvedThemes.js";
|
|
6
|
+
import { areThemesEqual } from "../utils/areThemesEqual.js";
|
|
7
|
+
import { getFiletypeFromFileName } from "../utils/getFiletypeFromFileName.js";
|
|
8
|
+
import { renderFileWithHighlighter } from "../utils/renderFileWithHighlighter.js";
|
|
9
|
+
import { renderDiffWithHighlighter } from "../utils/renderDiffWithHighlighter.js";
|
|
10
|
+
import { getResolvedLanguages } from "../highlighter/languages/getResolvedLanguages.js";
|
|
11
|
+
import { hasResolvedLanguages } from "../highlighter/languages/hasResolvedLanguages.js";
|
|
12
|
+
import { resolveLanguages } from "../highlighter/languages/resolveLanguages.js";
|
|
13
|
+
import { getResolvedThemes } from "../highlighter/themes/getResolvedThemes.js";
|
|
14
|
+
import { resolveThemes } from "../highlighter/themes/resolveThemes.js";
|
|
15
|
+
import { LRUMap } from "lru_map";
|
|
16
|
+
|
|
17
|
+
//#region src/worker/WorkerPoolManager.ts
|
|
18
|
+
const IGNORE_RESPONSE = Symbol("IGNORE_RESPONSE");
|
|
19
|
+
var WorkerPoolManager = class {
|
|
20
|
+
highlighter;
|
|
21
|
+
renderOptions;
|
|
22
|
+
initialized = false;
|
|
23
|
+
workers = [];
|
|
24
|
+
taskQueue = [];
|
|
25
|
+
pendingTasks = /* @__PURE__ */ new Map();
|
|
26
|
+
nextRequestId = 0;
|
|
27
|
+
themeSubscribers = /* @__PURE__ */ new Set();
|
|
28
|
+
workersFailed = false;
|
|
29
|
+
instanceRequestMap = /* @__PURE__ */ new Map();
|
|
30
|
+
fileCache;
|
|
31
|
+
diffCache;
|
|
32
|
+
constructor(options, { langs, theme = DEFAULT_THEMES, lineDiffType = "word-alt", tokenizeMaxLineLength = 1e3 }) {
|
|
33
|
+
this.options = options;
|
|
34
|
+
this.renderOptions = {
|
|
35
|
+
theme,
|
|
36
|
+
lineDiffType,
|
|
37
|
+
tokenizeMaxLineLength
|
|
38
|
+
};
|
|
39
|
+
this.fileCache = new LRUMap(options.totalASTLRUCacheSize ?? 100);
|
|
40
|
+
this.diffCache = new LRUMap(options.totalASTLRUCacheSize ?? 100);
|
|
41
|
+
this.initialize(langs);
|
|
42
|
+
}
|
|
43
|
+
isWorkingPool() {
|
|
44
|
+
return !this.workersFailed;
|
|
45
|
+
}
|
|
46
|
+
getFileResultCache(file) {
|
|
47
|
+
return file.cacheKey != null ? this.fileCache.get(file.cacheKey) : void 0;
|
|
48
|
+
}
|
|
49
|
+
getDiffResultCache(diff) {
|
|
50
|
+
return diff.cacheKey != null ? this.diffCache.get(diff.cacheKey) : void 0;
|
|
51
|
+
}
|
|
52
|
+
inspectCaches() {
|
|
53
|
+
const { fileCache, diffCache } = this;
|
|
54
|
+
return {
|
|
55
|
+
fileCache,
|
|
56
|
+
diffCache
|
|
57
|
+
};
|
|
58
|
+
}
|
|
59
|
+
evictFileFromCache(cacheKey) {
|
|
60
|
+
return this.fileCache.delete(cacheKey) !== void 0;
|
|
61
|
+
}
|
|
62
|
+
evictDiffFromCache(cacheKey) {
|
|
63
|
+
return this.diffCache.delete(cacheKey) !== void 0;
|
|
64
|
+
}
|
|
65
|
+
async setRenderOptions({ theme = DEFAULT_THEMES, lineDiffType = "word-alt", tokenizeMaxLineLength = 1e3 }) {
|
|
66
|
+
const newRenderOptions = {
|
|
67
|
+
theme,
|
|
68
|
+
lineDiffType,
|
|
69
|
+
tokenizeMaxLineLength
|
|
70
|
+
};
|
|
71
|
+
if (!this.isInitialized()) await this.initialize();
|
|
72
|
+
const themesEqual = areThemesEqual(newRenderOptions.theme, this.renderOptions.theme);
|
|
73
|
+
if (themesEqual && newRenderOptions.lineDiffType === this.renderOptions.lineDiffType && newRenderOptions.tokenizeMaxLineLength === this.renderOptions.tokenizeMaxLineLength) return;
|
|
74
|
+
const themeNames = getThemes(theme);
|
|
75
|
+
let resolvedThemes = [];
|
|
76
|
+
if (!themesEqual) if (hasResolvedThemes(themeNames)) resolvedThemes = getResolvedThemes(themeNames);
|
|
77
|
+
else resolvedThemes = await resolveThemes(themeNames);
|
|
78
|
+
if (this.highlighter != null) {
|
|
79
|
+
attachResolvedThemes(resolvedThemes, this.highlighter);
|
|
80
|
+
await this.setRenderOptionsOnWorkers(newRenderOptions, resolvedThemes);
|
|
81
|
+
} else {
|
|
82
|
+
const [highlighter] = await Promise.all([getSharedHighlighter({
|
|
83
|
+
themes: themeNames,
|
|
84
|
+
langs: ["text"]
|
|
85
|
+
}), this.setRenderOptionsOnWorkers(newRenderOptions, resolvedThemes)]);
|
|
86
|
+
this.highlighter = highlighter;
|
|
87
|
+
}
|
|
88
|
+
this.renderOptions = newRenderOptions;
|
|
89
|
+
this.diffCache.clear();
|
|
90
|
+
this.fileCache.clear();
|
|
91
|
+
for (const instance of this.themeSubscribers) instance.rerender();
|
|
92
|
+
}
|
|
93
|
+
getFileRenderOptions() {
|
|
94
|
+
const { tokenizeMaxLineLength, theme } = this.renderOptions;
|
|
95
|
+
return {
|
|
96
|
+
theme,
|
|
97
|
+
tokenizeMaxLineLength
|
|
98
|
+
};
|
|
99
|
+
}
|
|
100
|
+
getDiffRenderOptions() {
|
|
101
|
+
return { ...this.renderOptions };
|
|
102
|
+
}
|
|
103
|
+
async setRenderOptionsOnWorkers(renderOptions, resolvedThemes) {
|
|
104
|
+
if (this.workersFailed) return;
|
|
105
|
+
if (!this.isInitialized()) await this.initialize();
|
|
106
|
+
const taskPromises = [];
|
|
107
|
+
for (const managedWorker of this.workers) {
|
|
108
|
+
if (!managedWorker.initialized) {
|
|
109
|
+
console.log({ managedWorker });
|
|
110
|
+
throw new Error("setRenderOptionsOnWorkers: Somehow we have an uninitialized worker");
|
|
111
|
+
}
|
|
112
|
+
taskPromises.push(new Promise((resolve, reject) => {
|
|
113
|
+
const id = this.generateRequestId();
|
|
114
|
+
const task = {
|
|
115
|
+
type: "set-render-options",
|
|
116
|
+
id,
|
|
117
|
+
request: {
|
|
118
|
+
type: "set-render-options",
|
|
119
|
+
id,
|
|
120
|
+
renderOptions,
|
|
121
|
+
resolvedThemes
|
|
122
|
+
},
|
|
123
|
+
resolve,
|
|
124
|
+
reject,
|
|
125
|
+
requestStart: Date.now()
|
|
126
|
+
};
|
|
127
|
+
this.pendingTasks.set(id, task);
|
|
128
|
+
managedWorker.worker.postMessage(task.request);
|
|
129
|
+
}));
|
|
130
|
+
}
|
|
131
|
+
await Promise.all(taskPromises);
|
|
132
|
+
}
|
|
133
|
+
subscribeToThemeChanges(instance) {
|
|
134
|
+
this.themeSubscribers.add(instance);
|
|
135
|
+
return () => {
|
|
136
|
+
this.unsubscribeToThemeChanges(instance);
|
|
137
|
+
};
|
|
138
|
+
}
|
|
139
|
+
unsubscribeToThemeChanges(instance) {
|
|
140
|
+
this.themeSubscribers.delete(instance);
|
|
141
|
+
}
|
|
142
|
+
isInitialized() {
|
|
143
|
+
return this.initialized === true;
|
|
144
|
+
}
|
|
145
|
+
async initialize(languages = []) {
|
|
146
|
+
if (this.initialized === true) return;
|
|
147
|
+
else if (this.initialized === false) this.initialized = new Promise((resolve, reject) => {
|
|
148
|
+
(async () => {
|
|
149
|
+
try {
|
|
150
|
+
const themes = getThemes(this.renderOptions.theme);
|
|
151
|
+
let resolvedThemes = [];
|
|
152
|
+
if (hasResolvedThemes(themes)) resolvedThemes = getResolvedThemes(themes);
|
|
153
|
+
else resolvedThemes = await resolveThemes(themes);
|
|
154
|
+
let resolvedLanguages = [];
|
|
155
|
+
if (hasResolvedLanguages(languages)) resolvedLanguages = getResolvedLanguages(languages);
|
|
156
|
+
else resolvedLanguages = await resolveLanguages(languages);
|
|
157
|
+
const [highlighter] = await Promise.all([getSharedHighlighter({
|
|
158
|
+
themes,
|
|
159
|
+
langs: ["text", ...languages]
|
|
160
|
+
}), this.initializeWorkers(resolvedThemes, resolvedLanguages)]);
|
|
161
|
+
if (this.initialized === false) {
|
|
162
|
+
this.terminateWorkers();
|
|
163
|
+
reject();
|
|
164
|
+
return;
|
|
165
|
+
}
|
|
166
|
+
this.highlighter = highlighter;
|
|
167
|
+
this.initialized = true;
|
|
168
|
+
this.diffCache.clear();
|
|
169
|
+
this.fileCache.clear();
|
|
170
|
+
this.drainQueue();
|
|
171
|
+
resolve();
|
|
172
|
+
} catch (e) {
|
|
173
|
+
this.initialized = false;
|
|
174
|
+
this.workersFailed = true;
|
|
175
|
+
reject(e);
|
|
176
|
+
}
|
|
177
|
+
})();
|
|
178
|
+
});
|
|
179
|
+
else return this.initialized;
|
|
180
|
+
}
|
|
181
|
+
async initializeWorkers(resolvedThemes, resolvedLanguages) {
|
|
182
|
+
this.workersFailed = false;
|
|
183
|
+
const initPromises = [];
|
|
184
|
+
if (this.workers.length > 0) this.terminateWorkers();
|
|
185
|
+
for (let i = 0; i < (this.options.poolSize ?? 8); i++) {
|
|
186
|
+
const worker = this.options.workerFactory();
|
|
187
|
+
const managedWorker = {
|
|
188
|
+
worker,
|
|
189
|
+
busy: false,
|
|
190
|
+
initialized: false,
|
|
191
|
+
langs: new Set(["text", ...resolvedLanguages.map(({ name }) => name)])
|
|
192
|
+
};
|
|
193
|
+
worker.addEventListener("message", (event) => {
|
|
194
|
+
this.handleWorkerMessage(managedWorker, event.data);
|
|
195
|
+
});
|
|
196
|
+
worker.addEventListener("error", (error) => console.error("Worker error:", error, managedWorker));
|
|
197
|
+
this.workers.push(managedWorker);
|
|
198
|
+
initPromises.push(new Promise((resolve, reject) => {
|
|
199
|
+
const id = this.generateRequestId();
|
|
200
|
+
const task = {
|
|
201
|
+
type: "initialize",
|
|
202
|
+
id,
|
|
203
|
+
request: {
|
|
204
|
+
type: "initialize",
|
|
205
|
+
id,
|
|
206
|
+
renderOptions: this.renderOptions,
|
|
207
|
+
resolvedThemes,
|
|
208
|
+
resolvedLanguages
|
|
209
|
+
},
|
|
210
|
+
resolve() {
|
|
211
|
+
managedWorker.initialized = true;
|
|
212
|
+
resolve();
|
|
213
|
+
},
|
|
214
|
+
reject,
|
|
215
|
+
requestStart: Date.now()
|
|
216
|
+
};
|
|
217
|
+
this.pendingTasks.set(id, task);
|
|
218
|
+
this.executeTask(managedWorker, task);
|
|
219
|
+
}));
|
|
220
|
+
}
|
|
221
|
+
await Promise.all(initPromises);
|
|
222
|
+
}
|
|
223
|
+
drainQueue = () => {
|
|
224
|
+
this._queuedDrain = void 0;
|
|
225
|
+
if (this.initialized !== true || this.taskQueue.length === 0) return;
|
|
226
|
+
while (this.taskQueue.length > 0) {
|
|
227
|
+
const task = this.taskQueue[0];
|
|
228
|
+
const langs = getLangsFromTask(task);
|
|
229
|
+
const availableWorker = this.getAvailableWorker(langs);
|
|
230
|
+
if (availableWorker == null) break;
|
|
231
|
+
this.taskQueue.shift();
|
|
232
|
+
this.resolveLanguagesAndExecuteTask(availableWorker, task, langs);
|
|
233
|
+
}
|
|
234
|
+
};
|
|
235
|
+
highlightFileAST(instance, file) {
|
|
236
|
+
this.submitTask(instance, {
|
|
237
|
+
type: "file",
|
|
238
|
+
file
|
|
239
|
+
});
|
|
240
|
+
}
|
|
241
|
+
getPlainFileAST(file) {
|
|
242
|
+
if (this.highlighter == null) {
|
|
243
|
+
this.initialize();
|
|
244
|
+
return;
|
|
245
|
+
}
|
|
246
|
+
return renderFileWithHighlighter(file, this.highlighter, this.renderOptions, true);
|
|
247
|
+
}
|
|
248
|
+
highlightDiffAST(instance, diff) {
|
|
249
|
+
this.submitTask(instance, {
|
|
250
|
+
type: "diff",
|
|
251
|
+
diff
|
|
252
|
+
});
|
|
253
|
+
}
|
|
254
|
+
getPlainDiffAST(diff) {
|
|
255
|
+
return this.highlighter != null ? renderDiffWithHighlighter(diff, this.highlighter, this.renderOptions, true) : void 0;
|
|
256
|
+
}
|
|
257
|
+
terminate() {
|
|
258
|
+
this.terminateWorkers();
|
|
259
|
+
this.fileCache.clear();
|
|
260
|
+
this.diffCache.clear();
|
|
261
|
+
this.instanceRequestMap.clear();
|
|
262
|
+
this.taskQueue.length = 0;
|
|
263
|
+
this.pendingTasks.clear();
|
|
264
|
+
this.highlighter = void 0;
|
|
265
|
+
this.initialized = false;
|
|
266
|
+
this.workersFailed = false;
|
|
267
|
+
}
|
|
268
|
+
terminateWorkers() {
|
|
269
|
+
for (const managedWorker of this.workers) managedWorker.worker.terminate();
|
|
270
|
+
this.workers.length = 0;
|
|
271
|
+
}
|
|
272
|
+
getStats() {
|
|
273
|
+
return {
|
|
274
|
+
totalWorkers: this.workers.length,
|
|
275
|
+
busyWorkers: this.workers.filter((w) => w.busy).length,
|
|
276
|
+
queuedTasks: this.taskQueue.length,
|
|
277
|
+
pendingTasks: this.pendingTasks.size
|
|
278
|
+
};
|
|
279
|
+
}
|
|
280
|
+
submitTask(instance, request) {
|
|
281
|
+
if (this.initialized === false) this.initialize();
|
|
282
|
+
const id = this.generateRequestId();
|
|
283
|
+
const requestStart = Date.now();
|
|
284
|
+
const task = (() => {
|
|
285
|
+
switch (request.type) {
|
|
286
|
+
case "file": return {
|
|
287
|
+
type: "file",
|
|
288
|
+
id,
|
|
289
|
+
request: {
|
|
290
|
+
...request,
|
|
291
|
+
id
|
|
292
|
+
},
|
|
293
|
+
instance,
|
|
294
|
+
requestStart
|
|
295
|
+
};
|
|
296
|
+
case "diff": return {
|
|
297
|
+
type: "diff",
|
|
298
|
+
id,
|
|
299
|
+
request: {
|
|
300
|
+
...request,
|
|
301
|
+
id
|
|
302
|
+
},
|
|
303
|
+
instance,
|
|
304
|
+
requestStart
|
|
305
|
+
};
|
|
306
|
+
}
|
|
307
|
+
})();
|
|
308
|
+
this.instanceRequestMap.set(instance, id);
|
|
309
|
+
this.taskQueue.push(task);
|
|
310
|
+
this.queueDrain();
|
|
311
|
+
}
|
|
312
|
+
async resolveLanguagesAndExecuteTask(availableWorker, task, langs) {
|
|
313
|
+
if (task.type === "file" || task.type === "diff") {
|
|
314
|
+
const workerMissingLangs = langs.filter((lang) => !availableWorker.langs.has(lang));
|
|
315
|
+
if (workerMissingLangs.length > 0) if (hasResolvedLanguages(workerMissingLangs)) task.request.resolvedLanguages = getResolvedLanguages(workerMissingLangs);
|
|
316
|
+
else task.request.resolvedLanguages = await resolveLanguages(workerMissingLangs);
|
|
317
|
+
}
|
|
318
|
+
this.executeTask(availableWorker, task);
|
|
319
|
+
}
|
|
320
|
+
handleWorkerMessage(managedWorker, response) {
|
|
321
|
+
const task = this.pendingTasks.get(response.id);
|
|
322
|
+
try {
|
|
323
|
+
if (task == null) throw new Error("handleWorkerMessage: Received response for unknown task");
|
|
324
|
+
else if (response.type === "error") {
|
|
325
|
+
const error = new Error(response.error);
|
|
326
|
+
if (response.stack) error.stack = response.stack;
|
|
327
|
+
if ("reject" in task) task.reject(error);
|
|
328
|
+
else task.instance.onHighlightError(error);
|
|
329
|
+
throw error;
|
|
330
|
+
} else {
|
|
331
|
+
if ("instance" in task && this.instanceRequestMap.get(task.instance) !== response.id) throw IGNORE_RESPONSE;
|
|
332
|
+
switch (response.requestType) {
|
|
333
|
+
case "initialize":
|
|
334
|
+
if (task.type !== "initialize") throw new Error("handleWorkerMessage: task/response dont match");
|
|
335
|
+
task.resolve();
|
|
336
|
+
break;
|
|
337
|
+
case "set-render-options":
|
|
338
|
+
if (task.type !== "set-render-options") throw new Error("handleWorkerMessage: task/response dont match");
|
|
339
|
+
task.resolve();
|
|
340
|
+
break;
|
|
341
|
+
case "file": {
|
|
342
|
+
if (task.type !== "file") throw new Error("handleWorkerMessage: task/response dont match");
|
|
343
|
+
const { result, options } = response;
|
|
344
|
+
const { instance, request } = task;
|
|
345
|
+
if (request.file.cacheKey != null) this.fileCache.set(request.file.cacheKey, {
|
|
346
|
+
result,
|
|
347
|
+
options
|
|
348
|
+
});
|
|
349
|
+
instance.onHighlightSuccess(request.file, result, options);
|
|
350
|
+
break;
|
|
351
|
+
}
|
|
352
|
+
case "diff": {
|
|
353
|
+
if (task.type !== "diff") throw new Error("handleWorkerMessage: task/response dont match");
|
|
354
|
+
const { result, options } = response;
|
|
355
|
+
const { instance, request } = task;
|
|
356
|
+
if (request.diff.cacheKey != null) this.diffCache.set(request.diff.cacheKey, {
|
|
357
|
+
result,
|
|
358
|
+
options
|
|
359
|
+
});
|
|
360
|
+
instance.onHighlightSuccess(request.diff, result, options);
|
|
361
|
+
break;
|
|
362
|
+
}
|
|
363
|
+
}
|
|
364
|
+
}
|
|
365
|
+
} catch (error) {
|
|
366
|
+
if (error !== IGNORE_RESPONSE) console.error(error, task, response);
|
|
367
|
+
}
|
|
368
|
+
if (task != null && "instance" in task && this.instanceRequestMap.get(task.instance) === response.id) this.instanceRequestMap.delete(task.instance);
|
|
369
|
+
this.pendingTasks.delete(response.id);
|
|
370
|
+
managedWorker.busy = false;
|
|
371
|
+
if (this.taskQueue.length > 0) this.queueDrain();
|
|
372
|
+
}
|
|
373
|
+
_queuedDrain;
|
|
374
|
+
queueDrain() {
|
|
375
|
+
if (this._queuedDrain != null) return;
|
|
376
|
+
this._queuedDrain = Promise.resolve().then(this.drainQueue);
|
|
377
|
+
}
|
|
378
|
+
executeTask(managedWorker, task) {
|
|
379
|
+
managedWorker.busy = true;
|
|
380
|
+
this.pendingTasks.set(task.id, task);
|
|
381
|
+
for (const lang of getLangsFromTask(task)) managedWorker.langs.add(lang);
|
|
382
|
+
managedWorker.worker.postMessage(task.request);
|
|
383
|
+
}
|
|
384
|
+
getAvailableWorker(langs) {
|
|
385
|
+
let worker;
|
|
386
|
+
for (const managedWorker of this.workers) {
|
|
387
|
+
if (managedWorker.busy || !managedWorker.initialized) continue;
|
|
388
|
+
worker = managedWorker;
|
|
389
|
+
if (langs.length === 0) break;
|
|
390
|
+
let hasEveryLang = true;
|
|
391
|
+
for (const lang of langs) if (!managedWorker.langs.has(lang)) {
|
|
392
|
+
hasEveryLang = false;
|
|
393
|
+
break;
|
|
394
|
+
}
|
|
395
|
+
if (hasEveryLang) break;
|
|
396
|
+
}
|
|
397
|
+
return worker;
|
|
398
|
+
}
|
|
399
|
+
generateRequestId() {
|
|
400
|
+
return `req_${++this.nextRequestId}`;
|
|
401
|
+
}
|
|
402
|
+
};
|
|
403
|
+
function getLangsFromTask(task) {
|
|
404
|
+
const langs = /* @__PURE__ */ new Set();
|
|
405
|
+
if (task.type === "initialize" || task.type === "set-render-options") return [];
|
|
406
|
+
switch (task.type) {
|
|
407
|
+
case "file":
|
|
408
|
+
langs.add(task.request.file.lang ?? getFiletypeFromFileName(task.request.file.name));
|
|
409
|
+
break;
|
|
410
|
+
case "diff":
|
|
411
|
+
langs.add(task.request.diff.lang ?? getFiletypeFromFileName(task.request.diff.name));
|
|
412
|
+
langs.add(task.request.diff.lang ?? getFiletypeFromFileName(task.request.diff.prevName ?? "-"));
|
|
413
|
+
break;
|
|
414
|
+
}
|
|
415
|
+
langs.delete("text");
|
|
416
|
+
return Array.from(langs);
|
|
417
|
+
}
|
|
418
|
+
|
|
419
|
+
//#endregion
|
|
420
|
+
export { WorkerPoolManager };
|
|
421
|
+
//# sourceMappingURL=WorkerPoolManager.js.map
|
|
@@ -0,0 +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: RenderFileTask | RenderDiffTask","worker: ManagedWorker | undefined"],"sources":["../../src/worker/WorkerPoolManager.ts"],"sourcesContent":["import { LRUMap } 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 RenderDiffOptions,\n RenderDiffResult,\n RenderFileOptions,\n RenderFileResult,\n SupportedLanguages,\n ThemeRegistrationResolved,\n ThemedDiffResult,\n ThemedFileResult,\n} from '../types';\nimport { areThemesEqual } from '../utils/areThemesEqual';\nimport { getFiletypeFromFileName } from '../utils/getFiletypeFromFileName';\nimport { getThemes } from '../utils/getThemes';\nimport { renderDiffWithHighlighter } from '../utils/renderDiffWithHighlighter';\nimport { renderFileWithHighlighter } from '../utils/renderFileWithHighlighter';\nimport type {\n AllWorkerTasks,\n DiffRendererInstance,\n FileRendererInstance,\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\ninterface GetCachesResult {\n fileCache: LRUMap<string, RenderFileResult>;\n diffCache: LRUMap<string, RenderDiffResult>;\n}\n\ninterface ManagedWorker {\n worker: Worker;\n busy: boolean;\n initialized: boolean;\n langs: Set<SupportedLanguages>;\n}\n\ninterface ThemeSubscriber {\n rerender(): void;\n}\n\nexport class WorkerPoolManager {\n private highlighter: DiffsHighlighter | undefined;\n private renderOptions: WorkerRenderingOptions;\n private initialized: Promise<void> | boolean = false;\n private workers: ManagedWorker[] = [];\n private taskQueue: AllWorkerTasks[] = [];\n private pendingTasks = new Map<WorkerRequestId, AllWorkerTasks>();\n private nextRequestId = 0;\n private themeSubscribers = new Set<ThemeSubscriber>();\n private workersFailed = false;\n private instanceRequestMap = new Map<\n FileRendererInstance | DiffRendererInstance,\n string\n >();\n private fileCache: LRUMap<string, RenderFileResult>;\n private diffCache: LRUMap<string, RenderDiffResult>;\n\n constructor(\n private options: WorkerPoolOptions,\n {\n langs,\n theme = DEFAULT_THEMES,\n lineDiffType = 'word-alt',\n tokenizeMaxLineLength = 1000,\n }: WorkerInitializationRenderOptions\n ) {\n this.renderOptions = { theme, lineDiffType, tokenizeMaxLineLength };\n this.fileCache = new LRUMap(options.totalASTLRUCacheSize ?? 100);\n this.diffCache = new LRUMap(options.totalASTLRUCacheSize ?? 100);\n void this.initialize(langs);\n }\n\n isWorkingPool(): boolean {\n return !this.workersFailed;\n }\n\n getFileResultCache(file: FileContents): RenderFileResult | undefined {\n return file.cacheKey != null\n ? this.fileCache.get(file.cacheKey)\n : undefined;\n }\n\n getDiffResultCache(diff: FileDiffMetadata): RenderDiffResult | undefined {\n return diff.cacheKey != null\n ? this.diffCache.get(diff.cacheKey)\n : undefined;\n }\n\n inspectCaches(): GetCachesResult {\n const { fileCache, diffCache } = this;\n return { fileCache, diffCache };\n }\n\n evictFileFromCache(cacheKey: string): boolean {\n return this.fileCache.delete(cacheKey) !== undefined;\n }\n\n evictDiffFromCache(cacheKey: string): boolean {\n return this.diffCache.delete(cacheKey) !== undefined;\n }\n\n async setRenderOptions({\n theme = DEFAULT_THEMES,\n lineDiffType = 'word-alt',\n tokenizeMaxLineLength = 1000,\n }: Partial<WorkerRenderingOptions>): Promise<void> {\n const newRenderOptions: WorkerRenderingOptions = {\n theme,\n lineDiffType,\n tokenizeMaxLineLength,\n };\n if (!this.isInitialized()) {\n await this.initialize();\n }\n const themesEqual = areThemesEqual(\n newRenderOptions.theme,\n this.renderOptions.theme\n );\n if (\n themesEqual &&\n newRenderOptions.lineDiffType === this.renderOptions.lineDiffType &&\n newRenderOptions.tokenizeMaxLineLength ===\n this.renderOptions.tokenizeMaxLineLength\n ) {\n return;\n }\n\n const themeNames = getThemes(theme);\n let resolvedThemes: ThemeRegistrationResolved[] = [];\n if (!themesEqual) {\n if (hasResolvedThemes(themeNames)) {\n resolvedThemes = getResolvedThemes(themeNames);\n } else {\n resolvedThemes = await resolveThemes(themeNames);\n }\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({ themes: themeNames, langs: ['text'] }),\n this.setRenderOptionsOnWorkers(newRenderOptions, resolvedThemes),\n ]);\n this.highlighter = highlighter;\n }\n\n this.renderOptions = newRenderOptions;\n this.diffCache.clear();\n this.fileCache.clear();\n\n for (const instance of this.themeSubscribers) {\n instance.rerender();\n }\n }\n\n getFileRenderOptions(): RenderFileOptions {\n const { tokenizeMaxLineLength, theme } = this.renderOptions;\n return { theme, tokenizeMaxLineLength };\n }\n\n 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 this.pendingTasks.set(id, task);\n managedWorker.worker.postMessage(task.request);\n })\n );\n }\n await Promise.all(taskPromises);\n }\n\n subscribeToThemeChanges(instance: ThemeSubscriber): () => void {\n this.themeSubscribers.add(instance);\n return () => {\n this.unsubscribeToThemeChanges(instance);\n };\n }\n\n unsubscribeToThemeChanges(instance: ThemeSubscriber): void {\n this.themeSubscribers.delete(instance);\n }\n\n isInitialized(): boolean {\n return this.initialized === true;\n }\n\n async initialize(languages: SupportedLanguages[] = []): Promise<void> {\n if (this.initialized === true) {\n return;\n } else if (this.initialized === false) {\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\n let resolvedLanguages: ResolvedLanguage[] = [];\n if (hasResolvedLanguages(languages)) {\n resolvedLanguages = getResolvedLanguages(languages);\n } else {\n resolvedLanguages = await resolveLanguages(languages);\n }\n\n const [highlighter] = await Promise.all([\n getSharedHighlighter({ themes, langs: ['text', ...languages] }),\n this.initializeWorkers(resolvedThemes, resolvedLanguages),\n ]);\n\n // If we were terminated while initializing, we should probably kill\n // any workers that may have been created\n if (this.initialized === false) {\n this.terminateWorkers();\n reject();\n return;\n }\n this.highlighter = highlighter;\n this.initialized = true;\n this.diffCache.clear();\n this.fileCache.clear();\n this.drainQueue();\n resolve();\n } catch (e) {\n this.initialized = false;\n this.workersFailed = true;\n reject(e);\n }\n })();\n });\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 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 busy: false,\n initialized: false,\n langs: new Set(['text', ...resolvedLanguages.map(({ name }) => name)]),\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 resolvedThemes,\n resolvedLanguages,\n },\n resolve() {\n managedWorker.initialized = true;\n resolve();\n },\n reject,\n requestStart: Date.now(),\n };\n this.pendingTasks.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.taskQueue.length === 0) {\n return;\n }\n while (this.taskQueue.length > 0) {\n const task = this.taskQueue[0];\n const langs = getLangsFromTask(task);\n const availableWorker = this.getAvailableWorker(langs);\n if (availableWorker == null) {\n break;\n }\n this.taskQueue.shift();\n void this.resolveLanguagesAndExecuteTask(availableWorker, task, langs);\n }\n };\n\n highlightFileAST(instance: FileRendererInstance, file: FileContents): void {\n this.submitTask(instance, { type: 'file', file });\n }\n\n getPlainFileAST(file: FileContents): ThemedFileResult | undefined {\n if (this.highlighter == null) {\n void this.initialize();\n return undefined;\n }\n return renderFileWithHighlighter(\n file,\n this.highlighter,\n this.renderOptions,\n true\n );\n }\n\n highlightDiffAST(\n instance: DiffRendererInstance,\n diff: FileDiffMetadata\n ): void {\n this.submitTask(instance, { type: 'diff', diff });\n }\n\n getPlainDiffAST(diff: FileDiffMetadata): ThemedDiffResult | undefined {\n return this.highlighter != null\n ? renderDiffWithHighlighter(\n diff,\n this.highlighter,\n this.renderOptions,\n true\n )\n : undefined;\n }\n\n terminate(): void {\n this.terminateWorkers();\n this.fileCache.clear();\n this.diffCache.clear();\n this.instanceRequestMap.clear();\n this.taskQueue.length = 0;\n this.pendingTasks.clear();\n this.highlighter = undefined;\n this.initialized = false;\n this.workersFailed = false;\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 getStats(): WorkerStats {\n return {\n totalWorkers: this.workers.length,\n busyWorkers: this.workers.filter((w) => w.busy).length,\n queuedTasks: this.taskQueue.length,\n pendingTasks: this.pendingTasks.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 void this.initialize();\n }\n\n const id = this.generateRequestId();\n const requestStart = Date.now();\n const task: RenderFileTask | RenderDiffTask = (() => {\n switch (request.type) {\n case 'file':\n return {\n type: 'file',\n id,\n request: { ...request, id },\n instance: instance as FileRendererInstance,\n requestStart,\n };\n case 'diff':\n return {\n type: 'diff',\n id,\n request: { ...request, id },\n instance: instance as DiffRendererInstance,\n requestStart,\n };\n }\n })();\n\n this.instanceRequestMap.set(instance, id);\n this.taskQueue.push(task);\n this.queueDrain();\n }\n\n private async resolveLanguagesAndExecuteTask(\n availableWorker: ManagedWorker,\n task: AllWorkerTasks,\n langs: SupportedLanguages[]\n ): Promise<void> {\n // Add resolved languages if required\n if (task.type === 'file' || task.type === 'diff') {\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 }\n this.executeTask(availableWorker, task);\n }\n\n private handleWorkerMessage(\n managedWorker: ManagedWorker,\n response: WorkerResponse\n ): void {\n const task = this.pendingTasks.get(response.id);\n try {\n if (task == null) {\n throw new Error(\n 'handleWorkerMessage: Received response for unknown task'\n );\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 {\n task.instance.onHighlightError(error);\n }\n throw error;\n } else {\n // If we've gotten a newer request from the same instance, we should\n // ignore this response either because it's out of order or because we\n // have a newer more important request\n if (\n 'instance' in task &&\n this.instanceRequestMap.get(task.instance) !== response.id\n ) {\n throw IGNORE_RESPONSE;\n }\n switch (response.requestType) {\n case 'initialize':\n if (task.type !== 'initialize') {\n throw new Error('handleWorkerMessage: task/response dont match');\n }\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 { instance, request } = task;\n if (request.file.cacheKey != null) {\n this.fileCache.set(request.file.cacheKey, { result, options });\n }\n instance.onHighlightSuccess(request.file, 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 { instance, request } = task;\n if (request.diff.cacheKey != null) {\n this.diffCache.set(request.diff.cacheKey, { result, options });\n }\n instance.onHighlightSuccess(request.diff, 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 if (\n task != null &&\n 'instance' in task &&\n this.instanceRequestMap.get(task.instance) === response.id\n ) {\n this.instanceRequestMap.delete(task.instance);\n }\n this.pendingTasks.delete(response.id);\n managedWorker.busy = false;\n if (this.taskQueue.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 }\n\n private executeTask(\n managedWorker: ManagedWorker,\n task: AllWorkerTasks\n ): void {\n managedWorker.busy = true;\n this.pendingTasks.set(task.id, task);\n for (const lang of getLangsFromTask(task)) {\n managedWorker.langs.add(lang);\n }\n managedWorker.worker.postMessage(task.request);\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.busy || !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 generateRequestId(): WorkerRequestId {\n return `req_${++this.nextRequestId}`;\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"],"mappings":"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"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { WorkerInitializationRenderOptions, WorkerPoolOptions } from "./types.js";
|
|
2
|
+
import { WorkerPoolManager } from "./WorkerPoolManager.js";
|
|
3
|
+
|
|
4
|
+
//#region src/worker/getOrCreateWorkerPoolSingleton.d.ts
|
|
5
|
+
interface SetupWorkerPoolProps {
|
|
6
|
+
poolOptions: WorkerPoolOptions;
|
|
7
|
+
highlighterOptions: WorkerInitializationRenderOptions;
|
|
8
|
+
}
|
|
9
|
+
declare function getOrCreateWorkerPoolSingleton({
|
|
10
|
+
poolOptions,
|
|
11
|
+
highlighterOptions
|
|
12
|
+
}: SetupWorkerPoolProps): WorkerPoolManager;
|
|
13
|
+
declare function terminateWorkerPoolSingleton(): void;
|
|
14
|
+
//#endregion
|
|
15
|
+
export { SetupWorkerPoolProps, getOrCreateWorkerPoolSingleton, terminateWorkerPoolSingleton };
|
|
16
|
+
//# sourceMappingURL=getOrCreateWorkerPoolSingleton.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getOrCreateWorkerPoolSingleton.d.ts","names":[],"sources":["../../src/worker/getOrCreateWorkerPoolSingleton.ts"],"sourcesContent":[],"mappings":";;;;UAQiB,oBAAA;eACF;EADf,kBAAiB,EAEK,iCADP;AAIf;AACE,iBADc,8BAAA,CACd;EAAA,WAAA;EAAA;AAAA,CAAA,EAEC,oBAFD,CAAA,EAEwB,iBAFxB;AACA,iBAYc,4BAAA,CAAA,CAZd,EAAA,IAAA"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { WorkerPoolManager } from "./WorkerPoolManager.js";
|
|
2
|
+
|
|
3
|
+
//#region src/worker/getOrCreateWorkerPoolSingleton.ts
|
|
4
|
+
let workerPoolSingletone;
|
|
5
|
+
function getOrCreateWorkerPoolSingleton({ poolOptions, highlighterOptions }) {
|
|
6
|
+
if (workerPoolSingletone == null) {
|
|
7
|
+
workerPoolSingletone = new WorkerPoolManager(poolOptions, highlighterOptions);
|
|
8
|
+
workerPoolSingletone.initialize();
|
|
9
|
+
}
|
|
10
|
+
return workerPoolSingletone;
|
|
11
|
+
}
|
|
12
|
+
function terminateWorkerPoolSingleton() {
|
|
13
|
+
if (workerPoolSingletone == null) return;
|
|
14
|
+
workerPoolSingletone.terminate();
|
|
15
|
+
workerPoolSingletone = void 0;
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
//#endregion
|
|
19
|
+
export { getOrCreateWorkerPoolSingleton, terminateWorkerPoolSingleton };
|
|
20
|
+
//# sourceMappingURL=getOrCreateWorkerPoolSingleton.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getOrCreateWorkerPoolSingleton.js","names":["workerPoolSingletone: WorkerPoolManager | undefined"],"sources":["../../src/worker/getOrCreateWorkerPoolSingleton.ts"],"sourcesContent":["import { WorkerPoolManager } from './WorkerPoolManager';\nimport type {\n WorkerInitializationRenderOptions,\n WorkerPoolOptions,\n} from './types';\n\nlet workerPoolSingletone: WorkerPoolManager | undefined;\n\nexport interface SetupWorkerPoolProps {\n poolOptions: WorkerPoolOptions;\n highlighterOptions: WorkerInitializationRenderOptions;\n}\n\nexport function getOrCreateWorkerPoolSingleton({\n poolOptions,\n highlighterOptions,\n}: SetupWorkerPoolProps): WorkerPoolManager {\n if (workerPoolSingletone == null) {\n workerPoolSingletone = new WorkerPoolManager(\n poolOptions,\n highlighterOptions\n );\n void workerPoolSingletone.initialize();\n }\n return workerPoolSingletone;\n}\n\nexport function terminateWorkerPoolSingleton(): void {\n if (workerPoolSingletone == null) {\n return;\n }\n workerPoolSingletone.terminate();\n workerPoolSingletone = undefined;\n}\n"],"mappings":";;;AAMA,IAAIA;AAOJ,SAAgB,+BAA+B,EAC7C,aACA,sBAC0C;AAC1C,KAAI,wBAAwB,MAAM;AAChC,yBAAuB,IAAI,kBACzB,aACA,mBACD;AACD,EAAK,qBAAqB,YAAY;;AAExC,QAAO;;AAGT,SAAgB,+BAAqC;AACnD,KAAI,wBAAwB,KAC1B;AAEF,sBAAqB,WAAW;AAChC,wBAAuB"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { AllWorkerTasks, DiffRendererInstance, FileRendererInstance, InitializeSuccessResponse, InitializeWorkerRequest, InitializeWorkerTask, RegisterThemeSuccessResponse, RenderDiffRequest, RenderDiffSuccessResponse, RenderDiffTask, RenderErrorResponse, RenderFileRequest, RenderFileSuccessResponse, RenderFileTask, RenderSuccessResponse, ResolvedLanguage, SetRenderOptionsWorkerRequest, SetRenderOptionsWorkerTask, SubmitRequest, WorkerInitializationRenderOptions, WorkerPoolOptions, WorkerRenderingOptions, WorkerRequest, WorkerRequestId, WorkerResponse, WorkerStats } from "./types.js";
|
|
2
|
+
import { WorkerPoolManager } from "./WorkerPoolManager.js";
|
|
3
|
+
import { SetupWorkerPoolProps, getOrCreateWorkerPoolSingleton, terminateWorkerPoolSingleton } from "./getOrCreateWorkerPoolSingleton.js";
|
|
4
|
+
export { AllWorkerTasks, DiffRendererInstance, FileRendererInstance, InitializeSuccessResponse, InitializeWorkerRequest, InitializeWorkerTask, RegisterThemeSuccessResponse, RenderDiffRequest, RenderDiffSuccessResponse, RenderDiffTask, RenderErrorResponse, RenderFileRequest, RenderFileSuccessResponse, RenderFileTask, RenderSuccessResponse, ResolvedLanguage, SetRenderOptionsWorkerRequest, SetRenderOptionsWorkerTask, SetupWorkerPoolProps, SubmitRequest, WorkerInitializationRenderOptions, WorkerPoolManager, WorkerPoolOptions, WorkerRenderingOptions, WorkerRequest, WorkerRequestId, WorkerResponse, WorkerStats, getOrCreateWorkerPoolSingleton, terminateWorkerPoolSingleton };
|