@pierre/diffs 1.2.8 → 1.2.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (51) hide show
  1. package/dist/components/FileDiff.d.ts.map +1 -1
  2. package/dist/components/UnresolvedFile.d.ts.map +1 -1
  3. package/dist/components/VirtulizerDevelopment.d.ts.map +1 -1
  4. package/dist/highlighter/shared_highlighter.js +3 -29
  5. package/dist/highlighter/shared_highlighter.js.map +1 -1
  6. package/dist/highlighter/themes/attachResolvedThemes.js +4 -3
  7. package/dist/highlighter/themes/attachResolvedThemes.js.map +1 -1
  8. package/dist/highlighter/themes/cleanUpResolvedThemes.js +3 -2
  9. package/dist/highlighter/themes/cleanUpResolvedThemes.js.map +1 -1
  10. package/dist/highlighter/themes/constants.d.ts +1 -7
  11. package/dist/highlighter/themes/constants.d.ts.map +1 -1
  12. package/dist/highlighter/themes/constants.js +1 -4
  13. package/dist/highlighter/themes/constants.js.map +1 -1
  14. package/dist/highlighter/themes/getResolvedOrResolveTheme.js +2 -2
  15. package/dist/highlighter/themes/getResolvedOrResolveTheme.js.map +1 -1
  16. package/dist/highlighter/themes/getResolvedThemes.js +2 -8
  17. package/dist/highlighter/themes/getResolvedThemes.js.map +1 -1
  18. package/dist/highlighter/themes/hasResolvedThemes.js +2 -3
  19. package/dist/highlighter/themes/hasResolvedThemes.js.map +1 -1
  20. package/dist/highlighter/themes/registerCustomCSSVariableTheme.js +1 -1
  21. package/dist/highlighter/themes/registerCustomTheme.d.ts +5 -3
  22. package/dist/highlighter/themes/registerCustomTheme.d.ts.map +1 -1
  23. package/dist/highlighter/themes/registerCustomTheme.js +15 -5
  24. package/dist/highlighter/themes/registerCustomTheme.js.map +1 -1
  25. package/dist/highlighter/themes/resolveTheme.js +6 -27
  26. package/dist/highlighter/themes/resolveTheme.js.map +1 -1
  27. package/dist/highlighter/themes/resolveThemes.js +5 -12
  28. package/dist/highlighter/themes/resolveThemes.js.map +1 -1
  29. package/dist/highlighter/themes/themeResolution.d.ts +8 -0
  30. package/dist/highlighter/themes/themeResolution.d.ts.map +1 -0
  31. package/dist/highlighter/themes/themeResolution.js +22 -0
  32. package/dist/highlighter/themes/themeResolution.js.map +1 -0
  33. package/dist/highlighter/themes/themeResolver.d.ts +5 -0
  34. package/dist/highlighter/themes/themeResolver.d.ts.map +1 -0
  35. package/dist/highlighter/themes/themeResolver.js +8 -0
  36. package/dist/highlighter/themes/themeResolver.js.map +1 -0
  37. package/dist/index.d.ts +4 -4
  38. package/dist/index.js +3 -3
  39. package/dist/react/index.d.ts +2 -2
  40. package/dist/ssr/index.d.ts +2 -2
  41. package/dist/types.d.ts +3 -3
  42. package/dist/types.d.ts.map +1 -1
  43. package/dist/utils/getHighlighterThemeStyles.js +16 -12
  44. package/dist/utils/getHighlighterThemeStyles.js.map +1 -1
  45. package/dist/utils/parsePatchFiles.js +93 -4
  46. package/dist/utils/parsePatchFiles.js.map +1 -1
  47. package/dist/worker/worker-portable.js +25 -18
  48. package/dist/worker/worker-portable.js.map +1 -1
  49. package/dist/worker/worker.js +23 -15
  50. package/dist/worker/worker.js.map +1 -1
  51. package/package.json +2 -1
