@metaobjectsdev/metadata 1.0.12 → 1.1.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 (233) hide show
  1. package/README.md +2 -0
  2. package/dist/attr-schema-validate.d.ts.map +1 -1
  3. package/dist/attr-schema-validate.js +9 -12
  4. package/dist/attr-schema-validate.js.map +1 -1
  5. package/dist/constants.d.ts +1 -0
  6. package/dist/constants.d.ts.map +1 -1
  7. package/dist/constants.js +1 -0
  8. package/dist/constants.js.map +1 -1
  9. package/dist/core/attr/meta-attr-filter.d.ts.map +1 -1
  10. package/dist/core/attr/meta-attr-filter.js +8 -2
  11. package/dist/core/attr/meta-attr-filter.js.map +1 -1
  12. package/dist/core/attr/meta-attr.d.ts +14 -0
  13. package/dist/core/attr/meta-attr.d.ts.map +1 -1
  14. package/dist/core/attr/meta-attr.js +23 -1
  15. package/dist/core/attr/meta-attr.js.map +1 -1
  16. package/dist/core/field/shared-enum.d.ts +21 -0
  17. package/dist/core/field/shared-enum.d.ts.map +1 -0
  18. package/dist/core/field/shared-enum.js +49 -0
  19. package/dist/core/field/shared-enum.js.map +1 -0
  20. package/dist/core/identity/meta-identity.d.ts +1 -1
  21. package/dist/core/identity/meta-identity.d.ts.map +1 -1
  22. package/dist/core/identity/meta-identity.js +8 -13
  23. package/dist/core/identity/meta-identity.js.map +1 -1
  24. package/dist/core/index.d.ts +2 -0
  25. package/dist/core/index.d.ts.map +1 -1
  26. package/dist/core/index.js +3 -0
  27. package/dist/core/index.js.map +1 -1
  28. package/dist/core/object/object-constants.d.ts +14 -1
  29. package/dist/core/object/object-constants.d.ts.map +1 -1
  30. package/dist/core/object/object-constants.js +18 -0
  31. package/dist/core/object/object-constants.js.map +1 -1
  32. package/dist/core/object/object-definition.embedded.d.ts.map +1 -1
  33. package/dist/core/object/object-definition.embedded.js +80 -0
  34. package/dist/core/object/object-definition.embedded.js.map +1 -1
  35. package/dist/core/relationship/derive-m2m-fields.d.ts +1 -1
  36. package/dist/core/relationship/derive-m2m-fields.d.ts.map +1 -1
  37. package/dist/core/relationship/derive-m2m-fields.js +15 -44
  38. package/dist/core/relationship/derive-m2m-fields.js.map +1 -1
  39. package/dist/core/relationship/find-reference.d.ts.map +1 -1
  40. package/dist/core/relationship/find-reference.js +4 -2
  41. package/dist/core/relationship/find-reference.js.map +1 -1
  42. package/dist/core/relationship/resolve-relationship-reference.d.ts +6 -5
  43. package/dist/core/relationship/resolve-relationship-reference.d.ts.map +1 -1
  44. package/dist/core/relationship/resolve-relationship-reference.js +9 -7
  45. package/dist/core/relationship/resolve-relationship-reference.js.map +1 -1
  46. package/dist/core/reporting/meta-dimension.d.ts +13 -0
  47. package/dist/core/reporting/meta-dimension.d.ts.map +1 -0
  48. package/dist/core/reporting/meta-dimension.js +30 -0
  49. package/dist/core/reporting/meta-dimension.js.map +1 -0
  50. package/dist/core/reporting/meta-measure.d.ts +24 -0
  51. package/dist/core/reporting/meta-measure.d.ts.map +1 -0
  52. package/dist/core/reporting/meta-measure.js +54 -0
  53. package/dist/core/reporting/meta-measure.js.map +1 -0
  54. package/dist/core/reporting/meta-segment.d.ts +6 -0
  55. package/dist/core/reporting/meta-segment.d.ts.map +1 -0
  56. package/dist/core/reporting/meta-segment.js +13 -0
  57. package/dist/core/reporting/meta-segment.js.map +1 -0
  58. package/dist/core/reporting/report-accessors.d.ts +27 -0
  59. package/dist/core/reporting/report-accessors.d.ts.map +1 -0
  60. package/dist/core/reporting/report-accessors.js +56 -0
  61. package/dist/core/reporting/report-accessors.js.map +1 -0
  62. package/dist/core/reporting/report-describe.d.ts +59 -0
  63. package/dist/core/reporting/report-describe.d.ts.map +1 -0
  64. package/dist/core/reporting/report-describe.js +182 -0
  65. package/dist/core/reporting/report-describe.js.map +1 -0
  66. package/dist/core/reporting/report-read-model.d.ts +34 -0
  67. package/dist/core/reporting/report-read-model.d.ts.map +1 -0
  68. package/dist/core/reporting/report-read-model.js +165 -0
  69. package/dist/core/reporting/report-read-model.js.map +1 -0
  70. package/dist/core/reporting/report-shape.d.ts +103 -0
  71. package/dist/core/reporting/report-shape.d.ts.map +1 -0
  72. package/dist/core/reporting/report-shape.js +398 -0
  73. package/dist/core/reporting/report-shape.js.map +1 -0
  74. package/dist/core/reporting/reporting-constants.d.ts +65 -0
  75. package/dist/core/reporting/reporting-constants.d.ts.map +1 -0
  76. package/dist/core/reporting/reporting-constants.js +84 -0
  77. package/dist/core/reporting/reporting-constants.js.map +1 -0
  78. package/dist/core/reporting/reporting-definition.embedded.d.ts +3 -0
  79. package/dist/core/reporting/reporting-definition.embedded.d.ts.map +1 -0
  80. package/dist/core/reporting/reporting-definition.embedded.js +185 -0
  81. package/dist/core/reporting/reporting-definition.embedded.js.map +1 -0
  82. package/dist/core/requirement/resolve-claim.d.ts +8 -0
  83. package/dist/core/requirement/resolve-claim.d.ts.map +1 -1
  84. package/dist/core/requirement/resolve-claim.js +21 -0
  85. package/dist/core/requirement/resolve-claim.js.map +1 -1
  86. package/dist/core/yaml-desugar.d.ts.map +1 -1
  87. package/dist/core/yaml-desugar.js +12 -82
  88. package/dist/core/yaml-desugar.js.map +1 -1
  89. package/dist/core-types.d.ts.map +1 -1
  90. package/dist/core-types.js +28 -1
  91. package/dist/core-types.js.map +1 -1
  92. package/dist/docs-ref.d.ts +19 -0
  93. package/dist/docs-ref.d.ts.map +1 -0
  94. package/dist/docs-ref.js +37 -0
  95. package/dist/docs-ref.js.map +1 -0
  96. package/dist/errors.d.ts +1 -1
  97. package/dist/errors.d.ts.map +1 -1
  98. package/dist/errors.js +24 -6
  99. package/dist/errors.js.map +1 -1
  100. package/dist/fmt.d.ts.map +1 -1
  101. package/dist/fmt.js +3 -1
  102. package/dist/fmt.js.map +1 -1
  103. package/dist/index.d.ts +15 -4
  104. package/dist/index.d.ts.map +1 -1
  105. package/dist/index.js +18 -4
  106. package/dist/index.js.map +1 -1
  107. package/dist/loader/declared-duplicate-fields.d.ts +19 -0
  108. package/dist/loader/declared-duplicate-fields.d.ts.map +1 -0
  109. package/dist/loader/declared-duplicate-fields.js +97 -0
  110. package/dist/loader/declared-duplicate-fields.js.map +1 -0
  111. package/dist/loader/meta-data-loader.d.ts.map +1 -1
  112. package/dist/loader/meta-data-loader.js +18 -1
  113. package/dist/loader/meta-data-loader.js.map +1 -1
  114. package/dist/loader/reporting-validation.d.ts +11 -0
  115. package/dist/loader/reporting-validation.d.ts.map +1 -0
  116. package/dist/loader/reporting-validation.js +883 -0
  117. package/dist/loader/reporting-validation.js.map +1 -0
  118. package/dist/loader/resolve-references.d.ts +8 -0
  119. package/dist/loader/resolve-references.d.ts.map +1 -0
  120. package/dist/loader/resolve-references.js +132 -0
  121. package/dist/loader/resolve-references.js.map +1 -0
  122. package/dist/loader/validation-passes.d.ts.map +1 -1
  123. package/dist/loader/validation-passes.js +14 -9
  124. package/dist/loader/validation-passes.js.map +1 -1
  125. package/dist/loader/validation-registry.d.ts.map +1 -1
  126. package/dist/loader/validation-registry.js +33 -10
  127. package/dist/loader/validation-registry.js.map +1 -1
  128. package/dist/metamodel-docs/index.js +3 -3
  129. package/dist/metamodel-docs/index.js.map +1 -1
  130. package/dist/metamodel-docs/render.js +4 -4
  131. package/dist/metamodel-docs/render.js.map +1 -1
  132. package/dist/naming-refs.d.ts +102 -50
  133. package/dist/naming-refs.d.ts.map +1 -1
  134. package/dist/naming-refs.js +223 -97
  135. package/dist/naming-refs.js.map +1 -1
  136. package/dist/naming.d.ts +65 -7
  137. package/dist/naming.d.ts.map +1 -1
  138. package/dist/naming.js +98 -5
  139. package/dist/naming.js.map +1 -1
  140. package/dist/object-serializer.d.ts.map +1 -1
  141. package/dist/object-serializer.js +6 -9
  142. package/dist/object-serializer.js.map +1 -1
  143. package/dist/parser-core.d.ts.map +1 -1
  144. package/dist/parser-core.js +18 -48
  145. package/dist/parser-core.js.map +1 -1
  146. package/dist/persistence/db/db-definition.embedded.js +2 -2
  147. package/dist/persistence/db/db-definition.embedded.js.map +1 -1
  148. package/dist/persistence/source/meta-source.d.ts +5 -2
  149. package/dist/persistence/source/meta-source.d.ts.map +1 -1
  150. package/dist/persistence/source/meta-source.js +10 -6
  151. package/dist/persistence/source/meta-source.js.map +1 -1
  152. package/dist/registry-manifest-exclusions.js +2 -2
  153. package/dist/registry-manifest-exclusions.js.map +1 -1
  154. package/dist/registry-manifest.d.ts +1 -1
  155. package/dist/registry-manifest.js +1 -1
  156. package/dist/release-docs.d.ts +11 -0
  157. package/dist/release-docs.d.ts.map +1 -0
  158. package/dist/release-docs.js +48 -0
  159. package/dist/release-docs.js.map +1 -0
  160. package/dist/serializer-json.d.ts +15 -1
  161. package/dist/serializer-json.d.ts.map +1 -1
  162. package/dist/serializer-json.js +55 -17
  163. package/dist/serializer-json.js.map +1 -1
  164. package/dist/shared/base-types.d.ts +7 -1
  165. package/dist/shared/base-types.d.ts.map +1 -1
  166. package/dist/shared/base-types.js +9 -0
  167. package/dist/shared/base-types.js.map +1 -1
  168. package/dist/shared/meta-data.d.ts +10 -0
  169. package/dist/shared/meta-data.d.ts.map +1 -1
  170. package/dist/shared/meta-data.js +22 -1
  171. package/dist/shared/meta-data.js.map +1 -1
  172. package/dist/shared/meta-root.d.ts +13 -1
  173. package/dist/shared/meta-root.d.ts.map +1 -1
  174. package/dist/shared/meta-root.js +19 -1
  175. package/dist/shared/meta-root.js.map +1 -1
  176. package/dist/super-resolve.d.ts +4 -1
  177. package/dist/super-resolve.d.ts.map +1 -1
  178. package/dist/super-resolve.js +44 -65
  179. package/dist/super-resolve.js.map +1 -1
  180. package/dist/vocabulary-catalog.js +2 -2
  181. package/dist/vocabulary-catalog.js.map +1 -1
  182. package/package.json +6 -1
  183. package/src/attr-schema-validate.ts +9 -13
  184. package/src/constants.ts +1 -0
  185. package/src/core/attr/meta-attr-filter.ts +8 -1
  186. package/src/core/attr/meta-attr.ts +24 -1
  187. package/src/core/field/shared-enum.ts +53 -0
  188. package/src/core/identity/meta-identity.ts +9 -12
  189. package/src/core/index.ts +5 -0
  190. package/src/core/object/object-constants.ts +19 -0
  191. package/src/core/object/object-definition.embedded.ts +80 -0
  192. package/src/core/relationship/derive-m2m-fields.ts +15 -48
  193. package/src/core/relationship/find-reference.ts +4 -2
  194. package/src/core/relationship/resolve-relationship-reference.ts +11 -9
  195. package/src/core/reporting/meta-dimension.ts +41 -0
  196. package/src/core/reporting/meta-measure.ts +75 -0
  197. package/src/core/reporting/meta-segment.ts +14 -0
  198. package/src/core/reporting/report-accessors.ts +73 -0
  199. package/src/core/reporting/report-describe.ts +206 -0
  200. package/src/core/reporting/report-read-model.ts +177 -0
  201. package/src/core/reporting/report-shape.ts +493 -0
  202. package/src/core/reporting/reporting-constants.ts +104 -0
  203. package/src/core/reporting/reporting-definition.embedded.ts +192 -0
  204. package/src/core/requirement/resolve-claim.ts +20 -0
  205. package/src/core/yaml-desugar.ts +9 -89
  206. package/src/core-types.ts +41 -0
  207. package/src/docs-ref.ts +41 -0
  208. package/src/errors.ts +24 -6
  209. package/src/fmt.ts +3 -1
  210. package/src/index.ts +73 -5
  211. package/src/loader/declared-duplicate-fields.ts +114 -0
  212. package/src/loader/meta-data-loader.ts +25 -1
  213. package/src/loader/reporting-validation.ts +1137 -0
  214. package/src/loader/resolve-references.ts +144 -0
  215. package/src/loader/validation-passes.ts +13 -9
  216. package/src/loader/validation-registry.ts +37 -9
  217. package/src/metamodel-docs/index.ts +3 -3
  218. package/src/metamodel-docs/render.ts +4 -4
  219. package/src/naming-refs.ts +237 -94
  220. package/src/naming.ts +131 -11
  221. package/src/object-serializer.ts +7 -9
  222. package/src/parser-core.ts +19 -56
  223. package/src/persistence/db/db-definition.embedded.ts +2 -2
  224. package/src/persistence/source/meta-source.ts +10 -6
  225. package/src/registry-manifest-exclusions.ts +2 -2
  226. package/src/registry-manifest.ts +1 -1
  227. package/src/release-docs.ts +48 -0
  228. package/src/serializer-json.ts +79 -12
  229. package/src/shared/base-types.ts +9 -0
  230. package/src/shared/meta-data.ts +22 -1
  231. package/src/shared/meta-root.ts +20 -1
  232. package/src/super-resolve.ts +49 -63
  233. package/src/vocabulary-catalog.ts +2 -2
