anyvali 0.3.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 +44 -0
- package/README.md +370 -0
- package/VERSION +1 -0
- package/dist/errors.d.ts +6 -0
- package/dist/errors.d.ts.map +1 -0
- package/dist/errors.js +12 -0
- package/dist/errors.js.map +1 -0
- package/dist/format/validators.d.ts +2 -0
- package/dist/format/validators.d.ts.map +1 -0
- package/dist/format/validators.js +57 -0
- package/dist/format/validators.js.map +1 -0
- package/dist/forms/index.d.ts +57 -0
- package/dist/forms/index.d.ts.map +1 -0
- package/dist/forms/index.js +586 -0
- package/dist/forms/index.js.map +1 -0
- package/dist/index.d.ts +93 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +156 -0
- package/dist/index.js.map +1 -0
- package/dist/infer.d.ts +8 -0
- package/dist/infer.d.ts.map +1 -0
- package/dist/infer.js +2 -0
- package/dist/infer.js.map +1 -0
- package/dist/interchange/document.d.ts +5 -0
- package/dist/interchange/document.d.ts.map +1 -0
- package/dist/interchange/document.js +12 -0
- package/dist/interchange/document.js.map +1 -0
- package/dist/interchange/exporter.d.ts +7 -0
- package/dist/interchange/exporter.d.ts.map +1 -0
- package/dist/interchange/exporter.js +7 -0
- package/dist/interchange/exporter.js.map +1 -0
- package/dist/interchange/importer.d.ts +4 -0
- package/dist/interchange/importer.d.ts.map +1 -0
- package/dist/interchange/importer.js +229 -0
- package/dist/interchange/importer.js.map +1 -0
- package/dist/issue-codes.d.ts +19 -0
- package/dist/issue-codes.d.ts.map +1 -0
- package/dist/issue-codes.js +18 -0
- package/dist/issue-codes.js.map +1 -0
- package/dist/parse/coerce.d.ts +16 -0
- package/dist/parse/coerce.d.ts.map +1 -0
- package/dist/parse/coerce.js +115 -0
- package/dist/parse/coerce.js.map +1 -0
- package/dist/parse/defaults.d.ts +7 -0
- package/dist/parse/defaults.d.ts.map +1 -0
- package/dist/parse/defaults.js +12 -0
- package/dist/parse/defaults.js.map +1 -0
- package/dist/parse/parser.d.ts +11 -0
- package/dist/parse/parser.d.ts.map +1 -0
- package/dist/parse/parser.js +13 -0
- package/dist/parse/parser.js.map +1 -0
- package/dist/schemas/any.d.ts +7 -0
- package/dist/schemas/any.d.ts.map +1 -0
- package/dist/schemas/any.js +12 -0
- package/dist/schemas/any.js.map +1 -0
- package/dist/schemas/array.d.ts +13 -0
- package/dist/schemas/array.d.ts.map +1 -0
- package/dist/schemas/array.js +73 -0
- package/dist/schemas/array.js.map +1 -0
- package/dist/schemas/base.d.ts +37 -0
- package/dist/schemas/base.d.ts.map +1 -0
- package/dist/schemas/base.js +285 -0
- package/dist/schemas/base.js.map +1 -0
- package/dist/schemas/bool.d.ts +8 -0
- package/dist/schemas/bool.d.ts.map +1 -0
- package/dist/schemas/bool.js +27 -0
- package/dist/schemas/bool.js.map +1 -0
- package/dist/schemas/enum.d.ts +9 -0
- package/dist/schemas/enum.d.ts.map +1 -0
- package/dist/schemas/enum.js +31 -0
- package/dist/schemas/enum.js.map +1 -0
- package/dist/schemas/index.d.ts +21 -0
- package/dist/schemas/index.d.ts.map +1 -0
- package/dist/schemas/index.js +21 -0
- package/dist/schemas/index.js.map +1 -0
- package/dist/schemas/int.d.ts +32 -0
- package/dist/schemas/int.d.ts.map +1 -0
- package/dist/schemas/int.js +108 -0
- package/dist/schemas/int.js.map +1 -0
- package/dist/schemas/intersection.d.ts +16 -0
- package/dist/schemas/intersection.d.ts.map +1 -0
- package/dist/schemas/intersection.js +58 -0
- package/dist/schemas/intersection.js.map +1 -0
- package/dist/schemas/literal.d.ts +11 -0
- package/dist/schemas/literal.d.ts.map +1 -0
- package/dist/schemas/literal.js +28 -0
- package/dist/schemas/literal.js.map +1 -0
- package/dist/schemas/never.d.ts +7 -0
- package/dist/schemas/never.d.ts.map +1 -0
- package/dist/schemas/never.js +19 -0
- package/dist/schemas/never.js.map +1 -0
- package/dist/schemas/null.d.ts +7 -0
- package/dist/schemas/null.d.ts.map +1 -0
- package/dist/schemas/null.js +24 -0
- package/dist/schemas/null.js.map +1 -0
- package/dist/schemas/nullable.d.ts +10 -0
- package/dist/schemas/nullable.d.ts.map +1 -0
- package/dist/schemas/nullable.js +29 -0
- package/dist/schemas/nullable.js.map +1 -0
- package/dist/schemas/number.d.ts +27 -0
- package/dist/schemas/number.d.ts.map +1 -0
- package/dist/schemas/number.js +134 -0
- package/dist/schemas/number.js.map +1 -0
- package/dist/schemas/object.d.ts +28 -0
- package/dist/schemas/object.d.ts.map +1 -0
- package/dist/schemas/object.js +153 -0
- package/dist/schemas/object.js.map +1 -0
- package/dist/schemas/optional.d.ts +11 -0
- package/dist/schemas/optional.d.ts.map +1 -0
- package/dist/schemas/optional.js +39 -0
- package/dist/schemas/optional.js.map +1 -0
- package/dist/schemas/record.d.ts +9 -0
- package/dist/schemas/record.d.ts.map +1 -0
- package/dist/schemas/record.js +45 -0
- package/dist/schemas/record.js.map +1 -0
- package/dist/schemas/ref.d.ts +10 -0
- package/dist/schemas/ref.d.ts.map +1 -0
- package/dist/schemas/ref.js +30 -0
- package/dist/schemas/ref.js.map +1 -0
- package/dist/schemas/string.d.ts +29 -0
- package/dist/schemas/string.d.ts.map +1 -0
- package/dist/schemas/string.js +181 -0
- package/dist/schemas/string.js.map +1 -0
- package/dist/schemas/tuple.d.ts +14 -0
- package/dist/schemas/tuple.d.ts.map +1 -0
- package/dist/schemas/tuple.js +59 -0
- package/dist/schemas/tuple.js.map +1 -0
- package/dist/schemas/union.d.ts +9 -0
- package/dist/schemas/union.d.ts.map +1 -0
- package/dist/schemas/union.js +45 -0
- package/dist/schemas/union.js.map +1 -0
- package/dist/schemas/unknown.d.ts +7 -0
- package/dist/schemas/unknown.d.ts.map +1 -0
- package/dist/schemas/unknown.js +12 -0
- package/dist/schemas/unknown.js.map +1 -0
- package/dist/types.d.ts +132 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +3 -0
- package/dist/types.js.map +1 -0
- package/dist/util.d.ts +6 -0
- package/dist/util.d.ts.map +1 -0
- package/dist/util.js +12 -0
- package/dist/util.js.map +1 -0
- package/package.json +41 -0
- package/sdk/js/CHANGELOG.md +13 -0
- package/src/errors.ts +17 -0
- package/src/format/validators.ts +71 -0
- package/src/forms/index.ts +789 -0
- package/src/index.ts +285 -0
- package/src/infer.ts +12 -0
- package/src/interchange/document.ts +18 -0
- package/src/interchange/exporter.ts +12 -0
- package/src/interchange/importer.ts +285 -0
- package/src/issue-codes.ts +19 -0
- package/src/parse/coerce.ts +133 -0
- package/src/parse/defaults.ts +15 -0
- package/src/parse/parser.ts +19 -0
- package/src/schemas/any.ts +14 -0
- package/src/schemas/array.ts +83 -0
- package/src/schemas/base.ts +322 -0
- package/src/schemas/bool.ts +30 -0
- package/src/schemas/enum.ts +37 -0
- package/src/schemas/index.ts +30 -0
- package/src/schemas/int.ts +129 -0
- package/src/schemas/intersection.ts +81 -0
- package/src/schemas/literal.ts +34 -0
- package/src/schemas/never.ts +21 -0
- package/src/schemas/null.ts +26 -0
- package/src/schemas/nullable.ts +36 -0
- package/src/schemas/number.ts +151 -0
- package/src/schemas/object.ts +203 -0
- package/src/schemas/optional.ts +49 -0
- package/src/schemas/record.ts +55 -0
- package/src/schemas/ref.ts +35 -0
- package/src/schemas/string.ts +192 -0
- package/src/schemas/tuple.ts +74 -0
- package/src/schemas/union.ts +53 -0
- package/src/schemas/unknown.ts +14 -0
- package/src/types.ts +239 -0
- package/src/util.ts +9 -0
- package/tests/conformance/runner.test.ts +28 -0
- package/tests/conformance/runner.ts +137 -0
- package/tests/forms.test.ts +146 -0
- package/tests/unit/coerce.test.ts +136 -0
- package/tests/unit/collections.test.ts +99 -0
- package/tests/unit/composition.test.ts +80 -0
- package/tests/unit/date-format.test.ts +18 -0
- package/tests/unit/default-mutation.test.ts +32 -0
- package/tests/unit/defaults.test.ts +49 -0
- package/tests/unit/errors.test.ts +53 -0
- package/tests/unit/export.test.ts +270 -0
- package/tests/unit/inference.test.ts +306 -0
- package/tests/unit/interchange.test.ts +191 -0
- package/tests/unit/number.test.ts +195 -0
- package/tests/unit/object.test.ts +208 -0
- package/tests/unit/parser.test.ts +151 -0
- package/tests/unit/primitives.test.ts +111 -0
- package/tests/unit/security-recursion.test.ts +105 -0
- package/tests/unit/security.test.ts +945 -0
- package/tests/unit/shared-ref-falsepos.test.ts +33 -0
- package/tests/unit/string-pattern-redos.test.ts +46 -0
- package/tests/unit/string.test.ts +147 -0
- package/tsconfig.json +21 -0
- package/vitest.config.ts +7 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"issue-codes.js","sourceRoot":"","sources":["../src/issue-codes.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,WAAW,GAAG;IACzB,YAAY,EAAE,cAAc;IAC5B,QAAQ,EAAE,UAAU;IACpB,WAAW,EAAE,aAAa;IAC1B,SAAS,EAAE,WAAW;IACtB,SAAS,EAAE,WAAW;IACtB,cAAc,EAAE,gBAAgB;IAChC,cAAc,EAAE,gBAAgB;IAChC,eAAe,EAAE,iBAAiB;IAClC,aAAa,EAAE,eAAe;IAC9B,8BAA8B,EAAE,gCAAgC;IAChE,qBAAqB,EAAE,uBAAuB;IAC9C,uBAAuB,EAAE,yBAAyB;IAClD,eAAe,EAAE,iBAAiB;IAClC,eAAe,EAAE,iBAAiB;IAClC,QAAQ,EAAE,UAAU;CACZ,CAAC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import type { CoercionConfig } from "../types.js";
|
|
2
|
+
export type CoercionResult = {
|
|
3
|
+
success: true;
|
|
4
|
+
value: unknown;
|
|
5
|
+
} | {
|
|
6
|
+
success: false;
|
|
7
|
+
message: string;
|
|
8
|
+
};
|
|
9
|
+
/**
|
|
10
|
+
* Normalize coercion config from the corpus/interchange format.
|
|
11
|
+
* The corpus uses strings like "string->int", "trim", "lower", "upper"
|
|
12
|
+
* or arrays like ["trim", "lower"]. The SDK API uses CoercionConfig objects.
|
|
13
|
+
*/
|
|
14
|
+
export declare function normalizeCoercionConfig(raw: unknown): CoercionConfig;
|
|
15
|
+
export declare function applyCoercion(input: unknown, config: CoercionConfig, targetType: string): CoercionResult;
|
|
16
|
+
//# sourceMappingURL=coerce.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"coerce.d.ts","sourceRoot":"","sources":["../../src/parse/coerce.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAElD,MAAM,MAAM,cAAc,GACtB;IAAE,OAAO,EAAE,IAAI,CAAC;IAAC,KAAK,EAAE,OAAO,CAAA;CAAE,GACjC;IAAE,OAAO,EAAE,KAAK,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC;AAExC;;;;GAIG;AACH,wBAAgB,uBAAuB,CACrC,GAAG,EAAE,OAAO,GACX,cAAc,CA4BhB;AAED,wBAAgB,aAAa,CAC3B,KAAK,EAAE,OAAO,EACd,MAAM,EAAE,cAAc,EACtB,UAAU,EAAE,MAAM,GACjB,cAAc,CAqFhB"}
|
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Normalize coercion config from the corpus/interchange format.
|
|
3
|
+
* The corpus uses strings like "string->int", "trim", "lower", "upper"
|
|
4
|
+
* or arrays like ["trim", "lower"]. The SDK API uses CoercionConfig objects.
|
|
5
|
+
*/
|
|
6
|
+
export function normalizeCoercionConfig(raw) {
|
|
7
|
+
if (typeof raw === "object" && raw !== null && !Array.isArray(raw)) {
|
|
8
|
+
return raw;
|
|
9
|
+
}
|
|
10
|
+
const config = {};
|
|
11
|
+
const items = Array.isArray(raw) ? raw : [raw];
|
|
12
|
+
for (const item of items) {
|
|
13
|
+
switch (item) {
|
|
14
|
+
case "string->int":
|
|
15
|
+
case "string->number":
|
|
16
|
+
case "string->bool":
|
|
17
|
+
config.from = "string";
|
|
18
|
+
break;
|
|
19
|
+
case "trim":
|
|
20
|
+
config.trim = true;
|
|
21
|
+
break;
|
|
22
|
+
case "lower":
|
|
23
|
+
config.lower = true;
|
|
24
|
+
break;
|
|
25
|
+
case "upper":
|
|
26
|
+
config.upper = true;
|
|
27
|
+
break;
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
return config;
|
|
31
|
+
}
|
|
32
|
+
export function applyCoercion(input, config, targetType) {
|
|
33
|
+
let value = input;
|
|
34
|
+
// String transformations (trim, lower, upper) apply when input is a string
|
|
35
|
+
if (typeof value === "string") {
|
|
36
|
+
if (config.trim) {
|
|
37
|
+
value = value.trim();
|
|
38
|
+
}
|
|
39
|
+
if (config.lower) {
|
|
40
|
+
value = value.toLowerCase();
|
|
41
|
+
}
|
|
42
|
+
if (config.upper) {
|
|
43
|
+
value = value.toUpperCase();
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
// Type coercion from string to target
|
|
47
|
+
if (config.from === "string" && typeof value === "string") {
|
|
48
|
+
switch (targetType) {
|
|
49
|
+
case "int":
|
|
50
|
+
case "int8":
|
|
51
|
+
case "int16":
|
|
52
|
+
case "int32":
|
|
53
|
+
case "int64":
|
|
54
|
+
case "uint8":
|
|
55
|
+
case "uint16":
|
|
56
|
+
case "uint32":
|
|
57
|
+
case "uint64": {
|
|
58
|
+
const trimmed = value.trim();
|
|
59
|
+
if (trimmed === "" || !/^-?\d+$/.test(trimmed)) {
|
|
60
|
+
return {
|
|
61
|
+
success: false,
|
|
62
|
+
message: `Cannot coerce "${value}" to ${targetType}`,
|
|
63
|
+
};
|
|
64
|
+
}
|
|
65
|
+
const num = Number(trimmed);
|
|
66
|
+
if (!Number.isFinite(num) || !Number.isInteger(num)) {
|
|
67
|
+
return {
|
|
68
|
+
success: false,
|
|
69
|
+
message: `Cannot coerce "${value}" to ${targetType}`,
|
|
70
|
+
};
|
|
71
|
+
}
|
|
72
|
+
value = num;
|
|
73
|
+
break;
|
|
74
|
+
}
|
|
75
|
+
case "number":
|
|
76
|
+
case "float32":
|
|
77
|
+
case "float64": {
|
|
78
|
+
const trimmed = value.trim();
|
|
79
|
+
if (trimmed === "") {
|
|
80
|
+
return {
|
|
81
|
+
success: false,
|
|
82
|
+
message: `Cannot coerce empty string to ${targetType}`,
|
|
83
|
+
};
|
|
84
|
+
}
|
|
85
|
+
const num = Number(trimmed);
|
|
86
|
+
if (!Number.isFinite(num)) {
|
|
87
|
+
return {
|
|
88
|
+
success: false,
|
|
89
|
+
message: `Cannot coerce "${value}" to ${targetType}`,
|
|
90
|
+
};
|
|
91
|
+
}
|
|
92
|
+
value = num;
|
|
93
|
+
break;
|
|
94
|
+
}
|
|
95
|
+
case "bool": {
|
|
96
|
+
const lower = value.trim().toLowerCase();
|
|
97
|
+
if (lower === "true" || lower === "1") {
|
|
98
|
+
value = true;
|
|
99
|
+
}
|
|
100
|
+
else if (lower === "false" || lower === "0") {
|
|
101
|
+
value = false;
|
|
102
|
+
}
|
|
103
|
+
else {
|
|
104
|
+
return {
|
|
105
|
+
success: false,
|
|
106
|
+
message: `Cannot coerce "${value}" to bool`,
|
|
107
|
+
};
|
|
108
|
+
}
|
|
109
|
+
break;
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
return { success: true, value };
|
|
114
|
+
}
|
|
115
|
+
//# sourceMappingURL=coerce.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"coerce.js","sourceRoot":"","sources":["../../src/parse/coerce.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { type Absent } from "../schemas/base.js";
|
|
2
|
+
/**
|
|
3
|
+
* Apply a default value if the input is absent.
|
|
4
|
+
* Returns the default value if input is absent, otherwise returns the input as-is.
|
|
5
|
+
*/
|
|
6
|
+
export declare function applyDefault<T>(input: unknown, defaultValue: T | Absent): unknown;
|
|
7
|
+
//# sourceMappingURL=defaults.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"defaults.d.ts","sourceRoot":"","sources":["../../src/parse/defaults.ts"],"names":[],"mappings":"AAAA,OAAO,EAAU,KAAK,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAEzD;;;GAGG;AACH,wBAAgB,YAAY,CAAC,CAAC,EAC5B,KAAK,EAAE,OAAO,EACd,YAAY,EAAE,CAAC,GAAG,MAAM,GACvB,OAAO,CAKT"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { ABSENT } from "../schemas/base.js";
|
|
2
|
+
/**
|
|
3
|
+
* Apply a default value if the input is absent.
|
|
4
|
+
* Returns the default value if input is absent, otherwise returns the input as-is.
|
|
5
|
+
*/
|
|
6
|
+
export function applyDefault(input, defaultValue) {
|
|
7
|
+
if ((input === undefined || input === ABSENT) && defaultValue !== ABSENT) {
|
|
8
|
+
return defaultValue;
|
|
9
|
+
}
|
|
10
|
+
return input;
|
|
11
|
+
}
|
|
12
|
+
//# sourceMappingURL=defaults.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"defaults.js","sourceRoot":"","sources":["../../src/parse/defaults.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAe,MAAM,oBAAoB,CAAC;AAEzD;;;GAGG;AACH,MAAM,UAAU,YAAY,CAC1B,KAAc,EACd,YAAwB;IAExB,IAAI,CAAC,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,MAAM,CAAC,IAAI,YAAY,KAAK,MAAM,EAAE,CAAC;QACzE,OAAO,YAAY,CAAC;IACtB,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { ParseResult } from "../types.js";
|
|
2
|
+
import { BaseSchema } from "../schemas/base.js";
|
|
3
|
+
/**
|
|
4
|
+
* Parse input with the given schema. Throws ValidationError on failure.
|
|
5
|
+
*/
|
|
6
|
+
export declare function parse<T>(schema: BaseSchema<unknown, T>, input: unknown): T;
|
|
7
|
+
/**
|
|
8
|
+
* Parse input with the given schema. Returns a result object.
|
|
9
|
+
*/
|
|
10
|
+
export declare function safeParse<T>(schema: BaseSchema<unknown, T>, input: unknown): ParseResult<T>;
|
|
11
|
+
//# sourceMappingURL=parser.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parser.d.ts","sourceRoot":"","sources":["../../src/parse/parser.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAEhD;;GAEG;AACH,wBAAgB,KAAK,CAAC,CAAC,EAAE,MAAM,EAAE,UAAU,CAAC,OAAO,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,OAAO,GAAG,CAAC,CAE1E;AAED;;GAEG;AACH,wBAAgB,SAAS,CAAC,CAAC,EACzB,MAAM,EAAE,UAAU,CAAC,OAAO,EAAE,CAAC,CAAC,EAC9B,KAAK,EAAE,OAAO,GACb,WAAW,CAAC,CAAC,CAAC,CAEhB"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Parse input with the given schema. Throws ValidationError on failure.
|
|
3
|
+
*/
|
|
4
|
+
export function parse(schema, input) {
|
|
5
|
+
return schema.parse(input);
|
|
6
|
+
}
|
|
7
|
+
/**
|
|
8
|
+
* Parse input with the given schema. Returns a result object.
|
|
9
|
+
*/
|
|
10
|
+
export function safeParse(schema, input) {
|
|
11
|
+
return schema.safeParse(input);
|
|
12
|
+
}
|
|
13
|
+
//# sourceMappingURL=parser.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parser.js","sourceRoot":"","sources":["../../src/parse/parser.ts"],"names":[],"mappings":"AAGA;;GAEG;AACH,MAAM,UAAU,KAAK,CAAI,MAA8B,EAAE,KAAc;IACrE,OAAO,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;AAC7B,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,SAAS,CACvB,MAA8B,EAC9B,KAAc;IAEd,OAAO,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;AACjC,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { ParseContext, SchemaNode } from "../types.js";
|
|
2
|
+
import { BaseSchema } from "./base.js";
|
|
3
|
+
export declare class AnySchema extends BaseSchema<unknown, unknown> {
|
|
4
|
+
_validate(input: unknown, _ctx: ParseContext): unknown;
|
|
5
|
+
_toNode(): SchemaNode;
|
|
6
|
+
}
|
|
7
|
+
//# sourceMappingURL=any.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"any.d.ts","sourceRoot":"","sources":["../../src/schemas/any.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAC5D,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAEvC,qBAAa,SAAU,SAAQ,UAAU,CAAC,OAAO,EAAE,OAAO,CAAC;IACzD,SAAS,CAAC,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,YAAY,GAAG,OAAO;IAItD,OAAO,IAAI,UAAU;CAKtB"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { BaseSchema } from "./base.js";
|
|
2
|
+
export class AnySchema extends BaseSchema {
|
|
3
|
+
_validate(input, _ctx) {
|
|
4
|
+
return input;
|
|
5
|
+
}
|
|
6
|
+
_toNode() {
|
|
7
|
+
const node = { kind: "any" };
|
|
8
|
+
this._addDefault(node);
|
|
9
|
+
return node;
|
|
10
|
+
}
|
|
11
|
+
}
|
|
12
|
+
//# sourceMappingURL=any.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"any.js","sourceRoot":"","sources":["../../src/schemas/any.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAEvC,MAAM,OAAO,SAAU,SAAQ,UAA4B;IACzD,SAAS,CAAC,KAAc,EAAE,IAAkB;QAC1C,OAAO,KAAK,CAAC;IACf,CAAC;IAED,OAAO;QACL,MAAM,IAAI,GAAe,EAAE,IAAI,EAAE,KAAK,EAAgB,CAAC;QACvD,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;QACvB,OAAO,IAAI,CAAC;IACd,CAAC;CACF"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { ParseContext, SchemaNode } from "../types.js";
|
|
2
|
+
import { BaseSchema } from "./base.js";
|
|
3
|
+
export declare class ArraySchema<T extends BaseSchema<any, any> = BaseSchema> extends BaseSchema<unknown[], T["_output"][]> {
|
|
4
|
+
private _items;
|
|
5
|
+
private _minItems?;
|
|
6
|
+
private _maxItems?;
|
|
7
|
+
constructor(items: T);
|
|
8
|
+
minItems(n: number): ArraySchema<T>;
|
|
9
|
+
maxItems(n: number): ArraySchema<T>;
|
|
10
|
+
_validate(input: unknown, ctx: ParseContext): unknown;
|
|
11
|
+
_toNode(): SchemaNode;
|
|
12
|
+
}
|
|
13
|
+
//# sourceMappingURL=array.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"array.d.ts","sourceRoot":"","sources":["../../src/schemas/array.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAC5D,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAIvC,qBAAa,WAAW,CACtB,CAAC,SAAS,UAAU,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,UAAU,CAC3C,SAAQ,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC;IAC7C,OAAO,CAAC,MAAM,CAAI;IAClB,OAAO,CAAC,SAAS,CAAC,CAAS;IAC3B,OAAO,CAAC,SAAS,CAAC,CAAS;gBAEf,KAAK,EAAE,CAAC;IAKpB,QAAQ,CAAC,CAAC,EAAE,MAAM,GAAG,WAAW,CAAC,CAAC,CAAC;IAMnC,QAAQ,CAAC,CAAC,EAAE,MAAM,GAAG,WAAW,CAAC,CAAC,CAAC;IAMnC,SAAS,CAAC,KAAK,EAAE,OAAO,EAAE,GAAG,EAAE,YAAY,GAAG,OAAO;IA2CrD,OAAO,IAAI,UAAU;CAUtB"}
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
import { BaseSchema } from "./base.js";
|
|
2
|
+
import { ISSUE_CODES } from "../issue-codes.js";
|
|
3
|
+
import { describeType } from "../util.js";
|
|
4
|
+
export class ArraySchema extends BaseSchema {
|
|
5
|
+
_items;
|
|
6
|
+
_minItems;
|
|
7
|
+
_maxItems;
|
|
8
|
+
constructor(items) {
|
|
9
|
+
super();
|
|
10
|
+
this._items = items;
|
|
11
|
+
}
|
|
12
|
+
minItems(n) {
|
|
13
|
+
const clone = this._clone();
|
|
14
|
+
clone._minItems = n;
|
|
15
|
+
return clone;
|
|
16
|
+
}
|
|
17
|
+
maxItems(n) {
|
|
18
|
+
const clone = this._clone();
|
|
19
|
+
clone._maxItems = n;
|
|
20
|
+
return clone;
|
|
21
|
+
}
|
|
22
|
+
_validate(input, ctx) {
|
|
23
|
+
if (!Array.isArray(input)) {
|
|
24
|
+
ctx.issues.push({
|
|
25
|
+
code: ISSUE_CODES.INVALID_TYPE,
|
|
26
|
+
message: `Expected array, received ${describeType(input)}`,
|
|
27
|
+
path: [...ctx.path],
|
|
28
|
+
expected: "array",
|
|
29
|
+
received: describeType(input),
|
|
30
|
+
});
|
|
31
|
+
return undefined;
|
|
32
|
+
}
|
|
33
|
+
if (this._minItems !== undefined && input.length < this._minItems) {
|
|
34
|
+
ctx.issues.push({
|
|
35
|
+
code: ISSUE_CODES.TOO_SMALL,
|
|
36
|
+
message: `Array must have at least ${this._minItems} item(s)`,
|
|
37
|
+
path: [...ctx.path],
|
|
38
|
+
expected: String(this._minItems),
|
|
39
|
+
received: String(input.length),
|
|
40
|
+
});
|
|
41
|
+
}
|
|
42
|
+
if (this._maxItems !== undefined && input.length > this._maxItems) {
|
|
43
|
+
ctx.issues.push({
|
|
44
|
+
code: ISSUE_CODES.TOO_LARGE,
|
|
45
|
+
message: `Array must have at most ${this._maxItems} item(s)`,
|
|
46
|
+
path: [...ctx.path],
|
|
47
|
+
expected: String(this._maxItems),
|
|
48
|
+
received: String(input.length),
|
|
49
|
+
});
|
|
50
|
+
}
|
|
51
|
+
const result = [];
|
|
52
|
+
for (let i = 0; i < input.length; i++) {
|
|
53
|
+
ctx.path.push(i);
|
|
54
|
+
const val = this._items._runPipeline(input[i], ctx);
|
|
55
|
+
result.push(val);
|
|
56
|
+
ctx.path.pop();
|
|
57
|
+
}
|
|
58
|
+
return result;
|
|
59
|
+
}
|
|
60
|
+
_toNode() {
|
|
61
|
+
const node = {
|
|
62
|
+
kind: "array",
|
|
63
|
+
items: this._items._toNode(),
|
|
64
|
+
};
|
|
65
|
+
if (this._minItems !== undefined)
|
|
66
|
+
node.minItems = this._minItems;
|
|
67
|
+
if (this._maxItems !== undefined)
|
|
68
|
+
node.maxItems = this._maxItems;
|
|
69
|
+
this._addDefault(node);
|
|
70
|
+
return node;
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
//# sourceMappingURL=array.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"array.js","sourceRoot":"","sources":["../../src/schemas/array.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import type { ParseResult, ParseContext, SchemaNode, AnyValiDocument, ExportMode, CoercionConfig, MetadataOptions, DescribeOptions } from "../types.js";
|
|
2
|
+
/**
|
|
3
|
+
* Maximum validation recursion depth. Bounds recursion through recursive
|
|
4
|
+
* `$ref` schemas (and deeply nested data) so a malicious payload cannot
|
|
5
|
+
* exhaust the call stack and crash the process (DoS). Far above any
|
|
6
|
+
* legitimate schema nesting.
|
|
7
|
+
*/
|
|
8
|
+
export declare const MAX_DEPTH = 512;
|
|
9
|
+
/** Sentinel for "value not present" */
|
|
10
|
+
export declare const ABSENT: unique symbol;
|
|
11
|
+
export type Absent = typeof ABSENT;
|
|
12
|
+
export declare abstract class BaseSchema<TInput = unknown, TOutput = TInput> {
|
|
13
|
+
/** Type-level brand for Infer<T>. Never assigned at runtime. */
|
|
14
|
+
readonly _output: TOutput;
|
|
15
|
+
/** @internal */ _defaultValue: TOutput | Absent;
|
|
16
|
+
/** @internal */ _coercionConfig: CoercionConfig | undefined;
|
|
17
|
+
/** @internal */ _isPortable: boolean;
|
|
18
|
+
/** @internal */ _metadata: Record<string, unknown> | undefined;
|
|
19
|
+
parse(input: unknown): TOutput;
|
|
20
|
+
safeParse(input: unknown): ParseResult<TOutput>;
|
|
21
|
+
/** Internal: run the 5-step pipeline */
|
|
22
|
+
_runPipeline(input: unknown, ctx: ParseContext): unknown;
|
|
23
|
+
private _runPipelineInner;
|
|
24
|
+
/** Override in subclasses to provide the coercion target type name */
|
|
25
|
+
_getCoercionTarget(): string;
|
|
26
|
+
abstract _validate(input: unknown, ctx: ParseContext): unknown;
|
|
27
|
+
abstract _toNode(): SchemaNode;
|
|
28
|
+
default(value: TOutput): this;
|
|
29
|
+
coerce(options?: CoercionConfig): this;
|
|
30
|
+
describe(description: string, opts?: DescribeOptions): this;
|
|
31
|
+
metadata(meta: Record<string, unknown>, opts?: MetadataOptions): this;
|
|
32
|
+
export(mode?: ExportMode): AnyValiDocument;
|
|
33
|
+
private _validateDescribeOpts;
|
|
34
|
+
protected _clone(): this;
|
|
35
|
+
protected _addDefault(node: SchemaNode): SchemaNode;
|
|
36
|
+
}
|
|
37
|
+
//# sourceMappingURL=base.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"base.d.ts","sourceRoot":"","sources":["../../src/schemas/base.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,WAAW,EAEX,YAAY,EACZ,UAAU,EACV,eAAe,EACf,UAAU,EACV,cAAc,EACd,eAAe,EACf,eAAe,EAChB,MAAM,aAAa,CAAC;AAQrB;;;;;GAKG;AACH,eAAO,MAAM,SAAS,MAAM,CAAC;AAO7B,uCAAuC;AACvC,eAAO,MAAM,MAAM,eAA+B,CAAC;AACnD,MAAM,MAAM,MAAM,GAAG,OAAO,MAAM,CAAC;AAiBnC,8BAAsB,UAAU,CAAC,MAAM,GAAG,OAAO,EAAE,OAAO,GAAG,MAAM;IACjE,gEAAgE;IAChE,SAAiB,OAAO,EAAE,OAAO,CAAC;IAClC,gBAAgB,CAAC,aAAa,EAAE,OAAO,GAAG,MAAM,CAAU;IAC1D,gBAAgB,CAAC,eAAe,EAAE,cAAc,GAAG,SAAS,CAAa;IACzE,gBAAgB,CAAC,WAAW,EAAE,OAAO,CAAQ;IAC7C,gBAAgB,CAAC,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,CAAa;IAI5E,KAAK,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO;IAM9B,SAAS,CAAC,KAAK,EAAE,OAAO,GAAG,WAAW,CAAC,OAAO,CAAC;IA+B/C,wCAAwC;IACxC,YAAY,CAAC,KAAK,EAAE,OAAO,EAAE,GAAG,EAAE,YAAY,GAAG,OAAO;IAuBxD,OAAO,CAAC,iBAAiB;IAuDzB,sEAAsE;IACtE,kBAAkB,IAAI,MAAM;IAI5B,QAAQ,CAAC,SAAS,CAAC,KAAK,EAAE,OAAO,EAAE,GAAG,EAAE,YAAY,GAAG,OAAO;IAE9D,QAAQ,CAAC,OAAO,IAAI,UAAU;IAK9B,OAAO,CAAC,KAAK,EAAE,OAAO,GAAG,IAAI;IAM7B,MAAM,CAAC,OAAO,GAAE,cAAmB,GAAG,IAAI;IAM1C,QAAQ,CAAC,WAAW,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,eAAe,GAAG,IAAI;IAO3D,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,IAAI,CAAC,EAAE,eAAe,GAAG,IAAI;IAyBrE,MAAM,CAAC,IAAI,GAAE,UAAuB,GAAG,eAAe;IAkBtD,OAAO,CAAC,qBAAqB;IAqD7B,SAAS,CAAC,MAAM,IAAI,IAAI;IAMxB,SAAS,CAAC,WAAW,CAAC,IAAI,EAAE,UAAU,GAAG,UAAU;CAYpD"}
|