@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.
- package/dist/attr-schema-validate.js +12 -4
- package/dist/attr-schema-validate.js.map +1 -1
- package/dist/core/identity/identity-constants.d.ts.map +1 -1
- package/dist/core/identity/identity-constants.js +3 -0
- package/dist/core/identity/identity-constants.js.map +1 -1
- package/dist/core/identity/identity-definition.embedded.d.ts.map +1 -1
- package/dist/core/identity/identity-definition.embedded.js +2 -0
- package/dist/core/identity/identity-definition.embedded.js.map +1 -1
- package/dist/core/identity/meta-identity.d.ts.map +1 -1
- package/dist/core/identity/meta-identity.js +8 -1
- package/dist/core/identity/meta-identity.js.map +1 -1
- package/dist/core/validator/validator-constants.d.ts +14 -1
- package/dist/core/validator/validator-constants.d.ts.map +1 -1
- package/dist/core/validator/validator-constants.js +20 -1
- package/dist/core/validator/validator-constants.js.map +1 -1
- package/dist/core/validator/validator-definition.embedded.d.ts.map +1 -1
- package/dist/core/validator/validator-definition.embedded.js +121 -0
- package/dist/core/validator/validator-definition.embedded.js.map +1 -1
- package/dist/core-types.d.ts.map +1 -1
- package/dist/core-types.js +25 -2
- package/dist/core-types.js.map +1 -1
- package/dist/errors.d.ts +3 -3
- package/dist/errors.d.ts.map +1 -1
- package/dist/errors.js +9 -0
- package/dist/errors.js.map +1 -1
- package/dist/loader/meta-data-loader.d.ts.map +1 -1
- package/dist/loader/meta-data-loader.js +10 -0
- package/dist/loader/meta-data-loader.js.map +1 -1
- package/dist/loader/validation-passes.d.ts.map +1 -1
- package/dist/loader/validation-passes.js +6 -1
- package/dist/loader/validation-passes.js.map +1 -1
- package/dist/loader/validation-registry.d.ts +10 -0
- package/dist/loader/validation-registry.d.ts.map +1 -0
- package/dist/loader/validation-registry.js +84 -0
- package/dist/loader/validation-registry.js.map +1 -0
- package/dist/parser-core.js +10 -1
- package/dist/parser-core.js.map +1 -1
- package/dist/persistence/db/db-constants.d.ts +10 -0
- package/dist/persistence/db/db-constants.d.ts.map +1 -1
- package/dist/persistence/db/db-constants.js +14 -0
- package/dist/persistence/db/db-constants.js.map +1 -1
- package/dist/persistence/db/db-definition.embedded.d.ts.map +1 -1
- package/dist/persistence/db/db-definition.embedded.js +57 -0
- package/dist/persistence/db/db-definition.embedded.js.map +1 -1
- package/dist/provider-data.d.ts +15 -0
- package/dist/provider-data.d.ts.map +1 -1
- package/dist/provider-data.js +2 -0
- package/dist/provider-data.js.map +1 -1
- package/dist/registry.d.ts +16 -0
- package/dist/registry.d.ts.map +1 -1
- package/dist/registry.js.map +1 -1
- package/dist/validate-max-occurs.d.ts +5 -0
- package/dist/validate-max-occurs.d.ts.map +1 -0
- package/dist/validate-max-occurs.js +28 -0
- package/dist/validate-max-occurs.js.map +1 -0
- package/dist/validation-types.d.ts +36 -0
- package/dist/validation-types.d.ts.map +1 -0
- package/dist/validation-types.js +7 -0
- package/dist/validation-types.js.map +1 -0
- package/package.json +1 -1
- package/src/attr-schema-validate.ts +12 -4
- package/src/core/identity/identity-constants.ts +4 -0
- package/src/core/identity/identity-definition.embedded.ts +2 -0
- package/src/core/identity/meta-identity.ts +8 -1
- package/src/core/validator/validator-constants.ts +22 -1
- package/src/core/validator/validator-definition.embedded.ts +121 -0
- package/src/core-types.ts +26 -1
- package/src/errors.ts +11 -2
- package/src/loader/meta-data-loader.ts +12 -0
- package/src/loader/validation-passes.ts +11 -1
- package/src/loader/validation-registry.ts +93 -0
- package/src/parser-core.ts +10 -1
- package/src/persistence/db/db-constants.ts +16 -0
- package/src/persistence/db/db-definition.embedded.ts +57 -0
- package/src/provider-data.ts +17 -0
- package/src/registry.ts +16 -0
- package/src/validate-max-occurs.ts +39 -0
- package/src/validation-types.ts +57 -0
- package/dist/constants.d.ts +0 -208
- package/dist/constants.d.ts.map +0 -1
- package/dist/constants.js +0 -419
- package/dist/constants.js.map +0 -1
- package/dist/core/documentation/doc-schema.d.ts +0 -8
- package/dist/core/documentation/doc-schema.d.ts.map +0 -1
- package/dist/core/documentation/doc-schema.js +0 -61
- package/dist/core/documentation/doc-schema.js.map +0 -1
- package/dist/core/field/field-schema.d.ts +0 -6
- package/dist/core/field/field-schema.d.ts.map +0 -1
- package/dist/core/field/field-schema.js +0 -23
- package/dist/core/field/field-schema.js.map +0 -1
- package/dist/core/file-meta-data-loader.d.ts +0 -18
- package/dist/core/file-meta-data-loader.d.ts.map +0 -1
- package/dist/core/file-meta-data-loader.js +0 -81
- package/dist/core/file-meta-data-loader.js.map +0 -1
- package/dist/core/file-source.d.ts +0 -12
- package/dist/core/file-source.d.ts.map +0 -1
- package/dist/core/file-source.js +0 -46
- package/dist/core/file-source.js.map +0 -1
- package/dist/core/identity/identity-schema.d.ts +0 -6
- package/dist/core/identity/identity-schema.d.ts.map +0 -1
- package/dist/core/identity/identity-schema.js +0 -56
- package/dist/core/identity/identity-schema.js.map +0 -1
- package/dist/core/object/object-schema.d.ts +0 -4
- package/dist/core/object/object-schema.d.ts.map +0 -1
- package/dist/core/object/object-schema.js +0 -28
- package/dist/core/object/object-schema.js.map +0 -1
- package/dist/core/relationship/relationship-schema.d.ts +0 -4
- package/dist/core/relationship/relationship-schema.d.ts.map +0 -1
- package/dist/core/relationship/relationship-schema.js +0 -57
- package/dist/core/relationship/relationship-schema.js.map +0 -1
- package/dist/core/validator/validator-schema.d.ts +0 -4
- package/dist/core/validator/validator-schema.d.ts.map +0 -1
- package/dist/core/validator/validator-schema.js +0 -38
- package/dist/core/validator/validator-schema.js.map +0 -1
- package/dist/core-attr-schemas.d.ts +0 -22
- package/dist/core-attr-schemas.d.ts.map +0 -1
- package/dist/core-attr-schemas.js +0 -324
- package/dist/core-attr-schemas.js.map +0 -1
- package/dist/db/db-attr-schemas.d.ts +0 -8
- package/dist/db/db-attr-schemas.d.ts.map +0 -1
- package/dist/db/db-attr-schemas.js +0 -26
- package/dist/db/db-attr-schemas.js.map +0 -1
- package/dist/db/db-provider.d.ts +0 -3
- package/dist/db/db-provider.d.ts.map +0 -1
- package/dist/db/db-provider.js +0 -28
- package/dist/db/db-provider.js.map +0 -1
- package/dist/meta/find-reference.d.ts +0 -22
- package/dist/meta/find-reference.d.ts.map +0 -1
- package/dist/meta/find-reference.js +0 -29
- package/dist/meta/find-reference.js.map +0 -1
- package/dist/meta/meta-attr.d.ts +0 -8
- package/dist/meta/meta-attr.d.ts.map +0 -1
- package/dist/meta/meta-attr.js +0 -17
- package/dist/meta/meta-attr.js.map +0 -1
- package/dist/meta/meta-data.d.ts +0 -107
- package/dist/meta/meta-data.d.ts.map +0 -1
- package/dist/meta/meta-data.js +0 -302
- package/dist/meta/meta-data.js.map +0 -1
- package/dist/meta/meta-field.d.ts +0 -48
- package/dist/meta/meta-field.d.ts.map +0 -1
- package/dist/meta/meta-field.js +0 -94
- package/dist/meta/meta-field.js.map +0 -1
- package/dist/meta/meta-identity.d.ts +0 -71
- package/dist/meta/meta-identity.d.ts.map +0 -1
- package/dist/meta/meta-identity.js +0 -129
- package/dist/meta/meta-identity.js.map +0 -1
- package/dist/meta/meta-layout.d.ts +0 -23
- package/dist/meta/meta-layout.d.ts.map +0 -1
- package/dist/meta/meta-layout.js +0 -45
- package/dist/meta/meta-layout.js.map +0 -1
- package/dist/meta/meta-object.d.ts +0 -40
- package/dist/meta/meta-object.d.ts.map +0 -1
- package/dist/meta/meta-object.js +0 -81
- package/dist/meta/meta-object.js.map +0 -1
- package/dist/meta/meta-origin.d.ts +0 -32
- package/dist/meta/meta-origin.d.ts.map +0 -1
- package/dist/meta/meta-origin.js +0 -55
- package/dist/meta/meta-origin.js.map +0 -1
- package/dist/meta/meta-relationship.d.ts +0 -11
- package/dist/meta/meta-relationship.d.ts.map +0 -1
- package/dist/meta/meta-relationship.js +0 -27
- package/dist/meta/meta-relationship.js.map +0 -1
- package/dist/meta/meta-root.d.ts +0 -12
- package/dist/meta/meta-root.d.ts.map +0 -1
- package/dist/meta/meta-root.js +0 -24
- package/dist/meta/meta-root.js.map +0 -1
- package/dist/meta/meta-source.d.ts +0 -18
- package/dist/meta/meta-source.d.ts.map +0 -1
- package/dist/meta/meta-source.js +0 -31
- package/dist/meta/meta-source.js.map +0 -1
- package/dist/meta/meta-validator.d.ts +0 -29
- package/dist/meta/meta-validator.d.ts.map +0 -1
- package/dist/meta/meta-validator.js +0 -49
- package/dist/meta/meta-validator.js.map +0 -1
- package/dist/meta/meta-view.d.ts +0 -4
- package/dist/meta/meta-view.d.ts.map +0 -1
- package/dist/meta/meta-view.js +0 -8
- package/dist/meta/meta-view.js.map +0 -1
- package/dist/persistence/db/db-attr-schemas.d.ts +0 -8
- package/dist/persistence/db/db-attr-schemas.d.ts.map +0 -1
- package/dist/persistence/db/db-attr-schemas.js +0 -28
- package/dist/persistence/db/db-attr-schemas.js.map +0 -1
- package/dist/persistence/db/db-schema.d.ts +0 -28
- package/dist/persistence/db/db-schema.d.ts.map +0 -1
- package/dist/persistence/db/db-schema.js +0 -62
- package/dist/persistence/db/db-schema.js.map +0 -1
- package/dist/persistence/origin/origin-schema.d.ts +0 -4
- package/dist/persistence/origin/origin-schema.d.ts.map +0 -1
- package/dist/persistence/origin/origin-schema.js +0 -63
- package/dist/persistence/origin/origin-schema.js.map +0 -1
- package/dist/persistence/source/source-schema.d.ts +0 -4
- package/dist/persistence/source/source-schema.d.ts.map +0 -1
- package/dist/persistence/source/source-schema.js +0 -98
- package/dist/persistence/source/source-schema.js.map +0 -1
- package/dist/presentation/layout/layout-schema.d.ts +0 -4
- package/dist/presentation/layout/layout-schema.d.ts.map +0 -1
- package/dist/presentation/layout/layout-schema.js +0 -47
- package/dist/presentation/layout/layout-schema.js.map +0 -1
- package/dist/presentation/ui/ui-schema.d.ts +0 -10
- package/dist/presentation/ui/ui-schema.d.ts.map +0 -1
- package/dist/presentation/ui/ui-schema.js +0 -41
- package/dist/presentation/ui/ui-schema.js.map +0 -1
- package/dist/presentation/view/view-schema.d.ts +0 -4
- package/dist/presentation/view/view-schema.d.ts.map +0 -1
- package/dist/presentation/view/view-schema.js +0 -15
- package/dist/presentation/view/view-schema.js.map +0 -1
- package/dist/template/prompt-schema.d.ts +0 -20
- package/dist/template/prompt-schema.d.ts.map +0 -1
- package/dist/template/prompt-schema.js +0 -70
- package/dist/template/prompt-schema.js.map +0 -1
- package/dist/template/template-schema.d.ts +0 -3
- package/dist/template/template-schema.d.ts.map +0 -1
- package/dist/template/template-schema.js +0 -181
- package/dist/template/template-schema.js.map +0 -1
package/dist/meta/meta-data.js
DELETED
|
@@ -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"}
|
package/dist/meta/meta-field.js
DELETED
|
@@ -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"}
|