package/dist/naming.d.ts CHANGED
@@ -18,17 +18,75 @@ export declare function packageOfResolutionKey(fqn: string): string;
18
18
  export declare function toSnakeCase(s: string): string;
19
19
  export declare function toKebabCase(s: string): string;
20
20
  /**
21
- * Column-naming strategy applied by the persistence layer to fields with no
22
- * explicit `@column` override. Persistence-layer config (set on
23
- * ObjectManager / buildExpectedSchema / codegen config), not a metadata attr —
24
- * the same metadata can drive snake_case (PG convention) or literal (EF
25
- * convention) consumers. TS port defaults to snake_case; C# port defaults to
26
- * literal.
21
+ * How a field with no `@column` becomes a column name. One project setting,
22
+ * `naming.columns` in `.metaobjects/config.json`, read by every port (ADR-0058): the
23
+ * loaded root carries it ({@link physicalNamingOf}), so codegen, migrate, the runtime
24
+ * and verify resolve the same name. Not a metadata attr: `@column` is the per-field
25
+ * override, this is the rule for the rest.
27
26
  */
28
27
  export type ColumnNamingStrategy = "snake_case" | "literal" | "kebab-case";
29
- /** Single source of truth for the TS-port default. */
28
+ /** Every column-naming rule, in the order the conformance corpus lists them. */
29
+ export declare const COLUMN_NAMING_STRATEGIES: readonly ColumnNamingStrategy[];
30
+ /** The default in EVERY port: what `meta migrate` has always created. */
30
31
  export declare const DEFAULT_COLUMN_NAMING_STRATEGY: ColumnNamingStrategy;
