zod-compiler 1.22.0 → 1.22.2
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/README.md +154 -588
- package/dist/cli/commands/generate.d.ts +0 -2
- package/dist/cli/commands/generate.d.ts.map +1 -1
- package/dist/cli/commands/generate.js +0 -2
- package/dist/cli/commands/generate.js.map +1 -1
- package/dist/cli/commands/watch.d.ts +0 -1
- package/dist/cli/commands/watch.d.ts.map +1 -1
- package/dist/cli/commands/watch.js +0 -2
- package/dist/cli/commands/watch.js.map +1 -1
- package/dist/cli/index.js +0 -7
- package/dist/cli/index.js.map +1 -1
- package/dist/core/codegen/build-path.d.ts +48 -0
- package/dist/core/codegen/build-path.d.ts.map +1 -0
- package/dist/core/codegen/build-path.js +642 -0
- package/dist/core/codegen/build-path.js.map +1 -0
- package/dist/core/codegen/context.d.ts +106 -9
- package/dist/core/codegen/context.d.ts.map +1 -1
- package/dist/core/codegen/context.js +89 -39
- package/dist/core/codegen/context.js.map +1 -1
- package/dist/core/codegen/dedupe.d.ts +7 -0
- package/dist/core/codegen/dedupe.d.ts.map +1 -1
- package/dist/core/codegen/dedupe.js +7 -0
- package/dist/core/codegen/dedupe.js.map +1 -1
- package/dist/core/codegen/fast-path.d.ts.map +1 -1
- package/dist/core/codegen/fast-path.js +11 -5
- package/dist/core/codegen/fast-path.js.map +1 -1
- package/dist/core/codegen/index.d.ts.map +1 -1
- package/dist/core/codegen/index.js +95 -5
- package/dist/core/codegen/index.js.map +1 -1
- package/dist/core/codegen/issue-decls.d.ts +40 -0
- package/dist/core/codegen/issue-decls.d.ts.map +1 -1
- package/dist/core/codegen/issue-decls.js +70 -0
- package/dist/core/codegen/issue-decls.js.map +1 -1
- package/dist/core/codegen/regex-unroll.d.ts +36 -0
- package/dist/core/codegen/regex-unroll.d.ts.map +1 -0
- package/dist/core/codegen/regex-unroll.js +231 -0
- package/dist/core/codegen/regex-unroll.js.map +1 -0
- package/dist/core/codegen/schemas/array.d.ts.map +1 -1
- package/dist/core/codegen/schemas/array.js +22 -5
- package/dist/core/codegen/schemas/array.js.map +1 -1
- package/dist/core/codegen/schemas/default.d.ts +15 -0
- package/dist/core/codegen/schemas/default.d.ts.map +1 -1
- package/dist/core/codegen/schemas/default.js +26 -5
- package/dist/core/codegen/schemas/default.js.map +1 -1
- package/dist/core/codegen/schemas/discriminated-union.d.ts.map +1 -1
- package/dist/core/codegen/schemas/discriminated-union.js +3 -3
- package/dist/core/codegen/schemas/discriminated-union.js.map +1 -1
- package/dist/core/codegen/schemas/map.d.ts +17 -0
- package/dist/core/codegen/schemas/map.d.ts.map +1 -1
- package/dist/core/codegen/schemas/map.js +62 -7
- package/dist/core/codegen/schemas/map.js.map +1 -1
- package/dist/core/codegen/schemas/nullable.d.ts.map +1 -1
- package/dist/core/codegen/schemas/nullable.js +2 -4
- package/dist/core/codegen/schemas/nullable.js.map +1 -1
- package/dist/core/codegen/schemas/number.d.ts.map +1 -1
- package/dist/core/codegen/schemas/number.js +25 -0
- package/dist/core/codegen/schemas/number.js.map +1 -1
- package/dist/core/codegen/schemas/object.d.ts.map +1 -1
- package/dist/core/codegen/schemas/object.js +27 -18
- package/dist/core/codegen/schemas/object.js.map +1 -1
- package/dist/core/codegen/schemas/optional.d.ts +10 -0
- package/dist/core/codegen/schemas/optional.d.ts.map +1 -1
- package/dist/core/codegen/schemas/optional.js +4 -6
- package/dist/core/codegen/schemas/optional.js.map +1 -1
- package/dist/core/codegen/schemas/record.d.ts.map +1 -1
- package/dist/core/codegen/schemas/record.js +11 -5
- package/dist/core/codegen/schemas/record.js.map +1 -1
- package/dist/core/codegen/schemas/set.d.ts.map +1 -1
- package/dist/core/codegen/schemas/set.js +11 -7
- package/dist/core/codegen/schemas/set.js.map +1 -1
- package/dist/core/codegen/schemas/string.d.ts +13 -2
- package/dist/core/codegen/schemas/string.d.ts.map +1 -1
- package/dist/core/codegen/schemas/string.js +68 -56
- package/dist/core/codegen/schemas/string.js.map +1 -1
- package/dist/core/codegen/schemas/template-literal.d.ts.map +1 -1
- package/dist/core/codegen/schemas/template-literal.js +9 -1
- package/dist/core/codegen/schemas/template-literal.js.map +1 -1
- package/dist/core/codegen/schemas/tuple.d.ts.map +1 -1
- package/dist/core/codegen/schemas/tuple.js +4 -3
- package/dist/core/codegen/schemas/tuple.js.map +1 -1
- package/dist/core/codegen/schemas/union.d.ts.map +1 -1
- package/dist/core/codegen/schemas/union.js +2 -1
- package/dist/core/codegen/schemas/union.js.map +1 -1
- package/dist/core/codegen/well-known-regex.d.ts +22 -4
- package/dist/core/codegen/well-known-regex.d.ts.map +1 -1
- package/dist/core/codegen/well-known-regex.js +27 -5
- package/dist/core/codegen/well-known-regex.js.map +1 -1
- package/dist/core/extract/extractors/default.d.ts.map +1 -1
- package/dist/core/extract/extractors/default.js +6 -1
- package/dist/core/extract/extractors/default.js.map +1 -1
- package/dist/core/extract/extractors/object.d.ts.map +1 -1
- package/dist/core/extract/extractors/object.js +11 -5
- package/dist/core/extract/extractors/object.js.map +1 -1
- package/dist/core/extract/index.d.ts +3 -3
- package/dist/core/extract/index.d.ts.map +1 -1
- package/dist/core/extract/index.js +2 -2
- package/dist/core/extract/index.js.map +1 -1
- package/dist/core/extract/registry.d.ts +2 -2
- package/dist/core/extract/registry.d.ts.map +1 -1
- package/dist/core/extract/registry.js +4 -5
- package/dist/core/extract/registry.js.map +1 -1
- package/dist/core/extract/types.d.ts +0 -11
- package/dist/core/extract/types.d.ts.map +1 -1
- package/dist/core/iife.d.ts.map +1 -1
- package/dist/core/iife.js +3 -2
- package/dist/core/iife.js.map +1 -1
- package/dist/core/pipeline.d.ts +0 -2
- package/dist/core/pipeline.d.ts.map +1 -1
- package/dist/core/pipeline.js +1 -3
- package/dist/core/pipeline.js.map +1 -1
- package/dist/core/types.d.ts +11 -0
- package/dist/core/types.d.ts.map +1 -1
- package/dist/swc.d.ts.map +1 -1
- package/dist/swc.js +0 -1
- package/dist/swc.js.map +1 -1
- package/dist/unplugin/hoist-compile.d.ts +1 -1
- package/dist/unplugin/hoist-compile.d.ts.map +1 -1
- package/dist/unplugin/hoist-compile.js +4 -4
- package/dist/unplugin/hoist-compile.js.map +1 -1
- package/dist/unplugin/index.d.ts.map +1 -1
- package/dist/unplugin/index.js +0 -3
- package/dist/unplugin/index.js.map +1 -1
- package/dist/unplugin/transform.d.ts.map +1 -1
- package/dist/unplugin/transform.js +1 -2
- package/dist/unplugin/transform.js.map +1 -1
- package/dist/unplugin/types.d.ts +0 -23
- package/dist/unplugin/types.d.ts.map +1 -1
- package/dist/unplugin/types.js.map +1 -1
- package/dist/unplugin/virtual.d.ts.map +1 -1
- package/dist/unplugin/virtual.js +11 -7
- package/dist/unplugin/virtual.js.map +1 -1
- package/package.json +1 -1
|
@@ -1,6 +1,7 @@
|
|
|
1
|
-
import { checkPriority, emitEffectCallable, extendPath, hasMutation } from "../context.js";
|
|
1
|
+
import { checkPriority, declareFastTemps, emitEffectCallable, emitRuntimeHelper, extendPath, hasMutation, } from "../context.js";
|
|
2
2
|
import { emit } from "../emit.js";
|
|
3
3
|
import { invalidType, tooBig, tooSmall } from "../emit-issue.js";
|
|
4
|
+
import { ZC_AB_DECL } from "../issue-decls.js";
|
|
4
5
|
import { refineCheck, superRefineCheck, superRefineFastTest } from "./effect.js";
|
|
5
6
|
export function slowArray(ir, g) {
|
|
6
7
|
let code = emit `
|
|
@@ -16,6 +17,16 @@ export function slowArray(ir, g) {
|
|
|
16
17
|
// is surfaced before too_small/too_big. Emitting the checks first would
|
|
17
18
|
// reverse that order (the slow path collects all issues with no
|
|
18
19
|
// short-circuit, so insertion order IS issue order).
|
|
20
|
+
// Snapshot before the elements, for the same reason slowObject does: the
|
|
21
|
+
// array's refine effects are gated on zod's abort rule over the issues THIS
|
|
22
|
+
// node's parse produced. Size checks are exempt — zod's length checks declare
|
|
23
|
+
// a `when` predicate, which bypasses the abort gate, so
|
|
24
|
+
// `z.array(z.string()).min(2)` still reports too_small next to a bad element's
|
|
25
|
+
// invalid_type.
|
|
26
|
+
const hasRefine = ir.checks.some((c) => c.kind === "refine_effect" || c.kind === "super_refine_effect");
|
|
27
|
+
const refineMark = hasRefine ? g.temp("rm") : "";
|
|
28
|
+
if (refineMark)
|
|
29
|
+
code += `var ${refineMark}=${g.issues}.length;`;
|
|
19
30
|
const idxVar = g.temp("i");
|
|
20
31
|
const elemExpr = `${g.input}[${idxVar}]`;
|
|
21
32
|
const elemPath = extendPath(g.path, idxVar);
|
|
@@ -23,6 +34,11 @@ export function slowArray(ir, g) {
|
|
|
23
34
|
for(var ${idxVar}=0;${idxVar}<${g.input}.length;${idxVar}++){
|
|
24
35
|
${g.visit(ir.element, { input: elemExpr, output: elemExpr, path: elemPath })}
|
|
25
36
|
}`;
|
|
37
|
+
/** Wrap one refine effect in zod's abort gate, preserving declaration order. */
|
|
38
|
+
const gated = (body) => {
|
|
39
|
+
const aborted = emitRuntimeHelper(g.ctx, "__zcAb", ZC_AB_DECL);
|
|
40
|
+
return `if(!${aborted}(${g.issues},${refineMark})){${body}}`;
|
|
41
|
+
};
|
|
26
42
|
for (const check of ir.checks) {
|
|
27
43
|
switch (check.kind) {
|
|
28
44
|
case "min_length":
|
|
@@ -46,10 +62,10 @@ export function slowArray(ir, g) {
|
|
|
46
62
|
}`;
|
|
47
63
|
break;
|
|
48
64
|
case "refine_effect":
|
|
49
|
-
code += refineCheck(check, g.input, g);
|
|
65
|
+
code += gated(refineCheck(check, g.input, g));
|
|
50
66
|
break;
|
|
51
67
|
case "super_refine_effect":
|
|
52
|
-
code += superRefineCheck(check, g.input, g);
|
|
68
|
+
code += gated(superRefineCheck(check, g.input, g));
|
|
53
69
|
break;
|
|
54
70
|
}
|
|
55
71
|
}
|
|
@@ -77,12 +93,13 @@ export function fastArray(ir, g) {
|
|
|
77
93
|
// Element validation via preamble helper (avoids .every() closure allocation).
|
|
78
94
|
// Fresh scope: the helper is its own function, size-gated independently.
|
|
79
95
|
const elemVar = g.temp("ae");
|
|
80
|
-
const
|
|
96
|
+
const elemGen = g.scoped(elemVar);
|
|
97
|
+
const elemCheck = elemGen.visit(ir.element);
|
|
81
98
|
if (elemCheck === null)
|
|
82
99
|
return null;
|
|
83
100
|
if (elemCheck !== "true") {
|
|
84
101
|
const helperName = g.temp("af");
|
|
85
|
-
g.ctx.preamble.push(`function ${helperName}(a){for(var ${elemVar},i=0;i<a.length;i++){${elemVar}=a[i];if(!(${elemCheck})){return false;}}return true;}`);
|
|
102
|
+
g.ctx.preamble.push(`function ${helperName}(a){${declareFastTemps(elemGen.scope)}for(var ${elemVar},i=0;i<a.length;i++){${elemVar}=a[i];if(!(${elemCheck})){return false;}}return true;}`);
|
|
86
103
|
parts.push(`${helperName}(${x})`);
|
|
87
104
|
}
|
|
88
105
|
// Refine effect checks (appended last — run after cheap checks short-circuit)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"array.js","sourceRoot":"","sources":["../../../../src/core/codegen/schemas/array.ts"],"names":[],"mappings":"AAEA,OAAO,
|
|
1
|
+
{"version":3,"file":"array.js","sourceRoot":"","sources":["../../../../src/core/codegen/schemas/array.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,20 @@
|
|
|
1
1
|
import type { DefaultIR } from "../../types.js";
|
|
2
2
|
import type { FastGen, SlowGen } from "../context.js";
|
|
3
|
+
/**
|
|
4
|
+
* Expression for the declared default value, read off the retained schema so a
|
|
5
|
+
* reference-typed default keeps zod's identity (one shared object, not a copy).
|
|
6
|
+
*/
|
|
7
|
+
export declare function defaultValueExpr(ir: DefaultIR): string;
|
|
8
|
+
/**
|
|
9
|
+
* Zod's `handleDefaultResult`: after the inner schema runs on a DEFINED input,
|
|
10
|
+
* an `undefined` result gets the default applied too — so
|
|
11
|
+
* `z.string().transform(() => undefined).default("d")` yields "d", not undefined.
|
|
12
|
+
*
|
|
13
|
+
* Emitted only when the inner can actually yield `undefined`, which is what
|
|
14
|
+
* `rejectsUndefined` decides; the overwhelmingly common
|
|
15
|
+
* `z.number().default(1)` shape therefore pays nothing for it.
|
|
16
|
+
*/
|
|
17
|
+
export declare function needsPostInnerDefault(ir: DefaultIR): boolean;
|
|
3
18
|
export declare function slowDefault(ir: DefaultIR, g: SlowGen): string;
|
|
4
19
|
export declare function fastDefault(ir: DefaultIR, g: FastGen): string | null;
|
|
5
20
|
//# sourceMappingURL=default.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"default.d.ts","sourceRoot":"","sources":["../../../../src/core/codegen/schemas/default.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAChD,OAAO,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"default.d.ts","sourceRoot":"","sources":["../../../../src/core/codegen/schemas/default.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAChD,OAAO,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAItD;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,EAAE,EAAE,SAAS,GAAG,MAAM,CAEtD;AAED;;;;;;;;GAQG;AACH,wBAAgB,qBAAqB,CAAC,EAAE,EAAE,SAAS,GAAG,OAAO,CAE5D;AAED,wBAAgB,WAAW,CAAC,EAAE,EAAE,SAAS,EAAE,CAAC,EAAE,OAAO,GAAG,MAAM,CAgB7D;AAED,wBAAgB,WAAW,CAAC,EAAE,EAAE,SAAS,EAAE,CAAC,EAAE,OAAO,GAAG,MAAM,GAAG,IAAI,CAEpE"}
|
|
@@ -1,21 +1,42 @@
|
|
|
1
|
+
import { fastSentinelWrapper, rejectsUndefined } from "../context.js";
|
|
1
2
|
import { emit } from "../emit.js";
|
|
3
|
+
/**
|
|
4
|
+
* Expression for the declared default value, read off the retained schema so a
|
|
5
|
+
* reference-typed default keeps zod's identity (one shared object, not a copy).
|
|
6
|
+
*/
|
|
7
|
+
export function defaultValueExpr(ir) {
|
|
8
|
+
return `__rf[${ir.refIndex}]._zod.def.defaultValue`;
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* Zod's `handleDefaultResult`: after the inner schema runs on a DEFINED input,
|
|
12
|
+
* an `undefined` result gets the default applied too — so
|
|
13
|
+
* `z.string().transform(() => undefined).default("d")` yields "d", not undefined.
|
|
14
|
+
*
|
|
15
|
+
* Emitted only when the inner can actually yield `undefined`, which is what
|
|
16
|
+
* `rejectsUndefined` decides; the overwhelmingly common
|
|
17
|
+
* `z.number().default(1)` shape therefore pays nothing for it.
|
|
18
|
+
*/
|
|
19
|
+
export function needsPostInnerDefault(ir) {
|
|
20
|
+
return !rejectsUndefined(ir.inner);
|
|
21
|
+
}
|
|
2
22
|
export function slowDefault(ir, g) {
|
|
3
23
|
// For a defined value, zod runs the inner schema and returns its payload
|
|
4
24
|
// unchanged — so forward the union abort flag like the other pass-throughs
|
|
5
25
|
// (a pipe inner whose `in` fails must abort this option). The default-value
|
|
6
26
|
// branch produces no issues, so it never aborts.
|
|
27
|
+
const reapply = needsPostInnerDefault(ir)
|
|
28
|
+
? `if(${g.output}===undefined){${g.output}=${defaultValueExpr(ir)};}`
|
|
29
|
+
: "";
|
|
7
30
|
return emit `
|
|
8
31
|
if(${g.input}===undefined){
|
|
9
|
-
${g.output}
|
|
32
|
+
${g.output}=${defaultValueExpr(ir)};
|
|
10
33
|
}else{
|
|
11
34
|
${g.visit(ir.inner, { input: g.output, output: g.output, aborted: g.aborted })}
|
|
35
|
+
${reapply}
|
|
12
36
|
}
|
|
13
37
|
`;
|
|
14
38
|
}
|
|
15
39
|
export function fastDefault(ir, g) {
|
|
16
|
-
|
|
17
|
-
if (inner === null)
|
|
18
|
-
return null;
|
|
19
|
-
return `(${g.input}!==undefined&&(${inner}))`;
|
|
40
|
+
return fastSentinelWrapper(g, ir.inner, "!==undefined", "&&");
|
|
20
41
|
}
|
|
21
42
|
//# sourceMappingURL=default.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"default.js","sourceRoot":"","sources":["../../../../src/core/codegen/schemas/default.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAElC,MAAM,UAAU,WAAW,CAAC,EAAa,EAAE,CAAU;IACnD,yEAAyE;IACzE,2EAA2E;IAC3E,4EAA4E;IAC5E,iDAAiD;IACjD,OAAO,IAAI,CAAA;SACJ,CAAC,CAAC,KAAK;QACR,CAAC,CAAC,MAAM,
|
|
1
|
+
{"version":3,"file":"default.js","sourceRoot":"","sources":["../../../../src/core/codegen/schemas/default.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACtE,OAAO,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAElC;;;GAGG;AACH,MAAM,UAAU,gBAAgB,CAAC,EAAa;IAC5C,OAAO,QAAQ,EAAE,CAAC,QAAQ,yBAAyB,CAAC;AACtD,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,qBAAqB,CAAC,EAAa;IACjD,OAAO,CAAC,gBAAgB,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC;AACrC,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,EAAa,EAAE,CAAU;IACnD,yEAAyE;IACzE,2EAA2E;IAC3E,4EAA4E;IAC5E,iDAAiD;IACjD,MAAM,OAAO,GAAG,qBAAqB,CAAC,EAAE,CAAC;QACvC,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,iBAAiB,CAAC,CAAC,MAAM,IAAI,gBAAgB,CAAC,EAAE,CAAC,IAAI;QACrE,CAAC,CAAC,EAAE,CAAC;IACP,OAAO,IAAI,CAAA;SACJ,CAAC,CAAC,KAAK;QACR,CAAC,CAAC,MAAM,IAAI,gBAAgB,CAAC,EAAE,CAAC;;QAEhC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC;QAC5E,OAAO;;GAEZ,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,EAAa,EAAE,CAAU;IACnD,OAAO,mBAAmB,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,EAAE,cAAc,EAAE,IAAI,CAAC,CAAC;AAChE,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"discriminated-union.d.ts","sourceRoot":"","sources":["../../../../src/core/codegen/schemas/discriminated-union.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAY,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC/E,OAAO,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"discriminated-union.d.ts","sourceRoot":"","sources":["../../../../src/core/codegen/schemas/discriminated-union.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAY,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC/E,OAAO,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAYtD,+DAA+D;AAC/D,KAAK,iBAAiB,GAAG,oBAAoB,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC;AAE/D,wBAAgB,sBAAsB,CACpC,EAAE,EAAE,QAAQ,GAAG;IAAE,IAAI,EAAE,oBAAoB,CAAA;CAAE,EAC7C,CAAC,EAAE,OAAO,GACT,MAAM,CAsCR;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,2BAA2B,CACzC,CAAC,EAAE,OAAO,EACV,aAAa,EAAE,MAAM,EACrB,KAAK,EAAE,SAAS,iBAAiB,EAAE,EACnC,OAAO,EAAE,SAAS,QAAQ,EAAE,GAC3B,MAAM,GAAG,IAAI,CAiDf;AAoCD,wBAAgB,sBAAsB,CAAC,EAAE,EAAE,oBAAoB,EAAE,CAAC,EAAE,OAAO,GAAG,MAAM,GAAG,IAAI,CAE1F;AA0BD;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,wBAAwB,CACtC,OAAO,EAAE,SAAS,QAAQ,EAAE,GAC3B;IAAE,aAAa,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,iBAAiB,EAAE,CAAA;CAAE,GAAG,IAAI,CA2B9D"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { emitConstant, escapeString, extendPath, hasMutation, literalToJs } from "../context.js";
|
|
1
|
+
import { declareFastTemps, emitConstant, escapeString, extendPath, hasMutation, literalToJs, } from "../context.js";
|
|
2
2
|
import { emit } from "../emit.js";
|
|
3
3
|
import { invalidType } from "../emit-issue.js";
|
|
4
4
|
export function slowDiscriminatedUnion(ir, g) {
|
|
@@ -71,7 +71,7 @@ export function emitFastDiscriminatedSwitch(g, discriminator, cases, options) {
|
|
|
71
71
|
return null;
|
|
72
72
|
caseStrs.push(`case ${literalToJs(value)}:return ${check};`);
|
|
73
73
|
}
|
|
74
|
-
g.ctx.preamble.push(`function ${helperName}(${helperParam}){switch(${helperParam}[${discKey}]){${caseStrs.join("")}default:return false;}}`);
|
|
74
|
+
g.ctx.preamble.push(`function ${helperName}(${helperParam}){${declareFastTemps(body.scope)}switch(${helperParam}[${discKey}]){${caseStrs.join("")}default:return false;}}`);
|
|
75
75
|
}
|
|
76
76
|
else {
|
|
77
77
|
// Dispatch through a string→ordinal table, then switch on the ordinal. V8
|
|
@@ -94,7 +94,7 @@ export function emitFastDiscriminatedSwitch(g, discriminator, cases, options) {
|
|
|
94
94
|
}
|
|
95
95
|
const tableVar = emitConstant(g.ctx, "dt", table.initializer);
|
|
96
96
|
const t = g.temp("dv");
|
|
97
|
-
g.ctx.preamble.push(`function ${helperName}(${helperParam}){var ${t}=${helperParam}[${discKey}];` +
|
|
97
|
+
g.ctx.preamble.push(`function ${helperName}(${helperParam}){${declareFastTemps(body.scope)}var ${t}=${helperParam}[${discKey}];` +
|
|
98
98
|
`switch(typeof ${t}==="string"?${tableVar}[${t}]:0){${caseStrs.join("")}default:return false;}}`);
|
|
99
99
|
}
|
|
100
100
|
return `typeof ${x}==="object"&&${x}!==null&&!Array.isArray(${x})&&${helperName}(${x})`;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"discriminated-union.js","sourceRoot":"","sources":["../../../../src/core/codegen/schemas/discriminated-union.ts"],"names":[],"mappings":"AAEA,OAAO,
|
|
1
|
+
{"version":3,"file":"discriminated-union.js","sourceRoot":"","sources":["../../../../src/core/codegen/schemas/discriminated-union.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,gBAAgB,EAChB,YAAY,EACZ,YAAY,EACZ,UAAU,EACV,WAAW,EACX,WAAW,GACZ,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAClC,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAK/C,MAAM,UAAU,sBAAsB,CACpC,EAA6C,EAC7C,CAAU;IAEV,MAAM,OAAO,GAAG,YAAY,CAAC,EAAE,CAAC,aAAa,CAAC,CAAC;IAE/C,IAAI,IAAI,GAAG,IAAI,CAAA;gBACD,CAAC,CAAC,KAAK,gBAAgB,CAAC,CAAC,KAAK,0BAA0B,CAAC,CAAC,KAAK;QACvE,WAAW,CAAC,CAAC,EAAE,QAAQ,CAAC;WACrB,CAAC;IAEV,MAAM,MAAM,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC5B,IAAI,IAAI,OAAO,MAAM,IAAI,CAAC,CAAC,KAAK,WAAW,MAAM,IAAI,OAAO,KAAK,CAAC;IAElE,KAAK,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,KAAK,EAAE,CAAC;QAChD,MAAM,MAAM,GAAG,EAAE,CAAC,OAAO,CAAC,KAAK,CAAa,CAAC;QAC7C,IAAI,IAAI,IAAI,CAAA;aACH,WAAW,CAAC,KAAK,CAAC;UACrB,CAAC,CAAC,KAAK,CAAC,MAAM,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;eAC7C,CAAC;IACd,CAAC;IAED,MAAM,WAAW,GAAG,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACxE,MAAM,OAAO,GAAG,CAAC,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,YAAY,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;IACvF,IAAI,IAAI,IAAI,CAAA;;QAEN,CAAC,CAAC,MAAM,wFAAwF,OAAO,aAAa,WAAW,IAAI,OAAO,UAAU,CAAC,CAAC,KAAK,SAAS,UAAU,CAAC,CAAC,CAAC,IAAI,EAAE,OAAO,CAAC;MACjM,CAAC;IACL,uEAAuE;IACvE,4EAA4E;IAC5E,+EAA+E;IAC/E,gFAAgF;IAChF,6EAA6E;IAC7E,+EAA+E;IAC/E,gFAAgF;IAChF,yDAAyD;IACzD,IAAI,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC;QACjC,IAAI,IAAI,GAAG,CAAC,CAAC,MAAM,IAAI,MAAM,GAAG,CAAC;IACnC,CAAC;IACD,IAAI,IAAI,GAAG,CAAC;IACZ,OAAO,GAAG,IAAI,IAAI,CAAC;AACrB,CAAC;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,UAAU,2BAA2B,CACzC,CAAU,EACV,aAAqB,EACrB,KAAmC,EACnC,OAA4B;IAE5B,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC;IAClB,MAAM,OAAO,GAAG,YAAY,CAAC,aAAa,CAAC,CAAC;IAC5C,MAAM,UAAU,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAChC,MAAM,WAAW,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAEjC,6EAA6E;IAC7E,8EAA8E;IAC9E,2EAA2E;IAC3E,MAAM,IAAI,GAAG,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;IACnC,MAAM,KAAK,GAAG,mBAAmB,CAAC,KAAK,CAAC,CAAC;IAEzC,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;QACnB,MAAM,QAAQ,GAAa,EAAE,CAAC;QAC9B,KAAK,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,KAAK,EAAE,CAAC;YAC7C,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAa,EAAE,EAAE,WAAW,EAAE,aAAa,EAAE,CAAC,CAAC;YACrF,IAAI,KAAK,KAAK,IAAI;gBAAE,OAAO,IAAI,CAAC;YAChC,QAAQ,CAAC,IAAI,CAAC,QAAQ,WAAW,CAAC,KAAK,CAAC,WAAW,KAAK,GAAG,CAAC,CAAC;QAC/D,CAAC;QACD,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CACjB,YAAY,UAAU,IAAI,WAAW,KAAK,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,WAAW,IAAI,OAAO,MAAM,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,yBAAyB,CACvJ,CAAC;IACJ,CAAC;SAAM,CAAC;QACN,0EAA0E;QAC1E,2EAA2E;QAC3E,sEAAsE;QACtE,wEAAwE;QACxE,0EAA0E;QAC1E,kEAAkE;QAClE,EAAE;QACF,wEAAwE;QACxE,4EAA4E;QAC5E,0EAA0E;QAC1E,uEAAuE;QACvE,MAAM,QAAQ,GAAa,EAAE,CAAC;QAC9B,KAAK,MAAM,CAAC,WAAW,EAAE,OAAO,CAAC,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC;YACpD,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,WAAW,CAAa,EAAE,EAAE,WAAW,EAAE,aAAa,EAAE,CAAC,CAAC;YAC3F,IAAI,KAAK,KAAK,IAAI;gBAAE,OAAO,IAAI,CAAC;YAChC,QAAQ,CAAC,IAAI,CAAC,QAAQ,OAAO,WAAW,KAAK,GAAG,CAAC,CAAC;QACpD,CAAC;QACD,MAAM,QAAQ,GAAG,YAAY,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,EAAE,KAAK,CAAC,WAAW,CAAC,CAAC;QAC9D,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACvB,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CACjB,YAAY,UAAU,IAAI,WAAW,KAAK,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,WAAW,IAAI,OAAO,IAAI;YAC1G,iBAAiB,CAAC,eAAe,QAAQ,IAAI,CAAC,QAAQ,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,yBAAyB,CACnG,CAAC;IACJ,CAAC;IAED,OAAO,UAAU,CAAC,gBAAgB,CAAC,2BAA2B,CAAC,MAAM,UAAU,IAAI,CAAC,GAAG,CAAC;AAC1F,CAAC;AAED;;;;GAIG;AACH,MAAM,kBAAkB,GAAG,CAAC,CAAC;AAE7B;;;;;;;GAOG;AACH,SAAS,mBAAmB,CAC1B,KAAmC;IAEnC,IAAI,KAAK,CAAC,MAAM,GAAG,kBAAkB;QAAE,OAAO,IAAI,CAAC;IACnD,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,CAAC,KAAK,KAAK,QAAQ,IAAI,CAAC,CAAC,KAAK,KAAK,WAAW,CAAC;QAAE,OAAO,IAAI,CAAC;IAE7F,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAkB,CAAC;IAC3C,MAAM,OAAO,GAAa,EAAE,CAAC;IAC7B,KAAK,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,KAAK,EAAE,CAAC;QACtC,IAAI,OAAO,GAAG,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QACnC,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;YAC1B,OAAO,GAAG,QAAQ,CAAC,IAAI,GAAG,CAAC,CAAC;YAC5B,QAAQ,CAAC,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAChC,CAAC;QACD,OAAO,CAAC,IAAI,CAAC,GAAG,YAAY,CAAC,KAAe,CAAC,IAAI,OAAO,EAAE,CAAC,CAAC;IAC9D,CAAC;IACD,OAAO,EAAE,WAAW,EAAE,IAAI,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,QAAQ,EAAE,CAAC;AAC7D,CAAC;AAED,MAAM,UAAU,sBAAsB,CAAC,EAAwB,EAAE,CAAU;IACzE,OAAO,2BAA2B,CAAC,CAAC,EAAE,EAAE,CAAC,aAAa,EAAE,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,OAAO,CAAC,CAAC;AAChF,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,6BAA6B,GAAG,CAAC,CAAC;AAExC,iFAAiF;AACjF,SAAS,wBAAwB,CAC/B,CAAwD;IAExD,OAAO,CACL,CAAC,KAAK,IAAI;QACV,OAAO,CAAC,KAAK,QAAQ;QACrB,OAAO,CAAC,KAAK,SAAS;QACtB,OAAO,CAAC,KAAK,QAAQ;QACrB,CAAC,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAC5C,CAAC;AACJ,CAAC;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,UAAU,wBAAwB,CACtC,OAA4B;IAE5B,IAAI,OAAO,CAAC,MAAM,GAAG,6BAA6B;QAAE,OAAO,IAAI,CAAC;IAChE,MAAM,OAAO,GAAe,EAAE,CAAC;IAC/B,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC7B,IAAI,MAAM,CAAC,IAAI,KAAK,QAAQ;YAAE,OAAO,IAAI,CAAC;QAC1C,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACvB,CAAC;IACD,MAAM,KAAK,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;IACzB,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,IAAI,CAAC,CAAC,qCAAqC;IAE3E,wEAAwE;IACxE,SAAS,EAAE,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE,CAAC;QAC3D,MAAM,IAAI,GAAG,IAAI,GAAG,EAA6C,CAAC;QAClE,MAAM,KAAK,GAAwB,EAAE,CAAC;QACtC,KAAK,MAAM,CAAC,CAAC,EAAE,MAAM,CAAC,IAAI,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC;YAC5C,MAAM,IAAI,GAAG,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;YACpC,IAAI,IAAI,KAAK,SAAS,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS;gBAAE,SAAS,SAAS,CAAC;YACtE,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;gBAChC,IAAI,CAAC,wBAAwB,CAAC,KAAK,CAAC;oBAAE,SAAS,SAAS,CAAC;gBACzD,IAAI,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC;oBAAE,SAAS,SAAS,CAAC,CAAC,oCAAoC;gBAC7E,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;gBAChB,KAAK,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC;YACnC,CAAC;QACH,CAAC;QACD,OAAO,EAAE,aAAa,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC;IACvC,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC"}
|
|
@@ -1,5 +1,22 @@
|
|
|
1
1
|
import type { MapIR, SchemaIR } from "../../types.js";
|
|
2
2
|
import type { FastGen, SlowGen } from "../context.js";
|
|
3
|
+
/**
|
|
4
|
+
* Map entries report through zod's `handleMapResult`, which branches on the
|
|
5
|
+
* RUNTIME type of the key rather than on the key schema:
|
|
6
|
+
*
|
|
7
|
+
* - a property-key type (string | number | symbol) addresses the entry, so key
|
|
8
|
+
* AND value issues are prefixed with the key itself → `[...mapPath, key, …]`.
|
|
9
|
+
* This holds even when the key is the wrong type for the schema — a `number`
|
|
10
|
+
* key under `z.map(z.string(), …)` still reports at `[5]`.
|
|
11
|
+
* - anything else (boolean, bigint, object, …) cannot be a path segment, so the
|
|
12
|
+
* issues are WRAPPED: key issues into one `invalid_key`, value issues into one
|
|
13
|
+
* `invalid_element` carrying the offending `key`, both at the map's own path
|
|
14
|
+
* with the originals nested and finalized.
|
|
15
|
+
*
|
|
16
|
+
* The key is snapshotted before validation because zod passes the ORIGINAL key
|
|
17
|
+
* to both the type test and the prefix, and a mutating key schema (`.trim()`)
|
|
18
|
+
* would otherwise have rewritten it by then.
|
|
19
|
+
*/
|
|
3
20
|
export declare function slowMap(ir: SchemaIR & {
|
|
4
21
|
type: "map";
|
|
5
22
|
}, g: SlowGen): string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"map.d.ts","sourceRoot":"","sources":["../../../../src/core/codegen/schemas/map.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AACtD,OAAO,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"map.d.ts","sourceRoot":"","sources":["../../../../src/core/codegen/schemas/map.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AACtD,OAAO,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAMtD;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,OAAO,CAAC,EAAE,EAAE,QAAQ,GAAG;IAAE,IAAI,EAAE,KAAK,CAAA;CAAE,EAAE,CAAC,EAAE,OAAO,GAAG,MAAM,CA6D1E;AAED,wBAAgB,OAAO,CAAC,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,OAAO,GAAG,MAAM,GAAG,IAAI,CAwB5D"}
|
|
@@ -1,24 +1,79 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { declareFastTemps, emitRuntimeHelper, hasMutation } from "../context.js";
|
|
2
2
|
import { emit } from "../emit.js";
|
|
3
3
|
import { invalidType } from "../emit-issue.js";
|
|
4
|
+
import { propertyKeyTest, ZC_FZ_DECL, ZC_PFX_DECL } from "../issue-decls.js";
|
|
5
|
+
/**
|
|
6
|
+
* Map entries report through zod's `handleMapResult`, which branches on the
|
|
7
|
+
* RUNTIME type of the key rather than on the key schema:
|
|
8
|
+
*
|
|
9
|
+
* - a property-key type (string | number | symbol) addresses the entry, so key
|
|
10
|
+
* AND value issues are prefixed with the key itself → `[...mapPath, key, …]`.
|
|
11
|
+
* This holds even when the key is the wrong type for the schema — a `number`
|
|
12
|
+
* key under `z.map(z.string(), …)` still reports at `[5]`.
|
|
13
|
+
* - anything else (boolean, bigint, object, …) cannot be a path segment, so the
|
|
14
|
+
* issues are WRAPPED: key issues into one `invalid_key`, value issues into one
|
|
15
|
+
* `invalid_element` carrying the offending `key`, both at the map's own path
|
|
16
|
+
* with the originals nested and finalized.
|
|
17
|
+
*
|
|
18
|
+
* The key is snapshotted before validation because zod passes the ORIGINAL key
|
|
19
|
+
* to both the type test and the prefix, and a mutating key schema (`.trim()`)
|
|
20
|
+
* would otherwise have rewritten it by then.
|
|
21
|
+
*/
|
|
4
22
|
export function slowMap(ir, g) {
|
|
5
23
|
const entryVar = g.temp("map_e");
|
|
6
|
-
const
|
|
24
|
+
const keyVar = g.temp("map_k");
|
|
25
|
+
const pkVar = g.temp("map_pk");
|
|
26
|
+
const keyIssues = g.temp("map_ki");
|
|
27
|
+
const valIssues = g.temp("map_vi");
|
|
7
28
|
// Mutating key/value schemas (coerce, .trim(), url) rewrite the entry tuple,
|
|
8
29
|
// which a Map cannot reflect — rebuild into a fresh Map (mirrors Zod).
|
|
9
30
|
const mutates = hasMutation(ir.keyType) || hasMutation(ir.valueType);
|
|
10
31
|
const rebuiltVar = mutates ? g.temp("map_n") : "";
|
|
32
|
+
const msgProp = g.typeMsg === undefined ? "" : `,message:${JSON.stringify(g.typeMsg)}`;
|
|
33
|
+
const fz = emitRuntimeHelper(g.ctx, "__zcFz", ZC_FZ_DECL);
|
|
34
|
+
const pfx = emitRuntimeHelper(g.ctx, "__zcPfx", ZC_PFX_DECL);
|
|
35
|
+
// Key and value are validated into scratch arrays at a path RELATIVE to the
|
|
36
|
+
// entry, exactly as zod runs them on a fresh payload — whichever branch the
|
|
37
|
+
// key's type selects then decides where those paths get rooted.
|
|
38
|
+
const keyCode = g.visit(ir.keyType, {
|
|
39
|
+
input: `${entryVar}[0]`,
|
|
40
|
+
output: `${entryVar}[0]`,
|
|
41
|
+
path: "[]",
|
|
42
|
+
issues: keyIssues,
|
|
43
|
+
});
|
|
44
|
+
const valCode = g.visit(ir.valueType, {
|
|
45
|
+
input: `${entryVar}[1]`,
|
|
46
|
+
output: `${entryVar}[1]`,
|
|
47
|
+
path: "[]",
|
|
48
|
+
issues: valIssues,
|
|
49
|
+
});
|
|
11
50
|
return `${emit `
|
|
12
51
|
if(!(${g.input} instanceof Map)){
|
|
13
52
|
${invalidType(g, "map")}
|
|
14
53
|
}else{
|
|
15
54
|
${mutates ? `var ${rebuiltVar}=new Map();` : ""}
|
|
16
|
-
var ${idxVar}=0;
|
|
17
55
|
for(var ${entryVar} of ${g.input}){
|
|
18
|
-
${
|
|
19
|
-
${
|
|
56
|
+
var ${keyVar}=${entryVar}[0];
|
|
57
|
+
var ${pkVar}=${propertyKeyTest(keyVar)};
|
|
58
|
+
var ${keyIssues}=[];
|
|
59
|
+
${keyCode}
|
|
60
|
+
if(${keyIssues}.length>0){
|
|
61
|
+
if(${pkVar}){
|
|
62
|
+
${pfx}(${g.issues},${keyIssues},${g.path},${keyVar});
|
|
63
|
+
}else{
|
|
64
|
+
${g.issues}.push({code:"invalid_key",origin:"map"${msgProp},input:${g.input},path:${g.path},issues:${fz}(${keyIssues})});
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
var ${valIssues}=[];
|
|
68
|
+
${valCode}
|
|
69
|
+
if(${valIssues}.length>0){
|
|
70
|
+
if(${pkVar}){
|
|
71
|
+
${pfx}(${g.issues},${valIssues},${g.path},${keyVar});
|
|
72
|
+
}else{
|
|
73
|
+
${g.issues}.push({code:"invalid_element",origin:"map",key:${keyVar}${msgProp},input:${g.input},path:${g.path},issues:${fz}(${valIssues})});
|
|
74
|
+
}
|
|
75
|
+
}
|
|
20
76
|
${mutates ? `${rebuiltVar}.set(${entryVar}[0],${entryVar}[1]);` : ""}
|
|
21
|
-
${idxVar}++;
|
|
22
77
|
}
|
|
23
78
|
${mutates ? `${g.output}=${rebuiltVar};` : ""}
|
|
24
79
|
}
|
|
@@ -41,7 +96,7 @@ export function fastMap(ir, g) {
|
|
|
41
96
|
if (keyCheck !== "true" || valCheck !== "true") {
|
|
42
97
|
const combined = [keyCheck, valCheck].filter((c) => c !== "true").join("&&");
|
|
43
98
|
const helperName = g.temp("mh");
|
|
44
|
-
g.ctx.preamble.push(`function ${helperName}(m){for(var ${entryVar} of m){if(!(${combined})){return false;}}return true;}`);
|
|
99
|
+
g.ctx.preamble.push(`function ${helperName}(m){${declareFastTemps(body.scope)}for(var ${entryVar} of m){if(!(${combined})){return false;}}return true;}`);
|
|
45
100
|
parts.push(`${helperName}(${x})`);
|
|
46
101
|
}
|
|
47
102
|
return parts.join("&&");
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"map.js","sourceRoot":"","sources":["../../../../src/core/codegen/schemas/map.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"map.js","sourceRoot":"","sources":["../../../../src/core/codegen/schemas/map.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"nullable.d.ts","sourceRoot":"","sources":["../../../../src/core/codegen/schemas/nullable.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC3D,OAAO,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"nullable.d.ts","sourceRoot":"","sources":["../../../../src/core/codegen/schemas/nullable.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC3D,OAAO,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAItD,wBAAgB,YAAY,CAAC,EAAE,EAAE,QAAQ,GAAG;IAAE,IAAI,EAAE,UAAU,CAAA;CAAE,EAAE,CAAC,EAAE,OAAO,GAAG,MAAM,CAOpF;AAED,wBAAgB,YAAY,CAAC,EAAE,EAAE,UAAU,EAAE,CAAC,EAAE,OAAO,GAAG,MAAM,GAAG,IAAI,CAEtE"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { fastSentinelWrapper } from "../context.js";
|
|
1
2
|
import { emit } from "../emit.js";
|
|
2
3
|
export function slowNullable(ir, g) {
|
|
3
4
|
// Pass-through wrapper: forward the union abort flag (see slowOptional).
|
|
@@ -8,9 +9,6 @@ export function slowNullable(ir, g) {
|
|
|
8
9
|
`}\n`;
|
|
9
10
|
}
|
|
10
11
|
export function fastNullable(ir, g) {
|
|
11
|
-
|
|
12
|
-
if (inner === null)
|
|
13
|
-
return null;
|
|
14
|
-
return `(${g.input}===null||(${inner}))`;
|
|
12
|
+
return fastSentinelWrapper(g, ir.inner, "===null", "||");
|
|
15
13
|
}
|
|
16
14
|
//# sourceMappingURL=nullable.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"nullable.js","sourceRoot":"","sources":["../../../../src/core/codegen/schemas/nullable.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAElC,MAAM,UAAU,YAAY,CAAC,EAAmC,EAAE,CAAU;IAC1E,yEAAyE;IACzE,OAAO,GAAG,IAAI,CAAA;SACP,CAAC,CAAC,KAAK;QACR,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC;;GAE9C,IAAI,CAAC;AACR,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,EAAc,EAAE,CAAU;IACrD,
|
|
1
|
+
{"version":3,"file":"nullable.js","sourceRoot":"","sources":["../../../../src/core/codegen/schemas/nullable.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AACpD,OAAO,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAElC,MAAM,UAAU,YAAY,CAAC,EAAmC,EAAE,CAAU;IAC1E,yEAAyE;IACzE,OAAO,GAAG,IAAI,CAAA;SACP,CAAC,CAAC,KAAK;QACR,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC;;GAE9C,IAAI,CAAC;AACR,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,EAAc,EAAE,CAAU;IACrD,OAAO,mBAAmB,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,EAAE,SAAS,EAAE,IAAI,CAAC,CAAC;AAC3D,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"number.d.ts","sourceRoot":"","sources":["../../../../src/core/codegen/schemas/number.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAW,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AACxD,OAAO,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAOtD,wBAAgB,UAAU,CAAC,EAAE,EAAE,QAAQ,EAAE,CAAC,EAAE,OAAO,GAAG,MAAM,
|
|
1
|
+
{"version":3,"file":"number.d.ts","sourceRoot":"","sources":["../../../../src/core/codegen/schemas/number.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAW,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AACxD,OAAO,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAOtD,wBAAgB,UAAU,CAAC,EAAE,EAAE,QAAQ,EAAE,CAAC,EAAE,OAAO,GAAG,MAAM,CA2I3D;AAED,wBAAgB,UAAU,CAAC,EAAE,EAAE,QAAQ,EAAE,CAAC,EAAE,OAAO,GAAG,MAAM,GAAG,IAAI,CAiFlE"}
|
|
@@ -18,10 +18,31 @@ export function slowNumber(ir, g) {
|
|
|
18
18
|
}`;
|
|
19
19
|
if (ir.checks.length > 0) {
|
|
20
20
|
code += `else{`;
|
|
21
|
+
// An integer FORMAT check (`.int()`, `.int32()`, `.uint32()`) is the one
|
|
22
|
+
// check here that can report `invalid_type` — non-continuable — and zod's
|
|
23
|
+
// `runChecks` then skips every check after it (`else if (isAborted)
|
|
24
|
+
// continue`). So `z.number().int().min(5)` on 1.5 reports the int failure
|
|
25
|
+
// ALONE, where an ungated chain also volunteers too_small. Its aborting
|
|
26
|
+
// branch is exactly `!Number.isInteger(value)` (the range branches report
|
|
27
|
+
// continuable too_small/too_big, which do NOT stop later checks), so one
|
|
28
|
+
// guard opened after the first such check reproduces zod without any
|
|
29
|
+
// runtime abort bookkeeping. Non-integer formats (float32/float64) never
|
|
30
|
+
// report invalid_type and so never open it.
|
|
31
|
+
const opensIntGuard = (check) => check.kind === "number_format" &&
|
|
32
|
+
(check.format === "safeint" || check.format === "int32" || check.format === "uint32");
|
|
33
|
+
let seenIntFormat = false;
|
|
34
|
+
let intGuardOpen = false;
|
|
21
35
|
// Insertion order mirrors zod's issue order for multi-failure inputs.
|
|
22
36
|
// The slow path collects ALL issues (no short-circuit), so cost ordering
|
|
23
37
|
// buys nothing here — only the fast path's && chain benefits from it.
|
|
24
38
|
for (const check of ir.checks) {
|
|
39
|
+
// Opened lazily, on the first check that actually needs gating: an integer
|
|
40
|
+
// format check in LAST position has nothing after it, so the guard would
|
|
41
|
+
// be dead code.
|
|
42
|
+
if (seenIntFormat && !intGuardOpen) {
|
|
43
|
+
code += `if(Number.isInteger(${g.input})){`;
|
|
44
|
+
intGuardOpen = true;
|
|
45
|
+
}
|
|
25
46
|
switch (check.kind) {
|
|
26
47
|
case "greater_than":
|
|
27
48
|
if (check.inclusive) {
|
|
@@ -116,7 +137,11 @@ export function slowNumber(ir, g) {
|
|
|
116
137
|
code += superRefineCheck(check, g.input, g);
|
|
117
138
|
break;
|
|
118
139
|
}
|
|
140
|
+
if (opensIntGuard(check))
|
|
141
|
+
seenIntFormat = true;
|
|
119
142
|
}
|
|
143
|
+
if (intGuardOpen)
|
|
144
|
+
code += `}`;
|
|
120
145
|
code += `}`;
|
|
121
146
|
}
|
|
122
147
|
return `${code}\n`;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"number.js","sourceRoot":"","sources":["../../../../src/core/codegen/schemas/number.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"number.js","sourceRoot":"","sources":["../../../../src/core/codegen/schemas/number.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"object.d.ts","sourceRoot":"","sources":["../../../../src/core/codegen/schemas/object.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AACzD,OAAO,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"object.d.ts","sourceRoot":"","sources":["../../../../src/core/codegen/schemas/object.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AACzD,OAAO,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAkBtD,wBAAgB,UAAU,CAAC,EAAE,EAAE,QAAQ,GAAG;IAAE,IAAI,EAAE,QAAQ,CAAA;CAAE,EAAE,CAAC,EAAE,OAAO,GAAG,MAAM,CAyKhF;AAsFD,wBAAgB,UAAU,CAAC,EAAE,EAAE,QAAQ,EAAE,CAAC,EAAE,OAAO,GAAG,MAAM,GAAG,IAAI,CAkBlE"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
|
-
import { emitEffectCallable, escapeString, extendPath, extendStaticPath, hasMutation, keyMembershipTest,
|
|
1
|
+
import { declareFastTemps, emitEffectCallable, emitRuntimeHelper, escapeString, extendPath, extendStaticPath, hasMutation, keyMembershipTest, outputAlwaysDefined, } from "../context.js";
|
|
2
2
|
import { emit } from "../emit.js";
|
|
3
3
|
import { invalidType, unrecognizedKeys } from "../emit-issue.js";
|
|
4
|
+
import { ZC_AB_DECL } from "../issue-decls.js";
|
|
4
5
|
import { orderByRuntimeCost } from "../fast-size.js";
|
|
5
6
|
import { refineCheck, superRefineCheck, superRefineFastTest } from "./effect.js";
|
|
6
7
|
export function slowObject(ir, g) {
|
|
@@ -21,11 +22,15 @@ export function slowObject(ir, g) {
|
|
|
21
22
|
// on the whole safeParse call for mutation-bearing schemas.
|
|
22
23
|
code += needsClone ? `var ${objVar}={...${g.input}};` : `var ${objVar}=${g.input};`;
|
|
23
24
|
}
|
|
24
|
-
// Object-level refines
|
|
25
|
-
// parses the properties
|
|
26
|
-
//
|
|
27
|
-
//
|
|
28
|
-
//
|
|
25
|
+
// Object-level refines are gated on zod's ABORT rule, not on "did anything
|
|
26
|
+
// fail": zod parses the properties (plus the strict/catchall passes) into the
|
|
27
|
+
// payload and then skips its check chain only when `util.aborted` holds — i.e.
|
|
28
|
+
// when one of those issues is non-continuable. A property that failed its own
|
|
29
|
+
// `min`/format check reports a CONTINUABLE issue, so the outer refine still
|
|
30
|
+
// runs and both messages surface; a property that failed to parse at all
|
|
31
|
+
// (`invalid_type`, an unrecognized key, a bad record key) aborts and
|
|
32
|
+
// suppresses it. Snapshot the issue count before the properties so the scan
|
|
33
|
+
// covers exactly this node's own parse, as zod's fresh sub-payload does.
|
|
29
34
|
const refineMark = ir.checks && ir.checks.length > 0 ? g.temp("rm") : "";
|
|
30
35
|
if (refineMark)
|
|
31
36
|
code += `var ${refineMark}=${g.issues}.length;`;
|
|
@@ -43,7 +48,7 @@ export function slowObject(ir, g) {
|
|
|
43
48
|
const propExpr = strip ? g.temp("sv") : `${objVar}[${keyStr}]`;
|
|
44
49
|
if (strip) {
|
|
45
50
|
code += `var ${propExpr}=${g.input}[${keyStr}];`;
|
|
46
|
-
slots.push({ always:
|
|
51
|
+
slots.push({ always: outputAlwaysDefined(propIR), keyStr, value: propExpr });
|
|
47
52
|
}
|
|
48
53
|
const propCode = g.visit(propIR, { input: propExpr, output: propExpr, path: propPath });
|
|
49
54
|
if (suppressAbsent.has(key)) {
|
|
@@ -142,8 +147,10 @@ export function slowObject(ir, g) {
|
|
|
142
147
|
if (needsClone) {
|
|
143
148
|
code += `${g.output}=${objVar};`;
|
|
144
149
|
}
|
|
145
|
-
// Object-level refine effects: z.object({...}).refine(fn), suppressed when
|
|
146
|
-
//
|
|
150
|
+
// Object-level refine effects: z.object({...}).refine(fn), suppressed when the
|
|
151
|
+
// parse phase aborted (see refineMark). One gate covers every effect: each of
|
|
152
|
+
// them can only add a continuable `custom` issue, so zod's per-check
|
|
153
|
+
// re-evaluation of `isAborted` can never flip between them.
|
|
147
154
|
if (ir.checks && ir.checks.length > 0) {
|
|
148
155
|
let refines = "";
|
|
149
156
|
for (const check of ir.checks) {
|
|
@@ -152,7 +159,8 @@ export function slowObject(ir, g) {
|
|
|
152
159
|
? superRefineCheck(check, objVar, g)
|
|
153
160
|
: refineCheck(check, objVar, g);
|
|
154
161
|
}
|
|
155
|
-
|
|
162
|
+
const aborted = emitRuntimeHelper(g.ctx, "__zcAb", ZC_AB_DECL);
|
|
163
|
+
code += `if(!${aborted}(${g.issues},${refineMark})){${refines}}`;
|
|
156
164
|
}
|
|
157
165
|
code += `}\n`;
|
|
158
166
|
return code;
|
|
@@ -210,13 +218,14 @@ function fastObjectBody(ir, g, skipKey) {
|
|
|
210
218
|
if (ir.catchall) {
|
|
211
219
|
const kv = g.temp("cak");
|
|
212
220
|
const vv = g.temp("cav");
|
|
213
|
-
const
|
|
221
|
+
const catchallGen = g.scoped(vv);
|
|
222
|
+
const valCheck = catchallGen.visit(ir.catchall, { input: vv });
|
|
214
223
|
if (valCheck === null)
|
|
215
224
|
return null;
|
|
216
225
|
if (valCheck !== "true") {
|
|
217
226
|
const fnName = g.temp("co");
|
|
218
227
|
const test = keyMembershipTest(g.ctx, Object.keys(ir.properties), kv);
|
|
219
|
-
g.ctx.preamble.push(`function ${fnName}(o){var ${kv},${vv};for(${kv} in o){if(!(${test})){${vv}=o[${kv}];if(!(${valCheck}))return false;}}return true;}`);
|
|
228
|
+
g.ctx.preamble.push(`function ${fnName}(o){${declareFastTemps(catchallGen.scope)}var ${kv},${vv};for(${kv} in o){if(!(${test})){${vv}=o[${kv}];if(!(${valCheck}))return false;}}return true;}`);
|
|
220
229
|
parts.push(`${fnName}(${x})`);
|
|
221
230
|
}
|
|
222
231
|
}
|
|
@@ -234,12 +243,12 @@ function fastObjectBody(ir, g, skipKey) {
|
|
|
234
243
|
return parts;
|
|
235
244
|
}
|
|
236
245
|
export function fastObject(ir, g) {
|
|
237
|
-
//
|
|
238
|
-
//
|
|
239
|
-
//
|
|
240
|
-
//
|
|
241
|
-
|
|
242
|
-
|
|
246
|
+
// A strip object still gets an expression. Stripping reshapes the OUTPUT, not
|
|
247
|
+
// the verdict, so this remains an exact acceptance predicate — which is what
|
|
248
|
+
// `.is()` installs, and what the build path reuses to validate the subtrees it
|
|
249
|
+
// passes through by reference. What it must NOT do is stand in for the parse
|
|
250
|
+
// result: generateValidator withholds the `data:input` shortcut whenever the
|
|
251
|
+
// schema rebuilds (see rebuildsOutput).
|
|
243
252
|
const x = g.input;
|
|
244
253
|
const body = fastObjectBody(ir, g, g.discSkipKey);
|
|
245
254
|
if (body === null)
|