@metaobjectsdev/metadata 0.10.0 → 0.11.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 (214) hide show
  1. package/dist/attr-schema-validate.js +12 -4
  2. package/dist/attr-schema-validate.js.map +1 -1
  3. package/dist/core/identity/identity-constants.d.ts.map +1 -1
  4. package/dist/core/identity/identity-constants.js +3 -0
  5. package/dist/core/identity/identity-constants.js.map +1 -1
  6. package/dist/core/identity/identity-definition.embedded.d.ts.map +1 -1
  7. package/dist/core/identity/identity-definition.embedded.js +2 -0
  8. package/dist/core/identity/identity-definition.embedded.js.map +1 -1
  9. package/dist/core/identity/meta-identity.d.ts.map +1 -1
  10. package/dist/core/identity/meta-identity.js +8 -1
  11. package/dist/core/identity/meta-identity.js.map +1 -1
  12. package/dist/core/validator/validator-constants.d.ts +14 -1
  13. package/dist/core/validator/validator-constants.d.ts.map +1 -1
  14. package/dist/core/validator/validator-constants.js +20 -1
  15. package/dist/core/validator/validator-constants.js.map +1 -1
  16. package/dist/core/validator/validator-definition.embedded.d.ts.map +1 -1
  17. package/dist/core/validator/validator-definition.embedded.js +121 -0
  18. package/dist/core/validator/validator-definition.embedded.js.map +1 -1
  19. package/dist/core-types.d.ts.map +1 -1
  20. package/dist/core-types.js +25 -2
  21. package/dist/core-types.js.map +1 -1
  22. package/dist/errors.d.ts +3 -3
  23. package/dist/errors.d.ts.map +1 -1
  24. package/dist/errors.js +9 -0
  25. package/dist/errors.js.map +1 -1
  26. package/dist/loader/meta-data-loader.d.ts.map +1 -1
  27. package/dist/loader/meta-data-loader.js +10 -0
  28. package/dist/loader/meta-data-loader.js.map +1 -1
  29. package/dist/loader/validation-passes.d.ts.map +1 -1
  30. package/dist/loader/validation-passes.js +6 -1
  31. package/dist/loader/validation-passes.js.map +1 -1
  32. package/dist/loader/validation-registry.d.ts +10 -0
  33. package/dist/loader/validation-registry.d.ts.map +1 -0
  34. package/dist/loader/validation-registry.js +84 -0
  35. package/dist/loader/validation-registry.js.map +1 -0
  36. package/dist/parser-core.js +10 -1
  37. package/dist/parser-core.js.map +1 -1
  38. package/dist/persistence/db/db-constants.d.ts +10 -0
  39. package/dist/persistence/db/db-constants.d.ts.map +1 -1
  40. package/dist/persistence/db/db-constants.js +14 -0
  41. package/dist/persistence/db/db-constants.js.map +1 -1
  42. package/dist/persistence/db/db-definition.embedded.d.ts.map +1 -1
  43. package/dist/persistence/db/db-definition.embedded.js +57 -0
  44. package/dist/persistence/db/db-definition.embedded.js.map +1 -1
  45. package/dist/provider-data.d.ts +15 -0
  46. package/dist/provider-data.d.ts.map +1 -1
  47. package/dist/provider-data.js +2 -0
  48. package/dist/provider-data.js.map +1 -1
  49. package/dist/registry.d.ts +16 -0
  50. package/dist/registry.d.ts.map +1 -1
  51. package/dist/registry.js.map +1 -1
  52. package/dist/validate-max-occurs.d.ts +5 -0
  53. package/dist/validate-max-occurs.d.ts.map +1 -0
  54. package/dist/validate-max-occurs.js +28 -0
  55. package/dist/validate-max-occurs.js.map +1 -0
  56. package/dist/validation-types.d.ts +36 -0
  57. package/dist/validation-types.d.ts.map +1 -0
  58. package/dist/validation-types.js +7 -0
  59. package/dist/validation-types.js.map +1 -0
  60. package/package.json +1 -1
  61. package/src/attr-schema-validate.ts +12 -4
  62. package/src/core/identity/identity-constants.ts +4 -0
  63. package/src/core/identity/identity-definition.embedded.ts +2 -0
  64. package/src/core/identity/meta-identity.ts +8 -1
  65. package/src/core/validator/validator-constants.ts +22 -1
  66. package/src/core/validator/validator-definition.embedded.ts +121 -0
  67. package/src/core-types.ts +26 -1
  68. package/src/errors.ts +11 -2
  69. package/src/loader/meta-data-loader.ts +12 -0
  70. package/src/loader/validation-passes.ts +11 -1
  71. package/src/loader/validation-registry.ts +93 -0
  72. package/src/parser-core.ts +10 -1
  73. package/src/persistence/db/db-constants.ts +16 -0
  74. package/src/persistence/db/db-definition.embedded.ts +57 -0
  75. package/src/provider-data.ts +17 -0
  76. package/src/registry.ts +16 -0
  77. package/src/validate-max-occurs.ts +39 -0
  78. package/src/validation-types.ts +57 -0
  79. package/dist/constants.d.ts +0 -208
  80. package/dist/constants.d.ts.map +0 -1
  81. package/dist/constants.js +0 -419
  82. package/dist/constants.js.map +0 -1
  83. package/dist/core/documentation/doc-schema.d.ts +0 -8
  84. package/dist/core/documentation/doc-schema.d.ts.map +0 -1
  85. package/dist/core/documentation/doc-schema.js +0 -61
  86. package/dist/core/documentation/doc-schema.js.map +0 -1
  87. package/dist/core/field/field-schema.d.ts +0 -6
  88. package/dist/core/field/field-schema.d.ts.map +0 -1
  89. package/dist/core/field/field-schema.js +0 -23
  90. package/dist/core/field/field-schema.js.map +0 -1
  91. package/dist/core/file-meta-data-loader.d.ts +0 -18
  92. package/dist/core/file-meta-data-loader.d.ts.map +0 -1
  93. package/dist/core/file-meta-data-loader.js +0 -81
  94. package/dist/core/file-meta-data-loader.js.map +0 -1
  95. package/dist/core/file-source.d.ts +0 -12
  96. package/dist/core/file-source.d.ts.map +0 -1
  97. package/dist/core/file-source.js +0 -46
  98. package/dist/core/file-source.js.map +0 -1
  99. package/dist/core/identity/identity-schema.d.ts +0 -6
  100. package/dist/core/identity/identity-schema.d.ts.map +0 -1
  101. package/dist/core/identity/identity-schema.js +0 -56
  102. package/dist/core/identity/identity-schema.js.map +0 -1
  103. package/dist/core/object/object-schema.d.ts +0 -4
  104. package/dist/core/object/object-schema.d.ts.map +0 -1
  105. package/dist/core/object/object-schema.js +0 -28
  106. package/dist/core/object/object-schema.js.map +0 -1
  107. package/dist/core/relationship/relationship-schema.d.ts +0 -4
  108. package/dist/core/relationship/relationship-schema.d.ts.map +0 -1
  109. package/dist/core/relationship/relationship-schema.js +0 -57
  110. package/dist/core/relationship/relationship-schema.js.map +0 -1
  111. package/dist/core/validator/validator-schema.d.ts +0 -4
  112. package/dist/core/validator/validator-schema.d.ts.map +0 -1
  113. package/dist/core/validator/validator-schema.js +0 -38
  114. package/dist/core/validator/validator-schema.js.map +0 -1
  115. package/dist/core-attr-schemas.d.ts +0 -22
  116. package/dist/core-attr-schemas.d.ts.map +0 -1
  117. package/dist/core-attr-schemas.js +0 -324
  118. package/dist/core-attr-schemas.js.map +0 -1
  119. package/dist/db/db-attr-schemas.d.ts +0 -8
  120. package/dist/db/db-attr-schemas.d.ts.map +0 -1
  121. package/dist/db/db-attr-schemas.js +0 -26
  122. package/dist/db/db-attr-schemas.js.map +0 -1
  123. package/dist/db/db-provider.d.ts +0 -3
  124. package/dist/db/db-provider.d.ts.map +0 -1
  125. package/dist/db/db-provider.js +0 -28
  126. package/dist/db/db-provider.js.map +0 -1
  127. package/dist/meta/find-reference.d.ts +0 -22
  128. package/dist/meta/find-reference.d.ts.map +0 -1
  129. package/dist/meta/find-reference.js +0 -29
  130. package/dist/meta/find-reference.js.map +0 -1
  131. package/dist/meta/meta-attr.d.ts +0 -8
  132. package/dist/meta/meta-attr.d.ts.map +0 -1
  133. package/dist/meta/meta-attr.js +0 -17
  134. package/dist/meta/meta-attr.js.map +0 -1
  135. package/dist/meta/meta-data.d.ts +0 -107
  136. package/dist/meta/meta-data.d.ts.map +0 -1
  137. package/dist/meta/meta-data.js +0 -302
  138. package/dist/meta/meta-data.js.map +0 -1
  139. package/dist/meta/meta-field.d.ts +0 -48
  140. package/dist/meta/meta-field.d.ts.map +0 -1
  141. package/dist/meta/meta-field.js +0 -94
  142. package/dist/meta/meta-field.js.map +0 -1
  143. package/dist/meta/meta-identity.d.ts +0 -71
  144. package/dist/meta/meta-identity.d.ts.map +0 -1
  145. package/dist/meta/meta-identity.js +0 -129
  146. package/dist/meta/meta-identity.js.map +0 -1
  147. package/dist/meta/meta-layout.d.ts +0 -23
  148. package/dist/meta/meta-layout.d.ts.map +0 -1
  149. package/dist/meta/meta-layout.js +0 -45
  150. package/dist/meta/meta-layout.js.map +0 -1
  151. package/dist/meta/meta-object.d.ts +0 -40
  152. package/dist/meta/meta-object.d.ts.map +0 -1
  153. package/dist/meta/meta-object.js +0 -81
  154. package/dist/meta/meta-object.js.map +0 -1
  155. package/dist/meta/meta-origin.d.ts +0 -32
  156. package/dist/meta/meta-origin.d.ts.map +0 -1
  157. package/dist/meta/meta-origin.js +0 -55
  158. package/dist/meta/meta-origin.js.map +0 -1
  159. package/dist/meta/meta-relationship.d.ts +0 -11
  160. package/dist/meta/meta-relationship.d.ts.map +0 -1
  161. package/dist/meta/meta-relationship.js +0 -27
  162. package/dist/meta/meta-relationship.js.map +0 -1
  163. package/dist/meta/meta-root.d.ts +0 -12
  164. package/dist/meta/meta-root.d.ts.map +0 -1
  165. package/dist/meta/meta-root.js +0 -24
  166. package/dist/meta/meta-root.js.map +0 -1
  167. package/dist/meta/meta-source.d.ts +0 -18
  168. package/dist/meta/meta-source.d.ts.map +0 -1
  169. package/dist/meta/meta-source.js +0 -31
  170. package/dist/meta/meta-source.js.map +0 -1
  171. package/dist/meta/meta-validator.d.ts +0 -29
  172. package/dist/meta/meta-validator.d.ts.map +0 -1
  173. package/dist/meta/meta-validator.js +0 -49
  174. package/dist/meta/meta-validator.js.map +0 -1
  175. package/dist/meta/meta-view.d.ts +0 -4
  176. package/dist/meta/meta-view.d.ts.map +0 -1
  177. package/dist/meta/meta-view.js +0 -8
  178. package/dist/meta/meta-view.js.map +0 -1
  179. package/dist/persistence/db/db-attr-schemas.d.ts +0 -8
  180. package/dist/persistence/db/db-attr-schemas.d.ts.map +0 -1
  181. package/dist/persistence/db/db-attr-schemas.js +0 -28
  182. package/dist/persistence/db/db-attr-schemas.js.map +0 -1
  183. package/dist/persistence/db/db-schema.d.ts +0 -28
  184. package/dist/persistence/db/db-schema.d.ts.map +0 -1
  185. package/dist/persistence/db/db-schema.js +0 -62
  186. package/dist/persistence/db/db-schema.js.map +0 -1
  187. package/dist/persistence/origin/origin-schema.d.ts +0 -4
  188. package/dist/persistence/origin/origin-schema.d.ts.map +0 -1
  189. package/dist/persistence/origin/origin-schema.js +0 -63
  190. package/dist/persistence/origin/origin-schema.js.map +0 -1
  191. package/dist/persistence/source/source-schema.d.ts +0 -4
  192. package/dist/persistence/source/source-schema.d.ts.map +0 -1
  193. package/dist/persistence/source/source-schema.js +0 -98
  194. package/dist/persistence/source/source-schema.js.map +0 -1
  195. package/dist/presentation/layout/layout-schema.d.ts +0 -4
  196. package/dist/presentation/layout/layout-schema.d.ts.map +0 -1
  197. package/dist/presentation/layout/layout-schema.js +0 -47
  198. package/dist/presentation/layout/layout-schema.js.map +0 -1
  199. package/dist/presentation/ui/ui-schema.d.ts +0 -10
  200. package/dist/presentation/ui/ui-schema.d.ts.map +0 -1
  201. package/dist/presentation/ui/ui-schema.js +0 -41
  202. package/dist/presentation/ui/ui-schema.js.map +0 -1
  203. package/dist/presentation/view/view-schema.d.ts +0 -4
  204. package/dist/presentation/view/view-schema.d.ts.map +0 -1
  205. package/dist/presentation/view/view-schema.js +0 -15
  206. package/dist/presentation/view/view-schema.js.map +0 -1
  207. package/dist/template/prompt-schema.d.ts +0 -20
  208. package/dist/template/prompt-schema.d.ts.map +0 -1
  209. package/dist/template/prompt-schema.js +0 -70
  210. package/dist/template/prompt-schema.js.map +0 -1
  211. package/dist/template/template-schema.d.ts +0 -3
  212. package/dist/template/template-schema.d.ts.map +0 -1
  213. package/dist/template/template-schema.js +0 -181
  214. package/dist/template/template-schema.js.map +0 -1
