@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
package/dist/format.js ADDED
@@ -0,0 +1,308 @@
1
+ import { createDiagnostic } from "./diagnostics.js";
2
+ import { sourceLines } from "./source-map.js";
3
+ const AMBIGUOUS_STRUCTURE = "azeforge.format#ambiguous-structure";
4
+ const EQUATION_TYPE = "equation";
5
+ const BLANK = /^[ \t]*$/;
6
+ const FENCE = /^ {0,3}(?:`{3,}|~{3,})/;
7
+ const DIRECTIVE_FENCE = /^ {0,3}:{4,}/;
8
+ const DIRECTIVE_CLOSE = /^ {0,3}:{4,}[ \t]*$/;
9
+ const DIRECTIVE_OPEN = /^ {0,3}:{4,}[ \t]*([^ \t:]*)[ \t]*$/;
10
+ const HEADER_ENTRY = /^[ \t]*([A-Za-z][A-Za-z0-9-]*)[ \t]*:(.*)$/;
11
+ const ATX_HEADING = /^ {0,3}(#{1,6})(?:[ \t]+(.*)|[ \t]*)$/;
12
+ const SETEXT_UNDERLINE = /^ {0,3}(=+|-+)[ \t]*$/;
13
+ function lineRange(line) {
14
+ return {
15
+ start: { line: line.number, column: 1, offset: line.startOffset },
16
+ end: {
17
+ line: line.number,
18
+ column: [...line.text].length + 1,
19
+ offset: line.endOffset,
20
+ },
21
+ };
22
+ }
23
+ function ambiguous(line, message, suggestion, options) {
24
+ const range = lineRange(line);
25
+ return {
26
+ diagnostics: [
27
+ createDiagnostic(AMBIGUOUS_STRUCTURE, "error", message, {
28
+ location: options.sourceName === undefined
29
+ ? { range }
30
+ : { source: options.sourceName, range },
31
+ suggestion,
32
+ }),
33
+ ],
34
+ };
35
+ }
36
+ function rawHtmlStartAt(text, index) {
37
+ const rest = text.slice(index);
38
+ const match = /^(?:<!--|<![A-Za-z]|<\?|<\/?[A-Za-z][A-Za-z0-9-]*(?=[\s/>]))/.exec(rest);
39
+ return match === null ? -1 : match[0].length;
40
+ }
41
+ function containsDeniedRawHtml(text) {
42
+ if (!text.includes("<"))
43
+ return false;
44
+ for (let index = 0; index < text.length; index += 1) {
45
+ const character = text[index];
46
+ if (character === "\\") {
47
+ index += 1;
48
+ continue;
49
+ }
50
+ if (character === "`") {
51
+ let delimiterLength = 1;
52
+ while (text[index + delimiterLength] === "`")
53
+ delimiterLength += 1;
54
+ const delimiter = "`".repeat(delimiterLength);
55
+ const closingIndex = text.indexOf(delimiter, index + delimiterLength);
56
+ if (closingIndex >= 0) {
57
+ index = closingIndex + delimiterLength - 1;
58
+ }
59
+ else {
60
+ index += delimiterLength - 1;
61
+ }
62
+ continue;
63
+ }
64
+ if (character !== "<")
65
+ continue;
66
+ if (rawHtmlStartAt(text, index) >= 0)
67
+ return true;
68
+ }
69
+ return false;
70
+ }
71
+ function trimLineEnd(text) {
72
+ return text.replace(/[ \t]+$/, "");
73
+ }
74
+ function trimLine(text) {
75
+ return text.replace(/^[ \t]+/, "").replace(/[ \t]+$/, "");
76
+ }
77
+ function parseAtxHeading(text) {
78
+ const match = ATX_HEADING.exec(text);
79
+ const marker = match?.[1];
80
+ if (marker === undefined)
81
+ return undefined;
82
+ const rawBody = (match?.[2] ?? "").replace(/[ \t]+$/, "");
83
+ const body = /^#+$/.test(rawBody) ? "" : rawBody.replace(/[ \t]+#+$/, "");
84
+ return { level: marker.length, body };
85
+ }
86
+ function preserved(line) {
87
+ return line.text;
88
+ }
89
+ function isUnambiguousUnclosedTail(lines, openIndex) {
90
+ const recoveryIndex = lines.findIndex((candidate, candidateIndex) => candidateIndex > openIndex && BLANK.test(candidate.text));
91
+ if (recoveryIndex < 0)
92
+ return true;
93
+ return lines
94
+ .slice(recoveryIndex)
95
+ .every((candidate) => BLANK.test(candidate.text));
96
+ }
97
+ function formatEquationEnvelope(lines, openIndex, closingIndex) {
98
+ const emitted = [`${":".repeat(4)} ${EQUATION_TYPE}`];
99
+ let cursor = openIndex + 1;
100
+ const entries = [];
101
+ let deniedRawLatex = false;
102
+ while (cursor < closingIndex) {
103
+ const header = lines[cursor];
104
+ if (header === undefined)
105
+ break;
106
+ if (BLANK.test(header.text)) {
107
+ cursor += 1;
108
+ continue;
109
+ }
110
+ const match = HEADER_ENTRY.exec(header.text);
111
+ if (match === null)
112
+ break;
113
+ const key = match[1] ?? "";
114
+ const value = (match[2] ?? "").trim();
115
+ if (key === "syntax" && value === "latex")
116
+ deniedRawLatex = true;
117
+ entries.push(value.length === 0 ? `${key}:` : `${key}: ${value}`);
118
+ cursor += 1;
119
+ }
120
+ emitted.push(...entries);
121
+ while (cursor < closingIndex) {
122
+ const blank = lines[cursor];
123
+ if (blank !== undefined && !BLANK.test(blank.text))
124
+ break;
125
+ cursor += 1;
126
+ }
127
+ const body = lines.slice(cursor, closingIndex);
128
+ let bodyStart = 0;
129
+ while (bodyStart < body.length) {
130
+ const candidate = body[bodyStart];
131
+ if (candidate !== undefined && !BLANK.test(candidate.text))
132
+ break;
133
+ bodyStart += 1;
134
+ }
135
+ let bodyEnd = body.length;
136
+ while (bodyEnd > bodyStart) {
137
+ const candidate = body[bodyEnd - 1];
138
+ if (candidate !== undefined && !BLANK.test(candidate.text))
139
+ break;
140
+ bodyEnd -= 1;
141
+ }
142
+ const bodyLines = body
143
+ .slice(bodyStart, bodyEnd)
144
+ .map((line) => deniedRawLatex ? line.text : trimLineEnd(line.text));
145
+ if (entries.length > 0 && bodyLines.length > 0)
146
+ emitted.push("");
147
+ emitted.push(...bodyLines);
148
+ emitted.push(":".repeat(4));
149
+ return emitted;
150
+ }
151
+ function formatEnvelope(cursor, openIndex) {
152
+ const { lines, options } = cursor;
153
+ const open = lines[openIndex];
154
+ if (open === undefined)
155
+ return { emitted: [], nextIndex: openIndex };
156
+ const closingIndex = lines.findIndex((candidate, candidateIndex) => candidateIndex > openIndex && DIRECTIVE_CLOSE.test(candidate.text));
157
+ if (closingIndex < 0) {
158
+ if (!isUnambiguousUnclosedTail(lines, openIndex)) {
159
+ return ambiguous(open, "A directive Block must end with a closing `::::` delimiter.", "Add a closing `::::` delimiter before the next Block.", options);
160
+ }
161
+ const recoveryIndex = lines.findIndex((candidate, candidateIndex) => candidateIndex > openIndex && BLANK.test(candidate.text));
162
+ const endIndex = recoveryIndex < 0 ? lines.length : recoveryIndex;
163
+ return {
164
+ emitted: lines.slice(openIndex, endIndex).map(preserved),
165
+ nextIndex: endIndex,
166
+ };
167
+ }
168
+ const typeMatch = DIRECTIVE_OPEN.exec(open.text);
169
+ const declaredType = typeMatch?.[1] === "" ? undefined : typeMatch?.[1];
170
+ if (declaredType === EQUATION_TYPE) {
171
+ return {
172
+ emitted: formatEquationEnvelope(lines, openIndex, closingIndex),
173
+ nextIndex: closingIndex + 1,
174
+ };
175
+ }
176
+ const emitted = [
177
+ declaredType === undefined ? ":".repeat(4) : `${":".repeat(4)} ${declaredType}`,
178
+ ];
179
+ for (let index = openIndex + 1; index < closingIndex; index += 1) {
180
+ const inner = lines[index];
181
+ if (inner !== undefined)
182
+ emitted.push(preserved(inner));
183
+ }
184
+ emitted.push(":".repeat(4));
185
+ return { emitted, nextIndex: closingIndex + 1 };
186
+ }
187
+ function formatFencedBlock(lines, openIndex) {
188
+ const open = lines[openIndex];
189
+ const fenceMatch = /^ {0,3}(`{3,}|~{3,})/.exec(open?.text ?? "");
190
+ const fence = fenceMatch?.[1] ?? "```";
191
+ const marker = fence[0] ?? "`";
192
+ const length = fence.length;
193
+ let closingIndex = -1;
194
+ for (let index = openIndex + 1; index < lines.length; index += 1) {
195
+ const text = lines[index]?.text ?? "";
196
+ if (new RegExp(`^ {0,3}${marker}{${length},}[ \\t]*$`).test(text)) {
197
+ closingIndex = index;
198
+ break;
199
+ }
200
+ }
201
+ const endIndex = closingIndex < 0 ? lines.length : closingIndex + 1;
202
+ return {
203
+ emitted: lines.slice(openIndex, endIndex).map(preserved),
204
+ nextIndex: endIndex,
205
+ };
206
+ }
207
+ export function formatSource(source, options = {}) {
208
+ const stripped = source.startsWith("\uFEFF") ? source.slice(1) : source;
209
+ const lines = sourceLines(stripped);
210
+ const blocks = [];
211
+ let frontMatter;
212
+ let index = 0;
213
+ if (lines[0] !== undefined && lines[0].text === "---") {
214
+ const closingIndex = lines.findIndex((candidate, candidateIndex) => candidateIndex > 0 && candidate.text === "---");
215
+ if (closingIndex < 0) {
216
+ const first = lines[0];
217
+ if (first === undefined)
218
+ return { diagnostics: [] };
219
+ return ambiguous(first, "Front matter must end with a --- delimiter.", "Add a closing `---` delimiter after the front matter.", options);
220
+ }
221
+ frontMatter = [
222
+ "---",
223
+ ...lines.slice(1, closingIndex).map((line) => line.text),
224
+ "---",
225
+ ];
226
+ index = closingIndex + 1;
227
+ }
228
+ const cursor = { lines, options };
229
+ while (index < lines.length && BLANK.test(lines[index]?.text ?? ""))
230
+ index += 1;
231
+ while (index < lines.length) {
232
+ const line = lines[index];
233
+ if (line === undefined)
234
+ break;
235
+ if (FENCE.test(line.text)) {
236
+ const fenced = formatFencedBlock(lines, index);
237
+ blocks.push(fenced.emitted);
238
+ index = fenced.nextIndex;
239
+ }
240
+ else if (DIRECTIVE_FENCE.test(line.text)) {
241
+ const envelope = formatEnvelope(cursor, index);
242
+ if ("diagnostics" in envelope)
243
+ return envelope;
244
+ blocks.push(envelope.emitted);
245
+ index = envelope.nextIndex;
246
+ }
247
+ else {
248
+ const heading = parseAtxHeading(line.text);
249
+ if (heading !== undefined) {
250
+ blocks.push([
251
+ heading.body.length === 0
252
+ ? "#".repeat(heading.level)
253
+ : `${"#".repeat(heading.level)} ${heading.body}`,
254
+ ]);
255
+ index += 1;
256
+ }
257
+ else {
258
+ const group = [line];
259
+ index += 1;
260
+ let underline;
261
+ while (index < lines.length) {
262
+ const next = lines[index];
263
+ if (next === undefined || BLANK.test(next.text))
264
+ break;
265
+ if (DIRECTIVE_FENCE.test(next.text) ||
266
+ FENCE.test(next.text) ||
267
+ parseAtxHeading(next.text) !== undefined) {
268
+ break;
269
+ }
270
+ const setext = SETEXT_UNDERLINE.exec(next.text);
271
+ if (setext !== null) {
272
+ underline = next;
273
+ index += 1;
274
+ break;
275
+ }
276
+ group.push(next);
277
+ index += 1;
278
+ }
279
+ if (group.some((candidate) => containsDeniedRawHtml(candidate.text))) {
280
+ blocks.push(group.map(preserved));
281
+ if (underline !== undefined) {
282
+ blocks.push([preserved(underline)]);
283
+ }
284
+ }
285
+ else if (underline !== undefined) {
286
+ blocks.push([...group.map((candidate) => trimLineEnd(candidate.text)), trimLineEnd(underline.text)]);
287
+ }
288
+ else {
289
+ blocks.push(group.map((candidate) => trimLine(candidate.text)));
290
+ }
291
+ }
292
+ }
293
+ while (index < lines.length && BLANK.test(lines[index]?.text ?? ""))
294
+ index += 1;
295
+ }
296
+ const emitted = [];
297
+ if (frontMatter !== undefined)
298
+ emitted.push(...frontMatter);
299
+ for (const block of blocks) {
300
+ if (emitted.length > 0)
301
+ emitted.push("");
302
+ emitted.push(...block);
303
+ }
304
+ if (emitted.length === 0)
305
+ return { source: "", diagnostics: [] };
306
+ return { source: `${emitted.join("\n")}\n`, diagnostics: [] };
307
+ }
308
+ //# sourceMappingURL=format.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"format.js","sourceRoot":"","sources":["../src/format.ts"],"names":[],"mappings":"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"}
package/dist/hash.d.ts ADDED
@@ -0,0 +1,5 @@
1
+ import type { ArtifactHash, AzeDocument, ContentHash, JsonValue, Sha256Hash } from "./model.js";
2
+ export declare function canonicalJson(value: JsonValue): string;
3
+ export declare function sha256(bytes: string | Uint8Array): Sha256Hash;
4
+ export declare function artifactBytesHash(bytes: Uint8Array): ArtifactHash;
5
+ export declare function documentContentHash(document: AzeDocument): ContentHash;
package/dist/hash.js ADDED
@@ -0,0 +1,189 @@
1
+ import { createHash } from "node:crypto";
2
+ export function canonicalJson(value) {
3
+ if (value === null || typeof value === "boolean" || typeof value === "string") {
4
+ return JSON.stringify(value);
5
+ }
6
+ if (typeof value === "number") {
7
+ if (!Number.isFinite(value)) {
8
+ throw new TypeError("Canonical JSON cannot encode a non-finite number.");
9
+ }
10
+ return JSON.stringify(value);
11
+ }
12
+ if (Array.isArray(value)) {
13
+ return `[${value.map((item) => canonicalJson(item)).join(",")}]`;
14
+ }
15
+ const object = value;
16
+ return `{${Object.keys(object)
17
+ .sort()
18
+ .map((key) => `${JSON.stringify(key)}:${canonicalJson(object[key] ?? null)}`)
19
+ .join(",")}}`;
20
+ }
21
+ export function sha256(bytes) {
22
+ return `sha256:${createHash("sha256").update(bytes).digest("hex")}`;
23
+ }
24
+ export function artifactBytesHash(bytes) {
25
+ return sha256(bytes);
26
+ }
27
+ export function documentContentHash(document) {
28
+ const metadata = {
29
+ authors: document.metadata.authors,
30
+ extensions: document.metadata.extensions,
31
+ };
32
+ if (document.metadata.title !== undefined)
33
+ metadata.title = document.metadata.title;
34
+ if (document.metadata.theme !== undefined)
35
+ metadata.theme = document.metadata.theme;
36
+ if (document.metadata.outputs !== undefined)
37
+ metadata.outputs = document.metadata.outputs;
38
+ function projectInline(node) {
39
+ switch (node.kind) {
40
+ case "text":
41
+ case "code":
42
+ return { kind: node.kind, value: node.value };
43
+ case "emphasis":
44
+ case "strong":
45
+ return { kind: node.kind, children: node.children.map(projectInline) };
46
+ case "break":
47
+ return { kind: node.kind };
48
+ case "link": {
49
+ const projected = {
50
+ kind: node.kind,
51
+ href: node.href,
52
+ children: node.children.map(projectInline),
53
+ };
54
+ if (node.title !== undefined)
55
+ projected.title = node.title;
56
+ return projected;
57
+ }
58
+ case "image": {
59
+ const projected = {
60
+ kind: node.kind,
61
+ src: node.src,
62
+ alt: node.alt,
63
+ };
64
+ if (node.title !== undefined)
65
+ projected.title = node.title;
66
+ return projected;
67
+ }
68
+ }
69
+ }
70
+ function projectBlock(block) {
71
+ if (block.kind === "equation") {
72
+ const projected = {
73
+ kind: block.kind,
74
+ pluginVersion: block.pluginVersion,
75
+ syntax: block.syntax,
76
+ source: block.source,
77
+ tex: block.tex,
78
+ };
79
+ if (block.id !== undefined)
80
+ projected.id = block.id;
81
+ if (block.number !== undefined)
82
+ projected.number = block.number;
83
+ if (block.align !== undefined)
84
+ projected.align = block.align;
85
+ return projected;
86
+ }
87
+ if (block.kind === "mermaid") {
88
+ const projected = {
89
+ kind: block.kind,
90
+ pluginVersion: block.pluginVersion,
91
+ diagramType: block.diagramType,
92
+ source: block.source,
93
+ };
94
+ if (block.id !== undefined)
95
+ projected.id = block.id;
96
+ if (block.title !== undefined)
97
+ projected.title = block.title;
98
+ if (block.description !== undefined)
99
+ projected.description = block.description;
100
+ return projected;
101
+ }
102
+ if (block.kind === "thematicBreak") {
103
+ const projected = { kind: block.kind };
104
+ if (block.id !== undefined)
105
+ projected.id = block.id;
106
+ return projected;
107
+ }
108
+ if (block.kind === "blockquote") {
109
+ const projected = {
110
+ kind: block.kind,
111
+ children: block.children.map(projectBlock),
112
+ };
113
+ if (block.id !== undefined)
114
+ projected.id = block.id;
115
+ return projected;
116
+ }
117
+ if (block.kind === "list") {
118
+ const projected = {
119
+ kind: block.kind,
120
+ ordered: block.ordered,
121
+ items: block.items.map((item) => ({ blocks: item.blocks.map(projectBlock) })),
122
+ };
123
+ if (block.id !== undefined)
124
+ projected.id = block.id;
125
+ if (block.start !== undefined)
126
+ projected.start = block.start;
127
+ return projected;
128
+ }
129
+ if (block.kind === "code") {
130
+ const projected = {
131
+ kind: block.kind,
132
+ value: block.value,
133
+ };
134
+ if (block.id !== undefined)
135
+ projected.id = block.id;
136
+ if (block.language !== undefined)
137
+ projected.language = block.language;
138
+ return projected;
139
+ }
140
+ if (block.kind === "table") {
141
+ const projected = {
142
+ kind: block.kind,
143
+ align: [...block.data.align],
144
+ header: block.data.header.map((cell) => cell.map(projectInline)),
145
+ rows: block.data.rows.map((row) => row.map((cell) => cell.map(projectInline))),
146
+ };
147
+ if (block.id !== undefined)
148
+ projected.id = block.id;
149
+ if (block.caption !== undefined)
150
+ projected.caption = block.caption.map(projectInline);
151
+ if (block.pluginVersion !== undefined)
152
+ projected.pluginVersion = block.pluginVersion;
153
+ return projected;
154
+ }
155
+ if (block.kind === "callout") {
156
+ const projected = {
157
+ kind: block.kind,
158
+ variant: block.variant,
159
+ children: block.children.map(projectBlock),
160
+ pluginVersion: block.pluginVersion,
161
+ };
162
+ if (block.id !== undefined)
163
+ projected.id = block.id;
164
+ if (block.title !== undefined)
165
+ projected.title = block.title.map(projectInline);
166
+ return projected;
167
+ }
168
+ if (block.kind === "invalid") {
169
+ return { kind: block.kind, raw: block.raw };
170
+ }
171
+ const projected = {
172
+ kind: block.kind,
173
+ children: block.children.map(projectInline),
174
+ };
175
+ if (block.id !== undefined)
176
+ projected.id = block.id;
177
+ if (block.kind === "heading")
178
+ projected.level = block.level;
179
+ return projected;
180
+ }
181
+ const blocks = document.blocks.map((block) => projectBlock(block));
182
+ return sha256(canonicalJson({
183
+ azemarkVersion: document.azemarkVersion,
184
+ schemaVersion: document.schemaVersion,
185
+ metadata,
186
+ blocks,
187
+ }));
188
+ }
189
+ //# sourceMappingURL=hash.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hash.js","sourceRoot":"","sources":["../src/hash.ts"],"names":[],"mappings":"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"}
package/dist/help.d.ts ADDED
@@ -0,0 +1,9 @@
1
+ import type { CapabilitiesReport } from "./capabilities.js";
2
+ import type { VersionReport } from "./version.js";
3
+ export declare const HELP_COMMANDS: readonly ["render", "validate", "watch", "serve", "format", "capabilities", "version"];
4
+ export type HelpCommand = (typeof HELP_COMMANDS)[number];
5
+ export declare function globalHelp(): string;
6
+ export declare function commandHelp(command: HelpCommand): string;
7
+ export declare function versionLine(): string;
8
+ export declare function humanVersionReport(report: VersionReport): string;
9
+ export declare function humanCapabilitiesReport(report: CapabilitiesReport): string;
package/dist/help.js ADDED
@@ -0,0 +1,102 @@
1
+ import { CAPABILITY_COMMANDS } from "./capabilities.js";
2
+ import { TOOL_VERSION } from "./tool-version.js";
3
+ export const HELP_COMMANDS = [
4
+ "render",
5
+ "validate",
6
+ "watch",
7
+ "serve",
8
+ "format",
9
+ "capabilities",
10
+ "version",
11
+ ];
12
+ function usageFor(name) {
13
+ const entry = CAPABILITY_COMMANDS.find((command) => command.name === name);
14
+ return entry?.usage ?? `azeforge ${name}`;
15
+ }
16
+ function summaryFor(name) {
17
+ const entry = CAPABILITY_COMMANDS.find((command) => command.name === name);
18
+ return entry?.summary ?? "";
19
+ }
20
+ export function globalHelp() {
21
+ const lines = [
22
+ "azeforge — deterministic semantic publishing compiler.",
23
+ "",
24
+ "Usage:",
25
+ " azeforge <command> [options]",
26
+ " azeforge --help | -h | help [command] (takes no other options)",
27
+ " azeforge --version",
28
+ "",
29
+ "Commands:",
30
+ ];
31
+ for (const name of HELP_COMMANDS) {
32
+ lines.push(` ${name.padEnd(12, " ")} ${summaryFor(name)}`);
33
+ }
34
+ lines.push("", "Machine output:", " --diagnostics json validate, render, format, watch, serve emit one JSON report on stdout;", " also selects machine output for capabilities and version.", " --json capabilities and version emit the machine payload on stdout.", " Human reports, help, and diagnostics use stderr; stdout carries only the requested payload.", "", "Exit codes:", " 0 success; an optionally unavailable engine is reported in the payload, not as a failure.", " 1 validation or compilation failure, or no trustworthy manifest could be produced.", " 2 invalid CLI usage or conflicting options.", "", `Run \`azeforge <command> --help\` for command details (azeforge ${TOOL_VERSION}).`);
35
+ return `${lines.join("\n")}\n`;
36
+ }
37
+ export function commandHelp(command) {
38
+ const lines = [
39
+ `azeforge ${command} — ${summaryFor(command)}`,
40
+ "",
41
+ "Usage:",
42
+ ` ${usageFor(command)}`,
43
+ "",
44
+ ];
45
+ switch (command) {
46
+ case "render": {
47
+ lines.push("Options:", " --output <artifact> Artifact destination (.html, .svg, .png, .pdf).", " --stdout Write the Artifact to stdout (requires --format).", " --format <format> One of html, svg, png, pdf.", " --theme <theme> One of default, academic, dark-presentation.", " --allow-raw-latex Permit raw LaTeX escape hatches.", " --diagnostics json Emit one JSON diagnostics report on stdout.");
48
+ break;
49
+ }
50
+ case "validate": {
51
+ lines.push("Options:", " --allow-raw-latex Permit raw LaTeX escape hatches.", " --diagnostics json Emit one JSON diagnostics report on stdout.");
52
+ break;
53
+ }
54
+ case "watch": {
55
+ lines.push("Options:", " --output <artifact> Required Artifact destination.", " --format <format> One of html, svg, png, pdf.", " --theme <theme> One of default, academic, dark-presentation.", " --allow-raw-latex Permit raw LaTeX escape hatches.", " --diagnostics json Emit newline-delimited JSON events on stdout.");
56
+ break;
57
+ }
58
+ case "serve": {
59
+ lines.push("Options:", " --port <port> Loopback port (0-65535, default 0). Binds 127.0.0.1 only.", " --theme <theme> One of default, academic, dark-presentation.", " --allow-raw-latex Permit raw LaTeX escape hatches.", " --diagnostics json Emit newline-delimited JSON events on stdout.");
60
+ break;
61
+ }
62
+ case "format": {
63
+ lines.push("Options:", " --write Rewrite the Source file in place.", " --check Exit 1 when the Source needs formatting.", " --stdin Read Source from stdin (rejects --write).", " --diagnostics json Emit one JSON diagnostics report on stdout.");
64
+ break;
65
+ }
66
+ case "capabilities": {
67
+ lines.push("Options:", " --probe Perform local-only availability checks.", " --json Emit the machine manifest on stdout.", "", "Without --json, a human report goes to stderr and stdout stays empty.", "Static output reports engine availability as unknown.");
68
+ break;
69
+ }
70
+ case "version": {
71
+ lines.push("Options:", " --json Emit the machine version document on stdout.", "", "Without --json, a human report goes to stderr and stdout stays empty.");
72
+ break;
73
+ }
74
+ }
75
+ lines.push("", "Conflicting or unknown options exit 2.");
76
+ return `${lines.join("\n")}\n`;
77
+ }
78
+ export function versionLine() {
79
+ return `azeforge ${TOOL_VERSION}\n`;
80
+ }
81
+ export function humanVersionReport(report) {
82
+ return [
83
+ `azeforge ${report.tool.version}`,
84
+ `azemark versions: ${report.source.azemarkVersions.join(", ")}`,
85
+ `document schema versions: ${report.document.schemaVersions.join(", ")}`,
86
+ "",
87
+ ].join("\n");
88
+ }
89
+ export function humanCapabilitiesReport(report) {
90
+ return [
91
+ `azeforge ${report.tool.version} capabilities`,
92
+ `commands: ${report.commands.length} (${report.commands.map((command) => command.name).join(", ")})`,
93
+ `plugins: ${report.plugins.length} (${report.plugins.map((plugin) => plugin.type).join(", ")})`,
94
+ `renderers: ${report.renderers.length} (${report.renderers.map((renderer) => renderer.id).join(", ")})`,
95
+ `themes: ${report.themes.length} (${report.themes.map((theme) => theme.id).join(", ")})`,
96
+ `source: azemark ${report.source.azemarkVersions.join(", ")}`,
97
+ `runtime: node ${report.runtime.node.supported.join(", ")} on ${report.runtime.os.supported.join(", ")} (canonical ${report.runtime.canonical.os} ${report.runtime.canonical.arch} node ${report.runtime.canonical.node})`,
98
+ "Run `azeforge capabilities --json` for the complete machine manifest.",
99
+ "",
100
+ ].join("\n");
101
+ }
102
+ //# sourceMappingURL=help.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"help.js","sourceRoot":"","sources":["../src/help.ts"],"names":[],"mappings":"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"}