32
+ /**
33
+ * How an object with no physical-name attribute (`@table`, `@view`, ...) and no source name
34
+ * gets its table name: the entity (or source) name cased by this rule. The entity-name
35
+ * fallback keeps the frozen legacy pluralizer under every rule ({@link pluralizeTableNameLegacy}).
36
+ */
37
+ export type TableNamingRule = "snake_case" | "literal";
38
+ /** Every table-naming rule. */
39
+ export declare const TABLE_NAMING_RULES: readonly TableNamingRule[];
40
+ /** The project's physical-naming rules: `naming` in `.metaobjects/config.json` (ADR-0058). */
41
+ export interface PhysicalNaming {
42
+ readonly columns: ColumnNamingStrategy;
43
+ readonly tables: TableNamingRule;
44
+ }
45
+ /** The default in every port, equal to what `meta migrate` has always created. */
46
+ export declare const DEFAULT_PHYSICAL_NAMING: PhysicalNaming;
47
+ /**
48
+ * The physical-naming rules for the tree `node` belongs to: what its root carries, set by the
49
+ * project-aware load from `.metaobjects/config.json`, else {@link DEFAULT_PHYSICAL_NAMING}.
50
+ * Read through the root, not passed around, so every consumer of one loaded model resolves
51
+ * the same physical names.
52
+ */
53
+ export declare function physicalNamingOf(node: MetaData): PhysicalNaming;
54
+ /** The migration guide every refusal of a former naming source names (ADR-0058). */
55
+ export declare const PHYSICAL_NAMING_MIGRATION_GUIDE_PATH = "docs/features/migrations/physical-naming.md";
56
+ /** The guide on `main`: the default when a caller has no release to pin to. */
57
+ export declare const PHYSICAL_NAMING_MIGRATION_GUIDE: string;
58
+ /**
59
+ * What a former column-naming source prints when it is still used (ADR-0058): the one
60
+ * setting, where it goes, and the guide. Same words in every port. `what` names the source
61
+ * exactly; `value` is the rule it gave, carried into the example so the move is mechanical.
62
+ */
63
+ export declare function physicalNamingRemovedMessage(what: string, value?: string, guide?: string): string;
64
+ /** `name` cased by the table rule. */
65
+ export declare function applyTableNamingRule(name: string, rule: TableNamingRule): string;
31
66
  export declare function applyColumnNamingStrategy(name: string, strategy: ColumnNamingStrategy): string;
