markstream-svelte 0.0.1-beta.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +77 -0
- package/dist/components/AdmonitionNode.svelte +8 -0
- package/dist/components/AdmonitionNode.svelte.d.ts +23 -0
- package/dist/components/AdmonitionNode.svelte.d.ts.map +1 -0
- package/dist/components/BlockquoteNode.svelte +10 -0
- package/dist/components/BlockquoteNode.svelte.d.ts +24 -0
- package/dist/components/BlockquoteNode.svelte.d.ts.map +1 -0
- package/dist/components/CheckboxNode.svelte +5 -0
- package/dist/components/CheckboxNode.svelte.d.ts +22 -0
- package/dist/components/CheckboxNode.svelte.d.ts.map +1 -0
- package/dist/components/CodeBlockNode.svelte +944 -0
- package/dist/components/CodeBlockNode.svelte.d.ts +43 -0
- package/dist/components/CodeBlockNode.svelte.d.ts.map +1 -0
- package/dist/components/D2BlockNode.svelte +272 -0
- package/dist/components/D2BlockNode.svelte.d.ts +33 -0
- package/dist/components/D2BlockNode.svelte.d.ts.map +1 -0
- package/dist/components/DefinitionListNode.svelte +8 -0
- package/dist/components/DefinitionListNode.svelte.d.ts +23 -0
- package/dist/components/DefinitionListNode.svelte.d.ts.map +1 -0
- package/dist/components/EmojiNode.svelte +7 -0
- package/dist/components/EmojiNode.svelte.d.ts +22 -0
- package/dist/components/EmojiNode.svelte.d.ts.map +1 -0
- package/dist/components/EmphasisNode.svelte +8 -0
- package/dist/components/EmphasisNode.svelte.d.ts +24 -0
- package/dist/components/EmphasisNode.svelte.d.ts.map +1 -0
- package/dist/components/FallbackComponent.svelte +8 -0
- package/dist/components/FallbackComponent.svelte.d.ts +23 -0
- package/dist/components/FallbackComponent.svelte.d.ts.map +1 -0
- package/dist/components/FootnoteAnchorNode.svelte +21 -0
- package/dist/components/FootnoteAnchorNode.svelte.d.ts +22 -0
- package/dist/components/FootnoteAnchorNode.svelte.d.ts.map +1 -0
- package/dist/components/FootnoteNode.svelte +19 -0
- package/dist/components/FootnoteNode.svelte.d.ts +24 -0
- package/dist/components/FootnoteNode.svelte.d.ts.map +1 -0
- package/dist/components/FootnoteReferenceNode.svelte +26 -0
- package/dist/components/FootnoteReferenceNode.svelte.d.ts +22 -0
- package/dist/components/FootnoteReferenceNode.svelte.d.ts.map +1 -0
- package/dist/components/HardBreakNode.svelte +1 -0
- package/dist/components/HardBreakNode.svelte.d.ts +27 -0
- package/dist/components/HardBreakNode.svelte.d.ts.map +1 -0
- package/dist/components/HeadingNode.svelte +15 -0
- package/dist/components/HeadingNode.svelte.d.ts +24 -0
- package/dist/components/HeadingNode.svelte.d.ts.map +1 -0
- package/dist/components/HighlightNode.svelte +8 -0
- package/dist/components/HighlightNode.svelte.d.ts +24 -0
- package/dist/components/HighlightNode.svelte.d.ts.map +1 -0
- package/dist/components/HtmlBlockNode.svelte +8 -0
- package/dist/components/HtmlBlockNode.svelte.d.ts +23 -0
- package/dist/components/HtmlBlockNode.svelte.d.ts.map +1 -0
- package/dist/components/HtmlInlineNode.svelte +8 -0
- package/dist/components/HtmlInlineNode.svelte.d.ts +23 -0
- package/dist/components/HtmlInlineNode.svelte.d.ts.map +1 -0
- package/dist/components/HtmlPreviewFrame.svelte +13 -0
- package/dist/components/HtmlPreviewFrame.svelte.d.ts +26 -0
- package/dist/components/HtmlPreviewFrame.svelte.d.ts.map +1 -0
- package/dist/components/ImageNode.svelte +86 -0
- package/dist/components/ImageNode.svelte.d.ts +25 -0
- package/dist/components/ImageNode.svelte.d.ts.map +1 -0
- package/dist/components/InfographicBlockNode.svelte +429 -0
- package/dist/components/InfographicBlockNode.svelte.d.ts +34 -0
- package/dist/components/InfographicBlockNode.svelte.d.ts.map +1 -0
- package/dist/components/InlineCodeNode.svelte +7 -0
- package/dist/components/InlineCodeNode.svelte.d.ts +22 -0
- package/dist/components/InlineCodeNode.svelte.d.ts.map +1 -0
- package/dist/components/InlineWrapNode.svelte +10 -0
- package/dist/components/InlineWrapNode.svelte.d.ts +25 -0
- package/dist/components/InlineWrapNode.svelte.d.ts.map +1 -0
- package/dist/components/InsertNode.svelte +8 -0
- package/dist/components/InsertNode.svelte.d.ts +24 -0
- package/dist/components/InsertNode.svelte.d.ts.map +1 -0
- package/dist/components/LinkNode.svelte +41 -0
- package/dist/components/LinkNode.svelte.d.ts +25 -0
- package/dist/components/LinkNode.svelte.d.ts.map +1 -0
- package/dist/components/ListItemNode.svelte +9 -0
- package/dist/components/ListItemNode.svelte.d.ts +24 -0
- package/dist/components/ListItemNode.svelte.d.ts.map +1 -0
- package/dist/components/ListNode.svelte +16 -0
- package/dist/components/ListNode.svelte.d.ts +24 -0
- package/dist/components/ListNode.svelte.d.ts.map +1 -0
- package/dist/components/MarkdownCodeBlockNode.svelte +7 -0
- package/dist/components/MarkdownCodeBlockNode.svelte.d.ts +23 -0
- package/dist/components/MarkdownCodeBlockNode.svelte.d.ts.map +1 -0
- package/dist/components/MathBlockNode.svelte +96 -0
- package/dist/components/MathBlockNode.svelte.d.ts +22 -0
- package/dist/components/MathBlockNode.svelte.d.ts.map +1 -0
- package/dist/components/MathInlineNode.svelte +103 -0
- package/dist/components/MathInlineNode.svelte.d.ts +22 -0
- package/dist/components/MathInlineNode.svelte.d.ts.map +1 -0
- package/dist/components/MermaidBlockNode.svelte +557 -0
- package/dist/components/MermaidBlockNode.svelte.d.ts +40 -0
- package/dist/components/MermaidBlockNode.svelte.d.ts.map +1 -0
- package/dist/components/NodeOutlet.svelte +192 -0
- package/dist/components/NodeOutlet.svelte.d.ts +24 -0
- package/dist/components/NodeOutlet.svelte.d.ts.map +1 -0
- package/dist/components/NodeRenderer.svelte +349 -0
- package/dist/components/NodeRenderer.svelte.d.ts +64 -0
- package/dist/components/NodeRenderer.svelte.d.ts.map +1 -0
- package/dist/components/ParagraphNode.svelte +21 -0
- package/dist/components/ParagraphNode.svelte.d.ts +24 -0
- package/dist/components/ParagraphNode.svelte.d.ts.map +1 -0
- package/dist/components/PreCodeNode.svelte +13 -0
- package/dist/components/PreCodeNode.svelte.d.ts +22 -0
- package/dist/components/PreCodeNode.svelte.d.ts.map +1 -0
- package/dist/components/ReferenceNode.svelte +8 -0
- package/dist/components/ReferenceNode.svelte.d.ts +23 -0
- package/dist/components/ReferenceNode.svelte.d.ts.map +1 -0
- package/dist/components/RenderChildren.svelte +12 -0
- package/dist/components/RenderChildren.svelte.d.ts +24 -0
- package/dist/components/RenderChildren.svelte.d.ts.map +1 -0
- package/dist/components/StrikethroughNode.svelte +8 -0
- package/dist/components/StrikethroughNode.svelte.d.ts +24 -0
- package/dist/components/StrikethroughNode.svelte.d.ts.map +1 -0
- package/dist/components/StrongNode.svelte +8 -0
- package/dist/components/StrongNode.svelte.d.ts +24 -0
- package/dist/components/StrongNode.svelte.d.ts.map +1 -0
- package/dist/components/SubscriptNode.svelte +8 -0
- package/dist/components/SubscriptNode.svelte.d.ts +24 -0
- package/dist/components/SubscriptNode.svelte.d.ts.map +1 -0
- package/dist/components/SuperscriptNode.svelte +8 -0
- package/dist/components/SuperscriptNode.svelte.d.ts +24 -0
- package/dist/components/SuperscriptNode.svelte.d.ts.map +1 -0
- package/dist/components/TableNode.svelte +8 -0
- package/dist/components/TableNode.svelte.d.ts +23 -0
- package/dist/components/TableNode.svelte.d.ts.map +1 -0
- package/dist/components/TextNode.svelte +37 -0
- package/dist/components/TextNode.svelte.d.ts +25 -0
- package/dist/components/TextNode.svelte.d.ts.map +1 -0
- package/dist/components/ThematicBreakNode.svelte +1 -0
- package/dist/components/ThematicBreakNode.svelte.d.ts +27 -0
- package/dist/components/ThematicBreakNode.svelte.d.ts.map +1 -0
- package/dist/components/Tooltip.svelte +4 -0
- package/dist/components/Tooltip.svelte.d.ts +21 -0
- package/dist/components/Tooltip.svelte.d.ts.map +1 -0
- package/dist/components/VmrContainerNode.svelte +8 -0
- package/dist/components/VmrContainerNode.svelte.d.ts +23 -0
- package/dist/components/VmrContainerNode.svelte.d.ts.map +1 -0
- package/dist/components/shared/diagram-height.d.ts +10 -0
- package/dist/components/shared/diagram-height.d.ts.map +1 -0
- package/dist/components/shared/diagram-height.js +52 -0
- package/dist/components/shared/node-helpers.d.ts +108 -0
- package/dist/components/shared/node-helpers.d.ts.map +1 -0
- package/dist/components/shared/node-helpers.js +220 -0
- package/dist/components/shared/node-outlet-helpers.d.ts +9 -0
- package/dist/components/shared/node-outlet-helpers.d.ts.map +1 -0
- package/dist/components/shared/node-outlet-helpers.js +92 -0
- package/dist/components/shared/render-window.d.ts +19 -0
- package/dist/components/shared/render-window.d.ts.map +1 -0
- package/dist/components/shared/render-window.js +63 -0
- package/dist/components/shared/renderNodeHtml.d.ts +4 -0
- package/dist/components/shared/renderNodeHtml.d.ts.map +1 -0
- package/dist/components/shared/renderNodeHtml.js +19 -0
- package/dist/components/shared/rich-block-helpers.d.ts +7 -0
- package/dist/components/shared/rich-block-helpers.d.ts.map +1 -0
- package/dist/components/shared/rich-block-helpers.js +76 -0
- package/dist/customComponents.d.ts +10 -0
- package/dist/customComponents.d.ts.map +1 -0
- package/dist/customComponents.js +66 -0
- package/dist/enhanceRenderedHtml.d.ts +21 -0
- package/dist/enhanceRenderedHtml.d.ts.map +1 -0
- package/dist/enhanceRenderedHtml.js +768 -0
- package/dist/hydrateCustomTagContent.d.ts +3 -0
- package/dist/hydrateCustomTagContent.d.ts.map +1 -0
- package/dist/hydrateCustomTagContent.js +130 -0
- package/dist/i18n/useSafeI18n.d.ts +5 -0
- package/dist/i18n/useSafeI18n.d.ts.map +1 -0
- package/dist/i18n/useSafeI18n.js +42 -0
- package/dist/index.css +2009 -0
- package/dist/index.d.ts +78 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +66 -0
- package/dist/index.px.css +2009 -0
- package/dist/index.tailwind.css +2009 -0
- package/dist/optional/d2.d.ts +7 -0
- package/dist/optional/d2.d.ts.map +1 -0
- package/dist/optional/d2.js +67 -0
- package/dist/optional/infographic.d.ts +2 -0
- package/dist/optional/infographic.d.ts.map +1 -0
- package/dist/optional/infographic.js +29 -0
- package/dist/optional/katex.d.ts +7 -0
- package/dist/optional/katex.d.ts.map +1 -0
- package/dist/optional/katex.js +93 -0
- package/dist/optional/mermaid.d.ts +7 -0
- package/dist/optional/mermaid.d.ts.map +1 -0
- package/dist/optional/mermaid.js +171 -0
- package/dist/optional/monaco.d.ts +5 -0
- package/dist/optional/monaco.d.ts.map +1 -0
- package/dist/optional/monaco.js +70 -0
- package/dist/parseNestedMarkdownToNodes.d.ts +15 -0
- package/dist/parseNestedMarkdownToNodes.d.ts.map +1 -0
- package/dist/parseNestedMarkdownToNodes.js +66 -0
- package/dist/renderMarkdownHtml.d.ts +31 -0
- package/dist/renderMarkdownHtml.d.ts.map +1 -0
- package/dist/renderMarkdownHtml.js +465 -0
- package/dist/sanitizeHtmlContent.d.ts +3 -0
- package/dist/sanitizeHtmlContent.d.ts.map +1 -0
- package/dist/sanitizeHtmlContent.js +175 -0
- package/dist/sanitizeSvg.d.ts +3 -0
- package/dist/sanitizeSvg.d.ts.map +1 -0
- package/dist/sanitizeSvg.js +76 -0
- package/dist/tailwind-entry.d.ts +2 -0
- package/dist/tailwind-entry.d.ts.map +1 -0
- package/dist/tailwind-entry.js +1 -0
- package/dist/tooltip/singletonTooltip.d.ts +8 -0
- package/dist/tooltip/singletonTooltip.d.ts.map +1 -0
- package/dist/tooltip/singletonTooltip.js +124 -0
- package/dist/types/monaco.d.ts +66 -0
- package/dist/types/monaco.d.ts.map +1 -0
- package/dist/types/monaco.js +1 -0
- package/dist/utils/languageIcon.d.ts +8 -0
- package/dist/utils/languageIcon.d.ts.map +1 -0
- package/dist/utils/languageIcon.js +182 -0
- package/dist/utils/normalizeKaTeXRenderInput.d.ts +2 -0
- package/dist/utils/normalizeKaTeXRenderInput.d.ts.map +1 -0
- package/dist/utils/normalizeKaTeXRenderInput.js +7 -0
- package/dist/workers/katexCdnWorker.d.ts +21 -0
- package/dist/workers/katexCdnWorker.d.ts.map +1 -0
- package/dist/workers/katexCdnWorker.js +193 -0
- package/dist/workers/katexRenderer.worker.d.ts +2 -0
- package/dist/workers/katexRenderer.worker.d.ts.map +1 -0
- package/dist/workers/katexRenderer.worker.js +55 -0
- package/dist/workers/katexWorkerClient.d.ts +36 -0
- package/dist/workers/katexWorkerClient.d.ts.map +1 -0
- package/dist/workers/katexWorkerClient.js +270 -0
- package/dist/workers/mermaidCdnWorker.d.ts +16 -0
- package/dist/workers/mermaidCdnWorker.d.ts.map +1 -0
- package/dist/workers/mermaidCdnWorker.js +235 -0
- package/dist/workers/mermaidParser.worker.d.ts +2 -0
- package/dist/workers/mermaidParser.worker.d.ts.map +1 -0
- package/dist/workers/mermaidParser.worker.js +85 -0
- package/dist/workers/mermaidWorkerClient.d.ts +16 -0
- package/dist/workers/mermaidWorkerClient.d.ts.map +1 -0
- package/dist/workers/mermaidWorkerClient.js +170 -0
- package/package.json +95 -0
|
@@ -0,0 +1,193 @@
|
|
|
1
|
+
function stringifyForWorker(value) {
|
|
2
|
+
return JSON.stringify(value);
|
|
3
|
+
}
|
|
4
|
+
export function buildKaTeXCDNWorkerSource(options) {
|
|
5
|
+
var _a;
|
|
6
|
+
const mode = (_a = options.mode) !== null && _a !== void 0 ? _a : 'classic';
|
|
7
|
+
const renderOptions = {
|
|
8
|
+
throwOnError: true,
|
|
9
|
+
displayMode: true,
|
|
10
|
+
output: 'html',
|
|
11
|
+
strict: 'ignore',
|
|
12
|
+
...(options.renderOptions || {}),
|
|
13
|
+
};
|
|
14
|
+
const renderOptionsLiteral = stringifyForWorker(renderOptions);
|
|
15
|
+
const katexUrlLiteral = stringifyForWorker(options.katexUrl);
|
|
16
|
+
const mhchemUrlLiteral = options.mhchemUrl ? stringifyForWorker(options.mhchemUrl) : '""';
|
|
17
|
+
if (mode === 'module') {
|
|
18
|
+
return `
|
|
19
|
+
let DEBUG = false
|
|
20
|
+
let katex = null
|
|
21
|
+
let katexLoadError = null
|
|
22
|
+
let loadPromise = null
|
|
23
|
+
|
|
24
|
+
function normalizeKaTeX(mod) {
|
|
25
|
+
const resolved = mod && mod.default ? mod.default : mod
|
|
26
|
+
if (resolved && typeof resolved.renderToString === 'function')
|
|
27
|
+
return resolved
|
|
28
|
+
return null
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
async function loadKaTeX() {
|
|
32
|
+
if (katex || katexLoadError)
|
|
33
|
+
return
|
|
34
|
+
if (!loadPromise) {
|
|
35
|
+
loadPromise = (async () => {
|
|
36
|
+
try {
|
|
37
|
+
const mod = await import(${katexUrlLiteral})
|
|
38
|
+
katex = normalizeKaTeX(mod) || null
|
|
39
|
+
const mhchemUrl = ${mhchemUrlLiteral}
|
|
40
|
+
if (mhchemUrl) {
|
|
41
|
+
try {
|
|
42
|
+
await import(mhchemUrl)
|
|
43
|
+
}
|
|
44
|
+
catch (e) {
|
|
45
|
+
if (DEBUG)
|
|
46
|
+
console.warn('[markstream-svelte:katex-cdn-worker] failed to load mhchem', e)
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
catch (e) {
|
|
51
|
+
katexLoadError = e
|
|
52
|
+
}
|
|
53
|
+
})()
|
|
54
|
+
}
|
|
55
|
+
await loadPromise
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
globalThis.addEventListener('message', async (ev) => {
|
|
59
|
+
const data = ev.data || {}
|
|
60
|
+
if (data.type === 'init') {
|
|
61
|
+
DEBUG = !!data.debug
|
|
62
|
+
return
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
const id = data.id ?? ''
|
|
66
|
+
const content = data.content ?? ''
|
|
67
|
+
const displayMode = data.displayMode ?? true
|
|
68
|
+
|
|
69
|
+
await loadKaTeX()
|
|
70
|
+
|
|
71
|
+
if (!katex) {
|
|
72
|
+
const reason = katexLoadError ? String(katexLoadError?.message || katexLoadError) : 'KaTeX is not available in worker'
|
|
73
|
+
globalThis.postMessage({ id, error: reason, content, displayMode })
|
|
74
|
+
return
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
try {
|
|
78
|
+
const opts = ${renderOptionsLiteral}
|
|
79
|
+
const html = katex.renderToString(content, { ...opts, displayMode: !!displayMode })
|
|
80
|
+
globalThis.postMessage({ id, html, content, displayMode })
|
|
81
|
+
}
|
|
82
|
+
catch (err) {
|
|
83
|
+
globalThis.postMessage({ id, error: String(err?.message || err), content, displayMode })
|
|
84
|
+
}
|
|
85
|
+
})
|
|
86
|
+
`.trimStart();
|
|
87
|
+
}
|
|
88
|
+
return `
|
|
89
|
+
let DEBUG = false
|
|
90
|
+
let katex = null
|
|
91
|
+
let katexLoadError = null
|
|
92
|
+
|
|
93
|
+
function normalizeKaTeX(val) {
|
|
94
|
+
const resolved = val && val.default ? val.default : val
|
|
95
|
+
if (resolved && typeof resolved.renderToString === 'function')
|
|
96
|
+
return resolved
|
|
97
|
+
return null
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
function loadKaTeXClassic() {
|
|
101
|
+
if (katex || katexLoadError)
|
|
102
|
+
return
|
|
103
|
+
try {
|
|
104
|
+
importScripts(${katexUrlLiteral})
|
|
105
|
+
const mhchemUrl = ${mhchemUrlLiteral}
|
|
106
|
+
if (mhchemUrl) {
|
|
107
|
+
try {
|
|
108
|
+
importScripts(mhchemUrl)
|
|
109
|
+
}
|
|
110
|
+
catch (e) {
|
|
111
|
+
if (DEBUG)
|
|
112
|
+
console.warn('[markstream-svelte:katex-cdn-worker] failed to load mhchem', e)
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
katex = normalizeKaTeX(globalThis.katex)
|
|
116
|
+
}
|
|
117
|
+
catch (e) {
|
|
118
|
+
katexLoadError = e
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
loadKaTeXClassic()
|
|
123
|
+
|
|
124
|
+
globalThis.addEventListener('message', (ev) => {
|
|
125
|
+
const data = ev.data || {}
|
|
126
|
+
if (data.type === 'init') {
|
|
127
|
+
DEBUG = !!data.debug
|
|
128
|
+
return
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
const id = data.id ?? ''
|
|
132
|
+
const content = data.content ?? ''
|
|
133
|
+
const displayMode = data.displayMode ?? true
|
|
134
|
+
|
|
135
|
+
if (!katex && !katexLoadError)
|
|
136
|
+
loadKaTeXClassic()
|
|
137
|
+
|
|
138
|
+
if (!katex) {
|
|
139
|
+
const reason = katexLoadError ? String(katexLoadError?.message || katexLoadError) : 'KaTeX is not available in worker'
|
|
140
|
+
globalThis.postMessage({ id, error: reason, content, displayMode })
|
|
141
|
+
return
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
try {
|
|
145
|
+
const opts = ${renderOptionsLiteral}
|
|
146
|
+
const html = katex.renderToString(content, { ...opts, displayMode: !!displayMode })
|
|
147
|
+
globalThis.postMessage({ id, html, content, displayMode })
|
|
148
|
+
}
|
|
149
|
+
catch (err) {
|
|
150
|
+
globalThis.postMessage({ id, error: String(err?.message || err), content, displayMode })
|
|
151
|
+
}
|
|
152
|
+
})
|
|
153
|
+
`.trimStart();
|
|
154
|
+
}
|
|
155
|
+
export function createKaTeXWorkerFromCDN(options) {
|
|
156
|
+
var _a, _b;
|
|
157
|
+
const source = buildKaTeXCDNWorkerSource(options);
|
|
158
|
+
if (typeof Worker === 'undefined' || typeof URL === 'undefined' || typeof Blob === 'undefined') {
|
|
159
|
+
return {
|
|
160
|
+
worker: null,
|
|
161
|
+
dispose: () => { },
|
|
162
|
+
source,
|
|
163
|
+
};
|
|
164
|
+
}
|
|
165
|
+
const blob = new Blob([source], { type: 'text/javascript' });
|
|
166
|
+
const url = URL.createObjectURL(blob);
|
|
167
|
+
let revoked = false;
|
|
168
|
+
const dispose = () => {
|
|
169
|
+
if (revoked)
|
|
170
|
+
return;
|
|
171
|
+
revoked = true;
|
|
172
|
+
try {
|
|
173
|
+
URL.revokeObjectURL(url);
|
|
174
|
+
}
|
|
175
|
+
catch {
|
|
176
|
+
// Ignore revoke failures.
|
|
177
|
+
}
|
|
178
|
+
};
|
|
179
|
+
const mode = (_a = options.mode) !== null && _a !== void 0 ? _a : 'classic';
|
|
180
|
+
const workerOptions = mode === 'module'
|
|
181
|
+
? { ...((_b = options.workerOptions) !== null && _b !== void 0 ? _b : {}), type: 'module' }
|
|
182
|
+
: options.workerOptions;
|
|
183
|
+
const worker = new Worker(url, workerOptions);
|
|
184
|
+
if (options.debug) {
|
|
185
|
+
try {
|
|
186
|
+
worker.postMessage({ type: 'init', debug: true });
|
|
187
|
+
}
|
|
188
|
+
catch {
|
|
189
|
+
// Ignore init messaging failures.
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
return { worker, dispose, source };
|
|
193
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"katexRenderer.worker.d.ts","sourceRoot":"","sources":["../../src/workers/katexRenderer.worker.ts"],"names":[],"mappings":"AACA,OAAO,2BAA2B,CAAA"}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import katex from 'katex';
|
|
2
|
+
import 'katex/dist/contrib/mhchem';
|
|
3
|
+
let debugWorker = false;
|
|
4
|
+
globalThis.addEventListener('message', (event) => {
|
|
5
|
+
var _a, _b, _c, _d;
|
|
6
|
+
const data = event.data || {};
|
|
7
|
+
if (data.type === 'init') {
|
|
8
|
+
debugWorker = !!data.debug;
|
|
9
|
+
return;
|
|
10
|
+
}
|
|
11
|
+
const id = (_a = data.id) !== null && _a !== void 0 ? _a : '';
|
|
12
|
+
const content = (_b = data.content) !== null && _b !== void 0 ? _b : '';
|
|
13
|
+
const displayMode = (_c = data.displayMode) !== null && _c !== void 0 ? _c : true;
|
|
14
|
+
try {
|
|
15
|
+
if (debugWorker)
|
|
16
|
+
console.debug('[markstream-svelte:katexRenderer.worker] render start', { id, displayMode, content });
|
|
17
|
+
const html = katex.renderToString(content, {
|
|
18
|
+
throwOnError: true,
|
|
19
|
+
displayMode,
|
|
20
|
+
output: 'html',
|
|
21
|
+
strict: 'ignore',
|
|
22
|
+
});
|
|
23
|
+
const result = {
|
|
24
|
+
id,
|
|
25
|
+
html,
|
|
26
|
+
content,
|
|
27
|
+
displayMode,
|
|
28
|
+
};
|
|
29
|
+
globalThis.postMessage(result);
|
|
30
|
+
}
|
|
31
|
+
catch (error) {
|
|
32
|
+
const result = {
|
|
33
|
+
id,
|
|
34
|
+
error: String((_d = error === null || error === void 0 ? void 0 : error.message) !== null && _d !== void 0 ? _d : error),
|
|
35
|
+
content,
|
|
36
|
+
displayMode,
|
|
37
|
+
};
|
|
38
|
+
globalThis.postMessage(result);
|
|
39
|
+
}
|
|
40
|
+
});
|
|
41
|
+
globalThis.addEventListener('error', (event) => {
|
|
42
|
+
var _a;
|
|
43
|
+
try {
|
|
44
|
+
;
|
|
45
|
+
globalThis.postMessage({
|
|
46
|
+
id: '__worker_uncaught__',
|
|
47
|
+
error: String((_a = event.message) !== null && _a !== void 0 ? _a : event.error),
|
|
48
|
+
content: '',
|
|
49
|
+
displayMode: true,
|
|
50
|
+
});
|
|
51
|
+
}
|
|
52
|
+
catch {
|
|
53
|
+
// Ignore postMessage failures while surfacing uncaught worker errors.
|
|
54
|
+
}
|
|
55
|
+
});
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
export declare const WORKER_BUSY_CODE = "WORKER_BUSY";
|
|
2
|
+
export declare function setKaTeXWorker(nextWorker: Worker): void;
|
|
3
|
+
export declare function clearKaTeXWorker(): void;
|
|
4
|
+
export declare function setKaTeXWorkerDebug(enabled: boolean): void;
|
|
5
|
+
export declare function renderKaTeXInWorker(content: string, displayMode?: boolean, timeout?: number, signal?: AbortSignal): Promise<string>;
|
|
6
|
+
export declare function setKaTeXCache(content: string, displayMode: boolean, html: string): void;
|
|
7
|
+
export declare function getKaTeXWorkerLoad(): {
|
|
8
|
+
inFlight: number;
|
|
9
|
+
max: number;
|
|
10
|
+
};
|
|
11
|
+
export declare function setKaTeXWorkerMaxConcurrency(value: number): void;
|
|
12
|
+
export declare function isKaTeXWorkerBusy(): boolean;
|
|
13
|
+
export declare function waitForKaTeXWorkerSlot(timeout?: number, signal?: AbortSignal): Promise<void>;
|
|
14
|
+
export interface BackpressureOptions {
|
|
15
|
+
timeout?: number;
|
|
16
|
+
waitTimeout?: number;
|
|
17
|
+
backoffMs?: number;
|
|
18
|
+
maxRetries?: number;
|
|
19
|
+
signal?: AbortSignal;
|
|
20
|
+
}
|
|
21
|
+
declare const defaultBackpressure: {
|
|
22
|
+
timeout: number;
|
|
23
|
+
waitTimeout: number;
|
|
24
|
+
backoffMs: number;
|
|
25
|
+
maxRetries: number;
|
|
26
|
+
};
|
|
27
|
+
export declare function setKaTeXBackpressureDefaults(options: Partial<typeof defaultBackpressure>): void;
|
|
28
|
+
export declare function getKaTeXBackpressureDefaults(): {
|
|
29
|
+
timeout: number;
|
|
30
|
+
waitTimeout: number;
|
|
31
|
+
backoffMs: number;
|
|
32
|
+
maxRetries: number;
|
|
33
|
+
};
|
|
34
|
+
export declare function renderKaTeXWithBackpressure(content: string, displayMode?: boolean, options?: BackpressureOptions): Promise<string>;
|
|
35
|
+
export {};
|
|
36
|
+
//# sourceMappingURL=katexWorkerClient.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"katexWorkerClient.d.ts","sourceRoot":"","sources":["../../src/workers/katexWorkerClient.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,gBAAgB,gBAAgB,CAAA;AA4C7C,wBAAgB,cAAc,CAAC,UAAU,EAAE,MAAM,QAmChD;AAED,wBAAgB,gBAAgB,SAK/B;AAYD,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,OAAO,QAInD;AAED,wBAAsB,mBAAmB,CAAC,OAAO,EAAE,MAAM,EAAE,WAAW,UAAO,EAAE,OAAO,SAAO,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,MAAM,CAAC,CA8EpI;AAED,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,EAAE,WAAW,SAAO,EAAE,IAAI,EAAE,MAAM,QAE9E;AAED,wBAAgB,kBAAkB;;;EAKjC;AAED,wBAAgB,4BAA4B,CAAC,KAAK,EAAE,MAAM,QAGzD;AAED,wBAAgB,iBAAiB,YAEhC;AAED,wBAAgB,sBAAsB,CAAC,OAAO,SAAO,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAmD1F;AAED,MAAM,WAAW,mBAAmB;IAClC,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,MAAM,CAAC,EAAE,WAAW,CAAA;CACrB;AAED,QAAA,MAAM,mBAAmB;;;;;CAKxB,CAAA;AAGD,wBAAgB,4BAA4B,CAAC,OAAO,EAAE,OAAO,CAAC,OAAO,mBAAmB,CAAC,QASxF;AAED,wBAAgB,4BAA4B;;;;;EAE3C;AAED,wBAAsB,2BAA2B,CAC/C,OAAO,EAAE,MAAM,EACf,WAAW,UAAO,EAClB,OAAO,GAAE,mBAAwB,GAChC,OAAO,CAAC,MAAM,CAAC,CAqCjB"}
|
|
@@ -0,0 +1,270 @@
|
|
|
1
|
+
import { isKatexEnabled } from '../optional/katex';
|
|
2
|
+
import { normalizeKaTeXRenderInput } from '../utils/normalizeKaTeXRenderInput';
|
|
3
|
+
export const WORKER_BUSY_CODE = 'WORKER_BUSY';
|
|
4
|
+
let worker = null;
|
|
5
|
+
let workerInitError = null;
|
|
6
|
+
let debugKatexWorker = false;
|
|
7
|
+
const pending = new Map();
|
|
8
|
+
const cache = new Map();
|
|
9
|
+
const cacheMax = 200;
|
|
10
|
+
const drainWaiters = new Set();
|
|
11
|
+
let maxConcurrency = 5;
|
|
12
|
+
function notifyDrainIfBelowCap() {
|
|
13
|
+
if (pending.size >= maxConcurrency || drainWaiters.size === 0)
|
|
14
|
+
return;
|
|
15
|
+
const currentWaiters = Array.from(drainWaiters);
|
|
16
|
+
drainWaiters.clear();
|
|
17
|
+
for (const waiter of currentWaiters) {
|
|
18
|
+
try {
|
|
19
|
+
waiter();
|
|
20
|
+
}
|
|
21
|
+
catch {
|
|
22
|
+
// Ignore waiter failures.
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
function rememberCache(content, displayMode, html) {
|
|
27
|
+
cache.set(`${displayMode ? 'd' : 'i'}:${content}`, html);
|
|
28
|
+
if (cache.size > cacheMax) {
|
|
29
|
+
const firstKey = cache.keys().next().value;
|
|
30
|
+
if (firstKey)
|
|
31
|
+
cache.delete(firstKey);
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
export function setKaTeXWorker(nextWorker) {
|
|
35
|
+
worker = nextWorker;
|
|
36
|
+
workerInitError = null;
|
|
37
|
+
worker.onmessage = (event) => {
|
|
38
|
+
const { id, html, error, content, displayMode } = event.data || {};
|
|
39
|
+
const active = pending.get(id);
|
|
40
|
+
if (!active)
|
|
41
|
+
return;
|
|
42
|
+
pending.delete(id);
|
|
43
|
+
clearTimeout(active.timeoutId);
|
|
44
|
+
notifyDrainIfBelowCap();
|
|
45
|
+
if (error) {
|
|
46
|
+
active.reject(new Error(error));
|
|
47
|
+
return;
|
|
48
|
+
}
|
|
49
|
+
if (content)
|
|
50
|
+
rememberCache(String(content), Boolean(displayMode), String(html || ''));
|
|
51
|
+
active.resolve(String(html || ''));
|
|
52
|
+
};
|
|
53
|
+
worker.onerror = (event) => {
|
|
54
|
+
for (const [, active] of pending.entries()) {
|
|
55
|
+
clearTimeout(active.timeoutId);
|
|
56
|
+
active.reject(new Error(`Worker error: ${event.message}`));
|
|
57
|
+
}
|
|
58
|
+
pending.clear();
|
|
59
|
+
notifyDrainIfBelowCap();
|
|
60
|
+
};
|
|
61
|
+
if (debugKatexWorker)
|
|
62
|
+
worker.postMessage({ type: 'init', debug: true });
|
|
63
|
+
}
|
|
64
|
+
export function clearKaTeXWorker() {
|
|
65
|
+
var _a;
|
|
66
|
+
if (worker)
|
|
67
|
+
(_a = worker.terminate) === null || _a === void 0 ? void 0 : _a.call(worker);
|
|
68
|
+
worker = null;
|
|
69
|
+
workerInitError = null;
|
|
70
|
+
}
|
|
71
|
+
function ensureWorker() {
|
|
72
|
+
if (worker)
|
|
73
|
+
return worker;
|
|
74
|
+
workerInitError = new Error('[markstream-svelte:katexWorkerClient] No worker instance set. Please inject a Worker via setKaTeXWorker().');
|
|
75
|
+
workerInitError.name = 'WorkerInitError';
|
|
76
|
+
workerInitError.code = 'WORKER_INIT_ERROR';
|
|
77
|
+
return null;
|
|
78
|
+
}
|
|
79
|
+
export function setKaTeXWorkerDebug(enabled) {
|
|
80
|
+
debugKatexWorker = !!enabled;
|
|
81
|
+
if (worker)
|
|
82
|
+
worker.postMessage({ type: 'init', debug: debugKatexWorker });
|
|
83
|
+
}
|
|
84
|
+
export async function renderKaTeXInWorker(content, displayMode = true, timeout = 2000, signal) {
|
|
85
|
+
const normalizedContent = normalizeKaTeXRenderInput(content);
|
|
86
|
+
if (!isKatexEnabled()) {
|
|
87
|
+
const error = new Error('KaTeX rendering disabled');
|
|
88
|
+
error.name = 'KaTeXDisabled';
|
|
89
|
+
error.code = 'KATEX_DISABLED';
|
|
90
|
+
return Promise.reject(error);
|
|
91
|
+
}
|
|
92
|
+
if (workerInitError)
|
|
93
|
+
return Promise.reject(workerInitError);
|
|
94
|
+
const cacheKey = `${displayMode ? 'd' : 'i'}:${normalizedContent}`;
|
|
95
|
+
const cached = cache.get(cacheKey);
|
|
96
|
+
if (cached)
|
|
97
|
+
return cached;
|
|
98
|
+
const activeWorker = ensureWorker();
|
|
99
|
+
if (!activeWorker)
|
|
100
|
+
return Promise.reject(workerInitError);
|
|
101
|
+
if (pending.size >= maxConcurrency) {
|
|
102
|
+
const error = new Error('Worker busy');
|
|
103
|
+
error.name = 'WorkerBusy';
|
|
104
|
+
error.code = WORKER_BUSY_CODE;
|
|
105
|
+
error.busy = true;
|
|
106
|
+
error.inFlight = pending.size;
|
|
107
|
+
error.max = maxConcurrency;
|
|
108
|
+
return Promise.reject(error);
|
|
109
|
+
}
|
|
110
|
+
return new Promise((resolve, reject) => {
|
|
111
|
+
if (signal === null || signal === void 0 ? void 0 : signal.aborted) {
|
|
112
|
+
const error = new Error('Aborted');
|
|
113
|
+
error.name = 'AbortError';
|
|
114
|
+
reject(error);
|
|
115
|
+
return;
|
|
116
|
+
}
|
|
117
|
+
const id = Math.random().toString(36).slice(2);
|
|
118
|
+
const timeoutId = globalThis.setTimeout(() => {
|
|
119
|
+
pending.delete(id);
|
|
120
|
+
notifyDrainIfBelowCap();
|
|
121
|
+
const error = new Error('Worker render timed out');
|
|
122
|
+
error.name = 'WorkerTimeout';
|
|
123
|
+
error.code = 'WORKER_TIMEOUT';
|
|
124
|
+
reject(error);
|
|
125
|
+
}, timeout);
|
|
126
|
+
const onAbort = () => {
|
|
127
|
+
globalThis.clearTimeout(timeoutId);
|
|
128
|
+
if (pending.delete(id))
|
|
129
|
+
notifyDrainIfBelowCap();
|
|
130
|
+
const error = new Error('Aborted');
|
|
131
|
+
error.name = 'AbortError';
|
|
132
|
+
reject(error);
|
|
133
|
+
};
|
|
134
|
+
signal === null || signal === void 0 ? void 0 : signal.addEventListener('abort', onAbort, { once: true });
|
|
135
|
+
pending.set(id, {
|
|
136
|
+
timeoutId,
|
|
137
|
+
resolve: (html) => {
|
|
138
|
+
signal === null || signal === void 0 ? void 0 : signal.removeEventListener('abort', onAbort);
|
|
139
|
+
resolve(html);
|
|
140
|
+
},
|
|
141
|
+
reject: (error) => {
|
|
142
|
+
signal === null || signal === void 0 ? void 0 : signal.removeEventListener('abort', onAbort);
|
|
143
|
+
reject(error);
|
|
144
|
+
},
|
|
145
|
+
});
|
|
146
|
+
activeWorker.postMessage({
|
|
147
|
+
id,
|
|
148
|
+
type: 'render',
|
|
149
|
+
content: normalizedContent,
|
|
150
|
+
displayMode,
|
|
151
|
+
});
|
|
152
|
+
});
|
|
153
|
+
}
|
|
154
|
+
export function setKaTeXCache(content, displayMode = true, html) {
|
|
155
|
+
rememberCache(normalizeKaTeXRenderInput(content), displayMode, html);
|
|
156
|
+
}
|
|
157
|
+
export function getKaTeXWorkerLoad() {
|
|
158
|
+
return {
|
|
159
|
+
inFlight: pending.size,
|
|
160
|
+
max: maxConcurrency,
|
|
161
|
+
};
|
|
162
|
+
}
|
|
163
|
+
export function setKaTeXWorkerMaxConcurrency(value) {
|
|
164
|
+
if (Number.isFinite(value) && value > 0)
|
|
165
|
+
maxConcurrency = Math.floor(value);
|
|
166
|
+
}
|
|
167
|
+
export function isKaTeXWorkerBusy() {
|
|
168
|
+
return pending.size >= maxConcurrency;
|
|
169
|
+
}
|
|
170
|
+
export function waitForKaTeXWorkerSlot(timeout = 2000, signal) {
|
|
171
|
+
if (pending.size < maxConcurrency)
|
|
172
|
+
return Promise.resolve();
|
|
173
|
+
return new Promise((resolve, reject) => {
|
|
174
|
+
let settled = false;
|
|
175
|
+
let timer = null;
|
|
176
|
+
const onDrain = () => {
|
|
177
|
+
if (settled)
|
|
178
|
+
return;
|
|
179
|
+
settled = true;
|
|
180
|
+
if (timer)
|
|
181
|
+
clearTimeout(timer);
|
|
182
|
+
drainWaiters.delete(onDrain);
|
|
183
|
+
resolve();
|
|
184
|
+
};
|
|
185
|
+
drainWaiters.add(onDrain);
|
|
186
|
+
timer = setTimeout(() => {
|
|
187
|
+
if (settled)
|
|
188
|
+
return;
|
|
189
|
+
settled = true;
|
|
190
|
+
drainWaiters.delete(onDrain);
|
|
191
|
+
const error = new Error('Wait for worker slot timed out');
|
|
192
|
+
error.name = 'WorkerBusyTimeout';
|
|
193
|
+
error.code = 'WORKER_BUSY_TIMEOUT';
|
|
194
|
+
reject(error);
|
|
195
|
+
}, timeout);
|
|
196
|
+
queueMicrotask(() => notifyDrainIfBelowCap());
|
|
197
|
+
if (signal) {
|
|
198
|
+
const onAbort = () => {
|
|
199
|
+
if (settled)
|
|
200
|
+
return;
|
|
201
|
+
settled = true;
|
|
202
|
+
if (timer)
|
|
203
|
+
clearTimeout(timer);
|
|
204
|
+
drainWaiters.delete(onDrain);
|
|
205
|
+
const error = new Error('Aborted');
|
|
206
|
+
error.name = 'AbortError';
|
|
207
|
+
reject(error);
|
|
208
|
+
};
|
|
209
|
+
if (signal.aborted)
|
|
210
|
+
onAbort();
|
|
211
|
+
else
|
|
212
|
+
signal.addEventListener('abort', onAbort, { once: true });
|
|
213
|
+
}
|
|
214
|
+
});
|
|
215
|
+
}
|
|
216
|
+
const defaultBackpressure = {
|
|
217
|
+
timeout: 2000,
|
|
218
|
+
waitTimeout: 1500,
|
|
219
|
+
backoffMs: 30,
|
|
220
|
+
maxRetries: 1,
|
|
221
|
+
};
|
|
222
|
+
const maxBackpressureRetries = 8;
|
|
223
|
+
export function setKaTeXBackpressureDefaults(options) {
|
|
224
|
+
if (options.timeout != null)
|
|
225
|
+
defaultBackpressure.timeout = Math.max(0, Math.floor(options.timeout));
|
|
226
|
+
if (options.waitTimeout != null)
|
|
227
|
+
defaultBackpressure.waitTimeout = Math.max(0, Math.floor(options.waitTimeout));
|
|
228
|
+
if (options.backoffMs != null)
|
|
229
|
+
defaultBackpressure.backoffMs = Math.max(0, Math.floor(options.backoffMs));
|
|
230
|
+
if (options.maxRetries != null)
|
|
231
|
+
defaultBackpressure.maxRetries = Math.max(0, Math.floor(options.maxRetries));
|
|
232
|
+
}
|
|
233
|
+
export function getKaTeXBackpressureDefaults() {
|
|
234
|
+
return { ...defaultBackpressure };
|
|
235
|
+
}
|
|
236
|
+
export async function renderKaTeXWithBackpressure(content, displayMode = true, options = {}) {
|
|
237
|
+
var _a, _b, _c, _d, _e;
|
|
238
|
+
if (!isKatexEnabled()) {
|
|
239
|
+
const error = new Error('KaTeX rendering disabled');
|
|
240
|
+
error.name = 'KaTeXDisabled';
|
|
241
|
+
error.code = 'KATEX_DISABLED';
|
|
242
|
+
throw error;
|
|
243
|
+
}
|
|
244
|
+
const timeout = (_a = options.timeout) !== null && _a !== void 0 ? _a : defaultBackpressure.timeout;
|
|
245
|
+
const waitTimeout = (_b = options.waitTimeout) !== null && _b !== void 0 ? _b : defaultBackpressure.waitTimeout;
|
|
246
|
+
const backoffMs = (_c = options.backoffMs) !== null && _c !== void 0 ? _c : defaultBackpressure.backoffMs;
|
|
247
|
+
const rawMaxRetries = (_d = options.maxRetries) !== null && _d !== void 0 ? _d : defaultBackpressure.maxRetries;
|
|
248
|
+
const maxRetries = Number.isFinite(rawMaxRetries)
|
|
249
|
+
? Math.max(0, Math.min(Math.floor(rawMaxRetries), maxBackpressureRetries))
|
|
250
|
+
: defaultBackpressure.maxRetries;
|
|
251
|
+
let attempt = 0;
|
|
252
|
+
for (;;) {
|
|
253
|
+
if ((_e = options.signal) === null || _e === void 0 ? void 0 : _e.aborted) {
|
|
254
|
+
const error = new Error('Aborted');
|
|
255
|
+
error.name = 'AbortError';
|
|
256
|
+
throw error;
|
|
257
|
+
}
|
|
258
|
+
try {
|
|
259
|
+
return await renderKaTeXInWorker(content, displayMode, timeout, options.signal);
|
|
260
|
+
}
|
|
261
|
+
catch (error) {
|
|
262
|
+
if ((error === null || error === void 0 ? void 0 : error.code) !== WORKER_BUSY_CODE || attempt >= maxRetries)
|
|
263
|
+
throw error;
|
|
264
|
+
attempt += 1;
|
|
265
|
+
await waitForKaTeXWorkerSlot(waitTimeout, options.signal).catch(() => { });
|
|
266
|
+
if (backoffMs > 0)
|
|
267
|
+
await new Promise(resolve => globalThis.setTimeout(resolve, backoffMs * attempt));
|
|
268
|
+
}
|
|
269
|
+
}
|
|
270
|
+
}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
export type MermaidCDNWorkerMode = 'classic' | 'module';
|
|
2
|
+
export interface MermaidCDNWorkerOptions {
|
|
3
|
+
mermaidUrl: string;
|
|
4
|
+
mode?: MermaidCDNWorkerMode;
|
|
5
|
+
debug?: boolean;
|
|
6
|
+
workerOptions?: WorkerOptions;
|
|
7
|
+
initializeOptions?: Record<string, any>;
|
|
8
|
+
}
|
|
9
|
+
export interface MermaidCDNWorkerHandle {
|
|
10
|
+
worker: Worker | null;
|
|
11
|
+
dispose: () => void;
|
|
12
|
+
source: string;
|
|
13
|
+
}
|
|
14
|
+
export declare function buildMermaidCDNWorkerSource(options: MermaidCDNWorkerOptions): string;
|
|
15
|
+
export declare function createMermaidWorkerFromCDN(options: MermaidCDNWorkerOptions): MermaidCDNWorkerHandle;
|
|
16
|
+
//# sourceMappingURL=mermaidCdnWorker.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mermaidCdnWorker.d.ts","sourceRoot":"","sources":["../../src/workers/mermaidCdnWorker.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,oBAAoB,GAAG,SAAS,GAAG,QAAQ,CAAA;AAEvD,MAAM,WAAW,uBAAuB;IACtC,UAAU,EAAE,MAAM,CAAA;IAClB,IAAI,CAAC,EAAE,oBAAoB,CAAA;IAC3B,KAAK,CAAC,EAAE,OAAO,CAAA;IACf,aAAa,CAAC,EAAE,aAAa,CAAA;IAC7B,iBAAiB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;CACxC;AAED,MAAM,WAAW,sBAAsB;IACrC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAA;IACrB,OAAO,EAAE,MAAM,IAAI,CAAA;IACnB,MAAM,EAAE,MAAM,CAAA;CACf;AAMD,wBAAgB,2BAA2B,CAAC,OAAO,EAAE,uBAAuB,GAAG,MAAM,CAkMpF;AAED,wBAAgB,0BAA0B,CAAC,OAAO,EAAE,uBAAuB,GAAG,sBAAsB,CA2CnG"}
|