@warlock.js/seal 3.0.20 → 3.0.22

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 (73) hide show
  1. package/cjs/factory/validators.d.ts +7 -5
  2. package/cjs/factory/validators.d.ts.map +1 -1
  3. package/cjs/factory/validators.js +5 -8
  4. package/cjs/factory/validators.js.map +1 -1
  5. package/cjs/index.js +1 -1
  6. package/cjs/rules/conditional/forbidden-if-rules.d.ts +54 -0
  7. package/cjs/rules/conditional/forbidden-if-rules.d.ts.map +1 -0
  8. package/cjs/rules/conditional/forbidden-if-rules.js +112 -0
  9. package/cjs/rules/conditional/forbidden-if-rules.js.map +1 -0
  10. package/cjs/rules/conditional/index.d.ts +1 -0
  11. package/cjs/rules/conditional/index.d.ts.map +1 -1
  12. package/cjs/validators/base-validator.d.ts +57 -0
  13. package/cjs/validators/base-validator.d.ts.map +1 -1
  14. package/cjs/validators/base-validator.js +140 -3
  15. package/cjs/validators/base-validator.js.map +1 -1
  16. package/cjs/validators/index.d.ts +2 -0
  17. package/cjs/validators/index.d.ts.map +1 -1
  18. package/cjs/validators/number-validator.d.ts.map +1 -1
  19. package/cjs/validators/number-validator.js +1 -2
  20. package/cjs/validators/number-validator.js.map +1 -1
  21. package/cjs/validators/object-validator.d.ts +1 -1
  22. package/cjs/validators/object-validator.d.ts.map +1 -1
  23. package/cjs/validators/object-validator.js +6 -2
  24. package/cjs/validators/object-validator.js.map +1 -1
  25. package/cjs/validators/record-validator.d.ts +33 -0
  26. package/cjs/validators/record-validator.d.ts.map +1 -0
  27. package/cjs/validators/record-validator.js +70 -0
  28. package/cjs/validators/record-validator.js.map +1 -0
  29. package/cjs/validators/scalar-validator.d.ts +4 -0
  30. package/cjs/validators/scalar-validator.d.ts.map +1 -1
  31. package/cjs/validators/scalar-validator.js +8 -0
  32. package/cjs/validators/scalar-validator.js.map +1 -1
  33. package/cjs/validators/tuple-validator.d.ts +34 -0
  34. package/cjs/validators/tuple-validator.d.ts.map +1 -0
  35. package/cjs/validators/tuple-validator.js +79 -0
  36. package/cjs/validators/tuple-validator.js.map +1 -0
  37. package/esm/factory/validators.d.ts +7 -5
  38. package/esm/factory/validators.d.ts.map +1 -1
  39. package/esm/factory/validators.js +5 -8
  40. package/esm/factory/validators.js.map +1 -1
  41. package/esm/index.js +1 -1
  42. package/esm/rules/conditional/forbidden-if-rules.d.ts +54 -0
  43. package/esm/rules/conditional/forbidden-if-rules.d.ts.map +1 -0
  44. package/esm/rules/conditional/forbidden-if-rules.js +112 -0
  45. package/esm/rules/conditional/forbidden-if-rules.js.map +1 -0
  46. package/esm/rules/conditional/index.d.ts +1 -0
  47. package/esm/rules/conditional/index.d.ts.map +1 -1
  48. package/esm/validators/base-validator.d.ts +57 -0
  49. package/esm/validators/base-validator.d.ts.map +1 -1
  50. package/esm/validators/base-validator.js +140 -3
  51. package/esm/validators/base-validator.js.map +1 -1
  52. package/esm/validators/index.d.ts +2 -0
  53. package/esm/validators/index.d.ts.map +1 -1
  54. package/esm/validators/number-validator.d.ts.map +1 -1
  55. package/esm/validators/number-validator.js +1 -2
  56. package/esm/validators/number-validator.js.map +1 -1
  57. package/esm/validators/object-validator.d.ts +1 -1
  58. package/esm/validators/object-validator.d.ts.map +1 -1
  59. package/esm/validators/object-validator.js +6 -2
  60. package/esm/validators/object-validator.js.map +1 -1
  61. package/esm/validators/record-validator.d.ts +33 -0
  62. package/esm/validators/record-validator.d.ts.map +1 -0
  63. package/esm/validators/record-validator.js +70 -0
  64. package/esm/validators/record-validator.js.map +1 -0
  65. package/esm/validators/scalar-validator.d.ts +4 -0
  66. package/esm/validators/scalar-validator.d.ts.map +1 -1
  67. package/esm/validators/scalar-validator.js +8 -0
  68. package/esm/validators/scalar-validator.js.map +1 -1
  69. package/esm/validators/tuple-validator.d.ts +34 -0
  70. package/esm/validators/tuple-validator.d.ts.map +1 -0
  71. package/esm/validators/tuple-validator.js +79 -0
  72. package/esm/validators/tuple-validator.js.map +1 -0
  73. package/package.json +1 -1