67
+ /**
68
+ * FROZEN — byte-for-byte the pre-fix suffix-only pluralization rule, with no
69
+ * already-plural detection. This is the DEFAULT PHYSICAL NAME derivation only:
70
+ * `resolveTableName`'s no-source fallback and `MetaSource.physicalName`'s step-4
71
+ * owner-name fallback, both reached only when metadata declares no explicit
72
+ * physical name. An adopter's live database was created with this rule; changing
73
+ * it would make `meta migrate` propose a rename for every already-plural entity
74
+ * name on the next run. Never call this for an API/code-surface name (REST paths,
75
+ * generated hook/query/finder/list names, DbSet/collection variable names) — those
76
+ * go through {@link pluralize}, which fixes the doubling this function
77
+ * deliberately still has.
78
+ */
79
+ export declare function pluralizeTableNameLegacy(s: string): string;
80
+ /**
81
+ * API/code-surface pluralization: REST collection/route paths, entity-descriptor
82
+ * URLs, generated hook/query/finder/list function names, DbSet/collection names —
83
+ * every generator-facing use. Adds already-plural detection ({@link isAlreadyPlural})
84
+ * on top of the historical suffix rule ({@link pluralizeTableNameLegacy}).
85
+ *
86
+ * NOT for default physical table/column name derivation — that fallback is frozen
87
+ * (see `pluralizeTableNameLegacy`) so an existing adopter database never sees a
88
+ * proposed rename.
89
+ */
32
90
  export declare function pluralize(s: string): string;
33
91
  /**
34
92
  * THE `@role: primary` source lookup for this package — and the one place the
@@ -1 +1 @@
1
- {"version":3,"file":"naming.d.ts","sourceRoot":"","sources":["../src/naming.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAQtD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,qCAAqC,CAAC;AAWtE;;;;;;GAMG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,CAI7D;AAED;;;;;GAKG;AACH,wBAAgB,sBAAsB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAG1D;AAED,wBAAgB,WAAW,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAK7C;AAED,wBAAgB,WAAW,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAE7C;AAED;;;;;;;GAOG;AACH,MAAM,MAAM,oBAAoB,GAAG,YAAY,GAAG,SAAS,GAAG,YAAY,CAAC;AAE3E,sDAAsD;AACtD,eAAO,MAAM,8BAA8B,EAAE,oBAAmC,CAAC;AAEjF,wBAAgB,yBAAyB,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,oBAAoB,GAAG,MAAM,CAM9F;AAED,wBAAgB,SAAS,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAI3C;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4DG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,UAAU,GAAG,MAAM,CAe3D;AAED,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,QAAQ,GAAG,UAAU,GAAG,SAAS,CAgBzE;AAED,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,QAAQ,GAAG,MAAM,CASzD;AAED,wBAAgB,iBAAiB,CAC/B,KAAK,EAAE,QAAQ,EACf,QAAQ,GAAE,oBAAqD,GAC9D,MAAM,CAKR;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG;AACH,wBAAgB,gBAAgB,CAK9B,IAAI,EAAE;IAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GAC/E,MAAM,CASR;AAED;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,QAAQ,GAAG,MAAM,GAAG,SAAS,CAWvE;AAED,2GAA2G;AAC3G,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC5B,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC7B;AAED,wBAAgB,YAAY,CAC1B,MAAM,EAAE,QAAQ,EAChB,QAAQ,GAAE,oBAAqD,GAC9D,aAAa,CAYf"}
1
+ {"version":3,"file":"naming.d.ts","sourceRoot":"","sources":["../src/naming.ts"],"names":[],"mappings":"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"}
package/dist/naming.js CHANGED
@@ -1,3 +1,4 @@
1
+ import { docsBlobUrl } from "./docs-ref.js";
1
2
  import { TYPE_FIELD } from "./shared/base-types.js";
2
3
  import { PACKAGE_SEPARATOR } from "./shared/structural.js";
3
4
  import { FIELD_ATTR_COLUMN } from "./persistence/db/db-constants.js";
@@ -43,8 +44,45 @@ export function toSnakeCase(s) {
43
44
  export function toKebabCase(s) {
44
45
  return toSnakeCase(s).replace(/_/g, "-");
45
46
  }
46
- /** Single source of truth for the TS-port default. */
47
+ /** Every column-naming rule, in the order the conformance corpus lists them. */
48
+ export const COLUMN_NAMING_STRATEGIES = ["snake_case", "literal", "kebab-case"];
49
+ /** The default in EVERY port: what `meta migrate` has always created. */
47
50
  export const DEFAULT_COLUMN_NAMING_STRATEGY = "snake_case";
