@lapidist/dtif-parser 0.2.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 (199) hide show
  1. package/CHANGELOG.md +15 -0
  2. package/README.md +50 -0
  3. package/dist/ast/nodes.d.ts +73 -0
  4. package/dist/ast/nodes.d.ts.map +1 -0
  5. package/dist/ast/nodes.js +2 -0
  6. package/dist/ast/nodes.js.map +1 -0
  7. package/dist/ast/normaliser/context.d.ts +22 -0
  8. package/dist/ast/normaliser/context.d.ts.map +1 -0
  9. package/dist/ast/normaliser/context.js +26 -0
  10. package/dist/ast/normaliser/context.js.map +1 -0
  11. package/dist/ast/normaliser/document.d.ts +4 -0
  12. package/dist/ast/normaliser/document.d.ts.map +1 -0
  13. package/dist/ast/normaliser/document.js +49 -0
  14. package/dist/ast/normaliser/document.js.map +1 -0
  15. package/dist/ast/normaliser/fields.d.ts +7 -0
  16. package/dist/ast/normaliser/fields.d.ts.map +1 -0
  17. package/dist/ast/normaliser/fields.js +71 -0
  18. package/dist/ast/normaliser/fields.js.map +1 -0
  19. package/dist/ast/normaliser/metadata.d.ts +5 -0
  20. package/dist/ast/normaliser/metadata.d.ts.map +1 -0
  21. package/dist/ast/normaliser/metadata.js +201 -0
  22. package/dist/ast/normaliser/metadata.js.map +1 -0
  23. package/dist/ast/normaliser/nodes.d.ts +5 -0
  24. package/dist/ast/normaliser/nodes.d.ts.map +1 -0
  25. package/dist/ast/normaliser/nodes.js +108 -0
  26. package/dist/ast/normaliser/nodes.js.map +1 -0
  27. package/dist/ast/normaliser/overrides.d.ts +7 -0
  28. package/dist/ast/normaliser/overrides.d.ts.map +1 -0
  29. package/dist/ast/normaliser/overrides.js +156 -0
  30. package/dist/ast/normaliser/overrides.js.map +1 -0
  31. package/dist/ast/normaliser/utils.d.ts +12 -0
  32. package/dist/ast/normaliser/utils.d.ts.map +1 -0
  33. package/dist/ast/normaliser/utils.js +45 -0
  34. package/dist/ast/normaliser/utils.js.map +1 -0
  35. package/dist/ast/normaliser.d.ts +5 -0
  36. package/dist/ast/normaliser.d.ts.map +1 -0
  37. package/dist/ast/normaliser.js +25 -0
  38. package/dist/ast/normaliser.js.map +1 -0
  39. package/dist/cli/args.d.ts +3 -0
  40. package/dist/cli/args.d.ts.map +1 -0
  41. package/dist/cli/args.js +202 -0
  42. package/dist/cli/args.js.map +1 -0
  43. package/dist/cli/io.d.ts +3 -0
  44. package/dist/cli/io.d.ts.map +1 -0
  45. package/dist/cli/io.js +65 -0
  46. package/dist/cli/io.js.map +1 -0
  47. package/dist/cli/output.d.ts +5 -0
  48. package/dist/cli/output.d.ts.map +1 -0
  49. package/dist/cli/output.js +113 -0
  50. package/dist/cli/output.js.map +1 -0
  51. package/dist/cli/parse.d.ts +4 -0
  52. package/dist/cli/parse.d.ts.map +1 -0
  53. package/dist/cli/parse.js +134 -0
  54. package/dist/cli/parse.js.map +1 -0
  55. package/dist/cli/serialize.d.ts +12 -0
  56. package/dist/cli/serialize.d.ts.map +1 -0
  57. package/dist/cli/serialize.js +92 -0
  58. package/dist/cli/serialize.js.map +1 -0
  59. package/dist/cli/types.d.ts +118 -0
  60. package/dist/cli/types.d.ts.map +1 -0
  61. package/dist/cli/types.js +2 -0
  62. package/dist/cli/types.js.map +1 -0
  63. package/dist/diagnostics/bag.d.ts +26 -0
  64. package/dist/diagnostics/bag.d.ts.map +1 -0
  65. package/dist/diagnostics/bag.js +101 -0
  66. package/dist/diagnostics/bag.js.map +1 -0
  67. package/dist/diagnostics/codes.d.ts +72 -0
  68. package/dist/diagnostics/codes.d.ts.map +1 -0
  69. package/dist/diagnostics/codes.js +94 -0
  70. package/dist/diagnostics/codes.js.map +1 -0
  71. package/dist/diagnostics/severity.d.ts +8 -0
  72. package/dist/diagnostics/severity.d.ts.map +1 -0
  73. package/dist/diagnostics/severity.js +35 -0
  74. package/dist/diagnostics/severity.js.map +1 -0
  75. package/dist/graph/builder/context.d.ts +23 -0
  76. package/dist/graph/builder/context.d.ts.map +1 -0
  77. package/dist/graph/builder/context.js +29 -0
  78. package/dist/graph/builder/context.js.map +1 -0
  79. package/dist/graph/builder/nodes.d.ts +6 -0
  80. package/dist/graph/builder/nodes.d.ts.map +1 -0
  81. package/dist/graph/builder/nodes.js +85 -0
  82. package/dist/graph/builder/nodes.js.map +1 -0
  83. package/dist/graph/builder/overrides.d.ts +5 -0
  84. package/dist/graph/builder/overrides.d.ts.map +1 -0
  85. package/dist/graph/builder/overrides.js +62 -0
  86. package/dist/graph/builder/overrides.js.map +1 -0
  87. package/dist/graph/builder/references.d.ts +7 -0
  88. package/dist/graph/builder/references.d.ts.map +1 -0
  89. package/dist/graph/builder/references.js +93 -0
  90. package/dist/graph/builder/references.js.map +1 -0
  91. package/dist/graph/builder.d.ts +5 -0
  92. package/dist/graph/builder.d.ts.map +1 -0
  93. package/dist/graph/builder.js +30 -0
  94. package/dist/graph/builder.js.map +1 -0
  95. package/dist/graph/nodes.d.ts +60 -0
  96. package/dist/graph/nodes.d.ts.map +1 -0
  97. package/dist/graph/nodes.js +2 -0
  98. package/dist/graph/nodes.js.map +1 -0
  99. package/dist/index.d.ts +26 -0
  100. package/dist/index.d.ts.map +1 -0
  101. package/dist/index.js +14 -0
  102. package/dist/index.js.map +1 -0
  103. package/dist/io/decoder/encoding.d.ts +4 -0
  104. package/dist/io/decoder/encoding.d.ts.map +1 -0
  105. package/dist/io/decoder/encoding.js +36 -0
  106. package/dist/io/decoder/encoding.js.map +1 -0
  107. package/dist/io/decoder/errors.d.ts +4 -0
  108. package/dist/io/decoder/errors.d.ts.map +1 -0
  109. package/dist/io/decoder/errors.js +7 -0
  110. package/dist/io/decoder/errors.js.map +1 -0
  111. package/dist/io/decoder/source-map.d.ts +4 -0
  112. package/dist/io/decoder/source-map.d.ts.map +1 -0
  113. package/dist/io/decoder/source-map.js +106 -0
  114. package/dist/io/decoder/source-map.js.map +1 -0
  115. package/dist/io/decoder/yaml.d.ts +8 -0
  116. package/dist/io/decoder/yaml.d.ts.map +1 -0
  117. package/dist/io/decoder/yaml.js +28 -0
  118. package/dist/io/decoder/yaml.js.map +1 -0
  119. package/dist/io/decoder.d.ts +4 -0
  120. package/dist/io/decoder.d.ts.map +1 -0
  121. package/dist/io/decoder.js +19 -0
  122. package/dist/io/decoder.js.map +1 -0
  123. package/dist/io/document-cache.d.ts +15 -0
  124. package/dist/io/document-cache.d.ts.map +1 -0
  125. package/dist/io/document-cache.js +101 -0
  126. package/dist/io/document-cache.js.map +1 -0
  127. package/dist/io/document-loader.d.ts +37 -0
  128. package/dist/io/document-loader.d.ts.map +1 -0
  129. package/dist/io/document-loader.js +255 -0
  130. package/dist/io/document-loader.js.map +1 -0
  131. package/dist/plugins/index.d.ts +7 -0
  132. package/dist/plugins/index.d.ts.map +1 -0
  133. package/dist/plugins/index.js +6 -0
  134. package/dist/plugins/index.js.map +1 -0
  135. package/dist/plugins/registry.d.ts +20 -0
  136. package/dist/plugins/registry.d.ts.map +1 -0
  137. package/dist/plugins/registry.js +136 -0
  138. package/dist/plugins/registry.js.map +1 -0
  139. package/dist/plugins/types.d.ts +48 -0
  140. package/dist/plugins/types.d.ts.map +1 -0
  141. package/dist/plugins/types.js +2 -0
  142. package/dist/plugins/types.js.map +1 -0
  143. package/dist/resolver/document-resolver.d.ts +29 -0
  144. package/dist/resolver/document-resolver.d.ts.map +1 -0
  145. package/dist/resolver/document-resolver.js +551 -0
  146. package/dist/resolver/document-resolver.js.map +1 -0
  147. package/dist/resolver/index.d.ts +3 -0
  148. package/dist/resolver/index.d.ts.map +1 -0
  149. package/dist/resolver/index.js +2 -0
  150. package/dist/resolver/index.js.map +1 -0
  151. package/dist/resolver/internal/constants.d.ts +12 -0
  152. package/dist/resolver/internal/constants.d.ts.map +1 -0
  153. package/dist/resolver/internal/constants.js +8 -0
  154. package/dist/resolver/internal/constants.js.map +1 -0
  155. package/dist/resolver/internal/context.d.ts +8 -0
  156. package/dist/resolver/internal/context.d.ts.map +1 -0
  157. package/dist/resolver/internal/context.js +43 -0
  158. package/dist/resolver/internal/context.js.map +1 -0
  159. package/dist/resolver/internal/helpers.d.ts +16 -0
  160. package/dist/resolver/internal/helpers.d.ts.map +1 -0
  161. package/dist/resolver/internal/helpers.js +53 -0
  162. package/dist/resolver/internal/helpers.js.map +1 -0
  163. package/dist/resolver/internal/resolved-token.d.ts +24 -0
  164. package/dist/resolver/internal/resolved-token.d.ts.map +1 -0
  165. package/dist/resolver/internal/resolved-token.js +26 -0
  166. package/dist/resolver/internal/resolved-token.js.map +1 -0
  167. package/dist/resolver/types.d.ts +51 -0
  168. package/dist/resolver/types.d.ts.map +1 -0
  169. package/dist/resolver/types.js +2 -0
  170. package/dist/resolver/types.js.map +1 -0
  171. package/dist/session/internal/options.d.ts +16 -0
  172. package/dist/session/internal/options.d.ts.map +1 -0
  173. package/dist/session/internal/options.js +30 -0
  174. package/dist/session/internal/options.js.map +1 -0
  175. package/dist/session/types.d.ts +16 -0
  176. package/dist/session/types.d.ts.map +1 -0
  177. package/dist/session/types.js +2 -0
  178. package/dist/session/types.js.map +1 -0
  179. package/dist/session.d.ts +19 -0
  180. package/dist/session.d.ts.map +1 -0
  181. package/dist/session.js +210 -0
  182. package/dist/session.js.map +1 -0
  183. package/dist/types.d.ts +75 -0
  184. package/dist/types.d.ts.map +1 -0
  185. package/dist/types.js +2 -0
  186. package/dist/types.js.map +1 -0
  187. package/dist/utils/json-pointer.d.ts +13 -0
  188. package/dist/utils/json-pointer.d.ts.map +1 -0
  189. package/dist/utils/json-pointer.js +89 -0
  190. package/dist/utils/json-pointer.js.map +1 -0
  191. package/dist/utils/source.d.ts +21 -0
  192. package/dist/utils/source.d.ts.map +1 -0
  193. package/dist/utils/source.js +125 -0
  194. package/dist/utils/source.js.map +1 -0
  195. package/dist/validation/schema-guard.d.ts +20 -0
  196. package/dist/validation/schema-guard.d.ts.map +1 -0
  197. package/dist/validation/schema-guard.js +205 -0
  198. package/dist/validation/schema-guard.js.map +1 -0
  199. package/package.json +49 -0
