zod-compiler 1.17.0 → 1.18.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -749,15 +749,15 @@ What this means in practice:
749
749
 
750
750
  All three compile fully, and validation of the declared keys is identical in every case.
751
751
 
752
- **Performance of `stripUnknownKeys`** (`pnpm benchmark strip-unknown-keys`): stripping rebuilds the object, so it gives up the by-reference fast path — but still beats Zod, which also rebuilds. Representative throughput:
752
+ **Performance of `stripUnknownKeys`** (`pnpm benchmark strip-unknown-keys`): stripping rebuilds the object, so it gives up the by-reference fast path — but the rebuild is a single object literal per level, which costs little next to the validation itself. Representative throughput:
753
753
 
754
754
  | Schema (input) | Zod (strips) | compiler (keep, default) | compiler (strip) | strip vs keep | strip vs Zod |
755
755
  | ----------------------------- | ------------ | ------------------------ | ---------------- | ------------- | ------------ |
756
- | medium object, 7 keys (clean) | 2.3M | 10.7M | 7.7M | 0.7x | **3.3x** |
757
- | wide object, 20 keys (clean) | 3.5M | 15.7M | 4.7M | 0.3x | **1.3x** |
758
- | nested API response (clean) | 152K | 7.8M | 1.3M | 0.17x | **8.7x** |
756
+ | medium object, 7 keys (clean) | 2.8M | 14.4M | 13.6M | 0.94x | **4.8x** |
757
+ | wide object, 20 keys (clean) | 4.2M | 24.8M | 18.1M | 0.73x | **4.3x** |
758
+ | nested API response (clean) | 180K | 9.6M | 5.7M | 0.60x | **32x** |
759
759
 
760
- The cost scales with key count and nesting depth (every declared key is copied into the fresh object); it's independent of whether unknown keys are actually present. Keep stripping off where you don't need sanitization (forwarding to an ORM, etc.) and on where you do.
760
+ The tax scales with nesting depth (one fresh object per level), not really with key count, and is independent of whether unknown keys are actually present. It is small enough that you should turn stripping on wherever you want sanitization forwarding parsed bodies to an ORM, for instance rather than trading it away for throughput.
761
761
 
762
762
  - **Records skip symbol / non-enumerable keys.** `z.record(z.string(), …)` validates (and rejects) a symbol-keyed or non-enumerable-keyed entry under Zod; the compiled record never visits it. Plain string-keyed records — the common case — are unaffected.
763
763
 