51
+ /** Every table-naming rule. */
52
+ export const TABLE_NAMING_RULES = ["snake_case", "literal"];
53
+ /** The default in every port, equal to what `meta migrate` has always created. */
54
+ export const DEFAULT_PHYSICAL_NAMING = Object.freeze({
55
+ columns: DEFAULT_COLUMN_NAMING_STRATEGY,
56
+ tables: "snake_case",
57
+ });
58
+ /**
59
+ * The physical-naming rules for the tree `node` belongs to: what its root carries, set by the
60
+ * project-aware load from `.metaobjects/config.json`, else {@link DEFAULT_PHYSICAL_NAMING}.
61
+ * Read through the root, not passed around, so every consumer of one loaded model resolves
62
+ * the same physical names.
63
+ */
64
+ export function physicalNamingOf(node) {
65
+ const naming = node.root().physicalNaming;
66
+ return naming ?? DEFAULT_PHYSICAL_NAMING;
67
+ }
68
+ /** The migration guide every refusal of a former naming source names (ADR-0058). */
69
+ export const PHYSICAL_NAMING_MIGRATION_GUIDE_PATH = "docs/features/migrations/physical-naming.md";
70
+ /** The guide on `main`: the default when a caller has no release to pin to. */
71
+ export const PHYSICAL_NAMING_MIGRATION_GUIDE = docsBlobUrl(PHYSICAL_NAMING_MIGRATION_GUIDE_PATH);
72
+ /**
73
+ * What a former column-naming source prints when it is still used (ADR-0058): the one
74
+ * setting, where it goes, and the guide. Same words in every port. `what` names the source
75
+ * exactly; `value` is the rule it gave, carried into the example so the move is mechanical.
76
+ */
77
+ export function physicalNamingRemovedMessage(what, value = "literal", guide = PHYSICAL_NAMING_MIGRATION_GUIDE) {
78
+ return (`${what} was removed in 1.1.0. Column and table naming is one project setting now, read by ` +
79
+ `every port: "naming" in .metaobjects/config.json, for example "naming": { "columns": "${value}" }. ` +
80
+ `Move it there and delete ${what}. See ${guide}`);
81
+ }
82
+ /** `name` cased by the table rule. */
83
+ export function applyTableNamingRule(name, rule) {
84
+ return rule === "literal" ? name : toSnakeCase(name);
85
+ }
48
86
  export function applyColumnNamingStrategy(name, strategy) {
49
87
  switch (strategy) {
50
88
  case "literal": return name;
@@ -52,13 +90,66 @@ export function applyColumnNamingStrategy(name, strategy) {
52
90
  case "snake_case": return toSnakeCase(name);
53
91
  }
54
92
  }
55
- export function pluralize(s) {
93
+ /** The four letters that precede a genuinely SINGULAR "...s" ending in the common
94
+ * patterns this codebase's entity names hit — Status, Address, Bonus, Alias, Gas,
95
+ * Analysis. Anything else before a final "s" reads as already-plural. */
96
+ const ALREADY_PLURAL_EXCLUDED_PRECEDING_CHARS = new Set(["s", "u", "i", "a"]);
97
+ /**
98
+ * True when `s` already reads as a plural noun, so running it through the ordinary
99
+ * suffix rule would double it — the real defect this file exists to fix:
100
+ * `ProgramPurchaseStats` → `ProgramPurchaseStatses` shipped as six REST collection
101
+ * paths and TanStack hook names in an adopter's app.
102
+ *
103
+ * Heuristic, not a dictionary: a word ending in "s" is already-plural UNLESS the
104
+ * character immediately before that final "s" is one of s/u/i/a (case-insensitive).
105
+ * Covers Stats, Settings, Details, News, Analytics, Series, Photos; leaves Status,
106
+ * Address, Bonus, Alias, Gas, Analysis on the ordinary suffix path (unchanged).
107
+ *
108
+ * Known miss, deliberately not fixed here: a genuinely singular word ending in
109
+ * "...s" with none of those four letters before it reads as already-plural too —
110
+ * `Lens` → `Lens` (correct plural `Lenses`). Fixing that needs a real dictionary,
111
+ * which this function is not; the heuristic optimizes for the shape the doubling
112
+ * defect actually hits (entity names that are already a plural concept).
113
+ */
114
+ function isAlreadyPlural(s) {
115
+ if (!/s$/i.test(s) || s.length < 2)
116
+ return false;
117
+ return !ALREADY_PLURAL_EXCLUDED_PRECEDING_CHARS.has(s[s.length - 2].toLowerCase());
118
+ }
119
+ /**
120
+ * FROZEN — byte-for-byte the pre-fix suffix-only pluralization rule, with no
121
+ * already-plural detection. This is the DEFAULT PHYSICAL NAME derivation only:
122
+ * `resolveTableName`'s no-source fallback and `MetaSource.physicalName`'s step-4
123
+ * owner-name fallback, both reached only when metadata declares no explicit
124
+ * physical name. An adopter's live database was created with this rule; changing
125
+ * it would make `meta migrate` propose a rename for every already-plural entity
126
+ * name on the next run. Never call this for an API/code-surface name (REST paths,
127
+ * generated hook/query/finder/list names, DbSet/collection variable names) — those
128
+ * go through {@link pluralize}, which fixes the doubling this function
129
+ * deliberately still has.
130
+ */
131
+ export function pluralizeTableNameLegacy(s) {
56
132
  if (/(s|x|z|ch|sh)$/i.test(s))
57
133
  return s + "es";
58
134
  if (/[^aeiou]y$/i.test(s))
59
135
  return s.slice(0, -1) + "ies";
60
136
  return s + "s";
61
137
  }
138
+ /**
139
+ * API/code-surface pluralization: REST collection/route paths, entity-descriptor
140
+ * URLs, generated hook/query/finder/list function names, DbSet/collection names —
141
+ * every generator-facing use. Adds already-plural detection ({@link isAlreadyPlural})
142
+ * on top of the historical suffix rule ({@link pluralizeTableNameLegacy}).
143
+ *
144
+ * NOT for default physical table/column name derivation — that fallback is frozen
145
+ * (see `pluralizeTableNameLegacy`) so an existing adopter database never sees a
146
+ * proposed rename.
147
+ */
148
+ export function pluralize(s) {
149
+ if (isAlreadyPlural(s))
150
+ return s;
151
+ return pluralizeTableNameLegacy(s);
152
+ }
62
153
  /**
63
154
  * THE `@role: primary` source lookup for this package — and the one place the
64
155
  * primary-source DIVERGENCE refusal lives, so that every caller inherits it.
@@ -159,9 +250,11 @@ export function resolveTableName(entity) {
159
250
  const source = primaryRdbSource(entity);
160
251
  if (source !== undefined)
161
252
  return source.physicalName;
162
- return pluralize(toSnakeCase(entity.name));
253
+ // Frozen: this is a DEFAULT PHYSICAL name, not an API-surface name. See
254
+ // pluralizeTableNameLegacy's doc. Cased by the project's table rule (ADR-0058).
255
+ return pluralizeTableNameLegacy(applyTableNamingRule(entity.name, physicalNamingOf(entity).tables));
163
256
  }
164
- export function resolveColumnName(field, strategy = DEFAULT_COLUMN_NAMING_STRATEGY) {
257
+ export function resolveColumnName(field, strategy = physicalNamingOf(field).columns) {
165
258
  // ADR-0039: resolving — a concrete field may inherit @column via extends.
166
259
  const col = field.attr(FIELD_ATTR_COLUMN);
167
260
  if (typeof col === "string" && col)
@@ -240,7 +333,7 @@ export function resolveTableSchema(entity) {
240
333
  return schema;
241
334
  return undefined;
242
335
  }
243
- export function buildNameMap(entity, strategy = DEFAULT_COLUMN_NAMING_STRATEGY) {
336
+ export function buildNameMap(entity, strategy = physicalNamingOf(entity).columns) {
244
337
  const jsToDb = new Map();
245
338
  const dbToJs = new Map();
246
339
  // Effective children so a TPH subtype's name map covers inherited base
@@ -1 +1 @@
1
- {"version":3,"file":"naming.js","sourceRoot":"","sources":["../src/naming.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"naming.js","sourceRoot":"","sources":["../src/naming.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"object-serializer.d.ts","sourceRoot":"","sources":["../src/object-serializer.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,8BAA8B,CAAC;AAe/D,MAAM,WAAW,sBAAsB;IACrC,6DAA6D;IAC7D,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,6EAA6E;AAC7E,wBAAgB,YAAY,CAC1B,EAAE,EAAE,UAAU,EACd,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACjC,IAAI,CAAC,EAAE,sBAAsB,GAC5B,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAczB;AAED,2EAA2E;AAC3E,wBAAgB,YAAY,CAC1B,EAAE,EAAE,UAAU,EACd,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC5B,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAWzB"}
1
+ {"version":3,"file":"object-serializer.d.ts","sourceRoot":"","sources":["../src/object-serializer.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,8BAA8B,CAAC;AAgB/D,MAAM,WAAW,sBAAsB;IACrC,6DAA6D;IAC7D,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,6EAA6E;AAC7E,wBAAgB,YAAY,CAC1B,EAAE,EAAE,UAAU,EACd,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACjC,IAAI,CAAC,EAAE,sBAAsB,GAC5B,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAczB;AAED,2EAA2E;AAC3E,wBAAgB,YAAY,CAC1B,EAAE,EAAE,UAAU,EACd,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC5B,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAWzB"}
@@ -8,6 +8,7 @@
8
8
  // spec — Java's object reader does not validate either).
9
9
  import { DATA_TYPE_BOOLEAN, DATA_TYPE_INT, DATA_TYPE_LONG, DATA_TYPE_DOUBLE, DATA_TYPE_STRING, DATA_TYPE_DATE, DATA_TYPE_OBJECT, } from "./data-type.js";
10
10
  import { TYPE_OBJECT } from "./shared/base-types.js";
11
+ import { lookupCanonical } from "./naming-refs.js";
11
12
  const TYPE_DISCRIMINATOR = "@type";
12
13
  /** Serialize an application-object instance to wire JSON, driven by `mo`. */
13
14
  export function objectToJson(mo, instance, opts) {
@@ -114,19 +115,15 @@ function coerceNumeric(raw) {
114
115
  }
115
116
  return raw;
116
117
  }
117
- /** Resolve an object-typed field's `@objectRef` to its target MetaObject by
118
- * walking to the tree root and looking up the named object child. Returns
119
- * undefined when there is no ref or it does not resolve (caller passes the
120
- * raw value through — best-effort). */
118
+ /** Resolve an object-typed field's `@objectRef` to its target MetaObject. The loader
119
+ * has already rewritten the ref to its canonical spelling (ADR-0059 R5), so it is
120
+ * looked up exactly, with no referrer (R7). Returns undefined when there is no ref
121
+ * or it does not resolve (caller passes the raw value through — best-effort). */
121
122
  function resolveObjectRef(field, mo) {
122
123
  const ref = field.objectRef;
123
124
  if (ref === undefined)
124
125
  return undefined;
125
- // ADR-0039: own — lookup is on the tree ROOT, which has no super chain
126
- // (it never `extends`), so its own children ARE its effective children.
127
- const found = mo.root().ownChildByTypeAndName(TYPE_OBJECT, ref);
128
- if (found === undefined)
129
- return undefined;
126
+ const found = lookupCanonical(mo.root(), ref, { ownerType: TYPE_OBJECT });
130
127
  return found;
131
128
  }
132
129
  //# sourceMappingURL=object-serializer.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"object-serializer.js","sourceRoot":"","sources":["../src/object-serializer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"object-serializer.js","sourceRoot":"","sources":["../src/object-serializer.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"parser-core.d.ts","sourceRoot":"","sources":["../src/parser-core.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"parser-core.d.ts","sourceRoot":"","sources":["../src/parser-core.ts"],"names":[],"mappings":"AAyBA,OAAO,EAAU,YAAY,EAAE,MAAM,eAAe,CAAC;AACrD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAGjD,OAAO,EAAE,UAAU,EAAkB,MAAM,aAAa,CAAC;AAGzD,OAAO,EAAkB,KAAK,WAAW,EAAE,KAAK,aAAa,EAAoB,MAAM,aAAa,CAAC;AASrG,OAAO,EAAmB,KAAK,OAAO,IAAI,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAClF,OAAO,EAAmB,KAAK,YAAY,EAAE,MAAM,0BAA0B,CAAC;AA+B9E,MAAM,WAAW,YAAY;IAC3B,QAAQ,EAAE,YAAY,CAAC;IACvB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;;;;;OAMG;IACH,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB;;;;;;;OAOG;IACH,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B;;;;;OAKG;IACH,YAAY,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAC/B;;;;;;;;;;;OAWG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB;AAED;;;;;;;GAOG;AACH,MAAM,WAAW,cAAc;IAC7B;8EAC0E;IAC1E,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB;;0EAEsE;IACtE,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC3C;;gFAE4E;IAC5E,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC;IAC1B,4EAA4E;IAC5E,QAAQ,CAAC,SAAS,EAAE,QAAQ,CAAC;IAC7B;qFACiF;IACjF,QAAQ,CAAC,mBAAmB,EAAE,MAAM,CAAC;IACrC,mEAAmE;IACnE,QAAQ,CAAC,UAAU,EAAE,MAAM,GAAG,SAAS,CAAC;IACxC,8EAA8E;IAC9E,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,gEAAgE;IAChE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB;0DACsD;IACtD,QAAQ,CAAC,WAAW,EAAE,WAAW,CAAC;IAClC;iDAC6C;IAC7C,QAAQ,CAAC,YAAY,EAAE,SAAS,eAAe,EAAE,CAAC;IAClD,uDAAuD;IACvD,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC;IACjC,4EAA4E;IAC5E,QAAQ,CAAC,YAAY,CAAC,EAAE,YAAY,CAAC;CACtC;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,QAAQ,CAAC;IACf,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,MAAM,EAAE,UAAU,EAAE,CAAC;IACrB;;;;;;OAMG;IACH,gBAAgB,EAAE,aAAa,EAAE,CAAC;IAClC;;;;;;;OAOG;IACH,eAAe,EAAE,cAAc,EAAE,CAAC;CACnC;AAYD,wBAAgB,SAAS,IAAI,WAAW,CAuBvC;AA2KD;;;;;;;;;;;;GAYG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAK7E;AA8FD;;;;;;;;;;GAUG;AACH,wBAAgB,SAAS,CAAC,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,YAAY,GAAG,WAAW,CA+M1E;AAykBD;;;;;;;;;;;GAWG;AACH,wBAAgB,oBAAoB,CAClC,OAAO,EAAE,SAAS,cAAc,EAAE,EAClC,IAAI,EAAE;IAAE,QAAQ,EAAE,YAAY,CAAC;IAAC,MAAM,CAAC,EAAE,OAAO,CAAA;CAAE,GACjD;IAAE,MAAM,EAAE,UAAU,EAAE,CAAC;IAAC,QAAQ,EAAE,MAAM,EAAE,CAAC;IAAC,gBAAgB,EAAE,aAAa,EAAE,CAAA;CAAE,CAgFjF"}
@@ -32,13 +32,13 @@ import { retiredSubType, retirementHint, retirementSuggestions } from "./retired
32
32
  import { resolvedSource } from "./source.js";
33
33
  import { semanticDiff } from "./semantic-diff.js";
34
34
  import { resolveSuperRef, isChildTargetingRef, extendsTargetCompatible, EXTENDS_TARGET_MISMATCH_RULE, } from "./super-resolve.js";
35
+ import { RefOverDropError } from "./naming-refs.js";
35
36
  import { JsonPathBuilder } from "./json-path.js";
36
37
  import { getYamlPosition } from "./core/yaml-positions.js";
37
38
  import { TYPE_ATTR, TYPE_FIELD, TYPE_OBJECT, TYPE_VALIDATOR, SUBTYPE_BASE, } from "./shared/base-types.js";
38
39
  import { RESERVED_KEYS, RESERVED_KEY_NAME, RESERVED_KEY_PACKAGE, RESERVED_KEY_EXTENDS, RESERVED_KEY_ABSTRACT, RESERVED_KEY_OVERLAY, RESERVED_KEY_IS_ARRAY, RESERVED_KEY_CHILDREN, RESERVED_KEY_VALUE, JSON_KEY_SCHEMA, ATTR_PREFIX, TYPE_SUBTYPE_SEPARATOR, PACKAGE_SEPARATOR, } from "./shared/structural.js";
39
40
  import { ATTR_SUBTYPE_PROPERTIES, ATTR_SUBTYPE_STRINGARRAY } from "./core/attr/attr-constants.js";
40
41
  import { attrClassFor } from "./attr-class-map.js";
41
- import { isRelativeRef, REF_BEARING_ATTR_NAMES } from "./naming-refs.js";
42
42
  // ---------------------------------------------------------------------------
43
43
  // Internal helper — build a parse-phase ErrorSource envelope.
44
44
  //
@@ -82,37 +82,6 @@ function reportProblem(msg, strict, warnings, code) {
82
82
  warnings.push(msg);
83
83
  }
84
84
  // ---------------------------------------------------------------------------
85
- // FR-032 (ADR-0032) — canonical-JSON ref guard.
86
- //
87
- // Canonical JSON is the self-contained interchange form: every ref-bearing attr
88
- // MUST be fully-qualified. A relative authoring form (leading `::` or `..::`)
89
- // surviving into canonical JSON is `ERR_RELATIVE_REF_IN_CANONICAL`. The guard
90
- // fires ONLY for JSON-format input — YAML-format input has already been
91
- // desugar-expanded via expandRef (so any `::`/`..::` there is correct authoring
92
- // that was lowered to FQN before buildTree sees it). Like ERR_RESERVED_ATTR,
93
- // this is a hard error routed through the loader's error sink even in lax mode.
94
- // ---------------------------------------------------------------------------
95
- function guardRelativeRefInCanonical(refLabel, rawValue, strict, warnings, path) {
96
- if (_currentFormat !== "json")
97
- return;
98
- if (typeof rawValue !== "string")
99
- return;
100
- if (!isRelativeRef(rawValue))
101
- return;
102
- const msg = `Relative reference '${rawValue}' on ${refLabel} at ${path} is not allowed in ` +
103
- `canonical JSON — canonical JSON must be fully-qualified. Relative forms ` +
104
- `(leading '::' or '..::') are YAML-authoring sugar that the desugar expands.`;
105
- if (strict) {
106
- throw new ParseError(msg, { code: "ERR_RELATIVE_REF_IN_CANONICAL", source: errSource() });
107
- }
108
- if (_currentErrors !== undefined) {
109
- _currentErrors.push(new ParseError(msg, { code: "ERR_RELATIVE_REF_IN_CANONICAL", source: errSource() }));
110
- }
111
- else {
112
- warnings.push(msg);
113
- }
114
- }
115
- // ---------------------------------------------------------------------------
116
85
  // The one message for an authored `<type>.base`, so both doors say the same thing.
117
86
  //
118
87
  // Every registered `base` subtype is an ABSTRACT REGISTRY ANCHOR: the shared root that
@@ -478,10 +447,11 @@ export function buildTree(parsed, opts) {
478
447
  if (opts.intoRoot !== undefined) {
479
448
  // --- Merge mode: parse root's attrs/children into the existing root ---
480
449
  // The JSON root's own package/super/reserved-keys are not re-applied to the
481
- // existing root. BUT: children from the NEW JSON should inherit from the
482
- // NEW root's package, not the existing root's.
450
+ // existing root. Children from the NEW document take the NEW document's
451
+ // package — and a document with no `package` declares root-level nodes,
452
+ // whatever was loaded before it (ADR-0059 R10: the default package is per file).
483
453
  const newRootPkg = rootDataObj[RESERVED_KEY_PACKAGE];
484
- const contextPkg = (typeof newRootPkg === "string" ? newRootPkg : opts.intoRoot.package) ?? "";
454
+ const contextPkg = typeof newRootPkg === "string" ? newRootPkg : "";
485
455
  parseNodeInto(rootDataObj, opts.intoRoot, opts.intoRoot, // accumulating root for super resolution
486
456
  contextPkg, opts.registry, warnings, errors, strict, source, rootKey);
487
457
  _currentPath.pop();
@@ -565,9 +535,9 @@ parent) {
565
535
  // this node by its effective qualified key regardless of post-merge tree
566
536
  // shape or load order. This does NOT touch the node's `package` or `fqn()`
567
537
  // (objects stay bare per FR5d). Mirrors Java's parse-time getDefaultPackageName().
568
- if (inheritedContextPkg !== "") {
569
- model.setFileDefaultPackage(inheritedContextPkg);
570
- }
538
+ // Recorded even when empty: "" says the file declares no package (ADR-0059
539
+ // R10), which is not the same as a node built in code with no file at all.
540
+ model.setFileDefaultPackage(inheritedContextPkg);
571
541
  // --- Apply reserved keys (package, extends, abstract, isArray) ---
572
542
  applyReservedKeys(model, nodeData, strict, source, path, warnings, inheritedContextPkg);
573
543
  // --- Inherit package from context if not explicitly set ---
@@ -596,7 +566,16 @@ parent) {
596
566
  if (model.superRef !== undefined && accumRoot !== undefined && !_deferSuperResolution) {
597
567
  // FR-024: thread the referrer's type so dotted `Entity.child` refs resolve
598
568
  // type-scoped — kept consistent with the deferred path (super-resolve.ts).
599
- const superModel = resolveSuperRef(model.superRef, effectivePkg, accumRoot, { type: model.type });
569
+ let superModel;
570
+ try {
571
+ superModel = resolveSuperRef(model.superRef, effectivePkg, accumRoot, { type: model.type });
572
+ }
573
+ catch (e) {
574
+ if (!(e instanceof RefOverDropError))
575
+ throw e;
576
+ // ADR-0059 R2 — `..::` dropped more segments than the package has.
577
+ throw new ParseError(`the extends ref '${model.superRef}' on ${model.fqn()} climbs above the root package — each '..::' drops one segment of the declaring package`, { code: "ERR_BAD_ATTR_VALUE", source: resolvedSource(errSource(), model.fqn(), model.superRef) });
578
+ }
600
579
  if (superModel !== undefined) {
601
580
  // FR-024 — a dotted child-targeting ref must resolve to a node of the
602
581
  // SAME type and subtype as the extending node. Dotted-only check; the
@@ -1065,9 +1044,6 @@ function applyReservedKeys(model, nodeData, strict, source, path, warnings, cont
1065
1044
  reportProblem(`"${RESERVED_KEY_EXTENDS}" must be a string at ${path}`, strict, warnings, "ERR_UNRESOLVED_SUPER");
1066
1045
  }
1067
1046
  else {
1068
- // FR-032: canonical JSON `extends` must be FQN; reject a surviving
1069
- // relative form (no-op for YAML-format input, which was desugar-expanded).
1070
- guardRelativeRefInCanonical(`"${RESERVED_KEY_EXTENDS}"`, rawExtends, strict, warnings, path);
1071
1047
  model.setSuper(rawExtends);
1072
1048
  }
1073
1049
  }
@@ -1136,12 +1112,6 @@ function applyInlineAttrsAndUnknownKeys(model, nodeData, strict, source, path, w
1136
1112
  continue;
1137
1113
  }
1138
1114
  const rawVal = nodeData[key];
1139
- // FR-032: a ref-bearing inline attr (@objectRef/@references/@from/@of/@via/
1140
- // @parameterRef/@payloadRef/@responseRef) in canonical JSON must be FQN —
1141
- // reject a surviving relative form. No-op for YAML-format input.
1142
- if (REF_BEARING_ATTR_NAMES.has(attrName)) {
1143
- guardRelativeRefInCanonical(`${ATTR_PREFIX}${attrName}`, rawVal, strict, warnings, path);
1144
- }
1145
1115
  try {
1146
1116
  const attr = materializeAttr(model, attrName, rawVal, registry);
1147
1117
  model.setMetaAttr(attr);