@metaobjectsdev/metadata 0.14.2 → 0.15.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 (142) hide show
  1. package/dist/attr-schema-validate.js +22 -1
  2. package/dist/attr-schema-validate.js.map +1 -1
  3. package/dist/core/attr/meta-attr.d.ts.map +1 -1
  4. package/dist/core/attr/meta-attr.js +2 -0
  5. package/dist/core/attr/meta-attr.js.map +1 -1
  6. package/dist/core/field/field-constants.d.ts +26 -1
  7. package/dist/core/field/field-constants.d.ts.map +1 -1
  8. package/dist/core/field/field-constants.js +29 -0
  9. package/dist/core/field/field-constants.js.map +1 -1
  10. package/dist/core/field/field-definition.embedded.d.ts.map +1 -1
  11. package/dist/core/field/field-definition.embedded.js +28 -0
  12. package/dist/core/field/field-definition.embedded.js.map +1 -1
  13. package/dist/core/field/meta-field.d.ts +12 -3
  14. package/dist/core/field/meta-field.d.ts.map +1 -1
  15. package/dist/core/field/meta-field.js +33 -15
  16. package/dist/core/field/meta-field.js.map +1 -1
  17. package/dist/core/field/validate-field-readonly.d.ts.map +1 -1
  18. package/dist/core/field/validate-field-readonly.js +15 -3
  19. package/dist/core/field/validate-field-readonly.js.map +1 -1
  20. package/dist/core/identity/meta-identity.d.ts +2 -0
  21. package/dist/core/identity/meta-identity.d.ts.map +1 -1
  22. package/dist/core/identity/meta-identity.js +16 -8
  23. package/dist/core/identity/meta-identity.js.map +1 -1
  24. package/dist/core/identity/validate-identity-passthrough.d.ts.map +1 -1
  25. package/dist/core/identity/validate-identity-passthrough.js +9 -1
  26. package/dist/core/identity/validate-identity-passthrough.js.map +1 -1
  27. package/dist/core/object/meta-object.d.ts.map +1 -1
  28. package/dist/core/object/meta-object.js +15 -5
  29. package/dist/core/object/meta-object.js.map +1 -1
  30. package/dist/core/object/validate-discriminator.d.ts.map +1 -1
  31. package/dist/core/object/validate-discriminator.js +17 -2
  32. package/dist/core/object/validate-discriminator.js.map +1 -1
  33. package/dist/core/query/query-constants.d.ts.map +1 -1
  34. package/dist/core/query/query-constants.js +7 -1
  35. package/dist/core/query/query-constants.js.map +1 -1
  36. package/dist/core/relationship/meta-relationship.d.ts.map +1 -1
  37. package/dist/core/relationship/meta-relationship.js +9 -7
  38. package/dist/core/relationship/meta-relationship.js.map +1 -1
  39. package/dist/core/validator/meta-validator.d.ts.map +1 -1
  40. package/dist/core/validator/meta-validator.js +6 -3
  41. package/dist/core/validator/meta-validator.js.map +1 -1
  42. package/dist/core-types.js +2 -2
  43. package/dist/core-types.js.map +1 -1
  44. package/dist/loader/meta-data-loader.d.ts.map +1 -1
  45. package/dist/loader/meta-data-loader.js +4 -0
  46. package/dist/loader/meta-data-loader.js.map +1 -1
  47. package/dist/loader/validation-passes.d.ts.map +1 -1
  48. package/dist/loader/validation-passes.js +97 -39
  49. package/dist/loader/validation-passes.js.map +1 -1
  50. package/dist/loader/validation-registry.d.ts.map +1 -1
  51. package/dist/loader/validation-registry.js +7 -2
  52. package/dist/loader/validation-registry.js.map +1 -1
  53. package/dist/naming.d.ts.map +1 -1
  54. package/dist/naming.js +6 -3
  55. package/dist/naming.js.map +1 -1
  56. package/dist/object-serializer.d.ts.map +1 -1
  57. package/dist/object-serializer.js +6 -2
  58. package/dist/object-serializer.js.map +1 -1
  59. package/dist/parser-core.js +5 -0
  60. package/dist/parser-core.js.map +1 -1
  61. package/dist/persistence/db/db-constants.d.ts +20 -9
  62. package/dist/persistence/db/db-constants.d.ts.map +1 -1
  63. package/dist/persistence/db/db-constants.js +20 -15
  64. package/dist/persistence/db/db-constants.js.map +1 -1
  65. package/dist/persistence/db/db-definition.embedded.d.ts.map +1 -1
  66. package/dist/persistence/db/db-definition.embedded.js +19 -1
  67. package/dist/persistence/db/db-definition.embedded.js.map +1 -1
  68. package/dist/persistence/origin/meta-origin.d.ts.map +1 -1
  69. package/dist/persistence/origin/meta-origin.js +6 -0
  70. package/dist/persistence/origin/meta-origin.js.map +1 -1
  71. package/dist/persistence/source/meta-source.d.ts.map +1 -1
  72. package/dist/persistence/source/meta-source.js +11 -5
  73. package/dist/persistence/source/meta-source.js.map +1 -1
  74. package/dist/persistence/source/validate-source-parameter-ref.d.ts.map +1 -1
  75. package/dist/persistence/source/validate-source-parameter-ref.js +14 -5
  76. package/dist/persistence/source/validate-source-parameter-ref.js.map +1 -1
  77. package/dist/persistence/source/validate-source-physical-names.d.ts.map +1 -1
  78. package/dist/persistence/source/validate-source-physical-names.js +9 -1
  79. package/dist/persistence/source/validate-source-physical-names.js.map +1 -1
  80. package/dist/persistence/source/validate-source-roles.d.ts.map +1 -1
  81. package/dist/persistence/source/validate-source-roles.js +5 -1
  82. package/dist/persistence/source/validate-source-roles.js.map +1 -1
  83. package/dist/presentation/layout/meta-layout.d.ts.map +1 -1
  84. package/dist/presentation/layout/meta-layout.js +12 -6
  85. package/dist/presentation/layout/meta-layout.js.map +1 -1
  86. package/dist/registry-manifest.d.ts +12 -2
  87. package/dist/registry-manifest.d.ts.map +1 -1
  88. package/dist/registry-manifest.js +20 -8
  89. package/dist/registry-manifest.js.map +1 -1
  90. package/dist/serializer-json.d.ts.map +1 -1
  91. package/dist/serializer-json.js +8 -1
  92. package/dist/serializer-json.js.map +1 -1
  93. package/dist/shared/meta-data.d.ts +14 -0
  94. package/dist/shared/meta-data.d.ts.map +1 -1
  95. package/dist/shared/meta-data.js +30 -0
  96. package/dist/shared/meta-data.js.map +1 -1
  97. package/dist/shared/meta-root.d.ts.map +1 -1
  98. package/dist/shared/meta-root.js +8 -2
  99. package/dist/shared/meta-root.js.map +1 -1
  100. package/dist/subtype-rules.js +4 -3
  101. package/dist/subtype-rules.js.map +1 -1
  102. package/dist/super-resolve.d.ts.map +1 -1
  103. package/dist/super-resolve.js +3 -0
  104. package/dist/super-resolve.js.map +1 -1
  105. package/dist/validate-max-occurs.js +5 -0
  106. package/dist/validate-max-occurs.js.map +1 -1
  107. package/package.json +1 -1
  108. package/src/attr-schema-validate.ts +24 -1
  109. package/src/core/attr/meta-attr.ts +2 -0
  110. package/src/core/field/field-constants.ts +34 -0
  111. package/src/core/field/field-definition.embedded.ts +28 -0
  112. package/src/core/field/meta-field.ts +30 -12
  113. package/src/core/field/validate-field-readonly.ts +15 -3
  114. package/src/core/identity/meta-identity.ts +16 -8
  115. package/src/core/identity/validate-identity-passthrough.ts +9 -1
  116. package/src/core/object/meta-object.ts +5 -0
  117. package/src/core/object/validate-discriminator.ts +17 -2
  118. package/src/core/query/query-constants.ts +7 -1
  119. package/src/core/relationship/meta-relationship.ts +9 -7
  120. package/src/core/validator/meta-validator.ts +6 -3
  121. package/src/core-types.ts +2 -2
  122. package/src/loader/meta-data-loader.ts +4 -0
  123. package/src/loader/validation-passes.ts +97 -39
  124. package/src/loader/validation-registry.ts +7 -2
  125. package/src/naming.ts +6 -3
  126. package/src/object-serializer.ts +6 -2
  127. package/src/parser-core.ts +5 -0
  128. package/src/persistence/db/db-constants.ts +20 -15
  129. package/src/persistence/db/db-definition.embedded.ts +19 -1
  130. package/src/persistence/origin/meta-origin.ts +6 -0
  131. package/src/persistence/source/meta-source.ts +11 -5
  132. package/src/persistence/source/validate-source-parameter-ref.ts +14 -5
  133. package/src/persistence/source/validate-source-physical-names.ts +9 -1
  134. package/src/persistence/source/validate-source-roles.ts +5 -1
  135. package/src/presentation/layout/meta-layout.ts +12 -6
  136. package/src/registry-manifest.ts +28 -8
  137. package/src/serializer-json.ts +8 -1
  138. package/src/shared/meta-data.ts +30 -0
  139. package/src/shared/meta-root.ts +4 -0
  140. package/src/subtype-rules.ts +4 -3
  141. package/src/super-resolve.ts +3 -0
  142. package/src/validate-max-occurs.ts +5 -0
@@ -1,5 +1,5 @@
1
1
  // DB concern constants — physical DB column attr keys.
2
- import { FIELD_SUBTYPE_STRING, FIELD_SUBTYPE_TIMESTAMP, } from "../../core/field/field-constants.js";
2
+ import { FIELD_SUBTYPE_STRING, } from "../../core/field/field-constants.js";
3
3
  /** Column name override on a field (maps to @column in metadata). */
