@metaobjectsdev/metadata 0.6.0-rc.1 → 0.7.0-rc.1

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 (114) hide show
  1. package/README.md +54 -3
  2. package/dist/attr-schema-validate.js +7 -7
  3. package/dist/attr-schema-validate.js.map +1 -1
  4. package/dist/core/export-json.d.ts +6 -7
  5. package/dist/core/export-json.d.ts.map +1 -1
  6. package/dist/core/export-json.js +15 -17
  7. package/dist/core/export-json.js.map +1 -1
  8. package/dist/core/index.d.ts +4 -2
  9. package/dist/core/index.d.ts.map +1 -1
  10. package/dist/core/index.js +6 -2
  11. package/dist/core/index.js.map +1 -1
  12. package/dist/core/parser-yaml.d.ts.map +1 -1
  13. package/dist/core/parser-yaml.js +13 -4
  14. package/dist/core/parser-yaml.js.map +1 -1
  15. package/dist/errors.d.ts +28 -8
  16. package/dist/errors.d.ts.map +1 -1
  17. package/dist/errors.js +31 -5
  18. package/dist/errors.js.map +1 -1
  19. package/dist/index.d.ts +6 -3
  20. package/dist/index.d.ts.map +1 -1
  21. package/dist/index.js +9 -2
  22. package/dist/index.js.map +1 -1
  23. package/dist/json-path.d.ts +8 -0
  24. package/dist/json-path.d.ts.map +1 -0
  25. package/dist/json-path.js +39 -0
  26. package/dist/json-path.js.map +1 -0
  27. package/dist/loader/meta-data-loader.d.ts +47 -6
  28. package/dist/loader/meta-data-loader.d.ts.map +1 -1
  29. package/dist/loader/meta-data-loader.js +106 -8
  30. package/dist/loader/meta-data-loader.js.map +1 -1
  31. package/dist/loader/meta-data-source.d.ts +6 -2
  32. package/dist/loader/meta-data-source.d.ts.map +1 -1
  33. package/dist/loader/meta-data-source.js +10 -6
  34. package/dist/loader/meta-data-source.js.map +1 -1
  35. package/dist/loader/shortcuts.d.ts +9 -0
  36. package/dist/loader/shortcuts.d.ts.map +1 -0
  37. package/dist/loader/shortcuts.js +19 -0
  38. package/dist/loader/shortcuts.js.map +1 -0
  39. package/dist/loader/sources/directory-source.d.ts +15 -0
  40. package/dist/loader/sources/directory-source.d.ts.map +1 -0
  41. package/dist/loader/sources/directory-source.js +80 -0
  42. package/dist/loader/sources/directory-source.js.map +1 -0
  43. package/dist/loader/sources/file-source.d.ts +12 -0
  44. package/dist/loader/sources/file-source.d.ts.map +1 -0
  45. package/dist/loader/sources/file-source.js +46 -0
  46. package/dist/loader/sources/file-source.js.map +1 -0
  47. package/dist/loader/sources/index.d.ts +5 -0
  48. package/dist/loader/sources/index.d.ts.map +1 -0
  49. package/dist/loader/sources/index.js +5 -0
  50. package/dist/loader/sources/index.js.map +1 -0
  51. package/dist/loader/sources/uri-source.d.ts +9 -0
  52. package/dist/loader/sources/uri-source.d.ts.map +1 -0
  53. package/dist/loader/sources/uri-source.js +42 -0
  54. package/dist/loader/sources/uri-source.js.map +1 -0
  55. package/dist/loader/validation-passes.d.ts.map +1 -1
  56. package/dist/loader/validation-passes.js +27 -27
  57. package/dist/loader/validation-passes.js.map +1 -1
  58. package/dist/naming.d.ts +15 -2
  59. package/dist/naming.d.ts.map +1 -1
  60. package/dist/naming.js +20 -6
  61. package/dist/naming.js.map +1 -1
  62. package/dist/parser-core.d.ts +2 -4
  63. package/dist/parser-core.d.ts.map +1 -1
  64. package/dist/parser-core.js +111 -42
  65. package/dist/parser-core.js.map +1 -1
  66. package/dist/parser-json.d.ts.map +1 -1
  67. package/dist/parser-json.js +10 -2
  68. package/dist/parser-json.js.map +1 -1
  69. package/dist/persistence/source/validate-source-roles.js +2 -2
  70. package/dist/persistence/source/validate-source-roles.js.map +1 -1
  71. package/dist/semantic-diff.d.ts +5 -0
  72. package/dist/semantic-diff.d.ts.map +1 -0
  73. package/dist/semantic-diff.js +49 -0
  74. package/dist/semantic-diff.js.map +1 -0
  75. package/dist/shared/meta-data.d.ts +10 -0
  76. package/dist/shared/meta-data.d.ts.map +1 -1
  77. package/dist/shared/meta-data.js +23 -0
  78. package/dist/shared/meta-data.js.map +1 -1
  79. package/dist/source.d.ts +68 -0
  80. package/dist/source.d.ts.map +1 -0
  81. package/dist/source.js +13 -0
  82. package/dist/source.js.map +1 -0
  83. package/dist/subtype-rules.js +1 -1
  84. package/dist/subtype-rules.js.map +1 -1
  85. package/dist/super-resolve.d.ts +2 -0
  86. package/dist/super-resolve.d.ts.map +1 -1
  87. package/dist/super-resolve.js +1 -1
  88. package/dist/super-resolve.js.map +1 -1
  89. package/package.json +1 -1
  90. package/src/attr-schema-validate.ts +7 -7
  91. package/src/core/export-json.ts +15 -18
  92. package/src/core/index.ts +8 -2
  93. package/src/core/parser-yaml.ts +15 -4
  94. package/src/errors.ts +42 -8
  95. package/src/index.ts +28 -3
  96. package/src/json-path.ts +46 -0
  97. package/src/loader/meta-data-loader.ts +148 -10
  98. package/src/loader/meta-data-source.ts +10 -6
  99. package/src/loader/shortcuts.ts +31 -0
  100. package/src/loader/sources/directory-source.ts +90 -0
  101. package/src/{core → loader/sources}/file-source.ts +3 -3
  102. package/src/loader/sources/index.ts +6 -0
  103. package/src/loader/sources/uri-source.ts +44 -0
  104. package/src/loader/validation-passes.ts +28 -24
  105. package/src/naming.ts +39 -7
  106. package/src/parser-core.ts +113 -43
  107. package/src/parser-json.ts +11 -2
  108. package/src/persistence/source/validate-source-roles.ts +2 -2
  109. package/src/semantic-diff.ts +48 -0
  110. package/src/shared/meta-data.ts +28 -0
  111. package/src/source.ts +61 -0
  112. package/src/subtype-rules.ts +1 -1
  113. package/src/super-resolve.ts +3 -1
  114. package/src/core/file-meta-data-loader.ts +0 -89
