@decaf-ts/decorator-validation 1.10.4 → 1.11.0

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 (218) 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 +2 -1
  7. package/lib/esm/index.js +2 -1
  8. package/lib/esm/index.js.map +1 -1
  9. package/lib/esm/model/Builder.d.ts +84 -0
  10. package/lib/esm/model/Builder.js +395 -129
  11. package/lib/esm/model/Builder.js.map +1 -1
  12. package/lib/esm/model/Model.d.ts +21 -19
  13. package/lib/esm/model/Model.js +112 -105
  14. package/lib/esm/model/Model.js.map +1 -1
  15. package/lib/esm/model/constants.d.ts +8 -8
  16. package/lib/esm/model/constants.js +8 -9
  17. package/lib/esm/model/constants.js.map +1 -1
  18. package/lib/esm/model/decorators.d.ts +2 -12
  19. package/lib/esm/model/decorators.js +5 -39
  20. package/lib/esm/model/decorators.js.map +1 -1
  21. package/lib/esm/model/index.d.ts +1 -0
  22. package/lib/esm/model/index.js +1 -0
  23. package/lib/esm/model/index.js.map +1 -1
  24. package/lib/esm/model/types.d.ts +0 -12
  25. package/lib/esm/model/utils.d.ts +0 -3
  26. package/lib/esm/model/utils.js +0 -10
  27. package/lib/esm/model/utils.js.map +1 -1
  28. package/lib/esm/model/validation.d.ts +4 -37
  29. package/lib/esm/model/validation.js +30 -106
  30. package/lib/esm/model/validation.js.map +1 -1
  31. package/lib/esm/overrides/Metadata.d.ts +128 -0
  32. package/lib/esm/overrides/Metadata.js +2 -0
  33. package/lib/esm/overrides/Metadata.js.map +1 -0
  34. package/lib/esm/overrides/index.d.ts +3 -0
  35. package/lib/esm/overrides/index.js +4 -0
  36. package/lib/esm/overrides/index.js.map +1 -0
  37. package/lib/esm/overrides/overrides.d.ts +1 -0
  38. package/lib/esm/overrides/overrides.js +79 -0
  39. package/lib/esm/overrides/overrides.js.map +1 -0
  40. package/lib/esm/overrides/types.d.ts +9 -0
  41. package/lib/esm/overrides/types.js +2 -0
  42. package/lib/esm/overrides/types.js.map +1 -0
  43. package/lib/esm/types/validation.d.ts +4 -2
  44. package/lib/esm/utils/constants.d.ts +4 -18
  45. package/lib/esm/utils/constants.js +4 -17
  46. package/lib/esm/utils/constants.js.map +1 -1
  47. package/lib/esm/utils/dates.d.ts +0 -1
  48. package/lib/esm/utils/dates.js +0 -1
  49. package/lib/esm/utils/dates.js.map +1 -1
  50. package/lib/esm/utils/equality.d.ts +56 -0
  51. package/lib/esm/utils/equality.js +160 -0
  52. package/lib/esm/utils/equality.js.map +1 -0
  53. package/lib/esm/utils/index.d.ts +1 -2
  54. package/lib/esm/utils/index.js +1 -2
  55. package/lib/esm/utils/index.js.map +1 -1
  56. package/lib/esm/utils/registry.d.ts +1 -1
  57. package/lib/esm/utils/serialization.d.ts +2 -2
  58. package/lib/esm/utils/serialization.js +10 -2
  59. package/lib/esm/utils/serialization.js.map +1 -1
  60. package/lib/esm/utils/types.d.ts +0 -102
  61. package/lib/esm/validation/Validation.d.ts +2 -3
  62. package/lib/esm/validation/Validation.js +11 -6
  63. package/lib/esm/validation/Validation.js.map +1 -1
  64. package/lib/esm/validation/Validators/BaseValidator.js +7 -3
  65. package/lib/esm/validation/Validators/BaseValidator.js.map +1 -1
  66. package/lib/esm/validation/Validators/DiffValidator.js +1 -1
  67. package/lib/esm/validation/Validators/DiffValidator.js.map +1 -1
  68. package/lib/esm/validation/Validators/EqualsValidator.js +1 -1
  69. package/lib/esm/validation/Validators/EqualsValidator.js.map +1 -1
  70. package/lib/esm/validation/Validators/GreaterThanOrEqualValidator.js +1 -1
  71. package/lib/esm/validation/Validators/GreaterThanOrEqualValidator.js.map +1 -1
  72. package/lib/esm/validation/Validators/LessThanOrEqualValidator.js +1 -1
  73. package/lib/esm/validation/Validators/LessThanOrEqualValidator.js.map +1 -1
  74. package/lib/esm/validation/Validators/ListValidator.js +4 -4
  75. package/lib/esm/validation/Validators/ListValidator.js.map +1 -1
  76. package/lib/esm/validation/Validators/MaxLengthValidator.js +3 -2
  77. package/lib/esm/validation/Validators/MaxLengthValidator.js.map +1 -1
  78. package/lib/esm/validation/Validators/MaxValidator.js +1 -1
  79. package/lib/esm/validation/Validators/MaxValidator.js.map +1 -1
  80. package/lib/esm/validation/Validators/MinLengthValidator.js +3 -2
  81. package/lib/esm/validation/Validators/MinLengthValidator.js.map +1 -1
  82. package/lib/esm/validation/Validators/MinValidator.js +1 -1
  83. package/lib/esm/validation/Validators/MinValidator.js.map +1 -1
  84. package/lib/esm/validation/Validators/OptionValidator.d.ts +29 -0
  85. package/lib/esm/validation/Validators/OptionValidator.js +61 -0
  86. package/lib/esm/validation/Validators/OptionValidator.js.map +1 -0
  87. package/lib/esm/validation/Validators/TypeValidator.js +2 -2
  88. package/lib/esm/validation/Validators/TypeValidator.js.map +1 -1
  89. package/lib/esm/validation/Validators/constants.d.ts +2 -1
  90. package/lib/esm/validation/Validators/constants.js +3 -2
  91. package/lib/esm/validation/Validators/constants.js.map +1 -1
  92. package/lib/esm/validation/Validators/decorators.d.ts +1 -1
  93. package/lib/esm/validation/Validators/decorators.js +2 -2
  94. package/lib/esm/validation/Validators/decorators.js.map +1 -1
  95. package/lib/esm/validation/Validators/index.d.ts +1 -0
  96. package/lib/esm/validation/Validators/index.js +1 -0
  97. package/lib/esm/validation/Validators/index.js.map +1 -1
  98. package/lib/esm/validation/Validators/utils.d.ts +33 -0
  99. package/lib/esm/validation/Validators/utils.js +62 -0
  100. package/lib/esm/validation/Validators/utils.js.map +1 -1
  101. package/lib/esm/validation/decorators.d.ts +28 -17
  102. package/lib/esm/validation/decorators.js +86 -55
  103. package/lib/esm/validation/decorators.js.map +1 -1
  104. package/lib/esm/validation/types.d.ts +15 -5
  105. package/lib/esm/validation/types.js.map +1 -1
  106. package/lib/index.cjs +2 -1
  107. package/lib/index.d.ts +2 -1
  108. package/lib/index.js.map +1 -1
  109. package/lib/model/Builder.cjs +399 -128
  110. package/lib/model/Builder.d.ts +84 -0
  111. package/lib/model/Builder.js.map +1 -1
  112. package/lib/model/Model.cjs +114 -107
  113. package/lib/model/Model.d.ts +21 -19
  114. package/lib/model/Model.js.map +1 -1
  115. package/lib/model/constants.cjs +8 -9
  116. package/lib/model/constants.d.ts +8 -8
  117. package/lib/model/constants.js.map +1 -1
  118. package/lib/model/decorators.cjs +4 -39
  119. package/lib/model/decorators.d.ts +2 -12
  120. package/lib/model/decorators.js.map +1 -1
  121. package/lib/model/index.cjs +1 -0
  122. package/lib/model/index.d.ts +1 -0
  123. package/lib/model/index.js.map +1 -1
  124. package/lib/model/types.d.ts +0 -12
  125. package/lib/model/utils.cjs +0 -12
  126. package/lib/model/utils.d.ts +0 -3
  127. package/lib/model/utils.js.map +1 -1
  128. package/lib/model/validation.cjs +30 -108
  129. package/lib/model/validation.d.ts +4 -37
  130. package/lib/model/validation.js.map +1 -1
  131. package/lib/overrides/Metadata.cjs +3 -0
  132. package/lib/overrides/Metadata.d.ts +128 -0
  133. package/lib/overrides/Metadata.js.map +1 -0
  134. package/lib/overrides/index.cjs +20 -0
  135. package/lib/overrides/index.d.ts +3 -0
  136. package/lib/overrides/index.js.map +1 -0
  137. package/lib/overrides/overrides.cjs +81 -0
  138. package/lib/overrides/overrides.d.ts +1 -0
  139. package/lib/overrides/overrides.js.map +1 -0
  140. package/lib/overrides/types.cjs +3 -0
  141. package/lib/overrides/types.d.ts +9 -0
  142. package/lib/overrides/types.js.map +1 -0
  143. package/lib/types/validation.d.ts +4 -2
  144. package/lib/utils/constants.cjs +5 -18
  145. package/lib/utils/constants.d.ts +4 -18
  146. package/lib/utils/constants.js.map +1 -1
  147. package/lib/utils/dates.cjs +0 -1
  148. package/lib/utils/dates.d.ts +0 -1
  149. package/lib/utils/dates.js.map +1 -1
  150. package/lib/utils/equality.cjs +163 -0
  151. package/lib/utils/equality.d.ts +56 -0
  152. package/lib/utils/equality.js.map +1 -0
  153. package/lib/utils/index.cjs +1 -2
  154. package/lib/utils/index.d.ts +1 -2
  155. package/lib/utils/index.js.map +1 -1
  156. package/lib/utils/registry.d.ts +1 -1
  157. package/lib/utils/serialization.cjs +10 -2
  158. package/lib/utils/serialization.d.ts +2 -2
  159. package/lib/utils/serialization.js.map +1 -1
  160. package/lib/utils/types.d.ts +0 -102
  161. package/lib/validation/Validation.cjs +11 -6
  162. package/lib/validation/Validation.d.ts +2 -3
  163. package/lib/validation/Validation.js.map +1 -1
  164. package/lib/validation/Validators/BaseValidator.cjs +7 -3
  165. package/lib/validation/Validators/BaseValidator.js.map +1 -1
  166. package/lib/validation/Validators/DiffValidator.cjs +2 -2
  167. package/lib/validation/Validators/DiffValidator.js.map +1 -1
  168. package/lib/validation/Validators/EqualsValidator.cjs +2 -2
  169. package/lib/validation/Validators/EqualsValidator.js.map +1 -1
  170. package/lib/validation/Validators/GreaterThanOrEqualValidator.cjs +2 -2
  171. package/lib/validation/Validators/GreaterThanOrEqualValidator.js.map +1 -1
  172. package/lib/validation/Validators/LessThanOrEqualValidator.cjs +2 -2
  173. package/lib/validation/Validators/LessThanOrEqualValidator.js.map +1 -1
  174. package/lib/validation/Validators/ListValidator.cjs +4 -4
  175. package/lib/validation/Validators/ListValidator.js.map +1 -1
  176. package/lib/validation/Validators/MaxLengthValidator.cjs +3 -2
  177. package/lib/validation/Validators/MaxLengthValidator.js.map +1 -1
  178. package/lib/validation/Validators/MaxValidator.cjs +1 -1
  179. package/lib/validation/Validators/MaxValidator.js.map +1 -1
  180. package/lib/validation/Validators/MinLengthValidator.cjs +3 -2
  181. package/lib/validation/Validators/MinLengthValidator.js.map +1 -1
  182. package/lib/validation/Validators/MinValidator.cjs +1 -1
  183. package/lib/validation/Validators/MinValidator.js.map +1 -1
  184. package/lib/validation/Validators/OptionValidator.cjs +64 -0
  185. package/lib/validation/Validators/OptionValidator.d.ts +29 -0
  186. package/lib/validation/Validators/OptionValidator.js.map +1 -0
  187. package/lib/validation/Validators/TypeValidator.cjs +2 -2
  188. package/lib/validation/Validators/TypeValidator.js.map +1 -1
  189. package/lib/validation/Validators/constants.cjs +5 -4
  190. package/lib/validation/Validators/constants.d.ts +2 -1
  191. package/lib/validation/Validators/constants.js.map +1 -1
  192. package/lib/validation/Validators/decorators.cjs +3 -3
  193. package/lib/validation/Validators/decorators.d.ts +1 -1
  194. package/lib/validation/Validators/decorators.js.map +1 -1
  195. package/lib/validation/Validators/index.cjs +1 -0
  196. package/lib/validation/Validators/index.d.ts +1 -0
  197. package/lib/validation/Validators/index.js.map +1 -1
  198. package/lib/validation/Validators/utils.cjs +66 -0
  199. package/lib/validation/Validators/utils.d.ts +33 -0
  200. package/lib/validation/Validators/utils.js.map +1 -1
  201. package/lib/validation/decorators.cjs +102 -69
  202. package/lib/validation/decorators.d.ts +28 -17
  203. package/lib/validation/decorators.js.map +1 -1
  204. package/lib/validation/types.d.ts +15 -5
  205. package/lib/validation/types.js.map +1 -1
  206. package/package.json +2 -3
  207. package/lib/esm/utils/Decoration.d.ts +0 -135
  208. package/lib/esm/utils/Decoration.js +0 -227
  209. package/lib/esm/utils/Decoration.js.map +0 -1
  210. package/lib/esm/utils/decorators.d.ts +0 -38
  211. package/lib/esm/utils/decorators.js +0 -64
  212. package/lib/esm/utils/decorators.js.map +0 -1
  213. package/lib/utils/Decoration.cjs +0 -231
  214. package/lib/utils/Decoration.d.ts +0 -135
  215. package/lib/utils/Decoration.js.map +0 -1
  216. package/lib/utils/decorators.cjs +0 -68
  217. package/lib/utils/decorators.d.ts +0 -38
  218. package/lib/utils/decorators.js.map +0 -1
