@metaobjectsdev/metadata 1.0.2 → 1.0.3
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.
- package/dist/core/parser-yaml.d.ts.map +1 -1
- package/dist/core/parser-yaml.js +4 -0
- package/dist/core/parser-yaml.js.map +1 -1
- package/dist/errors.d.ts +1 -1
- package/dist/errors.d.ts.map +1 -1
- package/dist/errors.js +21 -0
- package/dist/errors.js.map +1 -1
- package/dist/index.d.ts +6 -4
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +7 -3
- package/dist/index.js.map +1 -1
- package/dist/json-path.d.ts +14 -0
- package/dist/json-path.d.ts.map +1 -1
- package/dist/json-path.js +13 -0
- package/dist/json-path.js.map +1 -1
- package/dist/loader/meta-data-loader.d.ts +44 -21
- package/dist/loader/meta-data-loader.d.ts.map +1 -1
- package/dist/loader/meta-data-loader.js +112 -87
- package/dist/loader/meta-data-loader.js.map +1 -1
- package/dist/loader/sources/file-source.d.ts +7 -1
- package/dist/loader/sources/file-source.d.ts.map +1 -1
- package/dist/loader/sources/file-source.js +3 -2
- package/dist/loader/sources/file-source.js.map +1 -1
- package/dist/naming.d.ts +7 -0
- package/dist/naming.d.ts.map +1 -1
- package/dist/naming.js +10 -0
- package/dist/naming.js.map +1 -1
- package/dist/parser-core.d.ts +103 -0
- package/dist/parser-core.d.ts.map +1 -1
- package/dist/parser-core.js +189 -16
- package/dist/parser-core.js.map +1 -1
- package/dist/scope.d.ts +16 -0
- package/dist/scope.d.ts.map +1 -0
- package/dist/scope.js +78 -0
- package/dist/scope.js.map +1 -0
- package/dist/serializer-json.d.ts +1 -0
- package/dist/serializer-json.d.ts.map +1 -1
- package/dist/serializer-json.js +43 -1
- package/dist/serializer-json.js.map +1 -1
- package/package.json +1 -1
- package/src/core/parser-yaml.ts +4 -0
- package/src/errors.ts +21 -0
- package/src/index.ts +12 -4
- package/src/json-path.ts +16 -1
- package/src/loader/meta-data-loader.ts +147 -101
- package/src/loader/sources/file-source.ts +10 -2
- package/src/naming.ts +11 -0
- package/src/parser-core.ts +304 -20
- package/src/scope.ts +97 -0
- package/src/serializer-json.ts +46 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"serializer-json.js","sourceRoot":"","sources":["../src/serializer-json.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"serializer-json.js","sourceRoot":"","sources":["../src/serializer-json.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
package/src/core/parser-yaml.ts
CHANGED
|
@@ -85,5 +85,9 @@ export function parseYaml(content: string, opts: ParseOptions): ParseResult {
|
|
|
85
85
|
warnings: result.warnings,
|
|
86
86
|
errors: [...desugarParseErrors, ...result.errors],
|
|
87
87
|
envelopeWarnings: result.envelopeWarnings,
|
|
88
|
+
// ADR-0055 — pass the deferred-overlay queue through untouched. This door
|
|
89
|
+
// rebuilds the result to prepend desugar errors, so it has to forward every
|
|
90
|
+
// member; dropping it left the loader spreading `undefined`.
|
|
91
|
+
pendingOverlays: result.pendingOverlays,
|
|
88
92
|
};
|
|
89
93
|
}
|
package/src/errors.ts
CHANGED
|
@@ -260,6 +260,27 @@ export const ERROR_CODES = [
|
|
|
260
260
|
// Phase-1 metadata-source-resolution — no metadata collection was discovered:
|
|
261
261
|
// no config declaring sources, and no default metaobjects/ directory.
|
|
262
262
|
"ERR_COLLECTION_NOT_FOUND",
|
|
263
|
+
// FR-023 — a declared dependency's transport could not locate a directory holding
|
|
264
|
+
// metaobjects.pkg.json.
|
|
265
|
+
"ERR_DEPENDENCY_UNRESOLVED",
|
|
266
|
+
// FR-023 — a dependency's metaobjects.pkg.json fails its schema, names a different
|
|
267
|
+
// dependency, points at a missing/hash-mismatched artifact, or the artifact does not
|
|
268
|
+
// load standalone / does not declare exactly the listed packages and nodes.
|
|
269
|
+
"ERR_DEPENDENCY_MANIFEST_INVALID",
|
|
270
|
+
// FR-023 — the committed snapshot does not match .metaobjects/deps.lock.json (lock
|
|
271
|
+
// missing, entry missing or extra, artifact missing, or hash mismatch).
|
|
272
|
+
"ERR_DEPENDENCY_SNAPSHOT_STALE",
|
|
273
|
+
// FR-023 — two dependencies export the same fully-qualified node.
|
|
274
|
+
"ERR_DEPENDENCY_NODE_COLLISION",
|
|
275
|
+
// FR-023 — a local top-level node is declared into a package owned by a dependency
|
|
276
|
+
// (§11.5 — imported-ness is package-keyed; a genuinely new object in a dependency's
|
|
277
|
+
// package would otherwise silently never generate).
|
|
278
|
+
"ERR_DEPENDENCY_PACKAGE_NOT_OWNED",
|
|
279
|
+
// FR-023 — a dependency's metamodelVersion major differs from this toolchain's.
|
|
280
|
+
"ERR_DEPENDENCY_METAMODEL_INCOMPATIBLE",
|
|
281
|
+
// FR-023 — `meta deps check` / `verify --deps` found the installed dependency differs
|
|
282
|
+
// from the committed snapshot.
|
|
283
|
+
"ERR_DEPENDENCY_UPSTREAM_DRIFT",
|
|
263
284
|
"ERR_UNKNOWN",
|
|
264
285
|
] as const;
|
|
265
286
|
|
package/src/index.ts
CHANGED
|
@@ -235,7 +235,7 @@ export type { ParseOptions, ParseResult } from "./parser-core.js";
|
|
|
235
235
|
export { parseJson } from "./parser-json.js";
|
|
236
236
|
|
|
237
237
|
// Serializer
|
|
238
|
-
export { serializeJson, canonicalSerialize, inferAttrSubType } from "./serializer-json.js";
|
|
238
|
+
export { serializeJson, canonicalSerialize, serializeSharedDocument, inferAttrSubType } from "./serializer-json.js";
|
|
239
239
|
export type { SerializeOptions } from "./serializer-json.js";
|
|
240
240
|
|
|
241
241
|
// Super resolution helper (most resolution moved into parser; this is the lookup utility)
|
|
@@ -245,8 +245,10 @@ export { resolveSuperRef } from "./super-resolve.js";
|
|
|
245
245
|
export { expandRef, isRelativeRef, refMatchesObject, resolveObjectRef, didYouMeanHint, REF_BEARING_ATTR_NAMES } from "./naming-refs.js";
|
|
246
246
|
|
|
247
247
|
// Loader hierarchy
|
|
248
|
-
export { MetaDataLoader } from "./loader/meta-data-loader.js";
|
|
249
|
-
export type {
|
|
248
|
+
export { MetaDataLoader, declaredTopLevelKeys } from "./loader/meta-data-loader.js";
|
|
249
|
+
export type {
|
|
250
|
+
LoadOptions, LoadResult, LoadingState, DirectoryFactoryOptions, DeclaredTopLevelKey,
|
|
251
|
+
} from "./loader/meta-data-loader.js";
|
|
250
252
|
export { InMemoryStringSource } from "./loader/meta-data-source.js";
|
|
251
253
|
export type { MetaDataSource, MetaDataFormat } from "./loader/meta-data-source.js";
|
|
252
254
|
|
|
@@ -278,6 +280,12 @@ export type {
|
|
|
278
280
|
} from "./source.js";
|
|
279
281
|
export { codeSource } from "./source.js";
|
|
280
282
|
|
|
283
|
+
// FR-023 §4.3 — scope-pattern grammar (moved from sdk; sdk re-exports these
|
|
284
|
+
// for compatibility, and codegen-ts's publisher generator depends on this
|
|
285
|
+
// package directly rather than on sdk).
|
|
286
|
+
export { compileScope, matchesScope } from "./scope.js";
|
|
287
|
+
export type { Scope, CompiledScope } from "./scope.js";
|
|
288
|
+
|
|
281
289
|
// Attribute-schema validation pass (Phase A3)
|
|
282
290
|
export { validateAttrSchema } from "./attr-schema-validate.js";
|
|
283
291
|
export type { AttrSchemaValidationResult } from "./attr-schema-validate.js";
|
|
@@ -290,7 +298,7 @@ export {
|
|
|
290
298
|
resolveTableName, resolveColumnName, resolveTableSchema, resolveIndexName,
|
|
291
299
|
primaryRdbSource, sourceAddressKey,
|
|
292
300
|
buildNameMap,
|
|
293
|
-
stripPackage,
|
|
301
|
+
stripPackage, packageOfResolutionKey,
|
|
294
302
|
} from "./naming.js";
|
|
295
303
|
export type { EntityNameMap, ColumnNamingStrategy } from "./naming.js";
|
|
296
304
|
|
package/src/json-path.ts
CHANGED
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
|
|
12
12
|
const IDENT_RE = /^[A-Za-z_][A-Za-z0-9_]*$/;
|
|
13
13
|
|
|
14
|
-
type Segment =
|
|
14
|
+
export type Segment =
|
|
15
15
|
| { kind: "key"; value: string }
|
|
16
16
|
| { kind: "index"; value: number };
|
|
17
17
|
|
|
@@ -30,6 +30,21 @@ export class JsonPathBuilder {
|
|
|
30
30
|
this.segments.pop();
|
|
31
31
|
}
|
|
32
32
|
|
|
33
|
+
/** ADR-0055 — the current stack, captured so a declaration deferred out of
|
|
34
|
+
* the walk can be re-seeded when it is applied. By then the walk that built
|
|
35
|
+
* this path has unwound, so an error raised at application time would
|
|
36
|
+
* otherwise carry the wrong jsonPath (or none). */
|
|
37
|
+
snapshot(): readonly Segment[] {
|
|
38
|
+
return [...this.segments];
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
/** ADR-0055 — rebuild a builder from a {@link snapshot}. */
|
|
42
|
+
static fromSegments(segments: readonly Segment[]): JsonPathBuilder {
|
|
43
|
+
const b = new JsonPathBuilder();
|
|
44
|
+
b.segments.push(...segments);
|
|
45
|
+
return b;
|
|
46
|
+
}
|
|
47
|
+
|
|
33
48
|
toString(): string {
|
|
34
49
|
let out = "$";
|
|
35
50
|
for (const seg of this.segments) {
|
|
@@ -13,7 +13,14 @@ import { TypeId, TypeRegistry } from "../registry.js";
|
|
|
13
13
|
import { coreProviders } from "../core-types.js";
|
|
14
14
|
import { composeRegistry } from "../provider.js";
|
|
15
15
|
import { TYPE_METADATA, SUBTYPE_ROOT } from "../shared/base-types.js";
|
|
16
|
-
import {
|
|
16
|
+
import {
|
|
17
|
+
PACKAGE_SEPARATOR,
|
|
18
|
+
RESERVED_KEY_CHILDREN,
|
|
19
|
+
RESERVED_KEY_NAME,
|
|
20
|
+
RESERVED_KEY_OVERLAY,
|
|
21
|
+
RESERVED_KEY_PACKAGE,
|
|
22
|
+
TYPE_SUBTYPE_SEPARATOR,
|
|
23
|
+
} from "../shared/structural.js";
|
|
17
24
|
import { ParseError } from "../errors.js";
|
|
18
25
|
import type { LoaderWarning } from "../source.js";
|
|
19
26
|
import { codeSource, resolvedSource } from "../source.js";
|
|
@@ -34,7 +41,8 @@ import { validateIdentityPassthrough } from "../core/identity/validate-identity-
|
|
|
34
41
|
import { validateAttrSchema } from "../attr-schema-validate.js";
|
|
35
42
|
import type { MetaDataFormat, MetaDataSource } from "./meta-data-source.js";
|
|
36
43
|
import { InMemoryStringSource } from "./meta-data-source.js";
|
|
37
|
-
import type { ParseOptions, ParseResult } from "../parser-core.js";
|
|
44
|
+
import type { ParseOptions, ParseResult, PendingOverlay } from "../parser-core.js";
|
|
45
|
+
import { expandPackageForPath, applyPendingOverlays } from "../parser-core.js";
|
|
38
46
|
|
|
39
47
|
// Local mirror of DirectorySource's options shape. Deliberately inlined here
|
|
40
48
|
// (instead of `import type`'d from ./sources/directory-source.js) so the
|
|
@@ -97,6 +105,113 @@ function makeSyntheticRoot(): MetaRoot {
|
|
|
97
105
|
return new MetaRoot(new TypeId(TYPE_METADATA, SUBTYPE_ROOT), "");
|
|
98
106
|
}
|
|
99
107
|
|
|
108
|
+
// ---------------------------------------------------------------------------
|
|
109
|
+
// declaredTopLevelKeys — structural pre-parse walk (#160, generalized)
|
|
110
|
+
// ---------------------------------------------------------------------------
|
|
111
|
+
|
|
112
|
+
/** One root-level declaration as `declaredTopLevelKeys` structurally scans it —
|
|
113
|
+
* before registry-driven parsing, super resolution, or merge. */
|
|
114
|
+
export interface DeclaredTopLevelKey {
|
|
115
|
+
/** The wrapper key's TYPE segment (e.g. "object" for "object.entity"). A bare
|
|
116
|
+
* wrapper key with no "." is its own type — this walk never consults the
|
|
117
|
+
* registry for a default subType, because it never needs the subType. */
|
|
118
|
+
type: string;
|
|
119
|
+
/** The resolution key the declaration would carry once parsed: the child's
|
|
120
|
+
* own `package` if set (expanded against the root's `package` via
|
|
121
|
+
* `expandPackageForPath` when it's a relative, `::`-prefixed path — e.g.
|
|
122
|
+
* root `acme` + own `::garage` → `acme::garage`), else the root's
|
|
123
|
+
* `package` verbatim, then `::`, then its `name`. Exactly
|
|
124
|
+
* `rootChildResolutionKey` (parser-core.ts) — including the relative-path
|
|
125
|
+
* expansion, reusing `expandPackageForPath` rather than reimplementing it,
|
|
126
|
+
* because a second copy is exactly how this walk and the real parser
|
|
127
|
+
* silently disagreed on a relative package (task 17 fix-round-1: this
|
|
128
|
+
* function used to return `::garage::Garage` for a fixture the real
|
|
129
|
+
* loader resolves to `acme::garage::Garage`). */
|
|
130
|
+
key: string;
|
|
131
|
+
/** Whether the declaration's body carries `overlay: true`. */
|
|
132
|
+
overlay: boolean;
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
/**
|
|
136
|
+
* Structurally scan a source's raw content (JSON via `JSON.parse`; sigil-free
|
|
137
|
+
* authoring YAML via the raw YAML walker — `overlay: true` is a bare key
|
|
138
|
+
* before desugar) and report every top-level declaration under
|
|
139
|
+
* `metadata.root.children`: its type, the resolution key it would carry once
|
|
140
|
+
* parsed, and whether it carries `overlay: true`.
|
|
141
|
+
*
|
|
142
|
+
* A declaration with no (string, non-empty) `name` is skipped — a resolution
|
|
143
|
+
* key can't be computed for it, and the real parser will report it as a
|
|
144
|
+
* loader error rather than silently reusing or creating a node. Malformed
|
|
145
|
+
* root shapes (root missing, not an object, `children` absent or not an
|
|
146
|
+
* array) return `[]` rather than throwing — the real parse loop is where a
|
|
147
|
+
* genuine structural error surfaces; this walk must never crash a caller
|
|
148
|
+
* that is only trying to answer "what does this file declare".
|
|
149
|
+
*
|
|
150
|
+
* Written for the #160 overlay-only source partition, which ADR-0055 retired —
|
|
151
|
+
* overlays are now applied in a post-parse pass, so no ordering decision needs
|
|
152
|
+
* this walk. Its remaining caller is the `meta verify` overlay authoring lint,
|
|
153
|
+
* which needs per-file declaration provenance precisely because the MERGED tree
|
|
154
|
+
* has already lost which file contributed which declaration.
|
|
155
|
+
*/
|
|
156
|
+
export async function declaredTopLevelKeys(
|
|
157
|
+
content: string,
|
|
158
|
+
format: MetaDataFormat,
|
|
159
|
+
): Promise<ReadonlyArray<DeclaredTopLevelKey>> {
|
|
160
|
+
// Strip UTF-8 BOM if present (mirrors parseJson / parseYaml).
|
|
161
|
+
const normalized = content.charCodeAt(0) === 0xfeff ? content.slice(1) : content;
|
|
162
|
+
let parsed: unknown;
|
|
163
|
+
if (format === "json") {
|
|
164
|
+
parsed = JSON.parse(normalized);
|
|
165
|
+
} else if (format === "yaml") {
|
|
166
|
+
const { parseYamlWithPositions } = await import("../core/yaml-positions-walker.js");
|
|
167
|
+
parsed = parseYamlWithPositions(normalized).value;
|
|
168
|
+
} else {
|
|
169
|
+
return [];
|
|
170
|
+
}
|
|
171
|
+
return declaredTopLevelKeysFromParsedRoot(parsed);
|
|
172
|
+
}
|
|
173
|
+
|
|
174
|
+
/** The structural walk `declaredTopLevelKeys` performs once content is
|
|
175
|
+
* structurally parsed — split out so it takes no format/BOM concerns. */
|
|
176
|
+
function declaredTopLevelKeysFromParsedRoot(parsed: unknown): ReadonlyArray<DeclaredTopLevelKey> {
|
|
177
|
+
if (typeof parsed !== "object" || parsed === null) return [];
|
|
178
|
+
const parsedRecord = parsed as Record<string, unknown>;
|
|
179
|
+
// Canonical JSON always fuses the subType onto the root wrapper key
|
|
180
|
+
// ("metadata.root"); sigil-free YAML authoring writes the bare type
|
|
181
|
+
// ("metadata") and leaves the default subType to the registry — this
|
|
182
|
+
// structural walk runs BEFORE desugar/registry resolution, so it must
|
|
183
|
+
// accept both spellings rather than only ever matching JSON's.
|
|
184
|
+
const explicitRootKey = `${TYPE_METADATA}${TYPE_SUBTYPE_SEPARATOR}${SUBTYPE_ROOT}`; // "metadata.root"
|
|
185
|
+
const rootBody = parsedRecord[explicitRootKey] ?? parsedRecord[TYPE_METADATA];
|
|
186
|
+
if (typeof rootBody !== "object" || rootBody === null) return [];
|
|
187
|
+
const rawRootPkg = (rootBody as Record<string, unknown>)[RESERVED_KEY_PACKAGE];
|
|
188
|
+
const rootPkg = typeof rawRootPkg === "string" ? rawRootPkg : "";
|
|
189
|
+
const children = (rootBody as Record<string, unknown>)[RESERVED_KEY_CHILDREN];
|
|
190
|
+
if (!Array.isArray(children)) return [];
|
|
191
|
+
|
|
192
|
+
const declared: DeclaredTopLevelKey[] = [];
|
|
193
|
+
for (const child of children) {
|
|
194
|
+
if (typeof child !== "object" || child === null) continue;
|
|
195
|
+
// Each child is a single-key wrapper: { "object.entity": { ... } }.
|
|
196
|
+
for (const [wrapperKey, body] of Object.entries(child as Record<string, unknown>)) {
|
|
197
|
+
if (typeof body !== "object" || body === null) continue;
|
|
198
|
+
const bodyRecord = body as Record<string, unknown>;
|
|
199
|
+
const name = bodyRecord[RESERVED_KEY_NAME];
|
|
200
|
+
if (typeof name !== "string" || name === "") continue;
|
|
201
|
+
const dotIdx = wrapperKey.indexOf(TYPE_SUBTYPE_SEPARATOR);
|
|
202
|
+
const type = dotIdx < 0 ? wrapperKey : wrapperKey.slice(0, dotIdx);
|
|
203
|
+
const rawOwnPkg = bodyRecord[RESERVED_KEY_PACKAGE];
|
|
204
|
+
const pkg =
|
|
205
|
+
typeof rawOwnPkg === "string" && rawOwnPkg !== ""
|
|
206
|
+
? expandPackageForPath(rootPkg, rawOwnPkg)
|
|
207
|
+
: rootPkg;
|
|
208
|
+
const key = pkg !== "" ? `${pkg}${PACKAGE_SEPARATOR}${name}` : name;
|
|
209
|
+
declared.push({ type, key, overlay: bodyRecord[RESERVED_KEY_OVERLAY] === true });
|
|
210
|
+
}
|
|
211
|
+
}
|
|
212
|
+
return declared;
|
|
213
|
+
}
|
|
214
|
+
|
|
100
215
|
// ---------------------------------------------------------------------------
|
|
101
216
|
// MetaDataLoader class
|
|
102
217
|
// ---------------------------------------------------------------------------
|
|
@@ -330,92 +445,6 @@ export class MetaDataLoader {
|
|
|
330
445
|
MetaDataLoader._yamlParser = mod.parseYaml;
|
|
331
446
|
}
|
|
332
447
|
|
|
333
|
-
// ---------------------------------------------------------------------------
|
|
334
|
-
// #160 — overlay-only source partition (stable, overlay-only sources last)
|
|
335
|
-
// ---------------------------------------------------------------------------
|
|
336
|
-
|
|
337
|
-
/**
|
|
338
|
-
* Stable-partition `sources` so that "overlay-only" sources — every top-level
|
|
339
|
-
* object declaration carries `overlay: true`, i.e. the source declares no base
|
|
340
|
-
* objects of its own and only re-opens objects declared elsewhere — are parsed
|
|
341
|
-
* LAST. Preserves original order within each group.
|
|
342
|
-
*
|
|
343
|
-
* A source whose content can't be read or structurally scanned stays in the
|
|
344
|
-
* base group (never overlay-only) — this partition must never crash the loader;
|
|
345
|
-
* any genuine read/parse failure surfaces later, in the real parse loop.
|
|
346
|
-
*/
|
|
347
|
-
private static async _partitionOverlayLast(
|
|
348
|
-
sources: MetaDataSource[],
|
|
349
|
-
): Promise<MetaDataSource[]> {
|
|
350
|
-
const base: MetaDataSource[] = [];
|
|
351
|
-
const overlayOnly: MetaDataSource[] = [];
|
|
352
|
-
for (const source of sources) {
|
|
353
|
-
let isOverlayOnly = false;
|
|
354
|
-
try {
|
|
355
|
-
const content = await source.read();
|
|
356
|
-
isOverlayOnly = await MetaDataLoader._isOverlayOnlySource(
|
|
357
|
-
content,
|
|
358
|
-
source.format,
|
|
359
|
-
);
|
|
360
|
-
} catch {
|
|
361
|
-
isOverlayOnly = false;
|
|
362
|
-
}
|
|
363
|
-
(isOverlayOnly ? overlayOnly : base).push(source);
|
|
364
|
-
}
|
|
365
|
-
return [...base, ...overlayOnly];
|
|
366
|
-
}
|
|
367
|
-
|
|
368
|
-
/**
|
|
369
|
-
* Structurally scan a source's raw content (JSON via JSON.parse; sigil-free
|
|
370
|
-
* authoring YAML via the raw YAML walker — `overlay: true` is a bare key
|
|
371
|
-
* before desugar) and report whether every top-level object declaration under
|
|
372
|
-
* `metadata.root.children` carries `overlay: true` (and there is at least one).
|
|
373
|
-
*/
|
|
374
|
-
private static async _isOverlayOnlySource(
|
|
375
|
-
content: string,
|
|
376
|
-
format: MetaDataFormat,
|
|
377
|
-
): Promise<boolean> {
|
|
378
|
-
// Strip UTF-8 BOM if present (mirrors parseJson / parseYaml).
|
|
379
|
-
const normalized = content.charCodeAt(0) === 0xfeff ? content.slice(1) : content;
|
|
380
|
-
let parsed: unknown;
|
|
381
|
-
if (format === "json") {
|
|
382
|
-
parsed = JSON.parse(normalized);
|
|
383
|
-
} else if (format === "yaml") {
|
|
384
|
-
const { parseYamlWithPositions } = await import(
|
|
385
|
-
"../core/yaml-positions-walker.js"
|
|
386
|
-
);
|
|
387
|
-
parsed = parseYamlWithPositions(normalized).value;
|
|
388
|
-
} else {
|
|
389
|
-
return false;
|
|
390
|
-
}
|
|
391
|
-
return MetaDataLoader._rootIsOverlayOnly(parsed);
|
|
392
|
-
}
|
|
393
|
-
|
|
394
|
-
/** True when the structurally-parsed root has ≥1 child and every top-level
|
|
395
|
-
* child node carries `overlay: true` (declares no base objects). */
|
|
396
|
-
private static _rootIsOverlayOnly(parsed: unknown): boolean {
|
|
397
|
-
if (typeof parsed !== "object" || parsed === null) return false;
|
|
398
|
-
const rootKey = `${TYPE_METADATA}.${SUBTYPE_ROOT}`; // "metadata.root"
|
|
399
|
-
const rootBody = (parsed as Record<string, unknown>)[rootKey];
|
|
400
|
-
if (typeof rootBody !== "object" || rootBody === null) return false;
|
|
401
|
-
const children = (rootBody as Record<string, unknown>)[RESERVED_KEY_CHILDREN];
|
|
402
|
-
if (!Array.isArray(children) || children.length === 0) return false;
|
|
403
|
-
return children.every((child) => {
|
|
404
|
-
if (typeof child !== "object" || child === null) return false;
|
|
405
|
-
// Each child is a single-key wrapper: { "object.projection": { ... } }.
|
|
406
|
-
const bodies = Object.values(child as Record<string, unknown>);
|
|
407
|
-
return (
|
|
408
|
-
bodies.length > 0 &&
|
|
409
|
-
bodies.every(
|
|
410
|
-
(body) =>
|
|
411
|
-
typeof body === "object" &&
|
|
412
|
-
body !== null &&
|
|
413
|
-
(body as Record<string, unknown>)[RESERVED_KEY_OVERLAY] === true,
|
|
414
|
-
)
|
|
415
|
-
);
|
|
416
|
-
});
|
|
417
|
-
}
|
|
418
|
-
|
|
419
448
|
// ---------------------------------------------------------------------------
|
|
420
449
|
// load — async pipeline over MetaDataSource[]
|
|
421
450
|
// ---------------------------------------------------------------------------
|
|
@@ -457,20 +486,17 @@ export class MetaDataLoader {
|
|
|
457
486
|
await MetaDataLoader._ensureYamlParser();
|
|
458
487
|
}
|
|
459
488
|
|
|
460
|
-
//
|
|
461
|
-
//
|
|
462
|
-
//
|
|
463
|
-
//
|
|
464
|
-
//
|
|
465
|
-
//
|
|
466
|
-
//
|
|
467
|
-
// Directory discovery order is not guaranteed to present base files first
|
|
468
|
-
// (basename sort can put an overlay-only file first), so stable-partition
|
|
469
|
-
// overlay-only sources to the END here, making the merge order-independent.
|
|
470
|
-
// Stable within each group preserves last-writer-wins overlay semantics.
|
|
471
|
-
sources = await MetaDataLoader._partitionOverlayLast(sources);
|
|
472
|
-
|
|
489
|
+
// ADR-0055 — sources are parsed in the order given. Overlays are not applied
|
|
490
|
+
// during the walk: each parse QUEUES its `overlay: true` declarations and the
|
|
491
|
+
// loader applies them below, once every base exists. That retired the #160
|
|
492
|
+
// overlay-only source partition, whose file-level predicate could not rescue a
|
|
493
|
+
// MIXED file (plain + overlay declarations together) and therefore left the
|
|
494
|
+
// load order-dependent — and divergent across ports, since every port's
|
|
495
|
+
// directory walk orders files differently.
|
|
473
496
|
let root: MetaRoot | undefined;
|
|
497
|
+
// ADR-0055 — every source's queue, concatenated in parse order, which is
|
|
498
|
+
// already "source order, then declaration order within a source" (G2).
|
|
499
|
+
const pendingOverlays: PendingOverlay[] = [];
|
|
474
500
|
|
|
475
501
|
// Parse all sources with super resolution DEFERRED so cross-file super
|
|
476
502
|
// refs work — one source may declare a super target that's defined in a
|
|
@@ -495,6 +521,10 @@ export class MetaDataLoader {
|
|
|
495
521
|
registry: this._registry,
|
|
496
522
|
strict: this._strict,
|
|
497
523
|
deferSuperResolution: true,
|
|
524
|
+
// ADR-0055 — queue overlays; this loader drains them after every source
|
|
525
|
+
// is parsed. Without it each document would drain its own queue and an
|
|
526
|
+
// overlay could still not reach a base declared in a later source.
|
|
527
|
+
deferOverlays: true,
|
|
498
528
|
sourceName: source.id,
|
|
499
529
|
};
|
|
500
530
|
if (root !== undefined) parseOpts.intoRoot = root;
|
|
@@ -507,6 +537,7 @@ export class MetaDataLoader {
|
|
|
507
537
|
// source). The legacy `warnings` channel still flows into the
|
|
508
538
|
// WARN_LEGACY-wrapping path below for unchanged behavior.
|
|
509
539
|
envelopeWarnings.push(...parseResult.envelopeWarnings);
|
|
540
|
+
pendingOverlays.push(...parseResult.pendingOverlays);
|
|
510
541
|
root = parseResult.root;
|
|
511
542
|
} catch (err) {
|
|
512
543
|
errors.push(
|
|
@@ -517,6 +548,21 @@ export class MetaDataLoader {
|
|
|
517
548
|
}
|
|
518
549
|
}
|
|
519
550
|
|
|
551
|
+
// ADR-0055 — apply every queued overlay now: all plain declarations from all
|
|
552
|
+
// sources are in the tree (G1), so a base/overlay relation no longer depends
|
|
553
|
+
// on file order (G4). This runs BEFORE super resolution so a node an overlay
|
|
554
|
+
// contributes is visible to every `extends` (G5) — the ordering #160's
|
|
555
|
+
// partition was reaching for, now guaranteed rather than approximated.
|
|
556
|
+
if (root !== undefined && pendingOverlays.length > 0) {
|
|
557
|
+
const applied = applyPendingOverlays(pendingOverlays, {
|
|
558
|
+
registry: this._registry,
|
|
559
|
+
strict: this._strict,
|
|
560
|
+
});
|
|
561
|
+
warnings.push(...applied.warnings);
|
|
562
|
+
errors.push(...applied.errors);
|
|
563
|
+
envelopeWarnings.push(...applied.envelopeWarnings);
|
|
564
|
+
}
|
|
565
|
+
|
|
520
566
|
// Second pass: resolve every deferred super ref against the full tree.
|
|
521
567
|
// Unresolved refs are always errors (matches the original eager-throw
|
|
522
568
|
// behavior — broken metadata is broken regardless of strict mode).
|
|
@@ -27,16 +27,24 @@ async function getReadText(): Promise<(path: string) => Promise<string>> {
|
|
|
27
27
|
return _readText;
|
|
28
28
|
}
|
|
29
29
|
|
|
30
|
+
/** Options for {@link FileSource}. */
|
|
31
|
+
export interface FileSourceOptions {
|
|
32
|
+
/** Explicit source id (e.g. `dep:<name>/<artifact>` for a dependency snapshot).
|
|
33
|
+
* Defaults to `basename(path)` when omitted. */
|
|
34
|
+
id?: string;
|
|
35
|
+
}
|
|
36
|
+
|
|
30
37
|
/** A metadata source backed by a file on disk. */
|
|
31
38
|
export class FileSource implements MetaDataSource {
|
|
32
39
|
readonly id: string;
|
|
33
40
|
readonly format: MetaDataFormat;
|
|
34
41
|
private readonly _path: string;
|
|
35
42
|
|
|
36
|
-
constructor(path: string) {
|
|
43
|
+
constructor(path: string, opts?: FileSourceOptions) {
|
|
37
44
|
this._path = path;
|
|
38
45
|
// basename() for readable error messages; cross-platform (handles both / and \). Full path retained for read().
|
|
39
|
-
|
|
46
|
+
// An explicit id (FR-023: dependency snapshots load with `dep:<name>/<artifact>`) overrides the default.
|
|
47
|
+
this.id = opts?.id ?? basename(path);
|
|
40
48
|
this.format = inferFormat(path);
|
|
41
49
|
}
|
|
42
50
|
|
package/src/naming.ts
CHANGED
|
@@ -30,6 +30,17 @@ export function stripPackage(name: string | undefined): string {
|
|
|
30
30
|
return idx === -1 ? name : name.slice(idx + PACKAGE_SEPARATOR.length);
|
|
31
31
|
}
|
|
32
32
|
|
|
33
|
+
/**
|
|
34
|
+
* The package half of a resolution key — the complement of `stripPackage`
|
|
35
|
+
* (`"a::b::C"` → `"a::b"`; a root-level `"C"` → `""`). A resolution key is
|
|
36
|
+
* `package::name` for a packaged node and the bare name otherwise, so the text
|
|
37
|
+
* before the LAST separator is exactly the node's package.
|
|
38
|
+
*/
|
|
39
|
+
export function packageOfResolutionKey(fqn: string): string {
|
|
40
|
+
const idx = fqn.lastIndexOf(PACKAGE_SEPARATOR);
|
|
41
|
+
return idx === -1 ? "" : fqn.slice(0, idx);
|
|
42
|
+
}
|
|
43
|
+
|
|
33
44
|
export function toSnakeCase(s: string): string {
|
|
34
45
|
return s
|
|
35
46
|
.replace(/([A-Z]+)([A-Z][a-z])/g, "$1_$2")
|