@@ -1 +1 @@
1
- {"version":3,"file":"FileDiff.d.ts","names":["GetHoveredLineResult","GetLineIndexUtility","InteractionManager","InteractionManagerBaseOptions","SelectionWriteOptions","ResizeManager","ScrollSyncManager","DiffHunksRenderer","DiffHunksRendererOptions","HunksRenderResult","AppliedThemeStyleCache","BaseDiffOptions","CustomPreProperties","DiffLineAnnotation","ExpansionDirections","FileContents","FileDiffMetadata","HunkData","HunkSeparators","PostRenderPhase","PrePropertiesConfig","RenderHeaderMetadataCallback","RenderHeaderPrefixCallback","RenderRange","SelectedLineRange","ThemeTypes","WorkerPoolManager","FileDiffRenderProps","LAnnotation","HTMLElement","FileDiffHydrationProps","Omit","FileDiffType","FileDiffOptions","Exclude","FileDiff","DocumentFragment","AnnotationElementCache","CustomHunkElementCache","HydrationSetup","SVGElement","HTMLPreElement","HTMLStyleElement","Map","__0","AnnotationSide","fileDiff","oldFile","newFile","lineAnnotations","deferManagers","forceRender","preventEmit","fileContainer","containerWrapper","renderRange","additionsContentAST","deletionsContentAST","totalLines"],"sources":["../../src/components/FileDiff.d.ts"],"sourcesContent":["import { type GetHoveredLineResult, type GetLineIndexUtility, InteractionManager, type InteractionManagerBaseOptions, type SelectionWriteOptions } from '../managers/InteractionManager';\nimport { ResizeManager } from '../managers/ResizeManager';\nimport { ScrollSyncManager } from '../managers/ScrollSyncManager';\nimport { DiffHunksRenderer, type DiffHunksRendererOptions, type HunksRenderResult } from '../renderers/DiffHunksRenderer';\nimport type { AppliedThemeStyleCache, BaseDiffOptions, CustomPreProperties, DiffLineAnnotation, ExpansionDirections, FileContents, FileDiffMetadata, HunkData, HunkSeparators, PostRenderPhase, PrePropertiesConfig, RenderHeaderMetadataCallback, RenderHeaderPrefixCallback, RenderRange, SelectedLineRange, ThemeTypes } from '../types';\nimport type { WorkerPoolManager } from '../worker';\nexport interface FileDiffRenderProps<LAnnotation> {\n fileDiff?: FileDiffMetadata;\n oldFile?: FileContents;\n newFile?: FileContents;\n deferManagers?: boolean;\n forceRender?: boolean;\n preventEmit?: boolean;\n fileContainer?: HTMLElement;\n containerWrapper?: HTMLElement;\n lineAnnotations?: DiffLineAnnotation<LAnnotation>[];\n renderRange?: RenderRange;\n}\nexport interface FileDiffHydrationProps<LAnnotation> extends Omit<FileDiffRenderProps<LAnnotation>, 'fileContainer'> {\n fileContainer: HTMLElement;\n prerenderedHTML?: string;\n}\nexport type FileDiffType = 'file-diff' | 'unresolved-file';\nexport interface FileDiffOptions<LAnnotation> extends Omit<BaseDiffOptions, 'hunkSeparators'>, InteractionManagerBaseOptions<'diff'> {\n hunkSeparators?: Exclude<HunkSeparators, 'custom'> /**\n * @deprecated Custom hunk separator functions are deprecated and will be\n * removed in a future version.\n */ | ((hunk: HunkData, instance: FileDiff<LAnnotation>) => HTMLElement | DocumentFragment | null | undefined);\n disableFileHeader?: boolean;\n renderHeaderPrefix?: RenderHeaderPrefixCallback;\n renderHeaderMetadata?: RenderHeaderMetadataCallback;\n renderCustomHeader?: RenderHeaderMetadataCallback;\n /**\n * When true, errors during rendering are rethrown instead of being caught\n * and displayed in the DOM. Useful for testing or when you want to handle\n * errors yourself.\n */\n disableErrorHandling?: boolean;\n renderAnnotation?(annotation: DiffLineAnnotation<LAnnotation>): HTMLElement | undefined;\n renderGutterUtility?(getHoveredRow: () => GetHoveredLineResult<'diff'> | undefined): HTMLElement | null | undefined;\n onPostRender?(node: HTMLElement, instance: FileDiff<LAnnotation>, phase: PostRenderPhase): unknown;\n}\ninterface AnnotationElementCache<LAnnotation> {\n element: HTMLElement;\n annotation: DiffLineAnnotation<LAnnotation>;\n}\ninterface CustomHunkElementCache {\n element: HTMLElement;\n hunkData: HunkData;\n}\ninterface HydrationSetup<LAnnotation> {\n fileDiff: FileDiffMetadata | undefined;\n lineAnnotations: DiffLineAnnotation<LAnnotation>[] | undefined;\n oldFile?: FileContents;\n newFile?: FileContents;\n}\nexport declare class FileDiff<LAnnotation = undefined> {\n options: FileDiffOptions<LAnnotation>;\n protected workerManager?: WorkerPoolManager | undefined;\n protected isContainerManaged: boolean;\n static LoadedCustomComponent: boolean;\n readonly __id: string;\n readonly type: FileDiffType;\n protected fileContainer: HTMLElement | undefined;\n protected spriteSVG: SVGElement | undefined;\n protected pre: HTMLPreElement | undefined;\n protected codeUnified: HTMLElement | undefined;\n protected codeDeletions: HTMLElement | undefined;\n protected codeAdditions: HTMLElement | undefined;\n protected bufferBefore: HTMLElement | undefined;\n protected bufferAfter: HTMLElement | undefined;\n protected themeCSSStyle: HTMLStyleElement | undefined;\n protected appliedThemeCSS: AppliedThemeStyleCache | undefined;\n protected hasAdoptedThemeCSS: boolean;\n protected unsafeCSSStyle: HTMLStyleElement | undefined;\n protected appliedUnsafeCSS: string | undefined;\n protected gutterUtilityContent: HTMLElement | undefined;\n protected headerElement: HTMLElement | undefined;\n protected headerPrefix: HTMLElement | undefined;\n protected headerMetadata: HTMLElement | undefined;\n protected headerCustom: HTMLElement | undefined;\n protected separatorCache: Map<string, CustomHunkElementCache>;\n protected errorWrapper: HTMLElement | undefined;\n protected placeHolder: HTMLElement | undefined;\n protected hunksRenderer: DiffHunksRenderer<LAnnotation>;\n protected resizeManager: ResizeManager;\n protected scrollSyncManager: ScrollSyncManager;\n protected interactionManager: InteractionManager<'diff'>;\n protected annotationCache: Map<string, AnnotationElementCache<LAnnotation>>;\n protected lineAnnotations: DiffLineAnnotation<LAnnotation>[];\n protected managersDirty: boolean;\n protected deletionFile: FileContents | undefined;\n protected additionFile: FileContents | undefined;\n fileDiff: FileDiffMetadata | undefined;\n protected renderRange: RenderRange | undefined;\n protected appliedPreAttributes: PrePropertiesConfig | undefined;\n protected lastRenderedHeaderHTML: string | undefined;\n protected cachedHeaderHTML: string | undefined;\n protected lastRowCount: number | undefined;\n private mounted;\n protected enabled: boolean;\n constructor(options?: FileDiffOptions<LAnnotation>, workerManager?: WorkerPoolManager | undefined, isContainerManaged?: boolean);\n protected handleHighlightRender: () => void;\n protected getHunksRendererOptions(options: FileDiffOptions<LAnnotation>): DiffHunksRendererOptions;\n protected createHunksRenderer(options: FileDiffOptions<LAnnotation>): DiffHunksRenderer<LAnnotation>;\n getLineIndex: GetLineIndexUtility;\n setOptions(options: FileDiffOptions<LAnnotation> | undefined): void;\n protected syncInteractionOptions(): void;\n private mergeOptions;\n setThemeType(themeType: ThemeTypes): void;\n private applyCachedThemeState;\n private hasThemeChanged;\n getHoveredLine: () => {\n lineNumber: number;\n side: import(\"..\").AnnotationSide;\n } | undefined;\n setLineAnnotations(lineAnnotations: DiffLineAnnotation<LAnnotation>[]): void;\n private canPartiallyRender;\n setSelectedLines(range: SelectedLineRange | null, options?: SelectionWriteOptions): void;\n flushManagers(): void;\n cleanUp(recycle?: boolean): void;\n virtualizedSetup(): void;\n hydrate(props: FileDiffHydrationProps<LAnnotation>): void;\n protected hydrateElements(fileContainer: HTMLElement, prerenderedHTML: string | undefined): void;\n protected hydrationSetup({ fileDiff, oldFile, newFile, lineAnnotations }: HydrationSetup<LAnnotation>): void;\n rerender(): void;\n onThemeChange(): void;\n handleExpandHunk: (hunkIndex: number, direction: ExpansionDirections, expansionLineCountOverride?: number | undefined) => void;\n expandHunk: (hunkIndex: number, direction: ExpansionDirections, expansionLineCountOverride?: number | undefined) => void;\n render({ oldFile, newFile, fileDiff, deferManagers, forceRender, preventEmit, lineAnnotations, fileContainer, containerWrapper, renderRange }: FileDiffRenderProps<LAnnotation>): boolean;\n protected emitPostRender(unmount?: boolean): void;\n private removeRenderedCode;\n private clearAuxiliaryNodes;\n renderPlaceholder(height: number): boolean;\n primeHighlightCache(): void;\n private cleanChildNodes;\n private renderSeparators;\n protected renderAnnotations(): void;\n protected renderGutterUtility(): void;\n protected getOrCreateFileContainer(fileContainer?: HTMLElement, parentNode?: HTMLElement): HTMLElement;\n private adoptReusableShellElements;\n private ensureSpriteSVG;\n private getOrCreatePreNode;\n protected syncCodeNodesFromPre(pre: HTMLPreElement): void;\n private applyHeaderToDOM;\n private clearHeaderSlots;\n private upsertHeaderSlotElement;\n private replaceHeaderSlotContent;\n private createHeaderSlotElement;\n protected injectUnsafeCSS(): void;\n private applyThemeState;\n private hydrateMeasuredScrollbar;\n private applyHunksToDOM;\n private applyPartialRender;\n private insertPartialHTML;\n private renderPartialColumn;\n private mergeBuffersIfNecessary;\n private applyRowSpan;\n private trimColumnRows;\n private trimColumns;\n private getBufferSize;\n private updateBufferSize;\n private getCodeColumns;\n private applyBuffers;\n protected shouldDisableVirtualizationBuffers(): boolean;\n protected applyPreNodeAttributes(pre: HTMLPreElement, { additionsContentAST, deletionsContentAST, totalLines }: HunksRenderResult, customProperties?: CustomPreProperties): void;\n private applyErrorToDOM;\n private cleanupErrorWrapper;\n}\nexport {};\n//# sourceMappingURL=FileDiff.d.ts.map"],"mappings":"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"}
1
+ {"version":3,"file":"FileDiff.d.ts","names":["GetHoveredLineResult","GetLineIndexUtility","InteractionManager","InteractionManagerBaseOptions","SelectionWriteOptions","ResizeManager","ScrollSyncManager","DiffHunksRenderer","DiffHunksRendererOptions","HunksRenderResult","AppliedThemeStyleCache","BaseDiffOptions","CustomPreProperties","DiffLineAnnotation","ExpansionDirections","FileContents","FileDiffMetadata","HunkData","HunkSeparators","PostRenderPhase","PrePropertiesConfig","RenderHeaderMetadataCallback","RenderHeaderPrefixCallback","RenderRange","SelectedLineRange","ThemeTypes","WorkerPoolManager","FileDiffRenderProps","LAnnotation","HTMLElement","FileDiffHydrationProps","Omit","FileDiffType","FileDiffOptions","Exclude","FileDiff","DocumentFragment","AnnotationElementCache","CustomHunkElementCache","HydrationSetup","SVGElement","HTMLPreElement","HTMLStyleElement","Map","__0","AnnotationSide","fileDiff","oldFile","newFile","lineAnnotations","deferManagers","forceRender","preventEmit","fileContainer","containerWrapper","renderRange","additionsContentAST","deletionsContentAST","totalLines"],"sources":["../../src/components/FileDiff.d.ts"],"sourcesContent":["import { type GetHoveredLineResult, type GetLineIndexUtility, InteractionManager, type InteractionManagerBaseOptions, type SelectionWriteOptions } from '../managers/InteractionManager';\nimport { ResizeManager } from '../managers/ResizeManager';\nimport { ScrollSyncManager } from '../managers/ScrollSyncManager';\nimport { DiffHunksRenderer, type DiffHunksRendererOptions, type HunksRenderResult } from '../renderers/DiffHunksRenderer';\nimport type { AppliedThemeStyleCache, BaseDiffOptions, CustomPreProperties, DiffLineAnnotation, ExpansionDirections, FileContents, FileDiffMetadata, HunkData, HunkSeparators, PostRenderPhase, PrePropertiesConfig, RenderHeaderMetadataCallback, RenderHeaderPrefixCallback, RenderRange, SelectedLineRange, ThemeTypes } from '../types';\nimport type { WorkerPoolManager } from '../worker';\nexport interface FileDiffRenderProps<LAnnotation> {\n fileDiff?: FileDiffMetadata;\n oldFile?: FileContents;\n newFile?: FileContents;\n deferManagers?: boolean;\n forceRender?: boolean;\n preventEmit?: boolean;\n fileContainer?: HTMLElement;\n containerWrapper?: HTMLElement;\n lineAnnotations?: DiffLineAnnotation<LAnnotation>[];\n renderRange?: RenderRange;\n}\nexport interface FileDiffHydrationProps<LAnnotation> extends Omit<FileDiffRenderProps<LAnnotation>, 'fileContainer'> {\n fileContainer: HTMLElement;\n prerenderedHTML?: string;\n}\nexport type FileDiffType = 'file-diff' | 'unresolved-file';\nexport interface FileDiffOptions<LAnnotation> extends Omit<BaseDiffOptions, 'hunkSeparators'>, InteractionManagerBaseOptions<'diff'> {\n hunkSeparators?: Exclude<HunkSeparators, 'custom'> /**\n * @deprecated Custom hunk separator functions are deprecated and will be\n * removed in a future version.\n */ | ((hunk: HunkData, instance: FileDiff<LAnnotation>) => HTMLElement | DocumentFragment | null | undefined);\n disableFileHeader?: boolean;\n renderHeaderPrefix?: RenderHeaderPrefixCallback;\n renderHeaderMetadata?: RenderHeaderMetadataCallback;\n renderCustomHeader?: RenderHeaderMetadataCallback;\n /**\n * When true, errors during rendering are rethrown instead of being caught\n * and displayed in the DOM. Useful for testing or when you want to handle\n * errors yourself.\n */\n disableErrorHandling?: boolean;\n renderAnnotation?(annotation: DiffLineAnnotation<LAnnotation>): HTMLElement | undefined;\n renderGutterUtility?(getHoveredRow: () => GetHoveredLineResult<'diff'> | undefined): HTMLElement | null | undefined;\n onPostRender?(node: HTMLElement, instance: FileDiff<LAnnotation>, phase: PostRenderPhase): unknown;\n}\ninterface AnnotationElementCache<LAnnotation> {\n element: HTMLElement;\n annotation: DiffLineAnnotation<LAnnotation>;\n}\ninterface CustomHunkElementCache {\n element: HTMLElement;\n hunkData: HunkData;\n}\ninterface HydrationSetup<LAnnotation> {\n fileDiff: FileDiffMetadata | undefined;\n lineAnnotations: DiffLineAnnotation<LAnnotation>[] | undefined;\n oldFile?: FileContents;\n newFile?: FileContents;\n}\nexport declare class FileDiff<LAnnotation = undefined> {\n options: FileDiffOptions<LAnnotation>;\n protected workerManager?: WorkerPoolManager | undefined;\n protected isContainerManaged: boolean;\n static LoadedCustomComponent: boolean;\n readonly __id: string;\n readonly type: FileDiffType;\n protected fileContainer: HTMLElement | undefined;\n protected spriteSVG: SVGElement | undefined;\n protected pre: HTMLPreElement | undefined;\n protected codeUnified: HTMLElement | undefined;\n protected codeDeletions: HTMLElement | undefined;\n protected codeAdditions: HTMLElement | undefined;\n protected bufferBefore: HTMLElement | undefined;\n protected bufferAfter: HTMLElement | undefined;\n protected themeCSSStyle: HTMLStyleElement | undefined;\n protected appliedThemeCSS: AppliedThemeStyleCache | undefined;\n protected hasAdoptedThemeCSS: boolean;\n protected unsafeCSSStyle: HTMLStyleElement | undefined;\n protected appliedUnsafeCSS: string | undefined;\n protected gutterUtilityContent: HTMLElement | undefined;\n protected headerElement: HTMLElement | undefined;\n protected headerPrefix: HTMLElement | undefined;\n protected headerMetadata: HTMLElement | undefined;\n protected headerCustom: HTMLElement | undefined;\n protected separatorCache: Map<string, CustomHunkElementCache>;\n protected errorWrapper: HTMLElement | undefined;\n protected placeHolder: HTMLElement | undefined;\n protected hunksRenderer: DiffHunksRenderer<LAnnotation>;\n protected resizeManager: ResizeManager;\n protected scrollSyncManager: ScrollSyncManager;\n protected interactionManager: InteractionManager<'diff'>;\n protected annotationCache: Map<string, AnnotationElementCache<LAnnotation>>;\n protected lineAnnotations: DiffLineAnnotation<LAnnotation>[];\n protected managersDirty: boolean;\n protected deletionFile: FileContents | undefined;\n protected additionFile: FileContents | undefined;\n fileDiff: FileDiffMetadata | undefined;\n protected renderRange: RenderRange | undefined;\n protected appliedPreAttributes: PrePropertiesConfig | undefined;\n protected lastRenderedHeaderHTML: string | undefined;\n protected cachedHeaderHTML: string | undefined;\n protected lastRowCount: number | undefined;\n private mounted;\n protected enabled: boolean;\n constructor(options?: FileDiffOptions<LAnnotation>, workerManager?: WorkerPoolManager | undefined, isContainerManaged?: boolean);\n protected handleHighlightRender: () => void;\n protected getHunksRendererOptions(options: FileDiffOptions<LAnnotation>): DiffHunksRendererOptions;\n protected createHunksRenderer(options: FileDiffOptions<LAnnotation>): DiffHunksRenderer<LAnnotation>;\n getLineIndex: GetLineIndexUtility;\n setOptions(options: FileDiffOptions<LAnnotation> | undefined): void;\n protected syncInteractionOptions(): void;\n private mergeOptions;\n setThemeType(themeType: ThemeTypes): void;\n private applyCachedThemeState;\n private hasThemeChanged;\n getHoveredLine: () => {\n lineNumber: number;\n side: import(\"..\").AnnotationSide;\n } | undefined;\n setLineAnnotations(lineAnnotations: DiffLineAnnotation<LAnnotation>[]): void;\n private canPartiallyRender;\n setSelectedLines(range: SelectedLineRange | null, options?: SelectionWriteOptions): void;\n flushManagers(): void;\n cleanUp(recycle?: boolean): void;\n virtualizedSetup(): void;\n hydrate(props: FileDiffHydrationProps<LAnnotation>): void;\n protected hydrateElements(fileContainer: HTMLElement, prerenderedHTML: string | undefined): void;\n protected hydrationSetup({ fileDiff, oldFile, newFile, lineAnnotations }: HydrationSetup<LAnnotation>): void;\n rerender(): void;\n onThemeChange(): void;\n handleExpandHunk: (hunkIndex: number, direction: ExpansionDirections, expansionLineCountOverride?: number | undefined) => void;\n expandHunk: (hunkIndex: number, direction: ExpansionDirections, expansionLineCountOverride?: number | undefined) => void;\n render({ oldFile, newFile, fileDiff, deferManagers, forceRender, preventEmit, lineAnnotations, fileContainer, containerWrapper, renderRange }: FileDiffRenderProps<LAnnotation>): boolean;\n protected emitPostRender(unmount?: boolean): void;\n private removeRenderedCode;\n private clearAuxiliaryNodes;\n renderPlaceholder(height: number): boolean;\n primeHighlightCache(): void;\n private cleanChildNodes;\n private renderSeparators;\n protected renderAnnotations(): void;\n protected renderGutterUtility(): void;\n protected getOrCreateFileContainer(fileContainer?: HTMLElement, parentNode?: HTMLElement): HTMLElement;\n private adoptReusableShellElements;\n private ensureSpriteSVG;\n private getOrCreatePreNode;\n protected syncCodeNodesFromPre(pre: HTMLPreElement): void;\n private applyHeaderToDOM;\n private clearHeaderSlots;\n private upsertHeaderSlotElement;\n private replaceHeaderSlotContent;\n private createHeaderSlotElement;\n protected injectUnsafeCSS(): void;\n private applyThemeState;\n private hydrateMeasuredScrollbar;\n private applyHunksToDOM;\n private applyPartialRender;\n private insertPartialHTML;\n private renderPartialColumn;\n private mergeBuffersIfNecessary;\n private applyRowSpan;\n private trimColumnRows;\n private trimColumns;\n private getBufferSize;\n private updateBufferSize;\n private getCodeColumns;\n private applyBuffers;\n protected shouldDisableVirtualizationBuffers(): boolean;\n protected applyPreNodeAttributes(pre: HTMLPreElement, { additionsContentAST, deletionsContentAST, totalLines }: HunksRenderResult, customProperties?: CustomPreProperties): void;\n private applyErrorToDOM;\n private cleanupErrorWrapper;\n}\nexport {};\n//# sourceMappingURL=FileDiff.d.ts.map"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"UnresolvedFile.d.ts","names":["HunksRenderResult","UnresolvedFileHunksRenderer","UnresolvedFileHunksRendererOptions","FileContents","FileDiffMetadata","MergeConflictActionPayload","MergeConflictMarkerRow","MergeConflictResolution","PostRenderPhase","MergeConflictDiffAction","WorkerPoolManager","FileDiff","FileDiffOptions","FileDiffRenderProps","RenderMergeConflictActions","LAnnotation","UnresolvedFile","HTMLElement","DocumentFragment","MergeConflictActionsTypeOption","UnresolvedFileOptions","Omit","UnresolvedFileRenderProps","UnresolvedFileHydrationProps","GetOrComputeDiffProps","ResolveConflictReturn","UnresolvedFileDataCache","HTMLPreElement","getUnresolvedDiffHunksRendererOptions"],"sources":["../../src/components/UnresolvedFile.d.ts"],"sourcesContent":["import type { HunksRenderResult } from '../renderers/DiffHunksRenderer';\nimport { UnresolvedFileHunksRenderer, type UnresolvedFileHunksRendererOptions } from '../renderers/UnresolvedFileHunksRenderer';\nimport type { FileContents, FileDiffMetadata, MergeConflictActionPayload, MergeConflictMarkerRow, MergeConflictResolution, PostRenderPhase } from '../types';\nimport { type MergeConflictDiffAction } from '../utils/parseMergeConflictDiffFromFile';\nimport type { WorkerPoolManager } from '../worker';\nimport { FileDiff, type FileDiffOptions, type FileDiffRenderProps } from './FileDiff';\nexport type RenderMergeConflictActions<LAnnotation> = (action: MergeConflictDiffAction, instance: UnresolvedFile<LAnnotation>) => HTMLElement | DocumentFragment | null | undefined;\nexport type MergeConflictActionsTypeOption<LAnnotation> = 'none' | 'default' | RenderMergeConflictActions<LAnnotation>;\nexport interface UnresolvedFileOptions<LAnnotation> extends Omit<FileDiffOptions<LAnnotation>, 'diffStyle' | 'onPostRender'> {\n onPostRender?(node: HTMLElement, instance: UnresolvedFile<LAnnotation>, phase: PostRenderPhase): unknown;\n mergeConflictActionsType?: MergeConflictActionsTypeOption<LAnnotation>;\n onMergeConflictAction?(payload: MergeConflictActionPayload, instance: UnresolvedFile<LAnnotation>): void;\n onMergeConflictResolve?(file: FileContents, payload: MergeConflictActionPayload): void;\n maxContextLines?: number;\n}\nexport interface UnresolvedFileRenderProps<LAnnotation> extends Omit<FileDiffRenderProps<LAnnotation>, 'oldFile' | 'newFile'> {\n file?: FileContents;\n actions?: (MergeConflictDiffAction | undefined)[];\n markerRows?: MergeConflictMarkerRow[];\n}\nexport interface UnresolvedFileHydrationProps<LAnnotation> extends Omit<UnresolvedFileRenderProps<LAnnotation>, 'file'> {\n file?: FileContents;\n fileContainer: HTMLElement;\n prerenderedHTML?: string;\n}\ninterface GetOrComputeDiffProps {\n file: FileContents | undefined;\n fileDiff: FileDiffMetadata | undefined;\n actions: (MergeConflictDiffAction | undefined)[] | undefined;\n markerRows: MergeConflictMarkerRow[] | undefined;\n}\ninterface ResolveConflictReturn {\n file: FileContents;\n fileDiff: FileDiffMetadata;\n actions: (MergeConflictDiffAction | undefined)[];\n markerRows: MergeConflictMarkerRow[];\n}\ntype UnresolvedFileDataCache = GetOrComputeDiffProps;\nexport declare class UnresolvedFile<LAnnotation = undefined> extends FileDiff<LAnnotation> {\n options: UnresolvedFileOptions<LAnnotation>;\n readonly __id: string;\n readonly type = \"unresolved-file\";\n protected computedCache: UnresolvedFileDataCache;\n private conflictActions;\n private markerRows;\n private conflictActionCache;\n constructor(options?: UnresolvedFileOptions<LAnnotation>, workerManager?: WorkerPoolManager | undefined, isContainerManaged?: boolean);\n setOptions(options: UnresolvedFileOptions<LAnnotation> | undefined): void;\n protected createHunksRenderer(options: UnresolvedFileOptions<LAnnotation>): UnresolvedFileHunksRenderer<LAnnotation>;\n protected getHunksRendererOptions(options: UnresolvedFileOptions<LAnnotation>): UnresolvedFileHunksRendererOptions;\n protected applyPreNodeAttributes(pre: HTMLPreElement, result: HunksRenderResult): void;\n cleanUp(): void;\n private getOrComputeDiff;\n hydrate(props: UnresolvedFileHydrationProps<LAnnotation>): void;\n rerender(): void;\n render(props?: UnresolvedFileRenderProps<LAnnotation>): boolean;\n resolveConflict(conflictIndex: number, resolution: MergeConflictResolution, fileDiff?: FileDiffMetadata | undefined): ResolveConflictReturn | undefined;\n private resolveConflictAndRender;\n private setActiveMergeConflictState;\n private handleMergeConflictActionClick;\n private renderMergeConflictActionSlots;\n private renderMergeConflictAction;\n private clearMergeConflictActionCache;\n}\nexport declare function getUnresolvedDiffHunksRendererOptions<LAnnotation>(options?: UnresolvedFileOptions<LAnnotation>, baseOptions?: UnresolvedFileOptions<LAnnotation>): UnresolvedFileHunksRendererOptions;\nexport {};\n//# sourceMappingURL=UnresolvedFile.d.ts.map"],"mappings":"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"}
1
+ {"version":3,"file":"UnresolvedFile.d.ts","names":["HunksRenderResult","UnresolvedFileHunksRenderer","UnresolvedFileHunksRendererOptions","FileContents","FileDiffMetadata","MergeConflictActionPayload","MergeConflictMarkerRow","MergeConflictResolution","PostRenderPhase","MergeConflictDiffAction","WorkerPoolManager","FileDiff","FileDiffOptions","FileDiffRenderProps","RenderMergeConflictActions","LAnnotation","UnresolvedFile","HTMLElement","DocumentFragment","MergeConflictActionsTypeOption","UnresolvedFileOptions","Omit","UnresolvedFileRenderProps","UnresolvedFileHydrationProps","GetOrComputeDiffProps","ResolveConflictReturn","UnresolvedFileDataCache","HTMLPreElement","getUnresolvedDiffHunksRendererOptions"],"sources":["../../src/components/UnresolvedFile.d.ts"],"sourcesContent":["import type { HunksRenderResult } from '../renderers/DiffHunksRenderer';\nimport { UnresolvedFileHunksRenderer, type UnresolvedFileHunksRendererOptions } from '../renderers/UnresolvedFileHunksRenderer';\nimport type { FileContents, FileDiffMetadata, MergeConflictActionPayload, MergeConflictMarkerRow, MergeConflictResolution, PostRenderPhase } from '../types';\nimport { type MergeConflictDiffAction } from '../utils/parseMergeConflictDiffFromFile';\nimport type { WorkerPoolManager } from '../worker';\nimport { FileDiff, type FileDiffOptions, type FileDiffRenderProps } from './FileDiff';\nexport type RenderMergeConflictActions<LAnnotation> = (action: MergeConflictDiffAction, instance: UnresolvedFile<LAnnotation>) => HTMLElement | DocumentFragment | null | undefined;\nexport type MergeConflictActionsTypeOption<LAnnotation> = 'none' | 'default' | RenderMergeConflictActions<LAnnotation>;\nexport interface UnresolvedFileOptions<LAnnotation> extends Omit<FileDiffOptions<LAnnotation>, 'diffStyle' | 'onPostRender'> {\n onPostRender?(node: HTMLElement, instance: UnresolvedFile<LAnnotation>, phase: PostRenderPhase): unknown;\n mergeConflictActionsType?: MergeConflictActionsTypeOption<LAnnotation>;\n onMergeConflictAction?(payload: MergeConflictActionPayload, instance: UnresolvedFile<LAnnotation>): void;\n onMergeConflictResolve?(file: FileContents, payload: MergeConflictActionPayload): void;\n maxContextLines?: number;\n}\nexport interface UnresolvedFileRenderProps<LAnnotation> extends Omit<FileDiffRenderProps<LAnnotation>, 'oldFile' | 'newFile'> {\n file?: FileContents;\n actions?: (MergeConflictDiffAction | undefined)[];\n markerRows?: MergeConflictMarkerRow[];\n}\nexport interface UnresolvedFileHydrationProps<LAnnotation> extends Omit<UnresolvedFileRenderProps<LAnnotation>, 'file'> {\n file?: FileContents;\n fileContainer: HTMLElement;\n prerenderedHTML?: string;\n}\ninterface GetOrComputeDiffProps {\n file: FileContents | undefined;\n fileDiff: FileDiffMetadata | undefined;\n actions: (MergeConflictDiffAction | undefined)[] | undefined;\n markerRows: MergeConflictMarkerRow[] | undefined;\n}\ninterface ResolveConflictReturn {\n file: FileContents;\n fileDiff: FileDiffMetadata;\n actions: (MergeConflictDiffAction | undefined)[];\n markerRows: MergeConflictMarkerRow[];\n}\ntype UnresolvedFileDataCache = GetOrComputeDiffProps;\nexport declare class UnresolvedFile<LAnnotation = undefined> extends FileDiff<LAnnotation> {\n options: UnresolvedFileOptions<LAnnotation>;\n readonly __id: string;\n readonly type = \"unresolved-file\";\n protected computedCache: UnresolvedFileDataCache;\n private conflictActions;\n private markerRows;\n private conflictActionCache;\n constructor(options?: UnresolvedFileOptions<LAnnotation>, workerManager?: WorkerPoolManager | undefined, isContainerManaged?: boolean);\n setOptions(options: UnresolvedFileOptions<LAnnotation> | undefined): void;\n protected createHunksRenderer(options: UnresolvedFileOptions<LAnnotation>): UnresolvedFileHunksRenderer<LAnnotation>;\n protected getHunksRendererOptions(options: UnresolvedFileOptions<LAnnotation>): UnresolvedFileHunksRendererOptions;\n protected applyPreNodeAttributes(pre: HTMLPreElement, result: HunksRenderResult): void;\n cleanUp(): void;\n private getOrComputeDiff;\n hydrate(props: UnresolvedFileHydrationProps<LAnnotation>): void;\n rerender(): void;\n render(props?: UnresolvedFileRenderProps<LAnnotation>): boolean;\n resolveConflict(conflictIndex: number, resolution: MergeConflictResolution, fileDiff?: FileDiffMetadata | undefined): ResolveConflictReturn | undefined;\n private resolveConflictAndRender;\n private setActiveMergeConflictState;\n private handleMergeConflictActionClick;\n private renderMergeConflictActionSlots;\n private renderMergeConflictAction;\n private clearMergeConflictActionCache;\n}\nexport declare function getUnresolvedDiffHunksRendererOptions<LAnnotation>(options?: UnresolvedFileOptions<LAnnotation>, baseOptions?: UnresolvedFileOptions<LAnnotation>): UnresolvedFileHunksRendererOptions;\nexport {};\n//# sourceMappingURL=UnresolvedFile.d.ts.map"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"VirtulizerDevelopment.d.ts","names":["CodeView","Virtualizer","_0","sideEffect"],"sources":["../../src/components/VirtulizerDevelopment.d.ts"],"sourcesContent":["import type { CodeView } from './CodeView';\nimport type { Virtualizer } from './Virtualizer';\n\n// FIXME(amadeus): REMOVE ME AFTER RELEASING VIRTUALIZATION\ndeclare global {\n interface Window {\n // oxlint-disable-next-line typescript/no-explicit-any\n __INSTANCE?: CodeView<any> | Virtualizer;\n __TOGGLE?: () => void;\n __LOG?: boolean;\n }\n}\n"],"mappings":";;;;;AACiD,QAAAE,MAAA,CAAA;EAAA,UAAA,MAAA,CAAA;;IAMLC,UAAAD,CAAA,EAA3BF,QAA2B,CAAA,GAAA,CAAA,GAAXC,WAAW;IAAA,QAAA,CAAA,EAAA,GAAA,GAAA,IAAA"}
1
+ {"version":3,"file":"VirtulizerDevelopment.d.ts","names":["CodeView","Virtualizer","_1","sideEffect"],"sources":["../../src/components/VirtulizerDevelopment.d.ts"],"sourcesContent":["import type { CodeView } from './CodeView';\nimport type { Virtualizer } from './Virtualizer';\n\n// FIXME(amadeus): REMOVE ME AFTER RELEASING VIRTUALIZATION\ndeclare global {\n interface Window {\n // oxlint-disable-next-line typescript/no-explicit-any\n __INSTANCE?: CodeView<any> | Virtualizer;\n __TOGGLE?: () => void;\n __LOG?: boolean;\n }\n}\n"],"mappings":";;;;;AACiD,QAAAE,MAAA,CAAA;EAAA,UAAA,MAAA,CAAA;;IAMLC,UAAAD,CAAA,EAA3BF,QAA2B,CAAA,GAAA,CAAA,GAAXC,WAAW;IAAA,QAAA,CAAA,EAAA,GAAA,GAAA,IAAA"}
@@ -1,11 +1,12 @@
1
1
  import { attachResolvedLanguages } from "./languages/attachResolvedLanguages.js";
2
2
  import { cleanUpResolvedLanguages } from "./languages/cleanUpResolvedLanguages.js";
3
3
  import { getResolvedOrResolveLanguage } from "./languages/getResolvedOrResolveLanguage.js";
4
+ import { themeResolver } from "./themes/themeResolver.js";
4
5
  import { attachResolvedThemes } from "./themes/attachResolvedThemes.js";
5
6
  import { cleanUpResolvedThemes } from "./themes/cleanUpResolvedThemes.js";
6
7
  import { getResolvedOrResolveTheme } from "./themes/getResolvedOrResolveTheme.js";
7
- import { registerCustomTheme } from "./themes/registerCustomTheme.js";
8
8
  import { createHighlighter, createJavaScriptRegexEngine, createOnigurumaEngine } from "shiki";
9
+ import { pierreThemes } from "@pierre/theming/themes";
9
10
 
10
11
  //#region src/highlighter/shared_highlighter.ts
11
12
  let highlighter;
@@ -59,34 +60,7 @@ async function disposeHighlighter() {
59
60
  cleanUpResolvedThemes();
60
61
  highlighter = void 0;
61
62
  }
62
- registerCustomTheme("pierre-dark", async () => {
63
- const { default: theme } = await import("@pierre/theme/pierre-dark");
64
- return {
65
- ...theme,
66
- name: "pierre-dark"
67
- };
68
- });
69
- registerCustomTheme("pierre-dark-soft", async () => {
70
- const { default: theme } = await import("@pierre/theme/pierre-dark-soft");
71
- return {
72
- ...theme,
73
- name: "pierre-dark-soft"
74
- };
75
- });
76
- registerCustomTheme("pierre-light", async () => {
77
- const { default: theme } = await import("@pierre/theme/pierre-light");
78
- return {
79
- ...theme,
80
- name: "pierre-light"
81
- };
82
- });
83
- registerCustomTheme("pierre-light-soft", async () => {
84
- const { default: theme } = await import("@pierre/theme/pierre-light-soft");
85
- return {
86
- ...theme,
87
- name: "pierre-light-soft"
88
- };
89
- });
63
+ for (const descriptor of pierreThemes.getThemes()) themeResolver.registerThemeIfAbsent(descriptor.name, descriptor.load);
90
64
 
91
65
  //#endregion
92
66
  export { disposeHighlighter, getHighlighterIfLoaded, getSharedHighlighter, isHighlighterLoaded, isHighlighterLoading, isHighlighterNull, preloadHighlighter };
@@ -1 +1 @@
1
- {"version":3,"file":"shared_highlighter.js","names":["highlighter: CachedOrLoadingHighlighterType","languageLoaders: Promise<ResolvedLanguage>[]","themeLoaders: Promise<ThemeRegistrationResolved>[]","themes"],"sources":["../../src/highlighter/shared_highlighter.ts"],"sourcesContent":["import {\n createHighlighter,\n createJavaScriptRegexEngine,\n createOnigurumaEngine,\n} from 'shiki';\n\nimport type {\n DiffsHighlighter,\n DiffsThemeNames,\n HighlighterTypes,\n SupportedLanguages,\n ThemeRegistrationResolved,\n} from '../types';\nimport type { ResolvedLanguage } from '../worker/types';\nimport { attachResolvedLanguages } from './languages/attachResolvedLanguages';\nimport { cleanUpResolvedLanguages } from './languages/cleanUpResolvedLanguages';\nimport { getResolvedOrResolveLanguage } from './languages/getResolvedOrResolveLanguage';\nimport { attachResolvedThemes } from './themes/attachResolvedThemes';\nimport { cleanUpResolvedThemes } from './themes/cleanUpResolvedThemes';\nimport { getResolvedOrResolveTheme } from './themes/getResolvedOrResolveTheme';\nimport { registerCustomTheme } from './themes/registerCustomTheme';\n\ntype CachedOrLoadingHighlighterType =\n | Promise<DiffsHighlighter>\n | DiffsHighlighter\n | undefined;\n\nlet highlighter: CachedOrLoadingHighlighterType;\n\ninterface HighlighterOptions {\n themes: DiffsThemeNames[];\n langs: SupportedLanguages[];\n preferredHighlighter?: HighlighterTypes;\n}\n\nexport async function getSharedHighlighter({\n themes,\n langs,\n preferredHighlighter = 'shiki-js',\n}: HighlighterOptions): Promise<DiffsHighlighter> {\n highlighter ??= createHighlighter({\n themes: [],\n langs: ['text'],\n engine:\n preferredHighlighter === 'shiki-wasm'\n ? createOnigurumaEngine(import('shiki/wasm'))\n : createJavaScriptRegexEngine(),\n }) as Promise<DiffsHighlighter>;\n\n const instance = isHighlighterLoading(highlighter)\n ? await highlighter\n : highlighter;\n highlighter = instance;\n\n const languageLoaders: Promise<ResolvedLanguage>[] = [];\n for (const language of langs) {\n if (language === 'text' || language === 'ansi') continue;\n const maybeResolvedLanguage = getResolvedOrResolveLanguage(language);\n if ('then' in maybeResolvedLanguage) {\n languageLoaders.push(maybeResolvedLanguage);\n } else {\n attachResolvedLanguages(maybeResolvedLanguage, instance);\n }\n }\n\n const themeLoaders: Promise<ThemeRegistrationResolved>[] = [];\n for (const themeName of themes) {\n const maybeResolvedTheme = getResolvedOrResolveTheme(themeName);\n if ('then' in maybeResolvedTheme) {\n themeLoaders.push(maybeResolvedTheme);\n } else {\n attachResolvedThemes(maybeResolvedTheme, highlighter);\n }\n }\n\n // If we need to load any languages or themes, lets do that now\n if (languageLoaders.length > 0 || themeLoaders.length > 0) {\n await Promise.all([\n Promise.all(languageLoaders).then((languages) => {\n attachResolvedLanguages(languages, instance);\n }),\n Promise.all(themeLoaders).then((themes) => {\n attachResolvedThemes(themes, instance);\n }),\n ]);\n }\n\n return instance;\n}\n\nexport function isHighlighterLoaded(\n h: CachedOrLoadingHighlighterType = highlighter\n): h is DiffsHighlighter {\n return h != null && !('then' in h);\n}\n\nexport function getHighlighterIfLoaded(): DiffsHighlighter | undefined {\n if (highlighter != null && !('then' in highlighter)) {\n return highlighter;\n }\n return undefined;\n}\n\nexport function isHighlighterLoading(\n h: CachedOrLoadingHighlighterType = highlighter\n): h is Promise<DiffsHighlighter> {\n return h != null && 'then' in h;\n}\n\nexport function isHighlighterNull(\n h: CachedOrLoadingHighlighterType = highlighter\n): h is undefined {\n return h == null;\n}\n\nexport async function preloadHighlighter(\n options: HighlighterOptions\n): Promise<void> {\n return void (await getSharedHighlighter(options));\n}\n\nexport async function disposeHighlighter(): Promise<void> {\n if (highlighter == null) return;\n (await highlighter).dispose();\n cleanUpResolvedLanguages();\n cleanUpResolvedThemes();\n highlighter = undefined;\n}\n\nregisterCustomTheme('pierre-dark', async () => {\n const { default: theme } = await import('@pierre/theme/pierre-dark');\n return { ...theme, name: 'pierre-dark' } as ThemeRegistrationResolved;\n});\n\nregisterCustomTheme('pierre-dark-soft', async () => {\n const { default: theme } = await import('@pierre/theme/pierre-dark-soft');\n return { ...theme, name: 'pierre-dark-soft' } as ThemeRegistrationResolved;\n});\n\nregisterCustomTheme('pierre-light', async () => {\n const { default: theme } = await import('@pierre/theme/pierre-light');\n return { ...theme, name: 'pierre-light' } as ThemeRegistrationResolved;\n});\n\nregisterCustomTheme('pierre-light-soft', async () => {\n const { default: theme } = await import('@pierre/theme/pierre-light-soft');\n return { ...theme, name: 'pierre-light-soft' } as ThemeRegistrationResolved;\n});\n"],"mappings":";;;;;;;;;;AA2BA,IAAIA;AAQJ,eAAsB,qBAAqB,EACzC,QACA,OACA,uBAAuB,cACyB;AAChD,iBAAgB,kBAAkB;EAChC,QAAQ,EAAE;EACV,OAAO,CAAC,OAAO;EACf,QACE,yBAAyB,eACrB,sBAAsB,OAAO,cAAc,GAC3C,6BAA6B;EACpC,CAAC;CAEF,MAAM,WAAW,qBAAqB,YAAY,GAC9C,MAAM,cACN;AACJ,eAAc;CAEd,MAAMC,kBAA+C,EAAE;AACvD,MAAK,MAAM,YAAY,OAAO;AAC5B,MAAI,aAAa,UAAU,aAAa,OAAQ;EAChD,MAAM,wBAAwB,6BAA6B,SAAS;AACpE,MAAI,UAAU,sBACZ,iBAAgB,KAAK,sBAAsB;MAE3C,yBAAwB,uBAAuB,SAAS;;CAI5D,MAAMC,eAAqD,EAAE;AAC7D,MAAK,MAAM,aAAa,QAAQ;EAC9B,MAAM,qBAAqB,0BAA0B,UAAU;AAC/D,MAAI,UAAU,mBACZ,cAAa,KAAK,mBAAmB;MAErC,sBAAqB,oBAAoB,YAAY;;AAKzD,KAAI,gBAAgB,SAAS,KAAK,aAAa,SAAS,EACtD,OAAM,QAAQ,IAAI,CAChB,QAAQ,IAAI,gBAAgB,CAAC,MAAM,cAAc;AAC/C,0BAAwB,WAAW,SAAS;GAC5C,EACF,QAAQ,IAAI,aAAa,CAAC,MAAM,aAAW;AACzC,uBAAqBC,UAAQ,SAAS;GACtC,CACH,CAAC;AAGJ,QAAO;;AAGT,SAAgB,oBACd,IAAoC,aACb;AACvB,QAAO,KAAK,QAAQ,EAAE,UAAU;;AAGlC,SAAgB,yBAAuD;AACrE,KAAI,eAAe,QAAQ,EAAE,UAAU,aACrC,QAAO;;AAKX,SAAgB,qBACd,IAAoC,aACJ;AAChC,QAAO,KAAK,QAAQ,UAAU;;AAGhC,SAAgB,kBACd,IAAoC,aACpB;AAChB,QAAO,KAAK;;AAGd,eAAsB,mBACpB,SACe;AACR,CAAM,MAAM,qBAAqB,QAAQ;;AAGlD,eAAsB,qBAAoC;AACxD,KAAI,eAAe,KAAM;AACzB,EAAC,MAAM,aAAa,SAAS;AAC7B,2BAA0B;AAC1B,wBAAuB;AACvB,eAAc;;AAGhB,oBAAoB,eAAe,YAAY;CAC7C,MAAM,EAAE,SAAS,UAAU,MAAM,OAAO;AACxC,QAAO;EAAE,GAAG;EAAO,MAAM;EAAe;EACxC;AAEF,oBAAoB,oBAAoB,YAAY;CAClD,MAAM,EAAE,SAAS,UAAU,MAAM,OAAO;AACxC,QAAO;EAAE,GAAG;EAAO,MAAM;EAAoB;EAC7C;AAEF,oBAAoB,gBAAgB,YAAY;CAC9C,MAAM,EAAE,SAAS,UAAU,MAAM,OAAO;AACxC,QAAO;EAAE,GAAG;EAAO,MAAM;EAAgB;EACzC;AAEF,oBAAoB,qBAAqB,YAAY;CACnD,MAAM,EAAE,SAAS,UAAU,MAAM,OAAO;AACxC,QAAO;EAAE,GAAG;EAAO,MAAM;EAAqB;EAC9C"}
1
+ {"version":3,"file":"shared_highlighter.js","names":["highlighter: CachedOrLoadingHighlighterType","languageLoaders: Promise<ResolvedLanguage>[]","themeLoaders: Promise<ThemeRegistrationResolved>[]","themes"],"sources":["../../src/highlighter/shared_highlighter.ts"],"sourcesContent":["import type { ThemeLoader } from '@pierre/theming';\nimport { pierreThemes } from '@pierre/theming/themes';\nimport {\n createHighlighter,\n createJavaScriptRegexEngine,\n createOnigurumaEngine,\n} from 'shiki';\n\nimport type {\n DiffsHighlighter,\n DiffsThemeNames,\n HighlighterTypes,\n SupportedLanguages,\n ThemeRegistrationResolved,\n} from '../types';\nimport type { ResolvedLanguage } from '../worker/types';\nimport { attachResolvedLanguages } from './languages/attachResolvedLanguages';\nimport { cleanUpResolvedLanguages } from './languages/cleanUpResolvedLanguages';\nimport { getResolvedOrResolveLanguage } from './languages/getResolvedOrResolveLanguage';\nimport { attachResolvedThemes } from './themes/attachResolvedThemes';\nimport { cleanUpResolvedThemes } from './themes/cleanUpResolvedThemes';\nimport { getResolvedOrResolveTheme } from './themes/getResolvedOrResolveTheme';\nimport { themeResolver } from './themes/themeResolver';\n\ntype CachedOrLoadingHighlighterType =\n | Promise<DiffsHighlighter>\n | DiffsHighlighter\n | undefined;\n\nlet highlighter: CachedOrLoadingHighlighterType;\n\ninterface HighlighterOptions {\n themes: DiffsThemeNames[];\n langs: SupportedLanguages[];\n preferredHighlighter?: HighlighterTypes;\n}\n\nexport async function getSharedHighlighter({\n themes,\n langs,\n preferredHighlighter = 'shiki-js',\n}: HighlighterOptions): Promise<DiffsHighlighter> {\n highlighter ??= createHighlighter({\n themes: [],\n langs: ['text'],\n engine:\n preferredHighlighter === 'shiki-wasm'\n ? createOnigurumaEngine(import('shiki/wasm'))\n : createJavaScriptRegexEngine(),\n }) as Promise<DiffsHighlighter>;\n\n const instance = isHighlighterLoading(highlighter)\n ? await highlighter\n : highlighter;\n highlighter = instance;\n\n const languageLoaders: Promise<ResolvedLanguage>[] = [];\n for (const language of langs) {\n if (language === 'text' || language === 'ansi') continue;\n const maybeResolvedLanguage = getResolvedOrResolveLanguage(language);\n if ('then' in maybeResolvedLanguage) {\n languageLoaders.push(maybeResolvedLanguage);\n } else {\n attachResolvedLanguages(maybeResolvedLanguage, instance);\n }\n }\n\n const themeLoaders: Promise<ThemeRegistrationResolved>[] = [];\n for (const themeName of themes) {\n const maybeResolvedTheme = getResolvedOrResolveTheme(themeName);\n if ('then' in maybeResolvedTheme) {\n themeLoaders.push(maybeResolvedTheme);\n } else {\n attachResolvedThemes(maybeResolvedTheme, highlighter);\n }\n }\n\n // If we need to load any languages or themes, lets do that now\n if (languageLoaders.length > 0 || themeLoaders.length > 0) {\n await Promise.all([\n Promise.all(languageLoaders).then((languages) => {\n attachResolvedLanguages(languages, instance);\n }),\n Promise.all(themeLoaders).then((themes) => {\n attachResolvedThemes(themes, instance);\n }),\n ]);\n }\n\n return instance;\n}\n\nexport function isHighlighterLoaded(\n h: CachedOrLoadingHighlighterType = highlighter\n): h is DiffsHighlighter {\n return h != null && !('then' in h);\n}\n\nexport function getHighlighterIfLoaded(): DiffsHighlighter | undefined {\n if (highlighter != null && !('then' in highlighter)) {\n return highlighter;\n }\n return undefined;\n}\n\nexport function isHighlighterLoading(\n h: CachedOrLoadingHighlighterType = highlighter\n): h is Promise<DiffsHighlighter> {\n return h != null && 'then' in h;\n}\n\nexport function isHighlighterNull(\n h: CachedOrLoadingHighlighterType = highlighter\n): h is undefined {\n return h == null;\n}\n\nexport async function preloadHighlighter(\n options: HighlighterOptions\n): Promise<void> {\n return void (await getSharedHighlighter(options));\n}\n\nexport async function disposeHighlighter(): Promise<void> {\n if (highlighter == null) return;\n (await highlighter).dispose();\n cleanUpResolvedLanguages();\n cleanUpResolvedThemes();\n highlighter = undefined;\n}\n\nfor (const descriptor of pierreThemes.getThemes()) {\n themeResolver.registerThemeIfAbsent(\n descriptor.name,\n descriptor.load as ThemeLoader<ThemeRegistrationResolved>\n );\n}\n"],"mappings":";;;;;;;;;;;AA6BA,IAAIA;AAQJ,eAAsB,qBAAqB,EACzC,QACA,OACA,uBAAuB,cACyB;AAChD,iBAAgB,kBAAkB;EAChC,QAAQ,EAAE;EACV,OAAO,CAAC,OAAO;EACf,QACE,yBAAyB,eACrB,sBAAsB,OAAO,cAAc,GAC3C,6BAA6B;EACpC,CAAC;CAEF,MAAM,WAAW,qBAAqB,YAAY,GAC9C,MAAM,cACN;AACJ,eAAc;CAEd,MAAMC,kBAA+C,EAAE;AACvD,MAAK,MAAM,YAAY,OAAO;AAC5B,MAAI,aAAa,UAAU,aAAa,OAAQ;EAChD,MAAM,wBAAwB,6BAA6B,SAAS;AACpE,MAAI,UAAU,sBACZ,iBAAgB,KAAK,sBAAsB;MAE3C,yBAAwB,uBAAuB,SAAS;;CAI5D,MAAMC,eAAqD,EAAE;AAC7D,MAAK,MAAM,aAAa,QAAQ;EAC9B,MAAM,qBAAqB,0BAA0B,UAAU;AAC/D,MAAI,UAAU,mBACZ,cAAa,KAAK,mBAAmB;MAErC,sBAAqB,oBAAoB,YAAY;;AAKzD,KAAI,gBAAgB,SAAS,KAAK,aAAa,SAAS,EACtD,OAAM,QAAQ,IAAI,CAChB,QAAQ,IAAI,gBAAgB,CAAC,MAAM,cAAc;AAC/C,0BAAwB,WAAW,SAAS;GAC5C,EACF,QAAQ,IAAI,aAAa,CAAC,MAAM,aAAW;AACzC,uBAAqBC,UAAQ,SAAS;GACtC,CACH,CAAC;AAGJ,QAAO;;AAGT,SAAgB,oBACd,IAAoC,aACb;AACvB,QAAO,KAAK,QAAQ,EAAE,UAAU;;AAGlC,SAAgB,yBAAuD;AACrE,KAAI,eAAe,QAAQ,EAAE,UAAU,aACrC,QAAO;;AAKX,SAAgB,qBACd,IAAoC,aACJ;AAChC,QAAO,KAAK,QAAQ,UAAU;;AAGhC,SAAgB,kBACd,IAAoC,aACpB;AAChB,QAAO,KAAK;;AAGd,eAAsB,mBACpB,SACe;AACR,CAAM,MAAM,qBAAqB,QAAQ;;AAGlD,eAAsB,qBAAoC;AACxD,KAAI,eAAe,KAAM;AACzB,EAAC,MAAM,aAAa,SAAS;AAC7B,2BAA0B;AAC1B,wBAAuB;AACvB,eAAc;;AAGhB,KAAK,MAAM,cAAc,aAAa,WAAW,CAC/C,eAAc,sBACZ,WAAW,MACX,WAAW,KACZ"}
@@ -1,4 +1,5 @@
1
- import { AttachedThemes, ResolvedThemes } from "./constants.js";
1
+ import { AttachedThemes } from "./constants.js";
2
+ import { themeResolver } from "./themeResolver.js";
2
3
 
3
4
  //#region src/highlighter/themes/attachResolvedThemes.ts
4
5
  function attachResolvedThemes(themes, highlighter) {
@@ -6,12 +7,12 @@ function attachResolvedThemes(themes, highlighter) {
6
7
  for (let themeRef of themes) {
7
8
  let resolvedTheme;
8
9
  if (typeof themeRef === "string") {
9
- resolvedTheme = ResolvedThemes.get(themeRef);
10
+ resolvedTheme = themeResolver.getResolvedTheme(themeRef);
10
11
  if (resolvedTheme == null) throw new Error(`loadResolvedThemes: ${themeRef} is not resolved, you must resolve it before calling loadResolvedThemes`);
11
12
  } else {
12
13
  resolvedTheme = themeRef;
13
14
  themeRef = themeRef.name;
14
- if (!ResolvedThemes.has(themeRef)) ResolvedThemes.set(themeRef, resolvedTheme);
15
+ if (themeResolver.getResolvedTheme(themeRef) == null) themeResolver.seedResolvedTheme(themeRef, resolvedTheme);
15
16
  }
16
17
  if (AttachedThemes.has(themeRef)) continue;
17
18
  AttachedThemes.add(themeRef);
@@ -1 +1 @@
1
- {"version":3,"file":"attachResolvedThemes.js","names":["resolvedTheme: ThemeRegistrationResolved | undefined"],"sources":["../../../src/highlighter/themes/attachResolvedThemes.ts"],"sourcesContent":["import type {\n DiffsHighlighter,\n DiffsThemeNames,\n ThemeRegistrationResolved,\n} from '../../types';\nimport { AttachedThemes, ResolvedThemes } from './constants';\n\nexport function attachResolvedThemes(\n themes:\n | DiffsThemeNames\n | ThemeRegistrationResolved\n | (DiffsThemeNames | ThemeRegistrationResolved)[],\n highlighter: DiffsHighlighter\n): void {\n themes = Array.isArray(themes) ? themes : [themes];\n for (let themeRef of themes) {\n let resolvedTheme: ThemeRegistrationResolved | undefined;\n if (typeof themeRef === 'string') {\n resolvedTheme = ResolvedThemes.get(themeRef);\n if (resolvedTheme == null) {\n throw new Error(\n `loadResolvedThemes: ${themeRef} is not resolved, you must resolve it before calling loadResolvedThemes`\n );\n }\n } else {\n resolvedTheme = themeRef;\n themeRef = themeRef.name;\n if (!ResolvedThemes.has(themeRef)) {\n ResolvedThemes.set(themeRef, resolvedTheme);\n }\n }\n if (AttachedThemes.has(themeRef)) continue;\n AttachedThemes.add(themeRef);\n highlighter.loadThemeSync(resolvedTheme);\n }\n}\n"],"mappings":";;;AAOA,SAAgB,qBACd,QAIA,aACM;AACN,UAAS,MAAM,QAAQ,OAAO,GAAG,SAAS,CAAC,OAAO;AAClD,MAAK,IAAI,YAAY,QAAQ;EAC3B,IAAIA;AACJ,MAAI,OAAO,aAAa,UAAU;AAChC,mBAAgB,eAAe,IAAI,SAAS;AAC5C,OAAI,iBAAiB,KACnB,OAAM,IAAI,MACR,uBAAuB,SAAS,yEACjC;SAEE;AACL,mBAAgB;AAChB,cAAW,SAAS;AACpB,OAAI,CAAC,eAAe,IAAI,SAAS,CAC/B,gBAAe,IAAI,UAAU,cAAc;;AAG/C,MAAI,eAAe,IAAI,SAAS,CAAE;AAClC,iBAAe,IAAI,SAAS;AAC5B,cAAY,cAAc,cAAc"}
1
+ {"version":3,"file":"attachResolvedThemes.js","names":["resolvedTheme: ThemeRegistrationResolved | undefined"],"sources":["../../../src/highlighter/themes/attachResolvedThemes.ts"],"sourcesContent":["import type {\n DiffsHighlighter,\n DiffsThemeNames,\n ThemeRegistrationResolved,\n} from '../../types';\nimport { AttachedThemes } from './constants';\nimport { themeResolver } from './themeResolver';\n\n// Loads resolved themes into the highlighter (loadThemeSync) and records them\n// in AttachedThemes so each theme is attached at most once. Accepts either a\n// name (which must already be resolved/cached) or a fully-resolved theme\n// object. Theme objects are seeded into the resolver when not already present —\n// this is the path workers use: they receive pre-resolved themes from the main\n// thread (they cannot call resolveTheme themselves) and need them available so\n// getResolvedThemes works synchronously.\nexport function attachResolvedThemes(\n themes:\n | DiffsThemeNames\n | ThemeRegistrationResolved\n | (DiffsThemeNames | ThemeRegistrationResolved)[],\n highlighter: DiffsHighlighter\n): void {\n themes = Array.isArray(themes) ? themes : [themes];\n for (let themeRef of themes) {\n let resolvedTheme: ThemeRegistrationResolved | undefined;\n if (typeof themeRef === 'string') {\n resolvedTheme = themeResolver.getResolvedTheme(themeRef);\n if (resolvedTheme == null) {\n throw new Error(\n `loadResolvedThemes: ${themeRef} is not resolved, you must resolve it before calling loadResolvedThemes`\n );\n }\n } else {\n resolvedTheme = themeRef;\n themeRef = themeRef.name;\n if (themeResolver.getResolvedTheme(themeRef) == null) {\n themeResolver.seedResolvedTheme(themeRef, resolvedTheme);\n }\n }\n if (AttachedThemes.has(themeRef)) continue;\n AttachedThemes.add(themeRef);\n highlighter.loadThemeSync(resolvedTheme);\n }\n}\n"],"mappings":";;;;AAeA,SAAgB,qBACd,QAIA,aACM;AACN,UAAS,MAAM,QAAQ,OAAO,GAAG,SAAS,CAAC,OAAO;AAClD,MAAK,IAAI,YAAY,QAAQ;EAC3B,IAAIA;AACJ,MAAI,OAAO,aAAa,UAAU;AAChC,mBAAgB,cAAc,iBAAiB,SAAS;AACxD,OAAI,iBAAiB,KACnB,OAAM,IAAI,MACR,uBAAuB,SAAS,yEACjC;SAEE;AACL,mBAAgB;AAChB,cAAW,SAAS;AACpB,OAAI,cAAc,iBAAiB,SAAS,IAAI,KAC9C,eAAc,kBAAkB,UAAU,cAAc;;AAG5D,MAAI,eAAe,IAAI,SAAS,CAAE;AAClC,iBAAe,IAAI,SAAS;AAC5B,cAAY,cAAc,cAAc"}
@@ -1,8 +1,9 @@
1
- import { AttachedThemes, ResolvedThemes } from "./constants.js";
1
+ import { AttachedThemes } from "./constants.js";
2
+ import { themeResolver } from "./themeResolver.js";
2
3
 
3
4
  //#region src/highlighter/themes/cleanUpResolvedThemes.ts
4
5
  function cleanUpResolvedThemes() {
5
- ResolvedThemes.clear();
6
+ themeResolver.clearResolvedThemes();
6
7
  AttachedThemes.clear();
7
8
  }
8
9
 
@@ -1 +1 @@
1
- {"version":3,"file":"cleanUpResolvedThemes.js","names":[],"sources":["../../../src/highlighter/themes/cleanUpResolvedThemes.ts"],"sourcesContent":["import { AttachedThemes, ResolvedThemes } from './constants';\n\nexport function cleanUpResolvedThemes(): void {\n ResolvedThemes.clear();\n AttachedThemes.clear();\n}\n"],"mappings":";;;AAEA,SAAgB,wBAA8B;AAC5C,gBAAe,OAAO;AACtB,gBAAe,OAAO"}
1
+ {"version":3,"file":"cleanUpResolvedThemes.js","names":[],"sources":["../../../src/highlighter/themes/cleanUpResolvedThemes.ts"],"sourcesContent":["import { AttachedThemes } from './constants';\nimport { themeResolver } from './themeResolver';\n\n// Clears the resolved-theme cache (and any in-flight loads) plus the set of\n// themes attached to the highlighter. Registered loaders are intentionally\n// preserved, so previously registered custom/pierre/bundled themes can be\n// resolved again without re-registering.\nexport function cleanUpResolvedThemes(): void {\n themeResolver.clearResolvedThemes();\n AttachedThemes.clear();\n}\n"],"mappings":";;;;AAOA,SAAgB,wBAA8B;AAC5C,eAAc,qBAAqB;AACnC,gBAAe,OAAO"}
@@ -1,11 +1,5 @@
1
- import { DiffsThemeNames } from "../../types.js";
2
- import { ThemeRegistration, ThemeRegistrationResolved } from "shiki";
3
-
4
1
  //#region src/highlighter/themes/constants.d.ts
5
- declare const ResolvedThemes: Map<DiffsThemeNames, ThemeRegistrationResolved>;
6
- declare const ResolvingThemes: Map<DiffsThemeNames, Promise<ThemeRegistrationResolved>>;
7
- declare const RegisteredCustomThemes: Map<string, () => Promise<ThemeRegistrationResolved | ThemeRegistration>>;
8
2
  declare const AttachedThemes: Set<string>;
9
3
  //#endregion
10
- export { AttachedThemes, RegisteredCustomThemes, ResolvedThemes, ResolvingThemes };
4
+ export { AttachedThemes };
11
5
  //# sourceMappingURL=constants.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"constants.d.ts","names":["ThemeRegistration","ThemeRegistrationResolved","DiffsThemeNames","ResolvedThemes","Map","ResolvingThemes","Promise","RegisteredCustomThemes","AttachedThemes","Set"],"sources":["../../../src/highlighter/themes/constants.d.ts"],"sourcesContent":["import type { ThemeRegistration, ThemeRegistrationResolved } from 'shiki';\nimport type { DiffsThemeNames } from '../../types';\nexport declare const ResolvedThemes: Map<DiffsThemeNames, ThemeRegistrationResolved>;\nexport declare const ResolvingThemes: Map<DiffsThemeNames, Promise<ThemeRegistrationResolved>>;\nexport declare const RegisteredCustomThemes: Map<string, () => Promise<ThemeRegistrationResolved | ThemeRegistration>>;\nexport declare const AttachedThemes: Set<string>;\n//# sourceMappingURL=constants.d.ts.map"],"mappings":";;;;cAEqBG,gBAAgBC,IAAIF,iBAAiBD;cACrCI,iBAAiBD,IAAIF,iBAAiBI,QAAQL;AAD9CE,cAEAI,sBAF+D,EAEvCH,GAFuC,CAAA,MAAA,EAAA,GAAA,GAErBE,OAFqB,CAEbL,yBAFa,GAEeD,iBAFf,CAAA,CAAA;AAA3CE,cAGpBM,cAHoBN,EAGJO,GAHIP,CAAAA,MAAAA,CAAAA"}
1
+ {"version":3,"file":"constants.d.ts","names":["AttachedThemes","Set"],"sources":["../../../src/highlighter/themes/constants.d.ts"],"sourcesContent":["export declare const AttachedThemes: Set<string>;\n//# sourceMappingURL=constants.d.ts.map"],"mappings":";cAAqBA,gBAAgBC"}
@@ -1,9 +1,6 @@
1
1
  //#region src/highlighter/themes/constants.ts
2
- const ResolvedThemes = /* @__PURE__ */ new Map();
3
- const ResolvingThemes = /* @__PURE__ */ new Map();
4
- const RegisteredCustomThemes = /* @__PURE__ */ new Map();
5
2
  const AttachedThemes = /* @__PURE__ */ new Set();
6
3
 
7
4
  //#endregion
8
- export { AttachedThemes, RegisteredCustomThemes, ResolvedThemes, ResolvingThemes };
5
+ export { AttachedThemes };
9
6
  //# sourceMappingURL=constants.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"constants.js","names":["ResolvedThemes: Map<DiffsThemeNames, ThemeRegistrationResolved>","ResolvingThemes: Map<\n DiffsThemeNames,\n Promise<ThemeRegistrationResolved>\n>","RegisteredCustomThemes: Map<\n string,\n () => Promise<ThemeRegistrationResolved | ThemeRegistration>\n>","AttachedThemes: Set<string>"],"sources":["../../../src/highlighter/themes/constants.ts"],"sourcesContent":["import type { ThemeRegistration, ThemeRegistrationResolved } from 'shiki';\n\nimport type { DiffsThemeNames } from '../../types';\n\nexport const ResolvedThemes: Map<DiffsThemeNames, ThemeRegistrationResolved> =\n new Map();\n\nexport const ResolvingThemes: Map<\n DiffsThemeNames,\n Promise<ThemeRegistrationResolved>\n> = new Map();\n\nexport const RegisteredCustomThemes: Map<\n string,\n () => Promise<ThemeRegistrationResolved | ThemeRegistration>\n> = new Map();\n\nexport const AttachedThemes: Set<string> = new Set();\n"],"mappings":";AAIA,MAAaA,iCACX,IAAI,KAAK;AAEX,MAAaC,kCAGT,IAAI,KAAK;AAEb,MAAaC,yCAGT,IAAI,KAAK;AAEb,MAAaC,iCAA8B,IAAI,KAAK"}
1
+ {"version":3,"file":"constants.js","names":["AttachedThemes: Set<string>"],"sources":["../../../src/highlighter/themes/constants.ts"],"sourcesContent":["// Names of themes that have been loaded into the active highlighter via\n// loadThemeSync. This is the highlighter-attachment concern, kept separate from\n// the resolved-theme cache in the diffs theme resolver. Cleared by\n// cleanUpResolvedThemes when the highlighter is disposed.\nexport const AttachedThemes: Set<string> = new Set();\n"],"mappings":";AAIA,MAAaA,iCAA8B,IAAI,KAAK"}
@@ -1,9 +1,9 @@
1
- import { ResolvedThemes } from "./constants.js";
1
+ import { themeResolver } from "./themeResolver.js";
2
2
  import { resolveTheme } from "./resolveTheme.js";
3
3
 
4
4
  //#region src/highlighter/themes/getResolvedOrResolveTheme.ts
5
5
  function getResolvedOrResolveTheme(themeName) {
6
- return ResolvedThemes.get(themeName) ?? resolveTheme(themeName);
6
+ return themeResolver.getResolvedTheme(themeName) ?? resolveTheme(themeName);
7
7
  }
8
8
 
9
9
  //#endregion
@@ -1 +1 @@
1
- {"version":3,"file":"getResolvedOrResolveTheme.js","names":[],"sources":["../../../src/highlighter/themes/getResolvedOrResolveTheme.ts"],"sourcesContent":["import type { DiffsThemeNames, ThemeRegistrationResolved } from '../../types';\nimport { ResolvedThemes } from './constants';\nimport { resolveTheme } from './resolveTheme';\n\nexport function getResolvedOrResolveTheme(\n themeName: DiffsThemeNames\n): ThemeRegistrationResolved | Promise<ThemeRegistrationResolved> {\n return ResolvedThemes.get(themeName) ?? resolveTheme(themeName);\n}\n"],"mappings":";;;;AAIA,SAAgB,0BACd,WACgE;AAChE,QAAO,eAAe,IAAI,UAAU,IAAI,aAAa,UAAU"}
1
+ {"version":3,"file":"getResolvedOrResolveTheme.js","names":[],"sources":["../../../src/highlighter/themes/getResolvedOrResolveTheme.ts"],"sourcesContent":["import type { DiffsThemeNames, ThemeRegistrationResolved } from '../../types';\nimport { resolveTheme } from './resolveTheme';\nimport { themeResolver } from './themeResolver';\n\n// Returns the resolved theme synchronously when it is already cached, otherwise\n// kicks off (and returns the Promise for) a full resolveTheme. Uses the diffs\n// resolveTheme wrapper for the cold path so the worker guard, bundled fallback,\n// and name validation still apply.\nexport function getResolvedOrResolveTheme(\n themeName: DiffsThemeNames\n): ThemeRegistrationResolved | Promise<ThemeRegistrationResolved> {\n return themeResolver.getResolvedTheme(themeName) ?? resolveTheme(themeName);\n}\n"],"mappings":";;;;AAQA,SAAgB,0BACd,WACgE;AAChE,QAAO,cAAc,iBAAiB,UAAU,IAAI,aAAa,UAAU"}
@@ -1,14 +1,8 @@
1
- import { ResolvedThemes } from "./constants.js";
1
+ import { themeResolver } from "./themeResolver.js";
2
2
 
3
3
  //#region src/highlighter/themes/getResolvedThemes.ts
4
4
  function getResolvedThemes(themeNames) {
5
- const resolvedThemes = [];
6
- for (const themeName of themeNames) {
7
- const theme = ResolvedThemes.get(themeName);
8
- if (theme == null) throw new Error(`getAllResolvedThemes: ${themeName} is unresolved, you must resolve all necessary themes before calling this function`);
9
- resolvedThemes.push(theme);
10
- }
11
- return resolvedThemes;
5
+ return themeResolver.getResolvedThemes(themeNames);
12
6
  }
13
7
 
14
8
  //#endregion
@@ -1 +1 @@
1
- {"version":3,"file":"getResolvedThemes.js","names":["resolvedThemes: ThemeRegistrationResolved[]"],"sources":["../../../src/highlighter/themes/getResolvedThemes.ts"],"sourcesContent":["import type { DiffsThemeNames, ThemeRegistrationResolved } from '../../types';\nimport { ResolvedThemes } from './constants';\n\n// This method should only be called if you know all themes are resolved,\n// otherwise it will fail. The main intention is a helper to avoid an async\n// tick if we don't actually need it\nexport function getResolvedThemes(\n themeNames: DiffsThemeNames[]\n): ThemeRegistrationResolved[] {\n const resolvedThemes: ThemeRegistrationResolved[] = [];\n for (const themeName of themeNames) {\n const theme = ResolvedThemes.get(themeName);\n if (theme == null) {\n throw new Error(\n `getAllResolvedThemes: ${themeName} is unresolved, you must resolve all necessary themes before calling this function`\n );\n }\n resolvedThemes.push(theme);\n }\n return resolvedThemes;\n}\n"],"mappings":";;;AAMA,SAAgB,kBACd,YAC6B;CAC7B,MAAMA,iBAA8C,EAAE;AACtD,MAAK,MAAM,aAAa,YAAY;EAClC,MAAM,QAAQ,eAAe,IAAI,UAAU;AAC3C,MAAI,SAAS,KACX,OAAM,IAAI,MACR,yBAAyB,UAAU,oFACpC;AAEH,iBAAe,KAAK,MAAM;;AAE5B,QAAO"}
1
+ {"version":3,"file":"getResolvedThemes.js","names":[],"sources":["../../../src/highlighter/themes/getResolvedThemes.ts"],"sourcesContent":["import type { DiffsThemeNames, ThemeRegistrationResolved } from '../../types';\nimport { themeResolver } from './themeResolver';\n\n// This method should only be called if you know all themes are resolved,\n// otherwise it will fail. The main intention is a helper to avoid an async\n// tick if we don't actually need it\nexport function getResolvedThemes(\n themeNames: DiffsThemeNames[]\n): ThemeRegistrationResolved[] {\n return themeResolver.getResolvedThemes(themeNames);\n}\n"],"mappings":";;;AAMA,SAAgB,kBACd,YAC6B;AAC7B,QAAO,cAAc,kBAAkB,WAAW"}
@@ -1,9 +1,8 @@
1
- import { ResolvedThemes } from "./constants.js";
1
+ import { themeResolver } from "./themeResolver.js";
2
2
 
3
3
  //#region src/highlighter/themes/hasResolvedThemes.ts
4
4
  function hasResolvedThemes(themeNames) {
5
- for (const themeName of themeNames) if (!ResolvedThemes.has(themeName)) return false;
6
- return true;
5
+ return themeResolver.hasResolvedThemes(themeNames);
7
6
  }
8
7
 
9
8
  //#endregion
@@ -1 +1 @@
1
- {"version":3,"file":"hasResolvedThemes.js","names":[],"sources":["../../../src/highlighter/themes/hasResolvedThemes.ts"],"sourcesContent":["import type { DiffsThemeNames } from '../../types';\nimport { ResolvedThemes } from './constants';\n\nexport function hasResolvedThemes(themeNames: DiffsThemeNames[]): boolean {\n for (const themeName of themeNames) {\n if (!ResolvedThemes.has(themeName)) {\n return false;\n }\n }\n return true;\n}\n"],"mappings":";;;AAGA,SAAgB,kBAAkB,YAAwC;AACxE,MAAK,MAAM,aAAa,WACtB,KAAI,CAAC,eAAe,IAAI,UAAU,CAChC,QAAO;AAGX,QAAO"}
1
+ {"version":3,"file":"hasResolvedThemes.js","names":[],"sources":["../../../src/highlighter/themes/hasResolvedThemes.ts"],"sourcesContent":["import type { DiffsThemeNames } from '../../types';\nimport { themeResolver } from './themeResolver';\n\nexport function hasResolvedThemes(themeNames: DiffsThemeNames[]): boolean {\n return themeResolver.hasResolvedThemes(themeNames);\n}\n"],"mappings":";;;AAGA,SAAgB,kBAAkB,YAAwC;AACxE,QAAO,cAAc,kBAAkB,WAAW"}
@@ -1,5 +1,5 @@
1
- import { registerCustomTheme } from "./registerCustomTheme.js";
2
1
  import { formatCSSVariablePrefix } from "../../utils/formatCSSVariablePrefix.js";
2
+ import { registerCustomTheme } from "./registerCustomTheme.js";
3
3
  import { createCssVariablesTheme } from "shiki";
4
4
 
5
5
  //#region src/highlighter/themes/registerCustomCSSVariableTheme.ts
@@ -1,7 +1,9 @@
1
- import { ThemeRegistration, ThemeRegistrationResolved } from "shiki";
1
+ import { ThemeRegistration, ThemeRegistrationResolved } from "../../types.js";
2
+ import { ThemeLoader } from "@pierre/theming";
2
3
 
3
4
  //#region src/highlighter/themes/registerCustomTheme.d.ts
4
- declare function registerCustomTheme(themeName: string, loader: () => Promise<ThemeRegistrationResolved | ThemeRegistration>): void;
5
+ type CustomThemeLoader = ThemeLoader<ThemeRegistration | ThemeRegistrationResolved>;
6
+ declare function registerCustomTheme(themeName: string, loader: CustomThemeLoader): void;
5
7
  //#endregion
6
- export { registerCustomTheme };
8
+ export { CustomThemeLoader, registerCustomTheme };
7
9
  //# sourceMappingURL=registerCustomTheme.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"registerCustomTheme.d.ts","names":["ThemeRegistration","ThemeRegistrationResolved","registerCustomTheme","Promise"],"sources":["../../../src/highlighter/themes/registerCustomTheme.d.ts"],"sourcesContent":["import type { ThemeRegistration, ThemeRegistrationResolved } from 'shiki';\nexport declare function registerCustomTheme(themeName: string, loader: () => Promise<ThemeRegistrationResolved | ThemeRegistration>): void;\n//# sourceMappingURL=registerCustomTheme.d.ts.map"],"mappings":";;;iBACwBE,mBAAAA,kCAAqDC,QAAQF,4BAA4BD"}
1
+ {"version":3,"file":"registerCustomTheme.d.ts","names":["ThemeLoader","ThemeRegistration","ThemeRegistrationResolved","CustomThemeLoader","registerCustomTheme"],"sources":["../../../src/highlighter/themes/registerCustomTheme.d.ts"],"sourcesContent":["import { type ThemeLoader } from '@pierre/theming';\nimport type { ThemeRegistration, ThemeRegistrationResolved } from '../../types';\nexport type CustomThemeLoader = ThemeLoader<ThemeRegistration | ThemeRegistrationResolved>;\nexport declare function registerCustomTheme(themeName: string, loader: CustomThemeLoader): void;\n//# sourceMappingURL=registerCustomTheme.d.ts.map"],"mappings":";;;;KAEYG,iBAAAA,GAAoBH,YAAYC,oBAAoBC;iBACxCE,mBAAAA,4BAA+CD"}
@@ -1,12 +1,22 @@
1
- import { RegisteredCustomThemes } from "./constants.js";
1
+ import { themeResolver } from "./themeResolver.js";
2
+ import { createTheme } from "@pierre/theming/themes";
3
+ import { DuplicateThemeError } from "@pierre/theming";
2
4
 
3
5
  //#region src/highlighter/themes/registerCustomTheme.ts
4
6
  function registerCustomTheme(themeName, loader) {
5
- if (RegisteredCustomThemes.has(themeName)) {
6
- console.error("SharedHighlight.registerCustomTheme: theme name already registered", themeName);
7
- return;
7
+ try {
8
+ const descriptor = createTheme({
9
+ name: themeName,
10
+ load: loader
11
+ });
12
+ themeResolver.registerTheme(descriptor.name, descriptor.load);
13
+ } catch (error) {
14
+ if (error instanceof DuplicateThemeError) {
15
+ console.error("SharedHighlight.registerCustomTheme: theme name already registered", themeName);
16
+ return;
17
+ }
18
+ throw error;
8
19
  }
9
- RegisteredCustomThemes.set(themeName, loader);
10
20
  }
11
21
 
12
22
  //#endregion
@@ -1 +1 @@
1
- {"version":3,"file":"registerCustomTheme.js","names":[],"sources":["../../../src/highlighter/themes/registerCustomTheme.ts"],"sourcesContent":["import type { ThemeRegistration, ThemeRegistrationResolved } from 'shiki';\n\nimport { RegisteredCustomThemes } from './constants';\n\nexport function registerCustomTheme(\n themeName: string,\n loader: () => Promise<ThemeRegistrationResolved | ThemeRegistration>\n): void {\n if (RegisteredCustomThemes.has(themeName)) {\n console.error(\n 'SharedHighlight.registerCustomTheme: theme name already registered',\n themeName\n );\n return;\n }\n RegisteredCustomThemes.set(themeName, loader);\n}\n"],"mappings":";;;AAIA,SAAgB,oBACd,WACA,QACM;AACN,KAAI,uBAAuB,IAAI,UAAU,EAAE;AACzC,UAAQ,MACN,sEACA,UACD;AACD;;AAEF,wBAAuB,IAAI,WAAW,OAAO"}
1
+ {"version":3,"file":"registerCustomTheme.js","names":[],"sources":["../../../src/highlighter/themes/registerCustomTheme.ts"],"sourcesContent":["import { DuplicateThemeError, type ThemeLoader } from '@pierre/theming';\nimport { createTheme } from '@pierre/theming/themes';\n\nimport type { ThemeRegistration, ThemeRegistrationResolved } from '../../types';\nimport { themeResolver } from './themeResolver';\n\nexport type CustomThemeLoader = ThemeLoader<\n ThemeRegistration | ThemeRegistrationResolved\n>;\n\n// Registers a named custom theme loader on the diffs resolver. The loader is\n// wrapped by createTheme so its result is run through Shiki's\n// normalizeTheme before caching — this preserves the legacy behavior where\n// every resolved theme (custom, Pierre, or Shiki-provided) was normalized, so\n// its fg/bg are derived from the colors map. Re-registering an existing name is\n// a no-op that logs, matching the previous contract (the generic resolver throws\n// DuplicateThemeError, which we translate back into the log-and-return shape).\nexport function registerCustomTheme(\n themeName: string,\n loader: CustomThemeLoader\n): void {\n try {\n const descriptor = createTheme<ThemeRegistrationResolved>({\n name: themeName,\n load: loader,\n });\n themeResolver.registerTheme(descriptor.name, descriptor.load);\n } catch (error) {\n if (error instanceof DuplicateThemeError) {\n console.error(\n 'SharedHighlight.registerCustomTheme: theme name already registered',\n themeName\n );\n return;\n }\n throw error;\n }\n}\n"],"mappings":";;;;;AAiBA,SAAgB,oBACd,WACA,QACM;AACN,KAAI;EACF,MAAM,aAAa,YAAuC;GACxD,MAAM;GACN,MAAM;GACP,CAAC;AACF,gBAAc,cAAc,WAAW,MAAM,WAAW,KAAK;UACtD,OAAO;AACd,MAAI,iBAAiB,qBAAqB;AACxC,WAAQ,MACN,sEACA,UACD;AACD;;AAEF,QAAM"}
@@ -1,33 +1,12 @@
1
- import { isWorkerContext } from "../../utils/isWorkerContext.js";
2
- import { RegisteredCustomThemes, ResolvedThemes, ResolvingThemes } from "./constants.js";
3
- import { bundledThemes, normalizeTheme } from "shiki";
1
+ import { themeResolver } from "./themeResolver.js";
2
+ import { prepareThemeResolution, validateResolvedThemeName } from "./themeResolution.js";
4
3
 
5
4
  //#region src/highlighter/themes/resolveTheme.ts
6
5
  async function resolveTheme(themeName) {
7
- if (isWorkerContext()) throw new Error(`resolveTheme("${themeName}") cannot be called from a worker context. Themes must be pre-resolved on the main thread and passed to the worker via the resolvedLanguages parameter.`);
8
- const resolver = ResolvingThemes.get(themeName);
9
- if (resolver != null) return resolver;
10
- try {
11
- const loader = RegisteredCustomThemes.get(themeName) ?? bundledThemes[themeName];
12
- if (loader == null) throw new Error(`resolveTheme: No valid loader for ${themeName}`);
13
- const resolver$1 = loader().then((result) => {
14
- return normalizeAndCacheResolvedTheme(themeName, "default" in result ? result.default : result);
15
- });
16
- ResolvingThemes.set(themeName, resolver$1);
17
- const theme = await resolver$1;
18
- if (theme.name !== themeName) throw new Error(`resolvedTheme: themeName: ${themeName} does not match theme.name: ${theme.name}`);
19
- ResolvedThemes.set(theme.name, theme);
20
- return theme;
21
- } finally {
22
- ResolvingThemes.delete(themeName);
23
- }
24
- }
25
- function normalizeAndCacheResolvedTheme(themeName, themeData) {
26
- const resolvedTheme = ResolvedThemes.get(themeName);
27
- if (resolvedTheme != null) return resolvedTheme;
28
- themeData = normalizeTheme(themeData);
29
- ResolvedThemes.set(themeName, themeData);
30
- return themeData;
6
+ prepareThemeResolution(themeName);
7
+ const theme = await themeResolver.resolveTheme(themeName);
8
+ validateResolvedThemeName(themeName, theme);
9
+ return theme;
31
10
  }
32
11
 
33
12
  //#endregion
@@ -1 +1 @@
1
- {"version":3,"file":"resolveTheme.js","names":["resolver"],"sources":["../../../src/highlighter/themes/resolveTheme.ts"],"sourcesContent":["import { bundledThemes, normalizeTheme } from 'shiki';\n\nimport type { DiffsThemeNames, ThemeRegistrationResolved } from '../../types';\nimport { isWorkerContext } from '../../utils/isWorkerContext';\nimport {\n RegisteredCustomThemes,\n ResolvedThemes,\n ResolvingThemes,\n} from './constants';\n\nexport async function resolveTheme(\n themeName: DiffsThemeNames\n): Promise<ThemeRegistrationResolved> {\n if (isWorkerContext()) {\n throw new Error(\n `resolveTheme(\"${themeName}\") cannot be called from a worker context. ` +\n 'Themes must be pre-resolved on the main thread and passed to the worker via the resolvedLanguages parameter.'\n );\n }\n\n const resolver = ResolvingThemes.get(themeName);\n if (resolver != null) {\n return resolver;\n }\n\n try {\n const loader =\n RegisteredCustomThemes.get(themeName) ??\n bundledThemes[themeName as keyof typeof bundledThemes];\n\n if (loader == null) {\n throw new Error(`resolveTheme: No valid loader for ${themeName}`);\n }\n\n const resolver = loader().then((result) => {\n return normalizeAndCacheResolvedTheme(\n themeName,\n ('default' in result\n ? result.default\n : result) as ThemeRegistrationResolved\n );\n });\n\n ResolvingThemes.set(themeName, resolver);\n const theme = await resolver;\n if (theme.name !== themeName) {\n throw new Error(\n `resolvedTheme: themeName: ${themeName} does not match theme.name: ${theme.name}`\n );\n }\n ResolvedThemes.set(theme.name, theme);\n return theme;\n } finally {\n ResolvingThemes.delete(themeName);\n }\n}\n\nfunction normalizeAndCacheResolvedTheme(\n themeName: string,\n themeData: ThemeRegistrationResolved\n): ThemeRegistrationResolved {\n const resolvedTheme = ResolvedThemes.get(themeName);\n if (resolvedTheme != null) {\n return resolvedTheme;\n }\n themeData = normalizeTheme(themeData);\n ResolvedThemes.set(themeName, themeData);\n return themeData;\n}\n"],"mappings":";;;;;AAUA,eAAsB,aACpB,WACoC;AACpC,KAAI,iBAAiB,CACnB,OAAM,IAAI,MACR,iBAAiB,UAAU,yJAE5B;CAGH,MAAM,WAAW,gBAAgB,IAAI,UAAU;AAC/C,KAAI,YAAY,KACd,QAAO;AAGT,KAAI;EACF,MAAM,SACJ,uBAAuB,IAAI,UAAU,IACrC,cAAc;AAEhB,MAAI,UAAU,KACZ,OAAM,IAAI,MAAM,qCAAqC,YAAY;EAGnE,MAAMA,aAAW,QAAQ,CAAC,MAAM,WAAW;AACzC,UAAO,+BACL,WACC,aAAa,SACV,OAAO,UACP,OACL;IACD;AAEF,kBAAgB,IAAI,WAAWA,WAAS;EACxC,MAAM,QAAQ,MAAMA;AACpB,MAAI,MAAM,SAAS,UACjB,OAAM,IAAI,MACR,6BAA6B,UAAU,8BAA8B,MAAM,OAC5E;AAEH,iBAAe,IAAI,MAAM,MAAM,MAAM;AACrC,SAAO;WACC;AACR,kBAAgB,OAAO,UAAU;;;AAIrC,SAAS,+BACP,WACA,WAC2B;CAC3B,MAAM,gBAAgB,eAAe,IAAI,UAAU;AACnD,KAAI,iBAAiB,KACnB,QAAO;AAET,aAAY,eAAe,UAAU;AACrC,gBAAe,IAAI,WAAW,UAAU;AACxC,QAAO"}
1
+ {"version":3,"file":"resolveTheme.js","names":[],"sources":["../../../src/highlighter/themes/resolveTheme.ts"],"sourcesContent":["import type { DiffsThemeNames, ThemeRegistrationResolved } from '../../types';\nimport {\n prepareThemeResolution,\n validateResolvedThemeName,\n} from './themeResolution';\nimport { themeResolver } from './themeResolver';\n\n// Resolves a theme by name to a normalized Shiki theme, delegating the cache,\n// concurrent-load dedupe, normalization, and registry to the shared\n// @pierre/theming resolver. The diffs-specific behavior layered on top:\n// 1. Worker-context guard — themes must be pre-resolved on the main thread\n// and handed to the worker, which seeds them via attachResolvedThemes.\n// 2. Bundled-theme fallback a name with no registered loader that matches a\n// Shiki bundled theme is registered on demand (per-name dynamic import),\n// so callers never have to pre-register the full Shiki theme set.\n// 3. theme.name validation the resolved theme's own name must match the\n// requested name, catching mismatched registrations early.\nexport async function resolveTheme(\n themeName: DiffsThemeNames\n): Promise<ThemeRegistrationResolved> {\n prepareThemeResolution(themeName);\n\n const theme = await themeResolver.resolveTheme(themeName);\n\n validateResolvedThemeName(themeName, theme);\n\n return theme;\n}\n"],"mappings":";;;;AAiBA,eAAsB,aACpB,WACoC;AACpC,wBAAuB,UAAU;CAEjC,MAAM,QAAQ,MAAM,cAAc,aAAa,UAAU;AAEzD,2BAA0B,WAAW,MAAM;AAE3C,QAAO"}
@@ -1,18 +1,11 @@
1
- import { resolveTheme } from "./resolveTheme.js";
2
- import { getResolvedOrResolveTheme } from "./getResolvedOrResolveTheme.js";
1
+ import { themeResolver } from "./themeResolver.js";
2
+ import { prepareThemeResolution, validateResolvedThemeName } from "./themeResolution.js";
3
3
 
4
4
  //#region src/highlighter/themes/resolveThemes.ts
5
5
  async function resolveThemes(themes) {
6
- const resolvedThemes = [];
7
- const themesToResolve = [];
8
- for (const themeName of themes) {
9
- const themeData = getResolvedOrResolveTheme(themeName) ?? resolveTheme(themeName);
10
- if ("then" in themeData) themesToResolve.push(themeData);
11
- else resolvedThemes.push(themeData);
12
- }
13
- if (themesToResolve.length > 0) await Promise.all(themesToResolve).then((resolved) => {
14
- for (const theme of resolved) if (theme != null) resolvedThemes.push(theme);
15
- });
6
+ for (const themeName of themes) prepareThemeResolution(themeName);
7
+ const resolvedThemes = await themeResolver.resolveThemes(themes);
8
+ for (let i = 0; i < themes.length; i++) validateResolvedThemeName(themes[i], resolvedThemes[i]);
16
9
  return resolvedThemes;
17
10
  }
18
11
 
@@ -1 +1 @@
1
- {"version":3,"file":"resolveThemes.js","names":["resolvedThemes: ThemeRegistrationResolved[]","themesToResolve: Promise<ThemeRegistrationResolved | undefined>[]"],"sources":["../../../src/highlighter/themes/resolveThemes.ts"],"sourcesContent":["import type { DiffsThemeNames, ThemeRegistrationResolved } from '../../types';\nimport { getResolvedOrResolveTheme } from './getResolvedOrResolveTheme';\nimport { resolveTheme } from './resolveTheme';\n\nexport async function resolveThemes(\n themes: DiffsThemeNames[]\n): Promise<ThemeRegistrationResolved[]> {\n const resolvedThemes: ThemeRegistrationResolved[] = [];\n const themesToResolve: Promise<ThemeRegistrationResolved | undefined>[] = [];\n for (const themeName of themes) {\n const themeData =\n getResolvedOrResolveTheme(themeName) ?? resolveTheme(themeName);\n if ('then' in themeData) {\n themesToResolve.push(themeData);\n } else {\n resolvedThemes.push(themeData);\n }\n }\n\n if (themesToResolve.length > 0) {\n await Promise.all(themesToResolve).then((resolved) => {\n for (const theme of resolved) {\n if (theme != null) {\n resolvedThemes.push(theme);\n }\n }\n });\n }\n\n return resolvedThemes;\n}\n"],"mappings":";;;;AAIA,eAAsB,cACpB,QACsC;CACtC,MAAMA,iBAA8C,EAAE;CACtD,MAAMC,kBAAoE,EAAE;AAC5E,MAAK,MAAM,aAAa,QAAQ;EAC9B,MAAM,YACJ,0BAA0B,UAAU,IAAI,aAAa,UAAU;AACjE,MAAI,UAAU,UACZ,iBAAgB,KAAK,UAAU;MAE/B,gBAAe,KAAK,UAAU;;AAIlC,KAAI,gBAAgB,SAAS,EAC3B,OAAM,QAAQ,IAAI,gBAAgB,CAAC,MAAM,aAAa;AACpD,OAAK,MAAM,SAAS,SAClB,KAAI,SAAS,KACX,gBAAe,KAAK,MAAM;GAG9B;AAGJ,QAAO"}
1
+ {"version":3,"file":"resolveThemes.js","names":[],"sources":["../../../src/highlighter/themes/resolveThemes.ts"],"sourcesContent":["import type { DiffsThemeNames, ThemeRegistrationResolved } from '../../types';\nimport {\n prepareThemeResolution,\n validateResolvedThemeName,\n} from './themeResolution';\nimport { themeResolver } from './themeResolver';\n\nexport async function resolveThemes(\n themes: DiffsThemeNames[]\n): Promise<ThemeRegistrationResolved[]> {\n for (const themeName of themes) {\n prepareThemeResolution(themeName);\n }\n\n const resolvedThemes = await themeResolver.resolveThemes(themes);\n for (let i = 0; i < themes.length; i++) {\n validateResolvedThemeName(themes[i], resolvedThemes[i]);\n }\n\n return resolvedThemes;\n}\n"],"mappings":";;;;AAOA,eAAsB,cACpB,QACsC;AACtC,MAAK,MAAM,aAAa,OACtB,wBAAuB,UAAU;CAGnC,MAAM,iBAAiB,MAAM,cAAc,cAAc,OAAO;AAChE,MAAK,IAAI,IAAI,GAAG,IAAI,OAAO,QAAQ,IACjC,2BAA0B,OAAO,IAAI,eAAe,GAAG;AAGzD,QAAO"}
@@ -0,0 +1,8 @@
1
+ import { DiffsThemeNames, ThemeRegistrationResolved } from "../../types.js";
2
+
3
+ //#region src/highlighter/themes/themeResolution.d.ts
4
+ declare function prepareThemeResolution(themeName: DiffsThemeNames): void;
5
+ declare function validateResolvedThemeName(themeName: DiffsThemeNames, theme: ThemeRegistrationResolved): void;
6
+ //#endregion
7
+ export { prepareThemeResolution, validateResolvedThemeName };
8
+ //# sourceMappingURL=themeResolution.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"themeResolution.d.ts","names":["DiffsThemeNames","ThemeRegistrationResolved","prepareThemeResolution","validateResolvedThemeName"],"sources":["../../../src/highlighter/themes/themeResolution.d.ts"],"sourcesContent":["import type { DiffsThemeNames, ThemeRegistrationResolved } from '../../types';\nexport declare function prepareThemeResolution(themeName: DiffsThemeNames): void;\nexport declare function validateResolvedThemeName(themeName: DiffsThemeNames, theme: ThemeRegistrationResolved): void;\n//# sourceMappingURL=themeResolution.d.ts.map"],"mappings":";;;iBACwBE,sBAAAA,YAAkCF;iBAClCG,yBAAAA,YAAqCH,wBAAwBC"}
@@ -0,0 +1,22 @@
1
+ import { isWorkerContext } from "../../utils/isWorkerContext.js";
2
+ import { themeResolver } from "./themeResolver.js";
3
+ import { shikiThemes } from "@pierre/theming/themes";
4
+
5
+ //#region src/highlighter/themes/themeResolution.ts
6
+ function prepareThemeResolution(themeName) {
7
+ if (isWorkerContext()) throw new Error(`Theme "${themeName}" cannot be resolved from a worker context. Themes must be pre-resolved on the main thread and passed to the worker via the resolvedLanguages parameter.`);
8
+ if (themeResolver.hasRegisteredTheme(themeName)) return;
9
+ const descriptor = shikiThemes.getTheme(themeName);
10
+ if (descriptor != null) {
11
+ themeResolver.registerThemeIfAbsent(descriptor.name, descriptor.load);
12
+ return;
13
+ }
14
+ throw new Error(`No valid theme loader registered for "${themeName}"`);
15
+ }
16
+ function validateResolvedThemeName(themeName, theme) {
17
+ if (theme.name !== themeName) throw new Error(`resolvedTheme: themeName: ${themeName} does not match theme.name: ${theme.name}`);
18
+ }
19
+
20
+ //#endregion
21
+ export { prepareThemeResolution, validateResolvedThemeName };
22
+ //# sourceMappingURL=themeResolution.js.map