@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.
- package/README.md +54 -3
- package/dist/attr-schema-validate.js +7 -7
- package/dist/attr-schema-validate.js.map +1 -1
- package/dist/core/export-json.d.ts +6 -7
- package/dist/core/export-json.d.ts.map +1 -1
- package/dist/core/export-json.js +15 -17
- package/dist/core/export-json.js.map +1 -1
- package/dist/core/index.d.ts +4 -2
- package/dist/core/index.d.ts.map +1 -1
- package/dist/core/index.js +6 -2
- package/dist/core/index.js.map +1 -1
- package/dist/core/parser-yaml.d.ts.map +1 -1
- package/dist/core/parser-yaml.js +13 -4
- package/dist/core/parser-yaml.js.map +1 -1
- package/dist/errors.d.ts +28 -8
- package/dist/errors.d.ts.map +1 -1
- package/dist/errors.js +31 -5
- package/dist/errors.js.map +1 -1
- package/dist/index.d.ts +6 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +9 -2
- package/dist/index.js.map +1 -1
- package/dist/json-path.d.ts +8 -0
- package/dist/json-path.d.ts.map +1 -0
- package/dist/json-path.js +39 -0
- package/dist/json-path.js.map +1 -0
- package/dist/loader/meta-data-loader.d.ts +47 -6
- package/dist/loader/meta-data-loader.d.ts.map +1 -1
- package/dist/loader/meta-data-loader.js +106 -8
- package/dist/loader/meta-data-loader.js.map +1 -1
- package/dist/loader/meta-data-source.d.ts +6 -2
- package/dist/loader/meta-data-source.d.ts.map +1 -1
- package/dist/loader/meta-data-source.js +10 -6
- package/dist/loader/meta-data-source.js.map +1 -1
- package/dist/loader/shortcuts.d.ts +9 -0
- package/dist/loader/shortcuts.d.ts.map +1 -0
- package/dist/loader/shortcuts.js +19 -0
- package/dist/loader/shortcuts.js.map +1 -0
- package/dist/loader/sources/directory-source.d.ts +15 -0
- package/dist/loader/sources/directory-source.d.ts.map +1 -0
- package/dist/loader/sources/directory-source.js +80 -0
- package/dist/loader/sources/directory-source.js.map +1 -0
- package/dist/loader/sources/file-source.d.ts +12 -0
- package/dist/loader/sources/file-source.d.ts.map +1 -0
- package/dist/loader/sources/file-source.js +46 -0
- package/dist/loader/sources/file-source.js.map +1 -0
- package/dist/loader/sources/index.d.ts +5 -0
- package/dist/loader/sources/index.d.ts.map +1 -0
- package/dist/loader/sources/index.js +5 -0
- package/dist/loader/sources/index.js.map +1 -0
- package/dist/loader/sources/uri-source.d.ts +9 -0
- package/dist/loader/sources/uri-source.d.ts.map +1 -0
- package/dist/loader/sources/uri-source.js +42 -0
- package/dist/loader/sources/uri-source.js.map +1 -0
- package/dist/loader/validation-passes.d.ts.map +1 -1
- package/dist/loader/validation-passes.js +27 -27
- package/dist/loader/validation-passes.js.map +1 -1
- package/dist/naming.d.ts +15 -2
- package/dist/naming.d.ts.map +1 -1
- package/dist/naming.js +20 -6
- package/dist/naming.js.map +1 -1
- package/dist/parser-core.d.ts +2 -4
- package/dist/parser-core.d.ts.map +1 -1
- package/dist/parser-core.js +111 -42
- package/dist/parser-core.js.map +1 -1
- package/dist/parser-json.d.ts.map +1 -1
- package/dist/parser-json.js +10 -2
- package/dist/parser-json.js.map +1 -1
- package/dist/persistence/source/validate-source-roles.js +2 -2
- package/dist/persistence/source/validate-source-roles.js.map +1 -1
- package/dist/semantic-diff.d.ts +5 -0
- package/dist/semantic-diff.d.ts.map +1 -0
- package/dist/semantic-diff.js +49 -0
- package/dist/semantic-diff.js.map +1 -0
- package/dist/shared/meta-data.d.ts +10 -0
- package/dist/shared/meta-data.d.ts.map +1 -1
- package/dist/shared/meta-data.js +23 -0
- package/dist/shared/meta-data.js.map +1 -1
- package/dist/source.d.ts +68 -0
- package/dist/source.d.ts.map +1 -0
- package/dist/source.js +13 -0
- package/dist/source.js.map +1 -0
- package/dist/subtype-rules.js +1 -1
- package/dist/subtype-rules.js.map +1 -1
- package/dist/super-resolve.d.ts +2 -0
- package/dist/super-resolve.d.ts.map +1 -1
- package/dist/super-resolve.js +1 -1
- package/dist/super-resolve.js.map +1 -1
- package/package.json +1 -1
- package/src/attr-schema-validate.ts +7 -7
- package/src/core/export-json.ts +15 -18
- package/src/core/index.ts +8 -2
- package/src/core/parser-yaml.ts +15 -4
- package/src/errors.ts +42 -8
- package/src/index.ts +28 -3
- package/src/json-path.ts +46 -0
- package/src/loader/meta-data-loader.ts +148 -10
- package/src/loader/meta-data-source.ts +10 -6
- package/src/loader/shortcuts.ts +31 -0
- package/src/loader/sources/directory-source.ts +90 -0
- package/src/{core → loader/sources}/file-source.ts +3 -3
- package/src/loader/sources/index.ts +6 -0
- package/src/loader/sources/uri-source.ts +44 -0
- package/src/loader/validation-passes.ts +28 -24
- package/src/naming.ts +39 -7
- package/src/parser-core.ts +113 -43
- package/src/parser-json.ts +11 -2
- package/src/persistence/source/validate-source-roles.ts +2 -2
- package/src/semantic-diff.ts +48 -0
- package/src/shared/meta-data.ts +28 -0
- package/src/source.ts +61 -0
- package/src/subtype-rules.ts +1 -1
- package/src/super-resolve.ts +3 -1
- package/src/core/file-meta-data-loader.ts +0 -89
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"meta-data.d.ts","sourceRoot":"","sources":["../../src/shared/meta-data.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AAGxC,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAC;
|
|
1
|
+
{"version":3,"file":"meta-data.d.ts","sourceRoot":"","sources":["../../src/shared/meta-data.ts"],"names":[],"mappings":"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"}
|
package/dist/shared/meta-data.js
CHANGED
|
@@ -37,6 +37,13 @@ export class MetaData {
|
|
|
37
37
|
// Registry-supplied coarse value type — set by the registry factory at node
|
|
38
38
|
// construction (for field/attr nodes). Read via MetaField/MetaAttr.dataType.
|
|
39
39
|
_dataType;
|
|
40
|
+
// ADR-0009 provenance. Always populated; defaults to `{ format: "code" }`
|
|
41
|
+
// for programmatic construction (tests, factories, in-code builders). The
|
|
42
|
+
// JSON parser overwrites via setSource() during tree walk; future phases
|
|
43
|
+
// (overlay merge, super resolution) may overwrite with merged/resolved
|
|
44
|
+
// variants. Excluded from canonical JSON serialization — loader-derived
|
|
45
|
+
// state, not metadata.
|
|
46
|
+
_source = { format: "code" };
|
|
40
47
|
// Per-instance read cache: only populated once the node is frozen.
|
|
41
48
|
_cache = new Map();
|
|
42
49
|
constructor(typeId, name) {
|
|
@@ -132,6 +139,22 @@ export class MetaData {
|
|
|
132
139
|
this._dataType = dt;
|
|
133
140
|
}
|
|
134
141
|
// ---------------------------------------------------------------------------
|
|
142
|
+
// source (ADR-0009 provenance)
|
|
143
|
+
// ---------------------------------------------------------------------------
|
|
144
|
+
/** Provenance envelope for this node. Always populated. See ADR-0009. */
|
|
145
|
+
get source() {
|
|
146
|
+
return this._source;
|
|
147
|
+
}
|
|
148
|
+
/**
|
|
149
|
+
* Loader-internal: assign provenance. Called by parser and merge phases as
|
|
150
|
+
* they build the tree. Honors the frozen-guard like other setters.
|
|
151
|
+
* @internal
|
|
152
|
+
*/
|
|
153
|
+
setSource(s) {
|
|
154
|
+
this._assertNotFrozen();
|
|
155
|
+
this._source = s;
|
|
156
|
+
}
|
|
157
|
+
// ---------------------------------------------------------------------------
|
|
135
158
|
// isAbstract
|
|
136
159
|
// ---------------------------------------------------------------------------
|
|
137
160
|
setIsAbstract(val) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"meta-data.js","sourceRoot":"","sources":["../../src/shared/meta-data.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AACxC,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAGxE,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"meta-data.js","sourceRoot":"","sources":["../../src/shared/meta-data.ts"],"names":[],"mappings":"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"}
|
package/dist/source.d.ts
ADDED
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
/** Discriminated union over the provenance variants a metadata node or error
|
|
2
|
+
* can carry. See ADR-0009 §Decision for the canonical shape. */
|
|
3
|
+
export type ErrorSource = {
|
|
4
|
+
format: "json";
|
|
5
|
+
files: [string];
|
|
6
|
+
jsonPath: string;
|
|
7
|
+
} | {
|
|
8
|
+
format: "yaml";
|
|
9
|
+
files: [string];
|
|
10
|
+
jsonPath: string;
|
|
11
|
+
yamlPosition?: {
|
|
12
|
+
line: number;
|
|
13
|
+
col: number;
|
|
14
|
+
};
|
|
15
|
+
} | {
|
|
16
|
+
format: "merged";
|
|
17
|
+
files: string[];
|
|
18
|
+
jsonPath: string;
|
|
19
|
+
contributors: Contributor[];
|
|
20
|
+
} | {
|
|
21
|
+
format: "resolved";
|
|
22
|
+
files: string[];
|
|
23
|
+
jsonPath?: string;
|
|
24
|
+
referrer?: string;
|
|
25
|
+
target?: string;
|
|
26
|
+
} | {
|
|
27
|
+
format: "database";
|
|
28
|
+
dbLocation: {
|
|
29
|
+
table: string;
|
|
30
|
+
id: string;
|
|
31
|
+
};
|
|
32
|
+
jsonPath?: string;
|
|
33
|
+
} | {
|
|
34
|
+
format: "code";
|
|
35
|
+
caller?: string;
|
|
36
|
+
};
|
|
37
|
+
export interface Contributor {
|
|
38
|
+
file: string;
|
|
39
|
+
role: "overlay-base" | "overlay-extension" | "extends-base" | "extends-extension";
|
|
40
|
+
}
|
|
41
|
+
export interface NodeContext {
|
|
42
|
+
type?: string;
|
|
43
|
+
subtype?: string;
|
|
44
|
+
name?: string;
|
|
45
|
+
fqn?: string;
|
|
46
|
+
}
|
|
47
|
+
/** Envelope shape every loader error conforms to. */
|
|
48
|
+
export interface LoaderError {
|
|
49
|
+
code: string;
|
|
50
|
+
message: string;
|
|
51
|
+
source: ErrorSource;
|
|
52
|
+
suggestions?: string[];
|
|
53
|
+
fixture?: string;
|
|
54
|
+
node?: NodeContext;
|
|
55
|
+
}
|
|
56
|
+
/** Warning envelope — same shape as LoaderError but a `WARN_*` code. */
|
|
57
|
+
export interface LoaderWarning {
|
|
58
|
+
code: string;
|
|
59
|
+
message: string;
|
|
60
|
+
source: ErrorSource;
|
|
61
|
+
suggestions?: string[];
|
|
62
|
+
fixture?: string;
|
|
63
|
+
node?: NodeContext;
|
|
64
|
+
}
|
|
65
|
+
/** Canonical synthetic envelope for programmatic / test-constructed nodes.
|
|
66
|
+
* `caller` is an optional human label (e.g. "QueriesTest.makePost"). */
|
|
67
|
+
export declare function codeSource(caller?: string): ErrorSource;
|
|
68
|
+
//# sourceMappingURL=source.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"source.d.ts","sourceRoot":"","sources":["../src/source.ts"],"names":[],"mappings":"AAQA;iEACiE;AACjE,MAAM,MAAM,WAAW,GACnB;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,CAAC,MAAM,CAAC,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,GACrD;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,CAAC,MAAM,CAAC,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAClD,YAAY,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE,CAAA;CAAE,GAChD;IAAE,MAAM,EAAE,QAAQ,CAAC;IAAC,KAAK,EAAE,MAAM,EAAE,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IACpD,YAAY,EAAE,WAAW,EAAE,CAAA;CAAE,GAC/B;IAAE,MAAM,EAAE,UAAU,CAAC;IAAC,KAAK,EAAE,MAAM,EAAE,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IACvD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,GACtC;IAAE,MAAM,EAAE,UAAU,CAAC;IAAC,UAAU,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,EAAE,EAAE,MAAM,CAAA;KAAE,CAAC;IAC9D,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAE,GACrB;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AAExC,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,cAAc,GAAG,mBAAmB,GAAG,cAAc,GAAG,mBAAmB,CAAC;CACnF;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED,qDAAqD;AACrD,MAAM,WAAW,WAAW;IAE1B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,WAAW,CAAC;IAEpB,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,WAAW,CAAC;CACpB;AAED,wEAAwE;AACxE,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,WAAW,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,WAAW,CAAC;CACpB;AAED;yEACyE;AACzE,wBAAgB,UAAU,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,WAAW,CAEvD"}
|
package/dist/source.js
ADDED
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
// server/typescript/packages/metadata/src/source.ts
|
|
2
|
+
//
|
|
3
|
+
// FR5a — Loader error envelope + source-on-node (ADR-0009).
|
|
4
|
+
//
|
|
5
|
+
// Cross-port-aligned types: every metaobjects port emits the same envelope
|
|
6
|
+
// shape so a tool consuming errors from multiple language ports can compare
|
|
7
|
+
// them byte-identically.
|
|
8
|
+
/** Canonical synthetic envelope for programmatic / test-constructed nodes.
|
|
9
|
+
* `caller` is an optional human label (e.g. "QueriesTest.makePost"). */
|
|
10
|
+
export function codeSource(caller) {
|
|
11
|
+
return caller ? { format: "code", caller } : { format: "code" };
|
|
12
|
+
}
|
|
13
|
+
//# sourceMappingURL=source.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"source.js","sourceRoot":"","sources":["../src/source.ts"],"names":[],"mappings":"AAAA,oDAAoD;AACpD,EAAE;AACF,4DAA4D;AAC5D,EAAE;AACF,2EAA2E;AAC3E,4EAA4E;AAC5E,yBAAyB;AAkDzB;yEACyE;AACzE,MAAM,UAAU,UAAU,CAAC,MAAe;IACxC,OAAO,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;AAClE,CAAC"}
|
package/dist/subtype-rules.js
CHANGED
|
@@ -18,7 +18,7 @@ function walk(model, errors, warnings) {
|
|
|
18
18
|
const hasPrimary = model.children().some((c) => c.type === TYPE_IDENTITY && c.subType === IDENTITY_SUBTYPE_PRIMARY);
|
|
19
19
|
if (model.subType === OBJECT_SUBTYPE_VALUE && hasPrimary) {
|
|
20
20
|
errors.push(new ParseError(`value object '${model.fqn()}' must not have a primary identity ` +
|
|
21
|
-
`(use subType: "entity" for records with identity)`, { code: "ERR_SUBTYPE_RULE_VIOLATION" }));
|
|
21
|
+
`(use subType: "entity" for records with identity)`, { code: "ERR_SUBTYPE_RULE_VIOLATION", source: model.source }));
|
|
22
22
|
}
|
|
23
23
|
else if (model.subType === OBJECT_SUBTYPE_ENTITY &&
|
|
24
24
|
!hasPrimary &&
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"subtype-rules.js","sourceRoot":"","sources":["../src/subtype-rules.ts"],"names":[],"mappings":"AAAA,oDAAoD;AACpD,EAAE;AACF,6DAA6D;AAC7D,kFAAkF;AAClF,yEAAyE;AAGzE,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACpE,OAAO,EAAE,wBAAwB,EAAE,MAAM,uCAAuC,CAAC;AACjF,OAAO,EACL,qBAAqB,EACrB,oBAAoB,GACrB,MAAM,mCAAmC,CAAC;AAO3C,MAAM,UAAU,oBAAoB,CAAC,IAAc;IACjD,MAAM,MAAM,GAAiB,EAAE,CAAC;IAChC,MAAM,QAAQ,GAAa,EAAE,CAAC;IAC9B,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC;IAC7B,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC;AAC9B,CAAC;AAED,SAAS,IAAI,CAAC,KAAe,EAAE,MAAoB,EAAE,QAAkB;IACrE,IAAI,KAAK,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;QAC/B,MAAM,UAAU,GAAG,KAAK,CAAC,QAAQ,EAAE,CAAC,IAAI,CACtC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,aAAa,IAAI,CAAC,CAAC,OAAO,KAAK,wBAAwB,CAC1E,CAAC;QACF,IAAI,KAAK,CAAC,OAAO,KAAK,oBAAoB,IAAI,UAAU,EAAE,CAAC;YACzD,MAAM,CAAC,IAAI,CACT,IAAI,UAAU,CACZ,iBAAiB,KAAK,CAAC,GAAG,EAAE,qCAAqC;gBAC/D,mDAAmD,EACrD,EAAE,IAAI,EAAE,4BAA4B,EAAE,
|
|
1
|
+
{"version":3,"file":"subtype-rules.js","sourceRoot":"","sources":["../src/subtype-rules.ts"],"names":[],"mappings":"AAAA,oDAAoD;AACpD,EAAE;AACF,6DAA6D;AAC7D,kFAAkF;AAClF,yEAAyE;AAGzE,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACpE,OAAO,EAAE,wBAAwB,EAAE,MAAM,uCAAuC,CAAC;AACjF,OAAO,EACL,qBAAqB,EACrB,oBAAoB,GACrB,MAAM,mCAAmC,CAAC;AAO3C,MAAM,UAAU,oBAAoB,CAAC,IAAc;IACjD,MAAM,MAAM,GAAiB,EAAE,CAAC;IAChC,MAAM,QAAQ,GAAa,EAAE,CAAC;IAC9B,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC;IAC7B,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC;AAC9B,CAAC;AAED,SAAS,IAAI,CAAC,KAAe,EAAE,MAAoB,EAAE,QAAkB;IACrE,IAAI,KAAK,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;QAC/B,MAAM,UAAU,GAAG,KAAK,CAAC,QAAQ,EAAE,CAAC,IAAI,CACtC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,aAAa,IAAI,CAAC,CAAC,OAAO,KAAK,wBAAwB,CAC1E,CAAC;QACF,IAAI,KAAK,CAAC,OAAO,KAAK,oBAAoB,IAAI,UAAU,EAAE,CAAC;YACzD,MAAM,CAAC,IAAI,CACT,IAAI,UAAU,CACZ,iBAAiB,KAAK,CAAC,GAAG,EAAE,qCAAqC;gBAC/D,mDAAmD,EACrD,EAAE,IAAI,EAAE,4BAA4B,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,CAC7D,CACF,CAAC;QACJ,CAAC;aAAM,IACL,KAAK,CAAC,OAAO,KAAK,qBAAqB;YACvC,CAAC,UAAU;YACX,CAAC,KAAK,CAAC,UAAU,EACjB,CAAC;YACD,QAAQ,CAAC,IAAI,CACX,kBAAkB,KAAK,CAAC,GAAG,EAAE,4BAA4B;gBACvD,mDAAmD,CACtD,CAAC;QACJ,CAAC;IACH,CAAC;IAED,KAAK,MAAM,KAAK,IAAI,KAAK,CAAC,WAAW,EAAE,EAAE,CAAC;QACxC,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC;IAChC,CAAC;AACH,CAAC"}
|
package/dist/super-resolve.d.ts
CHANGED
|
@@ -17,6 +17,8 @@ export interface DeferredSuperFailure {
|
|
|
17
17
|
nodeFqn: string;
|
|
18
18
|
/** The raw super ref string that didn't resolve. */
|
|
19
19
|
ref: string;
|
|
20
|
+
/** ADR-0009 provenance envelope of the referencing node (FR5a). */
|
|
21
|
+
source: import("./source.js").ErrorSource;
|
|
20
22
|
}
|
|
21
23
|
/**
|
|
22
24
|
* Walk the tree and resolve every node's superRef against the full root.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"super-resolve.d.ts","sourceRoot":"","sources":["../src/super-resolve.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAwBtD;;;;;;;;;;;GAWG;AACH,wBAAgB,eAAe,CAC7B,GAAG,EAAE,MAAM,EACX,cAAc,EAAE,MAAM,EACtB,IAAI,EAAE,QAAQ,GACb,QAAQ,GAAG,SAAS,CAsCtB;AAMD,MAAM,WAAW,oBAAoB;IACnC,6DAA6D;IAC7D,OAAO,EAAE,MAAM,CAAC;IAChB,oDAAoD;IACpD,GAAG,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"super-resolve.d.ts","sourceRoot":"","sources":["../src/super-resolve.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAwBtD;;;;;;;;;;;GAWG;AACH,wBAAgB,eAAe,CAC7B,GAAG,EAAE,MAAM,EACX,cAAc,EAAE,MAAM,EACtB,IAAI,EAAE,QAAQ,GACb,QAAQ,GAAG,SAAS,CAsCtB;AAMD,MAAM,WAAW,oBAAoB;IACnC,6DAA6D;IAC7D,OAAO,EAAE,MAAM,CAAC;IAChB,oDAAoD;IACpD,GAAG,EAAE,MAAM,CAAC;IACZ,mEAAmE;IACnE,MAAM,EAAE,OAAO,aAAa,EAAE,WAAW,CAAC;CAC3C;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,QAAQ,GAAG,oBAAoB,EAAE,CAkB5E"}
|
package/dist/super-resolve.js
CHANGED
|
@@ -109,7 +109,7 @@ export function resolveDeferredSupers(root) {
|
|
|
109
109
|
}
|
|
110
110
|
}
|
|
111
111
|
else {
|
|
112
|
-
failures.push({ nodeFqn: node.fqn(), ref: node.superRef });
|
|
112
|
+
failures.push({ nodeFqn: node.fqn(), ref: node.superRef, source: node.source });
|
|
113
113
|
}
|
|
114
114
|
});
|
|
115
115
|
return failures;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"super-resolve.js","sourceRoot":"","sources":["../src/super-resolve.ts"],"names":[],"mappings":"AAAA,0DAA0D;AAC1D,EAAE;AACF,wDAAwD;AACxD,uFAAuF;AACvF,2EAA2E;AAC3E,yFAAyF;AACzF,wFAAwF;AACxF,4FAA4F;AAC5F,EAAE;AACF,kEAAkE;AAClE,2EAA2E;AAC3E,8DAA8D;AAG9D,OAAO,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAE3E,8EAA8E;AAC9E,qBAAqB;AACrB,8EAA8E;AAE9E;;;GAGG;AACH,SAAS,UAAU,CAAC,IAAc,EAAE,GAAW;IAC7C,IAAI,IAAI,CAAC,GAAG,EAAE,KAAK,GAAG;QAAE,OAAO,IAAI,CAAC;IACpC,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC;QACvC,MAAM,KAAK,GAAG,UAAU,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;QACrC,IAAI,KAAK,KAAK,SAAS;YAAE,OAAO,KAAK,CAAC;IACxC,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,8EAA8E;AAC9E,iCAAiC;AACjC,8EAA8E;AAE9E;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,eAAe,CAC7B,GAAW,EACX,cAAsB,EACtB,IAAc;IAEd,4EAA4E;IAC5E,sCAAsC;IACtC,4EAA4E;IAC5E,IAAI,GAAG,CAAC,UAAU,CAAC,iBAAiB,CAAC,EAAE,CAAC;QACtC,MAAM,YAAY,GAAG,GAAG,CAAC,KAAK,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC;QACzD,OAAO,UAAU,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC;IACxC,CAAC;IAED,4EAA4E;IAC5E,oDAAoD;IACpD,4EAA4E;IAC5E,IAAI,GAAG,CAAC,UAAU,CAAC,cAAc,GAAG,iBAAiB,CAAC,EAAE,CAAC;QACvD,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC;QAC3C,IAAI,MAAM,GAAG,CAAC,CAAC;QACf,OAAO,MAAM,GAAG,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,cAAc,EAAE,CAAC;YACjE,MAAM,EAAE,CAAC;QACX,CAAC;QAED,MAAM,QAAQ,GAAG,cAAc,KAAK,EAAE,CAAC,CAAC,CAAC,cAAc,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QACtF,MAAM,SAAS,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QACtC,IAAI,QAAQ,CAAC,MAAM,GAAG,MAAM,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACvD,OAAO,SAAS,CAAC;QACnB,CAAC;QAED,MAAM,QAAQ,GAAG,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,QAAQ,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,GAAG,SAAS,CAAC,CAAC;QAChF,OAAO,UAAU,CAAC,IAAI,EAAE,QAAQ,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC;IAC5D,CAAC;IAED,4EAA4E;IAC5E,uEAAuE;IACvE,0EAA0E;IAC1E,4EAA4E;IAC5E,IAAI,cAAc,KAAK,EAAE,EAAE,CAAC;QAC1B,MAAM,KAAK,GAAG,UAAU,CAAC,IAAI,EAAE,GAAG,cAAc,GAAG,iBAAiB,GAAG,GAAG,EAAE,CAAC,CAAC;QAC9E,IAAI,KAAK,KAAK,SAAS;YAAE,OAAO,KAAK,CAAC;IACxC,CAAC;IACD,OAAO,UAAU,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;AAC/B,CAAC;
|
|
1
|
+
{"version":3,"file":"super-resolve.js","sourceRoot":"","sources":["../src/super-resolve.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -100,7 +100,7 @@ function validateNode(
|
|
|
100
100
|
errors.push(
|
|
101
101
|
new ParseError(
|
|
102
102
|
`Common attr '${ca.name}' conflicts with per-type attr on ${typeKey}`,
|
|
103
|
-
{ code: "ERR_PROVIDER_ATTR_CONFLICT" },
|
|
103
|
+
{ code: "ERR_PROVIDER_ATTR_CONFLICT", source: node.source },
|
|
104
104
|
),
|
|
105
105
|
);
|
|
106
106
|
reportedConflicts.add(typeKey);
|
|
@@ -126,7 +126,7 @@ function validateNode(
|
|
|
126
126
|
errors.push(
|
|
127
127
|
new ParseError(
|
|
128
128
|
`${nodeLabel(node)} is missing required attribute '@${spec.name}'`,
|
|
129
|
-
{ code: "ERR_MISSING_REQUIRED_ATTR" },
|
|
129
|
+
{ code: "ERR_MISSING_REQUIRED_ATTR", source: node.source },
|
|
130
130
|
),
|
|
131
131
|
);
|
|
132
132
|
}
|
|
@@ -145,7 +145,7 @@ function validateNode(
|
|
|
145
145
|
const valueErrors = inst.validateValue(value);
|
|
146
146
|
if (valueErrors.length > 0) {
|
|
147
147
|
for (const ve of valueErrors) {
|
|
148
|
-
errors.push(new ParseError(`${nodeLabel(node)} ${ve.message}`, { code: "ERR_BAD_ATTR_VALUE" }));
|
|
148
|
+
errors.push(new ParseError(`${nodeLabel(node)} ${ve.message}`, { code: "ERR_BAD_ATTR_VALUE", source: node.source }));
|
|
149
149
|
}
|
|
150
150
|
continue; // type wrong → skip allowedValues
|
|
151
151
|
}
|
|
@@ -159,7 +159,7 @@ function validateNode(
|
|
|
159
159
|
`${nodeLabel(node)} attribute '@${inst.name}' has value ` +
|
|
160
160
|
`'${String(value)}' which is not one of the allowed values: ` +
|
|
161
161
|
`${spec.allowedValues.map((v) => String(v)).join(", ")}`,
|
|
162
|
-
{ code: "ERR_BAD_ATTR_VALUE" },
|
|
162
|
+
{ code: "ERR_BAD_ATTR_VALUE", source: node.source },
|
|
163
163
|
),
|
|
164
164
|
);
|
|
165
165
|
}
|
|
@@ -180,7 +180,7 @@ function validateNode(
|
|
|
180
180
|
errors.push(
|
|
181
181
|
new ParseError(
|
|
182
182
|
`${nodeLabel(node)} must declare at least one value in '@${FIELD_ATTR_VALUES}'.`,
|
|
183
|
-
{ code: "ERR_BAD_ATTR_VALUE" },
|
|
183
|
+
{ code: "ERR_BAD_ATTR_VALUE", source: node.source },
|
|
184
184
|
),
|
|
185
185
|
);
|
|
186
186
|
} else {
|
|
@@ -194,14 +194,14 @@ function validateNode(
|
|
|
194
194
|
`${nodeLabel(node)} attribute '@${FIELD_ATTR_VALUES}' member '${member}' ` +
|
|
195
195
|
`is not a valid identifier (must match ${ENUM_MEMBER_PATTERN.source}). ` +
|
|
196
196
|
`Non-identifier-safe member strings require a symbol↔value mapping (deferred).`,
|
|
197
|
-
{ code: "ERR_BAD_ATTR_VALUE" },
|
|
197
|
+
{ code: "ERR_BAD_ATTR_VALUE", source: node.source },
|
|
198
198
|
),
|
|
199
199
|
);
|
|
200
200
|
} else if (seen.has(member)) {
|
|
201
201
|
errors.push(
|
|
202
202
|
new ParseError(
|
|
203
203
|
`${nodeLabel(node)} attribute '@${FIELD_ATTR_VALUES}' has duplicate member '${member}'.`,
|
|
204
|
-
{ code: "ERR_BAD_ATTR_VALUE" },
|
|
204
|
+
{ code: "ERR_BAD_ATTR_VALUE", source: node.source },
|
|
205
205
|
),
|
|
206
206
|
);
|
|
207
207
|
} else {
|
package/src/core/export-json.ts
CHANGED
|
@@ -10,13 +10,12 @@
|
|
|
10
10
|
// - Content errors (parse/validation failures) are collected in errors[] and
|
|
11
11
|
// returned in the result — they do NOT throw. `json` is still produced from
|
|
12
12
|
// whatever tree the Loader returned (Loader always returns a valid MetaData).
|
|
13
|
-
// - I/O failures (missing/unreadable directory)
|
|
14
|
-
//
|
|
15
|
-
//
|
|
16
|
-
//
|
|
13
|
+
// - I/O failures (missing/unreadable directory) surface as collected errors
|
|
14
|
+
// via MetaDataLoader.fromDirectory; `loadAndExportJson` surfaces them
|
|
15
|
+
// unchanged in `ExportResult.errors`. It does not throw for directory or
|
|
16
|
+
// metadata problems.
|
|
17
17
|
|
|
18
|
-
import {
|
|
19
|
-
import type { LoadOptions } from "../loader/meta-data-loader.js";
|
|
18
|
+
import { MetaDataLoader, type LoadOptions } from "../loader/meta-data-loader.js";
|
|
20
19
|
import { canonicalSerialize } from "../serializer-json.js";
|
|
21
20
|
|
|
22
21
|
// ---------------------------------------------------------------------------
|
|
@@ -39,28 +38,26 @@ export interface ExportResult {
|
|
|
39
38
|
* Load all metadata under `dir` and export the entire model as one flattened
|
|
40
39
|
* canonical-JSON document.
|
|
41
40
|
*
|
|
42
|
-
*
|
|
43
|
-
* composed via `composeRegistry(coreProviders)`),
|
|
44
|
-
* resulting tree with `canonicalSerialize`.
|
|
41
|
+
* Routes through `MetaDataLoader.fromDirectory` (using the default registry
|
|
42
|
+
* composed via `composeRegistry(coreProviders)` when none supplied), then
|
|
43
|
+
* serializes the resulting tree with `canonicalSerialize`.
|
|
45
44
|
*
|
|
46
45
|
* @param dir Absolute or relative path to the directory containing `meta.*.json` files.
|
|
47
|
-
* @param opts Optional loader options
|
|
48
|
-
*
|
|
49
|
-
* supplied as `opts.exclude` — see `FileMetaDataLoader.loadDirectory`.
|
|
46
|
+
* @param opts Optional loader options (registry, freeze, strict). The
|
|
47
|
+
* `exclude` glob list can be supplied as `opts.exclude`.
|
|
50
48
|
*/
|
|
51
49
|
export async function loadAndExportJson(
|
|
52
50
|
dir: string,
|
|
53
51
|
opts?: LoadOptions & { exclude?: string[] },
|
|
54
52
|
): Promise<ExportResult> {
|
|
55
|
-
const
|
|
56
|
-
const loader = new FileMetaDataLoader(loaderOpts);
|
|
57
|
-
// Only pass the exclude option when defined, to satisfy exactOptionalPropertyTypes.
|
|
58
|
-
const dirOpts = exclude !== undefined ? { exclude } : undefined;
|
|
59
|
-
const result = await loader.loadDirectory(dir, dirOpts);
|
|
53
|
+
const result = await MetaDataLoader.fromDirectory(dir, opts);
|
|
60
54
|
const json = canonicalSerialize(result.root);
|
|
61
55
|
return {
|
|
62
56
|
json,
|
|
63
57
|
errors: result.errors,
|
|
64
|
-
|
|
58
|
+
// FR5a: LoadResult.warnings is now LoaderWarning[]; ExportResult preserves
|
|
59
|
+
// its public string[] shape (callers print warnings as text). Extract the
|
|
60
|
+
// message for back-compat.
|
|
61
|
+
warnings: result.warnings.map((w) => w.message),
|
|
65
62
|
};
|
|
66
63
|
}
|
package/src/core/index.ts
CHANGED
|
@@ -5,8 +5,14 @@
|
|
|
5
5
|
// load-and-export convenience. The root `@metaobjectsdev/metadata` entry is
|
|
6
6
|
// browser-safe and imports none of this. See the package README.
|
|
7
7
|
|
|
8
|
-
|
|
9
|
-
|
|
8
|
+
// Source impls — the node:fs-backed MetaDataSource implementations. Live
|
|
9
|
+
// under `loader/sources/`; re-exported here so server-side consumers can pull
|
|
10
|
+
// them from the same `/core` entry that already houses the YAML parser.
|
|
11
|
+
export { FileSource } from "../loader/sources/file-source.js";
|
|
12
|
+
export { DirectorySource } from "../loader/sources/directory-source.js";
|
|
13
|
+
export type { DirectoryOptions } from "../loader/sources/directory-source.js";
|
|
14
|
+
export { UriSource } from "../loader/sources/uri-source.js";
|
|
15
|
+
|
|
10
16
|
export { parseYaml } from "./parser-yaml.js";
|
|
11
17
|
export { loadAndExportJson } from "./export-json.js";
|
|
12
18
|
export type { ExportResult } from "./export-json.js";
|
package/src/core/parser-yaml.ts
CHANGED
|
@@ -7,10 +7,21 @@
|
|
|
7
7
|
|
|
8
8
|
import { parse as parseYamlText } from "yaml";
|
|
9
9
|
import { ParseError } from "../errors.js";
|
|
10
|
-
import { buildTree
|
|
10
|
+
import { buildTree } from "../parser-core.js";
|
|
11
11
|
import type { ParseOptions, ParseResult } from "../parser-core.js";
|
|
12
|
+
import type { ErrorSource } from "../source.js";
|
|
12
13
|
import { desugar } from "./yaml-desugar.js";
|
|
13
14
|
|
|
15
|
+
/** FR5a / ADR-0009 — build a YAML-source envelope rooted at "$".
|
|
16
|
+
* yamlPosition is FR5b territory and not populated here. */
|
|
17
|
+
function yamlSource(sourceName: string | undefined): ErrorSource {
|
|
18
|
+
return {
|
|
19
|
+
format: "yaml",
|
|
20
|
+
files: [sourceName ?? "<unknown>"],
|
|
21
|
+
jsonPath: "$",
|
|
22
|
+
};
|
|
23
|
+
}
|
|
24
|
+
|
|
14
25
|
export function parseYaml(content: string, opts: ParseOptions): ParseResult {
|
|
15
26
|
// Strip UTF-8 BOM if present (consistent with parseJson).
|
|
16
27
|
const normalizedContent =
|
|
@@ -24,7 +35,7 @@ export function parseYaml(content: string, opts: ParseOptions): ParseResult {
|
|
|
24
35
|
} catch (err) {
|
|
25
36
|
throw new ParseError(
|
|
26
37
|
`Invalid YAML: ${(err as Error).message}`,
|
|
27
|
-
{
|
|
38
|
+
{ code: "ERR_MALFORMED_YAML", source: yamlSource(opts.sourceName) },
|
|
28
39
|
);
|
|
29
40
|
}
|
|
30
41
|
|
|
@@ -37,7 +48,7 @@ export function parseYaml(content: string, opts: ParseOptions): ParseResult {
|
|
|
37
48
|
const first = desugarErrors[0]!;
|
|
38
49
|
throw new ParseError(
|
|
39
50
|
first.message,
|
|
40
|
-
{
|
|
51
|
+
{ code: first.code ?? "ERR_MALFORMED_YAML", source: yamlSource(opts.sourceName) },
|
|
41
52
|
);
|
|
42
53
|
}
|
|
43
54
|
|
|
@@ -50,8 +61,8 @@ export function parseYaml(content: string, opts: ParseOptions): ParseResult {
|
|
|
50
61
|
const desugarParseErrors = desugarErrors.map(
|
|
51
62
|
(e) =>
|
|
52
63
|
new ParseError(e.message, {
|
|
53
|
-
...errOpts(opts.sourceName),
|
|
54
64
|
code: e.code ?? "ERR_MALFORMED_YAML",
|
|
65
|
+
source: yamlSource(opts.sourceName),
|
|
55
66
|
}),
|
|
56
67
|
);
|
|
57
68
|
return {
|
package/src/errors.ts
CHANGED
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
// Typed error classes for the metadata parser.
|
|
2
2
|
|
|
3
|
+
import type { ErrorSource, LoaderError, NodeContext } from "./source.js";
|
|
4
|
+
|
|
3
5
|
/** Stable, language-neutral error codes — mirrors fixtures/conformance/ERROR-CODES.json. */
|
|
4
6
|
// NOTE: The following codes are forward-declared (no emitting site in the current
|
|
5
7
|
// TS parser/loader — the condition is not yet detected):
|
|
@@ -55,20 +57,52 @@ export const ERROR_CODES = [
|
|
|
55
57
|
|
|
56
58
|
export type ErrorCode = (typeof ERROR_CODES)[number];
|
|
57
59
|
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
60
|
+
/**
|
|
61
|
+
* Loader error carrying the ADR-0009 LoaderError envelope.
|
|
62
|
+
*
|
|
63
|
+
* Public shape (FR5a):
|
|
64
|
+
* new ParseError(message, { code, source, suggestions?, fixture?, node? })
|
|
65
|
+
*
|
|
66
|
+
* - `code` and `source` are required.
|
|
67
|
+
* - `source` is the ErrorSource discriminated union (json/yaml/merged/resolved/
|
|
68
|
+
* database/code) — the same envelope every cross-language port emits.
|
|
69
|
+
* - `suggestions[]`, `fixture`, `node` are optional per ADR-0009 §RECOMMENDED;
|
|
70
|
+
* FR5a does not populate them, FR5b–FR5e may.
|
|
71
|
+
*
|
|
72
|
+
* Legacy fields (`path?: string`, `source?: string`) were superseded by the
|
|
73
|
+
* envelope's `jsonPath` and `files` and have been dropped — see CHANGELOG.
|
|
74
|
+
*/
|
|
75
|
+
export class ParseError extends Error implements LoaderError {
|
|
76
|
+
readonly code: ErrorCode;
|
|
77
|
+
readonly source: ErrorSource;
|
|
78
|
+
readonly suggestions?: string[];
|
|
79
|
+
readonly fixture?: string;
|
|
80
|
+
readonly node?: NodeContext;
|
|
62
81
|
|
|
63
82
|
constructor(
|
|
64
83
|
message: string,
|
|
65
|
-
opts
|
|
84
|
+
opts: {
|
|
85
|
+
code: ErrorCode;
|
|
86
|
+
source: ErrorSource;
|
|
87
|
+
suggestions?: string[];
|
|
88
|
+
fixture?: string;
|
|
89
|
+
node?: NodeContext;
|
|
90
|
+
},
|
|
66
91
|
) {
|
|
67
92
|
super(message);
|
|
68
93
|
this.name = "ParseError";
|
|
69
|
-
this.
|
|
70
|
-
this.
|
|
71
|
-
|
|
94
|
+
this.code = opts.code;
|
|
95
|
+
this.source = opts.source;
|
|
96
|
+
// exactOptionalPropertyTypes: only assign when defined.
|
|
97
|
+
if (opts.suggestions !== undefined) {
|
|
98
|
+
(this as { suggestions?: string[] }).suggestions = opts.suggestions;
|
|
99
|
+
}
|
|
100
|
+
if (opts.fixture !== undefined) {
|
|
101
|
+
(this as { fixture?: string }).fixture = opts.fixture;
|
|
102
|
+
}
|
|
103
|
+
if (opts.node !== undefined) {
|
|
104
|
+
(this as { node?: NodeContext }).node = opts.node;
|
|
105
|
+
}
|
|
72
106
|
}
|
|
73
107
|
}
|
|
74
108
|
|
package/src/index.ts
CHANGED
|
@@ -150,13 +150,37 @@ export { resolveSuperRef } from "./super-resolve.js";
|
|
|
150
150
|
// Loader hierarchy
|
|
151
151
|
export { MetaDataLoader } from "./loader/meta-data-loader.js";
|
|
152
152
|
export type { LoadOptions, LoadResult, LoadingState } from "./loader/meta-data-loader.js";
|
|
153
|
-
export {
|
|
153
|
+
export { InMemoryStringSource } from "./loader/meta-data-source.js";
|
|
154
154
|
export type { MetaDataSource, MetaDataFormat } from "./loader/meta-data-source.js";
|
|
155
155
|
|
|
156
|
+
// Module-level loader shortcuts — delegate to MetaDataLoader.from* static
|
|
157
|
+
// factories. The shortcuts honor the ergonomic per-port pattern (TS and
|
|
158
|
+
// Python expose both class statics AND module-level functions); Java/C# stay
|
|
159
|
+
// class-only. Browser safety is preserved: the underlying sources are
|
|
160
|
+
// loaded via dynamic import inside MetaDataLoader.from*.
|
|
161
|
+
export {
|
|
162
|
+
loadDirectory,
|
|
163
|
+
loadUris,
|
|
164
|
+
loadString,
|
|
165
|
+
} from "./loader/shortcuts.js";
|
|
166
|
+
|
|
156
167
|
// Errors
|
|
157
168
|
export { ParseError, MetaModelError, ERROR_CODES } from "./errors.js";
|
|
158
169
|
export type { ErrorCode } from "./errors.js";
|
|
159
170
|
|
|
171
|
+
// FR5a — loader error envelope + source-on-node (ADR-0009).
|
|
172
|
+
// Re-exported from the package root so consumers that catch + repackage
|
|
173
|
+
// ParseErrors (or narrow on `err.source.format === "json"`) can import the
|
|
174
|
+
// envelope types alongside the runtime discriminator.
|
|
175
|
+
export type {
|
|
176
|
+
ErrorSource,
|
|
177
|
+
LoaderError,
|
|
178
|
+
LoaderWarning,
|
|
179
|
+
NodeContext,
|
|
180
|
+
Contributor,
|
|
181
|
+
} from "./source.js";
|
|
182
|
+
export { codeSource } from "./source.js";
|
|
183
|
+
|
|
160
184
|
// Attribute-schema validation pass (Phase A3)
|
|
161
185
|
export { validateAttrSchema } from "./attr-schema-validate.js";
|
|
162
186
|
export type { AttrSchemaValidationResult } from "./attr-schema-validate.js";
|
|
@@ -164,9 +188,10 @@ export type { AttrSchemaValidationResult } from "./attr-schema-validate.js";
|
|
|
164
188
|
// Naming — hoisted from runtime-ts in v0.2.3 so multiple consumers (runtime-ts, migrate-ts, codegen-ts)
|
|
165
189
|
// share identical name resolution. See spec §4.1.
|
|
166
190
|
export {
|
|
167
|
-
toSnakeCase, pluralize,
|
|
191
|
+
toSnakeCase, toKebabCase, pluralize,
|
|
192
|
+
applyColumnNamingStrategy, DEFAULT_COLUMN_NAMING_STRATEGY,
|
|
168
193
|
resolveTableName, resolveColumnName, resolveTableSchema,
|
|
169
194
|
buildNameMap,
|
|
170
195
|
stripPackage,
|
|
171
196
|
} from "./naming.js";
|
|
172
|
-
export type { EntityNameMap } from "./naming.js";
|
|
197
|
+
export type { EntityNameMap, ColumnNamingStrategy } from "./naming.js";
|
package/src/json-path.ts
ADDED
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
// server/typescript/packages/metadata/src/json-path.ts
|
|
2
|
+
//
|
|
3
|
+
// FR5a / ADR-0009 — Canonical JSONPath builder.
|
|
4
|
+
//
|
|
5
|
+
// Construction rules (cross-port-aligned):
|
|
6
|
+
// - Root is `$`.
|
|
7
|
+
// - Object keys matching /^[A-Za-z_][A-Za-z0-9_]*$/ use dot notation: `.foo`.
|
|
8
|
+
// - All other keys use single-quoted bracket form: `['my-key']`, `['@attr']`.
|
|
9
|
+
// - Array indices use bracket form: `[N]`.
|
|
10
|
+
// - No trailing dots, no whitespace.
|
|
11
|
+
|
|
12
|
+
const IDENT_RE = /^[A-Za-z_][A-Za-z0-9_]*$/;
|
|
13
|
+
|
|
14
|
+
type Segment =
|
|
15
|
+
| { kind: "key"; value: string }
|
|
16
|
+
| { kind: "index"; value: number };
|
|
17
|
+
|
|
18
|
+
export class JsonPathBuilder {
|
|
19
|
+
private readonly segments: Segment[] = [];
|
|
20
|
+
|
|
21
|
+
pushKey(key: string): void {
|
|
22
|
+
this.segments.push({ kind: "key", value: key });
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
pushIndex(idx: number): void {
|
|
26
|
+
this.segments.push({ kind: "index", value: idx });
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
pop(): void {
|
|
30
|
+
this.segments.pop();
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
toString(): string {
|
|
34
|
+
let out = "$";
|
|
35
|
+
for (const seg of this.segments) {
|
|
36
|
+
if (seg.kind === "index") {
|
|
37
|
+
out += `[${seg.value}]`;
|
|
38
|
+
} else if (IDENT_RE.test(seg.value)) {
|
|
39
|
+
out += `.${seg.value}`;
|
|
40
|
+
} else {
|
|
41
|
+
out += `['${seg.value.replace(/'/g, "\\'")}']`;
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
return out;
|
|
45
|
+
}
|
|
46
|
+
}
|