@@ -28,31 +28,35 @@ import { MetaAttr } from "./core/attr/meta-attr.js";
28
28
  import { inferAttrSubType } from "./serializer-json.js";
29
29
  import { ParseError } from "./errors.js";
30
30
  import { resolveSuperRef } from "./super-resolve.js";
31
+ import { JsonPathBuilder } from "./json-path.js";
31
32
  import { TYPE_ATTR, TYPE_FIELD, TYPE_OBJECT, TYPE_VALIDATOR, SUBTYPE_BASE, } from "./shared/base-types.js";
32
33
  import { RESERVED_KEYS, RESERVED_KEY_NAME, RESERVED_KEY_PACKAGE, RESERVED_KEY_EXTENDS, RESERVED_KEY_ABSTRACT, RESERVED_KEY_OVERLAY, RESERVED_KEY_IS_ARRAY, RESERVED_KEY_CHILDREN, RESERVED_KEY_VALUE, JSON_KEY_SCHEMA, ATTR_PREFIX, TYPE_SUBTYPE_SEPARATOR, PACKAGE_SEPARATOR, } from "./shared/structural.js";
33
34
  import { ATTR_SUBTYPE_PROPERTIES } from "./core/attr/attr-constants.js";
34
35
  // ---------------------------------------------------------------------------
35
- // Internal helper — build ParseError opts, omitting undefined fields
36
- // (required by exactOptionalPropertyTypes: true in the project tsconfig)
36
+ // Internal helper — build a parse-phase ErrorSource envelope.
37
+ //
38
+ // FR5a / ADR-0009: ParseError carries a `source: ErrorSource` envelope. For
39
+ // errors raised mid-parse, the envelope's jsonPath comes from the parser's
40
+ // module-level JsonPathBuilder (synced with the walk); files[0] is the parsed
41
+ // source id. Falls back to a code-source envelope if invoked outside a buildTree
42
+ // run (defensive — every callsite below runs inside buildTree).
37
43
  // ---------------------------------------------------------------------------
