valgen 5.14.0 → 5.15.0

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 CHANGED
@@ -1,6 +1,36 @@
1
1
  ## Changelog
2
2
 
3
- ### [v5.14.0](https://github.com/panates/valgen/compare/v5.13.4...v5.14.0) -
3
+ ### [v5.15.0](https://github.com/panates/valgen/compare/v5.14.1...v5.15.0) -
4
+
5
+ #### 🚀 New Features
6
+
7
+ - feat: Added discriminator validation to oneOf rule @Eray Hanoğlu
8
+ - feat: Added isEqual, isNotEqual rules @Eray Hanoğlu
9
+
10
+ #### 🛠 Refactoring and Updates
11
+
12
+ - refactor: Fixes and improvements @Eray Hanoğlu
13
+ - refactor: Removed union rule. Use oneOf rule instead @Eray Hanoğlu
14
+
15
+ ### [v5.14.1](https://github.com/panates/valgen/compare/v5.14.0...v5.14.1) - 21 April 2025
16
+
17
+ #### 🪲 Fixes
18
+
19
+ - fix: Fixed validation issue while using silent mode @Eray Hanoğlu
20
+
21
+ #### 💬 General Changes
22
+
23
+ - dev: Moved from nyc to c8 @Eray Hanoğlu
24
+ - ci: Added workflows @Eray Hanoğlu
25
+ - dev: Fixed nycrc file @Eray Hanoğlu
26
+ - dev: Added publishConfig @Eray Hanoğlu
27
+ - dev: Fixed nycrc file @Eray Hanoğlu
28
+ - dev: Fixed paths @Eray Hanoğlu
29
+ - dev: Fixed nycrc file @Eray Hanoğlu
30
+ - dev: Fixed nycrc file @Eray Hanoğlu
31
+ - dev: Added qc script @Eray Hanoğlu
32
+
33
+ ### [v5.14.0](https://github.com/panates/valgen/compare/v5.13.4...v5.14.0) - 30 March 2025
4
34
 
5
35
  #### 🛠 Refactoring and Updates
6
36
 
package/cjs/constants.js CHANGED
@@ -1,5 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.preValidation = exports.postValidation = void 0;
3
+ exports.VALIDATE_NESTED_METADATA = exports.VALIDATE_METADATA = exports.preValidation = exports.postValidation = void 0;
4
4
  exports.postValidation = Symbol('postValidation');
5
5
  exports.preValidation = Symbol('preValidation');
6
+ exports.VALIDATE_METADATA = Symbol('VALIDATE_METADATA');
7
+ exports.VALIDATE_NESTED_METADATA = Symbol('VALIDATE_NESTED_METADATA');
@@ -30,6 +30,7 @@ tslib_1.__exportStar(require("./format-rules/is-vat-number.js"), exports);
30
30
  tslib_1.__exportStar(require("./format-rules/matches.js"), exports);
31
31
  tslib_1.__exportStar(require("./logical-rules/is-defined.js"), exports);
32
32
  tslib_1.__exportStar(require("./logical-rules/is-empty.js"), exports);
33
+ tslib_1.__exportStar(require("./logical-rules/is-equal.js"), exports);
33
34
  tslib_1.__exportStar(require("./logical-rules/range.js"), exports);
34
35
  tslib_1.__exportStar(require("./type-rules/is-any.js"), exports);
35
36
  tslib_1.__exportStar(require("./type-rules/is-array.js"), exports);
@@ -45,9 +46,10 @@ tslib_1.__exportStar(require("./type-rules/is-record.js"), exports);
45
46
  tslib_1.__exportStar(require("./type-rules/is-string.js"), exports);
46
47
  tslib_1.__exportStar(require("./type-rules/is-tuple.js"), exports);
47
48
  tslib_1.__exportStar(require("./type-rules/is-undefined.js"), exports);
49
+ tslib_1.__exportStar(require("./utility-rules/all-of.js"), exports);
48
50
  tslib_1.__exportStar(require("./utility-rules/exists.js"), exports);
49
51
  tslib_1.__exportStar(require("./utility-rules/get-length.js"), exports);
52
+ tslib_1.__exportStar(require("./utility-rules/one-of.js"), exports);
50
53
  tslib_1.__exportStar(require("./utility-rules/optional.js"), exports);
51
54
  tslib_1.__exportStar(require("./utility-rules/pipe.js"), exports);
