@decaf-ts/decorator-validation 1.0.7 → 1.0.11
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.bundle.min.js +1 -1
- package/dist/esm/decorator-validation.bundle.min.esm.js +1 -1
- package/lib/esm/index.d.ts +6 -1
- package/lib/esm/index.js +68 -1
- package/lib/esm/model/Model.d.ts +3 -1
- package/lib/esm/model/Model.js +316 -1
- package/lib/esm/model/ModelErrorDefinition.d.ts +1 -1
- package/lib/esm/model/ModelErrorDefinition.js +55 -3
- package/lib/esm/model/Registry.d.ts +1 -1
- package/lib/esm/model/Registry.js +76 -1
- package/lib/esm/model/constants.js +44 -1
- package/lib/esm/model/construction.js +124 -1
- package/lib/esm/model/decorators.d.ts +3 -3
- package/lib/esm/model/decorators.js +68 -1
- package/lib/esm/model/index.d.ts +3 -3
- package/lib/esm/model/index.js +9 -1
- package/lib/esm/model/types.js +3 -0
- package/lib/esm/reflection/decorators.d.ts +15 -0
- package/lib/esm/reflection/decorators.js +28 -0
- package/lib/esm/reflection/index.d.ts +2 -0
- package/lib/esm/reflection/index.js +4 -0
- package/lib/esm/{utils/general.d.ts → reflection/utils.d.ts} +7 -87
- package/lib/esm/reflection/utils.js +239 -0
- package/lib/esm/utils/constants.js +25 -1
- package/lib/esm/utils/dates.d.ts +76 -0
- package/lib/esm/utils/dates.js +241 -0
- package/lib/esm/utils/equality.d.ts +14 -0
- package/lib/esm/utils/equality.js +34 -0
- package/lib/esm/utils/hashing.d.ts +42 -0
- package/lib/esm/utils/hashing.js +73 -0
- package/lib/esm/utils/index.d.ts +6 -2
- package/lib/esm/utils/index.js +10 -1
- package/lib/esm/utils/registry.js +3 -0
- package/lib/esm/utils/serialization.js +53 -1
- package/lib/esm/utils/strings.d.ts +25 -0
- package/lib/esm/utils/strings.js +31 -0
- package/lib/esm/validation/Validation.d.ts +2 -1
- package/lib/esm/validation/Validation.js +63 -1
- package/lib/esm/validation/Validators/DateValidator.js +55 -1
- package/lib/esm/validation/Validators/EmailValidator.d.ts +0 -1
- package/lib/esm/validation/Validators/EmailValidator.js +49 -1
- package/lib/esm/validation/Validators/ListValidator.js +67 -1
- package/lib/esm/validation/Validators/MaxLengthValidator.js +55 -1
- package/lib/esm/validation/Validators/MaxValidator.js +59 -1
- package/lib/esm/validation/Validators/MinLengthValidator.js +55 -1
- package/lib/esm/validation/Validators/MinValidator.js +59 -1
- package/lib/esm/validation/Validators/PasswordValidator.js +52 -1
- package/lib/esm/validation/Validators/PatternValidator.d.ts +3 -3
- package/lib/esm/validation/Validators/PatternValidator.js +72 -1
- package/lib/esm/validation/Validators/RequiredValidator.js +57 -1
- package/lib/esm/validation/Validators/StepValidator.js +54 -1
- package/lib/esm/validation/Validators/TypeValidator.js +42 -1
- package/lib/esm/validation/Validators/URLValidator.d.ts +0 -1
- package/lib/esm/validation/Validators/URLValidator.js +48 -1
- package/lib/esm/validation/Validators/Validator.js +50 -1
- package/lib/esm/validation/Validators/ValidatorRegistry.js +81 -1
- package/lib/esm/validation/Validators/constants.d.ts +8 -4
- package/lib/esm/validation/Validators/constants.js +135 -1
- package/lib/esm/validation/Validators/decorators.d.ts +13 -0
- package/lib/esm/validation/Validators/decorators.js +23 -0
- package/lib/esm/validation/Validators/index.d.ts +9 -7
- package/lib/esm/validation/Validators/index.js +54 -1
- package/lib/esm/validation/Validators/types.d.ts +2 -2
- package/lib/esm/validation/Validators/types.js +3 -0
- package/lib/esm/validation/decorators.d.ts +14 -87
- package/lib/esm/validation/decorators.js +320 -1
- package/lib/esm/validation/index.d.ts +1 -10
- package/lib/esm/validation/index.js +6 -1
- package/lib/esm/validation/types.d.ts +11 -0
- package/lib/esm/validation/types.js +3 -0
- package/lib/index.cjs +85 -1
- package/lib/index.d.ts +6 -1
- package/lib/model/Model.cjs +321 -1
- package/lib/model/Model.d.ts +3 -1
- package/lib/model/ModelErrorDefinition.cjs +59 -3
- package/lib/model/ModelErrorDefinition.d.ts +1 -1
- package/lib/model/Registry.cjs +81 -1
- package/lib/model/Registry.d.ts +1 -1
- package/lib/model/constants.cjs +47 -1
- package/lib/model/construction.cjs +129 -1
- package/lib/model/decorators.cjs +73 -1
- package/lib/model/decorators.d.ts +3 -3
- package/lib/model/index.cjs +25 -1
- package/lib/model/index.d.ts +3 -3
- package/lib/model/types.cjs +4 -1
- package/lib/reflection/decorators.cjs +31 -0
- package/lib/reflection/decorators.d.ts +15 -0
- package/lib/reflection/index.cjs +20 -0
- package/lib/reflection/index.d.ts +2 -0
- package/lib/reflection/utils.cjs +251 -0
- package/lib/{utils/general.d.ts → reflection/utils.d.ts} +7 -87
- package/lib/utils/constants.cjs +28 -1
- package/lib/utils/dates.cjs +249 -0
- package/lib/utils/dates.d.ts +76 -0
- package/lib/utils/equality.cjs +37 -0
- package/lib/utils/equality.d.ts +14 -0
- package/lib/utils/hashing.cjs +78 -0
- package/lib/utils/hashing.d.ts +42 -0
- package/lib/utils/index.cjs +26 -1
- package/lib/utils/index.d.ts +6 -2
- package/lib/utils/registry.cjs +4 -1
- package/lib/utils/serialization.cjs +57 -1
- package/lib/utils/strings.cjs +35 -0
- package/lib/utils/strings.d.ts +25 -0
- package/lib/validation/Validation.cjs +67 -1
- package/lib/validation/Validation.d.ts +2 -1
- package/lib/validation/Validators/DateValidator.cjs +58 -1
- package/lib/validation/Validators/EmailValidator.cjs +52 -1
- package/lib/validation/Validators/EmailValidator.d.ts +0 -1
- package/lib/validation/Validators/ListValidator.cjs +70 -1
- package/lib/validation/Validators/MaxLengthValidator.cjs +58 -1
- package/lib/validation/Validators/MaxValidator.cjs +62 -1
- package/lib/validation/Validators/MinLengthValidator.cjs +58 -1
- package/lib/validation/Validators/MinValidator.cjs +62 -1
- package/lib/validation/Validators/PasswordValidator.cjs +55 -1
- package/lib/validation/Validators/PatternValidator.cjs +75 -1
- package/lib/validation/Validators/PatternValidator.d.ts +3 -3
- package/lib/validation/Validators/RequiredValidator.cjs +60 -1
- package/lib/validation/Validators/StepValidator.cjs +57 -1
- package/lib/validation/Validators/TypeValidator.cjs +46 -1
- package/lib/validation/Validators/URLValidator.cjs +51 -1
- package/lib/validation/Validators/URLValidator.d.ts +0 -1
- package/lib/validation/Validators/Validator.cjs +54 -1
- package/lib/validation/Validators/ValidatorRegistry.cjs +86 -1
- package/lib/validation/Validators/constants.cjs +138 -1
- package/lib/validation/Validators/constants.d.ts +8 -4
- package/lib/validation/Validators/decorators.cjs +26 -0
- package/lib/validation/Validators/decorators.d.ts +13 -0
- package/lib/validation/Validators/index.cjs +71 -1
- package/lib/validation/Validators/index.d.ts +9 -7
- package/lib/validation/Validators/types.cjs +4 -1
- package/lib/validation/Validators/types.d.ts +2 -2
- package/lib/validation/decorators.cjs +337 -1
- package/lib/validation/decorators.d.ts +14 -87
- package/lib/validation/index.cjs +22 -1
- package/lib/validation/index.d.ts +1 -10
- package/lib/validation/types.cjs +4 -1
- package/lib/validation/types.d.ts +11 -0
- package/package.json +17 -13
- package/lib/esm/utils/general.js +0 -1
- package/lib/utils/general.cjs +0 -1
|
@@ -1 +1,337 @@
|
|
|
1
|
-
"use strict";
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.getValidationKey = getValidationKey;
|
|
4
|
+
exports.required = required;
|
|
5
|
+
exports.min = min;
|
|
6
|
+
exports.max = max;
|
|
7
|
+
exports.step = step;
|
|
8
|
+
exports.minlength = minlength;
|
|
9
|
+
exports.maxlength = maxlength;
|
|
10
|
+
exports.pattern = pattern;
|
|
11
|
+
exports.email = email;
|
|
12
|
+
exports.url = url;
|
|
13
|
+
exports.type = type;
|
|
14
|
+
exports.date = date;
|
|
15
|
+
exports.password = password;
|
|
16
|
+
exports.list = list;
|
|
17
|
+
exports.set = set;
|
|
18
|
+
require("reflect-metadata");
|
|
19
|
+
const ListValidator_1 = require("./Validators/ListValidator/index.cjs");
|
|
20
|
+
const Validation_1 = require("./Validation/index.cjs");
|
|
21
|
+
const decorators_1 = require("../reflection/decorators/index.cjs");
|
|
22
|
+
const constants_1 = require("./Validators/constants/index.cjs");
|
|
23
|
+
const strings_1 = require("../utils/strings/index.cjs");
|
|
24
|
+
const PasswordValidator_1 = require("./Validators/PasswordValidator/index.cjs");
|
|
25
|
+
const utils_1 = require("../utils/index.cjs");
|
|
26
|
+
/**
|
|
27
|
+
* @summary Builds the key to store as Metadata under Reflections
|
|
28
|
+
* @description concatenates {@link ValidationKeys#REFLECT} with the provided key
|
|
29
|
+
*
|
|
30
|
+
* @param {string} key
|
|
31
|
+
*
|
|
32
|
+
* @function getModelKey
|
|
33
|
+
* @memberOf module:decorator-validation.Utils
|
|
34
|
+
* @category Utilities
|
|
35
|
+
*/
|
|
36
|
+
function getValidationKey(key) {
|
|
37
|
+
return constants_1.ValidationKeys.REFLECT + key;
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* @summary Marks the property as required.
|
|
41
|
+
* @description Validators to validate a decorated property must use key {@link ValidationKeys#REQUIRED}
|
|
42
|
+
*
|
|
43
|
+
* @param {string} [message] the error message. Defaults to {@link DEFAULT_ERROR_MESSAGES#REQUIRED}
|
|
44
|
+
*
|
|
45
|
+
* @function required
|
|
46
|
+
*
|
|
47
|
+
* @category Decorators
|
|
48
|
+
*/
|
|
49
|
+
function required(message = constants_1.DEFAULT_ERROR_MESSAGES.REQUIRED) {
|
|
50
|
+
return (0, decorators_1.metadata)(getValidationKey(constants_1.ValidationKeys.REQUIRED), {
|
|
51
|
+
message: message,
|
|
52
|
+
});
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* @summary Defines a minimum value for the property
|
|
56
|
+
* @description Validators to validate a decorated property must use key {@link ValidationKeys#MIN}
|
|
57
|
+
*
|
|
58
|
+
* @param {number | Date} value
|
|
59
|
+
* @param {string} [message] the error message. Defaults to {@link DEFAULT_ERROR_MESSAGES#MIN}
|
|
60
|
+
*
|
|
61
|
+
* @function min
|
|
62
|
+
* @memberOf module:decorator-validation.Decorators.Validation
|
|
63
|
+
* @category Decorators
|
|
64
|
+
*/
|
|
65
|
+
function min(value, message = constants_1.DEFAULT_ERROR_MESSAGES.MIN) {
|
|
66
|
+
return (0, decorators_1.metadata)(getValidationKey(constants_1.ValidationKeys.MIN), {
|
|
67
|
+
value: value,
|
|
68
|
+
message: message,
|
|
69
|
+
types: [Number.name, Date.name],
|
|
70
|
+
});
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* @summary Defines a maximum value for the property
|
|
74
|
+
* @description Validators to validate a decorated property must use key {@link ValidationKeys#MAX}
|
|
75
|
+
*
|
|
76
|
+
* @param {number | Date} value
|
|
77
|
+
* @param {string} [message] the error message. Defaults to {@link DEFAULT_ERROR_MESSAGES#MAX}
|
|
78
|
+
*
|
|
79
|
+
* @function max
|
|
80
|
+
* @memberOf module:decorator-validation.Decorators.Validation
|
|
81
|
+
* @category Decorators
|
|
82
|
+
*/
|
|
83
|
+
function max(value, message = constants_1.DEFAULT_ERROR_MESSAGES.MAX) {
|
|
84
|
+
return (0, decorators_1.metadata)(getValidationKey(constants_1.ValidationKeys.MAX), {
|
|
85
|
+
value: value,
|
|
86
|
+
message: message,
|
|
87
|
+
types: [Number.name, Date.name],
|
|
88
|
+
});
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* @summary Defines a step value for the property
|
|
92
|
+
* @description Validators to validate a decorated property must use key {@link ValidationKeys#STEP}
|
|
93
|
+
*
|
|
94
|
+
* @param {number} value
|
|
95
|
+
* @param {string} [message] the error message. Defaults to {@link DEFAULT_ERROR_MESSAGES#STEP}
|
|
96
|
+
*
|
|
97
|
+
* @function step
|
|
98
|
+
* @memberOf module:decorator-validation.Decorators.Validation
|
|
99
|
+
* @category Decorators
|
|
100
|
+
*/
|
|
101
|
+
function step(value, message = constants_1.DEFAULT_ERROR_MESSAGES.STEP) {
|
|
102
|
+
return (0, decorators_1.metadata)(getValidationKey(constants_1.ValidationKeys.STEP), {
|
|
103
|
+
value: value,
|
|
104
|
+
message: message,
|
|
105
|
+
types: [Number.name],
|
|
106
|
+
});
|
|
107
|
+
}
|
|
108
|
+
/**
|
|
109
|
+
* @summary Defines a minimum length for the property
|
|
110
|
+
* @description Validators to validate a decorated property must use key {@link ValidationKeys#MIN_LENGTH}
|
|
111
|
+
*
|
|
112
|
+
* @param {string} value
|
|
113
|
+
* @param {string} [message] the error message. Defaults to {@link DEFAULT_ERROR_MESSAGES#MIN_LENGTH}
|
|
114
|
+
*
|
|
115
|
+
* @function minlength
|
|
116
|
+
* @memberOf module:decorator-validation.Decorators.Validation
|
|
117
|
+
* @category Decorators
|
|
118
|
+
*/
|
|
119
|
+
function minlength(value, message = constants_1.DEFAULT_ERROR_MESSAGES.MIN_LENGTH) {
|
|
120
|
+
return (0, decorators_1.metadata)(getValidationKey(constants_1.ValidationKeys.MIN_LENGTH), {
|
|
121
|
+
value: value,
|
|
122
|
+
message: message,
|
|
123
|
+
types: [String.name, Array.name, Set.name],
|
|
124
|
+
});
|
|
125
|
+
}
|
|
126
|
+
/**
|
|
127
|
+
* @summary Defines a maximum length for the property
|
|
128
|
+
* @description Validators to validate a decorated property must use key {@link ValidationKeys#MAX_LENGTH}
|
|
129
|
+
*
|
|
130
|
+
* @param {string} value
|
|
131
|
+
* @param {string} [message] the error message. Defaults to {@link DEFAULT_ERROR_MESSAGES#MAX_LENGTH}
|
|
132
|
+
*
|
|
133
|
+
* @function maxlength
|
|
134
|
+
* @memberOf module:decorator-validation.Decorators.Validation
|
|
135
|
+
* @category Decorators
|
|
136
|
+
*/
|
|
137
|
+
function maxlength(value, message = constants_1.DEFAULT_ERROR_MESSAGES.MAX_LENGTH) {
|
|
138
|
+
return (0, decorators_1.metadata)(getValidationKey(constants_1.ValidationKeys.MAX_LENGTH), {
|
|
139
|
+
value: value,
|
|
140
|
+
message: message,
|
|
141
|
+
types: [String.name, Array.name, Set.name],
|
|
142
|
+
});
|
|
143
|
+
}
|
|
144
|
+
/**
|
|
145
|
+
* @summary Defines a RegExp pattern the property must respect
|
|
146
|
+
* @description Validators to validate a decorated property must use key {@link ValidationKeys#PATTERN}
|
|
147
|
+
*
|
|
148
|
+
* @param {string} value
|
|
149
|
+
* @param {string} [message] the error message. Defaults to {@link DEFAULT_ERROR_MESSAGES#PATTERN}
|
|
150
|
+
*
|
|
151
|
+
* @function pattern
|
|
152
|
+
* @memberOf module:decorator-validation.Decorators.Validation
|
|
153
|
+
* @category Decorators
|
|
154
|
+
*/
|
|
155
|
+
function pattern(value, message = constants_1.DEFAULT_ERROR_MESSAGES.PATTERN) {
|
|
156
|
+
return (0, decorators_1.metadata)(getValidationKey(constants_1.ValidationKeys.PATTERN), {
|
|
157
|
+
value: typeof value === "string" ? value : value.toString(),
|
|
158
|
+
message: message,
|
|
159
|
+
types: [String.name],
|
|
160
|
+
});
|
|
161
|
+
}
|
|
162
|
+
/**
|
|
163
|
+
* @summary Defines the property as an email
|
|
164
|
+
* @description Validators to validate a decorated property must use key {@link ValidationKeys#EMAIL}
|
|
165
|
+
*
|
|
166
|
+
* @param {string} [message] the error message. Defaults to {@link DEFAULT_ERROR_MESSAGES#EMAIL}
|
|
167
|
+
*
|
|
168
|
+
* @function email
|
|
169
|
+
* @memberOf module:decorator-validation.Decorators.Validation
|
|
170
|
+
* @category Decorators
|
|
171
|
+
*/
|
|
172
|
+
function email(message = constants_1.DEFAULT_ERROR_MESSAGES.EMAIL) {
|
|
173
|
+
return (0, decorators_1.metadata)(getValidationKey(constants_1.ValidationKeys.EMAIL), {
|
|
174
|
+
message: message,
|
|
175
|
+
types: [String.name],
|
|
176
|
+
});
|
|
177
|
+
}
|
|
178
|
+
/**
|
|
179
|
+
* @summary Defines the property as an URL
|
|
180
|
+
* @description Validators to validate a decorated property must use key {@link ValidationKeys#URL}
|
|
181
|
+
*
|
|
182
|
+
* @param {string} [message] the error message. Defaults to {@link DEFAULT_ERROR_MESSAGES#URL}
|
|
183
|
+
*
|
|
184
|
+
* @function url
|
|
185
|
+
* @memberOf module:decorator-validation.Decorators.Validation
|
|
186
|
+
* @category Decorators
|
|
187
|
+
*/
|
|
188
|
+
function url(message = constants_1.DEFAULT_ERROR_MESSAGES.URL) {
|
|
189
|
+
return (0, decorators_1.metadata)(getValidationKey(constants_1.ValidationKeys.URL), {
|
|
190
|
+
message: message,
|
|
191
|
+
types: [String.name],
|
|
192
|
+
});
|
|
193
|
+
}
|
|
194
|
+
/**
|
|
195
|
+
* @summary Enforces type verification
|
|
196
|
+
* @description Validators to validate a decorated property must use key {@link ValidationKeys#TYPE}
|
|
197
|
+
*
|
|
198
|
+
* @param {string[] | string} types accepted types
|
|
199
|
+
* @param {string} [message] the error message. Defaults to {@link DEFAULT_ERROR_MESSAGES#TYPE}
|
|
200
|
+
*
|
|
201
|
+
* @function type
|
|
202
|
+
* @memberOf module:decorator-validation.Decorators.Validation
|
|
203
|
+
* @category Decorators
|
|
204
|
+
*/
|
|
205
|
+
function type(types, message = constants_1.DEFAULT_ERROR_MESSAGES.TYPE) {
|
|
206
|
+
return (0, decorators_1.metadata)(getValidationKey(constants_1.ValidationKeys.TYPE), {
|
|
207
|
+
customTypes: types,
|
|
208
|
+
message: message,
|
|
209
|
+
});
|
|
210
|
+
}
|
|
211
|
+
/**
|
|
212
|
+
* @summary Date Handler Decorator
|
|
213
|
+
* @description Validators to validate a decorated property must use key {@link ValidationKeys#DATE}
|
|
214
|
+
*
|
|
215
|
+
* Will enforce serialization according to the selected format
|
|
216
|
+
*
|
|
217
|
+
* @param {string} format accepted format according to {@link formatDate}
|
|
218
|
+
* @param {string} [message] the error message. Defaults to {@link DEFAULT_ERROR_MESSAGES#DATE}
|
|
219
|
+
* @param {Constructor<Validator>} [validator] the Validator to be used. Defaults to {@link DateValidator}
|
|
220
|
+
*
|
|
221
|
+
* @function date
|
|
222
|
+
*
|
|
223
|
+
* @memberOf module:decorator-validation.Decorators.Validation
|
|
224
|
+
* @category Decorators
|
|
225
|
+
*/
|
|
226
|
+
function date(format = "dd/MM/yyyy", message = constants_1.DEFAULT_ERROR_MESSAGES.DATE) {
|
|
227
|
+
return (target, propertyKey) => {
|
|
228
|
+
Reflect.defineMetadata(getValidationKey(constants_1.ValidationKeys.DATE), {
|
|
229
|
+
format: format,
|
|
230
|
+
message: message,
|
|
231
|
+
types: [Date.name],
|
|
232
|
+
}, target, propertyKey);
|
|
233
|
+
const values = new WeakMap();
|
|
234
|
+
Object.defineProperty(target, propertyKey, {
|
|
235
|
+
configurable: false,
|
|
236
|
+
set(newValue) {
|
|
237
|
+
const descriptor = Object.getOwnPropertyDescriptor(this, propertyKey);
|
|
238
|
+
if (!descriptor || descriptor.configurable)
|
|
239
|
+
Object.defineProperty(this, propertyKey, {
|
|
240
|
+
enumerable: true,
|
|
241
|
+
configurable: false,
|
|
242
|
+
get: () => values.get(this),
|
|
243
|
+
set: (newValue) => {
|
|
244
|
+
let val;
|
|
245
|
+
try {
|
|
246
|
+
val = (0, utils_1.parseDate)(format, newValue);
|
|
247
|
+
values.set(this, val);
|
|
248
|
+
}
|
|
249
|
+
catch (e) {
|
|
250
|
+
console.error((0, strings_1.sf)("Failed to parse date: {0}", e.message || e));
|
|
251
|
+
}
|
|
252
|
+
},
|
|
253
|
+
});
|
|
254
|
+
this[propertyKey] = newValue;
|
|
255
|
+
},
|
|
256
|
+
get() {
|
|
257
|
+
console.log("here");
|
|
258
|
+
},
|
|
259
|
+
});
|
|
260
|
+
};
|
|
261
|
+
}
|
|
262
|
+
/**
|
|
263
|
+
* @summary Password Handler Decorator
|
|
264
|
+
* @description Validators to validate a decorated property must use key {@link ValidationKeys#PASSWORD}
|
|
265
|
+
*
|
|
266
|
+
* @param {RegExp} [pattern] defaults to {@link PasswordPatterns#CHAR8_ONE_OF_EACH}
|
|
267
|
+
* @param {string} [message] the error message. Defaults to {@link DEFAULT_ERROR_MESSAGES#PASSWORD}
|
|
268
|
+
* @param {Constructor<Validator>} [validator] Defaults to {@link PasswordValidator}
|
|
269
|
+
*
|
|
270
|
+
* @function password
|
|
271
|
+
*
|
|
272
|
+
* @memberOf module:decorator-validation.Decorators.Validation
|
|
273
|
+
* @category Decorators
|
|
274
|
+
*/
|
|
275
|
+
function password(pattern = constants_1.DEFAULT_PATTERNS.PASSWORD.CHAR8_ONE_OF_EACH, message = constants_1.DEFAULT_ERROR_MESSAGES.PASSWORD, validator = PasswordValidator_1.PasswordValidator) {
|
|
276
|
+
return (target, propertyKey) => {
|
|
277
|
+
Reflect.defineMetadata(getValidationKey(constants_1.ValidationKeys.PASSWORD), {
|
|
278
|
+
pattern: pattern,
|
|
279
|
+
message: message,
|
|
280
|
+
types: [String.name],
|
|
281
|
+
}, target, propertyKey);
|
|
282
|
+
Validation_1.Validation.register({
|
|
283
|
+
validator: validator,
|
|
284
|
+
validationKey: constants_1.ValidationKeys.PASSWORD,
|
|
285
|
+
save: true,
|
|
286
|
+
});
|
|
287
|
+
};
|
|
288
|
+
}
|
|
289
|
+
/**
|
|
290
|
+
* @summary List Decorator
|
|
291
|
+
* @description Also sets the {@link type} to the provided collection
|
|
292
|
+
*
|
|
293
|
+
* @param {ModelConstructor} clazz
|
|
294
|
+
* @param {string} [collection] The collection being used. defaults to Array
|
|
295
|
+
* @param {string} [message] defaults to {@link DEFAULT_ERROR_MESSAGES#LIST}
|
|
296
|
+
* @param {Constructor<Validator>} [validator] defaults to {@link ListValidator}
|
|
297
|
+
*
|
|
298
|
+
* @function list
|
|
299
|
+
*
|
|
300
|
+
* @memberOf module:decorator-validation.Decorators.Validation
|
|
301
|
+
* @category Decorators
|
|
302
|
+
*/
|
|
303
|
+
function list(clazz, collection = "Array", message = constants_1.DEFAULT_ERROR_MESSAGES.LIST, validator = ListValidator_1.ListValidator) {
|
|
304
|
+
return (target, propertyKey) => {
|
|
305
|
+
type(collection)(target, propertyKey);
|
|
306
|
+
Reflect.defineMetadata(getValidationKey(constants_1.ValidationKeys.LIST), {
|
|
307
|
+
class: clazz.name,
|
|
308
|
+
type: collection,
|
|
309
|
+
message: message,
|
|
310
|
+
}, target, propertyKey);
|
|
311
|
+
Validation_1.Validation.register({
|
|
312
|
+
validator: validator,
|
|
313
|
+
validationKey: constants_1.ValidationKeys.LIST,
|
|
314
|
+
save: true,
|
|
315
|
+
});
|
|
316
|
+
};
|
|
317
|
+
}
|
|
318
|
+
/**
|
|
319
|
+
* @summary Set Decorator
|
|
320
|
+
* @description Wrapper for {@link list} with the 'Set' Collection
|
|
321
|
+
*
|
|
322
|
+
* @param {ModelConstructor} clazz
|
|
323
|
+
* @param {string} [message] defaults to {@link DEFAULT_ERROR_MESSAGES#LIST}
|
|
324
|
+
* @param {Constructor<Validator>} [validator]
|
|
325
|
+
*
|
|
326
|
+
* @function set
|
|
327
|
+
*
|
|
328
|
+
* @memberOf module:decorator-validation.Decorators.Validation
|
|
329
|
+
* @category Decorators
|
|
330
|
+
*/
|
|
331
|
+
function set(clazz, message = constants_1.DEFAULT_ERROR_MESSAGES.LIST, validator) {
|
|
332
|
+
return (target, propertyKey) => {
|
|
333
|
+
list(clazz, "Set", message, validator)(target, propertyKey);
|
|
334
|
+
};
|
|
335
|
+
}
|
|
336
|
+
|
|
337
|
+
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy92YWxpZGF0aW9uL2RlY29yYXRvcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUEyQkEsNENBRUM7QUFZRCw0QkFPQztBQWFELGtCQVNDO0FBYUQsa0JBU0M7QUFhRCxvQkFTQztBQWFELDhCQVlDO0FBYUQsOEJBWUM7QUFhRCwwQkFZQztBQVlELHNCQUtDO0FBWUQsa0JBS0M7QUFhRCxvQkFRQztBQWlCRCxvQkE0Q0M7QUFlRCw0QkFzQkM7QUFnQkQsb0JBd0JDO0FBZUQsa0JBUUM7QUFyWkQsNEJBQTBCO0FBQzFCLDhEQUEyRDtBQUMzRCw2Q0FBMEM7QUFFMUMseURBQW9EO0FBQ3BELHNEQUlnQztBQUNoQyw4Q0FBc0M7QUFFdEMsc0VBQW1FO0FBR25FLG9DQUFxQztBQUVyQzs7Ozs7Ozs7O0dBU0c7QUFDSCxTQUFnQixnQkFBZ0IsQ0FBQyxHQUFXO0lBQzFDLE9BQU8sMEJBQWMsQ0FBQyxPQUFPLEdBQUcsR0FBRyxDQUFDO0FBQ3RDLENBQUM7QUFFRDs7Ozs7Ozs7O0dBU0c7QUFDSCxTQUFnQixRQUFRLENBQUMsVUFBa0Isa0NBQXNCLENBQUMsUUFBUTtJQUN4RSxPQUFPLElBQUEscUJBQVEsRUFDYixnQkFBZ0IsQ0FBQywwQkFBYyxDQUFDLFFBQVEsQ0FBQyxFQUN6QztRQUNFLE9BQU8sRUFBRSxPQUFPO0tBQ2pCLENBQ0YsQ0FBQztBQUNKLENBQUM7QUFFRDs7Ozs7Ozs7OztHQVVHO0FBQ0gsU0FBZ0IsR0FBRyxDQUNqQixLQUE2QixFQUM3QixVQUFrQixrQ0FBc0IsQ0FBQyxHQUFHO0lBRTVDLE9BQU8sSUFBQSxxQkFBUSxFQUFxQixnQkFBZ0IsQ0FBQywwQkFBYyxDQUFDLEdBQUcsQ0FBQyxFQUFFO1FBQ3hFLEtBQUssRUFBRSxLQUFLO1FBQ1osT0FBTyxFQUFFLE9BQU87UUFDaEIsS0FBSyxFQUFFLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDO0tBQ2hDLENBQUMsQ0FBQztBQUNMLENBQUM7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QUMsQ0FBQztJQUM5RCxDQUFDLENBQUM7QUFDSixDQUFDIiwiZmlsZSI6InZhbGlkYXRpb24vZGVjb3JhdG9ycy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBcInJlZmxlY3QtbWV0YWRhdGFcIjtcbmltcG9ydCB7IExpc3RWYWxpZGF0b3IgfSBmcm9tIFwiLi9WYWxpZGF0b3JzL0xpc3RWYWxpZGF0b3JcIjtcbmltcG9ydCB7IFZhbGlkYXRpb24gfSBmcm9tIFwiLi9WYWxpZGF0aW9uXCI7XG5pbXBvcnQgeyBWYWxpZGF0aW9uTWV0YWRhdGEgfSBmcm9tIFwiLi90eXBlc1wiO1xuaW1wb3J0IHsgbWV0YWRhdGEgfSBmcm9tIFwiLi4vcmVmbGVjdGlvbi9kZWNvcmF0b3JzXCI7XG5pbXBvcnQge1xuICBERUZBVUxUX0VSUk9SX01FU1NBR0VTLFxuICBERUZBVUxUX1BBVFRFUk5TLFxuICBWYWxpZGF0aW9uS2V5cyxcbn0gZnJvbSBcIi4vVmFsaWRhdG9ycy9jb25zdGFudHNcIjtcbmltcG9ydCB7IHNmIH0gZnJvbSBcIi4uL3V0aWxzL3N0cmluZ3NcIjtcbmltcG9ydCB7IENvbnN0cnVjdG9yLCBNb2RlbENvbnN0cnVjdG9yIH0gZnJvbSBcIi4uL21vZGVsL3R5cGVzXCI7XG5pbXBvcnQgeyBQYXNzd29yZFZhbGlkYXRvciB9IGZyb20gXCIuL1ZhbGlkYXRvcnMvUGFzc3dvcmRWYWxpZGF0b3JcIjtcbmltcG9ydCB7IFZhbGlkYXRvckRlZmluaXRpb24gfSBmcm9tIFwiLi9WYWxpZGF0b3JzL3R5cGVzXCI7XG5pbXBvcnQgeyBWYWxpZGF0b3IgfSBmcm9tIFwiLi9WYWxpZGF0b3JzL1ZhbGlkYXRvclwiO1xuaW1wb3J0IHsgcGFyc2VEYXRlIH0gZnJvbSBcIi4uL3V0aWxzXCI7XG5cbi8qKlxuICogQHN1bW1hcnkgQnVpbGRzIHRoZSBrZXkgdG8gc3RvcmUgYXMgTWV0YWRhdGEgdW5kZXIgUmVmbGVjdGlvbnNcbiAqIEBkZXNjcmlwdGlvbiBjb25jYXRlbmF0ZXMge0BsaW5rIFZhbGlkYXRpb25LZXlzI1JFRkxFQ1R9IHdpdGggdGhlIHByb3ZpZGVkIGtleVxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBrZXlcbiAqXG4gKiBAZnVuY3Rpb24gZ2V0TW9kZWxLZXlcbiAqIEBtZW1iZXJPZiBtb2R1bGU6ZGVjb3JhdG9yLXZhbGlkYXRpb24uVXRpbHNcbiAqIEBjYXRlZ29yeSBVdGlsaXRpZXNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFZhbGlkYXRpb25LZXkoa2V5OiBzdHJpbmcpIHtcbiAgcmV0dXJuIFZhbGlkYXRpb25LZXlzLlJFRkxFQ1QgKyBrZXk7XG59XG5cbi8qKlxuICogQHN1bW1hcnkgTWFya3MgdGhlIHByb3BlcnR5IGFzIHJlcXVpcmVkLlxuICogQGRlc2NyaXB0aW9uIFZhbGlkYXRvcnMgdG8gdmFsaWRhdGUgYSBkZWNvcmF0ZWQgcHJvcGVydHkgbXVzdCB1c2Uga2V5IHtAbGluayBWYWxpZGF0aW9uS2V5cyNSRVFVSVJFRH1cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gW21lc3NhZ2VdIHRoZSBlcnJvciBtZXNzYWdlLiBEZWZhdWx0cyB0byB7QGxpbmsgREVGQVVMVF9FUlJPUl9NRVNTQUdFUyNSRVFVSVJFRH1cbiAqXG4gKiBAZnVuY3Rpb24gcmVxdWlyZWRcbiAqXG4gKiBAY2F0ZWdvcnkgRGVjb3JhdG9yc1xuICovXG5leHBvcnQgZnVuY3Rpb24gcmVxdWlyZWQobWVzc2FnZTogc3RyaW5nID0gREVGQVVMVF9FUlJPUl9NRVNTQUdFUy5SRVFVSVJFRCkge1xuICByZXR1cm4gbWV0YWRhdGE8VmFsaWRhdGlvbk1ldGFkYXRhPihcbiAgICBnZXRWYWxpZGF0aW9uS2V5KFZhbGlkYXRpb25LZXlzLlJFUVVJUkVEKSxcbiAgICB7XG4gICAgICBtZXNzYWdlOiBtZXNzYWdlLFxuICAgIH0sXG4gICk7XG59XG5cbi8qKlxuICogQHN1bW1hcnkgRGVmaW5lcyBhIG1pbmltdW0gdmFsdWUgZm9yIHRoZSBwcm9wZXJ0eVxuICogQGRlc2NyaXB0aW9uIFZhbGlkYXRvcnMgdG8gdmFsaWRhdGUgYSBkZWNvcmF0ZWQgcHJvcGVydHkgbXVzdCB1c2Uga2V5IHtAbGluayBWYWxpZGF0aW9uS2V5cyNNSU59XG4gKlxuICogQHBhcmFtIHtudW1iZXIgfCBEYXRlfSB2YWx1ZVxuICogQHBhcmFtIHtzdHJpbmd9IFttZXNzYWdlXSB0aGUgZXJyb3IgbWVzc2FnZS4gRGVmYXVsdHMgdG8ge0BsaW5rIERFRkFVTFRfRVJST1JfTUVTU0FHRVMjTUlOfVxuICpcbiAqIEBmdW5jdGlvbiBtaW5cbiAqIEBtZW1iZXJPZiBtb2R1bGU6ZGVjb3JhdG9yLXZhbGlkYXRpb24uRGVjb3JhdG9ycy5WYWxpZGF0aW9uXG4gKiBAY2F0ZWdvcnkgRGVjb3JhdG9yc1xuICovXG5leHBvcnQgZnVuY3Rpb24gbWluKFxuICB2YWx1ZTogbnVtYmVyIHwgRGF0ZSB8IHN0cmluZyxcbiAgbWVzc2FnZTogc3RyaW5nID0gREVGQVVMVF9FUlJPUl9NRVNTQUdFUy5NSU4sXG4pIHtcbiAgcmV0dXJuIG1ldGFkYXRhPFZhbGlkYXRpb25NZXRhZGF0YT4oZ2V0VmFsaWRhdGlvbktleShWYWxpZGF0aW9uS2V5cy5NSU4pLCB7XG4gICAgdmFsdWU6IHZhbHVlLFxuICAgIG1lc3NhZ2U6IG1lc3NhZ2UsXG4gICAgdHlwZXM6IFtOdW1iZXIubmFtZSwgRGF0ZS5uYW1lXSxcbiAgfSk7XG59XG5cbi8qKlxuICogQHN1bW1hcnkgRGVmaW5lcyBhIG1heGltdW0gdmFsdWUgZm9yIHRoZSBwcm9wZXJ0eVxuICogQGRlc2NyaXB0aW9uIFZhbGlkYXRvcnMgdG8gdmFsaWRhdGUgYSBkZWNvcmF0ZWQgcHJvcGVydHkgbXVzdCB1c2Uga2V5IHtAbGluayBWYWxpZGF0aW9uS2V5cyNNQVh9XG4gKlxuICogQHBhcmFtIHtudW1iZXIgfCBEYXRlfSB2YWx1ZVxuICogQHBhcmFtIHtzdHJpbmd9IFttZXNzYWdlXSB0aGUgZXJyb3IgbWVzc2FnZS4gRGVmYXVsdHMgdG8ge0BsaW5rIERFRkFVTFRfRVJST1JfTUVTU0FHRVMjTUFYfVxuICpcbiAqIEBmdW5jdGlvbiBtYXhcbiAqIEBtZW1iZXJPZiBtb2R1bGU6ZGVjb3JhdG9yLXZhbGlkYXRpb24uRGVjb3JhdG9ycy5WYWxpZGF0aW9uXG4gKiBAY2F0ZWdvcnkgRGVjb3JhdG9yc1xuICovXG5leHBvcnQgZnVuY3Rpb24gbWF4KFxuICB2YWx1ZTogbnVtYmVyIHwgRGF0ZSB8IHN0cmluZyxcbiAgbWVzc2FnZTogc3RyaW5nID0gREVGQVVMVF9FUlJPUl9NRVNTQUdFUy5NQVgsXG4pIHtcbiAgcmV0dXJuIG1ldGFkYXRhPFZhbGlkYXRpb25NZXRhZGF0YT4oZ2V0VmFsaWRhdGlvbktleShWYWxpZGF0aW9uS2V5cy5NQVgpLCB7XG4gICAgdmFsdWU6IHZhbHVlLFxuICAgIG1lc3NhZ2U6IG1lc3NhZ2UsXG4gICAgdHlwZXM6IFtOdW1iZXIubmFtZSwgRGF0ZS5uYW1lXSxcbiAgfSk7XG59XG5cbi8qKlxuICogQHN1bW1hcnkgRGVmaW5lcyBhIHN0ZXAgdmFsdWUgZm9yIHRoZSBwcm9wZXJ0eVxuICogQGRlc2NyaXB0aW9uIFZhbGlkYXRvcnMgdG8gdmFsaWRhdGUgYSBkZWNvcmF0ZWQgcHJvcGVydHkgbXVzdCB1c2Uga2V5IHtAbGluayBWYWxpZGF0aW9uS2V5cyNTVEVQfVxuICpcbiAqIEBwYXJhbSB7bnVtYmVyfSB2YWx1ZVxuICogQHBhcmFtIHtzdHJpbmd9IFttZXNzYWdlXSB0aGUgZXJyb3IgbWVzc2FnZS4gRGVmYXVsdHMgdG8ge0BsaW5rIERFRkFVTFRfRVJST1JfTUVTU0FHRVMjU1RFUH1cbiAqXG4gKiBAZnVuY3Rpb24gc3RlcFxuICogQG1lbWJlck9mIG1vZHVsZTpkZWNvcmF0b3ItdmFsaWRhdGlvbi5EZWNvcmF0b3JzLlZhbGlkYXRpb25cbiAqIEBjYXRlZ29yeSBEZWNvcmF0b3JzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzdGVwKFxuICB2YWx1ZTogbnVtYmVyLFxuICBtZXNzYWdlOiBzdHJpbmcgPSBERUZBVUxUX0VSUk9SX01FU1NBR0VTLlNURVAsXG4pIHtcbiAgcmV0dXJuIG1ldGFkYXRhPFZhbGlkYXRpb25NZXRhZGF0YT4oZ2V0VmFsaWRhdGlvbktleShWYWxpZGF0aW9uS2V5cy5TVEVQKSwge1xuICAgIHZhbHVlOiB2YWx1ZSxcbiAgICBtZXNzYWdlOiBtZXNzYWdlLFxuICAgIHR5cGVzOiBbTnVtYmVyLm5hbWVdLFxuICB9KTtcbn1cblxuLyoqXG4gKiBAc3VtbWFyeSBEZWZpbmVzIGEgbWluaW11bSBsZW5ndGggZm9yIHRoZSBwcm9wZXJ0eVxuICogQGRlc2NyaXB0aW9uIFZhbGlkYXRvcnMgdG8gdmFsaWRhdGUgYSBkZWNvcmF0ZWQgcHJvcGVydHkgbXVzdCB1c2Uga2V5IHtAbGluayBWYWxpZGF0aW9uS2V5cyNNSU5fTEVOR1RIfVxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSB2YWx1ZVxuICogQHBhcmFtIHtzdHJpbmd9IFttZXNzYWdlXSB0aGUgZXJyb3IgbWVzc2FnZS4gRGVmYXVsdHMgdG8ge0BsaW5rIERFRkFVTFRfRVJST1JfTUVTU0FHRVMjTUlOX0xFTkdUSH1cbiAqXG4gKiBAZnVuY3Rpb24gbWlubGVuZ3RoXG4gKiBAbWVtYmVyT2YgbW9kdWxlOmRlY29yYXRvci12YWxpZGF0aW9uLkRlY29yYXRvcnMuVmFsaWRhdGlvblxuICogQGNhdGVnb3J5IERlY29yYXRvcnNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG1pbmxlbmd0aChcbiAgdmFsdWU6IG51bWJlcixcbiAgbWVzc2FnZTogc3RyaW5nID0gREVGQVVMVF9FUlJPUl9NRVNTQUdFUy5NSU5fTEVOR1RILFxuKSB7XG4gIHJldHVybiBtZXRhZGF0YTxWYWxpZGF0aW9uTWV0YWRhdGE+KFxuICAgIGdldFZhbGlkYXRpb25LZXkoVmFsaWRhdGlvbktleXMuTUlOX0xFTkdUSCksXG4gICAge1xuICAgICAgdmFsdWU6IHZhbHVlLFxuICAgICAgbWVzc2FnZTogbWVzc2FnZSxcbiAgICAgIHR5cGVzOiBbU3RyaW5nLm5hbWUsIEFycmF5Lm5hbWUsIFNldC5uYW1lXSxcbiAgICB9LFxuICApO1xufVxuXG4vKipcbiAqIEBzdW1tYXJ5IERlZmluZXMgYSBtYXhpbXVtIGxlbmd0aCBmb3IgdGhlIHByb3BlcnR5XG4gKiBAZGVzY3JpcHRpb24gVmFsaWRhdG9ycyB0byB2YWxpZGF0ZSBhIGRlY29yYXRlZCBwcm9wZXJ0eSBtdXN0IHVzZSBrZXkge0BsaW5rIFZhbGlkYXRpb25LZXlzI01BWF9MRU5HVEh9XG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IHZhbHVlXG4gKiBAcGFyYW0ge3N0cmluZ30gW21lc3NhZ2VdIHRoZSBlcnJvciBtZXNzYWdlLiBEZWZhdWx0cyB0byB7QGxpbmsgREVGQVVMVF9FUlJPUl9NRVNTQUdFUyNNQVhfTEVOR1RIfVxuICpcbiAqIEBmdW5jdGlvbiBtYXhsZW5ndGhcbiAqIEBtZW1iZXJPZiBtb2R1bGU6ZGVjb3JhdG9yLXZhbGlkYXRpb24uRGVjb3JhdG9ycy5WYWxpZGF0aW9uXG4gKiBAY2F0ZWdvcnkgRGVjb3JhdG9yc1xuICovXG5leHBvcnQgZnVuY3Rpb24gbWF4bGVuZ3RoKFxuICB2YWx1ZTogbnVtYmVyLFxuICBtZXNzYWdlOiBzdHJpbmcgPSBERUZBVUxUX0VSUk9SX01FU1NBR0VTLk1BWF9MRU5HVEgsXG4pIHtcbiAgcmV0dXJuIG1ldGFkYXRhPFZhbGlkYXRpb25NZXRhZGF0YT4oXG4gICAgZ2V0VmFsaWRhdGlvbktleShWYWxpZGF0aW9uS2V5cy5NQVhfTEVOR1RIKSxcbiAgICB7XG4gICAgICB2YWx1ZTogdmFsdWUsXG4gICAgICBtZXNzYWdlOiBtZXNzYWdlLFxuICAgICAgdHlwZXM6IFtTdHJpbmcubmFtZSwgQXJyYXkubmFtZSwgU2V0Lm5hbWVdLFxuICAgIH0sXG4gICk7XG59XG5cbi8qKlxuICogQHN1bW1hcnkgRGVmaW5lcyBhIFJlZ0V4cCBwYXR0ZXJuIHRoZSBwcm9wZXJ0eSBtdXN0IHJlc3BlY3RcbiAqIEBkZXNjcmlwdGlvbiBWYWxpZGF0b3JzIHRvIHZhbGlkYXRlIGEgZGVjb3JhdGVkIHByb3BlcnR5IG11c3QgdXNlIGtleSB7QGxpbmsgVmFsaWRhdGlvbktleXMjUEFUVEVSTn1cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gdmFsdWVcbiAqIEBwYXJhbSB7c3RyaW5nfSBbbWVzc2FnZV0gdGhlIGVycm9yIG1lc3NhZ2UuIERlZmF1bHRzIHRvIHtAbGluayBERUZBVUxUX0VSUk9SX01FU1NBR0VTI1BBVFRFUk59XG4gKlxuICogQGZ1bmN0aW9uIHBhdHRlcm5cbiAqIEBtZW1iZXJPZiBtb2R1bGU6ZGVjb3JhdG9yLXZhbGlkYXRpb24uRGVjb3JhdG9ycy5WYWxpZGF0aW9uXG4gKiBAY2F0ZWdvcnkgRGVjb3JhdG9yc1xuICovXG5leHBvcnQgZnVuY3Rpb24gcGF0dGVybihcbiAgdmFsdWU6IFJlZ0V4cCB8IHN0cmluZyxcbiAgbWVzc2FnZTogc3RyaW5nID0gREVGQVVMVF9FUlJPUl9NRVNTQUdFUy5QQVRURVJOLFxuKSB7XG4gIHJldHVybiBtZXRhZGF0YTxWYWxpZGF0aW9uTWV0YWRhdGE+KFxuICAgIGdldFZhbGlkYXRpb25LZXkoVmFsaWRhdGlvbktleXMuUEFUVEVSTiksXG4gICAge1xuICAgICAgdmFsdWU6IHR5cGVvZiB2YWx1ZSA9PT0gXCJzdHJpbmdcIiA/IHZhbHVlIDogdmFsdWUudG9TdHJpbmcoKSxcbiAgICAgIG1lc3NhZ2U6IG1lc3NhZ2UsXG4gICAgICB0eXBlczogW1N0cmluZy5uYW1lXSxcbiAgICB9LFxuICApO1xufVxuXG4vKipcbiAqIEBzdW1tYXJ5IERlZmluZXMgdGhlIHByb3BlcnR5IGFzIGFuIGVtYWlsXG4gKiBAZGVzY3JpcHRpb24gVmFsaWRhdG9ycyB0byB2YWxpZGF0ZSBhIGRlY29yYXRlZCBwcm9wZXJ0eSBtdXN0IHVzZSBrZXkge0BsaW5rIFZhbGlkYXRpb25LZXlzI0VNQUlMfVxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBbbWVzc2FnZV0gdGhlIGVycm9yIG1lc3NhZ2UuIERlZmF1bHRzIHRvIHtAbGluayBERUZBVUxUX0VSUk9SX01FU1NBR0VTI0VNQUlMfVxuICpcbiAqIEBmdW5jdGlvbiBlbWFpbFxuICogQG1lbWJlck9mIG1vZHVsZTpkZWNvcmF0b3ItdmFsaWRhdGlvbi5EZWNvcmF0b3JzLlZhbGlkYXRpb25cbiAqIEBjYXRlZ29yeSBEZWNvcmF0b3JzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBlbWFpbChtZXNzYWdlOiBzdHJpbmcgPSBERUZBVUxUX0VSUk9SX01FU1NBR0VTLkVNQUlMKSB7XG4gIHJldHVybiBtZXRhZGF0YTxWYWxpZGF0aW9uTWV0YWRhdGE+KGdldFZhbGlkYXRpb25LZXkoVmFsaWRhdGlvbktleXMuRU1BSUwpLCB7XG4gICAgbWVzc2FnZTogbWVzc2FnZSxcbiAgICB0eXBlczogW1N0cmluZy5uYW1lXSxcbiAgfSk7XG59XG5cbi8qKlxuICogQHN1bW1hcnkgRGVmaW5lcyB0aGUgcHJvcGVydHkgYXMgYW4gVVJMXG4gKiBAZGVzY3JpcHRpb24gVmFsaWRhdG9ycyB0byB2YWxpZGF0ZSBhIGRlY29yYXRlZCBwcm9wZXJ0eSBtdXN0IHVzZSBrZXkge0BsaW5rIFZhbGlkYXRpb25LZXlzI1VSTH1cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gW21lc3NhZ2VdIHRoZSBlcnJvciBtZXNzYWdlLiBEZWZhdWx0cyB0byB7QGxpbmsgREVGQVVMVF9FUlJPUl9NRVNTQUdFUyNVUkx9XG4gKlxuICogQGZ1bmN0aW9uIHVybFxuICogQG1lbWJlck9mIG1vZHVsZTpkZWNvcmF0b3ItdmFsaWRhdGlvbi5EZWNvcmF0b3JzLlZhbGlkYXRpb25cbiAqIEBjYXRlZ29yeSBEZWNvcmF0b3JzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB1cmwobWVzc2FnZTogc3RyaW5nID0gREVGQVVMVF9FUlJPUl9NRVNTQUdFUy5VUkwpIHtcbiAgcmV0dXJuIG1ldGFkYXRhPFZhbGlkYXRpb25NZXRhZGF0YT4oZ2V0VmFsaWRhdGlvbktleShWYWxpZGF0aW9uS2V5cy5VUkwpLCB7XG4gICAgbWVzc2FnZTogbWVzc2FnZSxcbiAgICB0eXBlczogW1N0cmluZy5uYW1lXSxcbiAgfSk7XG59XG5cbi8qKlxuICogQHN1bW1hcnkgRW5mb3JjZXMgdHlwZSB2ZXJpZmljYXRpb25cbiAqIEBkZXNjcmlwdGlvbiBWYWxpZGF0b3JzIHRvIHZhbGlkYXRlIGEgZGVjb3JhdGVkIHByb3BlcnR5IG11c3QgdXNlIGtleSB7QGxpbmsgVmFsaWRhdGlvbktleXMjVFlQRX1cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ1tdIHwgc3RyaW5nfSB0eXBlcyBhY2NlcHRlZCB0eXBlc1xuICogQHBhcmFtIHtzdHJpbmd9IFttZXNzYWdlXSB0aGUgZXJyb3IgbWVzc2FnZS4gRGVmYXVsdHMgdG8ge0BsaW5rIERFRkFVTFRfRVJST1JfTUVTU0FHRVMjVFlQRX1cbiAqXG4gKiBAZnVuY3Rpb24gdHlwZVxuICogQG1lbWJlck9mIG1vZHVsZTpkZWNvcmF0b3ItdmFsaWRhdGlvbi5EZWNvcmF0b3JzLlZhbGlkYXRpb25cbiAqIEBjYXRlZ29yeSBEZWNvcmF0b3JzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB0eXBlKFxuICB0eXBlczogc3RyaW5nW10gfCBzdHJpbmcsXG4gIG1lc3NhZ2U6IHN0cmluZyA9IERFRkFVTFRfRVJST1JfTUVTU0FHRVMuVFlQRSxcbikge1xuICByZXR1cm4gbWV0YWRhdGE8VmFsaWRhdGlvbk1ldGFkYXRhPihnZXRWYWxpZGF0aW9uS2V5KFZhbGlkYXRpb25LZXlzLlRZUEUpLCB7XG4gICAgY3VzdG9tVHlwZXM6IHR5cGVzLFxuICAgIG1lc3NhZ2U6IG1lc3NhZ2UsXG4gIH0pO1xufVxuXG4vKipcbiAqIEBzdW1tYXJ5IERhdGUgSGFuZGxlciBEZWNvcmF0b3JcbiAqIEBkZXNjcmlwdGlvbiBWYWxpZGF0b3JzIHRvIHZhbGlkYXRlIGEgZGVjb3JhdGVkIHByb3BlcnR5IG11c3QgdXNlIGtleSB7QGxpbmsgVmFsaWRhdGlvbktleXMjREFURX1cbiAqXG4gKiBXaWxsIGVuZm9yY2Ugc2VyaWFsaXphdGlvbiBhY2NvcmRpbmcgdG8gdGhlIHNlbGVjdGVkIGZvcm1hdFxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBmb3JtYXQgYWNjZXB0ZWQgZm9ybWF0IGFjY29yZGluZyB0byB7QGxpbmsgZm9ybWF0RGF0ZX1cbiAqIEBwYXJhbSB7c3RyaW5nfSBbbWVzc2FnZV0gdGhlIGVycm9yIG1lc3NhZ2UuIERlZmF1bHRzIHRvIHtAbGluayBERUZBVUxUX0VSUk9SX01FU1NBR0VTI0RBVEV9XG4gKiBAcGFyYW0ge0NvbnN0cnVjdG9yPFZhbGlkYXRvcj59IFt2YWxpZGF0b3JdIHRoZSBWYWxpZGF0b3IgdG8gYmUgdXNlZC4gRGVmYXVsdHMgdG8ge0BsaW5rIERhdGVWYWxpZGF0b3J9XG4gKlxuICogQGZ1bmN0aW9uIGRhdGVcbiAqXG4gKiBAbWVtYmVyT2YgbW9kdWxlOmRlY29yYXRvci12YWxpZGF0aW9uLkRlY29yYXRvcnMuVmFsaWRhdGlvblxuICogQGNhdGVnb3J5IERlY29yYXRvcnNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGRhdGUoXG4gIGZvcm1hdDogc3RyaW5nID0gXCJkZC9NTS95eXl5XCIsXG4gIG1lc3NhZ2U6IHN0cmluZyA9IERFRkFVTFRfRVJST1JfTUVTU0FHRVMuREFURSxcbikge1xuICByZXR1cm4gKHRhcmdldDogUmVjb3JkPHN0cmluZywgYW55PiwgcHJvcGVydHlLZXk6IHN0cmluZyk6IGFueSA9PiB7XG4gICAgUmVmbGVjdC5kZWZpbmVNZXRhZGF0YShcbiAgICAgIGdldFZhbGlkYXRpb25LZXkoVmFsaWRhdGlvbktleXMuREFURSksXG4gICAgICB7XG4gICAgICAgIGZvcm1hdDogZm9ybWF0LFxuICAgICAgICBtZXNzYWdlOiBtZXNzYWdlLFxuICAgICAgICB0eXBlczogW0RhdGUubmFtZV0sXG4gICAgICB9LFxuICAgICAgdGFyZ2V0LFxuICAgICAgcHJvcGVydHlLZXksXG4gICAgKTtcblxuICAgIGNvbnN0IHZhbHVlcyA9IG5ldyBXZWFrTWFwKCk7XG5cbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBwcm9wZXJ0eUtleSwge1xuICAgICAgY29uZmlndXJhYmxlOiBmYWxzZSxcbiAgICAgIHNldCh0aGlzOiBhbnksIG5ld1ZhbHVlOiBzdHJpbmcgfCBEYXRlKSB7XG4gICAgICAgIGNvbnN0IGRlc2NyaXB0b3IgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHRoaXMsIHByb3BlcnR5S2V5KTtcbiAgICAgICAgaWYgKCFkZXNjcmlwdG9yIHx8IGRlc2NyaXB0b3IuY29uZmlndXJhYmxlKVxuICAgICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLCBwcm9wZXJ0eUtleSwge1xuICAgICAgICAgICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICAgICAgICAgIGNvbmZpZ3VyYWJsZTogZmFsc2UsXG4gICAgICAgICAgICBnZXQ6ICgpID0+IHZhbHVlcy5nZXQodGhpcyksXG4gICAgICAgICAgICBzZXQ6IChuZXdWYWx1ZTogc3RyaW5nIHwgRGF0ZSB8IG51bWJlcikgPT4ge1xuICAgICAgICAgICAgICBsZXQgdmFsOiBEYXRlIHwgdW5kZWZpbmVkO1xuICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIHZhbCA9IHBhcnNlRGF0ZShmb3JtYXQsIG5ld1ZhbHVlKTtcbiAgICAgICAgICAgICAgICB2YWx1ZXMuc2V0KHRoaXMsIHZhbCk7XG4gICAgICAgICAgICAgIH0gY2F0Y2ggKGU6IGFueSkge1xuICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3Ioc2YoXCJGYWlsZWQgdG8gcGFyc2UgZGF0ZTogezB9XCIsIGUubWVzc2FnZSB8fCBlKSk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSk7XG4gICAgICAgIHRoaXNbcHJvcGVydHlLZXldID0gbmV3VmFsdWU7XG4gICAgICB9LFxuICAgICAgZ2V0KCkge1xuICAgICAgICBjb25zb2xlLmxvZyhcImhlcmVcIik7XG4gICAgICB9LFxuICAgIH0pO1xuICB9O1xufVxuXG4vKipcbiAqIEBzdW1tYXJ5IFBhc3N3b3JkIEhhbmRsZXIgRGVjb3JhdG9yXG4gKiBAZGVzY3JpcHRpb24gVmFsaWRhdG9ycyB0byB2YWxpZGF0ZSBhIGRlY29yYXRlZCBwcm9wZXJ0eSBtdXN0IHVzZSBrZXkge0BsaW5rIFZhbGlkYXRpb25LZXlzI1BBU1NXT1JEfVxuICpcbiAqIEBwYXJhbSB7UmVnRXhwfSBbcGF0dGVybl0gZGVmYXVsdHMgdG8ge0BsaW5rIFBhc3N3b3JkUGF0dGVybnMjQ0hBUjhfT05FX09GX0VBQ0h9XG4gKiBAcGFyYW0ge3N0cmluZ30gW21lc3NhZ2VdIHRoZSBlcnJvciBtZXNzYWdlLiBEZWZhdWx0cyB0byB7QGxpbmsgREVGQVVMVF9FUlJPUl9NRVNTQUdFUyNQQVNTV09SRH1cbiAqIEBwYXJhbSB7Q29uc3RydWN0b3I8VmFsaWRhdG9yPn0gW3ZhbGlkYXRvcl0gRGVmYXVsdHMgdG8ge0BsaW5rIFBhc3N3b3JkVmFsaWRhdG9yfVxuICpcbiAqIEBmdW5jdGlvbiBwYXNzd29yZFxuICpcbiAqIEBtZW1iZXJPZiBtb2R1bGU6ZGVjb3JhdG9yLXZhbGlkYXRpb24uRGVjb3JhdG9ycy5WYWxpZGF0aW9uXG4gKiBAY2F0ZWdvcnkgRGVjb3JhdG9yc1xuICovXG5leHBvcnQgZnVuY3Rpb24gcGFzc3dvcmQoXG4gIHBhdHRlcm46IFJlZ0V4cCA9IERFRkFVTFRfUEFUVEVSTlMuUEFTU1dPUkQuQ0hBUjhfT05FX09GX0VBQ0gsXG4gIG1lc3NhZ2U6IHN0cmluZyA9IERFRkFVTFRfRVJST1JfTUVTU0FHRVMuUEFTU1dPUkQsXG4gIHZhbGlkYXRvcjogQ29uc3RydWN0b3I8VmFsaWRhdG9yPiA9IFBhc3N3b3JkVmFsaWRhdG9yLFxuKSB7XG4gIHJldHVybiAodGFyZ2V0OiBhbnksIHByb3BlcnR5S2V5OiBzdHJpbmcpID0+IHtcbiAgICBSZWZsZWN0LmRlZmluZU1ldGFkYXRhKFxuICAgICAgZ2V0VmFsaWRhdGlvbktleShWYWxpZGF0aW9uS2V5cy5QQVNTV09SRCksXG4gICAgICB7XG4gICAgICAgIHBhdHRlcm46IHBhdHRlcm4sXG4gICAgICAgIG1lc3NhZ2U6IG1lc3NhZ2UsXG4gICAgICAgIHR5cGVzOiBbU3RyaW5nLm5hbWVdLFxuICAgICAgfSxcbiAgICAgIHRhcmdldCxcbiAgICAgIHByb3BlcnR5S2V5LFxuICAgICk7XG4gICAgVmFsaWRhdGlvbi5yZWdpc3Rlcih7XG4gICAgICB2YWxpZGF0b3I6IHZhbGlkYXRvcixcbiAgICAgIHZhbGlkYXRpb25LZXk6IFZhbGlkYXRpb25LZXlzLlBBU1NXT1JELFxuICAgICAgc2F2ZTogdHJ1ZSxcbiAgICB9IGFzIFZhbGlkYXRvckRlZmluaXRpb24pO1xuICB9O1xufVxuXG4vKipcbiAqIEBzdW1tYXJ5IExpc3QgRGVjb3JhdG9yXG4gKiBAZGVzY3JpcHRpb24gQWxzbyBzZXRzIHRoZSB7QGxpbmsgdHlwZX0gdG8gdGhlIHByb3ZpZGVkIGNvbGxlY3Rpb25cbiAqXG4gKiBAcGFyYW0ge01vZGVsQ29uc3RydWN0b3J9IGNsYXp6XG4gKiBAcGFyYW0ge3N0cmluZ30gW2NvbGxlY3Rpb25dIFRoZSBjb2xsZWN0aW9uIGJlaW5nIHVzZWQuIGRlZmF1bHRzIHRvIEFycmF5XG4gKiBAcGFyYW0ge3N0cmluZ30gW21lc3NhZ2VdIGRlZmF1bHRzIHRvIHtAbGluayBERUZBVUxUX0VSUk9SX01FU1NBR0VTI0xJU1R9XG4gKiBAcGFyYW0ge0NvbnN0cnVjdG9yPFZhbGlkYXRvcj59IFt2YWxpZGF0b3JdIGRlZmF1bHRzIHRvIHtAbGluayBMaXN0VmFsaWRhdG9yfVxuICpcbiAqIEBmdW5jdGlvbiBsaXN0XG4gKlxuICogQG1lbWJlck9mIG1vZHVsZTpkZWNvcmF0b3ItdmFsaWRhdGlvbi5EZWNvcmF0b3JzLlZhbGlkYXRpb25cbiAqIEBjYXRlZ29yeSBEZWNvcmF0b3JzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBsaXN0KFxuICBjbGF6ejogTW9kZWxDb25zdHJ1Y3Rvcjxhbnk+LFxuICBjb2xsZWN0aW9uOiBcIkFycmF5XCIgfCBcIlNldFwiID0gXCJBcnJheVwiLFxuICBtZXNzYWdlOiBzdHJpbmcgPSBERUZBVUxUX0VSUk9SX01FU1NBR0VTLkxJU1QsXG4gIHZhbGlkYXRvcjogQ29uc3RydWN0b3I8VmFsaWRhdG9yPiA9IExpc3RWYWxpZGF0b3IsXG4pIHtcbiAgcmV0dXJuICh0YXJnZXQ6IGFueSwgcHJvcGVydHlLZXk6IHN0cmluZyk6IGFueSA9PiB7XG4gICAgdHlwZShjb2xsZWN0aW9uKSh0YXJnZXQsIHByb3BlcnR5S2V5KTtcbiAgICBSZWZsZWN0LmRlZmluZU1ldGFkYXRhKFxuICAgICAgZ2V0VmFsaWRhdGlvbktleShWYWxpZGF0aW9uS2V5cy5MSVNUKSxcbiAgICAgIHtcbiAgICAgICAgY2xhc3M6IGNsYXp6Lm5hbWUsXG4gICAgICAgIHR5cGU6IGNvbGxlY3Rpb24sXG4gICAgICAgIG1lc3NhZ2U6IG1lc3NhZ2UsXG4gICAgICB9LFxuICAgICAgdGFyZ2V0LFxuICAgICAgcHJvcGVydHlLZXksXG4gICAgKTtcbiAgICBWYWxpZGF0aW9uLnJlZ2lzdGVyKHtcbiAgICAgIHZhbGlkYXRvcjogdmFsaWRhdG9yLFxuICAgICAgdmFsaWRhdGlvbktleTogVmFsaWRhdGlvbktleXMuTElTVCxcbiAgICAgIHNhdmU6IHRydWUsXG4gICAgfSBhcyBWYWxpZGF0b3JEZWZpbml0aW9uKTtcbiAgfTtcbn1cblxuLyoqXG4gKiBAc3VtbWFyeSBTZXQgRGVjb3JhdG9yXG4gKiBAZGVzY3JpcHRpb24gV3JhcHBlciBmb3Ige0BsaW5rIGxpc3R9IHdpdGggdGhlICdTZXQnIENvbGxlY3Rpb25cbiAqXG4gKiBAcGFyYW0ge01vZGVsQ29uc3RydWN0b3J9IGNsYXp6XG4gKiBAcGFyYW0ge3N0cmluZ30gW21lc3NhZ2VdIGRlZmF1bHRzIHRvIHtAbGluayBERUZBVUxUX0VSUk9SX01FU1NBR0VTI0xJU1R9XG4gKiBAcGFyYW0ge0NvbnN0cnVjdG9yPFZhbGlkYXRvcj59IFt2YWxpZGF0b3JdXG4gKlxuICogQGZ1bmN0aW9uIHNldFxuICpcbiAqIEBtZW1iZXJPZiBtb2R1bGU6ZGVjb3JhdG9yLXZhbGlkYXRpb24uRGVjb3JhdG9ycy5WYWxpZGF0aW9uXG4gKiBAY2F0ZWdvcnkgRGVjb3JhdG9yc1xuICovXG5leHBvcnQgZnVuY3Rpb24gc2V0KFxuICBjbGF6ejogTW9kZWxDb25zdHJ1Y3Rvcjxhbnk+LFxuICBtZXNzYWdlOiBzdHJpbmcgPSBERUZBVUxUX0VSUk9SX01FU1NBR0VTLkxJU1QsXG4gIHZhbGlkYXRvcj86IENvbnN0cnVjdG9yPFZhbGlkYXRvcj4sXG4pIHtcbiAgcmV0dXJuICh0YXJnZXQ6IGFueSwgcHJvcGVydHlLZXk6IHN0cmluZyk6IGFueSA9PiB7XG4gICAgbGlzdChjbGF6eiwgXCJTZXRcIiwgbWVzc2FnZSwgdmFsaWRhdG9yKSh0YXJnZXQsIHByb3BlcnR5S2V5KTtcbiAgfTtcbn1cbiJdfQ==
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import "reflect-metadata";
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
2
|
+
import { Constructor, ModelConstructor } from "../model/types";
|
|
3
|
+
import { Validator } from "./Validators/Validator";
|
|
4
4
|
/**
|
|
5
5
|
* @summary Builds the key to store as Metadata under Reflections
|
|
6
6
|
* @description concatenates {@link ValidationKeys#REFLECT} with the provided key
|
|
@@ -17,191 +17,118 @@ export declare function getValidationKey(key: string): string;
|
|
|
17
17
|
* @description Validators to validate a decorated property must use key {@link ValidationKeys#REQUIRED}
|
|
18
18
|
*
|
|
19
19
|
* @param {string} [message] the error message. Defaults to {@link DEFAULT_ERROR_MESSAGES#REQUIRED}
|
|
20
|
-
* @param {Constructor<Validator>} [validator] the Validator to be used. Defaults to {@link RequiredValidator}
|
|
21
20
|
*
|
|
22
21
|
* @function required
|
|
23
|
-
*
|
|
22
|
+
*
|
|
24
23
|
* @category Decorators
|
|
25
24
|
*/
|
|
26
|
-
export declare function required(message?: string
|
|
25
|
+
export declare function required(message?: string): import("../reflection/decorators").CustomDecorator<V>;
|
|
27
26
|
/**
|
|
28
27
|
* @summary Defines a minimum value for the property
|
|
29
28
|
* @description Validators to validate a decorated property must use key {@link ValidationKeys#MIN}
|
|
30
29
|
*
|
|
31
30
|
* @param {number | Date} value
|
|
32
31
|
* @param {string} [message] the error message. Defaults to {@link DEFAULT_ERROR_MESSAGES#MIN}
|
|
33
|
-
* @param {Constructor<Validator>} [validator] the Validator to be used. Defaults to {@link MinValidator}
|
|
34
32
|
*
|
|
35
33
|
* @function min
|
|
36
34
|
* @memberOf module:decorator-validation.Decorators.Validation
|
|
37
35
|
* @category Decorators
|
|
38
36
|
*/
|
|
39
|
-
export declare function min(value: number | Date | string, message?: string
|
|
37
|
+
export declare function min(value: number | Date | string, message?: string): import("../reflection/decorators").CustomDecorator<V>;
|
|
40
38
|
/**
|
|
41
39
|
* @summary Defines a maximum value for the property
|
|
42
40
|
* @description Validators to validate a decorated property must use key {@link ValidationKeys#MAX}
|
|
43
41
|
*
|
|
44
42
|
* @param {number | Date} value
|
|
45
43
|
* @param {string} [message] the error message. Defaults to {@link DEFAULT_ERROR_MESSAGES#MAX}
|
|
46
|
-
* @param {Constructor<Validator>} [validator] the Validator to be used. Defaults to {@link MaxValidator}
|
|
47
44
|
*
|
|
48
45
|
* @function max
|
|
49
46
|
* @memberOf module:decorator-validation.Decorators.Validation
|
|
50
47
|
* @category Decorators
|
|
51
48
|
*/
|
|
52
|
-
export declare function max(value: number | Date | string, message?: string
|
|
49
|
+
export declare function max(value: number | Date | string, message?: string): import("../reflection/decorators").CustomDecorator<V>;
|
|
53
50
|
/**
|
|
54
51
|
* @summary Defines a step value for the property
|
|
55
52
|
* @description Validators to validate a decorated property must use key {@link ValidationKeys#STEP}
|
|
56
53
|
*
|
|
57
54
|
* @param {number} value
|
|
58
55
|
* @param {string} [message] the error message. Defaults to {@link DEFAULT_ERROR_MESSAGES#STEP}
|
|
59
|
-
* @param {Constructor<Validator>} [validator] the Validator to be used. Defaults to {@link StepValidator}
|
|
60
56
|
*
|
|
61
57
|
* @function step
|
|
62
58
|
* @memberOf module:decorator-validation.Decorators.Validation
|
|
63
59
|
* @category Decorators
|
|
64
60
|
*/
|
|
65
|
-
export declare function step(value: number, message?: string
|
|
61
|
+
export declare function step(value: number, message?: string): import("../reflection/decorators").CustomDecorator<V>;
|
|
66
62
|
/**
|
|
67
63
|
* @summary Defines a minimum length for the property
|
|
68
64
|
* @description Validators to validate a decorated property must use key {@link ValidationKeys#MIN_LENGTH}
|
|
69
65
|
*
|
|
70
66
|
* @param {string} value
|
|
71
67
|
* @param {string} [message] the error message. Defaults to {@link DEFAULT_ERROR_MESSAGES#MIN_LENGTH}
|
|
72
|
-
* @param {Constructor<Validator>} [validator] the Validator to be used. Defaults to {@link MinLengthValidator}
|
|
73
68
|
*
|
|
74
69
|
* @function minlength
|
|
75
70
|
* @memberOf module:decorator-validation.Decorators.Validation
|
|
76
71
|
* @category Decorators
|
|
77
72
|
*/
|
|
78
|
-
export declare function minlength(value: number, message?: string
|
|
73
|
+
export declare function minlength(value: number, message?: string): import("../reflection/decorators").CustomDecorator<V>;
|
|
79
74
|
/**
|
|
80
75
|
* @summary Defines a maximum length for the property
|
|
81
76
|
* @description Validators to validate a decorated property must use key {@link ValidationKeys#MAX_LENGTH}
|
|
82
77
|
*
|
|
83
78
|
* @param {string} value
|
|
84
79
|
* @param {string} [message] the error message. Defaults to {@link DEFAULT_ERROR_MESSAGES#MAX_LENGTH}
|
|
85
|
-
* @param {Constructor<Validator>} [validator] the Validator to be used. Defaults to {@link MaxLengthValidator}
|
|
86
80
|
*
|
|
87
81
|
* @function maxlength
|
|
88
82
|
* @memberOf module:decorator-validation.Decorators.Validation
|
|
89
83
|
* @category Decorators
|
|
90
84
|
*/
|
|
91
|
-
export declare function maxlength(value: number, message?: string
|
|
85
|
+
export declare function maxlength(value: number, message?: string): import("../reflection/decorators").CustomDecorator<V>;
|
|
92
86
|
/**
|
|
93
87
|
* @summary Defines a RegExp pattern the property must respect
|
|
94
88
|
* @description Validators to validate a decorated property must use key {@link ValidationKeys#PATTERN}
|
|
95
89
|
*
|
|
96
90
|
* @param {string} value
|
|
97
91
|
* @param {string} [message] the error message. Defaults to {@link DEFAULT_ERROR_MESSAGES#PATTERN}
|
|
98
|
-
* @param {Constructor<Validator>} [validator] the Validator to be used. Defaults to {@link PatternValidator}
|
|
99
92
|
*
|
|
100
93
|
* @function pattern
|
|
101
94
|
* @memberOf module:decorator-validation.Decorators.Validation
|
|
102
95
|
* @category Decorators
|
|
103
96
|
*/
|
|
104
|
-
export declare function pattern(value: RegExp | string, message?: string
|
|
97
|
+
export declare function pattern(value: RegExp | string, message?: string): import("../reflection/decorators").CustomDecorator<V>;
|
|
105
98
|
/**
|
|
106
99
|
* @summary Defines the property as an email
|
|
107
100
|
* @description Validators to validate a decorated property must use key {@link ValidationKeys#EMAIL}
|
|
108
101
|
*
|
|
109
102
|
* @param {string} [message] the error message. Defaults to {@link DEFAULT_ERROR_MESSAGES#EMAIL}
|
|
110
|
-
* @param {Constructor<Validator>} [validator] the Validator to be used. Defaults to {@link EmailValidator}
|
|
111
103
|
*
|
|
112
104
|
* @function email
|
|
113
105
|
* @memberOf module:decorator-validation.Decorators.Validation
|
|
114
106
|
* @category Decorators
|
|
115
107
|
*/
|
|
116
|
-
export declare function email(message?: string
|
|
108
|
+
export declare function email(message?: string): import("../reflection/decorators").CustomDecorator<V>;
|
|
117
109
|
/**
|
|
118
110
|
* @summary Defines the property as an URL
|
|
119
111
|
* @description Validators to validate a decorated property must use key {@link ValidationKeys#URL}
|
|
120
112
|
*
|
|
121
113
|
* @param {string} [message] the error message. Defaults to {@link DEFAULT_ERROR_MESSAGES#URL}
|
|
122
|
-
* @param {Constructor<Validator>} [validator] the Validator to be used. Defaults to {@link URLValidator}
|
|
123
114
|
*
|
|
124
115
|
* @function url
|
|
125
116
|
* @memberOf module:decorator-validation.Decorators.Validation
|
|
126
117
|
* @category Decorators
|
|
127
118
|
*/
|
|
128
|
-
export declare function url(message?: string
|
|
119
|
+
export declare function url(message?: string): import("../reflection/decorators").CustomDecorator<V>;
|
|
129
120
|
/**
|
|
130
121
|
* @summary Enforces type verification
|
|
131
122
|
* @description Validators to validate a decorated property must use key {@link ValidationKeys#TYPE}
|
|
132
123
|
*
|
|
133
124
|
* @param {string[] | string} types accepted types
|
|
134
125
|
* @param {string} [message] the error message. Defaults to {@link DEFAULT_ERROR_MESSAGES#TYPE}
|
|
135
|
-
* @param {Constructor<Validator>} [validator] the Validator to be used. Defaults to {@link TypeValidator}
|
|
136
126
|
*
|
|
137
127
|
* @function type
|
|
138
128
|
* @memberOf module:decorator-validation.Decorators.Validation
|
|
139
129
|
* @category Decorators
|
|
140
130
|
*/
|
|
141
|
-
export declare function type(types: string[] | string, message?: string
|
|
142
|
-
/**
|
|
143
|
-
* @summary Binds a date format to a string
|
|
144
|
-
* @param {Date} [date]
|
|
145
|
-
* @param {string} [format]
|
|
146
|
-
* @memberOf module:decorator-validation.Utils.Format
|
|
147
|
-
* @category Utilities
|
|
148
|
-
*/
|
|
149
|
-
export declare function bindDateToString(date: Date | undefined, format: string): Date | undefined;
|
|
150
|
-
/**
|
|
151
|
-
* @summary Helper function to be used instead of instanceOf Date
|
|
152
|
-
* @param date
|
|
153
|
-
* @memberOf module:decorator-validation.Utils.Dates
|
|
154
|
-
* @category Validation
|
|
155
|
-
*/
|
|
156
|
-
export declare function isValidDate(date: any): boolean;
|
|
157
|
-
/**
|
|
158
|
-
* @summary Util function to pad numbers
|
|
159
|
-
* @param {number} num
|
|
160
|
-
*
|
|
161
|
-
* @return {string}
|
|
162
|
-
*
|
|
163
|
-
* @function twoDigitPad
|
|
164
|
-
* @memberOf module:decorator-validation.Utils.Format
|
|
165
|
-
* @category Format
|
|
166
|
-
*/
|
|
167
|
-
export declare function twoDigitPad(num: number): string;
|
|
168
|
-
/**
|
|
169
|
-
* @summary Date Format Handling
|
|
170
|
-
* @description Code from {@link https://stackoverflow.com/questions/3552461/how-to-format-a-javascript-date}
|
|
171
|
-
*
|
|
172
|
-
* <pre>
|
|
173
|
-
* Using similar formatting as Moment.js, Class DateTimeFormatter (Java), and Class SimpleDateFormat (Java),
|
|
174
|
-
* I implemented a comprehensive solution formatDate(date, patternStr) where the code is easy to read and modify.
|
|
175
|
-
* You can display date, time, AM/PM, etc.
|
|
176
|
-
*
|
|
177
|
-
* Date and Time Patterns
|
|
178
|
-
* yy = 2-digit year; yyyy = full year
|
|
179
|
-
* M = digit month; MM = 2-digit month; MMM = short month name; MMMM = full month name
|
|
180
|
-
* EEEE = full weekday name; EEE = short weekday name
|
|
181
|
-
* d = digit day; dd = 2-digit day
|
|
182
|
-
* h = hours am/pm; hh = 2-digit hours am/pm; H = hours; HH = 2-digit hours
|
|
183
|
-
* m = minutes; mm = 2-digit minutes; aaa = AM/PM
|
|
184
|
-
* s = seconds; ss = 2-digit seconds
|
|
185
|
-
* S = miliseconds
|
|
186
|
-
* </pre>
|
|
187
|
-
*
|
|
188
|
-
* @param {Date} date
|
|
189
|
-
* @param {string} [patternStr] defaults to 'yyyy/MM/dd'
|
|
190
|
-
* @return {string} the formatted date
|
|
191
|
-
*
|
|
192
|
-
* @function formatDate
|
|
193
|
-
* @memberOf module:decorator-validation.Utils.Dates
|
|
194
|
-
* @category Format
|
|
195
|
-
*/
|
|
196
|
-
export declare function formatDate(date: Date, patternStr?: string): string;
|
|
197
|
-
/**
|
|
198
|
-
* @summary Parses a date from a specified format
|
|
199
|
-
* @param {string} format
|
|
200
|
-
* @param {string | Date | number} [v]
|
|
201
|
-
* @memberOf module:decorator-validation.Utils.Dates
|
|
202
|
-
* @category Format
|
|
203
|
-
*/
|
|
204
|
-
export declare function parseDate(format: string, v?: string | Date | number): Date | undefined;
|
|
131
|
+
export declare function type(types: string[] | string, message?: string): import("../reflection/decorators").CustomDecorator<V>;
|
|
205
132
|
/**
|
|
206
133
|
* @summary Date Handler Decorator
|
|
207
134
|
* @description Validators to validate a decorated property must use key {@link ValidationKeys#DATE}
|
|
@@ -217,7 +144,7 @@ export declare function parseDate(format: string, v?: string | Date | number): D
|
|
|
217
144
|
* @memberOf module:decorator-validation.Decorators.Validation
|
|
218
145
|
* @category Decorators
|
|
219
146
|
*/
|
|
220
|
-
export declare function date(format?: string, message?: string
|
|
147
|
+
export declare function date(format?: string, message?: string): (target: Record<string, any>, propertyKey: string) => any;
|
|
221
148
|
/**
|
|
222
149
|
* @summary Password Handler Decorator
|
|
223
150
|
* @description Validators to validate a decorated property must use key {@link ValidationKeys#PASSWORD}
|
package/lib/validation/index.cjs
CHANGED
|
@@ -1 +1,22 @@
|
|
|
1
|
-
"use strict";
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
__exportStar(require("./Validators/index.cjs"), exports);
|
|
18
|
+
__exportStar(require("./decorators/index.cjs"), exports);
|
|
19
|
+
__exportStar(require("./types/index.cjs"), exports);
|
|
20
|
+
__exportStar(require("./Validation/index.cjs"), exports);
|
|
21
|
+
|
|
22
|
+
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy92YWxpZGF0aW9uL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSwrQ0FBNkI7QUFDN0IsK0NBQTZCO0FBQzdCLDBDQUF3QjtBQUN4QiwrQ0FBNkIiLCJmaWxlIjoidmFsaWRhdGlvbi9pbmRleC5qcyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gXCIuL1ZhbGlkYXRvcnNcIjtcbmV4cG9ydCAqIGZyb20gXCIuL2RlY29yYXRvcnNcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3R5cGVzXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9WYWxpZGF0aW9uXCI7XG4iXX0=
|