@lapidist/dtif-parser 1.0.6 → 2.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 (256) hide show
  1. package/CHANGELOG.md +61 -0
  2. package/LICENSE +28 -0
  3. package/README.md +5 -0
  4. package/dist/adapters/domain/diagnostics.d.ts +1 -3
  5. package/dist/adapters/domain/diagnostics.d.ts.map +1 -1
  6. package/dist/adapters/domain/diagnostics.js +3 -1
  7. package/dist/adapters/domain/diagnostics.js.map +1 -1
  8. package/dist/adapters/domain/document-source.d.ts.map +1 -1
  9. package/dist/adapters/domain/document-source.js +1 -10
  10. package/dist/adapters/domain/document-source.js.map +1 -1
  11. package/dist/adapters/domain/index.d.ts +2 -2
  12. package/dist/adapters/domain/index.d.ts.map +1 -1
  13. package/dist/adapters/domain/index.js +1 -1
  14. package/dist/adapters/domain/index.js.map +1 -1
  15. package/dist/adapters/domain/plugins.d.ts.map +1 -1
  16. package/dist/adapters/domain/plugins.js +1 -1
  17. package/dist/adapters/domain/plugins.js.map +1 -1
  18. package/dist/adapters/domain/services.d.ts +13 -20
  19. package/dist/adapters/domain/services.d.ts.map +1 -1
  20. package/dist/adapters/domain/services.js +62 -56
  21. package/dist/adapters/domain/services.js.map +1 -1
  22. package/dist/adapters/node/token-parser.d.ts +1 -1
  23. package/dist/adapters/node/token-parser.d.ts.map +1 -1
  24. package/dist/adapters/node/token-parser.js +23 -10
  25. package/dist/adapters/node/token-parser.js.map +1 -1
  26. package/dist/application/factory.d.ts +4 -7
  27. package/dist/application/factory.d.ts.map +1 -1
  28. package/dist/application/factory.js +10 -35
  29. package/dist/application/factory.js.map +1 -1
  30. package/dist/application/index.d.ts +1 -1
  31. package/dist/application/index.d.ts.map +1 -1
  32. package/dist/application/index.js +1 -1
  33. package/dist/application/index.js.map +1 -1
  34. package/dist/application/inline.d.ts +2 -5
  35. package/dist/application/inline.d.ts.map +1 -1
  36. package/dist/application/inline.js +2 -81
  37. package/dist/application/inline.js.map +1 -1
  38. package/dist/application/requests.d.ts +3 -8
  39. package/dist/application/requests.d.ts.map +1 -1
  40. package/dist/application/requests.js +1 -38
  41. package/dist/application/requests.js.map +1 -1
  42. package/dist/application/runtime-options.d.ts +14 -0
  43. package/dist/application/runtime-options.d.ts.map +1 -0
  44. package/dist/application/runtime-options.js +2 -0
  45. package/dist/application/runtime-options.js.map +1 -0
  46. package/dist/application/use-cases.d.ts +17 -10
  47. package/dist/application/use-cases.d.ts.map +1 -1
  48. package/dist/application/use-cases.js +69 -73
  49. package/dist/application/use-cases.js.map +1 -1
  50. package/dist/ast/nodes.d.ts +1 -1
  51. package/dist/ast/nodes.d.ts.map +1 -1
  52. package/dist/ast/normaliser/document.d.ts.map +1 -1
  53. package/dist/ast/normaliser/document.js +26 -0
  54. package/dist/ast/normaliser/document.js.map +1 -1
  55. package/dist/ast/normaliser/fields.d.ts +1 -1
  56. package/dist/ast/normaliser/fields.d.ts.map +1 -1
  57. package/dist/ast/normaliser/known-types.d.ts +2 -0
  58. package/dist/ast/normaliser/known-types.d.ts.map +1 -0
  59. package/dist/ast/normaliser/known-types.js +37 -0
  60. package/dist/ast/normaliser/known-types.js.map +1 -0
  61. package/dist/ast/normaliser/metadata.d.ts +1 -1
  62. package/dist/ast/normaliser/metadata.d.ts.map +1 -1
  63. package/dist/ast/normaliser/nodes.d.ts +1 -1
  64. package/dist/ast/normaliser/nodes.d.ts.map +1 -1
  65. package/dist/ast/normaliser/nodes.js +21 -0
  66. package/dist/ast/normaliser/nodes.js.map +1 -1
  67. package/dist/ast/normaliser/ordering.d.ts +6 -0
  68. package/dist/ast/normaliser/ordering.d.ts.map +1 -0
  69. package/dist/ast/normaliser/ordering.js +91 -0
  70. package/dist/ast/normaliser/ordering.js.map +1 -0
  71. package/dist/ast/normaliser/overrides.d.ts +1 -1
  72. package/dist/ast/normaliser/overrides.d.ts.map +1 -1
  73. package/dist/ast/normaliser/overrides.js +10 -8
  74. package/dist/ast/normaliser/overrides.js.map +1 -1
  75. package/dist/ast/normaliser/utils.d.ts +1 -1
  76. package/dist/ast/normaliser/utils.d.ts.map +1 -1
  77. package/dist/cli/parse.d.ts.map +1 -1
  78. package/dist/cli/parse.js +3 -4
  79. package/dist/cli/parse.js.map +1 -1
  80. package/dist/config/parse-options.d.ts +21 -0
  81. package/dist/config/parse-options.d.ts.map +1 -0
  82. package/dist/config/parse-options.js +2 -0
  83. package/dist/config/parse-options.js.map +1 -0
  84. package/dist/diagnostics/codes.d.ts +6 -1
  85. package/dist/diagnostics/codes.d.ts.map +1 -1
  86. package/dist/diagnostics/codes.js +6 -2
  87. package/dist/diagnostics/codes.js.map +1 -1
  88. package/dist/domain/models.d.ts +2 -2
  89. package/dist/domain/models.d.ts.map +1 -1
  90. package/dist/domain/ports.d.ts +5 -1
  91. package/dist/domain/ports.d.ts.map +1 -1
  92. package/dist/domain/primitives.d.ts +1 -0
  93. package/dist/domain/primitives.d.ts.map +1 -1
  94. package/dist/domain/services.d.ts +2 -6
  95. package/dist/domain/services.d.ts.map +1 -1
  96. package/dist/graph/builder/context.d.ts +4 -3
  97. package/dist/graph/builder/context.d.ts.map +1 -1
  98. package/dist/graph/builder/context.js.map +1 -1
  99. package/dist/graph/builder/nodes.d.ts +1 -1
  100. package/dist/graph/builder/nodes.d.ts.map +1 -1
  101. package/dist/graph/nodes.d.ts +1 -1
  102. package/dist/graph/nodes.d.ts.map +1 -1
  103. package/dist/index.d.ts +1 -1
  104. package/dist/index.d.ts.map +1 -1
  105. package/dist/index.js.map +1 -1
  106. package/dist/input/content-sniffing.d.ts +4 -0
  107. package/dist/input/content-sniffing.d.ts.map +1 -0
  108. package/dist/input/content-sniffing.js +37 -0
  109. package/dist/input/content-sniffing.js.map +1 -0
  110. package/dist/input/contracts.d.ts +7 -0
  111. package/dist/input/contracts.d.ts.map +1 -0
  112. package/dist/input/contracts.js +38 -0
  113. package/dist/input/contracts.js.map +1 -0
  114. package/dist/input/inline-document.d.ts +10 -0
  115. package/dist/input/inline-document.d.ts.map +1 -0
  116. package/dist/input/inline-document.js +14 -0
  117. package/dist/input/inline-document.js.map +1 -0
  118. package/dist/input/memory-uri.d.ts +10 -0
  119. package/dist/input/memory-uri.d.ts.map +1 -0
  120. package/dist/input/memory-uri.js +30 -0
  121. package/dist/input/memory-uri.js.map +1 -0
  122. package/dist/io/decoder/core.d.ts +8 -0
  123. package/dist/io/decoder/core.d.ts.map +1 -0
  124. package/dist/io/decoder/core.js +39 -0
  125. package/dist/io/decoder/core.js.map +1 -0
  126. package/dist/io/decoder/inline-document.d.ts +4 -0
  127. package/dist/io/decoder/inline-document.d.ts.map +1 -0
  128. package/dist/io/decoder/inline-document.js +12 -0
  129. package/dist/io/decoder/inline-document.js.map +1 -0
  130. package/dist/io/decoder.d.ts.map +1 -1
  131. package/dist/io/decoder.js +3 -52
  132. package/dist/io/decoder.js.map +1 -1
  133. package/dist/io/document-loader.d.ts.map +1 -1
  134. package/dist/io/document-loader.js +22 -86
  135. package/dist/io/document-loader.js.map +1 -1
  136. package/dist/io/loader-diagnostics.d.ts +4 -0
  137. package/dist/io/loader-diagnostics.d.ts.map +1 -0
  138. package/dist/io/loader-diagnostics.js +13 -0
  139. package/dist/io/loader-diagnostics.js.map +1 -0
  140. package/dist/plugins/transform-utils.d.ts +5 -0
  141. package/dist/plugins/transform-utils.d.ts.map +1 -0
  142. package/dist/plugins/transform-utils.js +18 -0
  143. package/dist/plugins/transform-utils.js.map +1 -0
  144. package/dist/plugins/types.d.ts +30 -1
  145. package/dist/plugins/types.d.ts.map +1 -1
  146. package/dist/resolver/document-resolver.d.ts +6 -4
  147. package/dist/resolver/document-resolver.d.ts.map +1 -1
  148. package/dist/resolver/document-resolver.js +216 -163
  149. package/dist/resolver/document-resolver.js.map +1 -1
  150. package/dist/resolver/external-graph-provider.d.ts +31 -0
  151. package/dist/resolver/external-graph-provider.d.ts.map +1 -0
  152. package/dist/resolver/external-graph-provider.js +124 -0
  153. package/dist/resolver/external-graph-provider.js.map +1 -0
  154. package/dist/resolver/internal/constants.d.ts +1 -1
  155. package/dist/resolver/internal/context.d.ts +1 -1
  156. package/dist/resolver/internal/context.d.ts.map +1 -1
  157. package/dist/resolver/internal/context.js +2 -7
  158. package/dist/resolver/internal/context.js.map +1 -1
  159. package/dist/resolver/internal/external-graph-index.d.ts +7 -0
  160. package/dist/resolver/internal/external-graph-index.d.ts.map +1 -0
  161. package/dist/resolver/internal/external-graph-index.js +81 -0
  162. package/dist/resolver/internal/external-graph-index.js.map +1 -0
  163. package/dist/resolver/internal/helpers.d.ts +1 -3
  164. package/dist/resolver/internal/helpers.d.ts.map +1 -1
  165. package/dist/resolver/internal/helpers.js +0 -16
  166. package/dist/resolver/internal/helpers.js.map +1 -1
  167. package/dist/resolver/internal/override-evaluator.d.ts +3 -0
  168. package/dist/resolver/internal/override-evaluator.d.ts.map +1 -0
  169. package/dist/resolver/internal/override-evaluator.js +17 -0
  170. package/dist/resolver/internal/override-evaluator.js.map +1 -0
  171. package/dist/resolver/internal/resolution-key.d.ts +3 -0
  172. package/dist/resolver/internal/resolution-key.d.ts.map +1 -0
  173. package/dist/resolver/internal/resolution-key.js +4 -0
  174. package/dist/resolver/internal/resolution-key.js.map +1 -0
  175. package/dist/resolver/internal/state.d.ts +26 -0
  176. package/dist/resolver/internal/state.d.ts.map +1 -0
  177. package/dist/resolver/internal/state.js +2 -0
  178. package/dist/resolver/internal/state.js.map +1 -0
  179. package/dist/resolver/internal/transform-runner.d.ts +6 -0
  180. package/dist/resolver/internal/transform-runner.d.ts.map +1 -0
  181. package/dist/resolver/internal/transform-runner.js +31 -0
  182. package/dist/resolver/internal/transform-runner.js.map +1 -0
  183. package/dist/resolver/internal/type-compatibility.d.ts +2 -0
  184. package/dist/resolver/internal/type-compatibility.d.ts.map +1 -0
  185. package/dist/resolver/internal/type-compatibility.js +25 -0
  186. package/dist/resolver/internal/type-compatibility.js.map +1 -0
  187. package/dist/resolver/types.d.ts +5 -1
  188. package/dist/resolver/types.d.ts.map +1 -1
  189. package/dist/runtime/resolve-options.d.ts +16 -0
  190. package/dist/runtime/resolve-options.d.ts.map +1 -0
  191. package/dist/runtime/resolve-options.js +27 -0
  192. package/dist/runtime/resolve-options.js.map +1 -0
  193. package/dist/session/internal/options.d.ts +1 -15
  194. package/dist/session/internal/options.d.ts.map +1 -1
  195. package/dist/session/internal/options.js +1 -28
  196. package/dist/session/internal/options.js.map +1 -1
  197. package/dist/session/internal/runtime.d.ts +15 -0
  198. package/dist/session/internal/runtime.d.ts.map +1 -0
  199. package/dist/session/internal/runtime.js +15 -0
  200. package/dist/session/internal/runtime.js.map +1 -0
  201. package/dist/session/options.d.ts +2 -0
  202. package/dist/session/options.d.ts.map +1 -0
  203. package/dist/session/options.js +2 -0
  204. package/dist/session/options.js.map +1 -0
  205. package/dist/session/runtime.d.ts +2 -0
  206. package/dist/session/runtime.d.ts.map +1 -0
  207. package/dist/session/runtime.js +2 -0
  208. package/dist/session/runtime.js.map +1 -0
  209. package/dist/session/types.d.ts +1 -15
  210. package/dist/session/types.d.ts.map +1 -1
  211. package/dist/session.d.ts +1 -1
  212. package/dist/session.d.ts.map +1 -1
  213. package/dist/session.js +4 -4
  214. package/dist/session.js.map +1 -1
  215. package/dist/tokens/contracts.d.ts +33 -0
  216. package/dist/tokens/contracts.d.ts.map +1 -0
  217. package/dist/tokens/contracts.js +2 -0
  218. package/dist/tokens/contracts.js.map +1 -0
  219. package/dist/tokens/inputs.d.ts +1 -4
  220. package/dist/tokens/inputs.d.ts.map +1 -1
  221. package/dist/tokens/inputs.js +21 -81
  222. package/dist/tokens/inputs.js.map +1 -1
  223. package/dist/tokens/internal/parse-result.d.ts +15 -0
  224. package/dist/tokens/internal/parse-result.d.ts.map +1 -0
  225. package/dist/tokens/internal/parse-result.js +43 -0
  226. package/dist/tokens/internal/parse-result.js.map +1 -0
  227. package/dist/tokens/parse-tokens.d.ts +3 -24
  228. package/dist/tokens/parse-tokens.d.ts.map +1 -1
  229. package/dist/tokens/parse-tokens.js +24 -49
  230. package/dist/tokens/parse-tokens.js.map +1 -1
  231. package/dist/tokens/token-flattening-adapter.d.ts +24 -0
  232. package/dist/tokens/token-flattening-adapter.d.ts.map +1 -0
  233. package/dist/tokens/token-flattening-adapter.js +59 -0
  234. package/dist/tokens/token-flattening-adapter.js.map +1 -0
  235. package/dist/tokens/use-case-factory.d.ts +11 -0
  236. package/dist/tokens/use-case-factory.d.ts.map +1 -0
  237. package/dist/tokens/use-case-factory.js +33 -0
  238. package/dist/tokens/use-case-factory.js.map +1 -0
  239. package/dist/utils/context.d.ts +3 -0
  240. package/dist/utils/context.d.ts.map +1 -0
  241. package/dist/utils/context.js +10 -0
  242. package/dist/utils/context.js.map +1 -0
  243. package/dist/utils/inline-yaml.d.ts.map +1 -0
  244. package/dist/utils/inline-yaml.js.map +1 -0
  245. package/dist/utils/json-pointer.d.ts +1 -1
  246. package/dist/utils/json-pointer.d.ts.map +1 -1
  247. package/dist/utils/source.d.ts +1 -1
  248. package/dist/utils/source.d.ts.map +1 -1
  249. package/dist/validation/schema-guard.d.ts.map +1 -1
  250. package/dist/validation/schema-guard.js +19 -82
  251. package/dist/validation/schema-guard.js.map +1 -1
  252. package/package.json +11 -12
  253. package/dist/io/decoder/inline-yaml.d.ts.map +0 -1
  254. package/dist/io/decoder/inline-yaml.js.map +0 -1
  255. /package/dist/{io/decoder → utils}/inline-yaml.d.ts +0 -0
  256. /package/dist/{io/decoder → utils}/inline-yaml.js +0 -0