@@ -3,6 +3,7 @@ export * from "./construction.js";
3
3
  export * from "./decorators.js";
4
4
  export * from "./Model.js";
5
5
  export * from "./ModelErrorDefinition.js";
6
+ export * from "./Builder.js";
6
7
  export * from "./types.js";
7
8
  export * from "./validation.js";
8
9
  export * from "./utils.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,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,2BAAwB;AACxB,0CAAuC;AACvC,6BAA0B;AAC1B,2BAAwB;AACxB,gCAA6B;AAC7B,2BAAwB"}
@@ -21,18 +21,6 @@ export type ModelBuilderFunction = <T extends Model>(self: T, obj?: T | Record<s
21
21
  * @see ModelConstructor
22
22
  */
23
23
  export type ModelArg<T> = T | Partial<T> | Record<string, any>;
24
- /**
25
- * @description Generic type for class constructor functions
26
- * @summary Definition of a Class Constructor that can create instances of a specified type
27
- * @template T
28
- * @param {any[]} [args] - Constructor arguments
29
- * @return {T} - An instance of the class
30
- * @typedef Constructor
31
- * @memberOf module:decorator-validation
32
- */
33
- export type Constructor<T> = {
34
- new (...args: any[]): T;
35
- };
36
24
  /**
37
25
  * @description Specialized constructor type for Model classes
38
26
  * @summary Definition of a Model Constructor that creates instances of Model subclasses
@@ -1,7 +1,4 @@
1
1
  import { ConditionalAsync } from "../types";
2
- import { Model } from "./Model";
3
- export declare function getModelKey(str: string): string;
4
- export declare function getMetadata<M extends Model>(model: M): any;
5
2
  /**
6
3
  * Wraps a value in a Promise if the `async` flag is true.
7
4
  *
@@ -1,13 +1,3 @@
1
- import { ModelKeys } from "./../utils/constants.js";
2
- export function getModelKey(str) {
3
- return ModelKeys.REFLECT + str;
4
- }
5
- export function getMetadata(model) {
6
- const metadata = Reflect.getMetadata(getModelKey(ModelKeys.MODEL), model.constructor);
7
- if (!metadata)
8
- throw new Error("could not find metadata for provided " + model.constructor.name);
9
- return metadata;
10
- }
11
1
  /**
12
2
  * Wraps a value in a Promise if the `async` flag is true.
13
3
  *
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../src/model/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,gCAA2B;AAI/C,MAAM,UAAU,WAAW,CAAC,GAAW;IACrC,OAAO,SAAS,CAAC,OAAO,GAAG,GAAG,CAAC;AACjC,CAAC;AAED,MAAM,UAAU,WAAW,CAAkB,KAAQ;IACnD,MAAM,QAAQ,GAAG,OAAO,CAAC,WAAW,CAClC,WAAW,CAAC,SAAS,CAAC,KAAK,CAAC,EAC5B,KAAK,CAAC,WAAW,CAClB,CAAC;IACF,IAAI,CAAC,QAAQ;QACX,MAAM,IAAI,KAAK,CACb,uCAAuC,GAAG,KAAK,CAAC,WAAW,CAAC,IAAI,CACjE,CAAC;IACJ,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,UAAU,oBAAoB,CAClC,KAAQ,EACR,KAAa;IAEb,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAA+B,CAAC;AAChF,CAAC"}
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../src/model/utils.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;GAUG;AACH,MAAM,UAAU,oBAAoB,CAClC,KAAQ,EACR,KAAa;IAEb,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAA+B,CAAC;AAChF,CAAC"}
@@ -1,41 +1,8 @@
1
1
  import { ModelErrorDefinition } from "./ModelErrorDefinition";
2
2
  import { Model } from "./Model";
3
- import { ValidationPropertyDecoratorDefinition } from "../validation";
4
- import { ConditionalAsync, DecoratorMetadataAsync } from "../types";
5
- /**
6
- * Retrieves the validation metadata decorators associated with a specific property of a model,
7
- * using the reflective metadata key.
8
- *
9
- * @param model - The model instance or class containing the decorated property.
10
- * @param {string} prop - The name of the property whose decorators should be retrieved.
11
- * @param {string} reflectKey - The metadata key used to retrieve the decorators.
12
- * Defaults to `ValidationKeys.REFLECT`.
13
- *
14
- * @returns The validation decorators applied to the property
15
- */
16
- export declare function getValidationDecorators(model: Record<string, any>, prop: string, reflectKey?: string): ValidationPropertyDecoratorDefinition;
17
- /**
18
- * @description
19
- * Retrieves all validatable property decorators from a given model, excluding specified properties.
20
- *
21
- * @summary
22
- * Iterates through the own enumerable properties of a model instance, filtering out any properties
23
- * listed in the `propsToIgnore` array. For each remaining property, it checks whether validation
24
- * decorators are present using `getValidationDecorators`, and if so, collects them in the result array.
25
- *
26
- * @template M - A generic parameter extending the `Model` class, representing the model type being inspected.
27
- *
28
- * @param {M} model - An instance of a class extending `Model` from which validatable properties will be extracted.
29
- * @param {string[]} propsToIgnore - An array of property names that should be excluded from validation inspection.
30
- *
31
- * @return {ValidationPropertyDecoratorDefinition[]} An array of validation decorator definitions
32
- * associated with the model's properties, excluding those listed in `propsToIgnore`.
33
- *
34
- * @function getValidatableProperties
35
- */
36
- export declare function getValidatableProperties<M extends Model>(model: M, propsToIgnore: string[]): ValidationPropertyDecoratorDefinition[];
3
+ import { ConditionalAsync } from "../types";
37
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>;
38
- export declare function validateDecorator<M extends Model, Async extends boolean = false>(model: M, value: any, decorator: DecoratorMetadataAsync, async?: Async): ConditionalAsync<Async, string | undefined>;
5
+ export declare function validateDecorator<M extends Model, Async extends boolean = false>(model: M, value: any, decorator: any, async?: Async): ConditionalAsync<Async, string | undefined>;
39
6
  /**
40
7
  * @description
41
8
  * Executes validation logic for a set of decorators applied to a model's property, handling both
@@ -54,7 +21,7 @@ export declare function validateDecorator<M extends Model, Async extends boolean
54
21
  * @param {M} model - The model instance that the validation is associated with.
55
22
  * @param {string} prop - The model field name
56
23
  * @param {any} value - The value to be validated against the provided decorators.
57
- * @param {DecoratorMetadataAsync[]} decorators - An array of metadata objects representing validation decorators.
24
+ * @param {DecoratorMetadataAsync} decorators - An object of metadata representing validation decorators.
58
25
  * @param {Async} [async] - Optional flag indicating whether validation should be performed asynchronously.
59
26
  *
60
27
  * @return {ConditionalAsync<Async, Record<string, string>> | undefined}
@@ -63,7 +30,7 @@ export declare function validateDecorator<M extends Model, Async extends boolean
63
30
  *
64
31
  * @function validateDecorators
65
32
  */
66
- export declare function validateDecorators<M extends Model, Async extends boolean = false>(model: M, prop: string, value: any, decorators: DecoratorMetadataAsync[], async?: Async, ...propsToIgnore: string[]): ConditionalAsync<Async, Record<string, string> | undefined>;
33
+ export declare function validateDecorators<M extends Model, Async extends boolean = false>(model: M, prop: string, value: any, decorators: any, async?: Async, ...propsToIgnore: string[]): ConditionalAsync<Async, Record<string, string> | undefined>;
67
34
  /**
68
35
  * @function validate
69
36
  * @template M
@@ -5,53 +5,8 @@ import { Validation } from "./../validation/Validation.js";
5
5
  import { ValidationKeys } from "./../validation/Validators/constants.js";
6
6
  import { PathProxyEngine } from "./../utils/PathProxy.js";
7
7
  import { ASYNC_META_KEY, VALIDATION_PARENT_KEY } from "./../constants/index.js";
8
- import { Reflection } from "@decaf-ts/reflection";
9
8
  import { toConditionalPromise } from "./utils.js";
10
- /**
11
- * Retrieves the validation metadata decorators associated with a specific property of a model,
12
- * using the reflective metadata key.
13
- *
14
- * @param model - The model instance or class containing the decorated property.
15
- * @param {string} prop - The name of the property whose decorators should be retrieved.
16
- * @param {string} reflectKey - The metadata key used to retrieve the decorators.
17
- * Defaults to `ValidationKeys.REFLECT`.
18
- *
19
- * @returns The validation decorators applied to the property
20
- */
21
- export function getValidationDecorators(model, prop, reflectKey = ValidationKeys.REFLECT) {
22
- return Reflection.getPropertyDecorators(reflectKey, model, prop);
23
- }
24
- /**
25
- * @description
26
- * Retrieves all validatable property decorators from a given model, excluding specified properties.
27
- *
28
- * @summary
29
- * Iterates through the own enumerable properties of a model instance, filtering out any properties
30
- * listed in the `propsToIgnore` array. For each remaining property, it checks whether validation
31
- * decorators are present using `getValidationDecorators`, and if so, collects them in the result array.
32
- *
33
- * @template M - A generic parameter extending the `Model` class, representing the model type being inspected.
34
- *
35
- * @param {M} model - An instance of a class extending `Model` from which validatable properties will be extracted.
36
- * @param {string[]} propsToIgnore - An array of property names that should be excluded from validation inspection.
37
- *
38
- * @return {ValidationPropertyDecoratorDefinition[]} An array of validation decorator definitions
39
- * associated with the model's properties, excluding those listed in `propsToIgnore`.
40
- *
41
- * @function getValidatableProperties
42
- */
43
- export function getValidatableProperties(model, propsToIgnore) {
44
- const decoratedProperties = [];
45
- for (const prop in model) {
46
- if (Object.prototype.hasOwnProperty.call(model, prop) &&
47
- !propsToIgnore.includes(prop)) {
48
- const dec = getValidationDecorators(model, prop);
49
- if (dec)
50
- decoratedProperties.push(dec);
51
- }
52
- }
53
- return decoratedProperties;
54
- }
9
+ import { Metadata } from "@decaf-ts/decoration";
55
10
  /**
56
11
  * Safely sets temporary metadata on an object
57
12
  */
@@ -113,22 +68,21 @@ export function validateChildValue(prop, childValue, parentModel, allowedTypes,
113
68
  }));
