UNPKG

3.27 kBJavaScriptView Raw
1"use strict";
2Object.defineProperty(exports, "__esModule", { value: true });
3const validator = require("validator");
4const validation_1 = require("../error/validation");
5class Validator {
6 static isInt(value, min = Number.MIN_SAFE_INTEGER, max = Number.MAX_SAFE_INTEGER) {
7 value = Validator.isNumber(value, min, max);
8 if (!validator.isInt(value.toString())) {
9 throw new validation_1.ValidationError(validation_1.ValidationError.NO_INT);
10 }
11 return value;
12 }
13 static isNumber(value, min = Number.MIN_SAFE_INTEGER / 128, max = Number.MAX_SAFE_INTEGER / 128) {
14 value = parseFloat(Validator.isString(value));
15 if (!isNaN(value)) {
16 if (value >= min && value <= max) {
17 return value;
18 }
19 throw new validation_1.ValidationError(validation_1.ValidationError.NUMBER_OUT_OF_BOUNDS);
20 }
21 throw new validation_1.ValidationError(validation_1.ValidationError.NO_NUMBER);
22 }
23 static escape(value) {
24 return validator.escape(value || '');
25 }
26 static isString(value, min = 1, max = 256) {
27 if (typeof value === 'number') {
28 value = value.toString();
29 }
30 if (typeof value === 'string') {
31 const processedValue = value.trim();
32 if (processedValue.length >= min && processedValue.length <= max) {
33 return Validator.escape(processedValue);
34 }
35 throw new validation_1.ValidationError(validation_1.ValidationError.STRING_OUT_OF_BOUNDS);
36 }
37 throw new validation_1.ValidationError(validation_1.ValidationError.NO_STRING);
38 }
39 static isEmail(value) {
40 const email = Validator.isString(value).toLowerCase();
41 if (validator.isEmail(email)) {
42 return email;
43 }
44 else {
45 throw new validation_1.ValidationError(validation_1.ValidationError.NO_EMAIL);
46 }
47 }
48 static isArray(array, iterator) {
49 if (!(array instanceof Array) || array.length === 0) {
50 throw new validation_1.ValidationError(validation_1.ValidationError.NO_ARRAY);
51 }
52 if (typeof iterator === 'function') {
53 return array.map((el) => iterator(el));
54 }
55 return array;
56 }
57 static isDate(value, min, max) {
58 const strDate = Validator.isString(value);
59 if (!strDate) {
60 throw new validation_1.ValidationError(validation_1.ValidationError.NO_DATE);
61 }
62 const isISO8601 = validator.isISO8601(strDate);
63 if (!isISO8601) {
64 throw new validation_1.ValidationError(validation_1.ValidationError.NO_DATE);
65 }
66 const date = new Date(strDate);
67 if (isNaN(date.getTime())) {
68 throw new validation_1.ValidationError(validation_1.ValidationError.NO_DATE);
69 }
70 if (min instanceof Date && date.getTime() < min.getTime()) {
71 throw new validation_1.ValidationError(validation_1.ValidationError.DATE_OUT_OF_BOUNDS);
72 }
73 if (max instanceof Date && date.getTime() > max.getTime()) {
74 throw new validation_1.ValidationError(validation_1.ValidationError.DATE_OUT_OF_BOUNDS);
75 }
76 return date;
77 }
78}
79exports.Validator = Validator;