@danielsimonjr/sciengjs 0.2.0 → 0.3.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.
- package/README.md +10 -5
- package/THIRD_PARTY_NOTICES.md +16 -0
- package/assets/licenses/MIT-mermaid.txt +21 -0
- package/assets/licenses/mermaid-bundle.txt +2128 -0
- package/assets/mermaid.min.js +3636 -0
- package/dist/browser/backend-pdf.d.ts +3 -0
- package/dist/browser/backend-pdf.js +15 -0
- package/dist/browser/backend-pdf.js.map +1 -0
- package/dist/browser/backend-png.d.ts +3 -0
- package/dist/browser/backend-png.js +18 -0
- package/dist/browser/backend-png.js.map +1 -0
- package/dist/browser/cdp.d.ts +37 -0
- package/dist/browser/cdp.js +161 -0
- package/dist/browser/cdp.js.map +1 -0
- package/dist/browser/flags.d.ts +10 -0
- package/dist/browser/flags.js +33 -0
- package/dist/browser/flags.js.map +1 -0
- package/dist/browser/index.d.ts +5 -0
- package/dist/browser/index.js +6 -0
- package/dist/browser/index.js.map +1 -0
- package/dist/browser/input.d.ts +38 -0
- package/dist/browser/input.js +97 -0
- package/dist/browser/input.js.map +1 -0
- package/dist/browser/page.d.ts +10 -0
- package/dist/browser/page.js +33 -0
- package/dist/browser/page.js.map +1 -0
- package/dist/browser/pinned.d.ts +16 -0
- package/dist/browser/pinned.js +13 -0
- package/dist/browser/pinned.js.map +1 -0
- package/dist/browser/profile.d.ts +9 -0
- package/dist/browser/profile.js +33 -0
- package/dist/browser/profile.js.map +1 -0
- package/dist/browser/proxy.d.ts +14 -0
- package/dist/browser/proxy.js +64 -0
- package/dist/browser/proxy.js.map +1 -0
- package/dist/browser/render.d.ts +58 -0
- package/dist/browser/render.js +421 -0
- package/dist/browser/render.js.map +1 -0
- package/dist/core.js +10 -2
- package/dist/core.js.map +1 -1
- package/dist/graph/backend-pdf.d.ts +3 -0
- package/dist/graph/backend-pdf.js +14 -0
- package/dist/graph/backend-pdf.js.map +1 -0
- package/dist/graph/backend-png.d.ts +4 -2
- package/dist/graph/backend-png.js +13 -13
- package/dist/graph/backend-png.js.map +1 -1
- package/dist/mermaid/backend-pdf.d.ts +6 -0
- package/dist/mermaid/backend-pdf.js +19 -0
- package/dist/mermaid/backend-pdf.js.map +1 -0
- package/dist/mermaid/backend-png.d.ts +3 -2
- package/dist/mermaid/backend-png.js +20 -6
- package/dist/mermaid/backend-png.js.map +1 -1
- package/dist/mermaid/backend-svg.d.ts +4 -1
- package/dist/mermaid/backend-svg.js +13 -3
- package/dist/mermaid/backend-svg.js.map +1 -1
- package/dist/mermaid/browser.d.ts +30 -0
- package/dist/mermaid/browser.js +52 -0
- package/dist/mermaid/browser.js.map +1 -0
- package/dist/mermaid/common.d.ts +7 -0
- package/dist/mermaid/common.js +34 -2
- package/dist/mermaid/common.js.map +1 -1
- package/dist/pairs.d.ts +2 -1
- package/dist/pairs.js +8 -6
- package/dist/pairs.js.map +1 -1
- package/dist/registry.js +4 -0
- package/dist/registry.js.map +1 -1
- package/dist/types.d.ts +2 -0
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/dist/worker/entry.js +1 -1
- package/dist/worker/entry.js.map +1 -1
- package/dist/worker/protocol.d.ts +7 -0
- package/dist/worker/run.js +1 -1
- package/dist/worker/run.js.map +1 -1
- package/package.json +6 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"backend-pdf.js","sourceRoot":"","sources":["../../src/graph/backend-pdf.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAE3C,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AACrD,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AAEnD,6HAA6H;AAC7H,MAAM,CAAC,KAAK,UAAU,MAAM,CAAC,OAA6B;IACxD,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC;IACjD,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACrB,MAAM,IAAI,WAAW,CAAC,SAAS,EAAE,oCAAoC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAC3F,CAAC;IACD,MAAM,GAAG,GAAG,MAAM,QAAQ,CAAC,aAAa,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC;IAC1D,MAAM,IAAI,GAAG,MAAM,YAAY,CAAC,GAAG,CAAC,GAAG,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC;IAC3D,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,QAAQ,EAAE,CAAC,GAAG,GAAG,CAAC,QAAQ,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC,EAAE,OAAO,EAAE,4BAA4B,EAAE,CAAC;AACrH,CAAC"}
|
|
@@ -1,10 +1,12 @@
|
|
|
1
1
|
import type { BackendOutput, WorkerJob } from "../worker/protocol.ts";
|
|
2
|
+
/** Reads the option scale of a png. An absent value gives 1. A value that is not a finite number above 0 rejects with E_INPUT. */
|
|
3
|
+
export declare function readScale(options: Record<string, unknown>): number;
|
|
2
4
|
/** Renders dot to png: the SVG of the graph, then the PNG of that SVG at the option scale. The bundled font comes from the assets folder named in the settings. */
|
|
3
5
|
export declare function render(request: WorkerJob["request"]): Promise<BackendOutput>;
|
|
4
6
|
/** Renders dot to png with the bundled font at the given path. The path is a parameter so that a test can name a missing or invalid bundled font. */
|
|
5
7
|
export declare function renderPng(request: WorkerJob["request"], bundledFontPath: string): Promise<BackendOutput>;
|
|
6
8
|
/**
|
|
7
|
-
* Rasterizes one SVG document to PNG at scale
|
|
9
|
+
* Rasterizes one SVG document to PNG at the given scale. The font follows render: the rasterFont setting when set,
|
|
8
10
|
* else the bundled font in the assets folder. The Mermaid PNG backend uses this function.
|
|
9
11
|
*/
|
|
10
|
-
export declare function svgDocumentToPng(svg: string, request: WorkerJob["request"]): Promise<BackendOutput>;
|
|
12
|
+
export declare function svgDocumentToPng(svg: string, request: WorkerJob["request"], scale?: number): Promise<BackendOutput>;
|
|
@@ -26,6 +26,15 @@ function fontOf(settings, bundledFontPath) {
|
|
|
26
26
|
const rasterFont = settings.rasterFont;
|
|
27
27
|
return readFont(rasterFont ?? bundledFontPath, rasterFont === undefined);
|
|
28
28
|
}
|
|
29
|
+
/** Reads the option scale of a png. An absent value gives 1. A value that is not a finite number above 0 rejects with E_INPUT. */
|
|
30
|
+
export function readScale(options) {
|
|
31
|
+
const value = options.scale;
|
|
32
|
+
if (value === undefined)
|
|
33
|
+
return 1;
|
|
34
|
+
if (typeof value === "number" && Number.isFinite(value) && value > 0)
|
|
35
|
+
return value;
|
|
36
|
+
throw new RenderError("E_INPUT", "option scale must be a finite number greater than 0");
|
|
37
|
+
}
|
|
29
38
|
/** Renders dot to png: the SVG of the graph, then the PNG of that SVG at the option scale. The bundled font comes from the assets folder named in the settings. */
|
|
30
39
|
export async function render(request) {
|
|
31
40
|
return renderPng(request, bundledFontPathIn(request.settings.assetsUrl));
|
|
@@ -38,16 +47,7 @@ export async function renderPng(request, bundledFontPath) {
|
|
|
38
47
|
throw new RenderError("E_INPUT", "dot to png takes no option " + key);
|
|
39
48
|
}
|
|
40
49
|
}
|
|
41
|
-
|
|
42
|
-
if ("scale" in options) {
|
|
43
|
-
const value = options.scale;
|
|
44
|
-
if (typeof value === "number" && Number.isFinite(value) && value > 0) {
|
|
45
|
-
scale = value;
|
|
46
|
-
}
|
|
47
|
-
else {
|
|
48
|
-
throw new RenderError("E_INPUT", "option scale must be a finite number greater than 0");
|
|
49
|
-
}
|
|
50
|
-
}
|
|
50
|
+
const scale = readScale(options);
|
|
51
51
|
const font = fontOf(request.settings, bundledFontPath);
|
|
52
52
|
const dot = await dotToSvg(dotSourceText(request.source));
|
|
53
53
|
const bytes = await svgToPng(dot.svg, {
|
|
@@ -59,13 +59,13 @@ export async function renderPng(request, bundledFontPath) {
|
|
|
59
59
|
return { bytes, warnings: [...dot.warnings, ...rasterWarnings(dot.svg, font)] };
|
|
60
60
|
}
|
|
61
61
|
/**
|
|
62
|
-
* Rasterizes one SVG document to PNG at scale
|
|
62
|
+
* Rasterizes one SVG document to PNG at the given scale. The font follows render: the rasterFont setting when set,
|
|
63
63
|
* else the bundled font in the assets folder. The Mermaid PNG backend uses this function.
|
|
64
64
|
*/
|
|
65
|
-
export async function svgDocumentToPng(svg, request) {
|
|
65
|
+
export async function svgDocumentToPng(svg, request, scale = 1) {
|
|
66
66
|
const font = fontOf(request.settings, bundledFontPathIn(request.settings.assetsUrl));
|
|
67
67
|
const bytes = await svgToPng(svg, {
|
|
68
|
-
scale
|
|
68
|
+
scale,
|
|
69
69
|
maxMemoryMb: request.settings.maxMemoryMb,
|
|
70
70
|
font,
|
|
71
71
|
assetsUrl: request.settings.assetsUrl,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"backend-png.js","sourceRoot":"","sources":["../../src/graph/backend-png.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAC3C,OAAO,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAEjD,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AACnD,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC1D,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAEvD,SAAS,QAAQ,CAAC,IAAY,EAAE,OAAgB;IAC9C,IAAI,KAAa,CAAC;IAClB,IAAI,CAAC;QACH,KAAK,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC;IAC7B,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,OAAO;YACX,CAAC,CAAC,IAAI,WAAW,CAAC,iBAAiB,EAAE,sCAAsC,GAAG,IAAI,CAAC;YACnF,CAAC,CAAC,IAAI,WAAW,CAAC,UAAU,EAAE,6BAA6B,GAAG,IAAI,CAAC,CAAC;IACxE,CAAC;IACD,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC;QACvB,MAAM,OAAO;YACX,CAAC,CAAC,IAAI,WAAW,CAAC,iBAAiB,EAAE,yCAAyC,GAAG,IAAI,CAAC;YACtF,CAAC,CAAC,IAAI,WAAW,CAAC,UAAU,EAAE,iDAAiD,GAAG,IAAI,CAAC,CAAC;IAC5F,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,4GAA4G;AAC5G,SAAS,MAAM,CAAC,QAA0C,EAAE,eAAuB;IACjF,MAAM,UAAU,GAAG,QAAQ,CAAC,UAAU,CAAC;IACvC,OAAO,QAAQ,CAAC,UAAU,IAAI,eAAe,EAAE,UAAU,KAAK,SAAS,CAAC,CAAC;AAC3E,CAAC;AAED,mKAAmK;AACnK,MAAM,CAAC,KAAK,UAAU,MAAM,CAAC,OAA6B;IACxD,OAAO,SAAS,CAAC,OAAO,EAAE,iBAAiB,CAAC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC;AAC3E,CAAC;AAED,qJAAqJ;AACrJ,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,OAA6B,EAAE,eAAuB;IACpF,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;IAChC,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;QACvC,IAAI,GAAG,KAAK,OAAO,EAAE,CAAC;YACpB,MAAM,IAAI,WAAW,CAAC,SAAS,EAAE,6BAA6B,GAAG,GAAG,CAAC,CAAC;QACxE,CAAC;IACH,CAAC;IACD,
|
|
1
|
+
{"version":3,"file":"backend-png.js","sourceRoot":"","sources":["../../src/graph/backend-png.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { BackendOutput, WorkerJob } from "../worker/protocol.ts";
|
|
2
|
+
/**
|
|
3
|
+
* Renders one Mermaid source to pdf in the browser stage. A native diagram is laid out first, then its SVG is
|
|
4
|
+
* drawn. Any other Mermaid type is drawn by the pinned Mermaid build in the page. The worker calls this function.
|
|
5
|
+
*/
|
|
6
|
+
export declare function render(request: WorkerJob["request"]): Promise<BackendOutput>;
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { readLenient, routesToBrowser, sourceText } from "./common.js";
|
|
2
|
+
import { drawMermaidInBrowser, drawSvgToPdf, MERMAID_NATIVE_PDF_BACKEND } from "./browser.js";
|
|
3
|
+
import { renderMermaidSvg } from "./render.js";
|
|
4
|
+
/**
|
|
5
|
+
* Renders one Mermaid source to pdf in the browser stage. A native diagram is laid out first, then its SVG is
|
|
6
|
+
* drawn. Any other Mermaid type is drawn by the pinned Mermaid build in the page. The worker calls this function.
|
|
7
|
+
*/
|
|
8
|
+
export async function render(request) {
|
|
9
|
+
const source = sourceText(request.source);
|
|
10
|
+
if (routesToBrowser(source)) {
|
|
11
|
+
readLenient(request.options, []);
|
|
12
|
+
const out = await drawMermaidInBrowser(source, "pdf", request.settings);
|
|
13
|
+
return { bytes: out.bytes, warnings: out.warnings, backend: out.backend };
|
|
14
|
+
}
|
|
15
|
+
const svg = await renderMermaidSvg(source, request.options);
|
|
16
|
+
const draw = await drawSvgToPdf(svg.svg, request.settings);
|
|
17
|
+
return { bytes: draw.bytes, warnings: [...svg.warnings, ...draw.warnings], backend: MERMAID_NATIVE_PDF_BACKEND };
|
|
18
|
+
}
|
|
19
|
+
//# sourceMappingURL=backend-pdf.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"backend-pdf.js","sourceRoot":"","sources":["../../src/mermaid/backend-pdf.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACvE,OAAO,EAAE,oBAAoB,EAAE,YAAY,EAAE,0BAA0B,EAAE,MAAM,cAAc,CAAC;AAC9F,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAE/C;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,MAAM,CAAC,OAA6B;IACxD,MAAM,MAAM,GAAG,UAAU,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IAC1C,IAAI,eAAe,CAAC,MAAM,CAAC,EAAE,CAAC;QAC5B,WAAW,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;QACjC,MAAM,GAAG,GAAG,MAAM,oBAAoB,CAAC,MAAM,EAAE,KAAK,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC;QACxE,OAAO,EAAE,KAAK,EAAE,GAAG,CAAC,KAAK,EAAE,QAAQ,EAAE,GAAG,CAAC,QAAQ,EAAE,OAAO,EAAE,GAAG,CAAC,OAAO,EAAE,CAAC;IAC5E,CAAC;IACD,MAAM,GAAG,GAAG,MAAM,gBAAgB,CAAC,MAAM,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;IAC5D,MAAM,IAAI,GAAG,MAAM,YAAY,CAAC,GAAG,CAAC,GAAG,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC;IAC3D,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,QAAQ,EAAE,CAAC,GAAG,GAAG,CAAC,QAAQ,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC,EAAE,OAAO,EAAE,0BAA0B,EAAE,CAAC;AACnH,CAAC"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import type { BackendOutput, WorkerJob } from "../worker/protocol.ts";
|
|
2
2
|
/**
|
|
3
|
-
* Renders one Mermaid source to PNG
|
|
4
|
-
*
|
|
3
|
+
* Renders one Mermaid source to PNG. A native diagram is drawn to SVG and then to PNG by the raster stage.
|
|
4
|
+
* Any other Mermaid type is drawn by a browser screenshot. Both routes take the options lenient and scale. The scale
|
|
5
|
+
* multiplies the pixel size of the diagram. The worker calls this function for the mermaid:png pair.
|
|
5
6
|
*/
|
|
6
7
|
export declare function render(request: WorkerJob["request"]): Promise<BackendOutput>;
|
|
@@ -1,13 +1,27 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
1
|
+
import { MAX_SCALE } from "../browser/input.js";
|
|
2
|
+
import { RenderError } from "../errors.js";
|
|
3
|
+
import { readScale, svgDocumentToPng } from "../graph/backend-png.js";
|
|
4
|
+
import { readLenient, routesToBrowser, sourceText } from "./common.js";
|
|
5
|
+
import { drawMermaidInBrowser } from "./browser.js";
|
|
3
6
|
import { renderMermaidSvg } from "./render.js";
|
|
4
7
|
/**
|
|
5
|
-
* Renders one Mermaid source to PNG
|
|
6
|
-
*
|
|
8
|
+
* Renders one Mermaid source to PNG. A native diagram is drawn to SVG and then to PNG by the raster stage.
|
|
9
|
+
* Any other Mermaid type is drawn by a browser screenshot. Both routes take the options lenient and scale. The scale
|
|
10
|
+
* multiplies the pixel size of the diagram. The worker calls this function for the mermaid:png pair.
|
|
7
11
|
*/
|
|
8
12
|
export async function render(request) {
|
|
9
|
-
const
|
|
10
|
-
const
|
|
13
|
+
const source = sourceText(request.source);
|
|
14
|
+
const { scale: _scale, ...rest } = request.options;
|
|
15
|
+
const scale = readScale(request.options);
|
|
16
|
+
if (scale > MAX_SCALE)
|
|
17
|
+
throw new RenderError("E_INPUT", `option scale must not be more than ${MAX_SCALE}`);
|
|
18
|
+
if (routesToBrowser(source)) {
|
|
19
|
+
readLenient(rest, []);
|
|
20
|
+
const out = await drawMermaidInBrowser(source, "png", request.settings, scale);
|
|
21
|
+
return { bytes: out.bytes, warnings: out.warnings, backend: out.backend };
|
|
22
|
+
}
|
|
23
|
+
const svg = await renderMermaidSvg(source, rest);
|
|
24
|
+
const png = await svgDocumentToPng(svg.svg, request, scale);
|
|
11
25
|
return { bytes: png.bytes, warnings: [...svg.warnings, ...(png.warnings ?? [])] };
|
|
12
26
|
}
|
|
13
27
|
//# sourceMappingURL=backend-png.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"backend-png.js","sourceRoot":"","sources":["../../src/mermaid/backend-png.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;
|
|
1
|
+
{"version":3,"file":"backend-png.js","sourceRoot":"","sources":["../../src/mermaid/backend-png.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAChD,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAC3C,OAAO,EAAE,SAAS,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAEtE,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACvE,OAAO,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AACpD,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAE/C;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,MAAM,CAAC,OAA6B;IACxD,MAAM,MAAM,GAAG,UAAU,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IAC1C,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC;IACnD,MAAM,KAAK,GAAG,SAAS,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IACzC,IAAI,KAAK,GAAG,SAAS;QAAE,MAAM,IAAI,WAAW,CAAC,SAAS,EAAE,sCAAsC,SAAS,EAAE,CAAC,CAAC;IAC3G,IAAI,eAAe,CAAC,MAAM,CAAC,EAAE,CAAC;QAC5B,WAAW,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;QACtB,MAAM,GAAG,GAAG,MAAM,oBAAoB,CAAC,MAAM,EAAE,KAAK,EAAE,OAAO,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;QAC/E,OAAO,EAAE,KAAK,EAAE,GAAG,CAAC,KAAK,EAAE,QAAQ,EAAE,GAAG,CAAC,QAAQ,EAAE,OAAO,EAAE,GAAG,CAAC,OAAO,EAAE,CAAC;IAC5E,CAAC;IACD,MAAM,GAAG,GAAG,MAAM,gBAAgB,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IACjD,MAAM,GAAG,GAAG,MAAM,gBAAgB,CAAC,GAAG,CAAC,GAAG,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;IAC5D,OAAO,EAAE,KAAK,EAAE,GAAG,CAAC,KAAK,EAAE,QAAQ,EAAE,CAAC,GAAG,GAAG,CAAC,QAAQ,EAAE,GAAG,CAAC,GAAG,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC;AACpF,CAAC"}
|
|
@@ -1,3 +1,6 @@
|
|
|
1
1
|
import type { BackendOutput, WorkerJob } from "../worker/protocol.ts";
|
|
2
|
-
/**
|
|
2
|
+
/**
|
|
3
|
+
* Renders one Mermaid source to SVG. A native diagram goes through the native layouts. Any other Mermaid type goes
|
|
4
|
+
* through the browser stage. The worker calls this function for the mermaid:svg pair.
|
|
5
|
+
*/
|
|
3
6
|
export declare function render(request: WorkerJob["request"]): Promise<BackendOutput>;
|
|
@@ -1,8 +1,18 @@
|
|
|
1
|
-
import { sourceText } from "./common.js";
|
|
1
|
+
import { readLenient, routesToBrowser, sourceText } from "./common.js";
|
|
2
|
+
import { drawMermaidInBrowser } from "./browser.js";
|
|
2
3
|
import { renderMermaidSvg } from "./render.js";
|
|
3
|
-
/**
|
|
4
|
+
/**
|
|
5
|
+
* Renders one Mermaid source to SVG. A native diagram goes through the native layouts. Any other Mermaid type goes
|
|
6
|
+
* through the browser stage. The worker calls this function for the mermaid:svg pair.
|
|
7
|
+
*/
|
|
4
8
|
export async function render(request) {
|
|
5
|
-
const
|
|
9
|
+
const source = sourceText(request.source);
|
|
10
|
+
if (routesToBrowser(source)) {
|
|
11
|
+
readLenient(request.options, []);
|
|
12
|
+
const out = await drawMermaidInBrowser(source, "svg", request.settings);
|
|
13
|
+
return { bytes: out.bytes, warnings: out.warnings, backend: out.backend };
|
|
14
|
+
}
|
|
15
|
+
const result = await renderMermaidSvg(source, request.options);
|
|
6
16
|
return { bytes: new TextEncoder().encode(result.svg), warnings: result.warnings };
|
|
7
17
|
}
|
|
8
18
|
//# sourceMappingURL=backend-svg.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"backend-svg.js","sourceRoot":"","sources":["../../src/mermaid/backend-svg.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"backend-svg.js","sourceRoot":"","sources":["../../src/mermaid/backend-svg.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACvE,OAAO,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AACpD,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAE/C;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,MAAM,CAAC,OAA6B;IACxD,MAAM,MAAM,GAAG,UAAU,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IAC1C,IAAI,eAAe,CAAC,MAAM,CAAC,EAAE,CAAC;QAC5B,WAAW,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;QACjC,MAAM,GAAG,GAAG,MAAM,oBAAoB,CAAC,MAAM,EAAE,KAAK,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC;QACxE,OAAO,EAAE,KAAK,EAAE,GAAG,CAAC,KAAK,EAAE,QAAQ,EAAE,GAAG,CAAC,QAAQ,EAAE,OAAO,EAAE,GAAG,CAAC,OAAO,EAAE,CAAC;IAC5E,CAAC;IACD,MAAM,MAAM,GAAG,MAAM,gBAAgB,CAAC,MAAM,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;IAC/D,OAAO,EAAE,KAAK,EAAE,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAE,CAAC;AACpF,CAAC"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { type HtmlFormat, type PinnedBytes } from "../browser/render.ts";
|
|
2
|
+
/** The backend name of a Mermaid type that the browser stage draws. */
|
|
3
|
+
export declare const MERMAID_BROWSER_BACKEND = "mermaid/browser/chromium";
|
|
4
|
+
/** The backend name of a native Mermaid diagram that is then drawn to pdf in the browser. */
|
|
5
|
+
export declare const MERMAID_NATIVE_PDF_BACKEND = "mermaid/native+browser/chromium";
|
|
6
|
+
/** The settings of one browser render that a Mermaid backend reads. */
|
|
7
|
+
export interface BrowserSettings {
|
|
8
|
+
browser: string | undefined;
|
|
9
|
+
timeoutMs: number;
|
|
10
|
+
assetsUrl: string;
|
|
11
|
+
}
|
|
12
|
+
/** The bytes and the warnings of one browser render. */
|
|
13
|
+
export interface BrowserDraw {
|
|
14
|
+
bytes: Uint8Array;
|
|
15
|
+
warnings: string[];
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Draws one Mermaid source of a browser type through the browser stage. The page names the pinned Mermaid URL.
|
|
19
|
+
* The client fulfils that URL from the pinned build in the assets folder, so no request leaves the process.
|
|
20
|
+
*/
|
|
21
|
+
export declare function drawMermaidInBrowser(source: string, format: HtmlFormat, settings: BrowserSettings, scale?: number): Promise<BrowserDraw & {
|
|
22
|
+
backend: string;
|
|
23
|
+
}>;
|
|
24
|
+
/** Draws the SVG of a native Mermaid diagram to pdf in the browser. */
|
|
25
|
+
export declare function drawSvgToPdf(svg: string, settings: BrowserSettings): Promise<BrowserDraw>;
|
|
26
|
+
/**
|
|
27
|
+
* Reads the pinned Mermaid build from the assets folder and checks its SHA-256. A missing file rejects with
|
|
28
|
+
* E_STAGE_MISSING. A file with other bytes rejects with E_INTEGRITY, so a changed copy never runs in a page.
|
|
29
|
+
*/
|
|
30
|
+
export declare function pinnedMermaid(assetsUrl: string): ReadonlyMap<string, PinnedBytes>;
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import { blockedWarnings, browserPathOf } from "../browser/input.js";
|
|
2
|
+
import { createHash } from "node:crypto";
|
|
3
|
+
import { MERMAID_CDN_URL, MERMAID_FILE, MERMAID_SHA256 } from "../browser/pinned.js";
|
|
4
|
+
import { RenderError } from "../errors.js";
|
|
5
|
+
import { mermaidPageHtml, svgPageHtml } from "../browser/page.js";
|
|
6
|
+
import { renderHtmlPage } from "../browser/render.js";
|
|
7
|
+
import { readAsset } from "../assets.js";
|
|
8
|
+
/** The backend name of a Mermaid type that the browser stage draws. */
|
|
9
|
+
export const MERMAID_BROWSER_BACKEND = "mermaid/browser/chromium";
|
|
10
|
+
/** The backend name of a native Mermaid diagram that is then drawn to pdf in the browser. */
|
|
11
|
+
export const MERMAID_NATIVE_PDF_BACKEND = "mermaid/native+browser/chromium";
|
|
12
|
+
/**
|
|
13
|
+
* Draws one Mermaid source of a browser type through the browser stage. The page names the pinned Mermaid URL.
|
|
14
|
+
* The client fulfils that URL from the pinned build in the assets folder, so no request leaves the process.
|
|
15
|
+
*/
|
|
16
|
+
export async function drawMermaidInBrowser(source, format, settings, scale = 1) {
|
|
17
|
+
const browser = browserPathOf(settings.browser);
|
|
18
|
+
const base = {
|
|
19
|
+
html: mermaidPageHtml(source, MERMAID_CDN_URL),
|
|
20
|
+
browser,
|
|
21
|
+
timeoutMs: settings.timeoutMs,
|
|
22
|
+
pinned: pinnedMermaid(settings.assetsUrl),
|
|
23
|
+
awaitDone: true,
|
|
24
|
+
};
|
|
25
|
+
// A png of a page that reports done is sized from the diagram box. The scale is the device scale of the screenshot.
|
|
26
|
+
const request = format === "png"
|
|
27
|
+
? { ...base, format: "png", width: 0, height: 0, scale }
|
|
28
|
+
: format === "pdf"
|
|
29
|
+
? { ...base, format: "pdf" }
|
|
30
|
+
: { ...base, format: "svg" };
|
|
31
|
+
const out = await renderHtmlPage(request);
|
|
32
|
+
return { bytes: out.bytes, warnings: blockedWarnings(out.blocked), backend: MERMAID_BROWSER_BACKEND };
|
|
33
|
+
}
|
|
34
|
+
/** Draws the SVG of a native Mermaid diagram to pdf in the browser. */
|
|
35
|
+
export async function drawSvgToPdf(svg, settings) {
|
|
36
|
+
const browser = browserPathOf(settings.browser);
|
|
37
|
+
const out = await renderHtmlPage({ html: svgPageHtml(svg), format: "pdf", browser, timeoutMs: settings.timeoutMs });
|
|
38
|
+
return { bytes: out.bytes, warnings: blockedWarnings(out.blocked) };
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Reads the pinned Mermaid build from the assets folder and checks its SHA-256. A missing file rejects with
|
|
42
|
+
* E_STAGE_MISSING. A file with other bytes rejects with E_INTEGRITY, so a changed copy never runs in a page.
|
|
43
|
+
*/
|
|
44
|
+
export function pinnedMermaid(assetsUrl) {
|
|
45
|
+
const bytes = readAsset(assetsUrl, MERMAID_FILE);
|
|
46
|
+
const hash = createHash("sha256").update(bytes).digest("hex");
|
|
47
|
+
if (hash !== MERMAID_SHA256) {
|
|
48
|
+
throw new RenderError("E_INTEGRITY", `${MERMAID_FILE} has the SHA-256 ${hash}, not the pinned ${MERMAID_SHA256}`);
|
|
49
|
+
}
|
|
50
|
+
return new Map([[MERMAID_CDN_URL, { bytes, mime: "application/javascript" }]]);
|
|
51
|
+
}
|
|
52
|
+
//# sourceMappingURL=browser.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"browser.js","sourceRoot":"","sources":["../../src/mermaid/browser.ts"],"names":[],"mappings":"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"}
|
package/dist/mermaid/common.d.ts
CHANGED
|
@@ -41,3 +41,10 @@ export declare function outside(ctx: Context, line: number, text: string, why: s
|
|
|
41
41
|
* and reads the header. A whole Mermaid type that the native layouts do not draw rejects with E_UNSUPPORTED.
|
|
42
42
|
*/
|
|
43
43
|
export declare function prepare(source: string, options: Record<string, unknown>, extra?: readonly string[]): Source;
|
|
44
|
+
/**
|
|
45
|
+
* Tells whether a source routes to the browser stage. A source routes there when the first word of its first
|
|
46
|
+
* content line is a Mermaid type of OTHER_TYPES. The scan skips blank lines, comment lines, directives and a
|
|
47
|
+
* leading front matter block, and it never throws: an unclosed front matter or an unknown header stays on the
|
|
48
|
+
* native path, which rejects it with E_INPUT.
|
|
49
|
+
*/
|
|
50
|
+
export declare function routesToBrowser(source: string): boolean;
|
package/dist/mermaid/common.js
CHANGED
|
@@ -5,7 +5,7 @@ const HEADERS = new Map([
|
|
|
5
5
|
["stateDiagram-v2", "state"],
|
|
6
6
|
["sequenceDiagram", "sequence"],
|
|
7
7
|
]);
|
|
8
|
-
/** Mermaid types that the native layouts do not draw. They
|
|
8
|
+
/** Mermaid types that the native layouts do not draw. They route to the browser stage. */
|
|
9
9
|
const OTHER_TYPES = new Set([
|
|
10
10
|
"flowchart", "graph", "stateDiagram", "erDiagram", "gantt", "pie", "journey", "gitGraph", "mindmap",
|
|
11
11
|
"timeline", "quadrantChart", "requirementDiagram", "C4Context", "C4Container", "C4Component",
|
|
@@ -64,6 +64,34 @@ export function outside(ctx, line, text, why) {
|
|
|
64
64
|
*/
|
|
65
65
|
export function prepare(source, options, extra = []) {
|
|
66
66
|
const ctx = { lenient: readLenient(options, extra), warnings: [] };
|
|
67
|
+
const content = scanContent(source, ctx);
|
|
68
|
+
return headerOf(content, ctx);
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* Tells whether a source routes to the browser stage. A source routes there when the first word of its first
|
|
72
|
+
* content line is a Mermaid type of OTHER_TYPES. The scan skips blank lines, comment lines, directives and a
|
|
73
|
+
* leading front matter block, and it never throws: an unclosed front matter or an unknown header stays on the
|
|
74
|
+
* native path, which rejects it with E_INPUT.
|
|
75
|
+
*/
|
|
76
|
+
export function routesToBrowser(source) {
|
|
77
|
+
const raw = source.split(/\r?\n/);
|
|
78
|
+
for (let index = 0; index < raw.length; index += 1) {
|
|
79
|
+
const text = (raw[index] ?? "").trim();
|
|
80
|
+
if (text === "" || text.startsWith("%%"))
|
|
81
|
+
continue;
|
|
82
|
+
if (text === "---") {
|
|
83
|
+
const close = raw.findIndex((line, at) => at > index && line.trim() === "---");
|
|
84
|
+
if (close < 0)
|
|
85
|
+
return false;
|
|
86
|
+
index = close;
|
|
87
|
+
continue;
|
|
88
|
+
}
|
|
89
|
+
return OTHER_TYPES.has(text.split(/\s+/)[0] ?? "");
|
|
90
|
+
}
|
|
91
|
+
return false;
|
|
92
|
+
}
|
|
93
|
+
/** Removes blank lines, comment lines and directives, and keeps the content lines with their line numbers. */
|
|
94
|
+
function scanContent(source, ctx) {
|
|
67
95
|
const raw = source.split(/\r?\n/);
|
|
68
96
|
const content = [];
|
|
69
97
|
for (let index = 0; index < raw.length; index += 1) {
|
|
@@ -91,6 +119,10 @@ export function prepare(source, options, extra = []) {
|
|
|
91
119
|
}
|
|
92
120
|
content.push({ number, text });
|
|
93
121
|
}
|
|
122
|
+
return content;
|
|
123
|
+
}
|
|
124
|
+
/** Reads the header of the content lines and returns the source. A type that the native layouts do not draw rejects. */
|
|
125
|
+
function headerOf(content, ctx) {
|
|
94
126
|
const head = content[0];
|
|
95
127
|
if (head === undefined) {
|
|
96
128
|
throw new RenderError("E_INPUT", "the source names no Mermaid diagram type");
|
|
@@ -101,7 +133,7 @@ export function prepare(source, options, extra = []) {
|
|
|
101
133
|
return { kind, headerLine: head.number, lines: content.slice(1), lenient: ctx.lenient, warnings: ctx.warnings };
|
|
102
134
|
}
|
|
103
135
|
if (OTHER_TYPES.has(word)) {
|
|
104
|
-
throw new RenderError("E_UNSUPPORTED", `line ${head.number}: ${word} diagrams need the browser stage
|
|
136
|
+
throw new RenderError("E_UNSUPPORTED", `line ${head.number}: ${word} diagrams need the browser stage; ` +
|
|
105
137
|
"the native layouts draw classDiagram, stateDiagram-v2 and sequenceDiagram", { line: head.number });
|
|
106
138
|
}
|
|
107
139
|
if (HEADERS.has(word)) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"common.js","sourceRoot":"","sources":["../../src/mermaid/common.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAwB3C,MAAM,OAAO,GAAqC,IAAI,GAAG,CAAC;IACxD,CAAC,cAAc,EAAE,OAAO,CAAC;IACzB,CAAC,iBAAiB,EAAE,OAAO,CAAC;IAC5B,CAAC,iBAAiB,EAAE,OAAO,CAAC;IAC5B,CAAC,iBAAiB,EAAE,UAAU,CAAC;CAChC,CAAC,CAAC;AAEH,
|
|
1
|
+
{"version":3,"file":"common.js","sourceRoot":"","sources":["../../src/mermaid/common.ts"],"names":[],"mappings":"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"}
|
package/dist/pairs.d.ts
CHANGED
|
@@ -4,8 +4,9 @@ export interface PairSpec {
|
|
|
4
4
|
type: InputType;
|
|
5
5
|
format: OutputFormat;
|
|
6
6
|
stage: string;
|
|
7
|
+
/** A note on the pair that its stage alone does not tell. */
|
|
8
|
+
note?: string;
|
|
7
9
|
}
|
|
8
|
-
/** The pairs of the design section "Scope". A pair missing here is unsupported. */
|
|
9
10
|
export declare const PAIRS: readonly PairSpec[];
|
|
10
11
|
/** Returns the pair of the table, or undefined when the design does not list it. */
|
|
11
12
|
export declare function findPair(type: InputType, format: OutputFormat): PairSpec | undefined;
|
package/dist/pairs.js
CHANGED
|
@@ -1,24 +1,26 @@
|
|
|
1
1
|
/** The pairs of the design section "Scope". A pair missing here is unsupported. */
|
|
2
|
+
/** The note of the Mermaid svg and png pairs, whose stage depends on the diagram type. */
|
|
3
|
+
const MERMAID_NOTE = "types other than class, state and sequence need the browser stage";
|
|
2
4
|
export const PAIRS = [
|
|
3
5
|
{ type: "dot", format: "svg", stage: "graph" },
|
|
4
6
|
{ type: "dot", format: "png", stage: "graph" },
|
|
5
7
|
{ type: "dot", format: "pdf", stage: "browser" },
|
|
6
|
-
{ type: "mermaid", format: "svg", stage: "graph" },
|
|
7
|
-
{ type: "mermaid", format: "png", stage: "graph" },
|
|
8
|
+
{ type: "mermaid", format: "svg", stage: "graph", note: MERMAID_NOTE },
|
|
9
|
+
{ type: "mermaid", format: "png", stage: "graph", note: MERMAID_NOTE },
|
|
8
10
|
{ type: "mermaid", format: "pdf", stage: "browser" },
|
|
9
11
|
{ type: "math", format: "svg", stage: "math" },
|
|
10
12
|
{ type: "math", format: "png", stage: "math" },
|
|
11
|
-
{ type: "math", format: "pdf", stage: "
|
|
13
|
+
{ type: "math", format: "pdf", stage: "browser" },
|
|
12
14
|
{ type: "tikz", format: "svg", stage: "tex" },
|
|
13
15
|
{ type: "tikz", format: "png", stage: "tex" },
|
|
14
|
-
{ type: "tikz", format: "pdf", stage: "
|
|
16
|
+
{ type: "tikz", format: "pdf", stage: "browser" },
|
|
15
17
|
{ type: "plot", format: "svg", stage: "plot" },
|
|
16
18
|
{ type: "plot", format: "png", stage: "plot" },
|
|
17
|
-
{ type: "plot", format: "pdf", stage: "
|
|
19
|
+
{ type: "plot", format: "pdf", stage: "browser" },
|
|
18
20
|
{ type: "plot", format: "html", stage: "plot" },
|
|
19
21
|
{ type: "sysml", format: "svg", stage: "graph" },
|
|
20
22
|
{ type: "sysml", format: "png", stage: "graph" },
|
|
21
|
-
{ type: "sysml", format: "pdf", stage: "
|
|
23
|
+
{ type: "sysml", format: "pdf", stage: "browser" },
|
|
22
24
|
{ type: "step", format: "html", stage: "mesh" },
|
|
23
25
|
{ type: "step", format: "png", stage: "browser" },
|
|
24
26
|
{ type: "step", format: "glb", stage: "mesh" },
|
package/dist/pairs.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pairs.js","sourceRoot":"","sources":["../src/pairs.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"pairs.js","sourceRoot":"","sources":["../src/pairs.ts"],"names":[],"mappings":"AAWA,mFAAmF;AACnF,0FAA0F;AAC1F,MAAM,YAAY,GAAG,mEAAmE,CAAC;AAEzF,MAAM,CAAC,MAAM,KAAK,GAAwB;IACxC,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE;IAC9C,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE;IAC9C,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE;IAChD,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,YAAY,EAAE;IACtE,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,YAAY,EAAE;IACtE,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE;IACpD,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE;IAC9C,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE;IAC9C,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE;IACjD,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE;IAC7C,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE;IAC7C,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE;IACjD,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE;IAC9C,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE;IAC9C,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE;IACjD,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE;IAC/C,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE;IAChD,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE;IAChD,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE;IAClD,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE;IAC/C,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE;IACjD,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE;IAC9C,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE;IAC/C,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE;IACjD,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE;IAC9C,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE;IAC/C,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE;IACjD,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE;IAC9C,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE;IAC9C,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE;IAChD,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE;IAC7C,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE;IAC7C,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE;IACjD,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE;IACjD,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE;CAC9C,CAAC;AAEF,oFAAoF;AACpF,MAAM,UAAU,QAAQ,CAAC,IAAe,EAAE,MAAoB;IAC5D,OAAO,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,IAAI,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,CAAC;AACnE,CAAC"}
|
package/dist/registry.js
CHANGED
|
@@ -11,6 +11,10 @@ export const DEFAULT_REGISTRY = {
|
|
|
11
11
|
"dot:png": { backend: "graph/viz+raster/resvg", moduleUrl: backendUrl("graph/backend-png") },
|
|
12
12
|
"mermaid:svg": { backend: "mermaid/native", moduleUrl: backendUrl("mermaid/backend-svg") },
|
|
13
13
|
"mermaid:png": { backend: "mermaid/native+raster/resvg", moduleUrl: backendUrl("mermaid/backend-png") },
|
|
14
|
+
"dot:pdf": { backend: "graph/viz+browser/chromium", moduleUrl: backendUrl("graph/backend-pdf") },
|
|
15
|
+
"mermaid:pdf": { backend: "mermaid/browser/chromium", moduleUrl: backendUrl("mermaid/backend-pdf") },
|
|
16
|
+
"html:png": { backend: "browser/chromium", moduleUrl: backendUrl("browser/backend-png") },
|
|
17
|
+
"html:pdf": { backend: "browser/chromium", moduleUrl: backendUrl("browser/backend-pdf") },
|
|
14
18
|
};
|
|
15
19
|
/** Builds the registry key of a pair. */
|
|
16
20
|
export function registryKey(type, format) {
|
package/dist/registry.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../src/registry.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAazC,iHAAiH;AACjH,SAAS,UAAU,CAAC,IAAY;IAC9B,MAAM,SAAS,GAAG,OAAO,CAAC,aAAa,CAAC,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;IAC1D,OAAO,IAAI,GAAG,CAAC,KAAK,IAAI,GAAG,SAAS,EAAE,EAAE,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;AAChE,CAAC;AAED,kCAAkC;AAClC,MAAM,CAAC,MAAM,gBAAgB,GAAa;IACxC,SAAS,EAAE,EAAE,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,UAAU,CAAC,mBAAmB,CAAC,EAAE;IAC/E,SAAS,EAAE,EAAE,OAAO,EAAE,wBAAwB,EAAE,SAAS,EAAE,UAAU,CAAC,mBAAmB,CAAC,EAAE;IAC5F,aAAa,EAAE,EAAE,OAAO,EAAE,gBAAgB,EAAE,SAAS,EAAE,UAAU,CAAC,qBAAqB,CAAC,EAAE;IAC1F,aAAa,EAAE,EAAE,OAAO,EAAE,6BAA6B,EAAE,SAAS,EAAE,UAAU,CAAC,qBAAqB,CAAC,EAAE;
|
|
1
|
+
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../src/registry.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAazC,iHAAiH;AACjH,SAAS,UAAU,CAAC,IAAY;IAC9B,MAAM,SAAS,GAAG,OAAO,CAAC,aAAa,CAAC,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;IAC1D,OAAO,IAAI,GAAG,CAAC,KAAK,IAAI,GAAG,SAAS,EAAE,EAAE,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;AAChE,CAAC;AAED,kCAAkC;AAClC,MAAM,CAAC,MAAM,gBAAgB,GAAa;IACxC,SAAS,EAAE,EAAE,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,UAAU,CAAC,mBAAmB,CAAC,EAAE;IAC/E,SAAS,EAAE,EAAE,OAAO,EAAE,wBAAwB,EAAE,SAAS,EAAE,UAAU,CAAC,mBAAmB,CAAC,EAAE;IAC5F,aAAa,EAAE,EAAE,OAAO,EAAE,gBAAgB,EAAE,SAAS,EAAE,UAAU,CAAC,qBAAqB,CAAC,EAAE;IAC1F,aAAa,EAAE,EAAE,OAAO,EAAE,6BAA6B,EAAE,SAAS,EAAE,UAAU,CAAC,qBAAqB,CAAC,EAAE;IACvG,SAAS,EAAE,EAAE,OAAO,EAAE,4BAA4B,EAAE,SAAS,EAAE,UAAU,CAAC,mBAAmB,CAAC,EAAE;IAChG,aAAa,EAAE,EAAE,OAAO,EAAE,0BAA0B,EAAE,SAAS,EAAE,UAAU,CAAC,qBAAqB,CAAC,EAAE;IACpG,UAAU,EAAE,EAAE,OAAO,EAAE,kBAAkB,EAAE,SAAS,EAAE,UAAU,CAAC,qBAAqB,CAAC,EAAE;IACzF,UAAU,EAAE,EAAE,OAAO,EAAE,kBAAkB,EAAE,SAAS,EAAE,UAAU,CAAC,qBAAqB,CAAC,EAAE;CAC1F,CAAC;AAEF,yCAAyC;AACzC,MAAM,UAAU,WAAW,CAAC,IAAY,EAAE,MAAc;IACtD,OAAO,GAAG,IAAI,IAAI,MAAM,EAAE,CAAC;AAC7B,CAAC"}
|
package/dist/types.d.ts
CHANGED
package/dist/version.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export declare const ENGINE_VERSION = "0.
|
|
1
|
+
export declare const ENGINE_VERSION = "0.3.0";
|
package/dist/version.js
CHANGED
package/dist/worker/entry.js
CHANGED
|
@@ -19,7 +19,7 @@ async function run(job) {
|
|
|
19
19
|
throw new RenderError("E_INTERNAL", `backend module ${job.moduleUrl} exports no render function`);
|
|
20
20
|
}
|
|
21
21
|
const out = await mod.render(job.request);
|
|
22
|
-
return { ok: true, bytes: out.bytes, warnings: out.warnings ?? [] };
|
|
22
|
+
return { ok: true, bytes: out.bytes, warnings: out.warnings ?? [], backend: out.backend };
|
|
23
23
|
}
|
|
24
24
|
catch (err) {
|
|
25
25
|
if (isRenderError(err)) {
|
package/dist/worker/entry.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"entry.js","sourceRoot":"","sources":["../../src/worker/entry.ts"],"names":[],"mappings":";;;;;;;;AAAA,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAC7D,OAAO,EAAE,WAAW,EAAE,kBAAkB,EAAE,aAAa,EAAwB,MAAM,cAAc,CAAC;AAGpG;;;GAGG;AACH,KAAK,UAAU,GAAG,CAAC,GAAc;IAC/B,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,CAAC,MAAM,MAAM,kCAAC,GAAG,CAAC,SAAS,EAAC,CAAuF,CAAC;QAChI,IAAI,OAAO,GAAG,CAAC,MAAM,KAAK,UAAU,EAAE,CAAC;YACrC,MAAM,IAAI,WAAW,CAAC,YAAY,EAAE,kBAAkB,GAAG,CAAC,SAAS,6BAA6B,CAAC,CAAC;QACpG,CAAC;QACD,MAAM,GAAG,GAAG,MAAM,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QAC1C,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,CAAC,KAAK,EAAE,QAAQ,EAAE,GAAG,CAAC,QAAQ,IAAI,EAAE,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"entry.js","sourceRoot":"","sources":["../../src/worker/entry.ts"],"names":[],"mappings":";;;;;;;;AAAA,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAC7D,OAAO,EAAE,WAAW,EAAE,kBAAkB,EAAE,aAAa,EAAwB,MAAM,cAAc,CAAC;AAGpG;;;GAGG;AACH,KAAK,UAAU,GAAG,CAAC,GAAc;IAC/B,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,CAAC,MAAM,MAAM,kCAAC,GAAG,CAAC,SAAS,EAAC,CAAuF,CAAC;QAChI,IAAI,OAAO,GAAG,CAAC,MAAM,KAAK,UAAU,EAAE,CAAC;YACrC,MAAM,IAAI,WAAW,CAAC,YAAY,EAAE,kBAAkB,GAAG,CAAC,SAAS,6BAA6B,CAAC,CAAC;QACpG,CAAC;QACD,MAAM,GAAG,GAAG,MAAM,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QAC1C,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,CAAC,KAAK,EAAE,QAAQ,EAAE,GAAG,CAAC,QAAQ,IAAI,EAAE,EAAE,OAAO,EAAE,GAAG,CAAC,OAAO,EAAE,CAAC;IAC5F,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAI,aAAa,CAAC,GAAG,CAAC,EAAE,CAAC;YACvB,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,OAAO,EAAE,GAAG,CAAC,OAAO,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,CAAC;QACjG,CAAC;QACD,MAAM,OAAO,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QACjE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE,CAAC;IACpD,CAAC;AACH,CAAC;AAED,MAAM,GAAG,GAAG,UAAuB,CAAC;AACpC,MAAM,OAAO,GAAG,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC;AAC/B,IAAI,CAAC,OAAO,CAAC,EAAE,IAAI,CAAE,kBAAwC,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;IACrF,OAAO,CAAC,IAAI,GAAG,YAAsC,CAAC;AACxD,CAAC;AACD,UAAU,EAAE,WAAW,CAAC,OAAO,CAAC,CAAC"}
|
|
@@ -7,6 +7,10 @@ export interface BackendSettings {
|
|
|
7
7
|
rasterFont: string | undefined;
|
|
8
8
|
/** The folder URL of the bundled files: the raster font and the resvg WASM file. */
|
|
9
9
|
assetsUrl: string;
|
|
10
|
+
/** The path of the Chromium or Chrome executable, or undefined when no browser is configured. */
|
|
11
|
+
browser: string | undefined;
|
|
12
|
+
/** The time limit of one render, in milliseconds. A browser backend cleans up inside this limit. */
|
|
13
|
+
timeoutMs: number;
|
|
10
14
|
}
|
|
11
15
|
/** What the worker receives: one render request and the backend module that serves it. */
|
|
12
16
|
export interface WorkerJob {
|
|
@@ -24,12 +28,15 @@ export interface WorkerJob {
|
|
|
24
28
|
export interface BackendOutput {
|
|
25
29
|
bytes: Uint8Array;
|
|
26
30
|
warnings?: string[];
|
|
31
|
+
/** The backend name of this output, when it differs from the registry entry (a route chosen per source). */
|
|
32
|
+
backend?: string;
|
|
27
33
|
}
|
|
28
34
|
/** The one message that a worker sends back. */
|
|
29
35
|
export type WorkerMessage = {
|
|
30
36
|
ok: true;
|
|
31
37
|
bytes: Uint8Array;
|
|
32
38
|
warnings: string[];
|
|
39
|
+
backend?: string;
|
|
33
40
|
} | {
|
|
34
41
|
ok: false;
|
|
35
42
|
code: string;
|
package/dist/worker/run.js
CHANGED
|
@@ -64,7 +64,7 @@ export function runInWorker(job, limits) {
|
|
|
64
64
|
worker.once("message", (msg) => {
|
|
65
65
|
settle(() => {
|
|
66
66
|
if (msg.ok) {
|
|
67
|
-
resolve({ bytes: msg.bytes, warnings: msg.warnings });
|
|
67
|
+
resolve({ bytes: msg.bytes, warnings: msg.warnings, backend: msg.backend });
|
|
68
68
|
}
|
|
69
69
|
else {
|
|
70
70
|
const code = msg.code;
|
package/dist/worker/run.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"run.js","sourceRoot":"","sources":["../../src/worker/run.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"run.js","sourceRoot":"","sources":["../../src/worker/run.ts"],"names":[],"mappings":"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"}
|