4
4
  export const FIELD_ATTR_COLUMN = "column";
5
5
  /** When true, suppress the @filterable-without-index Loader warning (Project D drift check). */
@@ -29,31 +29,36 @@ export const FIELD_ATTR_DB_COLUMN_TYPE = "dbColumnType";
29
29
  export const DB_COLUMN_TYPE_UUID = "uuid";
30
30
  /** `@dbColumnType: jsonb` — genuinely-open `jsonb` column (legal on field.string). */
31
31
  export const DB_COLUMN_TYPE_JSONB = "jsonb";
32
- /** `@dbColumnType: timestamp_with_tz` — `timestamp with time zone` (legal on field.timestamp). */
33
- export const DB_COLUMN_TYPE_TIMESTAMP_WITH_TZ = "timestamp_with_tz";
34
- /** `@dbColumnType: uuid_array` native Postgres `uuid[]` column (legal on field.string). */
35
- export const DB_COLUMN_TYPE_UUID_ARRAY = "uuid_array";
36
- /** `@dbColumnType: text_array` native Postgres `text[]` column (legal on field.string). */
37
- export const DB_COLUMN_TYPE_TEXT_ARRAY = "text_array";
38
- /** The closed set of legal `@dbColumnType` values (raw-dialect passthrough deferred). */
32
+ /**
33
+ * ADR-0036 Wave 2: `@localTime` — a boolean flag on `field.timestamp` marking the
34
+ * rare naive / wall-clock case. When true the column is Postgres `timestamp
35
+ * without time zone`; absent/false (the default) is an absolute instant →
36
+ * `timestamptz`. This replaces the retired `@dbColumnType: timestamp_with_tz`
37
+ * escape hatch — timezone-awareness now lives in the logical field type
38
+ * (instant-by-default) + this opt-out, not in a physical column-type string.
39
+ */
40
+ export const FIELD_ATTR_LOCAL_TIME = "localTime";
41
+ /**
42
+ * The closed set of legal `@dbColumnType` values (raw-dialect passthrough deferred).
43
+ * dbColumnType slim-and-derive (ADR-0036 Wave 1, decision 4): the native-array
44
+ * overrides `uuid_array`/`text_array` are fully removed — native `uuid[]`/`text[]`
45
+ * are DERIVED from a field subtype + `isArray`, never declared via an escape hatch.
46
+ * Wave 2 (decision 1) retires `timestamp_with_tz` entirely — tz-awareness moves to
47
+ * `field.timestamp` (instant by default) + `@localTime` (the naive opt-out). The
48
+ * legal set is now just `{ uuid, jsonb }`, both on field.string.
49
+ */
39
50
  export const DB_COLUMN_TYPE_VALUES = [
40
51
  DB_COLUMN_TYPE_UUID,
41
52
  DB_COLUMN_TYPE_JSONB,
42
- DB_COLUMN_TYPE_TIMESTAMP_WITH_TZ,
43
- DB_COLUMN_TYPE_UUID_ARRAY,
44
- DB_COLUMN_TYPE_TEXT_ARRAY,
45
53
  ];
46
54
  /**
47
55
  * Legal `@dbColumnType` value → the field subtypes it may be applied to (ADR-0013,
48
56
  * R6 Plan 2b). Any other (subtype × value) pairing — or an unrecognized value — is
49
57
  * an ERR_BAD_ATTR_VALUE. Keyed by value; the value-set is enforced by membership in
50
- * this map. Subtype names are the bare FIELD_SUBTYPE_* constants (string / timestamp).
58
+ * this map. Subtype names are the bare FIELD_SUBTYPE_* constants (string).
51
59
  */
52
60
  export const DB_COLUMN_TYPE_LEGAL_SUBTYPES = {
53
61
  [DB_COLUMN_TYPE_UUID]: [FIELD_SUBTYPE_STRING],
54
62
  [DB_COLUMN_TYPE_JSONB]: [FIELD_SUBTYPE_STRING],
55
- [DB_COLUMN_TYPE_TIMESTAMP_WITH_TZ]: [FIELD_SUBTYPE_TIMESTAMP],
56
- [DB_COLUMN_TYPE_UUID_ARRAY]: [FIELD_SUBTYPE_STRING],
57
- [DB_COLUMN_TYPE_TEXT_ARRAY]: [FIELD_SUBTYPE_STRING],
58
63
  };
59
64
  //# sourceMappingURL=db-constants.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"db-constants.js","sourceRoot":"","sources":["../../../src/persistence/db/db-constants.ts"],"names":[],"mappings":"AAAA,uDAAuD;AAEvD,OAAO,EACL,oBAAoB,EACpB,uBAAuB,GACxB,MAAM,qCAAqC,CAAC;AAE7C,qEAAqE;AACrE,MAAM,CAAC,MAAM,iBAAiB,GAAG,QAAQ,CAAC;AAC1C,gGAAgG;AAChG,MAAM,CAAC,MAAM,qBAAqB,GAAG,YAAY,CAAC;AAElD,iFAAiF;AACjF,kFAAkF;AAClF,kFAAkF;AAClF,wEAAwE;AAExE,4IAA4I;AAC5I,MAAM,CAAC,MAAM,oBAAoB,GAAG,QAAQ,CAAC;AAC7C,8GAA8G;AAC9G,MAAM,CAAC,MAAM,mBAAmB,GAAG,OAAO,CAAC;AAC3C,iIAAiI;AACjI,MAAM,CAAC,MAAM,kBAAkB,GAAG,MAAM,CAAC;AACzC,4GAA4G;AAC5G,MAAM,CAAC,MAAM,mBAAmB,GAAG,OAAO,CAAC;AAC3C,wHAAwH;AACxH,MAAM,CAAC,MAAM,6BAA6B,GAAG,gBAAgB,CAAC;AAE9D;;;;;GAKG;AACH,MAAM,CAAC,MAAM,yBAAyB,GAAG,cAAc,CAAC;AAExD,qFAAqF;AACrF,MAAM,CAAC,MAAM,mBAAmB,GAAG,MAAM,CAAC;AAC1C,sFAAsF;AACtF,MAAM,CAAC,MAAM,oBAAoB,GAAG,OAAO,CAAC;AAC5C,kGAAkG;AAClG,MAAM,CAAC,MAAM,gCAAgC,GAAG,mBAAmB,CAAC;AACpE,6FAA6F;AAC7F,MAAM,CAAC,MAAM,yBAAyB,GAAG,YAAY,CAAC;AACtD,6FAA6F;AAC7F,MAAM,CAAC,MAAM,yBAAyB,GAAG,YAAY,CAAC;AAEtD,yFAAyF;AACzF,MAAM,CAAC,MAAM,qBAAqB,GAAG;IACnC,mBAAmB;IACnB,oBAAoB;IACpB,gCAAgC;IAChC,yBAAyB;IACzB,yBAAyB;CACjB,CAAC;AAGX;;;;;GAKG;AACH,MAAM,CAAC,MAAM,6BAA6B,GAA2D;IACnG,CAAC,mBAAmB,CAAC,EAAE,CAAC,oBAAoB,CAAC;IAC7C,CAAC,oBAAoB,CAAC,EAAE,CAAC,oBAAoB,CAAC;IAC9C,CAAC,gCAAgC,CAAC,EAAE,CAAC,uBAAuB,CAAC;IAC7D,CAAC,yBAAyB,CAAC,EAAE,CAAC,oBAAoB,CAAC;IACnD,CAAC,yBAAyB,CAAC,EAAE,CAAC,oBAAoB,CAAC;CAC3C,CAAC"}
1
+ {"version":3,"file":"db-constants.js","sourceRoot":"","sources":["../../../src/persistence/db/db-constants.ts"],"names":[],"mappings":"AAAA,uDAAuD;AAEvD,OAAO,EACL,oBAAoB,GACrB,MAAM,qCAAqC,CAAC;AAE7C,qEAAqE;AACrE,MAAM,CAAC,MAAM,iBAAiB,GAAG,QAAQ,CAAC;AAC1C,gGAAgG;AAChG,MAAM,CAAC,MAAM,qBAAqB,GAAG,YAAY,CAAC;AAElD,iFAAiF;AACjF,kFAAkF;AAClF,kFAAkF;AAClF,wEAAwE;AAExE,4IAA4I;AAC5I,MAAM,CAAC,MAAM,oBAAoB,GAAG,QAAQ,CAAC;AAC7C,8GAA8G;AAC9G,MAAM,CAAC,MAAM,mBAAmB,GAAG,OAAO,CAAC;AAC3C,iIAAiI;AACjI,MAAM,CAAC,MAAM,kBAAkB,GAAG,MAAM,CAAC;AACzC,4GAA4G;AAC5G,MAAM,CAAC,MAAM,mBAAmB,GAAG,OAAO,CAAC;AAC3C,wHAAwH;AACxH,MAAM,CAAC,MAAM,6BAA6B,GAAG,gBAAgB,CAAC;AAE9D;;;;;GAKG;AACH,MAAM,CAAC,MAAM,yBAAyB,GAAG,cAAc,CAAC;AAExD,qFAAqF;AACrF,MAAM,CAAC,MAAM,mBAAmB,GAAG,MAAM,CAAC;AAC1C,sFAAsF;AACtF,MAAM,CAAC,MAAM,oBAAoB,GAAG,OAAO,CAAC;AAE5C;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,WAAW,CAAC;AAEjD;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG;IACnC,mBAAmB;IACnB,oBAAoB;CACZ,CAAC;AAGX;;;;;GAKG;AACH,MAAM,CAAC,MAAM,6BAA6B,GAA2D;IACnG,CAAC,mBAAmB,CAAC,EAAE,CAAC,oBAAoB,CAAC;IAC7C,CAAC,oBAAoB,CAAC,EAAE,CAAC,oBAAoB,CAAC;CACtC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"db-definition.embedded.d.ts","sourceRoot":"","sources":["../../../src/persistence/db/db-definition.embedded.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAEjE,eAAO,MAAM,aAAa,EAAE,kBAiO3B,CAAC"}
1
+ {"version":3,"file":"db-definition.embedded.d.ts","sourceRoot":"","sources":["../../../src/persistence/db/db-definition.embedded.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAEjE,eAAO,MAAM,aAAa,EAAE,kBAmP3B,CAAC"}
@@ -27,7 +27,25 @@ export const DB_DEFINITION = {
27
27
  "name": "dbColumnType",
28
28
  "min": 0,
29
29
  "max": 1,
30
- "description": "Physical DB column-type override (ADR-0013 escape hatch). Legal values are uuid | jsonb | timestamp_with_tz | uuid_array | text_array, each legal only on a specific logical field subtype (uuid/jsonb/uuid_array/text_array on field.string, timestamp_with_tz on field.timestamp). uuid_array/text_array emit native SQL arrays (uuid[]/text[]). The logical field type and its native binding are unchanged."
30
+ "allowedValues": [
31
+ "uuid",
32
+ "jsonb"
33
+ ],
34
+ "description": "Physical DB column-type override (ADR-0013 escape hatch). Legal values are uuid | jsonb, both on field.string (uuid = native Postgres uuid column over a string-typed field; jsonb = genuinely-open JSON column). The logical field type and its native binding are unchanged. Native SQL arrays (uuid[]/text[]) are NOT declared here — they are derived from a field subtype + isArray (ADR-0036 Wave 1). The retired timestamp_with_tz value is gone — timezone-awareness lives in field.timestamp (instant by default) + @localTime (the naive opt-out), per ADR-0036 Wave 2."
35
+ }
36
+ ]
37
+ },
38
+ {
39
+ "type": "field",
40
+ "subType": "timestamp",
41
+ "children": [
42
+ {
43
+ "type": "attr",
44
+ "subType": "boolean",
45
+ "name": "localTime",
46
+ "min": 0,
47
+ "max": 1,
48
+ "description": "When true, the timestamp is a naive wall-clock value with no timezone (Postgres `timestamp without time zone`); absent/false (the default) = an absolute instant (`timestamptz`). ADR-0036 Wave 2 — replaces the retired @dbColumnType: timestamp_with_tz escape hatch."
31
49
  }
32
50
  ]
33
51
  },
