zod-compiler 1.23.0 → 1.23.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +9 -6
- package/dist/cli/commands/check.d.ts +10 -7
- package/dist/cli/commands/check.d.ts.map +1 -1
- package/dist/cli/commands/check.js +125 -148
- package/dist/cli/commands/check.js.map +1 -1
- package/dist/cli/commands/generate.d.ts +22 -19
- package/dist/cli/commands/generate.d.ts.map +1 -1
- package/dist/cli/commands/generate.js +102 -133
- package/dist/cli/commands/generate.js.map +1 -1
- package/dist/cli/commands/watch.d.ts +17 -15
- package/dist/cli/commands/watch.d.ts.map +1 -1
- package/dist/cli/commands/watch.js +126 -154
- package/dist/cli/commands/watch.js.map +1 -1
- package/dist/cli/emitter.d.ts +19 -16
- package/dist/cli/emitter.d.ts.map +1 -1
- package/dist/cli/emitter.js +55 -71
- package/dist/cli/emitter.js.map +1 -1
- package/dist/cli/errors.d.ts +4 -1
- package/dist/cli/errors.d.ts.map +1 -1
- package/dist/cli/errors.js +6 -2
- package/dist/cli/errors.js.map +1 -1
- package/dist/cli/index.d.ts +1 -3
- package/dist/cli/index.js +147 -160
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/logger.d.ts +18 -15
- package/dist/cli/logger.d.ts.map +1 -1
- package/dist/cli/logger.js +38 -37
- package/dist/cli/logger.js.map +1 -1
- package/dist/core/codegen/build-path.d.ts +7 -41
- package/dist/core/codegen/build-path.d.ts.map +1 -1
- package/dist/core/codegen/build-path.js +481 -570
- package/dist/core/codegen/build-path.js.map +1 -1
- package/dist/core/codegen/context.d.ts +256 -253
- package/dist/core/codegen/context.d.ts.map +1 -1
- package/dist/core/codegen/context.js +363 -437
- package/dist/core/codegen/context.js.map +1 -1
- package/dist/core/codegen/dedupe.d.ts +22 -56
- package/dist/core/codegen/dedupe.d.ts.map +1 -1
- package/dist/core/codegen/dedupe.js +150 -242
- package/dist/core/codegen/dedupe.js.map +1 -1
- package/dist/core/codegen/emit-issue.d.ts +44 -68
- package/dist/core/codegen/emit-issue.d.ts.map +1 -1
- package/dist/core/codegen/emit-issue.js +76 -108
- package/dist/core/codegen/emit-issue.js.map +1 -1
- package/dist/core/codegen/emit.d.ts +4 -1
- package/dist/core/codegen/emit.d.ts.map +1 -1
- package/dist/core/codegen/emit.js +16 -13
- package/dist/core/codegen/emit.js.map +1 -1
- package/dist/core/codegen/fast-path.d.ts +7 -12
- package/dist/core/codegen/fast-path.d.ts.map +1 -1
- package/dist/core/codegen/fast-path.js +116 -145
- package/dist/core/codegen/fast-path.js.map +1 -1
- package/dist/core/codegen/fast-size.d.ts +12 -26
- package/dist/core/codegen/fast-size.d.ts.map +1 -1
- package/dist/core/codegen/fast-size.js +169 -244
- package/dist/core/codegen/fast-size.js.map +1 -1
- package/dist/core/codegen/index.d.ts +25 -23
- package/dist/core/codegen/index.d.ts.map +1 -1
- package/dist/core/codegen/index.js +239 -405
- package/dist/core/codegen/index.js.map +1 -1
- package/dist/core/codegen/issue-decls.d.ts +15 -12
- package/dist/core/codegen/issue-decls.d.ts.map +1 -1
- package/dist/core/codegen/issue-decls.js +131 -162
- package/dist/core/codegen/issue-decls.js.map +1 -1
- package/dist/core/codegen/regex-unroll.d.ts +4 -1
- package/dist/core/codegen/regex-unroll.d.ts.map +1 -1
- package/dist/core/codegen/regex-unroll.js +173 -197
- package/dist/core/codegen/regex-unroll.js.map +1 -1
- package/dist/core/codegen/schemas/any.d.ts +7 -4
- package/dist/core/codegen/schemas/any.d.ts.map +1 -1
- package/dist/core/codegen/schemas/any.js +8 -4
- package/dist/core/codegen/schemas/any.js.map +1 -1
- package/dist/core/codegen/schemas/array.d.ts +8 -5
- package/dist/core/codegen/schemas/array.d.ts.map +1 -1
- package/dist/core/codegen/schemas/array.js +77 -95
- package/dist/core/codegen/schemas/array.js.map +1 -1
- package/dist/core/codegen/schemas/bigint.d.ts +7 -4
- package/dist/core/codegen/schemas/bigint.d.ts.map +1 -1
- package/dist/core/codegen/schemas/bigint.js +44 -56
- package/dist/core/codegen/schemas/bigint.js.map +1 -1
- package/dist/core/codegen/schemas/boolean.d.ts +7 -4
- package/dist/core/codegen/schemas/boolean.d.ts.map +1 -1
- package/dist/core/codegen/schemas/boolean.js +12 -11
- package/dist/core/codegen/schemas/boolean.js.map +1 -1
- package/dist/core/codegen/schemas/catch.d.ts +8 -5
- package/dist/core/codegen/schemas/catch.d.ts.map +1 -1
- package/dist/core/codegen/schemas/catch.js +23 -23
- package/dist/core/codegen/schemas/catch.js.map +1 -1
- package/dist/core/codegen/schemas/date.d.ts +7 -4
- package/dist/core/codegen/schemas/date.d.ts.map +1 -1
- package/dist/core/codegen/schemas/date.js +49 -68
- package/dist/core/codegen/schemas/date.js.map +1 -1
- package/dist/core/codegen/schemas/default.d.ts +9 -6
- package/dist/core/codegen/schemas/default.d.ts.map +1 -1
- package/dist/core/codegen/schemas/default.js +29 -27
- package/dist/core/codegen/schemas/default.js.map +1 -1
- package/dist/core/codegen/schemas/discriminated-union.d.ts +12 -10
- package/dist/core/codegen/schemas/discriminated-union.d.ts.map +1 -1
- package/dist/core/codegen/schemas/discriminated-union.js +153 -178
- package/dist/core/codegen/schemas/discriminated-union.js.map +1 -1
- package/dist/core/codegen/schemas/effect.d.ts +9 -6
- package/dist/core/codegen/schemas/effect.d.ts.map +1 -1
- package/dist/core/codegen/schemas/effect.js +54 -67
- package/dist/core/codegen/schemas/effect.js.map +1 -1
- package/dist/core/codegen/schemas/enum.d.ts +7 -4
- package/dist/core/codegen/schemas/enum.d.ts.map +1 -1
- package/dist/core/codegen/schemas/enum.js +15 -21
- package/dist/core/codegen/schemas/enum.js.map +1 -1
- package/dist/core/codegen/schemas/fallback.d.ts +6 -3
- package/dist/core/codegen/schemas/fallback.d.ts.map +1 -1
- package/dist/core/codegen/schemas/fallback.js +14 -13
- package/dist/core/codegen/schemas/fallback.js.map +1 -1
- package/dist/core/codegen/schemas/file.d.ts +7 -4
- package/dist/core/codegen/schemas/file.d.ts.map +1 -1
- package/dist/core/codegen/schemas/file.js +51 -57
- package/dist/core/codegen/schemas/file.js.map +1 -1
- package/dist/core/codegen/schemas/intersection.d.ts +8 -5
- package/dist/core/codegen/schemas/intersection.d.ts.map +1 -1
- package/dist/core/codegen/schemas/intersection.js +16 -13
- package/dist/core/codegen/schemas/intersection.js.map +1 -1
- package/dist/core/codegen/schemas/literal.d.ts +7 -4
- package/dist/core/codegen/schemas/literal.d.ts.map +1 -1
- package/dist/core/codegen/schemas/literal.js +20 -23
- package/dist/core/codegen/schemas/literal.js.map +1 -1
- package/dist/core/codegen/schemas/map.d.ts +8 -5
- package/dist/core/codegen/schemas/map.d.ts.map +1 -1
- package/dist/core/codegen/schemas/map.js +61 -67
- package/dist/core/codegen/schemas/map.js.map +1 -1
- package/dist/core/codegen/schemas/nan.d.ts +7 -4
- package/dist/core/codegen/schemas/nan.d.ts.map +1 -1
- package/dist/core/codegen/schemas/nan.js +8 -4
- package/dist/core/codegen/schemas/nan.js.map +1 -1
- package/dist/core/codegen/schemas/never.d.ts +7 -4
- package/dist/core/codegen/schemas/never.d.ts.map +1 -1
- package/dist/core/codegen/schemas/never.js +8 -4
- package/dist/core/codegen/schemas/never.js.map +1 -1
- package/dist/core/codegen/schemas/null.d.ts +7 -4
- package/dist/core/codegen/schemas/null.d.ts.map +1 -1
- package/dist/core/codegen/schemas/null.js +8 -4
- package/dist/core/codegen/schemas/null.js.map +1 -1
- package/dist/core/codegen/schemas/nullable.d.ts +8 -5
- package/dist/core/codegen/schemas/nullable.d.ts.map +1 -1
- package/dist/core/codegen/schemas/nullable.js +8 -5
- package/dist/core/codegen/schemas/nullable.js.map +1 -1
- package/dist/core/codegen/schemas/number.d.ts +7 -4
- package/dist/core/codegen/schemas/number.d.ts.map +1 -1
- package/dist/core/codegen/schemas/number.js +120 -176
- package/dist/core/codegen/schemas/number.js.map +1 -1
- package/dist/core/codegen/schemas/object.d.ts +8 -5
- package/dist/core/codegen/schemas/object.d.ts.map +1 -1
- package/dist/core/codegen/schemas/object.js +144 -231
- package/dist/core/codegen/schemas/object.js.map +1 -1
- package/dist/core/codegen/schemas/optional.d.ts +9 -6
- package/dist/core/codegen/schemas/optional.d.ts.map +1 -1
- package/dist/core/codegen/schemas/optional.js +23 -31
- package/dist/core/codegen/schemas/optional.js.map +1 -1
- package/dist/core/codegen/schemas/pipe.d.ts +8 -5
- package/dist/core/codegen/schemas/pipe.d.ts.map +1 -1
- package/dist/core/codegen/schemas/pipe.js +20 -27
- package/dist/core/codegen/schemas/pipe.js.map +1 -1
- package/dist/core/codegen/schemas/readonly.d.ts +8 -5
- package/dist/core/codegen/schemas/readonly.d.ts.map +1 -1
- package/dist/core/codegen/schemas/readonly.js +8 -5
- package/dist/core/codegen/schemas/readonly.js.map +1 -1
- package/dist/core/codegen/schemas/record.d.ts +8 -5
- package/dist/core/codegen/schemas/record.d.ts.map +1 -1
- package/dist/core/codegen/schemas/record.js +52 -65
- package/dist/core/codegen/schemas/record.js.map +1 -1
- package/dist/core/codegen/schemas/recursive-ref.d.ts +9 -6
- package/dist/core/codegen/schemas/recursive-ref.d.ts.map +1 -1
- package/dist/core/codegen/schemas/recursive-ref.js +44 -44
- package/dist/core/codegen/schemas/recursive-ref.js.map +1 -1
- package/dist/core/codegen/schemas/set.d.ts +8 -5
- package/dist/core/codegen/schemas/set.d.ts.map +1 -1
- package/dist/core/codegen/schemas/set.js +61 -73
- package/dist/core/codegen/schemas/set.js.map +1 -1
- package/dist/core/codegen/schemas/string-bool.d.ts +6 -3
- package/dist/core/codegen/schemas/string-bool.d.ts.map +1 -1
- package/dist/core/codegen/schemas/string-bool.js +22 -23
- package/dist/core/codegen/schemas/string-bool.js.map +1 -1
- package/dist/core/codegen/schemas/string.d.ts +8 -5
- package/dist/core/codegen/schemas/string.d.ts.map +1 -1
- package/dist/core/codegen/schemas/string.js +168 -207
- package/dist/core/codegen/schemas/string.js.map +1 -1
- package/dist/core/codegen/schemas/symbol.d.ts +7 -4
- package/dist/core/codegen/schemas/symbol.d.ts.map +1 -1
- package/dist/core/codegen/schemas/symbol.js +8 -4
- package/dist/core/codegen/schemas/symbol.js.map +1 -1
- package/dist/core/codegen/schemas/template-literal.d.ts +7 -4
- package/dist/core/codegen/schemas/template-literal.d.ts.map +1 -1
- package/dist/core/codegen/schemas/template-literal.js +12 -13
- package/dist/core/codegen/schemas/template-literal.js.map +1 -1
- package/dist/core/codegen/schemas/tuple.d.ts +8 -5
- package/dist/core/codegen/schemas/tuple.d.ts.map +1 -1
- package/dist/core/codegen/schemas/tuple.js +84 -94
- package/dist/core/codegen/schemas/tuple.js.map +1 -1
- package/dist/core/codegen/schemas/undefined.d.ts +7 -4
- package/dist/core/codegen/schemas/undefined.d.ts.map +1 -1
- package/dist/core/codegen/schemas/undefined.js +8 -4
- package/dist/core/codegen/schemas/undefined.js.map +1 -1
- package/dist/core/codegen/schemas/union.d.ts +8 -5
- package/dist/core/codegen/schemas/union.d.ts.map +1 -1
- package/dist/core/codegen/schemas/union.js +49 -69
- package/dist/core/codegen/schemas/union.js.map +1 -1
- package/dist/core/codegen/schemas/unknown.d.ts +7 -4
- package/dist/core/codegen/schemas/unknown.d.ts.map +1 -1
- package/dist/core/codegen/schemas/unknown.js +8 -4
- package/dist/core/codegen/schemas/unknown.js.map +1 -1
- package/dist/core/codegen/schemas/void.d.ts +7 -4
- package/dist/core/codegen/schemas/void.d.ts.map +1 -1
- package/dist/core/codegen/schemas/void.js +8 -4
- package/dist/core/codegen/schemas/void.js.map +1 -1
- package/dist/core/codegen/slow-path.d.ts +7 -4
- package/dist/core/codegen/slow-path.d.ts.map +1 -1
- package/dist/core/codegen/slow-path.js +71 -96
- package/dist/core/codegen/slow-path.js.map +1 -1
- package/dist/core/codegen/well-known-regex.d.ts +22 -19
- package/dist/core/codegen/well-known-regex.d.ts.map +1 -1
- package/dist/core/codegen/well-known-regex.js +127 -96
- package/dist/core/codegen/well-known-regex.js.map +1 -1
- package/dist/core/compile.d.ts +7 -4
- package/dist/core/compile.d.ts.map +1 -1
- package/dist/core/compile.js +48 -48
- package/dist/core/compile.js.map +1 -1
- package/dist/core/diagnostic.d.ts +38 -39
- package/dist/core/diagnostic.d.ts.map +1 -1
- package/dist/core/diagnostic.js +140 -164
- package/dist/core/diagnostic.js.map +1 -1
- package/dist/core/extract/checks.d.ts +18 -15
- package/dist/core/extract/checks.d.ts.map +1 -1
- package/dist/core/extract/checks.js +318 -311
- package/dist/core/extract/checks.js.map +1 -1
- package/dist/core/extract/effects.d.ts +13 -10
- package/dist/core/extract/effects.d.ts.map +1 -1
- package/dist/core/extract/effects.js +153 -222
- package/dist/core/extract/effects.js.map +1 -1
- package/dist/core/extract/extractors/any.d.ts +5 -2
- package/dist/core/extract/extractors/any.d.ts.map +1 -1
- package/dist/core/extract/extractors/any.js +5 -1
- package/dist/core/extract/extractors/any.js.map +1 -1
- package/dist/core/extract/extractors/array.d.ts +6 -3
- package/dist/core/extract/extractors/array.d.ts.map +1 -1
- package/dist/core/extract/extractors/array.js +25 -20
- package/dist/core/extract/extractors/array.js.map +1 -1
- package/dist/core/extract/extractors/bigint.d.ts +6 -3
- package/dist/core/extract/extractors/bigint.d.ts.map +1 -1
- package/dist/core/extract/extractors/bigint.js +66 -64
- package/dist/core/extract/extractors/bigint.js.map +1 -1
- package/dist/core/extract/extractors/boolean.d.ts +5 -2
- package/dist/core/extract/extractors/boolean.d.ts.map +1 -1
- package/dist/core/extract/extractors/boolean.js +7 -3
- package/dist/core/extract/extractors/boolean.js.map +1 -1
- package/dist/core/extract/extractors/catch.d.ts +6 -3
- package/dist/core/extract/extractors/catch.d.ts.map +1 -1
- package/dist/core/extract/extractors/catch.js +26 -17
- package/dist/core/extract/extractors/catch.js.map +1 -1
- package/dist/core/extract/extractors/date.d.ts +6 -3
- package/dist/core/extract/extractors/date.d.ts.map +1 -1
- package/dist/core/extract/extractors/date.js +42 -46
- package/dist/core/extract/extractors/date.js.map +1 -1
- package/dist/core/extract/extractors/default.d.ts +6 -3
- package/dist/core/extract/extractors/default.d.ts.map +1 -1
- package/dist/core/extract/extractors/default.js +20 -14
- package/dist/core/extract/extractors/default.js.map +1 -1
- package/dist/core/extract/extractors/enum.d.ts +5 -2
- package/dist/core/extract/extractors/enum.d.ts.map +1 -1
- package/dist/core/extract/extractors/enum.js +12 -13
- package/dist/core/extract/extractors/enum.js.map +1 -1
- package/dist/core/extract/extractors/file.d.ts +6 -3
- package/dist/core/extract/extractors/file.d.ts.map +1 -1
- package/dist/core/extract/extractors/file.js +34 -28
- package/dist/core/extract/extractors/file.js.map +1 -1
- package/dist/core/extract/extractors/intersection.d.ts +5 -2
- package/dist/core/extract/extractors/intersection.d.ts.map +1 -1
- package/dist/core/extract/extractors/intersection.js +13 -11
- package/dist/core/extract/extractors/intersection.js.map +1 -1
- package/dist/core/extract/extractors/lazy.d.ts +6 -3
- package/dist/core/extract/extractors/lazy.d.ts.map +1 -1
- package/dist/core/extract/extractors/lazy.js +21 -30
- package/dist/core/extract/extractors/lazy.js.map +1 -1
- package/dist/core/extract/extractors/literal.d.ts +5 -2
- package/dist/core/extract/extractors/literal.d.ts.map +1 -1
- package/dist/core/extract/extractors/literal.js +8 -1
- package/dist/core/extract/extractors/literal.js.map +1 -1
- package/dist/core/extract/extractors/map.d.ts +6 -3
- package/dist/core/extract/extractors/map.d.ts.map +1 -1
- package/dist/core/extract/extractors/map.js +10 -4
- package/dist/core/extract/extractors/map.js.map +1 -1
- package/dist/core/extract/extractors/nan.d.ts +5 -2
- package/dist/core/extract/extractors/nan.d.ts.map +1 -1
- package/dist/core/extract/extractors/nan.js +5 -1
- package/dist/core/extract/extractors/nan.js.map +1 -1
- package/dist/core/extract/extractors/never.d.ts +5 -2
- package/dist/core/extract/extractors/never.d.ts.map +1 -1
- package/dist/core/extract/extractors/never.js +5 -1
- package/dist/core/extract/extractors/never.js.map +1 -1
- package/dist/core/extract/extractors/null.d.ts +5 -2
- package/dist/core/extract/extractors/null.d.ts.map +1 -1
- package/dist/core/extract/extractors/null.js +5 -1
- package/dist/core/extract/extractors/null.js.map +1 -1
- package/dist/core/extract/extractors/nullable.d.ts +5 -2
- package/dist/core/extract/extractors/nullable.d.ts.map +1 -1
- package/dist/core/extract/extractors/nullable.js +7 -3
- package/dist/core/extract/extractors/nullable.js.map +1 -1
- package/dist/core/extract/extractors/number.d.ts +6 -3
- package/dist/core/extract/extractors/number.d.ts.map +1 -1
- package/dist/core/extract/extractors/number.js +35 -35
- package/dist/core/extract/extractors/number.js.map +1 -1
- package/dist/core/extract/extractors/object.d.ts +6 -3
- package/dist/core/extract/extractors/object.d.ts.map +1 -1
- package/dist/core/extract/extractors/object.js +49 -76
- package/dist/core/extract/extractors/object.js.map +1 -1
- package/dist/core/extract/extractors/optional.d.ts +5 -2
- package/dist/core/extract/extractors/optional.d.ts.map +1 -1
- package/dist/core/extract/extractors/optional.js +10 -12
- package/dist/core/extract/extractors/optional.js.map +1 -1
- package/dist/core/extract/extractors/pipe.d.ts +6 -3
- package/dist/core/extract/extractors/pipe.d.ts.map +1 -1
- package/dist/core/extract/extractors/pipe.js +40 -41
- package/dist/core/extract/extractors/pipe.js.map +1 -1
- package/dist/core/extract/extractors/readonly.d.ts +5 -2
- package/dist/core/extract/extractors/readonly.d.ts.map +1 -1
- package/dist/core/extract/extractors/readonly.js +10 -6
- package/dist/core/extract/extractors/readonly.js.map +1 -1
- package/dist/core/extract/extractors/record.d.ts +6 -3
- package/dist/core/extract/extractors/record.d.ts.map +1 -1
- package/dist/core/extract/extractors/record.js +24 -35
- package/dist/core/extract/extractors/record.js.map +1 -1
- package/dist/core/extract/extractors/set.d.ts +6 -3
- package/dist/core/extract/extractors/set.d.ts.map +1 -1
- package/dist/core/extract/extractors/set.js +36 -30
- package/dist/core/extract/extractors/set.js.map +1 -1
- package/dist/core/extract/extractors/string-bool.d.ts +7 -4
- package/dist/core/extract/extractors/string-bool.d.ts.map +1 -1
- package/dist/core/extract/extractors/string-bool.js +66 -84
- package/dist/core/extract/extractors/string-bool.js.map +1 -1
- package/dist/core/extract/extractors/string.d.ts +6 -3
- package/dist/core/extract/extractors/string.d.ts.map +1 -1
- package/dist/core/extract/extractors/string.js +34 -37
- package/dist/core/extract/extractors/string.js.map +1 -1
- package/dist/core/extract/extractors/symbol.d.ts +5 -2
- package/dist/core/extract/extractors/symbol.d.ts.map +1 -1
- package/dist/core/extract/extractors/symbol.js +5 -1
- package/dist/core/extract/extractors/symbol.js.map +1 -1
- package/dist/core/extract/extractors/template-literal.d.ts +6 -3
- package/dist/core/extract/extractors/template-literal.d.ts.map +1 -1
- package/dist/core/extract/extractors/template-literal.js +11 -6
- package/dist/core/extract/extractors/template-literal.js.map +1 -1
- package/dist/core/extract/extractors/tuple.d.ts +6 -3
- package/dist/core/extract/extractors/tuple.d.ts.map +1 -1
- package/dist/core/extract/extractors/tuple.js +10 -4
- package/dist/core/extract/extractors/tuple.js.map +1 -1
- package/dist/core/extract/extractors/undefined.d.ts +5 -2
- package/dist/core/extract/extractors/undefined.d.ts.map +1 -1
- package/dist/core/extract/extractors/undefined.js +5 -1
- package/dist/core/extract/extractors/undefined.js.map +1 -1
- package/dist/core/extract/extractors/union.d.ts +6 -3
- package/dist/core/extract/extractors/union.d.ts.map +1 -1
- package/dist/core/extract/extractors/union.js +38 -64
- package/dist/core/extract/extractors/union.js.map +1 -1
- package/dist/core/extract/extractors/unknown.d.ts +5 -2
- package/dist/core/extract/extractors/unknown.d.ts.map +1 -1
- package/dist/core/extract/extractors/unknown.js +5 -1
- package/dist/core/extract/extractors/unknown.js.map +1 -1
- package/dist/core/extract/extractors/void.d.ts +5 -2
- package/dist/core/extract/extractors/void.d.ts.map +1 -1
- package/dist/core/extract/extractors/void.js +5 -1
- package/dist/core/extract/extractors/void.js.map +1 -1
- package/dist/core/extract/fallback.d.ts +6 -3
- package/dist/core/extract/fallback.d.ts.map +1 -1
- package/dist/core/extract/fallback.js +21 -7
- package/dist/core/extract/fallback.js.map +1 -1
- package/dist/core/extract/index.d.ts +6 -4
- package/dist/core/extract/index.d.ts.map +1 -1
- package/dist/core/extract/index.js +15 -15
- package/dist/core/extract/index.js.map +1 -1
- package/dist/core/extract/registry.d.ts +39 -36
- package/dist/core/extract/registry.d.ts.map +1 -1
- package/dist/core/extract/registry.js +96 -123
- package/dist/core/extract/registry.js.map +1 -1
- package/dist/core/extract/types.d.ts +124 -120
- package/dist/core/extract/types.d.ts.map +1 -1
- package/dist/core/extract/types.js +0 -1
- package/dist/core/iife.d.ts +14 -15
- package/dist/core/iife.d.ts.map +1 -1
- package/dist/core/iife.js +182 -206
- package/dist/core/iife.js.map +1 -1
- package/dist/core/pipeline.d.ts +33 -30
- package/dist/core/pipeline.d.ts.map +1 -1
- package/dist/core/pipeline.js +67 -74
- package/dist/core/pipeline.js.map +1 -1
- package/dist/core/types.d.ts +430 -427
- package/dist/core/types.d.ts.map +1 -1
- package/dist/core/types.js +0 -5
- package/dist/discovery.d.ts +8 -5
- package/dist/discovery.d.ts.map +1 -1
- package/dist/discovery.js +31 -32
- package/dist/discovery.js.map +1 -1
- package/dist/index.d.ts +4 -4
- package/dist/index.js +2 -2
- package/dist/jit.d.ts +15 -42
- package/dist/jit.d.ts.map +1 -1
- package/dist/jit.js +187 -216
- package/dist/jit.js.map +1 -1
- package/dist/loader.d.ts +14 -11
- package/dist/loader.d.ts.map +1 -1
- package/dist/loader.js +226 -258
- package/dist/loader.js.map +1 -1
- package/dist/static-filter.d.ts +4 -1
- package/dist/static-filter.d.ts.map +1 -1
- package/dist/static-filter.js +240 -367
- package/dist/static-filter.js.map +1 -1
- package/dist/swc.d.ts +38 -35
- package/dist/swc.d.ts.map +1 -1
- package/dist/swc.js +83 -76
- package/dist/swc.js.map +1 -1
- package/dist/unplugin/bun.d.ts +5 -2
- package/dist/unplugin/bun.d.ts.map +1 -1
- package/dist/unplugin/bun.js +5 -1
- package/dist/unplugin/bun.js.map +1 -1
- package/dist/unplugin/dep-graph.d.ts +10 -7
- package/dist/unplugin/dep-graph.d.ts.map +1 -1
- package/dist/unplugin/dep-graph.js +216 -252
- package/dist/unplugin/dep-graph.js.map +1 -1
- package/dist/unplugin/disk-cache.d.ts +121 -92
- package/dist/unplugin/disk-cache.d.ts.map +1 -1
- package/dist/unplugin/disk-cache.js +425 -444
- package/dist/unplugin/disk-cache.js.map +1 -1
- package/dist/unplugin/edits.d.ts +15 -12
- package/dist/unplugin/edits.d.ts.map +1 -1
- package/dist/unplugin/edits.js +24 -37
- package/dist/unplugin/edits.js.map +1 -1
- package/dist/unplugin/esbuild.d.ts +5 -2
- package/dist/unplugin/esbuild.d.ts.map +1 -1
- package/dist/unplugin/esbuild.js +5 -1
- package/dist/unplugin/esbuild.js.map +1 -1
- package/dist/unplugin/farm.d.ts +5 -2
- package/dist/unplugin/farm.d.ts.map +1 -1
- package/dist/unplugin/farm.js +5 -1
- package/dist/unplugin/farm.js.map +1 -1
- package/dist/unplugin/hoist-compile.d.ts +14 -42
- package/dist/unplugin/hoist-compile.d.ts.map +1 -1
- package/dist/unplugin/hoist-compile.js +67 -112
- package/dist/unplugin/hoist-compile.js.map +1 -1
- package/dist/unplugin/hoist.d.ts +56 -54
- package/dist/unplugin/hoist.d.ts.map +1 -1
- package/dist/unplugin/hoist.js +945 -1170
- package/dist/unplugin/hoist.js.map +1 -1
- package/dist/unplugin/index.d.ts +5 -3
- package/dist/unplugin/index.d.ts.map +1 -1
- package/dist/unplugin/index.js +175 -250
- package/dist/unplugin/index.js.map +1 -1
- package/dist/unplugin/rolldown.d.ts +5 -2
- package/dist/unplugin/rolldown.d.ts.map +1 -1
- package/dist/unplugin/rolldown.js +5 -1
- package/dist/unplugin/rolldown.js.map +1 -1
- package/dist/unplugin/rollup.d.ts +5 -2
- package/dist/unplugin/rollup.d.ts.map +1 -1
- package/dist/unplugin/rollup.js +5 -1
- package/dist/unplugin/rollup.js.map +1 -1
- package/dist/unplugin/rsbuild.d.ts +6 -3
- package/dist/unplugin/rsbuild.d.ts.map +1 -1
- package/dist/unplugin/rsbuild.js +15 -11
- package/dist/unplugin/rsbuild.js.map +1 -1
- package/dist/unplugin/rspack.d.ts +5 -2
- package/dist/unplugin/rspack.d.ts.map +1 -1
- package/dist/unplugin/rspack.js +5 -1
- package/dist/unplugin/rspack.js.map +1 -1
- package/dist/unplugin/transform.d.ts +30 -27
- package/dist/unplugin/transform.d.ts.map +1 -1
- package/dist/unplugin/transform.js +433 -620
- package/dist/unplugin/transform.js.map +1 -1
- package/dist/unplugin/types.d.ts +189 -184
- package/dist/unplugin/types.d.ts.map +1 -1
- package/dist/unplugin/types.js +22 -18
- package/dist/unplugin/types.js.map +1 -1
- package/dist/unplugin/virtual.d.ts +11 -8
- package/dist/unplugin/virtual.d.ts.map +1 -1
- package/dist/unplugin/virtual.js +65 -83
- package/dist/unplugin/virtual.js.map +1 -1
- package/dist/unplugin/vite.d.ts +5 -2
- package/dist/unplugin/vite.d.ts.map +1 -1
- package/dist/unplugin/vite.js +5 -1
- package/dist/unplugin/vite.js.map +1 -1
- package/dist/unplugin/webpack.d.ts +5 -2
- package/dist/unplugin/webpack.d.ts.map +1 -1
- package/dist/unplugin/webpack.js +5 -1
- package/dist/unplugin/webpack.js.map +1 -1
- package/package.json +23 -14
- package/dist/cli/index.d.ts.map +0 -1
- package/dist/core/extract/types.js.map +0 -1
- package/dist/core/types.js.map +0 -1
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js.map +0 -1
package/dist/unplugin/index.js
CHANGED
|
@@ -1,263 +1,188 @@
|
|
|
1
|
-
import process from "node:process";
|
|
2
|
-
import { createUnplugin } from "unplugin";
|
|
3
1
|
import { getFirstPartyModulePaths, invalidateModuleCache } from "../loader.js";
|
|
2
|
+
import { RESOLVED_RUNTIME_ID_FILTER, RUNTIME_SPECIFIER_FILTER, VIRTUAL_RUNTIME_ID, WP_RUNTIME_ID, loadVirtual, resolveVirtualId } from "./virtual.js";
|
|
3
|
+
import { TRANSFORM_ID_FILTER, log, shouldTransform, transformCodeFilter, transformCodeWithMap } from "./transform.js";
|
|
4
4
|
import { collectStaticDeps, resetDepGraphMemo } from "./dep-graph.js";
|
|
5
5
|
import { DiskCache, resetDepValidationMemo } from "./disk-cache.js";
|
|
6
|
-
import { log, shouldTransform, TRANSFORM_ID_FILTER, transformCodeFilter, transformCodeWithMap, } from "./transform.js";
|
|
7
6
|
import { BuildStatsAccumulator } from "./types.js";
|
|
8
|
-
import
|
|
7
|
+
import process from "node:process";
|
|
8
|
+
import { createUnplugin } from "unplugin";
|
|
9
|
+
//#region src/unplugin/index.ts
|
|
9
10
|
/**
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
const VIRTUAL_MODULE_FRAMEWORKS = new Set([
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
11
|
+
* Frameworks whose resolveId/load hooks receive any import specifier, including
|
|
12
|
+
* `virtual:` URIs and bare specifiers, so lean-mode cross-file dedup works.
|
|
13
|
+
* webpack / rspack reject the `virtual:` URI scheme but accept bare specifiers,
|
|
14
|
+
* so they use WP_RUNTIME_ID (`__zod-compiler-runtime__`) instead of VIRTUAL_RUNTIME_ID.
|
|
15
|
+
*/
|
|
16
|
+
const VIRTUAL_MODULE_FRAMEWORKS = /* @__PURE__ */ new Set([
|
|
17
|
+
"vite",
|
|
18
|
+
"rollup",
|
|
19
|
+
"rolldown",
|
|
20
|
+
"esbuild",
|
|
21
|
+
"farm",
|
|
22
|
+
"bun",
|
|
23
|
+
"rspack",
|
|
24
|
+
"webpack"
|
|
24
25
|
]);
|
|
25
26
|
/** Frameworks that need the bare-specifier runtime ID instead of `virtual:`. */
|
|
26
|
-
const WP_FRAMEWORKS = new Set(["rspack", "webpack"]);
|
|
27
|
+
const WP_FRAMEWORKS = /* @__PURE__ */ new Set(["rspack", "webpack"]);
|
|
27
28
|
/** File extensions whose changes can affect a schema module graph. */
|
|
28
29
|
const SOURCE_LIKE = /\.([cm]?[jt]sx?|json)$/;
|
|
29
30
|
/**
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
31
|
+
* esbuild has no hook-filter support of its own: unplugin registers a single
|
|
32
|
+
* `onLoad` covering both the load and transform hooks, and its transform shim
|
|
33
|
+
* reads the file off disk before any JS-side filter runs. `onLoadFilter` is
|
|
34
|
+
* the one filter esbuild itself applies (in Go, before calling into JS), so it
|
|
35
|
+
* carries the union of what either hook can handle — source files for
|
|
36
|
+
* transform, the resolved runtime module for load (derived from the load
|
|
37
|
+
* filter so the two cannot drift; a miss there would leave the lean-mode
|
|
38
|
+
* runtime import unresolved). The hooks' own filters narrow it further.
|
|
39
|
+
*/
|
|
39
40
|
const ESBUILD_LOAD_FILTER = new RegExp(`\\.[cm]?[jt]sx?$|${RESOLVED_RUNTIME_ID_FILTER.source}`);
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
// discovery, or did parse-level work (hoist scan / static filter) —
|
|
184
|
-
// even when that work concluded "no transform needed". Null results
|
|
185
|
-
// used to be skipped on the theory that bail-outs are cheaper than a
|
|
186
|
-
// cache probe; that holds for textual bail-outs (still never
|
|
187
|
-
// persisted) but not for the scans: hoist-only mode re-paid a full
|
|
188
|
-
// scan per zod-importing file per run (35.8s/run in a field report)
|
|
189
|
-
// purely to re-derive nulls.
|
|
190
|
-
if (diskCache !== null &&
|
|
191
|
-
diskKey !== null &&
|
|
192
|
-
!uncacheable &&
|
|
193
|
-
(result !== null || discoveryRan || substantialWork)) {
|
|
194
|
-
// TS narrows fileStats to null here (assignment happens inside a
|
|
195
|
-
// callback it cannot track) — widen back.
|
|
196
|
-
const s = fileStats;
|
|
197
|
-
const entryStats = s === null ? undefined : { schemas: s.schemas, optimized: s.optimized };
|
|
198
|
-
if (!discoveryRan) {
|
|
199
|
-
// Discovery-free results (hoist scans, static-filter rejections,
|
|
200
|
-
// hoist-only rewrites) are pure functions of the file content:
|
|
201
|
-
// no deps.
|
|
202
|
-
diskCache.save(diskKey, result, [], entryStats, map);
|
|
203
|
-
}
|
|
204
|
-
else {
|
|
205
|
-
// Per-file dependency sets: the file's static first-party import
|
|
206
|
-
// graph, so editing an unrelated file no longer invalidates this
|
|
207
|
-
// entry (the global superset recorded the whole project — in
|
|
208
|
-
// large codebases every commit wiped the entire cache). The
|
|
209
|
-
// entry file itself is always a dep: the cache key hashes the
|
|
210
|
-
// content the BUNDLER passed, but discovery executed the file
|
|
211
|
-
// from DISK — recording it guards the (rare) divergence between
|
|
212
|
-
// the two. When the graph cannot be fully analyzed (non-literal
|
|
213
|
-
// dynamic imports, unresolvable relative specifiers), the entry
|
|
214
|
-
// is deferred and flushed in buildEnd against ONE end-of-build
|
|
215
|
-
// executed-modules superset — immediate snapshots gave every
|
|
216
|
-
// entry a distinct point-in-time copy (283 MB in the field).
|
|
217
|
-
const staticDeps = collectStaticDeps(id);
|
|
218
|
-
if (staticDeps.complete) {
|
|
219
|
-
diskCache.save(diskKey, result, [id, ...staticDeps.deps], entryStats, map);
|
|
220
|
-
}
|
|
221
|
-
else {
|
|
222
|
-
diskCache.saveDeferred(diskKey, result, entryStats, map);
|
|
223
|
-
}
|
|
224
|
-
}
|
|
225
|
-
}
|
|
226
|
-
if (!result)
|
|
227
|
-
return;
|
|
228
|
-
return { code: result, map };
|
|
229
|
-
},
|
|
230
|
-
},
|
|
231
|
-
watchChange(id) {
|
|
232
|
-
if (!SOURCE_LIKE.test(id))
|
|
233
|
-
return;
|
|
234
|
-
if (id.includes("node_modules"))
|
|
235
|
-
return;
|
|
236
|
-
// The changed file may be a dependency of any schema file, so both
|
|
237
|
-
// the module cache (executions) and the transform result cache are
|
|
238
|
-
// invalidated wholesale. node_modules stay warm in the loader. Disk
|
|
239
|
-
// cache entries self-validate via dep hashes — only the per-process
|
|
240
|
-
// stat memo needs resetting so changed files re-hash. Pending
|
|
241
|
-
// deferred entries predate the change and must not flush against
|
|
242
|
-
// post-change dep hashes.
|
|
243
|
-
invalidateModuleCache();
|
|
244
|
-
resetDepValidationMemo();
|
|
245
|
-
resetDepGraphMemo();
|
|
246
|
-
diskCache?.dropDeferred();
|
|
247
|
-
cache.clear();
|
|
248
|
-
},
|
|
249
|
-
buildEnd() {
|
|
250
|
-
// The loader's executed-modules superset is final here — persist the
|
|
251
|
-
// queued incomplete-crawl entries against one shared snapshot.
|
|
252
|
-
diskCache?.flushDeferred();
|
|
253
|
-
if (!verbose)
|
|
254
|
-
return;
|
|
255
|
-
if (stats.schemas === 0)
|
|
256
|
-
return;
|
|
257
|
-
log(`Build summary: ${stats.optimized}/${stats.schemas} schemas optimized across ${stats.files} file(s)` +
|
|
258
|
-
(stats.failed > 0 ? `, ${stats.failed} failed` : ""));
|
|
259
|
-
stats.reset();
|
|
260
|
-
},
|
|
261
|
-
};
|
|
41
|
+
const unplugin = createUnplugin((options, meta) => {
|
|
42
|
+
const schemasMode = options?.schemas ?? "auto";
|
|
43
|
+
const autoDiscover = schemasMode === "auto";
|
|
44
|
+
const outputMode = options?.output ?? "schema";
|
|
45
|
+
const zodCompat = outputMode === "schema" || outputMode === "compact";
|
|
46
|
+
const compact = outputMode === "compact";
|
|
47
|
+
const stats = new BuildStatsAccumulator();
|
|
48
|
+
const cache = /* @__PURE__ */ new Map();
|
|
49
|
+
const verbose = options?.verbose === true;
|
|
50
|
+
const mode = options?.codegenMode ?? (VIRTUAL_MODULE_FRAMEWORKS.has(meta.framework) ? "lean" : "inline");
|
|
51
|
+
const runtimeId = WP_FRAMEWORKS.has(meta.framework) ? WP_RUNTIME_ID : VIRTUAL_RUNTIME_ID;
|
|
52
|
+
const cacheOption = options?.cache ?? true;
|
|
53
|
+
const diskCache = cacheOption === false ? null : new DiskCache(DiskCache.resolveDir(cacheOption), JSON.stringify({
|
|
54
|
+
mode,
|
|
55
|
+
runtimeId,
|
|
56
|
+
output: outputMode,
|
|
57
|
+
schemas: schemasMode,
|
|
58
|
+
hoist: typeof options?.hoist === "object" ? String(options.hoist.schemaNamePattern ?? "default") : options?.hoist ?? true
|
|
59
|
+
}), getFirstPartyModulePaths);
|
|
60
|
+
const viteApply = options?.apply === "all" ? void 0 : options?.apply ?? ((_config, env) => env.command === "build" || env.mode === "test" || process.env["VITEST"] !== void 0);
|
|
61
|
+
const codeFilter = transformCodeFilter(options);
|
|
62
|
+
return {
|
|
63
|
+
name: "zod-compiler",
|
|
64
|
+
enforce: "pre",
|
|
65
|
+
vite: viteApply === void 0 ? {} : { apply: viteApply },
|
|
66
|
+
esbuild: { onLoadFilter: ESBUILD_LOAD_FILTER },
|
|
67
|
+
resolveId: {
|
|
68
|
+
filter: { id: RUNTIME_SPECIFIER_FILTER },
|
|
69
|
+
handler(id) {
|
|
70
|
+
return resolveVirtualId(id);
|
|
71
|
+
}
|
|
72
|
+
},
|
|
73
|
+
load: {
|
|
74
|
+
filter: { id: RESOLVED_RUNTIME_ID_FILTER },
|
|
75
|
+
handler(id) {
|
|
76
|
+
return loadVirtual(id);
|
|
77
|
+
}
|
|
78
|
+
},
|
|
79
|
+
transform: {
|
|
80
|
+
filter: codeFilter === void 0 ? { id: TRANSFORM_ID_FILTER } : {
|
|
81
|
+
code: codeFilter,
|
|
82
|
+
id: TRANSFORM_ID_FILTER
|
|
83
|
+
},
|
|
84
|
+
async handler(code, id) {
|
|
85
|
+
if (!shouldTransform(id, options)) return;
|
|
86
|
+
const cached = cache.get(id);
|
|
87
|
+
if (cached && cached.code === code) return cached.result === null ? void 0 : {
|
|
88
|
+
code: cached.result,
|
|
89
|
+
map: cached.map ?? null
|
|
90
|
+
};
|
|
91
|
+
if (cached) invalidateModuleCache();
|
|
92
|
+
const diskKey = diskCache === null ? null : diskCache.key(id, code);
|
|
93
|
+
if (diskCache !== null && diskKey !== null) {
|
|
94
|
+
const entry = diskCache.load(diskKey);
|
|
95
|
+
if (entry !== null) {
|
|
96
|
+
cache.set(id, {
|
|
97
|
+
code,
|
|
98
|
+
result: entry.result,
|
|
99
|
+
map: entry.map ?? null
|
|
100
|
+
});
|
|
101
|
+
if (entry.stats) stats.add({
|
|
102
|
+
files: 1,
|
|
103
|
+
schemas: entry.stats.schemas,
|
|
104
|
+
optimized: entry.stats.optimized,
|
|
105
|
+
failed: 0
|
|
106
|
+
});
|
|
107
|
+
if (verbose && entry.result !== null) log(`Using cached transform for ${id}`);
|
|
108
|
+
return entry.result === null ? void 0 : {
|
|
109
|
+
code: entry.result,
|
|
110
|
+
map: entry.map ?? null
|
|
111
|
+
};
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
let discoveryRan = false;
|
|
115
|
+
let substantialWork = false;
|
|
116
|
+
let uncacheable = false;
|
|
117
|
+
let fileStats = null;
|
|
118
|
+
const output = await transformCodeWithMap(code, id, {
|
|
119
|
+
mode,
|
|
120
|
+
runtimeId,
|
|
121
|
+
verbose,
|
|
122
|
+
zodCompat,
|
|
123
|
+
compact,
|
|
124
|
+
autoDiscover,
|
|
125
|
+
hoist: options?.hoist,
|
|
126
|
+
onDiscovery() {
|
|
127
|
+
discoveryRan = true;
|
|
128
|
+
},
|
|
129
|
+
onSubstantialWork() {
|
|
130
|
+
substantialWork = true;
|
|
131
|
+
},
|
|
132
|
+
onUncacheableResult() {
|
|
133
|
+
uncacheable = true;
|
|
134
|
+
},
|
|
135
|
+
onBuildStats(s) {
|
|
136
|
+
stats.add(s);
|
|
137
|
+
fileStats = s;
|
|
138
|
+
}
|
|
139
|
+
});
|
|
140
|
+
const result = output === null ? null : output.code;
|
|
141
|
+
const map = output === null ? null : output.map;
|
|
142
|
+
cache.set(id, {
|
|
143
|
+
code,
|
|
144
|
+
result,
|
|
145
|
+
map
|
|
146
|
+
});
|
|
147
|
+
if (diskCache !== null && diskKey !== null && !uncacheable && (result !== null || discoveryRan || substantialWork)) {
|
|
148
|
+
const s = fileStats;
|
|
149
|
+
const entryStats = s === null ? void 0 : {
|
|
150
|
+
schemas: s.schemas,
|
|
151
|
+
optimized: s.optimized
|
|
152
|
+
};
|
|
153
|
+
if (!discoveryRan) diskCache.save(diskKey, result, [], entryStats, map);
|
|
154
|
+
else {
|
|
155
|
+
const staticDeps = collectStaticDeps(id);
|
|
156
|
+
if (staticDeps.complete) diskCache.save(diskKey, result, [id, ...staticDeps.deps], entryStats, map);
|
|
157
|
+
else diskCache.saveDeferred(diskKey, result, entryStats, map);
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
if (!result) return;
|
|
161
|
+
return {
|
|
162
|
+
code: result,
|
|
163
|
+
map
|
|
164
|
+
};
|
|
165
|
+
}
|
|
166
|
+
},
|
|
167
|
+
watchChange(id) {
|
|
168
|
+
if (!SOURCE_LIKE.test(id)) return;
|
|
169
|
+
if (id.includes("node_modules")) return;
|
|
170
|
+
invalidateModuleCache();
|
|
171
|
+
resetDepValidationMemo();
|
|
172
|
+
resetDepGraphMemo();
|
|
173
|
+
diskCache?.dropDeferred();
|
|
174
|
+
cache.clear();
|
|
175
|
+
},
|
|
176
|
+
buildEnd() {
|
|
177
|
+
diskCache?.flushDeferred();
|
|
178
|
+
if (!verbose) return;
|
|
179
|
+
if (stats.schemas === 0) return;
|
|
180
|
+
log(`Build summary: ${stats.optimized}/${stats.schemas} schemas optimized across ${stats.files} file(s)` + (stats.failed > 0 ? `, ${stats.failed} failed` : ""));
|
|
181
|
+
stats.reset();
|
|
182
|
+
}
|
|
183
|
+
};
|
|
262
184
|
});
|
|
185
|
+
//#endregion
|
|
186
|
+
export { unplugin };
|
|
187
|
+
|
|
263
188
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/unplugin/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","names":[],"sources":["../../src/unplugin/index.ts"],"sourcesContent":["import process from \"node:process\";\nimport { createUnplugin, type UnpluginContextMeta } from \"unplugin\";\nimport type { CodegenMode } from \"../core/codegen/context.js\";\nimport { getFirstPartyModulePaths, invalidateModuleCache } from \"../loader.js\";\nimport { collectStaticDeps, resetDepGraphMemo } from \"./dep-graph.js\";\nimport { DiskCache, resetDepValidationMemo } from \"./disk-cache.js\";\nimport {\n log,\n shouldTransform,\n TRANSFORM_ID_FILTER,\n transformCodeFilter,\n type TransformSourceMap,\n transformCodeWithMap,\n} from \"./transform.js\";\nimport type { BuildStats, ZodCompilerPluginOptions } from \"./types.js\";\nimport { BuildStatsAccumulator } from \"./types.js\";\nimport {\n loadVirtual,\n RESOLVED_RUNTIME_ID_FILTER,\n resolveVirtualId,\n RUNTIME_SPECIFIER_FILTER,\n VIRTUAL_RUNTIME_ID,\n WP_RUNTIME_ID,\n} from \"./virtual.js\";\n\n/**\n * Frameworks whose resolveId/load hooks receive any import specifier, including\n * `virtual:` URIs and bare specifiers, so lean-mode cross-file dedup works.\n * webpack / rspack reject the `virtual:` URI scheme but accept bare specifiers,\n * so they use WP_RUNTIME_ID (`__zod-compiler-runtime__`) instead of VIRTUAL_RUNTIME_ID.\n */\nconst VIRTUAL_MODULE_FRAMEWORKS = new Set([\n \"vite\",\n \"rollup\",\n \"rolldown\",\n \"esbuild\",\n \"farm\",\n \"bun\",\n \"rspack\",\n \"webpack\",\n]);\n\n/** Frameworks that need the bare-specifier runtime ID instead of `virtual:`. */\nconst WP_FRAMEWORKS = new Set([\"rspack\", \"webpack\"]);\n\n/** File extensions whose changes can affect a schema module graph. */\nconst SOURCE_LIKE = /\\.([cm]?[jt]sx?|json)$/;\n\n/**\n * esbuild has no hook-filter support of its own: unplugin registers a single\n * `onLoad` covering both the load and transform hooks, and its transform shim\n * reads the file off disk before any JS-side filter runs. `onLoadFilter` is\n * the one filter esbuild itself applies (in Go, before calling into JS), so it\n * carries the union of what either hook can handle — source files for\n * transform, the resolved runtime module for load (derived from the load\n * filter so the two cannot drift; a miss there would leave the lean-mode\n * runtime import unresolved). The hooks' own filters narrow it further.\n */\nconst ESBUILD_LOAD_FILTER = new RegExp(`\\\\.[cm]?[jt]sx?$|${RESOLVED_RUNTIME_ID_FILTER.source}`);\n\nexport const unplugin = createUnplugin(\n (options: ZodCompilerPluginOptions | undefined, meta: UnpluginContextMeta) => {\n const schemasMode = options?.schemas ?? \"auto\";\n const autoDiscover = schemasMode === \"auto\";\n const outputMode = options?.output ?? \"schema\";\n // \"compact\" keeps the Zod schema (its safeParse IS the cold error path) — so\n // it is zod-compatible like \"schema\"; only \"bag\" drops the schema object.\n const zodCompat = outputMode === \"schema\" || outputMode === \"compact\";\n const compact = outputMode === \"compact\";\n const stats = new BuildStatsAccumulator();\n // Transform results keyed by id, validated by content: bundlers re-run\n // transform for the same file (multiple environments, watch rebuilds) —\n // identical content returns the cached result, changed content recomputes.\n const cache = new Map<\n string,\n { code: string; result: string | null; map?: TransformSourceMap | null }\n >();\n const verbose = options?.verbose === true;\n const mode: CodegenMode =\n options?.codegenMode ?? (VIRTUAL_MODULE_FRAMEWORKS.has(meta.framework) ? \"lean\" : \"inline\");\n const runtimeId = WP_FRAMEWORKS.has(meta.framework) ? WP_RUNTIME_ID : VIRTUAL_RUNTIME_ID;\n // Persistent transform-result cache: discovery executes schema files (and\n // their import graphs) in-process, and the in-memory caches die with the\n // process — without a disk cache every test run / build re-pays that cost.\n // Entries self-validate against dep content hashes, so watch invalidation\n // semantics carry across processes.\n const cacheOption = options?.cache ?? true;\n const diskCache =\n cacheOption === false\n ? null\n : new DiskCache(\n DiskCache.resolveDir(cacheOption),\n JSON.stringify({\n mode,\n runtimeId,\n output: outputMode,\n schemas: schemasMode,\n hoist:\n typeof options?.hoist === \"object\"\n ? String(options.hoist.schemaNamePattern ?? \"default\")\n : (options?.hoist ?? true),\n }),\n getFirstPartyModulePaths,\n );\n // Vite only (other bundlers ignore the field): when the plugin runs.\n // The default compiles production builds AND test runs — tests should\n // exercise (and benefit from) the validators that ship — while plain dev\n // servers skip AOT cost and use the Zod fallback. Vitest runs Vite in\n // serve mode but is detectable via the VITEST env var / \"test\" mode.\n const viteApply =\n options?.apply === \"all\"\n ? undefined\n : (options?.apply ??\n ((_config: unknown, env: { command: string; mode: string }) =>\n env.command === \"build\" || env.mode === \"test\" || process.env[\"VITEST\"] !== undefined));\n\n // Hook filters (unplugin object hooks): bundlers that support them\n // natively — Rolldown, Vite, Rollup 4.40+ — reject a module before ever\n // calling into JS, and unplugin applies the same patterns itself\n // everywhere else. The `code` filter is the big one: a file that never\n // mentions zod cannot produce output, so it no longer costs a hook call,\n // a content hash and an import scan per build.\n const codeFilter = transformCodeFilter(options);\n const transformFilter =\n codeFilter === undefined\n ? { id: TRANSFORM_ID_FILTER }\n : { code: codeFilter, id: TRANSFORM_ID_FILTER };\n\n return {\n name: \"zod-compiler\",\n enforce: \"pre\" as const,\n\n vite: viteApply === undefined ? {} : { apply: viteApply },\n\n esbuild: { onLoadFilter: ESBUILD_LOAD_FILTER },\n\n resolveId: {\n filter: { id: RUNTIME_SPECIFIER_FILTER },\n handler(id: string) {\n return resolveVirtualId(id);\n },\n },\n\n load: {\n filter: { id: RESOLVED_RUNTIME_ID_FILTER },\n handler(id: string) {\n return loadVirtual(id);\n },\n },\n\n transform: {\n filter: transformFilter,\n async handler(code: string, id: string) {\n // The filter covers the static half of shouldTransform(); the\n // include/exclude options — picomatch `contains` semantics, which the\n // native filters do not reproduce — are applied here, as is the whole\n // check for hosts that ignore filters.\n if (!shouldTransform(id, options)) return;\n\n const cached = cache.get(id);\n if (cached && cached.code === code) {\n return cached.result === null\n ? undefined\n : { code: cached.result, map: cached.map ?? null };\n }\n if (cached) {\n // Content changed but no watchChange fired (bundlers without the\n // hook): drop stale module executions before re-discovering.\n invalidateModuleCache();\n }\n\n // Disk cache: skip static-filtering, discovery (file execution!) and\n // codegen entirely when a previous process already transformed this\n // exact content and every dep it executed is unchanged.\n const diskKey = diskCache === null ? null : diskCache.key(id, code);\n if (diskCache !== null && diskKey !== null) {\n const entry = diskCache.load(diskKey);\n if (entry !== null) {\n cache.set(id, { code, result: entry.result, map: entry.map ?? null });\n if (entry.stats) {\n stats.add({\n files: 1,\n schemas: entry.stats.schemas,\n optimized: entry.stats.optimized,\n failed: 0,\n });\n }\n if (verbose && entry.result !== null) {\n log(`Using cached transform for ${id}`);\n }\n return entry.result === null\n ? undefined\n : { code: entry.result, map: entry.map ?? null };\n }\n }\n\n let discoveryRan = false;\n let substantialWork = false;\n let uncacheable = false;\n let fileStats: BuildStats | null = null;\n const output = await transformCodeWithMap(code, id, {\n mode,\n runtimeId,\n verbose,\n zodCompat,\n compact,\n autoDiscover,\n hoist: options?.hoist,\n onDiscovery() {\n discoveryRan = true;\n },\n onSubstantialWork() {\n substantialWork = true;\n },\n onUncacheableResult() {\n uncacheable = true;\n },\n onBuildStats(s) {\n stats.add(s);\n fileStats = s;\n },\n });\n const result = output === null ? null : output.code;\n const map = output === null ? null : output.map;\n cache.set(id, { code, result, map });\n\n // Persist when the transform did real work: produced output, ran\n // discovery, or did parse-level work (hoist scan / static filter) —\n // even when that work concluded \"no transform needed\". Null results\n // used to be skipped on the theory that bail-outs are cheaper than a\n // cache probe; that holds for textual bail-outs (still never\n // persisted) but not for the scans: hoist-only mode re-paid a full\n // scan per zod-importing file per run (35.8s/run in a field report)\n // purely to re-derive nulls.\n if (\n diskCache !== null &&\n diskKey !== null &&\n !uncacheable &&\n (result !== null || discoveryRan || substantialWork)\n ) {\n // TS narrows fileStats to null here (assignment happens inside a\n // callback it cannot track) — widen back.\n const s = fileStats as BuildStats | null;\n const entryStats =\n s === null ? undefined : { schemas: s.schemas, optimized: s.optimized };\n if (!discoveryRan) {\n // Discovery-free results (hoist scans, static-filter rejections,\n // hoist-only rewrites) are pure functions of the file content:\n // no deps.\n diskCache.save(diskKey, result, [], entryStats, map);\n } else {\n // Per-file dependency sets: the file's static first-party import\n // graph, so editing an unrelated file no longer invalidates this\n // entry (the global superset recorded the whole project — in\n // large codebases every commit wiped the entire cache). The\n // entry file itself is always a dep: the cache key hashes the\n // content the BUNDLER passed, but discovery executed the file\n // from DISK — recording it guards the (rare) divergence between\n // the two. When the graph cannot be fully analyzed (non-literal\n // dynamic imports, unresolvable relative specifiers), the entry\n // is deferred and flushed in buildEnd against ONE end-of-build\n // executed-modules superset — immediate snapshots gave every\n // entry a distinct point-in-time copy (283 MB in the field).\n const staticDeps = collectStaticDeps(id);\n if (staticDeps.complete) {\n diskCache.save(diskKey, result, [id, ...staticDeps.deps], entryStats, map);\n } else {\n diskCache.saveDeferred(diskKey, result, entryStats, map);\n }\n }\n }\n\n if (!result) return;\n return { code: result, map };\n },\n },\n\n watchChange(id: string) {\n if (!SOURCE_LIKE.test(id)) return;\n if (id.includes(\"node_modules\")) return;\n // The changed file may be a dependency of any schema file, so both\n // the module cache (executions) and the transform result cache are\n // invalidated wholesale. node_modules stay warm in the loader. Disk\n // cache entries self-validate via dep hashes — only the per-process\n // stat memo needs resetting so changed files re-hash. Pending\n // deferred entries predate the change and must not flush against\n // post-change dep hashes.\n invalidateModuleCache();\n resetDepValidationMemo();\n resetDepGraphMemo();\n diskCache?.dropDeferred();\n cache.clear();\n },\n\n buildEnd() {\n // The loader's executed-modules superset is final here — persist the\n // queued incomplete-crawl entries against one shared snapshot.\n diskCache?.flushDeferred();\n if (!verbose) return;\n if (stats.schemas === 0) return;\n log(\n `Build summary: ${stats.optimized}/${stats.schemas} schemas optimized across ${stats.files} file(s)` +\n (stats.failed > 0 ? `, ${stats.failed} failed` : \"\"),\n );\n stats.reset();\n },\n };\n },\n);\n\nexport type { ZodCompilerPluginOptions } from \"./types.js\";\n"],"mappings":"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"}
|
|
@@ -1,3 +1,6 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
import { ZodCompilerPluginOptions } from "./types.js";
|
|
2
|
+
//#region src/unplugin/rolldown.d.ts
|
|
3
|
+
declare const _default: (options?: ZodCompilerPluginOptions | undefined) => import("unplugin").RolldownPlugin<any> | import("unplugin").RolldownPlugin<any>[];
|
|
4
|
+
//#endregion
|
|
5
|
+
export { _default as default };
|
|
3
6
|
//# sourceMappingURL=rolldown.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rolldown.d.ts","
|
|
1
|
+
{"version":3,"file":"rolldown.d.ts","names":[],"sources":["../../src/unplugin/rolldown.ts"],"mappings":""}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rolldown.js","
|
|
1
|
+
{"version":3,"file":"rolldown.js","names":[],"sources":["../../src/unplugin/rolldown.ts"],"sourcesContent":["import { unplugin } from \"./index.js\";\n\nexport default unplugin.rolldown;\n"],"mappings":";;AAEA,IAAA,mBAAe,SAAS"}
|
|
@@ -1,3 +1,6 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
import { ZodCompilerPluginOptions } from "./types.js";
|
|
2
|
+
//#region src/unplugin/rollup.d.ts
|
|
3
|
+
declare const _default: (options?: ZodCompilerPluginOptions | undefined) => any;
|
|
4
|
+
//#endregion
|
|
5
|
+
export { _default as default };
|
|
3
6
|
//# sourceMappingURL=rollup.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rollup.d.ts","
|
|
1
|
+
{"version":3,"file":"rollup.d.ts","names":[],"sources":["../../src/unplugin/rollup.ts"],"mappings":""}
|
package/dist/unplugin/rollup.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rollup.js","
|
|
1
|
+
{"version":3,"file":"rollup.js","names":[],"sources":["../../src/unplugin/rollup.ts"],"sourcesContent":["import { unplugin } from \"./index.js\";\n\nexport default unplugin.rollup;\n"],"mappings":";;AAEA,IAAA,iBAAe,SAAS"}
|
|
@@ -1,4 +1,7 @@
|
|
|
1
|
-
import
|
|
2
|
-
import
|
|
3
|
-
|
|
1
|
+
import { ZodCompilerPluginOptions } from "./types.js";
|
|
2
|
+
import { RsbuildPlugin } from "@rsbuild/core";
|
|
3
|
+
//#region src/unplugin/rsbuild.d.ts
|
|
4
|
+
declare function zodCompiler(options?: ZodCompilerPluginOptions): RsbuildPlugin;
|
|
5
|
+
//#endregion
|
|
6
|
+
export { zodCompiler as default };
|
|
4
7
|
//# sourceMappingURL=rsbuild.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rsbuild.d.ts","
|
|
1
|
+
{"version":3,"file":"rsbuild.d.ts","names":[],"sources":["../../src/unplugin/rsbuild.ts"],"mappings":";;;iBAIwB,YAAY,UAAU,2BAA2B"}
|
package/dist/unplugin/rsbuild.js
CHANGED
|
@@ -1,13 +1,17 @@
|
|
|
1
|
-
import
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
1
|
+
import rspack_default from "./rspack.js";
|
|
2
|
+
//#region src/unplugin/rsbuild.ts
|
|
3
|
+
function zodCompiler(options) {
|
|
4
|
+
return {
|
|
5
|
+
name: "zod-compiler",
|
|
6
|
+
setup(api) {
|
|
7
|
+
api.modifyRspackConfig((config) => {
|
|
8
|
+
config.plugins ??= [];
|
|
9
|
+
config.plugins.push(rspack_default(options));
|
|
10
|
+
});
|
|
11
|
+
}
|
|
12
|
+
};
|
|
12
13
|
}
|
|
14
|
+
//#endregion
|
|
15
|
+
export { zodCompiler as default };
|
|
16
|
+
|
|
13
17
|
//# sourceMappingURL=rsbuild.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rsbuild.js","
|
|
1
|
+
{"version":3,"file":"rsbuild.js","names":["zodCompilerRspack"],"sources":["../../src/unplugin/rsbuild.ts"],"sourcesContent":["import type { RsbuildPlugin } from \"@rsbuild/core\";\nimport type { ZodCompilerPluginOptions } from \"./types.js\";\nimport zodCompilerRspack from \"./rspack.js\";\n\nexport default function zodCompiler(options?: ZodCompilerPluginOptions): RsbuildPlugin {\n return {\n name: \"zod-compiler\",\n setup(api) {\n api.modifyRspackConfig((config) => {\n config.plugins ??= [];\n config.plugins.push(zodCompilerRspack(options));\n });\n },\n };\n}\n"],"mappings":";;AAIA,SAAwB,YAAY,SAAmD;CACrF,OAAO;EACL,MAAM;EACN,MAAM,KAAK;GACT,IAAI,oBAAoB,WAAW;IACjC,OAAO,YAAY,CAAC;IACpB,OAAO,QAAQ,KAAKA,eAAkB,OAAO,CAAC;GAChD,CAAC;EACH;CACF;AACF"}
|