@webiny/validation 0.0.0-mt-1

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.
Files changed (57) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +409 -0
  3. package/index.d.ts +4 -0
  4. package/index.js +93 -0
  5. package/package.json +43 -0
  6. package/types.d.ts +27 -0
  7. package/types.js +5 -0
  8. package/validation.d.ts +62 -0
  9. package/validation.js +194 -0
  10. package/validationError.d.ts +10 -0
  11. package/validationError.js +29 -0
  12. package/validators/creditCard.d.ts +15 -0
  13. package/validators/creditCard.js +69 -0
  14. package/validators/dateGte.d.ts +5 -0
  15. package/validators/dateGte.js +37 -0
  16. package/validators/dateLte.d.ts +5 -0
  17. package/validators/dateLte.js +37 -0
  18. package/validators/email.d.ts +15 -0
  19. package/validators/email.js +41 -0
  20. package/validators/eq.d.ts +16 -0
  21. package/validators/eq.js +41 -0
  22. package/validators/gt.d.ts +16 -0
  23. package/validators/gt.js +38 -0
  24. package/validators/gte.d.ts +16 -0
  25. package/validators/gte.js +38 -0
  26. package/validators/in.d.ts +2 -0
  27. package/validators/in.js +27 -0
  28. package/validators/integer.d.ts +2 -0
  29. package/validators/integer.js +26 -0
  30. package/validators/json.d.ts +2 -0
  31. package/validators/json.js +24 -0
  32. package/validators/lt.d.ts +2 -0
  33. package/validators/lt.js +26 -0
  34. package/validators/lte.d.ts +2 -0
  35. package/validators/lte.js +26 -0
  36. package/validators/maxLength.d.ts +2 -0
  37. package/validators/maxLength.js +44 -0
  38. package/validators/minLength.d.ts +2 -0
  39. package/validators/minLength.js +44 -0
  40. package/validators/number.d.ts +8 -0
  41. package/validators/number.js +34 -0
  42. package/validators/numeric.d.ts +8 -0
  43. package/validators/numeric.js +37 -0
  44. package/validators/password.d.ts +2 -0
  45. package/validators/password.js +26 -0
  46. package/validators/phone.d.ts +2 -0
  47. package/validators/phone.js +26 -0
  48. package/validators/required.d.ts +2 -0
  49. package/validators/required.js +22 -0
  50. package/validators/time/index.d.ts +6 -0
  51. package/validators/time/index.js +79 -0
  52. package/validators/timeGte.d.ts +5 -0
  53. package/validators/timeGte.js +38 -0
  54. package/validators/timeLte.d.ts +5 -0
  55. package/validators/timeLte.js +38 -0
  56. package/validators/url.d.ts +2 -0
  57. package/validators/url.js +59 -0
