UNPKG

10.5 kBJavaScriptView Raw
1"use strict";
2Object.defineProperty(exports, "__esModule", { value: true });
3exports.ValidatorsImpl = void 0;
4const validator = require("validator");
5const context_items_1 = require("../context-items");
6class 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 // Reset this.negateNext so that next validation isn't negated too
16 this.negateNext = false;
17 return this.chain;
18 }
19 // validation manipulation
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 // custom validators
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 // Standard validators
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 // TODO(v7): remove string[] support
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}
310exports.ValidatorsImpl = ValidatorsImpl;