@webda/models 4.0.0-beta.8 → 4.0.0-beta.9
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/lib/index.d.ts +1 -0
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +1 -0
- package/lib/index.js.map +1 -1
- package/lib/repositories/abstract.d.ts +43 -1
- package/lib/repositories/abstract.d.ts.map +1 -1
- package/lib/repositories/abstract.js +70 -1
- package/lib/repositories/abstract.js.map +1 -1
- package/lib/repositories/event.d.ts +6 -0
- package/lib/repositories/event.d.ts.map +1 -1
- package/lib/repositories/event.js +10 -0
- package/lib/repositories/event.js.map +1 -1
- package/lib/repositories/memory.d.ts +29 -7
- package/lib/repositories/memory.d.ts.map +1 -1
- package/lib/repositories/memory.js +80 -40
- package/lib/repositories/memory.js.map +1 -1
- package/lib/types-resolver.d.ts +192 -0
- package/lib/types-resolver.d.ts.map +1 -0
- package/lib/types-resolver.js +365 -0
- package/lib/types-resolver.js.map +1 -0
- package/package.json +6 -6
|
@@ -0,0 +1,365 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Own Metadata of a class: a subclass without its own Metadata does not inherit its parent's identifier
|
|
3
|
+
* @param clazz - the class
|
|
4
|
+
* @returns its own Metadata
|
|
5
|
+
*/
|
|
6
|
+
function ownMetadata(clazz) {
|
|
7
|
+
return clazz && Object.prototype.hasOwnProperty.call(clazz, "Metadata") ? clazz.Metadata : undefined;
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* Add a class to a multi-valued index
|
|
11
|
+
* @param index - the index
|
|
12
|
+
* @param key - the key
|
|
13
|
+
* @param clazz - the class
|
|
14
|
+
*/
|
|
15
|
+
function addTo(index, key, clazz) {
|
|
16
|
+
let set = index.get(key);
|
|
17
|
+
if (!set) {
|
|
18
|
+
set = new Set();
|
|
19
|
+
index.set(key, set);
|
|
20
|
+
}
|
|
21
|
+
set.add(clazz);
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Resolve the `__type` stored in a row (Webda 3 short, lower-case or renamed forms included) to a model
|
|
25
|
+
*
|
|
26
|
+
* Resolution order, first match wins:
|
|
27
|
+
* 1. the exact identifier (or a map key that is not the identifier);
|
|
28
|
+
* 2. a `@WebdaAlias`, exact, then case-insensitive;
|
|
29
|
+
* 3. an identifier, case-insensitive;
|
|
30
|
+
* 4. for a value without `/`: `<namespace>/<value>` then `Webda/<value>`, case-insensitive, identifiers then aliases;
|
|
31
|
+
* 5. otherwise unknown.
|
|
32
|
+
*
|
|
33
|
+
* Two different models matching at the same step make the value ambiguous: it resolves to nothing.
|
|
34
|
+
*/
|
|
35
|
+
export class ModelTypeResolver {
|
|
36
|
+
/**
|
|
37
|
+
* @param models - models by identifier (an application model map), or a list of classes carrying Metadata
|
|
38
|
+
* @param options - namespace and exact mode
|
|
39
|
+
*/
|
|
40
|
+
constructor(models, options = {}) {
|
|
41
|
+
/** Exact names (identifiers and extra map keys) to class */
|
|
42
|
+
this.byName = new Map();
|
|
43
|
+
/** Current identifier of each class */
|
|
44
|
+
this.identifiers = new Map();
|
|
45
|
+
/** Map keys of a class that are not its identifier */
|
|
46
|
+
this.extraNames = new Map();
|
|
47
|
+
/** Lower-case identifiers and extra names */
|
|
48
|
+
this.lowerNames = new Map();
|
|
49
|
+
/** Aliases */
|
|
50
|
+
this.aliases = new Map();
|
|
51
|
+
/** Lower-case aliases */
|
|
52
|
+
this.lowerAliases = new Map();
|
|
53
|
+
/** Cache of resolutions */
|
|
54
|
+
this.resolutions = new Map();
|
|
55
|
+
/** Cache of families */
|
|
56
|
+
this.families = new Map();
|
|
57
|
+
/** Cache of accepted types */
|
|
58
|
+
this.accepted = new Map();
|
|
59
|
+
this.namespace = options.namespace ?? "Webda";
|
|
60
|
+
this.exactOnly = options.exactOnly ?? false;
|
|
61
|
+
const entries = Array.isArray(models)
|
|
62
|
+
? models.filter(Boolean).map(model => [undefined, model])
|
|
63
|
+
: Object.entries(models).filter(([, model]) => !!model);
|
|
64
|
+
for (const [key, clazz] of entries) {
|
|
65
|
+
const identifier = ownMetadata(clazz)?.Identifier ?? key;
|
|
66
|
+
if (!identifier)
|
|
67
|
+
continue;
|
|
68
|
+
this.addName(identifier, clazz, false);
|
|
69
|
+
if (key && key !== identifier) {
|
|
70
|
+
this.addName(key, clazz, true);
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* Index a name of a class
|
|
76
|
+
* @param name - identifier or extra name
|
|
77
|
+
* @param clazz - the class
|
|
78
|
+
* @param extra - true for a map key that is not the identifier
|
|
79
|
+
*/
|
|
80
|
+
addName(name, clazz, extra) {
|
|
81
|
+
if (!this.byName.has(name)) {
|
|
82
|
+
this.byName.set(name, clazz);
|
|
83
|
+
}
|
|
84
|
+
addTo(this.lowerNames, name.toLowerCase(), clazz);
|
|
85
|
+
if (extra) {
|
|
86
|
+
this.extraNames.set(clazz, [...(this.extraNames.get(clazz) ?? []), name]);
|
|
87
|
+
return;
|
|
88
|
+
}
|
|
89
|
+
if (!this.identifiers.has(clazz)) {
|
|
90
|
+
this.identifiers.set(clazz, name);
|
|
91
|
+
}
|
|
92
|
+
for (const alias of ownMetadata(clazz)?.Aliases ?? []) {
|
|
93
|
+
addTo(this.aliases, alias, clazz);
|
|
94
|
+
addTo(this.lowerAliases, alias.toLowerCase(), clazz);
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
/**
|
|
98
|
+
* Resolver of the hierarchy of a model only, exact identifiers only
|
|
99
|
+
*
|
|
100
|
+
* Used for repositories whose model is not part of the installed application: today's exact matching.
|
|
101
|
+
* @param model - the model
|
|
102
|
+
* @returns the resolver
|
|
103
|
+
*/
|
|
104
|
+
static forHierarchy(model) {
|
|
105
|
+
if (!model) {
|
|
106
|
+
return new ModelTypeResolver({}, { exactOnly: true });
|
|
107
|
+
}
|
|
108
|
+
const classes = [];
|
|
109
|
+
const queue = [model];
|
|
110
|
+
while (queue.length) {
|
|
111
|
+
const clazz = queue.shift();
|
|
112
|
+
if (!clazz || classes.includes(clazz))
|
|
113
|
+
continue;
|
|
114
|
+
classes.push(clazz);
|
|
115
|
+
queue.push(...(clazz.Metadata?.Subclasses ?? []).filter((sub) => typeof sub === "function"));
|
|
116
|
+
}
|
|
117
|
+
for (let parent = Object.getPrototypeOf(model); parent && parent !== Function.prototype; parent = Object.getPrototypeOf(parent)) {
|
|
118
|
+
if (ownMetadata(parent)?.Identifier)
|
|
119
|
+
classes.push(parent);
|
|
120
|
+
}
|
|
121
|
+
const record = {};
|
|
122
|
+
for (const clazz of classes) {
|
|
123
|
+
// The repository model may inherit its Metadata (a bare subclass used directly)
|
|
124
|
+
const identifier = (clazz === model ? clazz.Metadata : ownMetadata(clazz))?.Identifier;
|
|
125
|
+
if (identifier && !record[identifier])
|
|
126
|
+
record[identifier] = clazz;
|
|
127
|
+
}
|
|
128
|
+
return new ModelTypeResolver(record, { exactOnly: true });
|
|
129
|
+
}
|
|
130
|
+
/**
|
|
131
|
+
* @param model - a class
|
|
132
|
+
* @returns true when the class is one of the models of this resolver
|
|
133
|
+
*/
|
|
134
|
+
knows(model) {
|
|
135
|
+
return this.identifiers.has(model);
|
|
136
|
+
}
|
|
137
|
+
/**
|
|
138
|
+
* @param model - a class
|
|
139
|
+
* @returns its current identifier, undefined when the class is not known
|
|
140
|
+
*/
|
|
141
|
+
getIdentifier(model) {
|
|
142
|
+
return this.identifiers.get(model);
|
|
143
|
+
}
|
|
144
|
+
/**
|
|
145
|
+
* Resolve a stored `__type`
|
|
146
|
+
* @param stored - the stored value
|
|
147
|
+
* @returns the resolution
|
|
148
|
+
*/
|
|
149
|
+
resolve(stored) {
|
|
150
|
+
let resolution = this.resolutions.get(stored);
|
|
151
|
+
if (!resolution) {
|
|
152
|
+
resolution = this.computeResolution(stored);
|
|
153
|
+
this.resolutions.set(stored, resolution);
|
|
154
|
+
}
|
|
155
|
+
return resolution;
|
|
156
|
+
}
|
|
157
|
+
/**
|
|
158
|
+
* @param stored - the stored value
|
|
159
|
+
* @returns the model, undefined when unknown or ambiguous
|
|
160
|
+
*/
|
|
161
|
+
resolveStoredType(stored) {
|
|
162
|
+
return this.resolve(stored).model;
|
|
163
|
+
}
|
|
164
|
+
/**
|
|
165
|
+
* Run the resolution steps
|
|
166
|
+
* @param stored - the stored value
|
|
167
|
+
* @returns the resolution
|
|
168
|
+
*/
|
|
169
|
+
computeResolution(stored) {
|
|
170
|
+
if (typeof stored !== "string" || stored === "") {
|
|
171
|
+
return { status: "unknown" };
|
|
172
|
+
}
|
|
173
|
+
const exact = this.byName.get(stored);
|
|
174
|
+
if (exact) {
|
|
175
|
+
return this.found(stored, exact);
|
|
176
|
+
}
|
|
177
|
+
if (this.exactOnly) {
|
|
178
|
+
return { status: "unknown" };
|
|
179
|
+
}
|
|
180
|
+
const lower = stored.toLowerCase();
|
|
181
|
+
const steps = [
|
|
182
|
+
this.aliases.get(stored),
|
|
183
|
+
this.lowerAliases.get(lower),
|
|
184
|
+
this.lowerNames.get(lower)
|
|
185
|
+
];
|
|
186
|
+
if (!stored.includes("/")) {
|
|
187
|
+
// Webda 3 completeNamespace order: the application namespace first, then Webda
|
|
188
|
+
for (const namespace of new Set([this.namespace, "Webda"])) {
|
|
189
|
+
const name = `${namespace}/${stored}`.toLowerCase();
|
|
190
|
+
steps.push(this.lowerNames.get(name), this.lowerAliases.get(name));
|
|
191
|
+
}
|
|
192
|
+
}
|
|
193
|
+
for (const step of steps) {
|
|
194
|
+
if (!step || step.size === 0)
|
|
195
|
+
continue;
|
|
196
|
+
if (step.size > 1) {
|
|
197
|
+
return {
|
|
198
|
+
status: "ambiguous",
|
|
199
|
+
candidates: [...step].map(clazz => this.identifiers.get(clazz)).sort()
|
|
200
|
+
};
|
|
201
|
+
}
|
|
202
|
+
return this.found(stored, [...step][0]);
|
|
203
|
+
}
|
|
204
|
+
return { status: "unknown" };
|
|
205
|
+
}
|
|
206
|
+
/**
|
|
207
|
+
* @param stored - the stored value
|
|
208
|
+
* @param model - the matched model
|
|
209
|
+
* @returns the resolution of a match
|
|
210
|
+
*/
|
|
211
|
+
found(stored, model) {
|
|
212
|
+
const identifier = this.identifiers.get(model);
|
|
213
|
+
return { status: stored === identifier ? "current" : "legacy", model, identifier };
|
|
214
|
+
}
|
|
215
|
+
/**
|
|
216
|
+
* The model and all its transitive subclasses: from `Metadata.Subclasses` (direct only), then any known class
|
|
217
|
+
* extending the model that the metadata does not list
|
|
218
|
+
* @param model - the model
|
|
219
|
+
* @returns the model first, then its subclasses
|
|
220
|
+
*/
|
|
221
|
+
family(model) {
|
|
222
|
+
let family = this.families.get(model);
|
|
223
|
+
if (family)
|
|
224
|
+
return family;
|
|
225
|
+
family = [];
|
|
226
|
+
const queue = [model];
|
|
227
|
+
while (queue.length) {
|
|
228
|
+
const clazz = queue.shift();
|
|
229
|
+
if (!clazz || family.includes(clazz))
|
|
230
|
+
continue;
|
|
231
|
+
family.push(clazz);
|
|
232
|
+
for (const sub of clazz.Metadata?.Subclasses ?? []) {
|
|
233
|
+
queue.push(typeof sub === "string" ? this.byName.get(sub) : sub);
|
|
234
|
+
}
|
|
235
|
+
}
|
|
236
|
+
for (const clazz of this.identifiers.keys()) {
|
|
237
|
+
if (!family.includes(clazz) && clazz.prototype instanceof model) {
|
|
238
|
+
family.push(clazz);
|
|
239
|
+
}
|
|
240
|
+
}
|
|
241
|
+
this.families.set(model, family);
|
|
242
|
+
return family;
|
|
243
|
+
}
|
|
244
|
+
/**
|
|
245
|
+
* @param model - the model
|
|
246
|
+
* @returns the current identifiers of the model and its transitive subclasses
|
|
247
|
+
*/
|
|
248
|
+
identifiersOf(model) {
|
|
249
|
+
const identifiers = [];
|
|
250
|
+
for (const clazz of this.family(model)) {
|
|
251
|
+
const identifier = this.identifiers.get(clazz) ?? clazz.Metadata?.Identifier;
|
|
252
|
+
if (identifier && !identifiers.includes(identifier))
|
|
253
|
+
identifiers.push(identifier);
|
|
254
|
+
}
|
|
255
|
+
return identifiers;
|
|
256
|
+
}
|
|
257
|
+
/**
|
|
258
|
+
* Every stored string that resolves to the model or one of its transitive subclasses: identifiers, short names,
|
|
259
|
+
* lower-case forms, aliases and their short and lower-case forms
|
|
260
|
+
* @param model - the model
|
|
261
|
+
* @returns the strings, deduplicated
|
|
262
|
+
*/
|
|
263
|
+
acceptedTypes(model) {
|
|
264
|
+
let accepted = this.accepted.get(model);
|
|
265
|
+
if (accepted)
|
|
266
|
+
return accepted;
|
|
267
|
+
accepted = [];
|
|
268
|
+
for (const clazz of this.family(model)) {
|
|
269
|
+
const identifier = this.identifiers.get(clazz);
|
|
270
|
+
if (!identifier)
|
|
271
|
+
continue;
|
|
272
|
+
const names = [identifier, ...(this.extraNames.get(clazz) ?? []), ...(ownMetadata(clazz)?.Aliases ?? [])];
|
|
273
|
+
for (const name of names) {
|
|
274
|
+
const short = name.split("/").pop();
|
|
275
|
+
for (const candidate of [name, short, name.toLowerCase(), short.toLowerCase()]) {
|
|
276
|
+
if (!accepted.includes(candidate) && this.resolve(candidate).model === clazz) {
|
|
277
|
+
accepted.push(candidate);
|
|
278
|
+
}
|
|
279
|
+
}
|
|
280
|
+
}
|
|
281
|
+
}
|
|
282
|
+
this.accepted.set(model, accepted);
|
|
283
|
+
return accepted;
|
|
284
|
+
}
|
|
285
|
+
/**
|
|
286
|
+
* Whether a stored row belongs to a model
|
|
287
|
+
* @param model - the model queried
|
|
288
|
+
* @param stored - the stored `__type`, undefined for an untyped row
|
|
289
|
+
* @param tableRoot - the model owning the untyped rows of the table, when known
|
|
290
|
+
* @returns true when the row resolves to the model or one of its transitive subclasses; an untyped row belongs to
|
|
291
|
+
* the table root and its ancestors (to every model when the root is not known), and so does a row typed as a
|
|
292
|
+
* strict ancestor of the table root
|
|
293
|
+
*/
|
|
294
|
+
belongsToModel(model, stored, tableRoot) {
|
|
295
|
+
const ownedByRoot = () => !tableRoot || tableRoot === model || tableRoot.prototype instanceof model;
|
|
296
|
+
if (stored === undefined || stored === null || stored === "") {
|
|
297
|
+
return ownedByRoot();
|
|
298
|
+
}
|
|
299
|
+
const resolved = this.resolveStoredType(stored);
|
|
300
|
+
if (resolved === undefined)
|
|
301
|
+
return false;
|
|
302
|
+
if (tableRoot && tableRoot.prototype instanceof resolved) {
|
|
303
|
+
// Typed as an ancestor of the table root (e.g. written before the application subclassed the model)
|
|
304
|
+
return ownedByRoot();
|
|
305
|
+
}
|
|
306
|
+
return this.family(model).includes(resolved);
|
|
307
|
+
}
|
|
308
|
+
}
|
|
309
|
+
/** Global slot: shared by every copy of this module loaded in the process */
|
|
310
|
+
const SLOT = Symbol.for("webda.models.typeResolver");
|
|
311
|
+
/** Resolver used when nothing is installed and no model is given */
|
|
312
|
+
let empty;
|
|
313
|
+
/**
|
|
314
|
+
* Install the resolver of the application (done by `@webda/core` when models load)
|
|
315
|
+
* @param resolver - the resolver, undefined to uninstall
|
|
316
|
+
*/
|
|
317
|
+
export function setTypeResolver(resolver) {
|
|
318
|
+
globalThis[SLOT] = resolver;
|
|
319
|
+
}
|
|
320
|
+
/**
|
|
321
|
+
* @returns the installed resolver, if any
|
|
322
|
+
*/
|
|
323
|
+
export function useTypeResolver() {
|
|
324
|
+
return globalThis[SLOT];
|
|
325
|
+
}
|
|
326
|
+
/**
|
|
327
|
+
* Resolver to use for a model: the installed one when it knows the model, else the model's own hierarchy (exact
|
|
328
|
+
* identifiers only)
|
|
329
|
+
* @param model - the model, if any
|
|
330
|
+
* @returns the resolver
|
|
331
|
+
*/
|
|
332
|
+
export function getTypeResolver(model) {
|
|
333
|
+
const installed = useTypeResolver();
|
|
334
|
+
if (installed && (model === undefined || installed.knows(model))) {
|
|
335
|
+
return installed;
|
|
336
|
+
}
|
|
337
|
+
if (model !== undefined) {
|
|
338
|
+
return ModelTypeResolver.forHierarchy(model);
|
|
339
|
+
}
|
|
340
|
+
return (empty ??= new ModelTypeResolver({}, { exactOnly: true }));
|
|
341
|
+
}
|
|
342
|
+
/**
|
|
343
|
+
* @param stored - a stored `__type`
|
|
344
|
+
* @returns the model it resolves to with the installed resolver
|
|
345
|
+
*/
|
|
346
|
+
export function resolveStoredType(stored) {
|
|
347
|
+
return getTypeResolver().resolveStoredType(stored);
|
|
348
|
+
}
|
|
349
|
+
/**
|
|
350
|
+
* @param model - the model
|
|
351
|
+
* @returns every stored string resolving to the model or a transitive subclass
|
|
352
|
+
*/
|
|
353
|
+
export function acceptedTypes(model) {
|
|
354
|
+
return getTypeResolver(model).acceptedTypes(model);
|
|
355
|
+
}
|
|
356
|
+
/**
|
|
357
|
+
* @param model - the model
|
|
358
|
+
* @param stored - the stored `__type`
|
|
359
|
+
* @param tableRoot - the model owning the untyped rows
|
|
360
|
+
* @returns true when the row belongs to the model
|
|
361
|
+
*/
|
|
362
|
+
export function belongsToModel(model, stored, tableRoot) {
|
|
363
|
+
return getTypeResolver(model).belongsToModel(model, stored, tableRoot);
|
|
364
|
+
}
|
|
365
|
+
//# sourceMappingURL=types-resolver.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types-resolver.js","sourceRoot":"","sources":["../src/types-resolver.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@webda/models",
|
|
3
|
-
"version": "4.0.0-beta.
|
|
3
|
+
"version": "4.0.0-beta.9",
|
|
4
4
|
"description": "Webda Models implementation",
|
|
5
5
|
"main": "lib/index.js",
|
|
6
6
|
"repository": {
|
|
@@ -28,8 +28,8 @@
|
|
|
28
28
|
"@webda/serialize": "^4.0.0-beta.7"
|
|
29
29
|
},
|
|
30
30
|
"peerDependencies": {
|
|
31
|
-
"@webda/ql": "4.0.0-beta.
|
|
32
|
-
"@webda/utils": "4.0.0-beta.
|
|
31
|
+
"@webda/ql": "4.0.0-beta.8",
|
|
32
|
+
"@webda/utils": "4.0.0-beta.9"
|
|
33
33
|
},
|
|
34
34
|
"publishConfig": {
|
|
35
35
|
"access": "public"
|
|
@@ -41,9 +41,9 @@
|
|
|
41
41
|
"type-fest": "^5.5.0",
|
|
42
42
|
"vitest": "^4.1.2",
|
|
43
43
|
"vite": "^6.0.0",
|
|
44
|
-
"@webda/
|
|
45
|
-
"@webda/
|
|
46
|
-
"@webda/
|
|
44
|
+
"@webda/test": "^4.0.0-beta.7",
|
|
45
|
+
"@webda/compiler": "^4.0.0-beta.9",
|
|
46
|
+
"@webda/tsc-esm": "4.0.0-beta.8"
|
|
47
47
|
},
|
|
48
48
|
"type": "module",
|
|
49
49
|
"engines": {
|