@@ -0,0 +1,26 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports.default = void 0;
9
+
10
+ var _isInteger2 = _interopRequireDefault(require("lodash/isInteger"));
11
+
12
+ var _validationError = _interopRequireDefault(require("./../validationError"));
13
+
14
+ var _default = value => {
15
+ if (!value) {
16
+ return;
17
+ }
18
+
19
+ if ((0, _isInteger2.default)(value)) {
20
+ return;
21
+ }
22
+
23
+ throw new _validationError.default("Value needs to be an integer.");
24
+ };
25
+
26
+ exports.default = _default;
@@ -0,0 +1,2 @@
1
+ declare const _default: (value: any) => void;
2
+ export default _default;
@@ -0,0 +1,24 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports.default = void 0;
9
+
10
+ var _validationError = _interopRequireDefault(require("./../validationError"));
11
+
12
+ var _default = value => {
13
+ if (!value) {
14
+ return;
15
+ }
16
+
17
+ try {
18
+ JSON.parse(value);
19
+ } catch (e) {
20
+ throw new _validationError.default("Value needs to be a valid JSON.");
21
+ }
22
+ };
23
+
24
+ exports.default = _default;
@@ -0,0 +1,2 @@
1
+ declare const _default: (value: any, params: Array<string>) => void;
2
+ export default _default;
@@ -0,0 +1,26 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports.default = void 0;
9
+
10
+ var _validationError = _interopRequireDefault(require("./../validationError"));
11
+
12
+ var _default = (value, params) => {
13
+ if (!value) {
14
+ return;
15
+ }
16
+
17
+ value = value + "";
18
+
19
+ if (parseFloat(value) < parseFloat(params[0])) {
20
+ return;
21
+ }
22
+
23
+ throw new _validationError.default("Value needs to be less than " + params[0] + ".");
24
+ };
25
+
26
+ exports.default = _default;
@@ -0,0 +1,2 @@
1
+ declare const _default: (value: any, params: Array<string>) => void;
2
+ export default _default;
@@ -0,0 +1,26 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports.default = void 0;
9
+
10
+ var _validationError = _interopRequireDefault(require("./../validationError"));
11
+
12
+ var _default = (value, params) => {
13
+ if (!value) {
14
+ return;
15
+ }
16
+
17
+ value = value + "";
18
+
19
+ if (parseFloat(value) <= parseFloat(params[0])) {
20
+ return;
21
+ }
22
+
23
+ throw new _validationError.default("Value needs to be less than or equal to " + params[0] + ".");
24
+ };
25
+
26
+ exports.default = _default;
@@ -0,0 +1,2 @@
1
+ declare const _default: (value: any, params: Array<string>) => void;
2
+ export default _default;
@@ -0,0 +1,44 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports.default = void 0;
9
+
10
+ var _isString2 = _interopRequireDefault(require("lodash/isString"));
11
+
12
+ var _keys2 = _interopRequireDefault(require("lodash/keys"));
13
+
14
+ var _isObject2 = _interopRequireDefault(require("lodash/isObject"));
15
+
16
+ var _has2 = _interopRequireDefault(require("lodash/has"));
17
+
18
+ var _validationError = _interopRequireDefault(require("./../validationError"));
19
+
20
+ var _default = (value, params) => {
21
+ if (!value) {
22
+ return;
23
+ }
24
+
25
+ let lengthOfValue = null;
26
+
27
+ if ((0, _has2.default)(value, "length")) {
28
+ lengthOfValue = value.length;
29
+ } else if ((0, _isObject2.default)(value)) {
30
+ lengthOfValue = (0, _keys2.default)(value).length;
31
+ }
32
+
33
+ if (lengthOfValue === null || lengthOfValue <= params[0]) {
34
+ return;
35
+ }
36
+
37
+ if ((0, _isString2.default)(value)) {
38
+ throw new _validationError.default("Value requires " + params[0] + " characters at most.");
39
+ }
40
+
41
+ throw new _validationError.default("Value requires " + params[0] + " items at most.");
42
+ };
43
+
44
+ exports.default = _default;
@@ -0,0 +1,2 @@
1
+ declare const _default: (value: any, params: Array<string>) => void;
2
+ export default _default;
@@ -0,0 +1,44 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports.default = void 0;
9
+
10
+ var _isString2 = _interopRequireDefault(require("lodash/isString"));
11
+
12
+ var _keys2 = _interopRequireDefault(require("lodash/keys"));
13
+
14
+ var _isObject2 = _interopRequireDefault(require("lodash/isObject"));
15
+
16
+ var _has2 = _interopRequireDefault(require("lodash/has"));
17
+
18
+ var _validationError = _interopRequireDefault(require("./../validationError"));
19
+
20
+ var _default = (value, params) => {
21
+ if (!value) {
22
+ return;
23
+ }
24
+
25
+ let lengthOfValue = null;
26
+
27
+ if ((0, _has2.default)(value, "length")) {
28
+ lengthOfValue = value.length;
29
+ } else if ((0, _isObject2.default)(value)) {
30
+ lengthOfValue = (0, _keys2.default)(value).length;
31
+ }
32
+
33
+ if (lengthOfValue === null || lengthOfValue >= params[0]) {
34
+ return;
35
+ }
36
+
37
+ if ((0, _isString2.default)(value)) {
38
+ throw new _validationError.default("Value requires at least " + params[0] + " characters.");
39
+ }
40
+
41
+ throw new _validationError.default("Value requires at least " + params[0] + " items.");
42
+ };
43
+
44
+ exports.default = _default;
@@ -0,0 +1,8 @@
1
+ declare const _default: (value: any) => void;
2
+ /**
3
+ * @function number
4
+ * @description This validator checks of the given value is a number
5
+ * @param {any} value
6
+ * @return {boolean}
7
+ */
8
+ export default _default;
@@ -0,0 +1,34 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports.default = void 0;
9
+
10
+ var _isNumber2 = _interopRequireDefault(require("lodash/isNumber"));
11
+
12
+ var _isNaN2 = _interopRequireDefault(require("lodash/isNaN"));
13
+
14
+ var _validationError = _interopRequireDefault(require("./../validationError"));
15
+
16
+ /**
17
+ * @function number
18
+ * @description This validator checks of the given value is a number
19
+ * @param {any} value
20
+ * @return {boolean}
21
+ */
22
+ var _default = value => {
23
+ if (!value && !(0, _isNaN2.default)(value)) {
24
+ return;
25
+ }
26
+
27
+ if ((0, _isNumber2.default)(value) && !(0, _isNaN2.default)(value)) {
28
+ return;
29
+ }
30
+
31
+ throw new _validationError.default("Value needs to be a number.");
32
+ };
33
+
34
+ exports.default = _default;
@@ -0,0 +1,8 @@
1
+ declare const _default: (value: any) => void;
2
+ /**
3
+ * @function number
4
+ * @description This validator checks if the given value is numeric
5
+ * @param {any} value
6
+ * @return {boolean}
7
+ */
8
+ export default _default;
@@ -0,0 +1,37 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports.default = void 0;
9
+
10
+ var _validationError = _interopRequireDefault(require("./../validationError"));
11
+
12
+ var _isnumeric = _interopRequireDefault(require("isnumeric"));
13
+
14
+ /**
15
+ * @function number
16
+ * @description This validator checks if the given value is numeric
17
+ * @param {any} value
18
+ * @return {boolean}
19
+ */
20
+ var _default = value => {
21
+ // Eliminate edge cases
22
+ if (typeof value === "undefined" || value === 0 || value === "0") {
23
+ return;
24
+ }
25
+
26
+ if (!value && !isNaN(value)) {
27
+ return;
28
+ }
29
+
30
+ if ((0, _isnumeric.default)(value)) {
31
+ return;
32
+ }
33
+
34
+ throw new _validationError.default("Value needs to be numeric.");
35
+ };
36
+
37
+ exports.default = _default;
@@ -0,0 +1,2 @@
1
+ declare const _default: (value: any, params?: Array<string>) => void;
2
+ export default _default;
@@ -0,0 +1,26 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports.default = void 0;
9
+
10
+ var _validationError = _interopRequireDefault(require("./../validationError"));
11
+
12
+ var _default = (value, params = []) => {
13
+ if (!value) {
14
+ return;
15
+ }
16
+
17
+ value = value + "";
18
+ const length = params[0] || 6;
19
+ const test = value.match(new RegExp(`^.{${length},}$`));
20
+
21
+ if (test === null) {
22
+ throw new _validationError.default(`Password must contain at least ${length} characters`);
23
+ }
24
+ };
25
+
26
+ exports.default = _default;
@@ -0,0 +1,2 @@
1
+ declare const _default: (value: any) => void;
2
+ export default _default;
@@ -0,0 +1,26 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports.default = void 0;
9
+
10
+ var _validationError = _interopRequireDefault(require("./../validationError"));
11
+
12
+ var _default = value => {
13
+ if (!value) {
14
+ return;
15
+ }
16
+
17
+ value = value + "";
18
+
19
+ if (value.match(/^[-+0-9()/\s]+$/)) {
20
+ return;
21
+ }
22
+
23
+ throw new _validationError.default("Value must be a valid phone number.");
24
+ };
25
+
26
+ exports.default = _default;
@@ -0,0 +1,2 @@
1
+ declare const _default: (value: any) => void;
2
+ export default _default;
@@ -0,0 +1,22 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports.default = void 0;
9
+
10
+ var _validationError = _interopRequireDefault(require("./../validationError"));
11
+
12
+ const throwError = () => {
13
+ throw new _validationError.default("Value is required.");
14
+ };
15
+
16
+ var _default = value => {
17
+ if (value === "" || value === null || value === undefined) {
18
+ throwError();
19
+ }
20
+ };
21
+
22
+ exports.default = _default;
@@ -0,0 +1,6 @@
1
+ /**
2
+ * returns 1 if time is greater than compareTo
3
+ * returns 0 if they are equal
4
+ * returns -1 if compareTo is greater than time
5
+ */
6
+ export declare const compareTime: (time: string, compareTo: string) => number;
@@ -0,0 +1,79 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports.compareTime = void 0;
9
+
10
+ var _validationError = _interopRequireDefault(require("../../validationError"));
11
+
12
+ const parseTime = value => {
13
+ const parsed = value.split(":").map(Number);
14
+
15
+ if (parsed.length < 2) {
16
+ throw new _validationError.default(`Value "${value}" does not look like time.`);
17
+ }
18
+
19
+ const [hours, minutes, seconds = 0] = parsed;
20
+
21
+ if (hours >= 24) {
22
+ throw new _validationError.default(`There cannot be more than 24 hours. Value parsed is "${value}".`);
23
+ } else if (hours < 0) {
24
+ throw new _validationError.default(`Hours cannot go into negative. Value parsed is "${value}".`);
25
+ } else if (minutes >= 60) {
26
+ throw new _validationError.default(`There cannot be more than 59 minutes. Value parsed is "${value}".`);
27
+ } else if (minutes < 0) {
28
+ throw new _validationError.default(`Minutes cannot go into negative. Value parsed is "${value}".`);
29
+ } else if (seconds >= 60) {
30
+ throw new _validationError.default(`There cannot be more than 59 seconds. Value parsed is "${value}".`);
31
+ } else if (seconds < 0) {
32
+ throw new _validationError.default(`Seconds cannot go into negative. Value parsed is "${value}".`);
33
+ }
34
+
35
+ return {
36
+ hours,
37
+ minutes,
38
+ seconds
39
+ };
40
+ };
41
+ /**
42
+ * returns 1 if time is greater than compareTo
43
+ * returns 0 if they are equal
44
+ * returns -1 if compareTo is greater than time
45
+ */
46
+
47
+
48
+ const compareTime = (time, compareTo) => {
49
+ const {
50
+ hours: timeHours,
51
+ minutes: timeMinutes,
52
+ seconds: timeSeconds
53
+ } = parseTime(time);
54
+ const {
55
+ hours: compareToHours,
56
+ minutes: compareToMinutes,
57
+ seconds: compareToSeconds
58
+ } = parseTime(compareTo);
59
+
60
+ if (timeHours > compareToHours) {
61
+ return 1;
62
+ }
63
+
64
+ if (timeHours === compareToHours) {
65
+ if (timeMinutes > compareToMinutes) {
66
+ return 1;
67
+ } else if (timeMinutes === compareToMinutes) {
68
+ if (timeSeconds > compareToSeconds) {
69
+ return 1;
70
+ } else if (timeSeconds === compareToSeconds) {
71
+ return 0;
72
+ }
73
+ }
74
+ }
75
+
76
+ return -1;
77
+ };
78
+
79
+ exports.compareTime = compareTime;
@@ -0,0 +1,5 @@
1
+ declare const _default: (value: string, params: string[]) => void;
2
+ /**
3
+ * Validates that given value is a greater or equal to a gteValue
4
+ */
5
+ export default _default;
@@ -0,0 +1,38 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports.default = void 0;
9
+
10
+ var _validationError = _interopRequireDefault(require("./../validationError"));
11
+
12
+ var _time = require("./time");
13
+
14
+ /**
15
+ * Validates that given value is a greater or equal to a gteValue
16
+ */
17
+ var _default = (value, params) => {
18
+ if (!value) {
19
+ return;
20
+ } // we need to join because validation params are being split by :
21
+
22
+
23
+ const gteValue = params.join(":");
24
+
25
+ if (!gteValue) {
26
+ return;
27
+ }
28
+
29
+ const compare = (0, _time.compareTime)(value, gteValue);
30
+
31
+ if (compare >= 0) {
32
+ return;
33
+ }
34
+
35
+ throw new _validationError.default(`Value needs to be greater than or equal to "${gteValue}".`);
36
+ };
37
+
38
+ exports.default = _default;
@@ -0,0 +1,5 @@
1
+ declare const _default: (value: string, params: string[]) => void;
2
+ /**
3
+ * Validates that given value is a leaser or equal to a lteValue
4
+ */
5
+ export default _default;
@@ -0,0 +1,38 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports.default = void 0;
9
+
10
+ var _validationError = _interopRequireDefault(require("./../validationError"));
11
+
12
+ var _time = require("./time");
13
+
14
+ /**
15
+ * Validates that given value is a leaser or equal to a lteValue
16
+ */
17
+ var _default = (value, params) => {
18
+ if (!value) {
19
+ return;
20
+ } // we need to join because validation params are being split by :
21
+
22
+
23
+ const lteValue = params.join(":");
24
+
25
+ if (!lteValue) {
26
+ return;
27
+ }
28
+
29
+ const compare = (0, _time.compareTime)(value, lteValue);
30
+
31
+ if (compare <= 0) {
32
+ return;
33
+ }
34
+
35
+ throw new _validationError.default(`Value needs to be lesser than or equal to "${lteValue}".`);
36
+ };
37
+
38
+ exports.default = _default;
@@ -0,0 +1,2 @@
1
+ declare const _default: (value: any, params: Array<string>) => void;
2
+ export default _default;
@@ -0,0 +1,59 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports.default = void 0;
9
+
10
+ var _validationError = _interopRequireDefault(require("./../validationError"));
11
+
12
+ const regex = {
13
+ base: new RegExp( // eslint-disable-next-line
14
+ /^(https?:\/\/)((([a-z\d]([a-z\d-]*[a-z\d])*)\.)+[a-z]{2,}|((\d{1,3}\.){3}\d{1,3}))(\:\d+)?(\/[-a-z\d%_.~+]*)*(\?[;&a-z\d%_.~+=-]*)?(\#[-a-z\d_]*)?$/i),
15
+ ip: new RegExp( // eslint-disable-next-line
16
+ /^(https?:\/\/)(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/),
17
+ relative: new RegExp( // eslint-disable-next-line
18
+ /^\/.*$/),
19
+ href: new RegExp( // eslint-disable-next-line
20
+ /^(#|mailto:|tel:)\S*$/)
21
+ };
22
+
23
+ var _default = (value, params) => {
24
+ if (!value) {
25
+ return;
26
+ }
27
+
28
+ value = value + "";
29
+
30
+ if (value.startsWith("http://localhost") || value.startsWith("https://localhost")) {
31
+ value = value.replace("//localhost", "//localhost.com");
32
+ }
33
+
34
+ if (regex.base.test(value)) {
35
+ if (!params.includes("noIp")) {
36
+ return;
37
+ }
38
+
39
+ if (!regex.ip.test(value)) {
40
+ return;
41
+ }
42
+ }
43
+
44
+ if (params.includes("allowRelative")) {
45
+ if (regex.relative.test(value)) {
46
+ return;
47
+ }
48
+ }
49
+
50
+ if (params.includes("allowHref")) {
51
+ if (regex.href.test(value)) {
52
+ return;
53
+ }
54
+ }
55
+
56
+ throw new _validationError.default("Value must be a valid URL.");
57
+ };
58
+
59
+ exports.default = _default;