@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/theme.js ADDED
@@ -0,0 +1,89 @@
1
+ export const defaultTheme = Object.freeze({
2
+ id: "default",
3
+ version: "1.0.0",
4
+ title: "Default",
5
+ colorScheme: "light",
6
+ colors: Object.freeze({
7
+ background: "#ffffff",
8
+ foreground: "#171717",
9
+ muted: "#5f6368",
10
+ }),
11
+ typography: Object.freeze({
12
+ proseFontFamily: "Inter",
13
+ bodyFontWeight: 400,
14
+ headingFontWeight: 700,
15
+ lineHeight: 1.6,
16
+ headingLineHeight: 1.2,
17
+ paragraphSpacingEm: 1,
18
+ }),
19
+ geometry: Object.freeze({
20
+ canvasWidthPx: 960,
21
+ contentWidthPx: 800,
22
+ paddingPx: 48,
23
+ }),
24
+ });
25
+ export const academicTheme = Object.freeze({
26
+ id: "academic",
27
+ version: "1.0.0",
28
+ title: "Academic",
29
+ colorScheme: "light",
30
+ colors: Object.freeze({
31
+ background: "#fdfcf9",
32
+ foreground: "#1c1917",
33
+ muted: "#78716c",
34
+ }),
35
+ typography: Object.freeze({
36
+ proseFontFamily: "Inter",
37
+ bodyFontWeight: 400,
38
+ headingFontWeight: 700,
39
+ lineHeight: 1.7,
40
+ headingLineHeight: 1.3,
41
+ paragraphSpacingEm: 1.1,
42
+ }),
43
+ geometry: Object.freeze({
44
+ canvasWidthPx: 880,
45
+ contentWidthPx: 700,
46
+ paddingPx: 56,
47
+ }),
48
+ });
49
+ export const darkPresentationTheme = Object.freeze({
50
+ id: "dark-presentation",
51
+ version: "1.0.0",
52
+ title: "Dark Presentation",
53
+ colorScheme: "dark",
54
+ colors: Object.freeze({
55
+ background: "#0f172a",
56
+ foreground: "#e2e8f0",
57
+ muted: "#94a3b8",
58
+ }),
59
+ typography: Object.freeze({
60
+ proseFontFamily: "Inter",
61
+ bodyFontWeight: 400,
62
+ headingFontWeight: 700,
63
+ lineHeight: 1.5,
64
+ headingLineHeight: 1.2,
65
+ paragraphSpacingEm: 1,
66
+ }),
67
+ geometry: Object.freeze({
68
+ canvasWidthPx: 1280,
69
+ contentWidthPx: 1024,
70
+ paddingPx: 64,
71
+ }),
72
+ });
73
+ export const builtInThemes = Object.freeze([
74
+ defaultTheme,
75
+ academicTheme,
76
+ darkPresentationTheme,
77
+ ]);
78
+ export function copyAndFreezeTheme(theme) {
79
+ return Object.freeze({
80
+ id: theme.id,
81
+ version: theme.version,
82
+ title: theme.title,
83
+ colorScheme: theme.colorScheme,
84
+ colors: Object.freeze({ ...theme.colors }),
85
+ typography: Object.freeze({ ...theme.typography }),
86
+ geometry: Object.freeze({ ...theme.geometry }),
87
+ });
88
+ }
89
+ //# sourceMappingURL=theme.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"theme.js","sourceRoot":"","sources":["../src/theme.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ /** Single source of truth for the CLI SemVer reported in every machine envelope. */
2
+ export declare const TOOL_VERSION: "0.1.0";
3
+ export type ToolVersion = typeof TOOL_VERSION;
@@ -0,0 +1,3 @@
1
+ /** Single source of truth for the CLI SemVer reported in every machine envelope. */
2
+ export const TOOL_VERSION = "0.1.0";
3
+ //# sourceMappingURL=tool-version.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tool-version.js","sourceRoot":"","sources":["../src/tool-version.ts"],"names":[],"mappings":"AAAA,oFAAoF;AACpF,MAAM,CAAC,MAAM,YAAY,GAAG,OAAgB,CAAC"}
@@ -0,0 +1 @@
1
+ export declare function isObjectRecord(value: unknown): value is Record<string, unknown>;
@@ -0,0 +1,4 @@
1
+ export function isObjectRecord(value) {
2
+ return value !== null && typeof value === "object" && !Array.isArray(value);
3
+ }
4
+ //# sourceMappingURL=type-guards.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"type-guards.js","sourceRoot":"","sources":["../src/type-guards.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,cAAc,CAAC,KAAc;IAC3C,OAAO,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AAC9E,CAAC"}
@@ -0,0 +1,2 @@
1
+ import type { Diagnostic } from "./model.js";
2
+ export declare function validateDocumentSchema(document: unknown): readonly Diagnostic[];
@@ -0,0 +1,248 @@
1
+ import { isObjectRecord } from "./type-guards.js";
2
+ import { createDiagnostic } from "./diagnostics.js";
3
+ const OUTPUT_FORMATS = {
4
+ html: true,
5
+ svg: true,
6
+ png: true,
7
+ pdf: true,
8
+ };
9
+ function hasOnlyKeys(record, allowed) {
10
+ return Object.keys(record).every((key) => allowed.includes(key));
11
+ }
12
+ function isJsonValue(value) {
13
+ if (value === null ||
14
+ typeof value === "string" ||
15
+ typeof value === "boolean") {
16
+ return true;
17
+ }
18
+ if (typeof value === "number")
19
+ return Number.isFinite(value);
20
+ if (Array.isArray(value))
21
+ return value.every((item) => isJsonValue(item));
22
+ return (isObjectRecord(value) &&
23
+ Object.values(value).every((item) => isJsonValue(item)));
24
+ }
25
+ function isSourcePosition(value) {
26
+ if (!isObjectRecord(value) || !hasOnlyKeys(value, ["line", "column", "offset"])) {
27
+ return false;
28
+ }
29
+ return (Number.isInteger(value.line) &&
30
+ value.line >= 1 &&
31
+ Number.isInteger(value.column) &&
32
+ value.column >= 1 &&
33
+ Number.isInteger(value.offset) &&
34
+ value.offset >= 0);
35
+ }
36
+ function isSourceRange(value) {
37
+ if (!isObjectRecord(value) || !hasOnlyKeys(value, ["start", "end"]))
38
+ return false;
39
+ if (!isSourcePosition(value.start) || !isSourcePosition(value.end))
40
+ return false;
41
+ return (value.start.offset <= value.end.offset &&
42
+ (value.start.line < value.end.line ||
43
+ (value.start.line === value.end.line &&
44
+ value.start.column <= value.end.column)));
45
+ }
46
+ function hasValidCommonBlockFields(value, allowed) {
47
+ return (hasOnlyKeys(value, allowed) &&
48
+ isSourceRange(value.range) &&
49
+ (value.id === undefined || typeof value.id === "string"));
50
+ }
51
+ function isInlineNode(value) {
52
+ if (!isObjectRecord(value))
53
+ return false;
54
+ if (value.kind === "text" || value.kind === "code") {
55
+ return (hasOnlyKeys(value, ["kind", "value"]) && typeof value.value === "string");
56
+ }
57
+ if (value.kind === "emphasis" || value.kind === "strong") {
58
+ return (hasOnlyKeys(value, ["kind", "children"]) &&
59
+ Array.isArray(value.children) &&
60
+ value.children.every((child) => isInlineNode(child)));
61
+ }
62
+ if (value.kind === "break") {
63
+ return hasOnlyKeys(value, ["kind"]);
64
+ }
65
+ if (value.kind === "link") {
66
+ return (hasOnlyKeys(value, ["kind", "href", "children", "title", "range"]) &&
67
+ typeof value.href === "string" &&
68
+ value.href.length > 0 &&
69
+ Array.isArray(value.children) &&
70
+ value.children.every((child) => isInlineNode(child)) &&
71
+ (value.title === undefined || typeof value.title === "string") &&
72
+ (value.range === undefined || isSourceRange(value.range)));
73
+ }
74
+ if (value.kind === "image") {
75
+ return (hasOnlyKeys(value, ["kind", "src", "alt", "title", "range"]) &&
76
+ typeof value.src === "string" &&
77
+ value.src.length > 0 &&
78
+ typeof value.alt === "string" &&
79
+ (value.title === undefined || typeof value.title === "string") &&
80
+ (value.range === undefined || isSourceRange(value.range)));
81
+ }
82
+ return false;
83
+ }
84
+ function hasInlineChildren(value) {
85
+ return Array.isArray(value) && value.every((child) => isInlineNode(child));
86
+ }
87
+ function isParsedBlock(value) {
88
+ if (!isObjectRecord(value))
89
+ return false;
90
+ if (value.kind === "heading") {
91
+ return (hasValidCommonBlockFields(value, ["kind", "level", "children", "range", "id"]) &&
92
+ Number.isInteger(value.level) &&
93
+ value.level >= 1 &&
94
+ value.level <= 6 &&
95
+ hasInlineChildren(value.children));
96
+ }
97
+ if (value.kind === "paragraph") {
98
+ return (hasValidCommonBlockFields(value, ["kind", "children", "range", "id"]) &&
99
+ hasInlineChildren(value.children));
100
+ }
101
+ if (value.kind === "thematicBreak") {
102
+ return hasValidCommonBlockFields(value, ["kind", "range", "id"]);
103
+ }
104
+ if (value.kind === "blockquote") {
105
+ return (hasValidCommonBlockFields(value, ["kind", "children", "range", "id"]) &&
106
+ Array.isArray(value.children) &&
107
+ value.children.every((child) => isParsedBlock(child)));
108
+ }
109
+ if (value.kind === "list") {
110
+ return (hasValidCommonBlockFields(value, ["kind", "ordered", "items", "range", "id", "start"]) &&
111
+ typeof value.ordered === "boolean" &&
112
+ Array.isArray(value.items) &&
113
+ value.items.every((item) => isObjectRecord(item) &&
114
+ hasOnlyKeys(item, ["blocks", "range"]) &&
115
+ Array.isArray(item.blocks) &&
116
+ item.blocks.every((child) => isParsedBlock(child)) &&
117
+ isSourceRange(item.range)) &&
118
+ (value.start === undefined ||
119
+ (Number.isInteger(value.start) && value.start >= 0)));
120
+ }
121
+ if (value.kind === "code") {
122
+ return (hasValidCommonBlockFields(value, ["kind", "value", "range", "id", "language"]) &&
123
+ typeof value.value === "string" &&
124
+ (value.language === undefined || typeof value.language === "string"));
125
+ }
126
+ if (value.kind === "table") {
127
+ return (hasValidCommonBlockFields(value, ["kind", "data", "range", "id", "caption", "pluginVersion"]) &&
128
+ isObjectRecord(value.data) &&
129
+ hasOnlyKeys(value.data, ["align", "header", "rows"]) &&
130
+ Array.isArray(value.data.align) &&
131
+ value.data.align.every((entry) => entry === null || entry === "left" || entry === "center" || entry === "right") &&
132
+ Array.isArray(value.data.header) &&
133
+ value.data.header.every((cell) => Array.isArray(cell) && cell.every((node) => isInlineNode(node))) &&
134
+ Array.isArray(value.data.rows) &&
135
+ value.data.rows.every((row) => Array.isArray(row) &&
136
+ row.every((cell) => Array.isArray(cell) && cell.every((node) => isInlineNode(node)))) &&
137
+ value.data.header.length === value.data.align.length &&
138
+ (value.caption === undefined ||
139
+ (Array.isArray(value.caption) &&
140
+ value.caption.every((node) => isInlineNode(node)))) &&
141
+ (value.pluginVersion === undefined || value.pluginVersion === "1.0.0"));
142
+ }
143
+ if (value.kind === "callout") {
144
+ return (hasValidCommonBlockFields(value, ["kind", "variant", "children", "range", "id", "title", "pluginVersion"]) &&
145
+ typeof value.variant === "string" &&
146
+ value.variant.length > 0 &&
147
+ Array.isArray(value.children) &&
148
+ value.children.every((child) => isParsedBlock(child)) &&
149
+ (value.title === undefined ||
150
+ (Array.isArray(value.title) &&
151
+ value.title.every((node) => isInlineNode(node)))) &&
152
+ value.pluginVersion === "1.0.0");
153
+ }
154
+ if (value.kind === "equation") {
155
+ return (hasOnlyKeys(value, [
156
+ "kind",
157
+ "range",
158
+ "id",
159
+ "pluginVersion",
160
+ "syntax",
161
+ "source",
162
+ "tex",
163
+ "number",
164
+ "align",
165
+ ]) &&
166
+ isSourceRange(value.range) &&
167
+ (value.id === undefined || typeof value.id === "string") &&
168
+ value.pluginVersion === "1.0.0" &&
169
+ (value.syntax === "readable" || value.syntax === "latex") &&
170
+ typeof value.source === "string" &&
171
+ value.source.length > 0 &&
172
+ typeof value.tex === "string" &&
173
+ value.tex.length > 0 &&
174
+ (value.number === undefined || typeof value.number === "boolean") &&
175
+ (value.align === undefined ||
176
+ value.align === "left" ||
177
+ value.align === "center" ||
178
+ value.align === "right"));
179
+ }
180
+ if (value.kind === "mermaid") {
181
+ return (hasOnlyKeys(value, [
182
+ "kind",
183
+ "range",
184
+ "id",
185
+ "pluginVersion",
186
+ "diagramType",
187
+ "source",
188
+ "title",
189
+ "description",
190
+ ]) &&
191
+ isSourceRange(value.range) &&
192
+ (value.id === undefined || typeof value.id === "string") &&
193
+ value.pluginVersion === "1.0.0" &&
194
+ typeof value.diagramType === "string" &&
195
+ value.diagramType.length > 0 &&
196
+ typeof value.source === "string" &&
197
+ value.source.length > 0 &&
198
+ (value.title === undefined || typeof value.title === "string") &&
199
+ (value.description === undefined || typeof value.description === "string"));
200
+ }
201
+ if (value.kind === "invalid") {
202
+ return (hasOnlyKeys(value, [
203
+ "kind",
204
+ "raw",
205
+ "range",
206
+ "diagnosticIndexes",
207
+ "originalType",
208
+ ]) &&
209
+ typeof value.raw === "string" &&
210
+ isSourceRange(value.range) &&
211
+ Array.isArray(value.diagnosticIndexes) &&
212
+ value.diagnosticIndexes.every((index) => Number.isInteger(index) && index >= 0) &&
213
+ (value.originalType === undefined || typeof value.originalType === "string"));
214
+ }
215
+ return false;
216
+ }
217
+ function isMetadata(value) {
218
+ if (!isObjectRecord(value) ||
219
+ !hasOnlyKeys(value, ["authors", "extensions", "title", "theme", "outputs"]) ||
220
+ !Array.isArray(value.authors) ||
221
+ !value.authors.every((author) => typeof author === "string") ||
222
+ !isObjectRecord(value.extensions) ||
223
+ !Object.entries(value.extensions).every(([key, extension]) => /^x-[a-z0-9]+(?:-[a-z0-9]+)*$/.test(key) && isJsonValue(extension)) ||
224
+ (value.title !== undefined && typeof value.title !== "string") ||
225
+ (value.theme !== undefined && typeof value.theme !== "string")) {
226
+ return false;
227
+ }
228
+ if (value.outputs === undefined)
229
+ return true;
230
+ return (Array.isArray(value.outputs) &&
231
+ value.outputs.every((output) => typeof output === "string" && OUTPUT_FORMATS[output] === true) &&
232
+ new Set(value.outputs).size === value.outputs.length);
233
+ }
234
+ export function validateDocumentSchema(document) {
235
+ const valid = isObjectRecord(document) &&
236
+ hasOnlyKeys(document, ["azemarkVersion", "schemaVersion", "metadata", "blocks"]) &&
237
+ document.azemarkVersion === 1 &&
238
+ document.schemaVersion === 1 &&
239
+ isMetadata(document.metadata) &&
240
+ Array.isArray(document.blocks) &&
241
+ document.blocks.every((block) => isParsedBlock(block));
242
+ if (valid)
243
+ return [];
244
+ return [
245
+ createDiagnostic("azeforge.document#schema-invalid", "error", "ParsedDocument does not conform to AzeMark Document schema v1."),
246
+ ];
247
+ }
248
+ //# sourceMappingURL=validate-document.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validate-document.js","sourceRoot":"","sources":["../src/validate-document.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,37 @@
1
+ import type { JsonValue } from "./model.js";
2
+ import { TOOL_VERSION } from "./tool-version.js";
3
+ import { type RuntimeSupport } from "./runtime-support.js";
4
+ export declare const VERSION_SCHEMA_ID: "azeforge.version/v1";
5
+ export declare const VERSION_SCHEMA_VERSION: 1;
6
+ export interface VersionedSchema {
7
+ readonly id: string;
8
+ readonly version: number | string;
9
+ }
10
+ /**
11
+ * Every public machine document schema in canonical order. Source/data
12
+ * schema versions track their owning Plugin version; envelope schemas
13
+ * carry their own schemaVersion.
14
+ */
15
+ export declare function publicSchemaVersions(): readonly VersionedSchema[];
16
+ export interface VersionReport {
17
+ readonly schema: typeof VERSION_SCHEMA_ID;
18
+ readonly schemaVersion: typeof VERSION_SCHEMA_VERSION;
19
+ readonly tool: Readonly<{
20
+ name: "azeforge";
21
+ version: typeof TOOL_VERSION;
22
+ }>;
23
+ readonly runtime: RuntimeSupport;
24
+ readonly source: Readonly<{
25
+ azemarkVersions: readonly [1];
26
+ }>;
27
+ readonly document: Readonly<{
28
+ schemaVersions: readonly [1];
29
+ }>;
30
+ readonly schemas: readonly VersionedSchema[];
31
+ }
32
+ /**
33
+ * Canonical version document. Contains only release versions — never
34
+ * workstation facts such as paths, platforms, or dependency state.
35
+ */
36
+ export declare function createVersionReport(): VersionReport;
37
+ export declare const versionJsonSchema: JsonValue;
@@ -0,0 +1,111 @@
1
+ import { ACCEPTANCE_SCHEMA_ID, ACCEPTANCE_SCHEMA_VERSION, } from "./acceptance.js";
2
+ import { CALLOUT_PLUGIN_VERSION, calloutDataSchema, calloutSourceSchema, } from "./callout.js";
3
+ import { DIAGNOSTICS_SCHEMA_ID } from "./diagnostics-json.js";
4
+ import { EQUATION_PLUGIN_VERSION, equationDataSchema, equationSourceSchema, } from "./equation.js";
5
+ import { MERMAID_PLUGIN_VERSION, mermaidDataSchema, mermaidSourceSchema, } from "./mermaid.js";
6
+ import { TABLE_PLUGIN_VERSION, tableDataSchema, tableSourceSchema, } from "./table.js";
7
+ import { TOOL_VERSION } from "./tool-version.js";
8
+ import { WATCH_EVENT_SCHEMA_ID } from "./watch-events.js";
9
+ import { CAPABILITIES_SCHEMA_ID } from "./capabilities-json.js";
10
+ import { RUNTIME_SUPPORT, runtimeSupportJsonSchema, } from "./runtime-support.js";
11
+ export const VERSION_SCHEMA_ID = "azeforge.version/v1";
12
+ export const VERSION_SCHEMA_VERSION = 1;
13
+ function schemaId(schema) {
14
+ return schema.$id;
15
+ }
16
+ /**
17
+ * Every public machine document schema in canonical order. Source/data
18
+ * schema versions track their owning Plugin version; envelope schemas
19
+ * carry their own schemaVersion.
20
+ */
21
+ export function publicSchemaVersions() {
22
+ return Object.freeze([
23
+ { id: DIAGNOSTICS_SCHEMA_ID, version: 1 },
24
+ { id: CAPABILITIES_SCHEMA_ID, version: 1 },
25
+ { id: VERSION_SCHEMA_ID, version: 1 },
26
+ { id: ACCEPTANCE_SCHEMA_ID, version: ACCEPTANCE_SCHEMA_VERSION },
27
+ { id: WATCH_EVENT_SCHEMA_ID, version: 1 },
28
+ { id: schemaId(equationSourceSchema), version: EQUATION_PLUGIN_VERSION },
29
+ { id: schemaId(equationDataSchema), version: EQUATION_PLUGIN_VERSION },
30
+ { id: schemaId(mermaidSourceSchema), version: MERMAID_PLUGIN_VERSION },
31
+ { id: schemaId(mermaidDataSchema), version: MERMAID_PLUGIN_VERSION },
32
+ { id: schemaId(tableSourceSchema), version: TABLE_PLUGIN_VERSION },
33
+ { id: schemaId(tableDataSchema), version: TABLE_PLUGIN_VERSION },
34
+ { id: schemaId(calloutSourceSchema), version: CALLOUT_PLUGIN_VERSION },
35
+ { id: schemaId(calloutDataSchema), version: CALLOUT_PLUGIN_VERSION },
36
+ ]);
37
+ }
38
+ /**
39
+ * Canonical version document. Contains only release versions — never
40
+ * workstation facts such as paths, platforms, or dependency state.
41
+ */
42
+ export function createVersionReport() {
43
+ return {
44
+ schema: VERSION_SCHEMA_ID,
45
+ schemaVersion: VERSION_SCHEMA_VERSION,
46
+ tool: { name: "azeforge", version: TOOL_VERSION },
47
+ runtime: RUNTIME_SUPPORT,
48
+ source: { azemarkVersions: [1] },
49
+ document: { schemaVersions: [1] },
50
+ schemas: publicSchemaVersions(),
51
+ };
52
+ }
53
+ export const versionJsonSchema = Object.freeze({
54
+ $schema: "https://json-schema.org/draft/2020-12/schema",
55
+ $id: VERSION_SCHEMA_ID,
56
+ type: "object",
57
+ required: ["schema", "schemaVersion", "tool", "runtime", "source", "document", "schemas"],
58
+ additionalProperties: false,
59
+ properties: {
60
+ schema: { const: VERSION_SCHEMA_ID },
61
+ schemaVersion: { const: 1 },
62
+ tool: {
63
+ type: "object",
64
+ required: ["name", "version"],
65
+ additionalProperties: false,
66
+ properties: {
67
+ name: { const: "azeforge" },
68
+ version: { type: "string", pattern: "^(?:0|[1-9]\\d*)\\.(?:0|[1-9]\\d*)\\.(?:0|[1-9]\\d*)$" },
69
+ },
70
+ },
71
+ runtime: runtimeSupportJsonSchema,
72
+ source: {
73
+ type: "object",
74
+ required: ["azemarkVersions"],
75
+ additionalProperties: false,
76
+ properties: {
77
+ azemarkVersions: {
78
+ type: "array",
79
+ minItems: 1,
80
+ items: { type: "integer", minimum: 1 },
81
+ },
82
+ },
83
+ },
84
+ document: {
85
+ type: "object",
86
+ required: ["schemaVersions"],
87
+ additionalProperties: false,
88
+ properties: {
89
+ schemaVersions: {
90
+ type: "array",
91
+ minItems: 1,
92
+ items: { type: "integer", minimum: 1 },
93
+ },
94
+ },
95
+ },
96
+ schemas: {
97
+ type: "array",
98
+ minItems: 1,
99
+ items: {
100
+ type: "object",
101
+ required: ["id", "version"],
102
+ additionalProperties: false,
103
+ properties: {
104
+ id: { type: "string", minLength: 1 },
105
+ version: { type: ["string", "number"] },
106
+ },
107
+ },
108
+ },
109
+ },
110
+ });
111
+ //# sourceMappingURL=version.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"version.js","sourceRoot":"","sources":["../src/version.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ import type { AzeDocument } from "./model.js";
2
+ /** Every image `src` referenced by a Document, in Source order. */
3
+ export declare function collectImageSources(document: AzeDocument): string[];
4
+ export interface WatchPaths {
5
+ /** Existing root-confined files to watch directly. */
6
+ readonly files: readonly string[];
7
+ /** Root-confined candidate paths that do not exist yet. */
8
+ readonly missing: readonly string[];
9
+ }
10
+ /**
11
+ * Partition image references into existing files and missing root-confined
12
+ * candidates. Remote, absolute, escaping, and unsupported-type references are
13
+ * compile errors, not watch targets, so they are skipped here.
14
+ */
15
+ export declare function resolveWatchPaths(projectRoot: string, imageSources: readonly string[]): Promise<WatchPaths>;