@inventarch/language 0.0.0-stage → 1.0.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 (181) hide show
  1. package/LICENSE +202 -0
  2. package/NOTICE +4 -0
  3. package/README.md +33 -2
  4. package/SPEC.md +225 -0
  5. package/dist/ast.d.ts +114 -0
  6. package/dist/ast.d.ts.map +1 -0
  7. package/dist/ast.js +2 -0
  8. package/dist/ast.js.map +1 -0
  9. package/dist/compile/compile.d.ts +82 -0
  10. package/dist/compile/compile.d.ts.map +1 -0
  11. package/dist/compile/compile.js +249 -0
  12. package/dist/compile/compile.js.map +1 -0
  13. package/dist/compile/index.d.ts +6 -0
  14. package/dist/compile/index.d.ts.map +1 -0
  15. package/dist/compile/index.js +4 -0
  16. package/dist/compile/index.js.map +1 -0
  17. package/dist/compile/spellings.d.ts +7 -0
  18. package/dist/compile/spellings.d.ts.map +1 -0
  19. package/dist/compile/spellings.js +47 -0
  20. package/dist/compile/spellings.js.map +1 -0
  21. package/dist/compile/values.d.ts +32 -0
  22. package/dist/compile/values.d.ts.map +1 -0
  23. package/dist/compile/values.js +48 -0
  24. package/dist/compile/values.js.map +1 -0
  25. package/dist/diagnostics.d.ts +22 -0
  26. package/dist/diagnostics.d.ts.map +1 -0
  27. package/dist/diagnostics.js +71 -0
  28. package/dist/diagnostics.js.map +1 -0
  29. package/dist/editor/index.d.ts +49 -0
  30. package/dist/editor/index.d.ts.map +1 -0
  31. package/dist/editor/index.js +155 -0
  32. package/dist/editor/index.js.map +1 -0
  33. package/dist/fold.d.ts +8 -0
  34. package/dist/fold.d.ts.map +1 -0
  35. package/dist/fold.js +26 -0
  36. package/dist/fold.js.map +1 -0
  37. package/dist/formatter.d.ts +10 -0
  38. package/dist/formatter.d.ts.map +1 -0
  39. package/dist/formatter.js +108 -0
  40. package/dist/formatter.js.map +1 -0
  41. package/dist/identity.d.ts +31 -0
  42. package/dist/identity.d.ts.map +1 -0
  43. package/dist/identity.js +64 -0
  44. package/dist/identity.js.map +1 -0
  45. package/dist/index.d.ts +35 -0
  46. package/dist/index.d.ts.map +1 -0
  47. package/dist/index.js +22 -0
  48. package/dist/index.js.map +1 -0
  49. package/dist/kernel.generated.d.ts +99 -0
  50. package/dist/kernel.generated.d.ts.map +1 -0
  51. package/dist/kernel.generated.js +422 -0
  52. package/dist/kernel.generated.js.map +1 -0
  53. package/dist/parser/index.d.ts +5 -0
  54. package/dist/parser/index.d.ts.map +1 -0
  55. package/dist/parser/index.js +3 -0
  56. package/dist/parser/index.js.map +1 -0
  57. package/dist/parser/parser.d.ts +11 -0
  58. package/dist/parser/parser.d.ts.map +1 -0
  59. package/dist/parser/parser.js +297 -0
  60. package/dist/parser/parser.js.map +1 -0
  61. package/dist/parser/values.d.ts +24 -0
  62. package/dist/parser/values.d.ts.map +1 -0
  63. package/dist/parser/values.js +284 -0
  64. package/dist/parser/values.js.map +1 -0
  65. package/dist/paths.d.ts +6 -0
  66. package/dist/paths.d.ts.map +1 -0
  67. package/dist/paths.js +21 -0
  68. package/dist/paths.js.map +1 -0
  69. package/dist/references.d.ts +15 -0
  70. package/dist/references.d.ts.map +1 -0
  71. package/dist/references.js +40 -0
  72. package/dist/references.js.map +1 -0
  73. package/dist/registry/consent.d.ts +11 -0
  74. package/dist/registry/consent.d.ts.map +1 -0
  75. package/dist/registry/consent.js +31 -0
  76. package/dist/registry/consent.js.map +1 -0
  77. package/dist/registry/extract.d.ts +11 -0
  78. package/dist/registry/extract.d.ts.map +1 -0
  79. package/dist/registry/extract.js +275 -0
  80. package/dist/registry/extract.js.map +1 -0
  81. package/dist/registry/fields.d.ts +14 -0
  82. package/dist/registry/fields.d.ts.map +1 -0
  83. package/dist/registry/fields.js +30 -0
  84. package/dist/registry/fields.js.map +1 -0
  85. package/dist/registry/floor.d.ts +17 -0
  86. package/dist/registry/floor.d.ts.map +1 -0
  87. package/dist/registry/floor.js +42 -0
  88. package/dist/registry/floor.js.map +1 -0
  89. package/dist/registry/index.d.ts +19 -0
  90. package/dist/registry/index.d.ts.map +1 -0
  91. package/dist/registry/index.js +80 -0
  92. package/dist/registry/index.js.map +1 -0
  93. package/dist/registry/merge.d.ts +32 -0
  94. package/dist/registry/merge.d.ts.map +1 -0
  95. package/dist/registry/merge.js +84 -0
  96. package/dist/registry/merge.js.map +1 -0
  97. package/dist/registry/order.d.ts +12 -0
  98. package/dist/registry/order.d.ts.map +1 -0
  99. package/dist/registry/order.js +134 -0
  100. package/dist/registry/order.js.map +1 -0
  101. package/dist/registry/records.d.ts +14 -0
  102. package/dist/registry/records.d.ts.map +1 -0
  103. package/dist/registry/records.js +64 -0
  104. package/dist/registry/records.js.map +1 -0
  105. package/dist/registry/schemas.d.ts +20 -0
  106. package/dist/registry/schemas.d.ts.map +1 -0
  107. package/dist/registry/schemas.js +282 -0
  108. package/dist/registry/schemas.js.map +1 -0
  109. package/dist/registry/types.d.ts +130 -0
  110. package/dist/registry/types.d.ts.map +1 -0
  111. package/dist/registry/types.js +2 -0
  112. package/dist/registry/types.js.map +1 -0
  113. package/dist/scanner/index.d.ts +16 -0
  114. package/dist/scanner/index.d.ts.map +1 -0
  115. package/dist/scanner/index.js +78 -0
  116. package/dist/scanner/index.js.map +1 -0
  117. package/dist/scanner/lines.d.ts +46 -0
  118. package/dist/scanner/lines.d.ts.map +1 -0
  119. package/dist/scanner/lines.js +210 -0
  120. package/dist/scanner/lines.js.map +1 -0
  121. package/dist/scanner/tokenize.d.ts +9 -0
  122. package/dist/scanner/tokenize.d.ts.map +1 -0
  123. package/dist/scanner/tokenize.js +125 -0
  124. package/dist/scanner/tokenize.js.map +1 -0
  125. package/dist/scanner/tokens.d.ts +52 -0
  126. package/dist/scanner/tokens.d.ts.map +1 -0
  127. package/dist/scanner/tokens.js +2 -0
  128. package/dist/scanner/tokens.js.map +1 -0
  129. package/dist/semantic/cases.d.ts +12 -0
  130. package/dist/semantic/cases.d.ts.map +1 -0
  131. package/dist/semantic/cases.js +81 -0
  132. package/dist/semantic/cases.js.map +1 -0
  133. package/dist/semantic/cells.d.ts +9 -0
  134. package/dist/semantic/cells.d.ts.map +1 -0
  135. package/dist/semantic/cells.js +120 -0
  136. package/dist/semantic/cells.js.map +1 -0
  137. package/dist/semantic/conditions.d.ts +22 -0
  138. package/dist/semantic/conditions.d.ts.map +1 -0
  139. package/dist/semantic/conditions.js +54 -0
  140. package/dist/semantic/conditions.js.map +1 -0
  141. package/dist/semantic/contracts.d.ts +11 -0
  142. package/dist/semantic/contracts.d.ts.map +1 -0
  143. package/dist/semantic/contracts.js +75 -0
  144. package/dist/semantic/contracts.js.map +1 -0
  145. package/dist/semantic/edges.d.ts +19 -0
  146. package/dist/semantic/edges.d.ts.map +1 -0
  147. package/dist/semantic/edges.js +129 -0
  148. package/dist/semantic/edges.js.map +1 -0
  149. package/dist/semantic/placement.d.ts +6 -0
  150. package/dist/semantic/placement.d.ts.map +1 -0
  151. package/dist/semantic/placement.js +47 -0
  152. package/dist/semantic/placement.js.map +1 -0
  153. package/dist/semantic/requirements.d.ts +14 -0
  154. package/dist/semantic/requirements.d.ts.map +1 -0
  155. package/dist/semantic/requirements.js +32 -0
  156. package/dist/semantic/requirements.js.map +1 -0
  157. package/dist/semantic/resolve.d.ts +23 -0
  158. package/dist/semantic/resolve.d.ts.map +1 -0
  159. package/dist/semantic/resolve.js +62 -0
  160. package/dist/semantic/resolve.js.map +1 -0
  161. package/dist/semantic/selectors.d.ts +10 -0
  162. package/dist/semantic/selectors.d.ts.map +1 -0
  163. package/dist/semantic/selectors.js +33 -0
  164. package/dist/semantic/selectors.js.map +1 -0
  165. package/dist/semantic/types.d.ts +56 -0
  166. package/dist/semantic/types.d.ts.map +1 -0
  167. package/dist/semantic/types.js +11 -0
  168. package/dist/semantic/types.js.map +1 -0
  169. package/dist/semantic/variants.d.ts +10 -0
  170. package/dist/semantic/variants.d.ts.map +1 -0
  171. package/dist/semantic/variants.js +63 -0
  172. package/dist/semantic/variants.js.map +1 -0
  173. package/dist/semantic/vocabulary.d.ts +12 -0
  174. package/dist/semantic/vocabulary.d.ts.map +1 -0
  175. package/dist/semantic/vocabulary.js +33 -0
  176. package/dist/semantic/vocabulary.js.map +1 -0
  177. package/dist/taxonomy.d.ts +51 -0
  178. package/dist/taxonomy.d.ts.map +1 -0
  179. package/dist/taxonomy.js +42 -0
  180. package/dist/taxonomy.js.map +1 -0
  181. package/package.json +220 -3
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ast.d.ts","sourceRoot":"","sources":["../src/ast.ts"],"names":[],"mappings":"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"}
package/dist/ast.js ADDED
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=ast.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ast.js","sourceRoot":"","sources":["../src/ast.ts"],"names":[],"mappings":""}
@@ -0,0 +1,82 @@
1
+ import type { FileNode, Span } from '../ast.js';
2
+ import type { Diagnostic } from '../diagnostics.js';
3
+ import type { FrozenRegistry, Location, Placement } from '../registry/types.js';
4
+ import type { Kind, Provenance } from '../taxonomy.js';
5
+ import type { CompiledValue } from './values.js';
6
+ import type { Cell, CompiledEdge, Requirement, Selector, Variant } from '../semantic/types.js';
7
+ export type { CompiledEdge } from '../semantic/types.js';
8
+ export interface CompiledField {
9
+ readonly key: string;
10
+ readonly value: CompiledValue;
11
+ /** Authored words retained for tools; admitted semantic carriers also expose canonical terms. */
12
+ readonly when?: readonly string[];
13
+ readonly span: Span;
14
+ readonly fields?: readonly CompiledChild[];
15
+ }
16
+ /** A `- value` line beside the fields of its section or block. */
17
+ export interface CompiledItem {
18
+ readonly item: CompiledValue;
19
+ readonly span: Span;
20
+ }
21
+ export type CompiledChild = CompiledField | CompiledItem;
22
+ export interface CompiledSection {
23
+ readonly name: string;
24
+ readonly span: Span;
25
+ readonly fields: readonly CompiledChild[];
26
+ }
27
+ /** The structured record and semantic products of spec 10.2. Errors leave only a preview, not loadable data. */
28
+ export interface CompiledRecord {
29
+ readonly identity: string;
30
+ readonly system: string;
31
+ readonly kind: Kind;
32
+ readonly facet: string;
33
+ readonly name: string;
34
+ readonly displayName: string;
35
+ readonly discriminator: string;
36
+ readonly parent?: string;
37
+ readonly source: {
38
+ readonly path: string;
39
+ readonly line: number;
40
+ readonly endLine: number;
41
+ };
42
+ readonly head: readonly CompiledField[];
43
+ readonly sections: readonly CompiledSection[];
44
+ readonly edges: readonly CompiledEdge[];
45
+ readonly cells: readonly Cell[];
46
+ readonly selectors: readonly Selector[];
47
+ readonly variants: readonly Variant[];
48
+ readonly requirements: readonly Requirement[];
49
+ readonly schema: string;
50
+ readonly provenance: Provenance;
51
+ readonly placement: Placement;
52
+ }
53
+ /** Spec 10.4: authored spans plus arrays parallel to every emitted semantic product. */
54
+ export interface SourceMapEntry {
55
+ readonly identity: string;
56
+ readonly header: Span;
57
+ readonly sections: readonly {
58
+ readonly name: string;
59
+ readonly span: Span;
60
+ }[];
61
+ readonly fields: readonly {
62
+ readonly path: string;
63
+ readonly span: Span;
64
+ }[];
65
+ /** Parallel to the record's emitted edges. */
66
+ readonly edges: readonly Span[];
67
+ readonly cells: readonly Span[];
68
+ readonly selectors: readonly Span[];
69
+ readonly variants: readonly Span[];
70
+ readonly requirements: readonly Span[];
71
+ }
72
+ export interface CompileResult {
73
+ readonly records: readonly CompiledRecord[];
74
+ readonly diagnostics: readonly Diagnostic[];
75
+ readonly sourceMap: readonly SourceMapEntry[];
76
+ }
77
+ /**
78
+ * Lower one parsed file at a location (spec 10.1). Pure: no I/O, no clock, no default vocabulary.
79
+ * pool contains external admitted occurrences and must exclude this canonical source path.
80
+ */
81
+ export declare function compile(ast: FileNode, registry: FrozenRegistry, location: Location, pool: readonly CompiledRecord[]): CompileResult;
82
+ //# sourceMappingURL=compile.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"compile.d.ts","sourceRoot":"","sources":["../../src/compile/compile.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,249 @@
1
+ import { diag } from '../diagnostics.js';
2
+ import { collisions, identityOf, renderIdentity } from '../identity.js';
3
+ import { canonicalPath } from '../paths.js';
4
+ import { spelledAs } from '../registry/fields.js';
5
+ import { FLOOR_SYSTEM } from '../registry/floor.js';
6
+ import { conditionsIn, recordsIn } from '../registry/records.js';
7
+ import { sortDiagnostics } from '../registry/index.js';
8
+ import { spellingsFor } from './spellings.js';
9
+ import { compiledValue, resolveKey } from './values.js';
10
+ import { readCells } from '../semantic/cells.js';
11
+ import { readSelectors } from '../semantic/selectors.js';
12
+ import { readVariants } from '../semantic/variants.js';
13
+ import { readEdges } from '../semantic/edges.js';
14
+ import { readContract } from '../semantic/contracts.js';
15
+ import { validateCase } from '../semantic/cases.js';
16
+ import { misplacedConditions } from '../semantic/placement.js';
17
+ import { requirementCollisions } from '../semantic/requirements.js';
18
+ import { indexedResolver, validatePool } from '../semantic/resolve.js';
19
+ /**
20
+ * Lower one parsed file at a location (spec 10.1). Pure: no I/O, no clock, no default vocabulary.
21
+ * pool contains external admitted occurrences and must exclude this canonical source path.
22
+ */
23
+ export function compile(ast, registry, location, pool) {
24
+ validatePool(registry, pool, ast.path);
25
+ const syntaxRefused = new Set(recordsIn(ast, ast.syntaxDiagnostics ?? [])
26
+ .filter((source) => source.errors.length > 0)
27
+ .map((source) => source.record));
28
+ const ctx = {
29
+ registry,
30
+ location,
31
+ path: canonicalPath(ast.path),
32
+ diagnostics: [],
33
+ drafts: [],
34
+ syntaxRefused,
35
+ };
36
+ for (const record of ast.records)
37
+ compileRecord(record, undefined, ctx);
38
+ // One identity twice in this file is a collision on both (spec 3.2); across files the caller and the graph decide.
39
+ const found = collisions(ctx.drafts.map((draft) => draft.occurrence));
40
+ ctx.diagnostics.push(...found.diagnostics);
41
+ // Parents precede their descendants in source order. Follow actual occurrences, not names:
42
+ // a refused enclosing record cannot leave compiled children with a dangling parent.
43
+ const refused = new Set(found.refused);
44
+ const kept = [];
45
+ for (const draft of ctx.drafts.sort((a, b) => a.record.source.line - b.record.source.line)) {
46
+ if (draft.parent !== undefined && refused.has(draft.parent))
47
+ refused.add(draft.occurrence);
48
+ if (!refused.has(draft.occurrence))
49
+ kept.push(draft);
50
+ }
51
+ const local = kept.map((draft) => lowerProducts(draft, ctx));
52
+ const candidates = [...local.map((draft) => draft.record), ...pool];
53
+ const resolver = indexedResolver(registry, candidates);
54
+ const related = local.map((draft) => lowerRelationships(draft, resolver, ctx));
55
+ const occurrences = related.flatMap(({ record }) => record.requirements.map((requirement) => ({
56
+ id: requirement.id,
57
+ identity: record.identity,
58
+ path: record.source.path,
59
+ line: requirement.span.line,
60
+ requirement,
61
+ })));
62
+ const duplicateRequirements = requirementCollisions(occurrences);
63
+ ctx.diagnostics.push(...duplicateRequirements.diagnostics);
64
+ const refusedRequirements = new Set([...duplicateRequirements.refused].map((occurrence) => occurrence.requirement));
65
+ const final = related.map((draft) => {
66
+ const requirements = draft.record.requirements.filter((requirement) => !refusedRequirements.has(requirement));
67
+ return {
68
+ ...draft,
69
+ record: { ...draft.record, requirements },
70
+ map: { ...draft.map, requirements: requirements.map((requirement) => requirement.span) },
71
+ };
72
+ });
73
+ return {
74
+ records: final.map((draft) => draft.record),
75
+ diagnostics: sortDiagnostics(ctx.diagnostics),
76
+ sourceMap: final.map((draft) => draft.map),
77
+ };
78
+ }
79
+ /** Schema extraction owns all of that dialect's conditions, including extra field blocks. */
80
+ function schemaOwnsRefusal(node) {
81
+ return (node.discriminator === 'schema' &&
82
+ (node.sections.some((section) => section.name === 'when') ||
83
+ conditionsIn([...node.head, ...node.sections.flatMap((section) => section.children)]).length > 0));
84
+ }
85
+ function lowerProducts(draft, ctx) {
86
+ if (schemaOwnsRefusal(draft.node))
87
+ return draft;
88
+ const registration = ctx.registry.registrations.get(draft.record.discriminator);
89
+ const cells = readCells(draft.node, ctx.path);
90
+ const selectors = readSelectors(draft.node, ctx.path);
91
+ const variants = readVariants(draft.node, ctx.path, spellingsFor(registration, ctx.registry.schemas.get(registration.schema), 'governance'));
92
+ ctx.diagnostics.push(...misplacedConditions(draft.node, ctx.path), ...cells.diagnostics, ...selectors.diagnostics, ...variants.diagnostics);
93
+ return {
94
+ ...draft,
95
+ record: { ...draft.record, cells: cells.cells, selectors: selectors.selectors, variants: variants.variants },
96
+ map: {
97
+ ...draft.map,
98
+ cells: cells.cells.map((cell) => cell.span),
99
+ selectors: selectors.spans,
100
+ variants: variants.variants.map((variant) => variant.span),
101
+ },
102
+ };
103
+ }
104
+ function lowerRelationships(draft, pool, ctx) {
105
+ if (schemaOwnsRefusal(draft.node))
106
+ return draft;
107
+ const edges = readEdges(draft.node, draft.record, ctx.registry, pool, draft.record.edges);
108
+ const contract = readContract(draft.node, ctx.path, ctx.registry, edges.edges, edges.refusedBindings);
109
+ const scenario = validateCase(draft.node, ctx.path, ctx.registry, edges.edges, edges.refusedBindings);
110
+ ctx.diagnostics.push(...edges.diagnostics, ...contract.diagnostics, ...scenario.diagnostics);
111
+ return {
112
+ ...draft,
113
+ record: { ...draft.record, edges: edges.edges, requirements: contract.requirements },
114
+ map: { ...draft.map, edges: edges.edges.map((edge) => edge.span) },
115
+ };
116
+ }
117
+ function compileRecord(record, parent, ctx) {
118
+ if (ctx.syntaxRefused.has(record))
119
+ return; // parser owns this refusal; descendants cannot outlive their parent
120
+ const { registry, path } = ctx;
121
+ const line = record.span.line;
122
+ const registration = registry.registrations.get(record.discriminator);
123
+ if (registration === undefined) {
124
+ const why = registry.blocked.has(record.discriminator)
125
+ ? 'is blocked at this location: two systems register it at the winning band'
126
+ : 'is not registered at this location';
127
+ ctx.diagnostics.push(diag('IA-LANG-DISCRIMINATOR-UNREGISTERED', path, line, `${path}:${line}: discriminator '${record.discriminator}' ${why}; visible systems: ${registry.order.join(', ')}`));
128
+ return; // nothing beneath a refused record compiles: a nested record would have no parent identity
129
+ }
130
+ const identified = identityOf(record, registration, path);
131
+ ctx.diagnostics.push(...identified.diagnostics);
132
+ const identity = identified.identity;
133
+ if (identity === undefined)
134
+ return;
135
+ const occurrence = { identity: identity.identity, path, line, band: ctx.location.placement.band };
136
+ const schema = registry.schemas.get(registration.schema);
137
+ const fieldSpans = [];
138
+ const head = [];
139
+ for (const field of record.head) {
140
+ const compiled = compileField(field, spellingsFor(registration, schema, 'head'), 'head', occurrence, fieldSpans, ctx);
141
+ if (!spelledAs(field, ['facet']))
142
+ head.push(compiled); // facet is consumed; its source span and nested records survive
143
+ }
144
+ const sections = record.sections.map((section) => ({
145
+ name: section.name,
146
+ span: section.span,
147
+ fields: compileChildren(section.children, spellingsFor(registration, schema, section.name), section.name, occurrence, fieldSpans, ctx),
148
+ }));
149
+ const edges = registration.system === FLOOR_SYSTEM && registration.keyword === 'system' ? groundEdges(record, identity, ctx) : [];
150
+ const compiled = {
151
+ identity: identity.identity,
152
+ system: identity.system,
153
+ kind: identity.kind,
154
+ facet: identity.facet,
155
+ name: identity.name,
156
+ displayName: identity.displayName,
157
+ discriminator: record.discriminator,
158
+ ...(parent === undefined ? {} : { parent: parent.identity }),
159
+ source: { path, line: record.span.line, endLine: record.span.endLine },
160
+ head,
161
+ sections,
162
+ edges,
163
+ cells: [],
164
+ selectors: [],
165
+ variants: [],
166
+ requirements: [],
167
+ schema: renderIdentity(FLOOR_SYSTEM, 'contract', 'head', registration.schema),
168
+ provenance: ctx.location.provenance,
169
+ placement: ctx.location.placement,
170
+ };
171
+ ctx.drafts.push({
172
+ node: record,
173
+ record: compiled,
174
+ map: {
175
+ identity: identity.identity,
176
+ header: { line, endLine: line },
177
+ sections: sections.map((s) => ({ name: s.name, span: s.span })),
178
+ fields: fieldSpans,
179
+ edges: edges.map((edge) => edge.span),
180
+ cells: [],
181
+ selectors: [],
182
+ variants: [],
183
+ requirements: [],
184
+ },
185
+ occurrence,
186
+ parent,
187
+ });
188
+ }
189
+ function compileChildren(children, spellings, prefix, parent, fieldSpans, ctx) {
190
+ const out = [];
191
+ for (const child of children) {
192
+ if (child.kind === 'record') {
193
+ compileRecord(child, parent, ctx);
194
+ continue;
195
+ } // containment is structural, not a field (spec 2.5)
196
+ if (child.kind === 'item') {
197
+ out.push({ item: compiledValue(child.value), span: child.span });
198
+ continue;
199
+ }
200
+ out.push(compileField(child, spellings, prefix, parent, fieldSpans, ctx));
201
+ }
202
+ return out;
203
+ }
204
+ function compileField(field, spellings, prefix, parent, fieldSpans, ctx) {
205
+ const { key, value } = resolveKey(field, spellings);
206
+ const fieldPath = `${prefix}.${key}`;
207
+ fieldSpans.push({ path: fieldPath, span: field.span });
208
+ const nested = field.children.length === 0
209
+ ? undefined
210
+ : compileChildren(field.children, spellings, fieldPath, parent, fieldSpans, ctx);
211
+ return {
212
+ key,
213
+ value,
214
+ ...(field.when === undefined ? {} : { when: field.when }),
215
+ span: field.span,
216
+ ...(nested === undefined ? {} : { fields: nested }),
217
+ };
218
+ }
219
+ /** Spec 4.2: the compiler emits a `ground` edge from a system record to each schema an entry it registered names. */
220
+ function groundEdges(record, identity, ctx) {
221
+ const { registry } = ctx;
222
+ const system = registry.systems.get(identity.name);
223
+ if (system === undefined ||
224
+ canonicalPath(system.path) !== ctx.path ||
225
+ system.band !== ctx.location.placement.band ||
226
+ system.span.line !== record.span.line)
227
+ return [];
228
+ const edges = [];
229
+ const named = new Set();
230
+ for (const entry of system.entries) {
231
+ const registration = registry.registrations.get(entry.keyword);
232
+ if (registration === undefined ||
233
+ registration.system !== system.name ||
234
+ registration.band !== system.band ||
235
+ registration.schema !== entry.schema ||
236
+ named.has(entry.schema))
237
+ continue;
238
+ named.add(entry.schema);
239
+ edges.push({
240
+ predicate: 'ground',
241
+ direction: 'out',
242
+ reference: { kind: 'ref', discriminator: 'schema', name: entry.schema },
243
+ target: renderIdentity(FLOOR_SYSTEM, 'contract', 'head', entry.schema),
244
+ span: entry.span,
245
+ });
246
+ }
247
+ return edges;
248
+ }
249
+ //# sourceMappingURL=compile.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"compile.js","sourceRoot":"","sources":["../../src/compile/compile.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ export { compile } from './compile.js';
2
+ export type { CompileResult, CompiledChild, CompiledEdge, CompiledField, CompiledItem, CompiledRecord, CompiledSection, SourceMapEntry, } from './compile.js';
3
+ export { HEAD_SPELLINGS, spellingsFor } from './spellings.js';
4
+ export { compiledValue, resolveKey } from './values.js';
5
+ export type { CompiledValue, Spelling } from './values.js';
6
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/compile/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,YAAY,EACV,aAAa,EACb,aAAa,EACb,YAAY,EACZ,aAAa,EACb,YAAY,EACZ,cAAc,EACd,eAAe,EACf,cAAc,GACf,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9D,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACxD,YAAY,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC"}
@@ -0,0 +1,4 @@
1
+ export { compile } from './compile.js';
2
+ export { HEAD_SPELLINGS, spellingsFor } from './spellings.js';
3
+ export { compiledValue, resolveKey } from './values.js';
4
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/compile/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAWvC,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9D,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC"}
@@ -0,0 +1,7 @@
1
+ import type { Registration, SchemaDeclaration } from '../registry/types.js';
2
+ import type { Spelling } from './values.js';
3
+ /** The head keys spec 2.2 names. A schema spells more under `head.<key>` fields. */
4
+ export declare const HEAD_SPELLINGS: readonly Spelling[];
5
+ /** The keys spelled for one section of a record, or for its head. */
6
+ export declare function spellingsFor(registration: Registration, schema: SchemaDeclaration | undefined, section: 'head' | string): readonly Spelling[];
7
+ //# sourceMappingURL=spellings.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"spellings.d.ts","sourceRoot":"","sources":["../../src/compile/spellings.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAC5E,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAE5C,oFAAoF;AACpF,eAAO,MAAM,cAAc,EAAE,SAAS,QAAQ,EAO7C,CAAC;AA6BF,qEAAqE;AACrE,wBAAgB,YAAY,CAC1B,YAAY,EAAE,YAAY,EAC1B,MAAM,EAAE,iBAAiB,GAAG,SAAS,EACrC,OAAO,EAAE,MAAM,GAAG,MAAM,GACvB,SAAS,QAAQ,EAAE,CAOrB"}
@@ -0,0 +1,47 @@
1
+ import { FLOOR_SYSTEM } from '../registry/floor.js';
2
+ /** The head keys spec 2.2 names. A schema spells more under `head.<key>` fields. */
3
+ export const HEAD_SPELLINGS = [
4
+ ['facet'],
5
+ ['version'],
6
+ ['provider'],
7
+ ['describes'],
8
+ ['steward'],
9
+ ['lowers', 'to'],
10
+ ];
11
+ /** What the floor spells inside its own two records (spec 4.2 and 4.3). An entry `agent lowers to binding` keeps `agent` as its key: the registry reads it, compile only carries it. */
12
+ const FLOOR = new Map([
13
+ [
14
+ 'system',
15
+ new Map([
16
+ ['requires', []],
17
+ ['discriminators', []],
18
+ ['edges', []],
19
+ ['relationships', []],
20
+ ]),
21
+ ],
22
+ [
23
+ 'schema',
24
+ new Map([
25
+ ['sections', [['must', 'have'], ['may', 'have'], ['closed'], ['open']]],
26
+ [
27
+ 'fields',
28
+ [
29
+ ['must', 'have'],
30
+ ['may', 'have'],
31
+ ],
32
+ ],
33
+ ['edges', [['must'], ['may']]],
34
+ ]),
35
+ ],
36
+ ]);
37
+ /** The keys spelled for one section of a record, or for its head. */
38
+ export function spellingsFor(registration, schema, section) {
39
+ const floor = registration.system === FLOOR_SYSTEM ? FLOOR.get(registration.keyword) : undefined;
40
+ if (floor !== undefined)
41
+ return section === 'head' ? HEAD_SPELLINGS : (floor.get(section) ?? []);
42
+ const spelled = (schema?.fields ?? [])
43
+ .filter((field) => field.section === section)
44
+ .map((field) => field.key.split(' '));
45
+ return section === 'head' ? [...HEAD_SPELLINGS, ...spelled] : spelled;
46
+ }
47
+ //# sourceMappingURL=spellings.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"spellings.js","sourceRoot":"","sources":["../../src/compile/spellings.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAIpD,oFAAoF;AACpF,MAAM,CAAC,MAAM,cAAc,GAAwB;IACjD,CAAC,OAAO,CAAC;IACT,CAAC,SAAS,CAAC;IACX,CAAC,UAAU,CAAC;IACZ,CAAC,WAAW,CAAC;IACb,CAAC,SAAS,CAAC;IACX,CAAC,QAAQ,EAAE,IAAI,CAAC;CACjB,CAAC;AAEF,wLAAwL;AACxL,MAAM,KAAK,GAAkE,IAAI,GAAG,CAAC;IACnF;QACE,QAAQ;QACR,IAAI,GAAG,CAA8B;YACnC,CAAC,UAAU,EAAE,EAAE,CAAC;YAChB,CAAC,gBAAgB,EAAE,EAAE,CAAC;YACtB,CAAC,OAAO,EAAE,EAAE,CAAC;YACb,CAAC,eAAe,EAAE,EAAE,CAAC;SACtB,CAAC;KACH;IACD;QACE,QAAQ;QACR,IAAI,GAAG,CAA8B;YACnC,CAAC,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC;YACvE;gBACE,QAAQ;gBACR;oBACE,CAAC,MAAM,EAAE,MAAM,CAAC;oBAChB,CAAC,KAAK,EAAE,MAAM,CAAC;iBAChB;aACF;YACD,CAAC,OAAO,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;SAC/B,CAAC;KACH;CACF,CAAC,CAAC;AAEH,qEAAqE;AACrE,MAAM,UAAU,YAAY,CAC1B,YAA0B,EAC1B,MAAqC,EACrC,OAAwB;IAExB,MAAM,KAAK,GAAG,YAAY,CAAC,MAAM,KAAK,YAAY,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IACjG,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,OAAO,KAAK,MAAM,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;IACjG,MAAM,OAAO,GAAG,CAAC,MAAM,EAAE,MAAM,IAAI,EAAE,CAAC;SACnC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,OAAO,KAAK,OAAO,CAAC;SAC5C,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;IACxC,OAAO,OAAO,KAAK,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,cAAc,EAAE,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;AACxE,CAAC"}
@@ -0,0 +1,32 @@
1
+ import type { FieldNode, Value } from '../ast.js';
2
+ /** A compiled value: the AST value without its raw spelling (spec 10.2). */
3
+ export type CompiledValue = {
4
+ readonly kind: 'scalar' | 'string' | 'prose';
5
+ readonly text: string;
6
+ } | {
7
+ readonly kind: 'ref';
8
+ readonly discriminator: string;
9
+ readonly name: string;
10
+ readonly fragment?: string;
11
+ } | {
12
+ readonly kind: 'list';
13
+ readonly items: readonly CompiledValue[];
14
+ } | {
15
+ readonly kind: 'block';
16
+ } | {
17
+ readonly kind: 'none';
18
+ };
19
+ export declare function compiledValue(value: Value): CompiledValue;
20
+ /** The words of a spelled key: `['lowers', 'to']`. */
21
+ export type Spelling = readonly string[];
22
+ /**
23
+ * The key rule (spec 2.1) resolved against spelled keys (spec 10.2). A line whose value is not a
24
+ * bare scalar keeps the parser's key: every word before the value. On an all-words line the longest
25
+ * spelling that starts the words is the key and the remaining words are the scalar; with no spelling
26
+ * the parser's first-word key stands. The assertive form keeps the parser's reading.
27
+ */
28
+ export declare function resolveKey(field: FieldNode, spellings: readonly Spelling[]): {
29
+ readonly key: string;
30
+ readonly value: CompiledValue;
31
+ };
32
+ //# sourceMappingURL=values.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"values.d.ts","sourceRoot":"","sources":["../../src/compile/values.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,WAAW,CAAC;AAElD,4EAA4E;AAC5E,MAAM,MAAM,aAAa,GACrB;IAAE,QAAQ,CAAC,IAAI,EAAE,QAAQ,GAAG,QAAQ,GAAG,OAAO,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GACvE;IAAE,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC;IAAC,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAE,GAC3G;IAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,SAAS,aAAa,EAAE,CAAA;CAAE,GACnE;IAAE,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAA;CAAE,GAC1B;IAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC;AAE9B,wBAAgB,aAAa,CAAC,KAAK,EAAE,KAAK,GAAG,aAAa,CAoBzD;AAED,sDAAsD;AACtD,MAAM,MAAM,QAAQ,GAAG,SAAS,MAAM,EAAE,CAAC;AAEzC;;;;;GAKG;AACH,wBAAgB,UAAU,CACxB,KAAK,EAAE,SAAS,EAChB,SAAS,EAAE,SAAS,QAAQ,EAAE,GAC7B;IAAE,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,aAAa,CAAA;CAAE,CAezD"}
@@ -0,0 +1,48 @@
1
+ export function compiledValue(value) {
2
+ switch (value.kind) {
3
+ case 'scalar':
4
+ case 'string':
5
+ case 'prose':
6
+ return { kind: value.kind, text: value.text };
7
+ case 'ref':
8
+ return {
9
+ kind: 'ref',
10
+ discriminator: value.discriminator,
11
+ name: value.name,
12
+ ...(value.fragment === undefined ? {} : { fragment: value.fragment }),
13
+ };
14
+ case 'list':
15
+ return { kind: 'list', items: value.items.map(compiledValue) };
16
+ case 'block':
17
+ return { kind: 'block' };
18
+ case 'none':
19
+ return { kind: 'none' };
20
+ }
21
+ }
22
+ /**
23
+ * The key rule (spec 2.1) resolved against spelled keys (spec 10.2). A line whose value is not a
24
+ * bare scalar keeps the parser's key: every word before the value. On an all-words line the longest
25
+ * spelling that starts the words is the key and the remaining words are the scalar; with no spelling
26
+ * the parser's first-word key stands. The assertive form keeps the parser's reading.
27
+ */
28
+ export function resolveKey(field, spellings) {
29
+ if (field.assertive === true || field.value.kind !== 'scalar')
30
+ return { key: field.key, value: compiledValue(field.value) };
31
+ let best;
32
+ for (const spelling of spellings) {
33
+ if (spelling.length === 0 || spelling.length > field.words.length)
34
+ continue;
35
+ if (!spelling.every((word, index) => field.words[index] === word))
36
+ continue;
37
+ if (best === undefined || spelling.length > best.length)
38
+ best = spelling;
39
+ }
40
+ if (best === undefined)
41
+ return { key: field.key, value: compiledValue(field.value) };
42
+ const rest = field.words.slice(best.length);
43
+ return {
44
+ key: best.join(' '),
45
+ value: rest.length === 0 ? { kind: 'none' } : { kind: 'scalar', text: rest.join(' ') },
46
+ };
47
+ }
48
+ //# sourceMappingURL=values.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"values.js","sourceRoot":"","sources":["../../src/compile/values.ts"],"names":[],"mappings":"AAUA,MAAM,UAAU,aAAa,CAAC,KAAY;IACxC,QAAQ,KAAK,CAAC,IAAI,EAAE,CAAC;QACnB,KAAK,QAAQ,CAAC;QACd,KAAK,QAAQ,CAAC;QACd,KAAK,OAAO;YACV,OAAO,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC;QAChD,KAAK,KAAK;YACR,OAAO;gBACL,IAAI,EAAE,KAAK;gBACX,aAAa,EAAE,KAAK,CAAC,aAAa;gBAClC,IAAI,EAAE,KAAK,CAAC,IAAI;gBAChB,GAAG,CAAC,KAAK,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,KAAK,CAAC,QAAQ,EAAE,CAAC;aACtE,CAAC;QACJ,KAAK,MAAM;YACT,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,aAAa,CAAC,EAAE,CAAC;QACjE,KAAK,OAAO;YACV,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;QAC3B,KAAK,MAAM;YACT,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;IAC5B,CAAC;AACH,CAAC;AAKD;;;;;GAKG;AACH,MAAM,UAAU,UAAU,CACxB,KAAgB,EAChB,SAA8B;IAE9B,IAAI,KAAK,CAAC,SAAS,KAAK,IAAI,IAAI,KAAK,CAAC,KAAK,CAAC,IAAI,KAAK,QAAQ;QAC3D,OAAO,EAAE,GAAG,EAAE,KAAK,CAAC,GAAG,EAAE,KAAK,EAAE,aAAa,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC;IAC/D,IAAI,IAA0B,CAAC;IAC/B,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;QACjC,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,IAAI,QAAQ,CAAC,MAAM,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM;YAAE,SAAS;QAC5E,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,IAAI,CAAC;YAAE,SAAS;QAC5E,IAAI,IAAI,KAAK,SAAS,IAAI,QAAQ,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM;YAAE,IAAI,GAAG,QAAQ,CAAC;IAC3E,CAAC;IACD,IAAI,IAAI,KAAK,SAAS;QAAE,OAAO,EAAE,GAAG,EAAE,KAAK,CAAC,GAAG,EAAE,KAAK,EAAE,aAAa,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC;IACrF,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAC5C,OAAO;QACL,GAAG,EAAE,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;QACnB,KAAK,EAAE,IAAI,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;KACvF,CAAC;AACJ,CAAC"}
@@ -0,0 +1,22 @@
1
+ /** Closed diagnostic inventory from spec section 11 and the colocated semantic contract. */
2
+ export declare const LANG_CODES: readonly ["IA-LANG-PRAGMA-MISSING", "IA-LANG-VERSION-UNSUPPORTED", "IA-LANG-INDENT-TAB", "IA-LANG-INDENT-STEP", "IA-LANG-STRING-UNTERMINATED", "IA-LANG-PROSE-TRAILING", "IA-LANG-PROSE-UNTERMINATED", "IA-LANG-LIST-UNTERMINATED", "IA-LANG-HEADER-MALFORMED", "IA-LANG-HEAD-FIELD-AFTER-SECTION", "IA-LANG-TOPLEVEL-UNEXPECTED", "IA-LANG-DISCRIMINATOR-UNREGISTERED", "IA-LANG-FACET-UNDECLARED", "IA-LANG-IDENTITY-COLLISION", "IA-LANG-KEYWORD-RESERVED", "IA-LANG-SYSTEM-CYCLE", "IA-LANG-REGISTRATION-INCOMPLETE", "IA-LANG-KIND-UNKNOWN", "IA-LANG-CATEGORY-UNKNOWN", "IA-LANG-PREDICATE-UNKNOWN", "IA-LANG-SCHEMA-MISSING", "IA-LANG-SCHEMA-KIND-MISMATCH", "IA-LANG-DISCRIMINATOR-CONFLICT", "IA-LANG-SCHEMA-EDGE-AS-FIELD", "IA-LANG-SYSTEM-MISSING", "IA-LANG-SCHEMA-MALFORMED", "IA-LANG-CELL-MALFORMED", "IA-LANG-SELECTOR-MALFORMED", "IA-LANG-SELECTOR-AXIS-UNKNOWN", "IA-LANG-SELECTOR-VALUE-UNKNOWN", "IA-LANG-VERB-UNKNOWN", "IA-LANG-EDGE-MALFORMED", "IA-LANG-EDGE-TARGET-MISSING", "IA-LANG-EDGE-TARGET-AMBIGUOUS", "IA-LANG-EDGE-UNCONSENTED", "IA-LANG-CONDITION-TERM-UNKNOWN", "IA-LANG-CONDITION-MALFORMED", "IA-LANG-CONDITION-VALUE-UNKNOWN", "IA-LANG-CONDITION-MISPLACED", "IA-LANG-VARIANT-DUPLICATE", "IA-LANG-REQUIREMENT-DUPLICATE", "IA-LANG-REQUIREMENT-MALFORMED", "IA-LANG-CONTRACT-UNBOUND", "IA-LANG-CONTRACT-BINDS-RETIRED", "IA-LANG-CONTRACT-SCHEMA-SECTION", "IA-LANG-CASE-UNBOUND", "IA-LANG-CASE-MALFORMED", "IA-LANG-FORMAT-LOSSY", "IA-LANG-VALUE-TRAILING", "IA-LANG-LIST-MALFORMED", "IA-LANG-REF-MALFORMED", "IA-LANG-FIELD-KEY-MISSING"];
3
+ export type LangCode = (typeof LANG_CODES)[number];
4
+ export type Severity = 'error' | 'warning';
5
+ export interface Diagnostic {
6
+ readonly code: LangCode;
7
+ readonly severity: Severity;
8
+ readonly path: string;
9
+ readonly line: number;
10
+ readonly endLine?: number;
11
+ readonly message: string;
12
+ readonly identity?: string;
13
+ }
14
+ export interface DiagOptions {
15
+ readonly severity?: Severity;
16
+ readonly endLine?: number;
17
+ readonly identity?: string;
18
+ }
19
+ /** Build a diagnostic. Severity defaults to error; a construct that produced one produced nothing else. */
20
+ export declare function diag(code: LangCode, path: string, line: number, message: string, options?: DiagOptions): Diagnostic;
21
+ export declare function isError(d: Diagnostic): boolean;
22
+ //# sourceMappingURL=diagnostics.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"diagnostics.d.ts","sourceRoot":"","sources":["../src/diagnostics.ts"],"names":[],"mappings":"AAAA,4FAA4F;AAC5F,eAAO,MAAM,UAAU,8/CAqDb,CAAC;AAEX,MAAM,MAAM,QAAQ,GAAG,CAAC,OAAO,UAAU,CAAC,CAAC,MAAM,CAAC,CAAC;AACnD,MAAM,MAAM,QAAQ,GAAG,OAAO,GAAG,SAAS,CAAC;AAE3C,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC;IACxB,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC;IAC5B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,QAAQ,CAAC,EAAE,QAAQ,CAAC;IAC7B,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED,2GAA2G;AAC3G,wBAAgB,IAAI,CAClB,IAAI,EAAE,QAAQ,EACd,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,MAAM,EACf,OAAO,GAAE,WAAgB,GACxB,UAAU,CAUZ;AAED,wBAAgB,OAAO,CAAC,CAAC,EAAE,UAAU,GAAG,OAAO,CAE9C"}