@decaf-ts/decorator-validation 1.11.11 → 1.11.13

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.
Files changed (80) hide show
  1. package/README.md +1 -1
  2. package/dist/decorator-validation.cjs +1 -1
  3. package/dist/decorator-validation.cjs.map +1 -1
  4. package/dist/decorator-validation.js +1 -1
  5. package/dist/decorator-validation.js.map +1 -1
  6. package/lib/esm/index.d.ts +1 -1
  7. package/lib/esm/index.js +1 -1
  8. package/lib/esm/model/Model.d.ts +0 -103
  9. package/lib/esm/model/Model.js +11 -250
  10. package/lib/esm/model/Model.js.map +1 -1
  11. package/lib/esm/model/ModelRegistry.d.ts +181 -0
  12. package/lib/esm/model/ModelRegistry.js +291 -0
  13. package/lib/esm/model/ModelRegistry.js.map +1 -0
  14. package/lib/esm/model/index.d.ts +1 -0
  15. package/lib/esm/model/index.js +1 -0
  16. package/lib/esm/model/index.js.map +1 -1
  17. package/lib/esm/model/validation.d.ts +1 -1
  18. package/lib/esm/model/validation.js +5 -5
  19. package/lib/esm/model/validation.js.map +1 -1
  20. package/lib/esm/overrides/Metadata.d.ts +4 -1
  21. package/lib/esm/overrides/overrides.js +49 -0
  22. package/lib/esm/overrides/overrides.js.map +1 -1
  23. package/lib/esm/overrides/types.d.ts +1 -1
  24. package/lib/esm/utils/constants.d.ts +1 -0
  25. package/lib/esm/utils/constants.js +1 -0
  26. package/lib/esm/utils/constants.js.map +1 -1
  27. package/lib/esm/utils/index.d.ts +1 -0
  28. package/lib/esm/utils/index.js +1 -0
  29. package/lib/esm/utils/index.js.map +1 -1
  30. package/lib/esm/utils/serialization.d.ts +0 -41
  31. package/lib/esm/utils/serialization.js +1 -72
  32. package/lib/esm/utils/serialization.js.map +1 -1
  33. package/lib/esm/utils/serializers.d.ts +41 -0
  34. package/lib/esm/utils/serializers.js +73 -0
  35. package/lib/esm/utils/serializers.js.map +1 -0
  36. package/lib/esm/validation/Validation.js +1 -1
  37. package/lib/esm/validation/Validation.js.map +1 -1
  38. package/lib/esm/validation/Validators/constants.d.ts +1 -0
  39. package/lib/esm/validation/Validators/constants.js +1 -0
  40. package/lib/esm/validation/Validators/constants.js.map +1 -1
  41. package/lib/esm/validation/Validators/utils.js +1 -1
  42. package/lib/esm/validation/Validators/utils.js.map +1 -1
  43. package/lib/index.cjs +1 -1
  44. package/lib/index.d.ts +1 -1
  45. package/lib/model/Model.cjs +14 -255
  46. package/lib/model/Model.d.ts +0 -103
  47. package/lib/model/Model.js.map +1 -1
  48. package/lib/model/ModelRegistry.cjs +296 -0
  49. package/lib/model/ModelRegistry.d.ts +181 -0
  50. package/lib/model/ModelRegistry.js.map +1 -0
  51. package/lib/model/index.cjs +1 -0
  52. package/lib/model/index.d.ts +1 -0
  53. package/lib/model/index.js.map +1 -1
  54. package/lib/model/validation.cjs +5 -5
  55. package/lib/model/validation.d.ts +1 -1
  56. package/lib/model/validation.js.map +1 -1
  57. package/lib/overrides/Metadata.d.ts +4 -1
  58. package/lib/overrides/overrides.cjs +49 -0
  59. package/lib/overrides/overrides.js.map +1 -1
  60. package/lib/overrides/types.d.ts +1 -1
  61. package/lib/utils/constants.cjs +2 -1
  62. package/lib/utils/constants.d.ts +1 -0
  63. package/lib/utils/constants.js.map +1 -1
  64. package/lib/utils/index.cjs +1 -0
  65. package/lib/utils/index.d.ts +1 -0
  66. package/lib/utils/index.js.map +1 -1
  67. package/lib/utils/serialization.cjs +2 -74
  68. package/lib/utils/serialization.d.ts +0 -41
  69. package/lib/utils/serialization.js.map +1 -1
  70. package/lib/utils/serializers.cjs +77 -0
  71. package/lib/utils/serializers.d.ts +41 -0
  72. package/lib/utils/serializers.js.map +1 -0
  73. package/lib/validation/Validation.cjs +4 -4
  74. package/lib/validation/Validation.js.map +1 -1
  75. package/lib/validation/Validators/constants.cjs +1 -0
  76. package/lib/validation/Validators/constants.d.ts +1 -0
  77. package/lib/validation/Validators/constants.js.map +1 -1
  78. package/lib/validation/Validators/utils.cjs +6 -6
  79. package/lib/validation/Validators/utils.js.map +1 -1
  80. package/package.json +1 -1
