@decaf-ts/decorator-validation 1.6.2 → 1.6.4
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/dist/decorator-validation.cjs +1016 -1164
- package/dist/decorator-validation.esm.cjs +971 -1134
- package/lib/constants/index.cjs +18 -0
- package/lib/constants/index.d.ts +1 -0
- package/lib/constants/validation.cjs +14 -0
- package/lib/constants/validation.d.ts +10 -0
- package/lib/esm/constants/index.d.ts +1 -0
- package/lib/esm/constants/index.js +2 -0
- package/lib/esm/constants/validation.d.ts +10 -0
- package/lib/esm/constants/validation.js +11 -0
- package/lib/esm/index.d.ts +37 -5
- package/lib/esm/index.js +38 -6
- package/lib/esm/model/Model.d.ts +29 -100
- package/lib/esm/model/Model.js +37 -104
- package/lib/esm/model/constants.d.ts +3 -3
- package/lib/esm/model/constants.js +4 -4
- package/lib/esm/model/construction.d.ts +3 -3
- package/lib/esm/model/construction.js +4 -4
- package/lib/esm/model/decorators.d.ts +4 -4
- package/lib/esm/model/decorators.js +5 -6
- package/lib/esm/model/types.d.ts +11 -30
- package/lib/esm/model/types.js +1 -1
- package/lib/esm/model/validation.d.ts +2 -2
- package/lib/esm/model/validation.js +18 -7
- package/lib/esm/utils/constants.d.ts +9 -27
- package/lib/esm/utils/constants.js +10 -28
- package/lib/esm/utils/dates.d.ts +16 -26
- package/lib/esm/utils/dates.js +17 -27
- package/lib/esm/utils/decorators.d.ts +0 -41
- package/lib/esm/utils/decorators.js +1 -42
- package/lib/esm/utils/hashing.d.ts +6 -50
- package/lib/esm/utils/hashing.js +5 -49
- package/lib/esm/utils/index.d.ts +0 -1
- package/lib/esm/utils/index.js +1 -2
- package/lib/esm/utils/registry.d.ts +2 -2
- package/lib/esm/utils/registry.js +1 -1
- package/lib/esm/utils/serialization.d.ts +1 -1
- package/lib/esm/utils/serialization.js +2 -2
- package/lib/esm/utils/strings.d.ts +4 -4
- package/lib/esm/utils/strings.js +5 -5
- package/lib/esm/utils/types.d.ts +16 -123
- package/lib/esm/utils/types.js +1 -1
- package/lib/esm/validation/Validators/DateValidator.d.ts +8 -40
- package/lib/esm/validation/Validators/DateValidator.js +9 -41
- package/lib/esm/validation/Validators/DiffValidator.d.ts +27 -0
- package/lib/esm/validation/Validators/DiffValidator.js +58 -0
- package/lib/esm/validation/Validators/EmailValidator.d.ts +7 -39
- package/lib/esm/validation/Validators/EmailValidator.js +8 -40
- package/lib/esm/validation/Validators/EqualsValidator.d.ts +27 -0
- package/lib/esm/validation/Validators/EqualsValidator.js +63 -0
- package/lib/esm/validation/Validators/GreaterThanOrEqualValidator.d.ts +27 -0
- package/lib/esm/validation/Validators/GreaterThanOrEqualValidator.js +65 -0
- package/lib/esm/validation/Validators/GreaterThanValidator.d.ts +27 -0
- package/lib/esm/validation/Validators/GreaterThanValidator.js +62 -0
- package/lib/esm/validation/Validators/LessThanOrEqualValidator.d.ts +27 -0
- package/lib/esm/validation/Validators/LessThanOrEqualValidator.js +65 -0
- package/lib/esm/validation/Validators/LessThanValidator.d.ts +27 -0
- package/lib/esm/validation/Validators/LessThanValidator.js +62 -0
- package/lib/esm/validation/Validators/ListValidator.d.ts +6 -44
- package/lib/esm/validation/Validators/ListValidator.js +7 -45
- package/lib/esm/validation/Validators/MaxValidator.d.ts +6 -52
- package/lib/esm/validation/Validators/MaxValidator.js +7 -53
- package/lib/esm/validation/Validators/MinValidator.d.ts +6 -52
- package/lib/esm/validation/Validators/MinValidator.js +7 -53
- package/lib/esm/validation/Validators/PatternValidator.d.ts +9 -75
- package/lib/esm/validation/Validators/PatternValidator.js +10 -76
- package/lib/esm/validation/Validators/RequiredValidator.d.ts +6 -52
- package/lib/esm/validation/Validators/RequiredValidator.js +7 -53
- package/lib/esm/validation/Validators/TypeValidator.d.ts +6 -60
- package/lib/esm/validation/Validators/TypeValidator.js +7 -69
- package/lib/esm/validation/Validators/URLValidator.d.ts +7 -41
- package/lib/esm/validation/Validators/URLValidator.js +8 -42
- package/lib/esm/validation/Validators/Validator.d.ts +17 -77
- package/lib/esm/validation/Validators/Validator.js +11 -68
- package/lib/esm/validation/Validators/ValidatorRegistry.d.ts +7 -1
- package/lib/esm/validation/Validators/ValidatorRegistry.js +11 -4
- package/lib/esm/validation/Validators/constants.d.ts +41 -0
- package/lib/esm/validation/Validators/constants.js +43 -1
- package/lib/esm/validation/Validators/index.d.ts +7 -0
- package/lib/esm/validation/Validators/index.js +8 -1
- package/lib/esm/validation/Validators/utils.d.ts +52 -0
- package/lib/esm/validation/Validators/utils.js +174 -0
- package/lib/esm/validation/decorators.d.ts +124 -50
- package/lib/esm/validation/decorators.js +173 -102
- package/lib/esm/validation/types.d.ts +31 -146
- package/lib/esm/validation/types.js +1 -1
- package/lib/index.cjs +39 -7
- package/lib/index.d.ts +37 -5
- package/lib/model/Model.cjs +39 -104
- package/lib/model/Model.d.ts +29 -100
- package/lib/model/constants.cjs +4 -4
- package/lib/model/constants.d.ts +3 -3
- package/lib/model/construction.cjs +4 -4
- package/lib/model/construction.d.ts +3 -3
- package/lib/model/decorators.cjs +5 -6
- package/lib/model/decorators.d.ts +4 -4
- package/lib/model/types.cjs +1 -1
- package/lib/model/types.d.ts +11 -30
- package/lib/model/validation.cjs +25 -14
- package/lib/model/validation.d.ts +2 -2
- package/lib/utils/constants.cjs +11 -29
- package/lib/utils/constants.d.ts +9 -27
- package/lib/utils/dates.cjs +17 -27
- package/lib/utils/dates.d.ts +16 -26
- package/lib/utils/decorators.cjs +1 -42
- package/lib/utils/decorators.d.ts +0 -41
- package/lib/utils/hashing.cjs +5 -49
- package/lib/utils/hashing.d.ts +6 -50
- package/lib/utils/index.cjs +1 -2
- package/lib/utils/index.d.ts +0 -1
- package/lib/utils/registry.cjs +1 -1
- package/lib/utils/registry.d.ts +2 -2
- package/lib/utils/serialization.cjs +2 -2
- package/lib/utils/serialization.d.ts +1 -1
- package/lib/utils/strings.cjs +5 -5
- package/lib/utils/strings.d.ts +4 -4
- package/lib/utils/types.cjs +1 -1
- package/lib/utils/types.d.ts +16 -123
- package/lib/validation/Validators/DateValidator.cjs +9 -41
- package/lib/validation/Validators/DateValidator.d.ts +8 -40
- package/lib/validation/Validators/DiffValidator.cjs +61 -0
- package/lib/validation/Validators/DiffValidator.d.ts +27 -0
- package/lib/validation/Validators/EmailValidator.cjs +8 -40
- package/lib/validation/Validators/EmailValidator.d.ts +7 -39
- package/lib/validation/Validators/EqualsValidator.cjs +66 -0
- package/lib/validation/Validators/EqualsValidator.d.ts +27 -0
- package/lib/validation/Validators/GreaterThanOrEqualValidator.cjs +68 -0
- package/lib/validation/Validators/GreaterThanOrEqualValidator.d.ts +27 -0
- package/lib/validation/Validators/GreaterThanValidator.cjs +65 -0
- package/lib/validation/Validators/GreaterThanValidator.d.ts +27 -0
- package/lib/validation/Validators/LessThanOrEqualValidator.cjs +68 -0
- package/lib/validation/Validators/LessThanOrEqualValidator.d.ts +27 -0
- package/lib/validation/Validators/LessThanValidator.cjs +65 -0
- package/lib/validation/Validators/LessThanValidator.d.ts +27 -0
- package/lib/validation/Validators/ListValidator.cjs +7 -45
- package/lib/validation/Validators/ListValidator.d.ts +6 -44
- package/lib/validation/Validators/MaxValidator.cjs +7 -53
- package/lib/validation/Validators/MaxValidator.d.ts +6 -52
- package/lib/validation/Validators/MinValidator.cjs +7 -53
- package/lib/validation/Validators/MinValidator.d.ts +6 -52
- package/lib/validation/Validators/PatternValidator.cjs +10 -76
- package/lib/validation/Validators/PatternValidator.d.ts +9 -75
- package/lib/validation/Validators/RequiredValidator.cjs +7 -53
- package/lib/validation/Validators/RequiredValidator.d.ts +6 -52
- package/lib/validation/Validators/TypeValidator.cjs +7 -69
- package/lib/validation/Validators/TypeValidator.d.ts +6 -60
- package/lib/validation/Validators/URLValidator.cjs +8 -42
- package/lib/validation/Validators/URLValidator.d.ts +7 -41
- package/lib/validation/Validators/Validator.cjs +11 -68
- package/lib/validation/Validators/Validator.d.ts +17 -77
- package/lib/validation/Validators/ValidatorRegistry.cjs +12 -4
- package/lib/validation/Validators/ValidatorRegistry.d.ts +7 -1
- package/lib/validation/Validators/constants.cjs +44 -2
- package/lib/validation/Validators/constants.d.ts +41 -0
- package/lib/validation/Validators/index.cjs +8 -1
- package/lib/validation/Validators/index.d.ts +7 -0
- package/lib/validation/Validators/utils.cjs +180 -0
- package/lib/validation/Validators/utils.d.ts +52 -0
- package/lib/validation/decorators.cjs +179 -102
- package/lib/validation/decorators.d.ts +124 -50
- package/lib/validation/types.cjs +1 -1
- package/lib/validation/types.d.ts +31 -146
- package/package.json +1 -1
- package/lib/esm/utils/Decoration.d.ts +0 -123
- package/lib/esm/utils/Decoration.js +0 -188
- package/lib/utils/Decoration.cjs +0 -192
- package/lib/utils/Decoration.d.ts +0 -123
package/lib/esm/model/types.d.ts
CHANGED
|
@@ -2,17 +2,19 @@ import { ModelErrorDefinition } from "./ModelErrorDefinition";
|
|
|
2
2
|
import { Model } from "./Model";
|
|
3
3
|
/**
|
|
4
4
|
* @summary Typo of a Model builder function
|
|
5
|
-
* @memberOf module:decorator-validation
|
|
5
|
+
* @memberOf module:decorator-validation.Construction
|
|
6
|
+
* @category Construction
|
|
6
7
|
*/
|
|
7
8
|
export type ModelBuilderFunction = <T extends Model>(self: T, obj?: T | Record<string, any>) => T;
|
|
8
9
|
/**
|
|
9
10
|
* @summary Definition of a Model Constructor Argument
|
|
10
11
|
*
|
|
11
|
-
* @memberOf module:decorator-validation
|
|
12
|
+
* @memberOf module:decorator-validation.Model
|
|
13
|
+
* @category Model
|
|
12
14
|
*
|
|
13
15
|
* @see ModelConstructor
|
|
14
16
|
*/
|
|
15
|
-
export type ModelArg<T> = T |
|
|
17
|
+
export type ModelArg<T> = T | Record<string, any>;
|
|
16
18
|
/**
|
|
17
19
|
* @summary Definition of a Class Constructor
|
|
18
20
|
* @description Generic type for Constructor functions
|
|
@@ -20,7 +22,8 @@ export type ModelArg<T> = T | Partial<T> | Record<string, any>;
|
|
|
20
22
|
* @typedef Constructor
|
|
21
23
|
*
|
|
22
24
|
* @param {any[]} [args]
|
|
23
|
-
* @memberOf module:decorator-validation
|
|
25
|
+
* @memberOf module:decorator-validation.Model
|
|
26
|
+
* @category Model
|
|
24
27
|
*/
|
|
25
28
|
export type Constructor<T> = {
|
|
26
29
|
new (...args: any[]): T;
|
|
@@ -33,7 +36,8 @@ export type Constructor<T> = {
|
|
|
33
36
|
*
|
|
34
37
|
* @param {ModelArg<T>} [model]
|
|
35
38
|
* @param {any[]} [args]
|
|
36
|
-
* @memberOf module:decorator-validation
|
|
39
|
+
* @memberOf module:decorator-validation.Model
|
|
40
|
+
* @category Construction
|
|
37
41
|
*/
|
|
38
42
|
export type ModelConstructor<T extends Model> = {
|
|
39
43
|
new (model?: ModelArg<T>, ...args: any[]): T;
|
|
@@ -42,7 +46,7 @@ export type ModelConstructor<T extends Model> = {
|
|
|
42
46
|
* @summary Defines the Validation API for validatable models
|
|
43
47
|
* @interface Validatable
|
|
44
48
|
*
|
|
45
|
-
* @category
|
|
49
|
+
* @category Validation
|
|
46
50
|
*/
|
|
47
51
|
export interface Validatable {
|
|
48
52
|
/**
|
|
@@ -58,7 +62,7 @@ export interface Validatable {
|
|
|
58
62
|
*
|
|
59
63
|
* @interface Serializable
|
|
60
64
|
*
|
|
61
|
-
* @category
|
|
65
|
+
* @category Serialization
|
|
62
66
|
*/
|
|
63
67
|
export interface Serializable {
|
|
64
68
|
/**
|
|
@@ -67,32 +71,9 @@ export interface Serializable {
|
|
|
67
71
|
*/
|
|
68
72
|
serialize(): string;
|
|
69
73
|
}
|
|
70
|
-
/**
|
|
71
|
-
* @summary Interface for objects that can be hashed
|
|
72
|
-
* @interface Hashable
|
|
73
|
-
* @category Model
|
|
74
|
-
*/
|
|
75
74
|
export interface Hashable {
|
|
76
|
-
/**
|
|
77
|
-
* @summary Generates a hash string representation of the object
|
|
78
|
-
* @method
|
|
79
|
-
* @returns {string} Hash value representing the object
|
|
80
|
-
*/
|
|
81
75
|
hash(): string;
|
|
82
76
|
}
|
|
83
|
-
/**
|
|
84
|
-
* @summary Interface for objects that can be compared for equality
|
|
85
|
-
* @interface Comparable
|
|
86
|
-
* @template T The type of object to compare against
|
|
87
|
-
* @category Model
|
|
88
|
-
*/
|
|
89
77
|
export interface Comparable<T> {
|
|
90
|
-
/**
|
|
91
|
-
* @summary Compares this object with another for equality
|
|
92
|
-
* @method
|
|
93
|
-
* @param {T} other - The object to compare with
|
|
94
|
-
* @param {...any[]} args - Additional arguments for comparison
|
|
95
|
-
* @returns {boolean} True if the objects are equal, false otherwise
|
|
96
|
-
*/
|
|
97
78
|
equals(other: T, ...args: any[]): boolean;
|
|
98
79
|
}
|
package/lib/esm/model/types.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
export {};
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbW9kZWwvdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE1vZGVsRXJyb3JEZWZpbml0aW9uIH0gZnJvbSBcIi4vTW9kZWxFcnJvckRlZmluaXRpb25cIjtcbmltcG9ydCB7IE1vZGVsIH0gZnJvbSBcIi4vTW9kZWxcIjtcblxuLyoqXG4gKiBAc3VtbWFyeSBUeXBvIG9mIGEgTW9kZWwgYnVpbGRlciBmdW5jdGlvblxuICogQG1lbWJlck9mIG1vZHVsZTpkZWNvcmF0b3ItdmFsaWRhdGlvbi5Db25zdHJ1Y3Rpb25cbiAqIEBjYXRlZ29yeSBDb25zdHJ1Y3Rpb25cbiAqL1xuZXhwb3J0IHR5cGUgTW9kZWxCdWlsZGVyRnVuY3Rpb24gPSA8VCBleHRlbmRzIE1vZGVsPihcbiAgc2VsZjogVCxcbiAgb2JqPzogVCB8IFJlY29yZDxzdHJpbmcsIGFueT5cbikgPT4gVDtcblxuLyoqXG4gKiBAc3VtbWFyeSBEZWZpbml0aW9uIG9mIGEgTW9kZWwgQ29uc3RydWN0b3IgQXJndW1lbnRcbiAqXG4gKiBAbWVtYmVyT2YgbW9kdWxlOmRlY29yYXRvci12YWxpZGF0aW9uLk1vZGVsXG4gKiBAY2F0ZWdvcnkgTW9kZWxcbiAqXG4gKiBAc2VlIE1vZGVsQ29uc3RydWN0b3JcbiAqL1xuZXhwb3J0IHR5cGUgTW9kZWxBcmc8VD4gPSBUIHwgUmVjb3JkPHN0cmluZywgYW55PjtcblxuLyoqXG4gKiBAc3VtbWFyeSBEZWZpbml0aW9uIG9mIGEgQ2xhc3MgQ29uc3RydWN0b3JcbiAqIEBkZXNjcmlwdGlvbiBHZW5lcmljIHR5cGUgZm9yIENvbnN0cnVjdG9yIGZ1bmN0aW9uc1xuICpcbiAqIEB0eXBlZGVmIENvbnN0cnVjdG9yXG4gKlxuICogQHBhcmFtIHthbnlbXX0gW2FyZ3NdXG4gKiBAbWVtYmVyT2YgbW9kdWxlOmRlY29yYXRvci12YWxpZGF0aW9uLk1vZGVsXG4gKiBAY2F0ZWdvcnkgTW9kZWxcbiAqL1xuZXhwb3J0IHR5cGUgQ29uc3RydWN0b3I8VD4gPSB7XG4gIG5ldyAoLi4uYXJnczogYW55W10pOiBUO1xufTtcblxuLyoqXG4gKiBAc3VtbWFyeSBEZWZpbml0aW9uIG9mIGEgTW9kZWwgQ29uc3RydWN0b3JcbiAqIEBkZXNjcmlwdGlvbiBHZW5lcmljIHR5cGUgZm9yIGFsbCBNb2RlbCBDb25zdHJ1Y3RvciBmdW5jdGlvbnNcbiAqXG4gKiBAdHlwZWRlZiBNb2RlbENvbnN0cnVjdG9yXG4gKlxuICogQHBhcmFtIHtNb2RlbEFyZzxUPn0gW21vZGVsXVxuICogQHBhcmFtIHthbnlbXX0gW2FyZ3NdXG4gKiBAbWVtYmVyT2YgbW9kdWxlOmRlY29yYXRvci12YWxpZGF0aW9uLk1vZGVsXG4gKiBAY2F0ZWdvcnkgQ29uc3RydWN0aW9uXG4gKi9cbmV4cG9ydCB0eXBlIE1vZGVsQ29uc3RydWN0b3I8VCBleHRlbmRzIE1vZGVsPiA9IHtcbiAgbmV3IChtb2RlbD86IE1vZGVsQXJnPFQ+LCAuLi5hcmdzOiBhbnlbXSk6IFQ7XG59O1xuXG4vKipcbiAqIEBzdW1tYXJ5IERlZmluZXMgdGhlIFZhbGlkYXRpb24gQVBJIGZvciB2YWxpZGF0YWJsZSBtb2RlbHNcbiAqIEBpbnRlcmZhY2UgVmFsaWRhdGFibGVcbiAqXG4gKiBAY2F0ZWdvcnkgVmFsaWRhdGlvblxuICovXG5leHBvcnQgaW50ZXJmYWNlIFZhbGlkYXRhYmxlIHtcbiAgLyoqXG4gICAqIEBzdW1tYXJ5IFZhbGlkYXRlcyB0aGUgbW9kZWwgYW5kIHJldHVybnMgdGhlIHtAbGluayBNb2RlbEVycm9yRGVmaW5pdGlvbn0gaWYgYW55XG4gICAqIEBwYXJhbSB7YW55fSBbYXJnc11cbiAgICpcbiAgICogQG1ldGhvZFxuICAgKi9cbiAgaGFzRXJyb3JzKC4uLmFyZ3M6IGFueVtdKTogTW9kZWxFcnJvckRlZmluaXRpb24gfCB1bmRlZmluZWQ7XG59XG5cbi8qKlxuICogQHN1bW1hcnkgU2VyaWFsaXphYmxlIGludGVyZmFjZVxuICpcbiAqIEBpbnRlcmZhY2UgU2VyaWFsaXphYmxlXG4gKlxuICogQGNhdGVnb3J5IFNlcmlhbGl6YXRpb25cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBTZXJpYWxpemFibGUge1xuICAvKipcbiAgICogQHN1bW1hcnkgc2VyaWFsaXplcyB0aGUgbW9kZWxcbiAgICogQG1ldGhvZFxuICAgKi9cbiAgc2VyaWFsaXplKCk6IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBIYXNoYWJsZSB7XG4gIGhhc2goKTogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIENvbXBhcmFibGU8VD4ge1xuICBlcXVhbHMob3RoZXI6IFQsIC4uLmFyZ3M6IGFueVtdKTogYm9vbGVhbjtcbn1cbiJdfQ==
|
|
@@ -8,7 +8,7 @@ import { Model } from "./Model";
|
|
|
8
8
|
* @prop {string[]} [propsToIgnore] object properties to ignore in the validation
|
|
9
9
|
*
|
|
10
10
|
* @function validate
|
|
11
|
-
* @memberOf module:decorator-validation
|
|
12
|
-
* @category
|
|
11
|
+
* @memberOf module:decorator-validation.Validation
|
|
12
|
+
* @category Validation
|
|
13
13
|
*/
|
|
14
14
|
export declare function validate<T extends Model>(obj: T, ...propsToIgnore: string[]): ModelErrorDefinition | undefined;
|
|
@@ -3,7 +3,8 @@ import { Reflection } from "@decaf-ts/reflection";
|
|
|
3
3
|
import { ModelKeys } from "../utils/constants";
|
|
4
4
|
import { sf } from "../utils/strings";
|
|
5
5
|
import { ReservedModels } from "./constants";
|
|
6
|
-
import {
|
|
6
|
+
import { VALIDATION_PARENT_KEY } from "../constants";
|
|
7
|
+
import { isModel } from "./Model";
|
|
7
8
|
import { Validation } from "../validation/Validation";
|
|
8
9
|
import { ValidationKeys } from "../validation/Validators/constants";
|
|
9
10
|
/**
|
|
@@ -14,8 +15,8 @@ import { ValidationKeys } from "../validation/Validators/constants";
|
|
|
14
15
|
* @prop {string[]} [propsToIgnore] object properties to ignore in the validation
|
|
15
16
|
*
|
|
16
17
|
* @function validate
|
|
17
|
-
* @memberOf module:decorator-validation
|
|
18
|
-
* @category
|
|
18
|
+
* @memberOf module:decorator-validation.Validation
|
|
19
|
+
* @category Validation
|
|
19
20
|
*/
|
|
20
21
|
export function validate(obj, ...propsToIgnore) {
|
|
21
22
|
const decoratedProperties = [];
|
|
@@ -46,7 +47,8 @@ export function validate(obj, ...propsToIgnore) {
|
|
|
46
47
|
const decoratorProps = decorator.key === ModelKeys.TYPE
|
|
47
48
|
? [decorator.props]
|
|
48
49
|
: decorator.props || {};
|
|
49
|
-
const err = validator.hasErrors(obj[prop.toString()], decoratorProps
|
|
50
|
+
const err = validator.hasErrors(obj[prop.toString()], decoratorProps, obj // TODO: Assert type and deep Object.freeze
|
|
51
|
+
);
|
|
50
52
|
if (err) {
|
|
51
53
|
errs = errs || {};
|
|
52
54
|
errs[decorator.key] = err;
|
|
@@ -89,12 +91,21 @@ export function validate(obj, ...propsToIgnore) {
|
|
|
89
91
|
: [customTypes.toLowerCase()];
|
|
90
92
|
}
|
|
91
93
|
const validate = (prop, value) => {
|
|
92
|
-
if (typeof value
|
|
93
|
-
return
|
|
94
|
+
if (typeof value !== "object" && typeof value !== "function")
|
|
95
|
+
return undefined;
|
|
96
|
+
try {
|
|
97
|
+
if (value && !value[VALIDATION_PARENT_KEY])
|
|
98
|
+
value[VALIDATION_PARENT_KEY] = obj; // TODO: freeze?
|
|
99
|
+
return isModel(value)
|
|
94
100
|
? value.hasErrors()
|
|
95
101
|
: allowedTypes.includes(typeof value)
|
|
96
102
|
? undefined
|
|
97
103
|
: "Value has no validatable type";
|
|
104
|
+
}
|
|
105
|
+
finally {
|
|
106
|
+
if (value && value[VALIDATION_PARENT_KEY])
|
|
107
|
+
delete value[VALIDATION_PARENT_KEY];
|
|
108
|
+
}
|
|
98
109
|
};
|
|
99
110
|
switch (c) {
|
|
100
111
|
case Array.name:
|
|
@@ -133,4 +144,4 @@ export function validate(obj, ...propsToIgnore) {
|
|
|
133
144
|
}
|
|
134
145
|
return result ? new ModelErrorDefinition(result) : undefined;
|
|
135
146
|
}
|
|
136
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsaWRhdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9tb2RlbC92YWxpZGF0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQzlELE9BQU8sRUFBcUIsVUFBVSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDckUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxFQUFFLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUN0QyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBRTdDLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxTQUFTLENBQUM7QUFDaEMsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3RELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQU9wRTs7Ozs7Ozs7OztHQVVHO0FBQ0gsTUFBTSxVQUFVLFFBQVEsQ0FDdEIsR0FBTSxFQUNOLEdBQUcsYUFBdUI7SUFFMUIsTUFBTSxtQkFBbUIsR0FBNEMsRUFBRSxDQUFDO0lBQ3hFLEtBQUssTUFBTSxJQUFJLElBQUksR0FBRztRQUNwQixJQUNFLE1BQU0sQ0FBQyxTQUFTLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDO1lBQy9DLGFBQWEsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBRWxDLG1CQUFtQixDQUFDLElBQUksQ0FDdEIsVUFBVSxDQUFDLHFCQUFxQixDQUM5QixjQUFjLENBQUMsT0FBTyxFQUN0QixHQUFHLEVBQ0gsSUFBSSxDQUNvQyxDQUMzQyxDQUFDO0lBRU4sSUFBSSxNQUFNLEdBQTRCLFNBQVMsQ0FBQztJQUVoRCxLQUFLLE1BQU0saUJBQWlCLElBQUksbUJBQW1CLEVBQUUsQ0FBQztR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QztRQUNILENBQUM7SUFDSCxDQUFDO0lBRUQsT0FBTyxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksb0JBQW9CLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztBQUMvRCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTW9kZWxFcnJvckRlZmluaXRpb24gfSBmcm9tIFwiLi9Nb2RlbEVycm9yRGVmaW5pdGlvblwiO1xuaW1wb3J0IHsgRGVjb3JhdG9yTWV0YWRhdGEsIFJlZmxlY3Rpb24gfSBmcm9tIFwiQGRlY2FmLXRzL3JlZmxlY3Rpb25cIjtcbmltcG9ydCB7IE1vZGVsS2V5cyB9IGZyb20gXCIuLi91dGlscy9jb25zdGFudHNcIjtcbmltcG9ydCB7IHNmIH0gZnJvbSBcIi4uL3V0aWxzL3N0cmluZ3NcIjtcbmltcG9ydCB7IFJlc2VydmVkTW9kZWxzIH0gZnJvbSBcIi4vY29uc3RhbnRzXCI7XG5pbXBvcnQgeyBWYWxpZGF0YWJsZSB9IGZyb20gXCIuL3R5cGVzXCI7XG5pbXBvcnQgeyBNb2RlbCB9IGZyb20gXCIuL01vZGVsXCI7XG5pbXBvcnQgeyBWYWxpZGF0aW9uIH0gZnJvbSBcIi4uL3ZhbGlkYXRpb24vVmFsaWRhdGlvblwiO1xuaW1wb3J0IHsgVmFsaWRhdGlvbktleXMgfSBmcm9tIFwiLi4vdmFsaWRhdGlvbi9WYWxpZGF0b3JzL2NvbnN0YW50c1wiO1xuaW1wb3J0IHtcbiAgTW9kZWxFcnJvcnMsXG4gIFZhbGlkYXRpb25Qcm9wZXJ0eURlY29yYXRvckRlZmluaXRpb24sXG59IGZyb20gXCIuLi92YWxpZGF0aW9uL3R5cGVzXCI7XG5pbXBvcnQgeyBWYWxpZGF0b3JPcHRpb25zIH0gZnJvbSBcIi4uL3ZhbGlkYXRpb24vdHlwZXNcIjtcblxuLyoqXG4gKiBAc3VtbWFyeSBBbmFseXNlcyB0aGUgZGVjb3JhdGlvbnMgb2YgdGhlIHByb3BlcnRpZXMgYW5kIHZhbGlkYXRlcyB0aGUgb2JqIGFjY29yZGluZyB0byB0aGVtXG4gKlxuICogQHR5cGVkZWYgVCBleHRlbmRzIE1vZGVsXG4gKiBAcHJvcCB7VH0gb2JqIE1vZGVsIG9iamVjdCB0byB2YWxpZGF0ZVxuICogQHByb3Age3N0cmluZ1tdfSBbcHJvcHNUb0lnbm9yZV0gb2JqZWN0IHByb3BlcnRpZXMgdG8gaWdub3JlIGluIHRoZSB2YWxpZGF0aW9uXG4gKlxuICogQGZ1bmN0aW9uIHZhbGlkYXRlXG4gKiBAbWVtYmVyT2YgbW9kdWxlOmRlY29yYXRvci12YWxpZGF0aW9uXG4gKiBAY2F0ZWdvcnkgTW9kZWxcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHZhbGlkYXRlPFQgZXh0ZW5kcyBNb2RlbD4oXG4gIG9iajogVCxcbiAgLi4ucHJvcHNUb0lnbm9yZTogc3RyaW5nW11cbik6IE1vZGVsRXJyb3JEZWZpbml0aW9uIHwgdW5kZWZpbmVkIHtcbiAgY29uc3QgZGVjb3JhdGVkUHJvcGVydGllczogVmFsaWRhdGlvblByb3BlcnR5RGVjb3JhdG9yRGVmaW5pdGlvbltdID0gW107XG4gIGZvciAoY29uc3QgcHJvcCBpbiBvYmopXG4gICAgaWYgKFxuICAgICAgT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9iaiwgcHJvcCkgJiZcbiAgICAgIHByb3BzVG9JZ25vcmUuaW5kZXhPZihwcm9wKSA9PT0gLTFcbiAgICApXG4gICAgICBkZWNvcmF0ZWRQcm9wZXJ0aWVzLnB1c2goXG4gICAgICAgIFJlZmxlY3Rpb24uZ2V0UHJvcGVydHlEZWNvcmF0b3JzKFxuICAgICAgICAgIFZhbGlkYXRpb25LZXlzLlJFRkxFQ1QsXG4gICAgICAgICAgb2JqLFxuICAgICAgICAgIHByb3BcbiAgICAgICAgKSBhcyBWYWxpZGF0aW9uUHJvcGVydHlEZWNvcmF0b3JEZWZpbml0aW9uXG4gICAgICApO1xuXG4gIGxldCByZXN1bHQ6IE1vZGVsRXJyb3JzIHwgdW5kZWZpbmVkID0gdW5kZWZpbmVkO1xuXG4gIGZvciAoY29uc3QgZGVjb3JhdGVkUHJvcGVydHkgb2YgZGVjb3JhdGVkUHJvcGVydGllcykge1xuICAgIGNvbnN0IHsgcHJvcCwgZGVjb3JhdG9ycyB9ID0gZGVjb3JhdGVkUHJvcGVydHk7XG5cbiAgICBpZiAoIWRlY29yYXRvcnMgfHwgIWRlY29yYXRvcnMubGVuZ3RoKSBjb250aW51ZTtcblxuICAgIGNvbnN0IGRlZmF1bHRUeXBlRGVjb3JhdG9yOiBEZWNvcmF0b3JNZXRhZGF0YSA9IGRlY29yYXRvcnNbMF07XG5cbiAgICAvLyB0cmllcyB0byBmaW5kIGFueSB0eXBlIGRlY29yYXRvcnMgb3Igb3RoZXIgZGVjb3JhdG9ycyB0aGF0IGFscmVhZHkgZW5mb3JjZSB0eXBlICh0aGUgb25lcyB3aXRoIHRoZSBhbGxvd2VkIHR5cGVzIHByb3BlcnR5IGRlZmluZWQpLiBpZiBzbywgc2tpcCB0aGUgZGVmYXVsdCB0eXBlIHZlcmlmaWNhdGlvblxuICAgIGlmIChcbiAgICAgIGRlY29yYXRvcnMuZmluZCgoZCkgPT4ge1xuICAgICAgICBpZiAoZC5rZXkgPT09IFZhbGlkYXRpb25LZXlzLlRZUEUpIHJldHVybiB0cnVlO1xuICAgICAgICByZXR1cm4gISFkLnByb3BzLnR5cGVzPy5maW5kKFxuICAgICAgICAgICh0KSA9PiB0ID09PSBkZWZhdWx0VHlwZURlY29yYXRvci5wcm9wcy5uYW1lXG4gICAgICAgICk7XG4gICAgICB9KVxuICAgICkge1xuICAgICAgZGVjb3JhdG9ycy5zaGlmdCgpOyAvLyByZW1vdmUgdGhlIGRlc2lnbjp0eXBlIGRlY29yYXRvciwgc2luY2UgdGhlIHR5cGUgd2lsbCBhbHJlYWR5IGJlIGNoZWNrZWRcbiAgICB9XG5cbiAgICBsZXQgZXJyczogUmVjb3JkPHN0cmluZywgc3RyaW5nIHwgdW5kZWZpbmVkPiB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZDtcblxuICAgIGZvciAoY29uc3QgZGVjb3JhdG9yIG9mIGRlY29yYXRvcnMpIHtcbiAgICAgIGNvbnN0IHZhbGlkYXRvciA9IFZhbGlkYXRpb24uZ2V0KGRlY29yYXRvci5rZXkpO1xuICAgICAgaWYgKCF2YWxpZGF0b3IpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBNaXNzaW5nIHZhbGlkYXRvciBmb3IgJHtkZWNvcmF0b3Iua2V5fWApO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBkZWNvcmF0b3JQcm9wcyA9XG4gICAgICAgIGRlY29yYXRvci5rZXkgPT09IE1vZGVsS2V5cy5UWVBFXG4gICAgICAgICAgPyBbZGVjb3JhdG9yLnByb3BzXVxuICAgICAgICAgIDogZGVjb3JhdG9yLnByb3BzIHx8IHt9O1xuXG4gICAgICBjb25zdCBlcnI6IHN0cmluZyB8IHVuZGVmaW5lZCA9IHZhbGlkYXRvci5oYXNFcnJvcnMoXG4gICAgICAgIChvYmogYXMgYW55KVtwcm9wLnRvU3RyaW5nKCldLFxuICAgICAgICBkZWNvcmF0b3JQcm9wcyBhcyBWYWxpZGF0b3JPcHRpb25zXG4gICAgICApO1xuXG4gICAgICBpZiAoZXJyKSB7XG4gICAgICAgIGVycnMgPSBlcnJzIHx8IHt9O1xuICAgICAgICBlcnJzW2RlY29yYXRvci5rZXldID0gZXJyO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChlcnJzKSB7XG4gICAgICByZXN1bHQgPSByZXN1bHQgfHwge307XG4gICAgICByZXN1bHRbZGVjb3JhdGVkUHJvcGVydHkucHJvcC50b1N0cmluZygpXSA9IGVycnM7XG4gICAgfVxuICB9XG5cbiAgLy8gdGVzdHMgbmVzdGVkIGNsYXNzZXNcbiAgZm9yIChjb25zdCBwcm9wIG9mIE9iamVjdC5rZXlzKG9iaikuZmlsdGVyKChrKSA9PiAhcmVzdWx0IHx8ICFyZXN1bHRba10pKSB7XG4gICAgbGV0IGVycjogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICAgIC8vIGlmIGEgbmVzdGVkIE1vZGVsXG4gICAgY29uc3QgYWxsRGVjb3JhdG9ycyA9IFJlZmxlY3Rpb24uZ2V0UHJvcGVydHlEZWNvcmF0b3JzKFxuICAgICAgVmFsaWRhdGlvbktleXMuUkVGTEVDVCxcbiAgICAgIG9iaixcbiAgICAgIHByb3BcbiAgICApLmRlY29yYXRvcnM7XG4gICAgY29uc3QgZGVjb3JhdG9ycyA9IFJlZmxlY3Rpb24uZ2V0UHJvcGVydHlEZWNvcmF0b3JzKFxuICAgICAgVmFsaWRhdGlvbktleXMuUkVGTEVDVCxcbiAgICAgIG9iaixcbiAgICAgIHByb3BcbiAgICApLmRlY29yYXRvcnMuZmlsdGVyKFxuICAgICAgKGQ6IHsga2V5OiBzdHJpbmcgfSkgPT5cbiAgICAgICAgW01vZGVsS2V5cy5UWVBFLCBWYWxpZGF0aW9uS2V5cy5UWVBFIGFzIHN0cmluZ10uaW5kZXhPZihkLmtleSkgIT09IC0xXG4gICAgKTtcbiAgICBpZiAoIWRlY29yYXRvcnMgfHwgIWRlY29yYXRvcnMubGVuZ3RoKSBjb250aW51ZTtcbiAgICBjb25zdCBkZWMgPSBkZWNvcmF0b3JzLnBvcCgpIGFzIERlY29yYXRvck1ldGFkYXRhO1xuICAgIGNvbnN0IGNsYXp6ID0gZGVjLnByb3BzLm5hbWVcbiAgICAgID8gW2RlYy5wcm9wcy5uYW1lXVxuICAgICAgOiBBcnJheS5pc0FycmF5KGRlYy5wcm9wcy5jdXN0b21UeXBlcylcbiAgICAgICAgPyBkZWMucHJvcHMuY3VzdG9tVHlwZXNcbiAgICAgICAgOiBbZGVjLnByb3BzLmN1c3RvbVR5cGVzXTtcbiAgICBjb25zdCByZXNlcnZlZCA9IE9iamVjdC52YWx1ZXMoUmVzZXJ2ZWRNb2RlbHMpLm1hcCgodikgPT5cbiAgICAgIHYudG9Mb3dlckNhc2UoKVxuICAgICkgYXMgc3RyaW5nW107XG5cbiAgICBmb3IgKGNvbnN0IGMgb2YgY2xhenopIHtcbiAgICAgIGlmIChyZXNlcnZlZC5pbmRleE9mKGMudG9Mb3dlckNhc2UoKSkgPT09IC0xKSB7XG4gICAgICAgIGNvbnN0IHR5cGVEZWNvcmF0b3JLZXkgPSBBcnJheS5pc0FycmF5KChvYmogYXMgYW55KVtwcm9wXSlcbiAgICAgICAgICA/IFZhbGlkYXRpb25LZXlzLkxJU1RcbiAgICAgICAgICA6IFZhbGlkYXRpb25LZXlzLlRZUEU7XG4gICAgICAgIGNvbnN0IHR5cGVzOiBhbnkgPVxuICAgICAgICAgIGFsbERlY29yYXRvcnMuZmluZChcbiAgICAgICAgICAgIChkOiB7IGtleTogc3RyaW5nIH0pID0+IGQua2V5ID09PSB0eXBlRGVjb3JhdG9yS2V5XG4gICAgICAgICAgKSB8fCB7fTtcbiAgICAgICAgbGV0IGFsbG93ZWRUeXBlczogc3RyaW5nW10gPSBbXTtcbiAgICAgICAgaWYgKHR5cGVzICYmIHR5cGVzLnByb3BzKSB7XG4gICAgICAgICAgY29uc3QgY3VzdG9tVHlwZXMgPSBBcnJheS5pc0FycmF5KChvYmogYXMgYW55KVtwcm9wXSlcbiAgICAgICAgICAgID8gdHlwZXMucHJvcHMuY2xhc3NcbiAgICAgICAgICAgIDogdHlwZXMucHJvcHMuY3VzdG9tVHlwZXM7XG4gICAgICAgICAgaWYgKGN1c3RvbVR5cGVzKVxuICAgICAgICAgICAgYWxsb3dlZFR5cGVzID0gQXJyYXkuaXNBcnJheShjdXN0b21UeXBlcylcbiAgICAgICAgICAgICAgPyBjdXN0b21UeXBlcy5tYXAoKHQpID0+IGAke3R9YC50b0xvd2VyQ2FzZSgpKVxuICAgICAgICAgICAgICA6IFtjdXN0b21UeXBlcy50b0xvd2VyQ2FzZSgpXTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHZhbGlkYXRlID0gKHByb3A6IHN0cmluZywgdmFsdWU6IGFueSk6IGFueSA9PiB7XG4gICAgICAgICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gXCJvYmplY3RcIiB8fCB0eXBlb2YgdmFsdWUgPT09IFwiZnVuY3Rpb25cIilcbiAgICAgICAgICAgIHJldHVybiBNb2RlbC5pc01vZGVsKHZhbHVlKVxuICAgICAgICAgICAgICA/ICh2YWx1ZSBhcyBNb2RlbCkuaGFzRXJyb3JzKClcbiAgICAgICAgICAgICAgOiBhbGxvd2VkVHlwZXMuaW5jbHVkZXModHlwZW9mIHZhbHVlKVxuICAgICAgICAgICAgICAgID8gdW5kZWZpbmVkXG4gICAgICAgICAgICAgICAgOiBcIlZhbHVlIGhhcyBubyB2YWxpZGF0YWJsZSB0eXBlXCI7XG4gICAgICAgIH07XG5cbiAgICAgICAgc3dpdGNoIChjKSB7XG4gICAgICAgICAgY2FzZSBBcnJheS5uYW1lOlxuICAgICAgICAgIGNhc2UgU2V0Lm5hbWU6XG4gICAgICAgICAgICBpZiAoYWxsRGVjb3JhdG9ycy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgY29uc3QgbGlzdERlYyA9IGFsbERlY29yYXRvcnMuZmluZChcbiAgICAgICAgICAgICAgICAoZDogeyBrZXk6IHN0cmluZyB9KSA9PiBkLmtleSA9PT0gVmFsaWRhdGlvbktleXMuTElTVFxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICBpZiAobGlzdERlYykge1xuICAgICAgICAgICAgICAgIGVyciA9IChcbiAgICAgICAgICAgICAgICAgIGMgPT09IEFycmF5Lm5hbWVcbiAgICAgICAgICAgICAgICAgICAgPyAob2JqIGFzIFJlY29yZDxzdHJpbmcsIGFueT4pW3Byb3BdXG4gICAgICAgICAgICAgICAgICAgIDogLy8gSWYgaXQncyBhIFNldFxuICAgICAgICAgICAgICAgICAgICAgIChvYmogYXMgUmVjb3JkPHN0cmluZywgYW55PilbcHJvcF0udmFsdWVzKClcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAubWFwKCh2OiBWYWxpZGF0YWJsZSkgPT4gdmFsaWRhdGUocHJvcCwgdikpXG4gICAgICAgICAgICAgICAgICAuZmlsdGVyKChlOiBhbnkpID0+ICEhZSkgYXMgYW55O1xuICAgICAgICAgICAgICAgIGlmICghZXJyPy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAgIC8vIGlmIHRoZSByZXN1bHQgaXMgYW4gZW1wdHkgbGlzdC4uLlxuICAgICAgICAgICAgICAgICAgZXJyID0gdW5kZWZpbmVkO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgIGlmICgob2JqIGFzIFJlY29yZDxzdHJpbmcsIGFueT4pW3Byb3BdKVxuICAgICAgICAgICAgICAgIGVyciA9IHZhbGlkYXRlKHByb3AsIChvYmogYXMgYW55KVtwcm9wXSk7XG4gICAgICAgICAgICB9IGNhdGNoIChlOiBhbnkpIHtcbiAgICAgICAgICAgICAgY29uc29sZS53YXJuKHNmKFwiTW9kZWwgc2hvdWxkIGJlIHZhbGlkYXRhYmxlIGJ1dCBpdHMgbm90OiBcIiArIGUpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKGVycikge1xuICAgICAgICByZXN1bHQgPSByZXN1bHQgfHwge307XG4gICAgICAgIHJlc3VsdFtwcm9wXSA9IGVyciBhcyBhbnk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHJlc3VsdCA/IG5ldyBNb2RlbEVycm9yRGVmaW5pdGlvbihyZXN1bHQpIDogdW5kZWZpbmVkO1xufVxuIl19
|
|
147
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsaWRhdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9tb2RlbC92YWxpZGF0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQzlELE9BQU8sRUFBcUIsVUFBVSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDckUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxFQUFFLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUN0QyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQzdDLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUVyRCxPQUFPLEVBQUUsT0FBTyxFQUFTLE1BQU0sU0FBUyxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUN0RCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFPcEU7Ozs7Ozs7Ozs7R0FVRztBQUNILE1BQU0sVUFBVSxRQUFRLENBQ3RCLEdBQU0sRUFDTixHQUFHLGFBQXVCO0lBRTFCLE1BQU0sbUJBQW1CLEdBQTRDLEVBQUUsQ0FBQztJQUN4RSxLQUFLLE1BQU0sSUFBSSxJQUFJLEdBQUc7UUFDcEIsSUFDRSxNQUFNLENBQUMsU0FBUyxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQztZQUMvQyxhQUFhLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUVsQyxtQkFBbUIsQ0FBQyxJQUFJLENBQ3RCLFVBQVUsQ0FBQyxxQkFBcUIsQ0FDOUIsY0FBYyxDQUFDLE9BQU8sRUFDdEIsR0FBRyxFQUNILElBQUksQ0FDb0MsQ0FDM0MsQ0FBQztJQUVOLElBQUksTUFBTSxHQUE0QixTQUFTLENBQUM7SUFF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cEMsR0FBRyxHQUFHLFFBQVEsQ0FBQyxJQUFJLEVBQUcsR0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7d0JBQzdDLENBQUM7d0JBQUMsT0FBTyxDQUFNLEVBQUUsQ0FBQzs0QkFDaEIsT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsMkNBQTJDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQzt3QkFDcEUsQ0FBQztnQkFDTCxDQUFDO1lBQ0gsQ0FBQztZQUNELElBQUksR0FBRyxFQUFFLENBQUM7Z0JBQ1IsTUFBTSxHQUFHLE1BQU0sSUFBSSxFQUFFLENBQUM7Z0JBQ3RCLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxHQUFVLENBQUM7WUFDNUIsQ0FBQztRQUNILENBQUM7SUFDSCxDQUFDO0lBRUQsT0FBTyxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksb0JBQW9CLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztBQUMvRCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTW9kZWxFcnJvckRlZmluaXRpb24gfSBmcm9tIFwiLi9Nb2RlbEVycm9yRGVmaW5pdGlvblwiO1xuaW1wb3J0IHsgRGVjb3JhdG9yTWV0YWRhdGEsIFJlZmxlY3Rpb24gfSBmcm9tIFwiQGRlY2FmLXRzL3JlZmxlY3Rpb25cIjtcbmltcG9ydCB7IE1vZGVsS2V5cyB9IGZyb20gXCIuLi91dGlscy9jb25zdGFudHNcIjtcbmltcG9ydCB7IHNmIH0gZnJvbSBcIi4uL3V0aWxzL3N0cmluZ3NcIjtcbmltcG9ydCB7IFJlc2VydmVkTW9kZWxzIH0gZnJvbSBcIi4vY29uc3RhbnRzXCI7XG5pbXBvcnQgeyBWQUxJREFUSU9OX1BBUkVOVF9LRVkgfSBmcm9tIFwiLi4vY29uc3RhbnRzXCI7XG5pbXBvcnQgeyBWYWxpZGF0YWJsZSB9IGZyb20gXCIuL3R5cGVzXCI7XG5pbXBvcnQgeyBpc01vZGVsLCBNb2RlbCB9IGZyb20gXCIuL01vZGVsXCI7XG5pbXBvcnQgeyBWYWxpZGF0aW9uIH0gZnJvbSBcIi4uL3ZhbGlkYXRpb24vVmFsaWRhdGlvblwiO1xuaW1wb3J0IHsgVmFsaWRhdGlvbktleXMgfSBmcm9tIFwiLi4vdmFsaWRhdGlvbi9WYWxpZGF0b3JzL2NvbnN0YW50c1wiO1xuaW1wb3J0IHtcbiAgTW9kZWxFcnJvcnMsXG4gIFZhbGlkYXRpb25Qcm9wZXJ0eURlY29yYXRvckRlZmluaXRpb24sXG4gIFZhbGlkYXRvck9wdGlvbnMsXG59IGZyb20gXCIuLi92YWxpZGF0aW9uL3R5cGVzXCI7XG5cbi8qKlxuICogQHN1bW1hcnkgQW5hbHlzZXMgdGhlIGRlY29yYXRpb25zIG9mIHRoZSBwcm9wZXJ0aWVzIGFuZCB2YWxpZGF0ZXMgdGhlIG9iaiBhY2NvcmRpbmcgdG8gdGhlbVxuICpcbiAqIEB0eXBlZGVmIFQgZXh0ZW5kcyBNb2RlbFxuICogQHByb3Age1R9IG9iaiBNb2RlbCBvYmplY3QgdG8gdmFsaWRhdGVcbiAqIEBwcm9wIHtzdHJpbmdbXX0gW3Byb3BzVG9JZ25vcmVdIG9iamVjdCBwcm9wZXJ0aWVzIHRvIGlnbm9yZSBpbiB0aGUgdmFsaWRhdGlvblxuICpcbiAqIEBmdW5jdGlvbiB2YWxpZGF0ZVxuICogQG1lbWJlck9mIG1vZHVsZTpkZWNvcmF0b3ItdmFsaWRhdGlvbi5WYWxpZGF0aW9uXG4gKiBAY2F0ZWdvcnkgVmFsaWRhdGlvblxuICovXG5leHBvcnQgZnVuY3Rpb24gdmFsaWRhdGU8VCBleHRlbmRzIE1vZGVsPihcbiAgb2JqOiBULFxuICAuLi5wcm9wc1RvSWdub3JlOiBzdHJpbmdbXVxuKTogTW9kZWxFcnJvckRlZmluaXRpb24gfCB1bmRlZmluZWQge1xuICBjb25zdCBkZWNvcmF0ZWRQcm9wZXJ0aWVzOiBWYWxpZGF0aW9uUHJvcGVydHlEZWNvcmF0b3JEZWZpbml0aW9uW10gPSBbXTtcbiAgZm9yIChjb25zdCBwcm9wIGluIG9iailcbiAgICBpZiAoXG4gICAgICBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwob2JqLCBwcm9wKSAmJlxuICAgICAgcHJvcHNUb0lnbm9yZS5pbmRleE9mKHByb3ApID09PSAtMVxuICAgIClcbiAgICAgIGRlY29yYXRlZFByb3BlcnRpZXMucHVzaChcbiAgICAgICAgUmVmbGVjdGlvbi5nZXRQcm9wZXJ0eURlY29yYXRvcnMoXG4gICAgICAgICAgVmFsaWRhdGlvbktleXMuUkVGTEVDVCxcbiAgICAgICAgICBvYmosXG4gICAgICAgICAgcHJvcFxuICAgICAgICApIGFzIFZhbGlkYXRpb25Qcm9wZXJ0eURlY29yYXRvckRlZmluaXRpb25cbiAgICAgICk7XG5cbiAgbGV0IHJlc3VsdDogTW9kZWxFcnJvcnMgfCB1bmRlZmluZWQgPSB1bmRlZmluZWQ7XG5cbiAgZm9yIChjb25zdCBkZWNvcmF0ZWRQcm9wZXJ0eSBvZiBkZWNvcmF0ZWRQcm9wZXJ0aWVzKSB7XG4gICAgY29uc3QgeyBwcm9wLCBkZWNvcmF0b3JzIH0gPSBkZWNvcmF0ZWRQcm9wZXJ0eTtcblxuICAgIGlmICghZGVjb3JhdG9ycyB8fCAhZGVjb3JhdG9ycy5sZW5ndGgpIGNvbnRpbnVlO1xuXG4gICAgY29uc3QgZGVmYXVsdFR5cGVEZWNvcmF0b3I6IERlY29yYXRvck1ldGFkYXRhID0gZGVjb3JhdG9yc1swXTtcblxuICAgIC8vIHRyaWVzIHRvIGZpbmQgYW55IHR5cGUgZGVjb3JhdG9ycyBvciBvdGhlciBkZWNvcmF0b3JzIHRoYXQgYWxyZWFkeSBlbmZvcmNlIHR5cGUgKHRoZSBvbmVzIHdpdGggdGhlIGFsbG93ZWQgdHlwZXMgcHJvcGVydHkgZGVmaW5lZCkuIGlmIHNvLCBza2lwIHRoZSBkZWZhdWx0IHR5cGUgdmVyaWZpY2F0aW9uXG4gICAgaWYgKFxuICAgICAgZGVjb3JhdG9ycy5maW5kKChkKSA9PiB7XG4gICAgICAgIGlmIChkLmtleSA9PT0gVmFsaWRhdGlvbktleXMuVFlQRSkgcmV0dXJuIHRydWU7XG4gICAgICAgIHJldHVybiAhIWQucHJvcHMudHlwZXM/LmZpbmQoXG4gICAgICAgICAgKHQpID0+IHQgPT09IGRlZmF1bHRUeXBlRGVjb3JhdG9yLnByb3BzLm5hbWVcbiAgICAgICAgKTtcbiAgICAgIH0pXG4gICAgKSB7XG4gICAgICBkZWNvcmF0b3JzLnNoaWZ0KCk7IC8vIHJlbW92ZSB0aGUgZGVzaWduOnR5cGUgZGVjb3JhdG9yLCBzaW5jZSB0aGUgdHlwZSB3aWxsIGFscmVhZHkgYmUgY2hlY2tlZFxuICAgIH1cblxuICAgIGxldCBlcnJzOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmcgfCB1bmRlZmluZWQ+IHwgdW5kZWZpbmVkID0gdW5kZWZpbmVkO1xuXG4gICAgZm9yIChjb25zdCBkZWNvcmF0b3Igb2YgZGVjb3JhdG9ycykge1xuICAgICAgY29uc3QgdmFsaWRhdG9yID0gVmFsaWRhdGlvbi5nZXQoZGVjb3JhdG9yLmtleSk7XG4gICAgICBpZiAoIXZhbGlkYXRvcikge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYE1pc3NpbmcgdmFsaWRhdG9yIGZvciAke2RlY29yYXRvci5rZXl9YCk7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGRlY29yYXRvclByb3BzID1cbiAgICAgICAgZGVjb3JhdG9yLmtleSA9PT0gTW9kZWxLZXlzLlRZUEVcbiAgICAgICAgICA/IFtkZWNvcmF0b3IucHJvcHNdXG4gICAgICAgICAgOiBkZWNvcmF0b3IucHJvcHMgfHwge307XG5cbiAgICAgIGNvbnN0IGVycjogc3RyaW5nIHwgdW5kZWZpbmVkID0gdmFsaWRhdG9yLmhhc0Vycm9ycyhcbiAgICAgICAgKG9iaiBhcyBhbnkpW3Byb3AudG9TdHJpbmcoKV0sXG4gICAgICAgIGRlY29yYXRvclByb3BzIGFzIFZhbGlkYXRvck9wdGlvbnMsXG4gICAgICAgIG9iaiAvLyBUT0RPOiBBc3NlcnQgdHlwZSBhbmQgZGVlcCBPYmplY3QuZnJlZXplXG4gICAgICApO1xuXG4gICAgICBpZiAoZXJyKSB7XG4gICAgICAgIGVycnMgPSBlcnJzIHx8IHt9O1xuICAgICAgICBlcnJzW2RlY29yYXRvci5rZXldID0gZXJyO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChlcnJzKSB7XG4gICAgICByZXN1bHQgPSByZXN1bHQgfHwge307XG4gICAgICByZXN1bHRbZGVjb3JhdGVkUHJvcGVydHkucHJvcC50b1N0cmluZygpXSA9IGVycnM7XG4gICAgfVxuICB9XG5cbiAgLy8gdGVzdHMgbmVzdGVkIGNsYXNzZXNcbiAgZm9yIChjb25zdCBwcm9wIG9mIE9iamVjdC5rZXlzKG9iaikuZmlsdGVyKChrKSA9PiAhcmVzdWx0IHx8ICFyZXN1bHRba10pKSB7XG4gICAgbGV0IGVycjogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICAgIC8vIGlmIGEgbmVzdGVkIE1vZGVsXG4gICAgY29uc3QgYWxsRGVjb3JhdG9ycyA9IFJlZmxlY3Rpb24uZ2V0UHJvcGVydHlEZWNvcmF0b3JzKFxuICAgICAgVmFsaWRhdGlvbktleXMuUkVGTEVDVCxcbiAgICAgIG9iaixcbiAgICAgIHByb3BcbiAgICApLmRlY29yYXRvcnM7XG4gICAgY29uc3QgZGVjb3JhdG9ycyA9IFJlZmxlY3Rpb24uZ2V0UHJvcGVydHlEZWNvcmF0b3JzKFxuICAgICAgVmFsaWRhdGlvbktleXMuUkVGTEVDVCxcbiAgICAgIG9iaixcbiAgICAgIHByb3BcbiAgICApLmRlY29yYXRvcnMuZmlsdGVyKFxuICAgICAgKGQ6IHsga2V5OiBzdHJpbmcgfSkgPT5cbiAgICAgICAgW01vZGVsS2V5cy5UWVBFLCBWYWxpZGF0aW9uS2V5cy5UWVBFIGFzIHN0cmluZ10uaW5kZXhPZihkLmtleSkgIT09IC0xXG4gICAgKTtcbiAgICBpZiAoIWRlY29yYXRvcnMgfHwgIWRlY29yYXRvcnMubGVuZ3RoKSBjb250aW51ZTtcbiAgICBjb25zdCBkZWMgPSBkZWNvcmF0b3JzLnBvcCgpIGFzIERlY29yYXRvck1ldGFkYXRhO1xuICAgIGNvbnN0IGNsYXp6ID0gZGVjLnByb3BzLm5hbWVcbiAgICAgID8gW2RlYy5wcm9wcy5uYW1lXVxuICAgICAgOiBBcnJheS5pc0FycmF5KGRlYy5wcm9wcy5jdXN0b21UeXBlcylcbiAgICAgICAgPyBkZWMucHJvcHMuY3VzdG9tVHlwZXNcbiAgICAgICAgOiBbZGVjLnByb3BzLmN1c3RvbVR5cGVzXTtcbiAgICBjb25zdCByZXNlcnZlZCA9IE9iamVjdC52YWx1ZXMoUmVzZXJ2ZWRNb2RlbHMpLm1hcCgodikgPT5cbiAgICAgIHYudG9Mb3dlckNhc2UoKVxuICAgICkgYXMgc3RyaW5nW107XG5cbiAgICBmb3IgKGNvbnN0IGMgb2YgY2xhenopIHtcbiAgICAgIGlmIChyZXNlcnZlZC5pbmRleE9mKGMudG9Mb3dlckNhc2UoKSkgPT09IC0xKSB7XG4gICAgICAgIGNvbnN0IHR5cGVEZWNvcmF0b3JLZXkgPSBBcnJheS5pc0FycmF5KChvYmogYXMgYW55KVtwcm9wXSlcbiAgICAgICAgICA/IFZhbGlkYXRpb25LZXlzLkxJU1RcbiAgICAgICAgICA6IFZhbGlkYXRpb25LZXlzLlRZUEU7XG4gICAgICAgIGNvbnN0IHR5cGVzOiBhbnkgPVxuICAgICAgICAgIGFsbERlY29yYXRvcnMuZmluZChcbiAgICAgICAgICAgIChkOiB7IGtleTogc3RyaW5nIH0pID0+IGQua2V5ID09PSB0eXBlRGVjb3JhdG9yS2V5XG4gICAgICAgICAgKSB8fCB7fTtcbiAgICAgICAgbGV0IGFsbG93ZWRUeXBlczogc3RyaW5nW10gPSBbXTtcbiAgICAgICAgaWYgKHR5cGVzICYmIHR5cGVzLnByb3BzKSB7XG4gICAgICAgICAgY29uc3QgY3VzdG9tVHlwZXMgPSBBcnJheS5pc0FycmF5KChvYmogYXMgYW55KVtwcm9wXSlcbiAgICAgICAgICAgID8gdHlwZXMucHJvcHMuY2xhc3NcbiAgICAgICAgICAgIDogdHlwZXMucHJvcHMuY3VzdG9tVHlwZXM7XG4gICAgICAgICAgaWYgKGN1c3RvbVR5cGVzKVxuICAgICAgICAgICAgYWxsb3dlZFR5cGVzID0gQXJyYXkuaXNBcnJheShjdXN0b21UeXBlcylcbiAgICAgICAgICAgICAgPyBjdXN0b21UeXBlcy5tYXAoKHQpID0+IGAke3R9YC50b0xvd2VyQ2FzZSgpKVxuICAgICAgICAgICAgICA6IFtjdXN0b21UeXBlcy50b0xvd2VyQ2FzZSgpXTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHZhbGlkYXRlID0gKHByb3A6IHN0cmluZywgdmFsdWU6IGFueSk6IGFueSA9PiB7XG4gICAgICAgICAgaWYgKHR5cGVvZiB2YWx1ZSAhPT0gXCJvYmplY3RcIiAmJiB0eXBlb2YgdmFsdWUgIT09IFwiZnVuY3Rpb25cIilcbiAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG5cbiAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgaWYgKHZhbHVlICYmICF2YWx1ZVtWQUxJREFUSU9OX1BBUkVOVF9LRVldKVxuICAgICAgICAgICAgICB2YWx1ZVtWQUxJREFUSU9OX1BBUkVOVF9LRVldID0gb2JqOyAvLyBUT0RPOiBmcmVlemU/XG5cbiAgICAgICAgICAgIHJldHVybiBpc01vZGVsKHZhbHVlKVxuICAgICAgICAgICAgICA/IHZhbHVlLmhhc0Vycm9ycygpXG4gICAgICAgICAgICAgIDogYWxsb3dlZFR5cGVzLmluY2x1ZGVzKHR5cGVvZiB2YWx1ZSlcbiAgICAgICAgICAgICAgICA/IHVuZGVmaW5lZFxuICAgICAgICAgICAgICAgIDogXCJWYWx1ZSBoYXMgbm8gdmFsaWRhdGFibGUgdHlwZVwiO1xuICAgICAgICAgIH0gZmluYWxseSB7XG4gICAgICAgICAgICBpZiAodmFsdWUgJiYgdmFsdWVbVkFMSURBVElPTl9QQVJFTlRfS0VZXSlcbiAgICAgICAgICAgICAgZGVsZXRlIHZhbHVlW1ZBTElEQVRJT05fUEFSRU5UX0tFWV07XG4gICAgICAgICAgfVxuICAgICAgICB9O1xuXG4gICAgICAgIHN3aXRjaCAoYykge1xuICAgICAgICAgIGNhc2UgQXJyYXkubmFtZTpcbiAgICAgICAgICBjYXNlIFNldC5uYW1lOlxuICAgICAgICAgICAgaWYgKGFsbERlY29yYXRvcnMubGVuZ3RoKSB7XG4gICAgICAgICAgICAgIGNvbnN0IGxpc3REZWMgPSBhbGxEZWNvcmF0b3JzLmZpbmQoXG4gICAgICAgICAgICAgICAgKGQ6IHsga2V5OiBzdHJpbmcgfSkgPT4gZC5rZXkgPT09IFZhbGlkYXRpb25LZXlzLkxJU1RcbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgaWYgKGxpc3REZWMpIHtcbiAgICAgICAgICAgICAgICBlcnIgPSAoXG4gICAgICAgICAgICAgICAgICBjID09PSBBcnJheS5uYW1lXG4gICAgICAgICAgICAgICAgICAgID8gKG9iaiBhcyBSZWNvcmQ8c3RyaW5nLCBhbnk+KVtwcm9wXVxuICAgICAgICAgICAgICAgICAgICA6IC8vIElmIGl0J3MgYSBTZXRcbiAgICAgICAgICAgICAgICAgICAgICAob2JqIGFzIFJlY29yZDxzdHJpbmcsIGFueT4pW3Byb3BdLnZhbHVlcygpXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgLm1hcCgodjogVmFsaWRhdGFibGUpID0+IHZhbGlkYXRlKHByb3AsIHYpKVxuICAgICAgICAgICAgICAgICAgLmZpbHRlcigoZTogYW55KSA9PiAhIWUpIGFzIGFueTtcbiAgICAgICAgICAgICAgICBpZiAoIWVycj8ubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICAvLyBpZiB0aGUgcmVzdWx0IGlzIGFuIGVtcHR5IGxpc3QuLi5cbiAgICAgICAgICAgICAgICAgIGVyciA9IHVuZGVmaW5lZDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICBpZiAoKG9iaiBhcyBSZWNvcmQ8c3RyaW5nLCBhbnk+KVtwcm9wXSlcbiAgICAgICAgICAgICAgICBlcnIgPSB2YWxpZGF0ZShwcm9wLCAob2JqIGFzIGFueSlbcHJvcF0pO1xuICAgICAgICAgICAgfSBjYXRjaCAoZTogYW55KSB7XG4gICAgICAgICAgICAgIGNvbnNvbGUud2FybihzZihcIk1vZGVsIHNob3VsZCBiZSB2YWxpZGF0YWJsZSBidXQgaXRzIG5vdDogXCIgKyBlKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmIChlcnIpIHtcbiAgICAgICAgcmVzdWx0ID0gcmVzdWx0IHx8IHt9O1xuICAgICAgICByZXN1bHRbcHJvcF0gPSBlcnIgYXMgYW55O1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiByZXN1bHQgPyBuZXcgTW9kZWxFcnJvckRlZmluaXRpb24ocmVzdWx0KSA6IHVuZGVmaW5lZDtcbn1cbiJdfQ==
|
|
@@ -1,23 +1,15 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* @
|
|
3
|
-
* @summary Defines the various Model keys used for reflection and metadata storage.
|
|
4
|
-
* These keys are used throughout the library to store and retrieve metadata about models,
|
|
5
|
-
* their properties, and their behavior.
|
|
2
|
+
* @summary Defines the various Model keys used for reflection
|
|
6
3
|
*
|
|
7
|
-
* @property {string} REFLECT
|
|
8
|
-
* @property {string} TYPE
|
|
9
|
-
* @property {string} PARAMS
|
|
10
|
-
* @property {string} RETURN
|
|
11
|
-
* @property {string} MODEL
|
|
12
|
-
* @property {string} ANCHOR
|
|
13
|
-
* @property {string} CONSTRUCTION - Key for storing construction information
|
|
14
|
-
* @property {string} ATTRIBUTE - Key for storing attribute metadata
|
|
15
|
-
* @property {string} HASHING - Key for storing hashing configuration
|
|
16
|
-
* @property {string} SERIALIZATION - Key for storing serialization configuration
|
|
4
|
+
* @property {string} REFLECT prefix to all other keys
|
|
5
|
+
* @property {string} TYPE type key
|
|
6
|
+
* @property {string} PARAMS method params key
|
|
7
|
+
* @property {string} RETURN method return key
|
|
8
|
+
* @property {string} MODEL model key
|
|
9
|
+
* @property {string} ANCHOR anchor key. will serve as a ghost property in the model
|
|
17
10
|
*
|
|
18
|
-
* @
|
|
19
|
-
* @
|
|
20
|
-
* @memberOf module:decorator-validation
|
|
11
|
+
* @constant ModelKeys
|
|
12
|
+
* @memberOf module:decorator-validation.Model
|
|
21
13
|
* @category Model
|
|
22
14
|
*/
|
|
23
15
|
export declare enum ModelKeys {
|
|
@@ -32,13 +24,3 @@ export declare enum ModelKeys {
|
|
|
32
24
|
HASHING = "hashing",
|
|
33
25
|
SERIALIZATION = "serialization"
|
|
34
26
|
}
|
|
35
|
-
/**
|
|
36
|
-
* @description Default flavour identifier for the decorator system
|
|
37
|
-
* @summary Defines the default flavour used by the Decoration class when no specific flavour is provided.
|
|
38
|
-
* This constant is used throughout the library as the fallback flavour for decorators.
|
|
39
|
-
*
|
|
40
|
-
* @const {string}
|
|
41
|
-
* @memberOf module:decorator-validation
|
|
42
|
-
* @category Model
|
|
43
|
-
*/
|
|
44
|
-
export declare const DefaultFlavour = "decaf";
|
|
@@ -1,23 +1,15 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* @
|
|
3
|
-
* @summary Defines the various Model keys used for reflection and metadata storage.
|
|
4
|
-
* These keys are used throughout the library to store and retrieve metadata about models,
|
|
5
|
-
* their properties, and their behavior.
|
|
2
|
+
* @summary Defines the various Model keys used for reflection
|
|
6
3
|
*
|
|
7
|
-
* @property {string} REFLECT
|
|
8
|
-
* @property {string} TYPE
|
|
9
|
-
* @property {string} PARAMS
|
|
10
|
-
* @property {string} RETURN
|
|
11
|
-
* @property {string} MODEL
|
|
12
|
-
* @property {string} ANCHOR
|
|
13
|
-
* @property {string} CONSTRUCTION - Key for storing construction information
|
|
14
|
-
* @property {string} ATTRIBUTE - Key for storing attribute metadata
|
|
15
|
-
* @property {string} HASHING - Key for storing hashing configuration
|
|
16
|
-
* @property {string} SERIALIZATION - Key for storing serialization configuration
|
|
4
|
+
* @property {string} REFLECT prefix to all other keys
|
|
5
|
+
* @property {string} TYPE type key
|
|
6
|
+
* @property {string} PARAMS method params key
|
|
7
|
+
* @property {string} RETURN method return key
|
|
8
|
+
* @property {string} MODEL model key
|
|
9
|
+
* @property {string} ANCHOR anchor key. will serve as a ghost property in the model
|
|
17
10
|
*
|
|
18
|
-
* @
|
|
19
|
-
* @
|
|
20
|
-
* @memberOf module:decorator-validation
|
|
11
|
+
* @constant ModelKeys
|
|
12
|
+
* @memberOf module:decorator-validation.Model
|
|
21
13
|
* @category Model
|
|
22
14
|
*/
|
|
23
15
|
export var ModelKeys;
|
|
@@ -33,14 +25,4 @@ export var ModelKeys;
|
|
|
33
25
|
ModelKeys["HASHING"] = "hashing";
|
|
34
26
|
ModelKeys["SERIALIZATION"] = "serialization";
|
|
35
27
|
})(ModelKeys || (ModelKeys = {}));
|
|
36
|
-
|
|
37
|
-
* @description Default flavour identifier for the decorator system
|
|
38
|
-
* @summary Defines the default flavour used by the Decoration class when no specific flavour is provided.
|
|
39
|
-
* This constant is used throughout the library as the fallback flavour for decorators.
|
|
40
|
-
*
|
|
41
|
-
* @const {string}
|
|
42
|
-
* @memberOf module:decorator-validation
|
|
43
|
-
* @category Model
|
|
44
|
-
*/
|
|
45
|
-
export const DefaultFlavour = "decaf";
|
|
46
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uc3RhbnRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3V0aWxzL2NvbnN0YW50cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBcUJHO0FBQ0gsTUFBTSxDQUFOLElBQVksU0FXWDtBQVhELFdBQVksU0FBUztJQUNuQixxQ0FBd0IsQ0FBQTtJQUN4QixpQ0FBb0IsQ0FBQTtJQUNwQix5Q0FBNEIsQ0FBQTtJQUM1Qix5Q0FBNEIsQ0FBQTtJQUM1Qiw0QkFBZSxDQUFBO0lBQ2YsK0JBQWtCLENBQUE7SUFDbEIsNENBQStCLENBQUE7SUFDL0IsdUNBQTBCLENBQUE7SUFDMUIsZ0NBQW1CLENBQUE7SUFDbkIsNENBQStCLENBQUE7QUFDakMsQ0FBQyxFQVhXLFNBQVMsS0FBVCxTQUFTLFFBV3BCO0FBRUQ7Ozs7Ozs7O0dBUUc7QUFDSCxNQUFNLENBQUMsTUFBTSxjQUFjLEdBQUcsT0FBTyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAZGVzY3JpcHRpb24gRW51bSBjb250YWluaW5nIG1ldGFkYXRhIGtleXMgdXNlZCBmb3IgcmVmbGVjdGlvbiBpbiB0aGUgbW9kZWwgc3lzdGVtXG4gKiBAc3VtbWFyeSBEZWZpbmVzIHRoZSB2YXJpb3VzIE1vZGVsIGtleXMgdXNlZCBmb3IgcmVmbGVjdGlvbiBhbmQgbWV0YWRhdGEgc3RvcmFnZS5cbiAqIFRoZXNlIGtleXMgYXJlIHVzZWQgdGhyb3VnaG91dCB0aGUgbGlicmFyeSB0byBzdG9yZSBhbmQgcmV0cmlldmUgbWV0YWRhdGEgYWJvdXQgbW9kZWxzLFxuICogdGhlaXIgcHJvcGVydGllcywgYW5kIHRoZWlyIGJlaGF2aW9yLlxuICpcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBSRUZMRUNUIC0gUHJlZml4IHRvIGFsbCBvdGhlciBrZXlzLCB1c2VkIGFzIGEgbmFtZXNwYWNlXG4gKiBAcHJvcGVydHkge3N0cmluZ30gVFlQRSAtIEtleSBmb3Igc3RvcmluZyBkZXNpZ24gdHlwZSBpbmZvcm1hdGlvblxuICogQHByb3BlcnR5IHtzdHJpbmd9IFBBUkFNUyAtIEtleSBmb3Igc3RvcmluZyBtZXRob2QgcGFyYW1ldGVyIHR5cGVzXG4gKiBAcHJvcGVydHkge3N0cmluZ30gUkVUVVJOIC0gS2V5IGZvciBzdG9yaW5nIG1ldGhvZCByZXR1cm4gdHlwZVxuICogQHByb3BlcnR5IHtzdHJpbmd9IE1PREVMIC0gS2V5IGZvciBpZGVudGlmeWluZyBtb2RlbCBtZXRhZGF0YVxuICogQHByb3BlcnR5IHtzdHJpbmd9IEFOQ0hPUiAtIEFuY2hvciBrZXkgdGhhdCBzZXJ2ZXMgYXMgYSBnaG9zdCBwcm9wZXJ0eSBpbiB0aGUgbW9kZWxcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBDT05TVFJVQ1RJT04gLSBLZXkgZm9yIHN0b3JpbmcgY29uc3RydWN0aW9uIGluZm9ybWF0aW9uXG4gKiBAcHJvcGVydHkge3N0cmluZ30gQVRUUklCVVRFIC0gS2V5IGZvciBzdG9yaW5nIGF0dHJpYnV0ZSBtZXRhZGF0YVxuICogQHByb3BlcnR5IHtzdHJpbmd9IEhBU0hJTkcgLSBLZXkgZm9yIHN0b3JpbmcgaGFzaGluZyBjb25maWd1cmF0aW9uXG4gKiBAcHJvcGVydHkge3N0cmluZ30gU0VSSUFMSVpBVElPTiAtIEtleSBmb3Igc3RvcmluZyBzZXJpYWxpemF0aW9uIGNvbmZpZ3VyYXRpb25cbiAqXG4gKiBAcmVhZG9ubHlcbiAqIEBlbnVtIHtzdHJpbmd9XG4gKiBAbWVtYmVyT2YgbW9kdWxlOmRlY29yYXRvci12YWxpZGF0aW9uXG4gKiBAY2F0ZWdvcnkgTW9kZWxcbiAqL1xuZXhwb3J0IGVudW0gTW9kZWxLZXlzIHtcbiAgUkVGTEVDVCA9IFwiZGVjYWYubW9kZWwuXCIsXG4gIFRZUEUgPSBcImRlc2lnbjp0eXBlXCIsXG4gIFBBUkFNUyA9IFwiZGVzaWduOnBhcmFtdHlwZXNcIixcbiAgUkVUVVJOID0gXCJkZXNpZ246cmV0dXJudHlwZVwiLFxuICBNT0RFTCA9IFwibW9kZWxcIixcbiAgQU5DSE9SID0gXCJfX21vZGVsXCIsXG4gIENPTlNUUlVDVElPTiA9IFwiY29uc3RydWN0ZWQtYnlcIixcbiAgQVRUUklCVVRFID0gXCJfX2F0dHJpYnV0ZXNcIixcbiAgSEFTSElORyA9IFwiaGFzaGluZ1wiLFxuICBTRVJJQUxJWkFUSU9OID0gXCJzZXJpYWxpemF0aW9uXCIsXG59XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIERlZmF1bHQgZmxhdm91ciBpZGVudGlmaWVyIGZvciB0aGUgZGVjb3JhdG9yIHN5c3RlbVxuICogQHN1bW1hcnkgRGVmaW5lcyB0aGUgZGVmYXVsdCBmbGF2b3VyIHVzZWQgYnkgdGhlIERlY29yYXRpb24gY2xhc3Mgd2hlbiBubyBzcGVjaWZpYyBmbGF2b3VyIGlzIHByb3ZpZGVkLlxuICogVGhpcyBjb25zdGFudCBpcyB1c2VkIHRocm91Z2hvdXQgdGhlIGxpYnJhcnkgYXMgdGhlIGZhbGxiYWNrIGZsYXZvdXIgZm9yIGRlY29yYXRvcnMuXG4gKlxuICogQGNvbnN0IHtzdHJpbmd9XG4gKiBAbWVtYmVyT2YgbW9kdWxlOmRlY29yYXRvci12YWxpZGF0aW9uXG4gKiBAY2F0ZWdvcnkgTW9kZWxcbiAqL1xuZXhwb3J0IGNvbnN0IERlZmF1bHRGbGF2b3VyID0gXCJkZWNhZlwiO1xuIl19
|
|
28
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uc3RhbnRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3V0aWxzL2NvbnN0YW50cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7OztHQWFHO0FBQ0gsTUFBTSxDQUFOLElBQVksU0FXWDtBQVhELFdBQVksU0FBUztJQUNuQixxQ0FBd0IsQ0FBQTtJQUN4QixpQ0FBb0IsQ0FBQTtJQUNwQix5Q0FBNEIsQ0FBQTtJQUM1Qix5Q0FBNEIsQ0FBQTtJQUM1Qiw0QkFBZSxDQUFBO0lBQ2YsK0JBQWtCLENBQUE7SUFDbEIsNENBQStCLENBQUE7SUFDL0IsdUNBQTBCLENBQUE7SUFDMUIsZ0NBQW1CLENBQUE7SUFDbkIsNENBQStCLENBQUE7QUFDakMsQ0FBQyxFQVhXLFNBQVMsS0FBVCxTQUFTLFFBV3BCIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAc3VtbWFyeSBEZWZpbmVzIHRoZSB2YXJpb3VzIE1vZGVsIGtleXMgdXNlZCBmb3IgcmVmbGVjdGlvblxuICpcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBSRUZMRUNUIHByZWZpeCB0byBhbGwgb3RoZXIga2V5c1xuICogQHByb3BlcnR5IHtzdHJpbmd9IFRZUEUgdHlwZSBrZXlcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBQQVJBTVMgbWV0aG9kIHBhcmFtcyBrZXlcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBSRVRVUk4gbWV0aG9kIHJldHVybiBrZXlcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBNT0RFTCBtb2RlbCBrZXlcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBBTkNIT1IgYW5jaG9yIGtleS4gd2lsbCBzZXJ2ZSBhcyBhIGdob3N0IHByb3BlcnR5IGluIHRoZSBtb2RlbFxuICpcbiAqIEBjb25zdGFudCBNb2RlbEtleXNcbiAqIEBtZW1iZXJPZiBtb2R1bGU6ZGVjb3JhdG9yLXZhbGlkYXRpb24uTW9kZWxcbiAqIEBjYXRlZ29yeSBNb2RlbFxuICovXG5leHBvcnQgZW51bSBNb2RlbEtleXMge1xuICBSRUZMRUNUID0gXCJkZWNhZi5tb2RlbC5cIixcbiAgVFlQRSA9IFwiZGVzaWduOnR5cGVcIixcbiAgUEFSQU1TID0gXCJkZXNpZ246cGFyYW10eXBlc1wiLFxuICBSRVRVUk4gPSBcImRlc2lnbjpyZXR1cm50eXBlXCIsXG4gIE1PREVMID0gXCJtb2RlbFwiLFxuICBBTkNIT1IgPSBcIl9fbW9kZWxcIixcbiAgQ09OU1RSVUNUSU9OID0gXCJjb25zdHJ1Y3RlZC1ieVwiLFxuICBBVFRSSUJVVEUgPSBcIl9fYXR0cmlidXRlc1wiLFxuICBIQVNISU5HID0gXCJoYXNoaW5nXCIsXG4gIFNFUklBTElaQVRJT04gPSBcInNlcmlhbGl6YXRpb25cIixcbn1cbiJdfQ==
|
package/lib/esm/utils/dates.d.ts
CHANGED
|
@@ -7,32 +7,22 @@ import "reflect-metadata";
|
|
|
7
7
|
* @return {Date} the date from the format or the standard new Date({@prop date}) if the string couldn't be parsed (are you sure the format matches the string?)
|
|
8
8
|
*
|
|
9
9
|
* @function dateFromFormat
|
|
10
|
-
* @memberOf module:decorator-validation
|
|
11
|
-
* @category
|
|
10
|
+
* @memberOf module:decorator-validation.Utils.Dates
|
|
11
|
+
* @category Format
|
|
12
12
|
*/
|
|
13
13
|
export declare function dateFromFormat(date: string, format: string): Date;
|
|
14
14
|
/**
|
|
15
|
-
* @
|
|
16
|
-
* @
|
|
17
|
-
*
|
|
18
|
-
*
|
|
19
|
-
* @
|
|
20
|
-
* @param {string} [format] The format string to use for formatting the date
|
|
21
|
-
* @return {Date|undefined} The modified Date object or undefined if no date was provided
|
|
22
|
-
* @function bindDateToString
|
|
23
|
-
* @memberOf module:decorator-validation
|
|
24
|
-
* @category Model
|
|
15
|
+
* @summary Binds a date format to a string
|
|
16
|
+
* @param {Date} [date]
|
|
17
|
+
* @param {string} [format]
|
|
18
|
+
* @memberOf module:decorator-validation.Utils.Format
|
|
19
|
+
* @category Utilities
|
|
25
20
|
*/
|
|
26
21
|
export declare function bindDateToString(date: Date | undefined, format: string): Date | undefined;
|
|
27
22
|
/**
|
|
28
|
-
* @
|
|
29
|
-
* @
|
|
30
|
-
*
|
|
31
|
-
* that the date is not NaN, which can happen with invalid date strings.
|
|
32
|
-
* @param {any} date The value to check
|
|
33
|
-
* @return {boolean} True if the value is a valid Date object, false otherwise
|
|
34
|
-
* @function isValidDate
|
|
35
|
-
* @memberOf module:decorator-validation
|
|
23
|
+
* @summary Helper function to be used instead of instanceOf Date
|
|
24
|
+
* @param date
|
|
25
|
+
* @memberOf module:decorator-validation.Utils.Dates
|
|
36
26
|
* @category Validation
|
|
37
27
|
*/
|
|
38
28
|
export declare function isValidDate(date: any): boolean;
|
|
@@ -43,8 +33,8 @@ export declare function isValidDate(date: any): boolean;
|
|
|
43
33
|
* @return {string}
|
|
44
34
|
*
|
|
45
35
|
* @function twoDigitPad
|
|
46
|
-
* @memberOf module:decorator-validation
|
|
47
|
-
* @category
|
|
36
|
+
* @memberOf module:decorator-validation.Utils.Format
|
|
37
|
+
* @category Format
|
|
48
38
|
*/
|
|
49
39
|
export declare function twoDigitPad(num: number): string;
|
|
50
40
|
/**
|
|
@@ -72,15 +62,15 @@ export declare function twoDigitPad(num: number): string;
|
|
|
72
62
|
* @return {string} the formatted date
|
|
73
63
|
*
|
|
74
64
|
* @function formatDate
|
|
75
|
-
* @memberOf module:decorator-validation
|
|
76
|
-
* @category
|
|
65
|
+
* @memberOf module:decorator-validation.Utils.Dates
|
|
66
|
+
* @category Format
|
|
77
67
|
*/
|
|
78
68
|
export declare function formatDate(date: Date, patternStr?: string): string;
|
|
79
69
|
/**
|
|
80
70
|
* @summary Parses a date from a specified format
|
|
81
71
|
* @param {string} format
|
|
82
72
|
* @param {string | Date | number} [v]
|
|
83
|
-
* @memberOf module:decorator-validation
|
|
84
|
-
* @category
|
|
73
|
+
* @memberOf module:decorator-validation.Utils.Dates
|
|
74
|
+
* @category Format
|
|
85
75
|
*/
|
|
86
76
|
export declare function parseDate(format: string, v?: string | Date | number): Date | undefined;
|