@@ -1,32 +1,41 @@
1
1
  import { DiagnosticCodes } from '../diagnostics/codes.js';
2
2
  import { JSON_POINTER_ROOT, normalizeJsonPointer } from '../utils/json-pointer.js';
3
- import { EMPTY_DIAGNOSTICS, EMPTY_OVERRIDES, EMPTY_WARNINGS, EMPTY_TRANSFORM_EVALUATIONS } from './internal/constants.js';
4
- import { finalizeResolution, freezeResultDiagnostics, createTransformFailureDiagnostic, createTraceStep, createFieldSource, createTargetSource, mergeDiagnostics, conditionMatches } from './internal/helpers.js';
5
- import { normalizeContext, normalizeMaxDepth, indexOverrides, normalizeTransforms } from './internal/context.js';
3
+ import { EMPTY_DIAGNOSTICS, EMPTY_OVERRIDES, EMPTY_WARNINGS } from './internal/constants.js';
4
+ import { finalizeResolution, createTraceStep, createFieldSource, createTargetSource, mergeDiagnostics } from './internal/helpers.js';
5
+ import { normalizeContext, normalizeMaxDepth, normalizeTransforms } from './internal/context.js';
6
6
  import { ResolvedTokenImpl } from './internal/resolved-token.js';
7
7
  import { createDiagnosticCollector } from './internal/diagnostics.js';