38
- export function errOpts(source, path) {
39
- const opts = {};
40
- if (source !== undefined)
41
- opts.source = source;
42
- if (path !== undefined)
43
- opts.path = path;
44
- return opts;
44
+ export function errSource() {
45
+ if (_currentPath !== undefined && _currentSourceId !== undefined) {
46
+ return {
47
+ format: "json",
48
+ files: [_currentSourceId],
49
+ jsonPath: _currentPath.toString(),
50
+ };
51
+ }
52
+ return { format: "code", caller: "parser-core" };
45
53
  }
46
54
  // ---------------------------------------------------------------------------
47
55
  // Internal helper — report a problem: throw in strict mode, push warning otherwise
48
56
  // ---------------------------------------------------------------------------
49
- function reportProblem(msg, strict, warnings, source, path, code) {
57
+ function reportProblem(msg, strict, warnings, code) {
50
58
  if (strict) {
51
- const opts = errOpts(source, path);
52
- if (code !== undefined)
53
- throw new ParseError(msg, { ...opts, code });
54
- else
55
- throw new ParseError(msg, opts);
59
+ throw new ParseError(msg, { code, source: errSource() });
56
60
  }
57
61
  warnings.push(msg);
58
62
  }
@@ -107,6 +111,26 @@ let _deferSuperResolution = false;
107
111
  // Safe because buildTree is synchronous — same reentrancy argument as
108
112
  // _deferSuperResolution.
109
113
  let _currentErrors;
114
+ // FR5a / ADR-0009 — Module-level JSONPath builder + source id, set at
115
+ // buildTree entry and updated by recursive descent (push on the way down,
116
+ // pop on the way back up). Used by populateNodeSource() to stamp every
117
+ // constructed MetaData with `{ format: "json", files: [sourceId], jsonPath }`.
118
+ // Safe because buildTree is synchronous — same reentrancy argument as
119
+ // _currentErrors above.
120
+ let _currentPath;
121
+ let _currentSourceId;
122
+ /** Set the parsed-from-JSON provenance envelope on a freshly-created node.
123
+ * No-op when the parser is invoked outside buildTree's setup (defensive — the
124
+ * module-level state will always be populated during a normal parse). */
125
+ function populateNodeSource(node) {
126
+ if (_currentPath === undefined || _currentSourceId === undefined)
127
+ return;
128
+ node.setSource({
129
+ format: "json",
130
+ files: [_currentSourceId],
131
+ jsonPath: _currentPath.toString(),
132
+ });
133
+ }
110
134
  /**
111
135
  * buildTree — the shared registry-driven tree-builder.
112
136
  *
@@ -125,23 +149,34 @@ export function buildTree(parsed, opts) {
125
149
  const source = opts.sourceName;
126
150
  _deferSuperResolution = opts.deferSuperResolution === true;
127
151
  _currentErrors = errors;
152
+ // FR5a — start a fresh JSONPath stack rooted at "$"; sourceId is the
153
+ // source's id (from FileSource / InMemoryStringSource via opts.sourceName).
154
+ // Falls back to "<unknown>" when no name was supplied (e.g. ad-hoc parseJson
155
+ // calls from tests).
156
+ _currentPath = new JsonPathBuilder();
157
+ _currentSourceId = source ?? "<unknown>";
128
158
  try {
129
159
  if (typeof parsed !== "object" || parsed === null || Array.isArray(parsed)) {
130
- throw new ParseError("Top-level metadata must be an object", { ...errOpts(source), code: "ERR_TOP_LEVEL_NOT_OBJECT" });
160
+ throw new ParseError("Top-level metadata must be an object", { code: "ERR_TOP_LEVEL_NOT_OBJECT", source: errSource() });
131
161
  }
132
162
  const topLevel = parsed;
133
163
  // --- Find the wrapper key (skip $schema) ---
134
164
  const wrapperKeys = Object.keys(topLevel).filter((k) => k !== JSON_KEY_SCHEMA);
135
165
  if (wrapperKeys.length === 0) {
136
- throw new ParseError("Top-level metadata object has no type wrapper key", { ...errOpts(source), code: "ERR_TOP_LEVEL_NOT_OBJECT" });
166
+ throw new ParseError("Top-level metadata object has no type wrapper key", { code: "ERR_TOP_LEVEL_NOT_OBJECT", source: errSource() });
137
167
  }
138
168
  if (wrapperKeys.length > 1) {
139
- throw new ParseError(`Top-level metadata object must have exactly one wrapper key (found: ${wrapperKeys.join(", ")})`, { ...errOpts(source), code: "ERR_TOP_LEVEL_NOT_OBJECT" });
169
+ throw new ParseError(`Top-level metadata object must have exactly one wrapper key (found: ${wrapperKeys.join(", ")})`, { code: "ERR_TOP_LEVEL_NOT_OBJECT", source: errSource() });
140
170
  }
141
171
  const rootKey = wrapperKeys[0];
142
172
  const rootData = topLevel[rootKey];
143
173
  if (typeof rootData !== "object" || rootData === null || Array.isArray(rootData)) {
144
- throw new ParseError(`Top-level wrapper "${rootKey}" must contain an object`, { ...errOpts(source, rootKey), code: "ERR_TOP_LEVEL_NOT_OBJECT" });
174
+ // The error context references the rootKey wrapper; push it so the
175
+ // envelope's jsonPath includes it (matches the legacy `path` slot).
176
+ _currentPath.pushKey(rootKey);
177
+ const src = errSource();
178
+ _currentPath.pop();
179
+ throw new ParseError(`Top-level wrapper "${rootKey}" must contain an object`, { code: "ERR_TOP_LEVEL_NOT_OBJECT", source: src });
145
180
  }
146
181
  const rootDataObj = rootData;
147
182
  const { type: rootType, subType: rootSubType } = splitTypeKey(rootKey, opts.registry);
@@ -150,8 +185,17 @@ export function buildTree(parsed, opts) {
150
185
  const rootTypeCode = opts.registry.allSubTypesOf(rootType).length > 0
151
186
  ? "ERR_UNKNOWN_SUBTYPE"
152
187
  : "ERR_UNKNOWN_TYPE";
153
- throw new ParseError(`Unknown root type "${rootType}.${rootSubType}" — not registered`, { ...errOpts(source, rootKey), code: rootTypeCode });
154
- }
188
+ _currentPath.pushKey(rootKey);
189
+ const src = errSource();
190
+ _currentPath.pop();
191
+ throw new ParseError(`Unknown root type "${rootType}.${rootSubType}" — not registered`, { code: rootTypeCode, source: src });
192
+ }
193
+ // FR5a — push the wrapper-key segment onto the JSONPath stack so all
194
+ // descendants emit jsonPath strings rooted at "$.<rootKey>". The merge-mode
195
+ // path keeps the existing root's source untouched; only NEW children get
196
+ // populated with the current source's id (correct: the existing root was
197
+ // already stamped from the file that created it).
198
+ _currentPath.pushKey(rootKey);
155
199
  if (opts.intoRoot !== undefined) {
156
200
  // --- Merge mode: parse root's attrs/children into the existing root ---
157
201
  // The JSON root's own package/super/reserved-keys are not re-applied to the
@@ -161,6 +205,7 @@ export function buildTree(parsed, opts) {
161
205
  const contextPkg = (typeof newRootPkg === "string" ? newRootPkg : opts.intoRoot.package) ?? "";
162
206
  parseNodeInto(rootDataObj, opts.intoRoot, opts.intoRoot, // accumulating root for super resolution
163
207
  contextPkg, opts.registry, warnings, errors, strict, source, rootKey);
208
+ _currentPath.pop();
164
209
  return { root: opts.intoRoot, warnings, errors };
165
210
  }
166
211
  // --- Fresh root mode: create a new root from the JSON ---
@@ -174,11 +219,14 @@ export function buildTree(parsed, opts) {
174
219
  const root = parseNodeFresh(rootType, rootSubType, rootDataObj, undefined, // no accumulating root yet — built as we go
175
220
  "", // no inherited context pkg yet for the root itself
176
221
  opts.registry, warnings, errors, strict, source, rootKey);
222
+ _currentPath.pop();
177
223
  return { root, warnings, errors };
178
224
  }
179
225
  finally {
180
226
  _deferSuperResolution = false;
181
227
  _currentErrors = undefined;
228
+ _currentPath = undefined;
229
+ _currentSourceId = undefined;
182
230
  }
183
231
  }
184
232
  // ---------------------------------------------------------------------------
@@ -200,10 +248,12 @@ parent) {
200
248
  }
201
249
  else {
202
250
  const msg = `Unknown type "${type}.${subType}" — not registered`;
203
- errors.push(new ParseError(msg, { ...errOpts(source, path), code: "ERR_UNKNOWN_TYPE" }));
251
+ errors.push(new ParseError(msg, { code: "ERR_UNKNOWN_TYPE", source: errSource() }));
204
252
  const rawName = nodeData[RESERVED_KEY_NAME];
205
253
  const name = typeof rawName === "string" ? rawName : "";
206
- return new MetaRoot(new TypeId(type, subType), name);
254
+ const stub = new MetaRoot(new TypeId(type, subType), name);
255
+ populateNodeSource(stub);
256
+ return stub;
207
257
  }
208
258
  }
209
259
  // --- Determine name ---
@@ -212,6 +262,10 @@ parent) {
212
262
  // --- Create the model ---
213
263
  const def = registry.find(type, subType);
214
264
  const model = def.factory(def.typeId, name);
265
+ // FR5a — stamp the source provenance envelope using the parser's current
266
+ // JSONPath stack + source id. setSource happens BEFORE freeze (the parser
267
+ // is the only caller during loading; freeze runs in the loader after).
268
+ populateNodeSource(model);
215
269
  // --- Apply reserved keys (package, extends, abstract, isArray) ---
216
270
  applyReservedKeys(model, nodeData, strict, source, path, warnings, inheritedContextPkg);
217
271
  // --- Inherit package from context if not explicitly set ---
@@ -243,12 +297,12 @@ parent) {
243
297
  model.setSuperResolved(superModel);
244
298
  }
245
299
  else {
246
- throw new ParseError(`the SuperClass '${model.superRef}' does not exist in file '${source ?? "<unknown>"}'`, { ...errOpts(source, path), code: "ERR_UNRESOLVED_SUPER" });
300
+ throw new ParseError(`the SuperClass '${model.superRef}' does not exist in file '${source ?? "<unknown>"}'`, { code: "ERR_UNRESOLVED_SUPER", source: errSource() });
247
301
  }
248
302
  }
249
303
  else if (model.superRef !== undefined && accumRoot === undefined) {
250
304
  // Root node has a super ref — not resolvable against itself.
251
- reportProblem(`super on root node ('${model.superRef}') is not supported and will be ignored`, strict, warnings, source, path, "ERR_UNRESOLVED_SUPER");
305
+ reportProblem(`super on root node ('${model.superRef}') is not supported and will be ignored`, strict, warnings, "ERR_UNRESOLVED_SUPER");
252
306
  }
253
307
  // --- Process inline attributes and other keys ---
254
308
  applyInlineAttrsAndUnknownKeys(model, nodeData, strict, source, path, warnings, registry);
@@ -293,7 +347,7 @@ function createOrFindMetaData(type, subType, nodeData, parent, accumRoot, inheri
293
347
  const existing = name !== "" ? parent.ownChildByTypeAndName(type, name) : undefined;
294
348
  if (isOverlayNode) {
295
349
  if (existing === undefined) {
296
- throw new ParseError(`Overlay operation requested for [${type}:${name}] but no existing metadata found to merge into`, { ...errOpts(source, path), code: "ERR_OVERLAY_NO_TARGET" });
350
+ throw new ParseError(`Overlay operation requested for [${type}:${name}] but no existing metadata found to merge into`, { code: "ERR_OVERLAY_NO_TARGET", source: errSource() });
297
351
  }
298
352
  existing.setIsMerge(true);
299
353
  parseNodeInto(nodeData, existing, accumRoot, inheritedContextPkg, registry, warnings, errors, strict, source, path);
@@ -317,7 +371,7 @@ function applyReservedKeys(model, nodeData, strict, source, path, warnings, cont
317
371
  const rawPkg = nodeData[RESERVED_KEY_PACKAGE];
318
372
  if (rawPkg !== undefined) {
319
373
  if (typeof rawPkg !== "string") {
320
- reportProblem(`"${RESERVED_KEY_PACKAGE}" must be a string at ${path}`, strict, warnings, source, path, "ERR_BAD_ATTR_VALUE");
374
+ reportProblem(`"${RESERVED_KEY_PACKAGE}" must be a string at ${path}`, strict, warnings, "ERR_BAD_ATTR_VALUE");
321
375
  }
322
376
  else {
323
377
  const expandedPkg = contextPkg !== undefined ? expandPackageForPath(contextPkg, rawPkg) : rawPkg;
@@ -328,7 +382,7 @@ function applyReservedKeys(model, nodeData, strict, source, path, warnings, cont
328
382
  const rawExtends = nodeData[RESERVED_KEY_EXTENDS];
329
383
  if (rawExtends !== undefined) {
330
384
  if (typeof rawExtends !== "string") {
331
- reportProblem(`"${RESERVED_KEY_EXTENDS}" must be a string at ${path}`, strict, warnings, source, path, "ERR_UNRESOLVED_SUPER");
385
+ reportProblem(`"${RESERVED_KEY_EXTENDS}" must be a string at ${path}`, strict, warnings, "ERR_UNRESOLVED_SUPER");
332
386
  }
333
387
  else {
334
388
  model.setSuper(rawExtends);
@@ -338,7 +392,7 @@ function applyReservedKeys(model, nodeData, strict, source, path, warnings, cont
338
392
  const rawAbstract = nodeData[RESERVED_KEY_ABSTRACT];
339
393
  if (rawAbstract !== undefined) {
340
394
  if (typeof rawAbstract !== "boolean") {
341
- reportProblem(`"${RESERVED_KEY_ABSTRACT}" must be a boolean at ${path}`, strict, warnings, source, path, "ERR_BAD_ATTR_VALUE");
395
+ reportProblem(`"${RESERVED_KEY_ABSTRACT}" must be a boolean at ${path}`, strict, warnings, "ERR_BAD_ATTR_VALUE");
342
396
  }
343
397
  else {
344
398
  model.setIsAbstract(rawAbstract);
@@ -348,7 +402,7 @@ function applyReservedKeys(model, nodeData, strict, source, path, warnings, cont
348
402
  const rawIsArray = nodeData[RESERVED_KEY_IS_ARRAY];
349
403
  if (rawIsArray !== undefined) {
350
404
  if (typeof rawIsArray !== "boolean") {
351
- reportProblem(`"${RESERVED_KEY_IS_ARRAY}" must be a boolean at ${path}`, strict, warnings, source, path, "ERR_BAD_ATTR_VALUE");
405
+ reportProblem(`"${RESERVED_KEY_IS_ARRAY}" must be a boolean at ${path}`, strict, warnings, "ERR_BAD_ATTR_VALUE");
352
406
  }
353
407
  else {
354
408
  model.setIsArray(rawIsArray);
@@ -368,7 +422,7 @@ function applyInlineAttrsAndUnknownKeys(model, nodeData, strict, source, path, w
368
422
  continue;
369
423
  if (!key.startsWith(ATTR_PREFIX)) {
370
424
  const displayName = model.name !== "" ? `${model.type}.${model.subType} '${model.name}'` : `${model.type}.${model.subType}`;
371
- reportProblem(`Unknown key '${key}' on ${displayName} at ${path} (must be reserved or ${ATTR_PREFIX}-prefixed)`, strict, warnings, source, path, "ERR_UNKNOWN_ATTR");
425
+ reportProblem(`Unknown key '${key}' on ${displayName} at ${path} (must be reserved or ${ATTR_PREFIX}-prefixed)`, strict, warnings, "ERR_UNKNOWN_ATTR");
372
426
  continue;
373
427
  }
374
428
  // Inline attribute (@-prefixed) — materialize into a MetaAttr instance.
@@ -384,14 +438,14 @@ function applyInlineAttrsAndUnknownKeys(model, nodeData, strict, source, path, w
384
438
  const msg = `Reserved structural key '${attrName}' must not be ${ATTR_PREFIX}-prefixed ` +
385
439
  `on ${displayName} at ${path} (write it bare)`;
386
440
  if (strict) {
387
- throw new ParseError(msg, { ...errOpts(source, path), code: "ERR_RESERVED_ATTR" });
441
+ throw new ParseError(msg, { code: "ERR_RESERVED_ATTR", source: errSource() });
388
442
  }
389
443
  // Lax mode: route through the module-level errors sink so the loader
390
444
  // sees this as a hard error (parity with attr-schema-validate's
391
445
  // ERR_BAD_ATTR_VALUE direct pushes). Falls back to warnings only if
392
446
  // _currentErrors isn't bound (unreachable when called from buildTree).
393
447
  if (_currentErrors !== undefined) {
394
- _currentErrors.push(new ParseError(msg, { ...errOpts(source, path), code: "ERR_RESERVED_ATTR" }));
448
+ _currentErrors.push(new ParseError(msg, { code: "ERR_RESERVED_ATTR", source: errSource() }));
395
449
  }
396
450
  else {
397
451
  warnings.push(msg);
@@ -404,7 +458,7 @@ function applyInlineAttrsAndUnknownKeys(model, nodeData, strict, source, path, w
404
458
  model.setMetaAttr(attr);
405
459
  }
406
460
  catch (err) {
407
- reportProblem(`Failed to convert attribute "${ATTR_PREFIX}${attrName}" at ${path}: ${err.message}`, strict, warnings, source, path, "ERR_BAD_ATTR_VALUE");
461
+ reportProblem(`Failed to convert attribute "${ATTR_PREFIX}${attrName}" at ${path}: ${err.message}`, strict, warnings, "ERR_BAD_ATTR_VALUE");
408
462
  }
409
463
  }
410
464
  }
@@ -457,14 +511,20 @@ function processChildren(parent, nodeData, accumRoot, inheritedContextPkg, regis
457
511
  if (rawChildren === undefined)
458
512
  return;
459
513
  if (!Array.isArray(rawChildren)) {
460
- reportProblem(`"${RESERVED_KEY_CHILDREN}" must be an array at ${path}`, strict, warnings, source, path, "ERR_TOP_LEVEL_NOT_OBJECT");
514
+ reportProblem(`"${RESERVED_KEY_CHILDREN}" must be an array at ${path}`, strict, warnings, "ERR_TOP_LEVEL_NOT_OBJECT");
461
515
  return;
462
516
  }
517
+ // FR5a — push the "children" segment once; each iteration pushes/pops a
518
+ // numeric index + the wrapper-key segment so nested nodes see the correct
519
+ // jsonPath when populateNodeSource() is called during their construction.
520
+ _currentPath?.pushKey(RESERVED_KEY_CHILDREN);
463
521
  for (let i = 0; i < rawChildren.length; i++) {
464
522
  const childEntry = rawChildren[i];
465
523
  const childPath = `${path}.${RESERVED_KEY_CHILDREN}[${i}]`;
524
+ _currentPath?.pushIndex(i);
466
525
  if (typeof childEntry !== "object" || childEntry === null || Array.isArray(childEntry)) {
467
- reportProblem(`Child at ${childPath} must be an object`, strict, warnings, source, childPath, "ERR_TOP_LEVEL_NOT_OBJECT");
526
+ reportProblem(`Child at ${childPath} must be an object`, strict, warnings, "ERR_TOP_LEVEL_NOT_OBJECT");
527
+ _currentPath?.pop();
468
528
  continue;
469
529
  }
470
530
  const childRecord = childEntry;
@@ -473,14 +533,18 @@ function processChildren(parent, nodeData, accumRoot, inheritedContextPkg, regis
473
533
  const msg = childKeys.length === 0
474
534
  ? `Child at ${childPath} has no type wrapper key`
475
535
  : `Child at ${childPath} has multiple keys (${childKeys.join(", ")}) — each child must have exactly one wrapper key`;
476
- reportProblem(msg, strict, warnings, source, childPath, "ERR_TOP_LEVEL_NOT_OBJECT");
536
+ reportProblem(msg, strict, warnings, "ERR_TOP_LEVEL_NOT_OBJECT");
537
+ _currentPath?.pop();
477
538
  continue;
478
539
  }
479
540
  const childKey = childKeys[0];
480
541
  const childData = childRecord[childKey];
481
542
  const childNodePath = `${childPath}.${childKey}`;
543
+ _currentPath?.pushKey(childKey);
482
544
  if (typeof childData !== "object" || childData === null || Array.isArray(childData)) {
483
- reportProblem(`Child wrapper "${childKey}" at ${childNodePath} must contain an object`, strict, warnings, source, childNodePath, "ERR_TOP_LEVEL_NOT_OBJECT");
545
+ reportProblem(`Child wrapper "${childKey}" at ${childNodePath} must contain an object`, strict, warnings, "ERR_TOP_LEVEL_NOT_OBJECT");
546
+ _currentPath?.pop(); // pop child wrapper key
547
+ _currentPath?.pop(); // pop array index
484
548
  continue;
485
549
  }
486
550
  const childDataObj = childData;
@@ -498,7 +562,9 @@ function processChildren(parent, nodeData, accumRoot, inheritedContextPkg, regis
498
562
  const childTypeCode = explicit && registry.allSubTypesOf(childType).length > 0
499
563
  ? "ERR_UNKNOWN_SUBTYPE"
500
564
  : "ERR_UNKNOWN_TYPE";
501
- errors.push(new ParseError(`Unknown type "${childType}.${childSubType}" — not registered`, { ...errOpts(source, childNodePath), code: childTypeCode }));
565
+ errors.push(new ParseError(`Unknown type "${childType}.${childSubType}" — not registered`, { code: childTypeCode, source: errSource() }));
566
+ _currentPath?.pop(); // pop child wrapper key
567
+ _currentPath?.pop(); // pop array index
502
568
  continue; // skip this child
503
569
  }
504
570
  }
@@ -513,7 +579,10 @@ function processChildren(parent, nodeData, accumRoot, inheritedContextPkg, regis
513
579
  parent.addChild(childModel);
514
580
  }
515
581
  }
582
+ _currentPath?.pop(); // pop child wrapper key
583
+ _currentPath?.pop(); // pop array index
516
584
  }
585
+ _currentPath?.pop(); // pop the "children" key
517
586
  }
518
587
  // ---------------------------------------------------------------------------
519
588
  // Attr child node — materialize into a MetaAttr instance (NOT a child).
@@ -530,11 +599,11 @@ function parseAttrChild(parent, attrType, attrSubType, attrData, registry, warni
530
599
  const attrName = attrData[RESERVED_KEY_NAME];
531
600
  const attrValue = attrData[RESERVED_KEY_VALUE];
532
601
  if (typeof attrName !== "string" || attrName === "") {
533
- reportProblem(`attr child at ${path} requires a non-empty "${RESERVED_KEY_NAME}" string`, strict, warnings, source, path, "ERR_MISSING_REQUIRED_ATTR");
602
+ reportProblem(`attr child at ${path} requires a non-empty "${RESERVED_KEY_NAME}" string`, strict, warnings, "ERR_MISSING_REQUIRED_ATTR");
534
603
  return;
535
604
  }
536
605
  if (attrValue === undefined) {
537
- reportProblem(`attr child "${attrName}" at ${path} is missing "${RESERVED_KEY_VALUE}"`, strict, warnings, source, path, "ERR_MISSING_REQUIRED_ATTR");
606
+ reportProblem(`attr child "${attrName}" at ${path} is missing "${RESERVED_KEY_VALUE}"`, strict, warnings, "ERR_MISSING_REQUIRED_ATTR");
538
607
  return;
539
608
  }
540
609
  // Resolve the attr node's own subtype (fall back to base if unregistered).
@@ -551,7 +620,7 @@ function parseAttrChild(parent, attrType, attrSubType, attrData, registry, warni
551
620
  node.setAttr(RESERVED_KEY_VALUE, desugared);
552
621
  }
553
622
  catch (err) {
554
- reportProblem(`Failed to convert attr child "${attrName}" value at ${path}: ${err.message}`, strict, warnings, source, path, "ERR_BAD_ATTR_VALUE");
623
+ reportProblem(`Failed to convert attr child "${attrName}" value at ${path}: ${err.message}`, strict, warnings, "ERR_BAD_ATTR_VALUE");
555
624
  return;
556
625
  }
557
626
  parent.setMetaAttr(node);
@@ -1 +1 @@
1
- {"version":3,"file":"parser-core.js","sourceRoot":"","sources":["../src/parser-core.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"parser-core.js","sourceRoot":"","sources":["../src/parser-core.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"parser-json.d.ts","sourceRoot":"","sources":["../src/parser-json.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAElE,YAAY,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAElE,wBAAgB,SAAS,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,YAAY,GAAG,WAAW,CAgB1E"}
1
+ {"version":3,"file":"parser-json.d.ts","sourceRoot":"","sources":["../src/parser-json.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAGlE,YAAY,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAElE,wBAAgB,SAAS,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,YAAY,GAAG,WAAW,CAwB1E"}
@@ -3,7 +3,7 @@
3
3
  // parseJson is a thin front-end: strip the UTF-8 BOM, JSON.parse, then hand
4
4
  // the canonical object to the shared buildTree (parser-core.ts).
5
5
  import { ParseError } from "./errors.js";
6
- import { buildTree, errOpts } from "./parser-core.js";
6
+ import { buildTree } from "./parser-core.js";
7
7
  export function parseJson(content, opts) {
8
8
  // Strip UTF-8 BOM if present (Java-authored files often have it).
9
9
  const normalizedContent = content.charCodeAt(0) === 0xfeff ? content.slice(1) : content;
@@ -12,7 +12,15 @@ export function parseJson(content, opts) {
12
12
  parsed = JSON.parse(normalizedContent);
13
13
  }
14
14
  catch (err) {
15
- throw new ParseError(`Invalid JSON: ${err.message}`, { ...errOpts(opts.sourceName), code: "ERR_MALFORMED_JSON" });
15
+ // FR5a / ADR-0009 pre-buildTree errors can't reach the parser's
16
+ // module-level JsonPathBuilder; build a minimal json-source envelope
17
+ // rooted at "$" so cross-port callers see a consistent shape.
18
+ const source = {
19
+ format: "json",
20
+ files: [opts.sourceName ?? "<unknown>"],
21
+ jsonPath: "$",
22
+ };
23
+ throw new ParseError(`Invalid JSON: ${err.message}`, { code: "ERR_MALFORMED_JSON", source });
16
24
  }
17
25
  return buildTree(parsed, opts);
18
26
  }
@@ -1 +1 @@
1
- {"version":3,"file":"parser-json.js","sourceRoot":"","sources":["../src/parser-json.ts"],"names":[],"mappings":"AAAA,yBAAyB;AACzB,EAAE;AACF,4EAA4E;AAC5E,iEAAiE;AAEjE,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAKtD,MAAM,UAAU,SAAS,CAAC,OAAe,EAAE,IAAkB;IAC3D,kEAAkE;IAClE,MAAM,iBAAiB,GACrB,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;IAEhE,IAAI,MAAe,CAAC;IACpB,IAAI,CAAC;QACH,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC;IACzC,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,IAAI,UAAU,CAClB,iBAAkB,GAAa,CAAC,OAAO,EAAE,EACzC,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,IAAI,EAAE,oBAAoB,EAAE,CAC5D,CAAC;IACJ,CAAC;IAED,OAAO,SAAS,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;AACjC,CAAC"}
1
+ {"version":3,"file":"parser-json.js","sourceRoot":"","sources":["../src/parser-json.ts"],"names":[],"mappings":"AAAA,yBAAyB;AACzB,EAAE;AACF,4EAA4E;AAC5E,iEAAiE;AAEjE,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAM7C,MAAM,UAAU,SAAS,CAAC,OAAe,EAAE,IAAkB;IAC3D,kEAAkE;IAClE,MAAM,iBAAiB,GACrB,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;IAEhE,IAAI,MAAe,CAAC;IACpB,IAAI,CAAC;QACH,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC;IACzC,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,kEAAkE;QAClE,qEAAqE;QACrE,8DAA8D;QAC9D,MAAM,MAAM,GAAgB;YAC1B,MAAM,EAAE,MAAM;YACd,KAAK,EAAE,CAAC,IAAI,CAAC,UAAU,IAAI,WAAW,CAAC;YACvC,QAAQ,EAAE,GAAG;SACd,CAAC;QACF,MAAM,IAAI,UAAU,CAClB,iBAAkB,GAAa,CAAC,OAAO,EAAE,EACzC,EAAE,IAAI,EAAE,oBAAoB,EAAE,MAAM,EAAE,CACvC,CAAC;IACJ,CAAC;IAED,OAAO,SAAS,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;AACjC,CAAC"}
@@ -27,10 +27,10 @@ export function validateSourceRoles(root) {
27
27
  continue;
28
28
  const primaryCount = sources.filter((s) => s.role === SOURCE_ROLE_PRIMARY).length;
29
29
  if (primaryCount === 0) {
30
- errors.push(new ParseError(`object "${obj.name}" declares ${sources.length} source(s) but none has role "${SOURCE_ROLE_PRIMARY}"`, { code: "ERR_SOURCE_NO_PRIMARY" }));
30
+ errors.push(new ParseError(`object "${obj.name}" declares ${sources.length} source(s) but none has role "${SOURCE_ROLE_PRIMARY}"`, { code: "ERR_SOURCE_NO_PRIMARY", source: obj.source }));
31
31
  }
32
32
  else if (primaryCount > 1) {
33
- errors.push(new ParseError(`object "${obj.name}" declares ${primaryCount} sources with role "${SOURCE_ROLE_PRIMARY}"; exactly one is required`, { code: "ERR_SOURCE_MULTIPLE_PRIMARY" }));
33
+ errors.push(new ParseError(`object "${obj.name}" declares ${primaryCount} sources with role "${SOURCE_ROLE_PRIMARY}"; exactly one is required`, { code: "ERR_SOURCE_MULTIPLE_PRIMARY", source: obj.source }));
34
34
  }
35
35
  }
36
36
  return errors;
@@ -1 +1 @@
1
- {"version":3,"file":"validate-source-roles.js","sourceRoot":"","sources":["../../../src/persistence/source/validate-source-roles.ts"],"names":[],"mappings":"AAAA,kDAAkD;AAClD,EAAE;AACF,+EAA+E;AAC/E,iEAAiE;AACjE,4EAA4E;AAC5E,0EAA0E;AAG1E,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AACtE,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAE5D;;;;;;;GAOG;AACH,MAAM,UAAU,mBAAmB,CAAC,IAAc;IAChD,MAAM,MAAM,GAAiB,EAAE,CAAC;IAEhC,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,WAAW,CAAC,EAAE,CAAC;QAC3E,MAAM,OAAO,GAAG,GAAG;aAChB,WAAW,EAAE;aACb,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,WAAW,CAAC;aACrC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAe,CAAC,CAAC;QAE/B,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;YAAE,SAAS;QAEnC,MAAM,YAAY,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,mBAAmB,CAAC,CAAC,MAAM,CAAC;QAElF,IAAI,YAAY,KAAK,CAAC,EAAE,CAAC;YACvB,MAAM,CAAC,IAAI,CACT,IAAI,UAAU,CACZ,WAAW,GAAG,CAAC,IAAI,cAAc,OAAO,CAAC,MAAM,iCAAiC,mBAAmB,GAAG,EACtG,EAAE,IAAI,EAAE,uBAAuB,EAAE,CAClC,CACF,CAAC;QACJ,CAAC;aAAM,IAAI,YAAY,GAAG,CAAC,EAAE,CAAC;YAC5B,MAAM,CAAC,IAAI,CACT,IAAI,UAAU,CACZ,WAAW,GAAG,CAAC,IAAI,cAAc,YAAY,uBAAuB,mBAAmB,4BAA4B,EACnH,EAAE,IAAI,EAAE,6BAA6B,EAAE,CACxC,CACF,CAAC;QACJ,CAAC;IACH,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC"}
1
+ {"version":3,"file":"validate-source-roles.js","sourceRoot":"","sources":["../../../src/persistence/source/validate-source-roles.ts"],"names":[],"mappings":"AAAA,kDAAkD;AAClD,EAAE;AACF,+EAA+E;AAC/E,iEAAiE;AACjE,4EAA4E;AAC5E,0EAA0E;AAG1E,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AACtE,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAE5D;;;;;;;GAOG;AACH,MAAM,UAAU,mBAAmB,CAAC,IAAc;IAChD,MAAM,MAAM,GAAiB,EAAE,CAAC;IAEhC,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,WAAW,CAAC,EAAE,CAAC;QAC3E,MAAM,OAAO,GAAG,GAAG;aAChB,WAAW,EAAE;aACb,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,WAAW,CAAC;aACrC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAe,CAAC,CAAC;QAE/B,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;YAAE,SAAS;QAEnC,MAAM,YAAY,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,mBAAmB,CAAC,CAAC,MAAM,CAAC;QAElF,IAAI,YAAY,KAAK,CAAC,EAAE,CAAC;YACvB,MAAM,CAAC,IAAI,CACT,IAAI,UAAU,CACZ,WAAW,GAAG,CAAC,IAAI,cAAc,OAAO,CAAC,MAAM,iCAAiC,mBAAmB,GAAG,EACtG,EAAE,IAAI,EAAE,uBAAuB,EAAE,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,CACtD,CACF,CAAC;QACJ,CAAC;aAAM,IAAI,YAAY,GAAG,CAAC,EAAE,CAAC;YAC5B,MAAM,CAAC,IAAI,CACT,IAAI,UAAU,CACZ,WAAW,GAAG,CAAC,IAAI,cAAc,YAAY,uBAAuB,mBAAmB,4BAA4B,EACnH,EAAE,IAAI,EAAE,6BAA6B,EAAE,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,CAC5D,CACF,CAAC;QACJ,CAAC;IACH,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC"}
@@ -0,0 +1,5 @@
1
+ type Tree = Record<string, unknown>;
2
+ /** Returns `true` if the inputs differ in any semantically-meaningful way. */
3
+ export declare function semanticDiff(a: Tree, b: Tree): boolean;
4
+ export {};
5
+ //# sourceMappingURL=semantic-diff.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"semantic-diff.d.ts","sourceRoot":"","sources":["../src/semantic-diff.ts"],"names":[],"mappings":"AAcA,KAAK,IAAI,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AA8BpC,8EAA8E;AAC9E,wBAAgB,YAAY,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,GAAG,OAAO,CAEtD"}
@@ -0,0 +1,49 @@
1
+ // server/typescript/packages/metadata/src/semantic-diff.ts
2
+ //
3
+ // FR5a / ADR-0009 — Cross-port-aligned semantic-equality compare for metadata
4
+ // trees. Returns `true` if the two inputs differ in any semantically-meaningful
5
+ // way (excluding `source`, which is loader output).
6
+ //
7
+ // Algorithm (ADR-0009 §semantic_diff):
8
+ // 1. Sort attrs lexicographically; compare attr-by-attr; values by canonical
9
+ // structural equality (key-order independent, whitespace-insensitive).
10
+ // 2. Children are compared as ordered sequences.
11
+ // 3. Reserved structural keys (name, package, extends, abstract, overlay,
12
+ // isArray, value) participate like attrs.
13
+ // 4. `source` excluded from the diff.
14
+ const EXCLUDED = new Set(["source"]);
15
+ function isObject(v) {
16
+ return typeof v === "object" && v !== null && !Array.isArray(v);
17
+ }
18
+ function equal(a, b) {
19
+ if (a === b)
20
+ return true;
21
+ if (Array.isArray(a) && Array.isArray(b)) {
22
+ if (a.length !== b.length)
23
+ return false;
24
+ for (let i = 0; i < a.length; i++) {
25
+ if (!equal(a[i], b[i]))
26
+ return false;
27
+ }
28
+ return true;
29
+ }
30
+ if (isObject(a) && isObject(b)) {
31
+ const aKeys = Object.keys(a).filter((k) => !EXCLUDED.has(k)).sort();
32
+ const bKeys = Object.keys(b).filter((k) => !EXCLUDED.has(k)).sort();
33
+ if (aKeys.length !== bKeys.length)
34
+ return false;
35
+ for (let i = 0; i < aKeys.length; i++) {
36
+ if (aKeys[i] !== bKeys[i])
37
+ return false;
38
+ if (!equal(a[aKeys[i]], b[bKeys[i]]))
39
+ return false;
40
+ }
41
+ return true;
42
+ }
43
+ return false;
44
+ }
45
+ /** Returns `true` if the inputs differ in any semantically-meaningful way. */
46
+ export function semanticDiff(a, b) {
47
+ return !equal(a, b);
48
+ }
49
+ //# sourceMappingURL=semantic-diff.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"semantic-diff.js","sourceRoot":"","sources":["../src/semantic-diff.ts"],"names":[],"mappings":"AAAA,2DAA2D;AAC3D,EAAE;AACF,8EAA8E;AAC9E,gFAAgF;AAChF,oDAAoD;AACpD,EAAE;AACF,uCAAuC;AACvC,+EAA+E;AAC/E,4EAA4E;AAC5E,mDAAmD;AACnD,4EAA4E;AAC5E,+CAA+C;AAC/C,wCAAwC;AAIxC,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC;AAErC,SAAS,QAAQ,CAAC,CAAU;IAC1B,OAAO,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;AAClE,CAAC;AAED,SAAS,KAAK,CAAC,CAAU,EAAE,CAAU;IACnC,IAAI,CAAC,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IACzB,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;QACzC,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,MAAM;YAAE,OAAO,KAAK,CAAC;QACxC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YAClC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;gBAAE,OAAO,KAAK,CAAC;QACvC,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IACD,IAAI,QAAQ,CAAC,CAAC,CAAC,IAAI,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC;QAC/B,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QACpE,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QACpE,IAAI,KAAK,CAAC,MAAM,KAAK,KAAK,CAAC,MAAM;YAAE,OAAO,KAAK,CAAC;QAChD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACtC,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC;gBAAE,OAAO,KAAK,CAAC;YACxC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAE,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAE,CAAC,CAAC;gBAAE,OAAO,KAAK,CAAC;QACvD,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,8EAA8E;AAC9E,MAAM,UAAU,YAAY,CAAC,CAAO,EAAE,CAAO;IAC3C,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACtB,CAAC"}
@@ -1,6 +1,7 @@
1
1
  import { TypeId } from "../registry.js";
2
2
  import type { DataType } from "../data-type.js";
3
3
  import type { MetaAttr } from "../core/attr/meta-attr.js";
4
+ import type { ErrorSource } from "../source.js";
4
5
  export type AttrValue = string | number | boolean | string[] | AttrObject;
5
6
  /**
6
7
  * Object-shaped attr value (for `attr.filter` / `attr.properties`). Values are
@@ -35,6 +36,7 @@ export declare abstract class MetaData {
35
36
  private _parent?;
36
37
  private _frozen;
37
38
  protected _dataType?: DataType;
39
+ private _source;
38
40
  private readonly _cache;
39
41
  constructor(typeId: TypeId, name: string);
40
42
  /**
@@ -64,6 +66,14 @@ export declare abstract class MetaData {
64
66
  /** Set the registry-supplied DataType. Called by the registry factory at
65
67
  * node construction. */
66
68
  setDataType(dt: DataType): void;
69
+ /** Provenance envelope for this node. Always populated. See ADR-0009. */
70
+ get source(): ErrorSource;
71
+ /**
72
+ * Loader-internal: assign provenance. Called by parser and merge phases as
73
+ * they build the tree. Honors the frozen-guard like other setters.
74
+ * @internal
75
+ */
76
+ setSource(s: ErrorSource): void;
67
77
  setIsAbstract(val: boolean): void;
68
78
  setIsMerge(val: boolean): void;
69
79
  setAttr(name: string, value: AttrValue): void;