@@ -1 +1 @@
1
- {"version":3,"file":"db-definition.embedded.js","sourceRoot":"","sources":["../../../src/persistence/db/db-definition.embedded.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"db-definition.embedded.js","sourceRoot":"","sources":["../../../src/persistence/db/db-definition.embedded.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"meta-origin.d.ts","sourceRoot":"","sources":["../../../src/persistence/origin/meta-origin.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AACrD,OAAO,EAOL,KAAK,iBAAiB,EACvB,MAAM,uBAAuB,CAAC;AAE/B,qBAAa,UAAW,SAAQ,QAAQ;CAAG;AAE3C;;;;;;GAMG;AACH,qBAAa,qBAAsB,SAAQ,UAAU;IACnD,sGAAsG;IACtG,IAAI,IAAI,IAAI,MAAM,GAAG,SAAS,CAG7B;IAED,gGAAgG;IAChG,IAAI,GAAG,IAAI,MAAM,GAAG,SAAS,CAG5B;CACF;AAED;;;;;GAKG;AACH,qBAAa,mBAAoB,SAAQ,UAAU;IACjD,8DAA8D;IAC9D,IAAI,GAAG,IAAI,iBAAiB,GAAG,SAAS,CAGvC;IAED,gEAAgE;IAChE,IAAI,EAAE,IAAI,MAAM,GAAG,SAAS,CAG3B;IAED,+EAA+E;IAC/E,IAAI,GAAG,IAAI,MAAM,GAAG,SAAS,CAG5B;CACF;AAED;;;;;GAKG;AACH,qBAAa,oBAAqB,SAAQ,UAAU;IAClD,2FAA2F;IAC3F,IAAI,GAAG,IAAI,MAAM,GAAG,SAAS,CAG5B;CACF"}
1
+ {"version":3,"file":"meta-origin.d.ts","sourceRoot":"","sources":["../../../src/persistence/origin/meta-origin.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AACrD,OAAO,EAOL,KAAK,iBAAiB,EACvB,MAAM,uBAAuB,CAAC;AAE/B,qBAAa,UAAW,SAAQ,QAAQ;CAAG;AAE3C;;;;;;GAMG;AACH,qBAAa,qBAAsB,SAAQ,UAAU;IACnD,sGAAsG;IACtG,IAAI,IAAI,IAAI,MAAM,GAAG,SAAS,CAI7B;IAED,gGAAgG;IAChG,IAAI,GAAG,IAAI,MAAM,GAAG,SAAS,CAI5B;CACF;AAED;;;;;GAKG;AACH,qBAAa,mBAAoB,SAAQ,UAAU;IACjD,8DAA8D;IAC9D,IAAI,GAAG,IAAI,iBAAiB,GAAG,SAAS,CAIvC;IAED,gEAAgE;IAChE,IAAI,EAAE,IAAI,MAAM,GAAG,SAAS,CAI3B;IAED,+EAA+E;IAC/E,IAAI,GAAG,IAAI,MAAM,GAAG,SAAS,CAI5B;CACF;AAED;;;;;GAKG;AACH,qBAAa,oBAAqB,SAAQ,UAAU;IAClD,2FAA2F;IAC3F,IAAI,GAAG,IAAI,MAAM,GAAG,SAAS,CAI5B;CACF"}
@@ -20,11 +20,13 @@ export class MetaOrigin extends MetaData {
20
20
  export class MetaPassthroughOrigin extends MetaOrigin {
21
21
  /** The dotted-path cross-entity field reference this origin passes through (e.g. "Program.title"). */
22
22
  get from() {
23
+ // ADR-0039: own — origin.* never inherits (ADR-0029), so own is correct.
23
24
  const v = this.ownAttr(ORIGIN_PASSTHROUGH_ATTR_FROM);
24
25
  return typeof v === "string" ? v : undefined;
25
26
  }
26
27
  /** Optional dotted relationship path used to reach the source entity (e.g. "Program.weeks"). */
27
28
  get via() {
29
+ // ADR-0039: own — origin.* never inherits (ADR-0029), so own is correct.
28
30
  const v = this.ownAttr(ORIGIN_PASSTHROUGH_ATTR_VIA);
29
31
  return typeof v === "string" ? v : undefined;
30
32
  }
@@ -38,16 +40,19 @@ export class MetaPassthroughOrigin extends MetaOrigin {
38
40
  export class MetaAggregateOrigin extends MetaOrigin {
39
41
  /** The aggregate function (count | sum | avg | min | max). */
40
42
  get agg() {
43
+ // ADR-0039: own — origin.* never inherits (ADR-0029), so own is correct.
41
44
  const v = this.ownAttr(ORIGIN_AGGREGATE_ATTR_AGG);
42
45
  return typeof v === "string" ? v : undefined;
43
46
  }
44
47
  /** The dotted-path target of the aggregate (e.g. "Week.id"). */
45
48
  get of() {
49
+ // ADR-0039: own — origin.* never inherits (ADR-0029), so own is correct.
46
50
  const v = this.ownAttr(ORIGIN_AGGREGATE_ATTR_OF);
47
51
  return typeof v === "string" ? v : undefined;
48
52
  }
49
53
  /** The dotted relationship path the aggregate walks (e.g. "Program.weeks"). */
50
54
  get via() {
55
+ // ADR-0039: own — origin.* never inherits (ADR-0029), so own is correct.
51
56
  const v = this.ownAttr(ORIGIN_AGGREGATE_ATTR_VIA);
52
57
  return typeof v === "string" ? v : undefined;
53
58
  }
@@ -61,6 +66,7 @@ export class MetaAggregateOrigin extends MetaOrigin {
61
66
  export class MetaCollectionOrigin extends MetaOrigin {
62
67
  /** The dotted relationship path (or wildcard selector) this collection is sourced from. */
63
68
  get via() {
69
+ // ADR-0039: own — origin.* never inherits (ADR-0029), so own is correct.
64
70
  const v = this.ownAttr(ORIGIN_COLLECTION_ATTR_VIA);
65
71
  return typeof v === "string" ? v : undefined;
66
72
  }
@@ -1 +1 @@
1
- {"version":3,"file":"meta-origin.js","sourceRoot":"","sources":["../../../src/persistence/origin/meta-origin.ts"],"names":[],"mappings":"AAAA,0DAA0D;AAC1D,sCAAsC;AACtC,gFAAgF;AAChF,EAAE;AACF,+EAA+E;AAC/E,0CAA0C;AAC1C,EAAE;AACF,wEAAwE;AAExE,OAAO,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AACrD,OAAO,EACL,4BAA4B,EAC5B,2BAA2B,EAC3B,yBAAyB,EACzB,wBAAwB,EACxB,yBAAyB,EACzB,0BAA0B,GAE3B,MAAM,uBAAuB,CAAC;AAE/B,MAAM,OAAO,UAAW,SAAQ,QAAQ;CAAG;AAE3C;;;;;;GAMG;AACH,MAAM,OAAO,qBAAsB,SAAQ,UAAU;IACnD,sGAAsG;IACtG,IAAI,IAAI;QACN,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,gGAAgG;IAChG,IAAI,GAAG;QACL,MAAM,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,2BAA2B,CAAC,CAAC;QACpD,OAAO,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAC/C,CAAC;CACF;AAED;;;;;GAKG;AACH,MAAM,OAAO,mBAAoB,SAAQ,UAAU;IACjD,8DAA8D;IAC9D,IAAI,GAAG;QACL,MAAM,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,yBAAyB,CAAC,CAAC;QAClD,OAAO,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAE,CAAuB,CAAC,CAAC,CAAC,SAAS,CAAC;IACtE,CAAC;IAED,gEAAgE;IAChE,IAAI,EAAE;QACJ,MAAM,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,wBAAwB,CAAC,CAAC;QACjD,OAAO,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAC/C,CAAC;IAED,+EAA+E;IAC/E,IAAI,GAAG;QACL,MAAM,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,yBAAyB,CAAC,CAAC;QAClD,OAAO,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAC/C,CAAC;CACF;AAED;;;;;GAKG;AACH,MAAM,OAAO,oBAAqB,SAAQ,UAAU;IAClD,2FAA2F;IAC3F,IAAI,GAAG;QACL,MAAM,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,0BAA0B,CAAC,CAAC;QACnD,OAAO,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAC/C,CAAC;CACF"}
1
+ {"version":3,"file":"meta-origin.js","sourceRoot":"","sources":["../../../src/persistence/origin/meta-origin.ts"],"names":[],"mappings":"AAAA,0DAA0D;AAC1D,sCAAsC;AACtC,gFAAgF;AAChF,EAAE;AACF,+EAA+E;AAC/E,0CAA0C;AAC1C,EAAE;AACF,wEAAwE;AAExE,OAAO,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AACrD,OAAO,EACL,4BAA4B,EAC5B,2BAA2B,EAC3B,yBAAyB,EACzB,wBAAwB,EACxB,yBAAyB,EACzB,0BAA0B,GAE3B,MAAM,uBAAuB,CAAC;AAE/B,MAAM,OAAO,UAAW,SAAQ,QAAQ;CAAG;AAE3C;;;;;;GAMG;AACH,MAAM,OAAO,qBAAsB,SAAQ,UAAU;IACnD,sGAAsG;IACtG,IAAI,IAAI;QACN,yEAAyE;QACzE,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,gGAAgG;IAChG,IAAI,GAAG;QACL,yEAAyE;QACzE,MAAM,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,2BAA2B,CAAC,CAAC;QACpD,OAAO,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAC/C,CAAC;CACF;AAED;;;;;GAKG;AACH,MAAM,OAAO,mBAAoB,SAAQ,UAAU;IACjD,8DAA8D;IAC9D,IAAI,GAAG;QACL,yEAAyE;QACzE,MAAM,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,yBAAyB,CAAC,CAAC;QAClD,OAAO,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAE,CAAuB,CAAC,CAAC,CAAC,SAAS,CAAC;IACtE,CAAC;IAED,gEAAgE;IAChE,IAAI,EAAE;QACJ,yEAAyE;QACzE,MAAM,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,wBAAwB,CAAC,CAAC;QACjD,OAAO,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAC/C,CAAC;IAED,+EAA+E;IAC/E,IAAI,GAAG;QACL,yEAAyE;QACzE,MAAM,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,yBAAyB,CAAC,CAAC;QAClD,OAAO,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAC/C,CAAC;CACF;AAED;;;;;GAKG;AACH,MAAM,OAAO,oBAAqB,SAAQ,UAAU;IAClD,2FAA2F;IAC3F,IAAI,GAAG;QACL,yEAAyE;QACzE,MAAM,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,0BAA0B,CAAC,CAAC;QACnD,OAAO,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAC/C,CAAC;CACF"}
@@ -1 +1 @@
1
- {"version":3,"file":"meta-source.d.ts","sourceRoot":"","sources":["../../../src/persistence/source/meta-source.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AA0BrD,qBAAa,UAAW,SAAQ,QAAQ;IACtC;;0DAEsD;IACtD,IAAI,SAAS,IAAI,MAAM,GAAG,SAAS,CAGlC;IAED;;;OAGG;IACH,IAAI,aAAa,IAAI,MAAM,CAG1B;IAED,kFAAkF;IAClF,IAAI,IAAI,IAAI,MAAM,CAGjB;IAED;;;OAGG;IACH,UAAU,IAAI,OAAO;IAIrB,8DAA8D;IAC9D,UAAU,IAAI,OAAO;IAIrB;;;;;;;;;;OAUG;IACH,IAAI,YAAY,IAAI,MAAM,CA8BzB;CACF"}
1
+ {"version":3,"file":"meta-source.d.ts","sourceRoot":"","sources":["../../../src/persistence/source/meta-source.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AA0BrD,qBAAa,UAAW,SAAQ,QAAQ;IACtC;;0DAEsD;IACtD,IAAI,SAAS,IAAI,MAAM,GAAG,SAAS,CAKlC;IAED;;;OAGG;IACH,IAAI,aAAa,IAAI,MAAM,CAI1B;IAED,kFAAkF;IAClF,IAAI,IAAI,IAAI,MAAM,CAIjB;IAED;;;OAGG;IACH,UAAU,IAAI,OAAO;IAIrB,8DAA8D;IAC9D,UAAU,IAAI,OAAO;IAIrB;;;;;;;;;;OAUG;IACH,IAAI,YAAY,IAAI,MAAM,CAgCzB;CACF"}
@@ -21,7 +21,9 @@ export class MetaSource extends MetaData {
21
21
  * back-compat accessor that reads ONLY the @table slot — callers should
22
22
  * use physicalName for the FR-016 four-step rule. */
23
23
  get tableName() {
24
- const v = this.ownAttr(SOURCE_ATTR_TABLE);
24
+ // ADR-0039: resolving — a source may be inherited via extends (an entity
25
+ // extending BaseEntity inherits its source.rdb); @table can live on the super.
26
+ const v = this.attr(SOURCE_ATTR_TABLE);
25
27
  return typeof v === "string" && v !== "" ? v : undefined;
26
28
  }
27
29
  /**
@@ -29,12 +31,14 @@ export class MetaSource extends MetaData {
29
31
  * `"table"` when omitted (ADR-0007 Rule 3 — per-paradigm default).
30
32
  */
31
33
  get effectiveKind() {
32
- const v = this.ownAttr(SOURCE_ATTR_KIND);
34
+ // ADR-0039: resolving — an inherited source's @kind lives on the super node.
35
+ const v = this.attr(SOURCE_ATTR_KIND);
33
36
  return typeof v === "string" && v !== "" ? v : DEFAULT_SOURCE_KIND;
34
37
  }
35
38
  /** The multi-source role for this source (defaults to "primary" when omitted). */
36
39
  get role() {
37
- const v = this.ownAttr(SOURCE_ATTR_ROLE);
40
+ // ADR-0039: resolving — an inherited source's @role lives on the super node.
41
+ const v = this.attr(SOURCE_ATTR_ROLE);
38
42
  return typeof v === "string" && v !== "" ? v : DEFAULT_SOURCE_ROLE;
39
43
  }
40
44
  /**
@@ -64,13 +68,15 @@ export class MetaSource extends MetaData {
64
68
  // Step 1: kind-matching alias.
65
69
  const canonicalAttr = PHYSICAL_NAME_ATTR_BY_KIND.get(kind);
66
70
  if (canonicalAttr !== undefined) {
67
- const v = this.ownAttr(canonicalAttr);
71
+ // ADR-0039: resolving — an inherited source's physical-name alias lives on the super.
72
+ const v = this.attr(canonicalAttr);
68
73
  if (typeof v === "string" && v !== "")
69
74
  return v;
70
75
  }
71
76
  // Step 2: legacy @table for non-table kind.
72
77
  if (canonicalAttr !== SOURCE_ATTR_TABLE) {
73
- const legacy = this.ownAttr(SOURCE_ATTR_TABLE);
78
+ // ADR-0039: resolving — inherited @table lives on the super node.
79
+ const legacy = this.attr(SOURCE_ATTR_TABLE);
74
80
  if (typeof legacy === "string" && legacy !== "")
75
81
  return legacy;
76
82
  }
@@ -1 +1 @@
1
- {"version":3,"file":"meta-source.js","sourceRoot":"","sources":["../../../src/persistence/source/meta-source.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"meta-source.js","sourceRoot":"","sources":["../../../src/persistence/source/meta-source.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"validate-source-parameter-ref.d.ts","sourceRoot":"","sources":["../../../src/persistence/source/validate-source-parameter-ref.ts"],"names":[],"mappings":"AAiBA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AAC1D,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AA6B7C,wBAAgB,0BAA0B,CAAC,IAAI,EAAE,QAAQ,GAAG,UAAU,EAAE,CAqGvE"}
1
+ {"version":3,"file":"validate-source-parameter-ref.d.ts","sourceRoot":"","sources":["../../../src/persistence/source/validate-source-parameter-ref.ts"],"names":[],"mappings":"AAiBA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AAC1D,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AA6B7C,wBAAgB,0BAA0B,CAAC,IAAI,EAAE,QAAQ,GAAG,UAAU,EAAE,CA8GvE"}
@@ -34,7 +34,8 @@ export function validateSourceParameterRef(root) {
34
34
  // matches via resolutionKey() (these fixtures declare package at metadata.root
35
35
  // only, so obj.package is undefined and the file-default must be folded in).
36
36
  const objectIndex = new Map();
37
- for (const obj of root.ownChildren().filter((c) => c.type === TYPE_OBJECT)) {
37
+ // ADR-0039: root has no super; children()==ownChildren() but resolving is the default.
38
+ for (const obj of root.children().filter((c) => c.type === TYPE_OBJECT)) {
38
39
  objectIndex.set(obj.name, obj);
39
40
  const fqn = obj.package !== undefined && obj.package !== ""
40
41
  ? `${obj.package}${PACKAGE_SEPARATOR}${obj.name}`
@@ -42,9 +43,12 @@ export function validateSourceParameterRef(root) {
42
43
  objectIndex.set(fqn, obj);
43
44
  objectIndex.set(obj.resolutionKey(), obj);
44
45
  }
45
- for (const obj of root.ownChildren().filter((c) => c.type === TYPE_OBJECT)) {
46
+ // ADR-0039: root has no super; children()==ownChildren() but resolving is the default.
47
+ for (const obj of root.children().filter((c) => c.type === TYPE_OBJECT)) {
48
+ // ADR-0039: own — declaration-layer source iteration (mirrors validateSourceRoles).
46
49
  for (const source of obj.ownChildren().filter((c) => c.type === TYPE_SOURCE && c.subType === SOURCE_SUBTYPE_RDB && c instanceof MetaSource)) {
47
- const ref = source.ownAttr(SOURCE_ATTR_PARAMETER_REF);
50
+ // ADR-0039: resolving — a source may inherit @parameterRef via extends.
51
+ const ref = source.attr(SOURCE_ATTR_PARAMETER_REF);
48
52
  if (typeof ref !== "string" || ref === "")
49
53
  continue;
50
54
  // ERR_PARAMETER_REF_ON_NON_CALLABLE_KIND — checked even before resolution
@@ -71,10 +75,14 @@ export function validateSourceParameterRef(root) {
71
75
  // with origin.passthrough must have a subtype matching the referenced
72
76
  // field. The origin path validation pass checks the from-path resolves;
73
77
  // here we just check the subtype alignment.
74
- for (const paramField of target.ownChildren().filter((c) => c.type === TYPE_FIELD)) {
78
+ // ADR-0039: resolving the parameter value-object's fields may be inherited.
79
+ for (const paramField of target.children().filter((c) => c.type === TYPE_FIELD)) {
80
+ // ADR-0039: own — origin.* never inherits (ADR-0029); the origin child and
81
+ // its @from are read own.
75
82
  const passthrough = paramField.ownChildren().find((c) => c.type === TYPE_ORIGIN && c.subType === ORIGIN_SUBTYPE_PASSTHROUGH);
76
83
  if (passthrough === undefined)
77
84
  continue;
85
+ // ADR-0039: own — origin.* never inherits (ADR-0029).
78
86
  const from = passthrough.ownAttr(ORIGIN_PASSTHROUGH_ATTR_FROM);
79
87
  if (typeof from !== "string" || from === "")
80
88
  continue;
@@ -86,7 +94,8 @@ export function validateSourceParameterRef(root) {
86
94
  const targetEntity = objectIndex.get(targetEntityName);
87
95
  if (targetEntity === undefined)
88
96
  continue; // origin-paths pass surfaces this
89
- const targetField = targetEntity.ownChildren().find((c) => c.type === TYPE_FIELD && c.name === targetFieldName);
97
+ // ADR-0039: resolving the referenced entity's field may be inherited via extends.
98
+ const targetField = targetEntity.children().find((c) => c.type === TYPE_FIELD && c.name === targetFieldName);
90
99
  if (targetField === undefined)
91
100
  continue;
92
101
  if (paramField.subType !== targetField.subType) {
@@ -1 +1 @@
1
- {"version":3,"file":"validate-source-parameter-ref.js","sourceRoot":"","sources":["../../../src/persistence/source/validate-source-parameter-ref.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"validate-source-parameter-ref.js","sourceRoot":"","sources":["../../../src/persistence/source/validate-source-parameter-ref.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"validate-source-physical-names.d.ts","sourceRoot":"","sources":["../../../src/persistence/source/validate-source-physical-names.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AAC1D,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAqBrD,MAAM,WAAW,4BAA4B;IAC3C,MAAM,EAAE,UAAU,EAAE,CAAC;IACrB,QAAQ,EAAE,aAAa,EAAE,CAAC;CAC3B;AAED,wBAAgB,2BAA2B,CAAC,IAAI,EAAE,QAAQ,GAAG,4BAA4B,CA2ExF"}
1
+ {"version":3,"file":"validate-source-physical-names.d.ts","sourceRoot":"","sources":["../../../src/persistence/source/validate-source-physical-names.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AAC1D,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAqBrD,MAAM,WAAW,4BAA4B;IAC3C,MAAM,EAAE,UAAU,EAAE,CAAC;IACrB,QAAQ,EAAE,aAAa,EAAE,CAAC;CAC3B;AAED,wBAAgB,2BAA2B,CAAC,IAAI,EAAE,QAAQ,GAAG,4BAA4B,CAmFxF"}
@@ -23,7 +23,11 @@ const ALL_PHYSICAL_NAME_ALIASES = [
23
23
  export function validateSourcePhysicalNames(root) {
24
24
  const errors = [];
25
25
  const warnings = [];
26
- for (const obj of root.ownChildren().filter((c) => c.type === TYPE_OBJECT)) {
26
+ // ADR-0039: root has no super; children()==ownChildren() but resolving is the default.
27
+ for (const obj of root.children().filter((c) => c.type === TYPE_OBJECT)) {
28
+ // ADR-0039: own — validates the physical-name aliases DECLARED on this object's
29
+ // own sources (declaration-layer, mirrors validateSourceRoles); an inherited
30
+ // source's aliases were validated on the object that declares it.
27
31
  const sources = obj
28
32
  .ownChildren()
29
33
  .filter((c) => c.type === TYPE_SOURCE && c.subType === SOURCE_SUBTYPE_RDB && c instanceof MetaSource);
@@ -31,12 +35,16 @@ export function validateSourcePhysicalNames(root) {
31
35
  // Empty-string check first — explicit "" is meaningless and an
32
36
  // authoring error regardless of which alias was used.
33
37
  for (const attr of ALL_PHYSICAL_NAME_ALIASES) {
38
+ // ADR-0039: own — the "exactly one alias, non-empty" rule is a per-source
39
+ // OWN-declaration constraint (resolving would conflate an inherited alias
40
+ // with an own one and falsely trip ERR_PHYSICAL_NAME_MULTIPLE).
34
41
  const v = source.ownAttr(attr);
35
42
  if (typeof v === "string" && v === "") {
36
43
  errors.push(new ParseError(`source.rdb on object "${obj.name}" sets @${attr} to an empty string; physical name attrs require a non-empty value`, { code: "ERR_BAD_ATTR_VALUE", source: source.source }));
37
44
  }
38
45
  }
39
46
  const setAliases = ALL_PHYSICAL_NAME_ALIASES.filter((attr) => {
47
+ // ADR-0039: own — per-source own-declaration constraint (see above).
40
48
  const v = source.ownAttr(attr);
41
49
  return typeof v === "string" && v !== "";
42
50
  });
@@ -1 +1 @@
1
- {"version":3,"file":"validate-source-physical-names.js","sourceRoot":"","sources":["../../../src/persistence/source/validate-source-physical-names.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"validate-source-physical-names.js","sourceRoot":"","sources":["../../../src/persistence/source/validate-source-physical-names.ts"],"names":[],"mappings":"AAAA,qFAAqF;AACrF,EAAE;AACF,kFAAkF;AAClF,8EAA8E;AAC9E,8EAA8E;AAC9E,wFAAwF;AACxF,EAAE;AACF,SAAS;AACT,oFAAoF;AACpF,6FAA6F;AAC7F,2FAA2F;AAG3F,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAE7C,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AACtE,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EACL,iBAAiB,EACjB,gBAAgB,EAChB,6BAA6B,EAC7B,gBAAgB,EAChB,oBAAoB,EACpB,kBAAkB,EAClB,0BAA0B,GAC3B,MAAM,uBAAuB,CAAC;AAE/B,MAAM,yBAAyB,GAAG;IAChC,iBAAiB;IACjB,gBAAgB;IAChB,6BAA6B;IAC7B,gBAAgB;IAChB,oBAAoB;CACZ,CAAC;AAOX,MAAM,UAAU,2BAA2B,CAAC,IAAc;IACxD,MAAM,MAAM,GAAiB,EAAE,CAAC;IAChC,MAAM,QAAQ,GAAoB,EAAE,CAAC;IAErC,uFAAuF;IACvF,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,WAAW,CAAC,EAAE,CAAC;QACxE,gFAAgF;QAChF,6EAA6E;QAC7E,kEAAkE;QAClE,MAAM,OAAO,GAAG,GAAG;aAChB,WAAW,EAAE;aACb,MAAM,CACL,CAAC,CAAC,EAAmB,EAAE,CACrB,CAAC,CAAC,IAAI,KAAK,WAAW,IAAI,CAAC,CAAC,OAAO,KAAK,kBAAkB,IAAI,CAAC,YAAY,UAAU,CACxF,CAAC;QAEJ,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;YAC7B,+DAA+D;YAC/D,sDAAsD;YACtD,KAAK,MAAM,IAAI,IAAI,yBAAyB,EAAE,CAAC;gBAC7C,0EAA0E;gBAC1E,0EAA0E;gBAC1E,gEAAgE;gBAChE,MAAM,CAAC,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;gBAC/B,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,KAAK,EAAE,EAAE,CAAC;oBACtC,MAAM,CAAC,IAAI,CACT,IAAI,UAAU,CACZ,yBAAyB,GAAG,CAAC,IAAI,WAAW,IAAI,oEAAoE,EACpH,EAAE,IAAI,EAAE,oBAAoB,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,CACtD,CACF,CAAC;gBACJ,CAAC;YACH,CAAC;YAED,MAAM,UAAU,GAAG,yBAAyB,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE;gBAC3D,qEAAqE;gBACrE,MAAM,CAAC,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;gBAC/B,OAAO,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,KAAK,EAAE,CAAC;YAC3C,CAAC,CAAC,CAAC;YAEH,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC1B,MAAM,CAAC,IAAI,CACT,IAAI,UAAU,CACZ,yBAAyB,GAAG,CAAC,IAAI,8CAA8C,UAAU;qBACtF,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;qBACnB,IAAI,CAAC,IAAI,CAAC,oBAAoB,EACjC,EAAE,IAAI,EAAE,4BAA4B,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,CAC9D,CACF,CAAC;gBACF,SAAS;YACX,CAAC;YAED,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC;gBAAE,SAAS;YAEtC,MAAM,WAAW,GAAG,UAAU,CAAC,CAAC,CAAE,CAAC;YACnC,MAAM,aAAa,GAAG,0BAA0B,CAAC,GAAG,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;YAE3E,IAAI,WAAW,KAAK,aAAa;gBAAE,SAAS;YAE5C,kEAAkE;YAClE,IAAI,WAAW,KAAK,iBAAiB,EAAE,CAAC;gBACtC,QAAQ,CAAC,IAAI,CAAC;oBACZ,IAAI,EAAE,iCAAiC;oBACvC,OAAO,EACL,yBAAyB,GAAG,CAAC,IAAI,8BAA8B,MAAM,CAAC,aAAa,KAAK;wBACxF,mCAAmC,aAAa,aAAa;oBAC/D,MAAM,EAAE,MAAM,CAAC,MAAM;iBACtB,CAAC,CAAC;gBACH,SAAS;YACX,CAAC;YAED,sCAAsC;YACtC,MAAM,CAAC,IAAI,CACT,IAAI,UAAU,CACZ,yBAAyB,GAAG,CAAC,IAAI,WAAW,WAAW,iBAAiB,MAAM,CAAC,aAAa,KAAK;gBAC/F,IAAI,WAAW,8BAA8B,YAAY,CAAC,WAAW,CAAC,GAAG,EAC3E,EAAE,IAAI,EAAE,iCAAiC,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,CACnE,CACF,CAAC;QACJ,CAAC;IACH,CAAC;IAED,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC;AAC9B,CAAC;AAED,SAAS,YAAY,CAAC,KAAa;IACjC,KAAK,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,0BAA0B,CAAC,OAAO,EAAE,EAAE,CAAC;QAChE,IAAI,IAAI,KAAK,KAAK;YAAE,OAAO,IAAI,CAAC;IAClC,CAAC;IACD,OAAO,WAAW,CAAC;AACrB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"validate-source-roles.d.ts","sourceRoot":"","sources":["../../../src/persistence/source/validate-source-roles.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AAC1D,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAM7C;;;;;;;GAOG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,QAAQ,GAAG,UAAU,EAAE,CAmDhE"}
1
+ {"version":3,"file":"validate-source-roles.d.ts","sourceRoot":"","sources":["../../../src/persistence/source/validate-source-roles.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AAC1D,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAM7C;;;;;;;GAOG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,QAAQ,GAAG,UAAU,EAAE,CAuDhE"}
@@ -19,7 +19,11 @@ import { OBJECT_SUBTYPE_ENTITY } from "../../core/object/object-constants.js";
19
19
  */
20
20
  export function validateSourceRoles(root) {
21
21
  const errors = [];
22
- for (const obj of root.ownChildren().filter((c) => c.type === TYPE_OBJECT)) {
22
+ // ADR-0039: root has no super; children()==ownChildren() but resolving is the default.
23
+ for (const obj of root.children().filter((c) => c.type === TYPE_OBJECT)) {
24
+ // ADR-0039: own — the one-primary rule is a DECLARATION-layer check (cross-port
25
+ // parity: Java uses getSources(false)); it counts sources declared on THIS object,
26
+ // not inherited ones. The role/kind reads below resolve via MetaSource getters.
23
27
  const sources = obj
24
28
  .ownChildren()
25
29
  .filter((c) => c.type === TYPE_SOURCE)
@@ -1 +1 @@
1
- {"version":3,"file":"validate-source-roles.js","sourceRoot":"","sources":["../../../src/persistence/source/validate-source-roles.ts"],"names":[],"mappings":"AAAA,kDAAkD;AAClD,EAAE;AACF,+EAA+E;AAC/E,iEAAiE;AACjE,4EAA4E;AAC5E,0EAA0E;AAG1E,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AACtE,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,mBAAmB,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AACpF,OAAO,EAAE,qBAAqB,EAAE,MAAM,uCAAuC,CAAC;AAE9E;;;;;;;GAOG;AACH,MAAM,UAAU,mBAAmB,CAAC,IAAc;IAChD,MAAM,MAAM,GAAiB,EAAE,CAAC;IAEhC,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,WAAW,CAAC,EAAE,CAAC;QAC3E,MAAM,OAAO,GAAG,GAAG;aAChB,WAAW,EAAE;aACb,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,WAAW,CAAC;aACrC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAe,CAAC,CAAC;QAE/B,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;YAAE,SAAS;QAEnC,MAAM,YAAY,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,mBAAmB,CAAC,CAAC,MAAM,CAAC;QAElF,IAAI,YAAY,KAAK,CAAC,EAAE,CAAC;YACvB,MAAM,CAAC,IAAI,CACT,IAAI,UAAU,CACZ,WAAW,GAAG,CAAC,IAAI,cAAc,OAAO,CAAC,MAAM,iCAAiC,mBAAmB,GAAG,EACtG,EAAE,IAAI,EAAE,uBAAuB,EAAE,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,CACtD,CACF,CAAC;QACJ,CAAC;aAAM,IAAI,YAAY,GAAG,CAAC,EAAE,CAAC;YAC5B,MAAM,CAAC,IAAI,CACT,IAAI,UAAU,CACZ,WAAW,GAAG,CAAC,IAAI,cAAc,YAAY,uBAAuB,mBAAmB,4BAA4B,EACnH,EAAE,IAAI,EAAE,6BAA6B,EAAE,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,CAC5D,CACF,CAAC;QACJ,CAAC;QAED,2EAA2E;QAC3E,6EAA6E;QAC7E,uEAAuE;QACvE,0EAA0E;QAC1E,6DAA6D;QAC7D,IAAI,GAAG,CAAC,OAAO,KAAK,qBAAqB,EAAE,CAAC;YAC1C,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;gBACxB,IAAI,CAAC,CAAC,IAAI,KAAK,mBAAmB,IAAI,sBAAsB,CAAC,GAAG,CAAC,CAAC,CAAC,aAAa,CAAC,EAAE,CAAC;oBAClF,MAAM,CAAC,IAAI,CACT,IAAI,UAAU,CACZ,WAAW,GAAG,CAAC,IAAI,6CAA6C,CAAC,CAAC,aAAa,MAAM;wBACnF,4EAA4E;wBAC5E,4CAA4C,EAC9C,EAAE,IAAI,EAAE,oCAAoC,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CACjE,CACF,CAAC;gBACJ,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC"}
1
+ {"version":3,"file":"validate-source-roles.js","sourceRoot":"","sources":["../../../src/persistence/source/validate-source-roles.ts"],"names":[],"mappings":"AAAA,kDAAkD;AAClD,EAAE;AACF,+EAA+E;AAC/E,iEAAiE;AACjE,4EAA4E;AAC5E,0EAA0E;AAG1E,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AACtE,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,mBAAmB,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AACpF,OAAO,EAAE,qBAAqB,EAAE,MAAM,uCAAuC,CAAC;AAE9E;;;;;;;GAOG;AACH,MAAM,UAAU,mBAAmB,CAAC,IAAc;IAChD,MAAM,MAAM,GAAiB,EAAE,CAAC;IAEhC,uFAAuF;IACvF,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,WAAW,CAAC,EAAE,CAAC;QACxE,gFAAgF;QAChF,mFAAmF;QACnF,gFAAgF;QAChF,MAAM,OAAO,GAAG,GAAG;aAChB,WAAW,EAAE;aACb,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,WAAW,CAAC;aACrC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAe,CAAC,CAAC;QAE/B,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;YAAE,SAAS;QAEnC,MAAM,YAAY,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,mBAAmB,CAAC,CAAC,MAAM,CAAC;QAElF,IAAI,YAAY,KAAK,CAAC,EAAE,CAAC;YACvB,MAAM,CAAC,IAAI,CACT,IAAI,UAAU,CACZ,WAAW,GAAG,CAAC,IAAI,cAAc,OAAO,CAAC,MAAM,iCAAiC,mBAAmB,GAAG,EACtG,EAAE,IAAI,EAAE,uBAAuB,EAAE,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,CACtD,CACF,CAAC;QACJ,CAAC;aAAM,IAAI,YAAY,GAAG,CAAC,EAAE,CAAC;YAC5B,MAAM,CAAC,IAAI,CACT,IAAI,UAAU,CACZ,WAAW,GAAG,CAAC,IAAI,cAAc,YAAY,uBAAuB,mBAAmB,4BAA4B,EACnH,EAAE,IAAI,EAAE,6BAA6B,EAAE,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,CAC5D,CACF,CAAC;QACJ,CAAC;QAED,2EAA2E;QAC3E,6EAA6E;QAC7E,uEAAuE;QACvE,0EAA0E;QAC1E,6DAA6D;QAC7D,IAAI,GAAG,CAAC,OAAO,KAAK,qBAAqB,EAAE,CAAC;YAC1C,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;gBACxB,IAAI,CAAC,CAAC,IAAI,KAAK,mBAAmB,IAAI,sBAAsB,CAAC,GAAG,CAAC,CAAC,CAAC,aAAa,CAAC,EAAE,CAAC;oBAClF,MAAM,CAAC,IAAI,CACT,IAAI,UAAU,CACZ,WAAW,GAAG,CAAC,IAAI,6CAA6C,CAAC,CAAC,aAAa,MAAM;wBACnF,4EAA4E;wBAC5E,4CAA4C,EAC9C,EAAE,IAAI,EAAE,oCAAoC,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CACjE,CACF,CAAC;gBACJ,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"meta-layout.d.ts","sourceRoot":"","sources":["../../../src/presentation/layout/meta-layout.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AASrD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qCAAqC,CAAC;AAE1E,qBAAa,UAAW,SAAQ,QAAQ;IACtC,2DAA2D;IAC3D,IAAI,QAAQ,IAAI,MAAM,GAAG,SAAS,CAGjC;IAED,gEAAgE;IAChE,IAAI,gBAAgB,IAAI,MAAM,GAAG,SAAS,CAGzC;IAED;;;OAGG;IACH,IAAI,gBAAgB,IAAI,cAAc,GAAG,SAAS,CAGjD;IAED;;;OAGG;IACH,IAAI,UAAU,IAAI,OAAO,CAExB;IAED,gFAAgF;IAChF,IAAI,MAAM,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,CAKhD;IAED,oFAAoF;IACpF,IAAI,OAAO,IAAI,MAAM,EAAE,CAGtB;CACF"}
1
+ {"version":3,"file":"meta-layout.d.ts","sourceRoot":"","sources":["../../../src/presentation/layout/meta-layout.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AASrD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qCAAqC,CAAC;AAE1E,qBAAa,UAAW,SAAQ,QAAQ;IACtC,2DAA2D;IAC3D,IAAI,QAAQ,IAAI,MAAM,GAAG,SAAS,CAIjC;IAED,gEAAgE;IAChE,IAAI,gBAAgB,IAAI,MAAM,GAAG,SAAS,CAIzC;IAED;;;OAGG;IACH,IAAI,gBAAgB,IAAI,cAAc,GAAG,SAAS,CAIjD;IAED;;;OAGG;IACH,IAAI,UAAU,IAAI,OAAO,CAGxB;IAED,gFAAgF;IAChF,IAAI,MAAM,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,CAMhD;IAED,oFAAoF;IACpF,IAAI,OAAO,IAAI,MAAM,EAAE,CAItB;CACF"}
@@ -8,12 +8,14 @@ import { LAYOUT_DATA_GRID_ATTR_PAGE_SIZE, LAYOUT_DATA_GRID_ATTR_DEFAULT_SORT_FIE
8
8
  export class MetaLayout extends MetaData {
9
9
  /** The number of rows per page for the dataGrid layout. */
10
10
  get pageSize() {
11
- const v = this.ownAttr(LAYOUT_DATA_GRID_ATTR_PAGE_SIZE);
11
+ // ADR-0039: resolving — a layout may inherit its grid attrs via extends.
12
+ const v = this.attr(LAYOUT_DATA_GRID_ATTR_PAGE_SIZE);
12
13
  return typeof v === "number" ? v : undefined;
13
14
  }
14
15
  /** The field name to sort by default in the dataGrid layout. */
15
16
  get defaultSortField() {
16
- const v = this.ownAttr(LAYOUT_DATA_GRID_ATTR_DEFAULT_SORT_FIELD);
17
+ // ADR-0039: resolving — a layout may inherit its grid attrs via extends.
18
+ const v = this.attr(LAYOUT_DATA_GRID_ATTR_DEFAULT_SORT_FIELD);
17
19
  return typeof v === "string" ? v : undefined;
18
20
  }
19
21
  /**
@@ -21,7 +23,8 @@ export class MetaLayout extends MetaData {
21
23
  * Returns `undefined` when the attr is absent.
22
24
  */
23
25
  get defaultSortOrder() {
24
- const v = this.ownAttr(LAYOUT_DATA_GRID_ATTR_DEFAULT_SORT_ORDER);
26
+ // ADR-0039: resolving — a layout may inherit its grid attrs via extends.
27
+ const v = this.attr(LAYOUT_DATA_GRID_ATTR_DEFAULT_SORT_ORDER);
25
28
  return typeof v === "string" ? v : undefined;
26
29
  }
27
30
  /**
@@ -29,18 +32,21 @@ export class MetaLayout extends MetaData {
29
32
  * Defaults to `false` when the attr is absent.
30
33
  */
31
34
  get filterable() {
32
- return this.ownAttr(LAYOUT_DATA_GRID_ATTR_FILTERABLE) === true;
35
+ // ADR-0039: resolving — a layout may inherit @filterable via extends.
36
+ return this.attr(LAYOUT_DATA_GRID_ATTR_FILTERABLE) === true;
33
37
  }
34
38
  /** The desugared preset filter object for the dataGrid layout, or undefined. */
35
39
  get filter() {
36
- const v = this.ownAttr(LAYOUT_DATA_GRID_ATTR_FILTER);
40
+ // ADR-0039: resolving — a layout may inherit its grid attrs via extends.
41
+ const v = this.attr(LAYOUT_DATA_GRID_ATTR_FILTER);
37
42
  return typeof v === "object" && v !== null && !Array.isArray(v)
38
43
  ? v
39
44
  : undefined;
40
45
  }
41
46
  /** The ordered list of field names to display as columns in the dataGrid layout. */
42
47
  get columns() {
43
- const c = this.ownAttr(LAYOUT_DATA_GRID_ATTR_COLUMNS);
48
+ // ADR-0039: resolving — a layout may inherit its grid attrs via extends.
49
+ const c = this.attr(LAYOUT_DATA_GRID_ATTR_COLUMNS);
44
50
  return Array.isArray(c) ? c : [];
45
51
  }
46
52
  }
@@ -1 +1 @@
1
- {"version":3,"file":"meta-layout.js","sourceRoot":"","sources":["../../../src/presentation/layout/meta-layout.ts"],"names":[],"mappings":"AAAA,0DAA0D;AAC1D,+EAA+E;AAC/E,4DAA4D;AAC5D,EAAE;AACF,wEAAwE;AAExE,OAAO,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AACrD,OAAO,EACL,+BAA+B,EAC/B,wCAAwC,EACxC,wCAAwC,EACxC,gCAAgC,EAChC,4BAA4B,EAC5B,6BAA6B,GAC9B,MAAM,uBAAuB,CAAC;AAG/B,MAAM,OAAO,UAAW,SAAQ,QAAQ;IACtC,2DAA2D;IAC3D,IAAI,QAAQ;QACV,MAAM,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,+BAA+B,CAAC,CAAC;QACxD,OAAO,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAC/C,CAAC;IAED,gEAAgE;IAChE,IAAI,gBAAgB;QAClB,MAAM,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,wCAAwC,CAAC,CAAC;QACjE,OAAO,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAC/C,CAAC;IAED;;;OAGG;IACH,IAAI,gBAAgB;QAClB,MAAM,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,wCAAwC,CAAC,CAAC;QACjE,OAAO,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAE,CAAoB,CAAC,CAAC,CAAC,SAAS,CAAC;IACnE,CAAC;IAED;;;OAGG;IACH,IAAI,UAAU;QACZ,OAAO,IAAI,CAAC,OAAO,CAAC,gCAAgC,CAAC,KAAK,IAAI,CAAC;IACjE,CAAC;IAED,gFAAgF;IAChF,IAAI,MAAM;QACR,MAAM,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,4BAA4B,CAAC,CAAC;QACrD,OAAO,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;YAC7D,CAAC,CAAE,CAA6B;YAChC,CAAC,CAAC,SAAS,CAAC;IAChB,CAAC;IAED,oFAAoF;IACpF,IAAI,OAAO;QACT,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-layout.js","sourceRoot":"","sources":["../../../src/presentation/layout/meta-layout.ts"],"names":[],"mappings":"AAAA,0DAA0D;AAC1D,+EAA+E;AAC/E,4DAA4D;AAC5D,EAAE;AACF,wEAAwE;AAExE,OAAO,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AACrD,OAAO,EACL,+BAA+B,EAC/B,wCAAwC,EACxC,wCAAwC,EACxC,gCAAgC,EAChC,4BAA4B,EAC5B,6BAA6B,GAC9B,MAAM,uBAAuB,CAAC;AAG/B,MAAM,OAAO,UAAW,SAAQ,QAAQ;IACtC,2DAA2D;IAC3D,IAAI,QAAQ;QACV,yEAAyE;QACzE,MAAM,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,+BAA+B,CAAC,CAAC;QACrD,OAAO,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAC/C,CAAC;IAED,gEAAgE;IAChE,IAAI,gBAAgB;QAClB,yEAAyE;QACzE,MAAM,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,wCAAwC,CAAC,CAAC;QAC9D,OAAO,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAC/C,CAAC;IAED;;;OAGG;IACH,IAAI,gBAAgB;QAClB,yEAAyE;QACzE,MAAM,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,wCAAwC,CAAC,CAAC;QAC9D,OAAO,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAE,CAAoB,CAAC,CAAC,CAAC,SAAS,CAAC;IACnE,CAAC;IAED;;;OAGG;IACH,IAAI,UAAU;QACZ,sEAAsE;QACtE,OAAO,IAAI,CAAC,IAAI,CAAC,gCAAgC,CAAC,KAAK,IAAI,CAAC;IAC9D,CAAC;IAED,gFAAgF;IAChF,IAAI,MAAM;QACR,yEAAyE;QACzE,MAAM,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,4BAA4B,CAAC,CAAC;QAClD,OAAO,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;YAC7D,CAAC,CAAE,CAA6B;YAChC,CAAC,CAAC,SAAS,CAAC;IAChB,CAAC;IAED,oFAAoF;IACpF,IAAI,OAAO;QACT,yEAAyE;QACzE,MAAM,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,6BAA6B,CAAC,CAAC;QACnD,OAAO,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAE,CAAc,CAAC,CAAC,CAAC,EAAE,CAAC;IACjD,CAAC;CACF"}
@@ -8,6 +8,14 @@ interface ManifestAttr {
8
8
  /** True for an array-valued attr (a list of the scalar `valueType`); the orthogonal array axis. */
9
9
  isArray: boolean;
10
10
  required: boolean;
11
+ /**
12
+ * The closed value-set of a closed-enum attr (ADR-0036 Wave 1, decision 5).
13
+ * Emitted ONLY when the attr declares a non-empty `allowedValues` set; OMITTED
14
+ * for open / format-validated attrs (e.g. @currency ISO-4217, @locale BCP-47).
15
+ * This byte-gates closed-enum vocabularies cross-port — the gate that catches a
16
+ * value-set drifting between ports (the failure mode the dbColumnType slim hit).
17
+ */
18
+ allowedValues?: readonly string[];
11
19
  /** FR-033 — human/AI-facing description of the attribute (required, non-empty). */
12
20
  description: string;
13
21
  /** FR-033 — prose documenting the complex rules enforced in code. Emitted only when present. */
@@ -93,8 +101,10 @@ export declare function buildRegistryManifest(registry: TypeRegistry): RegistryM
93
101
  * - 2-space indentation (JSON.stringify(_, _, 2)).
94
102
  * - Object keys in a fixed order (JSON.stringify preserves insertion order):
95
103
  * the manifest is built with `types`, `commonAttrs`, `defaultSubTypes`.
96
- * - Each attr: `name`, `valueType`, `isArray`, `required`, `description`,
97
- * then optional `rules`, `example`, `whenToUse` (each omitted when absent).
104
+ * - Each attr: `name`, `valueType`, `isArray`, `required`, then optional
105
+ * `allowedValues` (omitted unless the attr declares a non-empty closed set —
106
+ * decision 5), then `description`, then optional `rules`, `example`,
107
+ * `whenToUse` (each omitted when absent).
98
108
  * - Each type: `type`, `subType`, `description`, then optional `rules`,
99
109
  * `example`, `whenToUse` (omitted when absent), then `attrs`, `children`,
100
110
  * then optional `parents` (omitted when absent/empty).
@@ -1 +1 @@
1
- {"version":3,"file":"registry-manifest.d.ts","sourceRoot":"","sources":["../src/registry-manifest.ts"],"names":[],"mappings":"AA0BA,OAAO,KAAK,EAAyC,YAAY,EAAE,MAAM,eAAe,CAAC;AAEzF,OAAO,EAEL,eAAe,EAGhB,MAAM,mCAAmC,CAAC;AAE3C,+EAA+E;AAC/E,UAAU,YAAY;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,oGAAoG;IACpG,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,mGAAmG;IACnG,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,OAAO,CAAC;IAClB,mFAAmF;IACnF,WAAW,EAAE,MAAM,CAAC;IACpB,gGAAgG;IAChG,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,4DAA4D;IAC5D,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,wFAAwF;IACxF,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,qEAAqE;AACrE,UAAU,aAAa;IACrB,+CAA+C;IAC/C,SAAS,EAAE,MAAM,CAAC;IAClB,kGAAkG;IAClG,YAAY,EAAE,MAAM,GAAG,SAAS,MAAM,EAAE,CAAC;IACzC,6CAA6C;IAC7C,SAAS,EAAE,MAAM,CAAC;IAClB,uEAAuE;IACvE,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,4FAA4F;IAC5F,GAAG,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,6FAA6F;IAC7F,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED,gGAAgG;AAChG,UAAU,YAAY;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,sFAAsF;IACtF,WAAW,EAAE,MAAM,CAAC;IACpB,gGAAgG;IAChG,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,sDAAsD;IACtD,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,2FAA2F;IAC3F,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,YAAY,EAAE,CAAC;IACtB,iFAAiF;IACjF,QAAQ,EAAE,aAAa,EAAE,CAAC;IAC1B,+FAA+F;IAC/F,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;CACpB;AAED,kFAAkF;AAClF,UAAU,gBAAgB;IACxB,KAAK,EAAE,YAAY,EAAE,CAAC;IACtB,WAAW,EAAE,YAAY,EAAE,CAAC;IAC5B,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACzC;AAgHD;;;;;;;;;;;;;;;;;;;GAmBG;AACH,QAAA,MAAM,QAAQ,EAAG,UAAmB,CAAC;AACrC,MAAM,MAAM,kBAAkB,GAAG,eAAe,GAAG,OAAO,QAAQ,CAAC;AAEnE,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,kBAAkB,CAEpE;AA6BD;;;;;GAKG;AACH,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,YAAY,GAAG,gBAAgB,CAqC9E;AAED;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,YAAY,GAAG,MAAM,CAGnE"}
1
+ {"version":3,"file":"registry-manifest.d.ts","sourceRoot":"","sources":["../src/registry-manifest.ts"],"names":[],"mappings":"AA6BA,OAAO,KAAK,EAAyC,YAAY,EAAE,MAAM,eAAe,CAAC;AAEzF,OAAO,EAEL,eAAe,EAGhB,MAAM,mCAAmC,CAAC;AAE3C,+EAA+E;AAC/E,UAAU,YAAY;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,oGAAoG;IACpG,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,mGAAmG;IACnG,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,OAAO,CAAC;IAClB;;;;;;OAMG;IACH,aAAa,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAClC,mFAAmF;IACnF,WAAW,EAAE,MAAM,CAAC;IACpB,gGAAgG;IAChG,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,4DAA4D;IAC5D,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,wFAAwF;IACxF,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,qEAAqE;AACrE,UAAU,aAAa;IACrB,+CAA+C;IAC/C,SAAS,EAAE,MAAM,CAAC;IAClB,kGAAkG;IAClG,YAAY,EAAE,MAAM,GAAG,SAAS,MAAM,EAAE,CAAC;IACzC,6CAA6C;IAC7C,SAAS,EAAE,MAAM,CAAC;IAClB,uEAAuE;IACvE,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,4FAA4F;IAC5F,GAAG,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,6FAA6F;IAC7F,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED,gGAAgG;AAChG,UAAU,YAAY;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,sFAAsF;IACtF,WAAW,EAAE,MAAM,CAAC;IACpB,gGAAgG;IAChG,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,sDAAsD;IACtD,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,2FAA2F;IAC3F,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,YAAY,EAAE,CAAC;IACtB,iFAAiF;IACjF,QAAQ,EAAE,aAAa,EAAE,CAAC;IAC1B,+FAA+F;IAC/F,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;CACpB;AAED,kFAAkF;AAClF,UAAU,gBAAgB;IACxB,KAAK,EAAE,YAAY,EAAE,CAAC;IACtB,WAAW,EAAE,YAAY,EAAE,CAAC;IAC5B,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACzC;AAuHD;;;;;;;;;;;;;;;;;;;GAmBG;AACH,QAAA,MAAM,QAAQ,EAAG,UAAmB,CAAC;AACrC,MAAM,MAAM,kBAAkB,GAAG,eAAe,GAAG,OAAO,QAAQ,CAAC;AAEnE,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,kBAAkB,CAEpE;AA6BD;;;;;GAKG;AACH,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,YAAY,GAAG,gBAAgB,CAqC9E;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,YAAY,GAAG,MAAM,CAGnE"}
@@ -9,12 +9,15 @@
9
9
  //
10
10
  // The IN/OUT boundary is documented in fixtures/registry-conformance/README.md.
11
11
  // In short, the manifest emits: type.subType + per-type/per-attr `description`
12
- // (FR-033) + attrs[{name, valueType, isArray, required, description, rules?,
13
- // example?, whenToUse?}] + the structural constraint graph (children / parents /
14
- // cardinality, FR-033) + commonAttrs + defaultSubTypes. EXCLUDED (per-port-
15
- // physical or not-universally-tracked-on-the-registry): factories/native
16
- // bindings; AttrSchema.default and allowedValues (Java's attr model
17
- // ChildRequirement carries neither).
12
+ // (FR-033) + attrs[{name, valueType, isArray, required, allowedValues?,
13
+ // description, rules?, example?, whenToUse?}] + the structural constraint graph
14
+ // (children / parents / cardinality, FR-033) + commonAttrs + defaultSubTypes.
15
+ // `allowedValues` (ADR-0036 Wave 1, decision 5) is the closed value-set of a
16
+ // closed-enum attr emitted ONLY when the attr declares one, OMITTED for open /
17
+ // format-validated attrs (@currency, @locale). It byte-gates closed vocabularies
18
+ // cross-port (the gate that catches a value-set silently drifting between ports).
19
+ // EXCLUDED (per-port-physical or not-universally-tracked-on-the-registry):
20
+ // factories/native bindings; AttrSchema.default.
18
21
  //
19
22
  // FR-033 Task 5 GREW the manifest: it now also emits the documentation surface
20
23
  // (every type/attr carries a required, non-empty `description`; optional `rules`/
@@ -50,11 +53,18 @@ function toManifestAttr(attr) {
50
53
  // FR-033: the documentation surface (`description` required + non-empty;
51
54
  // `rules`/`example`/`whenToUse` emitted ONLY when present) follows the
52
55
  // existing facets, preserving key order for byte-stability.
56
+ // The closed value-set, emitted only when present + non-empty (decision 5).
57
+ // AttrValue is string | number | boolean | array; a closed enum is always a set
58
+ // of scalar string members, so stringify each for a stable cross-port surface.
59
+ // Spread BEFORE `description` so the JSON key order is name → valueType →
60
+ // isArray → required → (allowedValues?) → description → (rules?/example?/whenToUse?).
61
+ const hasAllowed = attr.allowedValues !== undefined && attr.allowedValues.length > 0;
53
62
  const out = {
54
63
  name: attr.name,
55
64
  valueType,
56
65
  isArray,
57
66
  required: attr.required,
67
+ ...(hasAllowed ? { allowedValues: attr.allowedValues.map((v) => String(v)) } : {}),
58
68
  description: attr.description,
59
69
  };
60
70
  if (attr.rules !== undefined)
@@ -216,8 +226,10 @@ export function buildRegistryManifest(registry) {
216
226
  * - 2-space indentation (JSON.stringify(_, _, 2)).
217
227
  * - Object keys in a fixed order (JSON.stringify preserves insertion order):
218
228
  * the manifest is built with `types`, `commonAttrs`, `defaultSubTypes`.
219
- * - Each attr: `name`, `valueType`, `isArray`, `required`, `description`,
220
- * then optional `rules`, `example`, `whenToUse` (each omitted when absent).
229
+ * - Each attr: `name`, `valueType`, `isArray`, `required`, then optional
230
+ * `allowedValues` (omitted unless the attr declares a non-empty closed set —
231
+ * decision 5), then `description`, then optional `rules`, `example`,
232
+ * `whenToUse` (each omitted when absent).
221
233
  * - Each type: `type`, `subType`, `description`, then optional `rules`,
222
234
  * `example`, `whenToUse` (omitted when absent), then `attrs`, `children`,
223
235
  * then optional `parents` (omitted when absent/empty).