@@ -0,0 +1,34 @@
1
+ import type { SchemaContext, ValidationResult } from "../types";
2
+ import { BaseValidator } from "./base-validator";
3
+ /**
4
+ * Tuple validator class - validates fixed-length arrays with position-specific types
5
+ *
6
+ * @example
7
+ * ```ts
8
+ * // RGB color tuple
9
+ * v.tuple([v.number(), v.number(), v.number()])
10
+ * // Valid: [255, 128, 0]
11
+ * // Invalid: [255, 128] (too short)
12
+ *
13
+ * // Mixed types
14
+ * v.tuple([v.string(), v.int(), v.boolean()])
15
+ * // Valid: ["John", 25, true]
16
+ * ```
17
+ */
18
+ export declare class TupleValidator extends BaseValidator {
19
+ validators: BaseValidator[];
20
+ constructor(validators: BaseValidator[], errorMessage?: string);
21
+ /**
22
+ * Check if value is an array type
23
+ */
24
+ matchesType(value: any): boolean;
25
+ /**
26
+ * Clone the validator
27
+ */
28
+ clone(): this;
29
+ /**
30
+ * Validate tuple - check length then validate each position
31
+ */
32
+ validate(data: any, context: SchemaContext): Promise<ValidationResult>;
33
+ }
34
+ //# sourceMappingURL=tuple-validator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tuple-validator.d.ts","sourceRoot":"","sources":["../../src/validators/tuple-validator.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAChE,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAEjD;;;;;;;;;;;;;;GAcG;AACH,qBAAa,cAAe,SAAQ,aAAa;IAEtC,UAAU,EAAE,aAAa,EAAE;gBAA3B,UAAU,EAAE,aAAa,EAAE,EAClC,YAAY,CAAC,EAAE,MAAM;IAMvB;;OAEG;IACI,WAAW,CAAC,KAAK,EAAE,GAAG,GAAG,OAAO;IAIvC;;OAEG;IACa,KAAK,IAAI,IAAI;IAM7B;;OAEG;IACU,QAAQ,CACnB,IAAI,EAAE,GAAG,EACT,OAAO,EAAE,aAAa,GACrB,OAAO,CAAC,gBAAgB,CAAC;CAkD7B"}
@@ -0,0 +1,79 @@
1
+ import'@mongez/reinforcements';import {setKeyPath}from'../helpers/path-helpers.js';import'@mongez/supportive-is';import'net';import {arrayRule}from'../rules/common/type-rules.js';import {BaseValidator}from'./base-validator.js';/**
2
+ * Tuple validator class - validates fixed-length arrays with position-specific types
3
+ *
4
+ * @example
5
+ * ```ts
6
+ * // RGB color tuple
7
+ * v.tuple([v.number(), v.number(), v.number()])
8
+ * // Valid: [255, 128, 0]
9
+ * // Invalid: [255, 128] (too short)
10
+ *
11
+ * // Mixed types
12
+ * v.tuple([v.string(), v.int(), v.boolean()])
13
+ * // Valid: ["John", 25, true]
14
+ * ```
15
+ */
16
+ class TupleValidator extends BaseValidator {
17
+ validators;
18
+ constructor(validators, errorMessage) {
19
+ super();
20
+ this.validators = validators;
21
+ this.addRule(arrayRule, errorMessage);
22
+ }
23
+ /**
24
+ * Check if value is an array type
25
+ */
26
+ matchesType(value) {
27
+ return Array.isArray(value);
28
+ }
29
+ /**
30
+ * Clone the validator
31
+ */
32
+ clone() {
33
+ const cloned = super.clone();
34
+ cloned.validators = this.validators.map(v => v.clone());
35
+ return cloned;
36
+ }
37
+ /**
38
+ * Validate tuple - check length then validate each position
39
+ */
40
+ async validate(data, context) {
41
+ const mutatedData = (await this.mutate(data, context)) || [];
42
+ const result = await super.validate(data, context);
43
+ if (result.isValid === false)
44
+ return result;
45
+ const errors = [];
46
+ // Tuple-specific: length validation
47
+ if (mutatedData.length !== this.validators.length) {
48
+ errors.push({
49
+ type: "tuple",
50
+ input: context.key || "value",
51
+ error: `Expected exactly ${this.validators.length} items, but got ${mutatedData.length}`,
52
+ });
53
+ return { isValid: false, errors, data: mutatedData };
54
+ }
55
+ // Validate each position with its specific validator in parallel
56
+ const validationPromises = this.validators.map(async (validator, index) => {
57
+ const childContext = {
58
+ ...context,
59
+ parent: mutatedData,
60
+ value: mutatedData[index],
61
+ key: index.toString(),
62
+ path: setKeyPath(context.path, index.toString()),
63
+ };
64
+ const childResult = await validator.validate(mutatedData[index], childContext);
65
+ // Update mutated data with validated result
66
+ mutatedData[index] = childResult.data;
67
+ // Collect errors from this element
68
+ if (childResult.isValid === false) {
69
+ errors.push(...childResult.errors);
70
+ }
71
+ });
72
+ await Promise.all(validationPromises);
73
+ return {
74
+ isValid: errors.length === 0,
75
+ errors,
76
+ data: await this.startTransformationPipeline(mutatedData, context),
77
+ };
78
+ }
79
+ }export{TupleValidator};//# sourceMappingURL=tuple-validator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tuple-validator.js","sources":["../../src/validators/tuple-validator.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@warlock.js/seal",
3
- "version": "3.0.20",
3
+ "version": "3.0.22",
4
4
  "description": "Comprehensive Validation library",
5
5
  "main": "./cjs/index.js",
6
6
  "dependencies": {