@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
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
var _a;
|
|
2
|
-
import { deserialize, serialize, serializeRaw } from "@webda/serialize";
|
|
2
|
+
import { deserialize, deserializeRaw, hasSerializer, serialize, serializeRaw, SerializerContext } from "@webda/serialize";
|
|
3
3
|
import { AbstractRepository } from "./abstract.js";
|
|
4
4
|
import { WEBDA_TEST } from "./repository.js";
|
|
5
5
|
/** Lazily-loaded WebdaQL module for query parsing */
|
|
@@ -119,10 +119,15 @@ export class MemoryRepository extends AbstractRepository {
|
|
|
119
119
|
* @returns serialized object
|
|
120
120
|
*/
|
|
121
121
|
serialize(item) {
|
|
122
|
-
const
|
|
123
|
-
if (!
|
|
122
|
+
const currentIdentifier = item?.constructor?.Metadata?.Identifier;
|
|
123
|
+
if (!currentIdentifier) {
|
|
124
124
|
return serialize(item);
|
|
125
125
|
}
|
|
126
|
+
// A row loaded with a stored type that did not resolve keeps it: never rewritten to a guess
|
|
127
|
+
const loadedType = Object.getOwnPropertyDescriptor(item, "__type")?.value;
|
|
128
|
+
const typeIdentifier = typeof loadedType === "string" && !this.typeResolver().resolveStoredType(loadedType)
|
|
129
|
+
? loadedType
|
|
130
|
+
: currentIdentifier;
|
|
126
131
|
const raw = serializeRaw(item);
|
|
127
132
|
// serializeRaw returns either { value, $serializer } for objects with
|
|
128
133
|
// metadata, or just the raw value for primitives. Models always come back
|
|
@@ -166,15 +171,15 @@ export class MemoryRepository extends AbstractRepository {
|
|
|
166
171
|
let raw;
|
|
167
172
|
try {
|
|
168
173
|
raw = JSON.parse(item);
|
|
169
|
-
if (raw && typeof raw === "object") {
|
|
174
|
+
if (raw && typeof raw === "object" && typeof raw.__type === "string") {
|
|
170
175
|
typeFromEnvelope = raw.__type;
|
|
171
176
|
}
|
|
172
177
|
}
|
|
173
178
|
catch {
|
|
174
179
|
// Non-JSON or malformed; skip the stamp — instance is still usable.
|
|
175
180
|
}
|
|
176
|
-
const instance = (this.isPlainRow(raw) ? this.hydratePlainRow(raw) :
|
|
177
|
-
const stamped =
|
|
181
|
+
const instance = (this.isPlainRow(raw) ? this.hydratePlainRow(raw) : this.deserializeEnvelope(item, raw, typeFromEnvelope));
|
|
182
|
+
const stamped = this.currentTypeOf(instance, typeFromEnvelope);
|
|
178
183
|
if (stamped) {
|
|
179
184
|
Object.defineProperty(instance, "__type", {
|
|
180
185
|
value: stamped,
|
|
@@ -185,6 +190,47 @@ export class MemoryRepository extends AbstractRepository {
|
|
|
185
190
|
}
|
|
186
191
|
return instance;
|
|
187
192
|
}
|
|
193
|
+
/**
|
|
194
|
+
* Deserialize a serializer envelope
|
|
195
|
+
*
|
|
196
|
+
* A row written under a model's former identifier (renamed, see `@WebdaAlias`) names a serializer that no longer
|
|
197
|
+
* exists: it is deserialized with the serializer of the class its `__type` resolves to.
|
|
198
|
+
* @param item - the stored string
|
|
199
|
+
* @param raw - the parsed envelope
|
|
200
|
+
* @param stored - the stored `__type`
|
|
201
|
+
* @returns the instance
|
|
202
|
+
*/
|
|
203
|
+
deserializeEnvelope(item, raw, stored) {
|
|
204
|
+
const serializerType = raw?.$serializer?.type;
|
|
205
|
+
if (stored !== undefined && typeof serializerType === "string" && !hasSerializer(serializerType)) {
|
|
206
|
+
const clazz = this.findModelClass(stored);
|
|
207
|
+
if (clazz && hasSerializer(clazz)) {
|
|
208
|
+
return deserializeRaw({
|
|
209
|
+
...raw,
|
|
210
|
+
$serializer: { ...raw.$serializer, type: SerializerContext.globalContext.getSerializer(clazz).type }
|
|
211
|
+
});
|
|
212
|
+
}
|
|
213
|
+
}
|
|
214
|
+
return deserialize(item);
|
|
215
|
+
}
|
|
216
|
+
/**
|
|
217
|
+
* The `__type` to attach to a loaded instance: the current identifier of its class, the stored value when it is
|
|
218
|
+
* unknown or ambiguous (never rewritten to a guess), the repository model identifier for an untyped row
|
|
219
|
+
* @param instance - the loaded instance
|
|
220
|
+
* @param stored - the stored `__type`
|
|
221
|
+
* @returns the value to attach
|
|
222
|
+
*/
|
|
223
|
+
currentTypeOf(instance, stored) {
|
|
224
|
+
const modelIdentifier = this.model?.Metadata?.Identifier;
|
|
225
|
+
if (stored === undefined)
|
|
226
|
+
return modelIdentifier;
|
|
227
|
+
if (!modelIdentifier)
|
|
228
|
+
return stored;
|
|
229
|
+
const resolver = this.typeResolver();
|
|
230
|
+
if (!resolver.resolveStoredType(stored))
|
|
231
|
+
return stored;
|
|
232
|
+
return resolver.getIdentifier(instance?.constructor) ?? instance?.constructor?.Metadata?.Identifier ?? stored;
|
|
233
|
+
}
|
|
188
234
|
/**
|
|
189
235
|
* Whether a stored row is a plain JSON object without a serializer envelope
|
|
190
236
|
*
|
|
@@ -201,33 +247,28 @@ export class MemoryRepository extends AbstractRepository {
|
|
|
201
247
|
typeof this.model === "function");
|
|
202
248
|
}
|
|
203
249
|
/**
|
|
204
|
-
* Find the class to hydrate a row typed `identifier
|
|
205
|
-
*
|
|
206
|
-
*
|
|
207
|
-
* @
|
|
250
|
+
* Find the class to hydrate a row typed `identifier` (a Webda 3 legacy form included): the resolved model when it
|
|
251
|
+
* is the repository model or one of its transitive subclasses, the repository model for an ancestor type or an
|
|
252
|
+
* unknown or ambiguous type
|
|
253
|
+
* @param identifier - stored `__type`
|
|
254
|
+
* @returns the class, `this.model` when it carries no Metadata, or undefined for an unrelated model
|
|
208
255
|
*/
|
|
209
256
|
findModelClass(identifier) {
|
|
210
257
|
const root = this.model;
|
|
211
258
|
if (!root?.Metadata?.Identifier) {
|
|
212
259
|
return root;
|
|
213
260
|
}
|
|
214
|
-
const
|
|
215
|
-
const
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
return clazz;
|
|
223
|
-
queue.push(...(clazz.Metadata?.Subclasses ?? []));
|
|
224
|
-
}
|
|
261
|
+
const resolver = this.typeResolver();
|
|
262
|
+
const resolved = resolver.resolveStoredType(identifier);
|
|
263
|
+
// Unknown or ambiguous with an application resolver: loaded as the repository model, its stored type is kept;
|
|
264
|
+
// the exact-only fallback (model unknown to the application) keeps refusing what it cannot resolve
|
|
265
|
+
if (!resolved)
|
|
266
|
+
return resolver.exactOnly ? undefined : root;
|
|
267
|
+
if (resolver.family(root).includes(resolved))
|
|
268
|
+
return resolved;
|
|
225
269
|
// An ancestor-typed row (e.g. written before an application subclassed the model) is read as this model
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
return root;
|
|
229
|
-
parent = Object.getPrototypeOf(parent);
|
|
230
|
-
}
|
|
270
|
+
if (root.prototype instanceof resolved)
|
|
271
|
+
return root;
|
|
231
272
|
return undefined;
|
|
232
273
|
}
|
|
233
274
|
/**
|
|
@@ -239,7 +280,7 @@ export class MemoryRepository extends AbstractRepository {
|
|
|
239
280
|
*/
|
|
240
281
|
hydratePlainRow(raw) {
|
|
241
282
|
const { __type, ...data } = raw;
|
|
242
|
-
const clazz = __type ===
|
|
283
|
+
const clazz = typeof __type === "string" ? this.findModelClass(__type) : this.model;
|
|
243
284
|
if (!clazz) {
|
|
244
285
|
throw new Error(`Row of type '${__type}' does not belong to ${this.model?.Metadata?.Identifier}`);
|
|
245
286
|
}
|
|
@@ -254,7 +295,7 @@ export class MemoryRepository extends AbstractRepository {
|
|
|
254
295
|
}
|
|
255
296
|
/**
|
|
256
297
|
* Collect the WebdaQL class-filter identifier list — `this.model`'s
|
|
257
|
-
* identifier and every transitive descendant
|
|
298
|
+
* identifier and every transitive descendant.
|
|
258
299
|
*
|
|
259
300
|
* Returns `undefined` when the model carries no `Metadata` (plain unit-test
|
|
260
301
|
* classes that didn't go through `Application.setModelMetadata`). In that
|
|
@@ -267,14 +308,8 @@ export class MemoryRepository extends AbstractRepository {
|
|
|
267
308
|
const meta = this.model?.Metadata;
|
|
268
309
|
if (!meta?.Identifier)
|
|
269
310
|
return undefined;
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
for (const sub of subclasses) {
|
|
273
|
-
const id = sub?.Metadata?.Identifier;
|
|
274
|
-
if (typeof id === "string" && !ids.includes(id))
|
|
275
|
-
ids.push(id);
|
|
276
|
-
}
|
|
277
|
-
return ids;
|
|
311
|
+
// Metadata.Subclasses lists direct subclasses only: the resolver walks them transitively
|
|
312
|
+
return this.typeResolver().identifiersOf(this.model);
|
|
278
313
|
}
|
|
279
314
|
/**
|
|
280
315
|
* Build the WebdaQL class-filter clause `__type IN ['A', 'B', ...]` covering
|
|
@@ -360,8 +395,10 @@ export class MemoryRepository extends AbstractRepository {
|
|
|
360
395
|
* List the storage keys that may belong to this model
|
|
361
396
|
*
|
|
362
397
|
* A storage shared by several models holds foreign entries whose key shape can be invalid for this
|
|
363
|
-
* repository: they are skipped from the stored
|
|
364
|
-
*
|
|
398
|
+
* repository: they are skipped from the stored `__type` before any parsing. Entries are kept when their stored
|
|
399
|
+
* `__type` belongs to the model (legacy forms included). Untyped entries, and entries typed as a strict ancestor
|
|
400
|
+
* of the table root, belong to the table root and its ancestors. Unreadable entries are kept so their error
|
|
401
|
+
* surfaces.
|
|
365
402
|
* @param ids - class identifiers (model and subclasses), undefined to keep everything
|
|
366
403
|
* @returns the keys to evaluate
|
|
367
404
|
*/
|
|
@@ -373,13 +410,16 @@ export class MemoryRepository extends AbstractRepository {
|
|
|
373
410
|
const raw = this.storage.get(key);
|
|
374
411
|
if (typeof raw !== "string")
|
|
375
412
|
return true;
|
|
413
|
+
let type;
|
|
376
414
|
try {
|
|
377
|
-
|
|
378
|
-
return typeof type !== "string" || ids.includes(type);
|
|
415
|
+
type = JSON.parse(raw)?.__type;
|
|
379
416
|
}
|
|
380
417
|
catch {
|
|
418
|
+
// Unreadable: kept so the error surfaces
|
|
381
419
|
return true;
|
|
382
420
|
}
|
|
421
|
+
// Legacy forms resolve to their model; untyped and ancestor-typed rows belong to the table root and ancestors
|
|
422
|
+
return this.belongsToModel(typeof type === "string" ? type : undefined);
|
|
383
423
|
});
|
|
384
424
|
}
|
|
385
425
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"memory.js","sourceRoot":"","sources":["../../src/repositories/memory.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"memory.js","sourceRoot":"","sources":["../../src/repositories/memory.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,192 @@
|
|
|
1
|
+
import type { ModelClass } from "./storable.js";
|
|
2
|
+
/**
|
|
3
|
+
* How a stored `__type` maps to a model
|
|
4
|
+
*
|
|
5
|
+
* - `current`: the stored value is the model identifier
|
|
6
|
+
* - `legacy`: a Webda 3 form (short name, other case, alias) of the model identifier
|
|
7
|
+
* - `unknown`: no model matches
|
|
8
|
+
* - `ambiguous`: several models match at the same step, none is picked
|
|
9
|
+
*/
|
|
10
|
+
export type TypeResolutionStatus = "current" | "legacy" | "unknown" | "ambiguous";
|
|
11
|
+
/**
|
|
12
|
+
* Result of resolving a stored `__type`
|
|
13
|
+
*/
|
|
14
|
+
export interface TypeResolution {
|
|
15
|
+
/** How the value matched */
|
|
16
|
+
status: TypeResolutionStatus;
|
|
17
|
+
/** The model, for `current` and `legacy` */
|
|
18
|
+
model?: ModelClass;
|
|
19
|
+
/** Current identifier of the model, for `current` and `legacy` */
|
|
20
|
+
identifier?: string;
|
|
21
|
+
/** Identifiers matched at the ambiguous step, sorted */
|
|
22
|
+
candidates?: string[];
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Options of {@link ModelTypeResolver}
|
|
26
|
+
*/
|
|
27
|
+
export interface ModelTypeResolverOptions {
|
|
28
|
+
/**
|
|
29
|
+
* Application namespace, tried first for a value without `/`
|
|
30
|
+
*
|
|
31
|
+
* @default "Webda"
|
|
32
|
+
*/
|
|
33
|
+
namespace?: string;
|
|
34
|
+
/**
|
|
35
|
+
* Only match exact identifiers: the behaviour of repositories whose model is not part of an application
|
|
36
|
+
*
|
|
37
|
+
* @default false
|
|
38
|
+
*/
|
|
39
|
+
exactOnly?: boolean;
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Resolve the `__type` stored in a row (Webda 3 short, lower-case or renamed forms included) to a model
|
|
43
|
+
*
|
|
44
|
+
* Resolution order, first match wins:
|
|
45
|
+
* 1. the exact identifier (or a map key that is not the identifier);
|
|
46
|
+
* 2. a `@WebdaAlias`, exact, then case-insensitive;
|
|
47
|
+
* 3. an identifier, case-insensitive;
|
|
48
|
+
* 4. for a value without `/`: `<namespace>/<value>` then `Webda/<value>`, case-insensitive, identifiers then aliases;
|
|
49
|
+
* 5. otherwise unknown.
|
|
50
|
+
*
|
|
51
|
+
* Two different models matching at the same step make the value ambiguous: it resolves to nothing.
|
|
52
|
+
*/
|
|
53
|
+
export declare class ModelTypeResolver {
|
|
54
|
+
/** Application namespace */
|
|
55
|
+
readonly namespace: string;
|
|
56
|
+
/** Only exact identifiers match */
|
|
57
|
+
readonly exactOnly: boolean;
|
|
58
|
+
/** Exact names (identifiers and extra map keys) to class */
|
|
59
|
+
protected readonly byName: Map<string, ModelClass<import("./storable.js").Storable<any, any>>>;
|
|
60
|
+
/** Current identifier of each class */
|
|
61
|
+
protected readonly identifiers: Map<ModelClass<import("./storable.js").Storable<any, any>>, string>;
|
|
62
|
+
/** Map keys of a class that are not its identifier */
|
|
63
|
+
protected readonly extraNames: Map<ModelClass<import("./storable.js").Storable<any, any>>, string[]>;
|
|
64
|
+
/** Lower-case identifiers and extra names */
|
|
65
|
+
protected readonly lowerNames: Map<string, Set<ModelClass<import("./storable.js").Storable<any, any>>>>;
|
|
66
|
+
/** Aliases */
|
|
67
|
+
protected readonly aliases: Map<string, Set<ModelClass<import("./storable.js").Storable<any, any>>>>;
|
|
68
|
+
/** Lower-case aliases */
|
|
69
|
+
protected readonly lowerAliases: Map<string, Set<ModelClass<import("./storable.js").Storable<any, any>>>>;
|
|
70
|
+
/** Cache of resolutions */
|
|
71
|
+
protected readonly resolutions: Map<string, TypeResolution>;
|
|
72
|
+
/** Cache of families */
|
|
73
|
+
protected readonly families: Map<ModelClass<import("./storable.js").Storable<any, any>>, ModelClass<import("./storable.js").Storable<any, any>>[]>;
|
|
74
|
+
/** Cache of accepted types */
|
|
75
|
+
protected readonly accepted: Map<ModelClass<import("./storable.js").Storable<any, any>>, string[]>;
|
|
76
|
+
/**
|
|
77
|
+
* @param models - models by identifier (an application model map), or a list of classes carrying Metadata
|
|
78
|
+
* @param options - namespace and exact mode
|
|
79
|
+
*/
|
|
80
|
+
constructor(models: Record<string, ModelClass | undefined> | ModelClass[], options?: ModelTypeResolverOptions);
|
|
81
|
+
/**
|
|
82
|
+
* Index a name of a class
|
|
83
|
+
* @param name - identifier or extra name
|
|
84
|
+
* @param clazz - the class
|
|
85
|
+
* @param extra - true for a map key that is not the identifier
|
|
86
|
+
*/
|
|
87
|
+
protected addName(name: string, clazz: ModelClass, extra: boolean): void;
|
|
88
|
+
/**
|
|
89
|
+
* Resolver of the hierarchy of a model only, exact identifiers only
|
|
90
|
+
*
|
|
91
|
+
* Used for repositories whose model is not part of the installed application: today's exact matching.
|
|
92
|
+
* @param model - the model
|
|
93
|
+
* @returns the resolver
|
|
94
|
+
*/
|
|
95
|
+
static forHierarchy(model: ModelClass): ModelTypeResolver;
|
|
96
|
+
/**
|
|
97
|
+
* @param model - a class
|
|
98
|
+
* @returns true when the class is one of the models of this resolver
|
|
99
|
+
*/
|
|
100
|
+
knows(model: ModelClass): boolean;
|
|
101
|
+
/**
|
|
102
|
+
* @param model - a class
|
|
103
|
+
* @returns its current identifier, undefined when the class is not known
|
|
104
|
+
*/
|
|
105
|
+
getIdentifier(model: ModelClass): string | undefined;
|
|
106
|
+
/**
|
|
107
|
+
* Resolve a stored `__type`
|
|
108
|
+
* @param stored - the stored value
|
|
109
|
+
* @returns the resolution
|
|
110
|
+
*/
|
|
111
|
+
resolve(stored: string): TypeResolution;
|
|
112
|
+
/**
|
|
113
|
+
* @param stored - the stored value
|
|
114
|
+
* @returns the model, undefined when unknown or ambiguous
|
|
115
|
+
*/
|
|
116
|
+
resolveStoredType(stored: string): ModelClass | undefined;
|
|
117
|
+
/**
|
|
118
|
+
* Run the resolution steps
|
|
119
|
+
* @param stored - the stored value
|
|
120
|
+
* @returns the resolution
|
|
121
|
+
*/
|
|
122
|
+
protected computeResolution(stored: string): TypeResolution;
|
|
123
|
+
/**
|
|
124
|
+
* @param stored - the stored value
|
|
125
|
+
* @param model - the matched model
|
|
126
|
+
* @returns the resolution of a match
|
|
127
|
+
*/
|
|
128
|
+
protected found(stored: string, model: ModelClass): TypeResolution;
|
|
129
|
+
/**
|
|
130
|
+
* The model and all its transitive subclasses: from `Metadata.Subclasses` (direct only), then any known class
|
|
131
|
+
* extending the model that the metadata does not list
|
|
132
|
+
* @param model - the model
|
|
133
|
+
* @returns the model first, then its subclasses
|
|
134
|
+
*/
|
|
135
|
+
family(model: ModelClass): ModelClass[];
|
|
136
|
+
/**
|
|
137
|
+
* @param model - the model
|
|
138
|
+
* @returns the current identifiers of the model and its transitive subclasses
|
|
139
|
+
*/
|
|
140
|
+
identifiersOf(model: ModelClass): string[];
|
|
141
|
+
/**
|
|
142
|
+
* Every stored string that resolves to the model or one of its transitive subclasses: identifiers, short names,
|
|
143
|
+
* lower-case forms, aliases and their short and lower-case forms
|
|
144
|
+
* @param model - the model
|
|
145
|
+
* @returns the strings, deduplicated
|
|
146
|
+
*/
|
|
147
|
+
acceptedTypes(model: ModelClass): string[];
|
|
148
|
+
/**
|
|
149
|
+
* Whether a stored row belongs to a model
|
|
150
|
+
* @param model - the model queried
|
|
151
|
+
* @param stored - the stored `__type`, undefined for an untyped row
|
|
152
|
+
* @param tableRoot - the model owning the untyped rows of the table, when known
|
|
153
|
+
* @returns true when the row resolves to the model or one of its transitive subclasses; an untyped row belongs to
|
|
154
|
+
* the table root and its ancestors (to every model when the root is not known), and so does a row typed as a
|
|
155
|
+
* strict ancestor of the table root
|
|
156
|
+
*/
|
|
157
|
+
belongsToModel(model: ModelClass, stored: string | undefined | null, tableRoot?: ModelClass): boolean;
|
|
158
|
+
}
|
|
159
|
+
/**
|
|
160
|
+
* Install the resolver of the application (done by `@webda/core` when models load)
|
|
161
|
+
* @param resolver - the resolver, undefined to uninstall
|
|
162
|
+
*/
|
|
163
|
+
export declare function setTypeResolver(resolver: ModelTypeResolver | undefined): void;
|
|
164
|
+
/**
|
|
165
|
+
* @returns the installed resolver, if any
|
|
166
|
+
*/
|
|
167
|
+
export declare function useTypeResolver(): ModelTypeResolver | undefined;
|
|
168
|
+
/**
|
|
169
|
+
* Resolver to use for a model: the installed one when it knows the model, else the model's own hierarchy (exact
|
|
170
|
+
* identifiers only)
|
|
171
|
+
* @param model - the model, if any
|
|
172
|
+
* @returns the resolver
|
|
173
|
+
*/
|
|
174
|
+
export declare function getTypeResolver(model?: ModelClass): ModelTypeResolver;
|
|
175
|
+
/**
|
|
176
|
+
* @param stored - a stored `__type`
|
|
177
|
+
* @returns the model it resolves to with the installed resolver
|
|
178
|
+
*/
|
|
179
|
+
export declare function resolveStoredType(stored: string): ModelClass | undefined;
|
|
180
|
+
/**
|
|
181
|
+
* @param model - the model
|
|
182
|
+
* @returns every stored string resolving to the model or a transitive subclass
|
|
183
|
+
*/
|
|
184
|
+
export declare function acceptedTypes(model: ModelClass): string[];
|
|
185
|
+
/**
|
|
186
|
+
* @param model - the model
|
|
187
|
+
* @param stored - the stored `__type`
|
|
188
|
+
* @param tableRoot - the model owning the untyped rows
|
|
189
|
+
* @returns true when the row belongs to the model
|
|
190
|
+
*/
|
|
191
|
+
export declare function belongsToModel(model: ModelClass, stored: string | undefined | null, tableRoot?: ModelClass): boolean;
|
|
192
|
+
//# sourceMappingURL=types-resolver.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types-resolver.d.ts","sourceRoot":"","sources":["../src/types-resolver.ts"],"names":[],"mappings":"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"}
|