@decaf-ts/decorator-validation 1.6.5 → 1.7.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/decorator-validation.cjs +1199 -386
- package/dist/decorator-validation.esm.cjs +1155 -341
- package/lib/constants/index.cjs +1 -1
- package/lib/esm/index.d.ts +5 -37
- package/lib/esm/index.js +6 -38
- package/lib/esm/model/Model.d.ts +107 -35
- package/lib/esm/model/Model.js +110 -45
- 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 +3 -3
- package/lib/esm/model/decorators.js +2 -3
- package/lib/esm/model/index.d.ts +1 -0
- package/lib/esm/model/index.js +2 -1
- package/lib/esm/model/types.d.ts +30 -11
- package/lib/esm/model/types.js +1 -1
- package/lib/esm/model/utils.d.ts +3 -0
- package/lib/esm/model/utils.js +11 -0
- package/lib/esm/model/validation.d.ts +5 -5
- package/lib/esm/model/validation.js +8 -9
- package/lib/esm/utils/Decoration.d.ts +123 -0
- package/lib/esm/utils/Decoration.js +192 -0
- package/lib/esm/utils/constants.d.ts +27 -9
- package/lib/esm/utils/constants.js +28 -10
- package/lib/esm/utils/dates.d.ts +26 -16
- package/lib/esm/utils/dates.js +27 -17
- package/lib/esm/utils/decorators.d.ts +41 -0
- package/lib/esm/utils/decorators.js +42 -1
- package/lib/esm/utils/hashing.d.ts +50 -6
- package/lib/esm/utils/hashing.js +49 -5
- package/lib/esm/utils/index.d.ts +1 -0
- package/lib/esm/utils/index.js +2 -1
- package/lib/esm/utils/registry.d.ts +3 -3
- package/lib/esm/utils/registry.js +1 -1
- package/lib/esm/utils/serialization.d.ts +1 -1
- package/lib/esm/utils/serialization.js +4 -3
- package/lib/esm/utils/strings.d.ts +4 -4
- package/lib/esm/utils/strings.js +5 -5
- package/lib/esm/utils/types.d.ts +123 -16
- package/lib/esm/utils/types.js +1 -1
- package/lib/esm/validation/Validators/DateValidator.d.ts +40 -8
- package/lib/esm/validation/Validators/DateValidator.js +41 -9
- package/lib/esm/validation/Validators/EmailValidator.d.ts +39 -7
- package/lib/esm/validation/Validators/EmailValidator.js +40 -8
- package/lib/esm/validation/Validators/ListValidator.d.ts +44 -6
- package/lib/esm/validation/Validators/ListValidator.js +45 -7
- package/lib/esm/validation/Validators/MaxValidator.d.ts +52 -6
- package/lib/esm/validation/Validators/MaxValidator.js +53 -7
- package/lib/esm/validation/Validators/MinValidator.d.ts +52 -6
- package/lib/esm/validation/Validators/MinValidator.js +53 -7
- package/lib/esm/validation/Validators/PatternValidator.d.ts +75 -9
- package/lib/esm/validation/Validators/PatternValidator.js +76 -10
- package/lib/esm/validation/Validators/RequiredValidator.d.ts +52 -6
- package/lib/esm/validation/Validators/RequiredValidator.js +53 -7
- package/lib/esm/validation/Validators/TypeValidator.d.ts +60 -6
- package/lib/esm/validation/Validators/TypeValidator.js +69 -7
- package/lib/esm/validation/Validators/URLValidator.d.ts +41 -7
- package/lib/esm/validation/Validators/URLValidator.js +42 -8
- package/lib/esm/validation/Validators/Validator.d.ts +76 -16
- package/lib/esm/validation/Validators/Validator.js +68 -11
- package/lib/esm/validation/Validators/ValidatorRegistry.d.ts +1 -7
- package/lib/esm/validation/Validators/ValidatorRegistry.js +4 -11
- package/lib/esm/validation/decorators.d.ts +50 -40
- package/lib/esm/validation/decorators.js +102 -53
- package/lib/esm/validation/types.d.ts +146 -28
- package/lib/esm/validation/types.js +1 -1
- package/lib/index.cjs +7 -39
- package/lib/index.d.ts +5 -37
- package/lib/model/Model.cjs +114 -51
- package/lib/model/Model.d.ts +107 -35
- 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 +3 -4
- package/lib/model/decorators.d.ts +3 -3
- package/lib/model/index.cjs +2 -1
- package/lib/model/index.d.ts +1 -0
- package/lib/model/types.cjs +1 -1
- package/lib/model/types.d.ts +30 -11
- package/lib/model/utils.cjs +15 -0
- package/lib/model/utils.d.ts +3 -0
- package/lib/model/validation.cjs +11 -12
- package/lib/model/validation.d.ts +5 -5
- package/lib/utils/Decoration.cjs +196 -0
- package/lib/utils/Decoration.d.ts +123 -0
- package/lib/utils/constants.cjs +29 -11
- package/lib/utils/constants.d.ts +27 -9
- package/lib/utils/dates.cjs +28 -18
- package/lib/utils/dates.d.ts +26 -16
- package/lib/utils/decorators.cjs +42 -1
- package/lib/utils/decorators.d.ts +41 -0
- package/lib/utils/hashing.cjs +49 -5
- package/lib/utils/hashing.d.ts +50 -6
- package/lib/utils/index.cjs +2 -1
- package/lib/utils/index.d.ts +1 -0
- package/lib/utils/registry.cjs +1 -1
- package/lib/utils/registry.d.ts +3 -3
- package/lib/utils/serialization.cjs +5 -4
- 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 +123 -16
- package/lib/validation/Validation.cjs +1 -1
- package/lib/validation/Validators/DateValidator.cjs +41 -9
- package/lib/validation/Validators/DateValidator.d.ts +40 -8
- package/lib/validation/Validators/DiffValidator.cjs +1 -1
- package/lib/validation/Validators/EmailValidator.cjs +40 -8
- package/lib/validation/Validators/EmailValidator.d.ts +39 -7
- package/lib/validation/Validators/EqualsValidator.cjs +1 -1
- package/lib/validation/Validators/GreaterThanOrEqualValidator.cjs +1 -1
- package/lib/validation/Validators/GreaterThanValidator.cjs +1 -1
- package/lib/validation/Validators/LessThanOrEqualValidator.cjs +1 -1
- package/lib/validation/Validators/LessThanValidator.cjs +1 -1
- package/lib/validation/Validators/ListValidator.cjs +45 -7
- package/lib/validation/Validators/ListValidator.d.ts +44 -6
- package/lib/validation/Validators/MaxLengthValidator.cjs +1 -1
- package/lib/validation/Validators/MaxValidator.cjs +53 -7
- package/lib/validation/Validators/MaxValidator.d.ts +52 -6
- package/lib/validation/Validators/MinLengthValidator.cjs +1 -1
- package/lib/validation/Validators/MinValidator.cjs +53 -7
- package/lib/validation/Validators/MinValidator.d.ts +52 -6
- package/lib/validation/Validators/PasswordValidator.cjs +1 -1
- package/lib/validation/Validators/PatternValidator.cjs +76 -10
- package/lib/validation/Validators/PatternValidator.d.ts +75 -9
- package/lib/validation/Validators/RequiredValidator.cjs +53 -7
- package/lib/validation/Validators/RequiredValidator.d.ts +52 -6
- package/lib/validation/Validators/StepValidator.cjs +1 -1
- package/lib/validation/Validators/TypeValidator.cjs +71 -9
- package/lib/validation/Validators/TypeValidator.d.ts +60 -6
- package/lib/validation/Validators/URLValidator.cjs +42 -8
- package/lib/validation/Validators/URLValidator.d.ts +41 -7
- package/lib/validation/Validators/Validator.cjs +69 -12
- package/lib/validation/Validators/Validator.d.ts +76 -16
- package/lib/validation/Validators/ValidatorRegistry.cjs +4 -12
- package/lib/validation/Validators/ValidatorRegistry.d.ts +1 -7
- package/lib/validation/Validators/constants.cjs +2 -2
- package/lib/validation/Validators/decorators.cjs +2 -2
- package/lib/validation/Validators/index.cjs +1 -1
- package/lib/validation/Validators/utils.cjs +3 -3
- package/lib/validation/decorators.cjs +105 -56
- package/lib/validation/decorators.d.ts +50 -40
- package/lib/validation/index.cjs +1 -1
- package/lib/validation/types.cjs +1 -1
- package/lib/validation/types.d.ts +146 -28
- package/package.json +2 -1
|
@@ -1,28 +1,54 @@
|
|
|
1
1
|
import "reflect-metadata";
|
|
2
2
|
import { ModelConstructor } from "../model/types";
|
|
3
3
|
/**
|
|
4
|
-
* @
|
|
5
|
-
* @
|
|
4
|
+
* @description Property decorator that marks a field as required
|
|
5
|
+
* @summary Marks the property as required, causing validation to fail if the property is undefined, null, or empty.
|
|
6
|
+
* Validators to validate a decorated property must use key {@link ValidationKeys#REQUIRED}.
|
|
7
|
+
* This decorator is commonly used as the first validation step for important fields.
|
|
6
8
|
*
|
|
7
|
-
* @param {string} [message]
|
|
9
|
+
* @param {string} [message] - The error message to display when validation fails. Defaults to {@link DEFAULT_ERROR_MESSAGES#REQUIRED}
|
|
10
|
+
* @return {PropertyDecorator} A decorator function that can be applied to class properties
|
|
8
11
|
*
|
|
9
12
|
* @function required
|
|
10
|
-
*
|
|
11
13
|
* @category Decorators
|
|
14
|
+
*
|
|
15
|
+
* @example
|
|
16
|
+
* ```typescript
|
|
17
|
+
* class User {
|
|
18
|
+
* @required()
|
|
19
|
+
* username: string;
|
|
20
|
+
*
|
|
21
|
+
* @required("Email address is mandatory")
|
|
22
|
+
* email: string;
|
|
23
|
+
* }
|
|
24
|
+
* ```
|
|
12
25
|
*/
|
|
13
|
-
export declare function required(message?: string): (target:
|
|
26
|
+
export declare function required(message?: string): (target: any, propertyKey?: any, descriptor?: TypedPropertyDescriptor<any>) => any;
|
|
14
27
|
/**
|
|
15
|
-
* @
|
|
16
|
-
* @
|
|
28
|
+
* @description Property decorator that enforces a minimum value constraint
|
|
29
|
+
* @summary Defines a minimum value for the property, causing validation to fail if the property value is less than the specified minimum.
|
|
30
|
+
* Validators to validate a decorated property must use key {@link ValidationKeys#MIN}.
|
|
31
|
+
* This decorator works with numeric values and dates.
|
|
17
32
|
*
|
|
18
|
-
* @param {number | Date} value
|
|
19
|
-
* @param {string} [message]
|
|
33
|
+
* @param {number | Date | string} value - The minimum value allowed. For dates, can be a Date object or a string that can be converted to a date
|
|
34
|
+
* @param {string} [message] - The error message to display when validation fails. Defaults to {@link DEFAULT_ERROR_MESSAGES#MIN}
|
|
35
|
+
* @return {PropertyDecorator} A decorator function that can be applied to class properties
|
|
20
36
|
*
|
|
21
37
|
* @function min
|
|
22
|
-
* @memberOf module:decorator-validation.Decorators.Validation
|
|
23
38
|
* @category Decorators
|
|
39
|
+
*
|
|
40
|
+
* @example
|
|
41
|
+
* ```typescript
|
|
42
|
+
* class Product {
|
|
43
|
+
* @min(0)
|
|
44
|
+
* price: number;
|
|
45
|
+
*
|
|
46
|
+
* @min(new Date(2023, 0, 1), "Date must be after January 1, 2023")
|
|
47
|
+
* releaseDate: Date;
|
|
48
|
+
* }
|
|
49
|
+
* ```
|
|
24
50
|
*/
|
|
25
|
-
export declare function min(value: number | Date | string, message?: string): (target:
|
|
51
|
+
export declare function min(value: number | Date | string, message?: string): (target: any, propertyKey?: any, descriptor?: TypedPropertyDescriptor<any>) => any;
|
|
26
52
|
/**
|
|
27
53
|
* @summary Defines a maximum value for the property
|
|
28
54
|
* @description Validators to validate a decorated property must use key {@link ValidationKeys#MAX}
|
|
@@ -31,10 +57,9 @@ export declare function min(value: number | Date | string, message?: string): (t
|
|
|
31
57
|
* @param {string} [message] the error message. Defaults to {@link DEFAULT_ERROR_MESSAGES#MAX}
|
|
32
58
|
*
|
|
33
59
|
* @function max
|
|
34
|
-
* @memberOf module:decorator-validation.Decorators.Validation
|
|
35
60
|
* @category Decorators
|
|
36
61
|
*/
|
|
37
|
-
export declare function max(value: number | Date | string, message?: string): (target:
|
|
62
|
+
export declare function max(value: number | Date | string, message?: string): (target: any, propertyKey?: any, descriptor?: TypedPropertyDescriptor<any>) => any;
|
|
38
63
|
/**
|
|
39
64
|
* @summary Defines a step value for the property
|
|
40
65
|
* @description Validators to validate a decorated property must use key {@link ValidationKeys#STEP}
|
|
@@ -43,10 +68,9 @@ export declare function max(value: number | Date | string, message?: string): (t
|
|
|
43
68
|
* @param {string} [message] the error message. Defaults to {@link DEFAULT_ERROR_MESSAGES#STEP}
|
|
44
69
|
*
|
|
45
70
|
* @function step
|
|
46
|
-
* @memberOf module:decorator-validation.Decorators.Validation
|
|
47
71
|
* @category Decorators
|
|
48
72
|
*/
|
|
49
|
-
export declare function step(value: number, message?: string): (target:
|
|
73
|
+
export declare function step(value: number, message?: string): (target: any, propertyKey?: any, descriptor?: TypedPropertyDescriptor<any>) => any;
|
|
50
74
|
/**
|
|
51
75
|
* @summary Defines a minimum length for the property
|
|
52
76
|
* @description Validators to validate a decorated property must use key {@link ValidationKeys#MIN_LENGTH}
|
|
@@ -55,10 +79,9 @@ export declare function step(value: number, message?: string): (target: object,
|
|
|
55
79
|
* @param {string} [message] the error message. Defaults to {@link DEFAULT_ERROR_MESSAGES#MIN_LENGTH}
|
|
56
80
|
*
|
|
57
81
|
* @function minlength
|
|
58
|
-
* @memberOf module:decorator-validation.Decorators.Validation
|
|
59
82
|
* @category Decorators
|
|
60
83
|
*/
|
|
61
|
-
export declare function minlength(value: number, message?: string): (target:
|
|
84
|
+
export declare function minlength(value: number, message?: string): (target: any, propertyKey?: any, descriptor?: TypedPropertyDescriptor<any>) => any;
|
|
62
85
|
/**
|
|
63
86
|
* @summary Defines a maximum length for the property
|
|
64
87
|
* @description Validators to validate a decorated property must use key {@link ValidationKeys#MAX_LENGTH}
|
|
@@ -67,10 +90,9 @@ export declare function minlength(value: number, message?: string): (target: obj
|
|
|
67
90
|
* @param {string} [message] the error message. Defaults to {@link DEFAULT_ERROR_MESSAGES#MAX_LENGTH}
|
|
68
91
|
*
|
|
69
92
|
* @function maxlength
|
|
70
|
-
* @memberOf module:decorator-validation.Decorators.Validation
|
|
71
93
|
* @category Decorators
|
|
72
94
|
*/
|
|
73
|
-
export declare function maxlength(value: number, message?: string): (target:
|
|
95
|
+
export declare function maxlength(value: number, message?: string): (target: any, propertyKey?: any, descriptor?: TypedPropertyDescriptor<any>) => any;
|
|
74
96
|
/**
|
|
75
97
|
* @summary Defines a RegExp pattern the property must respect
|
|
76
98
|
* @description Validators to validate a decorated property must use key {@link ValidationKeys#PATTERN}
|
|
@@ -79,10 +101,9 @@ export declare function maxlength(value: number, message?: string): (target: obj
|
|
|
79
101
|
* @param {string} [message] the error message. Defaults to {@link DEFAULT_ERROR_MESSAGES#PATTERN}
|
|
80
102
|
*
|
|
81
103
|
* @function pattern
|
|
82
|
-
* @memberOf module:decorator-validation.Decorators.Validation
|
|
83
104
|
* @category Decorators
|
|
84
105
|
*/
|
|
85
|
-
export declare function pattern(value: RegExp | string, message?: string): (target:
|
|
106
|
+
export declare function pattern(value: RegExp | string, message?: string): (target: any, propertyKey?: any, descriptor?: TypedPropertyDescriptor<any>) => any;
|
|
86
107
|
/**
|
|
87
108
|
* @summary Defines the property as an email
|
|
88
109
|
* @description Validators to validate a decorated property must use key {@link ValidationKeys#EMAIL}
|
|
@@ -90,10 +111,9 @@ export declare function pattern(value: RegExp | string, message?: string): (targ
|
|
|
90
111
|
* @param {string} [message] the error message. Defaults to {@link DEFAULT_ERROR_MESSAGES#EMAIL}
|
|
91
112
|
*
|
|
92
113
|
* @function email
|
|
93
|
-
* @memberOf module:decorator-validation.Decorators.Validation
|
|
94
114
|
* @category Decorators
|
|
95
115
|
*/
|
|
96
|
-
export declare function email(message?: string): (target:
|
|
116
|
+
export declare function email(message?: string): (target: any, propertyKey?: any, descriptor?: TypedPropertyDescriptor<any>) => any;
|
|
97
117
|
/**
|
|
98
118
|
* @summary Defines the property as an URL
|
|
99
119
|
* @description Validators to validate a decorated property must use key {@link ValidationKeys#URL}
|
|
@@ -101,10 +121,9 @@ export declare function email(message?: string): (target: object, propertyKey?:
|
|
|
101
121
|
* @param {string} [message] the error message. Defaults to {@link DEFAULT_ERROR_MESSAGES#URL}
|
|
102
122
|
*
|
|
103
123
|
* @function url
|
|
104
|
-
* @memberOf module:decorator-validation.Decorators.Validation
|
|
105
124
|
* @category Decorators
|
|
106
125
|
*/
|
|
107
|
-
export declare function url(message?: string): (target:
|
|
126
|
+
export declare function url(message?: string): (target: any, propertyKey?: any, descriptor?: TypedPropertyDescriptor<any>) => any;
|
|
108
127
|
/**
|
|
109
128
|
* @summary Enforces type verification
|
|
110
129
|
* @description Validators to validate a decorated property must use key {@link ValidationKeys#TYPE}
|
|
@@ -113,10 +132,9 @@ export declare function url(message?: string): (target: object, propertyKey?: st
|
|
|
113
132
|
* @param {string} [message] the error message. Defaults to {@link DEFAULT_ERROR_MESSAGES#TYPE}
|
|
114
133
|
*
|
|
115
134
|
* @function type
|
|
116
|
-
* @memberOf module:decorator-validation.Decorators.Validation
|
|
117
135
|
* @category Decorators
|
|
118
136
|
*/
|
|
119
|
-
export declare function type(types: string[] | string, message?: string): (target:
|
|
137
|
+
export declare function type(types: string[] | string, message?: string): (target: any, propertyKey?: any, descriptor?: TypedPropertyDescriptor<any>) => any;
|
|
120
138
|
/**
|
|
121
139
|
* @summary Date Handler Decorator
|
|
122
140
|
* @description Validators to validate a decorated property must use key {@link ValidationKeys#DATE}
|
|
@@ -125,28 +143,24 @@ export declare function type(types: string[] | string, message?: string): (targe
|
|
|
125
143
|
*
|
|
126
144
|
* @param {string} format accepted format according to {@link formatDate}
|
|
127
145
|
* @param {string} [message] the error message. Defaults to {@link DEFAULT_ERROR_MESSAGES#DATE}
|
|
128
|
-
* @param {Constructor<Validator>} [validator] the Validator to be used. Defaults to {@link DateValidator}
|
|
129
146
|
*
|
|
130
147
|
* @function date
|
|
131
148
|
*
|
|
132
|
-
* @memberOf module:decorator-validation.Decorators.Validation
|
|
133
149
|
* @category Decorators
|
|
134
150
|
*/
|
|
135
|
-
export declare function date(format?: string, message?: string): (target:
|
|
151
|
+
export declare function date(format?: string, message?: string): (target: any, propertyKey?: any, descriptor?: TypedPropertyDescriptor<any>) => any;
|
|
136
152
|
/**
|
|
137
153
|
* @summary Password Handler Decorator
|
|
138
154
|
* @description Validators to validate a decorated property must use key {@link ValidationKeys#PASSWORD}
|
|
139
155
|
*
|
|
140
|
-
* @param {RegExp} [pattern] defaults to {@link
|
|
156
|
+
* @param {RegExp} [pattern] defaults to {@link DEFAULT_PATTERNS#CHAR8_ONE_OF_EACH}
|
|
141
157
|
* @param {string} [message] the error message. Defaults to {@link DEFAULT_ERROR_MESSAGES#PASSWORD}
|
|
142
|
-
* @param {Constructor<Validator>} [validator] Defaults to {@link PasswordValidator}
|
|
143
158
|
*
|
|
144
159
|
* @function password
|
|
145
160
|
*
|
|
146
|
-
* @memberOf module:decorator-validation.Decorators.Validation
|
|
147
161
|
* @category Decorators
|
|
148
162
|
*/
|
|
149
|
-
export declare function password(pattern?: RegExp, message?: string): (target:
|
|
163
|
+
export declare function password(pattern?: RegExp, message?: string): (target: any, propertyKey?: any, descriptor?: TypedPropertyDescriptor<any>) => any;
|
|
150
164
|
/**
|
|
151
165
|
* @summary List Decorator
|
|
152
166
|
* @description Also sets the {@link type} to the provided collection
|
|
@@ -154,28 +168,24 @@ export declare function password(pattern?: RegExp, message?: string): (target: o
|
|
|
154
168
|
* @param {ModelConstructor} clazz
|
|
155
169
|
* @param {string} [collection] The collection being used. defaults to Array
|
|
156
170
|
* @param {string} [message] defaults to {@link DEFAULT_ERROR_MESSAGES#LIST}
|
|
157
|
-
* @param {Constructor<Validator>} [validator] defaults to {@link ListValidator}
|
|
158
171
|
*
|
|
159
172
|
* @function list
|
|
160
173
|
*
|
|
161
|
-
* @memberOf module:decorator-validation.Decorators.Validation
|
|
162
174
|
* @category Decorators
|
|
163
175
|
*/
|
|
164
|
-
export declare function list(clazz: ModelConstructor<any> | ModelConstructor<any>[], collection?: "Array" | "Set", message?: string): (target:
|
|
176
|
+
export declare function list(clazz: ModelConstructor<any> | ModelConstructor<any>[], collection?: "Array" | "Set", message?: string): (target: any, propertyKey?: any, descriptor?: TypedPropertyDescriptor<any>) => any;
|
|
165
177
|
/**
|
|
166
178
|
* @summary Set Decorator
|
|
167
179
|
* @description Wrapper for {@link list} with the 'Set' Collection
|
|
168
180
|
*
|
|
169
181
|
* @param {ModelConstructor} clazz
|
|
170
182
|
* @param {string} [message] defaults to {@link DEFAULT_ERROR_MESSAGES#LIST}
|
|
171
|
-
* @param {Constructor<Validator>} [validator]
|
|
172
183
|
*
|
|
173
184
|
* @function set
|
|
174
185
|
*
|
|
175
|
-
* @memberOf module:decorator-validation.Decorators.Validation
|
|
176
186
|
* @category Decorators
|
|
177
187
|
*/
|
|
178
|
-
export declare function set(clazz: ModelConstructor<any>, message?: string): (target:
|
|
188
|
+
export declare function set(clazz: ModelConstructor<any>, message?: string): (target: any, propertyKey?: any, descriptor?: TypedPropertyDescriptor<any>) => any;
|
|
179
189
|
/**
|
|
180
190
|
* @summary Declares that the decorated property must be equal to another specified property.
|
|
181
191
|
* @description Applies the {@link ValidationKeys.EQUALS} validator to ensure the decorated value matches the value of the given property.
|
package/lib/validation/index.cjs
CHANGED
|
@@ -18,4 +18,4 @@ __exportStar(require("./Validators/index.cjs"), exports);
|
|
|
18
18
|
__exportStar(require("./decorators.cjs"), exports);
|
|
19
19
|
__exportStar(require("./types.cjs"), exports);
|
|
20
20
|
__exportStar(require("./Validation.cjs"), exports);
|
|
21
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
21
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdmFsaWRhdGlvbi9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7O0FBQUEseURBQTZCO0FBQzdCLG1EQUE2QjtBQUM3Qiw4Q0FBd0I7QUFDeEIsbURBQTZCIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSBcIi4vVmFsaWRhdG9yc1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vZGVjb3JhdG9yc1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vdHlwZXNcIjtcbmV4cG9ydCAqIGZyb20gXCIuL1ZhbGlkYXRpb25cIjtcbiJdfQ==
|
package/lib/validation/types.cjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
const Validators_1 = require("./Validators/index.cjs");
|
|
4
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdmFsaWRhdGlvbi90eXBlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUVBLDZDQUF5RCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERlY29yYXRvck1ldGFkYXRhIH0gZnJvbSBcIkBkZWNhZi10cy9yZWZsZWN0aW9uXCI7XG5pbXBvcnQgeyBDb25zdHJ1Y3RvciB9IGZyb20gXCIuLi9tb2RlbFwiO1xuaW1wb3J0IHsgVmFsaWRhdGlvbktleXMsIFZhbGlkYXRvciB9IGZyb20gXCIuL1ZhbGlkYXRvcnNcIjtcbmltcG9ydCB7IElSZWdpc3RyeSB9IGZyb20gXCIuLi91dGlsc1wiO1xuXG4vKipcbiAqIEBzdW1tYXJ5IFR5cGUgZm9yIHZhbGlkYXRpb24gZGVjb3JhdG9yIG1ldGFkYXRhXG4gKiBAbWVtYmVyT2YgbW9kdWxlOmRlY29yYXRvci12YWxpZGF0aW9uLlJlZmxlY3Rpb25cbiAqIEBjYXRlZ29yeSBSZWZsZWN0aW9uXG4gKi9cbmV4cG9ydCB0eXBlIFZhbGlkYXRpb25NZXRhZGF0YSA9IHtcbiAgW2luZGV4ZXI6IHN0cmluZ106IGFueTtcbiAgYXJncz86IGFueVtdO1xuICBtZXNzYWdlOiBzdHJpbmc7XG4gIHR5cGVzPzogc3RyaW5nW107XG59O1xuXG4vKipcbiAqIEBzdW1tYXJ5IFR5cGUgZm9yIGEgdmFsaWRhdG9yIHByb3BlcnR5IGRlY29yYXRvciBkZWZpbml0aW9uXG4gKiBAbWVtYmVyT2YgbW9kdWxlOmRlY29yYXRvci12YWxpZGF0aW9uLlZhbGlkYXRpb25cbiAqIEBjYXRlZ29yeSBWYWxpZGF0aW9uXG4gKi9cbmV4cG9ydCB0eXBlIFZhbGlkYXRpb25Qcm9wZXJ0eURlY29yYXRvckRlZmluaXRpb24gPSB7XG4gIHByb3A6IHN0cmluZyB8IHN5bWJvbDtcbiAgZGVjb3JhdG9yczogVmFsaWRhdGlvbkRlY29yYXRvckRlZmluaXRpb25bXTtcbn07XG5cbi8qKlxuICogQHN1bW1hcnkgVHlwZSBmb3IgYSB2YWxpZGF0b3IgZGVjb3JhdG9yIGRlZmluaXRpb25cbiAqIEBtZW1iZXJPZiBtb2R1bGU6ZGVjb3JhdG9yLXZhbGlkYXRpb24uVmFsaWRhdGlvblxuICogQGNhdGVnb3J5IFZhbGlkYXRpb25cbiAqL1xuZXhwb3J0IHR5cGUgVmFsaWRhdGlvbkRlY29yYXRvckRlZmluaXRpb24gPSBEZWNvcmF0b3JNZXRhZGF0YSAmIHtcbiAgcHJvcHM6IFZhbGlkYXRpb25FbGVtZW50RGVmaW5pdGlvbjtcbn07XG5cbi8qKlxuICogQHN1bW1hcnkgVHlwZSBmb3IgYSB2YWxpZGF0b3IgZWxlbWVudCBtZXRhZGF0YVxuICogQG1lbWJlck9mIG1vZHVsZTpkZWNvcmF0b3ItdmFsaWRhdGlvbi5WYWxpZGF0aW9uXG4gKiBAY2F0ZWdvcnkgVmFsaWRhdGlvblxuICovXG5leHBvcnQgdHlwZSBWYWxpZGF0aW9uRWxlbWVudERlZmluaXRpb24gPSB7XG4gIFtpbmRleGVyOiBzdHJpbmddOiBhbnk7XG5cbiAgdmFsdWU/OiBzdHJpbmcgfCBudW1iZXI7XG4gIG1lc3NhZ2U6IHN0cmluZztcbiAgdHlwZXM/OiBzdHJpbmdbXTtcbn07XG5cbi8qKlxuICogQHN1bW1hcnkgVHlwZSBmb3IgYSBtb2RlbCBlcnJvcnNcbiAqIEBtZW1iZXJPZiBtb2R1bGU6ZGVjb3JhdG9yLXZhbGlkYXRpb24uVmFsaWRhdGlvblxuICogQGNhdGVnb3J5IFZhbGlkYXRpb25cbiAqL1xuZXhwb3J0IHR5cGUgTW9kZWxFcnJvcnMgPSBSZWNvcmQ8c3RyaW5nLCBSZWNvcmQ8c3RyaW5nLCBzdHJpbmcgfCB1bmRlZmluZWQ+PjtcblxuLyoqXG4gKiBAc3VtbWFyeSBVdGlsIHR5cGUgZm9yIHtAbGluayBWYWxpZGF0b3J9IGNvbmZpZ3VyYXRpb25cbiAqIEBtZW1iZXJPZiBtb2R1bGU6ZGVjb3JhdG9yLXZhbGlkYXRpb24uVmFsaWRhdGlvblxuICogQGNhdGVnb3J5IFZhbGlkYXRpb25cbiAqL1xuZXhwb3J0IHR5cGUgVmFsaWRhdG9yRGVmaW5pdGlvbiA9IHtcbiAgdmFsaWRhdG9yOiBDb25zdHJ1Y3RvcjxWYWxpZGF0b3I+O1xuICB2YWxpZGF0aW9uS2V5OiBzdHJpbmc7XG4gIHNhdmU6IGJvb2xlYW47XG59O1xuXG4vKipcbiAqIEBzdW1tYXJ5IEJhc2UgQVBJIGZvciBhIHtAbGluayBWYWxpZGF0b3J9IHJlZ2lzdHJ5XG4gKlxuICogQGludGVyZmFjZSBWYWxpZGF0b3JSZWdpc3RyeVxuICogQGV4dGVuZHMgSVJlZ2lzdHJ5XG4gKlxuICogQGNhdGVnb3J5IFZhbGlkYXRpb25cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJVmFsaWRhdG9yUmVnaXN0cnk8VCBleHRlbmRzIFZhbGlkYXRvcj4gZXh0ZW5kcyBJUmVnaXN0cnk8VD4ge1xuICAvKipcbiAgICogQHN1bW1hcnkgcmV0cmlldmVzIHRoZSBjdXN0b20ga2V5c1xuICAgKiBAbWV0aG9kXG4gICAqL1xuICBnZXRDdXN0b21LZXlzKCk6IFJlY29yZDxzdHJpbmcsIHN0cmluZz47XG5cbiAgLyoqXG4gICAqIEBzdW1tYXJ5IFJldHJpZXZlcyB0aGUgUmVnaXN0ZXJlZCB2YWxpZGF0b3Iga2V5c1xuICAgKiBAcmV0dXJuIHtzdHJpbmdbXX0gdGhlIHJlZ2lzdGVyZWQgdmFsaWRhdG9ycyBrZXlzXG4gICAqIEBtZXRob2RcbiAgICovXG4gIGdldEtleXMoKTogc3RyaW5nW107XG5cbiAgLyoqXG4gICAqIEBzdW1tYXJ5IFJlZ2lzdGVycyB0aGUgcHJvdmlkZWQgdmFsaWRhdG9ycyBvbnRvIHRoZSByZWdpc3RyeVxuICAgKlxuICAgKiBAdHlwZWRlZiBUIGV4dGVuZHMgVmFsaWRhdG9yXG4gICAqIEBwYXJhbSB7VFtdIHwgVmFsaWRhdG9yRGVmaW5pdGlvbltdfSB2YWxpZGF0b3JcbiAgICogQG1ldGhvZFxuICAgKi9cbiAgcmVnaXN0ZXI8VCBleHRlbmRzIFZhbGlkYXRvcj4oXG4gICAgLi4udmFsaWRhdG9yOiAoVCB8IFZhbGlkYXRvckRlZmluaXRpb24pW11cbiAgKTogdm9pZDtcblxuICAvKipcbiAgICogQHN1bW1hcnkgUmV0cmlldmVzIHRoZSBWYWxpZGF0b3IgY29uc3RydWN0b3IgaWYgcmVnaXN0ZXJlZFxuICAgKlxuICAgKiBAdHlwZWRlZiBUIGV4dGVuZHMgVmFsaWRhdG9yXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgb25lIG9mIHRoZSB7QGxpbmsgVmFsaWRhdGlvbktleXN9XG4gICAqIEByZXR1cm4ge1ZhbGlkYXRvciB8IHVuZGVmaW5lZH0gdGhlIHJlZ2lzdGVyZWQgVmFsaWRhdG9yIG9yIHVuZGVmaW5lZCBpZiB0aGVyZSBpcyBub25vIG1hdGNoaW5nIHRoZSBwcm92aWRlZCBrZXlcbiAgICogQG1ldGhvZFxuICAgKi9cbiAgZ2V0PFQgZXh0ZW5kcyBWYWxpZGF0b3I+KGtleTogc3RyaW5nKTogVCB8IHVuZGVmaW5lZDtcbn1cblxuZXhwb3J0IHR5cGUgVmFsaWRhdG9yT3B0aW9ucyA9IHtcbiAgbWVzc2FnZT86IHN0cmluZztcbn07XG5cbmV4cG9ydCBpbnRlcmZhY2UgVVJMVmFsaWRhdG9yT3B0aW9ucyBleHRlbmRzIFZhbGlkYXRvck9wdGlvbnMge1xuICB0eXBlczogc3RyaW5nIHwgc3RyaW5nW10gfCB7IG5hbWU6IHN0cmluZyB9O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFR5cGVWYWxpZGF0b3JPcHRpb25zIGV4dGVuZHMgVmFsaWRhdG9yT3B0aW9ucyB7XG4gIHR5cGVzOiBzdHJpbmcgfCBzdHJpbmdbXSB8IHsgbmFtZTogc3RyaW5nIH07XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU3RlcFZhbGlkYXRvck9wdGlvbnMgZXh0ZW5kcyBWYWxpZGF0b3JPcHRpb25zIHtcbiAgW1ZhbGlkYXRpb25LZXlzLlNURVBdOiBudW1iZXIgfCBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUGF0dGVyblZhbGlkYXRvck9wdGlvbnMgZXh0ZW5kcyBWYWxpZGF0b3JPcHRpb25zIHtcbiAgW1ZhbGlkYXRpb25LZXlzLlBBVFRFUk5dPzogUmVnRXhwIHwgc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIE1pblZhbGlkYXRvck9wdGlvbnMgZXh0ZW5kcyBWYWxpZGF0b3JPcHRpb25zIHtcbiAgW1ZhbGlkYXRpb25LZXlzLk1JTl06IG51bWJlciB8IERhdGUgfCBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTWluTGVuZ3RoVmFsaWRhdG9yT3B0aW9ucyBleHRlbmRzIFZhbGlkYXRvck9wdGlvbnMge1xuICBbVmFsaWRhdGlvbktleXMuTUlOX0xFTkdUSF06IG51bWJlcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBNYXhWYWxpZGF0b3JPcHRpb25zIGV4dGVuZHMgVmFsaWRhdG9yT3B0aW9ucyB7XG4gIFtWYWxpZGF0aW9uS2V5cy5NQVhdOiBudW1iZXIgfCBEYXRlIHwgc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIE1heExlbmd0aFZhbGlkYXRvck9wdGlvbnMgZXh0ZW5kcyBWYWxpZGF0b3JPcHRpb25zIHtcbiAgW1ZhbGlkYXRpb25LZXlzLk1BWF9MRU5HVEhdOiBudW1iZXI7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTGlzdFZhbGlkYXRvck9wdGlvbnMgZXh0ZW5kcyBWYWxpZGF0b3JPcHRpb25zIHtcbiAgY2xheno6IHN0cmluZ1tdO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIERhdGVWYWxpZGF0b3JPcHRpb25zIGV4dGVuZHMgVmFsaWRhdG9yT3B0aW9ucyB7XG4gIFtWYWxpZGF0aW9uS2V5cy5GT1JNQVRdPzogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEVxdWFsc1ZhbGlkYXRvck9wdGlvbnMgZXh0ZW5kcyBWYWxpZGF0b3JPcHRpb25zIHtcbiAgW1ZhbGlkYXRpb25LZXlzLkVRVUFMU106IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBEaWZmVmFsaWRhdG9yT3B0aW9ucyBleHRlbmRzIFZhbGlkYXRvck9wdGlvbnMge1xuICBbVmFsaWRhdGlvbktleXMuRElGRl06IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBMZXNzVGhhblZhbGlkYXRvck9wdGlvbnMgZXh0ZW5kcyBWYWxpZGF0b3JPcHRpb25zIHtcbiAgW1ZhbGlkYXRpb25LZXlzLkxFU1NfVEhBTl06IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBMZXNzVGhhbk9yRXF1YWxWYWxpZGF0b3JPcHRpb25zIGV4dGVuZHMgVmFsaWRhdG9yT3B0aW9ucyB7XG4gIFtWYWxpZGF0aW9uS2V5cy5MRVNTX1RIQU5fT1JfRVFVQUxdOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgR3JlYXRlclRoYW5WYWxpZGF0b3JPcHRpb25zIGV4dGVuZHMgVmFsaWRhdG9yT3B0aW9ucyB7XG4gIFtWYWxpZGF0aW9uS2V5cy5HUkVBVEVSX1RIQU5dOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgR3JlYXRlclRoYW5PckVxdWFsVmFsaWRhdG9yT3B0aW9ucyBleHRlbmRzIFZhbGlkYXRvck9wdGlvbnMge1xuICBbVmFsaWRhdGlvbktleXMuR1JFQVRFUl9USEFOX09SX0VRVUFMXTogc3RyaW5nO1xufVxuIl19
|
|
4
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdmFsaWRhdGlvbi90eXBlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUVBLHVEQUF5RCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERlY29yYXRvck1ldGFkYXRhIH0gZnJvbSBcIkBkZWNhZi10cy9yZWZsZWN0aW9uXCI7XG5pbXBvcnQgeyBDb25zdHJ1Y3RvciB9IGZyb20gXCIuLi9tb2RlbFwiO1xuaW1wb3J0IHsgVmFsaWRhdGlvbktleXMsIFZhbGlkYXRvciB9IGZyb20gXCIuL1ZhbGlkYXRvcnNcIjtcbmltcG9ydCB7IElSZWdpc3RyeSB9IGZyb20gXCIuLi91dGlsc1wiO1xuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBUeXBlIGRlZmluaXRpb24gZm9yIG1ldGFkYXRhIHVzZWQgYnkgdmFsaWRhdGlvbiBkZWNvcmF0b3JzXG4gKiBAc3VtbWFyeSBEZWZpbmVzIHRoZSBzdHJ1Y3R1cmUgb2YgbWV0YWRhdGEgYXR0YWNoZWQgdG8gcHJvcGVydGllcyBieSB2YWxpZGF0aW9uIGRlY29yYXRvcnMuXG4gKiBUaGlzIG1ldGFkYXRhIGlzIHVzZWQgZHVyaW5nIHZhbGlkYXRpb24gdG8gZGV0ZXJtaW5lIHZhbGlkYXRpb24gcnVsZXMgYW5kIGVycm9yIG1lc3NhZ2VzLlxuICpcbiAqIEBwcm9wZXJ0eSB7YW55W119IFthcmdzXSAtIE9wdGlvbmFsIGFyZ3VtZW50cyBmb3IgdGhlIHZhbGlkYXRvclxuICogQHByb3BlcnR5IHtzdHJpbmd9IG1lc3NhZ2UgLSBFcnJvciBtZXNzYWdlIHRvIGRpc3BsYXkgd2hlbiB2YWxpZGF0aW9uIGZhaWxzXG4gKiBAcHJvcGVydHkge3N0cmluZ1tdfSBbdHlwZXNdIC0gQXJyYXkgb2YgdHlwZSBuYW1lcyB0aGF0IHRoZSBwcm9wZXJ0eSBjYW4gaGF2ZVxuICpcbiAqIEB0eXBlZGVmIHtPYmplY3R9IFZhbGlkYXRpb25NZXRhZGF0YVxuICogQG1lbWJlck9mIG1vZHVsZTpkZWNvcmF0b3ItdmFsaWRhdGlvblxuICogQGNhdGVnb3J5IFZhbGlkYXRpb25cbiAqL1xuZXhwb3J0IHR5cGUgVmFsaWRhdGlvbk1ldGFkYXRhID0ge1xuICBbaW5kZXhlcjogc3RyaW5nXTogYW55O1xuICBhcmdzPzogYW55W107XG4gIG1lc3NhZ2U6IHN0cmluZztcbiAgdHlwZXM/OiBzdHJpbmdbXTtcbn07XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIFR5cGUgZGVmaW5pdGlvbiBmb3IgcHJvcGVydHktbGV2ZWwgdmFsaWRhdGlvbiBkZWNvcmF0b3IgY29uZmlndXJhdGlvblxuICogQHN1bW1hcnkgRGVmaW5lcyB0aGUgc3RydWN0dXJlIHRoYXQgYXNzb2NpYXRlcyBhIHByb3BlcnR5IHdpdGggaXRzIHZhbGlkYXRpb24gZGVjb3JhdG9ycy5cbiAqIFRoaXMgdHlwZSBpcyB1c2VkIHRvIHRyYWNrIHdoaWNoIGRlY29yYXRvcnMgYXJlIGFwcGxpZWQgdG8gYSBzcGVjaWZpYyBwcm9wZXJ0eSBkdXJpbmcgdmFsaWRhdGlvbi5cbiAqXG4gKiBAcHJvcGVydHkge3N0cmluZ3xzeW1ib2x9IHByb3AgLSBUaGUgcHJvcGVydHkgbmFtZSBvciBzeW1ib2wgdGhhdCB0aGUgZGVjb3JhdG9ycyBhcmUgYXBwbGllZCB0b1xuICogQHByb3BlcnR5IHtWYWxpZGF0aW9uRGVjb3JhdG9yRGVmaW5pdGlvbltdfSBkZWNvcmF0b3JzIC0gQXJyYXkgb2YgZGVjb3JhdG9yIGRlZmluaXRpb25zIGFwcGxpZWQgdG8gdGhlIHByb3BlcnR5XG4gKlxuICogQHR5cGVkZWYge09iamVjdH0gVmFsaWRhdGlvblByb3BlcnR5RGVjb3JhdG9yRGVmaW5pdGlvblxuICogQG1lbWJlck9mIG1vZHVsZTpkZWNvcmF0b3ItdmFsaWRhdGlvblxuICogQGNhdGVnb3J5IFZhbGlkYXRpb25cbiAqL1xuZXhwb3J0IHR5cGUgVmFsaWRhdGlvblByb3BlcnR5RGVjb3JhdG9yRGVmaW5pdGlvbiA9IHtcbiAgcHJvcDogc3RyaW5nIHwgc3ltYm9sO1xuICBkZWNvcmF0b3JzOiBWYWxpZGF0aW9uRGVjb3JhdG9yRGVmaW5pdGlvbltdO1xufTtcblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gVHlwZSBkZWZpbml0aW9uIGZvciBpbmRpdmlkdWFsIHZhbGlkYXRpb24gZGVjb3JhdG9yIG1ldGFkYXRhXG4gKiBAc3VtbWFyeSBFeHRlbmRzIHRoZSBiYXNlIERlY29yYXRvck1ldGFkYXRhIHR5cGUgd2l0aCB2YWxpZGF0aW9uLXNwZWNpZmljIHByb3BlcnRpZXMuXG4gKiBUaGlzIHR5cGUgcmVwcmVzZW50cyB0aGUgbWV0YWRhdGEgZm9yIGEgc2luZ2xlIHZhbGlkYXRpb24gZGVjb3JhdG9yIGFwcGxpZWQgdG8gYSBwcm9wZXJ0eS5cbiAqXG4gKiBAcHJvcGVydHkge1ZhbGlkYXRpb25FbGVtZW50RGVmaW5pdGlvbn0gcHJvcHMgLSBUaGUgdmFsaWRhdGlvbiBlbGVtZW50IHByb3BlcnRpZXMgYW5kIGNvbmZpZ3VyYXRpb25cbiAqXG4gKiBAdHlwZWRlZiB7T2JqZWN0fSBWYWxpZGF0aW9uRGVjb3JhdG9yRGVmaW5pdGlvblxuICogQG1lbWJlck9mIG1vZHVsZTpkZWNvcmF0b3ItdmFsaWRhdGlvblxuICogQGNhdGVnb3J5IFZhbGlkYXRpb25cbiAqL1xuZXhwb3J0IHR5cGUgVmFsaWRhdGlvbkRlY29yYXRvckRlZmluaXRpb24gPSBEZWNvcmF0b3JNZXRhZGF0YSAmIHtcbiAgcHJvcHM6IFZhbGlkYXRpb25FbGVtZW50RGVmaW5pdGlvbjtcbn07XG5cbi8qKlxuICogQHN1bW1hcnkgVHlwZSBmb3IgYSB2YWxpZGF0b3IgZWxlbWVudCBtZXRhZGF0YVxuICogQG1lbWJlck9mIG1vZHVsZTpkZWNvcmF0b3ItdmFsaWRhdGlvblxuICogQGNhdGVnb3J5IFZhbGlkYXRpb25cbiAqL1xuZXhwb3J0IHR5cGUgVmFsaWRhdGlvbkVsZW1lbnREZWZpbml0aW9uID0ge1xuICBbaW5kZXhlcjogc3RyaW5nXTogYW55O1xuXG4gIHZhbHVlPzogc3RyaW5nIHwgbnVtYmVyO1xuICBtZXNzYWdlOiBzdHJpbmc7XG4gIHR5cGVzPzogc3RyaW5nW107XG59O1xuXG4vKipcbiAqIEBzdW1tYXJ5IFR5cGUgZm9yIGEgbW9kZWwgZXJyb3JzXG4gKiBAbWVtYmVyT2YgbW9kdWxlOmRlY29yYXRvci12YWxpZGF0aW9uXG4gKiBAY2F0ZWdvcnkgVmFsaWRhdGlvblxuICovXG5leHBvcnQgdHlwZSBNb2RlbEVycm9ycyA9IFJlY29yZDxzdHJpbmcsIFJlY29yZDxzdHJpbmcsIHN0cmluZyB8IHVuZGVmaW5lZD4+O1xuXG4vKipcbiAqIEBzdW1tYXJ5IFV0aWwgdHlwZSBmb3Ige0BsaW5rIFZhbGlkYXRvcn0gY29uZmlndXJhdGlvblxuICogQG1lbWJlck9mIG1vZHVsZTpkZWNvcmF0b3ItdmFsaWRhdGlvblxuICogQGNhdGVnb3J5IFZhbGlkYXRpb25cbiAqL1xuZXhwb3J0IHR5cGUgVmFsaWRhdG9yRGVmaW5pdGlvbiA9IHtcbiAgdmFsaWRhdG9yOiBDb25zdHJ1Y3RvcjxWYWxpZGF0b3I+O1xuICB2YWxpZGF0aW9uS2V5OiBzdHJpbmc7XG4gIHNhdmU6IGJvb2xlYW47XG59O1xuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBJbnRlcmZhY2UgZm9yIGEgcmVnaXN0cnkgdGhhdCBtYW5hZ2VzIHZhbGlkYXRvciBpbnN0YW5jZXNcbiAqIEBzdW1tYXJ5IERlZmluZXMgdGhlIGNvbnRyYWN0IGZvciBhIHJlZ2lzdHJ5IHRoYXQgc3RvcmVzIGFuZCByZXRyaWV2ZXMgdmFsaWRhdG9ycy5cbiAqIFRoZSByZWdpc3RyeSBpcyByZXNwb25zaWJsZSBmb3IgbWFpbnRhaW5pbmcgYSBjb2xsZWN0aW9uIG9mIHZhbGlkYXRvcnMgYW5kIHByb3ZpZGluZ1xuICogYWNjZXNzIHRvIHRoZW0gYnkga2V5LlxuICpcbiAqIEBpbnRlcmZhY2UgSVZhbGlkYXRvclJlZ2lzdHJ5XG4gKiBAdGVtcGxhdGUgVCBUeXBlIG9mIHZhbGlkYXRvciwgbXVzdCBleHRlbmQgVmFsaWRhdG9yXG4gKiBAZXh0ZW5kcyBJUmVnaXN0cnk8VD5cbiAqIEBtZW1iZXJPZiBtb2R1bGU6ZGVjb3JhdG9yLXZhbGlkYXRpb25cbiAqIEBjYXRlZ29yeSBWYWxpZGF0aW9uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSVZhbGlkYXRvclJlZ2lzdHJ5PFQgZXh0ZW5kcyBWYWxpZGF0b3I+IGV4dGVuZHMgSVJlZ2lzdHJ5PFQ+IHtcbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBSZXRyaWV2ZXMgY3VzdG9tIHZhbGlkYXRpb24ga2V5cyBkZWZpbmVkIGluIHRoZSByZWdpc3RyeVxuICAgKiBAc3VtbWFyeSBSZXR1cm5zIGEgbWFwcGluZyBvZiBjdXN0b20gdmFsaWRhdGlvbiBrZXlzIHRvIHRoZWlyIGNvcnJlc3BvbmRpbmcgc3RhbmRhcmQga2V5cy5cbiAgICogVGhpcyBhbGxvd3MgZm9yIGFsaWFzaW5nIHZhbGlkYXRpb24ga2V5cyBmb3Igc3BlY2lmaWMgdXNlIGNhc2VzLlxuICAgKlxuICAgKiBAcmV0dXJuIHtSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+fSBPYmplY3QgbWFwcGluZyBjdXN0b20ga2V5cyB0byBzdGFuZGFyZCB2YWxpZGF0aW9uIGtleXNcbiAgICovXG4gIGdldEN1c3RvbUtleXMoKTogUmVjb3JkPHN0cmluZywgc3RyaW5nPjtcblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIEdldHMgYWxsIHJlZ2lzdGVyZWQgdmFsaWRhdG9yIGtleXNcbiAgICogQHN1bW1hcnkgUmV0dXJucyBhbiBhcnJheSBvZiBhbGwgdmFsaWRhdGlvbiBrZXlzIHRoYXQgaGF2ZSByZWdpc3RlcmVkIHZhbGlkYXRvcnMuXG4gICAqXG4gICAqIEByZXR1cm4ge3N0cmluZ1tdfSBBcnJheSBvZiByZWdpc3RlcmVkIHZhbGlkYXRvciBrZXlzXG4gICAqL1xuICBnZXRLZXlzKCk6IHN0cmluZ1tdO1xuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gUmVnaXN0ZXJzIG9uZSBvciBtb3JlIHZhbGlkYXRvcnMgd2l0aCB0aGUgcmVnaXN0cnlcbiAgICogQHN1bW1hcnkgQWRkcyB2YWxpZGF0b3JzIHRvIHRoZSByZWdpc3RyeSwgbWFraW5nIHRoZW0gYXZhaWxhYmxlIGZvciB2YWxpZGF0aW9uIG9wZXJhdGlvbnMuXG4gICAqIFZhbGlkYXRvcnMgY2FuIGJlIHByb3ZpZGVkIGFzIGluc3RhbmNlcyBvciBhcyB2YWxpZGF0b3IgZGVmaW5pdGlvbnMuXG4gICAqXG4gICAqIEBwYXJhbSB7Li4uKFR8VmFsaWRhdG9yRGVmaW5pdGlvbil9IHZhbGlkYXRvciAtIFZhbGlkYXRvciBpbnN0YW5jZXMgb3IgZGVmaW5pdGlvbnMgdG8gcmVnaXN0ZXJcbiAgICogQHJldHVybiB7dm9pZH1cbiAgICovXG4gIHJlZ2lzdGVyPFQgZXh0ZW5kcyBWYWxpZGF0b3I+KFxuICAgIC4uLnZhbGlkYXRvcjogKFQgfCBWYWxpZGF0b3JEZWZpbml0aW9uKVtdXG4gICk6IHZvaWQ7XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBSZXRyaWV2ZXMgYSB2YWxpZGF0b3IgYnkgaXRzIGtleVxuICAgKiBAc3VtbWFyeSBMb29rcyB1cCBhIHZhbGlkYXRvciBpbiB0aGUgcmVnaXN0cnkgdXNpbmcgaXRzIHZhbGlkYXRpb24ga2V5LlxuICAgKiBSZXR1cm5zIHRoZSB2YWxpZGF0b3IgaWYgZm91bmQsIG9yIHVuZGVmaW5lZCBpZiBubyB2YWxpZGF0b3IgaXMgcmVnaXN0ZXJlZCBmb3IgdGhlIGtleS5cbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IGtleSAtIFRoZSB2YWxpZGF0aW9uIGtleSB0byBsb29rIHVwLCB0eXBpY2FsbHkgb25lIG9mIHRoZSB7QGxpbmsgVmFsaWRhdGlvbktleXN9XG4gICAqIEByZXR1cm4ge1R8dW5kZWZpbmVkfSBUaGUgcmVnaXN0ZXJlZCB2YWxpZGF0b3Igb3IgdW5kZWZpbmVkIGlmIG5vbmUgbWF0Y2hlcyB0aGUgcHJvdmlkZWQga2V5XG4gICAqL1xuICBnZXQ8VCBleHRlbmRzIFZhbGlkYXRvcj4oa2V5OiBzdHJpbmcpOiBUIHwgdW5kZWZpbmVkO1xufVxuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBCYXNlIG9wdGlvbnMgdHlwZSBmb3IgYWxsIHZhbGlkYXRvcnNcbiAqIEBzdW1tYXJ5IERlZmluZXMgdGhlIGNvbW1vbiBwcm9wZXJ0aWVzIGF2YWlsYWJsZSB0byBhbGwgdmFsaWRhdG9yc1xuICogQHR5cGVkZWYgVmFsaWRhdG9yT3B0aW9uc1xuICogQHByb3BlcnR5IHtzdHJpbmd9IFttZXNzYWdlXSAtIEN1c3RvbSBlcnJvciBtZXNzYWdlIHRvIGRpc3BsYXkgd2hlbiB2YWxpZGF0aW9uIGZhaWxzXG4gKiBAbWVtYmVyT2YgbW9kdWxlOmRlY29yYXRvci12YWxpZGF0aW9uXG4gKiBAY2F0ZWdvcnkgVmFsaWRhdGlvblxuICovXG5leHBvcnQgdHlwZSBWYWxpZGF0b3JPcHRpb25zID0ge1xuICBtZXNzYWdlPzogc3RyaW5nO1xufTtcblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gVVJMIHZhbGlkYXRpb24gb3B0aW9ucyBpbnRlcmZhY2VcbiAqIEBzdW1tYXJ5IERlZmluZXMgb3B0aW9ucyBmb3IgVVJMIHZhbGlkYXRpb24sIGluY2x1ZGluZyBhbGxvd2VkIFVSTCB0eXBlc1xuICogQGludGVyZmFjZSBVUkxWYWxpZGF0b3JPcHRpb25zXG4gKiBAcHJvcGVydHkgeyhzdHJpbmd8c3RyaW5nW118eyBuYW1lOiBzdHJpbmcgfSl9IHR5cGVzIC0gU3BlY2lmaWVzIHRoZSBhbGxvd2VkIFVSTCB0eXBlcyBvciBwYXR0ZXJuc1xuICogQG1lbWJlck9mIG1vZHVsZTpkZWNvcmF0b3ItdmFsaWRhdGlvblxuICogQGNhdGVnb3J5IFZhbGlkYXRpb25cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBVUkxWYWxpZGF0b3JPcHRpb25zIGV4dGVuZHMgVmFsaWRhdG9yT3B0aW9ucyB7XG4gIHR5cGVzOiBzdHJpbmcgfCBzdHJpbmdbXSB8IHsgbmFtZTogc3RyaW5nIH07XG59XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIFR5cGUgdmFsaWRhdGlvbiBvcHRpb25zIGludGVyZmFjZVxuICogQHN1bW1hcnkgRGVmaW5lcyBvcHRpb25zIGZvciB0eXBlIHZhbGlkYXRpb24sIHNwZWNpZnlpbmcgYWxsb3dlZCB0eXBlc1xuICogQGludGVyZmFjZSBUeXBlVmFsaWRhdG9yT3B0aW9uc1xuICogQHByb3BlcnR5IHsoc3RyaW5nfHN0cmluZ1tdfHsgbmFtZTogc3RyaW5nIH0pfSB0eXBlcyAtIFNwZWNpZmllcyB0aGUgYWxsb3dlZCBkYXRhIHR5cGVzXG4gKiBAbWVtYmVyT2YgbW9kdWxlOmRlY29yYXRvci12YWxpZGF0aW9uXG4gKiBAY2F0ZWdvcnkgVmFsaWRhdGlvblxuICovXG5leHBvcnQgaW50ZXJmYWNlIFR5cGVWYWxpZGF0b3JPcHRpb25zIGV4dGVuZHMgVmFsaWRhdG9yT3B0aW9ucyB7XG4gIHR5cGVzOiBzdHJpbmcgfCBzdHJpbmdbXSB8IHsgbmFtZTogc3RyaW5nIH07XG59XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIFN0ZXAgdmFsaWRhdGlvbiBvcHRpb25zIGludGVyZmFjZVxuICogQHN1bW1hcnkgRGVmaW5lcyBvcHRpb25zIGZvciBzdGVwIHZhbGlkYXRpb24sIHNwZWNpZnlpbmcgdGhlIHN0ZXAgaW5jcmVtZW50XG4gKiBAaW50ZXJmYWNlIFN0ZXBWYWxpZGF0b3JPcHRpb25zXG4gKiBAcHJvcGVydHkgeyhudW1iZXJ8c3RyaW5nKX0gW1ZhbGlkYXRpb25LZXlzLlNURVBdIC0gVGhlIHN0ZXAgdmFsdWUgZm9yIG51bWVyaWNhbCB2YWxpZGF0aW9uXG4gKiBAbWVtYmVyT2YgbW9kdWxlOmRlY29yYXRvci12YWxpZGF0aW9uXG4gKiBAY2F0ZWdvcnkgVmFsaWRhdGlvblxuICovXG5leHBvcnQgaW50ZXJmYWNlIFN0ZXBWYWxpZGF0b3JPcHRpb25zIGV4dGVuZHMgVmFsaWRhdG9yT3B0aW9ucyB7XG4gIFtWYWxpZGF0aW9uS2V5cy5TVEVQXTogbnVtYmVyIHwgc3RyaW5nO1xufVxuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBQYXR0ZXJuIHZhbGlkYXRpb24gb3B0aW9ucyBpbnRlcmZhY2VcbiAqIEBzdW1tYXJ5IERlZmluZXMgb3B0aW9ucyBmb3IgcGF0dGVybiB2YWxpZGF0aW9uIHVzaW5nIHJlZ3VsYXIgZXhwcmVzc2lvbnNcbiAqIEBpbnRlcmZhY2UgUGF0dGVyblZhbGlkYXRvck9wdGlvbnNcbiAqIEBwcm9wZXJ0eSB7KFJlZ0V4cHxzdHJpbmcpfSBbVmFsaWRhdGlvbktleXMuUEFUVEVSTl0gLSBUaGUgcGF0dGVybiB0byBtYXRjaCBhZ2FpbnN0XG4gKiBAbWVtYmVyT2YgbW9kdWxlOmRlY29yYXRvci12YWxpZGF0aW9uXG4gKiBAY2F0ZWdvcnkgVmFsaWRhdGlvblxuICovXG5leHBvcnQgaW50ZXJmYWNlIFBhdHRlcm5WYWxpZGF0b3JPcHRpb25zIGV4dGVuZHMgVmFsaWRhdG9yT3B0aW9ucyB7XG4gIFtWYWxpZGF0aW9uS2V5cy5QQVRURVJOXT86IFJlZ0V4cCB8IHN0cmluZztcbn1cblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gTWluaW11bSB2YWx1ZSB2YWxpZGF0aW9uIG9wdGlvbnMgaW50ZXJmYWNlXG4gKiBAc3VtbWFyeSBEZWZpbmVzIG9wdGlvbnMgZm9yIG1pbmltdW0gdmFsdWUgdmFsaWRhdGlvblxuICogQGludGVyZmFjZSBNaW5WYWxpZGF0b3JPcHRpb25zXG4gKiBAcHJvcGVydHkgeyhudW1iZXJ8RGF0ZXxzdHJpbmcpfSBbVmFsaWRhdGlvbktleXMuTUlOXSAtIFRoZSBtaW5pbXVtIGFsbG93ZWQgdmFsdWVcbiAqIEBtZW1iZXJPZiBtb2R1bGU6ZGVjb3JhdG9yLXZhbGlkYXRpb25cbiAqIEBjYXRlZ29yeSBWYWxpZGF0aW9uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTWluVmFsaWRhdG9yT3B0aW9ucyBleHRlbmRzIFZhbGlkYXRvck9wdGlvbnMge1xuICBbVmFsaWRhdGlvbktleXMuTUlOXTogbnVtYmVyIHwgRGF0ZSB8IHN0cmluZztcbn1cblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gTWluaW11bSBsZW5ndGggdmFsaWRhdGlvbiBvcHRpb25zIGludGVyZmFjZVxuICogQHN1bW1hcnkgRGVmaW5lcyBvcHRpb25zIGZvciBtaW5pbXVtIGxlbmd0aCB2YWxpZGF0aW9uXG4gKiBAaW50ZXJmYWNlIE1pbkxlbmd0aFZhbGlkYXRvck9wdGlvbnNcbiAqIEBwcm9wZXJ0eSB7bnVtYmVyfSBbVmFsaWRhdGlvbktleXMuTUlOX0xFTkdUSF0gLSBUaGUgbWluaW11bSBhbGxvd2VkIGxlbmd0aFxuICogQG1lbWJlck9mIG1vZHVsZTpkZWNvcmF0b3ItdmFsaWRhdGlvblxuICogQGNhdGVnb3J5IFZhbGlkYXRpb25cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBNaW5MZW5ndGhWYWxpZGF0b3JPcHRpb25zIGV4dGVuZHMgVmFsaWRhdG9yT3B0aW9ucyB7XG4gIFtWYWxpZGF0aW9uS2V5cy5NSU5fTEVOR1RIXTogbnVtYmVyO1xufVxuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBNYXhpbXVtIHZhbHVlIHZhbGlkYXRpb24gb3B0aW9ucyBpbnRlcmZhY2VcbiAqIEBzdW1tYXJ5IERlZmluZXMgb3B0aW9ucyBmb3IgbWF4aW11bSB2YWx1ZSB2YWxpZGF0aW9uXG4gKiBAaW50ZXJmYWNlIE1heFZhbGlkYXRvck9wdGlvbnNcbiAqIEBwcm9wZXJ0eSB7KG51bWJlcnxEYXRlfHN0cmluZyl9IFtWYWxpZGF0aW9uS2V5cy5NQVhdIC0gVGhlIG1heGltdW0gYWxsb3dlZCB2YWx1ZVxuICogQG1lbWJlck9mIG1vZHVsZTpkZWNvcmF0b3ItdmFsaWRhdGlvblxuICogQGNhdGVnb3J5IFZhbGlkYXRpb25cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBNYXhWYWxpZGF0b3JPcHRpb25zIGV4dGVuZHMgVmFsaWRhdG9yT3B0aW9ucyB7XG4gIFtWYWxpZGF0aW9uS2V5cy5NQVhdOiBudW1iZXIgfCBEYXRlIHwgc3RyaW5nO1xufVxuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBNYXhpbXVtIGxlbmd0aCB2YWxpZGF0aW9uIG9wdGlvbnMgaW50ZXJmYWNlXG4gKiBAc3VtbWFyeSBEZWZpbmVzIG9wdGlvbnMgZm9yIG1heGltdW0gbGVuZ3RoIHZhbGlkYXRpb25cbiAqIEBpbnRlcmZhY2UgTWF4TGVuZ3RoVmFsaWRhdG9yT3B0aW9uc1xuICogQHByb3BlcnR5IHtudW1iZXJ9IFtWYWxpZGF0aW9uS2V5cy5NQVhfTEVOR1RIXSAtIFRoZSBtYXhpbXVtIGFsbG93ZWQgbGVuZ3RoXG4gKiBAbWVtYmVyT2YgbW9kdWxlOmRlY29yYXRvci12YWxpZGF0aW9uXG4gKiBAY2F0ZWdvcnkgVmFsaWRhdGlvblxuICovXG5leHBvcnQgaW50ZXJmYWNlIE1heExlbmd0aFZhbGlkYXRvck9wdGlvbnMgZXh0ZW5kcyBWYWxpZGF0b3JPcHRpb25zIHtcbiAgW1ZhbGlkYXRpb25LZXlzLk1BWF9MRU5HVEhdOiBudW1iZXI7XG59XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIExpc3QgdmFsaWRhdGlvbiBvcHRpb25zIGludGVyZmFjZVxuICogQHN1bW1hcnkgRGVmaW5lcyBvcHRpb25zIGZvciBsaXN0IHZhbGlkYXRpb25cbiAqIEBpbnRlcmZhY2UgTGlzdFZhbGlkYXRvck9wdGlvbnNcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nW119IGNsYXp6IC0gQXJyYXkgb2YgYWxsb3dlZCBjbGFzcyBuYW1lcyBvciB0eXBlc1xuICogQG1lbWJlck9mIG1vZHVsZTpkZWNvcmF0b3ItdmFsaWRhdGlvblxuICogQGNhdGVnb3J5IFZhbGlkYXRpb25cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBMaXN0VmFsaWRhdG9yT3B0aW9ucyBleHRlbmRzIFZhbGlkYXRvck9wdGlvbnMge1xuICBjbGF6ejogc3RyaW5nW107XG59XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIERhdGUgdmFsaWRhdGlvbiBvcHRpb25zIGludGVyZmFjZVxuICogQHN1bW1hcnkgRGVmaW5lcyBvcHRpb25zIGZvciBkYXRlIHZhbGlkYXRpb25cbiAqIEBpbnRlcmZhY2UgRGF0ZVZhbGlkYXRvck9wdGlvbnNcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBbVmFsaWRhdGlvbktleXMuRk9STUFUXSAtIFRoZSBleHBlY3RlZCBkYXRlIGZvcm1hdCBwYXR0ZXJuXG4gKiBAbWVtYmVyT2YgbW9kdWxlOmRlY29yYXRvci12YWxpZGF0aW9uXG4gKiBAY2F0ZWdvcnkgVmFsaWRhdGlvblxuICovXG5leHBvcnQgaW50ZXJmYWNlIERhdGVWYWxpZGF0b3JPcHRpb25zIGV4dGVuZHMgVmFsaWRhdG9yT3B0aW9ucyB7XG4gIFtWYWxpZGF0aW9uS2V5cy5GT1JNQVRdPzogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEVxdWFsc1ZhbGlkYXRvck9wdGlvbnMgZXh0ZW5kcyBWYWxpZGF0b3JPcHRpb25zIHtcbiAgW1ZhbGlkYXRpb25LZXlzLkVRVUFMU106IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBEaWZmVmFsaWRhdG9yT3B0aW9ucyBleHRlbmRzIFZhbGlkYXRvck9wdGlvbnMge1xuICBbVmFsaWRhdGlvbktleXMuRElGRl06IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBMZXNzVGhhblZhbGlkYXRvck9wdGlvbnMgZXh0ZW5kcyBWYWxpZGF0b3JPcHRpb25zIHtcbiAgW1ZhbGlkYXRpb25LZXlzLkxFU1NfVEhBTl06IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBMZXNzVGhhbk9yRXF1YWxWYWxpZGF0b3JPcHRpb25zIGV4dGVuZHMgVmFsaWRhdG9yT3B0aW9ucyB7XG4gIFtWYWxpZGF0aW9uS2V5cy5MRVNTX1RIQU5fT1JfRVFVQUxdOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgR3JlYXRlclRoYW5WYWxpZGF0b3JPcHRpb25zIGV4dGVuZHMgVmFsaWRhdG9yT3B0aW9ucyB7XG4gIFtWYWxpZGF0aW9uS2V5cy5HUkVBVEVSX1RIQU5dOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgR3JlYXRlclRoYW5PckVxdWFsVmFsaWRhdG9yT3B0aW9ucyBleHRlbmRzIFZhbGlkYXRvck9wdGlvbnMge1xuICBbVmFsaWRhdGlvbktleXMuR1JFQVRFUl9USEFOX09SX0VRVUFMXTogc3RyaW5nO1xufVxuIl19
|
|
@@ -3,9 +3,17 @@ import { Constructor } from "../model";
|
|
|
3
3
|
import { ValidationKeys, Validator } from "./Validators";
|
|
4
4
|
import { IRegistry } from "../utils";
|
|
5
5
|
/**
|
|
6
|
-
* @
|
|
7
|
-
* @
|
|
8
|
-
*
|
|
6
|
+
* @description Type definition for metadata used by validation decorators
|
|
7
|
+
* @summary Defines the structure of metadata attached to properties by validation decorators.
|
|
8
|
+
* This metadata is used during validation to determine validation rules and error messages.
|
|
9
|
+
*
|
|
10
|
+
* @property {any[]} [args] - Optional arguments for the validator
|
|
11
|
+
* @property {string} message - Error message to display when validation fails
|
|
12
|
+
* @property {string[]} [types] - Array of type names that the property can have
|
|
13
|
+
*
|
|
14
|
+
* @typedef {Object} ValidationMetadata
|
|
15
|
+
* @memberOf module:decorator-validation
|
|
16
|
+
* @category Validation
|
|
9
17
|
*/
|
|
10
18
|
export type ValidationMetadata = {
|
|
11
19
|
[indexer: string]: any;
|
|
@@ -14,8 +22,15 @@ export type ValidationMetadata = {
|
|
|
14
22
|
types?: string[];
|
|
15
23
|
};
|
|
16
24
|
/**
|
|
17
|
-
* @
|
|
18
|
-
* @
|
|
25
|
+
* @description Type definition for property-level validation decorator configuration
|
|
26
|
+
* @summary Defines the structure that associates a property with its validation decorators.
|
|
27
|
+
* This type is used to track which decorators are applied to a specific property during validation.
|
|
28
|
+
*
|
|
29
|
+
* @property {string|symbol} prop - The property name or symbol that the decorators are applied to
|
|
30
|
+
* @property {ValidationDecoratorDefinition[]} decorators - Array of decorator definitions applied to the property
|
|
31
|
+
*
|
|
32
|
+
* @typedef {Object} ValidationPropertyDecoratorDefinition
|
|
33
|
+
* @memberOf module:decorator-validation
|
|
19
34
|
* @category Validation
|
|
20
35
|
*/
|
|
21
36
|
export type ValidationPropertyDecoratorDefinition = {
|
|
@@ -23,8 +38,14 @@ export type ValidationPropertyDecoratorDefinition = {
|
|
|
23
38
|
decorators: ValidationDecoratorDefinition[];
|
|
24
39
|
};
|
|
25
40
|
/**
|
|
26
|
-
* @
|
|
27
|
-
* @
|
|
41
|
+
* @description Type definition for individual validation decorator metadata
|
|
42
|
+
* @summary Extends the base DecoratorMetadata type with validation-specific properties.
|
|
43
|
+
* This type represents the metadata for a single validation decorator applied to a property.
|
|
44
|
+
*
|
|
45
|
+
* @property {ValidationElementDefinition} props - The validation element properties and configuration
|
|
46
|
+
*
|
|
47
|
+
* @typedef {Object} ValidationDecoratorDefinition
|
|
48
|
+
* @memberOf module:decorator-validation
|
|
28
49
|
* @category Validation
|
|
29
50
|
*/
|
|
30
51
|
export type ValidationDecoratorDefinition = DecoratorMetadata & {
|
|
@@ -32,7 +53,7 @@ export type ValidationDecoratorDefinition = DecoratorMetadata & {
|
|
|
32
53
|
};
|
|
33
54
|
/**
|
|
34
55
|
* @summary Type for a validator element metadata
|
|
35
|
-
* @memberOf module:decorator-validation
|
|
56
|
+
* @memberOf module:decorator-validation
|
|
36
57
|
* @category Validation
|
|
37
58
|
*/
|
|
38
59
|
export type ValidationElementDefinition = {
|
|
@@ -43,13 +64,13 @@ export type ValidationElementDefinition = {
|
|
|
43
64
|
};
|
|
44
65
|
/**
|
|
45
66
|
* @summary Type for a model errors
|
|
46
|
-
* @memberOf module:decorator-validation
|
|
67
|
+
* @memberOf module:decorator-validation
|
|
47
68
|
* @category Validation
|
|
48
69
|
*/
|
|
49
70
|
export type ModelErrors = Record<string, Record<string, string | undefined>>;
|
|
50
71
|
/**
|
|
51
72
|
* @summary Util type for {@link Validator} configuration
|
|
52
|
-
* @memberOf module:decorator-validation
|
|
73
|
+
* @memberOf module:decorator-validation
|
|
53
74
|
* @category Validation
|
|
54
75
|
*/
|
|
55
76
|
export type ValidatorDefinition = {
|
|
@@ -58,77 +79,174 @@ export type ValidatorDefinition = {
|
|
|
58
79
|
save: boolean;
|
|
59
80
|
};
|
|
60
81
|
/**
|
|
61
|
-
* @
|
|
62
|
-
*
|
|
63
|
-
*
|
|
64
|
-
*
|
|
82
|
+
* @description Interface for a registry that manages validator instances
|
|
83
|
+
* @summary Defines the contract for a registry that stores and retrieves validators.
|
|
84
|
+
* The registry is responsible for maintaining a collection of validators and providing
|
|
85
|
+
* access to them by key.
|
|
65
86
|
*
|
|
87
|
+
* @interface IValidatorRegistry
|
|
88
|
+
* @template T Type of validator, must extend Validator
|
|
89
|
+
* @extends IRegistry<T>
|
|
90
|
+
* @memberOf module:decorator-validation
|
|
66
91
|
* @category Validation
|
|
67
92
|
*/
|
|
68
93
|
export interface IValidatorRegistry<T extends Validator> extends IRegistry<T> {
|
|
69
94
|
/**
|
|
70
|
-
* @
|
|
71
|
-
* @
|
|
95
|
+
* @description Retrieves custom validation keys defined in the registry
|
|
96
|
+
* @summary Returns a mapping of custom validation keys to their corresponding standard keys.
|
|
97
|
+
* This allows for aliasing validation keys for specific use cases.
|
|
98
|
+
*
|
|
99
|
+
* @return {Record<string, string>} Object mapping custom keys to standard validation keys
|
|
72
100
|
*/
|
|
73
101
|
getCustomKeys(): Record<string, string>;
|
|
74
102
|
/**
|
|
75
|
-
* @
|
|
76
|
-
* @
|
|
77
|
-
*
|
|
103
|
+
* @description Gets all registered validator keys
|
|
104
|
+
* @summary Returns an array of all validation keys that have registered validators.
|
|
105
|
+
*
|
|
106
|
+
* @return {string[]} Array of registered validator keys
|
|
78
107
|
*/
|
|
79
108
|
getKeys(): string[];
|
|
80
109
|
/**
|
|
81
|
-
* @
|
|
110
|
+
* @description Registers one or more validators with the registry
|
|
111
|
+
* @summary Adds validators to the registry, making them available for validation operations.
|
|
112
|
+
* Validators can be provided as instances or as validator definitions.
|
|
82
113
|
*
|
|
83
|
-
* @
|
|
84
|
-
* @
|
|
85
|
-
* @method
|
|
114
|
+
* @param {...(T|ValidatorDefinition)} validator - Validator instances or definitions to register
|
|
115
|
+
* @return {void}
|
|
86
116
|
*/
|
|
87
117
|
register<T extends Validator>(...validator: (T | ValidatorDefinition)[]): void;
|
|
88
118
|
/**
|
|
89
|
-
* @
|
|
119
|
+
* @description Retrieves a validator by its key
|
|
120
|
+
* @summary Looks up a validator in the registry using its validation key.
|
|
121
|
+
* Returns the validator if found, or undefined if no validator is registered for the key.
|
|
90
122
|
*
|
|
91
|
-
* @
|
|
92
|
-
* @
|
|
93
|
-
* @return {Validator | undefined} the registered Validator or undefined if there is nono matching the provided key
|
|
94
|
-
* @method
|
|
123
|
+
* @param {string} key - The validation key to look up, typically one of the {@link ValidationKeys}
|
|
124
|
+
* @return {T|undefined} The registered validator or undefined if none matches the provided key
|
|
95
125
|
*/
|
|
96
126
|
get<T extends Validator>(key: string): T | undefined;
|
|
97
127
|
}
|
|
128
|
+
/**
|
|
129
|
+
* @description Base options type for all validators
|
|
130
|
+
* @summary Defines the common properties available to all validators
|
|
131
|
+
* @typedef ValidatorOptions
|
|
132
|
+
* @property {string} [message] - Custom error message to display when validation fails
|
|
133
|
+
* @memberOf module:decorator-validation
|
|
134
|
+
* @category Validation
|
|
135
|
+
*/
|
|
98
136
|
export type ValidatorOptions = {
|
|
99
137
|
message?: string;
|
|
100
138
|
};
|
|
139
|
+
/**
|
|
140
|
+
* @description URL validation options interface
|
|
141
|
+
* @summary Defines options for URL validation, including allowed URL types
|
|
142
|
+
* @interface URLValidatorOptions
|
|
143
|
+
* @property {(string|string[]|{ name: string })} types - Specifies the allowed URL types or patterns
|
|
144
|
+
* @memberOf module:decorator-validation
|
|
145
|
+
* @category Validation
|
|
146
|
+
*/
|
|
101
147
|
export interface URLValidatorOptions extends ValidatorOptions {
|
|
102
148
|
types: string | string[] | {
|
|
103
149
|
name: string;
|
|
104
150
|
};
|
|
105
151
|
}
|
|
152
|
+
/**
|
|
153
|
+
* @description Type validation options interface
|
|
154
|
+
* @summary Defines options for type validation, specifying allowed types
|
|
155
|
+
* @interface TypeValidatorOptions
|
|
156
|
+
* @property {(string|string[]|{ name: string })} types - Specifies the allowed data types
|
|
157
|
+
* @memberOf module:decorator-validation
|
|
158
|
+
* @category Validation
|
|
159
|
+
*/
|
|
106
160
|
export interface TypeValidatorOptions extends ValidatorOptions {
|
|
107
161
|
types: string | string[] | {
|
|
108
162
|
name: string;
|
|
109
163
|
};
|
|
110
164
|
}
|
|
165
|
+
/**
|
|
166
|
+
* @description Step validation options interface
|
|
167
|
+
* @summary Defines options for step validation, specifying the step increment
|
|
168
|
+
* @interface StepValidatorOptions
|
|
169
|
+
* @property {(number|string)} [ValidationKeys.STEP] - The step value for numerical validation
|
|
170
|
+
* @memberOf module:decorator-validation
|
|
171
|
+
* @category Validation
|
|
172
|
+
*/
|
|
111
173
|
export interface StepValidatorOptions extends ValidatorOptions {
|
|
112
174
|
[ValidationKeys.STEP]: number | string;
|
|
113
175
|
}
|
|
176
|
+
/**
|
|
177
|
+
* @description Pattern validation options interface
|
|
178
|
+
* @summary Defines options for pattern validation using regular expressions
|
|
179
|
+
* @interface PatternValidatorOptions
|
|
180
|
+
* @property {(RegExp|string)} [ValidationKeys.PATTERN] - The pattern to match against
|
|
181
|
+
* @memberOf module:decorator-validation
|
|
182
|
+
* @category Validation
|
|
183
|
+
*/
|
|
114
184
|
export interface PatternValidatorOptions extends ValidatorOptions {
|
|
115
185
|
[ValidationKeys.PATTERN]?: RegExp | string;
|
|
116
186
|
}
|
|
187
|
+
/**
|
|
188
|
+
* @description Minimum value validation options interface
|
|
189
|
+
* @summary Defines options for minimum value validation
|
|
190
|
+
* @interface MinValidatorOptions
|
|
191
|
+
* @property {(number|Date|string)} [ValidationKeys.MIN] - The minimum allowed value
|
|
192
|
+
* @memberOf module:decorator-validation
|
|
193
|
+
* @category Validation
|
|
194
|
+
*/
|
|
117
195
|
export interface MinValidatorOptions extends ValidatorOptions {
|
|
118
196
|
[ValidationKeys.MIN]: number | Date | string;
|
|
119
197
|
}
|
|
198
|
+
/**
|
|
199
|
+
* @description Minimum length validation options interface
|
|
200
|
+
* @summary Defines options for minimum length validation
|
|
201
|
+
* @interface MinLengthValidatorOptions
|
|
202
|
+
* @property {number} [ValidationKeys.MIN_LENGTH] - The minimum allowed length
|
|
203
|
+
* @memberOf module:decorator-validation
|
|
204
|
+
* @category Validation
|
|
205
|
+
*/
|
|
120
206
|
export interface MinLengthValidatorOptions extends ValidatorOptions {
|
|
121
207
|
[ValidationKeys.MIN_LENGTH]: number;
|
|
122
208
|
}
|
|
209
|
+
/**
|
|
210
|
+
* @description Maximum value validation options interface
|
|
211
|
+
* @summary Defines options for maximum value validation
|
|
212
|
+
* @interface MaxValidatorOptions
|
|
213
|
+
* @property {(number|Date|string)} [ValidationKeys.MAX] - The maximum allowed value
|
|
214
|
+
* @memberOf module:decorator-validation
|
|
215
|
+
* @category Validation
|
|
216
|
+
*/
|
|
123
217
|
export interface MaxValidatorOptions extends ValidatorOptions {
|
|
124
218
|
[ValidationKeys.MAX]: number | Date | string;
|
|
125
219
|
}
|
|
220
|
+
/**
|
|
221
|
+
* @description Maximum length validation options interface
|
|
222
|
+
* @summary Defines options for maximum length validation
|
|
223
|
+
* @interface MaxLengthValidatorOptions
|
|
224
|
+
* @property {number} [ValidationKeys.MAX_LENGTH] - The maximum allowed length
|
|
225
|
+
* @memberOf module:decorator-validation
|
|
226
|
+
* @category Validation
|
|
227
|
+
*/
|
|
126
228
|
export interface MaxLengthValidatorOptions extends ValidatorOptions {
|
|
127
229
|
[ValidationKeys.MAX_LENGTH]: number;
|
|
128
230
|
}
|
|
231
|
+
/**
|
|
232
|
+
* @description List validation options interface
|
|
233
|
+
* @summary Defines options for list validation
|
|
234
|
+
* @interface ListValidatorOptions
|
|
235
|
+
* @property {string[]} clazz - Array of allowed class names or types
|
|
236
|
+
* @memberOf module:decorator-validation
|
|
237
|
+
* @category Validation
|
|
238
|
+
*/
|
|
129
239
|
export interface ListValidatorOptions extends ValidatorOptions {
|
|
130
240
|
clazz: string[];
|
|
131
241
|
}
|
|
242
|
+
/**
|
|
243
|
+
* @description Date validation options interface
|
|
244
|
+
* @summary Defines options for date validation
|
|
245
|
+
* @interface DateValidatorOptions
|
|
246
|
+
* @property {string} [ValidationKeys.FORMAT] - The expected date format pattern
|
|
247
|
+
* @memberOf module:decorator-validation
|
|
248
|
+
* @category Validation
|
|
249
|
+
*/
|
|
132
250
|
export interface DateValidatorOptions extends ValidatorOptions {
|
|
133
251
|
[ValidationKeys.FORMAT]?: string;
|
|
134
252
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@decaf-ts/decorator-validation",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.7.0",
|
|
4
4
|
"description": "simple decorator based validation engine",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"exports": {
|
|
@@ -66,6 +66,7 @@
|
|
|
66
66
|
},
|
|
67
67
|
"homepage": "https://github.com/decaf-ts/decorator-validation#readme",
|
|
68
68
|
"devDependencies": {
|
|
69
|
+
"@decaf-ts/logging": "latest",
|
|
69
70
|
"@decaf-ts/utils": "latest",
|
|
70
71
|
"@eslint/js": "^9.25.1",
|
|
71
72
|
"@rollup/plugin-commonjs": "^28.0.3",
|