@@ -769,42 +769,44 @@ Matching Zod on these would mean allocating a fresh object (or a `Reflect.ownKey
769
769
 
770
770
  | Scenario | Zod v3 | Zod v4 | **zod-compiler** | Typia | AJV | vs Zod v4 |
771
771
  | ------------------------------------------------- | ------ | ------ | ---------------- | ----- | ----- | --------- |
772
- | simple string | 13.3M | 14.4M | **16.2M** | 17.7M | 17.8M | 1.1x |
773
- | string (min/max) | 13.0M | 8.0M | **17.2M** | 18.1M | 16.3M | 2.2x |
774
- | number (int+positive) | 11.5M | 7.8M | **15.7M** | 16.4M | 16.7M | 2.0x |
775
- | enum | 11.3M | 12.3M | **16.9M** | 17.2M | 17.6M | 1.4x |
776
- | bigint (min/max) | 11.8M | 7.9M | **15.7M** | — | — | 2.0x |
777
- | tuple [string, int, bool] | 6.0M | 6.5M | **17.0M** | 16.2M | 16.5M | 2.6x |
778
- | record\<string, number\> | 3.3M | 2.8M | **8.5M** | 11.5M | 15.1M | 3.0x |
779
- | set\<string\> (5 items) | 3.7M | 2.3M | **15.2M** | — | — | 6.7x |
780
- | set\<string\> (20 items) | 1.3M | 695K | **12.1M** | — | — | **17x** |
781
- | map\<string, number\> (5 entries) | 2.1M | 1.4M | **13.1M** | — | — | 9.6x |
782
- | map\<string, number\> (20 entries) | 652K | 361K | **8.6M** | — | — | **24x** |
783
- | pipe (non-transform) | 8.8M | 5.9M | **16.1M** | — | — | 2.7x |
784
- | discriminatedUnion (3 variants) | 3.3M | 4.0M | **16.1M** | 15.8M | 8.0M | 4.0x |
772
+ | simple string | 12.5M | 14.1M | **16.6M** | 17.4M | 17.6M | 1.2x |
773
+ | string (min/max) | 12.1M | 7.7M | **17.1M** | 17.1M | 15.6M | 2.2x |
774
+ | number (int+positive) | 12.2M | 7.6M | **15.4M** | 16.9M | 18.1M | 2.0x |
775
+ | enum | 11.5M | 12.1M | **16.9M** | 17.0M | 17.5M | 1.4x |
776
+ | bigint (min/max) | 11.8M | 7.7M | **16.6M** | — | — | 2.1x |
777
+ | tuple [string, int, bool] | 5.7M | 6.5M | **16.2M** | 16.8M | 15.9M | 2.5x |
778
+ | record\<string, number\> | 3.3M | 2.8M | **8.5M** | 12.3M | 15.6M | 3.0x |
779
+ | set\<string\> (5 items) | 3.6M | 2.3M | **14.5M** | — | — | 6.4x |
780
+ | set\<string\> (20 items) | 1.3M | 681K | **12.1M** | — | — | **18x** |
781
+ | map\<string, number\> (5 entries) | 2.1M | 1.4M | **13.0M** | — | — | 9.5x |
782
+ | map\<string, number\> (20 entries) | 641K | 350K | **8.4M** | — | — | **24x** |
783
+ | pipe (non-transform) | 8.5M | 5.7M | **15.8M** | — | — | 2.8x |
784
+ | discriminatedUnion (3 variants) | 3.2M | 4.0M | **15.2M** | 15.4M | 7.5M | 3.8x |
785
785
  | discriminatedUnion (8 variants, rotating) | 2.7M | 3.5M | **9.6M** | — | — | 2.7x |
786
- | plain union of 8 tagged objects (auto-discrim.) | 368K | 655K | **8.6M** | — | — | **13x** |
787
- | strict object (DB row) | 1.8M | 3.2M | **7.3M** | — | — | 2.3x |
788
- | medium object (valid) | 2.0M | 2.4M | **10.3M** | 11.4M | 7.7M | 4.3x |
789
- | medium object (invalid) | 536K | 80K | **15.5M** | 2.9M | 7.9M | **194x** |
790
- | large object (10 items) | 123K | 174K | **8.0M** | 5.9M | 1.3M | **46x** |
791
- | large object (100 items) | 13K | 19K | **1.4M** | 1.3M | 127K | **73x** |
792
- | recursive tree (7 nodes) | 547K | 2.0M | **11.8M** | 11.7M | 4.7M | 5.8x |
793
- | recursive tree (121 nodes) | 32K | 142K | **2.3M** | 1.9M | 356K | **16x** |
794
- | nested recursion (7 nodes) | 389K | 1.0M | **11.7M** | 10.8M | 3.0M | 12x |
795
- | nested recursion (121 nodes) | 24K | 61K | **2.0M** | 1.6M | 220K | **33x** |
796
- | deeply nested object (243 leaves) | 11K | 19K | **1.2M** | 1.0M | 122K | **64x** |
797
- | event log (combined) | 382K | 618K | **5.8M** | — | — | 9.4x |
798
- | object with transform (zero-capture) | 1.2M | 1.9M | **6.1M** | — | — | 3.3x |
799
- | array 10 × transform (zero-capture) | 129K | 220K | **3.4M** | — | — | **15x** |
800
- | array 50 × transform (zero-capture) | 26K | 44K | **821K** | — | — | **19x** |
801
- | object with captured transform (partial fallback) | 1.4M | 6.4M | **6.2M** | — | — | 1.0x |
802
-
803
- _ops/s, higher is better. "—" = not supported by the library. Measured with `vitest bench` on Apple M4 Max (zod 4.3.6, zod v3 3.23.8, typia 12, ajv 8)._
804
-
805
- Performance scales with schema complexity. Nested objects and arrays see the biggest gains because zod-compiler eliminates per-node traversal overhead. Deeply nested schemas (the 243-leaf dashboard row) stay fast because oversized fast-check functions are split into smaller boolean helpers, each kept within V8's optimizing-compiler budget. `discriminatedUnion` uses O(1) `switch` dispatch instead of Zod's sequential trial, and each case validates only its variant's distinctive fields — the object type-guard and the discriminator are checked once before dispatch, never re-checked inside the matched case (a redundancy the engine only elides on unions small enough to inline, so large unions get a measured ~1.5x on the fast check). A **plain `z.union`** of objects that all pin a shared key to disjoint literals is auto-detected and lowered to the same switch dispatch — so an untagged union written without `discriminatedUnion` still validates in O(1) (13x faster than Zod here), as long as it has enough options to outweigh the switch's setup cost; below that it keeps the fully-inlined `||`-chain. The invalid-input row is large because failed `safeParse` defers error materialization until `.error` is read. Zero-capture `transform`/`refine` callbacks are compiled (3-19x); schemas with captured callbacks fall back per-field and roughly match Zod.
806
-
807
- `parse()` (throwing API) rides a zero-allocation fast path: medium object 2.3M9.7M ops/s (4.1x), large object (100 items) 17K → 1.4M ops/s (79x).
786
+ | plain union of 8 tagged objects (auto-discrim.) | 358K | 653K | **9.5M** | — | — | **15x** |
787
+ | strict object (DB row) | 1.8M | 3.1M | **7.1M** | — | — | 2.3x |
788
+ | medium object (valid) | 2.0M | 2.4M | **9.9M** | 11.3M | 7.5M | 4.2x |
789
+ | medium object (invalid) | 524K | 79K | **14.9M** | 2.9M | 7.2M | **188x** |
790
+ | large object (10 items) | 120K | 167K | **7.7M** | 5.8M | 1.2M | **46x** |
791
+ | large object (100 items) | 13K | 18K | **1.4M** | 1.3M | 123K | **76x** |
792
+ | recursive tree (7 nodes) | 576K | 2.0M | **13.0M** | 11.8M | 4.8M | 6.4x |
793
+ | recursive tree (121 nodes) | 31K | 138K | **2.4M** | 1.9M | 378K | **18x** |
794
+ | nested recursion (7 nodes) | 385K | 1.0M | **11.7M** | 11.0M | 3.0M | 12x |
795
+ | nested recursion (121 nodes) | 24K | 63K | **2.0M** | 1.6M | 205K | **32x** |
796
+ | deeply nested object (243 leaves) | 11K | 19K | **1.2M** | 1.1M | 122K | **61x** |
797
+ | event log (combined) | 384K | 619K | **5.7M** | — | — | 9.2x |
798
+ | object with transform (zero-capture) | 1.1M | 1.9M | **6.0M** | — | — | 3.1x |
799
+ | array 10 × transform (zero-capture) | 120K | 214K | **3.2M** | — | — | **15x** |
800
+ | array 50 × transform (zero-capture) | 25K | 44K | **807K** | — | — | **18x** |
801
+ | object with captured transform (partial fallback) | 1.3M | 6.2M | **6.2M** | — | — | 1.0x |
802
+
803
+ _ops/s, higher is better. "—" = not supported by the library. Measured with `vitest bench` on Apple M4 Max (zod 4.3.6, zod v3 3.23.8, typia 12, ajv 8), best of two full runs; rows reproduce within ~5% between runs. The harness itself costs ~55 ns per iteration — the fastest rows sit at that floor — so it compresses the top of the range: gaps between the three AOT columns on the primitive rows are below the noise, not real._
804
+
805
+ Performance scales with schema complexity. Nested objects and arrays see the biggest gains because zod-compiler eliminates per-node traversal overhead. Deeply nested schemas (the 243-leaf dashboard row) stay fast because oversized fast-check functions are split into smaller boolean helpers, each kept within V8's optimizing-compiler budget. `discriminatedUnion` uses O(1) `switch` dispatch instead of Zod's sequential trial, and each case validates only its variant's distinctive fields — the object type-guard and the discriminator are checked once before dispatch, never re-checked inside the matched case (a redundancy the engine only elides on unions small enough to inline, so large unions get a measured ~1.5x on the fast check). A **plain `z.union`** of objects that all pin a shared key to disjoint literals is auto-detected and lowered to the same switch dispatch — so an untagged union written without `discriminatedUnion` still validates in O(1) (15x faster than Zod here), as long as it has enough options to outweigh the switch's setup cost; below that it keeps the fully-inlined `||`-chain, whose options and per-option checks are ordered cheapest-first so a non-matching option is dropped without running its regexes. The invalid-input row is large because failed `safeParse` defers error materialization until `.error` is read. Zero-capture `transform`/`refine` callbacks are compiled (3-18x); schemas with captured callbacks fall back per-field and roughly match Zod.
806
+
807
+ `parse()` (throwing API) rides a zero-allocation fast path: medium object 2.4M10.1M ops/s (4.3x), large object (100 items) 18K → 1.4M ops/s (76x).
808
+
809
+ The `.is()` guard answers both halves of "does this match?" cheaply — 10.1M ops/s on matching input and 9.9M on non-matching, against Zod's 2.4M / 162K via `safeParse().success` (medium object). Rejection is the cheap case by construction: the fast check's conjuncts are ordered so a mismatch is decided on a type guard rather than on the schema's most expensive check.
808
810
 
809
811
  ```bash
810
812
  pnpm benchmark # run locally
@@ -817,7 +819,13 @@ For eligible schemas, zod-compiler generates a **two-phase validator**:
817
819
  1. **Fast Path** — A single `&&` expression chain that validates the entire input with zero allocations. Valid input returns immediately.
818
820
  2. **Slow Path** — Error-collecting validation that only runs when the Fast Path fails.
819
821
 
820
- Additional optimizations: check ordering (cheap checks first), pre-compiled regex, Set-based enum lookups, small enum inlining (`===` for up to 5 values), discriminated-union cases that skip the now-redundant object-guard and discriminator re-check after `switch` dispatch, and auto-discrimination of plain `z.union`s of tagged objects into the same switch dispatch.
822
+ Additional optimizations: pre-compiled regex, per-type check ordering (a string's `.min()` before its format regex), discriminated-union cases that skip the now-redundant object-guard and discriminator re-check after `switch` dispatch, and auto-discrimination of plain `z.union`s of tagged objects into the same switch dispatch.
823
+
824
+ **Cheapest-first check ordering.** A fast check is one `&&` chain, so accepting input runs every conjunct whatever the order — but a _rejection_ stops at the first false one. Object properties, tuple positions, intersection sides and union options are therefore emitted in estimated-cost order, cheap type guards ahead of regex formats and nested containers. Valid input is unaffected; deciding that input does _not_ match gets much cheaper, which is what `.is()` guards, `z.union` probing and every failed `safeParse` actually do. Measured per validator (no harness overhead) on a 3-option union of objects declaring `{email, kind, note}`: an input matching the last option 102 ns → 39 ns (2.6x), one matching none 102 ns → 6 ns (16x); a 6-property object guard rejecting a wrong-typed field 38 ns → 5 ns (8x).
825
+
826
+ **Object construction.** Where a fresh object must be produced — `stripUnknownKeys` — it is emitted as one object literal rather than assembled key by key. V8 stamps a literal out of a cached boilerplate map in a single allocation; adding keys one at a time walks a transition chain and re-checks the map on every store, which measured 8.1x slower on a 20-key shape. Keys that can be absent (optionals) are appended after the literal, in shape order, under zod's own presence rule.
827
+
828
+ **Membership tests.** A strict object's unknown-key pass consults an object literal (`TABLE[k] === 1`) rather than a `Set`, whose `has` costs a flat ~4 ns hash probe per key however small the set — 3.7x (8 keys) to 4.5x (32 keys) faster over the same for-in, taking an 8-key strict object from 53 ns to 32 ns end to end. Enum values keep the existing split: an inlined `===` chain up to 5 values, one `Set` lookup above that.
821
829
 
822
830
  Run `npx zod-compiler check --json` to see which schemas qualify for Fast Path.
823
831
 
@@ -89,6 +89,8 @@ export interface CodeGenContext {
89
89
  effectFnCache?: Map<string, string>;
90
90
  /** Memo for estimateFastCost (size-gated fast-check extraction). Lazily created. */
91
91
  fastSizeCache?: WeakMap<SchemaIR, number>;
92
+ /** Memo for estimateRuntimeCost (cheapest-first check ordering). Lazily created. */
93
+ fastRuntimeCostCache?: WeakMap<SchemaIR, number>;
92
94
  /**
93
95
  * File-level shared slow-walk plan. Set only when generating a mutation-free
94
96
  * schema (so shared walks stay on the deferred cold path); the slow-path
@@ -251,6 +253,13 @@ export declare function emitRegex(ctx: CodeGenContext, prefix: string, pattern:
251
253
  export declare function emitRegexSourceString(ctx: CodeGenContext, pattern: string): string;
252
254
  /** Declare a `new Set([...])` in the preamble and return its variable name. */
253
255
  export declare function emitSet(ctx: CodeGenContext, prefix: string, values: readonly unknown[]): string;
256
+ /**
257
+ * Boolean membership test for one key variable against a fixed key list.
258
+ * Short lists inline an `===` chain (keys arriving from for-in are
259
+ * internalized, so each arm is a pointer compare); longer ones consult a
260
+ * preamble membership table. Empty list recognizes nothing.
261
+ */
262
+ export declare function keyMembershipTest(ctx: CodeGenContext, keys: readonly string[], keyVar: string): string;
254
263
  /**
255
264
  * Enum values at or below this count use inline === checks instead of Set.has().
256
265
  * Measured on V8: for ≤5 values, an === chain beats Set.has by up to ~3x with
@@ -299,6 +308,16 @@ export declare function extendStaticPathIndex(parentPath: string, index: number)
299
308
  * path, and by the shared-walk dedup + intersection extractor to exclude them.
300
309
  */
301
310
  export declare function hasMutation(ir: SchemaIR): boolean;
311
+ /**
312
+ * Does this schema reject `undefined` outright — i.e. does a SUCCESSFUL parse
313
+ * guarantee a defined output value?
314
+ *
315
+ * Used by the strip rebuild to decide whether a property can go straight into
316
+ * the output object literal or needs zod's presence test around it (see
317
+ * slowObject). Conservative: anything that might accept, produce, or default to
318
+ * `undefined` answers false, which only costs that key its literal slot.
319
+ */
320
+ export declare function rejectsUndefined(ir: SchemaIR): boolean;
302
321
  /**
303
322
  * Sort comparator for CheckIR: cheapest/most-discriminating checks first.
304
323
  * Used by fast-path generators after filtering out refine_effect entries.
@@ -1 +1 @@
1
- {"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../../src/core/codegen/context.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../../src/core/codegen/context.ts"],"names":[],"mappings":"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"}
@@ -109,6 +109,48 @@ export function emitSet(ctx, prefix, values) {
109
109
  ctx.preamble.push(`var ${name}=new Set(${JSON.stringify([...values])});`);
110
110
  return name;
111
111
  }
112
+ /**
113
+ * An object literal cannot carry an own `__proto__` key: `{"__proto__":1}`
114
+ * sets nothing and defines nothing, so the membership lookup would silently
115
+ * miss that key. Such shapes keep the Set form.
116
+ */
117
+ function literalSafeKeys(keys) {
118
+ return !keys.includes("__proto__");
119
+ }
120
+ /**
121
+ * Declare a `{key:1,...}` membership table in the preamble and return its
122
+ * variable name; membership is `NAME[k]===1`.
123
+ *
124
+ * Chosen over `new Set(...).has(k)` for key-membership tests: V8 serves the
125
+ * keyed load from the megamorphic stub cache (~0.9 ns, flat in table size),
126
+ * while `Set.prototype.has` costs ~4 ns per call however small the set —
127
+ * measured 3.7x (8 keys) to 4.5x (32 keys) faster over a strict object's
128
+ * for-in pass. `===1` (not truthiness) is what keeps inherited keys out:
129
+ * `toString`, `constructor`, `__proto__` and friends all resolve to something
130
+ * that is never the number 1, so they read as unknown exactly as they should.
131
+ */
132
+ function emitKeyLookup(ctx, prefix, keys) {
133
+ const name = `__ko_${prefix}_${ctx.counter++}`;
134
+ const entries = keys.map((k) => `${escapeString(k)}:1`).join(",");
135
+ ctx.preamble.push(`var ${name}={${entries}};`);
136
+ return name;
137
+ }
138
+ /**
139
+ * Boolean membership test for one key variable against a fixed key list.
140
+ * Short lists inline an `===` chain (keys arriving from for-in are
141
+ * internalized, so each arm is a pointer compare); longer ones consult a
142
+ * preamble membership table. Empty list recognizes nothing.
143
+ */
144
+ export function keyMembershipTest(ctx, keys, keyVar) {
145
+ if (keys.length === 0)
146
+ return "false";
147
+ if (keys.length <= ENUM_INLINE_THRESHOLD) {
148
+ return keys.map((k) => `${keyVar}===${escapeString(k)}`).join("||");
149
+ }
150
+ if (!literalSafeKeys(keys))
151
+ return `${emitSet(ctx, "ks", keys)}.has(${keyVar})`;
152
+ return `${emitKeyLookup(ctx, "ks", keys)}[${keyVar}]===1`;
153
+ }
112
154
  /**
113
155
  * Enum values at or below this count use inline === checks instead of Set.has().
114
156
  * Measured on V8: for ≤5 values, an === chain beats Set.has by up to ~3x with
@@ -269,6 +311,58 @@ export function hasMutation(ir) {
269
311
  return false;
270
312
  }
271
313
  }
314
+ /**
315
+ * Does this schema reject `undefined` outright — i.e. does a SUCCESSFUL parse
316
+ * guarantee a defined output value?
317
+ *
318
+ * Used by the strip rebuild to decide whether a property can go straight into
319
+ * the output object literal or needs zod's presence test around it (see
320
+ * slowObject). Conservative: anything that might accept, produce, or default to
321
+ * `undefined` answers false, which only costs that key its literal slot.
322
+ */
323
+ export function rejectsUndefined(ir) {
324
+ switch (ir.type) {
325
+ // Coercion turns undefined into a value (`String(undefined)`), so a
326
+ // coercing primitive is NOT a rejector.
327
+ case "string":
328
+ case "number":
329
+ case "boolean":
330
+ case "bigint":
331
+ case "date":
332
+ return ir.coerce !== true;
333
+ case "symbol":
334
+ case "null":
335
+ case "nan":
336
+ case "never":
337
+ case "enum":
338
+ case "object":
339
+ case "array":
340
+ case "tuple":
341
+ case "record":
342
+ case "set":
343
+ case "map":
344
+ case "file":
345
+ case "templateLiteral":
346
+ case "discriminatedUnion":
347
+ case "stringBool":
348
+ return true;
349
+ case "literal":
350
+ return !ir.values.includes(undefined);
351
+ case "union":
352
+ return ir.options.every(rejectsUndefined);
353
+ case "intersection":
354
+ return rejectsUndefined(ir.left) || rejectsUndefined(ir.right);
355
+ case "nullable":
356
+ case "readonly":
357
+ case "recursionTarget":
358
+ return rejectsUndefined(ir.inner);
359
+ default:
360
+ // optional / any / unknown / undefined / void / default / catch /
361
+ // fallback / effect / pipe / recursiveRef — each can yield undefined,
362
+ // or is opaque enough that we must not assume otherwise.
363
+ return false;
364
+ }
365
+ }
272
366
  /**
273
367
  * Sort comparator for CheckIR: cheapest/most-discriminating checks first.
274
368
  * Used by fast-path generators after filtering out refine_effect entries.
@@ -1 +1 @@
1
- {"version":3,"file":"context.js","sourceRoot":"","sources":["../../../src/core/codegen/context.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"context.js","sourceRoot":"","sources":["../../../src/core/codegen/context.ts"],"names":[],"mappings":"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"}
@@ -16,6 +16,7 @@
16
16
  * returned string length, so only the look-ahead prediction is approximate.
17
17
  */
18
18
  import type { SchemaIR } from "../types.js";
19
+ import type { CodeGenContext } from "./context.js";
19
20
  /**
20
21
  * Per-function soft size cap, in emitted characters. Once the fast-check being
21
22
  * assembled would exceed this, the next large hoistable sub-schema is split into
@@ -52,4 +53,10 @@ export declare const HOISTABLE: ReadonlySet<SchemaIR["type"]>;
52
53
  * would be re-walked quadratically.
53
54
  */
54
55
  export declare function estimateFastCost(ir: SchemaIR, cache: WeakMap<SchemaIR, number>): number;
56
+ /**
57
+ * Sort a fast-check's sibling conjuncts (or union options) cheapest-first.
58
+ * Returns a new array; ties keep source order (Array#sort is stable), so a
59
+ * schema whose members all cost the same emits byte-identical output.
60
+ */
61
+ export declare function orderByRuntimeCost<T>(items: readonly T[], irOf: (item: T) => SchemaIR, ctx: CodeGenContext): T[];
55
62
  //# sourceMappingURL=fast-size.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"fast-size.d.ts","sourceRoot":"","sources":["../../../src/core/codegen/fast-size.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAE5C;;;;;GAKG;AACH,eAAO,MAAM,WAAW,QAAS,CAAC;AAWlC;;;;;GAKG;AACH,wBAAgB,mBAAmB,CACjC,EAAE,EAAE,QAAQ,EACZ,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,OAAO,CAAC,QAAQ,EAAE,MAAM,CAAC,GAC/B,MAAM,CAER;AAED;;;;GAIG;AACH,eAAO,MAAM,WAAW,OAAQ,CAAC;AAEjC,kGAAkG;AAClG,eAAO,MAAM,SAAS,KAAK,CAAC;AAE5B;;;;;GAKG;AACH,eAAO,MAAM,SAAS,EAAE,WAAW,CAAC,QAAQ,CAAC,MAAM,CAAC,CAOlD,CAAC;AA8EH;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,OAAO,CAAC,QAAQ,EAAE,MAAM,CAAC,GAAG,MAAM,CASvF"}
1
+ {"version":3,"file":"fast-size.d.ts","sourceRoot":"","sources":["../../../src/core/codegen/fast-size.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAEnD;;;;;GAKG;AACH,eAAO,MAAM,WAAW,QAAS,CAAC;AAWlC;;;;;GAKG;AACH,wBAAgB,mBAAmB,CACjC,EAAE,EAAE,QAAQ,EACZ,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,OAAO,CAAC,QAAQ,EAAE,MAAM,CAAC,GAC/B,MAAM,CAER;AAED;;;;GAIG;AACH,eAAO,MAAM,WAAW,OAAQ,CAAC;AAEjC,kGAAkG;AAClG,eAAO,MAAM,SAAS,KAAK,CAAC;AAE5B;;;;;GAKG;AACH,eAAO,MAAM,SAAS,EAAE,WAAW,CAAC,QAAQ,CAAC,MAAM,CAAC,CAOlD,CAAC;AA8EH;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,OAAO,CAAC,QAAQ,EAAE,MAAM,CAAC,GAAG,MAAM,CASvF;AA0ED;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,CAAC,EAClC,KAAK,EAAE,SAAS,CAAC,EAAE,EACnB,IAAI,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,QAAQ,EAC3B,GAAG,EAAE,cAAc,GAClB,CAAC,EAAE,CAGL"}
@@ -153,4 +153,126 @@ export function estimateFastCost(ir, cache) {
153
153
  cache.set(ir, total);
154
154
  return total;
155
155
  }
156
+ // ─── Runtime cost (check ordering) ───────────────────────────────────────────
157
+ /**
158
+ * Assumed element count for unbounded collections, used only to weight a
159
+ * container against its siblings when ordering an `&&` chain.
160
+ */
161
+ const ASSUMED_ELEMENTS = 4;
162
+ /** Runtime weight of one check on an already-type-confirmed value. */
163
+ function checkRuntimeCost(kind) {
164
+ switch (kind) {
165
+ // A `.test()` call costs ~9 ns of dispatch before it matches a character —
166
+ // an order of magnitude above every other check, and the reason ordering
167
+ // matters at all.
168
+ case "string_format":
169
+ return 100;
170
+ // Zero-capture user predicate: a real call, cheaper than a regex.
171
+ case "refine_effect":
172
+ return 20;
173
+ case "includes":
174
+ case "starts_with":
175
+ case "ends_with":
176
+ return 6;
177
+ case "multiple_of":
178
+ case "bigint_multiple_of":
179
+ return 4;
180
+ default:
181
+ // length/size/range comparisons: a load and a compare.
182
+ return 1;
183
+ }
184
+ }
185
+ /** A node's own runtime weight, EXCLUDING its children. */
186
+ function shallowRuntimeCost(ir) {
187
+ switch (ir.type) {
188
+ case "string":
189
+ case "number":
190
+ return 2 + ir.checks.reduce((sum, c) => sum + checkRuntimeCost(c.kind), 0);
191
+ case "bigint":
192
+ case "date":
193
+ return 3 + (ir.checks?.length ?? 0);
194
+ case "file":
195
+ return 3 + (ir.checks?.length ?? 0) * 2;
196
+ case "enum":
197
+ // Inlined `===` chain (or one hashed lookup) — sub-nanosecond either way.
198
+ return 1 + Math.min(ir.values.length, 8);
199
+ case "object":
200
+ // Type guard, plus the strict pass's per-key membership test.
201
+ return 3 + (ir.strict === true ? Object.keys(ir.properties).length : 0);
202
+ case "array":
203
+ case "set":
204
+ case "record":
205
+ case "map":
206
+ case "tuple":
207
+ return 3;
208
+ case "templateLiteral":
209
+ return 100;
210
+ case "recursiveRef":
211
+ case "recursionTarget":
212
+ // A recursive call expands into an unknown amount of work; treat it as
213
+ // the most expensive sibling so it is probed last.
214
+ return 200;
215
+ default:
216
+ return 1;
217
+ }
218
+ }
219
+ /** estimateRuntimeCost against the per-compile memo hanging off the context. */
220
+ function runtimeCostOf(ir, ctx) {
221
+ return estimateRuntimeCost(ir, (ctx.fastRuntimeCostCache ??= new WeakMap()));
222
+ }
223
+ /**
224
+ * Sort a fast-check's sibling conjuncts (or union options) cheapest-first.
225
+ * Returns a new array; ties keep source order (Array#sort is stable), so a
226
+ * schema whose members all cost the same emits byte-identical output.
227
+ */
228
+ export function orderByRuntimeCost(items, irOf, ctx) {
229
+ if (items.length < 2)
230
+ return [...items];
231
+ return [...items].sort((a, b) => runtimeCostOf(irOf(a), ctx) - runtimeCostOf(irOf(b), ctx));
232
+ }
233
+ /**
234
+ * Estimated runtime cost of a node's fast-check, in arbitrary units calibrated
235
+ * so a regex format check dominates a handful of type guards. Memoized per IR
236
+ * node, like estimateFastCost — the estimate is consulted at every nesting
237
+ * level, and shared sub-trees are common.
238
+ *
239
+ * Used to order the conjuncts of an `&&` chain cheapest-first. Accepting input
240
+ * runs every conjunct regardless, so ordering is free there; REJECTING input
241
+ * stops at the first false one, which is where a schema pays for probing a
242
+ * `z.email()` before the `kind` literal that actually discriminates. Measured
243
+ * on a 3-option union of objects that each declare `{email, kind, note}`:
244
+ * 102 ns → 39 ns for an input matching the last option, and 102 ns → 6 ns for
245
+ * one matching none.
246
+ */
247
+ function estimateRuntimeCost(ir, cache) {
248
+ const cached = cache.get(ir);
249
+ if (cached !== undefined)
250
+ return cached;
251
+ cache.set(ir, 0); // cycle break (mirrors estimateFastCost)
252
+ let total = shallowRuntimeCost(ir);
253
+ const children = fastChildren(ir);
254
+ switch (ir.type) {
255
+ case "array":
256
+ case "set":
257
+ case "record":
258
+ case "map":
259
+ // Per-element work, repeated for an assumed handful of entries.
260
+ for (const child of children)
261
+ total += estimateRuntimeCost(child, cache) * ASSUMED_ELEMENTS;
262
+ break;
263
+ case "discriminatedUnion":
264
+ // O(1) switch: only the matched case runs. Charge the priciest option so
265
+ // the estimate stays an upper bound.
266
+ total += children.reduce((max, c) => Math.max(max, estimateRuntimeCost(c, cache)), 0);
267
+ break;
268
+ default:
269
+ // object/tuple/union/intersection/wrappers: every child is on the path
270
+ // (a union probes options until one matches — worst case, all of them).
271
+ for (const child of children)
272
+ total += estimateRuntimeCost(child, cache);
273
+ break;
274
+ }
275
+ cache.set(ir, total);
276
+ return total;
277
+ }
156
278
  //# sourceMappingURL=fast-size.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"fast-size.js","sourceRoot":"","sources":["../../../src/core/codegen/fast-size.ts"],"names":[],"mappings":"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"}
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":"date.d.ts","sourceRoot":"","sources":["../../../../src/core/codegen/schemas/date.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAKtD,wBAAgB,QAAQ,CAAC,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,OAAO,GAAG,MAAM,CAkDvD;AAED,wBAAgB,QAAQ,CAAC,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,OAAO,GAAG,MAAM,GAAG,IAAI,CA6B9D"}
1
+ {"version":3,"file":"date.d.ts","sourceRoot":"","sources":["../../../../src/core/codegen/schemas/date.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAKtD,wBAAgB,QAAQ,CAAC,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,OAAO,GAAG,MAAM,CAkDvD;AAED,wBAAgB,QAAQ,CAAC,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,OAAO,GAAG,MAAM,GAAG,IAAI,CAmC9D"}
@@ -61,19 +61,26 @@ export function fastDate(ir, g) {
61
61
  // no check at all; `t >= NaN` would reject every date.
62
62
  const checks = ir.checks.filter((c) => !Number.isNaN(c.timestamp));
63
63
  if (checks.length > 0) {
64
- // Cache getTime() in a temp variable to avoid repeated calls
64
+ // Bounded dates get a hosted helper so `getTime()` is called once and its
65
+ // result lives in a DECLARED local. A comma expression assigning to a bare
66
+ // temp (`(t=d.getTime(),…)`) has no binding to assign to: sloppy mode would
67
+ // silently create a global, and generated code ships inside ES modules,
68
+ // where that is a ReferenceError on every parse.
65
69
  const t = g.temp("dt");
66
- parts.push(`(${t}=${x}.getTime(),!Number.isNaN(${t}))`);
70
+ const bounds = [`!Number.isNaN(${t})`];
67
71
  for (const check of [...checks].sort(checkPriority)) {
68
72
  switch (check.kind) {
69
73
  case "date_greater_than":
70
- parts.push(check.inclusive ? `${t}>=${check.timestamp}` : `${t}>${check.timestamp}`);
74
+ bounds.push(check.inclusive ? `${t}>=${check.timestamp}` : `${t}>${check.timestamp}`);
71
75
  break;
72
76
  case "date_less_than":
73
- parts.push(check.inclusive ? `${t}<=${check.timestamp}` : `${t}<${check.timestamp}`);
77
+ bounds.push(check.inclusive ? `${t}<=${check.timestamp}` : `${t}<${check.timestamp}`);
74
78
  break;
75
79
  }
76
80
  }
81
+ const fnName = g.temp("dc");
82
+ g.ctx.preamble.push(`function ${fnName}(d){var ${t}=d.getTime();return ${bounds.join("&&")};}`);
83
+ parts.push(`${fnName}(${x})`);
77
84
  }
78
85
  else {
79
86
  parts.push(`!Number.isNaN(${x}.getTime())`);
@@ -1 +1 @@
1
- {"version":3,"file":"date.js","sourceRoot":"","sources":["../../../../src/core/codegen/schemas/date.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"date.js","sourceRoot":"","sources":["../../../../src/core/codegen/schemas/date.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"intersection.d.ts","sourceRoot":"","sources":["../../../../src/core/codegen/schemas/intersection.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC/D,OAAO,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAEtD,wBAAgB,gBAAgB,CAAC,EAAE,EAAE,QAAQ,GAAG;IAAE,IAAI,EAAE,cAAc,CAAA;CAAE,EAAE,CAAC,EAAE,OAAO,GAAG,MAAM,CAE5F;AAED,wBAAgB,gBAAgB,CAAC,EAAE,EAAE,cAAc,EAAE,CAAC,EAAE,OAAO,GAAG,MAAM,GAAG,IAAI,CAM9E"}
1
+ {"version":3,"file":"intersection.d.ts","sourceRoot":"","sources":["../../../../src/core/codegen/schemas/intersection.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC/D,OAAO,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAGtD,wBAAgB,gBAAgB,CAAC,EAAE,EAAE,QAAQ,GAAG;IAAE,IAAI,EAAE,cAAc,CAAA;CAAE,EAAE,CAAC,EAAE,OAAO,GAAG,MAAM,CAE5F;AAED,wBAAgB,gBAAgB,CAAC,EAAE,EAAE,cAAc,EAAE,CAAC,EAAE,OAAO,GAAG,MAAM,GAAG,IAAI,CAY9E"}
@@ -1,11 +1,15 @@
1
+ import { orderByRuntimeCost } from "../fast-size.js";
1
2
  export function slowIntersection(ir, g) {
2
3
  return `${g.visit(ir.left)}${g.visit(ir.right, { input: g.output, output: g.output })}`;
3
4
  }
4
5
  export function fastIntersection(ir, g) {
5
- const left = g.visit(ir.left);
6
+ // Both sides must hold, so the conjunction is order-independent — emit the
7
+ // cheaper side first so a reject decides on it (see estimateRuntimeCost).
8
+ const [first, second] = orderByRuntimeCost([ir.left, ir.right], (side) => side, g.ctx);
9
+ const left = g.visit(first);
6
10
  if (left === null)
7
11
  return null;
8
- const right = g.visit(ir.right);
12
+ const right = g.visit(second);
9
13
  if (right === null)
10
14
  return null;
11
15
  return left === "true" ? right : right === "true" ? left : `${left}&&${right}`;
@@ -1 +1 @@
1
- {"version":3,"file":"intersection.js","sourceRoot":"","sources":["../../../../src/core/codegen/schemas/intersection.ts"],"names":[],"mappings":"AAGA,MAAM,UAAU,gBAAgB,CAAC,EAAuC,EAAE,CAAU;IAClF,OAAO,GAAG,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC;AAC1F,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,EAAkB,EAAE,CAAU;IAC7D,MAAM,IAAI,GAAG,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;IAC9B,IAAI,IAAI,KAAK,IAAI;QAAE,OAAO,IAAI,CAAC;IAC/B,MAAM,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC;IAChC,IAAI,KAAK,KAAK,IAAI;QAAE,OAAO,IAAI,CAAC;IAChC,OAAO,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,KAAK,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,KAAK,KAAK,EAAE,CAAC;AACjF,CAAC"}
1
+ {"version":3,"file":"intersection.js","sourceRoot":"","sources":["../../../../src/core/codegen/schemas/intersection.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAErD,MAAM,UAAU,gBAAgB,CAAC,EAAuC,EAAE,CAAU;IAClF,OAAO,GAAG,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC;AAC1F,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,EAAkB,EAAE,CAAU;IAC7D,2EAA2E;IAC3E,0EAA0E;IAC1E,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,GAAG,kBAAkB,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC,GAAG,CAGpF,CAAC;IACF,MAAM,IAAI,GAAG,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IAC5B,IAAI,IAAI,KAAK,IAAI;QAAE,OAAO,IAAI,CAAC;IAC/B,MAAM,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IAC9B,IAAI,KAAK,KAAK,IAAI;QAAE,OAAO,IAAI,CAAC;IAChC,OAAO,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,KAAK,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,KAAK,KAAK,EAAE,CAAC;AACjF,CAAC"}
@@ -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;AAiCtD,wBAAgB,UAAU,CAAC,EAAE,EAAE,QAAQ,GAAG;IAAE,IAAI,EAAE,QAAQ,CAAA;CAAE,EAAE,CAAC,EAAE,OAAO,GAAG,MAAM,CAmFhF;AAkDD,wBAAgB,UAAU,CAAC,EAAE,EAAE,QAAQ,EAAE,CAAC,EAAE,OAAO,GAAG,MAAM,GAAG,IAAI,CAiBlE"}
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;AActD,wBAAgB,UAAU,CAAC,EAAE,EAAE,QAAQ,GAAG;IAAE,IAAI,EAAE,QAAQ,CAAA;CAAE,EAAE,CAAC,EAAE,OAAO,GAAG,MAAM,CA+GhF;AAgED,wBAAgB,UAAU,CAAC,EAAE,EAAE,QAAQ,EAAE,CAAC,EAAE,OAAO,GAAG,MAAM,GAAG,IAAI,CAiBlE"}
@@ -1,55 +1,39 @@
1
- import { ENUM_INLINE_THRESHOLD, emitEffectFn, emitRuntimeHelper, emitSet, escapeString, extendStaticPath, hasMutation, } from "../context.js";
1
+ import { emitEffectFn, escapeString, extendStaticPath, hasMutation, keyMembershipTest, rejectsUndefined, } from "../context.js";
2
2
  import { emit } from "../emit.js";
3
3
  import { invalidType, unrecognizedKeys } from "../emit-issue.js";
4
- import { ZC_HOP_DECL } from "../issue-decls.js";
4
+ import { orderByRuntimeCost } from "../fast-size.js";
5
5
  import { refineCheck } from "./effect.js";
6
- /**
7
- * Boolean membership test for one key variable against the shape's key set.
8
- * Small shapes inline `===` chains (the enum-inlining result applies — string
9
- * internalization makes repeat comparisons pointer-equality); larger shapes
10
- * share a preamble Set. An empty shape recognizes nothing ("false").
11
- */
12
- function keyMembershipTest(keys, keyVar, emitKeySet) {
13
- if (keys.length === 0)
14
- return "false";
15
- if (keys.length <= ENUM_INLINE_THRESHOLD) {
16
- return keys.map((k) => `${keyVar}===${escapeString(k)}`).join("||");
17
- }
18
- return `${emitKeySet()}.has(${keyVar})`;
19
- }
20
6
  export function slowObject(ir, g) {
21
7
  let code = emit `
22
8
  if(typeof ${g.input}!=="object"||${g.input}===null||Array.isArray(${g.input})){
23
9
  ${invalidType(g, "object")}
24
10
  }else{`;
25
11
  // Strip mode (zod's default z.object() output) rebuilds a FRESH object from
26
- // only the declared own keys, so it always writes back. Otherwise clone only
27
- // when a property mutates the value.
12
+ // the declared keys, so it always writes back. Otherwise clone only when a
13
+ // property mutates the value.
28
14
  const strip = ir.stripUnknownKeys === true;
29
15
  const needsClone = strip || Object.values(ir.properties).some(hasMutation);
30
16
  const objVar = g.temp("o");
31
- if (strip) {
32
- code += `var ${objVar}={};`;
33
- }
34
- else {
17
+ if (!strip) {
35
18
  // Spread, not Object.assign: V8's CloneObjectIC makes `{...x}` ~25% faster
36
19
  // on the whole safeParse call for mutation-bearing schemas.
37
20
  code += needsClone ? `var ${objVar}={...${g.input}};` : `var ${objVar}=${g.input};`;
38
21
  }
39
- // Own-property guard for the strip copy (matches zod's own-key read and the
40
- // {...input} clone — symbol, inherited, and unknown keys never carry over).
41
- const hop = strip ? emitRuntimeHelper(g.ctx, "__zcHop", ZC_HOP_DECL) : "";
42
22
  const suppressAbsent = new Set(ir.suppressAbsentKeys ?? []);
23
+ /** Strip only: per-property output slot + whether it is always in the result. */
24
+ const slots = [];
43
25
  for (const [key, propIR] of Object.entries(ir.properties)) {
44
26
  const keyStr = escapeString(key);
45
- const propExpr = `${objVar}[${keyStr}]`;
46
27
  const propPath = extendStaticPath(g.path, key);
28
+ // Strip validates the value read from the INPUT, held in a local, and
29
+ // assembles the result afterwards. Reading through the half-built copy (the
30
+ // previous shape) both cost a megamorphic access per key — the copy's map
31
+ // changes with every key added — and diverged from zod, which parses
32
+ // `input[key]` and so accepts a value found on the prototype.
33
+ const propExpr = strip ? g.temp("sv") : `${objVar}[${keyStr}]`;
47
34
  if (strip) {
48
- // Copy the present own key into the fresh object BEFORE its in-place
49
- // validation, so the existing per-property logic (plain copy, defaults,
50
- // overwrites, nested rebuilds) runs unchanged on `objVar`. Absent keys
51
- // stay absent; a default fills them in via its own `===undefined` branch.
52
- code += `if(${hop}.call(${g.input},${keyStr})){${propExpr}=${g.input}[${keyStr}];}`;
35
+ code += `var ${propExpr}=${g.input}[${keyStr}];`;
36
+ slots.push({ always: rejectsUndefined(propIR), keyStr, value: propExpr });
53
37
  }
54
38
  const propCode = g.visit(propIR, { input: propExpr, output: propExpr, path: propPath });
55
39
  if (suppressAbsent.has(key)) {
@@ -59,7 +43,7 @@ export function slowObject(ir, g) {
59
43
  code += emit `
60
44
  var ${beforeVar}=${g.issues}.length;
61
45
  ${propCode}
62
- if(!(${keyStr} in ${objVar})&&${g.issues}.length>${beforeVar}){
46
+ if(!(${keyStr} in ${strip ? g.input : objVar})&&${g.issues}.length>${beforeVar}){
63
47
  ${g.issues}.length=${beforeVar};
64
48
  }`;
65
49
  }
@@ -67,6 +51,33 @@ export function slowObject(ir, g) {
67
51
  code += propCode;
68
52
  }
69
53
  }
54
+ if (strip) {
55
+ // Assemble the result in shape order (zod's key order), taking as long a
56
+ // LEADING run of always-present keys as possible into one object literal:
57
+ // V8 stamps a literal out of a cached boilerplate map in a single
58
+ // allocation, where adding keys one at a time walks a transition chain and
59
+ // re-checks the map on every store — measured 8.1x (20 keys) / 2.8x (7
60
+ // keys, one optional) on the whole safeParse.
61
+ //
62
+ // Everything after the first conditional key is appended so insertion order
63
+ // still matches zod. The per-key test is zod's own: keep the key when the
64
+ // parsed value is defined, or when it was present on the input at all
65
+ // (`key in input`, prototype included — an own `k: undefined` survives).
66
+ const literal = [];
67
+ let appends = "";
68
+ let leading = true;
69
+ for (const slot of slots) {
70
+ if (leading && slot.always) {
71
+ literal.push(`${slot.keyStr}:${slot.value}`);
72
+ continue;
73
+ }
74
+ leading = false;
75
+ appends += slot.always
76
+ ? `${objVar}[${slot.keyStr}]=${slot.value};`
77
+ : `if(${slot.value}!==undefined||(${slot.keyStr} in ${g.input})){${objVar}[${slot.keyStr}]=${slot.value};}`;
78
+ }
79
+ code += `var ${objVar}={${literal.join(",")}};${appends}`;
80
+ }
70
81
  // Strict unknown-key pass — zod's handleCatchall, byte-exact: for-in over
71
82
  // the ORIGINAL input (inherited enumerable keys count, no hasOwnProperty),
72
83
  // ALL unknown keys collected into one issue, pushed AFTER property issues
@@ -75,7 +86,7 @@ export function slowObject(ir, g) {
75
86
  const keys = Object.keys(ir.properties);
76
87
  const ukVar = g.temp("uk");
77
88
  const kVar = g.temp("k");
78
- const test = keyMembershipTest(keys, kVar, () => g.set("ks", keys));
89
+ const test = keyMembershipTest(g.ctx, keys, kVar);
79
90
  code += emit `
80
91
  var ${ukVar}=null;
81
92
  for(var ${kVar} in ${g.input}){
@@ -97,6 +108,19 @@ export function slowObject(ir, g) {
97
108
  code += `}\n`;
98
109
  return code;
99
110
  }
111
+ /**
112
+ * Property entries in the order their fast-checks should be `&&`-chained:
113
+ * cheapest first, declaration order preserved among equals (Array#sort is
114
+ * stable). Valid input runs every conjunct whatever the order, so this costs
115
+ * nothing on the hot path; a REJECT stops at the first false conjunct, so
116
+ * pricing a `z.email()` behind the `kind` literal that actually discriminates
117
+ * is what makes union probing and `.is()` misses cheap (see
118
+ * estimateRuntimeCost). The SLOW path keeps declaration order — that one's
119
+ * output is the issue list, whose order is part of zod parity.
120
+ */
121
+ function orderedProperties(ir, g) {
122
+ return orderByRuntimeCost(Object.entries(ir.properties), ([, propIR]) => propIR, g.ctx);
123
+ }
100
124
  /**
101
125
  * Property/strict/refine fast-checks for an object, WITHOUT the leading
102
126
  * `typeof===object && !==null && !Array.isArray` type-guard. Returns the
@@ -109,7 +133,7 @@ export function slowObject(ir, g) {
109
133
  function fastObjectBody(ir, g, skipKey) {
110
134
  const x = g.input;
111
135
  const parts = [];
112
- for (const [key, propIR] of Object.entries(ir.properties)) {
136
+ for (const [key, propIR] of orderedProperties(ir, g)) {
113
137
  if (key === skipKey)
114
138
  continue;
115
139
  const propExpr = `${x}[${escapeString(key)}]`;
@@ -126,7 +150,7 @@ function fastObjectBody(ir, g, skipKey) {
126
150
  if (ir.strict) {
127
151
  const keys = Object.keys(ir.properties);
128
152
  const fnName = g.temp("so");
129
- const test = keyMembershipTest(keys, "k", () => emitSet(g.ctx, "ks", keys));
153
+ const test = keyMembershipTest(g.ctx, keys, "k");
130
154
  g.ctx.preamble.push(`function ${fnName}(o){for(var k in o){if(!(${test}))return false;}return true;}`);
131
155
  parts.push(`${fnName}(${x})`);
132
156
  }
@@ -1 +1 @@
1
- {"version":3,"file":"object.js","sourceRoot":"","sources":["../../../../src/core/codegen/schemas/object.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"object.js","sourceRoot":"","sources":["../../../../src/core/codegen/schemas/object.ts"],"names":[],"mappings":"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"}
@@ -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,CAyChE"}
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;AAoBtD;;;;;;;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,CA2ChE"}
@@ -1,4 +1,5 @@
1
1
  import { extendPath, extendStaticPathIndex, hasMutation } from "../context.js";
2
+ import { orderByRuntimeCost } from "../fast-size.js";
2
3
  import { emit } from "../emit.js";
3
4
  import { invalidType, tooBig, tooSmall } from "../emit-issue.js";
4
5
  /**
@@ -83,12 +84,13 @@ export function fastTuple(ir, g) {
83
84
  else if (required > 0) {
84
85
  parts.push(`${x}.length>=${required}`);
85
86
  }
86
- // Per-index checks
87
- for (let i = 0; i < ir.items.length; i++) {
88
- const itemIR = ir.items[i];
89
- if (!itemIR)
90
- continue;
91
- const itemCheck = g.visit(itemIR, { input: `${x}[${i}]` });
87
+ // Per-index checks, cheapest-first: positions are independent, so the emitted
88
+ // order only decides which one a reject stops on (see estimateRuntimeCost).
89
+ // The Array.isArray + length conjuncts above stay in front — the element
90
+ // reads are only meaningful once they hold.
91
+ const indexed = ir.items.flatMap((itemIR, index) => (itemIR ? [{ index, itemIR }] : []));
92
+ for (const { index, itemIR } of orderByRuntimeCost(indexed, (e) => e.itemIR, g.ctx)) {
93
+ const itemCheck = g.visit(itemIR, { input: `${x}[${index}]` });
92
94
  if (itemCheck === null)
93
95
  return null;
94
96
  if (itemCheck !== "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":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"union.d.ts","sourceRoot":"","sources":["../../../../src/core/codegen/schemas/union.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;AAKtD,wBAAgB,SAAS,CAAC,EAAE,EAAE,QAAQ,GAAG;IAAE,IAAI,EAAE,OAAO,CAAA;CAAE,EAAE,CAAC,EAAE,OAAO,GAAG,MAAM,CAkG9E;AAED,wBAAgB,SAAS,CAAC,EAAE,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,GAAG,MAAM,GAAG,IAAI,CAyBhE"}
1
+ {"version":3,"file":"union.d.ts","sourceRoot":"","sources":["../../../../src/core/codegen/schemas/union.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;AAMtD,wBAAgB,SAAS,CAAC,EAAE,EAAE,QAAQ,GAAG;IAAE,IAAI,EAAE,OAAO,CAAA;CAAE,EAAE,CAAC,EAAE,OAAO,GAAG,MAAM,CAkG9E;AAED,wBAAgB,SAAS,CAAC,EAAE,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,GAAG,MAAM,GAAG,IAAI,CA8BhE"}
@@ -1,5 +1,6 @@
1
1
  import { hasMutation } from "../context.js";
2
2
  import { emit } from "../emit.js";
3
+ import { orderByRuntimeCost } from "../fast-size.js";
3
4
  import { detectUnionDiscriminator, emitFastDiscriminatedSwitch } from "./discriminated-union.js";
4
5
  export function slowUnion(ir, g) {
5
6
  const resultVar = g.temp("u");
@@ -108,8 +109,13 @@ export function fastUnion(ir, g) {
108
109
  if (discriminated !== null) {
109
110
  return emitFastDiscriminatedSwitch(g, discriminated.discriminator, discriminated.cases, ir.options);
110
111
  }
112
+ // Probe cheap options first: the ||-chain stops at the first match, and an
113
+ // option that cannot match is rejected by its own cheapest-first conjunct
114
+ // chain. Which option matches is unobservable here (the result is a single
115
+ // boolean), and the slow path — where option order IS observable, through
116
+ // zod's first-match output and invalid_union issue order — is untouched.
111
117
  const optionChecks = [];
112
- for (const option of ir.options) {
118
+ for (const option of orderByRuntimeCost(ir.options, (o) => o, g.ctx)) {
113
119
  const check = g.visit(option);
114
120
  if (check === null)
115
121
  return null;
@@ -1 +1 @@
1
- {"version":3,"file":"union.js","sourceRoot":"","sources":["../../../../src/core/codegen/schemas/union.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"union.js","sourceRoot":"","sources":["../../../../src/core/codegen/schemas/union.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "zod-compiler",
3
- "version": "1.17.0",
3
+ "version": "1.18.1",
4
4
  "description": "Compile Zod schemas into zero-overhead validation functions",
5
5
  "keywords": [
6
6
  "aot",