@@ -0,0 +1,296 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ModelRegistryManager = void 0;
4
+ exports.bulkModelRegister = bulkModelRegister;
5
+ const decoration_1 = require("@decaf-ts/decoration");
6
+ const constants_1 = require("./constants.cjs");
7
+ const index_1 = require("./../validation/index.cjs");
8
+ let modelBuilderFunction;
9
+ let actingModelRegistry;
10
+ /**
11
+ * @description Registry manager for model constructors that enables serialization and rebuilding
12
+ * @summary The ModelRegistryManager implements the ModelRegistry interface and provides
13
+ * functionality for registering, retrieving, and building model instances. It maintains
14
+ * a cache of model constructors indexed by name, allowing for efficient lookup and instantiation.
15
+ * This class is essential for the serialization and deserialization of model objects.
16
+ *
17
+ * @param {function(Record<string, any>): boolean} [testFunction] - Function to test if an object is a model, defaults to {@link Model#isModel}
18
+ *
19
+ * @class ModelRegistryManager
20
+ * @template M Type of model that can be registered, must extend Model
21
+ * @implements ModelRegistry<M>
22
+ * @category Model
23
+ *
24
+ * @example
25
+ * ```typescript
26
+ * // Create a model registry
27
+ * const registry = new ModelRegistryManager();
28
+ *
29
+ * // Register a model class
30
+ * registry.register(User);
31
+ *
32
+ * // Retrieve a model constructor by name
33
+ * const UserClass = registry.get("User");
34
+ *
35
+ * // Build a model instance from a plain object
36
+ * const userData = { name: "John", age: 30 };
37
+ * const user = registry.build(userData, "User");
38
+ * ```
39
+ *
40
+ * @mermaid
41
+ * sequenceDiagram
42
+ * participant C as Client
43
+ * participant R as ModelRegistryManager
44
+ * participant M as Model Class
45
+ *
46
+ * C->>R: new ModelRegistryManager(testFunction)
47
+ * C->>R: register(ModelClass)
48
+ * R->>R: Store in cache
49
+ * C->>R: get("ModelName")
50
+ * R-->>C: ModelClass constructor
51
+ * C->>R: build(data, "ModelName")
52
+ * R->>R: Get constructor from cache
53
+ * R->>M: new ModelClass(data)
54
+ * M-->>R: Model instance
55
+ * R-->>C: Model instance
56
+ */
57
+ class ModelRegistryManager {
58
+ constructor(testFunction = decoration_1.Metadata.isModel) {
59
+ this.cache = {};
60
+ this.testFunction = testFunction;
61
+ }
62
+ /**
63
+ * @description Registers a model constructor with the registry
64
+ * @summary Adds a model constructor to the registry cache, making it available for
65
+ * later retrieval and instantiation. If no name is provided, the constructor's name
66
+ * property is used as the key in the registry.
67
+ *
68
+ * @param {ModelConstructor<M>} constructor - The model constructor to register
69
+ * @param {string} [name] - Optional name to register the constructor under, defaults to constructor.name
70
+ * @return {void}
71
+ * @throws {Error} If the constructor is not a function
72
+ */
73
+ register(constructor, name) {
74
+ if (typeof constructor !== "function")
75
+ throw new Error("Model registering failed. Missing Class name or constructor");
76
+ name = name || constructor.name;
77
+ this.cache[name] = constructor;
78
+ }
79
+ /**
80
+ * @summary Gets a registered Model {@link ModelConstructor}
81
+ * @param {string} name
82
+ */
83
+ get(name) {
84
+ try {
85
+ return this.cache[name];
86
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
87
+ }
88
+ catch (e) {
89
+ return undefined;
90
+ }
91
+ }
92
+ /**
93
+ * @param {Record<string, any>} obj
94
+ * @param {string} [clazz] when provided, it will attempt to find the matching constructor
95
+ *
96
+ * @throws Error If clazz is not found, or obj is not a {@link Model} meaning it has no {@link ModelKeys.ANCHOR} property
97
+ */
98
+ build(obj = {}, clazz) {
99
+ if (!clazz && !this.testFunction(obj))
100
+ throw new Error("Provided obj is not a Model object");
101
+ const name = clazz || decoration_1.Metadata.modelName(obj.constructor);
102
+ if (!(name in this.cache))
103
+ throw new Error(`Provided class ${name} is not a registered Model object`);
104
+ return new this.cache[name](obj);
105
+ }
106
+ /**
107
+ * @description Configures the global model builder function
108
+ * @summary Sets the Global {@link ModelBuilderFunction} used for building model instances
109
+ *
110
+ * @param {ModelBuilderFunction} [builder] - The builder function to set as the global builder
111
+ * @return {void}
112
+ */
113
+ static setBuilder(builder) {
114
+ modelBuilderFunction = builder;
115
+ }
116
+ /**
117
+ * @description Retrieves the currently configured global model builder function
118
+ * @summary Returns the current global {@link ModelBuilderFunction} used for building model instances
119
+ *
120
+ * @return {ModelBuilderFunction | undefined} - The current global builder function or undefined if not set
121
+ */
122
+ static getBuilder() {
123
+ return modelBuilderFunction || ModelRegistryManager.fromModel;
124
+ }
125
+ /**
126
+ * @description Copies and rebuilds properties from a source object to a model instance, handling nested models
127
+ * @summary Repopulates the instance with properties from the new Model Object, recursively rebuilding nested models
128
+ *
129
+ * @template T
130
+ * @param {T} self - The target model instance to update
131
+ * @param {T | Record<string, any>} [obj] - The source object containing properties to copy
132
+ * @return {T} - The updated model instance with rebuilt nested models
133
+ *
134
+ * @mermaid
135
+ * sequenceDiagram
136
+ * participant C as Client
137
+ * participant M as Model.fromModel
138
+ * participant B as Model.build
139
+ * participant R as Reflection
140
+ *
141
+ * C->>M: fromModel(self, obj)
142
+ * M->>M: Get attributes from self
143
+ * loop For each property
144
+ * M->>M: Copy property from obj to self
145
+ * alt Property is a model
146
+ * M->>M: Check if property is a model
147
+ * M->>B: build(property, modelType)
148
+ * B-->>M: Return built model
149
+ * else Property is a complex type
150
+ * M->>R: Get property decorators
151
+ * R-->>M: Return decorators
152
+ * M->>M: Filter type decorators
153
+ * alt Property is Array/Set with list decorator
154
+ * M->>M: Process each item in collection
155
+ * loop For each item
156
+ * M->>B: build(item, itemModelType)
157
+ * B-->>M: Return built model
158
+ * end
159
+ * else Property is another model type
160
+ * M->>B: build(property, propertyType)
161
+ * B-->>M: Return built model
162
+ * end
163
+ * end
164
+ * end
165
+ * M-->>C: Return updated self
166
+ */
167
+ static fromModel(self, obj) {
168
+ if (!obj)
169
+ obj = {};
170
+ let decorators;
171
+ const props = decoration_1.Metadata.getAttributes(self);
172
+ const proto = Object.getPrototypeOf(self);
173
+ let descriptor;
174
+ for (const prop of props) {
175
+ try {
176
+ self[prop] =
177
+ obj[prop] ??
178
+ self[prop] ??
179
+ undefined;
180
+ }
181
+ catch (e) {
182
+ descriptor = Object.getOwnPropertyDescriptor(proto, prop);
183
+ if (!descriptor || descriptor.writable)
184
+ throw new Error(`Unable to write property ${prop} to model: ${e}`);
185
+ }
186
+ if (typeof self[prop] !== "object")
187
+ continue;
188
+ const propM = decoration_1.Metadata.isPropertyModel(self, prop);
189
+ if (propM) {
190
+ try {
191
+ self[prop] =
192
+ ModelRegistryManager.getRegistry().build(self[prop], typeof propM === "string" ? propM : undefined);
193
+ }
194
+ catch (e) {
195
+ console.log(e);
196
+ }
197
+ continue;
198
+ }
199
+ decorators = decoration_1.Metadata.allowedTypes(self.constructor, prop);
200
+ if (!decorators || !decorators.length)
201
+ throw new Error(`failed to find decorators for property ${prop}`);
202
+ const clazz = decorators.map((t) => typeof t === "function" && !t.name ? t() : t);
203
+ const reserved = Object.values(constants_1.ReservedModels);
204
+ clazz.forEach((c) => {
205
+ if (!reserved.includes(c))
206
+ try {
207
+ switch (c.name) {
208
+ case "Array":
209
+ case "Set": {
210
+ const validation = decoration_1.Metadata.validationFor(self.constructor, prop);
211
+ if (!validation || !validation[index_1.ValidationKeys.LIST])
212
+ break;
213
+ const listDec = validation[index_1.ValidationKeys.LIST];
214
+ const clazzName = listDec.clazz
215
+ .map((t) => typeof t === "function" && !t.name
216
+ ? t()
217
+ : t)
218
+ .find((t) => !constants_1.jsTypes.includes(t.name));
219
+ if (c.name === "Array")
220
+ self[prop] = self[prop].map((el) => {
221
+ return ["object", "function"].includes(typeof el) &&
222
+ clazzName
223
+ ? ModelRegistryManager.getRegistry().build(el, clazzName.name)
224
+ : el;
225
+ });
226
+ if (c.name === "Set") {
227
+ const s = new Set();
228
+ for (const v of self[prop]) {
229
+ if (["object", "function"].includes(typeof v) &&
230
+ clazzName) {
231
+ s.add(ModelRegistryManager.getRegistry().build(v, clazzName.name));
232
+ }
233
+ else {
234
+ s.add(v);
235
+ }
236
+ }
237
+ self[prop] = s;
238
+ }
239
+ break;
240
+ }
241
+ default:
242
+ if (typeof self[prop] !== "undefined" &&
243
+ ModelRegistryManager.getRegistry().get(c.name))
244
+ self[prop] =
245
+ ModelRegistryManager.getRegistry().build(self[prop], c.name);
246
+ }
247
+ }
248
+ catch (e) {
249
+ console.log(e);
250
+ // do nothing. we have no registry of this class
251
+ }
252
+ });
253
+ }
254
+ return self;
255
+ }
256
+ /**
257
+ * @description Provides access to the current model registry
258
+ * @summary Returns the current {@link ModelRegistryManager} instance, creating one if it doesn't exist
259
+ *
260
+ * @return {ModelRegistry<any>} - The current model registry, defaults to a new {@link ModelRegistryManager} if not set
261
+ * @private
262
+ */
263
+ static getRegistry() {
264
+ if (!actingModelRegistry)
265
+ actingModelRegistry = new ModelRegistryManager();
266
+ return actingModelRegistry;
267
+ }
268
+ /**
269
+ * @description Configures the model registry to be used by the Model system
270
+ * @summary Sets the current model registry to a custom implementation
271
+ *
272
+ * @param {BuilderRegistry<any>} modelRegistry - The new implementation of Registry to use
273
+ * @return {void}
274
+ */
275
+ static setRegistry(modelRegistry) {
276
+ actingModelRegistry = modelRegistry;
277
+ }
278
+ }
279
+ exports.ModelRegistryManager = ModelRegistryManager;
280
+ /**
281
+ * @summary Bulk Registers Models
282
+ * @description Useful when using bundlers that might not evaluate all the code at once
283
+ *
284
+ * @template M extends Model
285
+ * @param {Array<Constructor<M>> | Array<{name: string, constructor: Constructor<M>}>} [models]
286
+ *
287
+ * @memberOf module:decorator-validation
288
+ * @category Model
289
+ */
290
+ function bulkModelRegister(...models) {
291
+ models.forEach((m) => {
292
+ const constructor = (m.constructor ? m.constructor : m);
293
+ ModelRegistryManager.getRegistry().register(constructor, m.name);
294
+ });
295
+ }
296
+ //# sourceMappingURL=ModelRegistry.js.map
@@ -0,0 +1,181 @@
1
+ import { Constructor } from "@decaf-ts/decoration";
2
+ import { ModelBuilderFunction, ModelConstructor } from "./types";
3
+ import { type Model } from "./Model";
4
+ import { BuilderRegistry } from "../utils/registry";
5
+ /**
6
+ * @description Registry type for storing and retrieving model constructors
7
+ * @summary The ModelRegistry type defines a registry for model constructors that extends
8
+ * the BuilderRegistry interface. It provides a standardized way to register, retrieve,
9
+ * and build model instances, enabling the model system to work with different types of models.
10
+ *
11
+ * @interface ModelRegistry
12
+ * @template T Type of model that can be registered, must extend Model
13
+ * @extends BuilderRegistry<T>
14
+ * @memberOf module:decorator-validation
15
+ * @category Model
16
+ */
17
+ export type ModelRegistry<T extends Model> = BuilderRegistry<T>;
18
+ /**
19
+ * @description Registry manager for model constructors that enables serialization and rebuilding
20
+ * @summary The ModelRegistryManager implements the ModelRegistry interface and provides
21
+ * functionality for registering, retrieving, and building model instances. It maintains
22
+ * a cache of model constructors indexed by name, allowing for efficient lookup and instantiation.
23
+ * This class is essential for the serialization and deserialization of model objects.
24
+ *
25
+ * @param {function(Record<string, any>): boolean} [testFunction] - Function to test if an object is a model, defaults to {@link Model#isModel}
26
+ *
27
+ * @class ModelRegistryManager
28
+ * @template M Type of model that can be registered, must extend Model
29
+ * @implements ModelRegistry<M>
30
+ * @category Model
31
+ *
32
+ * @example
33
+ * ```typescript
34
+ * // Create a model registry
35
+ * const registry = new ModelRegistryManager();
36
+ *
37
+ * // Register a model class
38
+ * registry.register(User);
39
+ *
40
+ * // Retrieve a model constructor by name
41
+ * const UserClass = registry.get("User");
42
+ *
43
+ * // Build a model instance from a plain object
44
+ * const userData = { name: "John", age: 30 };
45
+ * const user = registry.build(userData, "User");
46
+ * ```
47
+ *
48
+ * @mermaid
49
+ * sequenceDiagram
50
+ * participant C as Client
51
+ * participant R as ModelRegistryManager
52
+ * participant M as Model Class
53
+ *
54
+ * C->>R: new ModelRegistryManager(testFunction)
55
+ * C->>R: register(ModelClass)
56
+ * R->>R: Store in cache
57
+ * C->>R: get("ModelName")
58
+ * R-->>C: ModelClass constructor
59
+ * C->>R: build(data, "ModelName")
60
+ * R->>R: Get constructor from cache
61
+ * R->>M: new ModelClass(data)
62
+ * M-->>R: Model instance
63
+ * R-->>C: Model instance
64
+ */
65
+ export declare class ModelRegistryManager<M extends Model<true | false>> implements ModelRegistry<M> {
66
+ private cache;
67
+ private readonly testFunction;
68
+ constructor(testFunction?: (obj: Record<string, any>) => boolean);
69
+ /**
70
+ * @description Registers a model constructor with the registry
71
+ * @summary Adds a model constructor to the registry cache, making it available for
72
+ * later retrieval and instantiation. If no name is provided, the constructor's name
73
+ * property is used as the key in the registry.
74
+ *
75
+ * @param {ModelConstructor<M>} constructor - The model constructor to register
76
+ * @param {string} [name] - Optional name to register the constructor under, defaults to constructor.name
77
+ * @return {void}
78
+ * @throws {Error} If the constructor is not a function
79
+ */
80
+ register(constructor: ModelConstructor<M>, name?: string): void;
81
+ /**
82
+ * @summary Gets a registered Model {@link ModelConstructor}
83
+ * @param {string} name
84
+ */
85
+ get(name: string): ModelConstructor<M> | undefined;
86
+ /**
87
+ * @param {Record<string, any>} obj
88
+ * @param {string} [clazz] when provided, it will attempt to find the matching constructor
89
+ *
90
+ * @throws Error If clazz is not found, or obj is not a {@link Model} meaning it has no {@link ModelKeys.ANCHOR} property
91
+ */
92
+ build(obj?: Record<string, any>, clazz?: string): M;
93
+ /**
94
+ * @description Configures the global model builder function
95
+ * @summary Sets the Global {@link ModelBuilderFunction} used for building model instances
96
+ *
97
+ * @param {ModelBuilderFunction} [builder] - The builder function to set as the global builder
98
+ * @return {void}
99
+ */
100
+ static setBuilder(builder?: ModelBuilderFunction): void;
101
+ /**
102
+ * @description Retrieves the currently configured global model builder function
103
+ * @summary Returns the current global {@link ModelBuilderFunction} used for building model instances
104
+ *
105
+ * @return {ModelBuilderFunction | undefined} - The current global builder function or undefined if not set
106
+ */
107
+ static getBuilder(): ModelBuilderFunction | undefined;
108
+ /**
109
+ * @description Copies and rebuilds properties from a source object to a model instance, handling nested models
110
+ * @summary Repopulates the instance with properties from the new Model Object, recursively rebuilding nested models
111
+ *
112
+ * @template T
113
+ * @param {T} self - The target model instance to update
114
+ * @param {T | Record<string, any>} [obj] - The source object containing properties to copy
115
+ * @return {T} - The updated model instance with rebuilt nested models
116
+ *
117
+ * @mermaid
118
+ * sequenceDiagram
119
+ * participant C as Client
120
+ * participant M as Model.fromModel
121
+ * participant B as Model.build
122
+ * participant R as Reflection
123
+ *
124
+ * C->>M: fromModel(self, obj)
125
+ * M->>M: Get attributes from self
126
+ * loop For each property
127
+ * M->>M: Copy property from obj to self
128
+ * alt Property is a model
129
+ * M->>M: Check if property is a model
130
+ * M->>B: build(property, modelType)
131
+ * B-->>M: Return built model
132
+ * else Property is a complex type
133
+ * M->>R: Get property decorators
134
+ * R-->>M: Return decorators
135
+ * M->>M: Filter type decorators
136
+ * alt Property is Array/Set with list decorator
137
+ * M->>M: Process each item in collection
138
+ * loop For each item
139
+ * M->>B: build(item, itemModelType)
140
+ * B-->>M: Return built model
141
+ * end
142
+ * else Property is another model type
143
+ * M->>B: build(property, propertyType)
144
+ * B-->>M: Return built model
145
+ * end
146
+ * end
147
+ * end
148
+ * M-->>C: Return updated self
149
+ */
150
+ static fromModel<T extends Model>(self: T, obj?: T | Record<string, any>): T;
151
+ /**
152
+ * @description Provides access to the current model registry
153
+ * @summary Returns the current {@link ModelRegistryManager} instance, creating one if it doesn't exist
154
+ *
155
+ * @return {ModelRegistry<any>} - The current model registry, defaults to a new {@link ModelRegistryManager} if not set
156
+ * @private
157
+ */
158
+ static getRegistry(): BuilderRegistry<any>;
159
+ /**
160
+ * @description Configures the model registry to be used by the Model system
161
+ * @summary Sets the current model registry to a custom implementation
162
+ *
163
+ * @param {BuilderRegistry<any>} modelRegistry - The new implementation of Registry to use
164
+ * @return {void}
165
+ */
166
+ static setRegistry(modelRegistry: BuilderRegistry<any>): void;
167
+ }
168
+ /**
169
+ * @summary Bulk Registers Models
170
+ * @description Useful when using bundlers that might not evaluate all the code at once
171
+ *
172
+ * @template M extends Model
173
+ * @param {Array<Constructor<M>> | Array<{name: string, constructor: Constructor<M>}>} [models]
174
+ *
175
+ * @memberOf module:decorator-validation
176
+ * @category Model
177
+ */
178
+ export declare function bulkModelRegister<M extends Model>(...models: (Constructor<M> | {
179
+ name: string;
180
+ constructor: Constructor<M>;
181
+ })[]): void;
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ModelRegistry.js","sourceRoot":"","sources":["../../src/model/ModelRegistry.ts"],"names":[],"mappings":"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"}
@@ -17,6 +17,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
17
17
  __exportStar(require("./constants.cjs"), exports);
