@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.
- package/LICENSE +21 -0
- package/README.md +408 -0
- package/dist/acceptance.d.ts +48 -0
- package/dist/acceptance.js +180 -0
- package/dist/acceptance.js.map +1 -0
- package/dist/assets.d.ts +19 -0
- package/dist/assets.js +509 -0
- package/dist/assets.js.map +1 -0
- package/dist/atomic-write.d.ts +1 -0
- package/dist/atomic-write.js +23 -0
- package/dist/atomic-write.js.map +1 -0
- package/dist/callout.d.ts +27 -0
- package/dist/callout.js +78 -0
- package/dist/callout.js.map +1 -0
- package/dist/capabilities-json.d.ts +4 -0
- package/dist/capabilities-json.js +225 -0
- package/dist/capabilities-json.js.map +1 -0
- package/dist/capabilities.d.ts +110 -0
- package/dist/capabilities.js +270 -0
- package/dist/capabilities.js.map +1 -0
- package/dist/cli.d.ts +2 -0
- package/dist/cli.js +1096 -0
- package/dist/cli.js.map +1 -0
- package/dist/compiler.d.ts +3 -0
- package/dist/compiler.js +1034 -0
- package/dist/compiler.js.map +1 -0
- package/dist/configuration-error.d.ts +4 -0
- package/dist/configuration-error.js +9 -0
- package/dist/configuration-error.js.map +1 -0
- package/dist/diagnostics-json.d.ts +23 -0
- package/dist/diagnostics-json.js +143 -0
- package/dist/diagnostics-json.js.map +1 -0
- package/dist/diagnostics.d.ts +16 -0
- package/dist/diagnostics.js +154 -0
- package/dist/diagnostics.js.map +1 -0
- package/dist/equation.d.ts +74 -0
- package/dist/equation.js +485 -0
- package/dist/equation.js.map +1 -0
- package/dist/font.d.ts +19 -0
- package/dist/font.js +75 -0
- package/dist/font.js.map +1 -0
- package/dist/format.d.ts +2 -0
- package/dist/format.js +308 -0
- package/dist/format.js.map +1 -0
- package/dist/hash.d.ts +5 -0
- package/dist/hash.js +189 -0
- package/dist/hash.js.map +1 -0
- package/dist/help.d.ts +9 -0
- package/dist/help.js +102 -0
- package/dist/help.js.map +1 -0
- package/dist/html-fragment.d.ts +7 -0
- package/dist/html-fragment.js +70 -0
- package/dist/html-fragment.js.map +1 -0
- package/dist/index.d.ts +39 -0
- package/dist/index.js +32 -0
- package/dist/index.js.map +1 -0
- package/dist/markdown.d.ts +14 -0
- package/dist/markdown.js +425 -0
- package/dist/markdown.js.map +1 -0
- package/dist/mermaid-browser.d.ts +43 -0
- package/dist/mermaid-browser.js +358 -0
- package/dist/mermaid-browser.js.map +1 -0
- package/dist/mermaid.d.ts +84 -0
- package/dist/mermaid.js +740 -0
- package/dist/mermaid.js.map +1 -0
- package/dist/model.d.ts +406 -0
- package/dist/model.js +2 -0
- package/dist/model.js.map +1 -0
- package/dist/parse.d.ts +3 -0
- package/dist/parse.js +1374 -0
- package/dist/parse.js.map +1 -0
- package/dist/preview-server.d.ts +39 -0
- package/dist/preview-server.js +156 -0
- package/dist/preview-server.js.map +1 -0
- package/dist/preview-shell.d.ts +29 -0
- package/dist/preview-shell.js +102 -0
- package/dist/preview-shell.js.map +1 -0
- package/dist/reference-validation.d.ts +7 -0
- package/dist/reference-validation.js +42 -0
- package/dist/reference-validation.js.map +1 -0
- package/dist/registry.d.ts +29 -0
- package/dist/registry.js +384 -0
- package/dist/registry.js.map +1 -0
- package/dist/render-html.d.ts +24 -0
- package/dist/render-html.js +149 -0
- package/dist/render-html.js.map +1 -0
- package/dist/render-pdf.d.ts +64 -0
- package/dist/render-pdf.js +503 -0
- package/dist/render-pdf.js.map +1 -0
- package/dist/render-png.d.ts +32 -0
- package/dist/render-png.js +427 -0
- package/dist/render-png.js.map +1 -0
- package/dist/render-svg.d.ts +23 -0
- package/dist/render-svg.js +243 -0
- package/dist/render-svg.js.map +1 -0
- package/dist/runtime-support.d.ts +26 -0
- package/dist/runtime-support.js +62 -0
- package/dist/runtime-support.js.map +1 -0
- package/dist/source-map.d.ts +12 -0
- package/dist/source-map.js +75 -0
- package/dist/source-map.js.map +1 -0
- package/dist/table.d.ts +22 -0
- package/dist/table.js +90 -0
- package/dist/table.js.map +1 -0
- package/dist/theme.d.ts +6 -0
- package/dist/theme.js +89 -0
- package/dist/theme.js.map +1 -0
- package/dist/tool-version.d.ts +3 -0
- package/dist/tool-version.js +3 -0
- package/dist/tool-version.js.map +1 -0
- package/dist/type-guards.d.ts +1 -0
- package/dist/type-guards.js +4 -0
- package/dist/type-guards.js.map +1 -0
- package/dist/validate-document.d.ts +2 -0
- package/dist/validate-document.js +248 -0
- package/dist/validate-document.js.map +1 -0
- package/dist/version.d.ts +37 -0
- package/dist/version.js +111 -0
- package/dist/version.js.map +1 -0
- package/dist/watch-dependencies.d.ts +15 -0
- package/dist/watch-dependencies.js +93 -0
- package/dist/watch-dependencies.js.map +1 -0
- package/dist/watch-events.d.ts +51 -0
- package/dist/watch-events.js +27 -0
- package/dist/watch-events.js.map +1 -0
- package/dist/watch-loop.d.ts +39 -0
- package/dist/watch-loop.js +117 -0
- package/dist/watch-loop.js.map +1 -0
- package/package.json +70 -0
- package/schemas/acceptance.json +104 -0
- package/schemas/capabilities.json +491 -0
- package/schemas/diagnostics.json +219 -0
- package/schemas/version.json +167 -0
|
@@ -0,0 +1,243 @@
|
|
|
1
|
+
import { arch, platform } from "node:os";
|
|
2
|
+
import { SaxesParser } from "saxes";
|
|
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 { escapeHtml } from "./html-fragment.js";
|
|
8
|
+
import { CHROME_HEADLESS_SHELL_VERSION, launchPinnedBrowser, throwIfDeniedBrowserRequest, } from "./mermaid-browser.js";
|
|
9
|
+
import { mermaidHtmlBlockRenderer } from "./mermaid.js";
|
|
10
|
+
import { tableHtmlBlockRenderer } from "./table.js";
|
|
11
|
+
export const SVG_RENDERER_ID = "svg";
|
|
12
|
+
export const SVG_RENDERER_VERSION = "1.0.0";
|
|
13
|
+
export const SVG_MIME_TYPE = "image/svg+xml";
|
|
14
|
+
export const SVG_PROFILE = "azeforge.svg.foreign-object/v1";
|
|
15
|
+
export const SVG_SERIALIZER = "azeforge-svg/v1";
|
|
16
|
+
export const SVG_MAX_BYTES = 64 * 1024 * 1024;
|
|
17
|
+
export const SVG_MAX_HEIGHT_PX = 100_000;
|
|
18
|
+
export const SVG_REQUIRED_CAPABILITIES = Object.freeze([
|
|
19
|
+
"svg2",
|
|
20
|
+
"xhtml-foreign-object",
|
|
21
|
+
]);
|
|
22
|
+
const ALLOWED_REQUEST = /^(?:about:blank|data:(?:font\/woff2|image\/(?:png|jpeg|svg\+xml));base64,)/;
|
|
23
|
+
const SVG_NAMESPACE = "http://www.w3.org/2000/svg";
|
|
24
|
+
const XHTML_NAMESPACE = "http://www.w3.org/1999/xhtml";
|
|
25
|
+
function svgBlockRenderer(renderer) {
|
|
26
|
+
return Object.freeze({
|
|
27
|
+
descriptor: Object.freeze({
|
|
28
|
+
...renderer.descriptor,
|
|
29
|
+
id: renderer.descriptor.id.replace(".html/", ".svg/"),
|
|
30
|
+
rendererId: SVG_RENDERER_ID,
|
|
31
|
+
}),
|
|
32
|
+
render: renderer.render,
|
|
33
|
+
});
|
|
34
|
+
}
|
|
35
|
+
export const svgBlockRenderers = Object.freeze([
|
|
36
|
+
svgBlockRenderer(equationHtmlBlockRenderer),
|
|
37
|
+
svgBlockRenderer(calloutHtmlBlockRenderer),
|
|
38
|
+
svgBlockRenderer(mermaidHtmlBlockRenderer),
|
|
39
|
+
svgBlockRenderer(tableHtmlBlockRenderer),
|
|
40
|
+
]);
|
|
41
|
+
export const pinnedSvgBrowserCapability = Object.freeze({
|
|
42
|
+
launch: launchPinnedBrowser,
|
|
43
|
+
});
|
|
44
|
+
export const svgRendererDescriptor = Object.freeze({
|
|
45
|
+
id: SVG_RENDERER_ID,
|
|
46
|
+
version: SVG_RENDERER_VERSION,
|
|
47
|
+
formats: Object.freeze(["svg"]),
|
|
48
|
+
capabilities: Object.freeze(["browser"]),
|
|
49
|
+
});
|
|
50
|
+
export class SvgArtifactLimitError extends Error {
|
|
51
|
+
byteLength;
|
|
52
|
+
constructor(byteLength) {
|
|
53
|
+
super(`SVG Artifact is ${byteLength} bytes; the limit is ${SVG_MAX_BYTES} bytes.`);
|
|
54
|
+
this.name = "SvgArtifactLimitError";
|
|
55
|
+
this.byteLength = byteLength;
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
function canonicalXhtmlBody(body) {
|
|
59
|
+
const canonical = body.replace(/<(br|hr|img)([^>]*)>/gi, "<$1$2 />");
|
|
60
|
+
const failures = [];
|
|
61
|
+
const parser = new SaxesParser({ xmlns: true, position: false });
|
|
62
|
+
parser.on("error", (error) => failures.push(error.message));
|
|
63
|
+
parser.on("opentag", (tag) => {
|
|
64
|
+
const name = tag.local.toLowerCase();
|
|
65
|
+
if (name === "script" ||
|
|
66
|
+
name === "iframe" ||
|
|
67
|
+
name === "object" ||
|
|
68
|
+
name === "embed" ||
|
|
69
|
+
name === "foreignobject") {
|
|
70
|
+
failures.push(`Forbidden XHTML element: ${name}.`);
|
|
71
|
+
}
|
|
72
|
+
for (const attribute of Object.values(tag.attributes)) {
|
|
73
|
+
const attributeName = attribute.local.toLowerCase();
|
|
74
|
+
if (attributeName.startsWith("on")) {
|
|
75
|
+
failures.push(`Executable XHTML attribute: ${attributeName}.`);
|
|
76
|
+
}
|
|
77
|
+
if (attributeName === "src" &&
|
|
78
|
+
!/^data:image\/(?:png|jpeg|svg\+xml);base64,/.test(attribute.value)) {
|
|
79
|
+
failures.push(`External XHTML resource: ${attribute.value}.`);
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
});
|
|
83
|
+
parser.write(`<body xmlns="http://www.w3.org/1999/xhtml">${canonical}</body>`).close();
|
|
84
|
+
if (failures.length > 0) {
|
|
85
|
+
throw new Error(failures[0] ?? "The XHTML layout is invalid.");
|
|
86
|
+
}
|
|
87
|
+
return canonical;
|
|
88
|
+
}
|
|
89
|
+
export function sanitizeWholeDocumentSvg(svg) {
|
|
90
|
+
const failures = [];
|
|
91
|
+
const stack = [];
|
|
92
|
+
let foreignObjects = 0;
|
|
93
|
+
let rootElements = 0;
|
|
94
|
+
const parser = new SaxesParser({ xmlns: true, position: false });
|
|
95
|
+
parser.on("error", (error) => failures.push(error.message));
|
|
96
|
+
parser.on("opentag", (tag) => {
|
|
97
|
+
const name = tag.local.toLowerCase();
|
|
98
|
+
const depth = stack.length;
|
|
99
|
+
if (depth === 0) {
|
|
100
|
+
rootElements += 1;
|
|
101
|
+
if (name !== "svg")
|
|
102
|
+
failures.push("The Artifact root must be SVG.");
|
|
103
|
+
}
|
|
104
|
+
if (name === "foreignobject") {
|
|
105
|
+
foreignObjects += 1;
|
|
106
|
+
if (depth !== 1 || stack[0] !== "svg") {
|
|
107
|
+
failures.push("Only the Renderer-owned root foreignObject is permitted.");
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
if (name === "script" || name === "iframe" || name === "object" || name === "embed") {
|
|
111
|
+
failures.push(`Forbidden Artifact element: ${name}.`);
|
|
112
|
+
}
|
|
113
|
+
for (const attribute of Object.values(tag.attributes)) {
|
|
114
|
+
const attributeName = attribute.local.toLowerCase();
|
|
115
|
+
if (attributeName.startsWith("on")) {
|
|
116
|
+
failures.push(`Executable Artifact attribute: ${attributeName}.`);
|
|
117
|
+
}
|
|
118
|
+
if (attributeName === "src" &&
|
|
119
|
+
!/^data:image\/(?:png|jpeg|svg\+xml);base64,/.test(attribute.value)) {
|
|
120
|
+
failures.push(`External Artifact resource: ${attribute.value}.`);
|
|
121
|
+
}
|
|
122
|
+
const readerLink = tag.uri === XHTML_NAMESPACE && name === "a" && attributeName === "href";
|
|
123
|
+
const namespaceDeclaration = attribute.name === "xmlns" || attribute.prefix === "xmlns";
|
|
124
|
+
if ((tag.uri === SVG_NAMESPACE && attributeName === "href") ||
|
|
125
|
+
(!readerLink &&
|
|
126
|
+
!namespaceDeclaration &&
|
|
127
|
+
/^(?:https?:|file:|ftp:|javascript:|vbscript:|data:text\/html)/i.test(attribute.value))) {
|
|
128
|
+
failures.push(`Forbidden Artifact reference: ${attribute.value}.`);
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
stack.push(name);
|
|
132
|
+
});
|
|
133
|
+
parser.on("closetag", () => {
|
|
134
|
+
stack.pop();
|
|
135
|
+
});
|
|
136
|
+
parser.write(svg).close();
|
|
137
|
+
if (rootElements !== 1 || foreignObjects !== 1) {
|
|
138
|
+
failures.push("The Artifact must contain exactly one root foreignObject.");
|
|
139
|
+
}
|
|
140
|
+
if (failures.length > 0) {
|
|
141
|
+
throw new Error(failures[0] ?? "The whole-Document SVG is invalid.");
|
|
142
|
+
}
|
|
143
|
+
return svg;
|
|
144
|
+
}
|
|
145
|
+
async function measureSettledLayout(browser, layout, width) {
|
|
146
|
+
const context = await browser.createBrowserContext();
|
|
147
|
+
try {
|
|
148
|
+
const page = await context.newPage();
|
|
149
|
+
await page.setViewport({ width, height: 1, deviceScaleFactor: 1 });
|
|
150
|
+
let deniedRequest;
|
|
151
|
+
await page.setRequestInterception(true);
|
|
152
|
+
page.on("request", (request) => {
|
|
153
|
+
const url = request.url();
|
|
154
|
+
if (ALLOWED_REQUEST.test(url)) {
|
|
155
|
+
void request.continue();
|
|
156
|
+
}
|
|
157
|
+
else {
|
|
158
|
+
deniedRequest ??= url;
|
|
159
|
+
void request.abort("blockedbyclient");
|
|
160
|
+
}
|
|
161
|
+
});
|
|
162
|
+
await page.setContent(`<!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>`, { waitUntil: "domcontentloaded" });
|
|
163
|
+
const heights = await page.evaluate(async () => {
|
|
164
|
+
await document.fonts.ready;
|
|
165
|
+
await Promise.all([...document.images].map((image) => image.complete ? Promise.resolve() : image.decode()));
|
|
166
|
+
const measure = () => Math.ceil(Math.max(document.body.scrollHeight, document.body.getBoundingClientRect().height));
|
|
167
|
+
await new Promise((resolve) => requestAnimationFrame(() => resolve()));
|
|
168
|
+
const first = measure();
|
|
169
|
+
await new Promise((resolve) => requestAnimationFrame(() => resolve()));
|
|
170
|
+
return [first, measure()];
|
|
171
|
+
});
|
|
172
|
+
throwIfDeniedBrowserRequest(deniedRequest);
|
|
173
|
+
const [first, second] = heights;
|
|
174
|
+
if (first === undefined ||
|
|
175
|
+
second === undefined ||
|
|
176
|
+
first !== second ||
|
|
177
|
+
!Number.isFinite(second) ||
|
|
178
|
+
second <= 0 ||
|
|
179
|
+
second > SVG_MAX_HEIGHT_PX) {
|
|
180
|
+
throw new Error("The XHTML layout did not settle to finite controlled geometry.");
|
|
181
|
+
}
|
|
182
|
+
return second;
|
|
183
|
+
}
|
|
184
|
+
finally {
|
|
185
|
+
await context.close();
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
export async function renderSvg(layout, contentHash, theme, assetManifest, browserCapability) {
|
|
189
|
+
const width = theme.geometry.canvasWidthPx;
|
|
190
|
+
const browser = await browserCapability.launch();
|
|
191
|
+
let height;
|
|
192
|
+
try {
|
|
193
|
+
height = await measureSettledLayout(browser, layout, width);
|
|
194
|
+
}
|
|
195
|
+
finally {
|
|
196
|
+
await browser.close();
|
|
197
|
+
}
|
|
198
|
+
const rendererFingerprint = sha256(canonicalJson({
|
|
199
|
+
renderer: {
|
|
200
|
+
id: SVG_RENDERER_ID,
|
|
201
|
+
version: SVG_RENDERER_VERSION,
|
|
202
|
+
serializer: SVG_SERIALIZER,
|
|
203
|
+
},
|
|
204
|
+
profile: SVG_PROFILE,
|
|
205
|
+
layoutEngine: `HeadlessChrome/${CHROME_HEADLESS_SHELL_VERSION}`,
|
|
206
|
+
platform: { os: platform(), architecture: arch() },
|
|
207
|
+
sanitizer: {
|
|
208
|
+
wholeDocument: SVG_PROFILE,
|
|
209
|
+
nestedSvg: "azeforge-mermaid-svg/v2",
|
|
210
|
+
},
|
|
211
|
+
requiredCapabilities: SVG_REQUIRED_CAPABILITIES,
|
|
212
|
+
...layout.fingerprintDependencies,
|
|
213
|
+
}));
|
|
214
|
+
const embeddedMetadata = escapeHtml(canonicalJson({
|
|
215
|
+
contentHash,
|
|
216
|
+
profile: SVG_PROFILE,
|
|
217
|
+
requiredCapabilities: SVG_REQUIRED_CAPABILITIES,
|
|
218
|
+
}));
|
|
219
|
+
const xhtmlBody = canonicalXhtmlBody(layout.body);
|
|
220
|
+
const svg = sanitizeWholeDocumentSvg(`<svg xmlns="http://www.w3.org/2000/svg" width="${width}" height="${height}" viewBox="0 0 ${width} ${height}" role="img" aria-labelledby="azeforge:svg:title azeforge:svg:desc"><title id="azeforge:svg:title">${layout.title}</title><desc id="azeforge:svg:desc">${layout.description}</desc><metadata id="azeforge:svg:metadata">${embeddedMetadata}</metadata><foreignObject x="0" y="0" width="${width}" height="${height}"><html xmlns="http://www.w3.org/1999/xhtml" lang="und"><head><meta charset="utf-8" /><style>${escapeHtml(layout.css)}</style></head><body>${xhtmlBody}</body></html></foreignObject></svg>\n`);
|
|
221
|
+
const bytes = new TextEncoder().encode(svg);
|
|
222
|
+
if (bytes.byteLength > SVG_MAX_BYTES) {
|
|
223
|
+
throw new SvgArtifactLimitError(bytes.byteLength);
|
|
224
|
+
}
|
|
225
|
+
return {
|
|
226
|
+
bytes,
|
|
227
|
+
metadata: {
|
|
228
|
+
format: "svg",
|
|
229
|
+
mimeType: SVG_MIME_TYPE,
|
|
230
|
+
profile: SVG_PROFILE,
|
|
231
|
+
byteLength: bytes.byteLength,
|
|
232
|
+
contentHash,
|
|
233
|
+
assetManifestHash: assetManifestHash(assetManifest),
|
|
234
|
+
rendererFingerprint,
|
|
235
|
+
artifactHash: artifactBytesHash(bytes),
|
|
236
|
+
theme: { id: theme.id, version: theme.version },
|
|
237
|
+
cssDimensions: { ...theme.geometry },
|
|
238
|
+
pixelDimensions: { width, height },
|
|
239
|
+
requiredCapabilities: SVG_REQUIRED_CAPABILITIES,
|
|
240
|
+
},
|
|
241
|
+
};
|
|
242
|
+
}
|
|
243
|
+
//# sourceMappingURL=render-svg.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"render-svg.js","sourceRoot":"","sources":["../src/render-svg.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import type { JsonValue } from "./model.js";
|
|
2
|
+
/** Tested Node majors. Node Current is out of scope for P0. */
|
|
3
|
+
export declare const SUPPORTED_NODE_VERSIONS: readonly [22, 24];
|
|
4
|
+
export declare const CANONICAL_NODE_VERSION: 24;
|
|
5
|
+
/** Consumer operating systems in issue language. */
|
|
6
|
+
export declare const SUPPORTED_OPERATING_SYSTEMS: readonly ["ubuntu", "macos"];
|
|
7
|
+
export declare const CANONICAL_OPERATING_SYSTEM: "ubuntu";
|
|
8
|
+
/** Pinned canonical build host architecture. */
|
|
9
|
+
export declare const CANONICAL_ARCH: "x64";
|
|
10
|
+
export interface RuntimeSupport {
|
|
11
|
+
readonly node: Readonly<{
|
|
12
|
+
supported: typeof SUPPORTED_NODE_VERSIONS;
|
|
13
|
+
canonical: typeof CANONICAL_NODE_VERSION;
|
|
14
|
+
}>;
|
|
15
|
+
readonly os: Readonly<{
|
|
16
|
+
supported: typeof SUPPORTED_OPERATING_SYSTEMS;
|
|
17
|
+
canonical: typeof CANONICAL_OPERATING_SYSTEM;
|
|
18
|
+
}>;
|
|
19
|
+
readonly canonical: Readonly<{
|
|
20
|
+
os: typeof CANONICAL_OPERATING_SYSTEM;
|
|
21
|
+
arch: typeof CANONICAL_ARCH;
|
|
22
|
+
node: typeof CANONICAL_NODE_VERSION;
|
|
23
|
+
}>;
|
|
24
|
+
}
|
|
25
|
+
export declare const RUNTIME_SUPPORT: RuntimeSupport;
|
|
26
|
+
export declare const runtimeSupportJsonSchema: JsonValue;
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
/** Tested Node majors. Node Current is out of scope for P0. */
|
|
2
|
+
export const SUPPORTED_NODE_VERSIONS = Object.freeze([22, 24]);
|
|
3
|
+
export const CANONICAL_NODE_VERSION = 24;
|
|
4
|
+
/** Consumer operating systems in issue language. */
|
|
5
|
+
export const SUPPORTED_OPERATING_SYSTEMS = Object.freeze([
|
|
6
|
+
"ubuntu",
|
|
7
|
+
"macos",
|
|
8
|
+
]);
|
|
9
|
+
export const CANONICAL_OPERATING_SYSTEM = "ubuntu";
|
|
10
|
+
/** Pinned canonical build host architecture. */
|
|
11
|
+
export const CANONICAL_ARCH = "x64";
|
|
12
|
+
export const RUNTIME_SUPPORT = Object.freeze({
|
|
13
|
+
node: Object.freeze({
|
|
14
|
+
supported: SUPPORTED_NODE_VERSIONS,
|
|
15
|
+
canonical: CANONICAL_NODE_VERSION,
|
|
16
|
+
}),
|
|
17
|
+
os: Object.freeze({
|
|
18
|
+
supported: SUPPORTED_OPERATING_SYSTEMS,
|
|
19
|
+
canonical: CANONICAL_OPERATING_SYSTEM,
|
|
20
|
+
}),
|
|
21
|
+
canonical: Object.freeze({
|
|
22
|
+
os: CANONICAL_OPERATING_SYSTEM,
|
|
23
|
+
arch: CANONICAL_ARCH,
|
|
24
|
+
node: CANONICAL_NODE_VERSION,
|
|
25
|
+
}),
|
|
26
|
+
});
|
|
27
|
+
export const runtimeSupportJsonSchema = Object.freeze({
|
|
28
|
+
type: "object",
|
|
29
|
+
required: ["node", "os", "canonical"],
|
|
30
|
+
additionalProperties: false,
|
|
31
|
+
properties: {
|
|
32
|
+
node: {
|
|
33
|
+
type: "object",
|
|
34
|
+
required: ["supported", "canonical"],
|
|
35
|
+
additionalProperties: false,
|
|
36
|
+
properties: {
|
|
37
|
+
supported: { const: [22, 24] },
|
|
38
|
+
canonical: { const: 24 },
|
|
39
|
+
},
|
|
40
|
+
},
|
|
41
|
+
os: {
|
|
42
|
+
type: "object",
|
|
43
|
+
required: ["supported", "canonical"],
|
|
44
|
+
additionalProperties: false,
|
|
45
|
+
properties: {
|
|
46
|
+
supported: { const: ["ubuntu", "macos"] },
|
|
47
|
+
canonical: { const: "ubuntu" },
|
|
48
|
+
},
|
|
49
|
+
},
|
|
50
|
+
canonical: {
|
|
51
|
+
type: "object",
|
|
52
|
+
required: ["os", "arch", "node"],
|
|
53
|
+
additionalProperties: false,
|
|
54
|
+
properties: {
|
|
55
|
+
os: { const: "ubuntu" },
|
|
56
|
+
arch: { const: "x64" },
|
|
57
|
+
node: { const: 24 },
|
|
58
|
+
},
|
|
59
|
+
},
|
|
60
|
+
},
|
|
61
|
+
});
|
|
62
|
+
//# sourceMappingURL=runtime-support.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"runtime-support.js","sourceRoot":"","sources":["../src/runtime-support.ts"],"names":[],"mappings":"AAEA,+DAA+D;AAC/D,MAAM,CAAC,MAAM,uBAAuB,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,CAAU,CAAC,CAAC;AACxE,MAAM,CAAC,MAAM,sBAAsB,GAAG,EAAW,CAAC;AAClD,oDAAoD;AACpD,MAAM,CAAC,MAAM,2BAA2B,GAAG,MAAM,CAAC,MAAM,CAAC;IACvD,QAAQ;IACR,OAAO;CACC,CAAC,CAAC;AACZ,MAAM,CAAC,MAAM,0BAA0B,GAAG,QAAiB,CAAC;AAC5D,gDAAgD;AAChD,MAAM,CAAC,MAAM,cAAc,GAAG,KAAc,CAAC;AAkB7C,MAAM,CAAC,MAAM,eAAe,GAAmB,MAAM,CAAC,MAAM,CAAC;IAC3D,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC;QAClB,SAAS,EAAE,uBAAuB;QAClC,SAAS,EAAE,sBAAsB;KAClC,CAAC;IACF,EAAE,EAAE,MAAM,CAAC,MAAM,CAAC;QAChB,SAAS,EAAE,2BAA2B;QACtC,SAAS,EAAE,0BAA0B;KACtC,CAAC;IACF,SAAS,EAAE,MAAM,CAAC,MAAM,CAAC;QACvB,EAAE,EAAE,0BAA0B;QAC9B,IAAI,EAAE,cAAc;QACpB,IAAI,EAAE,sBAAsB;KAC7B,CAAC;CACH,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,wBAAwB,GAAc,MAAM,CAAC,MAAM,CAAC;IAC/D,IAAI,EAAE,QAAQ;IACd,QAAQ,EAAE,CAAC,MAAM,EAAE,IAAI,EAAE,WAAW,CAAC;IACrC,oBAAoB,EAAE,KAAK;IAC3B,UAAU,EAAE;QACV,IAAI,EAAE;YACJ,IAAI,EAAE,QAAQ;YACd,QAAQ,EAAE,CAAC,WAAW,EAAE,WAAW,CAAC;YACpC,oBAAoB,EAAE,KAAK;YAC3B,UAAU,EAAE;gBACV,SAAS,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE;gBAC9B,SAAS,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE;aACzB;SACF;QACD,EAAE,EAAE;YACF,IAAI,EAAE,QAAQ;YACd,QAAQ,EAAE,CAAC,WAAW,EAAE,WAAW,CAAC;YACpC,oBAAoB,EAAE,KAAK;YAC3B,UAAU,EAAE;gBACN,SAAS,EAAE,EAAE,KAAK,EAAE,CAAC,QAAQ,EAAE,OAAO,CAAC,EAAE;gBACzC,SAAS,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE;aACnC;SACF;QACD,SAAS,EAAE;YACT,IAAI,EAAE,QAAQ;YACd,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC;YAChC,oBAAoB,EAAE,KAAK;YAC3B,UAAU,EAAE;gBACV,EAAE,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE;gBACvB,IAAI,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE;gBACtB,IAAI,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE;aACpB;SACF;KACF;CACF,CAAC,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { SourceRange } from "./model.js";
|
|
2
|
+
export interface SourceLine {
|
|
3
|
+
readonly number: number;
|
|
4
|
+
readonly text: string;
|
|
5
|
+
readonly startIndex: number;
|
|
6
|
+
readonly endIndex: number;
|
|
7
|
+
readonly startOffset: number;
|
|
8
|
+
readonly endOffset: number;
|
|
9
|
+
}
|
|
10
|
+
export declare function sourceLines(source: string): readonly SourceLine[];
|
|
11
|
+
export declare function rangeFromLines(first: SourceLine, last: SourceLine): SourceRange;
|
|
12
|
+
export declare function rangeFromLineSlice(line: SourceLine, startIndex: number, endIndex: number): SourceRange;
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
export function sourceLines(source) {
|
|
2
|
+
const lines = [];
|
|
3
|
+
let characterIndex = 0;
|
|
4
|
+
let byteOffset = 0;
|
|
5
|
+
let lineNumber = 1;
|
|
6
|
+
while (characterIndex < source.length) {
|
|
7
|
+
const startIndex = characterIndex;
|
|
8
|
+
const startOffset = byteOffset;
|
|
9
|
+
while (characterIndex < source.length &&
|
|
10
|
+
source[characterIndex] !== "\n" &&
|
|
11
|
+
source[characterIndex] !== "\r") {
|
|
12
|
+
characterIndex += 1;
|
|
13
|
+
}
|
|
14
|
+
const text = source.slice(startIndex, characterIndex);
|
|
15
|
+
byteOffset += Buffer.byteLength(text, "utf8");
|
|
16
|
+
const endOffset = byteOffset;
|
|
17
|
+
if (source.startsWith("\r\n", characterIndex)) {
|
|
18
|
+
characterIndex += 2;
|
|
19
|
+
byteOffset += 2;
|
|
20
|
+
}
|
|
21
|
+
else if (characterIndex < source.length) {
|
|
22
|
+
const ending = source[characterIndex];
|
|
23
|
+
characterIndex += 1;
|
|
24
|
+
byteOffset += Buffer.byteLength(ending ?? "", "utf8");
|
|
25
|
+
}
|
|
26
|
+
lines.push({
|
|
27
|
+
number: lineNumber,
|
|
28
|
+
text,
|
|
29
|
+
startIndex,
|
|
30
|
+
endIndex: startIndex + text.length,
|
|
31
|
+
startOffset,
|
|
32
|
+
endOffset,
|
|
33
|
+
});
|
|
34
|
+
lineNumber += 1;
|
|
35
|
+
}
|
|
36
|
+
if (source.length === 0 || source.endsWith("\n") || source.endsWith("\r")) {
|
|
37
|
+
lines.push({
|
|
38
|
+
number: lineNumber,
|
|
39
|
+
text: "",
|
|
40
|
+
startIndex: source.length,
|
|
41
|
+
endIndex: source.length,
|
|
42
|
+
startOffset: byteOffset,
|
|
43
|
+
endOffset: byteOffset,
|
|
44
|
+
});
|
|
45
|
+
}
|
|
46
|
+
return lines;
|
|
47
|
+
}
|
|
48
|
+
export function rangeFromLines(first, last) {
|
|
49
|
+
return {
|
|
50
|
+
start: { line: first.number, column: 1, offset: first.startOffset },
|
|
51
|
+
end: {
|
|
52
|
+
line: last.number,
|
|
53
|
+
column: [...last.text].length + 1,
|
|
54
|
+
offset: last.endOffset,
|
|
55
|
+
},
|
|
56
|
+
};
|
|
57
|
+
}
|
|
58
|
+
export function rangeFromLineSlice(line, startIndex, endIndex) {
|
|
59
|
+
const prefix = line.text.slice(0, startIndex);
|
|
60
|
+
const value = line.text.slice(startIndex, endIndex);
|
|
61
|
+
const startOffset = line.startOffset + Buffer.byteLength(prefix, "utf8");
|
|
62
|
+
return {
|
|
63
|
+
start: {
|
|
64
|
+
line: line.number,
|
|
65
|
+
column: [...prefix].length + 1,
|
|
66
|
+
offset: startOffset,
|
|
67
|
+
},
|
|
68
|
+
end: {
|
|
69
|
+
line: line.number,
|
|
70
|
+
column: [...prefix, ...value].length + 1,
|
|
71
|
+
offset: startOffset + Buffer.byteLength(value, "utf8"),
|
|
72
|
+
},
|
|
73
|
+
};
|
|
74
|
+
}
|
|
75
|
+
//# sourceMappingURL=source-map.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"source-map.js","sourceRoot":"","sources":["../src/source-map.ts"],"names":[],"mappings":"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"}
|
package/dist/table.d.ts
ADDED
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import type { AzeBlockPlugin, JsonValue, TableBlock } from "./model.js";
|
|
2
|
+
export declare const TABLE_PLUGIN_TYPE: "table";
|
|
3
|
+
export declare const TABLE_PLUGIN_VERSION: "1.0.0";
|
|
4
|
+
export declare const TABLE_BODY_SYNTAX_ID: "azeforge.gfm-table/v1";
|
|
5
|
+
export declare const TABLE_BODY_SYNTAX_VERSION: "1.0.0";
|
|
6
|
+
export declare const TABLE_HTML_BLOCK_RENDERER_ID: "azeforge.table.html/v1";
|
|
7
|
+
export declare const TABLE_HTML_BLOCK_RENDERER_VERSION: "1.0.0";
|
|
8
|
+
export declare const tableSourceSchema: JsonValue;
|
|
9
|
+
export declare const tableDataSchema: JsonValue;
|
|
10
|
+
export declare const tablePlugin: AzeBlockPlugin;
|
|
11
|
+
export declare function renderTableFragment(block: TableBlock): string;
|
|
12
|
+
export declare const tableHtmlBlockRenderer: Readonly<{
|
|
13
|
+
descriptor: Readonly<{
|
|
14
|
+
id: "azeforge.table.html/v1";
|
|
15
|
+
version: "1.0.0";
|
|
16
|
+
blockType: "table";
|
|
17
|
+
pluginVersionRange: "1.0.0";
|
|
18
|
+
rendererId: "html";
|
|
19
|
+
rendererVersionRange: "1.0.0";
|
|
20
|
+
}>;
|
|
21
|
+
render: typeof renderTableFragment;
|
|
22
|
+
}>;
|
package/dist/table.js
ADDED
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
import { escapeHtml, renderInlineHtml } from "./html-fragment.js";
|
|
2
|
+
export const TABLE_PLUGIN_TYPE = "table";
|
|
3
|
+
export const TABLE_PLUGIN_VERSION = "1.0.0";
|
|
4
|
+
export const TABLE_BODY_SYNTAX_ID = "azeforge.gfm-table/v1";
|
|
5
|
+
export const TABLE_BODY_SYNTAX_VERSION = "1.0.0";
|
|
6
|
+
export const TABLE_HTML_BLOCK_RENDERER_ID = "azeforge.table.html/v1";
|
|
7
|
+
export const TABLE_HTML_BLOCK_RENDERER_VERSION = "1.0.0";
|
|
8
|
+
export const tableSourceSchema = Object.freeze({
|
|
9
|
+
$schema: "https://json-schema.org/draft/2020-12/schema",
|
|
10
|
+
$id: "azeforge.table/source/v1",
|
|
11
|
+
type: "object",
|
|
12
|
+
additionalProperties: false,
|
|
13
|
+
properties: {
|
|
14
|
+
id: {
|
|
15
|
+
type: "string",
|
|
16
|
+
pattern: "^[a-z][a-z0-9]*(?:-[a-z0-9]+)*$",
|
|
17
|
+
},
|
|
18
|
+
caption: { type: "string", minLength: 1, maxLength: 500 },
|
|
19
|
+
},
|
|
20
|
+
});
|
|
21
|
+
export const tableDataSchema = Object.freeze({
|
|
22
|
+
$schema: "https://json-schema.org/draft/2020-12/schema",
|
|
23
|
+
$id: "azeforge.table/data/v1",
|
|
24
|
+
type: "object",
|
|
25
|
+
additionalProperties: false,
|
|
26
|
+
required: ["pluginVersion"],
|
|
27
|
+
properties: {
|
|
28
|
+
kind: { const: "table" },
|
|
29
|
+
pluginVersion: { const: "1.0.0" },
|
|
30
|
+
},
|
|
31
|
+
});
|
|
32
|
+
const pluginDescriptor = Object.freeze({
|
|
33
|
+
type: TABLE_PLUGIN_TYPE,
|
|
34
|
+
version: TABLE_PLUGIN_VERSION,
|
|
35
|
+
title: "Table",
|
|
36
|
+
summary: "Captioned GFM table normalized through shared TableData.",
|
|
37
|
+
diagnosticNamespace: "azeforge.table",
|
|
38
|
+
sourceSchema: tableSourceSchema,
|
|
39
|
+
bodySyntax: Object.freeze({
|
|
40
|
+
id: TABLE_BODY_SYNTAX_ID,
|
|
41
|
+
version: TABLE_BODY_SYNTAX_VERSION,
|
|
42
|
+
}),
|
|
43
|
+
dataSchema: tableDataSchema,
|
|
44
|
+
});
|
|
45
|
+
export const tablePlugin = Object.freeze({
|
|
46
|
+
descriptor: pluginDescriptor,
|
|
47
|
+
});
|
|
48
|
+
const blockRendererDescriptor = Object.freeze({
|
|
49
|
+
id: TABLE_HTML_BLOCK_RENDERER_ID,
|
|
50
|
+
version: TABLE_HTML_BLOCK_RENDERER_VERSION,
|
|
51
|
+
blockType: TABLE_PLUGIN_TYPE,
|
|
52
|
+
pluginVersionRange: "1.0.0",
|
|
53
|
+
rendererId: "html",
|
|
54
|
+
rendererVersionRange: "1.0.0",
|
|
55
|
+
});
|
|
56
|
+
function alignmentStyle(align) {
|
|
57
|
+
if (align === null)
|
|
58
|
+
return "";
|
|
59
|
+
return ` style="text-align:${align}"`;
|
|
60
|
+
}
|
|
61
|
+
export function renderTableFragment(block) {
|
|
62
|
+
const caption = block.caption === undefined || block.caption.length === 0
|
|
63
|
+
? ""
|
|
64
|
+
: `<caption>${renderInlineHtml(block.caption)}</caption>`;
|
|
65
|
+
const headerCells = block.data.header
|
|
66
|
+
.map((cell, index) => {
|
|
67
|
+
const align = block.data.align[index] ?? null;
|
|
68
|
+
return `<th scope="col"${alignmentStyle(align)}>${renderInlineHtml(cell)}</th>`;
|
|
69
|
+
})
|
|
70
|
+
.join("");
|
|
71
|
+
const bodyRows = block.data.rows
|
|
72
|
+
.map((row) => `<tr>${row
|
|
73
|
+
.map((cell, index) => {
|
|
74
|
+
const align = block.data.align[index] ?? null;
|
|
75
|
+
return `<td${alignmentStyle(align)}>${renderInlineHtml(cell)}</td>`;
|
|
76
|
+
})
|
|
77
|
+
.join("")}</tr>`)
|
|
78
|
+
.join("");
|
|
79
|
+
const label = block.id === undefined ? "" : ` id="${escapeHtml(block.id)}"`;
|
|
80
|
+
const table = `<table${label}>${caption}<thead><tr>${headerCells}</tr></thead><tbody>${bodyRows}</tbody></table>`;
|
|
81
|
+
if (block.caption !== undefined && block.caption.length > 0) {
|
|
82
|
+
return `<figure class="aze-table">${table}</figure>`;
|
|
83
|
+
}
|
|
84
|
+
return table;
|
|
85
|
+
}
|
|
86
|
+
export const tableHtmlBlockRenderer = Object.freeze({
|
|
87
|
+
descriptor: blockRendererDescriptor,
|
|
88
|
+
render: renderTableFragment,
|
|
89
|
+
});
|
|
90
|
+
//# sourceMappingURL=table.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"table.js","sourceRoot":"","sources":["../src/table.ts"],"names":[],"mappings":"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"}
|
package/dist/theme.d.ts
ADDED
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { Theme } from "./model.js";
|
|
2
|
+
export declare const defaultTheme: Theme;
|
|
3
|
+
export declare const academicTheme: Theme;
|
|
4
|
+
export declare const darkPresentationTheme: Theme;
|
|
5
|
+
export declare const builtInThemes: readonly Theme[];
|
|
6
|
+
export declare function copyAndFreezeTheme(theme: Theme): Theme;
|