-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathindex.ts
More file actions
131 lines (109 loc) · 3.71 KB
/
index.ts
File metadata and controls
131 lines (109 loc) · 3.71 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
import * as moment from 'moment';
/**
* Validate if a value is `null` or `undefined`.
*
* @param {null|undefined|any} value - The Value to test.
* @returns {boolean} If a value is `null` or `undefined`.
*/
export const isNullOrUndefined = (value?: any): boolean => {
if (value === null) {
return true;
}
if (value === undefined) {
return true;
}
return false;
};
/**
* Validate if a value is a valid string or not.
*
* @param {string} value - The value to validate.
* @param {boolean} [allowEmpty=false] - If a empty string should be valid or not.
* @param {number?} [size=undefined] - The maximum size of the string.
* @returns {boolean} If the string is valid or not.
*/
export const isValidString = (value?: any, allowEmpty = false, size?: number): boolean => {
if (isNullOrUndefined(value)) {
return false;
}
if (typeof value !== 'string') {
return false;
}
if (value.length === 0 && allowEmpty === false) return false;
if (size) {
if (value.length > size) {
return false;
}
}
return true;
};
/**
* Validate if the provided string is a valid email address.
*
* @param {string} email - String to validate as email.
* @returns {boolean} Wether an email is valid or not.
*/
export const isValidEmail = (email: string): boolean => {
let emailExpression = /^(([^<>()[\].,;:\s@"]+(\.[^<>()[\].,;:\s@"]+)*)|(".+"))@(([^<>()[\].,;:\s@"]+\.)+[^<>()[\].,;:\s@"]{2,})$/;
return emailExpression.test(email) ? true : false;
};
/**
* Validate if a string is a valid number.
*
* @param {string} value - The string to validate as a number.
* @param {boolean} [allowZero=false] - If the string should accept 0 as a valid number.
* @param {boolean} [allowNegative=false] - If the string should negative values.
*
* @returns {boolean} If the string is valid number or not.
*/
export const isValidNumber = (value: string, allowZero: boolean = false, allowNegative: boolean = false): boolean => {
const regExp = /^(-?[0-9]+)((\.|,)[0-9]+)?$/;
if (!regExp.test(value))
return false;
const numberToTest = parseInt(value, 10);
if (isNaN(numberToTest) || typeof numberToTest !== 'number') return false;
if (numberToTest === 0 && allowZero === false) return false;
if (numberToTest < 0 && allowNegative === false) return false;
return true;
};
/**
* Validate if a number is a valid integer.
*
* @param {number} numberToTest - The number to validate as integer.
* @param {boolean} [allowZero=false] - If the number should accept 0 as a valid number.
* @param {boolean} [allowNegative=false] - If the number should negative values.
*
* @returns {boolean} If the number is a valid integer.
*/
export const isValidInteger = (numberToTest: number, allowZero: boolean = false, allowNegative: boolean = false): boolean => {
if (!Number.isInteger(numberToTest)) return false;
if (numberToTest === 0 && allowZero === false) return false;
if (numberToTest < 0 && allowNegative === false) return false;
return true;
};
/**
* Validate if the provided string is a valid Date.
*
* @param {string} date - string date
* @param {string} format - The format with wich the date is going to be processed
*
* @returns {boolean} is valid date
*/
export const isValidDate = (date: string, format?: string): boolean => {
if (!format)
return moment(date).isValid();
return moment(date, format, true).isValid();
};
/**
* Validate if the provided string is a valid number
*
* @param {string} value - The value to check
*
* @returns {boolean} Returns if the specified value is a valid number or not
*/
export const isStringAValidNumber = (value: string) => {
if (value === '')
return false;
const number = Number(value);
return Number.isNaN(number) ? false : true;
}