@aruzone/aze-forge 0.1.0

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 (133) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +408 -0
  3. package/dist/acceptance.d.ts +48 -0
  4. package/dist/acceptance.js +180 -0
  5. package/dist/acceptance.js.map +1 -0
  6. package/dist/assets.d.ts +19 -0
  7. package/dist/assets.js +509 -0
  8. package/dist/assets.js.map +1 -0
  9. package/dist/atomic-write.d.ts +1 -0
  10. package/dist/atomic-write.js +23 -0
  11. package/dist/atomic-write.js.map +1 -0
  12. package/dist/callout.d.ts +27 -0
  13. package/dist/callout.js +78 -0
  14. package/dist/callout.js.map +1 -0
  15. package/dist/capabilities-json.d.ts +4 -0
  16. package/dist/capabilities-json.js +225 -0
  17. package/dist/capabilities-json.js.map +1 -0
  18. package/dist/capabilities.d.ts +110 -0
  19. package/dist/capabilities.js +270 -0
  20. package/dist/capabilities.js.map +1 -0
  21. package/dist/cli.d.ts +2 -0
  22. package/dist/cli.js +1096 -0
  23. package/dist/cli.js.map +1 -0
  24. package/dist/compiler.d.ts +3 -0
  25. package/dist/compiler.js +1034 -0
  26. package/dist/compiler.js.map +1 -0
  27. package/dist/configuration-error.d.ts +4 -0
  28. package/dist/configuration-error.js +9 -0
  29. package/dist/configuration-error.js.map +1 -0
  30. package/dist/diagnostics-json.d.ts +23 -0
  31. package/dist/diagnostics-json.js +143 -0
  32. package/dist/diagnostics-json.js.map +1 -0
  33. package/dist/diagnostics.d.ts +16 -0
  34. package/dist/diagnostics.js +154 -0
  35. package/dist/diagnostics.js.map +1 -0
  36. package/dist/equation.d.ts +74 -0
  37. package/dist/equation.js +485 -0
  38. package/dist/equation.js.map +1 -0
  39. package/dist/font.d.ts +19 -0
  40. package/dist/font.js +75 -0
  41. package/dist/font.js.map +1 -0
  42. package/dist/format.d.ts +2 -0
  43. package/dist/format.js +308 -0
  44. package/dist/format.js.map +1 -0
  45. package/dist/hash.d.ts +5 -0
  46. package/dist/hash.js +189 -0
  47. package/dist/hash.js.map +1 -0
  48. package/dist/help.d.ts +9 -0
  49. package/dist/help.js +102 -0
  50. package/dist/help.js.map +1 -0
  51. package/dist/html-fragment.d.ts +7 -0
  52. package/dist/html-fragment.js +70 -0
  53. package/dist/html-fragment.js.map +1 -0
  54. package/dist/index.d.ts +39 -0
  55. package/dist/index.js +32 -0
  56. package/dist/index.js.map +1 -0
  57. package/dist/markdown.d.ts +14 -0
  58. package/dist/markdown.js +425 -0
  59. package/dist/markdown.js.map +1 -0
  60. package/dist/mermaid-browser.d.ts +43 -0
  61. package/dist/mermaid-browser.js +358 -0
  62. package/dist/mermaid-browser.js.map +1 -0
  63. package/dist/mermaid.d.ts +84 -0
  64. package/dist/mermaid.js +740 -0
  65. package/dist/mermaid.js.map +1 -0
  66. package/dist/model.d.ts +406 -0
  67. package/dist/model.js +2 -0
  68. package/dist/model.js.map +1 -0
  69. package/dist/parse.d.ts +3 -0
  70. package/dist/parse.js +1374 -0
  71. package/dist/parse.js.map +1 -0
  72. package/dist/preview-server.d.ts +39 -0
  73. package/dist/preview-server.js +156 -0
  74. package/dist/preview-server.js.map +1 -0
  75. package/dist/preview-shell.d.ts +29 -0
  76. package/dist/preview-shell.js +102 -0
  77. package/dist/preview-shell.js.map +1 -0
  78. package/dist/reference-validation.d.ts +7 -0
  79. package/dist/reference-validation.js +42 -0
  80. package/dist/reference-validation.js.map +1 -0
  81. package/dist/registry.d.ts +29 -0
  82. package/dist/registry.js +384 -0
  83. package/dist/registry.js.map +1 -0
  84. package/dist/render-html.d.ts +24 -0
  85. package/dist/render-html.js +149 -0
  86. package/dist/render-html.js.map +1 -0
  87. package/dist/render-pdf.d.ts +64 -0
  88. package/dist/render-pdf.js +503 -0
  89. package/dist/render-pdf.js.map +1 -0
  90. package/dist/render-png.d.ts +32 -0
  91. package/dist/render-png.js +427 -0
  92. package/dist/render-png.js.map +1 -0
  93. package/dist/render-svg.d.ts +23 -0
  94. package/dist/render-svg.js +243 -0
  95. package/dist/render-svg.js.map +1 -0
  96. package/dist/runtime-support.d.ts +26 -0
  97. package/dist/runtime-support.js +62 -0
  98. package/dist/runtime-support.js.map +1 -0
  99. package/dist/source-map.d.ts +12 -0
  100. package/dist/source-map.js +75 -0
  101. package/dist/source-map.js.map +1 -0
  102. package/dist/table.d.ts +22 -0
  103. package/dist/table.js +90 -0
  104. package/dist/table.js.map +1 -0
  105. package/dist/theme.d.ts +6 -0
  106. package/dist/theme.js +89 -0
  107. package/dist/theme.js.map +1 -0
  108. package/dist/tool-version.d.ts +3 -0
  109. package/dist/tool-version.js +3 -0
  110. package/dist/tool-version.js.map +1 -0
  111. package/dist/type-guards.d.ts +1 -0
  112. package/dist/type-guards.js +4 -0
  113. package/dist/type-guards.js.map +1 -0
  114. package/dist/validate-document.d.ts +2 -0
  115. package/dist/validate-document.js +248 -0
  116. package/dist/validate-document.js.map +1 -0
  117. package/dist/version.d.ts +37 -0
  118. package/dist/version.js +111 -0
  119. package/dist/version.js.map +1 -0
  120. package/dist/watch-dependencies.d.ts +15 -0
  121. package/dist/watch-dependencies.js +93 -0
  122. package/dist/watch-dependencies.js.map +1 -0
  123. package/dist/watch-events.d.ts +51 -0
  124. package/dist/watch-events.js +27 -0
  125. package/dist/watch-events.js.map +1 -0
  126. package/dist/watch-loop.d.ts +39 -0
  127. package/dist/watch-loop.js +117 -0
  128. package/dist/watch-loop.js.map +1 -0
  129. package/package.json +70 -0
  130. package/schemas/acceptance.json +104 -0
  131. package/schemas/capabilities.json +491 -0
  132. package/schemas/diagnostics.json +219 -0
  133. package/schemas/version.json +167 -0