8
+ import { isOverrideValueCompatible } from './internal/type-compatibility.js';
9
+ import { runTokenTransforms } from './internal/transform-runner.js';
10
+ import { createResolutionKey } from './internal/resolution-key.js';
11
+ import { doesOverrideApply } from './internal/override-evaluator.js';
12
+ import { indexOverridesByGraph, normalizeExternalGraphs } from './internal/external-graph-index.js';
8
13
  export class DocumentResolver {
9
14
  graph;
15
+ graphs;
10
16
  context;
11
- overrides;
17
+ overridesByGraph;
12
18
  maxDepth;
13
19
  document;
14
20
  transforms;
21
+ allowNetworkReferences;
15
22
  cache = new Map();
16
23
  pending = new Set();
17
24
  constructor(graph, options = {}) {
18
25
  this.graph = graph;
26
+ this.graphs = normalizeExternalGraphs(graph, options.externalGraphs);
19
27
  this.context = normalizeContext(options.context);
20
- this.overrides = indexOverrides(graph.overrides);
28
+ this.overridesByGraph = indexOverridesByGraph(this.graphs);
21
29
  this.maxDepth = normalizeMaxDepth(options.maxDepth);
22
30
  this.document = options.document;
23
31
  this.transforms = normalizeTransforms(options.transforms);
32
+ this.allowNetworkReferences = options.allowNetworkReferences ?? false;
24
33
  }
25
34
  resolve(pointer) {
26
35
  const diagnostics = createDiagnosticCollector();
27
36
  try {
28
37
  const normalized = normalizeJsonPointer(pointer);
29
- const state = this.resolveInternal(normalized, diagnostics, 0);
38
+ const state = this.resolveInternalInGraph(this.graph.uri, normalized, diagnostics, 0);
30
39
  if (!state) {
31
40
  return finalizeResolution(undefined, diagnostics);
32
41
  }
@@ -40,7 +49,7 @@ export class DocumentResolver {
40
49
  warnings: state.warnings,
41
50
  trace: state.trace
42
51
  });
43
- const transforms = this.applyTransforms(token, diagnostics);
52
+ const transforms = runTokenTransforms(token, this.transforms, this.document, diagnostics);
44
53
  return finalizeResolution(token, diagnostics, transforms);
45
54
  }
46
55
  catch (error) {
@@ -53,17 +62,18 @@ export class DocumentResolver {
53
62
  return finalizeResolution(undefined, diagnostics);
54
63
  }
55
64
  }
56
- resolveInternal(pointer, diagnostics, depth) {
57
- if (this.cache.has(pointer)) {
58
- const cached = this.cache.get(pointer);
65
+ resolveInternalInGraph(graphUri, pointer, diagnostics, depth) {
66
+ const cacheKey = createResolutionKey(graphUri, pointer);
67
+ if (this.cache.has(cacheKey)) {
68
+ const cached = this.cache.get(cacheKey);
59
69
  if (cached) {
60
70
  return cached;
61
71
  }
62
72
  }
63
- if (this.pending.has(pointer)) {
73
+ if (this.pending.has(cacheKey)) {
64
74
  diagnostics.add({
65
75
  code: DiagnosticCodes.resolver.CYCLE_DETECTED,
66
- message: `Circular reference detected while resolving "${pointer}".`,
76
+ message: `Circular reference detected while resolving "${graphUri.href}#${pointer}".`,
67
77
  severity: 'error',
68
78
  pointer
69
79
  });
@@ -78,11 +88,21 @@ export class DocumentResolver {
78
88
  });
79
89
  return undefined;
80
90
  }
81
- const node = this.graph.nodes.get(pointer);
91
+ const graph = this.graphs.get(graphUri.href);
92
+ if (!graph) {
93
+ diagnostics.add({
94
+ code: DiagnosticCodes.resolver.EXTERNAL_REFERENCE,
95
+ message: `External document "${graphUri.href}" is not available for resolution.`,
96
+ severity: 'error',
97
+ pointer
98
+ });
99
+ return undefined;
100
+ }
101
+ const node = graph.nodes.get(pointer);
82
102
  if (!node) {
83
103
  diagnostics.add({
84
104
  code: DiagnosticCodes.resolver.UNKNOWN_POINTER,
85
- message: `No token exists at pointer "${pointer}".`,
105
+ message: `No token exists at pointer "${graphUri.href}#${pointer}".`,
86
106
  severity: 'error',
87
107
  pointer
88
108
  });
@@ -98,31 +118,32 @@ export class DocumentResolver {
98
118
  });
99
119
  return undefined;
100
120
  }
101
- this.pending.add(pointer);
121
+ this.pending.add(cacheKey);
102
122
  try {
103
- const base = this.resolveBaseNode(node, diagnostics, depth);
123
+ const base = this.resolveBaseNode(graph, node, diagnostics, depth);
104
124
  if (!base) {
105
125
  return undefined;
106
126
  }
107
- const withOverrides = this.applyOverrides(node.pointer, base, diagnostics, depth);
108
- this.cache.set(pointer, withOverrides);
127
+ const withOverrides = this.applyOverrides(graph, node.pointer, base, diagnostics, depth);
128
+ this.validateDeprecatedReplacement(graph, node, withOverrides, diagnostics);
129
+ this.cache.set(cacheKey, withOverrides);
109
130
  return withOverrides;
110
131
  }
111
132
  finally {
112
- this.pending.delete(pointer);
133
+ this.pending.delete(cacheKey);
113
134
  }
114
135
  }
115
- resolveBaseNode(node, diagnostics, depth) {
136
+ resolveBaseNode(graph, node, diagnostics, depth) {
116
137
  switch (node.kind) {
117
138
  case 'token':
118
- return this.resolveTokenNode(node, diagnostics);
139
+ return this.resolveTokenNode(graph, node, diagnostics);
119
140
  case 'alias':
120
141
  return this.resolveAliasNode(node, diagnostics, depth);
121
142
  default:
122
143
  return undefined;
123
144
  }
124
145
  }
125
- resolveTokenNode(node, diagnostics) {
146
+ resolveTokenNode(graph, node, diagnostics) {
126
147
  const trace = Object.freeze([createTraceStep(node.pointer, 'token', node.span)]);
127
148
  const valueField = node.value;
128
149
  const warnings = [];
@@ -130,7 +151,7 @@ export class DocumentResolver {
130
151
  let value;
131
152
  if (valueField) {
132
153
  value = valueField.value;
133
- source = createFieldSource(valueField, this.graph.uri);
154
+ source = createFieldSource(valueField, graph.uri);
134
155
  }
135
156
  else {
136
157
  diagnostics.add({
@@ -155,25 +176,7 @@ export class DocumentResolver {
155
176
  resolveAliasNode(node, diagnostics, depth) {
156
177
  const tracePrefix = createTraceStep(node.pointer, 'alias', node.span);
157
178
  const target = node.ref.value;
158
- if (target.external) {
159
- diagnostics.add({
160
- code: DiagnosticCodes.resolver.EXTERNAL_REFERENCE,
161
- message: `Alias "${node.pointer}" references external pointer "${target.uri.href}${target.pointer}" which is not yet supported.`,
162
- severity: 'error',
163
- pointer: node.pointer,
164
- span: node.ref.span
165
- });
166
- return {
167
- pointer: node.pointer,
168
- type: node.type.value,
169
- value: undefined,
170
- source: undefined,
171
- overrides: EMPTY_OVERRIDES,
172
- warnings: EMPTY_WARNINGS,
173
- trace: Object.freeze([tracePrefix])
174
- };
175
- }
176
- const targetState = this.resolveInternal(target.pointer, diagnostics, depth + 1);
179
+ const targetState = this.resolveTargetReference(target, diagnostics, depth + 1, node.ref.span);
177
180
  if (!targetState) {
178
181
  return {
179
182
  pointer: node.pointer,
@@ -213,8 +216,8 @@ export class DocumentResolver {
213
216
  trace
214
217
  };
215
218
  }
216
- applyOverrides(pointer, base, diagnostics, depth) {
217
- const overrides = this.overrides.get(pointer);
219
+ applyOverrides(graph, pointer, base, diagnostics, depth) {
220
+ const overrides = this.overridesByGraph.get(graph.uri.href)?.get(pointer);
218
221
  if (!overrides || overrides.length === 0) {
219
222
  return base;
220
223
  }
@@ -243,23 +246,90 @@ export class DocumentResolver {
243
246
  trace
244
247
  };
245
248
  }
246
- evaluateOverride(override, base, depth) {
247
- if (!this.doesOverrideApply(override)) {
248
- return { matched: false, diagnostics: EMPTY_DIAGNOSTICS };
249
+ validateDeprecatedReplacement(graph, node, state, diagnostics) {
250
+ const replacement = node.metadata.deprecated?.value.replacement;
251
+ if (!replacement) {
252
+ return;
249
253
  }
250
- if (override.token.value.external) {
251
- return {
252
- matched: true,
253
- diagnostics: [
254
+ let resolved;
255
+ try {
256
+ resolved = new URL(replacement.value, graph.uri);
257
+ }
258
+ catch {
259
+ diagnostics.add({
260
+ code: DiagnosticCodes.resolver.EXTERNAL_REFERENCE,
261
+ message: `Deprecated replacement "${replacement.value}" is not a valid reference URI.`,
262
+ severity: 'error',
263
+ pointer: replacement.pointer,
264
+ span: replacement.span
265
+ });
266
+ return;
267
+ }
268
+ const pointer = normalizeJsonPointer(resolved.hash.length > 0 ? resolved.hash : '#');
269
+ const targetUri = new URL(resolved.href);
270
+ targetUri.hash = '';
271
+ const target = Object.freeze({
272
+ uri: targetUri,
273
+ pointer,
274
+ external: targetUri.href !== graph.uri.href
275
+ });
276
+ const targetGraph = this.graphs.get(target.uri.href);
277
+ if (!targetGraph) {
278
+ diagnostics.add({
279
+ code: DiagnosticCodes.resolver.EXTERNAL_REFERENCE,
280
+ message: `Deprecated replacement "${replacement.value}" points to an unavailable document.`,
281
+ severity: 'error',
282
+ pointer: replacement.pointer,
283
+ span: replacement.span
284
+ });
285
+ return;
286
+ }
287
+ const targetNode = targetGraph.nodes.get(target.pointer);
288
+ if (!targetNode || targetNode.kind === 'collection') {
289
+ diagnostics.add({
290
+ code: DiagnosticCodes.resolver.UNKNOWN_POINTER,
291
+ message: `Deprecated replacement "${replacement.value}" must resolve to an existing token.`,
292
+ severity: 'error',
293
+ pointer: replacement.pointer,
294
+ span: replacement.span
295
+ });
296
+ return;
297
+ }
298
+ const expectedType = state.type;
299
+ if (!expectedType) {
300
+ return;
301
+ }
302
+ const targetType = targetNode.type?.value;
303
+ if (!targetType) {
304
+ diagnostics.add({
305
+ code: DiagnosticCodes.resolver.TARGET_TYPE_MISMATCH,
306
+ message: `Deprecated replacement "${replacement.value}" must resolve to a token declaring "$type" "${expectedType}".`,
307
+ severity: 'error',
308
+ pointer: replacement.pointer,
309
+ span: replacement.span
310
+ });
311
+ return;
312
+ }
313
+ if (targetType !== expectedType) {
314
+ diagnostics.add({
315
+ code: DiagnosticCodes.resolver.TARGET_TYPE_MISMATCH,
316
+ message: `Deprecated replacement "${replacement.value}" resolved to type "${targetType}" but expected "${expectedType}".`,
317
+ severity: 'error',
318
+ pointer: replacement.pointer,
319
+ span: replacement.span,
320
+ related: [
254
321
  {
255
- code: DiagnosticCodes.resolver.EXTERNAL_REFERENCE,
256
- message: `Override "$token" target "${override.token.value.uri.href}${override.token.value.pointer}" is external and not yet supported.`,
257
- severity: 'error',
258
- pointer: override.pointer,
259
- span: override.token.span
322
+ message: 'Replacement token resolved here.',
323
+ pointer: target.pointer,
324
+ span: targetNode.span
260
325
  }
261
326
  ]
262
- };
327
+ });
328
+ }
329
+ }
330
+ evaluateOverride(override, base, depth) {
331
+ if (!doesOverrideApply(override, this.context)) {
332
+ return { matched: false, diagnostics: EMPTY_DIAGNOSTICS };
263
333
  }
264
334
  const traceSteps = [
265
335
  createTraceStep(override.pointer, 'override', override.span)
@@ -270,7 +340,7 @@ export class DocumentResolver {
270
340
  state = this.resolveOverrideRef(override, override.ref, base, localDiagnostics, traceSteps, depth);
271
341
  }
272
342
  if (!state && override.value) {
273
- state = this.resolveOverrideValue(override, override.value, traceSteps);
343
+ state = this.resolveOverrideValue(override, override.value, base, localDiagnostics, traceSteps);
274
344
  }
275
345
  if (!state && override.fallback) {
276
346
  state = this.resolveFallbackChain(override.fallback, base, localDiagnostics, 1, traceSteps, depth + 1);
@@ -290,35 +360,10 @@ export class DocumentResolver {
290
360
  diagnostics: localDiagnostics.toArray()
291
361
  };
292
362
  }
293
- doesOverrideApply(override) {
294
- const conditions = override.when.value;
295
- let recognized = false;
296
- for (const [key, expected] of Object.entries(conditions)) {
297
- if (!this.context.has(key)) {
298
- return false;
299
- }
300
- recognized = true;
301
- const actual = this.context.get(key);
302
- if (!conditionMatches(expected, actual)) {
303
- return false;
304
- }
305
- }
306
- return recognized;
307
- }
308
363
  resolveOverrideRef(override, ref, base, diagnostics, trace, depth) {
309
364
  const target = ref.value;
310
- if (target.external) {
311
- diagnostics.add({
312
- code: DiagnosticCodes.resolver.EXTERNAL_REFERENCE,
313
- message: `Override "${override.pointer}" references external pointer "${target.uri.href}${target.pointer}" which is not yet supported.`,
314
- severity: 'error',
315
- pointer: ref.pointer,
316
- span: ref.span
317
- });
318
- return undefined;
319
- }
320
365
  const targetDiagnostics = createDiagnosticCollector();
321
- const targetState = this.resolveInternal(target.pointer, targetDiagnostics, depth + 1);
366
+ const targetState = this.resolveTargetReference(target, targetDiagnostics, depth + 1, ref.span);
322
367
  diagnostics.addMany(targetDiagnostics.toArray());
323
368
  if (!targetState) {
324
369
  diagnostics.add({
@@ -369,7 +414,17 @@ export class DocumentResolver {
369
414
  trace: traceSteps
370
415
  };
371
416
  }
372
- resolveOverrideValue(override, valueField, trace) {
417
+ resolveOverrideValue(override, valueField, base, diagnostics, trace) {
418
+ if (!isOverrideValueCompatible(base.type, valueField.value)) {
419
+ diagnostics.add({
420
+ code: DiagnosticCodes.resolver.TARGET_TYPE_MISMATCH,
421
+ message: `Override "${override.pointer}" expects type "${base.type ?? '(unknown)'}" but inline $value is incompatible.`,
422
+ severity: 'error',
423
+ pointer: valueField.pointer,
424
+ span: valueField.span
425
+ });
426
+ return undefined;
427
+ }
373
428
  const source = createFieldSource(valueField, this.graph.uri);
374
429
  const overrides = Object.freeze([
375
430
  Object.freeze({
@@ -382,6 +437,7 @@ export class DocumentResolver {
382
437
  ]);
383
438
  const traceSteps = Object.freeze([...trace]);
384
439
  return {
440
+ type: base.type,
385
441
  value: valueField.value,
386
442
  source,
387
443
  overrides,
@@ -427,62 +483,61 @@ export class DocumentResolver {
427
483
  const fallbackTrace = [...trace, createTraceStep(entry.pointer, 'fallback', entry.span)];
428
484
  if (entry.ref) {
429
485
  const target = entry.ref.value;
430
- if (target.external) {
431
- diagnostics.add({
432
- code: DiagnosticCodes.resolver.EXTERNAL_REFERENCE,
433
- message: `Fallback entry "${entry.pointer}" references external pointer "${target.uri.href}${target.pointer}" which is not yet supported.`,
434
- severity: 'error',
435
- pointer: entry.ref.pointer,
436
- span: entry.ref.span
437
- });
438
- }
439
- else {
440
- const targetDiagnostics = createDiagnosticCollector();
441
- const targetState = this.resolveInternal(target.pointer, targetDiagnostics, resolutionDepth + 1);
442
- diagnostics.addMany(targetDiagnostics.toArray());
443
- if (targetState) {
444
- const type = base.type ?? targetState.type;
445
- if (base.type && targetState.type && base.type !== targetState.type) {
446
- diagnostics.add({
447
- code: DiagnosticCodes.resolver.TARGET_TYPE_MISMATCH,
448
- message: `Fallback entry "${entry.pointer}" expects type "${base.type}" but target "${target.pointer}" resolved to type "${targetState.type}".`,
449
- severity: 'error',
450
- pointer: entry.ref.pointer,
451
- span: entry.ref.span,
452
- related: [
453
- {
454
- message: 'Target token resolved here.',
455
- pointer: target.pointer,
456
- span: targetState.source?.span
457
- }
458
- ]
459
- });
460
- }
461
- const source = targetState.source ?? createTargetSource(target, entry.ref.span);
462
- const overrides = Object.freeze([
463
- ...targetState.overrides,
464
- Object.freeze({
465
- pointer: entry.pointer,
466
- span: entry.span,
467
- kind: 'fallback-ref',
468
- depth,
469
- source
470
- })
471
- ]);
472
- const warnings = mergeDiagnostics(targetState.warnings, []);
473
- const traceSteps = Object.freeze([...fallbackTrace, ...targetState.trace]);
474
- return {
475
- type,
476
- value: targetState.value,
477
- source,
478
- overrides,
479
- warnings,
480
- trace: traceSteps
481
- };
486
+ const targetDiagnostics = createDiagnosticCollector();
487
+ const targetState = this.resolveTargetReference(target, targetDiagnostics, resolutionDepth + 1, entry.ref.span);
488
+ diagnostics.addMany(targetDiagnostics.toArray());
489
+ if (targetState) {
490
+ const type = base.type ?? targetState.type;
491
+ if (base.type && targetState.type && base.type !== targetState.type) {
492
+ diagnostics.add({
493
+ code: DiagnosticCodes.resolver.TARGET_TYPE_MISMATCH,
494
+ message: `Fallback entry "${entry.pointer}" expects type "${base.type}" but target "${target.pointer}" resolved to type "${targetState.type}".`,
495
+ severity: 'error',
496
+ pointer: entry.ref.pointer,
497
+ span: entry.ref.span,
498
+ related: [
499
+ {
500
+ message: 'Target token resolved here.',
501
+ pointer: target.pointer,
502
+ span: targetState.source?.span
503
+ }
504
+ ]
505
+ });
482
506
  }
507
+ const source = targetState.source ?? createTargetSource(target, entry.ref.span);
508
+ const overrides = Object.freeze([
509
+ ...targetState.overrides,
510
+ Object.freeze({
511
+ pointer: entry.pointer,
512
+ span: entry.span,
513
+ kind: 'fallback-ref',
514
+ depth,
515
+ source
516
+ })
517
+ ]);
518
+ const warnings = mergeDiagnostics(targetState.warnings, []);
519
+ const traceSteps = Object.freeze([...fallbackTrace, ...targetState.trace]);
520
+ return {
521
+ type,
522
+ value: targetState.value,
523
+ source,
524
+ overrides,
525
+ warnings,
526
+ trace: traceSteps
527
+ };
483
528
  }
484
529
  }
485
530
  if (entry.value) {
531
+ if (!isOverrideValueCompatible(base.type, entry.value.value)) {
532
+ diagnostics.add({
533
+ code: DiagnosticCodes.resolver.TARGET_TYPE_MISMATCH,
534
+ message: `Fallback entry "${entry.pointer}" expects type "${base.type ?? '(unknown)'}" but inline $value is incompatible.`,
535
+ severity: 'error',
536
+ pointer: entry.value.pointer,
537
+ span: entry.value.span
538
+ });
539
+ return undefined;
540
+ }
486
541
  const source = createFieldSource(entry.value, this.graph.uri);
487
542
  const overrides = Object.freeze([
488
543
  Object.freeze({
@@ -495,6 +550,7 @@ export class DocumentResolver {
495
550
  ]);
496
551
  const traceSteps = Object.freeze([...fallbackTrace]);
497
552
  return {
553
+ type: base.type,
498
554
  value: entry.value.value,
499
555
  source,
500
556
  overrides,
@@ -507,35 +563,32 @@ export class DocumentResolver {
507
563
  }
508
564
  return undefined;
509
565
  }
510
- applyTransforms(token, diagnostics) {
511
- if (this.transforms.length === 0 || !this.document) {
512
- return EMPTY_TRANSFORM_EVALUATIONS;
513
- }
514
- const evaluations = [];
515
- for (const entry of this.transforms) {
516
- try {
517
- const result = entry.transform(token, { document: this.document });
518
- const transformDiagnostics = freezeResultDiagnostics(result?.diagnostics);
519
- if (transformDiagnostics.length > 0) {
520
- for (const diagnostic of transformDiagnostics) {
521
- diagnostics.add(diagnostic);
522
- }
523
- }
524
- evaluations.push(Object.freeze({
525
- plugin: entry.plugin,
526
- pointer: token.pointer,
527
- data: result?.data,
528
- diagnostics: transformDiagnostics
529
- }));
566
+ resolveTargetReference(target, diagnostics, depth, span) {
567
+ if (target.external) {
568
+ const protocol = target.uri.protocol.toLowerCase();
569
+ const networkReference = protocol === 'http:' || protocol === 'https:';
570
+ if (networkReference && !this.allowNetworkReferences) {
571
+ diagnostics.add({
572
+ code: DiagnosticCodes.resolver.EXTERNAL_REFERENCE,
573
+ message: `Reference "${target.uri.href}${target.pointer}" uses a network scheme and requires explicit opt-in.`,
574
+ severity: 'error',
575
+ pointer: target.pointer,
576
+ span
577
+ });
578
+ return undefined;
530
579
  }
531
- catch (error) {
532
- diagnostics.add(createTransformFailureDiagnostic(entry.plugin, token.pointer, error));
580
+ if (!this.graphs.has(target.uri.href)) {
581
+ diagnostics.add({
582
+ code: DiagnosticCodes.resolver.EXTERNAL_REFERENCE,
583
+ message: `Reference "${target.uri.href}${target.pointer}" could not be resolved because document "${target.uri.href}" is unavailable.`,
584
+ severity: 'error',
585
+ pointer: target.pointer,
586
+ span
587
+ });
588
+ return undefined;
533
589
  }
534
590
  }
535
- if (evaluations.length === 0) {
536
- return EMPTY_TRANSFORM_EVALUATIONS;
537
- }
538
- return Object.freeze(evaluations);
591
+ return this.resolveInternalInGraph(target.uri, target.pointer, diagnostics, depth);
539
592
  }
540
593
  }
541
594
  export function createDocumentResolver(graph, options = {}) {
@@ -1 +1 @@
1
- {"version":3,"file":"document-resolver.js","sourceRoot":"","sources":["../../src/resolver/document-resolver.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"document-resolver.js","sourceRoot":"","sources":["../../src/resolver/document-resolver.ts"],"names":[],"mappings":"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"}