@decaf-ts/decorator-validation 1.11.10 → 1.11.12
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/README.md +1 -1
- package/dist/decorator-validation.cjs +1 -1
- package/dist/decorator-validation.cjs.map +1 -1
- package/dist/decorator-validation.js +1 -1
- package/dist/decorator-validation.js.map +1 -1
- package/lib/esm/index.d.ts +1 -1
- package/lib/esm/index.js +1 -1
- package/lib/esm/model/Model.d.ts +0 -103
- package/lib/esm/model/Model.js +11 -250
- package/lib/esm/model/Model.js.map +1 -1
- package/lib/esm/model/ModelRegistry.d.ts +181 -0
- package/lib/esm/model/ModelRegistry.js +291 -0
- package/lib/esm/model/ModelRegistry.js.map +1 -0
- package/lib/esm/model/index.d.ts +1 -0
- package/lib/esm/model/index.js +1 -0
- package/lib/esm/model/index.js.map +1 -1
- package/lib/esm/model/validation.d.ts +1 -1
- package/lib/esm/model/validation.js +6 -6
- package/lib/esm/model/validation.js.map +1 -1
- package/lib/esm/overrides/Metadata.d.ts +4 -1
- package/lib/esm/overrides/overrides.js +49 -0
- package/lib/esm/overrides/overrides.js.map +1 -1
- package/lib/esm/overrides/types.d.ts +1 -1
- package/lib/esm/utils/constants.d.ts +1 -0
- package/lib/esm/utils/constants.js +1 -0
- package/lib/esm/utils/constants.js.map +1 -1
- package/lib/esm/utils/index.d.ts +1 -0
- package/lib/esm/utils/index.js +1 -0
- package/lib/esm/utils/index.js.map +1 -1
- package/lib/esm/utils/serialization.d.ts +0 -41
- package/lib/esm/utils/serialization.js +1 -72
- package/lib/esm/utils/serialization.js.map +1 -1
- package/lib/esm/utils/serializers.d.ts +41 -0
- package/lib/esm/utils/serializers.js +73 -0
- package/lib/esm/utils/serializers.js.map +1 -0
- package/lib/esm/validation/Validation.js +1 -1
- package/lib/esm/validation/Validation.js.map +1 -1
- package/lib/esm/validation/Validators/constants.d.ts +1 -0
- package/lib/esm/validation/Validators/constants.js +1 -0
- package/lib/esm/validation/Validators/constants.js.map +1 -1
- package/lib/esm/validation/Validators/utils.js +1 -1
- package/lib/esm/validation/Validators/utils.js.map +1 -1
- package/lib/index.cjs +1 -1
- package/lib/index.d.ts +1 -1
- package/lib/model/Model.cjs +14 -255
- package/lib/model/Model.d.ts +0 -103
- package/lib/model/Model.js.map +1 -1
- package/lib/model/ModelRegistry.cjs +296 -0
- package/lib/model/ModelRegistry.d.ts +181 -0
- package/lib/model/ModelRegistry.js.map +1 -0
- package/lib/model/index.cjs +1 -0
- package/lib/model/index.d.ts +1 -0
- package/lib/model/index.js.map +1 -1
- package/lib/model/validation.cjs +6 -6
- package/lib/model/validation.d.ts +1 -1
- package/lib/model/validation.js.map +1 -1
- package/lib/overrides/Metadata.d.ts +4 -1
- package/lib/overrides/overrides.cjs +49 -0
- package/lib/overrides/overrides.js.map +1 -1
- package/lib/overrides/types.d.ts +1 -1
- package/lib/utils/constants.cjs +2 -1
- package/lib/utils/constants.d.ts +1 -0
- package/lib/utils/constants.js.map +1 -1
- package/lib/utils/index.cjs +1 -0
- package/lib/utils/index.d.ts +1 -0
- package/lib/utils/index.js.map +1 -1
- package/lib/utils/serialization.cjs +2 -74
- package/lib/utils/serialization.d.ts +0 -41
- package/lib/utils/serialization.js.map +1 -1
- package/lib/utils/serializers.cjs +77 -0
- package/lib/utils/serializers.d.ts +41 -0
- package/lib/utils/serializers.js.map +1 -0
- package/lib/validation/Validation.cjs +4 -4
- package/lib/validation/Validation.js.map +1 -1
- package/lib/validation/Validators/constants.cjs +1 -0
- package/lib/validation/Validators/constants.d.ts +1 -0
- package/lib/validation/Validators/constants.js.map +1 -1
- package/lib/validation/Validators/utils.cjs +6 -6
- package/lib/validation/Validators/utils.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,291 @@
|
|
|
1
|
+
import { Metadata } from "@decaf-ts/decoration";
|
|
2
|
+
import { jsTypes, ReservedModels } from "./constants.js";
|
|
3
|
+
import { ValidationKeys } from "./../validation/index.js";
|
|
4
|
+
let modelBuilderFunction;
|
|
5
|
+
let actingModelRegistry;
|
|
6
|
+
/**
|
|
7
|
+
* @description Registry manager for model constructors that enables serialization and rebuilding
|
|
8
|
+
* @summary The ModelRegistryManager implements the ModelRegistry interface and provides
|
|
9
|
+
* functionality for registering, retrieving, and building model instances. It maintains
|
|
10
|
+
* a cache of model constructors indexed by name, allowing for efficient lookup and instantiation.
|
|
11
|
+
* This class is essential for the serialization and deserialization of model objects.
|
|
12
|
+
*
|
|
13
|
+
* @param {function(Record<string, any>): boolean} [testFunction] - Function to test if an object is a model, defaults to {@link Model#isModel}
|
|
14
|
+
*
|
|
15
|
+
* @class ModelRegistryManager
|
|
16
|
+
* @template M Type of model that can be registered, must extend Model
|
|
17
|
+
* @implements ModelRegistry<M>
|
|
18
|
+
* @category Model
|
|
19
|
+
*
|
|
20
|
+
* @example
|
|
21
|
+
* ```typescript
|
|
22
|
+
* // Create a model registry
|
|
23
|
+
* const registry = new ModelRegistryManager();
|
|
24
|
+
*
|
|
25
|
+
* // Register a model class
|
|
26
|
+
* registry.register(User);
|
|
27
|
+
*
|
|
28
|
+
* // Retrieve a model constructor by name
|
|
29
|
+
* const UserClass = registry.get("User");
|
|
30
|
+
*
|
|
31
|
+
* // Build a model instance from a plain object
|
|
32
|
+
* const userData = { name: "John", age: 30 };
|
|
33
|
+
* const user = registry.build(userData, "User");
|
|
34
|
+
* ```
|
|
35
|
+
*
|
|
36
|
+
* @mermaid
|
|
37
|
+
* sequenceDiagram
|
|
38
|
+
* participant C as Client
|
|
39
|
+
* participant R as ModelRegistryManager
|
|
40
|
+
* participant M as Model Class
|
|
41
|
+
*
|
|
42
|
+
* C->>R: new ModelRegistryManager(testFunction)
|
|
43
|
+
* C->>R: register(ModelClass)
|
|
44
|
+
* R->>R: Store in cache
|
|
45
|
+
* C->>R: get("ModelName")
|
|
46
|
+
* R-->>C: ModelClass constructor
|
|
47
|
+
* C->>R: build(data, "ModelName")
|
|
48
|
+
* R->>R: Get constructor from cache
|
|
49
|
+
* R->>M: new ModelClass(data)
|
|
50
|
+
* M-->>R: Model instance
|
|
51
|
+
* R-->>C: Model instance
|
|
52
|
+
*/
|
|
53
|
+
export class ModelRegistryManager {
|
|
54
|
+
constructor(testFunction = Metadata.isModel) {
|
|
55
|
+
this.cache = {};
|
|
56
|
+
this.testFunction = testFunction;
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* @description Registers a model constructor with the registry
|
|
60
|
+
* @summary Adds a model constructor to the registry cache, making it available for
|
|
61
|
+
* later retrieval and instantiation. If no name is provided, the constructor's name
|
|
62
|
+
* property is used as the key in the registry.
|
|
63
|
+
*
|
|
64
|
+
* @param {ModelConstructor<M>} constructor - The model constructor to register
|
|
65
|
+
* @param {string} [name] - Optional name to register the constructor under, defaults to constructor.name
|
|
66
|
+
* @return {void}
|
|
67
|
+
* @throws {Error} If the constructor is not a function
|
|
68
|
+
*/
|
|
69
|
+
register(constructor, name) {
|
|
70
|
+
if (typeof constructor !== "function")
|
|
71
|
+
throw new Error("Model registering failed. Missing Class name or constructor");
|
|
72
|
+
name = name || constructor.name;
|
|
73
|
+
this.cache[name] = constructor;
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* @summary Gets a registered Model {@link ModelConstructor}
|
|
77
|
+
* @param {string} name
|
|
78
|
+
*/
|
|
79
|
+
get(name) {
|
|
80
|
+
try {
|
|
81
|
+
return this.cache[name];
|
|
82
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
83
|
+
}
|
|
84
|
+
catch (e) {
|
|
85
|
+
return undefined;
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
/**
|
|
89
|
+
* @param {Record<string, any>} obj
|
|
90
|
+
* @param {string} [clazz] when provided, it will attempt to find the matching constructor
|
|
91
|
+
*
|
|
92
|
+
* @throws Error If clazz is not found, or obj is not a {@link Model} meaning it has no {@link ModelKeys.ANCHOR} property
|
|
93
|
+
*/
|
|
94
|
+
build(obj = {}, clazz) {
|
|
95
|
+
if (!clazz && !this.testFunction(obj))
|
|
96
|
+
throw new Error("Provided obj is not a Model object");
|
|
97
|
+
const name = clazz || Metadata.modelName(obj.constructor);
|
|
98
|
+
if (!(name in this.cache))
|
|
99
|
+
throw new Error(`Provided class ${name} is not a registered Model object`);
|
|
100
|
+
return new this.cache[name](obj);
|
|
101
|
+
}
|
|
102
|
+
/**
|
|
103
|
+
* @description Configures the global model builder function
|
|
104
|
+
* @summary Sets the Global {@link ModelBuilderFunction} used for building model instances
|
|
105
|
+
*
|
|
106
|
+
* @param {ModelBuilderFunction} [builder] - The builder function to set as the global builder
|
|
107
|
+
* @return {void}
|
|
108
|
+
*/
|
|
109
|
+
static setBuilder(builder) {
|
|
110
|
+
modelBuilderFunction = builder;
|
|
111
|
+
}
|
|
112
|
+
/**
|
|
113
|
+
* @description Retrieves the currently configured global model builder function
|
|
114
|
+
* @summary Returns the current global {@link ModelBuilderFunction} used for building model instances
|
|
115
|
+
*
|
|
116
|
+
* @return {ModelBuilderFunction | undefined} - The current global builder function or undefined if not set
|
|
117
|
+
*/
|
|
118
|
+
static getBuilder() {
|
|
119
|
+
return modelBuilderFunction || ModelRegistryManager.fromModel;
|
|
120
|
+
}
|
|
121
|
+
/**
|
|
122
|
+
* @description Copies and rebuilds properties from a source object to a model instance, handling nested models
|
|
123
|
+
* @summary Repopulates the instance with properties from the new Model Object, recursively rebuilding nested models
|
|
124
|
+
*
|
|
125
|
+
* @template T
|
|
126
|
+
* @param {T} self - The target model instance to update
|
|
127
|
+
* @param {T | Record<string, any>} [obj] - The source object containing properties to copy
|
|
128
|
+
* @return {T} - The updated model instance with rebuilt nested models
|
|
129
|
+
*
|
|
130
|
+
* @mermaid
|
|
131
|
+
* sequenceDiagram
|
|
132
|
+
* participant C as Client
|
|
133
|
+
* participant M as Model.fromModel
|
|
134
|
+
* participant B as Model.build
|
|
135
|
+
* participant R as Reflection
|
|
136
|
+
*
|
|
137
|
+
* C->>M: fromModel(self, obj)
|
|
138
|
+
* M->>M: Get attributes from self
|
|
139
|
+
* loop For each property
|
|
140
|
+
* M->>M: Copy property from obj to self
|
|
141
|
+
* alt Property is a model
|
|
142
|
+
* M->>M: Check if property is a model
|
|
143
|
+
* M->>B: build(property, modelType)
|
|
144
|
+
* B-->>M: Return built model
|
|
145
|
+
* else Property is a complex type
|
|
146
|
+
* M->>R: Get property decorators
|
|
147
|
+
* R-->>M: Return decorators
|
|
148
|
+
* M->>M: Filter type decorators
|
|
149
|
+
* alt Property is Array/Set with list decorator
|
|
150
|
+
* M->>M: Process each item in collection
|
|
151
|
+
* loop For each item
|
|
152
|
+
* M->>B: build(item, itemModelType)
|
|
153
|
+
* B-->>M: Return built model
|
|
154
|
+
* end
|
|
155
|
+
* else Property is another model type
|
|
156
|
+
* M->>B: build(property, propertyType)
|
|
157
|
+
* B-->>M: Return built model
|
|
158
|
+
* end
|
|
159
|
+
* end
|
|
160
|
+
* end
|
|
161
|
+
* M-->>C: Return updated self
|
|
162
|
+
*/
|
|
163
|
+
static fromModel(self, obj) {
|
|
164
|
+
if (!obj)
|
|
165
|
+
obj = {};
|
|
166
|
+
let decorators;
|
|
167
|
+
const props = Metadata.getAttributes(self);
|
|
168
|
+
const proto = Object.getPrototypeOf(self);
|
|
169
|
+
let descriptor;
|
|
170
|
+
for (const prop of props) {
|
|
171
|
+
try {
|
|
172
|
+
self[prop] =
|
|
173
|
+
obj[prop] ??
|
|
174
|
+
self[prop] ??
|
|
175
|
+
undefined;
|
|
176
|
+
}
|
|
177
|
+
catch (e) {
|
|
178
|
+
descriptor = Object.getOwnPropertyDescriptor(proto, prop);
|
|
179
|
+
if (!descriptor || descriptor.writable)
|
|
180
|
+
throw new Error(`Unable to write property ${prop} to model: ${e}`);
|
|
181
|
+
}
|
|
182
|
+
if (typeof self[prop] !== "object")
|
|
183
|
+
continue;
|
|
184
|
+
const propM = Metadata.isPropertyModel(self, prop);
|
|
185
|
+
if (propM) {
|
|
186
|
+
try {
|
|
187
|
+
self[prop] =
|
|
188
|
+
ModelRegistryManager.getRegistry().build(self[prop], typeof propM === "string" ? propM : undefined);
|
|
189
|
+
}
|
|
190
|
+
catch (e) {
|
|
191
|
+
console.log(e);
|
|
192
|
+
}
|
|
193
|
+
continue;
|
|
194
|
+
}
|
|
195
|
+
decorators = Metadata.allowedTypes(self.constructor, prop);
|
|
196
|
+
if (!decorators || !decorators.length)
|
|
197
|
+
throw new Error(`failed to find decorators for property ${prop}`);
|
|
198
|
+
const clazz = decorators.map((t) => typeof t === "function" && !t.name ? t() : t);
|
|
199
|
+
const reserved = Object.values(ReservedModels);
|
|
200
|
+
clazz.forEach((c) => {
|
|
201
|
+
if (!reserved.includes(c))
|
|
202
|
+
try {
|
|
203
|
+
switch (c.name) {
|
|
204
|
+
case "Array":
|
|
205
|
+
case "Set": {
|
|
206
|
+
const validation = Metadata.validationFor(self.constructor, prop);
|
|
207
|
+
if (!validation || !validation[ValidationKeys.LIST])
|
|
208
|
+
break;
|
|
209
|
+
const listDec = validation[ValidationKeys.LIST];
|
|
210
|
+
const clazzName = listDec.clazz
|
|
211
|
+
.map((t) => typeof t === "function" && !t.name
|
|
212
|
+
? t()
|
|
213
|
+
: t)
|
|
214
|
+
.find((t) => !jsTypes.includes(t.name));
|
|
215
|
+
if (c.name === "Array")
|
|
216
|
+
self[prop] = self[prop].map((el) => {
|
|
217
|
+
return ["object", "function"].includes(typeof el) &&
|
|
218
|
+
clazzName
|
|
219
|
+
? ModelRegistryManager.getRegistry().build(el, clazzName.name)
|
|
220
|
+
: el;
|
|
221
|
+
});
|
|
222
|
+
if (c.name === "Set") {
|
|
223
|
+
const s = new Set();
|
|
224
|
+
for (const v of self[prop]) {
|
|
225
|
+
if (["object", "function"].includes(typeof v) &&
|
|
226
|
+
clazzName) {
|
|
227
|
+
s.add(ModelRegistryManager.getRegistry().build(v, clazzName.name));
|
|
228
|
+
}
|
|
229
|
+
else {
|
|
230
|
+
s.add(v);
|
|
231
|
+
}
|
|
232
|
+
}
|
|
233
|
+
self[prop] = s;
|
|
234
|
+
}
|
|
235
|
+
break;
|
|
236
|
+
}
|
|
237
|
+
default:
|
|
238
|
+
if (typeof self[prop] !== "undefined" &&
|
|
239
|
+
ModelRegistryManager.getRegistry().get(c.name))
|
|
240
|
+
self[prop] =
|
|
241
|
+
ModelRegistryManager.getRegistry().build(self[prop], c.name);
|
|
242
|
+
}
|
|
243
|
+
}
|
|
244
|
+
catch (e) {
|
|
245
|
+
console.log(e);
|
|
246
|
+
// do nothing. we have no registry of this class
|
|
247
|
+
}
|
|
248
|
+
});
|
|
249
|
+
}
|
|
250
|
+
return self;
|
|
251
|
+
}
|
|
252
|
+
/**
|
|
253
|
+
* @description Provides access to the current model registry
|
|
254
|
+
* @summary Returns the current {@link ModelRegistryManager} instance, creating one if it doesn't exist
|
|
255
|
+
*
|
|
256
|
+
* @return {ModelRegistry<any>} - The current model registry, defaults to a new {@link ModelRegistryManager} if not set
|
|
257
|
+
* @private
|
|
258
|
+
*/
|
|
259
|
+
static getRegistry() {
|
|
260
|
+
if (!actingModelRegistry)
|
|
261
|
+
actingModelRegistry = new ModelRegistryManager();
|
|
262
|
+
return actingModelRegistry;
|
|
263
|
+
}
|
|
264
|
+
/**
|
|
265
|
+
* @description Configures the model registry to be used by the Model system
|
|
266
|
+
* @summary Sets the current model registry to a custom implementation
|
|
267
|
+
*
|
|
268
|
+
* @param {BuilderRegistry<any>} modelRegistry - The new implementation of Registry to use
|
|
269
|
+
* @return {void}
|
|
270
|
+
*/
|
|
271
|
+
static setRegistry(modelRegistry) {
|
|
272
|
+
actingModelRegistry = modelRegistry;
|
|
273
|
+
}
|
|
274
|
+
}
|
|
275
|
+
/**
|
|
276
|
+
* @summary Bulk Registers Models
|
|
277
|
+
* @description Useful when using bundlers that might not evaluate all the code at once
|
|
278
|
+
*
|
|
279
|
+
* @template M extends Model
|
|
280
|
+
* @param {Array<Constructor<M>> | Array<{name: string, constructor: Constructor<M>}>} [models]
|
|
281
|
+
*
|
|
282
|
+
* @memberOf module:decorator-validation
|
|
283
|
+
* @category Model
|
|
284
|
+
*/
|
|
285
|
+
export function bulkModelRegister(...models) {
|
|
286
|
+
models.forEach((m) => {
|
|
287
|
+
const constructor = (m.constructor ? m.constructor : m);
|
|
288
|
+
ModelRegistryManager.getRegistry().register(constructor, m.name);
|
|
289
|
+
});
|
|
290
|
+
}
|
|
291
|
+
//# sourceMappingURL=ModelRegistry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ModelRegistry.js","sourceRoot":"","sources":["../../../src/model/ModelRegistry.ts"],"names":[],"mappings":"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"}
|
package/lib/esm/model/index.d.ts
CHANGED
package/lib/esm/model/index.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
export * from "./constants.js";
|
|
2
2
|
export * from "./construction.js";
|
|
3
3
|
export * from "./decorators.js";
|
|
4
|
+
export * from "./ModelRegistry.js"; // registry before model on purpose
|
|
4
5
|
export * from "./Model.js";
|
|
5
6
|
export * from "./ModelErrorDefinition.js";
|
|
6
7
|
export * from "./Builder.js";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/model/index.ts"],"names":[],"mappings":"AAAA,+BAA4B;AAC5B,kCAA+B;AAC/B,gCAA6B;AAC7B,2BAAwB;AACxB,0CAAuC;AACvC,6BAA0B;AAC1B,2BAAwB;AACxB,gCAA6B;AAC7B,2BAAwB"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/model/index.ts"],"names":[],"mappings":"AAAA,+BAA4B;AAC5B,kCAA+B;AAC/B,gCAA6B;AAC7B,mCAAgC,CAAC,mCAAmC;AACpE,2BAAwB;AACxB,0CAAuC;AACvC,6BAA0B;AAC1B,2BAAwB;AACxB,gCAA6B;AAC7B,2BAAwB"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { ModelErrorDefinition } from "./ModelErrorDefinition";
|
|
2
|
-
import { Model } from "./Model";
|
|
2
|
+
import type { Model } from "./Model";
|
|
3
3
|
import { ConditionalAsync } from "../types";
|
|
4
4
|
export declare function validateChildValue<M extends Model>(prop: string, childValue: any, parentModel: M, allowedTypes: string[], async: boolean, ...propsToIgnore: string[]): string | undefined | ModelErrorDefinition | Promise<string | undefined | ModelErrorDefinition>;
|
|
5
5
|
/**
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import { ModelErrorDefinition } from "./ModelErrorDefinition.js";
|
|
2
2
|
import { ModelKeys } from "./../utils/constants.js";
|
|
3
|
-
import { Model } from "./Model.js";
|
|
4
3
|
import { Validation } from "./../validation/Validation.js";
|
|
5
4
|
import { ValidationKeys } from "./../validation/Validators/constants.js";
|
|
6
5
|
import { PathProxyEngine } from "./../utils/PathProxy.js";
|
|
7
6
|
import { ASYNC_META_KEY, VALIDATION_PARENT_KEY } from "./../constants/index.js";
|
|
8
7
|
import { toConditionalPromise } from "./utils.js";
|
|
9
8
|
import { Metadata } from "@decaf-ts/decoration";
|
|
9
|
+
import { ModelRegistryManager } from "./ModelRegistry.js";
|
|
10
10
|
/**
|
|
11
11
|
* Safely sets temporary metadata on an object
|
|
12
12
|
*/
|
|
@@ -44,7 +44,7 @@ export function validateChildValue(prop, childValue, parentModel, allowedTypes,
|
|
|
44
44
|
let err = undefined;
|
|
45
45
|
let atLeastOneMatched = false;
|
|
46
46
|
for (const allowedType of allowedTypes) {
|
|
47
|
-
const Constr =
|
|
47
|
+
const Constr = ModelRegistryManager.getRegistry().get(allowedType);
|
|
48
48
|
if (!Constr) {
|
|
49
49
|
err = new ModelErrorDefinition({
|
|
50
50
|
[prop]: {
|
|
@@ -155,7 +155,7 @@ export function validateDecorators(model, prop, value, decorators, async, ...pro
|
|
|
155
155
|
// const reserved = Object.values(ReservedModels).map((v) => v.toLowerCase()) as string[];
|
|
156
156
|
const errs = values.map((childValue) => {
|
|
157
157
|
// if (Model.isModel(v) && !reserved.includes(v) {
|
|
158
|
-
if (
|
|
158
|
+
if (Metadata.isModel(childValue)) {
|
|
159
159
|
const nestedPropsToIgnore = getChildNestedPropsToIgnore(prop, ...propsToIgnore);
|
|
160
160
|
return validateChildValue(prop, childValue, model, types.flat(), !!async, ...nestedPropsToIgnore);
|
|
161
161
|
// return getNestedValidationErrors(childValue, model, async);
|
|
@@ -257,7 +257,7 @@ export function validate(model, async, ...propsToIgnore) {
|
|
|
257
257
|
const propKey = String(prop);
|
|
258
258
|
const propValue = model[prop];
|
|
259
259
|
const decorators = Metadata.validationFor(model.constructor, prop) || {};
|
|
260
|
-
const { designTypes
|
|
260
|
+
const { designTypes } = Metadata.getPropDesignTypes(model.constructor, prop);
|
|
261
261
|
if (!designTypes)
|
|
262
262
|
continue;
|
|
263
263
|
// Handle array or Set types and enforce the presence of @list decorator
|
|
@@ -280,13 +280,13 @@ export function validate(model, async, ...propsToIgnore) {
|
|
|
280
280
|
const propErrors = validateDecorators(model, propKey, propValue, decorators, async, ...propsToIgnore) || {};
|
|
281
281
|
// Check for nested properties.
|
|
282
282
|
// To prevent unnecessary processing, "propValue" must be defined
|
|
283
|
-
const isConstr =
|
|
283
|
+
const isConstr = Metadata.isPropertyModel(model, propKey);
|
|
284
284
|
const hasPropValue = propValue !== null && propValue !== undefined;
|
|
285
285
|
if (isConstr && hasPropValue) {
|
|
286
286
|
// If property comes from a relation and has populate flag set to false, this will have the value of the id of that relation, instead of a model.
|
|
287
287
|
// We need to capture that and excempt it from throwing an error. This is being handled in the core Metadata.validationExceptions.
|
|
288
288
|
const Constr = designTypes
|
|
289
|
-
.map((d) =>
|
|
289
|
+
.map((d) => ModelRegistryManager.getRegistry().get(d.name || d))
|
|
290
290
|
.find((d) => !!d);
|
|
291
291
|
const designTypeNames = designTypes.map((d) => {
|
|
292
292
|
if (typeof d === "function")
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validation.js","sourceRoot":"","sources":["../../../src/model/validation.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"validation.js","sourceRoot":"","sources":["../../../src/model/validation.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,7 +2,7 @@ import { Model } from "../model/Model";
|
|
|
2
2
|
import "@decaf-ts/decoration";
|
|
3
3
|
import { Constructor } from "@decaf-ts/decoration";
|
|
4
4
|
import { designTypeReturn, ExtendedMetadata } from "./types";
|
|
5
|
-
import { ValidationMetadata } from "../validation/
|
|
5
|
+
import { ValidationMetadata } from "../validation/types";
|
|
6
6
|
declare module "@decaf-ts/decoration" {
|
|
7
7
|
namespace Metadata {
|
|
8
8
|
/**
|
|
@@ -125,5 +125,8 @@ declare module "@decaf-ts/decoration" {
|
|
|
125
125
|
* const { designTypes, designType } = Metadata.getPropDesignTypes(User.constructor, 'name');
|
|
126
126
|
*/
|
|
127
127
|
function getPropDesignTypes<M>(model: Constructor<M>, property: keyof M): designTypeReturn;
|
|
128
|
+
function isModel(target: Record<string, any>): boolean;
|
|
129
|
+
function isPropertyModel<M extends Model>(target: M, attribute: string): boolean | string | undefined;
|
|
130
|
+
function getAttributes<V extends Model>(model: Constructor<V> | V): string[];
|
|
128
131
|
}
|
|
129
132
|
}
|
|
@@ -3,6 +3,7 @@ import { Metadata } from "@decaf-ts/decoration";
|
|
|
3
3
|
import { Model } from "./../model/Model.js";
|
|
4
4
|
import { DEFAULT_ERROR_MESSAGES, ValidationKeys, } from "./../validation/Validators/constants.js";
|
|
5
5
|
import { ReservedModels } from "./../model/constants.js";
|
|
6
|
+
import { ModelRegistryManager } from "./../model/ModelRegistry.js";
|
|
6
7
|
Metadata.validationFor = function (model, property, key) {
|
|
7
8
|
const meta = Metadata.get(model);
|
|
8
9
|
if (!meta)
|
|
@@ -76,4 +77,52 @@ Metadata.getPropDesignTypes = function (model, prop) {
|
|
|
76
77
|
const designTypes = (Array.isArray(designType) ? designType : [designType]).map((e) => (e = typeof e === "function" && !e.name ? e() : e));
|
|
77
78
|
return { designTypes, designType };
|
|
78
79
|
}.bind(Metadata);
|
|
80
|
+
Metadata.isModel = function isModel(target) {
|
|
81
|
+
try {
|
|
82
|
+
if (target instanceof Model)
|
|
83
|
+
return true;
|
|
84
|
+
const constr = Metadata.constr(target);
|
|
85
|
+
if (!constr || constr === target)
|
|
86
|
+
return false;
|
|
87
|
+
return !!Metadata.modelName(constr);
|
|
88
|
+
//
|
|
89
|
+
// // return target instanceof Model || !!Metadata.modelName(target as any);
|
|
90
|
+
// const modelName = Metadata.modelName(target as any);
|
|
91
|
+
// return target instanceof Model || !!Model.get(modelName);
|
|
92
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
93
|
+
}
|
|
94
|
+
catch (e) {
|
|
95
|
+
return false;
|
|
96
|
+
}
|
|
97
|
+
}.bind(Metadata);
|
|
98
|
+
Metadata.isPropertyModel = function isPropertyModel(target, attribute) {
|
|
99
|
+
const isModel = Metadata.isModel(target[attribute]);
|
|
100
|
+
if (isModel)
|
|
101
|
+
return true;
|
|
102
|
+
const metadata = Metadata.type(target.constructor, attribute);
|
|
103
|
+
if (!metadata)
|
|
104
|
+
return undefined;
|
|
105
|
+
return ModelRegistryManager.getRegistry().get(metadata.name)
|
|
106
|
+
? metadata.name
|
|
107
|
+
: undefined;
|
|
108
|
+
}.bind(Metadata);
|
|
109
|
+
Metadata.getAttributes = function getAttributes(model) {
|
|
110
|
+
const constructor = model instanceof Model ? model.constructor : model;
|
|
111
|
+
const seen = new Set();
|
|
112
|
+
const collect = (current) => {
|
|
113
|
+
if (!current)
|
|
114
|
+
return [];
|
|
115
|
+
const parent = Object.getPrototypeOf(current);
|
|
116
|
+
const attributes = collect(parent);
|
|
117
|
+
const props = Metadata.properties(current) ?? [];
|
|
118
|
+
for (const prop of props) {
|
|
119
|
+
if (!seen.has(prop)) {
|
|
120
|
+
seen.add(prop);
|
|
121
|
+
attributes.push(prop);
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
return attributes;
|
|
125
|
+
};
|
|
126
|
+
return collect(constructor);
|
|
127
|
+
}.bind(Metadata);
|
|
79
128
|
//# sourceMappingURL=overrides.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"overrides.js","sourceRoot":"","sources":["../../../src/overrides/overrides.ts"],"names":[],"mappings":"AAAA,uBAAoB;AACpB,OAAO,EAAE,QAAQ,EAAe,MAAM,sBAAsB,CAAC;AAC7D,OAAO,EAAE,KAAK,EAAE,4BAAuB;AAGvC,OAAO,EACL,sBAAsB,EACtB,cAAc,GACf,gDAA2C;AAC5C,OAAO,EAAE,cAAc,EAAE,gCAA2B;
|
|
1
|
+
{"version":3,"file":"overrides.js","sourceRoot":"","sources":["../../../src/overrides/overrides.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { BasicMetadata } from "@decaf-ts/decoration";
|
|
2
|
-
import { ValidatorOptions } from "../validation/
|
|
2
|
+
import { ValidatorOptions } from "../validation/types";
|
|
3
3
|
export type ExtendedMetadata<M> = BasicMetadata<M> & {
|
|
4
4
|
validation: Record<keyof M, ValidatorOptions>;
|
|
5
5
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../src/utils/constants.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,CAAN,IAAY,SAWX;AAXD,WAAY,SAAS;IACnB,wCAA6C,CAAA;IAC7C,iCAAsC,CAAA;IACtC,4BAAe,CAAA;IACf,+BAAkB,CAAA;IAClB,4CAA+B,CAAA;IAC/B,uCAA0B,CAAA;IAC1B,gCAAmB,CAAA;IACnB,4CAA+B,CAAA;IAC/B,sCAAyB,CAAA;IACzB,uCAA6C,CAAA;AAC/C,CAAC,EAXW,SAAS,KAAT,SAAS,QAWpB"}
|
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../src/utils/constants.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,CAAN,IAAY,SAWX;AAXD,WAAY,SAAS;IACnB,wCAA6C,CAAA;IAC7C,iCAAsC,CAAA;IACtC,4BAAe,CAAA;IACf,+BAAkB,CAAA;IAClB,4CAA+B,CAAA;IAC/B,uCAA0B,CAAA;IAC1B,gCAAmB,CAAA;IACnB,4CAA+B,CAAA;IAC/B,sCAAyB,CAAA;IACzB,uCAA6C,CAAA;AAC/C,CAAC,EAXW,SAAS,KAAT,SAAS,QAWpB;AACD,MAAM,CAAC,MAAM,0BAA0B,GAAG,MAAM,CAAC"}
|
package/lib/esm/utils/index.d.ts
CHANGED
package/lib/esm/utils/index.js
CHANGED
|
@@ -4,6 +4,7 @@ export * from "./equality.js";
|
|
|
4
4
|
export * from "./hashing.js";
|
|
5
5
|
export * from "./PathProxy.js";
|
|
6
6
|
export * from "./registry.js";
|
|
7
|
+
export * from "./serializers.js"; // before serialization on purpose
|
|
7
8
|
export * from "./serialization.js";
|
|
8
9
|
export * from "./strings.js";
|
|
9
10
|
export * from "./types.js";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/utils/index.ts"],"names":[],"mappings":"AAAA,+BAA4B;AAC5B,2BAAwB;AACxB,8BAA2B;AAC3B,6BAA0B;AAC1B,+BAA4B;AAC5B,8BAA2B;AAC3B,mCAAgC;AAChC,6BAA0B;AAC1B,2BAAwB"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/utils/index.ts"],"names":[],"mappings":"AAAA,+BAA4B;AAC5B,2BAAwB;AACxB,8BAA2B;AAC3B,6BAA0B;AAC1B,+BAA4B;AAC5B,8BAA2B;AAC3B,iCAA8B,CAAC,kCAAkC;AACjE,mCAAgC;AAChC,6BAA0B;AAC1B,2BAAwB"}
|
|
@@ -1,46 +1,5 @@
|
|
|
1
1
|
import { Constructor } from "@decaf-ts/decoration";
|
|
2
2
|
import { Serializer } from "./types";
|
|
3
|
-
import { Model } from "../model/Model";
|
|
4
|
-
export declare const DefaultSerializationMethod = "json";
|
|
5
|
-
/**
|
|
6
|
-
* @summary Concrete implementation of a {@link Serializer} in JSON format
|
|
7
|
-
* @description JS's native JSON.stringify (used here) is not deterministic
|
|
8
|
-
* and therefore should not be used for hashing purposes
|
|
9
|
-
*
|
|
10
|
-
* To keep dependencies low, we will not implement this, but we recommend
|
|
11
|
-
* implementing a similar {@link JSONSerializer} using 'deterministic-json' libraries
|
|
12
|
-
*
|
|
13
|
-
* @class JSONSerializer
|
|
14
|
-
* @implements Serializer
|
|
15
|
-
*
|
|
16
|
-
* @category Model
|
|
17
|
-
*/
|
|
18
|
-
export declare class JSONSerializer<T extends Model<boolean>> implements Serializer<T> {
|
|
19
|
-
constructor();
|
|
20
|
-
/**
|
|
21
|
-
* @summary prepares the model for serialization
|
|
22
|
-
* @description returns a shallow copy of the object, containing an enumerable {@link ModelKeys#ANCHOR} property
|
|
23
|
-
* so the object can be recognized upon deserialization
|
|
24
|
-
*
|
|
25
|
-
* @param {T} model
|
|
26
|
-
* @protected
|
|
27
|
-
*/
|
|
28
|
-
protected preSerialize(model: T, ...args: any[]): Record<string, any>;
|
|
29
|
-
/**
|
|
30
|
-
* @summary Rebuilds a model from a serialization
|
|
31
|
-
* @param {string} str
|
|
32
|
-
*
|
|
33
|
-
* @throws {Error} If it fails to parse the string, or to build the model
|
|
34
|
-
*/
|
|
35
|
-
deserialize(str: string, ...args: any[]): T;
|
|
36
|
-
/**
|
|
37
|
-
* @summary Serializes a model
|
|
38
|
-
* @param {T} model
|
|
39
|
-
*
|
|
40
|
-
* @throws {Error} if fails to serialize
|
|
41
|
-
*/
|
|
42
|
-
serialize(model: T, ...args: any[]): string;
|
|
43
|
-
}
|
|
44
3
|
export declare class Serialization {
|
|
45
4
|
private static current;
|
|
46
5
|
private static cache;
|