18
18
  __exportStar(require("./construction.cjs"), exports);
19
19
  __exportStar(require("./decorators.cjs"), exports);
20
+ __exportStar(require("./ModelRegistry.cjs"), exports); // registry before model on purpose
20
21
  __exportStar(require("./Model.cjs"), exports);
21
22
  __exportStar(require("./ModelErrorDefinition.cjs"), exports);
22
23
  __exportStar(require("./Builder.cjs"), exports);
@@ -1,6 +1,7 @@
1
1
  export * from "./constants";
2
2
  export * from "./construction";
3
3
  export * from "./decorators";
4
+ export * from "./ModelRegistry";
4
5
  export * from "./Model";
5
6
  export * from "./ModelErrorDefinition";
6
7
  export * from "./Builder";
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/model/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,kDAA4B;AAC5B,qDAA+B;AAC/B,mDAA6B;AAC7B,8CAAwB;AACxB,6DAAuC;AACvC,gDAA0B;AAC1B,8CAAwB;AACxB,mDAA6B;AAC7B,8CAAwB"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/model/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,kDAA4B;AAC5B,qDAA+B;AAC/B,mDAA6B;AAC7B,sDAAgC,CAAC,mCAAmC;AACpE,8CAAwB;AACxB,6DAAuC;AACvC,gDAA0B;AAC1B,8CAAwB;AACxB,mDAA6B;AAC7B,8CAAwB"}
@@ -7,13 +7,13 @@ exports.validateDecorators = validateDecorators;
7
7
  exports.validate = validate;
