@render-policy/mermaid 0.1.0 → 0.1.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 +3 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +89 -55
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -32,7 +32,9 @@ What the transform guarantees, whatever the diagram source says:
|
|
|
32
32
|
`onDecision`, with codes `diagram-render-failed`, `diagram-element-not-allowed`,
|
|
33
33
|
`diagram-attribute-not-allowed`, `diagram-style-escapes` and `diagram-root-not-svg`.
|
|
34
34
|
|
|
35
|
-
Renders are cached by source (`cacheSize`, default 50
|
|
35
|
+
Renders are cached by source (`cacheSize`, default 50; the least recently used diagram is evicted
|
|
36
|
+
first, so a diagram a stream keeps re-rendering stays cached; `0` turns the cache off). Diagram
|
|
37
|
+
languages other than
|
|
36
38
|
`mermaid` can be mapped with `languages`.
|
|
37
39
|
|
|
38
40
|
Bring your own mermaid (peer dependency, 11 or later) and load it lazily if bundle size
|
package/dist/index.d.ts
CHANGED
|
@@ -17,7 +17,7 @@ export interface MermaidTransformOptions {
|
|
|
17
17
|
readonly languages?: readonly string[];
|
|
18
18
|
/** Receives a decision for every diagram that failed to render or lost content to sanitization. */
|
|
19
19
|
readonly onDecision?: (decision: RenderDecision) => void;
|
|
20
|
-
/** Upper bound of the source -> SVG cache. Default 50. */
|
|
20
|
+
/** Upper bound of the source -> SVG cache; the least recently used diagram goes first. Default 50, 0 turns caching off. */
|
|
21
21
|
readonly cacheSize?: number;
|
|
22
22
|
}
|
|
23
23
|
/**
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAiB,KAAK,iBAAiB,EAAE,KAAK,cAAc,EAAE,KAAK,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAEpH,6FAA6F;AAC7F,MAAM,WAAW,WAAW;IAC1B,UAAU,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;IAClD,MAAM,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CACrE;AAED,MAAM,WAAW,uBAAuB;IACtC,uGAAuG;IACvG,QAAQ,CAAC,OAAO,EAAE,WAAW,CAAC;IAC9B,kEAAkE;IAClE,QAAQ,CAAC,MAAM,CAAC,EAAE,YAAY,CAAC;IAC/B,wFAAwF;IACxF,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC1C,sEAAsE;IACtE,QAAQ,CAAC,SAAS,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACvC,mGAAmG;IACnG,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC,QAAQ,EAAE,cAAc,KAAK,IAAI,CAAC;IACzD,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAiB,KAAK,iBAAiB,EAAE,KAAK,cAAc,EAAE,KAAK,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAEpH,6FAA6F;AAC7F,MAAM,WAAW,WAAW;IAC1B,UAAU,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;IAClD,MAAM,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CACrE;AAED,MAAM,WAAW,uBAAuB;IACtC,uGAAuG;IACvG,QAAQ,CAAC,OAAO,EAAE,WAAW,CAAC;IAC9B,kEAAkE;IAClE,QAAQ,CAAC,MAAM,CAAC,EAAE,YAAY,CAAC;IAC/B,wFAAwF;IACxF,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC1C,sEAAsE;IACtE,QAAQ,CAAC,SAAS,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACvC,mGAAmG;IACnG,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC,QAAQ,EAAE,cAAc,KAAK,IAAI,CAAC;IACzD,2HAA2H;IAC3H,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;CAC7B;AAED;;;GAGG;AACH,eAAO,MAAM,qBAAqB,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CASlE,CAAC;AAEH,mEAAmE;AACnE,eAAO,MAAM,aAAa,eAAe,CAAC;AAC1C,eAAO,MAAM,kBAAkB,oBAAoB,CAAC;AA2BpD,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,QAAQ,EAAE,gBAAgB,CAAC;IACpC,QAAQ,CAAC,SAAS,EAAE,SAAS,cAAc,EAAE,CAAC;CAC/C;AAED;;;GAGG;AACH,wBAAgB,sBAAsB,CAAC,GAAG,EAAE,YAAY,GAAG,CAAC,GAAG,EAAE,MAAM,KAAK,qBAAqB,CAwChG;AAwED;;;;;;;;;;;;GAYG;AACH,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,uBAAuB,GAAG,iBAAiB,CAwB1F"}
|
package/dist/index.js
CHANGED
|
@@ -87,73 +87,99 @@ export function createDiagramSanitizer(win) {
|
|
|
87
87
|
return { fragment, decisions };
|
|
88
88
|
};
|
|
89
89
|
}
|
|
90
|
+
/** A bounded map that forgets the entry used least recently. A size of 0 or less stores nothing. */
|
|
91
|
+
function createLruCache(size) {
|
|
92
|
+
const entries = new Map();
|
|
93
|
+
return {
|
|
94
|
+
get(key) {
|
|
95
|
+
const value = entries.get(key);
|
|
96
|
+
if (value !== undefined) {
|
|
97
|
+
// Map keeps insertion order: re-inserting marks the entry as the most recent.
|
|
98
|
+
entries.delete(key);
|
|
99
|
+
entries.set(key, value);
|
|
100
|
+
}
|
|
101
|
+
return value;
|
|
102
|
+
},
|
|
103
|
+
set(key, value) {
|
|
104
|
+
if (size <= 0)
|
|
105
|
+
return;
|
|
106
|
+
entries.delete(key);
|
|
107
|
+
if (entries.size >= size) {
|
|
108
|
+
const oldest = entries.keys().next().value;
|
|
109
|
+
if (oldest !== undefined)
|
|
110
|
+
entries.delete(oldest);
|
|
111
|
+
}
|
|
112
|
+
entries.set(key, value);
|
|
113
|
+
},
|
|
114
|
+
};
|
|
115
|
+
}
|
|
116
|
+
/** mermaid puts a temporary element with the render id into the document, so ids are unique per page, not per transform. */
|
|
117
|
+
let renderCounter = 0;
|
|
90
118
|
/**
|
|
91
|
-
*
|
|
92
|
-
*
|
|
93
|
-
*
|
|
94
|
-
* - mermaid runs in `securityLevel: 'strict'` without HTML labels, whatever `config` says;
|
|
95
|
-
* - the SVG goes through an SVG-only sanitizer: no links, scripts, foreignObject, images,
|
|
96
|
-
* external references or animations, no stylesheet that imports, fetches or escapes;
|
|
97
|
-
* - the result lives in a shadow root inside a `contain: paint` wrapper, so the diagram's
|
|
98
|
-
* own styles cannot reach the host page and the host page's styles do not break the diagram;
|
|
99
|
-
* - the wrapper keeps the original code block as light DOM: streaming keeps a finished diagram
|
|
100
|
-
* in place, and a block whose fence is still open is left as code until it closes;
|
|
101
|
-
* - a diagram that fails to parse stays a code block; nothing is injected into <body>.
|
|
119
|
+
* Diagram source -> sanitized SVG, cached by source. Initializes mermaid with the strict settings
|
|
120
|
+
* on first use and reports each render's decisions once, when the source is first rendered.
|
|
121
|
+
* Resolves to null when mermaid cannot render the source.
|
|
102
122
|
*/
|
|
103
|
-
|
|
104
|
-
const win = resolveWindow(options.window, '@render-policy/mermaid');
|
|
123
|
+
function createDiagramRenderer(options, win) {
|
|
105
124
|
const sanitize = createDiagramSanitizer(win);
|
|
106
|
-
const
|
|
107
|
-
const cacheSize = options.cacheSize ?? 50;
|
|
108
|
-
const cache = new Map();
|
|
125
|
+
const cache = createLruCache(options.cacheSize ?? 50);
|
|
109
126
|
let initialized = false;
|
|
110
|
-
let counter = 0;
|
|
111
127
|
const emit = (decisions) => {
|
|
112
128
|
if (!options.onDecision)
|
|
113
129
|
return;
|
|
114
130
|
for (const decision of decisions)
|
|
115
131
|
options.onDecision(decision);
|
|
116
132
|
};
|
|
117
|
-
const
|
|
118
|
-
if (initialized)
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
133
|
+
const render = async (source) => {
|
|
134
|
+
if (!initialized) {
|
|
135
|
+
options.mermaid.initialize({ ...(options.config ?? {}), ...STRICT_MERMAID_CONFIG });
|
|
136
|
+
initialized = true;
|
|
137
|
+
}
|
|
138
|
+
renderCounter += 1;
|
|
139
|
+
let svg;
|
|
140
|
+
try {
|
|
141
|
+
svg = (await options.mermaid.render(`rp-mermaid-${renderCounter}`, source)).svg;
|
|
142
|
+
}
|
|
143
|
+
catch (error) {
|
|
144
|
+
emit([{ kind: 'blocked', subject: 'markdown', code: 'diagram-render-failed', reason: `Mermaid could not render the diagram: ${error instanceof Error ? error.message.split('\n')[0] : String(error)}` }]);
|
|
145
|
+
return null;
|
|
146
|
+
}
|
|
147
|
+
const result = sanitize(svg);
|
|
148
|
+
emit(result.decisions);
|
|
149
|
+
return result;
|
|
122
150
|
};
|
|
123
|
-
|
|
151
|
+
return (source) => {
|
|
124
152
|
const cached = cache.get(source);
|
|
125
153
|
if (cached)
|
|
126
154
|
return cached;
|
|
127
|
-
|
|
128
|
-
const promise = (async () => {
|
|
129
|
-
ensureInitialized();
|
|
130
|
-
let svg;
|
|
131
|
-
try {
|
|
132
|
-
svg = (await options.mermaid.render(`rp-mermaid-${counter}`, source)).svg;
|
|
133
|
-
}
|
|
134
|
-
catch (error) {
|
|
135
|
-
emit([{ kind: 'blocked', subject: 'markdown', code: 'diagram-render-failed', reason: `Mermaid could not render the diagram: ${error instanceof Error ? error.message.split('\n')[0] : String(error)}` }]);
|
|
136
|
-
return null;
|
|
137
|
-
}
|
|
138
|
-
const result = sanitize(svg);
|
|
139
|
-
emit(result.decisions);
|
|
140
|
-
return result;
|
|
141
|
-
})();
|
|
142
|
-
if (cache.size >= cacheSize) {
|
|
143
|
-
const oldest = cache.keys().next().value;
|
|
144
|
-
if (oldest !== undefined)
|
|
145
|
-
cache.delete(oldest);
|
|
146
|
-
}
|
|
155
|
+
const promise = render(source);
|
|
147
156
|
cache.set(source, promise);
|
|
148
157
|
return promise;
|
|
149
158
|
};
|
|
159
|
+
}
|
|
160
|
+
/**
|
|
161
|
+
* A fragment transform for createRenderer({ transforms }) that turns
|
|
162
|
+
* ```mermaid code blocks into diagrams:
|
|
163
|
+
*
|
|
164
|
+
* - mermaid runs in `securityLevel: 'strict'` without HTML labels, whatever `config` says;
|
|
165
|
+
* - the SVG goes through an SVG-only sanitizer: no links, scripts, foreignObject, images,
|
|
166
|
+
* external references or animations, no stylesheet that imports, fetches or escapes;
|
|
167
|
+
* - the result lives in a shadow root inside a `contain: paint` wrapper, so the diagram's
|
|
168
|
+
* own styles cannot reach the host page and the host page's styles do not break the diagram;
|
|
169
|
+
* - the wrapper keeps the original code block as light DOM: streaming keeps a finished diagram
|
|
170
|
+
* in place, and a block whose fence is still open is left as code until it closes;
|
|
171
|
+
* - a diagram that fails to parse stays a code block; nothing is injected into <body>.
|
|
172
|
+
*/
|
|
173
|
+
export function createMermaidTransform(options) {
|
|
174
|
+
const win = resolveWindow(options.window, '@render-policy/mermaid');
|
|
175
|
+
const renderDiagram = createDiagramRenderer(options, win);
|
|
176
|
+
const languages = new Set(options.languages ?? ['mermaid']);
|
|
150
177
|
return (fragment, context) => {
|
|
151
178
|
const blocks = Array.from(fragment.querySelectorAll('pre > code')).filter((code) => languages.has(languageOf(code)));
|
|
152
179
|
if (blocks.length === 0)
|
|
153
180
|
return;
|
|
154
181
|
const allPre = fragment.querySelectorAll('pre');
|
|
155
182
|
const lastPre = allPre[allPre.length - 1] ?? null;
|
|
156
|
-
const doc = context.document;
|
|
157
183
|
for (const code of blocks) {
|
|
158
184
|
const pre = code.parentElement;
|
|
159
185
|
if (!pre)
|
|
@@ -161,17 +187,8 @@ export function createMermaidTransform(options) {
|
|
|
161
187
|
if (context.openFenceAtEnd && pre === lastPre)
|
|
162
188
|
continue; // still being typed
|
|
163
189
|
const source = code.textContent ?? '';
|
|
164
|
-
const
|
|
165
|
-
|
|
166
|
-
wrapper.setAttribute('style', 'display:block;contain:paint');
|
|
167
|
-
const host = doc.createElement('div');
|
|
168
|
-
host.className = DIAGRAM_HOST_CLASS;
|
|
169
|
-
pre.replaceWith(wrapper);
|
|
170
|
-
wrapper.append(host);
|
|
171
|
-
host.append(pre); // light DOM: the source, hidden by the shadow root, compared by patchChildren
|
|
172
|
-
const shadow = host.attachShadow({ mode: 'open' });
|
|
173
|
-
shadow.append(fallback(doc, source));
|
|
174
|
-
void renderSource(source).then((result) => {
|
|
190
|
+
const shadow = mountDiagram(context.document, pre, source);
|
|
191
|
+
void renderDiagram(source).then((result) => {
|
|
175
192
|
if (!result)
|
|
176
193
|
return;
|
|
177
194
|
shadow.replaceChildren(result.fragment.cloneNode(true));
|
|
@@ -179,6 +196,23 @@ export function createMermaidTransform(options) {
|
|
|
179
196
|
}
|
|
180
197
|
};
|
|
181
198
|
}
|
|
199
|
+
/**
|
|
200
|
+
* Replace a code block with the diagram wrapper and return the shadow root the diagram goes into.
|
|
201
|
+
* Until the diagram arrives (or if it never does) the shadow root shows the source as code.
|
|
202
|
+
*/
|
|
203
|
+
function mountDiagram(doc, pre, source) {
|
|
204
|
+
const wrapper = doc.createElement('div');
|
|
205
|
+
wrapper.className = DIAGRAM_CLASS;
|
|
206
|
+
wrapper.setAttribute('style', 'display:block;contain:paint');
|
|
207
|
+
const host = doc.createElement('div');
|
|
208
|
+
host.className = DIAGRAM_HOST_CLASS;
|
|
209
|
+
pre.replaceWith(wrapper);
|
|
210
|
+
wrapper.append(host);
|
|
211
|
+
host.append(pre); // light DOM: the source, hidden by the shadow root, compared by patchChildren
|
|
212
|
+
const shadow = host.attachShadow({ mode: 'open' });
|
|
213
|
+
shadow.append(fallback(doc, source));
|
|
214
|
+
return shadow;
|
|
215
|
+
}
|
|
182
216
|
function languageOf(code) {
|
|
183
217
|
for (const token of (code.getAttribute('class') ?? '').split(/\s+/)) {
|
|
184
218
|
if (token.startsWith('language-'))
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@render-policy/mermaid",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.1",
|
|
4
4
|
"description": "Strict Mermaid diagrams for @render-policy/core: rendered in securityLevel strict without HTML labels, sanitized as SVG, isolated in a shadow root.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"type": "module",
|