valgen 5.14.1 → 5.15.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.
- package/CHANGELOG.md +27 -1
- package/cjs/rules/format-rules/is-time.js +20 -0
- package/cjs/rules/index.js +4 -1
- package/cjs/rules/logical-rules/is-equal.js +32 -0
- package/cjs/rules/logical-rules/range.js +3 -2
- package/cjs/rules/type-rules/is-array.js +1 -1
- package/cjs/rules/type-rules/is-date.js +2 -2
- package/cjs/rules/utility-rules/all-of.js +20 -0
- package/cjs/rules/utility-rules/one-of.js +59 -0
- package/cjs/rules/utility-rules/pipe.js +0 -17
- package/cjs/tsconfig-build-cjs.tsbuildinfo +1 -1
- package/esm/rules/format-rules/is-time.js +16 -0
- package/esm/rules/index.js +4 -1
- package/esm/rules/logical-rules/is-equal.js +28 -0
- package/esm/rules/logical-rules/range.js +2 -1
- package/esm/rules/type-rules/is-array.js +1 -1
- package/esm/rules/type-rules/is-date.js +2 -2
- package/esm/rules/utility-rules/all-of.js +17 -0
- package/esm/rules/utility-rules/one-of.js +56 -0
- package/esm/rules/utility-rules/pipe.js +0 -16
- package/esm/tsconfig-build-esm.tsbuildinfo +1 -1
- package/package.json +1 -1
- package/types/rules/format-rules/is-time.d.ts +9 -0
- package/types/rules/index.d.ts +4 -1
- package/types/rules/logical-rules/is-equal.d.ts +11 -0
- package/types/rules/type-rules/is-date.d.ts +2 -2
- package/types/rules/utility-rules/all-of.d.ts +6 -0
- package/types/rules/utility-rules/one-of.d.ts +7 -0
- package/types/rules/utility-rules/pipe.d.ts +0 -5
- package/cjs/rules/utility-rules/union.js +0 -35
- package/esm/rules/utility-rules/union.js +0 -32
- package/types/rules/utility-rules/union.d.ts +0 -5
package/CHANGELOG.md
CHANGED
|
@@ -1,6 +1,32 @@
|
|
|
1
1
|
## Changelog
|
|
2
2
|
|
|
3
|
-
### [v5.
|
|
3
|
+
### [v5.15.1](https://github.com/panates/valgen/compare/v5.15.0...v5.15.1) -
|
|
4
|
+
|
|
5
|
+
#### 🚀 New Features
|
|
6
|
+
|
|
7
|
+
- feat: Added isTime rule @Eray Hanoğlu
|
|
8
|
+
|
|
9
|
+
#### 🪲 Fixes
|
|
10
|
+
|
|
11
|
+
- fix: Error message fix @Eray Hanoğlu
|
|
12
|
+
|
|
13
|
+
#### 🛠 Refactoring and Updates
|
|
14
|
+
|
|
15
|
+
- refactor: Removed path filter @Eray Hanoğlu
|
|
16
|
+
|
|
17
|
+
### [v5.15.0](https://github.com/panates/valgen/compare/v5.14.1...v5.15.0) - 24 April 2025
|
|
18
|
+
|
|
19
|
+
#### 🚀 New Features
|
|
20
|
+
|
|
21
|
+
- feat: Added discriminator validation to oneOf rule @Eray Hanoğlu
|
|
22
|
+
- feat: Added isEqual, isNotEqual rules @Eray Hanoğlu
|
|
23
|
+
|
|
24
|
+
#### 🛠 Refactoring and Updates
|
|
25
|
+
|
|
26
|
+
- refactor: Fixes and improvements @Eray Hanoğlu
|
|
27
|
+
- refactor: Removed union rule. Use oneOf rule instead @Eray Hanoğlu
|
|
28
|
+
|
|
29
|
+
### [v5.14.1](https://github.com/panates/valgen/compare/v5.14.0...v5.14.1) - 21 April 2025
|
|
4
30
|
|
|
5
31
|
#### 🪲 Fixes
|
|
6
32
|
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.isTime = isTime;
|
|
4
|
+
const tslib_1 = require("tslib");
|
|
5
|
+
const validator_1 = tslib_1.__importDefault(require("@browsery/validator"));
|
|
6
|
+
const index_js_1 = require("../../core/index.js");
|
|
7
|
+
/**
|
|
8
|
+
* Validates if value is a time formatted string
|
|
9
|
+
* @validator isTime
|
|
10
|
+
*/
|
|
11
|
+
function isTime(options) {
|
|
12
|
+
return (0, index_js_1.validator)('isURL', (input, context, _this) => {
|
|
13
|
+
if (input != null &&
|
|
14
|
+
typeof input === 'string' &&
|
|
15
|
+
validator_1.default.isTime(input, options)) {
|
|
16
|
+
return input;
|
|
17
|
+
}
|
|
18
|
+
context.fail(_this, `Value must be a valid Time`, input);
|
|
19
|
+
}, options);
|
|
20
|
+
}
|
package/cjs/rules/index.js
CHANGED
|
@@ -24,12 +24,14 @@ tslib_1.__exportStar(require("./format-rules/is-mobile-phone.js"), exports);
|
|
|
24
24
|
tslib_1.__exportStar(require("./format-rules/is-object-id.js"), exports);
|
|
25
25
|
tslib_1.__exportStar(require("./format-rules/is-passport-number.js"), exports);
|
|
26
26
|
tslib_1.__exportStar(require("./format-rules/is-port.js"), exports);
|
|
27
|
+
tslib_1.__exportStar(require("./format-rules/is-time.js"), exports);
|
|
27
28
|
tslib_1.__exportStar(require("./format-rules/is-url.js"), exports);
|
|
28
29
|
tslib_1.__exportStar(require("./format-rules/is-uuid.js"), exports);
|
|
29
30
|
tslib_1.__exportStar(require("./format-rules/is-vat-number.js"), exports);
|
|
30
31
|
tslib_1.__exportStar(require("./format-rules/matches.js"), exports);
|
|
31
32
|
tslib_1.__exportStar(require("./logical-rules/is-defined.js"), exports);
|
|
32
33
|
tslib_1.__exportStar(require("./logical-rules/is-empty.js"), exports);
|
|
34
|
+
tslib_1.__exportStar(require("./logical-rules/is-equal.js"), exports);
|
|
33
35
|
tslib_1.__exportStar(require("./logical-rules/range.js"), exports);
|
|
34
36
|
tslib_1.__exportStar(require("./type-rules/is-any.js"), exports);
|
|
35
37
|
tslib_1.__exportStar(require("./type-rules/is-array.js"), exports);
|
|
@@ -45,9 +47,10 @@ tslib_1.__exportStar(require("./type-rules/is-record.js"), exports);
|
|
|
45
47
|
tslib_1.__exportStar(require("./type-rules/is-string.js"), exports);
|
|
46
48
|
tslib_1.__exportStar(require("./type-rules/is-tuple.js"), exports);
|
|
47
49
|
tslib_1.__exportStar(require("./type-rules/is-undefined.js"), exports);
|
|
50
|
+
tslib_1.__exportStar(require("./utility-rules/all-of.js"), exports);
|
|
48
51
|
tslib_1.__exportStar(require("./utility-rules/exists.js"), exports);
|
|
49
52
|
tslib_1.__exportStar(require("./utility-rules/get-length.js"), exports);
|
|
53
|
+
tslib_1.__exportStar(require("./utility-rules/one-of.js"), exports);
|
|
50
54
|
tslib_1.__exportStar(require("./utility-rules/optional.js"), exports);
|
|
51
55
|
tslib_1.__exportStar(require("./utility-rules/pipe.js"), exports);
|
|
52
56
|
tslib_1.__exportStar(require("./utility-rules/required.js"), exports);
|
|
53
|
-
tslib_1.__exportStar(require("./utility-rules/union.js"), exports);
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.isEqual = isEqual;
|
|
4
|
+
exports.isNotEqual = isNotEqual;
|
|
5
|
+
const index_js_1 = require("../../core/index.js");
|
|
6
|
+
/**
|
|
7
|
+
*
|
|
8
|
+
* @validator isEqual
|
|
9
|
+
*/
|
|
10
|
+
function isEqual(compare, options) {
|
|
11
|
+
return (0, index_js_1.validator)('isEqual', (input, context, _this) => {
|
|
12
|
+
if (input == null)
|
|
13
|
+
return input;
|
|
14
|
+
if (input !== compare)
|
|
15
|
+
context.fail(_this, `Value must be equal to "${compare}"`, input);
|
|
16
|
+
return input;
|
|
17
|
+
}, options);
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
*
|
|
21
|
+
* @validator isNotEqual
|
|
22
|
+
*/
|
|
23
|
+
function isNotEqual(compare, options) {
|
|
24
|
+
return (0, index_js_1.validator)('isNotEqual', (input, context, _this) => {
|
|
25
|
+
if (input == null)
|
|
26
|
+
return input;
|
|
27
|
+
if (input === compare) {
|
|
28
|
+
context.fail(_this, `Value must not be equal to "${compare}"`, input);
|
|
29
|
+
}
|
|
30
|
+
return input;
|
|
31
|
+
}, options);
|
|
32
|
+
}
|
|
@@ -7,6 +7,7 @@ exports.isGte = isGte;
|
|
|
7
7
|
exports.isLt = isLt;
|
|
8
8
|
exports.isLte = isLte;
|
|
9
9
|
const index_js_1 = require("../../core/index.js");
|
|
10
|
+
const all_of_js_1 = require("../utility-rules/all-of.js");
|
|
10
11
|
const get_length_js_1 = require("../utility-rules/get-length.js");
|
|
11
12
|
const pipe_js_1 = require("../utility-rules/pipe.js");
|
|
12
13
|
/**
|
|
@@ -131,7 +132,7 @@ function isLte(maxValue, options) {
|
|
|
131
132
|
* Checks the length is at least "minValue"
|
|
132
133
|
* @validator lengthMin
|
|
133
134
|
*/
|
|
134
|
-
const lengthMin = (minValue) => (0,
|
|
135
|
+
const lengthMin = (minValue) => (0, all_of_js_1.allOf)([
|
|
135
136
|
(0, pipe_js_1.pipe)([
|
|
136
137
|
(0, get_length_js_1.getLength)(),
|
|
137
138
|
isGte(minValue, {
|
|
@@ -144,7 +145,7 @@ exports.lengthMin = lengthMin;
|
|
|
144
145
|
* Checks if the length is at most "maxValue"
|
|
145
146
|
* @validator lengthMax
|
|
146
147
|
*/
|
|
147
|
-
const lengthMax = (maxValue) => (0,
|
|
148
|
+
const lengthMax = (maxValue) => (0, all_of_js_1.allOf)([
|
|
148
149
|
(0, pipe_js_1.pipe)([
|
|
149
150
|
(0, get_length_js_1.getLength)(),
|
|
150
151
|
isLte(maxValue, {
|
|
@@ -35,7 +35,7 @@ function isArray(itemValidator, options) {
|
|
|
35
35
|
itemContext.index = i;
|
|
36
36
|
v = itemValidator(v, {
|
|
37
37
|
onFail(issue) {
|
|
38
|
-
return `Item at index [${i}] is not
|
|
38
|
+
return `Item at index [${i}] is not valid. ` + issue.message;
|
|
39
39
|
},
|
|
40
40
|
}, itemContext);
|
|
41
41
|
out.push(v);
|
|
@@ -7,8 +7,8 @@ const index_js_1 = require("../../core/index.js");
|
|
|
7
7
|
// noinspection RegExpUnnecessaryNonCapturingGroup
|
|
8
8
|
const DATE_PATTERN = /^(\d{4})(?:-(0[0-9]|1[0-2]))?(?:-([0-2][0-9]|3[0-1]))?(?:[T ](([0-1][0-9]|2[0-4]):([0-5][0-9])(?::([0-5][0-9]))?(?:\.(\d{0,3}))?)?((?:[+-](0[0-9]|1[0-2])(?::(\d{2}))?)|Z)?)?$/;
|
|
9
9
|
/**
|
|
10
|
-
* Validates if value is instance of "Date".
|
|
11
|
-
* Converts input value to Date if coerce option is set to 'true'.
|
|
10
|
+
* Validates if value is an instance of "Date".
|
|
11
|
+
* Converts input value to Date if a coerce option is set to 'true'.
|
|
12
12
|
* @validator isDate
|
|
13
13
|
*/
|
|
14
14
|
function isDate(options) {
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.allOf = allOf;
|
|
4
|
+
const index_js_1 = require("../../core/index.js");
|
|
5
|
+
/**
|
|
6
|
+
* Test given value against to all codecs and returns original input
|
|
7
|
+
* @validator allOf
|
|
8
|
+
*/
|
|
9
|
+
function allOf(rules) {
|
|
10
|
+
return (0, index_js_1.validator)('allOf', (input, context) => {
|
|
11
|
+
let i;
|
|
12
|
+
let c;
|
|
13
|
+
const l = rules.length;
|
|
14
|
+
for (i = 0; i < l; i++) {
|
|
15
|
+
c = rules[i];
|
|
16
|
+
c(input, context);
|
|
17
|
+
}
|
|
18
|
+
return input;
|
|
19
|
+
});
|
|
20
|
+
}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.oneOf = oneOf;
|
|
4
|
+
const index_js_1 = require("../../core/index.js");
|
|
5
|
+
/**
|
|
6
|
+
*
|
|
7
|
+
*/
|
|
8
|
+
function oneOf(rules) {
|
|
9
|
+
const l = rules.length;
|
|
10
|
+
return (0, index_js_1.validator)('union', (input, context, _this) => {
|
|
11
|
+
let i;
|
|
12
|
+
let c;
|
|
13
|
+
let discriminator;
|
|
14
|
+
let v;
|
|
15
|
+
let passed = false;
|
|
16
|
+
// Mock fail method to prevent errors
|
|
17
|
+
context.fail = () => (passed = false);
|
|
18
|
+
for (i = 0; i < l; i++) {
|
|
19
|
+
passed = true;
|
|
20
|
+
if (Array.isArray(rules[i])) {
|
|
21
|
+
c = rules[i][0];
|
|
22
|
+
discriminator = rules[i][1];
|
|
23
|
+
if (!(input &&
|
|
24
|
+
typeof input === 'object' &&
|
|
25
|
+
typeof discriminator === 'object')) {
|
|
26
|
+
continue;
|
|
27
|
+
}
|
|
28
|
+
try {
|
|
29
|
+
for (const k of Object.keys(discriminator)) {
|
|
30
|
+
discriminator[k](input[k], context);
|
|
31
|
+
if (!passed)
|
|
32
|
+
break;
|
|
33
|
+
}
|
|
34
|
+
if (!passed)
|
|
35
|
+
continue;
|
|
36
|
+
}
|
|
37
|
+
catch {
|
|
38
|
+
continue;
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
else
|
|
42
|
+
c = rules[i];
|
|
43
|
+
if (passed)
|
|
44
|
+
try {
|
|
45
|
+
v = c(input, context);
|
|
46
|
+
if (passed)
|
|
47
|
+
break;
|
|
48
|
+
}
|
|
49
|
+
catch {
|
|
50
|
+
//
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
// Restore fail method
|
|
54
|
+
delete context.fail;
|
|
55
|
+
if (passed)
|
|
56
|
+
return v;
|
|
57
|
+
context.fail(_this, `Value didn't match one of required rules`, input);
|
|
58
|
+
});
|
|
59
|
+
}
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.pipe = pipe;
|
|
4
|
-
exports.allOf = allOf;
|
|
5
4
|
const index_js_1 = require("../../core/index.js");
|
|
6
5
|
/**
|
|
7
6
|
*
|
|
@@ -27,19 +26,3 @@ function pipe(rules, options) {
|
|
|
27
26
|
return returnValue;
|
|
28
27
|
}, options);
|
|
29
28
|
}
|
|
30
|
-
/**
|
|
31
|
-
* Test given value against to all codecs and returns original input
|
|
32
|
-
* @validator allOf
|
|
33
|
-
*/
|
|
34
|
-
function allOf(rules) {
|
|
35
|
-
return (0, index_js_1.validator)('allOf', (input, context) => {
|
|
36
|
-
let i;
|
|
37
|
-
let c;
|
|
38
|
-
const l = rules.length;
|
|
39
|
-
for (i = 0; i < l; i++) {
|
|
40
|
-
c = rules[i];
|
|
41
|
-
c(input, context);
|
|
42
|
-
}
|
|
43
|
-
return input;
|
|
44
|
-
});
|
|
45
|
-
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"root":["../../src/constants.ts","../../src/factories.ts","../../src/index.ts","../../src/core/constants.ts","../../src/core/context.ts","../../src/core/index.ts","../../src/core/types.ts","../../src/core/utilities.ts","../../src/core/validation-error.ts","../../src/core/validator.ts","../../src/helpers/object.utils.ts","../../src/helpers/omit-undefined.ts","../../src/helpers/string.utils.ts","../../src/rules/index.ts","../../src/rules/format-rules/is-alpha.ts","../../src/rules/format-rules/is-ascii.ts","../../src/rules/format-rules/is-base64.ts","../../src/rules/format-rules/is-btc-address.ts","../../src/rules/format-rules/is-credit-card.ts","../../src/rules/format-rules/is-decimal.ts","../../src/rules/format-rules/is-ean.ts","../../src/rules/format-rules/is-email.ts","../../src/rules/format-rules/is-eth-address.ts","../../src/rules/format-rules/is-fqdn.ts","../../src/rules/format-rules/is-hash.ts","../../src/rules/format-rules/is-hex-color.ts","../../src/rules/format-rules/is-hex.ts","../../src/rules/format-rules/is-iban.ts","../../src/rules/format-rules/is-ip.ts","../../src/rules/format-rules/is-issn.ts","../../src/rules/format-rules/is-jwt.ts","../../src/rules/format-rules/is-lowercase.ts","../../src/rules/format-rules/is-mac-address.ts","../../src/rules/format-rules/is-mobile-phone.ts","../../src/rules/format-rules/is-object-id.ts","../../src/rules/format-rules/is-passport-number.ts","../../src/rules/format-rules/is-port.ts","../../src/rules/format-rules/is-url.ts","../../src/rules/format-rules/is-uuid.ts","../../src/rules/format-rules/is-vat-number.ts","../../src/rules/format-rules/matches.ts","../../src/rules/logical-rules/is-defined.ts","../../src/rules/logical-rules/is-empty.ts","../../src/rules/logical-rules/range.ts","../../src/rules/type-rules/is-any.ts","../../src/rules/type-rules/is-array.ts","../../src/rules/type-rules/is-bigint.ts","../../src/rules/type-rules/is-boolean.ts","../../src/rules/type-rules/is-date.ts","../../src/rules/type-rules/is-enum.ts","../../src/rules/type-rules/is-integer.ts","../../src/rules/type-rules/is-null.ts","../../src/rules/type-rules/is-number.ts","../../src/rules/type-rules/is-object.ts","../../src/rules/type-rules/is-record.ts","../../src/rules/type-rules/is-string.ts","../../src/rules/type-rules/is-tuple.ts","../../src/rules/type-rules/is-undefined.ts","../../src/rules/utility-rules/exists.ts","../../src/rules/utility-rules/get-length.ts","../../src/rules/utility-rules/
|
|
1
|
+
{"root":["../../src/constants.ts","../../src/factories.ts","../../src/index.ts","../../src/core/constants.ts","../../src/core/context.ts","../../src/core/index.ts","../../src/core/types.ts","../../src/core/utilities.ts","../../src/core/validation-error.ts","../../src/core/validator.ts","../../src/helpers/object.utils.ts","../../src/helpers/omit-undefined.ts","../../src/helpers/string.utils.ts","../../src/rules/index.ts","../../src/rules/format-rules/is-alpha.ts","../../src/rules/format-rules/is-ascii.ts","../../src/rules/format-rules/is-base64.ts","../../src/rules/format-rules/is-btc-address.ts","../../src/rules/format-rules/is-credit-card.ts","../../src/rules/format-rules/is-decimal.ts","../../src/rules/format-rules/is-ean.ts","../../src/rules/format-rules/is-email.ts","../../src/rules/format-rules/is-eth-address.ts","../../src/rules/format-rules/is-fqdn.ts","../../src/rules/format-rules/is-hash.ts","../../src/rules/format-rules/is-hex-color.ts","../../src/rules/format-rules/is-hex.ts","../../src/rules/format-rules/is-iban.ts","../../src/rules/format-rules/is-ip.ts","../../src/rules/format-rules/is-issn.ts","../../src/rules/format-rules/is-jwt.ts","../../src/rules/format-rules/is-lowercase.ts","../../src/rules/format-rules/is-mac-address.ts","../../src/rules/format-rules/is-mobile-phone.ts","../../src/rules/format-rules/is-object-id.ts","../../src/rules/format-rules/is-passport-number.ts","../../src/rules/format-rules/is-port.ts","../../src/rules/format-rules/is-time.ts","../../src/rules/format-rules/is-url.ts","../../src/rules/format-rules/is-uuid.ts","../../src/rules/format-rules/is-vat-number.ts","../../src/rules/format-rules/matches.ts","../../src/rules/logical-rules/is-defined.ts","../../src/rules/logical-rules/is-empty.ts","../../src/rules/logical-rules/is-equal.ts","../../src/rules/logical-rules/range.ts","../../src/rules/type-rules/is-any.ts","../../src/rules/type-rules/is-array.ts","../../src/rules/type-rules/is-bigint.ts","../../src/rules/type-rules/is-boolean.ts","../../src/rules/type-rules/is-date.ts","../../src/rules/type-rules/is-enum.ts","../../src/rules/type-rules/is-integer.ts","../../src/rules/type-rules/is-null.ts","../../src/rules/type-rules/is-number.ts","../../src/rules/type-rules/is-object.ts","../../src/rules/type-rules/is-record.ts","../../src/rules/type-rules/is-string.ts","../../src/rules/type-rules/is-tuple.ts","../../src/rules/type-rules/is-undefined.ts","../../src/rules/utility-rules/all-of.ts","../../src/rules/utility-rules/exists.ts","../../src/rules/utility-rules/get-length.ts","../../src/rules/utility-rules/one-of.ts","../../src/rules/utility-rules/optional.ts","../../src/rules/utility-rules/pipe.ts","../../src/rules/utility-rules/required.ts"],"version":"5.8.3"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import validatorJS from '@browsery/validator';
|
|
2
|
+
import { validator, } from '../../core/index.js';
|
|
3
|
+
/**
|
|
4
|
+
* Validates if value is a time formatted string
|
|
5
|
+
* @validator isTime
|
|
6
|
+
*/
|
|
7
|
+
export function isTime(options) {
|
|
8
|
+
return validator('isURL', (input, context, _this) => {
|
|
9
|
+
if (input != null &&
|
|
10
|
+
typeof input === 'string' &&
|
|
11
|
+
validatorJS.isTime(input, options)) {
|
|
12
|
+
return input;
|
|
13
|
+
}
|
|
14
|
+
context.fail(_this, `Value must be a valid Time`, input);
|
|
15
|
+
}, options);
|
|
16
|
+
}
|
package/esm/rules/index.js
CHANGED
|
@@ -21,12 +21,14 @@ export * from './format-rules/is-mobile-phone.js';
|
|
|
21
21
|
export * from './format-rules/is-object-id.js';
|
|
22
22
|
export * from './format-rules/is-passport-number.js';
|
|
23
23
|
export * from './format-rules/is-port.js';
|
|
24
|
+
export * from './format-rules/is-time.js';
|
|
24
25
|
export * from './format-rules/is-url.js';
|
|
25
26
|
export * from './format-rules/is-uuid.js';
|
|
26
27
|
export * from './format-rules/is-vat-number.js';
|
|
27
28
|
export * from './format-rules/matches.js';
|
|
28
29
|
export * from './logical-rules/is-defined.js';
|
|
29
30
|
export * from './logical-rules/is-empty.js';
|
|
31
|
+
export * from './logical-rules/is-equal.js';
|
|
30
32
|
export * from './logical-rules/range.js';
|
|
31
33
|
export * from './type-rules/is-any.js';
|
|
32
34
|
export * from './type-rules/is-array.js';
|
|
@@ -42,9 +44,10 @@ export * from './type-rules/is-record.js';
|
|
|
42
44
|
export * from './type-rules/is-string.js';
|
|
43
45
|
export * from './type-rules/is-tuple.js';
|
|
44
46
|
export * from './type-rules/is-undefined.js';
|
|
47
|
+
export * from './utility-rules/all-of.js';
|
|
45
48
|
export * from './utility-rules/exists.js';
|
|
46
49
|
export * from './utility-rules/get-length.js';
|
|
50
|
+
export * from './utility-rules/one-of.js';
|
|
47
51
|
export * from './utility-rules/optional.js';
|
|
48
52
|
export * from './utility-rules/pipe.js';
|
|
49
53
|
export * from './utility-rules/required.js';
|
|
50
|
-
export * from './utility-rules/union.js';
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { validator, } from '../../core/index.js';
|
|
2
|
+
/**
|
|
3
|
+
*
|
|
4
|
+
* @validator isEqual
|
|
5
|
+
*/
|
|
6
|
+
export function isEqual(compare, options) {
|
|
7
|
+
return validator('isEqual', (input, context, _this) => {
|
|
8
|
+
if (input == null)
|
|
9
|
+
return input;
|
|
10
|
+
if (input !== compare)
|
|
11
|
+
context.fail(_this, `Value must be equal to "${compare}"`, input);
|
|
12
|
+
return input;
|
|
13
|
+
}, options);
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
*
|
|
17
|
+
* @validator isNotEqual
|
|
18
|
+
*/
|
|
19
|
+
export function isNotEqual(compare, options) {
|
|
20
|
+
return validator('isNotEqual', (input, context, _this) => {
|
|
21
|
+
if (input == null)
|
|
22
|
+
return input;
|
|
23
|
+
if (input === compare) {
|
|
24
|
+
context.fail(_this, `Value must not be equal to "${compare}"`, input);
|
|
25
|
+
}
|
|
26
|
+
return input;
|
|
27
|
+
}, options);
|
|
28
|
+
}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { validator, } from '../../core/index.js';
|
|
2
|
+
import { allOf } from '../utility-rules/all-of.js';
|
|
2
3
|
import { getLength } from '../utility-rules/get-length.js';
|
|
3
|
-
import {
|
|
4
|
+
import { pipe } from '../utility-rules/pipe.js';
|
|
4
5
|
/**
|
|
5
6
|
* Checks if value is between minValue and maxValue
|
|
6
7
|
* @validator range
|
|
@@ -32,7 +32,7 @@ export function isArray(itemValidator, options) {
|
|
|
32
32
|
itemContext.index = i;
|
|
33
33
|
v = itemValidator(v, {
|
|
34
34
|
onFail(issue) {
|
|
35
|
-
return `Item at index [${i}] is not
|
|
35
|
+
return `Item at index [${i}] is not valid. ` + issue.message;
|
|
36
36
|
},
|
|
37
37
|
}, itemContext);
|
|
38
38
|
out.push(v);
|
|
@@ -3,8 +3,8 @@ import { validator, } from '../../core/index.js';
|
|
|
3
3
|
// noinspection RegExpUnnecessaryNonCapturingGroup
|
|
4
4
|
const DATE_PATTERN = /^(\d{4})(?:-(0[0-9]|1[0-2]))?(?:-([0-2][0-9]|3[0-1]))?(?:[T ](([0-1][0-9]|2[0-4]):([0-5][0-9])(?::([0-5][0-9]))?(?:\.(\d{0,3}))?)?((?:[+-](0[0-9]|1[0-2])(?::(\d{2}))?)|Z)?)?$/;
|
|
5
5
|
/**
|
|
6
|
-
* Validates if value is instance of "Date".
|
|
7
|
-
* Converts input value to Date if coerce option is set to 'true'.
|
|
6
|
+
* Validates if value is an instance of "Date".
|
|
7
|
+
* Converts input value to Date if a coerce option is set to 'true'.
|
|
8
8
|
* @validator isDate
|
|
9
9
|
*/
|
|
10
10
|
export function isDate(options) {
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { validator } from '../../core/index.js';
|
|
2
|
+
/**
|
|
3
|
+
* Test given value against to all codecs and returns original input
|
|
4
|
+
* @validator allOf
|
|
5
|
+
*/
|
|
6
|
+
export function allOf(rules) {
|
|
7
|
+
return validator('allOf', (input, context) => {
|
|
8
|
+
let i;
|
|
9
|
+
let c;
|
|
10
|
+
const l = rules.length;
|
|
11
|
+
for (i = 0; i < l; i++) {
|
|
12
|
+
c = rules[i];
|
|
13
|
+
c(input, context);
|
|
14
|
+
}
|
|
15
|
+
return input;
|
|
16
|
+
});
|
|
17
|
+
}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import { validator } from '../../core/index.js';
|
|
2
|
+
/**
|
|
3
|
+
*
|
|
4
|
+
*/
|
|
5
|
+
export function oneOf(rules) {
|
|
6
|
+
const l = rules.length;
|
|
7
|
+
return validator('union', (input, context, _this) => {
|
|
8
|
+
let i;
|
|
9
|
+
let c;
|
|
10
|
+
let discriminator;
|
|
11
|
+
let v;
|
|
12
|
+
let passed = false;
|
|
13
|
+
// Mock fail method to prevent errors
|
|
14
|
+
context.fail = () => (passed = false);
|
|
15
|
+
for (i = 0; i < l; i++) {
|
|
16
|
+
passed = true;
|
|
17
|
+
if (Array.isArray(rules[i])) {
|
|
18
|
+
c = rules[i][0];
|
|
19
|
+
discriminator = rules[i][1];
|
|
20
|
+
if (!(input &&
|
|
21
|
+
typeof input === 'object' &&
|
|
22
|
+
typeof discriminator === 'object')) {
|
|
23
|
+
continue;
|
|
24
|
+
}
|
|
25
|
+
try {
|
|
26
|
+
for (const k of Object.keys(discriminator)) {
|
|
27
|
+
discriminator[k](input[k], context);
|
|
28
|
+
if (!passed)
|
|
29
|
+
break;
|
|
30
|
+
}
|
|
31
|
+
if (!passed)
|
|
32
|
+
continue;
|
|
33
|
+
}
|
|
34
|
+
catch {
|
|
35
|
+
continue;
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
else
|
|
39
|
+
c = rules[i];
|
|
40
|
+
if (passed)
|
|
41
|
+
try {
|
|
42
|
+
v = c(input, context);
|
|
43
|
+
if (passed)
|
|
44
|
+
break;
|
|
45
|
+
}
|
|
46
|
+
catch {
|
|
47
|
+
//
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
// Restore fail method
|
|
51
|
+
delete context.fail;
|
|
52
|
+
if (passed)
|
|
53
|
+
return v;
|
|
54
|
+
context.fail(_this, `Value didn't match one of required rules`, input);
|
|
55
|
+
});
|
|
56
|
+
}
|
|
@@ -23,19 +23,3 @@ export function pipe(rules, options) {
|
|
|
23
23
|
return returnValue;
|
|
24
24
|
}, options);
|
|
25
25
|
}
|
|
26
|
-
/**
|
|
27
|
-
* Test given value against to all codecs and returns original input
|
|
28
|
-
* @validator allOf
|
|
29
|
-
*/
|
|
30
|
-
export function allOf(rules) {
|
|
31
|
-
return validator('allOf', (input, context) => {
|
|
32
|
-
let i;
|
|
33
|
-
let c;
|
|
34
|
-
const l = rules.length;
|
|
35
|
-
for (i = 0; i < l; i++) {
|
|
36
|
-
c = rules[i];
|
|
37
|
-
c(input, context);
|
|
38
|
-
}
|
|
39
|
-
return input;
|
|
40
|
-
});
|
|
41
|
-
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"root":["../../src/constants.ts","../../src/factories.ts","../../src/index.ts","../../src/core/constants.ts","../../src/core/context.ts","../../src/core/index.ts","../../src/core/types.ts","../../src/core/utilities.ts","../../src/core/validation-error.ts","../../src/core/validator.ts","../../src/helpers/object.utils.ts","../../src/helpers/omit-undefined.ts","../../src/helpers/string.utils.ts","../../src/rules/index.ts","../../src/rules/format-rules/is-alpha.ts","../../src/rules/format-rules/is-ascii.ts","../../src/rules/format-rules/is-base64.ts","../../src/rules/format-rules/is-btc-address.ts","../../src/rules/format-rules/is-credit-card.ts","../../src/rules/format-rules/is-decimal.ts","../../src/rules/format-rules/is-ean.ts","../../src/rules/format-rules/is-email.ts","../../src/rules/format-rules/is-eth-address.ts","../../src/rules/format-rules/is-fqdn.ts","../../src/rules/format-rules/is-hash.ts","../../src/rules/format-rules/is-hex-color.ts","../../src/rules/format-rules/is-hex.ts","../../src/rules/format-rules/is-iban.ts","../../src/rules/format-rules/is-ip.ts","../../src/rules/format-rules/is-issn.ts","../../src/rules/format-rules/is-jwt.ts","../../src/rules/format-rules/is-lowercase.ts","../../src/rules/format-rules/is-mac-address.ts","../../src/rules/format-rules/is-mobile-phone.ts","../../src/rules/format-rules/is-object-id.ts","../../src/rules/format-rules/is-passport-number.ts","../../src/rules/format-rules/is-port.ts","../../src/rules/format-rules/is-url.ts","../../src/rules/format-rules/is-uuid.ts","../../src/rules/format-rules/is-vat-number.ts","../../src/rules/format-rules/matches.ts","../../src/rules/logical-rules/is-defined.ts","../../src/rules/logical-rules/is-empty.ts","../../src/rules/logical-rules/range.ts","../../src/rules/type-rules/is-any.ts","../../src/rules/type-rules/is-array.ts","../../src/rules/type-rules/is-bigint.ts","../../src/rules/type-rules/is-boolean.ts","../../src/rules/type-rules/is-date.ts","../../src/rules/type-rules/is-enum.ts","../../src/rules/type-rules/is-integer.ts","../../src/rules/type-rules/is-null.ts","../../src/rules/type-rules/is-number.ts","../../src/rules/type-rules/is-object.ts","../../src/rules/type-rules/is-record.ts","../../src/rules/type-rules/is-string.ts","../../src/rules/type-rules/is-tuple.ts","../../src/rules/type-rules/is-undefined.ts","../../src/rules/utility-rules/exists.ts","../../src/rules/utility-rules/get-length.ts","../../src/rules/utility-rules/
|
|
1
|
+
{"root":["../../src/constants.ts","../../src/factories.ts","../../src/index.ts","../../src/core/constants.ts","../../src/core/context.ts","../../src/core/index.ts","../../src/core/types.ts","../../src/core/utilities.ts","../../src/core/validation-error.ts","../../src/core/validator.ts","../../src/helpers/object.utils.ts","../../src/helpers/omit-undefined.ts","../../src/helpers/string.utils.ts","../../src/rules/index.ts","../../src/rules/format-rules/is-alpha.ts","../../src/rules/format-rules/is-ascii.ts","../../src/rules/format-rules/is-base64.ts","../../src/rules/format-rules/is-btc-address.ts","../../src/rules/format-rules/is-credit-card.ts","../../src/rules/format-rules/is-decimal.ts","../../src/rules/format-rules/is-ean.ts","../../src/rules/format-rules/is-email.ts","../../src/rules/format-rules/is-eth-address.ts","../../src/rules/format-rules/is-fqdn.ts","../../src/rules/format-rules/is-hash.ts","../../src/rules/format-rules/is-hex-color.ts","../../src/rules/format-rules/is-hex.ts","../../src/rules/format-rules/is-iban.ts","../../src/rules/format-rules/is-ip.ts","../../src/rules/format-rules/is-issn.ts","../../src/rules/format-rules/is-jwt.ts","../../src/rules/format-rules/is-lowercase.ts","../../src/rules/format-rules/is-mac-address.ts","../../src/rules/format-rules/is-mobile-phone.ts","../../src/rules/format-rules/is-object-id.ts","../../src/rules/format-rules/is-passport-number.ts","../../src/rules/format-rules/is-port.ts","../../src/rules/format-rules/is-time.ts","../../src/rules/format-rules/is-url.ts","../../src/rules/format-rules/is-uuid.ts","../../src/rules/format-rules/is-vat-number.ts","../../src/rules/format-rules/matches.ts","../../src/rules/logical-rules/is-defined.ts","../../src/rules/logical-rules/is-empty.ts","../../src/rules/logical-rules/is-equal.ts","../../src/rules/logical-rules/range.ts","../../src/rules/type-rules/is-any.ts","../../src/rules/type-rules/is-array.ts","../../src/rules/type-rules/is-bigint.ts","../../src/rules/type-rules/is-boolean.ts","../../src/rules/type-rules/is-date.ts","../../src/rules/type-rules/is-enum.ts","../../src/rules/type-rules/is-integer.ts","../../src/rules/type-rules/is-null.ts","../../src/rules/type-rules/is-number.ts","../../src/rules/type-rules/is-object.ts","../../src/rules/type-rules/is-record.ts","../../src/rules/type-rules/is-string.ts","../../src/rules/type-rules/is-tuple.ts","../../src/rules/type-rules/is-undefined.ts","../../src/rules/utility-rules/all-of.ts","../../src/rules/utility-rules/exists.ts","../../src/rules/utility-rules/get-length.ts","../../src/rules/utility-rules/one-of.ts","../../src/rules/utility-rules/optional.ts","../../src/rules/utility-rules/pipe.ts","../../src/rules/utility-rules/required.ts"],"version":"5.8.3"}
|
package/package.json
CHANGED
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import validatorJS from '@browsery/validator';
|
|
2
|
+
import { type ValidationOptions } from '../../core/index.js';
|
|
3
|
+
export interface IsTimeOptions extends ValidationOptions, validatorJS.IsTimeOptions {
|
|
4
|
+
}
|
|
5
|
+
/**
|
|
6
|
+
* Validates if value is a time formatted string
|
|
7
|
+
* @validator isTime
|
|
8
|
+
*/
|
|
9
|
+
export declare function isTime(options?: IsTimeOptions): import("../../core/validator.js").Validator<string, string, import("../../core/types.js").ExecutionOptions>;
|
package/types/rules/index.d.ts
CHANGED
|
@@ -21,12 +21,14 @@ export * from './format-rules/is-mobile-phone.js';
|
|
|
21
21
|
export * from './format-rules/is-object-id.js';
|
|
22
22
|
export * from './format-rules/is-passport-number.js';
|
|
23
23
|
export * from './format-rules/is-port.js';
|
|
24
|
+
export * from './format-rules/is-time.js';
|
|
24
25
|
export * from './format-rules/is-url.js';
|
|
25
26
|
export * from './format-rules/is-uuid.js';
|
|
26
27
|
export * from './format-rules/is-vat-number.js';
|
|
27
28
|
export * from './format-rules/matches.js';
|
|
28
29
|
export * from './logical-rules/is-defined.js';
|
|
29
30
|
export * from './logical-rules/is-empty.js';
|
|
31
|
+
export * from './logical-rules/is-equal.js';
|
|
30
32
|
export * from './logical-rules/range.js';
|
|
31
33
|
export * from './type-rules/is-any.js';
|
|
32
34
|
export * from './type-rules/is-array.js';
|
|
@@ -42,9 +44,10 @@ export * from './type-rules/is-record.js';
|
|
|
42
44
|
export * from './type-rules/is-string.js';
|
|
43
45
|
export * from './type-rules/is-tuple.js';
|
|
44
46
|
export * from './type-rules/is-undefined.js';
|
|
47
|
+
export * from './utility-rules/all-of.js';
|
|
45
48
|
export * from './utility-rules/exists.js';
|
|
46
49
|
export * from './utility-rules/get-length.js';
|
|
50
|
+
export * from './utility-rules/one-of.js';
|
|
47
51
|
export * from './utility-rules/optional.js';
|
|
48
52
|
export * from './utility-rules/pipe.js';
|
|
49
53
|
export * from './utility-rules/required.js';
|
|
50
|
-
export * from './utility-rules/union.js';
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { type ValidationOptions } from '../../core/index.js';
|
|
2
|
+
/**
|
|
3
|
+
*
|
|
4
|
+
* @validator isEqual
|
|
5
|
+
*/
|
|
6
|
+
export declare function isEqual<T>(compare: T, options?: ValidationOptions): import("../../core/validator.js").Validator<any, any, import("../../core/types.js").ExecutionOptions>;
|
|
7
|
+
/**
|
|
8
|
+
*
|
|
9
|
+
* @validator isNotEqual
|
|
10
|
+
*/
|
|
11
|
+
export declare function isNotEqual(compare: any, options?: ValidationOptions): import("../../core/validator.js").Validator<any, any, import("../../core/types.js").ExecutionOptions>;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { type ValidationOptions } from '../../core/index.js';
|
|
2
2
|
/**
|
|
3
|
-
* Validates if value is instance of "Date".
|
|
4
|
-
* Converts input value to Date if coerce option is set to 'true'.
|
|
3
|
+
* Validates if value is an instance of "Date".
|
|
4
|
+
* Converts input value to Date if a coerce option is set to 'true'.
|
|
5
5
|
* @validator isDate
|
|
6
6
|
*/
|
|
7
7
|
export declare function isDate(options?: isDate.Options): import("../../core/validator.js").Validator<Date, string | number | Date, import("../../core/types.js").ExecutionOptions>;
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { type Validator } from '../../core/index.js';
|
|
2
|
+
type DiscriminatorRecord = Record<string, Validator>;
|
|
3
|
+
/**
|
|
4
|
+
*
|
|
5
|
+
*/
|
|
6
|
+
export declare function oneOf(rules: (Validator | [Validator, DiscriminatorRecord])[]): Validator<unknown, any, import("../../core/types.js").ExecutionOptions>;
|
|
7
|
+
export {};
|
|
@@ -7,8 +7,3 @@ export interface PipeOptions extends ValidationOptions {
|
|
|
7
7
|
* @validator pipe
|
|
8
8
|
*/
|
|
9
9
|
export declare function pipe<T>(rules: Validator[], options?: PipeOptions): Validator<T>;
|
|
10
|
-
/**
|
|
11
|
-
* Test given value against to all codecs and returns original input
|
|
12
|
-
* @validator allOf
|
|
13
|
-
*/
|
|
14
|
-
export declare function allOf<T = any>(rules: Validator[]): Validator<T>;
|
|
@@ -1,35 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.union = union;
|
|
4
|
-
const index_js_1 = require("../../core/index.js");
|
|
5
|
-
/**
|
|
6
|
-
*
|
|
7
|
-
*/
|
|
8
|
-
function union(codecs) {
|
|
9
|
-
const l = codecs.length;
|
|
10
|
-
return (0, index_js_1.validator)('union', (input, context, _this) => {
|
|
11
|
-
let i;
|
|
12
|
-
let c;
|
|
13
|
-
let v;
|
|
14
|
-
let passed = false;
|
|
15
|
-
// Mock fail method to prevent errors
|
|
16
|
-
context.fail = () => (passed = false);
|
|
17
|
-
for (i = 0; i < l; i++) {
|
|
18
|
-
c = codecs[i];
|
|
19
|
-
try {
|
|
20
|
-
passed = true;
|
|
21
|
-
v = c(input, context);
|
|
22
|
-
if (passed)
|
|
23
|
-
break;
|
|
24
|
-
}
|
|
25
|
-
catch {
|
|
26
|
-
//
|
|
27
|
-
}
|
|
28
|
-
}
|
|
29
|
-
// Restore fail method
|
|
30
|
-
delete context.fail;
|
|
31
|
-
if (passed)
|
|
32
|
-
return v;
|
|
33
|
-
context.fail(_this, `Value didn't match any on union rules`, input);
|
|
34
|
-
});
|
|
35
|
-
}
|
|
@@ -1,32 +0,0 @@
|
|
|
1
|
-
import { validator, } from '../../core/index.js';
|
|
2
|
-
/**
|
|
3
|
-
*
|
|
4
|
-
*/
|
|
5
|
-
export function union(codecs) {
|
|
6
|
-
const l = codecs.length;
|
|
7
|
-
return validator('union', (input, context, _this) => {
|
|
8
|
-
let i;
|
|
9
|
-
let c;
|
|
10
|
-
let v;
|
|
11
|
-
let passed = false;
|
|
12
|
-
// Mock fail method to prevent errors
|
|
13
|
-
context.fail = () => (passed = false);
|
|
14
|
-
for (i = 0; i < l; i++) {
|
|
15
|
-
c = codecs[i];
|
|
16
|
-
try {
|
|
17
|
-
passed = true;
|
|
18
|
-
v = c(input, context);
|
|
19
|
-
if (passed)
|
|
20
|
-
break;
|
|
21
|
-
}
|
|
22
|
-
catch {
|
|
23
|
-
//
|
|
24
|
-
}
|
|
25
|
-
}
|
|
26
|
-
// Restore fail method
|
|
27
|
-
delete context.fail;
|
|
28
|
-
if (passed)
|
|
29
|
-
return v;
|
|
30
|
-
context.fail(_this, `Value didn't match any on union rules`, input);
|
|
31
|
-
});
|
|
32
|
-
}
|