114
69
  }
115
70
  export function validateDecorator(model, value, decorator, async) {
71
+ // throw new Error("validateDecorator is not implemented");
116
72
  const validator = Validation.get(decorator.key);
117
73
  if (!validator) {
118
74
  throw new Error(`Missing validator for ${decorator.key}`);
119
75
  }
120
76
  // skip async decorators if validateDecorators is called synchronously (async = false)
121
- if (!async && decorator.props.async)
77
+ if (!async && decorator.async)
122
78
  return undefined;
123
- const decoratorProps = decorator.key === ModelKeys.TYPE
124
- ? [decorator.props]
125
- : decorator.props || {};
79
+ const decoratorProps = decorator.key === ModelKeys.TYPE ? [decorator] : decorator || {};
126
80
  const context = PathProxyEngine.create(model, {
127
81
  ignoreUndefined: true,
128
82
  ignoreNull: true,
129
83
  });
130
84
  const validatorOptions = decorator.key === ModelKeys.TYPE
131
- ? { type: decoratorProps[0].name }
85
+ ? decoratorProps[0]
132
86
  : decoratorProps;
133
87
  const maybeAsyncErrors = validator.hasErrors(value, validatorOptions, context);
134
88
  return toConditionalPromise(maybeAsyncErrors, async);
@@ -151,7 +105,7 @@ export function validateDecorator(model, value, decorator, async) {
151
105
  * @param {M} model - The model instance that the validation is associated with.
152
106
  * @param {string} prop - The model field name
153
107
  * @param {any} value - The value to be validated against the provided decorators.
154
- * @param {DecoratorMetadataAsync[]} decorators - An array of metadata objects representing validation decorators.
108
+ * @param {DecoratorMetadataAsync} decorators - An object of metadata representing validation decorators.
155
109
  * @param {Async} [async] - Optional flag indicating whether validation should be performed asynchronously.
156
110
  *
157
111
  * @return {ConditionalAsync<Async, Record<string, string>> | undefined}
@@ -162,9 +116,10 @@ export function validateDecorator(model, value, decorator, async) {
162
116
  */
163
117
  export function validateDecorators(model, prop, value, decorators, async, ...propsToIgnore) {
164
118
  const result = {};
165
- for (const decorator of decorators) {
119
+ for (const decoratorKey in decorators) {
120
+ const decorator = { ...decorators[decoratorKey], key: decoratorKey };
166
121
  // skip async decorators if validateDecorators is called synchronously (async = false)
167
- if (!async && decorator.props.async)
122
+ if (!async && decorator.async)
168
123
  continue;
169
124
  let validationErrors = validateDecorator(model, value, decorator, async);
170
125
  /*
@@ -172,12 +127,12 @@ export function validateDecorators(model, prop, value, decorators, async, ...pro
172
127
  When 'async' is true, the 'err' will always be a pending promise initially,
173
128
  so the '!err' check will evaluate to false (even if the promise later resolves with no errors)
174
129
  */
175
- if (decorator.key === ValidationKeys.LIST && (!validationErrors || async)) {
130
+ if (decoratorKey === ValidationKeys.LIST && (!validationErrors || async)) {
176
131
  const values = value instanceof Set ? [...value] : value;
177
132
  if (values && values.length > 0) {
178
- let types = (decorator.props.class ||
179
- decorator.props.clazz ||
180
- decorator.props.customTypes);
133
+ let types = (decorator.class ||
134
+ decorator.clazz ||
135
+ decorator.customTypes);
181
136
  types = (Array.isArray(types) ? types : [types]).map((e) => {
182
137
  e = typeof e === "function" && !e.name ? e() : e;
183
138
  return e.name ? e.name : e;
@@ -206,7 +161,7 @@ export function validateDecorators(model, prop, value, decorators, async, ...pro
206
161
  }
207
162
  }
208
163
  }
209
- const name = decorator.key === ModelKeys.TYPE ? ValidationKeys.TYPE : decorator.key;
164
+ const name = decoratorKey === ModelKeys.TYPE ? ValidationKeys.TYPE : decoratorKey;
210
165
  if (validationErrors)
211
166
  result[name] = validationErrors;
212
167
  }
@@ -279,42 +234,21 @@ export function validateDecorators(model, prop, value, decorators, async, ...pro
279
234
  * validate-->>Caller: return ModelErrorDefinition | undefined
280
235
  */
281
236
  export function validate(model, async, ...propsToIgnore) {
282
- const decoratedProperties = getValidatableProperties(model, propsToIgnore);
237
+ // throw new Error("validate is not implemented");
238
+ const decoratedProperties = Metadata.validatableProperties(model.constructor, ...propsToIgnore);
283
239
  const result = {};
284
240
  const nestedErrors = {};
285
- for (const { prop, decorators } of decoratedProperties) {
241
+ for (const prop of decoratedProperties) {
286
242
  const propKey = String(prop);
287
- let propValue = model[prop];
288
- if (!decorators?.length)
243
+ const propValue = model[prop];
244
+ const decorators = Metadata.validationFor(model.constructor, prop) || {};
245
+ const { designTypes, designType } = Metadata.getPropDesignTypes(model.constructor, prop);
246
+ if (!designTypes)
289
247
  continue;
290
- // Get the default type validator
291
- const priority = [ValidationKeys.TYPE, ModelKeys.TYPE];
292
- const designTypeDec = priority
293
- .map((key) => decorators.find((d) => d.key === key))
294
- .find(Boolean);
295
- // Ensures that only one type decorator remains.
296
- if (designTypeDec?.key === ValidationKeys.TYPE) {
297
- decorators.splice(0, decorators.length, ...decorators.filter((d) => d.key !== ModelKeys.TYPE));
298
- }
299
- if (!designTypeDec)
300
- continue;
301
- const designType = designTypeDec.props.class ||
302
- designTypeDec.props.clazz ||
303
- designTypeDec.props.customTypes ||
304
- designTypeDec.props.name;
305
- // TS emits "Object" as design:type for unions (string | number) and intersections (A & B).
306
- // Since this metadata is ambiguous for validation, skip design:type checks in these cases.
307
- // To enforce design:type validation explicitly, the @type validator can be used.
308
- if (designTypeDec.key === ModelKeys.TYPE && designType === "Object")
309
- decorators.shift();
310
- const designTypes = (Array.isArray(designType) ? designType : [designType]).map((e) => {
311
- e = typeof e === "function" && !e.name ? e() : e;
312
- return e.name ? e.name : e;
313
- });
314
248
  // Handle array or Set types and enforce the presence of @list decorator
315
- // if ([Array.name, Set.name].includes(designType)) {}
316
- if (designTypes.some((t) => [Array.name, Set.name].includes(t))) {
317
- if (!decorators.some((d) => d.key === ValidationKeys.LIST)) {
249
+ if (designTypes.some((t) => [Array.name, Set.name].includes(t.name))) {
250
+ if (!decorators ||
251
+ !Object.keys(decorators).includes(ValidationKeys.LIST)) {
318
252
  result[propKey] = {
319
253
  [ValidationKeys.TYPE]: `Array or Set property '${propKey}' requires a @list decorator`,
320
254
  };
@@ -327,13 +261,6 @@ export function validate(model, async, ...propsToIgnore) {
327
261
  };
328
262
  continue;
329
263
  }
330
- // Remove design:type decorator, since @list decorator already ensures type
331
- for (let i = decorators.length - 1; i >= 0; i--) {
332
- if (decorators[i].key === ModelKeys.TYPE) {
333
- decorators.splice(i, 1);
334
- }
335
- }
336
- propValue = propValue instanceof Set ? [...propValue] : propValue;
337
264
  }
338
265
  const propErrors = validateDecorators(model, propKey, propValue, decorators, async, ...propsToIgnore) || {};
339
266
  // Check for nested properties.
@@ -341,16 +268,13 @@ export function validate(model, async, ...propsToIgnore) {
341
268
  // let nestedErrors: Record<string, any> = {};
342
269
  const isConstr = Model.isPropertyModel(model, propKey);
343
270
  const hasPropValue = propValue !== null && propValue !== undefined;
344
- if (isConstr && hasPropValue) {
271
+ const isModelInstance = hasPropValue && Model.isModel(propValue);
272
+ if (isConstr && hasPropValue && isModelInstance) {
345
273
  const instance = propValue;
346
- const isInvalidModel = typeof instance !== "object" ||
347
- typeof instance.hasErrors !== "function";
348
- if (isInvalidModel) {
349
- // propErrors[ValidationKeys.TYPE] = "Model should be validatable but it's not.";
350
- console.warn("Model should be validatable but it's not.");
351
- }
352
- else {
353
- const Constr = (Array.isArray(designType) ? designType : [designType])
274
+ // 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.
275
+ // We need to capture that and excempt it from throwing an error
276
+ if (Model["shouldValidateNestedHandler"](model, propKey)) {
277
+ const Constr = (Array.isArray(designType) ? designTypes : [designType])
354
278
  .map((d) => {
355
279
  if (typeof d === "function" && !d.name)
356
280
  d = d();
@@ -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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"}
@@ -0,0 +1,128 @@
1
+ import { Model } from "../model/Model";
2
+ import { Constructor } from "@decaf-ts/decoration";
3
+ import { designTypeReturn, ExtendedMetadata } from "./types";
4
+ import { ValidationMetadata } from "../validation/index";
5
+ declare module "@decaf-ts/decoration" {
6
+ namespace Metadata {
7
+ /**
8
+ * @description Retrieves validation metadata for a specific property of a model
9
+ * @summary Fetches validation rules and constraints that were applied to a property
10
+ * via decorators. The optional key parameter allows drilling down to specific
11
+ * validation types (e.g., 'required', 'min', 'max').
12
+ *
13
+ * @template M - The model type extending from Model
14
+ * @param {Constructor<M>} model - The constructor of the target model class
15
+ * @param {keyof M} property - The property name to retrieve validation for
16
+ * @param {string} [key] - Optional specific validation key to retrieve (e.g., 'required', 'pattern')
17
+ * @return {any} The validation metadata object or value at the specified key
18
+ *
19
+ * @example
20
+ * class User extends Model {
21
+ * @required()
22
+ * @maxLength(100)
23
+ * name!: string;
24
+ * }
25
+ *
26
+ * // Get all validation metadata for 'name'
27
+ * const validations = Metadata.validationFor(User, 'name');
28
+ *
29
+ * // Get specific validation metadata
30
+ * const required = Metadata.validationFor(User, 'name', 'required');
31
+ */
32
+ function validationFor<M extends Model, P extends keyof M = keyof M, K extends string = string>(this: Metadata, model: Constructor<M>, property?: keyof M, key?: string): (K extends string ? ValidationMetadata : P extends keyof M ? Record<string, ValidationMetadata> : Record<keyof M, Record<string, ValidationMetadata>>) | undefined;
33
+ /**
34
+ * @description Retrieves all validatable for a model
35
+ * @param model
36
+ */
37
+ function validatableProperties<M extends Model>(model: Constructor<M>, ...propsToIgnore: string[]): string[];
38
+ /**
39
+ * @description Retrieves extended metadata for a model or a specific key within it
40
+ * @summary When called with a constructor only, returns the entire metadata object
41
+ * associated with the model, including validation rules, property types, relationships,
42
+ * and other decorator-applied metadata. This override extends the base Metadata.get
43
+ * method with type-safe support for ExtendedMetadata.
44
+ *
45
+ * @template M - The model type
46
+ * @template META - The extended metadata type, defaults to ExtendedMetadata<M>
47
+ * @param {Constructor<M>} model - The target constructor used to locate the metadata record
48
+ * @param {keyof M} prop - Optional property of the model.
49
+ * @return {META|undefined} The complete metadata object for the model, or undefined if no metadata exists
50
+ *
51
+ * @example
52
+ * class Article extends Model {
53
+ * @pk()
54
+ * @type(Number)
55
+ * id!: number;
56
+ *
57
+ * @required()
58
+ * @maxLength(200)
59
+ * title!: string;
60
+ *
61
+ * @oneToMany(() => Comment, { update: true, delete: true }, true)
62
+ * comments!: Comment[];
63
+ * }
64
+ *
65
+ * // Get all metadata for the Article model
66
+ * const metadata = Metadata.get<Article>(Article);
67
+ * // metadata contains:
68
+ * // - property definitions
69
+ * // - validation rules
70
+ * // - relationship mappings
71
+ * // - primary key information
72
+ * // - column mappings
73
+ *
74
+ * @remarks
75
+ * The @ts-expect-error directive is used because this declaration intentionally
76
+ * overrides the signature from the base module to provide enhanced type information
77
+ * specific to the decorator-validation system.
78
+ */
79
+ function get<M, META extends ExtendedMetadata<M> = ExtendedMetadata<M>>(model: Constructor<M>, prop?: keyof M): META | undefined;
80
+ /**
81
+ * @description Retrieves the original constructor name for a model
82
+ * @summary Fetches the original constructor name for a model from the metadata of a model.
83
+ *
84
+ * @template M - The model type extending from Model
85
+ * @param {Constructor<M>} model - The constructor of the target model class
86
+ * @return {string} The metadata object or value
87
+ *
88
+ * @example
89
+ * class User extends Model {
90
+ *
91
+ * // Get the constructor name for 'User'
92
+ * const constName = Metadata.modelName(User);
93
+ */
94
+ function modelName<M>(model: Constructor<M>): string;
95
+ /**
96
+ * @description Retrieves all allowed types for a model or a property
97
+ * @summary Retrieves all allowed types for a model or a property from it's metadata.
98
+ *
99
+ * @template M - The model type extending from Model
100
+ * @param {Constructor<M>} model - The constructor of the target model class
101
+ * @param {keyof M} property - The property name to retrieve validation for
102
+ * @return {any[]} An array of the allowed types
103
+ *
104
+ * @example
105
+ * class User extends Model {
106
+ *
107
+ * // Get all validation metadata for 'User'
108
+ * const allowedTypes = Metadata.meallowedTypestadata(User);
109
+ */
110
+ function allowedTypes<M>(model: Constructor<M>, property?: keyof M): any[];
111
+ /**
112
+ * @description Retrieves all allowed types for a model or a property
113
+ * @summary Retrieves all allowed types for a model or a property from it's metadata.
114
+ *
115
+ * @template model - The model type extending from Model
116
+ * @param {Constructor<M>} model - The constructor of the target model class
117
+ * @param {keyof M} property - The property name to retrieve validation for
118
+ * @return {designTypeReturn} An object of the designtypes
119
+ *
120
+ * @example
121
+ * class User extends Model {
122
+ *
123
+ * // Get the designtypes for property name
124
+ * const { designTypes, designType } = Metadata.getPropDesignTypes(User.constructor, 'name');
125
+ */
126
+ function getPropDesignTypes<M>(model: Constructor<M>, property: keyof M): designTypeReturn;
127
+ }
128
+ }
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=Metadata.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Metadata.js","sourceRoot":"","sources":["../../../src/overrides/Metadata.ts"],"names":[],"mappings":""}
@@ -0,0 +1,3 @@
1
+ export * from "./Metadata";
2
+ export * from "./overrides";
3
+ export * from "./types";
@@ -0,0 +1,4 @@
1
+ export * from "./Metadata.js";
2
+ export * from "./overrides.js";
3
+ export * from "./types.js";
4
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/overrides/index.ts"],"names":[],"mappings":"AAAA,8BAA2B;AAC3B,+BAA4B;AAC5B,2BAAwB"}
@@ -0,0 +1 @@
1
+ import "./Metadata";
@@ -0,0 +1,79 @@
1
+ import "./Metadata.js";
2
+ import { Metadata } from "@decaf-ts/decoration";
3
+ import { Model } from "./../model/Model.js";
4
+ import { DEFAULT_ERROR_MESSAGES, ValidationKeys, } from "./../validation/Validators/constants.js";
5
+ import { ReservedModels } from "./../model/constants.js";
6
+ Metadata.validationFor = function (model, property, key) {
7
+ const meta = Metadata.get(model);
8
+ if (!meta)
9
+ return undefined;
10
+ if (!property)
11
+ return meta.validation;
12
+ if (!meta.validation)
13
+ return undefined;
14
+ if (!meta.validation[ValidationKeys.TYPE]) {
15
+ const { designTypes } = Metadata.getPropDesignTypes(model, property);
16
+ // Adds by default the type validation
17
+ // If the designtypes is object, we exclude it. It causes problems with pks.
18
+ if (meta.validation[property] &&
19
+ designTypes?.length &&
20
+ designTypes[0] !== ReservedModels.OBJECT)
21
+ meta.validation[property][ValidationKeys.TYPE] = {
22
+ customTypes: designTypes,
23
+ message: DEFAULT_ERROR_MESSAGES.TYPE,
24
+ description: "defines the accepted types for the attribute",
25
+ async: false,
26
+ };
27
+ }
28
+ if (!key) {
29
+ const validationsForProp = meta.validation[property];
30
+ return validationsForProp;
31
+ }
32
+ const propValidation = meta.validation[property];
33
+ if (!propValidation)
34
+ return undefined;
35
+ return propValidation[key];
36
+ }.bind(Metadata);
37
+ Metadata.modelName = function (model) {
38
+ const constr = Metadata.constr(model);
39
+ return constr ? constr.name : model.name;
40
+ }.bind(Metadata);
41
+ Metadata.validatableProperties = function (model, ...propsToIgnore) {
42
+ const metavalidation = Metadata.validationFor(model);
43
+ const keys = metavalidation ? Object.keys(metavalidation) : [];
44
+ const props = [...new Set([...Model.getAttributes(model), ...keys])];
45
+ return props.filter((k) => !propsToIgnore || !propsToIgnore?.includes(k));
46
+ }.bind(Metadata);
47
+ Metadata.allowedTypes = function (model, prop) {
48
+ const designType = Metadata.type(model, prop);
49
+ if (!designType)
50
+ throw new Error(`No metadata found for property ${String(prop)}`);
51
+ const validation = Metadata.validationFor(model, prop);
52
+ // TODO: CHeck why some are not iterable
53
+ return validation &&
54
+ validation[ValidationKeys.TYPE] &&
55
+ typeof validation[ValidationKeys.TYPE]?.customTypes[Symbol.iterator] ===
56
+ "function"
57
+ ? [...validation[ValidationKeys.TYPE].customTypes]
58
+ : [designType];
59
+ }.bind(Metadata);
60
+ Metadata.getPropDesignTypes = function (model, prop) {
61
+ const metadata = Metadata.get(model);
62
+ const designTypeMeta = Metadata.type(model, prop);
63
+ const validation = metadata?.[ValidationKeys.REFLECT]?.[prop];
64
+ if (!designTypeMeta && (!validation || !validation[ValidationKeys.TYPE]))
65
+ return {};
66
+ const propTypes = validation && validation[ValidationKeys.TYPE]
67
+ ? [validation[ValidationKeys.TYPE].customTypes]
68
+ : [designTypeMeta];
69
+ if (!propTypes?.length)
70
+ return {};
71
+ const designTypeDec = propTypes[0];
72
+ const designType = designTypeDec.class ||
73
+ designTypeDec.clazz ||
74
+ designTypeDec.customTypes ||
75
+ designTypeDec;
76
+ const designTypes = (Array.isArray(designType) ? designType : [designType]).map((e) => (e = typeof e === "function" && !e.name ? e() : e));
77
+ return { designTypes, designType };
78
+ }.bind(Metadata);
79
+ //# sourceMappingURL=overrides.js.map