52
55
  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, pipe_js_1.allOf)([
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, pipe_js_1.allOf)([
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, {
@@ -48,7 +48,7 @@ function isObject(schema, options) {
48
48
  context.fail(_this, `Value must be an object`, input);
49
49
  return;
50
50
  }
51
- const keys = [...Object.keys(output), ...schemaKeys];
51
+ const keys = Array.from(new Set([...Object.keys(output), ...schemaKeys]));
52
52
  const l = keys.length;
53
53
  let i = 0;
54
54
  let inputKey;
@@ -102,8 +102,6 @@ function isObject(schema, options) {
102
102
  out[propertyOptions[schemaKey]?.as || schemaKey] = v;
103
103
  }
104
104
  }
105
- if (context.errors.length)
106
- return undefined;
107
105
  if (ctor && ctor[constants_js_1.postValidation]) {
108
106
  ctor[constants_js_1.postValidation](out, context, _this);
109
107
  return out;
@@ -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/optional.ts","../../src/rules/utility-rules/pipe.ts","../../src/rules/utility-rules/required.ts","../../src/rules/utility-rules/union.ts"],"version":"5.8.2"}
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/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/esm/constants.js CHANGED
@@ -1,2 +1,4 @@
1
1
  export const postValidation = Symbol('postValidation');
2
2
  export const preValidation = Symbol('preValidation');
3
+ export const VALIDATE_METADATA = Symbol('VALIDATE_METADATA');
4
+ export const VALIDATE_NESTED_METADATA = Symbol('VALIDATE_NESTED_METADATA');
@@ -27,6 +27,7 @@ export * from './format-rules/is-vat-number.js';
27
27
  export * from './format-rules/matches.js';
28
28
  export * from './logical-rules/is-defined.js';
29
29
  export * from './logical-rules/is-empty.js';
30
+ export * from './logical-rules/is-equal.js';
30
31
  export * from './logical-rules/range.js';
31
32
  export * from './type-rules/is-any.js';
32
33
  export * from './type-rules/is-array.js';
@@ -42,9 +43,10 @@ export * from './type-rules/is-record.js';
42
43
  export * from './type-rules/is-string.js';
43
44
  export * from './type-rules/is-tuple.js';
44
45
  export * from './type-rules/is-undefined.js';
46
+ export * from './utility-rules/all-of.js';
45
47
  export * from './utility-rules/exists.js';
46
48
  export * from './utility-rules/get-length.js';
49
+ export * from './utility-rules/one-of.js';
47
50
  export * from './utility-rules/optional.js';
48
51
  export * from './utility-rules/pipe.js';
49
52
  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 { allOf, pipe } from '../utility-rules/pipe.js';
4
+ import { pipe } from '../utility-rules/pipe.js';
4
5
  /**
5
6
  * Checks if value is between minValue and maxValue
6
7
  * @validator range
@@ -45,7 +45,7 @@ export function isObject(schema, options) {
45
45
  context.fail(_this, `Value must be an object`, input);
46
46
  return;
47
47
  }
48
- const keys = [...Object.keys(output), ...schemaKeys];
48
+ const keys = Array.from(new Set([...Object.keys(output), ...schemaKeys]));
49
49
  const l = keys.length;
50
50
  let i = 0;
51
51
  let inputKey;
@@ -99,8 +99,6 @@ export function isObject(schema, options) {
99
99
  out[propertyOptions[schemaKey]?.as || schemaKey] = v;
100
100
  }
101
101
  }
102
- if (context.errors.length)
103
- return undefined;
104
102
  if (ctor && ctor[postValidation]) {
105
103
  ctor[postValidation](out, context, _this);
106
104
  return out;
@@ -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/optional.ts","../../src/rules/utility-rules/pipe.ts","../../src/rules/utility-rules/required.ts","../../src/rules/utility-rules/union.ts"],"version":"5.8.2"}
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/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
@@ -1,12 +1,13 @@
1
1
  {
2
2
  "name": "valgen",
3
3
  "description": "Fast runtime type validator, converter and io (encoding/decoding) library",
4
- "version": "5.14.0",
4
+ "version": "5.15.0",
5
5
  "author": "Panates",
6
6
  "license": "MIT",
7
7
  "dependencies": {
8
8
  "@browsery/validator": "^13.12.0-r3",
9
9
  "date-fns": "^4.1.0",
10
+ "reflect-metadata": "^0.2.2",
10
11
  "ts-gems": "^3.11.3",
11
12
  "tslib": "^2.8.1"
12
13
  },
@@ -1,2 +1,4 @@
1
1
  export declare const postValidation: unique symbol;
2
2
  export declare const preValidation: unique symbol;
3
+ export declare const VALIDATE_METADATA: unique symbol;
4
+ export declare const VALIDATE_NESTED_METADATA: unique symbol;
@@ -27,6 +27,7 @@ export * from './format-rules/is-vat-number.js';
27
27
  export * from './format-rules/matches.js';
28
28
  export * from './logical-rules/is-defined.js';
29
29
  export * from './logical-rules/is-empty.js';
30
+ export * from './logical-rules/is-equal.js';
30
31
  export * from './logical-rules/range.js';
31
32
  export * from './type-rules/is-any.js';
32
33
  export * from './type-rules/is-array.js';
@@ -42,9 +43,10 @@ export * from './type-rules/is-record.js';
42
43
  export * from './type-rules/is-string.js';
43
44
  export * from './type-rules/is-tuple.js';
44
45
  export * from './type-rules/is-undefined.js';
46
+ export * from './utility-rules/all-of.js';
45
47
  export * from './utility-rules/exists.js';
46
48
  export * from './utility-rules/get-length.js';
49
+ export * from './utility-rules/one-of.js';
47
50
  export * from './utility-rules/optional.js';
48
51
  export * from './utility-rules/pipe.js';
49
52
  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>;
@@ -0,0 +1,6 @@
1
+ import { type Validator } from '../../core/index.js';
2
+ /**
3
+ * Test given value against to all codecs and returns original input
4
+ * @validator allOf
5
+ */
6
+ export declare function allOf<T = any>(rules: Validator[]): Validator<T>;
@@ -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
- }
@@ -1,5 +0,0 @@
1
- import { type Validator } from '../../core/index.js';
2
- /**
3
- *
4
- */
5
- export declare function union<T, I>(codecs: Validator<T, I>[]): Validator<T, I, import("../../core/types.js").ExecutionOptions>;