ModelTypeResolver
Class: ModelTypeResolver
Defined in: packages/models/src/types-resolver.ts:81
Resolve the __type stored in a row (Webda 3 short, lower-case or renamed forms included) to a model
Resolution order, first match wins:
- the exact identifier (or a map key that is not the identifier);
- a
@WebdaAlias, exact, then case-insensitive; - an identifier, case-insensitive;
- for a value without
/:<namespace>/<value>thenWebda/<value>, case-insensitive, identifiers then aliases; - otherwise unknown.
Two different models matching at the same step make the value ambiguous: it resolves to nothing.
Constructors
Constructor
new ModelTypeResolver(
models,options?):ModelTypeResolver
Defined in: packages/models/src/types-resolver.ts:109
Parameters
models
Record<string, ModelClass<Storable<any, any>> | undefined> | ModelClass<Storable<any, any>>[]
models by identifier (an application model map), or a list of classes carrying Metadata
options?
namespace and exact mode
Returns
ModelTypeResolver
Properties
accepted
protectedreadonlyaccepted:Map<ModelClass<Storable<any,any>>,string[]>
Defined in: packages/models/src/types-resolver.ts:103
Cache of accepted types
aliases
protectedreadonlyaliases:Map<string,Set<ModelClass<Storable<any,any>>>>
Defined in: packages/models/src/types-resolver.ts:95
Aliases
byName
protectedreadonlybyName:Map<string,ModelClass<Storable<any,any>>>
Defined in: packages/models/src/types-resolver.ts:87
Exact names (identifiers and extra map keys) to class
exactOnly
readonlyexactOnly:boolean
Defined in: packages/models/src/types-resolver.ts:85
Only exact identifiers match
extraNames
protectedreadonlyextraNames:Map<ModelClass<Storable<any,any>>,string[]>
Defined in: packages/models/src/types-resolver.ts:91
Map keys of a class that are not its identifier
families
protectedreadonlyfamilies:Map<ModelClass<Storable<any,any>>,ModelClass<Storable<any,any>>[]>
Defined in: packages/models/src/types-resolver.ts:101
Cache of families
identifiers
protectedreadonlyidentifiers:Map<ModelClass<Storable<any,any>>,string>
Defined in: packages/models/src/types-resolver.ts:89
Current identifier of each class
lowerAliases
protectedreadonlylowerAliases:Map<string,Set<ModelClass<Storable<any,any>>>>
Defined in: packages/models/src/types-resolver.ts:97
Lower-case aliases
lowerNames
protectedreadonlylowerNames:Map<string,Set<ModelClass<Storable<any,any>>>>
Defined in: packages/models/src/types-resolver.ts:93
Lower-case identifiers and extra names
namespace
readonlynamespace:string
Defined in: packages/models/src/types-resolver.ts:83
Application namespace
resolutions
protectedreadonlyresolutions:Map<string,TypeResolution>
Defined in: packages/models/src/types-resolver.ts:99
Cache of resolutions
Methods
acceptedTypes()
acceptedTypes(
model):string[]
Defined in: packages/models/src/types-resolver.ts:321
Every stored string that resolves to the model or one of its transitive subclasses: identifiers, short names, lower-case forms, aliases and their short and lower-case forms
Parameters
model
the model
Returns
string[]
the strings, deduplicated
addName()
protectedaddName(name,clazz,extra):void
Defined in: packages/models/src/types-resolver.ts:131
Index a name of a class
Parameters
name
string
identifier or extra name
clazz
the class
extra
boolean
true for a map key that is not the identifier
Returns
void
belongsToModel()
belongsToModel(
model,stored,tableRoot?):boolean
Defined in: packages/models/src/types-resolver.ts:351
Whether a stored row belongs to a model
Parameters
model
the model queried
stored
string | null | undefined
the stored __type, undefined for an untyped row
tableRoot?
ModelClass<Storable<any, any>>
the model owning the untyped rows of the table, when known
Returns
boolean
true when the row resolves to the model or one of its transitive subclasses; an untyped row belongs to the table root and its ancestors (to every model when the root is not known), and so does a row typed as a strict ancestor of the table root
computeResolution()
protectedcomputeResolution(stored):TypeResolution
Defined in: packages/models/src/types-resolver.ts:227
Run the resolution steps
Parameters
stored
string
the stored value
Returns
the resolution
family()
family(
model):ModelClass<Storable<any,any>>[]
Defined in: packages/models/src/types-resolver.ts:280
The model and all its transitive subclasses: from Metadata.Subclasses (direct only), then any known class
extending the model that the metadata does not list
Parameters
model
the model
Returns
ModelClass<Storable<any, any>>[]
the model first, then its subclasses
found()
protectedfound(stored,model):TypeResolution
Defined in: packages/models/src/types-resolver.ts:269
Parameters
stored
string
the stored value
model
the matched model
Returns
the resolution of a match
getIdentifier()
getIdentifier(
model):string|undefined
Defined in: packages/models/src/types-resolver.ts:196
Parameters
model
a class
Returns
string | undefined
its current identifier, undefined when the class is not known
identifiersOf()
identifiersOf(
model):string[]
Defined in: packages/models/src/types-resolver.ts:306
Parameters
model
the model
Returns
string[]
the current identifiers of the model and its transitive subclasses
knows()
knows(
model):boolean
Defined in: packages/models/src/types-resolver.ts:188
Parameters
model
a class
Returns
boolean
true when the class is one of the models of this resolver
resolve()
resolve(
stored):TypeResolution
Defined in: packages/models/src/types-resolver.ts:205
Resolve a stored __type
Parameters
stored
string
the stored value
Returns
the resolution
resolveStoredType()
resolveStoredType(
stored):ModelClass<Storable<any,any>> |undefined
Defined in: packages/models/src/types-resolver.ts:218
Parameters
stored
string
the stored value
Returns
ModelClass<Storable<any, any>> | undefined
the model, undefined when unknown or ambiguous
forHierarchy()
staticforHierarchy(model):ModelTypeResolver
Defined in: packages/models/src/types-resolver.ts:156
Resolver of the hierarchy of a model only, exact identifiers only
Used for repositories whose model is not part of the installed application: today's exact matching.
Parameters
model
the model
Returns
ModelTypeResolver
the resolver