@metaobjectsdev/metadata 0.5.0 → 0.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (168) hide show
  1. package/dist/attr-schema-validate.d.ts.map +1 -1
  2. package/dist/attr-schema-validate.js +66 -11
  3. package/dist/attr-schema-validate.js.map +1 -1
  4. package/dist/core/documentation/doc-constants.d.ts +11 -0
  5. package/dist/core/documentation/doc-constants.d.ts.map +1 -0
  6. package/dist/core/documentation/doc-constants.js +20 -0
  7. package/dist/core/documentation/doc-constants.js.map +1 -0
  8. package/dist/core/documentation/doc-provider.d.ts +3 -0
  9. package/dist/core/documentation/doc-provider.d.ts.map +1 -0
  10. package/dist/core/documentation/doc-provider.js +10 -0
  11. package/dist/core/documentation/doc-provider.js.map +1 -0
  12. package/dist/core/documentation/doc-schema.d.ts +8 -0
  13. package/dist/core/documentation/doc-schema.d.ts.map +1 -0
  14. package/dist/core/documentation/doc-schema.js +53 -0
  15. package/dist/core/documentation/doc-schema.js.map +1 -0
  16. package/dist/core/field/field-constants.d.ts +25 -1
  17. package/dist/core/field/field-constants.d.ts.map +1 -1
  18. package/dist/core/field/field-constants.js +32 -1
  19. package/dist/core/field/field-constants.js.map +1 -1
  20. package/dist/core/field/field-schema.d.ts +2 -0
  21. package/dist/core/field/field-schema.d.ts.map +1 -1
  22. package/dist/core/field/field-schema.js +20 -2
  23. package/dist/core/field/field-schema.js.map +1 -1
  24. package/dist/core/field/meta-field.d.ts +2 -1
  25. package/dist/core/field/meta-field.d.ts.map +1 -1
  26. package/dist/core/field/meta-field.js +6 -4
  27. package/dist/core/field/meta-field.js.map +1 -1
  28. package/dist/core/object/meta-object.d.ts.map +1 -1
  29. package/dist/core/object/meta-object.js +6 -5
  30. package/dist/core/object/meta-object.js.map +1 -1
  31. package/dist/core/parser-yaml.d.ts.map +1 -1
  32. package/dist/core/parser-yaml.js +9 -2
  33. package/dist/core/parser-yaml.js.map +1 -1
  34. package/dist/core/relationship/meta-relationship.d.ts +4 -0
  35. package/dist/core/relationship/meta-relationship.d.ts.map +1 -1
  36. package/dist/core/relationship/meta-relationship.js +11 -1
  37. package/dist/core/relationship/meta-relationship.js.map +1 -1
  38. package/dist/core/relationship/relationship-constants.d.ts +9 -0
  39. package/dist/core/relationship/relationship-constants.d.ts.map +1 -1
  40. package/dist/core/relationship/relationship-constants.js +15 -0
  41. package/dist/core/relationship/relationship-constants.js.map +1 -1
  42. package/dist/core/relationship/relationship-schema.d.ts.map +1 -1
  43. package/dist/core/relationship/relationship-schema.js +15 -1
  44. package/dist/core/relationship/relationship-schema.js.map +1 -1
  45. package/dist/core/yaml-desugar.d.ts +8 -1
  46. package/dist/core/yaml-desugar.d.ts.map +1 -1
  47. package/dist/core/yaml-desugar.js +166 -15
  48. package/dist/core/yaml-desugar.js.map +1 -1
  49. package/dist/core-types.d.ts.map +1 -1
  50. package/dist/core-types.js +28 -11
  51. package/dist/core-types.js.map +1 -1
  52. package/dist/errors.d.ts +1 -1
  53. package/dist/errors.d.ts.map +1 -1
  54. package/dist/errors.js +21 -0
  55. package/dist/errors.js.map +1 -1
  56. package/dist/index.d.ts +6 -1
  57. package/dist/index.d.ts.map +1 -1
  58. package/dist/index.js +7 -1
  59. package/dist/index.js.map +1 -1
  60. package/dist/loader/meta-data-loader.d.ts.map +1 -1
  61. package/dist/loader/meta-data-loader.js +12 -1
  62. package/dist/loader/meta-data-loader.js.map +1 -1
  63. package/dist/loader/validation-passes.d.ts +2 -0
  64. package/dist/loader/validation-passes.d.ts.map +1 -1
  65. package/dist/loader/validation-passes.js +69 -3
  66. package/dist/loader/validation-passes.js.map +1 -1
  67. package/dist/naming.d.ts +3 -2
  68. package/dist/naming.d.ts.map +1 -1
  69. package/dist/naming.js +14 -12
  70. package/dist/naming.js.map +1 -1
  71. package/dist/parser-core.d.ts.map +1 -1
  72. package/dist/parser-core.js +91 -48
  73. package/dist/parser-core.js.map +1 -1
  74. package/dist/persistence/db/db-constants.d.ts +2 -2
  75. package/dist/persistence/db/db-constants.d.ts.map +1 -1
  76. package/dist/persistence/db/db-constants.js +2 -2
  77. package/dist/persistence/db/db-constants.js.map +1 -1
  78. package/dist/persistence/db/db-provider.d.ts.map +1 -1
  79. package/dist/persistence/db/db-provider.js +10 -13
  80. package/dist/persistence/db/db-provider.js.map +1 -1
  81. package/dist/persistence/db/db-schema.d.ts +2 -4
  82. package/dist/persistence/db/db-schema.d.ts.map +1 -1
  83. package/dist/persistence/db/db-schema.js +5 -13
  84. package/dist/persistence/db/db-schema.js.map +1 -1
  85. package/dist/persistence/origin/meta-origin.d.ts +10 -0
  86. package/dist/persistence/origin/meta-origin.d.ts.map +1 -1
  87. package/dist/persistence/origin/meta-origin.js +14 -1
  88. package/dist/persistence/origin/meta-origin.js.map +1 -1
  89. package/dist/persistence/origin/origin-constants.d.ts +3 -1
  90. package/dist/persistence/origin/origin-constants.d.ts.map +1 -1
  91. package/dist/persistence/origin/origin-constants.js +6 -0
  92. package/dist/persistence/origin/origin-constants.js.map +1 -1
  93. package/dist/persistence/origin/origin-schema.d.ts +1 -1
  94. package/dist/persistence/origin/origin-schema.d.ts.map +1 -1
  95. package/dist/persistence/origin/origin-schema.js +12 -2
  96. package/dist/persistence/origin/origin-schema.js.map +1 -1
  97. package/dist/persistence/source/meta-source.d.ts +11 -9
  98. package/dist/persistence/source/meta-source.d.ts.map +1 -1
  99. package/dist/persistence/source/meta-source.js +23 -15
  100. package/dist/persistence/source/meta-source.js.map +1 -1
  101. package/dist/persistence/source/source-constants.d.ts +32 -11
  102. package/dist/persistence/source/source-constants.d.ts.map +1 -1
  103. package/dist/persistence/source/source-constants.js +55 -16
  104. package/dist/persistence/source/source-constants.js.map +1 -1
  105. package/dist/persistence/source/source-schema.d.ts +4 -0
  106. package/dist/persistence/source/source-schema.d.ts.map +1 -0
  107. package/dist/persistence/source/source-schema.js +37 -0
  108. package/dist/persistence/source/source-schema.js.map +1 -0
  109. package/dist/persistence/source/validate-source-roles.d.ts +12 -0
  110. package/dist/persistence/source/validate-source-roles.d.ts.map +1 -0
  111. package/dist/persistence/source/validate-source-roles.js +38 -0
  112. package/dist/persistence/source/validate-source-roles.js.map +1 -0
  113. package/dist/registry.d.ts +13 -0
  114. package/dist/registry.d.ts.map +1 -1
  115. package/dist/registry.js +26 -0
  116. package/dist/registry.js.map +1 -1
  117. package/dist/shared/base-types.d.ts +2 -1
  118. package/dist/shared/base-types.d.ts.map +1 -1
  119. package/dist/shared/base-types.js +5 -2
  120. package/dist/shared/base-types.js.map +1 -1
  121. package/dist/template/meta-template.d.ts +13 -0
  122. package/dist/template/meta-template.d.ts.map +1 -0
  123. package/dist/template/meta-template.js +13 -0
  124. package/dist/template/meta-template.js.map +1 -0
  125. package/dist/template/template-constants.d.ts +17 -0
  126. package/dist/template/template-constants.d.ts.map +1 -0
  127. package/dist/template/template-constants.js +46 -0
  128. package/dist/template/template-constants.js.map +1 -0
  129. package/dist/template/template-schema.d.ts +3 -0
  130. package/dist/template/template-schema.d.ts.map +1 -0
  131. package/dist/template/template-schema.js +84 -0
  132. package/dist/template/template-schema.js.map +1 -0
  133. package/package.json +1 -1
  134. package/src/attr-schema-validate.ts +89 -9
  135. package/src/core/documentation/doc-constants.ts +22 -0
  136. package/src/core/documentation/doc-provider.ts +12 -0
  137. package/src/core/documentation/doc-schema.ts +64 -0
  138. package/src/core/field/field-constants.ts +41 -1
  139. package/src/core/field/field-schema.ts +25 -0
  140. package/src/core/field/meta-field.ts +6 -3
  141. package/src/core/object/meta-object.ts +6 -6
  142. package/src/core/parser-yaml.ts +11 -3
  143. package/src/core/relationship/meta-relationship.ts +14 -0
  144. package/src/core/relationship/relationship-constants.ts +20 -0
  145. package/src/core/relationship/relationship-schema.ts +18 -0
  146. package/src/core/yaml-desugar.ts +206 -24
  147. package/src/core-types.ts +31 -9
  148. package/src/errors.ts +21 -0
  149. package/src/index.ts +7 -0
  150. package/src/loader/meta-data-loader.ts +15 -1
  151. package/src/loader/validation-passes.ts +98 -1
  152. package/src/naming.ts +15 -13
  153. package/src/parser-core.ts +119 -73
  154. package/src/persistence/db/db-constants.ts +2 -2
  155. package/src/persistence/db/db-provider.ts +10 -16
  156. package/src/persistence/db/db-schema.ts +5 -15
  157. package/src/persistence/origin/meta-origin.ts +15 -0
  158. package/src/persistence/origin/origin-constants.ts +7 -0
  159. package/src/persistence/origin/origin-schema.ts +15 -1
  160. package/src/persistence/source/meta-source.ts +30 -17
  161. package/src/persistence/source/source-constants.ts +66 -17
  162. package/src/persistence/source/source-schema.ts +54 -0
  163. package/src/persistence/source/validate-source-roles.ts +53 -0
  164. package/src/registry.ts +31 -0
  165. package/src/shared/base-types.ts +5 -2
  166. package/src/template/meta-template.ts +12 -0
  167. package/src/template/template-constants.ts +53 -0
  168. 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":"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"}
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,CAwC1E"}
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"}
@@ -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
- throw new ParseError(desugarErrors[0], { ...errOpts(opts.sourceName), code: "ERR_MALFORMED_YAML" });
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
- const desugarParseErrors = desugarErrors.map((msg) => new ParseError(msg, { ...errOpts(opts.sourceName), code: "ERR_MALFORMED_YAML" }));
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,aAAa,CAAC,CAAC,CAAE,EACjB,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,IAAI,EAAE,oBAAoB,EAAE,CAC5D,CAAC;IACJ,CAAC;IAED,MAAM,MAAM,GAAG,SAAS,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;IAE1C,4EAA4E;IAC5E,MAAM,kBAAkB,GAAG,aAAa,CAAC,GAAG,CAC1C,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,UAAU,CAAC,GAAG,EAAE,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,IAAI,EAAE,oBAAoB,EAAE,CAAC,CAC1F,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"}
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;AAQrD,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;CACF"}
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,GAC9B,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;CACF"}
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;AAYpD,kDAAkD;AAClD,eAAO,MAAM,iBAAiB,EAAE,UAAU,EAgCzC,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,GAC9B,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;CACF,CAAC"}
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: string[];
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":"AAeA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAUnD,MAAM,WAAW,aAAa;IAC5B,wEAAwE;IACxE,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACnC,iDAAiD;IACjD,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB;AAED,+EAA+E;AAC/E,wBAAgB,OAAO,CAAC,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,YAAY,GAAG,aAAa,CAI7E"}
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 four format-spec sugar rules:
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
- // Pure and total: it never throws. Malformed fragments are collected as error
13
- // strings and a safe placeholder is substituted so buildTree does not
14
- // double-report.
15
- import { RESERVED_KEY_CHILDREN, RESERVED_KEY_NAME, RESERVED_KEY_IS_ARRAY, TYPE_SUBTYPE_SEPARATOR, } from "../shared/structural.js";
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(`Node at ${path} must have exactly one type key (found: ${entries.length === 0 ? "none" : entries.join(", ")})`);
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(`Cannot resolve subType for bare type key '${key}' at ${path} — ` +
75
- `type '${key}' has no default subType; write the full 'type.subType'`);
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
- function desugarBody(rawBody, errors, path) {
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(`Node body at ${path} must be a scalar or mapping, not a list`);
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
- return { ...rawBody };
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":"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"}
1
+ {"version":3,"file":"yaml-desugar.js","sourceRoot":"","sources":["../../src/core/yaml-desugar.ts"],"names":[],"mappings":"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"}
@@ -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;AAY1D,OAAO,sCAAsC,CAAC;AAC9C,OAAO,iCAAiC,CAAC;AACzC,OAAO,qCAAqC,CAAC;AAiS7C;;;;GAIG;AACH,eAAO,MAAM,iBAAiB,EAAE,oBAM/B,CAAC;AAEF;yDACyD;AACzD,eAAO,MAAM,aAAa,EAAE,SAAS,oBAAoB,EAAoC,CAAC;AAE9F;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,YAAY,GAAG,IAAI,CAE9D"}
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"}
@@ -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 { TYPE_METADATA, TYPE_OBJECT, TYPE_FIELD, TYPE_ATTR, TYPE_VALIDATOR, TYPE_VIEW, TYPE_IDENTITY, TYPE_RELATIONSHIP, TYPE_LAYOUT, TYPE_SOURCE, TYPE_ORIGIN, SUBTYPE_ROOT, } from "./shared/base-types.js";
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; all other field subtypes
126
- // share the common codegen/filter attrs only.
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
- : [...commonFieldAttrs];
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 (dbTable, dbView, ...).
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
- // DB-domain attrs (@name) are added by dbProvider via TypeRegistry.extend.
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)`.