@decaf-ts/decorator-validation 1.10.5 → 1.11.1
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 +2 -1
- package/lib/esm/index.js +2 -1
- package/lib/esm/index.js.map +1 -1
- package/lib/esm/model/Builder.d.ts +84 -0
- package/lib/esm/model/Builder.js +395 -129
- package/lib/esm/model/Builder.js.map +1 -1
- package/lib/esm/model/Model.d.ts +21 -19
- package/lib/esm/model/Model.js +112 -105
- package/lib/esm/model/Model.js.map +1 -1
- package/lib/esm/model/constants.d.ts +8 -8
- package/lib/esm/model/constants.js +8 -9
- package/lib/esm/model/constants.js.map +1 -1
- package/lib/esm/model/decorators.d.ts +2 -12
- package/lib/esm/model/decorators.js +5 -39
- package/lib/esm/model/decorators.js.map +1 -1
- 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/types.d.ts +9 -12
- package/lib/esm/model/utils.d.ts +0 -3
- package/lib/esm/model/utils.js +0 -10
- package/lib/esm/model/utils.js.map +1 -1
- package/lib/esm/model/validation.d.ts +4 -37
- package/lib/esm/model/validation.js +30 -106
- package/lib/esm/model/validation.js.map +1 -1
- package/lib/esm/overrides/Metadata.d.ts +128 -0
- package/lib/esm/overrides/Metadata.js +2 -0
- package/lib/esm/overrides/Metadata.js.map +1 -0
- package/lib/esm/overrides/index.d.ts +3 -0
- package/lib/esm/overrides/index.js +4 -0
- package/lib/esm/overrides/index.js.map +1 -0
- package/lib/esm/overrides/overrides.d.ts +1 -0
- package/lib/esm/overrides/overrides.js +79 -0
- package/lib/esm/overrides/overrides.js.map +1 -0
- package/lib/esm/overrides/types.d.ts +9 -0
- package/lib/esm/overrides/types.js +2 -0
- package/lib/esm/overrides/types.js.map +1 -0
- package/lib/esm/types/validation.d.ts +4 -2
- package/lib/esm/utils/constants.d.ts +4 -18
- package/lib/esm/utils/constants.js +4 -17
- package/lib/esm/utils/constants.js.map +1 -1
- package/lib/esm/utils/dates.d.ts +0 -1
- package/lib/esm/utils/dates.js +0 -1
- package/lib/esm/utils/dates.js.map +1 -1
- package/lib/esm/utils/equality.d.ts +56 -0
- package/lib/esm/utils/equality.js +160 -0
- package/lib/esm/utils/equality.js.map +1 -0
- package/lib/esm/utils/index.d.ts +1 -2
- package/lib/esm/utils/index.js +1 -2
- package/lib/esm/utils/index.js.map +1 -1
- package/lib/esm/utils/registry.d.ts +1 -1
- package/lib/esm/utils/serialization.d.ts +2 -2
- package/lib/esm/utils/serialization.js +10 -2
- package/lib/esm/utils/serialization.js.map +1 -1
- package/lib/esm/utils/types.d.ts +0 -102
- package/lib/esm/validation/Validation.d.ts +2 -3
- package/lib/esm/validation/Validation.js +11 -6
- package/lib/esm/validation/Validation.js.map +1 -1
- package/lib/esm/validation/Validators/BaseValidator.js +7 -3
- package/lib/esm/validation/Validators/BaseValidator.js.map +1 -1
- package/lib/esm/validation/Validators/DiffValidator.js +1 -1
- package/lib/esm/validation/Validators/DiffValidator.js.map +1 -1
- package/lib/esm/validation/Validators/EqualsValidator.js +1 -1
- package/lib/esm/validation/Validators/EqualsValidator.js.map +1 -1
- package/lib/esm/validation/Validators/GreaterThanOrEqualValidator.js +1 -1
- package/lib/esm/validation/Validators/GreaterThanOrEqualValidator.js.map +1 -1
- package/lib/esm/validation/Validators/LessThanOrEqualValidator.js +1 -1
- package/lib/esm/validation/Validators/LessThanOrEqualValidator.js.map +1 -1
- package/lib/esm/validation/Validators/ListValidator.js +4 -4
- package/lib/esm/validation/Validators/ListValidator.js.map +1 -1
- package/lib/esm/validation/Validators/MaxLengthValidator.js +3 -2
- package/lib/esm/validation/Validators/MaxLengthValidator.js.map +1 -1
- package/lib/esm/validation/Validators/MaxValidator.js +1 -1
- package/lib/esm/validation/Validators/MaxValidator.js.map +1 -1
- package/lib/esm/validation/Validators/MinLengthValidator.js +3 -2
- package/lib/esm/validation/Validators/MinLengthValidator.js.map +1 -1
- package/lib/esm/validation/Validators/MinValidator.js +1 -1
- package/lib/esm/validation/Validators/MinValidator.js.map +1 -1
- package/lib/esm/validation/Validators/OptionValidator.d.ts +29 -0
- package/lib/esm/validation/Validators/OptionValidator.js +61 -0
- package/lib/esm/validation/Validators/OptionValidator.js.map +1 -0
- package/lib/esm/validation/Validators/TypeValidator.js +2 -2
- package/lib/esm/validation/Validators/TypeValidator.js.map +1 -1
- package/lib/esm/validation/Validators/constants.d.ts +2 -1
- package/lib/esm/validation/Validators/constants.js +3 -2
- package/lib/esm/validation/Validators/constants.js.map +1 -1
- package/lib/esm/validation/Validators/decorators.d.ts +1 -1
- package/lib/esm/validation/Validators/decorators.js +2 -2
- package/lib/esm/validation/Validators/decorators.js.map +1 -1
- package/lib/esm/validation/Validators/index.d.ts +1 -0
- package/lib/esm/validation/Validators/index.js +1 -0
- package/lib/esm/validation/Validators/index.js.map +1 -1
- package/lib/esm/validation/Validators/utils.d.ts +33 -0
- package/lib/esm/validation/Validators/utils.js +62 -0
- package/lib/esm/validation/Validators/utils.js.map +1 -1
- package/lib/esm/validation/decorators.d.ts +28 -17
- package/lib/esm/validation/decorators.js +138 -55
- package/lib/esm/validation/decorators.js.map +1 -1
- package/lib/esm/validation/types.d.ts +15 -5
- package/lib/esm/validation/types.js.map +1 -1
- package/lib/index.cjs +2 -1
- package/lib/index.d.ts +2 -1
- package/lib/index.js.map +1 -1
- package/lib/model/Builder.cjs +399 -128
- package/lib/model/Builder.d.ts +84 -0
- package/lib/model/Builder.js.map +1 -1
- package/lib/model/Model.cjs +114 -107
- package/lib/model/Model.d.ts +21 -19
- package/lib/model/Model.js.map +1 -1
- package/lib/model/constants.cjs +8 -9
- package/lib/model/constants.d.ts +8 -8
- package/lib/model/constants.js.map +1 -1
- package/lib/model/decorators.cjs +4 -39
- package/lib/model/decorators.d.ts +2 -12
- package/lib/model/decorators.js.map +1 -1
- 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/types.d.ts +9 -12
- package/lib/model/utils.cjs +0 -12
- package/lib/model/utils.d.ts +0 -3
- package/lib/model/utils.js.map +1 -1
- package/lib/model/validation.cjs +30 -108
- package/lib/model/validation.d.ts +4 -37
- package/lib/model/validation.js.map +1 -1
- package/lib/overrides/Metadata.cjs +3 -0
- package/lib/overrides/Metadata.d.ts +128 -0
- package/lib/overrides/Metadata.js.map +1 -0
- package/lib/overrides/index.cjs +20 -0
- package/lib/overrides/index.d.ts +3 -0
- package/lib/overrides/index.js.map +1 -0
- package/lib/overrides/overrides.cjs +81 -0
- package/lib/overrides/overrides.d.ts +1 -0
- package/lib/overrides/overrides.js.map +1 -0
- package/lib/overrides/types.cjs +3 -0
- package/lib/overrides/types.d.ts +9 -0
- package/lib/overrides/types.js.map +1 -0
- package/lib/types/validation.d.ts +4 -2
- package/lib/utils/constants.cjs +5 -18
- package/lib/utils/constants.d.ts +4 -18
- package/lib/utils/constants.js.map +1 -1
- package/lib/utils/dates.cjs +0 -1
- package/lib/utils/dates.d.ts +0 -1
- package/lib/utils/dates.js.map +1 -1
- package/lib/utils/equality.cjs +163 -0
- package/lib/utils/equality.d.ts +56 -0
- package/lib/utils/equality.js.map +1 -0
- package/lib/utils/index.cjs +1 -2
- package/lib/utils/index.d.ts +1 -2
- package/lib/utils/index.js.map +1 -1
- package/lib/utils/registry.d.ts +1 -1
- package/lib/utils/serialization.cjs +10 -2
- package/lib/utils/serialization.d.ts +2 -2
- package/lib/utils/serialization.js.map +1 -1
- package/lib/utils/types.d.ts +0 -102
- package/lib/validation/Validation.cjs +11 -6
- package/lib/validation/Validation.d.ts +2 -3
- package/lib/validation/Validation.js.map +1 -1
- package/lib/validation/Validators/BaseValidator.cjs +7 -3
- package/lib/validation/Validators/BaseValidator.js.map +1 -1
- package/lib/validation/Validators/DiffValidator.cjs +2 -2
- package/lib/validation/Validators/DiffValidator.js.map +1 -1
- package/lib/validation/Validators/EqualsValidator.cjs +2 -2
- package/lib/validation/Validators/EqualsValidator.js.map +1 -1
- package/lib/validation/Validators/GreaterThanOrEqualValidator.cjs +2 -2
- package/lib/validation/Validators/GreaterThanOrEqualValidator.js.map +1 -1
- package/lib/validation/Validators/LessThanOrEqualValidator.cjs +2 -2
- package/lib/validation/Validators/LessThanOrEqualValidator.js.map +1 -1
- package/lib/validation/Validators/ListValidator.cjs +4 -4
- package/lib/validation/Validators/ListValidator.js.map +1 -1
- package/lib/validation/Validators/MaxLengthValidator.cjs +3 -2
- package/lib/validation/Validators/MaxLengthValidator.js.map +1 -1
- package/lib/validation/Validators/MaxValidator.cjs +1 -1
- package/lib/validation/Validators/MaxValidator.js.map +1 -1
- package/lib/validation/Validators/MinLengthValidator.cjs +3 -2
- package/lib/validation/Validators/MinLengthValidator.js.map +1 -1
- package/lib/validation/Validators/MinValidator.cjs +1 -1
- package/lib/validation/Validators/MinValidator.js.map +1 -1
- package/lib/validation/Validators/OptionValidator.cjs +64 -0
- package/lib/validation/Validators/OptionValidator.d.ts +29 -0
- package/lib/validation/Validators/OptionValidator.js.map +1 -0
- package/lib/validation/Validators/TypeValidator.cjs +2 -2
- package/lib/validation/Validators/TypeValidator.js.map +1 -1
- package/lib/validation/Validators/constants.cjs +5 -4
- package/lib/validation/Validators/constants.d.ts +2 -1
- package/lib/validation/Validators/constants.js.map +1 -1
- package/lib/validation/Validators/decorators.cjs +3 -3
- package/lib/validation/Validators/decorators.d.ts +1 -1
- package/lib/validation/Validators/decorators.js.map +1 -1
- package/lib/validation/Validators/index.cjs +1 -0
- package/lib/validation/Validators/index.d.ts +1 -0
- package/lib/validation/Validators/index.js.map +1 -1
- package/lib/validation/Validators/utils.cjs +66 -0
- package/lib/validation/Validators/utils.d.ts +33 -0
- package/lib/validation/Validators/utils.js.map +1 -1
- package/lib/validation/decorators.cjs +154 -69
- package/lib/validation/decorators.d.ts +28 -17
- package/lib/validation/decorators.js.map +1 -1
- package/lib/validation/types.d.ts +15 -5
- package/lib/validation/types.js.map +1 -1
- package/package.json +2 -3
- package/lib/esm/utils/Decoration.d.ts +0 -135
- package/lib/esm/utils/Decoration.js +0 -227
- package/lib/esm/utils/Decoration.js.map +0 -1
- package/lib/esm/utils/decorators.d.ts +0 -38
- package/lib/esm/utils/decorators.js +0 -64
- package/lib/esm/utils/decorators.js.map +0 -1
- package/lib/utils/Decoration.cjs +0 -231
- package/lib/utils/Decoration.d.ts +0 -135
- package/lib/utils/Decoration.js.map +0 -1
- package/lib/utils/decorators.cjs +0 -68
- package/lib/utils/decorators.d.ts +0 -38
- package/lib/utils/decorators.js.map +0 -1
package/lib/esm/model/index.js
CHANGED
|
@@ -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"}
|
package/lib/esm/model/types.d.ts
CHANGED
|
@@ -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
|
|
@@ -141,3 +129,12 @@ export interface Comparable<T> {
|
|
|
141
129
|
*/
|
|
142
130
|
equals(other: T, ...args: any[]): boolean;
|
|
143
131
|
}
|
|
132
|
+
export type SetterKeyFor<OBJ, K extends keyof OBJ> = `set${Capitalize<string & K>}`;
|
|
133
|
+
export type SetterFor<OBJ, K extends keyof OBJ, R> = (value: OBJ[K]) => R;
|
|
134
|
+
export type Builder<OUT, ARGS extends any[] = any[], IN = OUT> = {
|
|
135
|
+
[K in keyof OUT as K extends keyof Model | "build" ? never : K]: OUT[K];
|
|
136
|
+
} & {
|
|
137
|
+
[K in keyof OUT as K extends keyof Model | "build" ? never : SetterKeyFor<OUT, K>]: SetterFor<OUT, K, IN>;
|
|
138
|
+
} & {
|
|
139
|
+
build: (...args: ARGS) => OUT | Promise<OUT>;
|
|
140
|
+
};
|
package/lib/esm/model/utils.d.ts
CHANGED
|
@@ -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
|
*
|
package/lib/esm/model/utils.js
CHANGED
|
@@ -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":"
|
|
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 {
|
|
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:
|
|
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
|
|
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:
|
|
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.
|
|
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
|
-
?
|
|
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
|
|
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
|
|
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.
|
|
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 (
|
|
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.
|
|
179
|
-
decorator.
|
|
180
|
-
decorator.
|
|
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 =
|
|
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
|
-
|
|
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
|
|
241
|
+
for (const prop of decoratedProperties) {
|
|
286
242
|
const propKey = String(prop);
|
|
287
|
-
|
|
288
|
-
|
|
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
|
-
|
|
316
|
-
|
|
317
|
-
|
|
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
|
-
|
|
271
|
+
const isModelInstance = hasPropValue && Model.isModel(propValue);
|
|
272
|
+
if (isConstr && hasPropValue && isModelInstance) {
|
|
345
273
|
const instance = propValue;
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
if (
|
|
349
|
-
|
|
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 @@
|
|
|
1
|
+
{"version":3,"file":"Metadata.js","sourceRoot":"","sources":["../../../src/overrides/Metadata.ts"],"names":[],"mappings":""}
|
|
@@ -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
|