1 | "use strict";
|
2 | Object.defineProperty(exports, "__esModule", { value: true });
|
3 | exports.ValidatorsImpl = void 0;
|
4 | const validator = require("validator");
|
5 | const context_items_1 = require("../context-items");
|
6 | class ValidatorsImpl {
|
7 | constructor(builder, chain) {
|
8 | this.builder = builder;
|
9 | this.chain = chain;
|
10 | this.negateNext = false;
|
11 | }
|
12 | addItem(item) {
|
13 | this.builder.addItem(item);
|
14 | this.lastValidator = item;
|
15 |
|
16 | this.negateNext = false;
|
17 | return this.chain;
|
18 | }
|
19 |
|
20 | not() {
|
21 | this.negateNext = true;
|
22 | return this.chain;
|
23 | }
|
24 | withMessage(message) {
|
25 | this.lastValidator.message = message;
|
26 | return this.chain;
|
27 | }
|
28 |
|
29 | custom(validator) {
|
30 | return this.addItem(new context_items_1.CustomValidation(validator, this.negateNext));
|
31 | }
|
32 | exists(options = {}) {
|
33 | let validator;
|
34 | if (options.checkFalsy) {
|
35 | validator = value => !!value;
|
36 | }
|
37 | else if (options.checkNull) {
|
38 | validator = value => value != null;
|
39 | }
|
40 | else {
|
41 | validator = value => value !== undefined;
|
42 | }
|
43 | return this.custom(validator);
|
44 | }
|
45 | isArray(options = {}) {
|
46 | return this.custom(value => Array.isArray(value) &&
|
47 | (typeof options.min === 'undefined' || value.length >= options.min) &&
|
48 | (typeof options.max === 'undefined' || value.length <= options.max));
|
49 | }
|
50 | isObject(options = { strict: true }) {
|
51 | return this.custom(value => typeof value === 'object' &&
|
52 | (options.strict ? value !== null && !Array.isArray(value) : true));
|
53 | }
|
54 | isString() {
|
55 | return this.custom(value => typeof value === 'string');
|
56 | }
|
57 | notEmpty(options) {
|
58 | this.not();
|
59 | return this.isEmpty(options);
|
60 | }
|
61 |
|
62 | addStandardValidation(validator, ...options) {
|
63 | return this.addItem(new context_items_1.StandardValidation(validator, this.negateNext, options));
|
64 | }
|
65 | contains(elem, options) {
|
66 | return this.addStandardValidation(validator.contains, elem, options);
|
67 | }
|
68 | equals(comparison) {
|
69 | return this.addStandardValidation(validator.equals, comparison);
|
70 | }
|
71 | isAfter(date) {
|
72 | return this.addStandardValidation(validator.isAfter, date);
|
73 | }
|
74 | isAlpha(locale, options) {
|
75 |
|
76 | const ignore = Array.isArray(options === null || options === void 0 ? void 0 : options.ignore) ? options === null || options === void 0 ? void 0 : options.ignore.join('') : options === null || options === void 0 ? void 0 : options.ignore;
|
77 | return this.addStandardValidation(validator.isAlpha, locale, Object.assign(Object.assign({}, options), { ignore }));
|
78 | }
|
79 | isAlphanumeric(locale, options) {
|
80 | return this.addStandardValidation(validator.isAlphanumeric, locale, options);
|
81 | }
|
82 | isAscii() {
|
83 | return this.addStandardValidation(validator.isAscii);
|
84 | }
|
85 | isBase32() {
|
86 | return this.addStandardValidation(validator.isBase32);
|
87 | }
|
88 | isBase58() {
|
89 | return this.addStandardValidation(validator.isBase58);
|
90 | }
|
91 | isBase64(options) {
|
92 | return this.addStandardValidation(validator.isBase64, options);
|
93 | }
|
94 | isBefore(date) {
|
95 | return this.addStandardValidation(validator.isBefore, date);
|
96 | }
|
97 | isBIC() {
|
98 | return this.addStandardValidation(validator.isBIC);
|
99 | }
|
100 | isBoolean(options) {
|
101 | if (options === null || options === void 0 ? void 0 : options.strict) {
|
102 | return this.custom(value => {
|
103 | return value === true || value === false;
|
104 | });
|
105 | }
|
106 | return this.addStandardValidation(validator.isBoolean);
|
107 | }
|
108 | isBtcAddress() {
|
109 | return this.addStandardValidation(validator.isBtcAddress);
|
110 | }
|
111 | isByteLength(options) {
|
112 | return this.addStandardValidation(validator.isByteLength, options);
|
113 | }
|
114 | isCreditCard() {
|
115 | return this.addStandardValidation(validator.isCreditCard);
|
116 | }
|
117 | isCurrency(options) {
|
118 | return this.addStandardValidation(validator.isCurrency, options);
|
119 | }
|
120 | isDataURI() {
|
121 | return this.addStandardValidation(validator.isDataURI);
|
122 | }
|
123 | isDate(options) {
|
124 | return this.addStandardValidation(validator.isDate, options);
|
125 | }
|
126 | isDecimal(options) {
|
127 | return this.addStandardValidation(validator.isDecimal, options);
|
128 | }
|
129 | isDivisibleBy(number) {
|
130 | return this.addStandardValidation(validator.isDivisibleBy, number);
|
131 | }
|
132 | isEAN() {
|
133 | return this.addStandardValidation(validator.isEAN);
|
134 | }
|
135 | isEmail(options) {
|
136 | return this.addStandardValidation(validator.isEmail, options);
|
137 | }
|
138 | isEmpty(options) {
|
139 | return this.addStandardValidation(validator.isEmpty, options);
|
140 | }
|
141 | isEthereumAddress() {
|
142 | return this.addStandardValidation(validator.isEthereumAddress);
|
143 | }
|
144 | isFQDN(options) {
|
145 | return this.addStandardValidation(validator.isFQDN, options);
|
146 | }
|
147 | isFloat(options) {
|
148 | return this.addStandardValidation(validator.isFloat, options);
|
149 | }
|
150 | isFullWidth() {
|
151 | return this.addStandardValidation(validator.isFullWidth);
|
152 | }
|
153 | isHalfWidth() {
|
154 | return this.addStandardValidation(validator.isHalfWidth);
|
155 | }
|
156 | isHash(algorithm) {
|
157 | return this.addStandardValidation(validator.isHash, algorithm);
|
158 | }
|
159 | isHexColor() {
|
160 | return this.addStandardValidation(validator.isHexColor);
|
161 | }
|
162 | isHexadecimal() {
|
163 | return this.addStandardValidation(validator.isHexadecimal);
|
164 | }
|
165 | isHSL() {
|
166 | return this.addStandardValidation(validator.isHSL);
|
167 | }
|
168 | isIBAN() {
|
169 | return this.addStandardValidation(validator.isIBAN);
|
170 | }
|
171 | isIdentityCard(locale) {
|
172 | return this.addStandardValidation(validator.isIdentityCard, locale);
|
173 | }
|
174 | isIMEI(options) {
|
175 | return this.addStandardValidation(validator.isIMEI, options);
|
176 | }
|
177 | isIP(version) {
|
178 | return this.addStandardValidation(validator.isIP, version);
|
179 | }
|
180 | isIPRange(version) {
|
181 | return this.addStandardValidation(validator.isIPRange, version);
|
182 | }
|
183 | isISBN(version) {
|
184 | return this.addStandardValidation(validator.isISBN, version);
|
185 | }
|
186 | isISSN(options) {
|
187 | return this.addStandardValidation(validator.isISSN, options);
|
188 | }
|
189 | isISIN() {
|
190 | return this.addStandardValidation(validator.isISIN);
|
191 | }
|
192 | isISO8601(options) {
|
193 | return this.addStandardValidation(validator.isISO8601, options);
|
194 | }
|
195 | isISO31661Alpha2() {
|
196 | return this.addStandardValidation(validator.isISO31661Alpha2);
|
197 | }
|
198 | isISO31661Alpha3() {
|
199 | return this.addStandardValidation(validator.isISO31661Alpha3);
|
200 | }
|
201 | isISRC() {
|
202 | return this.addStandardValidation(validator.isISRC);
|
203 | }
|
204 | isIn(values) {
|
205 | return this.addStandardValidation(validator.isIn, values);
|
206 | }
|
207 | isInt(options) {
|
208 | return this.addStandardValidation(validator.isInt, options);
|
209 | }
|
210 | isJSON(options) {
|
211 | return this.addStandardValidation(validator.isJSON, options);
|
212 | }
|
213 | isJWT() {
|
214 | return this.addStandardValidation(validator.isJWT);
|
215 | }
|
216 | isLatLong(options) {
|
217 | return this.addStandardValidation(validator.isLatLong, options);
|
218 | }
|
219 | isLength(options) {
|
220 | return this.addStandardValidation(validator.isLength, options);
|
221 | }
|
222 | isLicensePlate(locale) {
|
223 | return this.addStandardValidation(validator.isLicensePlate, locale);
|
224 | }
|
225 | isLocale() {
|
226 | return this.addStandardValidation(validator.isLocale);
|
227 | }
|
228 | isLowercase() {
|
229 | return this.addStandardValidation(validator.isLowercase);
|
230 | }
|
231 | isMagnetURI() {
|
232 | return this.addStandardValidation(validator.isMagnetURI);
|
233 | }
|
234 | isMACAddress(options) {
|
235 | return this.addStandardValidation(validator.isMACAddress, options);
|
236 | }
|
237 | isMD5() {
|
238 | return this.addStandardValidation(validator.isMD5);
|
239 | }
|
240 | isMimeType() {
|
241 | return this.addStandardValidation(validator.isMimeType);
|
242 | }
|
243 | isMobilePhone(locale, options) {
|
244 | return this.addStandardValidation(validator.isMobilePhone, locale, options);
|
245 | }
|
246 | isMongoId() {
|
247 | return this.addStandardValidation(validator.isMongoId);
|
248 | }
|
249 | isMultibyte() {
|
250 | return this.addStandardValidation(validator.isMultibyte);
|
251 | }
|
252 | isNumeric(options) {
|
253 | return this.addStandardValidation(validator.isNumeric, options);
|
254 | }
|
255 | isOctal() {
|
256 | return this.addStandardValidation(validator.isOctal);
|
257 | }
|
258 | isPassportNumber(countryCode) {
|
259 | return this.addStandardValidation(validator.isPassportNumber, countryCode);
|
260 | }
|
261 | isPort() {
|
262 | return this.addStandardValidation(validator.isPort);
|
263 | }
|
264 | isPostalCode(locale) {
|
265 | return this.addStandardValidation(validator.isPostalCode, locale);
|
266 | }
|
267 | isRFC3339() {
|
268 | return this.addStandardValidation(validator.isRFC3339);
|
269 | }
|
270 | isRgbColor(includePercentValues) {
|
271 | return this.addStandardValidation(validator.isRgbColor, includePercentValues);
|
272 | }
|
273 | isSemVer() {
|
274 | return this.addStandardValidation(validator.isSemVer);
|
275 | }
|
276 | isSlug() {
|
277 | return this.addStandardValidation(validator.isSlug);
|
278 | }
|
279 | isStrongPassword(options) {
|
280 | return this.addStandardValidation(validator.isStrongPassword, options);
|
281 | }
|
282 | isSurrogatePair() {
|
283 | return this.addStandardValidation(validator.isSurrogatePair);
|
284 | }
|
285 | isTaxID(locale) {
|
286 | return this.addStandardValidation(validator.isTaxID, locale);
|
287 | }
|
288 | isURL(options) {
|
289 | return this.addStandardValidation(validator.isURL, options);
|
290 | }
|
291 | isUUID(version) {
|
292 | return this.addStandardValidation(validator.isUUID, version);
|
293 | }
|
294 | isUppercase() {
|
295 | return this.addStandardValidation(validator.isUppercase);
|
296 | }
|
297 | isVariableWidth() {
|
298 | return this.addStandardValidation(validator.isVariableWidth);
|
299 | }
|
300 | isVAT(countryCode) {
|
301 | return this.addStandardValidation(validator.isVAT, countryCode);
|
302 | }
|
303 | isWhitelisted(chars) {
|
304 | return this.addStandardValidation(validator.isWhitelisted, chars);
|
305 | }
|
306 | matches(pattern, modifiers) {
|
307 | return this.addStandardValidation(validator.matches, pattern, modifiers);
|
308 | }
|
309 | }
|
310 | exports.ValidatorsImpl = ValidatorsImpl;
|