8
8
  const ModelErrorDefinition_1 = require("./ModelErrorDefinition.cjs");
9
9
  const constants_1 = require("./../utils/constants.cjs");
10
- const Model_1 = require("./Model.cjs");
11
10
  const Validation_1 = require("./../validation/Validation.cjs");
12
11
  const constants_2 = require("./../validation/Validators/constants.cjs");
13
12
  const PathProxy_1 = require("./../utils/PathProxy.cjs");
14
13
  const constants_3 = require("./../constants/index.cjs");
15
14
  const utils_1 = require("./utils.cjs");
16
15
  const decoration_1 = require("@decaf-ts/decoration");
16
+ const ModelRegistry_1 = require("./ModelRegistry.cjs");
17
17
  /**
18
18
  * Safely sets temporary metadata on an object
19
19
  */
@@ -51,7 +51,7 @@ function validateChildValue(prop, childValue, parentModel, allowedTypes, async,
51
51
  let err = undefined;
52
52
  let atLeastOneMatched = false;
53
53
  for (const allowedType of allowedTypes) {
54
- const Constr = Model_1.Model.get(allowedType);
54
+ const Constr = ModelRegistry_1.ModelRegistryManager.getRegistry().get(allowedType);
55
55
  if (!Constr) {
56
56
  err = new ModelErrorDefinition_1.ModelErrorDefinition({
57
57
  [prop]: {
@@ -162,7 +162,7 @@ function validateDecorators(model, prop, value, decorators, async, ...propsToIgn
162
162
  // const reserved = Object.values(ReservedModels).map((v) => v.toLowerCase()) as string[];
163
163
  const errs = values.map((childValue) => {
164
164
  // if (Model.isModel(v) && !reserved.includes(v) {
165
- if (Model_1.Model.isModel(childValue)) {
165
+ if (decoration_1.Metadata.isModel(childValue)) {
166
166
  const nestedPropsToIgnore = getChildNestedPropsToIgnore(prop, ...propsToIgnore);
167
167
  return validateChildValue(prop, childValue, model, types.flat(), !!async, ...nestedPropsToIgnore);
168
168
  // return getNestedValidationErrors(childValue, model, async);
@@ -287,13 +287,13 @@ function validate(model, async, ...propsToIgnore) {
287
287
  const propErrors = validateDecorators(model, propKey, propValue, decorators, async, ...propsToIgnore) || {};
288
288
  // Check for nested properties.
289
289
  // To prevent unnecessary processing, "propValue" must be defined
290
- const isConstr = Model_1.Model.isPropertyModel(model, propKey);
290
+ const isConstr = decoration_1.Metadata.isPropertyModel(model, propKey);
291
291
  const hasPropValue = propValue !== null && propValue !== undefined;
292
292
  if (isConstr && hasPropValue) {
293
293
  // 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.
294
294
  // We need to capture that and excempt it from throwing an error. This is being handled in the core Metadata.validationExceptions.
295
295
  const Constr = designTypes
296
- .map((d) => Model_1.Model.get(d.name || d))
296
+ .map((d) => ModelRegistry_1.ModelRegistryManager.getRegistry().get(d.name || d))
297
297
  .find((d) => !!d);
298
298
  const designTypeNames = designTypes.map((d) => {
299
299
  if (typeof d === "function")
@@ -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 +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/index";
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
  }