zod-compiler 1.5.0 → 1.7.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/README.md +40 -28
- package/dist/cli/commands/generate.js +1 -1
- package/dist/cli/commands/generate.js.map +1 -1
- package/dist/cli/commands/watch.js +1 -1
- package/dist/cli/commands/watch.js.map +1 -1
- package/dist/core/codegen/context.d.ts +37 -0
- package/dist/core/codegen/context.d.ts.map +1 -1
- package/dist/core/codegen/context.js.map +1 -1
- package/dist/core/codegen/fast-path.d.ts +22 -2
- package/dist/core/codegen/fast-path.d.ts.map +1 -1
- package/dist/core/codegen/fast-path.js +63 -3
- package/dist/core/codegen/fast-path.js.map +1 -1
- package/dist/core/codegen/fast-size.d.ts +55 -0
- package/dist/core/codegen/fast-size.d.ts.map +1 -0
- package/dist/core/codegen/fast-size.js +152 -0
- package/dist/core/codegen/fast-size.js.map +1 -0
- package/dist/core/codegen/index.d.ts.map +1 -1
- package/dist/core/codegen/index.js +35 -1
- package/dist/core/codegen/index.js.map +1 -1
- package/dist/core/codegen/schemas/array.d.ts.map +1 -1
- package/dist/core/codegen/schemas/array.js +3 -2
- package/dist/core/codegen/schemas/array.js.map +1 -1
- package/dist/core/codegen/schemas/discriminated-union.d.ts.map +1 -1
- package/dist/core/codegen/schemas/discriminated-union.js +5 -1
- package/dist/core/codegen/schemas/discriminated-union.js.map +1 -1
- package/dist/core/codegen/schemas/map.d.ts.map +1 -1
- package/dist/core/codegen/schemas/map.js +6 -3
- package/dist/core/codegen/schemas/map.js.map +1 -1
- package/dist/core/codegen/schemas/record.d.ts.map +1 -1
- package/dist/core/codegen/schemas/record.js +5 -2
- 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 +3 -2
- package/dist/core/codegen/schemas/set.js.map +1 -1
- package/dist/core/codegen/schemas/tuple.d.ts.map +1 -1
- package/dist/core/codegen/schemas/tuple.js +4 -2
- package/dist/core/codegen/schemas/tuple.js.map +1 -1
- package/dist/core/compile.d.ts.map +1 -1
- package/dist/core/compile.js +12 -0
- package/dist/core/compile.js.map +1 -1
- package/dist/core/iife.d.ts +8 -1
- package/dist/core/iife.d.ts.map +1 -1
- package/dist/core/iife.js +12 -2
- package/dist/core/iife.js.map +1 -1
- package/dist/core/types.d.ts +10 -0
- package/dist/core/types.d.ts.map +1 -1
- package/package.json +2 -1
|
@@ -0,0 +1,152 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Fast-path size estimation, used to bound the size of each emitted fast-check
|
|
3
|
+
* function. V8's TurboFan refuses to optimize functions whose bytecode exceeds
|
|
4
|
+
* ~60KB and falls back to the weaker Maglev tier — measured ~1.3-1.8x slower on
|
|
5
|
+
* deeply-nested schemas whose monolithic fast-check crosses that budget. By
|
|
6
|
+
* extracting large, self-contained sub-schemas into their own boolean helpers
|
|
7
|
+
* (`generateFast`), each function stays small enough to TurboFan.
|
|
8
|
+
*
|
|
9
|
+
* `estimateFastCost` is a path-agnostic subtree estimate in approximate
|
|
10
|
+
* generated-character units (it can't see the access-path prefix the node will
|
|
11
|
+
* be emitted under, since that lives in the call site, not the IR). The actual
|
|
12
|
+
* emitted size of an inlined node grows with that prefix length — `input["a"]
|
|
13
|
+
* ["b"]["c"]…` repeated per check — so the extraction decision scales the
|
|
14
|
+
* estimate by `1 + inputLen/PATH_GROWTH_DIVISOR` (see `predictedInlineSize`).
|
|
15
|
+
* The accumulator itself (generateFast) tracks EXACT emitted chars via the
|
|
16
|
+
* returned string length, so only the look-ahead prediction is approximate.
|
|
17
|
+
*/
|
|
18
|
+
/**
|
|
19
|
+
* Per-function soft size cap, in emitted characters. Once the fast-check being
|
|
20
|
+
* assembled would exceed this, the next large hoistable sub-schema is split into
|
|
21
|
+
* its own helper. Set below the ~60KB bytecode point where TurboFan bails (chars
|
|
22
|
+
* over-approximate bytecode) with margin for one look-ahead mis-prediction.
|
|
23
|
+
*/
|
|
24
|
+
export const EXTRACT_CAP = 38_000;
|
|
25
|
+
/**
|
|
26
|
+
* Each nesting level lengthens every access path inside a node (`x["a"]` →
|
|
27
|
+
* `x["a"]["b"]`), inflating real emitted chars above the path-agnostic estimate.
|
|
28
|
+
* The extraction look-ahead multiplies the estimate by `1 + inputLen/this` so a
|
|
29
|
+
* deep subtree is split before it inlines into an over-budget function. Smaller
|
|
30
|
+
* ⇒ more eager splitting at depth. Calibrated against deeply-nested fixtures.
|
|
31
|
+
*/
|
|
32
|
+
const PATH_GROWTH_DIVISOR = 26;
|
|
33
|
+
/**
|
|
34
|
+
* Predicted emitted size of inlining `ir` at a call site whose input expression
|
|
35
|
+
* is `inputLen` chars long — the path-agnostic subtree estimate scaled up for
|
|
36
|
+
* the access-path prefix that estimate omits. Used only for the extract/inline
|
|
37
|
+
* decision; the running total uses exact emitted lengths.
|
|
38
|
+
*/
|
|
39
|
+
export function predictedInlineSize(ir, inputLen, cache) {
|
|
40
|
+
return estimateFastCost(ir, cache) * (1 + inputLen / PATH_GROWTH_DIVISOR);
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Floor for extraction: never hoist a sub-schema smaller than this even when
|
|
44
|
+
* the enclosing function is over the cap — a tiny helper trades a real call for
|
|
45
|
+
* no optimization benefit. Only sub-schemas big enough to matter are split.
|
|
46
|
+
*/
|
|
47
|
+
export const MIN_EXTRACT = 1_200;
|
|
48
|
+
/** Approximate size contributed to the enclosing function by an extracted call `__fo_N(expr)`. */
|
|
49
|
+
export const CALL_COST = 24;
|
|
50
|
+
/**
|
|
51
|
+
* Node types whose fast-check is a self-contained boolean over a single input
|
|
52
|
+
* expression and large enough to be worth hoisting into `function f(p){return …}`.
|
|
53
|
+
* Thin wrappers (optional/nullable/default/…) are omitted: their inner schema is
|
|
54
|
+
* visited through `generateFast` and gets hoisted on its own when large.
|
|
55
|
+
*/
|
|
56
|
+
export const HOISTABLE = new Set([
|
|
57
|
+
"object",
|
|
58
|
+
"record",
|
|
59
|
+
"tuple",
|
|
60
|
+
"discriminatedUnion",
|
|
61
|
+
"union",
|
|
62
|
+
"intersection",
|
|
63
|
+
]);
|
|
64
|
+
/** A node's own contribution to the emitted fast-check, EXCLUDING its children. */
|
|
65
|
+
function shallowFastCost(ir) {
|
|
66
|
+
switch (ir.type) {
|
|
67
|
+
case "object":
|
|
68
|
+
return 50 + Object.keys(ir.properties).length * 25 + (ir.strict ? 120 : 0);
|
|
69
|
+
case "string":
|
|
70
|
+
return 20 + ir.checks.length * 35;
|
|
71
|
+
case "number":
|
|
72
|
+
return 25 + ir.checks.length * 30;
|
|
73
|
+
case "bigint":
|
|
74
|
+
case "date":
|
|
75
|
+
return 25 + (ir.checks?.length ?? 0) * 25;
|
|
76
|
+
case "enum":
|
|
77
|
+
return 15 + ir.values.length * 12;
|
|
78
|
+
case "tuple":
|
|
79
|
+
return 40 + ir.items.length * 15;
|
|
80
|
+
case "union":
|
|
81
|
+
return 12 + ir.options.length * 6;
|
|
82
|
+
case "discriminatedUnion":
|
|
83
|
+
return 45 + ir.cases.length * 12;
|
|
84
|
+
case "array":
|
|
85
|
+
case "record":
|
|
86
|
+
case "set":
|
|
87
|
+
case "map":
|
|
88
|
+
return 55;
|
|
89
|
+
case "file":
|
|
90
|
+
case "templateLiteral":
|
|
91
|
+
return 40;
|
|
92
|
+
case "literal":
|
|
93
|
+
case "optional":
|
|
94
|
+
case "nullable":
|
|
95
|
+
case "default":
|
|
96
|
+
return 22;
|
|
97
|
+
case "recursiveRef":
|
|
98
|
+
return 15;
|
|
99
|
+
default:
|
|
100
|
+
return 18;
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
/** Child IR nodes that the fast generator recurses into (mirrors the fast schema generators). */
|
|
104
|
+
function fastChildren(ir) {
|
|
105
|
+
switch (ir.type) {
|
|
106
|
+
case "object":
|
|
107
|
+
return Object.values(ir.properties);
|
|
108
|
+
case "array":
|
|
109
|
+
return [ir.element];
|
|
110
|
+
case "tuple":
|
|
111
|
+
return ir.rest !== null ? [...ir.items, ir.rest] : ir.items;
|
|
112
|
+
case "record":
|
|
113
|
+
case "map":
|
|
114
|
+
return [ir.keyType, ir.valueType];
|
|
115
|
+
case "set":
|
|
116
|
+
return [ir.valueType];
|
|
117
|
+
case "union":
|
|
118
|
+
case "discriminatedUnion":
|
|
119
|
+
return ir.options;
|
|
120
|
+
case "intersection":
|
|
121
|
+
return [ir.left, ir.right];
|
|
122
|
+
case "pipe":
|
|
123
|
+
return [ir.in, ir.out];
|
|
124
|
+
case "optional":
|
|
125
|
+
case "nullable":
|
|
126
|
+
case "readonly":
|
|
127
|
+
case "default":
|
|
128
|
+
case "catch":
|
|
129
|
+
return [ir.inner];
|
|
130
|
+
default:
|
|
131
|
+
return [];
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
/**
|
|
135
|
+
* Estimated total size of a node's fast-check (the node plus everything inlined
|
|
136
|
+
* beneath it). Memoized per IR node: schemas dedupe shared sub-trees and the
|
|
137
|
+
* estimate is consulted at every nesting level, so without the cache a deep tree
|
|
138
|
+
* would be re-walked quadratically.
|
|
139
|
+
*/
|
|
140
|
+
export function estimateFastCost(ir, cache) {
|
|
141
|
+
const cached = cache.get(ir);
|
|
142
|
+
if (cached !== undefined)
|
|
143
|
+
return cached;
|
|
144
|
+
// Defensive cycle break (the IR is a tree today; recursiveRef is a leaf).
|
|
145
|
+
cache.set(ir, 0);
|
|
146
|
+
let total = shallowFastCost(ir);
|
|
147
|
+
for (const child of fastChildren(ir))
|
|
148
|
+
total += estimateFastCost(child, cache);
|
|
149
|
+
cache.set(ir, total);
|
|
150
|
+
return total;
|
|
151
|
+
}
|
|
152
|
+
//# sourceMappingURL=fast-size.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fast-size.js","sourceRoot":"","sources":["../../../src/core/codegen/fast-size.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/core/codegen/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,KAAK,EAAkB,aAAa,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAE/E,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAIpD,YAAY,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAElD,MAAM,WAAW,wBAAwB;IACvC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,iDAAiD;IACjD,IAAI,CAAC,EAAE,WAAW,CAAC;IACnB;;;OAGG;IACH,aAAa,CAAC,EAAE,gBAAgB,CAAC;CAClC;AAED;;;;;;;;GAQG;AACH,wBAAgB,iBAAiB,CAC/B,EAAE,EAAE,QAAQ,EACZ,IAAI,EAAE,MAAM,EACZ,OAAO,CAAC,EAAE,wBAAwB,GACjC,aAAa,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/core/codegen/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,KAAK,EAAkB,aAAa,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAE/E,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAIpD,YAAY,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAElD,MAAM,WAAW,wBAAwB;IACvC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,iDAAiD;IACjD,IAAI,CAAC,EAAE,WAAW,CAAC;IACnB;;;OAGG;IACH,aAAa,CAAC,EAAE,gBAAgB,CAAC;CAClC;AAED;;;;;;;;GAQG;AACH,wBAAgB,iBAAiB,CAC/B,EAAE,EAAE,QAAQ,EACZ,IAAI,EAAE,MAAM,EACZ,OAAO,CAAC,EAAE,wBAAwB,GACjC,aAAa,CA+Lf"}
|
|
@@ -41,11 +41,37 @@ export function generateValidator(ir, name, options) {
|
|
|
41
41
|
refCount: options?.refCount ?? 0,
|
|
42
42
|
usedHelpers: ctx.usedHelpers,
|
|
43
43
|
fastFnName: null,
|
|
44
|
+
fastTotal: false,
|
|
44
45
|
};
|
|
45
46
|
}
|
|
46
|
-
// Fast Path: generate a boolean expression for eligible schemas
|
|
47
|
+
// Fast Path: generate a boolean expression for eligible schemas.
|
|
48
|
+
//
|
|
49
|
+
// generateFast mutates ctx as it walks (extracted __fo_ helpers + regex/effect
|
|
50
|
+
// decls pushed to the preamble, a recursive __fcr_ name reserved, dedup caches
|
|
51
|
+
// populated). The walk is all-or-nothing: a later fast-ineligible node makes it
|
|
52
|
+
// return null AFTER those side effects already landed. Without a rollback the
|
|
53
|
+
// discarded fast path leaves dead __fo_ helpers in the output — and, when one
|
|
54
|
+
// referenced the recursive __fcr_ host that the `fastExpr !== null` branch below
|
|
55
|
+
// never emits, a dangling reference to an undefined identifier. Snapshot the
|
|
56
|
+
// mutable state and restore it on abort so the slow path re-declares from clean.
|
|
57
|
+
const fastPreambleLen = ctx.preamble.length;
|
|
58
|
+
const fastRegexCache = new Map(ctx.regexCache);
|
|
59
|
+
const fastEffectCache = ctx.effectFnCache && new Map(ctx.effectFnCache);
|
|
60
|
+
const fastRecName = ctx.recFastName;
|
|
47
61
|
const fg = createFastGen("input", ctx);
|
|
48
62
|
let fastExpr = generateFast(ir, fg);
|
|
63
|
+
if (fastExpr === null) {
|
|
64
|
+
ctx.preamble.length = fastPreambleLen;
|
|
65
|
+
ctx.regexCache = fastRegexCache;
|
|
66
|
+
if (fastEffectCache === undefined)
|
|
67
|
+
delete ctx.effectFnCache;
|
|
68
|
+
else
|
|
69
|
+
ctx.effectFnCache = fastEffectCache;
|
|
70
|
+
if (fastRecName === undefined)
|
|
71
|
+
delete ctx.recFastName;
|
|
72
|
+
else
|
|
73
|
+
ctx.recFastName = fastRecName;
|
|
74
|
+
}
|
|
49
75
|
// Host the fast expression in a named boolean helper. Self-recursive
|
|
50
76
|
// schemas need it so recursive refs can call it; every other eligible
|
|
51
77
|
// schema benefits too: __zcMkv wires it into parse()/parseAsync(), whose
|
|
@@ -77,6 +103,8 @@ export function generateValidator(ir, name, options) {
|
|
|
77
103
|
refCount: options?.refCount ?? 0,
|
|
78
104
|
usedHelpers: ctx.usedHelpers,
|
|
79
105
|
fastFnName: null,
|
|
106
|
+
// any/unknown always succeed; `.is()` derives `true` from the fn fallback.
|
|
107
|
+
fastTotal: false,
|
|
80
108
|
};
|
|
81
109
|
}
|
|
82
110
|
if (fastExpr !== null && !hasMutation(ir)) {
|
|
@@ -117,6 +145,9 @@ export function generateValidator(ir, name, options) {
|
|
|
117
145
|
refCount: options?.refCount ?? 0,
|
|
118
146
|
usedHelpers: ctx.usedHelpers,
|
|
119
147
|
fastFnName,
|
|
148
|
+
// Total predicate: mutation-free fast path, fc(input) ⟺ accepts(input).
|
|
149
|
+
// generateIIFE installs fc directly as the zero-allocation `.is()`.
|
|
150
|
+
fastTotal: true,
|
|
120
151
|
};
|
|
121
152
|
}
|
|
122
153
|
if (fastExpr !== null) {
|
|
@@ -136,6 +167,9 @@ export function generateValidator(ir, name, options) {
|
|
|
136
167
|
refCount: options?.refCount ?? 0,
|
|
137
168
|
usedHelpers: ctx.usedHelpers,
|
|
138
169
|
fastFnName,
|
|
170
|
+
// Partial fast path (default/catch/coerce) or none: a false fc result does
|
|
171
|
+
// not imply rejection, so `.is()` derives from safeParse(input).success.
|
|
172
|
+
fastTotal: false,
|
|
139
173
|
};
|
|
140
174
|
}
|
|
141
175
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/core/codegen/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAE3D,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC7D,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAe7D;;;;;;;;GAQG;AACH,MAAM,UAAU,iBAAiB,CAC/B,EAAY,EACZ,IAAY,EACZ,OAAkC;IAElC,MAAM,MAAM,GAAG,aAAa,IAAI,EAAE,CAAC;IACnC,MAAM,IAAI,GAAgB,OAAO,EAAE,IAAI,IAAI,QAAQ,CAAC;IACpD,MAAM,GAAG,GAAmB;QAC1B,QAAQ,EAAE,EAAE;QACZ,OAAO,EAAE,CAAC;QACV,MAAM;QACN,UAAU,EAAE,IAAI,GAAG,EAAE;QACrB,IAAI;QACJ,WAAW,EAAE,IAAI,GAAG,EAAE;KACvB,CAAC;IAEF,yEAAyE;IACzE,4EAA4E;IAC5E,6EAA6E;IAC7E,IAAI,OAAO,EAAE,aAAa,KAAK,SAAS,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC,EAAE,CAAC;QAC7D,GAAG,CAAC,aAAa,GAAG,OAAO,CAAC,aAAa,CAAC;IAC5C,CAAC;IAED,uEAAuE;IACvE,wEAAwE;IACxE,uEAAuE;IACvE,0EAA0E;IAC1E,wEAAwE;IACxE,wDAAwD;IACxD,IAAI,EAAE,CAAC,IAAI,KAAK,UAAU,IAAI,EAAE,CAAC,QAAQ,KAAK,SAAS,EAAE,CAAC;QACxD,MAAM,QAAQ,GAAG,cAAc,CAAC,GAAG,EAAE,EAAE,CAAC,QAAQ,CAAC,CAAC;QAClD,OAAO;YACL,IAAI,EAAE,CAAC,oBAAoB,EAAE,GAAG,GAAG,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;YACxD,WAAW,EAAE,YAAY,MAAM,kBAAkB,QAAQ,WAAW;YACpE,QAAQ,EAAE,OAAO,EAAE,QAAQ,IAAI,CAAC;YAChC,WAAW,EAAE,GAAG,CAAC,WAAW;YAC5B,UAAU,EAAE,IAAI;SACjB,CAAC;IACJ,CAAC;IAED,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/core/codegen/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAE3D,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC7D,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAe7D;;;;;;;;GAQG;AACH,MAAM,UAAU,iBAAiB,CAC/B,EAAY,EACZ,IAAY,EACZ,OAAkC;IAElC,MAAM,MAAM,GAAG,aAAa,IAAI,EAAE,CAAC;IACnC,MAAM,IAAI,GAAgB,OAAO,EAAE,IAAI,IAAI,QAAQ,CAAC;IACpD,MAAM,GAAG,GAAmB;QAC1B,QAAQ,EAAE,EAAE;QACZ,OAAO,EAAE,CAAC;QACV,MAAM;QACN,UAAU,EAAE,IAAI,GAAG,EAAE;QACrB,IAAI;QACJ,WAAW,EAAE,IAAI,GAAG,EAAE;KACvB,CAAC;IAEF,yEAAyE;IACzE,4EAA4E;IAC5E,6EAA6E;IAC7E,IAAI,OAAO,EAAE,aAAa,KAAK,SAAS,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC,EAAE,CAAC;QAC7D,GAAG,CAAC,aAAa,GAAG,OAAO,CAAC,aAAa,CAAC;IAC5C,CAAC;IAED,uEAAuE;IACvE,wEAAwE;IACxE,uEAAuE;IACvE,0EAA0E;IAC1E,wEAAwE;IACxE,wDAAwD;IACxD,IAAI,EAAE,CAAC,IAAI,KAAK,UAAU,IAAI,EAAE,CAAC,QAAQ,KAAK,SAAS,EAAE,CAAC;QACxD,MAAM,QAAQ,GAAG,cAAc,CAAC,GAAG,EAAE,EAAE,CAAC,QAAQ,CAAC,CAAC;QAClD,OAAO;YACL,IAAI,EAAE,CAAC,oBAAoB,EAAE,GAAG,GAAG,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;YACxD,WAAW,EAAE,YAAY,MAAM,kBAAkB,QAAQ,WAAW;YACpE,QAAQ,EAAE,OAAO,EAAE,QAAQ,IAAI,CAAC;YAChC,WAAW,EAAE,GAAG,CAAC,WAAW;YAC5B,UAAU,EAAE,IAAI;YAChB,SAAS,EAAE,KAAK;SACjB,CAAC;IACJ,CAAC;IAED,iEAAiE;IACjE,EAAE;IACF,+EAA+E;IAC/E,+EAA+E;IAC/E,gFAAgF;IAChF,8EAA8E;IAC9E,8EAA8E;IAC9E,iFAAiF;IACjF,6EAA6E;IAC7E,iFAAiF;IACjF,MAAM,eAAe,GAAG,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC;IAC5C,MAAM,cAAc,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;IAC/C,MAAM,eAAe,GAAG,GAAG,CAAC,aAAa,IAAI,IAAI,GAAG,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;IACxE,MAAM,WAAW,GAAG,GAAG,CAAC,WAAW,CAAC;IACpC,MAAM,EAAE,GAAG,aAAa,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;IACvC,IAAI,QAAQ,GAAG,YAAY,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;IACpC,IAAI,QAAQ,KAAK,IAAI,EAAE,CAAC;QACtB,GAAG,CAAC,QAAQ,CAAC,MAAM,GAAG,eAAe,CAAC;QACtC,GAAG,CAAC,UAAU,GAAG,cAAc,CAAC;QAChC,IAAI,eAAe,KAAK,SAAS;YAAE,OAAO,GAAG,CAAC,aAAa,CAAC;;YACvD,GAAG,CAAC,aAAa,GAAG,eAAe,CAAC;QACzC,IAAI,WAAW,KAAK,SAAS;YAAE,OAAO,GAAG,CAAC,WAAW,CAAC;;YACjD,GAAG,CAAC,WAAW,GAAG,WAAW,CAAC;IACrC,CAAC;IAED,qEAAqE;IACrE,sEAAsE;IACtE,yEAAyE;IACzE,iEAAiE;IACjE,sEAAsE;IACtE,8DAA8D;IAC9D,IAAI,UAAU,GAAkB,IAAI,CAAC;IACrC,IAAI,QAAQ,KAAK,IAAI,IAAI,QAAQ,KAAK,MAAM,EAAE,CAAC;QAC7C,UAAU,GAAG,GAAG,CAAC,WAAW,IAAI,QAAQ,GAAG,CAAC,OAAO,EAAE,EAAE,CAAC;QACxD,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,YAAY,UAAU,kBAAkB,QAAQ,IAAI,CAAC,CAAC;QACxE,QAAQ,GAAG,GAAG,UAAU,SAAS,CAAC;IACpC,CAAC;IAED,MAAM,EAAE,GAAG,aAAa,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC;IACtD,2EAA2E;IAC3E,0EAA0E;IAC1E,2EAA2E;IAC3E,+DAA+D;IAC/D,MAAM,OAAO,GAAG,GAAG,CAAC,aAAa,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC;IAC9C,MAAM,QAAQ,GAAG,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,IAAI,aAAa,CAAC,CAAC,CAAC,YAAY,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;IAE7F,MAAM,SAAS,GAAG,GAAW,EAAE,CAAC,CAAC,oBAAoB,EAAE,GAAG,GAAG,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAEnF,MAAM,gBAAgB,GAAG,CAAC,YAAY,MAAM,UAAU,CAAC,CAAC;IAExD,IAAI,QAAQ,KAAK,MAAM,EAAE,CAAC;QACxB,iEAAiE;QACjE,gBAAgB,CAAC,IAAI,CAAC,kCAAkC,CAAC,CAAC;QAC1D,gBAAgB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAC3B,OAAO;YACL,IAAI,EAAE,SAAS,EAAE;YACjB,WAAW,EAAE,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC;YACxC,QAAQ,EAAE,OAAO,EAAE,QAAQ,IAAI,CAAC;YAChC,WAAW,EAAE,GAAG,CAAC,WAAW;YAC5B,UAAU,EAAE,IAAI;YAChB,2EAA2E;YAC3E,SAAS,EAAE,KAAK;SACjB,CAAC;IACJ,CAAC;IAED,IAAI,QAAQ,KAAK,IAAI,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC,EAAE,CAAC;QAC1C,yEAAyE;QACzE,wEAAwE;QACxE,wEAAwE;QACxE,wEAAwE;QACxE,wEAAwE;QACxE,oEAAoE;QACpE,uEAAuE;QACvE,8BAA8B;QAC9B,EAAE;QACF,yEAAyE;QACzE,sEAAsE;QACtE,wEAAwE;QACxE,yEAAyE;QACzE,gEAAgE;QAChE,sEAAsE;QACtE,+DAA+D;QAC/D,GAAG,CAAC,WAAW,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QAChC,IAAI,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;YAC9B,gEAAgE;YAChE,iEAAiE;YACjE,+DAA+D;YAC/D,sEAAsE;YACtE,kEAAkE;YAClE,+CAA+C;YAC/C,gBAAgB,CAAC,IAAI,CACnB,MAAM,QAAQ,qCAAqC,EACnD,kCAAkC,EAClC,YAAY,EACZ,eAAe,EACf,QAAQ,EACR,YAAY,EACZ,WAAW,EACX,GAAG,CACJ,CAAC;QACJ,CAAC;aAAM,CAAC;YACN,MAAM,QAAQ,GAAG,QAAQ,GAAG,CAAC,OAAO,EAAE,EAAE,CAAC;YACzC,GAAG,CAAC,QAAQ,CAAC,IAAI,CACf,YAAY,QAAQ,sCAAsC,QAAQ,eAAe,CAClF,CAAC;YACF,gBAAgB,CAAC,IAAI,CACnB,MAAM,QAAQ,qCAAqC,EACnD,mBAAmB,QAAQ,UAAU,EACrC,GAAG,CACJ,CAAC;QACJ,CAAC;QACD,OAAO;YACL,IAAI,EAAE,SAAS,EAAE;YACjB,WAAW,EAAE,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC;YACxC,QAAQ,EAAE,OAAO,EAAE,QAAQ,IAAI,CAAC;YAChC,WAAW,EAAE,GAAG,CAAC,WAAW;YAC5B,UAAU;YACV,wEAAwE;YACxE,oEAAoE;YACpE,SAAS,EAAE,IAAI;SAChB,CAAC;IACJ,CAAC;IAED,IAAI,QAAQ,KAAK,IAAI,EAAE,CAAC;QACtB,yEAAyE;QACzE,sEAAsE;QACtE,gBAAgB,CAAC,IAAI,CAAC,MAAM,QAAQ,qCAAqC,CAAC,CAAC;IAC7E,CAAC;IAED,yEAAyE;IACzE,wEAAwE;IACxE,2EAA2E;IAC3E,2DAA2D;IAC3D,gBAAgB,CAAC,IAAI,CACnB,YAAY,EACZ,eAAe,EACf,QAAQ,EACR,kDAAkD,EAClD,wBAAwB,EACxB,GAAG,CACJ,CAAC;IAEF,MAAM,WAAW,GAAG,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAEhD,OAAO;QACL,IAAI,EAAE,SAAS,EAAE;QACjB,WAAW;QACX,QAAQ,EAAE,OAAO,EAAE,QAAQ,IAAI,CAAC;QAChC,WAAW,EAAE,GAAG,CAAC,WAAW;QAC5B,UAAU;QACV,2EAA2E;QAC3E,yEAAyE;QACzE,SAAS,EAAE,KAAK;KACjB,CAAC;AACJ,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"array.d.ts","sourceRoot":"","sources":["../../../../src/core/codegen/schemas/array.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAW,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AACjE,OAAO,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAMtD,wBAAgB,SAAS,CAAC,EAAE,EAAE,QAAQ,GAAG;IAAE,IAAI,EAAE,OAAO,CAAA;CAAE,EAAE,CAAC,EAAE,OAAO,GAAG,MAAM,CA+C9E;AAED,wBAAgB,SAAS,CAAC,EAAE,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,GAAG,MAAM,GAAG,IAAI,
|
|
1
|
+
{"version":3,"file":"array.d.ts","sourceRoot":"","sources":["../../../../src/core/codegen/schemas/array.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAW,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AACjE,OAAO,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAMtD,wBAAgB,SAAS,CAAC,EAAE,EAAE,QAAQ,GAAG;IAAE,IAAI,EAAE,OAAO,CAAA;CAAE,EAAE,CAAC,EAAE,OAAO,GAAG,MAAM,CA+C9E;AAED,wBAAgB,SAAS,CAAC,EAAE,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,GAAG,MAAM,GAAG,IAAI,CAyChE"}
|
|
@@ -65,9 +65,10 @@ export function fastArray(ir, g) {
|
|
|
65
65
|
break;
|
|
66
66
|
}
|
|
67
67
|
}
|
|
68
|
-
// Element validation via preamble helper (avoids .every() closure allocation)
|
|
68
|
+
// Element validation via preamble helper (avoids .every() closure allocation).
|
|
69
|
+
// Fresh scope: the helper is its own function, size-gated independently.
|
|
69
70
|
const elemVar = g.temp("ae");
|
|
70
|
-
const elemCheck = g.visit(ir.element
|
|
71
|
+
const elemCheck = g.scoped(elemVar).visit(ir.element);
|
|
71
72
|
if (elemCheck === null)
|
|
72
73
|
return null;
|
|
73
74
|
if (elemCheck !== "true") {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"array.js","sourceRoot":"","sources":["../../../../src/core/codegen/schemas/array.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"array.js","sourceRoot":"","sources":["../../../../src/core/codegen/schemas/array.ts"],"names":[],"mappings":"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"}
|
|
@@ -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,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AACrE,OAAO,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAKtD,wBAAgB,sBAAsB,CACpC,EAAE,EAAE,QAAQ,GAAG;IAAE,IAAI,EAAE,oBAAoB,CAAA;CAAE,EAC7C,CAAC,EAAE,OAAO,GACT,MAAM,CA2BR;AAED,wBAAgB,sBAAsB,CAAC,EAAE,EAAE,oBAAoB,EAAE,CAAC,EAAE,OAAO,GAAG,MAAM,GAAG,IAAI,
|
|
1
|
+
{"version":3,"file":"discriminated-union.d.ts","sourceRoot":"","sources":["../../../../src/core/codegen/schemas/discriminated-union.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AACrE,OAAO,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAKtD,wBAAgB,sBAAsB,CACpC,EAAE,EAAE,QAAQ,GAAG;IAAE,IAAI,EAAE,oBAAoB,CAAA;CAAE,EAC7C,CAAC,EAAE,OAAO,GACT,MAAM,CA2BR;AAED,wBAAgB,sBAAsB,CAAC,EAAE,EAAE,oBAAoB,EAAE,CAAC,EAAE,OAAO,GAAG,MAAM,GAAG,IAAI,CAyB1F"}
|
|
@@ -32,9 +32,13 @@ export function fastDiscriminatedUnion(ir, g) {
|
|
|
32
32
|
const helperName = g.temp("du");
|
|
33
33
|
const helperParam = g.temp("dx");
|
|
34
34
|
const cases = [];
|
|
35
|
+
// The switch body is its own function: size-gate the options against the cap
|
|
36
|
+
// in a fresh scope, otherwise many small options accumulate into the caller's
|
|
37
|
+
// scope while this helper itself grows unbounded past the TurboFan budget.
|
|
38
|
+
const body = g.scoped(helperParam);
|
|
35
39
|
for (const { value, option: index } of ir.cases) {
|
|
36
40
|
const option = ir.options[index];
|
|
37
|
-
const check =
|
|
41
|
+
const check = body.visit(option);
|
|
38
42
|
if (check === null)
|
|
39
43
|
return null;
|
|
40
44
|
cases.push(`case ${literalToJs(value)}:return ${check};`);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"discriminated-union.js","sourceRoot":"","sources":["../../../../src/core/codegen/schemas/discriminated-union.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AACtE,OAAO,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAClC,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAE/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;;IAEnM,CAAC;IACH,OAAO,GAAG,IAAI,IAAI,CAAC;AACrB,CAAC;AAED,MAAM,UAAU,sBAAsB,CAAC,EAAwB,EAAE,CAAU;IACzE,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC;IAClB,MAAM,OAAO,GAAG,YAAY,CAAC,EAAE,CAAC,aAAa,CAAC,CAAC;IAE/C,+DAA+D;IAC/D,MAAM,UAAU,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAChC,MAAM,WAAW,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACjC,MAAM,KAAK,GAAa,EAAE,CAAC;IAE3B,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,MAAM,KAAK,GAAG,
|
|
1
|
+
{"version":3,"file":"discriminated-union.js","sourceRoot":"","sources":["../../../../src/core/codegen/schemas/discriminated-union.ts"],"names":[],"mappings":"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"}
|
|
@@ -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;AAKtD,wBAAgB,OAAO,CAAC,EAAE,EAAE,QAAQ,GAAG;IAAE,IAAI,EAAE,KAAK,CAAA;CAAE,EAAE,CAAC,EAAE,OAAO,GAAG,MAAM,CAuB1E;AAED,wBAAgB,OAAO,CAAC,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,OAAO,GAAG,MAAM,GAAG,IAAI,
|
|
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;AAKtD,wBAAgB,OAAO,CAAC,EAAE,EAAE,QAAQ,GAAG;IAAE,IAAI,EAAE,KAAK,CAAA;CAAE,EAAE,CAAC,EAAE,OAAO,GAAG,MAAM,CAuB1E;AAED,wBAAgB,OAAO,CAAC,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,OAAO,GAAG,MAAM,GAAG,IAAI,CAwB5D"}
|
|
@@ -27,12 +27,15 @@ export function slowMap(ir, g) {
|
|
|
27
27
|
export function fastMap(ir, g) {
|
|
28
28
|
const x = g.input;
|
|
29
29
|
const parts = [`${x} instanceof Map`];
|
|
30
|
-
// Key/value validation via preamble helper (Map has no .every())
|
|
30
|
+
// Key/value validation via preamble helper (Map has no .every()).
|
|
31
|
+
// Key + value share one fresh scope — same emitted helper, size-gated
|
|
32
|
+
// independently of the caller.
|
|
31
33
|
const entryVar = g.temp("me");
|
|
32
|
-
const
|
|
34
|
+
const body = g.scoped(`${entryVar}[0]`);
|
|
35
|
+
const keyCheck = body.visit(ir.keyType, { input: `${entryVar}[0]` });
|
|
33
36
|
if (keyCheck === null)
|
|
34
37
|
return null;
|
|
35
|
-
const valCheck =
|
|
38
|
+
const valCheck = body.visit(ir.valueType, { input: `${entryVar}[1]` });
|
|
36
39
|
if (valCheck === null)
|
|
37
40
|
return null;
|
|
38
41
|
if (keyCheck !== "true" || valCheck !== "true") {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"map.js","sourceRoot":"","sources":["../../../../src/core/codegen/schemas/map.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AACxD,OAAO,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAClC,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAE/C,MAAM,UAAU,OAAO,CAAC,EAA8B,EAAE,CAAU;IAChE,MAAM,QAAQ,GAAG,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACjC,MAAM,MAAM,GAAG,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAC/B,6EAA6E;IAC7E,uEAAuE;IACvE,MAAM,OAAO,GAAG,WAAW,CAAC,EAAE,CAAC,OAAO,CAAC,IAAI,WAAW,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC;IACrE,MAAM,UAAU,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAElD,OAAO,GAAG,IAAI,CAAA;WACL,CAAC,CAAC,KAAK;QACV,WAAW,CAAC,CAAC,EAAE,KAAK,CAAC;;QAErB,OAAO,CAAC,CAAC,CAAC,OAAO,UAAU,aAAa,CAAC,CAAC,CAAC,EAAE;YACzC,MAAM;gBACF,QAAQ,OAAO,CAAC,CAAC,KAAK;UAC5B,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,GAAG,QAAQ,KAAK,EAAE,MAAM,EAAE,GAAG,QAAQ,KAAK,EAAE,IAAI,EAAE,UAAU,CAAC,CAAC,CAAC,IAAI,EAAE,GAAG,MAAM,QAAQ,CAAC,EAAE,CAAC;UACvH,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,SAAS,EAAE,EAAE,KAAK,EAAE,GAAG,QAAQ,KAAK,EAAE,MAAM,EAAE,GAAG,QAAQ,KAAK,EAAE,IAAI,EAAE,UAAU,CAAC,CAAC,CAAC,IAAI,EAAE,GAAG,MAAM,UAAU,CAAC,EAAE,CAAC;UAC3H,OAAO,CAAC,CAAC,CAAC,GAAG,UAAU,QAAQ,QAAQ,OAAO,QAAQ,OAAO,CAAC,CAAC,CAAC,EAAE;UAClE,MAAM;;QAER,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,IAAI,UAAU,GAAG,CAAC,CAAC,CAAC,EAAE;;GAEhD,IAAI,CAAC;AACR,CAAC;AAED,MAAM,UAAU,OAAO,CAAC,EAAS,EAAE,CAAU;IAC3C,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC;IAClB,MAAM,KAAK,GAAa,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;IAEhD,
|
|
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":"record.d.ts","sourceRoot":"","sources":["../../../../src/core/codegen/schemas/record.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;AAMtD,wBAAgB,UAAU,CAAC,EAAE,EAAE,QAAQ,GAAG;IAAE,IAAI,EAAE,QAAQ,CAAA;CAAE,EAAE,CAAC,EAAE,OAAO,GAAG,MAAM,CAoChF;AAED,wBAAgB,UAAU,CAAC,EAAE,EAAE,QAAQ,EAAE,CAAC,EAAE,OAAO,GAAG,MAAM,GAAG,IAAI,
|
|
1
|
+
{"version":3,"file":"record.d.ts","sourceRoot":"","sources":["../../../../src/core/codegen/schemas/record.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;AAMtD,wBAAgB,UAAU,CAAC,EAAE,EAAE,QAAQ,GAAG;IAAE,IAAI,EAAE,QAAQ,CAAA;CAAE,EAAE,CAAC,EAAE,OAAO,GAAG,MAAM,CAoChF;AAED,wBAAgB,UAAU,CAAC,EAAE,EAAE,QAAQ,EAAE,CAAC,EAAE,OAAO,GAAG,MAAM,GAAG,IAAI,CA0ClE"}
|
|
@@ -44,11 +44,14 @@ export function fastRecord(ir, g) {
|
|
|
44
44
|
const plainStringKey = ir.keyType.type === "string" && ir.keyType.checks.length === 0 && ir.keyType.coerce !== true;
|
|
45
45
|
const kv = g.temp("rk");
|
|
46
46
|
const vv = g.temp("rv");
|
|
47
|
-
|
|
47
|
+
// Key + value checks share one fresh scope — they live in the same emitted
|
|
48
|
+
// helper function, size-gated independently of the caller.
|
|
49
|
+
const body = g.scoped(kv);
|
|
50
|
+
const keyCheck = plainStringKey ? "true" : body.visit(ir.keyType, { input: kv });
|
|
48
51
|
// Hoist o[k] into a loop variable: computed-key lookups don't get V8's load
|
|
49
52
|
// elimination across check boundaries, so each repeated o[k] would re-walk
|
|
50
53
|
// the (often dictionary-mode) object.
|
|
51
|
-
const valCheck =
|
|
54
|
+
const valCheck = body.visit(ir.valueType, { input: vv });
|
|
52
55
|
if (keyCheck === null || valCheck === null)
|
|
53
56
|
return null;
|
|
54
57
|
const conditions = [];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"record.js","sourceRoot":"","sources":["../../../../src/core/codegen/schemas/record.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"record.js","sourceRoot":"","sources":["../../../../src/core/codegen/schemas/record.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"set.d.ts","sourceRoot":"","sources":["../../../../src/core/codegen/schemas/set.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC;AACtD,OAAO,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAKtD,wBAAgB,OAAO,CAAC,EAAE,EAAE,QAAQ,GAAG;IAAE,IAAI,EAAE,KAAK,CAAA;CAAE,EAAE,CAAC,EAAE,OAAO,GAAG,MAAM,CAsD1E;AAED,wBAAgB,OAAO,CAAC,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,OAAO,GAAG,MAAM,GAAG,IAAI,
|
|
1
|
+
{"version":3,"file":"set.d.ts","sourceRoot":"","sources":["../../../../src/core/codegen/schemas/set.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC;AACtD,OAAO,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAKtD,wBAAgB,OAAO,CAAC,EAAE,EAAE,QAAQ,GAAG;IAAE,IAAI,EAAE,KAAK,CAAA;CAAE,EAAE,CAAC,EAAE,OAAO,GAAG,MAAM,CAsD1E;AAED,wBAAgB,OAAO,CAAC,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,OAAO,GAAG,MAAM,GAAG,IAAI,CAmC5D"}
|
|
@@ -73,9 +73,10 @@ export function fastSet(ir, g) {
|
|
|
73
73
|
}
|
|
74
74
|
}
|
|
75
75
|
}
|
|
76
|
-
// Element validation via preamble helper (Set has no .every())
|
|
76
|
+
// Element validation via preamble helper (Set has no .every()).
|
|
77
|
+
// Fresh scope: the helper is its own function, size-gated independently.
|
|
77
78
|
const elemVar = g.temp("sv");
|
|
78
|
-
const elemCheck = g.visit(ir.valueType
|
|
79
|
+
const elemCheck = g.scoped(elemVar).visit(ir.valueType);
|
|
79
80
|
if (elemCheck === null)
|
|
80
81
|
return null;
|
|
81
82
|
if (elemCheck !== "true") {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"set.js","sourceRoot":"","sources":["../../../../src/core/codegen/schemas/set.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"set.js","sourceRoot":"","sources":["../../../../src/core/codegen/schemas/set.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AACvE,OAAO,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAClC,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAEjE,MAAM,UAAU,OAAO,CAAC,EAA8B,EAAE,CAAU;IAChE,IAAI,IAAI,GAAG,IAAI,CAAA;WACN,CAAC,CAAC,KAAK;QACV,WAAW,CAAC,CAAC,EAAE,KAAK,CAAC;WAClB,CAAC;IAEV,cAAc;IACd,IAAI,EAAE,CAAC,MAAM,EAAE,CAAC;QACd,KAAK,MAAM,KAAK,IAAI,EAAE,CAAC,MAAM,EAAE,CAAC;YAC9B,QAAQ,KAAK,CAAC,IAAI,EAAE,CAAC;gBACnB,KAAK,UAAU;oBACb,IAAI,IAAI,IAAI,CAAA;iBACL,CAAC,CAAC,KAAK,SAAS,KAAK,CAAC,OAAO;gBAC9B,QAAQ,CAAC,CAAC,EAAE,KAAK,CAAC,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC;cACrE,CAAC;oBACL,MAAM;gBACR,KAAK,UAAU;oBACb,IAAI,IAAI,IAAI,CAAA;iBACL,CAAC,CAAC,KAAK,SAAS,KAAK,CAAC,OAAO;gBAC9B,MAAM,CAAC,CAAC,EAAE,KAAK,CAAC,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC;cACnE,CAAC;oBACL,MAAM;gBACR,KAAK,aAAa;oBAChB,IAAI,IAAI,IAAI,CAAA;iBACL,CAAC,CAAC,KAAK,SAAS,KAAK,CAAC,IAAI;gBAC3B,QAAQ,CAAC,CAAC,EAAE,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC;uBACtE,CAAC,CAAC,KAAK,SAAS,KAAK,CAAC,IAAI;gBACjC,MAAM,CAAC,CAAC,EAAE,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC;cAC7E,CAAC;oBACL,MAAM;YACV,CAAC;QACH,CAAC;IACH,CAAC;IAED,yEAAyE;IACzE,yEAAyE;IACzE,oEAAoE;IACpE,MAAM,OAAO,GAAG,WAAW,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC;IAC1C,MAAM,OAAO,GAAG,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAChC,MAAM,MAAM,GAAG,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAC/B,MAAM,UAAU,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAClD,IAAI,OAAO,EAAE,CAAC;QACZ,IAAI,IAAI,OAAO,UAAU,aAAa,CAAC;IACzC,CAAC;IACD,IAAI,IAAI,IAAI,CAAA;UACJ,MAAM;cACF,OAAO,OAAO,CAAC,CAAC,KAAK;QAC3B,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,SAAS,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,UAAU,CAAC,CAAC,CAAC,IAAI,EAAE,MAAM,CAAC,EAAE,CAAC;QAC5F,OAAO,CAAC,CAAC,CAAC,GAAG,UAAU,QAAQ,OAAO,IAAI,CAAC,CAAC,CAAC,EAAE;QAC/C,MAAM;;MAER,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,IAAI,UAAU,GAAG,CAAC,CAAC,CAAC,EAAE;IAC7C,CAAC;IACH,OAAO,GAAG,IAAI,IAAI,CAAC;AACrB,CAAC;AAED,MAAM,UAAU,OAAO,CAAC,EAAS,EAAE,CAAU;IAC3C,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC;IAClB,MAAM,KAAK,GAAa,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;IAEhD,cAAc;IACd,IAAI,EAAE,CAAC,MAAM,EAAE,CAAC;QACd,KAAK,MAAM,KAAK,IAAI,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC;YACvD,QAAQ,KAAK,CAAC,IAAI,EAAE,CAAC;gBACnB,KAAK,UAAU;oBACb,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,UAAU,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;oBAC1C,MAAM;gBACR,KAAK,UAAU;oBACb,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,UAAU,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;oBAC1C,MAAM;gBACR,KAAK,aAAa;oBAChB,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,WAAW,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;oBACxC,MAAM;YACV,CAAC;QACH,CAAC;IACH,CAAC;IAED,gEAAgE;IAChE,yEAAyE;IACzE,MAAM,OAAO,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC7B,MAAM,SAAS,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC;IACxD,IAAI,SAAS,KAAK,IAAI;QAAE,OAAO,IAAI,CAAC;IACpC,IAAI,SAAS,KAAK,MAAM,EAAE,CAAC;QACzB,MAAM,UAAU,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAChC,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CACjB,YAAY,UAAU,eAAe,OAAO,eAAe,SAAS,iCAAiC,CACtG,CAAC;QACF,KAAK,CAAC,IAAI,CAAC,GAAG,UAAU,IAAI,CAAC,GAAG,CAAC,CAAC;IACpC,CAAC;IAED,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tuple.d.ts","sourceRoot":"","sources":["../../../../src/core/codegen/schemas/tuple.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AACxD,OAAO,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAmBtD;;;;;;;GAOG;AACH,wBAAgB,SAAS,CAAC,EAAE,EAAE,QAAQ,GAAG;IAAE,IAAI,EAAE,OAAO,CAAA;CAAE,EAAE,CAAC,EAAE,OAAO,GAAG,MAAM,CAiD9E;AAED,wBAAgB,SAAS,CAAC,EAAE,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,GAAG,MAAM,GAAG,IAAI,
|
|
1
|
+
{"version":3,"file":"tuple.d.ts","sourceRoot":"","sources":["../../../../src/core/codegen/schemas/tuple.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AACxD,OAAO,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAmBtD;;;;;;;GAOG;AACH,wBAAgB,SAAS,CAAC,EAAE,EAAE,QAAQ,GAAG;IAAE,IAAI,EAAE,OAAO,CAAA;CAAE,EAAE,CAAC,EAAE,OAAO,GAAG,MAAM,CAiD9E;AAED,wBAAgB,SAAS,CAAC,EAAE,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,GAAG,MAAM,GAAG,IAAI,CAyChE"}
|
|
@@ -94,10 +94,12 @@ export function fastTuple(ir, g) {
|
|
|
94
94
|
if (itemCheck !== "true")
|
|
95
95
|
parts.push(itemCheck);
|
|
96
96
|
}
|
|
97
|
-
// Rest element validation via preamble helper (avoids .slice().every()
|
|
97
|
+
// Rest element validation via preamble helper (avoids .slice().every()
|
|
98
|
+
// allocation). Fresh scope: the helper is its own function, size-gated
|
|
99
|
+
// independently. (Fixed items above stay inline in the caller's && chain.)
|
|
98
100
|
if (ir.rest !== null) {
|
|
99
101
|
const rv = g.temp("tr");
|
|
100
|
-
const restCheck = g.visit(ir.rest
|
|
102
|
+
const restCheck = g.scoped(rv).visit(ir.rest);
|
|
101
103
|
if (restCheck === null)
|
|
102
104
|
return null;
|
|
103
105
|
if (restCheck !== "true") {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tuple.js","sourceRoot":"","sources":["../../../../src/core/codegen/schemas/tuple.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"tuple.js","sourceRoot":"","sources":["../../../../src/core/codegen/schemas/tuple.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,UAAU,EAAE,qBAAqB,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC/E,OAAO,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAClC,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAEjE;;;GAGG;AACH,SAAS,QAAQ,CAAC,EAAW;IAC3B,IAAI,KAAK,GAAG,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC;IAC5B,KAAK,IAAI,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QAC9C,MAAM,QAAQ,GAAI,EAAE,CAAC,KAAK,CAAC,CAAC,CAAc,CAAC,IAAI,CAAC;QAChD,IAAI,QAAQ,KAAK,UAAU,IAAI,QAAQ,KAAK,SAAS;YAAE,MAAM;QAC7D,KAAK,EAAE,CAAC;IACV,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,SAAS,CAAC,EAAgC,EAAE,CAAU;IACpE,MAAM,GAAG,GAAG,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC;IAE5B,IAAI,IAAI,GAAG,IAAI,CAAA;wBACO,CAAC,CAAC,KAAK;QACvB,WAAW,CAAC,CAAC,EAAE,OAAO,CAAC;WACpB,CAAC;IAEV,IAAI,SAAS,GAAG,EAAE,CAAC;IACnB,IAAI,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,KAAK,IAAI,IAAI,WAAW,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC;QAC7E,SAAS,IAAI,GAAG,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,KAAK,WAAW,CAAC;IACjD,CAAC;IAED,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC;QAC7B,MAAM,MAAM,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC,CAAa,CAAC;QACvC,MAAM,QAAQ,GAAG,GAAG,CAAC,CAAC,KAAK,IAAI,CAAC,GAAG,CAAC;QACpC,MAAM,QAAQ,GAAG,qBAAqB,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;QAClD,MAAM,mBAAmB,GAAG,CAAC,IAAI,QAAQ,CAAC,EAAE,CAAC,CAAC;QAC9C,MAAM,QAAQ,GAAG,CAAC,CAAC,KAAK,CAAC,MAAM,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC;QACxF,0EAA0E;QAC1E,SAAS,IAAI,mBAAmB,CAAC,CAAC,CAAC,IAAI,CAAA,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,YAAY,QAAQ,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC;IAC9F,CAAC;IAED,IAAI,EAAE,CAAC,IAAI,KAAK,IAAI,EAAE,CAAC;QACrB,MAAM,MAAM,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC5B,MAAM,QAAQ,GAAG,GAAG,CAAC,CAAC,KAAK,IAAI,MAAM,GAAG,CAAC;QACzC,MAAM,QAAQ,GAAG,UAAU,CAAC,CAAC,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QAC5C,SAAS,IAAI,IAAI,CAAA;gBACL,MAAM,IAAI,GAAG,IAAI,MAAM,IAAI,CAAC,CAAC,KAAK,WAAW,MAAM;UACzD,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;QACzE,CAAC;IACP,CAAC;IAED,IAAI,EAAE,CAAC,IAAI,KAAK,IAAI,EAAE,CAAC;QACrB,MAAM,KAAK,GAAG,QAAQ,CAAC,EAAE,CAAC,CAAC;QAC3B,IAAI,IAAI,IAAI,CAAA;WACL,CAAC,CAAC,KAAK,WAAW,GAAG;UACtB,MAAM,CAAC,CAAC,EAAE,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC;iBAC5C,CAAC,CAAC,KAAK,WAAW,KAAK,GAAG,CAAC;UAClC,QAAQ,CAAC,CAAC,EAAE,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC;;UAEtD,SAAS;QACX,CAAC;IACP,CAAC;SAAM,CAAC;QACN,IAAI,IAAI,SAAS,CAAC;IACpB,CAAC;IAED,IAAI,IAAI,KAAK,CAAC;IACd,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,EAAW,EAAE,CAAU;IAC/C,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC;IAClB,MAAM,KAAK,GAAa,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC;IAEhD,MAAM,QAAQ,GAAG,QAAQ,CAAC,EAAE,CAAC,CAAC;IAC9B,IAAI,EAAE,CAAC,IAAI,KAAK,IAAI,EAAE,CAAC;QACrB,IAAI,QAAQ,KAAK,EAAE,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;YACjC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC;QACjD,CAAC;aAAM,CAAC;YACN,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,YAAY,QAAQ,EAAE,EAAE,GAAG,CAAC,YAAY,EAAE,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC;QAC5E,CAAC;IACH,CAAC;SAAM,IAAI,QAAQ,GAAG,CAAC,EAAE,CAAC;QACxB,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,YAAY,QAAQ,EAAE,CAAC,CAAC;IACzC,CAAC;IAED,mBAAmB;IACnB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACzC,MAAM,MAAM,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAC3B,IAAI,CAAC,MAAM;YAAE,SAAS;QACtB,MAAM,SAAS,GAAG,CAAC,CAAC,KAAK,CAAC,MAAM,EAAE,EAAE,KAAK,EAAE,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;QAC3D,IAAI,SAAS,KAAK,IAAI;YAAE,OAAO,IAAI,CAAC;QACpC,IAAI,SAAS,KAAK,MAAM;YAAE,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IAClD,CAAC;IAED,uEAAuE;IACvE,uEAAuE;IACvE,2EAA2E;IAC3E,IAAI,EAAE,CAAC,IAAI,KAAK,IAAI,EAAE,CAAC;QACrB,MAAM,EAAE,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACxB,MAAM,SAAS,GAAG,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;QAC9C,IAAI,SAAS,KAAK,IAAI;YAAE,OAAO,IAAI,CAAC;QACpC,IAAI,SAAS,KAAK,MAAM,EAAE,CAAC;YACzB,MAAM,UAAU,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAChC,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CACjB,YAAY,UAAU,iBAAiB,EAAE,wBAAwB,EAAE,cAAc,SAAS,iCAAiC,CAC5H,CAAC;YACF,KAAK,CAAC,IAAI,CAAC,GAAG,UAAU,IAAI,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;QACvD,CAAC;IACH,CAAC;IAED,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"compile.d.ts","sourceRoot":"","sources":["../../src/core/compile.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,KAAK,CAAC;AAC3C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"compile.d.ts","sourceRoot":"","sources":["../../src/core/compile.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,KAAK,CAAC;AAC3C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAmCjD;;;;;;;;;;GAUG;AACH,wBAAgB,OAAO,CAAC,CAAC,SAAS,OAAO,EAAE,SAAS,EAAE,CAAC,GAAG,CAAC,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAMtF;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,cAAc,CAAC,OAAO,CAAC,CAEjF"}
|
package/dist/core/compile.js
CHANGED
|
@@ -15,6 +15,18 @@ function createFallback(zodSchema) {
|
|
|
15
15
|
if (!("schema" in facade)) {
|
|
16
16
|
Object.defineProperty(facade, "schema", { value: zodSchema, enumerable: false });
|
|
17
17
|
}
|
|
18
|
+
// Dev-time `.is`: delegates to zod's own safeParse so the boolean guard works
|
|
19
|
+
// before `zod-compiler generate` runs. The build replaces this with the
|
|
20
|
+
// compiled fast-check (zero-allocation) via __zcMkv. Non-enumerable to keep
|
|
21
|
+
// the augmentation invisible on the identity-preserved schema object.
|
|
22
|
+
if (!("is" in facade)) {
|
|
23
|
+
Object.defineProperty(facade, "is", {
|
|
24
|
+
value: (input) => facade.safeParse(input).success,
|
|
25
|
+
enumerable: false,
|
|
26
|
+
configurable: true,
|
|
27
|
+
writable: true,
|
|
28
|
+
});
|
|
29
|
+
}
|
|
18
30
|
return facade;
|
|
19
31
|
}
|
|
20
32
|
/**
|
package/dist/core/compile.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"compile.js","sourceRoot":"","sources":["../../src/core/compile.ts"],"names":[],"mappings":"AAGA,MAAM,eAAe,GAAG,MAAM,CAAC,GAAG,CAAC,uBAAuB,CAAC,CAAC;AAE5D;;;;;;;;;;GAUG;AACH,SAAS,cAAc,CAAI,SAAkB;IAC3C,MAAM,MAAM,GAAG,SAA8B,CAAC;IAC9C,IAAI,CAAC,CAAC,QAAQ,IAAK,MAAiB,CAAC,EAAE,CAAC;QACtC,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,QAAQ,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC,CAAC;IACnF,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,UAAU,OAAO,CAAoB,SAAY;IACrD,MAAM,MAAM,GAAG,cAAc,CAAY,SAAS,CAAC,CAAC;IACpD,IAAI,CAAC,CAAC,eAAe,IAAK,MAAiB,CAAC,EAAE,CAAC;QAC7C,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,eAAe,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC,CAAC;IACrF,CAAC;IACD,OAAO,MAAuC,CAAC;AACjD,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,gBAAgB,CAAC,KAAc;IAC7C,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,eAAe,IAAI,KAAK,CAAC;AACjF,CAAC"}
|
|
1
|
+
{"version":3,"file":"compile.js","sourceRoot":"","sources":["../../src/core/compile.ts"],"names":[],"mappings":"AAGA,MAAM,eAAe,GAAG,MAAM,CAAC,GAAG,CAAC,uBAAuB,CAAC,CAAC;AAE5D;;;;;;;;;;GAUG;AACH,SAAS,cAAc,CAAI,SAAkB;IAC3C,MAAM,MAAM,GAAG,SAA8B,CAAC;IAC9C,IAAI,CAAC,CAAC,QAAQ,IAAK,MAAiB,CAAC,EAAE,CAAC;QACtC,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,QAAQ,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC,CAAC;IACnF,CAAC;IACD,8EAA8E;IAC9E,wEAAwE;IACxE,4EAA4E;IAC5E,sEAAsE;IACtE,IAAI,CAAC,CAAC,IAAI,IAAK,MAAiB,CAAC,EAAE,CAAC;QAClC,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,IAAI,EAAE;YAClC,KAAK,EAAE,CAAC,KAAc,EAAW,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,OAAO;YACnE,UAAU,EAAE,KAAK;YACjB,YAAY,EAAE,IAAI;YAClB,QAAQ,EAAE,IAAI;SACf,CAAC,CAAC;IACL,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,UAAU,OAAO,CAAoB,SAAY;IACrD,MAAM,MAAM,GAAG,cAAc,CAAY,SAAS,CAAC,CAAC;IACpD,IAAI,CAAC,CAAC,eAAe,IAAK,MAAiB,CAAC,EAAE,CAAC;QAC7C,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,eAAe,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC,CAAC;IACrF,CAAC;IACD,OAAO,MAAuC,CAAC;AACjD,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,gBAAgB,CAAC,KAAc;IAC7C,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,eAAe,IAAI,KAAK,CAAC;AACjF,CAAC"}
|
package/dist/core/iife.d.ts
CHANGED
|
@@ -89,8 +89,15 @@ export declare const FIN_DEFERRED_DECL = "function __zcFinD(f,inp){return new __
|
|
|
89
89
|
* path runs with zero allocations — calling fn would allocate an intermediate
|
|
90
90
|
* SafeParseResult that escape analysis cannot remove (fn never inlines).
|
|
91
91
|
* Fast-path-eligible schemas never mutate, so fc(input) ⟹ data === input.
|
|
92
|
+
*
|
|
93
|
+
* is is the TOTAL fast-check predicate (fc when the fast path is total, else
|
|
94
|
+
* null). Installed as `.is()` — a zero-allocation boolean type guard. When
|
|
95
|
+
* null (partial fast path or none) `.is()` derives from fn(input).success: a
|
|
96
|
+
* partial fc can pass-through valid input but its `false` does not imply
|
|
97
|
+
* rejection (a default/catch may still succeed), so it would be unsound as a
|
|
98
|
+
* standalone guard.
|
|
92
99
|
*/
|
|
93
|
-
export declare const MK_VALIDATOR_DECL = "function __zcMkv(fn,schema,fc){var w=schema||{};w.parse=fc?function(input){if(fc(input))return input;var r=fn(input);if(r.success)return r.data;throw r.error;}:function(input){var r=fn(input);if(r.success)return r.data;throw r.error;};w.safeParse=fn;w.safeParseAsync=function(input){return Promise.resolve(fn(input));};w.parseAsync=fc?function(input){if(fc(input))return Promise.resolve(input);var r=fn(input);if(r.success)return Promise.resolve(r.data);return Promise.reject(r.error);}:function(input){var r=fn(input);if(r.success)return Promise.resolve(r.data);return Promise.reject(r.error);};return w;}";
|
|
100
|
+
export declare const MK_VALIDATOR_DECL = "function __zcMkv(fn,schema,fc,is){var w=schema||{};w.parse=fc?function(input){if(fc(input))return input;var r=fn(input);if(r.success)return r.data;throw r.error;}:function(input){var r=fn(input);if(r.success)return r.data;throw r.error;};w.safeParse=fn;w.safeParseAsync=function(input){return Promise.resolve(fn(input));};w.parseAsync=fc?function(input){if(fc(input))return Promise.resolve(input);var r=fn(input);if(r.success)return Promise.resolve(r.data);return Promise.reject(r.error);}:function(input){var r=fn(input);if(r.success)return Promise.resolve(r.data);return Promise.reject(r.error);};w.is=is||function(input){return fn(input).success;};return w;}";
|
|
94
101
|
/**
|
|
95
102
|
* Generate a `/* @__PURE__ * /` IIFE wrapping a compiled validator.
|
|
96
103
|
*
|
package/dist/core/iife.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"iife.d.ts","sourceRoot":"","sources":["../../src/core/iife.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AAExD,yFAAyF;AACzF,eAAO,MAAM,iBAAiB,yFACwD,CAAC;AAEvF,iFAAiF;AACjF,eAAO,MAAM,mBAAmB,mDAAmD,CAAC;AAEpF;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,eAAO,MAAM,eAAe,QAMe,CAAC;AAE5C;yEACyE;AACzE,eAAO,MAAM,QAAQ,sGACgF,CAAC;AAEtG;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,eAAO,MAAM,iBAAiB,+DAA+D,CAAC;AAE9F
|
|
1
|
+
{"version":3,"file":"iife.d.ts","sourceRoot":"","sources":["../../src/core/iife.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AAExD,yFAAyF;AACzF,eAAO,MAAM,iBAAiB,yFACwD,CAAC;AAEvF,iFAAiF;AACjF,eAAO,MAAM,mBAAmB,mDAAmD,CAAC;AAEpF;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,eAAO,MAAM,eAAe,QAMe,CAAC;AAE5C;yEACyE;AACzE,eAAO,MAAM,QAAQ,sGACgF,CAAC;AAEtG;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,eAAO,MAAM,iBAAiB,+DAA+D,CAAC;AAE9F;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoCG;AACH,eAAO,MAAM,iBAAiB,0pBAC2nB,CAAC;AAU1pB;;;;;;;GAOG;AACH,wBAAgB,YAAY,CAC1B,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,kBAAkB,EAC1B,OAAO,CAAC,EAAE;IAAE,SAAS,CAAC,EAAE,OAAO,GAAG,SAAS,CAAA;CAAE,GAC5C,MAAM,CAsBR"}
|
package/dist/core/iife.js
CHANGED
|
@@ -93,8 +93,15 @@ export const FIN_DEFERRED_DECL = "function __zcFinD(f,inp){return new __ZcFail(n
|
|
|
93
93
|
* path runs with zero allocations — calling fn would allocate an intermediate
|
|
94
94
|
* SafeParseResult that escape analysis cannot remove (fn never inlines).
|
|
95
95
|
* Fast-path-eligible schemas never mutate, so fc(input) ⟹ data === input.
|
|
96
|
+
*
|
|
97
|
+
* is is the TOTAL fast-check predicate (fc when the fast path is total, else
|
|
98
|
+
* null). Installed as `.is()` — a zero-allocation boolean type guard. When
|
|
99
|
+
* null (partial fast path or none) `.is()` derives from fn(input).success: a
|
|
100
|
+
* partial fc can pass-through valid input but its `false` does not imply
|
|
101
|
+
* rejection (a default/catch may still succeed), so it would be unsound as a
|
|
102
|
+
* standalone guard.
|
|
96
103
|
*/
|
|
97
|
-
export const MK_VALIDATOR_DECL = "function __zcMkv(fn,schema,fc){var w=schema||{};w.parse=fc?function(input){if(fc(input))return input;var r=fn(input);if(r.success)return r.data;throw r.error;}:function(input){var r=fn(input);if(r.success)return r.data;throw r.error;};w.safeParse=fn;w.safeParseAsync=function(input){return Promise.resolve(fn(input));};w.parseAsync=fc?function(input){if(fc(input))return Promise.resolve(input);var r=fn(input);if(r.success)return Promise.resolve(r.data);return Promise.reject(r.error);}:function(input){var r=fn(input);if(r.success)return Promise.resolve(r.data);return Promise.reject(r.error);};return w;}";
|
|
104
|
+
export const MK_VALIDATOR_DECL = "function __zcMkv(fn,schema,fc,is){var w=schema||{};w.parse=fc?function(input){if(fc(input))return input;var r=fn(input);if(r.success)return r.data;throw r.error;}:function(input){var r=fn(input);if(r.success)return r.data;throw r.error;};w.safeParse=fn;w.safeParseAsync=function(input){return Promise.resolve(fn(input));};w.parseAsync=fc?function(input){if(fc(input))return Promise.resolve(input);var r=fn(input);if(r.success)return Promise.resolve(r.data);return Promise.reject(r.error);}:function(input){var r=fn(input);if(r.success)return Promise.resolve(r.data);return Promise.reject(r.error);};w.is=is||function(input){return fn(input).success;};return w;}";
|
|
98
105
|
function extractFunctionName(functionDef) {
|
|
99
106
|
const match = /^function\s+(\w+)\s*\(/.exec(functionDef);
|
|
100
107
|
if (!match?.[1]) {
|
|
@@ -116,6 +123,9 @@ export function generateIIFE(schemaExpr, schema, options) {
|
|
|
116
123
|
const zodCompat = options?.zodCompat !== false;
|
|
117
124
|
const schemaArg = zodCompat ? schemaExpr : "null";
|
|
118
125
|
const fcArg = codegenResult.fastFnName ?? "null";
|
|
126
|
+
// `.is()` gets the fast-check directly only when it is a total predicate;
|
|
127
|
+
// partial/none falls back to safeParse().success inside __zcMkv.
|
|
128
|
+
const isArg = codegenResult.fastTotal ? fcArg : "null";
|
|
119
129
|
return [
|
|
120
130
|
"/* @__PURE__ */ (() => {",
|
|
121
131
|
...(refEntries.length > 0
|
|
@@ -125,7 +135,7 @@ export function generateIIFE(schemaExpr, schema, options) {
|
|
|
125
135
|
.split("\n")
|
|
126
136
|
.filter((l) => l.trim() !== "" && l.trim() !== "/* zod-compiler */"),
|
|
127
137
|
codegenResult.functionDef,
|
|
128
|
-
`return __zcMkv(${fnName},${schemaArg},${fcArg});`,
|
|
138
|
+
`return __zcMkv(${fnName},${schemaArg},${fcArg},${isArg});`,
|
|
129
139
|
"})()",
|
|
130
140
|
].join("\n");
|
|
131
141
|
}
|