@mermkit/render 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.
- package/dist/ascii.d.ts +17 -0
- package/dist/ascii.d.ts.map +1 -0
- package/dist/ascii.js +2098 -0
- package/dist/ascii.js.map +1 -0
- package/dist/index.d.ts +52 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +482 -0
- package/dist/index.js.map +1 -0
- package/package.json +25 -0
package/dist/index.js
ADDED
|
@@ -0,0 +1,482 @@
|
|
|
1
|
+
import { mkdtemp, readFile, rm, writeFile } from "node:fs/promises";
|
|
2
|
+
import { spawn } from "node:child_process";
|
|
3
|
+
import { tmpdir } from "node:os";
|
|
4
|
+
import { dirname, join } from "node:path";
|
|
5
|
+
import { fileURLToPath } from "node:url";
|
|
6
|
+
import { renderAscii } from "./ascii.js";
|
|
7
|
+
export { renderAscii };
|
|
8
|
+
const engineRegistry = new Map();
|
|
9
|
+
let builtinsRegistered = false;
|
|
10
|
+
export function registerEngine(engine, options = {}) {
|
|
11
|
+
const existing = engineRegistry.get(engine.id);
|
|
12
|
+
if (existing && !options.override) {
|
|
13
|
+
if (options.silent)
|
|
14
|
+
return;
|
|
15
|
+
throw new Error(`render engine already registered: ${engine.id}`);
|
|
16
|
+
}
|
|
17
|
+
engineRegistry.set(engine.id, engine);
|
|
18
|
+
}
|
|
19
|
+
export function getEngine(id) {
|
|
20
|
+
return engineRegistry.get(id);
|
|
21
|
+
}
|
|
22
|
+
export function listEngines() {
|
|
23
|
+
return Array.from(engineRegistry.values()).sort((a, b) => (b.priority ?? 0) - (a.priority ?? 0));
|
|
24
|
+
}
|
|
25
|
+
function ensureBuiltinEngines() {
|
|
26
|
+
if (builtinsRegistered)
|
|
27
|
+
return;
|
|
28
|
+
builtinsRegistered = true;
|
|
29
|
+
registerEngine({
|
|
30
|
+
id: "embedded",
|
|
31
|
+
priority: 30,
|
|
32
|
+
render: (diagram, options) => renderWithEmbedded(diagram, options)
|
|
33
|
+
}, { silent: true });
|
|
34
|
+
registerEngine({
|
|
35
|
+
id: "mmdc",
|
|
36
|
+
priority: 20,
|
|
37
|
+
render: (diagram, options) => renderWithMmdc(diagram, options)
|
|
38
|
+
}, { silent: true });
|
|
39
|
+
registerEngine({
|
|
40
|
+
id: "ascii",
|
|
41
|
+
priority: 15,
|
|
42
|
+
render: (diagram, options) => renderWithAscii(diagram, options)
|
|
43
|
+
}, { silent: true });
|
|
44
|
+
registerEngine({
|
|
45
|
+
id: "stub",
|
|
46
|
+
priority: 0,
|
|
47
|
+
render: (diagram, options) => renderWithStub(diagram, options)
|
|
48
|
+
}, { silent: true });
|
|
49
|
+
}
|
|
50
|
+
export async function render(diagram, options) {
|
|
51
|
+
ensureBuiltinEngines();
|
|
52
|
+
// Handle ASCII format specially
|
|
53
|
+
if (options.format === "ascii") {
|
|
54
|
+
return renderWithAscii(diagram, options);
|
|
55
|
+
}
|
|
56
|
+
const selection = options.engine ?? "auto";
|
|
57
|
+
if (selection !== "auto") {
|
|
58
|
+
const engine = getEngine(selection);
|
|
59
|
+
if (!engine) {
|
|
60
|
+
throw new Error(`render engine not registered: ${selection}`);
|
|
61
|
+
}
|
|
62
|
+
return engine.render(diagram, options);
|
|
63
|
+
}
|
|
64
|
+
const engines = listEngines();
|
|
65
|
+
const failures = [];
|
|
66
|
+
for (const engine of engines) {
|
|
67
|
+
// Skip ASCII engine in auto mode (it's only used explicitly or via format: "ascii")
|
|
68
|
+
if (engine.id === "ascii")
|
|
69
|
+
continue;
|
|
70
|
+
try {
|
|
71
|
+
const result = await engine.render(diagram, options);
|
|
72
|
+
if (failures.length > 0) {
|
|
73
|
+
result.warnings.unshift(...failures);
|
|
74
|
+
}
|
|
75
|
+
return result;
|
|
76
|
+
}
|
|
77
|
+
catch (error) {
|
|
78
|
+
failures.push(`${engine.id} engine failed: ${errorMessage(error)}`);
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
throw new Error("no render engines succeeded");
|
|
82
|
+
}
|
|
83
|
+
export async function renderForTerminal(diagram, capabilities, options = {}) {
|
|
84
|
+
const warnings = [];
|
|
85
|
+
// Try inline image first if terminal supports it and ASCII not preferred
|
|
86
|
+
if (!options.preferAscii && (capabilities.kitty || capabilities.wezterm || capabilities.iterm2)) {
|
|
87
|
+
try {
|
|
88
|
+
const result = await render(diagram, { format: "png", engine: "auto" });
|
|
89
|
+
const bytes = result.bytes;
|
|
90
|
+
if (bytes.length > 0) {
|
|
91
|
+
const text = capabilities.iterm2 && !capabilities.kitty && !capabilities.wezterm
|
|
92
|
+
? encodeIterm2InlinePng(bytes)
|
|
93
|
+
: encodeKittyInlinePng(bytes);
|
|
94
|
+
warnings.push(...result.warnings);
|
|
95
|
+
return {
|
|
96
|
+
text,
|
|
97
|
+
imageBytes: bytes,
|
|
98
|
+
mime: "image/png",
|
|
99
|
+
warnings
|
|
100
|
+
};
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
catch (error) {
|
|
104
|
+
warnings.push(`inline image failed: ${errorMessage(error)}`);
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
// Fall back to ASCII rendering
|
|
108
|
+
try {
|
|
109
|
+
const asciiResult = renderAscii(diagram.source, {
|
|
110
|
+
useAscii: !capabilities.unicode
|
|
111
|
+
});
|
|
112
|
+
if (asciiResult) {
|
|
113
|
+
return {
|
|
114
|
+
text: asciiResult,
|
|
115
|
+
mime: "text/plain",
|
|
116
|
+
warnings
|
|
117
|
+
};
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
catch (error) {
|
|
121
|
+
warnings.push(`ASCII rendering failed: ${errorMessage(error)}`);
|
|
122
|
+
}
|
|
123
|
+
warnings.push("terminal does not support inline images and ASCII rendering failed");
|
|
124
|
+
return {
|
|
125
|
+
text: "Unable to render diagram. Use `mermkit render` to generate SVG/PNG artifacts.",
|
|
126
|
+
warnings
|
|
127
|
+
};
|
|
128
|
+
}
|
|
129
|
+
async function renderWithAscii(diagram, options) {
|
|
130
|
+
const asciiOptions = options.ascii ?? {};
|
|
131
|
+
const result = renderAscii(diagram.source, asciiOptions);
|
|
132
|
+
if (!result) {
|
|
133
|
+
throw new Error("ASCII rendering failed: unable to parse diagram");
|
|
134
|
+
}
|
|
135
|
+
return {
|
|
136
|
+
bytes: new TextEncoder().encode(result),
|
|
137
|
+
mime: "text/plain",
|
|
138
|
+
warnings: []
|
|
139
|
+
};
|
|
140
|
+
}
|
|
141
|
+
function renderStubSvg(source, options) {
|
|
142
|
+
const lines = source.split("\n");
|
|
143
|
+
const fontSize = 14;
|
|
144
|
+
const lineHeight = 18;
|
|
145
|
+
const padding = 16;
|
|
146
|
+
const maxLen = Math.max(1, ...lines.map((line) => line.length));
|
|
147
|
+
const width = padding * 2 + maxLen * 8;
|
|
148
|
+
const height = padding * 2 + lines.length * lineHeight;
|
|
149
|
+
const background = options.background ?? "transparent";
|
|
150
|
+
const textLines = lines
|
|
151
|
+
.map((line, index) => {
|
|
152
|
+
const y = padding + (index + 1) * lineHeight;
|
|
153
|
+
return `<text x="${padding}" y="${y}">${escapeXml(line)}</text>`;
|
|
154
|
+
})
|
|
155
|
+
.join("");
|
|
156
|
+
return `<?xml version="1.0" encoding="UTF-8"?>\n` +
|
|
157
|
+
`<svg xmlns="http://www.w3.org/2000/svg" width="${width}" height="${height}" viewBox="0 0 ${width} ${height}">` +
|
|
158
|
+
`<style>text{font-family:ui-monospace,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;font-size:${fontSize}px;fill:#111}</style>` +
|
|
159
|
+
(background === "transparent" ? "" : `<rect width="100%" height="100%" fill="${escapeXml(background)}"/>`) +
|
|
160
|
+
textLines +
|
|
161
|
+
`</svg>`;
|
|
162
|
+
}
|
|
163
|
+
function escapeXml(value) {
|
|
164
|
+
return value
|
|
165
|
+
.replace(/&/g, "&")
|
|
166
|
+
.replace(/</g, "<")
|
|
167
|
+
.replace(/>/g, ">")
|
|
168
|
+
.replace(/"/g, """)
|
|
169
|
+
.replace(/'/g, "'");
|
|
170
|
+
}
|
|
171
|
+
async function renderPngFromSvg(svg) {
|
|
172
|
+
let sharpModule;
|
|
173
|
+
try {
|
|
174
|
+
sharpModule = await import("sharp");
|
|
175
|
+
}
|
|
176
|
+
catch (error) {
|
|
177
|
+
throw new Error("PNG rendering requires optional dependency 'sharp'");
|
|
178
|
+
}
|
|
179
|
+
const sharp = sharpModule.default ?? sharpModule;
|
|
180
|
+
const buffer = await sharp(Buffer.from(svg))
|
|
181
|
+
.png()
|
|
182
|
+
.toBuffer();
|
|
183
|
+
return {
|
|
184
|
+
bytes: new Uint8Array(buffer),
|
|
185
|
+
mime: "image/png",
|
|
186
|
+
warnings: []
|
|
187
|
+
};
|
|
188
|
+
}
|
|
189
|
+
async function renderWithStub(diagram, options) {
|
|
190
|
+
const warnings = ["stub renderer: Mermaid rendering not implemented yet"];
|
|
191
|
+
if (options.format === "svg") {
|
|
192
|
+
const svg = renderStubSvg(diagram.source, options);
|
|
193
|
+
return {
|
|
194
|
+
bytes: new TextEncoder().encode(svg),
|
|
195
|
+
mime: "image/svg+xml",
|
|
196
|
+
warnings
|
|
197
|
+
};
|
|
198
|
+
}
|
|
199
|
+
if (options.format === "png") {
|
|
200
|
+
const svg = renderStubSvg(diagram.source, options);
|
|
201
|
+
const result = await renderPngFromSvg(svg);
|
|
202
|
+
result.warnings = warnings;
|
|
203
|
+
return result;
|
|
204
|
+
}
|
|
205
|
+
throw new Error("PDF rendering not implemented yet");
|
|
206
|
+
}
|
|
207
|
+
async function renderWithMmdc(diagram, options) {
|
|
208
|
+
const tmpRoot = await mkdtemp(join(tmpdir(), "mermkit-"));
|
|
209
|
+
const inputPath = join(tmpRoot, "diagram.mmd");
|
|
210
|
+
const outputPath = join(tmpRoot, `diagram.${options.format}`);
|
|
211
|
+
const warnings = [];
|
|
212
|
+
try {
|
|
213
|
+
await writeFile(inputPath, diagram.source, "utf8");
|
|
214
|
+
const args = ["-i", inputPath, "-o", outputPath];
|
|
215
|
+
const theme = resolveMmdcTheme(options.theme, warnings);
|
|
216
|
+
if (theme)
|
|
217
|
+
args.push("-t", theme);
|
|
218
|
+
if (options.background)
|
|
219
|
+
args.push("-b", options.background);
|
|
220
|
+
if (options.scale)
|
|
221
|
+
args.push("-s", String(options.scale));
|
|
222
|
+
const binary = await resolveMmdcBinary();
|
|
223
|
+
await runProcess(binary, args);
|
|
224
|
+
const bytes = await readFile(outputPath);
|
|
225
|
+
return {
|
|
226
|
+
bytes: new Uint8Array(bytes),
|
|
227
|
+
mime: mimeFor(options.format),
|
|
228
|
+
warnings
|
|
229
|
+
};
|
|
230
|
+
}
|
|
231
|
+
finally {
|
|
232
|
+
await rm(tmpRoot, { recursive: true, force: true });
|
|
233
|
+
}
|
|
234
|
+
}
|
|
235
|
+
async function renderWithEmbedded(diagram, options) {
|
|
236
|
+
const warnings = [];
|
|
237
|
+
const { mermaid, JSDOM, dompurify } = await resolveEmbeddedDeps();
|
|
238
|
+
const dom = new JSDOM(`<!DOCTYPE html><html><body></body></html>`, { pretendToBeVisual: true });
|
|
239
|
+
const restore = setDomGlobals(dom);
|
|
240
|
+
try {
|
|
241
|
+
if (dompurify) {
|
|
242
|
+
const createDOMPurify = dompurify.default ?? dompurify;
|
|
243
|
+
globalThis.DOMPurify = createDOMPurify(dom.window);
|
|
244
|
+
}
|
|
245
|
+
const mermaidApi = mermaid.default ?? mermaid;
|
|
246
|
+
const theme = resolveEmbeddedTheme(options.theme, warnings);
|
|
247
|
+
const config = {
|
|
248
|
+
startOnLoad: false,
|
|
249
|
+
securityLevel: "strict",
|
|
250
|
+
theme,
|
|
251
|
+
deterministicIds: true,
|
|
252
|
+
deterministicSeed: diagram.id,
|
|
253
|
+
flowchart: { useMaxWidth: false }
|
|
254
|
+
};
|
|
255
|
+
mermaidApi.initialize(config);
|
|
256
|
+
if (options.scale && options.scale !== 1) {
|
|
257
|
+
warnings.push("embedded renderer: scale is not implemented yet");
|
|
258
|
+
}
|
|
259
|
+
const id = `mermkit-${diagram.id.replace(/[^a-zA-Z0-9_-]/g, "")}`;
|
|
260
|
+
const { svg } = await mermaidApi.render(id, diagram.source);
|
|
261
|
+
let svgOut = svg;
|
|
262
|
+
if (options.background && options.background !== "transparent") {
|
|
263
|
+
svgOut = applyBackground(svgOut, options.background);
|
|
264
|
+
}
|
|
265
|
+
if (options.format === "svg") {
|
|
266
|
+
return {
|
|
267
|
+
bytes: new TextEncoder().encode(svgOut),
|
|
268
|
+
mime: "image/svg+xml",
|
|
269
|
+
warnings
|
|
270
|
+
};
|
|
271
|
+
}
|
|
272
|
+
if (options.format === "png") {
|
|
273
|
+
const result = await renderPngFromSvg(svgOut);
|
|
274
|
+
result.warnings = warnings;
|
|
275
|
+
return result;
|
|
276
|
+
}
|
|
277
|
+
if (options.format === "pdf") {
|
|
278
|
+
const result = await renderPdfFromSvg(svgOut);
|
|
279
|
+
result.warnings = warnings;
|
|
280
|
+
return result;
|
|
281
|
+
}
|
|
282
|
+
throw new Error("unsupported format");
|
|
283
|
+
}
|
|
284
|
+
finally {
|
|
285
|
+
restore();
|
|
286
|
+
}
|
|
287
|
+
}
|
|
288
|
+
function resolveMmdcTheme(theme, warnings) {
|
|
289
|
+
if (!theme || theme === "light")
|
|
290
|
+
return "default";
|
|
291
|
+
if (theme === "dark")
|
|
292
|
+
return "dark";
|
|
293
|
+
warnings.push("custom theme is not supported yet; using default theme");
|
|
294
|
+
return "default";
|
|
295
|
+
}
|
|
296
|
+
function resolveEmbeddedTheme(theme, warnings) {
|
|
297
|
+
if (!theme || theme === "light")
|
|
298
|
+
return "default";
|
|
299
|
+
if (theme === "dark")
|
|
300
|
+
return "dark";
|
|
301
|
+
warnings.push("custom theme is not supported yet; using default theme");
|
|
302
|
+
return "default";
|
|
303
|
+
}
|
|
304
|
+
function mimeFor(format) {
|
|
305
|
+
switch (format) {
|
|
306
|
+
case "svg":
|
|
307
|
+
return "image/svg+xml";
|
|
308
|
+
case "png":
|
|
309
|
+
return "image/png";
|
|
310
|
+
case "pdf":
|
|
311
|
+
return "application/pdf";
|
|
312
|
+
case "ascii":
|
|
313
|
+
return "text/plain";
|
|
314
|
+
}
|
|
315
|
+
}
|
|
316
|
+
async function resolveMmdcBinary() {
|
|
317
|
+
const envPath = process.env.MERMKIT_MMDC_PATH;
|
|
318
|
+
if (envPath)
|
|
319
|
+
return envPath;
|
|
320
|
+
const candidates = [];
|
|
321
|
+
const repoRoot = guessRepoRoot();
|
|
322
|
+
if (repoRoot) {
|
|
323
|
+
candidates.push(join(repoRoot, "node_modules", ".bin", "mmdc"));
|
|
324
|
+
}
|
|
325
|
+
candidates.push(join(process.cwd(), "node_modules", ".bin", "mmdc"));
|
|
326
|
+
candidates.push("mmdc");
|
|
327
|
+
for (const candidate of candidates) {
|
|
328
|
+
try {
|
|
329
|
+
await runProcess(candidate, ["-h"], { dryRun: true });
|
|
330
|
+
return candidate;
|
|
331
|
+
}
|
|
332
|
+
catch {
|
|
333
|
+
continue;
|
|
334
|
+
}
|
|
335
|
+
}
|
|
336
|
+
throw new Error("mmdc not found. Install @mermaid-js/mermaid-cli or set MERMKIT_MMDC_PATH");
|
|
337
|
+
}
|
|
338
|
+
function guessRepoRoot() {
|
|
339
|
+
const current = fileURLToPath(import.meta.url);
|
|
340
|
+
const currentDir = dirname(current);
|
|
341
|
+
const repoRoot = join(currentDir, "..", "..", "..");
|
|
342
|
+
return repoRoot;
|
|
343
|
+
}
|
|
344
|
+
function runProcess(command, args, options = {}) {
|
|
345
|
+
return new Promise((resolve, reject) => {
|
|
346
|
+
const child = spawn(command, args, { stdio: options.dryRun ? "ignore" : "pipe" });
|
|
347
|
+
if (options.dryRun) {
|
|
348
|
+
child.on("close", (code) => {
|
|
349
|
+
if (code === 0)
|
|
350
|
+
resolve();
|
|
351
|
+
else
|
|
352
|
+
reject(new Error(`${command} exited with code ${code}`));
|
|
353
|
+
});
|
|
354
|
+
child.on("error", (error) => reject(error));
|
|
355
|
+
return;
|
|
356
|
+
}
|
|
357
|
+
let stderr = "";
|
|
358
|
+
if (child.stderr) {
|
|
359
|
+
child.stderr.on("data", (chunk) => {
|
|
360
|
+
stderr += chunk.toString();
|
|
361
|
+
});
|
|
362
|
+
}
|
|
363
|
+
child.on("close", (code) => {
|
|
364
|
+
if (code === 0)
|
|
365
|
+
resolve();
|
|
366
|
+
else
|
|
367
|
+
reject(new Error(`${command} exited with code ${code}: ${stderr.trim()}`));
|
|
368
|
+
});
|
|
369
|
+
child.on("error", (error) => reject(error));
|
|
370
|
+
});
|
|
371
|
+
}
|
|
372
|
+
function errorMessage(error) {
|
|
373
|
+
if (error instanceof Error)
|
|
374
|
+
return error.message;
|
|
375
|
+
return String(error);
|
|
376
|
+
}
|
|
377
|
+
async function renderPdfFromSvg(svg) {
|
|
378
|
+
let sharpModule;
|
|
379
|
+
try {
|
|
380
|
+
sharpModule = await import("sharp");
|
|
381
|
+
}
|
|
382
|
+
catch {
|
|
383
|
+
throw new Error("PDF rendering requires optional dependency 'sharp'");
|
|
384
|
+
}
|
|
385
|
+
const sharp = sharpModule.default ?? sharpModule;
|
|
386
|
+
const buffer = await sharp(Buffer.from(svg))
|
|
387
|
+
.pdf()
|
|
388
|
+
.toBuffer();
|
|
389
|
+
return {
|
|
390
|
+
bytes: new Uint8Array(buffer),
|
|
391
|
+
mime: "application/pdf",
|
|
392
|
+
warnings: []
|
|
393
|
+
};
|
|
394
|
+
}
|
|
395
|
+
function applyBackground(svg, background) {
|
|
396
|
+
const svgStart = svg.indexOf("<svg");
|
|
397
|
+
if (svgStart === -1)
|
|
398
|
+
return svg;
|
|
399
|
+
const tagEnd = svg.indexOf(">", svgStart);
|
|
400
|
+
if (tagEnd === -1)
|
|
401
|
+
return svg;
|
|
402
|
+
const insert = `<rect width="100%" height="100%" fill="${escapeXml(background)}"/>`;
|
|
403
|
+
return `${svg.slice(0, tagEnd + 1)}${insert}${svg.slice(tagEnd + 1)}`;
|
|
404
|
+
}
|
|
405
|
+
async function resolveEmbeddedDeps() {
|
|
406
|
+
let mermaid;
|
|
407
|
+
let JSDOM;
|
|
408
|
+
let dompurify;
|
|
409
|
+
try {
|
|
410
|
+
mermaid = await import("mermaid");
|
|
411
|
+
}
|
|
412
|
+
catch {
|
|
413
|
+
throw new Error("embedded renderer requires dependency 'mermaid'");
|
|
414
|
+
}
|
|
415
|
+
try {
|
|
416
|
+
const jsdomModule = await import("jsdom");
|
|
417
|
+
JSDOM = jsdomModule.JSDOM;
|
|
418
|
+
}
|
|
419
|
+
catch {
|
|
420
|
+
throw new Error("embedded renderer requires dependency 'jsdom'");
|
|
421
|
+
}
|
|
422
|
+
try {
|
|
423
|
+
dompurify = await import("dompurify");
|
|
424
|
+
}
|
|
425
|
+
catch {
|
|
426
|
+
dompurify = undefined;
|
|
427
|
+
}
|
|
428
|
+
return { mermaid, JSDOM, dompurify };
|
|
429
|
+
}
|
|
430
|
+
function setDomGlobals(dom) {
|
|
431
|
+
const g = globalThis;
|
|
432
|
+
const previous = {
|
|
433
|
+
window: g.window,
|
|
434
|
+
document: g.document,
|
|
435
|
+
navigator: g.navigator,
|
|
436
|
+
DOMParser: g.DOMParser,
|
|
437
|
+
XMLSerializer: g.XMLSerializer,
|
|
438
|
+
Node: g.Node,
|
|
439
|
+
Element: g.Element,
|
|
440
|
+
SVGElement: g.SVGElement,
|
|
441
|
+
DOMPurify: g.DOMPurify
|
|
442
|
+
};
|
|
443
|
+
const window = dom.window;
|
|
444
|
+
g.window = window;
|
|
445
|
+
g.document = window.document;
|
|
446
|
+
g.navigator = window.navigator;
|
|
447
|
+
g.DOMParser = window.DOMParser;
|
|
448
|
+
g.XMLSerializer = window.XMLSerializer;
|
|
449
|
+
g.Node = window.Node;
|
|
450
|
+
g.Element = window.Element;
|
|
451
|
+
g.SVGElement = window.SVGElement;
|
|
452
|
+
return () => {
|
|
453
|
+
g.window = previous.window;
|
|
454
|
+
g.document = previous.document;
|
|
455
|
+
g.navigator = previous.navigator;
|
|
456
|
+
g.DOMParser = previous.DOMParser;
|
|
457
|
+
g.XMLSerializer = previous.XMLSerializer;
|
|
458
|
+
g.Node = previous.Node;
|
|
459
|
+
g.Element = previous.Element;
|
|
460
|
+
g.SVGElement = previous.SVGElement;
|
|
461
|
+
g.DOMPurify = previous.DOMPurify;
|
|
462
|
+
};
|
|
463
|
+
}
|
|
464
|
+
function encodeIterm2InlinePng(png, filename = "diagram.png") {
|
|
465
|
+
const base64 = Buffer.from(png).toString("base64");
|
|
466
|
+
const name = Buffer.from(filename).toString("base64");
|
|
467
|
+
return `\u001b]1337;File=name=${name};size=${png.length};inline=1:${base64}\u0007\n`;
|
|
468
|
+
}
|
|
469
|
+
function encodeKittyInlinePng(png) {
|
|
470
|
+
const base64 = Buffer.from(png).toString("base64");
|
|
471
|
+
const chunkSize = 4096;
|
|
472
|
+
let out = "";
|
|
473
|
+
for (let i = 0; i < base64.length; i += chunkSize) {
|
|
474
|
+
const chunk = base64.slice(i, i + chunkSize);
|
|
475
|
+
const more = i + chunkSize < base64.length ? 1 : 0;
|
|
476
|
+
const prefix = i === 0 ? "a=T,f=100,t=d" : "";
|
|
477
|
+
const params = prefix ? `${prefix},m=${more}` : `m=${more}`;
|
|
478
|
+
out += `\u001b_G${params};${chunk}\u001b\\`;
|
|
479
|
+
}
|
|
480
|
+
return `${out}\n`;
|
|
481
|
+
}
|
|
482
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/package.json
ADDED
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@mermkit/render",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"type": "module",
|
|
5
|
+
"main": "dist/index.js",
|
|
6
|
+
"types": "dist/index.d.ts",
|
|
7
|
+
"exports": {
|
|
8
|
+
".": "./dist/index.js"
|
|
9
|
+
},
|
|
10
|
+
"files": [
|
|
11
|
+
"dist"
|
|
12
|
+
],
|
|
13
|
+
"scripts": {
|
|
14
|
+
"build": "tsc -b"
|
|
15
|
+
},
|
|
16
|
+
"dependencies": {
|
|
17
|
+
"@mermkit/core": "0.1.0"
|
|
18
|
+
},
|
|
19
|
+
"optionalDependencies": {
|
|
20
|
+
"dompurify": "^3.1.5",
|
|
21
|
+
"jsdom": "^24.1.0",
|
|
22
|
+
"mermaid": "^10.9.5",
|
|
23
|
+
"sharp": "^0.33.4"
|
|
24
|
+
}
|
|
25
|
+
}
|