@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.
- package/cjs/factory/validators.d.ts +7 -5
- package/cjs/factory/validators.d.ts.map +1 -1
- package/cjs/factory/validators.js +5 -8
- package/cjs/factory/validators.js.map +1 -1
- package/cjs/index.js +1 -1
- package/cjs/rules/conditional/forbidden-if-rules.d.ts +54 -0
- package/cjs/rules/conditional/forbidden-if-rules.d.ts.map +1 -0
- package/cjs/rules/conditional/forbidden-if-rules.js +112 -0
- package/cjs/rules/conditional/forbidden-if-rules.js.map +1 -0
- package/cjs/rules/conditional/index.d.ts +1 -0
- package/cjs/rules/conditional/index.d.ts.map +1 -1
- package/cjs/validators/base-validator.d.ts +57 -0
- package/cjs/validators/base-validator.d.ts.map +1 -1
- package/cjs/validators/base-validator.js +140 -3
- package/cjs/validators/base-validator.js.map +1 -1
- package/cjs/validators/index.d.ts +2 -0
- package/cjs/validators/index.d.ts.map +1 -1
- package/cjs/validators/number-validator.d.ts.map +1 -1
- package/cjs/validators/number-validator.js +1 -2
- package/cjs/validators/number-validator.js.map +1 -1
- package/cjs/validators/object-validator.d.ts +1 -1
- package/cjs/validators/object-validator.d.ts.map +1 -1
- package/cjs/validators/object-validator.js +6 -2
- package/cjs/validators/object-validator.js.map +1 -1
- package/cjs/validators/record-validator.d.ts +33 -0
- package/cjs/validators/record-validator.d.ts.map +1 -0
- package/cjs/validators/record-validator.js +70 -0
- package/cjs/validators/record-validator.js.map +1 -0
- package/cjs/validators/scalar-validator.d.ts +4 -0
- package/cjs/validators/scalar-validator.d.ts.map +1 -1
- package/cjs/validators/scalar-validator.js +8 -0
- package/cjs/validators/scalar-validator.js.map +1 -1
- package/cjs/validators/tuple-validator.d.ts +34 -0
- package/cjs/validators/tuple-validator.d.ts.map +1 -0
- package/cjs/validators/tuple-validator.js +79 -0
- package/cjs/validators/tuple-validator.js.map +1 -0
- package/esm/factory/validators.d.ts +7 -5
- package/esm/factory/validators.d.ts.map +1 -1
- package/esm/factory/validators.js +5 -8
- package/esm/factory/validators.js.map +1 -1
- package/esm/index.js +1 -1
- package/esm/rules/conditional/forbidden-if-rules.d.ts +54 -0
- package/esm/rules/conditional/forbidden-if-rules.d.ts.map +1 -0
- package/esm/rules/conditional/forbidden-if-rules.js +112 -0
- package/esm/rules/conditional/forbidden-if-rules.js.map +1 -0
- package/esm/rules/conditional/index.d.ts +1 -0
- package/esm/rules/conditional/index.d.ts.map +1 -1
- package/esm/validators/base-validator.d.ts +57 -0
- package/esm/validators/base-validator.d.ts.map +1 -1
- package/esm/validators/base-validator.js +140 -3
- package/esm/validators/base-validator.js.map +1 -1
- package/esm/validators/index.d.ts +2 -0
- package/esm/validators/index.d.ts.map +1 -1
- package/esm/validators/number-validator.d.ts.map +1 -1
- package/esm/validators/number-validator.js +1 -2
- package/esm/validators/number-validator.js.map +1 -1
- package/esm/validators/object-validator.d.ts +1 -1
- package/esm/validators/object-validator.d.ts.map +1 -1
- package/esm/validators/object-validator.js +6 -2
- package/esm/validators/object-validator.js.map +1 -1
- package/esm/validators/record-validator.d.ts +33 -0
- package/esm/validators/record-validator.d.ts.map +1 -0
- package/esm/validators/record-validator.js +70 -0
- package/esm/validators/record-validator.js.map +1 -0
- package/esm/validators/scalar-validator.d.ts +4 -0
- package/esm/validators/scalar-validator.d.ts.map +1 -1
- package/esm/validators/scalar-validator.js +8 -0
- package/esm/validators/scalar-validator.js.map +1 -1
- package/esm/validators/tuple-validator.d.ts +34 -0
- package/esm/validators/tuple-validator.d.ts.map +1 -0
- package/esm/validators/tuple-validator.js +79 -0
- package/esm/validators/tuple-validator.js.map +1 -0
- 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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"}
|