@@ -1,302 +0,0 @@
1
- import { TypeId } from "../registry.js";
2
- import { PACKAGE_SEPARATOR } from "../constants.js";
3
- export class MetaData {
4
- typeId;
5
- name;
6
- // Identity / packaging
7
- package;
8
- superRef; // raw super reference string, pre-resolution
9
- _superData; // post-resolution pointer; set by setSuperResolved() after parsing
10
- isAbstract = false;
11
- // Native @isArray (boolean property, NOT in attrs!)
12
- isArray = false;
13
- /**
14
- * Per-node merge flag (v0.3 `merge: true` operator).
15
- *
16
- * When `true` on a node being parsed:
17
- * - If an existing same-(type,name) child is found in the current parent → reuse it (merge into it).
18
- * - If NOT found → throw: "Merge operation requested for [...] but no existing metadata found".
19
- */
20
- isMerge = false;
21
- // Internal storage
22
- _attrs = new Map();
23
- _children = [];
24
- _parent;
25
- _frozen = false;
26
- // Registry-supplied coarse value type — set by the registry factory at node
27
- // construction (for field/attr nodes). Read via MetaField/MetaAttr.dataType.
28
- _dataType;
29
- // Per-instance read cache: only populated once the node is frozen.
30
- _cache = new Map();
31
- constructor(typeId, name) {
32
- this.typeId = typeId;
33
- this.name = name;
34
- }
35
- // ---------------------------------------------------------------------------
36
- // Cache helper
37
- // ---------------------------------------------------------------------------
38
- /**
39
- * Memoize a derived read. Only caches once the node is frozen — a value
40
- * computed during the (mutable) load phase is never stored, so it cannot
41
- * go stale. After freeze the tree is immutable, so a cached entry is valid
42
- * for the node's lifetime; there is no invalidation.
43
- */
44
- cached(key, compute) {
45
- if (this._frozen && this._cache.has(key)) {
46
- return this._cache.get(key);
47
- }
48
- const value = compute();
49
- if (this._frozen)
50
- this._cache.set(key, value);
51
- return value;
52
- }
53
- // ---------------------------------------------------------------------------
54
- // Convenience accessors
55
- // ---------------------------------------------------------------------------
56
- get type() {
57
- return this.typeId.type;
58
- }
59
- get subType() {
60
- return this.typeId.subType;
61
- }
62
- /** "package::name" if package is set, else just "name". Uses :: as separator (not .). */
63
- fqn() {
64
- if (this.package !== undefined) {
65
- return `${this.package}${PACKAGE_SEPARATOR}${this.name}`;
66
- }
67
- return this.name;
68
- }
69
- // ---------------------------------------------------------------------------
70
- // Freeze guard
71
- // ---------------------------------------------------------------------------
72
- _assertNotFrozen() {
73
- if (this._frozen) {
74
- throw new Error(`Cannot mutate frozen MetaData ${this.fqn()}`);
75
- }
76
- }
77
- // ---------------------------------------------------------------------------
78
- // Package
79
- // ---------------------------------------------------------------------------
80
- setPackage(pkg) {
81
- this._assertNotFrozen();
82
- this.package = pkg;
83
- }
84
- // ---------------------------------------------------------------------------
85
- // Super
86
- // ---------------------------------------------------------------------------
87
- /** Returns the resolved super model, or undefined if not yet resolved. */
88
- get superData() {
89
- return this._superData;
90
- }
91
- /** Temporary compatibility alias for `superData` — kept while super-resolve.ts still references this name; to be removed in a later task. */
92
- get superResolved() {
93
- return this._superData;
94
- }
95
- /**
96
- * Sets the resolved super model. Normally called by Task 6's super resolution
97
- * after parsing and before freezing.
98
- */
99
- setSuperResolved(model) {
100
- this._assertNotFrozen();
101
- this._superData = model;
102
- }
103
- setSuper(ref) {
104
- this._assertNotFrozen();
105
- this.superRef = ref;
106
- }
107
- // ---------------------------------------------------------------------------
108
- // isArray
109
- // ---------------------------------------------------------------------------
110
- setIsArray(val) {
111
- this._assertNotFrozen();
112
- this.isArray = val;
113
- }
114
- // ---------------------------------------------------------------------------
115
- // dataType
116
- // ---------------------------------------------------------------------------
117
- /** Set the registry-supplied DataType. Called by the registry factory at
118
- * node construction. */
119
- setDataType(dt) {
120
- this._assertNotFrozen();
121
- this._dataType = dt;
122
- }
123
- // ---------------------------------------------------------------------------
124
- // isAbstract
125
- // ---------------------------------------------------------------------------
126
- setIsAbstract(val) {
127
- this._assertNotFrozen();
128
- this.isAbstract = val;
129
- }
130
- // ---------------------------------------------------------------------------
131
- // isMerge
132
- // ---------------------------------------------------------------------------
133
- setIsMerge(val) {
134
- this._assertNotFrozen();
135
- this.isMerge = val;
136
- }
137
- // ---------------------------------------------------------------------------
138
- // Attributes
139
- // ---------------------------------------------------------------------------
140
- setAttr(name, value) {
141
- this._assertNotFrozen();
142
- this._attrs.set(name, value);
143
- }
144
- /** Own (locally declared) attr value for `name`, or undefined — excludes inherited. */
145
- ownAttr(name) {
146
- return this._attrs.get(name);
147
- }
148
- /**
149
- * Own (locally declared) attrs — a cached map; excludes attrs inherited via extends.
150
- * Do not cast to `Map` and mutate — the same reference is returned on every call
151
- * after freeze, so a mutation would corrupt subsequent reads.
152
- */
153
- ownAttrs() {
154
- return this.cached("ownAttrs", () => new Map(this._attrs));
155
- }
156
- /** True if `name` is an own (locally declared) attr — excludes inherited. */
157
- ownHasAttr(name) {
158
- return this._attrs.has(name);
159
- }
160
- // ---------------------------------------------------------------------------
161
- // Effective attr accessors — the default. Own + attrs inherited via the
162
- // super chain (own winning on a key conflict). Own-only access is the
163
- // explicit own* opt-in above.
164
- // ---------------------------------------------------------------------------
165
- /**
166
- * Effective attrs — own + inherited via the super chain, own winning on a key conflict; cached.
167
- * Do not cast to `Map` and mutate — the same reference is returned on every call
168
- * after freeze, so a mutation would corrupt subsequent reads.
169
- */
170
- attrs() {
171
- return this.cached("attrs", () => this._effectiveAttrs(new Set([this])));
172
- }
173
- /** Effective attr value for `name`, or undefined. */
174
- attr(name) {
175
- return this.attrs().get(name);
176
- }
177
- /** True if `name` resolves to an effective attr (own or inherited). */
178
- hasAttr(name) {
179
- return this.attrs().has(name);
180
- }
181
- // ---------------------------------------------------------------------------
182
- // Children
183
- // ---------------------------------------------------------------------------
184
- addChild(child) {
185
- this._assertNotFrozen();
186
- child._parent = this;
187
- this._children.push(child);
188
- }
189
- /** The node this node was added to as a child, or undefined for the tree root. */
190
- get parent() {
191
- return this._parent;
192
- }
193
- /** Walk up to the top of the tree this node belongs to. */
194
- root() {
195
- let node = this;
196
- while (node._parent !== undefined) {
197
- node = node._parent;
198
- }
199
- return node;
200
- }
201
- /** Own (locally declared) children — a cached frozen array; excludes children inherited via extends. */
202
- ownChildren() {
203
- return this.cached("ownChildren", () => Object.freeze([...this._children]));
204
- }
205
- /** Own children whose type matches — excludes inherited. */
206
- ownChildrenOfType(type) {
207
- return this.ownChildren().filter((c) => c.type === type);
208
- }
209
- /** Own children matching both type and subType — excludes inherited. */
210
- ownChildrenOfSubType(type, subType) {
211
- return this.ownChildren().filter((c) => c.type === type && c.subType === subType);
212
- }
213
- /** First own child with matching name, or undefined — excludes inherited. */
214
- ownChildByName(name) {
215
- return this.ownChildren().find((c) => c.name === name);
216
- }
217
- /** First own child matching both type and name, or undefined — excludes inherited. */
218
- ownChildByTypeAndName(type, name) {
219
- return this.ownChildren().find((c) => c.type === type && c.name === name);
220
- }
221
- // ---------------------------------------------------------------------------
222
- // Effective child accessors — the default. Own + children inherited via the
223
- // super chain (own shadowing super on a (type, name) match). Own-only access
224
- // is the explicit own* opt-in above.
225
- // ---------------------------------------------------------------------------
226
- /** Effective children: own + inherited via the super chain, own shadowing super. Cached, frozen. */
227
- children() {
228
- return this.cached("children", () => Object.freeze(this._effectiveChildren(new Set([this]))));
229
- }
230
- /** Effective children whose type matches. */
231
- childrenOfType(type) {
232
- return this.children().filter((c) => c.type === type);
233
- }
234
- /** Effective children matching both type and subType. */
235
- childrenOfSubType(type, subType) {
236
- return this.children().filter((c) => c.type === type && c.subType === subType);
237
- }
238
- /** First effective child with matching name, or undefined. */
239
- childByName(name) {
240
- return this.children().find((c) => c.name === name);
241
- }
242
- /** First effective child matching both type and name, or undefined. */
243
- childByTypeAndName(type, name) {
244
- return this.children().find((c) => c.type === type && c.name === name);
245
- }
246
- // ---------------------------------------------------------------------------
247
- // Internal helpers for effective attr / child computation
248
- // ---------------------------------------------------------------------------
249
- _effectiveAttrs(visited) {
250
- if (this._superData === undefined || visited.has(this._superData)) {
251
- return new Map(this._attrs);
252
- }
253
- visited.add(this._superData);
254
- // Start with the super chain's effective attrs, then override with own.
255
- const result = this._superData._effectiveAttrs(visited);
256
- for (const [k, v] of this._attrs) {
257
- result.set(k, v);
258
- }
259
- return result;
260
- }
261
- _effectiveChildren(visited) {
262
- if (this._superData === undefined || visited.has(this._superData)) {
263
- return [...this._children];
264
- }
265
- visited.add(this._superData);
266
- // Start from the super's effective children (already a copy from the recursive call).
267
- const result = this._superData._effectiveChildren(visited);
268
- // Track which of our own children matched (overrode) a super child position.
269
- const appendQueue = [];
270
- for (const ownChild of this._children) {
271
- // Find the index in result that has the same (type, name).
272
- const idx = result.findIndex((sc) => sc.type === ownChild.type && sc.name === ownChild.name);
273
- if (idx !== -1) {
274
- // Replace the super child with our own (in-place override).
275
- result[idx] = ownChild;
276
- }
277
- else {
278
- // No matching super child — will be appended at the end.
279
- appendQueue.push(ownChild);
280
- }
281
- }
282
- // Append non-overriding own children.
283
- result.push(...appendQueue);
284
- return result;
285
- }
286
- // ---------------------------------------------------------------------------
287
- // Lifecycle
288
- // ---------------------------------------------------------------------------
289
- freeze() {
290
- if (this._frozen) {
291
- return; // Idempotent
292
- }
293
- this._frozen = true;
294
- for (const child of this._children) {
295
- child.freeze();
296
- }
297
- }
298
- isFrozen() {
299
- return this._frozen;
300
- }
301
- }
302
- //# sourceMappingURL=meta-data.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"meta-data.js","sourceRoot":"","sources":["../../src/meta/meta-data.ts"],"names":[],"mappings":"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"}
@@ -1,48 +0,0 @@
1
- import { MetaData, type AttrValue } from "./meta-data.js";
2
- import { type DataType, type DataTypeAware } from "../data-type.js";
3
- import type { MetaValidator } from "./meta-validator.js";
4
- import type { MetaView } from "./meta-view.js";
5
- export declare class MetaField extends MetaData implements DataTypeAware {
6
- /** The coarse value-type classification for this field's subtype. */
7
- get dataType(): DataType;
8
- /** The target object name for an object-typed field (the `@objectRef` attr). */
9
- get objectRef(): string | undefined;
10
- get dbColumn(): string | undefined;
11
- get default(): unknown;
12
- /**
13
- * The default value for this field, converted to the field's own DataType.
14
- *
15
- * Java parity: MetaField.getDefaultValue() — reads the raw @default attr and
16
- * converts it via DataConverter.toTypeSafe(getDataType(), raw). This ensures
17
- * that even if the raw value was stored as a string (e.g. "@default": "false"
18
- * in YAML or string-keyed JSON), the returned value is the correctly-typed
19
- * boolean/number/string for this field's subtype.
20
- *
21
- * Returns undefined when @default is not set on this field.
22
- * Result is cached after freeze (same pattern as validators()/views()).
23
- */
24
- defaultValue(): AttrValue | undefined;
25
- get maxLength(): number | undefined;
26
- get precision(): number | undefined;
27
- get scale(): number | undefined;
28
- /** True if `@unique: true` is set on the field itself (column-level unique). */
29
- get unique(): boolean;
30
- /**
31
- * True if the field is required (NOT NULL).
32
- *
33
- * Checks both `@required: true` attr and `validator.required` children —
34
- * matches the codegen-ts isRequired() semantics.
35
- */
36
- get isRequired(): boolean;
37
- /** All effective validators (own + inherited via extends). Java parity: MetaField.getValidators() / getChildren(MetaValidator.class, true). */
38
- validators(): MetaValidator[];
39
- /** Own validators only — excludes validators inherited via extends. Java parity: getChildren(Class, false). */
40
- ownValidators(): MetaValidator[];
41
- /** All effective views (own + inherited via extends). Java parity: MetaField.getViews() / getChildren(MetaView.class, true). */
42
- views(): MetaView[];
43
- /** Own views only — excludes views inherited via extends. */
44
- ownViews(): MetaView[];
45
- /** The typed supertype field if `extends:` resolved, else undefined. */
46
- resolveSuper(): MetaField | undefined;
47
- }
48
- //# sourceMappingURL=meta-field.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"meta-field.d.ts","sourceRoot":"","sources":["../../src/meta/meta-field.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,QAAQ,EAAE,KAAK,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC1D,OAAO,EAAE,KAAK,QAAQ,EAAE,KAAK,aAAa,EAAoB,MAAM,iBAAiB,CAAC;AAetF,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAE/C,qBAAa,SAAU,SAAQ,QAAS,YAAW,aAAa;IAC9D,qEAAqE;IACrE,IAAI,QAAQ,IAAI,QAAQ,CAEvB;IAED,gFAAgF;IAChF,IAAI,SAAS,IAAI,MAAM,GAAG,SAAS,CAGlC;IAED,IAAI,QAAQ,IAAI,MAAM,GAAG,SAAS,CAGjC;IAED,IAAI,OAAO,IAAI,OAAO,CAErB;IAED;;;;;;;;;;;OAWG;IACH,YAAY,IAAI,SAAS,GAAG,SAAS;IAQrC,IAAI,SAAS,IAAI,MAAM,GAAG,SAAS,CAGlC;IAED,IAAI,SAAS,IAAI,MAAM,GAAG,SAAS,CAGlC;IAED,IAAI,KAAK,IAAI,MAAM,GAAG,SAAS,CAG9B;IAED,gFAAgF;IAChF,IAAI,MAAM,IAAI,OAAO,CAEpB;IAED;;;;;OAKG;IACH,IAAI,UAAU,IAAI,OAAO,CAGxB;IAED,+IAA+I;IAC/I,UAAU,IAAI,aAAa,EAAE;IAM7B,+GAA+G;IAC/G,aAAa,IAAI,aAAa,EAAE;IAMhC,gIAAgI;IAChI,KAAK,IAAI,QAAQ,EAAE;IAMnB,6DAA6D;IAC7D,QAAQ,IAAI,QAAQ,EAAE;IAMtB,wEAAwE;IACxE,YAAY,IAAI,SAAS,GAAG,SAAS;CAGtC"}
@@ -1,94 +0,0 @@
1
- // MetaField — concrete node class for type=field nodes.
2
- //
3
- // Extends MetaData directly: no model wrapper, no metaOf() indirection.
4
- // Children are already concrete typed nodes; accessors filter by type constant.
5
- import { MetaData } from "./meta-data.js";
6
- import { DATA_TYPE_STRING } from "../data-type.js";
7
- import { convertToDataType } from "../data-converter.js";
8
- import { TYPE_VALIDATOR, TYPE_VIEW, FIELD_ATTR_DB_COLUMN, FIELD_ATTR_REQUIRED, FIELD_ATTR_UNIQUE, FIELD_ATTR_DEFAULT, FIELD_ATTR_MAX_LENGTH, FIELD_ATTR_PRECISION, FIELD_ATTR_SCALE, FIELD_ATTR_OBJECT_REF, VALIDATOR_SUBTYPE_REQUIRED, } from "../constants.js";
9
- export class MetaField extends MetaData {
10
- /** The coarse value-type classification for this field's subtype. */
11
- get dataType() {
12
- return this._dataType ?? DATA_TYPE_STRING;
13
- }
14
- /** The target object name for an object-typed field (the `@objectRef` attr). */
15
- get objectRef() {
16
- const v = this.ownAttr(FIELD_ATTR_OBJECT_REF);
17
- return typeof v === "string" ? v : undefined;
18
- }
19
- get dbColumn() {
20
- const v = this.ownAttr(FIELD_ATTR_DB_COLUMN);
21
- return typeof v === "string" ? v : undefined;
22
- }
23
- get default() {
24
- return this.ownAttr(FIELD_ATTR_DEFAULT);
25
- }
26
- /**
27
- * The default value for this field, converted to the field's own DataType.
28
- *
29
- * Java parity: MetaField.getDefaultValue() — reads the raw @default attr and
30
- * converts it via DataConverter.toTypeSafe(getDataType(), raw). This ensures
31
- * that even if the raw value was stored as a string (e.g. "@default": "false"
32
- * in YAML or string-keyed JSON), the returned value is the correctly-typed
33
- * boolean/number/string for this field's subtype.
34
- *
35
- * Returns undefined when @default is not set on this field.
36
- * Result is cached after freeze (same pattern as validators()/views()).
37
- */
38
- defaultValue() {
39
- return this.cached("defaultValue", () => {
40
- const raw = this.ownAttr(FIELD_ATTR_DEFAULT);
41
- if (raw === undefined)
42
- return undefined;
43
- return convertToDataType(this.dataType, raw);
44
- });
45
- }
46
- get maxLength() {
47
- const v = this.ownAttr(FIELD_ATTR_MAX_LENGTH);
48
- return typeof v === "number" ? v : undefined;
49
- }
50
- get precision() {
51
- const v = this.ownAttr(FIELD_ATTR_PRECISION);
52
- return typeof v === "number" ? v : undefined;
53
- }
54
- get scale() {
55
- const v = this.ownAttr(FIELD_ATTR_SCALE);
56
- return typeof v === "number" ? v : undefined;
57
- }
58
- /** True if `@unique: true` is set on the field itself (column-level unique). */
59
- get unique() {
60
- return this.ownAttr(FIELD_ATTR_UNIQUE) === true;
61
- }
62
- /**
63
- * True if the field is required (NOT NULL).
64
- *
65
- * Checks both `@required: true` attr and `validator.required` children —
66
- * matches the codegen-ts isRequired() semantics.
67
- */
68
- get isRequired() {
69
- if (this.ownAttr(FIELD_ATTR_REQUIRED) === true)
70
- return true;
71
- return this.validators().some((v) => v.subType === VALIDATOR_SUBTYPE_REQUIRED);
72
- }
73
- /** All effective validators (own + inherited via extends). Java parity: MetaField.getValidators() / getChildren(MetaValidator.class, true). */
74
- validators() {
75
- return this.cached("validators", () => this.children().filter((c) => c.type === TYPE_VALIDATOR));
76
- }
77
- /** Own validators only — excludes validators inherited via extends. Java parity: getChildren(Class, false). */
78
- ownValidators() {
79
- return this.cached("ownValidators", () => this.ownChildren().filter((c) => c.type === TYPE_VALIDATOR));
80
- }
81
- /** All effective views (own + inherited via extends). Java parity: MetaField.getViews() / getChildren(MetaView.class, true). */
82
- views() {
83
- return this.cached("views", () => this.children().filter((c) => c.type === TYPE_VIEW));
84
- }
85
- /** Own views only — excludes views inherited via extends. */
86
- ownViews() {
87
- return this.cached("ownViews", () => this.ownChildren().filter((c) => c.type === TYPE_VIEW));
88
- }
89
- /** The typed supertype field if `extends:` resolved, else undefined. */
90
- resolveSuper() {
91
- return this.superData;
92
- }
93
- }
94
- //# sourceMappingURL=meta-field.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"meta-field.js","sourceRoot":"","sources":["../../src/meta/meta-field.ts"],"names":[],"mappings":"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"}
@@ -1,71 +0,0 @@
1
- import { MetaData } from "./meta-data.js";
2
- import type { MetaRoot } from "./meta-root.js";
3
- /** Strongly-typed identity generation strategies. */
4
- export type IdentityGeneration = "increment" | "uuid" | "assigned";
5
- export declare class MetaIdentity extends MetaData {
6
- get fields(): string[];
7
- /**
8
- * Whether the identity enforces uniqueness.
9
- * Defaults to true; explicit `@unique: false` makes it a non-unique index.
10
- */
11
- get unique(): boolean;
12
- isPrimary(): boolean;
13
- isSecondary(): boolean;
14
- isReference(): boolean;
15
- isComposite(): boolean;
16
- }
17
- /**
18
- * Primary identity (the entity's PK). Always unique by definition.
19
- * Carries `@generation` (increment / uuid / assigned).
20
- */
21
- export declare class MetaPrimaryIdentity extends MetaIdentity {
22
- get generation(): IdentityGeneration | undefined;
23
- }
24
- /**
25
- * Secondary identity — a unique or non-unique index on one or more fields.
26
- * `@generation` does not apply here.
27
- */
28
- export declare class MetaSecondaryIdentity extends MetaIdentity {
29
- }
30
- /**
31
- * Reference identity — a field (or compound field set) on this entity whose
32
- * value(s) identify an instance of another entity.
33
- *
34
- * Maps to: SQL foreign key, document linked reference, graph edge target,
35
- * OO pointer/reference. Backend-agnostic at the metamodel level.
36
- *
37
- * Carries `@references` — either a bare entity name (defaults to that
38
- * entity's primary identity) or a dotted `Entity.field` or
39
- * `Entity.fieldA,fieldB` form for explicit field/compound targets.
40
- */
41
- export declare class MetaReferenceIdentity extends MetaIdentity {
42
- /** Raw `@references` attr value, unparsed. */
43
- get referencesRaw(): string | undefined;
44
- /** Target entity name (the bit before the dot, or the whole bare value). */
45
- get targetEntity(): string | undefined;
46
- /**
47
- * Whether the reference is physically enforced by the backend.
48
- * Default true (hard FK constraint emitted). Explicit `@enforce: false`
49
- * marks the reference as logical-only — drizzle-schema skips `.references()`
50
- * and migrate-ts's expected schema omits the FK descriptor. relations()
51
- * block and projection JOIN inference are unaffected.
52
- */
53
- get enforce(): boolean;
54
- /**
55
- * Target field names. Empty array means "use the target's primary identity"
56
- * (the bare-entity form). For dotted forms, returns the field(s) after the
57
- * dot (comma-split, trimmed).
58
- */
59
- get targetFields(): string[];
60
- /**
61
- * Resolve the target field on the referenced entity that this reference
62
- * points at. Priority: explicit dotted-form `@references: "Entity.field"`
63
- * override → target entity's primary identity field → "id" fallback.
64
- *
65
- * Returns undefined only if the target entity cannot be found in `root`.
66
- * Centralizes the FK-target resolution rule used by projection view DDL,
67
- * Drizzle schema emit, and migration schema comparison.
68
- */
69
- resolvedTargetPkField(root: MetaRoot): string | undefined;
70
- }
71
- //# sourceMappingURL=meta-identity.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"meta-identity.d.ts","sourceRoot":"","sources":["../../src/meta/meta-identity.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAW1C,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAE/C,qDAAqD;AACrD,MAAM,MAAM,kBAAkB,GAAG,WAAW,GAAG,MAAM,GAAG,UAAU,CAAC;AAEnE,qBAAa,YAAa,SAAQ,QAAQ;IACxC,IAAI,MAAM,IAAI,MAAM,EAAE,CAGrB;IAED;;;OAGG;IACH,IAAI,MAAM,IAAI,OAAO,CAEpB;IAED,SAAS,IAAI,OAAO;IAIpB,WAAW,IAAI,OAAO;IAItB,WAAW,IAAI,OAAO;IAItB,WAAW,IAAI,OAAO;CAGvB;AAED;;;GAGG;AACH,qBAAa,mBAAoB,SAAQ,YAAY;IACnD,IAAI,UAAU,IAAI,kBAAkB,GAAG,SAAS,CAG/C;CACF;AAED;;;GAGG;AACH,qBAAa,qBAAsB,SAAQ,YAAY;CAAG;AAE1D;;;;;;;;;;GAUG;AACH,qBAAa,qBAAsB,SAAQ,YAAY;IACrD,8CAA8C;IAC9C,IAAI,aAAa,IAAI,MAAM,GAAG,SAAS,CAGtC;IAED,4EAA4E;IAC5E,IAAI,YAAY,IAAI,MAAM,GAAG,SAAS,CAKrC;IAED;;;;;;OAMG;IACH,IAAI,OAAO,IAAI,OAAO,CAErB;IAED;;;;OAIG;IACH,IAAI,YAAY,IAAI,MAAM,EAAE,CAU3B;IAED;;;;;;;;OAQG;IACH,qBAAqB,CAAC,IAAI,EAAE,QAAQ,GAAG,MAAM,GAAG,SAAS;CAe1D"}