@metaobjectsdev/metadata 0.5.0 → 0.6.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/dist/attr-schema-validate.d.ts.map +1 -1
- package/dist/attr-schema-validate.js +66 -11
- package/dist/attr-schema-validate.js.map +1 -1
- package/dist/core/documentation/doc-constants.d.ts +11 -0
- package/dist/core/documentation/doc-constants.d.ts.map +1 -0
- package/dist/core/documentation/doc-constants.js +20 -0
- package/dist/core/documentation/doc-constants.js.map +1 -0
- package/dist/core/documentation/doc-provider.d.ts +3 -0
- package/dist/core/documentation/doc-provider.d.ts.map +1 -0
- package/dist/core/documentation/doc-provider.js +10 -0
- package/dist/core/documentation/doc-provider.js.map +1 -0
- package/dist/core/documentation/doc-schema.d.ts +8 -0
- package/dist/core/documentation/doc-schema.d.ts.map +1 -0
- package/dist/core/documentation/doc-schema.js +53 -0
- package/dist/core/documentation/doc-schema.js.map +1 -0
- package/dist/core/field/field-constants.d.ts +25 -1
- package/dist/core/field/field-constants.d.ts.map +1 -1
- package/dist/core/field/field-constants.js +32 -1
- package/dist/core/field/field-constants.js.map +1 -1
- package/dist/core/field/field-schema.d.ts +2 -0
- package/dist/core/field/field-schema.d.ts.map +1 -1
- package/dist/core/field/field-schema.js +20 -2
- package/dist/core/field/field-schema.js.map +1 -1
- package/dist/core/field/meta-field.d.ts +2 -1
- package/dist/core/field/meta-field.d.ts.map +1 -1
- package/dist/core/field/meta-field.js +6 -4
- package/dist/core/field/meta-field.js.map +1 -1
- package/dist/core/object/meta-object.d.ts.map +1 -1
- package/dist/core/object/meta-object.js +6 -5
- package/dist/core/object/meta-object.js.map +1 -1
- package/dist/core/parser-yaml.d.ts.map +1 -1
- package/dist/core/parser-yaml.js +9 -2
- package/dist/core/parser-yaml.js.map +1 -1
- package/dist/core/relationship/meta-relationship.d.ts +4 -0
- package/dist/core/relationship/meta-relationship.d.ts.map +1 -1
- package/dist/core/relationship/meta-relationship.js +11 -1
- package/dist/core/relationship/meta-relationship.js.map +1 -1
- package/dist/core/relationship/relationship-constants.d.ts +9 -0
- package/dist/core/relationship/relationship-constants.d.ts.map +1 -1
- package/dist/core/relationship/relationship-constants.js +15 -0
- package/dist/core/relationship/relationship-constants.js.map +1 -1
- package/dist/core/relationship/relationship-schema.d.ts.map +1 -1
- package/dist/core/relationship/relationship-schema.js +15 -1
- package/dist/core/relationship/relationship-schema.js.map +1 -1
- package/dist/core/yaml-desugar.d.ts +8 -1
- package/dist/core/yaml-desugar.d.ts.map +1 -1
- package/dist/core/yaml-desugar.js +166 -15
- package/dist/core/yaml-desugar.js.map +1 -1
- package/dist/core-types.d.ts.map +1 -1
- package/dist/core-types.js +28 -11
- package/dist/core-types.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 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +7 -1
- package/dist/index.js.map +1 -1
- package/dist/loader/meta-data-loader.d.ts.map +1 -1
- package/dist/loader/meta-data-loader.js +12 -1
- package/dist/loader/meta-data-loader.js.map +1 -1
- package/dist/loader/validation-passes.d.ts +2 -0
- package/dist/loader/validation-passes.d.ts.map +1 -1
- package/dist/loader/validation-passes.js +69 -3
- package/dist/loader/validation-passes.js.map +1 -1
- package/dist/naming.d.ts +3 -2
- package/dist/naming.d.ts.map +1 -1
- package/dist/naming.js +14 -12
- package/dist/naming.js.map +1 -1
- package/dist/parser-core.d.ts.map +1 -1
- package/dist/parser-core.js +91 -48
- package/dist/parser-core.js.map +1 -1
- package/dist/persistence/db/db-constants.d.ts +2 -2
- package/dist/persistence/db/db-constants.d.ts.map +1 -1
- package/dist/persistence/db/db-constants.js +2 -2
- package/dist/persistence/db/db-constants.js.map +1 -1
- package/dist/persistence/db/db-provider.d.ts.map +1 -1
- package/dist/persistence/db/db-provider.js +10 -13
- package/dist/persistence/db/db-provider.js.map +1 -1
- package/dist/persistence/db/db-schema.d.ts +2 -4
- package/dist/persistence/db/db-schema.d.ts.map +1 -1
- package/dist/persistence/db/db-schema.js +5 -13
- package/dist/persistence/db/db-schema.js.map +1 -1
- package/dist/persistence/origin/meta-origin.d.ts +10 -0
- package/dist/persistence/origin/meta-origin.d.ts.map +1 -1
- package/dist/persistence/origin/meta-origin.js +14 -1
- package/dist/persistence/origin/meta-origin.js.map +1 -1
- package/dist/persistence/origin/origin-constants.d.ts +3 -1
- package/dist/persistence/origin/origin-constants.d.ts.map +1 -1
- package/dist/persistence/origin/origin-constants.js +6 -0
- package/dist/persistence/origin/origin-constants.js.map +1 -1
- package/dist/persistence/origin/origin-schema.d.ts +1 -1
- package/dist/persistence/origin/origin-schema.d.ts.map +1 -1
- package/dist/persistence/origin/origin-schema.js +12 -2
- package/dist/persistence/origin/origin-schema.js.map +1 -1
- package/dist/persistence/source/meta-source.d.ts +11 -9
- package/dist/persistence/source/meta-source.d.ts.map +1 -1
- package/dist/persistence/source/meta-source.js +23 -15
- package/dist/persistence/source/meta-source.js.map +1 -1
- package/dist/persistence/source/source-constants.d.ts +32 -11
- package/dist/persistence/source/source-constants.d.ts.map +1 -1
- package/dist/persistence/source/source-constants.js +55 -16
- package/dist/persistence/source/source-constants.js.map +1 -1
- package/dist/persistence/source/source-schema.d.ts +4 -0
- package/dist/persistence/source/source-schema.d.ts.map +1 -0
- package/dist/persistence/source/source-schema.js +37 -0
- package/dist/persistence/source/source-schema.js.map +1 -0
- package/dist/persistence/source/validate-source-roles.d.ts +12 -0
- package/dist/persistence/source/validate-source-roles.d.ts.map +1 -0
- package/dist/persistence/source/validate-source-roles.js +38 -0
- package/dist/persistence/source/validate-source-roles.js.map +1 -0
- package/dist/registry.d.ts +13 -0
- package/dist/registry.d.ts.map +1 -1
- package/dist/registry.js +26 -0
- package/dist/registry.js.map +1 -1
- package/dist/shared/base-types.d.ts +2 -1
- package/dist/shared/base-types.d.ts.map +1 -1
- package/dist/shared/base-types.js +5 -2
- package/dist/shared/base-types.js.map +1 -1
- package/dist/template/meta-template.d.ts +13 -0
- package/dist/template/meta-template.d.ts.map +1 -0
- package/dist/template/meta-template.js +13 -0
- package/dist/template/meta-template.js.map +1 -0
- package/dist/template/template-constants.d.ts +17 -0
- package/dist/template/template-constants.d.ts.map +1 -0
- package/dist/template/template-constants.js +46 -0
- package/dist/template/template-constants.js.map +1 -0
- package/dist/template/template-schema.d.ts +3 -0
- package/dist/template/template-schema.d.ts.map +1 -0
- package/dist/template/template-schema.js +84 -0
- package/dist/template/template-schema.js.map +1 -0
- package/package.json +1 -1
- package/src/attr-schema-validate.ts +89 -9
- package/src/core/documentation/doc-constants.ts +22 -0
- package/src/core/documentation/doc-provider.ts +12 -0
- package/src/core/documentation/doc-schema.ts +64 -0
- package/src/core/field/field-constants.ts +41 -1
- package/src/core/field/field-schema.ts +25 -0
- package/src/core/field/meta-field.ts +6 -3
- package/src/core/object/meta-object.ts +6 -6
- package/src/core/parser-yaml.ts +11 -3
- package/src/core/relationship/meta-relationship.ts +14 -0
- package/src/core/relationship/relationship-constants.ts +20 -0
- package/src/core/relationship/relationship-schema.ts +18 -0
- package/src/core/yaml-desugar.ts +206 -24
- package/src/core-types.ts +31 -9
- package/src/errors.ts +21 -0
- package/src/index.ts +7 -0
- package/src/loader/meta-data-loader.ts +15 -1
- package/src/loader/validation-passes.ts +98 -1
- package/src/naming.ts +15 -13
- package/src/parser-core.ts +119 -73
- package/src/persistence/db/db-constants.ts +2 -2
- package/src/persistence/db/db-provider.ts +10 -16
- package/src/persistence/db/db-schema.ts +5 -15
- package/src/persistence/origin/meta-origin.ts +15 -0
- package/src/persistence/origin/origin-constants.ts +7 -0
- package/src/persistence/origin/origin-schema.ts +15 -1
- package/src/persistence/source/meta-source.ts +30 -17
- package/src/persistence/source/source-constants.ts +66 -17
- package/src/persistence/source/source-schema.ts +54 -0
- package/src/persistence/source/validate-source-roles.ts +53 -0
- package/src/registry.ts +31 -0
- package/src/shared/base-types.ts +5 -2
- package/src/template/meta-template.ts +12 -0
- package/src/template/template-constants.ts +53 -0
- package/src/template/template-schema.ts +106 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"meta-object.js","sourceRoot":"","sources":["../../../src/core/object/meta-object.ts"],"names":[],"mappings":"AAAA,0DAA0D;AAC1D,EAAE;AACF,wEAAwE;AACxE,gFAAgF;AAEhF,OAAO,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AACrD,OAAO,EACL,UAAU,EACV,aAAa,EACb,iBAAiB,EACjB,cAAc,EACd,WAAW,
|
|
1
|
+
{"version":3,"file":"meta-object.js","sourceRoot":"","sources":["../../../src/core/object/meta-object.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parser-yaml.d.ts","sourceRoot":"","sources":["../../src/core/parser-yaml.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAGnE,wBAAgB,SAAS,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,YAAY,GAAG,WAAW,
|
|
1
|
+
{"version":3,"file":"parser-yaml.d.ts","sourceRoot":"","sources":["../../src/core/parser-yaml.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAGnE,wBAAgB,SAAS,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,YAAY,GAAG,WAAW,CAgD1E"}
|
package/dist/core/parser-yaml.js
CHANGED
|
@@ -25,11 +25,18 @@ export function parseYaml(content, opts) {
|
|
|
25
25
|
// If the desugar could not produce a usable document at all, surface the
|
|
26
26
|
// first desugar error as a throw — parallels parseJson's top-level throws.
|
|
27
27
|
if (Object.keys(canonical).length === 0) {
|
|
28
|
-
|
|
28
|
+
const first = desugarErrors[0];
|
|
29
|
+
throw new ParseError(first.message, { ...errOpts(opts.sourceName), code: first.code ?? "ERR_MALFORMED_YAML" });
|
|
29
30
|
}
|
|
30
31
|
const result = buildTree(canonical, opts);
|
|
31
32
|
// Merge collected desugar errors ahead of buildTree's own collected errors.
|
|
32
|
-
|
|
33
|
+
// Each CollectedError carries its own stable code when set (e.g.
|
|
34
|
+
// ERR_YAML_COERCION from the D2 type-coercion guard); the malformed-document
|
|
35
|
+
// shape errors fall back to ERR_MALFORMED_YAML.
|
|
36
|
+
const desugarParseErrors = desugarErrors.map((e) => new ParseError(e.message, {
|
|
37
|
+
...errOpts(opts.sourceName),
|
|
38
|
+
code: e.code ?? "ERR_MALFORMED_YAML",
|
|
39
|
+
}));
|
|
33
40
|
return {
|
|
34
41
|
root: result.root,
|
|
35
42
|
warnings: result.warnings,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parser-yaml.js","sourceRoot":"","sources":["../../src/core/parser-yaml.ts"],"names":[],"mappings":"AAAA,yBAAyB;AACzB,EAAE;AACF,wEAAwE;AACxE,8EAA8E;AAC9E,6EAA6E;AAC7E,YAAY;AAEZ,OAAO,EAAE,KAAK,IAAI,aAAa,EAAE,MAAM,MAAM,CAAC;AAC9C,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAEvD,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAE5C,MAAM,UAAU,SAAS,CAAC,OAAe,EAAE,IAAkB;IAC3D,0DAA0D;IAC1D,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,wEAAwE;IACxE,+EAA+E;IAC/E,IAAI,MAAe,CAAC;IACpB,IAAI,CAAC;QACH,MAAM,GAAG,aAAa,CAAC,iBAAiB,CAAC,CAAC;IAC5C,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,qEAAqE;IACrE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,aAAa,EAAE,GAAG,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;IAE5E,yEAAyE;IACzE,2EAA2E;IAC3E,IAAI,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACxC,MAAM,IAAI,UAAU,CAClB,
|
|
1
|
+
{"version":3,"file":"parser-yaml.js","sourceRoot":"","sources":["../../src/core/parser-yaml.ts"],"names":[],"mappings":"AAAA,yBAAyB;AACzB,EAAE;AACF,wEAAwE;AACxE,8EAA8E;AAC9E,6EAA6E;AAC7E,YAAY;AAEZ,OAAO,EAAE,KAAK,IAAI,aAAa,EAAE,MAAM,MAAM,CAAC;AAC9C,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAEvD,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAE5C,MAAM,UAAU,SAAS,CAAC,OAAe,EAAE,IAAkB;IAC3D,0DAA0D;IAC1D,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,wEAAwE;IACxE,+EAA+E;IAC/E,IAAI,MAAe,CAAC;IACpB,IAAI,CAAC;QACH,MAAM,GAAG,aAAa,CAAC,iBAAiB,CAAC,CAAC;IAC5C,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,qEAAqE;IACrE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,aAAa,EAAE,GAAG,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;IAE5E,yEAAyE;IACzE,2EAA2E;IAC3E,IAAI,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACxC,MAAM,KAAK,GAAG,aAAa,CAAC,CAAC,CAAE,CAAC;QAChC,MAAM,IAAI,UAAU,CAClB,KAAK,CAAC,OAAO,EACb,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,IAAI,oBAAoB,EAAE,CAC1E,CAAC;IACJ,CAAC;IAED,MAAM,MAAM,GAAG,SAAS,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;IAE1C,4EAA4E;IAC5E,iEAAiE;IACjE,6EAA6E;IAC7E,gDAAgD;IAChD,MAAM,kBAAkB,GAAG,aAAa,CAAC,GAAG,CAC1C,CAAC,CAAC,EAAE,EAAE,CACJ,IAAI,UAAU,CAAC,CAAC,CAAC,OAAO,EAAE;QACxB,GAAG,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC;QAC3B,IAAI,EAAE,CAAC,CAAC,IAAI,IAAI,oBAAoB;KACrC,CAAC,CACL,CAAC;IACF,OAAO;QACL,IAAI,EAAE,MAAM,CAAC,IAAI;QACjB,QAAQ,EAAE,MAAM,CAAC,QAAQ;QACzB,MAAM,EAAE,CAAC,GAAG,kBAAkB,EAAE,GAAG,MAAM,CAAC,MAAM,CAAC;KAClD,CAAC;AACJ,CAAC"}
|
|
@@ -7,5 +7,9 @@ export declare class MetaRelationship extends MetaData {
|
|
|
7
7
|
get joinEntity(): string | undefined;
|
|
8
8
|
/** Join-table column names for N:M relationships. */
|
|
9
9
|
get joinFields(): string[];
|
|
10
|
+
/** Referential action on parent delete. Undefined when not explicitly set (default derives from subtype). */
|
|
11
|
+
get onDelete(): string | undefined;
|
|
12
|
+
/** Referential action on key update. Undefined when not explicitly set (default: cascade). */
|
|
13
|
+
get onUpdate(): string | undefined;
|
|
10
14
|
}
|
|
11
15
|
//# sourceMappingURL=meta-relationship.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"meta-relationship.d.ts","sourceRoot":"","sources":["../../../src/core/relationship/meta-relationship.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAC;
|
|
1
|
+
{"version":3,"file":"meta-relationship.d.ts","sourceRoot":"","sources":["../../../src/core/relationship/meta-relationship.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AAUrD,qBAAa,gBAAiB,SAAQ,QAAQ;IAC5C,IAAI,WAAW,IAAI,MAAM,GAAG,SAAS,CAGpC;IAED,6DAA6D;IAC7D,IAAI,SAAS,IAAI,MAAM,GAAG,SAAS,CAGlC;IAED,oDAAoD;IACpD,IAAI,UAAU,IAAI,MAAM,GAAG,SAAS,CAGnC;IAED,qDAAqD;IACrD,IAAI,UAAU,IAAI,MAAM,EAAE,CAGzB;IAED,6GAA6G;IAC7G,IAAI,QAAQ,IAAI,MAAM,GAAG,SAAS,CAGjC;IAED,8FAA8F;IAC9F,IAAI,QAAQ,IAAI,MAAM,GAAG,SAAS,CAGjC;CACF"}
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
//
|
|
3
3
|
// Extends MetaData directly: no model wrapper, no metaOf() indirection.
|
|
4
4
|
import { MetaData } from "../../shared/meta-data.js";
|
|
5
|
-
import { RELATIONSHIP_ATTR_CARDINALITY, RELATIONSHIP_ATTR_OBJECT_REF, RELATIONSHIP_ATTR_JOIN_ENTITY, RELATIONSHIP_ATTR_JOIN_FIELDS, } from "./relationship-constants.js";
|
|
5
|
+
import { RELATIONSHIP_ATTR_CARDINALITY, RELATIONSHIP_ATTR_OBJECT_REF, RELATIONSHIP_ATTR_JOIN_ENTITY, RELATIONSHIP_ATTR_JOIN_FIELDS, RELATIONSHIP_ATTR_ON_DELETE, RELATIONSHIP_ATTR_ON_UPDATE, } from "./relationship-constants.js";
|
|
6
6
|
export class MetaRelationship extends MetaData {
|
|
7
7
|
get cardinality() {
|
|
8
8
|
const v = this.ownAttr(RELATIONSHIP_ATTR_CARDINALITY);
|
|
@@ -23,5 +23,15 @@ export class MetaRelationship extends MetaData {
|
|
|
23
23
|
const f = this.ownAttr(RELATIONSHIP_ATTR_JOIN_FIELDS);
|
|
24
24
|
return Array.isArray(f) ? f : [];
|
|
25
25
|
}
|
|
26
|
+
/** Referential action on parent delete. Undefined when not explicitly set (default derives from subtype). */
|
|
27
|
+
get onDelete() {
|
|
28
|
+
const v = this.ownAttr(RELATIONSHIP_ATTR_ON_DELETE);
|
|
29
|
+
return typeof v === "string" && v !== "" ? v : undefined;
|
|
30
|
+
}
|
|
31
|
+
/** Referential action on key update. Undefined when not explicitly set (default: cascade). */
|
|
32
|
+
get onUpdate() {
|
|
33
|
+
const v = this.ownAttr(RELATIONSHIP_ATTR_ON_UPDATE);
|
|
34
|
+
return typeof v === "string" && v !== "" ? v : undefined;
|
|
35
|
+
}
|
|
26
36
|
}
|
|
27
37
|
//# sourceMappingURL=meta-relationship.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"meta-relationship.js","sourceRoot":"","sources":["../../../src/core/relationship/meta-relationship.ts"],"names":[],"mappings":"AAAA,sEAAsE;AACtE,EAAE;AACF,wEAAwE;AAExE,OAAO,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AACrD,OAAO,EACL,6BAA6B,EAC7B,4BAA4B,EAC5B,6BAA6B,EAC7B,6BAA6B,
|
|
1
|
+
{"version":3,"file":"meta-relationship.js","sourceRoot":"","sources":["../../../src/core/relationship/meta-relationship.ts"],"names":[],"mappings":"AAAA,sEAAsE;AACtE,EAAE;AACF,wEAAwE;AAExE,OAAO,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AACrD,OAAO,EACL,6BAA6B,EAC7B,4BAA4B,EAC5B,6BAA6B,EAC7B,6BAA6B,EAC7B,2BAA2B,EAC3B,2BAA2B,GAC5B,MAAM,6BAA6B,CAAC;AAErC,MAAM,OAAO,gBAAiB,SAAQ,QAAQ;IAC5C,IAAI,WAAW;QACb,MAAM,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,6BAA6B,CAAC,CAAC;QACtD,OAAO,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAC/C,CAAC;IAED,6DAA6D;IAC7D,IAAI,SAAS;QACX,MAAM,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,4BAA4B,CAAC,CAAC;QACrD,OAAO,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAC/C,CAAC;IAED,oDAAoD;IACpD,IAAI,UAAU;QACZ,MAAM,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,6BAA6B,CAAC,CAAC;QACtD,OAAO,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAC/C,CAAC;IAED,qDAAqD;IACrD,IAAI,UAAU;QACZ,MAAM,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,6BAA6B,CAAC,CAAC;QACtD,OAAO,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAE,CAAc,CAAC,CAAC,CAAC,EAAE,CAAC;IACjD,CAAC;IAED,6GAA6G;IAC7G,IAAI,QAAQ;QACV,MAAM,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,2BAA2B,CAAC,CAAC;QACpD,OAAO,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAC3D,CAAC;IAED,8FAA8F;IAC9F,IAAI,QAAQ;QACV,MAAM,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,2BAA2B,CAAC,CAAC;QACpD,OAAO,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAC3D,CAAC;CACF"}
|
|
@@ -11,4 +11,13 @@ export declare const CARDINALITY_ONE = "one";
|
|
|
11
11
|
export declare const CARDINALITY_MANY = "many";
|
|
12
12
|
export declare const CARDINALITY_VALUES: readonly ["one", "many"];
|
|
13
13
|
export type CardinalityValue = (typeof CARDINALITY_VALUES)[number];
|
|
14
|
+
export declare const RELATIONSHIP_ATTR_ON_DELETE = "onDelete";
|
|
15
|
+
export declare const RELATIONSHIP_ATTR_ON_UPDATE = "onUpdate";
|
|
16
|
+
/** Referential actions — the canonical cross-language set (kebab-case, no setDefault).
|
|
17
|
+
* MUST equal migrate-ts's FkAction union (server/typescript/packages/migrate-ts/src/types.ts). */
|
|
18
|
+
export declare const REFERENTIAL_ACTIONS: readonly ["cascade", "set-null", "restrict", "no-action"];
|
|
19
|
+
export type ReferentialAction = (typeof REFERENTIAL_ACTIONS)[number];
|
|
20
|
+
/** Default @onDelete per relationship subtype (rollout decided defaults). */
|
|
21
|
+
export declare const ON_DELETE_DEFAULT_BY_SUBTYPE: Readonly<Record<string, ReferentialAction>>;
|
|
22
|
+
export declare const ON_UPDATE_DEFAULT: ReferentialAction;
|
|
14
23
|
//# sourceMappingURL=relationship-constants.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"relationship-constants.d.ts","sourceRoot":"","sources":["../../../src/core/relationship/relationship-constants.ts"],"names":[],"mappings":"AAQA,eAAO,MAAM,gCAAgC,gBAAgB,CAAC;AAC9D,eAAO,MAAM,gCAAgC,gBAAgB,CAAC;AAC9D,eAAO,MAAM,gCAAgC,gBAAgB,CAAC;AAE9D,eAAO,MAAM,qBAAqB,gEAKxB,CAAC;AACX,MAAM,MAAM,mBAAmB,GAAG,CAAC,OAAO,qBAAqB,CAAC,CAAC,MAAM,CAAC,CAAC;AAMzE,eAAO,MAAM,6BAA6B,gBAAgB,CAAC;AAC3D,eAAO,MAAM,4BAA4B,cAAc,CAAC;AACxD,eAAO,MAAM,6BAA6B,eAAe,CAAC;AAC1D,eAAO,MAAM,6BAA6B,eAAe,CAAC;AAM1D,eAAO,MAAM,eAAe,QAAQ,CAAC;AACrC,eAAO,MAAM,gBAAgB,SAAS,CAAC;AAEvC,eAAO,MAAM,kBAAkB,0BAA+C,CAAC;AAC/E,MAAM,MAAM,gBAAgB,GAAG,CAAC,OAAO,kBAAkB,CAAC,CAAC,MAAM,CAAC,CAAC"}
|
|
1
|
+
{"version":3,"file":"relationship-constants.d.ts","sourceRoot":"","sources":["../../../src/core/relationship/relationship-constants.ts"],"names":[],"mappings":"AAQA,eAAO,MAAM,gCAAgC,gBAAgB,CAAC;AAC9D,eAAO,MAAM,gCAAgC,gBAAgB,CAAC;AAC9D,eAAO,MAAM,gCAAgC,gBAAgB,CAAC;AAE9D,eAAO,MAAM,qBAAqB,gEAKxB,CAAC;AACX,MAAM,MAAM,mBAAmB,GAAG,CAAC,OAAO,qBAAqB,CAAC,CAAC,MAAM,CAAC,CAAC;AAMzE,eAAO,MAAM,6BAA6B,gBAAgB,CAAC;AAC3D,eAAO,MAAM,4BAA4B,cAAc,CAAC;AACxD,eAAO,MAAM,6BAA6B,eAAe,CAAC;AAC1D,eAAO,MAAM,6BAA6B,eAAe,CAAC;AAM1D,eAAO,MAAM,eAAe,QAAQ,CAAC;AACrC,eAAO,MAAM,gBAAgB,SAAS,CAAC;AAEvC,eAAO,MAAM,kBAAkB,0BAA+C,CAAC;AAC/E,MAAM,MAAM,gBAAgB,GAAG,CAAC,OAAO,kBAAkB,CAAC,CAAC,MAAM,CAAC,CAAC;AAMnE,eAAO,MAAM,2BAA2B,aAAa,CAAC;AACtD,eAAO,MAAM,2BAA2B,aAAa,CAAC;AAEtD;mGACmG;AACnG,eAAO,MAAM,mBAAmB,2DAA4D,CAAC;AAC7F,MAAM,MAAM,iBAAiB,GAAG,CAAC,OAAO,mBAAmB,CAAC,CAAC,MAAM,CAAC,CAAC;AAErE,6EAA6E;AAC7E,eAAO,MAAM,4BAA4B,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAIpF,CAAC;AACF,eAAO,MAAM,iBAAiB,EAAE,iBAA6B,CAAC"}
|
|
@@ -25,4 +25,19 @@ export const RELATIONSHIP_ATTR_JOIN_FIELDS = "joinFields"; // N:M cardinality
|
|
|
25
25
|
export const CARDINALITY_ONE = "one";
|
|
26
26
|
export const CARDINALITY_MANY = "many";
|
|
27
27
|
export const CARDINALITY_VALUES = [CARDINALITY_ONE, CARDINALITY_MANY];
|
|
28
|
+
// ---------------------------------------------------------------------------
|
|
29
|
+
// Referential action attrs (@onDelete / @onUpdate)
|
|
30
|
+
// ---------------------------------------------------------------------------
|
|
31
|
+
export const RELATIONSHIP_ATTR_ON_DELETE = "onDelete";
|
|
32
|
+
export const RELATIONSHIP_ATTR_ON_UPDATE = "onUpdate";
|
|
33
|
+
/** Referential actions — the canonical cross-language set (kebab-case, no setDefault).
|
|
34
|
+
* MUST equal migrate-ts's FkAction union (server/typescript/packages/migrate-ts/src/types.ts). */
|
|
35
|
+
export const REFERENTIAL_ACTIONS = ["cascade", "set-null", "restrict", "no-action"];
|
|
36
|
+
/** Default @onDelete per relationship subtype (rollout decided defaults). */
|
|
37
|
+
export const ON_DELETE_DEFAULT_BY_SUBTYPE = {
|
|
38
|
+
[RELATIONSHIP_SUBTYPE_COMPOSITION]: "cascade",
|
|
39
|
+
[RELATIONSHIP_SUBTYPE_AGGREGATION]: "set-null",
|
|
40
|
+
[RELATIONSHIP_SUBTYPE_ASSOCIATION]: "restrict",
|
|
41
|
+
};
|
|
42
|
+
export const ON_UPDATE_DEFAULT = "cascade";
|
|
28
43
|
//# sourceMappingURL=relationship-constants.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"relationship-constants.js","sourceRoot":"","sources":["../../../src/core/relationship/relationship-constants.ts"],"names":[],"mappings":"AAAA,gFAAgF;AAEhF,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAE1D,8EAA8E;AAC9E,4BAA4B;AAC5B,8EAA8E;AAE9E,MAAM,CAAC,MAAM,gCAAgC,GAAG,aAAa,CAAC;AAC9D,MAAM,CAAC,MAAM,gCAAgC,GAAG,aAAa,CAAC;AAC9D,MAAM,CAAC,MAAM,gCAAgC,GAAG,aAAa,CAAC;AAE9D,MAAM,CAAC,MAAM,qBAAqB,GAAG;IACnC,YAAY;IACZ,gCAAgC;IAChC,gCAAgC;IAChC,gCAAgC;CACxB,CAAC;AAGX,8EAA8E;AAC9E,qBAAqB;AACrB,8EAA8E;AAE9E,MAAM,CAAC,MAAM,6BAA6B,GAAG,aAAa,CAAC;AAC3D,MAAM,CAAC,MAAM,4BAA4B,GAAG,WAAW,CAAC;AACxD,MAAM,CAAC,MAAM,6BAA6B,GAAG,YAAY,CAAC,CAAI,kBAAkB;AAChF,MAAM,CAAC,MAAM,6BAA6B,GAAG,YAAY,CAAC,CAAI,kBAAkB;AAEhF,8EAA8E;AAC9E,sEAAsE;AACtE,8EAA8E;AAE9E,MAAM,CAAC,MAAM,eAAe,GAAG,KAAK,CAAC;AACrC,MAAM,CAAC,MAAM,gBAAgB,GAAG,MAAM,CAAC;AAEvC,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,eAAe,EAAE,gBAAgB,CAAU,CAAC"}
|
|
1
|
+
{"version":3,"file":"relationship-constants.js","sourceRoot":"","sources":["../../../src/core/relationship/relationship-constants.ts"],"names":[],"mappings":"AAAA,gFAAgF;AAEhF,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAE1D,8EAA8E;AAC9E,4BAA4B;AAC5B,8EAA8E;AAE9E,MAAM,CAAC,MAAM,gCAAgC,GAAG,aAAa,CAAC;AAC9D,MAAM,CAAC,MAAM,gCAAgC,GAAG,aAAa,CAAC;AAC9D,MAAM,CAAC,MAAM,gCAAgC,GAAG,aAAa,CAAC;AAE9D,MAAM,CAAC,MAAM,qBAAqB,GAAG;IACnC,YAAY;IACZ,gCAAgC;IAChC,gCAAgC;IAChC,gCAAgC;CACxB,CAAC;AAGX,8EAA8E;AAC9E,qBAAqB;AACrB,8EAA8E;AAE9E,MAAM,CAAC,MAAM,6BAA6B,GAAG,aAAa,CAAC;AAC3D,MAAM,CAAC,MAAM,4BAA4B,GAAG,WAAW,CAAC;AACxD,MAAM,CAAC,MAAM,6BAA6B,GAAG,YAAY,CAAC,CAAI,kBAAkB;AAChF,MAAM,CAAC,MAAM,6BAA6B,GAAG,YAAY,CAAC,CAAI,kBAAkB;AAEhF,8EAA8E;AAC9E,sEAAsE;AACtE,8EAA8E;AAE9E,MAAM,CAAC,MAAM,eAAe,GAAG,KAAK,CAAC;AACrC,MAAM,CAAC,MAAM,gBAAgB,GAAG,MAAM,CAAC;AAEvC,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,eAAe,EAAE,gBAAgB,CAAU,CAAC;AAG/E,8EAA8E;AAC9E,mDAAmD;AACnD,8EAA8E;AAE9E,MAAM,CAAC,MAAM,2BAA2B,GAAG,UAAU,CAAC;AACtD,MAAM,CAAC,MAAM,2BAA2B,GAAG,UAAU,CAAC;AAEtD;mGACmG;AACnG,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,SAAS,EAAE,UAAU,EAAE,UAAU,EAAE,WAAW,CAAU,CAAC;AAG7F,6EAA6E;AAC7E,MAAM,CAAC,MAAM,4BAA4B,GAAgD;IACvF,CAAC,gCAAgC,CAAC,EAAE,SAAS;IAC7C,CAAC,gCAAgC,CAAC,EAAE,UAAU;IAC9C,CAAC,gCAAgC,CAAC,EAAE,UAAU;CAC/C,CAAC;AACF,MAAM,CAAC,MAAM,iBAAiB,GAAsB,SAAS,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"relationship-schema.d.ts","sourceRoot":"","sources":["../../../src/core/relationship/relationship-schema.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"relationship-schema.d.ts","sourceRoot":"","sources":["../../../src/core/relationship/relationship-schema.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAepD,kDAAkD;AAClD,eAAO,MAAM,iBAAiB,EAAE,UAAU,EA+CzC,CAAC"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
// Relationship attribute schemas — attrs common to every relationship subtype.
|
|
2
2
|
// Consumed by registerCoreTypes().
|
|
3
3
|
import { ATTR_SUBTYPE_STRING, ATTR_SUBTYPE_STRINGARRAY, } from "../attr/attr-constants.js";
|
|
4
|
-
import { RELATIONSHIP_ATTR_CARDINALITY, RELATIONSHIP_ATTR_OBJECT_REF, RELATIONSHIP_ATTR_JOIN_ENTITY, RELATIONSHIP_ATTR_JOIN_FIELDS, } from "./relationship-constants.js";
|
|
4
|
+
import { RELATIONSHIP_ATTR_CARDINALITY, RELATIONSHIP_ATTR_OBJECT_REF, RELATIONSHIP_ATTR_JOIN_ENTITY, RELATIONSHIP_ATTR_JOIN_FIELDS, RELATIONSHIP_ATTR_ON_DELETE, RELATIONSHIP_ATTR_ON_UPDATE, REFERENTIAL_ACTIONS, } from "./relationship-constants.js";
|
|
5
5
|
/** Attrs common to every relationship subtype. */
|
|
6
6
|
export const relationshipAttrs = [
|
|
7
7
|
{
|
|
@@ -33,5 +33,19 @@ export const relationshipAttrs = [
|
|
|
33
33
|
required: false,
|
|
34
34
|
description: "Join-table column names for N:M relationships.",
|
|
35
35
|
},
|
|
36
|
+
{
|
|
37
|
+
name: RELATIONSHIP_ATTR_ON_DELETE,
|
|
38
|
+
valueType: ATTR_SUBTYPE_STRING,
|
|
39
|
+
required: false,
|
|
40
|
+
allowedValues: [...REFERENTIAL_ACTIONS],
|
|
41
|
+
description: "Referential action on parent delete. Default derives from subtype (composition→cascade, aggregation→set-null, association→restrict).",
|
|
42
|
+
},
|
|
43
|
+
{
|
|
44
|
+
name: RELATIONSHIP_ATTR_ON_UPDATE,
|
|
45
|
+
valueType: ATTR_SUBTYPE_STRING,
|
|
46
|
+
required: false,
|
|
47
|
+
allowedValues: [...REFERENTIAL_ACTIONS],
|
|
48
|
+
description: "Referential action on key update. Default cascade.",
|
|
49
|
+
},
|
|
36
50
|
];
|
|
37
51
|
//# sourceMappingURL=relationship-schema.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"relationship-schema.js","sourceRoot":"","sources":["../../../src/core/relationship/relationship-schema.ts"],"names":[],"mappings":"AAAA,+EAA+E;AAC/E,mCAAmC;AAGnC,OAAO,EACL,mBAAmB,EACnB,wBAAwB,GACzB,MAAM,2BAA2B,CAAC;AACnC,OAAO,EACL,6BAA6B,EAC7B,4BAA4B,EAC5B,6BAA6B,EAC7B,6BAA6B,
|
|
1
|
+
{"version":3,"file":"relationship-schema.js","sourceRoot":"","sources":["../../../src/core/relationship/relationship-schema.ts"],"names":[],"mappings":"AAAA,+EAA+E;AAC/E,mCAAmC;AAGnC,OAAO,EACL,mBAAmB,EACnB,wBAAwB,GACzB,MAAM,2BAA2B,CAAC;AACnC,OAAO,EACL,6BAA6B,EAC7B,4BAA4B,EAC5B,6BAA6B,EAC7B,6BAA6B,EAC7B,2BAA2B,EAC3B,2BAA2B,EAC3B,mBAAmB,GACpB,MAAM,6BAA6B,CAAC;AAErC,kDAAkD;AAClD,MAAM,CAAC,MAAM,iBAAiB,GAAiB;IAC7C;QACE,IAAI,EAAE,6BAA6B;QACnC,SAAS,EAAE,mBAAmB;QAC9B,QAAQ,EAAE,KAAK;QACf,0EAA0E;QAC1E,wEAAwE;QACxE,oEAAoE;QACpE,0EAA0E;QAC1E,6EAA6E;QAC7E,WAAW,EACT,6EAA6E;KAChF;IACD;QACE,IAAI,EAAE,4BAA4B;QAClC,SAAS,EAAE,mBAAmB;QAC9B,QAAQ,EAAE,KAAK;QACf,WAAW,EACT,qHAAqH;KACxH;IACD;QACE,IAAI,EAAE,6BAA6B;QACnC,SAAS,EAAE,mBAAmB;QAC9B,QAAQ,EAAE,KAAK;QACf,WAAW,EAAE,+CAA+C;KAC7D;IACD;QACE,IAAI,EAAE,6BAA6B;QACnC,SAAS,EAAE,wBAAwB;QACnC,QAAQ,EAAE,KAAK;QACf,WAAW,EAAE,gDAAgD;KAC9D;IACD;QACE,IAAI,EAAE,2BAA2B;QACjC,SAAS,EAAE,mBAAmB;QAC9B,QAAQ,EAAE,KAAK;QACf,aAAa,EAAE,CAAC,GAAG,mBAAmB,CAAC;QACvC,WAAW,EACT,sIAAsI;KACzI;IACD;QACE,IAAI,EAAE,2BAA2B;QACjC,SAAS,EAAE,mBAAmB;QAC9B,QAAQ,EAAE,KAAK;QACf,aAAa,EAAE,CAAC,GAAG,mBAAmB,CAAC;QACvC,WAAW,EAAE,oDAAoD;KAClE;CACF,CAAC"}
|
|
@@ -1,9 +1,16 @@
|
|
|
1
1
|
import type { TypeRegistry } from "../registry.js";
|
|
2
|
+
import type { ErrorCode } from "../errors.js";
|
|
3
|
+
/** A collected desugar problem — message plus optional stable error code. */
|
|
4
|
+
export interface CollectedError {
|
|
5
|
+
message: string;
|
|
6
|
+
/** Optional stable code; absent values map to ERR_MALFORMED_YAML in parser-yaml.ts. */
|
|
7
|
+
code?: ErrorCode;
|
|
8
|
+
}
|
|
2
9
|
export interface DesugarResult {
|
|
3
10
|
/** The canonical-shaped object; `{}` when the document was unusable. */
|
|
4
11
|
canonical: Record<string, unknown>;
|
|
5
12
|
/** Collected desugar problems (never thrown). */
|
|
6
|
-
errors:
|
|
13
|
+
errors: CollectedError[];
|
|
7
14
|
}
|
|
8
15
|
/** Desugar a parsed-YAML authoring document into a canonical-shaped object. */
|
|
9
16
|
export declare function desugar(input: unknown, registry: TypeRegistry): DesugarResult;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"yaml-desugar.d.ts","sourceRoot":"","sources":["../../src/core/yaml-desugar.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"yaml-desugar.d.ts","sourceRoot":"","sources":["../../src/core/yaml-desugar.ts"],"names":[],"mappings":"AA8BA,OAAO,KAAK,EAAE,YAAY,EAAc,MAAM,gBAAgB,CAAC;AAC/D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAqB9C,6EAA6E;AAC7E,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,MAAM,CAAC;IAChB,uFAAuF;IACvF,IAAI,CAAC,EAAE,SAAS,CAAC;CAClB;AAED,MAAM,WAAW,aAAa;IAC5B,wEAAwE;IACxE,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACnC,iDAAiD;IACjD,MAAM,EAAE,cAAc,EAAE,CAAC;CAC1B;AAED,+EAA+E;AAC/E,wBAAgB,OAAO,CAAC,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,YAAY,GAAG,aAAa,CAI7E"}
|
|
@@ -2,17 +2,33 @@
|
|
|
2
2
|
//
|
|
3
3
|
// desugar() turns the sugared authoring object (from yaml.parse) into the
|
|
4
4
|
// canonical-shaped object that buildTree (parser-core.ts) consumes. It applies
|
|
5
|
-
// the
|
|
5
|
+
// the five format-spec sugar rules (ADR-0006):
|
|
6
6
|
// 1. Fused key, subType omittable — a bare `type` key resolves to the type's
|
|
7
7
|
// registry default subType.
|
|
8
8
|
// 2. Scalar-or-map body — a scalar body becomes { name: <scalar> }.
|
|
9
9
|
// 3. Omit empties — absent keys stay absent; the desugar invents nothing.
|
|
10
10
|
// 4. `[]` arrays — a trailing `[]` on the key strips to isArray: true.
|
|
11
|
+
// 5. Sigil-free attributes (ADR-0006 D1) — every body key not in
|
|
12
|
+
// RESERVED_KEYS is treated as an inline attribute and re-prefixed with `@`
|
|
13
|
+
// when lowering to canonical JSON. Keys already prefixed with `@` are
|
|
14
|
+
// left as-is (backward-compat). Reserved structural keywords (name,
|
|
15
|
+
// package, extends, abstract, overlay, isArray, children, value) stay
|
|
16
|
+
// bare. Note: an already-`@`-prefixed reserved word remains an error
|
|
17
|
+
// downstream — parser-core's ERR_RESERVED_ATTR check fires.
|
|
11
18
|
//
|
|
12
|
-
//
|
|
13
|
-
//
|
|
14
|
-
//
|
|
15
|
-
|
|
19
|
+
// In addition, the desugar runs the ADR-0006 D2 type-coercion guard: for every
|
|
20
|
+
// inline attr whose owning (type, subType) has a declared schema, if the raw
|
|
21
|
+
// JS value's type does not match the declared valueType AND the JS value is
|
|
22
|
+
// one of YAML 1.2's silently coerced shapes (boolean/number/null), the
|
|
23
|
+
// desugar collects an ERR_YAML_COERCION error telling the author to quote the
|
|
24
|
+
// value. The check protects against the classic YAML footgun (e.g. an unquoted
|
|
25
|
+
// `column: TRUE` becoming the boolean `true` instead of the string "TRUE").
|
|
26
|
+
//
|
|
27
|
+
// Pure and total: it never throws. Malformed fragments are collected as
|
|
28
|
+
// CollectedError entries (a string message + optional stable error code) and a
|
|
29
|
+
// safe placeholder is substituted so buildTree does not double-report.
|
|
30
|
+
import { ATTR_PREFIX, RESERVED_KEYS, RESERVED_KEY_CHILDREN, RESERVED_KEY_NAME, RESERVED_KEY_IS_ARRAY, TYPE_SUBTYPE_SEPARATOR, } from "../shared/structural.js";
|
|
31
|
+
import { ATTR_SUBTYPE_STRING, ATTR_SUBTYPE_CLASS, ATTR_SUBTYPE_INT, ATTR_SUBTYPE_LONG, ATTR_SUBTYPE_DOUBLE, ATTR_SUBTYPE_BOOLEAN, ATTR_SUBTYPE_STRINGARRAY, } from "./attr/attr-constants.js";
|
|
16
32
|
const ARRAY_SUFFIX = "[]";
|
|
17
33
|
/** Desugar a parsed-YAML authoring document into a canonical-shaped object. */
|
|
18
34
|
export function desugar(input, registry) {
|
|
@@ -25,12 +41,14 @@ export function desugar(input, registry) {
|
|
|
25
41
|
// node (the caller substitutes a placeholder).
|
|
26
42
|
function desugarNode(input, registry, errors, path) {
|
|
27
43
|
if (typeof input !== "object" || input === null || Array.isArray(input)) {
|
|
28
|
-
errors.push(`Node at ${path} must be a mapping with one type key`);
|
|
44
|
+
errors.push({ message: `Node at ${path} must be a mapping with one type key` });
|
|
29
45
|
return undefined;
|
|
30
46
|
}
|
|
31
47
|
const entries = Object.keys(input);
|
|
32
48
|
if (entries.length !== 1) {
|
|
33
|
-
errors.push(
|
|
49
|
+
errors.push({
|
|
50
|
+
message: `Node at ${path} must have exactly one type key (found: ${entries.length === 0 ? "none" : entries.join(", ")})`,
|
|
51
|
+
});
|
|
34
52
|
return undefined;
|
|
35
53
|
}
|
|
36
54
|
const rawKey = entries[0];
|
|
@@ -45,7 +63,7 @@ function desugarNode(input, registry, errors, path) {
|
|
|
45
63
|
// Rule 1: a bare `type` key → the type's registry default subType.
|
|
46
64
|
const canonicalKey = resolveKey(key, registry, errors, path);
|
|
47
65
|
// Rule 2: a scalar body → { name: <scalar> }.
|
|
48
|
-
const body = desugarBody(rawBody, errors, path);
|
|
66
|
+
const body = desugarBody(rawBody, registry, canonicalKey, errors, path);
|
|
49
67
|
// Rule 4 (cont.): stamp isArray onto the canonical body.
|
|
50
68
|
if (isArray)
|
|
51
69
|
body[RESERVED_KEY_IS_ARRAY] = true;
|
|
@@ -71,14 +89,24 @@ function resolveKey(key, registry, errors, path) {
|
|
|
71
89
|
return key; // already fused
|
|
72
90
|
const subType = registry.defaultSubTypeOf(key);
|
|
73
91
|
if (subType === undefined) {
|
|
74
|
-
errors.push(
|
|
75
|
-
`type '${key}'
|
|
92
|
+
errors.push({
|
|
93
|
+
message: `Cannot resolve subType for bare type key '${key}' at ${path} — ` +
|
|
94
|
+
`type '${key}' has no default subType; write the full 'type.subType'`,
|
|
95
|
+
});
|
|
76
96
|
return key; // pass through; buildTree reports the unknown type
|
|
77
97
|
}
|
|
78
98
|
return `${key}${TYPE_SUBTYPE_SEPARATOR}${subType}`;
|
|
79
99
|
}
|
|
80
|
-
// Rule 2 — normalize a node body into a canonical mapping.
|
|
81
|
-
|
|
100
|
+
// Rule 2 + 5 — normalize a node body into a canonical mapping. Reserved
|
|
101
|
+
// structural keys stay bare; every other key is treated as an inline attribute
|
|
102
|
+
// and `@`-prefixed (Rule 5 / ADR-0006 D1). Keys already starting with `@` are
|
|
103
|
+
// kept as-authored so the awkward "@column: foo" form remains accepted.
|
|
104
|
+
//
|
|
105
|
+
// Also runs the D2 type-coercion guard: for each inline attr that the owning
|
|
106
|
+
// (type, subType) declares with a typed `valueType`, if the raw JS value's
|
|
107
|
+
// type was silently coerced by YAML 1.2 to something incompatible (e.g. a
|
|
108
|
+
// `boolean` for a `string`-declared attr), an ERR_YAML_COERCION is collected.
|
|
109
|
+
function desugarBody(rawBody, registry, canonicalKey, errors, path) {
|
|
82
110
|
if (typeof rawBody === "string" ||
|
|
83
111
|
typeof rawBody === "number" ||
|
|
84
112
|
typeof rawBody === "boolean") {
|
|
@@ -89,11 +117,134 @@ function desugarBody(rawBody, errors, path) {
|
|
|
89
117
|
return {};
|
|
90
118
|
}
|
|
91
119
|
if (Array.isArray(rawBody)) {
|
|
92
|
-
errors.push(
|
|
120
|
+
errors.push({
|
|
121
|
+
message: `Node body at ${path} must be a scalar or mapping, not a list`,
|
|
122
|
+
});
|
|
93
123
|
return {};
|
|
94
124
|
}
|
|
95
125
|
// A mapping — shallow-copy so isArray / children replacement do not mutate
|
|
96
|
-
// the caller's parsed-YAML object
|
|
97
|
-
|
|
126
|
+
// the caller's parsed-YAML object, AND apply Rule 5 (sigil-free attrs) +
|
|
127
|
+
// Rule D2 (type-coercion guard).
|
|
128
|
+
const src = rawBody;
|
|
129
|
+
const out = {};
|
|
130
|
+
const schemaIndex = attrSchemaIndex(registry, canonicalKey);
|
|
131
|
+
for (const key of Object.keys(src)) {
|
|
132
|
+
if (RESERVED_KEYS.has(key) || key.startsWith(ATTR_PREFIX)) {
|
|
133
|
+
out[key] = src[key];
|
|
134
|
+
// D2 also applies to author-written @-keys (the awkward form).
|
|
135
|
+
const attrName = key.startsWith(ATTR_PREFIX) ? key.slice(ATTR_PREFIX.length) : "";
|
|
136
|
+
if (attrName !== "" && !RESERVED_KEYS.has(attrName)) {
|
|
137
|
+
checkCoercion(attrName, src[key], schemaIndex, errors, path);
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
else {
|
|
141
|
+
out[`${ATTR_PREFIX}${key}`] = src[key];
|
|
142
|
+
checkCoercion(key, src[key], schemaIndex, errors, path);
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
return out;
|
|
146
|
+
}
|
|
147
|
+
// ---------------------------------------------------------------------------
|
|
148
|
+
// D2 — YAML type-coercion guard
|
|
149
|
+
// ---------------------------------------------------------------------------
|
|
150
|
+
// Build a name → AttrSchema map for the given canonical key (type.subType).
|
|
151
|
+
// Returns undefined when the key has no declared attrs (open schema).
|
|
152
|
+
function attrSchemaIndex(registry, canonicalKey) {
|
|
153
|
+
// canonicalKey is "type.subType" — split on the FIRST dot only so a subType
|
|
154
|
+
// that happens to contain a dot still works.
|
|
155
|
+
const dot = canonicalKey.indexOf(TYPE_SUBTYPE_SEPARATOR);
|
|
156
|
+
if (dot < 0)
|
|
157
|
+
return undefined;
|
|
158
|
+
const type = canonicalKey.slice(0, dot);
|
|
159
|
+
const subType = canonicalKey.slice(dot + 1);
|
|
160
|
+
const schema = registry.attrsOf(type, subType);
|
|
161
|
+
if (schema.length === 0)
|
|
162
|
+
return undefined;
|
|
163
|
+
const idx = new Map();
|
|
164
|
+
for (const spec of schema)
|
|
165
|
+
idx.set(spec.name, spec);
|
|
166
|
+
return idx;
|
|
167
|
+
}
|
|
168
|
+
// Check a single attr value against its declared schema's `valueType`. Emits
|
|
169
|
+
// an ERR_YAML_COERCION when the JS type was silently changed by YAML 1.2's
|
|
170
|
+
// core schema (boolean/number/null where a string/stringarray was declared,
|
|
171
|
+
// or vice versa for booleans/numbers).
|
|
172
|
+
function checkCoercion(attrName, raw, schemaIndex, errors, path) {
|
|
173
|
+
if (schemaIndex === undefined)
|
|
174
|
+
return;
|
|
175
|
+
const spec = schemaIndex.get(attrName);
|
|
176
|
+
if (spec === undefined || spec.valueType === undefined)
|
|
177
|
+
return;
|
|
178
|
+
switch (spec.valueType) {
|
|
179
|
+
case ATTR_SUBTYPE_STRING:
|
|
180
|
+
case ATTR_SUBTYPE_CLASS:
|
|
181
|
+
if (typeof raw !== "string")
|
|
182
|
+
emitCoercion(attrName, raw, "string", errors, path);
|
|
183
|
+
return;
|
|
184
|
+
case ATTR_SUBTYPE_BOOLEAN:
|
|
185
|
+
if (typeof raw !== "boolean")
|
|
186
|
+
emitCoercion(attrName, raw, "boolean", errors, path);
|
|
187
|
+
return;
|
|
188
|
+
case ATTR_SUBTYPE_INT:
|
|
189
|
+
case ATTR_SUBTYPE_LONG:
|
|
190
|
+
case ATTR_SUBTYPE_DOUBLE:
|
|
191
|
+
if (typeof raw !== "number")
|
|
192
|
+
emitCoercion(attrName, raw, "number", errors, path);
|
|
193
|
+
return;
|
|
194
|
+
case ATTR_SUBTYPE_STRINGARRAY:
|
|
195
|
+
// A bare string at the value position is the legitimate one-element
|
|
196
|
+
// authoring shorthand for a string-array attr (StringArrayAttr.coerce
|
|
197
|
+
// wraps it into a one-element array). It is NOT a coercion. A
|
|
198
|
+
// non-string non-array scalar (boolean/number/null), however, is.
|
|
199
|
+
if (typeof raw === "string")
|
|
200
|
+
return;
|
|
201
|
+
if (!Array.isArray(raw)) {
|
|
202
|
+
emitCoercion(attrName, raw, "string-array (or single string)", errors, path);
|
|
203
|
+
return;
|
|
204
|
+
}
|
|
205
|
+
// For an array, check every element. A non-string element is a YAML
|
|
206
|
+
// coercion (e.g. unquoted `true` in a string-array list).
|
|
207
|
+
for (let i = 0; i < raw.length; i++) {
|
|
208
|
+
if (typeof raw[i] !== "string") {
|
|
209
|
+
emitCoercion(`${attrName}[${i}]`, raw[i], "string (in string-array)", errors, path);
|
|
210
|
+
}
|
|
211
|
+
}
|
|
212
|
+
return;
|
|
213
|
+
default:
|
|
214
|
+
// Object-shaped attrs (properties, filter) — accept any object/array,
|
|
215
|
+
// no YAML coercion path applies.
|
|
216
|
+
return;
|
|
217
|
+
}
|
|
218
|
+
}
|
|
219
|
+
// Build the "quote this value" error. The shape is intentionally explicit so
|
|
220
|
+
// AI authors can act on it: it identifies the attr, the (coerced) JS value,
|
|
221
|
+
// its JS type, the declared expected type, and a one-line fix hint.
|
|
222
|
+
function emitCoercion(attrName, raw, expected, errors, path) {
|
|
223
|
+
const actualType = coercedTypeName(raw);
|
|
224
|
+
const literal = literalRepr(raw);
|
|
225
|
+
errors.push({
|
|
226
|
+
message: `Attribute '@${attrName}' at ${path}: expected ${expected} but got ${actualType} (${literal}). ` +
|
|
227
|
+
`YAML 1.2 silently coerced an unquoted value — quote it in YAML: ` +
|
|
228
|
+
`'@${attrName}: "${literal}"' not '@${attrName}: ${literal}'.`,
|
|
229
|
+
code: "ERR_YAML_COERCION",
|
|
230
|
+
});
|
|
231
|
+
}
|
|
232
|
+
function coercedTypeName(raw) {
|
|
233
|
+
if (raw === null)
|
|
234
|
+
return "null";
|
|
235
|
+
if (Array.isArray(raw))
|
|
236
|
+
return "array";
|
|
237
|
+
return typeof raw;
|
|
238
|
+
}
|
|
239
|
+
function literalRepr(raw) {
|
|
240
|
+
if (raw === null)
|
|
241
|
+
return "null";
|
|
242
|
+
if (typeof raw === "boolean")
|
|
243
|
+
return raw ? "true" : "false";
|
|
244
|
+
if (typeof raw === "number")
|
|
245
|
+
return String(raw);
|
|
246
|
+
if (typeof raw === "string")
|
|
247
|
+
return raw;
|
|
248
|
+
return JSON.stringify(raw);
|
|
98
249
|
}
|
|
99
250
|
//# sourceMappingURL=yaml-desugar.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"yaml-desugar.js","sourceRoot":"","sources":["../../src/core/yaml-desugar.ts"],"names":[],"mappings":"AAAA,sCAAsC;AACtC,EAAE;AACF,0EAA0E;AAC1E,+EAA+E;AAC/E
|
|
1
|
+
{"version":3,"file":"yaml-desugar.js","sourceRoot":"","sources":["../../src/core/yaml-desugar.ts"],"names":[],"mappings":"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"}
|
package/dist/core-types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"core-types.d.ts","sourceRoot":"","sources":["../src/core-types.ts"],"names":[],"mappings":"AACA,OAAO,EAAgE,YAAY,EAAE,MAAM,eAAe,CAAC;AAC3G,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"core-types.d.ts","sourceRoot":"","sources":["../src/core-types.ts"],"names":[],"mappings":"AACA,OAAO,EAAgE,YAAY,EAAE,MAAM,eAAe,CAAC;AAC3G,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AAa1D,OAAO,sCAAsC,CAAC;AAC9C,OAAO,iCAAiC,CAAC;AACzC,OAAO,qCAAqC,CAAC;AAsT7C;;;;GAIG;AACH,eAAO,MAAM,iBAAiB,EAAE,oBAM/B,CAAC;AAEF;yDACyD;AACzD,eAAO,MAAM,aAAa,EAAE,SAAS,oBAAoB,EAAiD,CAAC;AAE3G;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,YAAY,GAAG,IAAI,CAE9D"}
|
package/dist/core-types.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
// registerCoreTypes() — Java's 7 base types (plus metadata wrapper) and their subtypes
|
|
2
2
|
import { TypeId, TypeRegistry } from "./registry.js";
|
|
3
3
|
import { dbProvider } from "./persistence/db/db-provider.js";
|
|
4
|
+
import { docProvider } from "./core/documentation/doc-provider.js";
|
|
4
5
|
import {} from "./data-type.js";
|
|
5
6
|
import { MetaRoot } from "./shared/meta-root.js";
|
|
6
7
|
import { MetaObject } from "./core/object/meta-object.js";
|
|
@@ -19,8 +20,8 @@ import { MetaIdentity, MetaPrimaryIdentity, MetaSecondaryIdentity, MetaReference
|
|
|
19
20
|
import { MetaRelationship } from "./core/relationship/meta-relationship.js";
|
|
20
21
|
import { MetaLayout } from "./presentation/layout/meta-layout.js";
|
|
21
22
|
import { MetaSource } from "./persistence/source/meta-source.js";
|
|
22
|
-
import { MetaOrigin, MetaPassthroughOrigin, MetaAggregateOrigin } from "./persistence/origin/meta-origin.js";
|
|
23
|
-
import { commonFieldAttrs, currencyFieldAttr } from "./core/field/field-schema.js";
|
|
23
|
+
import { MetaOrigin, MetaPassthroughOrigin, MetaAggregateOrigin, MetaCollectionOrigin } from "./persistence/origin/meta-origin.js";
|
|
24
|
+
import { commonFieldAttrs, currencyFieldAttr, enumFieldAttr } from "./core/field/field-schema.js";
|
|
24
25
|
import { objectAttrs } from "./core/object/object-schema.js";
|
|
25
26
|
import { relationshipAttrs } from "./core/relationship/relationship-schema.js";
|
|
26
27
|
import { identityFieldsAttr, IDENTITY_ATTRS_MAP } from "./core/identity/identity-schema.js";
|
|
@@ -28,10 +29,13 @@ import { VALIDATOR_ATTRS_MAP } from "./core/validator/validator-schema.js";
|
|
|
28
29
|
import { currencyViewAttrs } from "./presentation/view/view-schema.js";
|
|
29
30
|
import { dataGridLayoutAttrs } from "./presentation/layout/layout-schema.js";
|
|
30
31
|
import { ORIGIN_ATTRS_MAP } from "./persistence/origin/origin-schema.js";
|
|
31
|
-
import {
|
|
32
|
+
import { MetaTemplate } from "./template/meta-template.js";
|
|
33
|
+
import { TEMPLATE_ATTRS_MAP } from "./template/template-schema.js";
|
|
34
|
+
import { TEMPLATE_SUBTYPES } from "./template/template-constants.js";
|
|
35
|
+
import { TYPE_METADATA, TYPE_OBJECT, TYPE_FIELD, TYPE_ATTR, TYPE_VALIDATOR, TYPE_VIEW, TYPE_IDENTITY, TYPE_RELATIONSHIP, TYPE_LAYOUT, TYPE_SOURCE, TYPE_ORIGIN, TYPE_TEMPLATE, SUBTYPE_ROOT, } from "./shared/base-types.js";
|
|
32
36
|
import { CHILD_RULE_WILDCARD } from "./shared/structural.js";
|
|
33
37
|
import { OBJECT_SUBTYPES, OBJECT_SUBTYPE_ENTITY } from "./core/object/object-constants.js";
|
|
34
|
-
import { FIELD_SUBTYPES, FIELD_SUBTYPE_CURRENCY } from "./core/field/field-constants.js";
|
|
38
|
+
import { FIELD_SUBTYPES, FIELD_SUBTYPE_CURRENCY, FIELD_SUBTYPE_ENUM } from "./core/field/field-constants.js";
|
|
35
39
|
import { ATTR_SUBTYPES } from "./core/attr/attr-constants.js";
|
|
36
40
|
import { VALIDATOR_SUBTYPES, VALIDATOR_SUBTYPE_REQUIRED, VALIDATOR_SUBTYPE_LENGTH, VALIDATOR_SUBTYPE_REGEX, VALIDATOR_SUBTYPE_NUMERIC, VALIDATOR_SUBTYPE_ARRAY, } from "./core/validator/validator-constants.js";
|
|
37
41
|
import { VIEW_SUBTYPES, VIEW_SUBTYPE_CURRENCY, } from "./presentation/view/view-constants.js";
|
|
@@ -39,7 +43,7 @@ import { IDENTITY_SUBTYPES, IDENTITY_SUBTYPE_PRIMARY, IDENTITY_SUBTYPE_SECONDARY
|
|
|
39
43
|
import { RELATIONSHIP_SUBTYPES } from "./core/relationship/relationship-constants.js";
|
|
40
44
|
import { LAYOUT_SUBTYPES, LAYOUT_SUBTYPE_DATA_GRID } from "./presentation/layout/layout-constants.js";
|
|
41
45
|
import { SOURCE_SUBTYPES } from "./persistence/source/source-constants.js";
|
|
42
|
-
import { ORIGIN_SUBTYPES, ORIGIN_SUBTYPE_PASSTHROUGH, ORIGIN_SUBTYPE_AGGREGATE, } from "./persistence/origin/origin-constants.js";
|
|
46
|
+
import { ORIGIN_SUBTYPES, ORIGIN_SUBTYPE_PASSTHROUGH, ORIGIN_SUBTYPE_AGGREGATE, ORIGIN_SUBTYPE_COLLECTION, } from "./persistence/origin/origin-constants.js";
|
|
43
47
|
// ---------------------------------------------------------------------------
|
|
44
48
|
// The per-(type, subType) attribute schemas live in per-concern *-schema.ts
|
|
45
49
|
// modules (e.g. core/field/field-schema.ts, persistence/origin/origin-schema.ts).
|
|
@@ -88,6 +92,7 @@ const IDENTITY_CLASS_MAP = new Map([
|
|
|
88
92
|
const ORIGIN_CLASS_MAP = new Map([
|
|
89
93
|
[ORIGIN_SUBTYPE_PASSTHROUGH, MetaPassthroughOrigin],
|
|
90
94
|
[ORIGIN_SUBTYPE_AGGREGATE, MetaAggregateOrigin],
|
|
95
|
+
[ORIGIN_SUBTYPE_COLLECTION, MetaCollectionOrigin],
|
|
91
96
|
]);
|
|
92
97
|
// ATTR_CLASS_MAP + attrClassFor live in the leaf module ./attr-class-map.ts
|
|
93
98
|
// (imported above) so MetaData.setAttr can resolve an attr subclass without
|
|
@@ -100,6 +105,7 @@ function registerCoreTypeDefs(registry) {
|
|
|
100
105
|
wildcard(TYPE_FIELD),
|
|
101
106
|
wildcard(TYPE_ATTR),
|
|
102
107
|
wildcard(TYPE_VALIDATOR),
|
|
108
|
+
wildcard(TYPE_TEMPLATE),
|
|
103
109
|
], MetaRoot));
|
|
104
110
|
// object — 4 subtypes
|
|
105
111
|
const objectRules = [
|
|
@@ -122,11 +128,13 @@ function registerCoreTypeDefs(registry) {
|
|
|
122
128
|
wildcard(TYPE_ORIGIN),
|
|
123
129
|
];
|
|
124
130
|
for (const subType of FIELD_SUBTYPES) {
|
|
125
|
-
// field.currency additionally carries @currency;
|
|
126
|
-
// share the common
|
|
131
|
+
// field.currency additionally carries @currency; field.enum additionally
|
|
132
|
+
// carries @values; all other field subtypes share the common attrs only.
|
|
127
133
|
const fieldAttrs = subType === FIELD_SUBTYPE_CURRENCY
|
|
128
134
|
? [...commonFieldAttrs, { ...currencyFieldAttr }]
|
|
129
|
-
:
|
|
135
|
+
: subType === FIELD_SUBTYPE_ENUM
|
|
136
|
+
? [...commonFieldAttrs, { ...enumFieldAttr }]
|
|
137
|
+
: [...commonFieldAttrs];
|
|
130
138
|
registry.register(def(TYPE_FIELD, subType, `Field of type ${subType}`, fieldRules, MetaField, fieldAttrs, new MetaField(new TypeId(TYPE_FIELD, subType), "").dataType));
|
|
131
139
|
}
|
|
132
140
|
// attr — 9 subtypes, no children allowed. Each subtype's class owns its
|
|
@@ -164,9 +172,10 @@ function registerCoreTypeDefs(registry) {
|
|
|
164
172
|
const layoutAttrs = subType === LAYOUT_SUBTYPE_DATA_GRID ? [...dataGridLayoutAttrs] : [];
|
|
165
173
|
registry.register(def(TYPE_LAYOUT, subType, `Layout (${subType})`, [wildcard(TYPE_ATTR)], MetaLayout, layoutAttrs));
|
|
166
174
|
}
|
|
167
|
-
// source — declares where an object's data lives (
|
|
175
|
+
// source — declares where an object's data lives (rdb, ... per ADR-0007).
|
|
168
176
|
// Only attr children; sources carry only configuration, never nested structure.
|
|
169
|
-
//
|
|
177
|
+
// Per-subtype attrs (@table/@kind/@role/@schema for rdb) are added by
|
|
178
|
+
// dbProvider via TypeRegistry.extend.
|
|
170
179
|
for (const subType of SOURCE_SUBTYPES) {
|
|
171
180
|
registry.register(def(TYPE_SOURCE, subType, `Source (${subType})`, [wildcard(TYPE_ATTR)], MetaSource, []));
|
|
172
181
|
}
|
|
@@ -179,6 +188,14 @@ function registerCoreTypeDefs(registry) {
|
|
|
179
188
|
const originAttrs = ORIGIN_ATTRS_MAP.get(subType) ?? [];
|
|
180
189
|
registry.register(def(TYPE_ORIGIN, subType, `Origin (${subType})`, [wildcard(TYPE_ATTR)], NodeClass, originAttrs));
|
|
181
190
|
}
|
|
191
|
+
// template — renderable text artifacts (FR-004). prompt + output; attr-only
|
|
192
|
+
// children. A single MetaTemplate class backs both subtypes (mirrors source);
|
|
193
|
+
// per-subtype attr schemas drive validation (both require @payloadRef +
|
|
194
|
+
// @textRef; @format is a closed enum; template.prompt adds the LLM overlay).
|
|
195
|
+
for (const subType of TEMPLATE_SUBTYPES) {
|
|
196
|
+
const templateAttrs = TEMPLATE_ATTRS_MAP.get(subType) ?? [];
|
|
197
|
+
registry.register(def(TYPE_TEMPLATE, subType, `Template (${subType})`, [wildcard(TYPE_ATTR)], MetaTemplate, templateAttrs));
|
|
198
|
+
}
|
|
182
199
|
// identity — 2 subtypes (no base; Java doesn't register one).
|
|
183
200
|
// Subtype→class dispatch for TYPE_IDENTITY (formerly handled by metaOf()):
|
|
184
201
|
// primary → MetaPrimaryIdentity, secondary → MetaSecondaryIdentity,
|
|
@@ -214,7 +231,7 @@ export const coreTypesProvider = {
|
|
|
214
231
|
};
|
|
215
232
|
/** The default provider bundle — core metamodel types plus DB-domain attrs.
|
|
216
233
|
* Spread it to add more: `[...coreProviders, mine]`. */
|
|
217
|
-
export const coreProviders = [coreTypesProvider, dbProvider];
|
|
234
|
+
export const coreProviders = [coreTypesProvider, dbProvider, docProvider];
|
|
218
235
|
/**
|
|
219
236
|
* Register the core metamodel into an existing registry. Thin convenience
|
|
220
237
|
* wrapper over `coreTypesProvider`; prefer `composeRegistry(coreProviders)`.
|