@@ -0,0 +1,108 @@
1
+ import { DiagnosticCodes } from '../../diagnostics/codes.js';
2
+ import { appendJsonPointer } from '../../utils/json-pointer.js';
3
+ import { getSourceSpan } from './context.js';
4
+ import { readOptionalStringField } from './fields.js';
5
+ import { extractMetadata } from './metadata.js';
6
+ import { createField, EMPTY_CHILDREN, isPlainObject } from './utils.js';
7
+ export function normalizeNode(context, name, value, pointer) {
8
+ if (!isPlainObject(value)) {
9
+ context.diagnostics.push({
10
+ code: DiagnosticCodes.normaliser.INVALID_NODE,
11
+ message: `Node "${name}" must be a JSON object.`,
12
+ severity: 'error',
13
+ pointer,
14
+ span: getSourceSpan(context, pointer)
15
+ });
16
+ return undefined;
17
+ }
18
+ const metadata = extractMetadata(context, value, pointer);
19
+ if (isTokenLike(value)) {
20
+ if ('$ref' in value) {
21
+ return normalizeAliasNode(context, name, value, pointer, metadata);
22
+ }
23
+ return normalizeTokenNode(context, name, value, pointer, metadata);
24
+ }
25
+ return normalizeCollectionNode(context, name, value, pointer, metadata);
26
+ }
27
+ function normalizeCollectionNode(context, name, value, pointer, metadata) {
28
+ const children = [];
29
+ for (const [childName, childValue] of Object.entries(value)) {
30
+ if (childName.startsWith('$')) {
31
+ continue;
32
+ }
33
+ const childPointer = appendJsonPointer(pointer, childName);
34
+ const childNode = normalizeNode(context, childName, childValue, childPointer);
35
+ if (childNode) {
36
+ children.push(childNode);
37
+ }
38
+ }
39
+ return Object.freeze({
40
+ kind: 'collection',
41
+ name,
42
+ pointer,
43
+ span: getSourceSpan(context, pointer),
44
+ metadata,
45
+ children: children.length === 0 ? EMPTY_CHILDREN : Object.freeze(children)
46
+ });
47
+ }
48
+ function normalizeTokenNode(context, name, value, pointer, metadata) {
49
+ const typeField = readOptionalStringField(context, value, '$type', pointer);
50
+ const valueField = '$value' in value
51
+ ? createField(context, value['$value'], appendJsonPointer(pointer, '$value'))
52
+ : undefined;
53
+ if (!valueField) {
54
+ context.diagnostics.push({
55
+ code: DiagnosticCodes.normaliser.MISSING_VALUE,
56
+ message: `Token "${name}" must declare a $value when it does not alias another token.`,
57
+ severity: 'error',
58
+ pointer,
59
+ span: getSourceSpan(context, pointer)
60
+ });
61
+ }
62
+ return Object.freeze({
63
+ kind: 'token',
64
+ name,
65
+ pointer,
66
+ span: getSourceSpan(context, pointer),
67
+ metadata,
68
+ type: typeField,
69
+ value: valueField
70
+ });
71
+ }
72
+ function normalizeAliasNode(context, name, value, pointer, metadata) {
73
+ const refField = readOptionalStringField(context, value, '$ref', pointer);
74
+ const typeField = readOptionalStringField(context, value, '$type', pointer);
75
+ if (!refField) {
76
+ context.diagnostics.push({
77
+ code: DiagnosticCodes.normaliser.MISSING_ALIAS_TARGET,
78
+ message: `Alias token "${name}" must declare a $ref pointer.`,
79
+ severity: 'error',
80
+ pointer,
81
+ span: getSourceSpan(context, pointer)
82
+ });
83
+ return undefined;
84
+ }
85
+ if (!typeField) {
86
+ context.diagnostics.push({
87
+ code: DiagnosticCodes.normaliser.ALIAS_MISSING_TYPE,
88
+ message: `Alias token "${name}" must declare a $type alongside $ref.`,
89
+ severity: 'error',
90
+ pointer,
91
+ span: getSourceSpan(context, pointer)
92
+ });
93
+ return undefined;
94
+ }
95
+ return Object.freeze({
96
+ kind: 'alias',
97
+ name,
98
+ pointer,
99
+ span: getSourceSpan(context, pointer),
100
+ metadata,
101
+ type: typeField,
102
+ ref: refField
103
+ });
104
+ }
105
+ function isTokenLike(value) {
106
+ return '$value' in value || '$ref' in value || '$type' in value;
107
+ }
108
+ //# sourceMappingURL=nodes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"nodes.js","sourceRoot":"","sources":["../../../src/ast/normaliser/nodes.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ import type { JsonPointer } from '../../types.js';
2
+ import type { OverrideFallbackNode, OverrideNode } from '../nodes.js';
3
+ import type { NormaliserContext } from './context.js';
4
+ export declare function normalizeOverrides(context: NormaliserContext, value: Record<string, unknown>, pointer: JsonPointer): readonly OverrideNode[];
5
+ export declare function normalizeOverrideNode(context: NormaliserContext, value: unknown, pointer: JsonPointer): OverrideNode | undefined;
6
+ export declare function normalizeFallbackChain(context: NormaliserContext, value: unknown, pointer: JsonPointer): readonly OverrideFallbackNode[] | undefined;
7
+ //# sourceMappingURL=overrides.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"overrides.d.ts","sourceRoot":"","sources":["../../../src/ast/normaliser/overrides.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,KAAK,EAAE,oBAAoB,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AACtE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAStD,wBAAgB,kBAAkB,CAChC,OAAO,EAAE,iBAAiB,EAC1B,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC9B,OAAO,EAAE,WAAW,GACnB,SAAS,YAAY,EAAE,CA8BzB;AAED,wBAAgB,qBAAqB,CACnC,OAAO,EAAE,iBAAiB,EAC1B,KAAK,EAAE,OAAO,EACd,OAAO,EAAE,WAAW,GACnB,YAAY,GAAG,SAAS,CA0D1B;AAED,wBAAgB,sBAAsB,CACpC,OAAO,EAAE,iBAAiB,EAC1B,KAAK,EAAE,OAAO,EACd,OAAO,EAAE,WAAW,GACnB,SAAS,oBAAoB,EAAE,GAAG,SAAS,CA0B7C"}
@@ -0,0 +1,156 @@
1
+ import { DiagnosticCodes } from '../../diagnostics/codes.js';
2
+ import { appendJsonPointer } from '../../utils/json-pointer.js';
3
+ import { getSourceSpan } from './context.js';
4
+ import { readOptionalStringField, readOverrideConditions, readRequiredStringField } from './fields.js';
5
+ import { createField, EMPTY_OVERRIDES, isPlainObject } from './utils.js';
6
+ export function normalizeOverrides(context, value, pointer) {
7
+ if (!('$overrides' in value)) {
8
+ return EMPTY_OVERRIDES;
9
+ }
10
+ const overridesValue = value['$overrides'];
11
+ const overridesPointer = appendJsonPointer(pointer, '$overrides');
12
+ if (!Array.isArray(overridesValue)) {
13
+ context.diagnostics.push({
14
+ code: DiagnosticCodes.normaliser.INVALID_MEMBER_TYPE,
15
+ message: '$overrides must be an array of override objects.',
16
+ severity: 'error',
17
+ pointer: overridesPointer,
18
+ span: getSourceSpan(context, overridesPointer)
19
+ });
20
+ return EMPTY_OVERRIDES;
21
+ }
22
+ const overrides = [];
23
+ overridesValue.forEach((entry, index) => {
24
+ const entryPointer = appendJsonPointer(overridesPointer, String(index));
25
+ const override = normalizeOverrideNode(context, entry, entryPointer);
26
+ if (override) {
27
+ overrides.push(override);
28
+ }
29
+ });
30
+ return overrides.length === 0 ? EMPTY_OVERRIDES : Object.freeze(overrides);
31
+ }
32
+ export function normalizeOverrideNode(context, value, pointer) {
33
+ if (!isPlainObject(value)) {
34
+ context.diagnostics.push({
35
+ code: DiagnosticCodes.normaliser.INVALID_MEMBER_TYPE,
36
+ message: 'Override entries must be JSON objects.',
37
+ severity: 'error',
38
+ pointer,
39
+ span: getSourceSpan(context, pointer)
40
+ });
41
+ return undefined;
42
+ }
43
+ const token = readRequiredStringField(context, value, '$token', pointer);
44
+ const when = readOverrideConditions(context, value, pointer);
45
+ const refField = readOptionalStringField(context, value, '$ref', pointer);
46
+ const valueField = '$value' in value
47
+ ? createField(context, value['$value'], appendJsonPointer(pointer, '$value'))
48
+ : undefined;
49
+ const fallback = '$fallback' in value
50
+ ? normalizeFallbackChain(context, value['$fallback'], appendJsonPointer(pointer, '$fallback'))
51
+ : undefined;
52
+ if (!token || !when) {
53
+ return undefined;
54
+ }
55
+ if (!refField && !valueField && !fallback) {
56
+ context.diagnostics.push({
57
+ code: DiagnosticCodes.normaliser.INVALID_OVERRIDE,
58
+ message: 'Override entries must provide $ref, $value, or $fallback.',
59
+ severity: 'error',
60
+ pointer,
61
+ span: getSourceSpan(context, pointer)
62
+ });
63
+ }
64
+ if (refField && valueField) {
65
+ context.diagnostics.push({
66
+ code: DiagnosticCodes.normaliser.INVALID_OVERRIDE,
67
+ message: 'Override entries must not declare both $ref and $value.',
68
+ severity: 'error',
69
+ pointer,
70
+ span: getSourceSpan(context, pointer)
71
+ });
72
+ }
73
+ return Object.freeze({
74
+ kind: 'override',
75
+ pointer,
76
+ span: getSourceSpan(context, pointer),
77
+ token,
78
+ when,
79
+ ref: refField,
80
+ value: valueField,
81
+ fallback
82
+ });
83
+ }
84
+ export function normalizeFallbackChain(context, value, pointer) {
85
+ if (Array.isArray(value)) {
86
+ const entries = [];
87
+ value.forEach((entry, index) => {
88
+ const entryPointer = appendJsonPointer(pointer, String(index));
89
+ const node = normalizeFallbackEntry(context, entry, entryPointer);
90
+ if (node) {
91
+ entries.push(node);
92
+ }
93
+ });
94
+ return entries.length === 0 ? undefined : Object.freeze(entries);
95
+ }
96
+ if (isPlainObject(value)) {
97
+ const entry = normalizeFallbackEntry(context, value, pointer);
98
+ return entry ? Object.freeze([entry]) : undefined;
99
+ }
100
+ context.diagnostics.push({
101
+ code: DiagnosticCodes.normaliser.INVALID_MEMBER_TYPE,
102
+ message: '$fallback must be an override object or an array of override objects.',
103
+ severity: 'error',
104
+ pointer,
105
+ span: getSourceSpan(context, pointer)
106
+ });
107
+ return undefined;
108
+ }
109
+ function normalizeFallbackEntry(context, value, pointer) {
110
+ if (!isPlainObject(value)) {
111
+ context.diagnostics.push({
112
+ code: DiagnosticCodes.normaliser.INVALID_MEMBER_TYPE,
113
+ message: 'Fallback entries must be JSON objects.',
114
+ severity: 'error',
115
+ pointer,
116
+ span: getSourceSpan(context, pointer)
117
+ });
118
+ return undefined;
119
+ }
120
+ const refField = readOptionalStringField(context, value, '$ref', pointer);
121
+ const valueField = '$value' in value
122
+ ? createField(context, value['$value'], appendJsonPointer(pointer, '$value'))
123
+ : undefined;
124
+ const fallback = '$fallback' in value
125
+ ? normalizeFallbackChain(context, value['$fallback'], appendJsonPointer(pointer, '$fallback'))
126
+ : undefined;
127
+ if (!refField && !valueField) {
128
+ context.diagnostics.push({
129
+ code: DiagnosticCodes.normaliser.INVALID_OVERRIDE,
130
+ message: 'Fallback entries must provide $ref or $value.',
131
+ severity: 'error',
132
+ pointer,
133
+ span: getSourceSpan(context, pointer)
134
+ });
135
+ return undefined;
136
+ }
137
+ if (refField && valueField) {
138
+ context.diagnostics.push({
139
+ code: DiagnosticCodes.normaliser.INVALID_OVERRIDE,
140
+ message: 'Fallback entries must not declare both $ref and $value.',
141
+ severity: 'error',
142
+ pointer,
143
+ span: getSourceSpan(context, pointer)
144
+ });
145
+ return undefined;
146
+ }
147
+ return Object.freeze({
148
+ kind: 'fallback',
149
+ pointer,
150
+ span: getSourceSpan(context, pointer),
151
+ ref: refField,
152
+ value: valueField,
153
+ fallback
154
+ });
155
+ }
156
+ //# sourceMappingURL=overrides.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"overrides.js","sourceRoot":"","sources":["../../../src/ast/normaliser/overrides.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAC7D,OAAO,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AAIhE,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC7C,OAAO,EACL,uBAAuB,EACvB,sBAAsB,EACtB,uBAAuB,EACxB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAEzE,MAAM,UAAU,kBAAkB,CAChC,OAA0B,EAC1B,KAA8B,EAC9B,OAAoB;IAEpB,IAAI,CAAC,CAAC,YAAY,IAAI,KAAK,CAAC,EAAE,CAAC;QAC7B,OAAO,eAAe,CAAC;IACzB,CAAC;IAED,MAAM,cAAc,GAAG,KAAK,CAAC,YAAY,CAAC,CAAC;IAC3C,MAAM,gBAAgB,GAAG,iBAAiB,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;IAElE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,cAAc,CAAC,EAAE,CAAC;QACnC,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC;YACvB,IAAI,EAAE,eAAe,CAAC,UAAU,CAAC,mBAAmB;YACpD,OAAO,EAAE,kDAAkD;YAC3D,QAAQ,EAAE,OAAO;YACjB,OAAO,EAAE,gBAAgB;YACzB,IAAI,EAAE,aAAa,CAAC,OAAO,EAAE,gBAAgB,CAAC;SAC/C,CAAC,CAAC;QACH,OAAO,eAAe,CAAC;IACzB,CAAC;IAED,MAAM,SAAS,GAAmB,EAAE,CAAC;IAErC,cAAc,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE;QACtC,MAAM,YAAY,GAAG,iBAAiB,CAAC,gBAAgB,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;QACxE,MAAM,QAAQ,GAAG,qBAAqB,CAAC,OAAO,EAAE,KAAK,EAAE,YAAY,CAAC,CAAC;QACrE,IAAI,QAAQ,EAAE,CAAC;YACb,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC3B,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,OAAO,SAAS,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;AAC7E,CAAC;AAED,MAAM,UAAU,qBAAqB,CACnC,OAA0B,EAC1B,KAAc,EACd,OAAoB;IAEpB,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,EAAE,CAAC;QAC1B,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC;YACvB,IAAI,EAAE,eAAe,CAAC,UAAU,CAAC,mBAAmB;YACpD,OAAO,EAAE,wCAAwC;YACjD,QAAQ,EAAE,OAAO;YACjB,OAAO;YACP,IAAI,EAAE,aAAa,CAAC,OAAO,EAAE,OAAO,CAAC;SACtC,CAAC,CAAC;QACH,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,MAAM,KAAK,GAAG,uBAAuB,CAAC,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;IACzE,MAAM,IAAI,GAAG,sBAAsB,CAAC,OAAO,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;IAC7D,MAAM,QAAQ,GAAG,uBAAuB,CAAC,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;IAC1E,MAAM,UAAU,GACd,QAAQ,IAAI,KAAK;QACf,CAAC,CAAC,WAAW,CAAC,OAAO,EAAE,KAAK,CAAC,QAAQ,CAAC,EAAE,iBAAiB,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;QAC7E,CAAC,CAAC,SAAS,CAAC;IAChB,MAAM,QAAQ,GACZ,WAAW,IAAI,KAAK;QAClB,CAAC,CAAC,sBAAsB,CAAC,OAAO,EAAE,KAAK,CAAC,WAAW,CAAC,EAAE,iBAAiB,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;QAC9F,CAAC,CAAC,SAAS,CAAC;IAEhB,IAAI,CAAC,KAAK,IAAI,CAAC,IAAI,EAAE,CAAC;QACpB,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,IAAI,CAAC,QAAQ,IAAI,CAAC,UAAU,IAAI,CAAC,QAAQ,EAAE,CAAC;QAC1C,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC;YACvB,IAAI,EAAE,eAAe,CAAC,UAAU,CAAC,gBAAgB;YACjD,OAAO,EAAE,2DAA2D;YACpE,QAAQ,EAAE,OAAO;YACjB,OAAO;YACP,IAAI,EAAE,aAAa,CAAC,OAAO,EAAE,OAAO,CAAC;SACtC,CAAC,CAAC;IACL,CAAC;IAED,IAAI,QAAQ,IAAI,UAAU,EAAE,CAAC;QAC3B,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC;YACvB,IAAI,EAAE,eAAe,CAAC,UAAU,CAAC,gBAAgB;YACjD,OAAO,EAAE,yDAAyD;YAClE,QAAQ,EAAE,OAAO;YACjB,OAAO;YACP,IAAI,EAAE,aAAa,CAAC,OAAO,EAAE,OAAO,CAAC;SACtC,CAAC,CAAC;IACL,CAAC;IAED,OAAO,MAAM,CAAC,MAAM,CAAC;QACnB,IAAI,EAAE,UAAU;QAChB,OAAO;QACP,IAAI,EAAE,aAAa,CAAC,OAAO,EAAE,OAAO,CAAC;QACrC,KAAK;QACL,IAAI;QACJ,GAAG,EAAE,QAAQ;QACb,KAAK,EAAE,UAAU;QACjB,QAAQ;KACT,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,sBAAsB,CACpC,OAA0B,EAC1B,KAAc,EACd,OAAoB;IAEpB,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACzB,MAAM,OAAO,GAA2B,EAAE,CAAC;QAC3C,KAAK,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE;YAC7B,MAAM,YAAY,GAAG,iBAAiB,CAAC,OAAO,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;YAC/D,MAAM,IAAI,GAAG,sBAAsB,CAAC,OAAO,EAAE,KAAK,EAAE,YAAY,CAAC,CAAC;YAClE,IAAI,IAAI,EAAE,CAAC;gBACT,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACrB,CAAC;QACH,CAAC,CAAC,CAAC;QACH,OAAO,OAAO,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IACnE,CAAC;IAED,IAAI,aAAa,CAAC,KAAK,CAAC,EAAE,CAAC;QACzB,MAAM,KAAK,GAAG,sBAAsB,CAAC,OAAO,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;QAC9D,OAAO,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IACpD,CAAC;IAED,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC;QACvB,IAAI,EAAE,eAAe,CAAC,UAAU,CAAC,mBAAmB;QACpD,OAAO,EAAE,uEAAuE;QAChF,QAAQ,EAAE,OAAO;QACjB,OAAO;QACP,IAAI,EAAE,aAAa,CAAC,OAAO,EAAE,OAAO,CAAC;KACtC,CAAC,CAAC;IACH,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,SAAS,sBAAsB,CAC7B,OAA0B,EAC1B,KAAc,EACd,OAAoB;IAEpB,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,EAAE,CAAC;QAC1B,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC;YACvB,IAAI,EAAE,eAAe,CAAC,UAAU,CAAC,mBAAmB;YACpD,OAAO,EAAE,wCAAwC;YACjD,QAAQ,EAAE,OAAO;YACjB,OAAO;YACP,IAAI,EAAE,aAAa,CAAC,OAAO,EAAE,OAAO,CAAC;SACtC,CAAC,CAAC;QACH,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,MAAM,QAAQ,GAAG,uBAAuB,CAAC,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;IAC1E,MAAM,UAAU,GACd,QAAQ,IAAI,KAAK;QACf,CAAC,CAAC,WAAW,CAAC,OAAO,EAAE,KAAK,CAAC,QAAQ,CAAC,EAAE,iBAAiB,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;QAC7E,CAAC,CAAC,SAAS,CAAC;IAChB,MAAM,QAAQ,GACZ,WAAW,IAAI,KAAK;QAClB,CAAC,CAAC,sBAAsB,CAAC,OAAO,EAAE,KAAK,CAAC,WAAW,CAAC,EAAE,iBAAiB,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;QAC9F,CAAC,CAAC,SAAS,CAAC;IAEhB,IAAI,CAAC,QAAQ,IAAI,CAAC,UAAU,EAAE,CAAC;QAC7B,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC;YACvB,IAAI,EAAE,eAAe,CAAC,UAAU,CAAC,gBAAgB;YACjD,OAAO,EAAE,+CAA+C;YACxD,QAAQ,EAAE,OAAO;YACjB,OAAO;YACP,IAAI,EAAE,aAAa,CAAC,OAAO,EAAE,OAAO,CAAC;SACtC,CAAC,CAAC;QACH,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,IAAI,QAAQ,IAAI,UAAU,EAAE,CAAC;QAC3B,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC;YACvB,IAAI,EAAE,eAAe,CAAC,UAAU,CAAC,gBAAgB;YACjD,OAAO,EAAE,yDAAyD;YAClE,QAAQ,EAAE,OAAO;YACjB,OAAO;YACP,IAAI,EAAE,aAAa,CAAC,OAAO,EAAE,OAAO,CAAC;SACtC,CAAC,CAAC;QACH,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,OAAO,MAAM,CAAC,MAAM,CAAC;QACnB,IAAI,EAAE,UAAU;QAChB,OAAO;QACP,IAAI,EAAE,aAAa,CAAC,OAAO,EAAE,OAAO,CAAC;QACrC,GAAG,EAAE,QAAQ;QACb,KAAK,EAAE,UAAU;QACjB,QAAQ;KACT,CAAC,CAAC;AACL,CAAC"}
@@ -0,0 +1,12 @@
1
+ import type { AstField, DocumentAst, DocumentChildNode, NodeMetadata, OverrideNode } from '../nodes.js';
2
+ import type { JsonPointer } from '../../types.js';
3
+ import type { NormaliserContext } from './context.js';
4
+ export declare const EMPTY_METADATA: NodeMetadata;
5
+ export declare const EMPTY_CHILDREN: readonly DocumentChildNode[];
6
+ export declare const EMPTY_OVERRIDES: readonly OverrideNode[];
7
+ export declare function freezeDocumentAst(ast: DocumentAst): DocumentAst;
8
+ export declare function createField<T>(context: NormaliserContext, value: T, pointer: JsonPointer): AstField<T>;
9
+ export declare function freezeRecord(value: Record<string, unknown>): Readonly<Record<string, unknown>>;
10
+ export declare function freezeValue<T>(value: T): T;
11
+ export declare function isPlainObject(value: unknown): value is Record<string, unknown>;
12
+ //# sourceMappingURL=utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/ast/normaliser/utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,QAAQ,EACR,WAAW,EACX,iBAAiB,EACjB,YAAY,EACZ,YAAY,EACb,MAAM,aAAa,CAAC;AACrB,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAGtD,eAAO,MAAM,cAAc,EAAE,YAAgC,CAAC;AAC9D,eAAO,MAAM,cAAc,EAAE,SAAS,iBAAiB,EAAsB,CAAC;AAC9E,eAAO,MAAM,eAAe,EAAE,SAAS,YAAY,EAAsB,CAAC;AAE1E,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,WAAW,GAAG,WAAW,CAQ/D;AAED,wBAAgB,WAAW,CAAC,CAAC,EAC3B,OAAO,EAAE,iBAAiB,EAC1B,KAAK,EAAE,CAAC,EACR,OAAO,EAAE,WAAW,GACnB,QAAQ,CAAC,CAAC,CAAC,CAMb;AAED,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAG9F;AAED,wBAAgB,WAAW,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,CAAC,CAa1C;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAW9E"}
@@ -0,0 +1,45 @@
1
+ import { getSourceSpan } from './context.js';
2
+ export const EMPTY_METADATA = Object.freeze({});
3
+ export const EMPTY_CHILDREN = Object.freeze([]);
4
+ export const EMPTY_OVERRIDES = Object.freeze([]);
5
+ export function freezeDocumentAst(ast) {
6
+ const children = ast.children.length === 0 ? EMPTY_CHILDREN : ast.children;
7
+ const overrides = ast.overrides.length === 0 ? EMPTY_OVERRIDES : ast.overrides;
8
+ return Object.freeze({
9
+ ...ast,
10
+ children,
11
+ overrides
12
+ });
13
+ }
14
+ export function createField(context, value, pointer) {
15
+ return Object.freeze({
16
+ value: freezeValue(value),
17
+ pointer,
18
+ span: getSourceSpan(context, pointer)
19
+ });
20
+ }
21
+ export function freezeRecord(value) {
22
+ const entries = Object.entries(value).map(([key, entry]) => [key, freezeValue(entry)]);
23
+ return Object.freeze(Object.fromEntries(entries));
24
+ }
25
+ export function freezeValue(value) {
26
+ if (Array.isArray(value)) {
27
+ return Object.freeze(value.map((entry) => freezeValue(entry)));
28
+ }
29
+ if (isPlainObject(value)) {
30
+ const entries = Object.entries(value).map(([key, entry]) => [key, freezeValue(entry)]);
31
+ return Object.freeze(Object.fromEntries(entries));
32
+ }
33
+ return value;
34
+ }
35
+ export function isPlainObject(value) {
36
+ if (value === null || typeof value !== 'object') {
37
+ return false;
38
+ }
39
+ if (Array.isArray(value)) {
40
+ return false;
41
+ }
42
+ const prototype = Object.getPrototypeOf(value);
43
+ return prototype === Object.prototype || prototype === null;
44
+ }
45
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../src/ast/normaliser/utils.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAE7C,MAAM,CAAC,MAAM,cAAc,GAAiB,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;AAC9D,MAAM,CAAC,MAAM,cAAc,GAAiC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;AAC9E,MAAM,CAAC,MAAM,eAAe,GAA4B,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;AAE1E,MAAM,UAAU,iBAAiB,CAAC,GAAgB;IAChD,MAAM,QAAQ,GAAG,GAAG,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC;IAC3E,MAAM,SAAS,GAAG,GAAG,CAAC,SAAS,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC;IAC/E,OAAO,MAAM,CAAC,MAAM,CAAC;QACnB,GAAG,GAAG;QACN,QAAQ;QACR,SAAS;KACV,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,WAAW,CACzB,OAA0B,EAC1B,KAAQ,EACR,OAAoB;IAEpB,OAAO,MAAM,CAAC,MAAM,CAAC;QACnB,KAAK,EAAE,WAAW,CAAC,KAAK,CAAC;QACzB,OAAO;QACP,IAAI,EAAE,aAAa,CAAC,OAAO,EAAE,OAAO,CAAC;KACtC,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,KAA8B;IACzD,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,EAAE,WAAW,CAAC,KAAK,CAAC,CAAU,CAAC,CAAC;IAChG,OAAO,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC;AACpD,CAAC;AAED,MAAM,UAAU,WAAW,CAAI,KAAQ;IACrC,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACzB,OAAO,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAiB,CAAC;IACjF,CAAC;IAED,IAAI,aAAa,CAAC,KAAK,CAAC,EAAE,CAAC;QACzB,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,KAAgC,CAAC,CAAC,GAAG,CAClE,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,EAAE,WAAW,CAAC,KAAK,CAAC,CAAU,CACrD,CAAC;QACF,OAAO,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC,CAAiB,CAAC;IACpE,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,KAAc;IAC1C,IAAI,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAChD,OAAO,KAAK,CAAC;IACf,CAAC;IAED,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACzB,OAAO,KAAK,CAAC;IACf,CAAC;IAED,MAAM,SAAS,GAAG,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;IAC/C,OAAO,SAAS,KAAK,MAAM,CAAC,SAAS,IAAI,SAAS,KAAK,IAAI,CAAC;AAC9D,CAAC"}
@@ -0,0 +1,5 @@
1
+ import type { RawDocument } from '../types.js';
2
+ import type { NormaliserOptions, NormaliserResult } from './normaliser/context.js';
3
+ export type { NormaliserOptions, NormaliserResult } from './normaliser/context.js';
4
+ export declare function normalizeDocument(document: RawDocument, options?: NormaliserOptions): NormaliserResult;
5
+ //# sourceMappingURL=normaliser.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"normaliser.d.ts","sourceRoot":"","sources":["../../src/ast/normaliser.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAO/C,OAAO,KAAK,EAEV,iBAAiB,EACjB,gBAAgB,EACjB,MAAM,yBAAyB,CAAC;AAEjC,YAAY,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAEnF,wBAAgB,iBAAiB,CAC/B,QAAQ,EAAE,WAAW,EACrB,OAAO,GAAE,iBAAsB,GAC9B,gBAAgB,CAUlB"}
@@ -0,0 +1,25 @@
1
+ import { DiagnosticCodes } from '../diagnostics/codes.js';
2
+ import { JSON_POINTER_ROOT } from '../utils/json-pointer.js';
3
+ import { buildDocumentAst } from './normaliser/document.js';
4
+ import { createNormaliserContext, finalizeNormalisation, getSourceSpan } from './normaliser/context.js';
5
+ export function normalizeDocument(document, options = {}) {
6
+ const context = createNormaliserContext(document, options);
7
+ try {
8
+ const ast = buildDocumentAst(context);
9
+ return finalizeNormalisation(context, ast);
10
+ }
11
+ catch (error) {
12
+ recordUnexpectedFailure(context, error);
13
+ return finalizeNormalisation(context, undefined);
14
+ }
15
+ }
16
+ function recordUnexpectedFailure(context, error) {
17
+ context.diagnostics.push({
18
+ code: DiagnosticCodes.normaliser.FAILED,
19
+ message: error instanceof Error ? error.message : 'Failed to normalise DTIF document.',
20
+ severity: 'error',
21
+ pointer: JSON_POINTER_ROOT,
22
+ span: getSourceSpan(context, JSON_POINTER_ROOT)
23
+ });
24
+ }
25
+ //# sourceMappingURL=normaliser.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"normaliser.js","sourceRoot":"","sources":["../../src/ast/normaliser.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC1D,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAE7D,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAC5D,OAAO,EACL,uBAAuB,EACvB,qBAAqB,EACrB,aAAa,EACd,MAAM,yBAAyB,CAAC;AASjC,MAAM,UAAU,iBAAiB,CAC/B,QAAqB,EACrB,UAA6B,EAAE;IAE/B,MAAM,OAAO,GAAG,uBAAuB,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IAE3D,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,gBAAgB,CAAC,OAAO,CAAC,CAAC;QACtC,OAAO,qBAAqB,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;IAC7C,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,uBAAuB,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;QACxC,OAAO,qBAAqB,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;IACnD,CAAC;AACH,CAAC;AAED,SAAS,uBAAuB,CAAC,OAA0B,EAAE,KAAc;IACzE,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC;QACvB,IAAI,EAAE,eAAe,CAAC,UAAU,CAAC,MAAM;QACvC,OAAO,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,oCAAoC;QACtF,QAAQ,EAAE,OAAO;QACjB,OAAO,EAAE,iBAAiB;QAC1B,IAAI,EAAE,aAAa,CAAC,OAAO,EAAE,iBAAiB,CAAC;KAChD,CAAC,CAAC;AACL,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { CliArguments } from './types.js';
2
+ export declare function parseArguments(args: readonly string[]): CliArguments;
3
+ //# sourceMappingURL=args.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"args.d.ts","sourceRoot":"","sources":["../../src/cli/args.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAc,MAAM,YAAY,CAAC;AAW3D,wBAAgB,cAAc,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,GAAG,YAAY,CAsLpE"}
@@ -0,0 +1,202 @@
1
+ import { normalizeJsonPointer } from '../utils/json-pointer.js';
2
+ const DEFAULT_CLI_OPTIONS = {
3
+ inputs: [],
4
+ allowHttp: false,
5
+ format: 'pretty',
6
+ pointers: [],
7
+ context: new Map()
8
+ };
9
+ export function parseArguments(args) {
10
+ const options = {
11
+ inputs: [...DEFAULT_CLI_OPTIONS.inputs],
12
+ allowHttp: DEFAULT_CLI_OPTIONS.allowHttp,
13
+ maxDepth: DEFAULT_CLI_OPTIONS.maxDepth,
14
+ format: DEFAULT_CLI_OPTIONS.format,
15
+ context: new Map(DEFAULT_CLI_OPTIONS.context)
16
+ };
17
+ const pointerStrings = [];
18
+ let index = 0;
19
+ let parsingOptions = true;
20
+ while (index < args.length) {
21
+ const raw = args[index];
22
+ if (parsingOptions && raw === '--') {
23
+ parsingOptions = false;
24
+ index++;
25
+ continue;
26
+ }
27
+ if (parsingOptions && (raw === '--help' || raw === '-h')) {
28
+ return { kind: 'help' };
29
+ }
30
+ if (parsingOptions && (raw === '--version' || raw === '-v')) {
31
+ return { kind: 'version' };
32
+ }
33
+ if (parsingOptions && (raw === '--json' || raw === '--format=json')) {
34
+ options.format = 'json';
35
+ index++;
36
+ continue;
37
+ }
38
+ if (parsingOptions && raw.startsWith('--format=')) {
39
+ const value = raw.slice('--format='.length);
40
+ const normalized = value.toLowerCase();
41
+ if (normalized !== 'pretty' && normalized !== 'json') {
42
+ return { kind: 'error', message: `Unsupported format "${value}".` };
43
+ }
44
+ options.format = normalized;
45
+ index++;
46
+ continue;
47
+ }
48
+ if (parsingOptions && raw === '--format') {
49
+ const value = args[index + 1];
50
+ if (!value) {
51
+ return { kind: 'error', message: '--format requires a value of "pretty" or "json".' };
52
+ }
53
+ const normalized = value.toLowerCase();
54
+ if (normalized !== 'pretty' && normalized !== 'json') {
55
+ return { kind: 'error', message: `Unsupported format "${value}".` };
56
+ }
57
+ options.format = normalized;
58
+ index += 2;
59
+ continue;
60
+ }
61
+ if (parsingOptions && (raw === '--allow-http' || raw === '--allow-http=true')) {
62
+ options.allowHttp = true;
63
+ index++;
64
+ continue;
65
+ }
66
+ if (parsingOptions && raw.startsWith('--allow-http=')) {
67
+ const value = raw.slice('--allow-http='.length);
68
+ const normalized = value.toLowerCase();
69
+ if (normalized === 'true') {
70
+ options.allowHttp = true;
71
+ index++;
72
+ continue;
73
+ }
74
+ if (normalized === 'false') {
75
+ options.allowHttp = false;
76
+ index++;
77
+ continue;
78
+ }
79
+ return { kind: 'error', message: `Invalid value for --allow-http: "${value}".` };
80
+ }
81
+ if (parsingOptions && raw === '--max-depth') {
82
+ const value = args[index + 1];
83
+ if (!value) {
84
+ return { kind: 'error', message: '--max-depth requires a numeric value.' };
85
+ }
86
+ const parsed = Number.parseInt(value, 10);
87
+ if (!Number.isFinite(parsed) || parsed <= 0) {
88
+ return { kind: 'error', message: `Invalid --max-depth value "${value}".` };
89
+ }
90
+ options.maxDepth = parsed;
91
+ index += 2;
92
+ continue;
93
+ }
94
+ if (parsingOptions && raw.startsWith('--max-depth=')) {
95
+ const value = raw.slice('--max-depth='.length);
96
+ const parsed = Number.parseInt(value, 10);
97
+ if (!Number.isFinite(parsed) || parsed <= 0) {
98
+ return { kind: 'error', message: `Invalid --max-depth value "${value}".` };
99
+ }
100
+ options.maxDepth = parsed;
101
+ index++;
102
+ continue;
103
+ }
104
+ if (parsingOptions && raw === '--resolve') {
105
+ const value = args[index + 1];
106
+ if (!value) {
107
+ return { kind: 'error', message: '--resolve requires a JSON Pointer argument.' };
108
+ }
109
+ pointerStrings.push(value);
110
+ index += 2;
111
+ continue;
112
+ }
113
+ if (parsingOptions && raw.startsWith('--resolve=')) {
114
+ const value = raw.slice('--resolve='.length);
115
+ if (!value) {
116
+ return { kind: 'error', message: '--resolve requires a JSON Pointer argument.' };
117
+ }
118
+ pointerStrings.push(value);
119
+ index++;
120
+ continue;
121
+ }
122
+ if (parsingOptions && raw === '--context') {
123
+ const value = args[index + 1];
124
+ if (!value) {
125
+ return { kind: 'error', message: '--context requires entries in the form key=value.' };
126
+ }
127
+ const parsedEntry = parseContextEntry(value);
128
+ if ('error' in parsedEntry) {
129
+ return { kind: 'error', message: parsedEntry.error };
130
+ }
131
+ options.context.set(parsedEntry.key, parsedEntry.value);
132
+ index += 2;
133
+ continue;
134
+ }
135
+ if (parsingOptions && raw.startsWith('--context=')) {
136
+ const value = raw.slice('--context='.length);
137
+ const parsedEntry = parseContextEntry(value);
138
+ if ('error' in parsedEntry) {
139
+ return { kind: 'error', message: parsedEntry.error };
140
+ }
141
+ options.context.set(parsedEntry.key, parsedEntry.value);
142
+ index++;
143
+ continue;
144
+ }
145
+ if (parsingOptions && raw.startsWith('-') && raw !== '-') {
146
+ return { kind: 'error', message: `Unknown option "${raw}".` };
147
+ }
148
+ options.inputs.push(raw);
149
+ index++;
150
+ }
151
+ const normalizedPointers = Array.from(new Set(pointerStrings.map((pointer) => normalizeJsonPointer(pointer))));
152
+ return {
153
+ kind: 'run',
154
+ options: {
155
+ inputs: options.inputs,
156
+ allowHttp: options.allowHttp,
157
+ maxDepth: options.maxDepth,
158
+ format: options.format,
159
+ pointers: normalizedPointers,
160
+ context: options.context
161
+ }
162
+ };
163
+ }
164
+ function parseContextEntry(input) {
165
+ const separator = input.indexOf('=');
166
+ if (separator <= 0) {
167
+ return { error: `Invalid context entry "${input}". Expected key=value.` };
168
+ }
169
+ const key = input.slice(0, separator).trim();
170
+ const rawValue = input.slice(separator + 1);
171
+ if (!key) {
172
+ return { error: 'Context keys must be non-empty.' };
173
+ }
174
+ return { key, value: parseContextValue(rawValue) };
175
+ }
176
+ function parseContextValue(value) {
177
+ const trimmed = value.trim();
178
+ if (trimmed === '') {
179
+ return '';
180
+ }
181
+ const lowered = trimmed.toLowerCase();
182
+ if (lowered === 'true') {
183
+ return true;
184
+ }
185
+ if (lowered === 'false') {
186
+ return false;
187
+ }
188
+ if (lowered === 'null') {
189
+ return null;
190
+ }
191
+ const numeric = Number(trimmed);
192
+ if (!Number.isNaN(numeric)) {
193
+ return numeric;
194
+ }
195
+ try {
196
+ return JSON.parse(trimmed);
197
+ }
198
+ catch {
199
+ return value;
200
+ }
201
+ }
202
+ //# sourceMappingURL=args.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"args.js","sourceRoot":"","sources":["../../src/cli/args.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type { CliIo, GatherInputsResult } from './types.js';
2
+ export declare function gatherInputs(inputs: readonly string[], io: CliIo): Promise<GatherInputsResult>;
3
+ //# sourceMappingURL=io.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"io.d.ts","sourceRoot":"","sources":["../../src/cli/io.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,KAAK,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAE5D,wBAAsB,YAAY,CAChC,MAAM,EAAE,SAAS,MAAM,EAAE,EACzB,EAAE,EAAE,KAAK,GACR,OAAO,CAAC,kBAAkB,CAAC,CAwC7B"}