@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,427 @@
1
+ import { arch, platform } from "node:os";
2
+ import { deflateSync, inflateSync } from "node:zlib";
3
+ import { calloutHtmlBlockRenderer } from "./callout.js";
4
+ import { equationHtmlBlockRenderer } from "./equation.js";
5
+ import { assetManifestHash } from "./assets.js";
6
+ import { artifactBytesHash, canonicalJson, sha256 } from "./hash.js";
7
+ import { CHROME_HEADLESS_SHELL_VERSION, launchPinnedBrowser, throwIfDeniedBrowserRequest, } from "./mermaid-browser.js";
8
+ import { mermaidHtmlBlockRenderer } from "./mermaid.js";
9
+ import { tableHtmlBlockRenderer } from "./table.js";
10
+ export const PNG_RENDERER_ID = "png";
11
+ export const PNG_RENDERER_VERSION = "1.0.0";
12
+ export const PNG_MIME_TYPE = "image/png";
13
+ export const PNG_PROFILE = "azeforge.png.continuous/v1";
14
+ export const PNG_SERIALIZER = "azeforge-png/v1";
15
+ export const PNG_DEVICE_SCALE_FACTOR = 2;
16
+ export const PNG_MAX_BYTES = 64 * 1024 * 1024;
17
+ export const PNG_MAX_CSS_HEIGHT_PX = 100_000;
18
+ export const PNG_MAX_PIXEL_DIMENSION = 32_768;
19
+ export const PNG_MAX_PIXELS = 50_000_000;
20
+ const PNG_SRGB_INTENT = 0;
21
+ const PNG_DEFLATE_LEVEL = 9;
22
+ export const PNG_REQUIRED_CAPABILITIES = Object.freeze([
23
+ "png-continuous",
24
+ "srgb",
25
+ ]);
26
+ const ALLOWED_REQUEST = /^(?:about:blank|data:(?:font\/woff2|image\/(?:png|jpeg|svg\+xml));base64,)/;
27
+ const PNG_SIGNATURE = Object.freeze([137, 80, 78, 71, 13, 10, 26, 10]);
28
+ function pngBlockRenderer(renderer) {
29
+ return Object.freeze({
30
+ descriptor: Object.freeze({
31
+ ...renderer.descriptor,
32
+ id: renderer.descriptor.id.replace(".html/", ".png/"),
33
+ rendererId: PNG_RENDERER_ID,
34
+ }),
35
+ render: renderer.render,
36
+ });
37
+ }
38
+ export const pngBlockRenderers = Object.freeze([
39
+ pngBlockRenderer(equationHtmlBlockRenderer),
40
+ pngBlockRenderer(calloutHtmlBlockRenderer),
41
+ pngBlockRenderer(mermaidHtmlBlockRenderer),
42
+ pngBlockRenderer(tableHtmlBlockRenderer),
43
+ ]);
44
+ export const pinnedPngBrowserCapability = Object.freeze({
45
+ launch: launchPinnedBrowser,
46
+ });
47
+ export const pngRendererDescriptor = Object.freeze({
48
+ id: PNG_RENDERER_ID,
49
+ version: PNG_RENDERER_VERSION,
50
+ formats: Object.freeze(["png"]),
51
+ capabilities: Object.freeze(["browser"]),
52
+ });
53
+ export class PngArtifactLimitError extends Error {
54
+ byteLength;
55
+ constructor(byteLength) {
56
+ super(`PNG Artifact is ${byteLength} bytes; the limit is ${PNG_MAX_BYTES} bytes.`);
57
+ this.name = "PngArtifactLimitError";
58
+ this.byteLength = byteLength;
59
+ }
60
+ }
61
+ const CRC_TABLE = (() => {
62
+ const table = new Uint32Array(256);
63
+ for (let value = 0; value < 256; value += 1) {
64
+ let entry = value;
65
+ for (let bit = 0; bit < 8; bit += 1) {
66
+ entry = entry % 2 === 0 ? entry >>> 1 : (entry >>> 1) ^ 0xedb88320;
67
+ }
68
+ table[value] = entry >>> 0;
69
+ }
70
+ return table;
71
+ })();
72
+ function crc32(bytes) {
73
+ let crc = 0xff_ff_ff_ff;
74
+ for (const byte of bytes) {
75
+ crc = CRC_TABLE[(crc ^ byte) & 0xff] ^ (crc >>> 8);
76
+ }
77
+ return (crc ^ 0xff_ff_ff_ff) >>> 0;
78
+ }
79
+ function readU32BE(bytes, offset) {
80
+ return ((bytes[offset] * 0x1_00_00_00 +
81
+ (bytes[offset + 1] << 16) +
82
+ (bytes[offset + 2] << 8) +
83
+ bytes[offset + 3]) >>>
84
+ 0);
85
+ }
86
+ function writeU32BE(value) {
87
+ return Uint8Array.from([
88
+ (value >>> 24) & 0xff,
89
+ (value >>> 16) & 0xff,
90
+ (value >>> 8) & 0xff,
91
+ value & 0xff,
92
+ ]);
93
+ }
94
+ function chunkType(bytes, offset) {
95
+ return String.fromCharCode(bytes[offset], bytes[offset + 1], bytes[offset + 2], bytes[offset + 3]);
96
+ }
97
+ function buildChunk(type, data) {
98
+ const typeBytes = Uint8Array.from([
99
+ type.charCodeAt(0),
100
+ type.charCodeAt(1),
101
+ type.charCodeAt(2),
102
+ type.charCodeAt(3),
103
+ ]);
104
+ const combined = new Uint8Array(typeBytes.length + data.length);
105
+ combined.set(typeBytes, 0);
106
+ combined.set(data, typeBytes.length);
107
+ const out = new Uint8Array(12 + data.length);
108
+ out.set(writeU32BE(data.length), 0);
109
+ out.set(combined, 4);
110
+ out.set(writeU32BE(crc32(combined)), 8 + data.length);
111
+ return out;
112
+ }
113
+ function bytesPerPixel(colorType) {
114
+ if (colorType === 2)
115
+ return 3;
116
+ if (colorType === 6)
117
+ return 4;
118
+ return undefined;
119
+ }
120
+ function paethPredictor(left, above, aboveLeft) {
121
+ const estimate = left + above - aboveLeft;
122
+ const distanceLeft = Math.abs(estimate - left);
123
+ const distanceAbove = Math.abs(estimate - above);
124
+ const distanceAboveLeft = Math.abs(estimate - aboveLeft);
125
+ if (distanceLeft <= distanceAbove && distanceLeft <= distanceAboveLeft) {
126
+ return left;
127
+ }
128
+ if (distanceAbove <= distanceAboveLeft)
129
+ return above;
130
+ return aboveLeft;
131
+ }
132
+ function unfilterScanlines(filtered, width, height, stride) {
133
+ const rowLength = 1 + stride * width;
134
+ if (filtered.length !== rowLength * height) {
135
+ throw new Error("The PNG pixel data does not match its IHDR dimensions.");
136
+ }
137
+ const raw = new Uint8Array(stride * width * height);
138
+ let previous = new Uint8Array(stride * width);
139
+ for (let row = 0; row < height; row += 1) {
140
+ const filter = filtered[row * rowLength];
141
+ if (filter > 4) {
142
+ throw new Error("The PNG filter method is unsupported.");
143
+ }
144
+ const current = new Uint8Array(stride * width);
145
+ for (let index = 0; index < stride * width; index += 1) {
146
+ const filteredByte = filtered[row * rowLength + 1 + index];
147
+ const left = index < stride ? 0 : current[index - stride];
148
+ const above = previous[index];
149
+ const aboveLeft = index < stride ? 0 : previous[index - stride];
150
+ let restored;
151
+ if (filter === 0)
152
+ restored = filteredByte;
153
+ else if (filter === 1)
154
+ restored = filteredByte + left;
155
+ else if (filter === 2)
156
+ restored = filteredByte + above;
157
+ else if (filter === 3)
158
+ restored = filteredByte + ((left + above) >> 1);
159
+ else
160
+ restored = filteredByte + paethPredictor(left, above, aboveLeft);
161
+ current[index] = restored & 0xff;
162
+ }
163
+ raw.set(current, row * stride * width);
164
+ previous = current;
165
+ }
166
+ return raw;
167
+ }
168
+ /**
169
+ * Deterministic PNG normalization: keeps the IHDR geometry, strips every
170
+ * unstable or private ancillary chunk, emits one fixed sRGB chunk, and
171
+ * re-encodes IDAT with fixed filtering and compression. Same decoded
172
+ * pixels always produce identical bytes.
173
+ */
174
+ export function normalizePng(bytes) {
175
+ for (let index = 0; index < PNG_SIGNATURE.length; index += 1) {
176
+ if (bytes[index] !== PNG_SIGNATURE[index]) {
177
+ throw new Error("The PNG signature is invalid.");
178
+ }
179
+ }
180
+ let offset = 8;
181
+ let ihdr;
182
+ const idatParts = [];
183
+ let idatLength = 0;
184
+ while (offset + 8 <= bytes.length) {
185
+ const length = readU32BE(bytes, offset);
186
+ const type = chunkType(bytes, offset + 4);
187
+ const end = offset + 12 + length;
188
+ if (end > bytes.length) {
189
+ throw new Error("The PNG chunk extends past the end of the file.");
190
+ }
191
+ const data = bytes.slice(offset + 8, offset + 8 + length);
192
+ const expectedCrc = readU32BE(bytes, offset + 8 + length);
193
+ const actualCrc = crc32(bytes.slice(offset + 4, offset + 8 + length));
194
+ if (expectedCrc !== actualCrc) {
195
+ throw new Error(`The PNG ${type} chunk failed its integrity check.`);
196
+ }
197
+ if (type === "IHDR") {
198
+ if (ihdr !== undefined)
199
+ throw new Error("The PNG has more than one IHDR chunk.");
200
+ if (length !== 13)
201
+ throw new Error("The PNG IHDR chunk is malformed.");
202
+ ihdr = data.slice();
203
+ }
204
+ else if (type === "IDAT") {
205
+ idatParts.push(data.slice());
206
+ idatLength += data.length;
207
+ }
208
+ else if (type === "acTL" || type === "fcTL" || type === "fdAT") {
209
+ throw new Error("Animated PNG output is not supported.");
210
+ }
211
+ else if (type === "IEND") {
212
+ break;
213
+ }
214
+ offset = end;
215
+ }
216
+ if (ihdr === undefined)
217
+ throw new Error("The PNG is missing its IHDR chunk.");
218
+ const width = readU32BE(ihdr, 0);
219
+ const height = readU32BE(ihdr, 4);
220
+ const bitDepth = ihdr[8];
221
+ const colorType = ihdr[9];
222
+ if (!Number.isInteger(width) ||
223
+ !Number.isInteger(height) ||
224
+ width <= 0 ||
225
+ height <= 0 ||
226
+ width > PNG_MAX_PIXEL_DIMENSION ||
227
+ height > PNG_MAX_PIXEL_DIMENSION ||
228
+ width * height > PNG_MAX_PIXELS) {
229
+ throw new PngArtifactLimitError(bytes.byteLength);
230
+ }
231
+ if (bitDepth !== 8)
232
+ throw new Error("Only 8-bit PNG output is supported.");
233
+ const stride = bytesPerPixel(colorType);
234
+ if (stride === undefined) {
235
+ throw new Error("Only truecolor PNG output is supported.");
236
+ }
237
+ const compressed = new Uint8Array(idatLength);
238
+ let written = 0;
239
+ for (const part of idatParts) {
240
+ compressed.set(part, written);
241
+ written += part.length;
242
+ }
243
+ let filtered;
244
+ try {
245
+ filtered = Uint8Array.from(inflateSync(Buffer.from(compressed)));
246
+ }
247
+ catch {
248
+ throw new Error("The PNG pixel data could not be decoded.");
249
+ }
250
+ const raw = unfilterScanlines(filtered, width, height, stride);
251
+ const refiltered = new Uint8Array((1 + stride * width) * height);
252
+ for (let row = 0; row < height; row += 1) {
253
+ refiltered[row * (1 + stride * width)] = 0;
254
+ refiltered.set(raw.slice(row * stride * width, (row + 1) * stride * width), row * (1 + stride * width) + 1);
255
+ }
256
+ const recompressed = Uint8Array.from(deflateSync(Buffer.from(refiltered), { level: PNG_DEFLATE_LEVEL }));
257
+ const parts = [
258
+ Uint8Array.from(PNG_SIGNATURE),
259
+ buildChunk("IHDR", ihdr),
260
+ buildChunk("sRGB", Uint8Array.from([PNG_SRGB_INTENT])),
261
+ buildChunk("IDAT", recompressed),
262
+ buildChunk("IEND", new Uint8Array(0)),
263
+ ];
264
+ const total = parts.reduce((sum, part) => sum + part.length, 0);
265
+ if (total > PNG_MAX_BYTES)
266
+ throw new PngArtifactLimitError(total);
267
+ const out = new Uint8Array(total);
268
+ let position = 0;
269
+ for (const part of parts) {
270
+ out.set(part, position);
271
+ position += part.length;
272
+ }
273
+ return out;
274
+ }
275
+ function settlePageHtml(layout) {
276
+ return `<!doctype html><html lang="und"><head><meta charset="utf-8"><style>${layout.css}*{animation:none!important;transition:none!important;caret-color:transparent!important}</style></head><body>${layout.body}</body></html>`;
277
+ }
278
+ async function measureSettledLayout(browser, layout, width) {
279
+ const context = await browser.createBrowserContext();
280
+ try {
281
+ const page = await context.newPage();
282
+ await page.setViewport({ width, height: 1, deviceScaleFactor: 1 });
283
+ let deniedRequest;
284
+ await page.setRequestInterception(true);
285
+ page.on("request", (request) => {
286
+ const url = request.url();
287
+ if (ALLOWED_REQUEST.test(url)) {
288
+ void request.continue();
289
+ }
290
+ else {
291
+ deniedRequest ??= url;
292
+ void request.abort("blockedbyclient");
293
+ }
294
+ });
295
+ await page.setContent(settlePageHtml(layout), {
296
+ waitUntil: "domcontentloaded",
297
+ });
298
+ const heights = await page.evaluate(async () => {
299
+ await document.fonts.ready;
300
+ await Promise.all([...document.images].map((image) => image.complete ? Promise.resolve() : image.decode()));
301
+ const measure = () => Math.ceil(Math.max(document.body.scrollHeight, document.body.getBoundingClientRect().height));
302
+ await new Promise((resolve) => requestAnimationFrame(() => resolve()));
303
+ const first = measure();
304
+ await new Promise((resolve) => requestAnimationFrame(() => resolve()));
305
+ return [first, measure()];
306
+ });
307
+ throwIfDeniedBrowserRequest(deniedRequest);
308
+ const [first, second] = heights;
309
+ if (first === undefined ||
310
+ second === undefined ||
311
+ first !== second ||
312
+ !Number.isFinite(second) ||
313
+ second <= 0 ||
314
+ second > PNG_MAX_CSS_HEIGHT_PX) {
315
+ throw new Error("The XHTML layout did not settle to finite controlled geometry.");
316
+ }
317
+ return second;
318
+ }
319
+ finally {
320
+ await context.close();
321
+ }
322
+ }
323
+ async function captureContinuousScreenshot(browser, layout, widthCss, heightCss) {
324
+ const context = await browser.createBrowserContext();
325
+ try {
326
+ const page = await context.newPage();
327
+ await page.setViewport({
328
+ width: widthCss,
329
+ height: heightCss,
330
+ deviceScaleFactor: PNG_DEVICE_SCALE_FACTOR,
331
+ });
332
+ let deniedRequest;
333
+ await page.setRequestInterception(true);
334
+ page.on("request", (request) => {
335
+ const url = request.url();
336
+ if (ALLOWED_REQUEST.test(url)) {
337
+ void request.continue();
338
+ }
339
+ else {
340
+ deniedRequest ??= url;
341
+ void request.abort("blockedbyclient");
342
+ }
343
+ });
344
+ await page.setContent(settlePageHtml(layout), {
345
+ waitUntil: "domcontentloaded",
346
+ });
347
+ const settled = await page.evaluate(async () => {
348
+ await document.fonts.ready;
349
+ await Promise.all([...document.images].map((image) => image.complete ? Promise.resolve() : image.decode()));
350
+ const measure = () => Math.ceil(Math.max(document.body.scrollHeight, document.body.getBoundingClientRect().height));
351
+ await new Promise((resolve) => requestAnimationFrame(() => resolve()));
352
+ const first = measure();
353
+ await new Promise((resolve) => requestAnimationFrame(() => resolve()));
354
+ return [first, measure()];
355
+ });
356
+ throwIfDeniedBrowserRequest(deniedRequest);
357
+ const [first, second] = settled;
358
+ if (first !== heightCss || second !== heightCss) {
359
+ throw new Error("The XHTML layout did not settle to finite controlled geometry.");
360
+ }
361
+ const screenshot = await page.screenshot({
362
+ type: "png",
363
+ captureBeyondViewport: false,
364
+ });
365
+ return Uint8Array.from(screenshot);
366
+ }
367
+ finally {
368
+ await context.close();
369
+ }
370
+ }
371
+ export async function renderPng(layout, contentHash, theme, assetManifest, browserCapability) {
372
+ const widthCss = theme.geometry.canvasWidthPx;
373
+ if (!Number.isInteger(widthCss) || widthCss <= 0) {
374
+ throw new Error("The XHTML layout did not settle to finite controlled geometry.");
375
+ }
376
+ const browser = await browserCapability.launch();
377
+ let raw;
378
+ let heightCss;
379
+ try {
380
+ heightCss = await measureSettledLayout(browser, layout, widthCss);
381
+ const widthPx = widthCss * PNG_DEVICE_SCALE_FACTOR;
382
+ const heightPx = heightCss * PNG_DEVICE_SCALE_FACTOR;
383
+ if (widthPx > PNG_MAX_PIXEL_DIMENSION ||
384
+ heightPx > PNG_MAX_PIXEL_DIMENSION ||
385
+ widthPx * heightPx > PNG_MAX_PIXELS) {
386
+ throw new PngArtifactLimitError(widthPx * heightPx * 4);
387
+ }
388
+ raw = await captureContinuousScreenshot(browser, layout, widthCss, heightCss);
389
+ }
390
+ finally {
391
+ await browser.close();
392
+ }
393
+ const bytes = normalizePng(raw);
394
+ const widthPx = widthCss * PNG_DEVICE_SCALE_FACTOR;
395
+ const heightPx = heightCss * PNG_DEVICE_SCALE_FACTOR;
396
+ const rendererFingerprint = sha256(canonicalJson({
397
+ renderer: {
398
+ id: PNG_RENDERER_ID,
399
+ version: PNG_RENDERER_VERSION,
400
+ serializer: PNG_SERIALIZER,
401
+ },
402
+ profile: PNG_PROFILE,
403
+ layoutEngine: `HeadlessChrome/${CHROME_HEADLESS_SHELL_VERSION}`,
404
+ deviceScaleFactor: PNG_DEVICE_SCALE_FACTOR,
405
+ platform: { os: platform(), architecture: arch() },
406
+ requiredCapabilities: PNG_REQUIRED_CAPABILITIES,
407
+ ...layout.fingerprintDependencies,
408
+ }));
409
+ return {
410
+ bytes,
411
+ metadata: {
412
+ format: "png",
413
+ mimeType: PNG_MIME_TYPE,
414
+ profile: PNG_PROFILE,
415
+ byteLength: bytes.byteLength,
416
+ contentHash,
417
+ assetManifestHash: assetManifestHash(assetManifest),
418
+ rendererFingerprint,
419
+ artifactHash: artifactBytesHash(bytes),
420
+ theme: { id: theme.id, version: theme.version },
421
+ cssDimensions: { ...theme.geometry },
422
+ pixelDimensions: { width: widthPx, height: heightPx },
423
+ requiredCapabilities: PNG_REQUIRED_CAPABILITIES,
424
+ },
425
+ };
426
+ }
427
+ //# sourceMappingURL=render-png.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"render-png.js","sourceRoot":"","sources":["../src/render-png.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,23 @@
1
+ import type { Browser } from "puppeteer-core";
2
+ import type { AnyBlockRenderer, Artifact, AssetManifestEntry, ContentHash, RendererDescriptor, Theme } from "./model.js";
3
+ import type { HtmlLayout } from "./render-html.js";
4
+ export declare const SVG_RENDERER_ID: "svg";
5
+ export declare const SVG_RENDERER_VERSION: "1.0.0";
6
+ export declare const SVG_MIME_TYPE: "image/svg+xml";
7
+ export declare const SVG_PROFILE: "azeforge.svg.foreign-object/v1";
8
+ export declare const SVG_SERIALIZER: "azeforge-svg/v1";
9
+ export declare const SVG_MAX_BYTES: number;
10
+ export declare const SVG_MAX_HEIGHT_PX = 100000;
11
+ export declare const SVG_REQUIRED_CAPABILITIES: readonly ["svg2", "xhtml-foreign-object"];
12
+ export declare const svgBlockRenderers: readonly AnyBlockRenderer[];
13
+ export interface SvgBrowserCapability {
14
+ readonly launch: () => Promise<Browser>;
15
+ }
16
+ export declare const pinnedSvgBrowserCapability: SvgBrowserCapability;
17
+ export declare const svgRendererDescriptor: RendererDescriptor;
18
+ export declare class SvgArtifactLimitError extends Error {
19
+ readonly byteLength: number;
20
+ constructor(byteLength: number);
21
+ }
22
+ export declare function sanitizeWholeDocumentSvg(svg: string): string;
23
+ export declare function renderSvg(layout: HtmlLayout, contentHash: ContentHash, theme: Theme, assetManifest: readonly AssetManifestEntry[], browserCapability: SvgBrowserCapability): Promise<Artifact>;