@@ -0,0 +1,43 @@
1
+ import type { Browser, Page } from "puppeteer-core";
2
+ import type { Theme } from "./model.js";
3
+ export declare const CHROME_HEADLESS_SHELL_VERSION: "152.0.7977.75";
4
+ interface MermaidBrowserInput {
5
+ readonly source: string;
6
+ readonly elementId: string;
7
+ readonly seed: string;
8
+ readonly theme: Theme;
9
+ }
10
+ export interface MermaidBrowserOutput {
11
+ readonly svg: string;
12
+ readonly browserVersion: string;
13
+ readonly requests: readonly string[];
14
+ }
15
+ export declare class MermaidBrowserUnavailableError extends Error {
16
+ constructor(message: string);
17
+ }
18
+ export declare class MermaidBrowserParseError extends Error {
19
+ constructor(message: string);
20
+ }
21
+ export declare class BrowserCapabilityError extends Error {
22
+ readonly code = "AZE_CAPABILITY_DENIED";
23
+ constructor(message: string);
24
+ }
25
+ export declare class MermaidCapabilityError extends BrowserCapabilityError {
26
+ constructor(message: string);
27
+ }
28
+ export declare function throwIfDeniedBrowserRequest(deniedRequest: string | undefined): void;
29
+ interface BrowserCapabilities {
30
+ readonly resolveExecutable: () => string;
31
+ readonly loadMermaidScript: () => Promise<string>;
32
+ readonly loadFontCss: () => Promise<string>;
33
+ readonly launch: (executablePath: string) => Promise<Browser>;
34
+ readonly openPage: (browser: Browser) => Promise<{
35
+ readonly page: Page;
36
+ readonly close: () => Promise<void>;
37
+ }>;
38
+ readonly settleLayout: (page: Page, input: MermaidBrowserInput) => Promise<string>;
39
+ }
40
+ export declare function resolvePinnedBrowserExecutable(): string;
41
+ export declare function launchPinnedBrowser(): Promise<Browser>;
42
+ export declare function renderMermaidInBrowser(input: MermaidBrowserInput, capabilities?: BrowserCapabilities): Promise<MermaidBrowserOutput>;
43
+ export {};
@@ -0,0 +1,358 @@
1
+ import { readFile } from "node:fs/promises";
2
+ import { homedir } from "node:os";
3
+ import { join } from "node:path";
4
+ import { Browser as BrowserKind, computeExecutablePath, } from "@puppeteer/browsers";
5
+ import puppeteer from "puppeteer-core";
6
+ import { loadInterFontFaces } from "./font.js";
7
+ export const CHROME_HEADLESS_SHELL_VERSION = "152.0.7977.75";
8
+ const BROWSER_CACHE_DIRECTORY = join(homedir(), ".cache", "puppeteer");
9
+ const ALLOWED_REQUEST = /^(?:about:blank|data:font\/woff2;base64,)/;
10
+ const BROWSER_ARGS = Object.freeze([
11
+ "--disable-background-networking",
12
+ "--disable-breakpad",
13
+ "--disable-component-update",
14
+ "--disable-default-apps",
15
+ "--disable-domain-reliability",
16
+ "--disable-features=Translate,MediaRouter,OptimizationHints",
17
+ "--disable-sync",
18
+ "--font-render-hinting=none",
19
+ "--metrics-recording-only",
20
+ "--mute-audio",
21
+ "--no-first-run",
22
+ ]);
23
+ export class MermaidBrowserUnavailableError extends Error {
24
+ constructor(message) {
25
+ super(message);
26
+ this.name = "MermaidBrowserUnavailableError";
27
+ }
28
+ }
29
+ export class MermaidBrowserParseError extends Error {
30
+ constructor(message) {
31
+ super(message);
32
+ this.name = "MermaidBrowserParseError";
33
+ }
34
+ }
35
+ export class BrowserCapabilityError extends Error {
36
+ code = "AZE_CAPABILITY_DENIED";
37
+ constructor(message) {
38
+ super(message);
39
+ this.name = "BrowserCapabilityError";
40
+ }
41
+ }
42
+ export class MermaidCapabilityError extends BrowserCapabilityError {
43
+ constructor(message) {
44
+ super(message);
45
+ this.name = "MermaidCapabilityError";
46
+ }
47
+ }
48
+ export function throwIfDeniedBrowserRequest(deniedRequest) {
49
+ if (deniedRequest !== undefined) {
50
+ throw new BrowserCapabilityError(`Layout requested an external resource: ${deniedRequest}`);
51
+ }
52
+ }
53
+ let mermaidScriptPromise;
54
+ let fontCssPromise;
55
+ function loadMermaidScript() {
56
+ mermaidScriptPromise ??= readFile(new URL(import.meta.resolve("mermaid/dist/mermaid.min.js")), "utf8");
57
+ return mermaidScriptPromise;
58
+ }
59
+ function loadFontCss() {
60
+ fontCssPromise ??= loadInterFontFaces().then((faces) => faces
61
+ .map((face) => `@font-face{font-family:Inter;font-style:normal;font-weight:${face.weight};font-display:block;src:url(data:font/woff2;base64,${face.data}) format("woff2");unicode-range:${face.unicodeRange}}`)
62
+ .join(""));
63
+ return fontCssPromise;
64
+ }
65
+ async function openIsolatedPage(browser) {
66
+ const context = await browser.createBrowserContext();
67
+ try {
68
+ const page = await context.newPage();
69
+ return {
70
+ page,
71
+ close: async () => {
72
+ await context.close();
73
+ },
74
+ };
75
+ }
76
+ catch (error) {
77
+ await context.close();
78
+ throw error;
79
+ }
80
+ }
81
+ async function renderAndSettle(page, input) {
82
+ return page.evaluate(async (browserInput) => {
83
+ // Well-known browser global: Mermaid UMD script installs window.mermaid.
84
+ const browserGlobal = globalThis;
85
+ const mermaid = browserGlobal["mermaid"];
86
+ if (mermaid === undefined)
87
+ throw new Error("Pinned Mermaid script did not load.");
88
+ let state = Number.parseInt(browserInput.seed.slice(0, 8), 16) >>> 0;
89
+ Math.random = () => {
90
+ state ^= state << 13;
91
+ state ^= state >>> 17;
92
+ state ^= state << 5;
93
+ return (state >>> 0) / 0x1_0000_0000;
94
+ };
95
+ Date.now = () => 0;
96
+ const root = document.querySelector("#azeforge-mermaid-root");
97
+ if (root === null)
98
+ throw new Error("Mermaid render root is missing.");
99
+ // Mermaid measures labels during render: force every Inter face the
100
+ // Source can need before layout, so fallback metrics can never bake
101
+ // host-dependent geometry into deterministic Artifacts.
102
+ for (const weight of ["400", "700"]) {
103
+ await document.fonts.load(`${weight} 16px "Inter"`, browserInput.source);
104
+ }
105
+ mermaid.initialize({
106
+ startOnLoad: false,
107
+ securityLevel: "strict",
108
+ suppressErrorRendering: true,
109
+ deterministicIds: true,
110
+ deterministicIDSeed: browserInput.seed,
111
+ htmlLabels: false,
112
+ fontFamily: "Inter",
113
+ theme: "base",
114
+ themeVariables: {
115
+ background: browserInput.theme.colors.background,
116
+ primaryColor: browserInput.theme.colors.background,
117
+ primaryTextColor: browserInput.theme.colors.foreground,
118
+ primaryBorderColor: browserInput.theme.colors.foreground,
119
+ lineColor: browserInput.theme.colors.muted,
120
+ textColor: browserInput.theme.colors.foreground,
121
+ fontFamily: "Inter",
122
+ },
123
+ flowchart: { htmlLabels: false },
124
+ });
125
+ try {
126
+ await mermaid.parse(browserInput.source, { suppressErrors: false });
127
+ }
128
+ catch (error) {
129
+ const message = error instanceof Error ? error.message : String(error);
130
+ return `AZE_MERMAID_PARSE_ERROR:${message}`;
131
+ }
132
+ const rendered = await mermaid.render(browserInput.elementId, browserInput.source, root);
133
+ root.innerHTML = rendered.svg;
134
+ await document.fonts.ready;
135
+ if (!document.fonts.check('16px "Inter"')) {
136
+ throw new Error("Pinned Inter font did not become ready.");
137
+ }
138
+ const svg = root.querySelector("svg");
139
+ if (svg === null)
140
+ throw new Error("Mermaid produced no SVG root.");
141
+ for (const foreignObject of [...svg.querySelectorAll("foreignObject")]) {
142
+ const x = Number.parseFloat(foreignObject.getAttribute("x") ?? "");
143
+ const y = Number.parseFloat(foreignObject.getAttribute("y") ?? "");
144
+ const width = Number.parseFloat(foreignObject.getAttribute("width") ?? "");
145
+ const height = Number.parseFloat(foreignObject.getAttribute("height") ?? "");
146
+ const label = foreignObject.textContent?.trim() ?? "";
147
+ if (![x, y, width, height].every(Number.isFinite) ||
148
+ width <= 0 ||
149
+ height <= 0 ||
150
+ label === "") {
151
+ throw new Error("Mermaid produced an invalid HTML label.");
152
+ }
153
+ const sourceLabel = foreignObject.querySelector(".label") ?? foreignObject;
154
+ const computed = getComputedStyle(sourceLabel);
155
+ const text = document.createElementNS("http://www.w3.org/2000/svg", "text");
156
+ text.setAttribute("x", String(x + width / 2));
157
+ text.setAttribute("y", String(y + height / 2));
158
+ text.setAttribute("text-anchor", "middle");
159
+ text.setAttribute("dominant-baseline", "central");
160
+ text.setAttribute("fill", computed.color);
161
+ text.setAttribute("font-family", "Inter");
162
+ text.setAttribute("font-size", computed.fontSize);
163
+ text.setAttribute("font-weight", computed.fontWeight);
164
+ text.textContent = label;
165
+ foreignObject.replaceWith(text);
166
+ }
167
+ const presentationProperties = [
168
+ "fill",
169
+ "fill-opacity",
170
+ "fill-rule",
171
+ "stroke",
172
+ "stroke-width",
173
+ "stroke-opacity",
174
+ "stroke-dasharray",
175
+ "stroke-dashoffset",
176
+ "stroke-linecap",
177
+ "stroke-linejoin",
178
+ "opacity",
179
+ "color",
180
+ "flood-color",
181
+ "flood-opacity",
182
+ "font-family",
183
+ "font-size",
184
+ "font-style",
185
+ "font-weight",
186
+ "text-anchor",
187
+ "dominant-baseline",
188
+ "alignment-baseline",
189
+ "paint-order",
190
+ "shape-rendering",
191
+ "visibility",
192
+ ];
193
+ // Pass 1: snapshot computed presentation while Mermaid's selectors
194
+ // still match. Mutating ancestors first (class removal below) would
195
+ // otherwise break descendant selectors such as `.node rect`, and the
196
+ // fallback inherited paint is visibly wrong (solid boxes, lost halos).
197
+ const snapshot = new Map();
198
+ for (const element of [svg, ...svg.querySelectorAll("*")]) {
199
+ if (element.localName === "style")
200
+ continue;
201
+ const computed = getComputedStyle(element);
202
+ const values = {};
203
+ for (const property of presentationProperties) {
204
+ const value = computed.getPropertyValue(property).trim();
205
+ if (value !== "")
206
+ values[property] = value;
207
+ }
208
+ snapshot.set(element, values);
209
+ }
210
+ // Pass 2: freeze the snapshot into attributes, then drop hooks.
211
+ for (const [element, values] of snapshot) {
212
+ for (const property of presentationProperties) {
213
+ const value = values[property];
214
+ if (value !== undefined)
215
+ element.setAttribute(property, value);
216
+ }
217
+ for (const attribute of [...element.attributes]) {
218
+ if (attribute.name === "class" ||
219
+ attribute.name === "style" ||
220
+ attribute.name === "name" ||
221
+ attribute.name === "xmlns:xlink" ||
222
+ attribute.name.startsWith("data-")) {
223
+ element.removeAttribute(attribute.name);
224
+ }
225
+ }
226
+ }
227
+ for (const style of [...svg.querySelectorAll("style")])
228
+ style.remove();
229
+ svg.removeAttribute("width");
230
+ svg.removeAttribute("height");
231
+ const dimensions = () => {
232
+ const viewBox = svg.viewBox.baseVal;
233
+ const bounds = svg.getBoundingClientRect();
234
+ return {
235
+ viewBox: [viewBox.x, viewBox.y, viewBox.width, viewBox.height],
236
+ bounds: [bounds.width, bounds.height],
237
+ };
238
+ };
239
+ const first = dimensions();
240
+ await new Promise((resolve) => requestAnimationFrame(() => resolve()));
241
+ await new Promise((resolve) => requestAnimationFrame(() => resolve()));
242
+ const second = dimensions();
243
+ if (JSON.stringify(first) !== JSON.stringify(second)) {
244
+ throw new Error("Mermaid layout did not settle deterministically.");
245
+ }
246
+ const viewBoxWidth = first.viewBox[2] ?? Number.NaN;
247
+ const viewBoxHeight = first.viewBox[3] ?? Number.NaN;
248
+ const boundsWidth = first.bounds[0] ?? Number.NaN;
249
+ const boundsHeight = first.bounds[1] ?? Number.NaN;
250
+ if ([...first.viewBox, ...first.bounds].some((value) => !Number.isFinite(value)) ||
251
+ viewBoxWidth <= 0 ||
252
+ viewBoxHeight <= 0 ||
253
+ boundsWidth <= 0 ||
254
+ boundsHeight <= 0) {
255
+ throw new Error("Mermaid produced degenerate geometry.");
256
+ }
257
+ return svg.outerHTML;
258
+ }, input);
259
+ }
260
+ export function resolvePinnedBrowserExecutable() {
261
+ return computeExecutablePath({
262
+ cacheDir: BROWSER_CACHE_DIRECTORY,
263
+ browser: BrowserKind.CHROMEHEADLESSSHELL,
264
+ buildId: CHROME_HEADLESS_SHELL_VERSION,
265
+ });
266
+ }
267
+ const pinnedCapabilities = Object.freeze({
268
+ resolveExecutable() {
269
+ return resolvePinnedBrowserExecutable();
270
+ },
271
+ loadMermaidScript,
272
+ loadFontCss,
273
+ async launch(executablePath) {
274
+ return puppeteer.launch({
275
+ executablePath,
276
+ headless: "shell",
277
+ args: [...BROWSER_ARGS],
278
+ protocolTimeout: 15_000,
279
+ timeout: 15_000,
280
+ });
281
+ },
282
+ openPage: openIsolatedPage,
283
+ settleLayout: renderAndSettle,
284
+ });
285
+ async function acquirePinnedBrowser(capabilities) {
286
+ let browser;
287
+ try {
288
+ browser = await capabilities.launch(capabilities.resolveExecutable());
289
+ }
290
+ catch (error) {
291
+ const detail = error instanceof Error ? error.message : String(error);
292
+ throw new MermaidBrowserUnavailableError(`Pinned Chrome Headless Shell ${CHROME_HEADLESS_SHELL_VERSION} is unavailable. Reinstall AzeForge browser dependencies. ${detail}`);
293
+ }
294
+ try {
295
+ const browserVersion = await browser.version();
296
+ if (browserVersion !== `HeadlessChrome/${CHROME_HEADLESS_SHELL_VERSION}`) {
297
+ throw new MermaidBrowserUnavailableError(`Expected HeadlessChrome/${CHROME_HEADLESS_SHELL_VERSION}, received ${browserVersion}.`);
298
+ }
299
+ return { browser, browserVersion };
300
+ }
301
+ catch (error) {
302
+ await browser.close();
303
+ if (error instanceof MermaidBrowserUnavailableError)
304
+ throw error;
305
+ const detail = error instanceof Error ? error.message : String(error);
306
+ throw new MermaidBrowserUnavailableError(`Pinned Chrome Headless Shell ${CHROME_HEADLESS_SHELL_VERSION} could not be verified. Reinstall AzeForge browser dependencies. ${detail}`);
307
+ }
308
+ }
309
+ export async function launchPinnedBrowser() {
310
+ return (await acquirePinnedBrowser(pinnedCapabilities)).browser;
311
+ }
312
+ export async function renderMermaidInBrowser(input, capabilities = pinnedCapabilities) {
313
+ const { browser, browserVersion } = await acquirePinnedBrowser(capabilities);
314
+ try {
315
+ const isolated = await capabilities.openPage(browser);
316
+ try {
317
+ const requests = [];
318
+ let deniedRequest;
319
+ await isolated.page.setRequestInterception(true);
320
+ isolated.page.on("request", (request) => {
321
+ const url = request.url();
322
+ requests.push(url);
323
+ if (ALLOWED_REQUEST.test(url)) {
324
+ void request.continue();
325
+ }
326
+ else {
327
+ deniedRequest ??= url;
328
+ void request.abort("blockedbyclient");
329
+ }
330
+ });
331
+ const [script, fontCss] = await Promise.all([
332
+ capabilities.loadMermaidScript(),
333
+ capabilities.loadFontCss(),
334
+ ]);
335
+ await isolated.page.setContent(`<!doctype html><meta charset="utf-8"><style>${fontCss}*{animation:none!important;transition:none!important;caret-color:transparent!important}</style><main id="azeforge-mermaid-root"></main>`, { waitUntil: "domcontentloaded" });
336
+ await isolated.page.addScriptTag({ content: script });
337
+ const svg = await capabilities.settleLayout(isolated.page, input);
338
+ if (svg.startsWith("AZE_MERMAID_PARSE_ERROR:")) {
339
+ throw new MermaidBrowserParseError(svg.slice("AZE_MERMAID_PARSE_ERROR:".length));
340
+ }
341
+ if (deniedRequest !== undefined) {
342
+ throw new MermaidCapabilityError(`Browser request was denied: ${deniedRequest}`);
343
+ }
344
+ return Object.freeze({
345
+ svg,
346
+ browserVersion,
347
+ requests: Object.freeze([...requests]),
348
+ });
349
+ }
350
+ finally {
351
+ await isolated.close();
352
+ }
353
+ }
354
+ finally {
355
+ await browser.close();
356
+ }
357
+ }
358
+ //# sourceMappingURL=mermaid-browser.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mermaid-browser.js","sourceRoot":"","sources":["../src/mermaid-browser.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,84 @@
1
+ import { CHROME_HEADLESS_SHELL_VERSION, MermaidBrowserParseError, MermaidBrowserUnavailableError } from "./mermaid-browser.js";
2
+ import type { AzeBlockPlugin, Diagnostic, JsonValue, MermaidBlock, MermaidBlockRenderer, SourceRange, Theme } from "./model.js";
3
+ export declare const MERMAID_PLUGIN_TYPE: "mermaid";
4
+ export declare const MERMAID_PLUGIN_VERSION: "1.0.0";
5
+ export declare const MERMAID_BODY_SYNTAX_ID: "azeforge.mermaid/v1";
6
+ export declare const MERMAID_BODY_SYNTAX_VERSION: "1.0.0";
7
+ /** Pinned Mermaid version per the HTML-first output decision (#10). */
8
+ export declare const MERMAID_VERSION: "11.17.2";
9
+ export declare const MERMAID_HTML_BLOCK_RENDERER_ID: "azeforge.mermaid.html/v1";
10
+ export declare const MERMAID_HTML_BLOCK_RENDERER_VERSION: "1.0.0";
11
+ export declare const MAX_MERMAID_SOURCE_LENGTH = 8000;
12
+ export declare const MAX_MERMAID_TEXT_LENGTH = 8000;
13
+ export { CHROME_HEADLESS_SHELL_VERSION, MermaidBrowserParseError, MermaidBrowserUnavailableError, };
14
+ export declare const mermaidSourceSchema: JsonValue;
15
+ export declare const mermaidDataSchema: JsonValue;
16
+ export declare class MermaidSanitizerError extends Error {
17
+ readonly reason: string;
18
+ constructor(reason: string);
19
+ }
20
+ export interface MermaidHeader {
21
+ readonly id?: string;
22
+ readonly title?: string;
23
+ readonly description?: string;
24
+ readonly diagnostics: readonly Diagnostic[];
25
+ }
26
+ export declare function parseMermaidHeader(entries: readonly {
27
+ readonly key: string;
28
+ readonly value: string;
29
+ readonly range: SourceRange;
30
+ }[], _blockRange: SourceRange, sourceName: string | undefined): MermaidHeader;
31
+ export interface ValidatedMermaid {
32
+ readonly block?: MermaidBlock;
33
+ readonly diagnostics: readonly Diagnostic[];
34
+ }
35
+ /**
36
+ * Synchronous Source preflight. Deep syntax is owned by pinned Mermaid in
37
+ * the isolated browser at compile time; this gate rejects empty,
38
+ * over-long, active-content, external-resource, and unknown-diagram input
39
+ * so obvious failures surface at parse with a stable diagnostic.
40
+ */
41
+ export declare function validateMermaidBody(options: {
42
+ readonly header: MermaidHeader;
43
+ readonly body: string;
44
+ readonly bodyRanges: readonly SourceRange[];
45
+ readonly blockRange: SourceRange;
46
+ readonly sourceName: string | undefined;
47
+ }): ValidatedMermaid;
48
+ export declare function deriveMermaidSeed(options: {
49
+ readonly source: string;
50
+ readonly ordinal: number;
51
+ readonly pluginVersion: string;
52
+ readonly theme: Pick<Theme, "id" | "version">;
53
+ readonly mermaidVersion?: string;
54
+ }): string;
55
+ /**
56
+ * Render pinned Mermaid in the isolated browser and return sanitized SVG.
57
+ * Every advertised diagram family executes through real Mermaid 11.17.2;
58
+ * deep syntax failures surface as MermaidBrowserParseError so the Compiler
59
+ * can report one scoped invalid-syntax diagnostic with no Artifact.
60
+ */
61
+ export declare function renderMermaidSvg(block: MermaidBlock, options: {
62
+ readonly ordinal: number;
63
+ readonly theme: Theme;
64
+ }): Promise<string>;
65
+ /**
66
+ * Structural SVG sanitizer backed by a real XML parser. Strips only XML
67
+ * comments (inert); any other visible or security-relevant finding throws
68
+ * instead of silently rewriting meaning.
69
+ */
70
+ export declare function sanitizeMermaidSvg(svg: string, options: {
71
+ readonly ordinal: number;
72
+ }): string;
73
+ /**
74
+ * Fragment post-pass for the Compiler: the Block renderer returns a
75
+ * figure wrapping one sanitized SVG. The entire Fragment is validated —
76
+ * wrapper attributes and embedded SVG alike — and any failure throws
77
+ * instead of silently rewriting.
78
+ */
79
+ export declare function sanitizeMermaidFragment(fragment: string, options: {
80
+ readonly ordinal: number;
81
+ }): string;
82
+ export declare const mermaidPlugin: AzeBlockPlugin;
83
+ export declare const mermaidHtmlBlockRenderer: MermaidBlockRenderer;
84
+ export declare function mermaidDependencyClosure(): Record<string, JsonValue>;