zod-compiler 0.1.1 → 1.0.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/LICENSE +21 -0
- package/README.md +381 -28
- package/dist/cli/commands/check.d.ts +9 -0
- package/dist/cli/commands/check.d.ts.map +1 -0
- package/dist/cli/commands/check.js +150 -0
- package/dist/cli/commands/check.js.map +1 -0
- package/dist/cli/commands/generate.d.ts +33 -0
- package/dist/cli/commands/generate.d.ts.map +1 -0
- package/dist/cli/commands/generate.js +142 -0
- package/dist/cli/commands/generate.js.map +1 -0
- package/dist/cli/commands/watch.d.ts +33 -0
- package/dist/cli/commands/watch.d.ts.map +1 -0
- package/dist/cli/commands/watch.js +166 -0
- package/dist/cli/commands/watch.js.map +1 -0
- package/dist/cli/emitter.d.ts +21 -0
- package/dist/cli/emitter.d.ts.map +1 -0
- package/dist/cli/emitter.js +64 -0
- package/dist/cli/emitter.js.map +1 -0
- package/dist/cli/errors.d.ts +2 -0
- package/dist/cli/errors.d.ts.map +1 -0
- package/dist/cli/errors.js +4 -0
- package/dist/cli/errors.js.map +1 -0
- package/dist/cli/index.d.ts +3 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/index.js +181 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/cli/logger.d.ts +18 -0
- package/dist/cli/logger.d.ts.map +1 -0
- package/dist/cli/logger.js +46 -0
- package/dist/cli/logger.js.map +1 -0
- package/dist/core/codegen/context.d.ts +138 -0
- package/dist/core/codegen/context.d.ts.map +1 -0
- package/dist/core/codegen/context.js +213 -0
- package/dist/core/codegen/context.js.map +1 -0
- package/dist/core/codegen/emit-issue.d.ts +74 -0
- package/dist/core/codegen/emit-issue.d.ts.map +1 -0
- package/dist/core/codegen/emit-issue.js +116 -0
- package/dist/core/codegen/emit-issue.js.map +1 -0
- package/dist/core/codegen/emit.d.ts +8 -0
- package/dist/core/codegen/emit.d.ts.map +1 -0
- package/dist/core/codegen/emit.js +16 -0
- package/dist/core/codegen/emit.js.map +1 -0
- package/dist/core/codegen/fast-path.d.ts +17 -0
- package/dist/core/codegen/fast-path.d.ts.map +1 -0
- package/dist/core/codegen/fast-path.js +114 -0
- package/dist/core/codegen/fast-path.js.map +1 -0
- package/dist/core/codegen/index.d.ts +19 -0
- package/dist/core/codegen/index.d.ts.map +1 -0
- package/dist/core/codegen/index.js +54 -0
- package/dist/core/codegen/index.js.map +1 -0
- package/dist/core/codegen/issue-decls.d.ts +37 -0
- package/dist/core/codegen/issue-decls.d.ts.map +1 -0
- package/dist/core/codegen/issue-decls.js +47 -0
- package/dist/core/codegen/issue-decls.js.map +1 -0
- package/dist/core/codegen/schemas/any.d.ts +5 -0
- package/dist/core/codegen/schemas/any.d.ts.map +1 -0
- package/dist/core/codegen/schemas/any.js +7 -0
- package/dist/core/codegen/schemas/any.js.map +1 -0
- package/dist/core/codegen/schemas/array.d.ts +7 -0
- package/dist/core/codegen/schemas/array.d.ts.map +1 -0
- package/dist/core/codegen/schemas/array.js +86 -0
- package/dist/core/codegen/schemas/array.js.map +1 -0
- package/dist/core/codegen/schemas/bigint.d.ts +5 -0
- package/dist/core/codegen/schemas/bigint.d.ts.map +1 -0
- package/dist/core/codegen/schemas/bigint.js +80 -0
- package/dist/core/codegen/schemas/bigint.js.map +1 -0
- package/dist/core/codegen/schemas/boolean.d.ts +5 -0
- package/dist/core/codegen/schemas/boolean.d.ts.map +1 -0
- package/dist/core/codegen/schemas/boolean.js +20 -0
- package/dist/core/codegen/schemas/boolean.js.map +1 -0
- package/dist/core/codegen/schemas/catch.d.ts +7 -0
- package/dist/core/codegen/schemas/catch.d.ts.map +1 -0
- package/dist/core/codegen/schemas/catch.js +26 -0
- package/dist/core/codegen/schemas/catch.js.map +1 -0
- package/dist/core/codegen/schemas/date.d.ts +5 -0
- package/dist/core/codegen/schemas/date.d.ts.map +1 -0
- package/dist/core/codegen/schemas/date.js +79 -0
- package/dist/core/codegen/schemas/date.js.map +1 -0
- package/dist/core/codegen/schemas/default.d.ts +5 -0
- package/dist/core/codegen/schemas/default.d.ts.map +1 -0
- package/dist/core/codegen/schemas/default.js +17 -0
- package/dist/core/codegen/schemas/default.js.map +1 -0
- package/dist/core/codegen/schemas/discriminated-union.d.ts +7 -0
- package/dist/core/codegen/schemas/discriminated-union.d.ts.map +1 -0
- package/dist/core/codegen/schemas/discriminated-union.js +45 -0
- package/dist/core/codegen/schemas/discriminated-union.js.map +1 -0
- package/dist/core/codegen/schemas/effect.d.ts +17 -0
- package/dist/core/codegen/schemas/effect.d.ts.map +1 -0
- package/dist/core/codegen/schemas/effect.js +35 -0
- package/dist/core/codegen/schemas/effect.js.map +1 -0
- package/dist/core/codegen/schemas/enum.d.ts +5 -0
- package/dist/core/codegen/schemas/enum.d.ts.map +1 -0
- package/dist/core/codegen/schemas/enum.js +33 -0
- package/dist/core/codegen/schemas/enum.js.map +1 -0
- package/dist/core/codegen/schemas/fallback.d.ts +4 -0
- package/dist/core/codegen/schemas/fallback.d.ts.map +1 -0
- package/dist/core/codegen/schemas/fallback.js +23 -0
- package/dist/core/codegen/schemas/fallback.js.map +1 -0
- package/dist/core/codegen/schemas/file.d.ts +5 -0
- package/dist/core/codegen/schemas/file.d.ts.map +1 -0
- package/dist/core/codegen/schemas/file.js +78 -0
- package/dist/core/codegen/schemas/file.js.map +1 -0
- package/dist/core/codegen/schemas/intersection.d.ts +7 -0
- package/dist/core/codegen/schemas/intersection.d.ts.map +1 -0
- package/dist/core/codegen/schemas/intersection.js +13 -0
- package/dist/core/codegen/schemas/intersection.js.map +1 -0
- package/dist/core/codegen/schemas/literal.d.ts +5 -0
- package/dist/core/codegen/schemas/literal.d.ts.map +1 -0
- package/dist/core/codegen/schemas/literal.js +31 -0
- package/dist/core/codegen/schemas/literal.js.map +1 -0
- package/dist/core/codegen/schemas/map.d.ts +7 -0
- package/dist/core/codegen/schemas/map.d.ts.map +1 -0
- package/dist/core/codegen/schemas/map.js +46 -0
- package/dist/core/codegen/schemas/map.js.map +1 -0
- package/dist/core/codegen/schemas/nan.d.ts +5 -0
- package/dist/core/codegen/schemas/nan.d.ts.map +1 -0
- package/dist/core/codegen/schemas/nan.js +13 -0
- package/dist/core/codegen/schemas/nan.js.map +1 -0
- package/dist/core/codegen/schemas/never.d.ts +5 -0
- package/dist/core/codegen/schemas/never.d.ts.map +1 -0
- package/dist/core/codegen/schemas/never.js +11 -0
- package/dist/core/codegen/schemas/never.js.map +1 -0
- package/dist/core/codegen/schemas/null.d.ts +5 -0
- package/dist/core/codegen/schemas/null.d.ts.map +1 -0
- package/dist/core/codegen/schemas/null.js +13 -0
- package/dist/core/codegen/schemas/null.js.map +1 -0
- package/dist/core/codegen/schemas/nullable.d.ts +7 -0
- package/dist/core/codegen/schemas/nullable.d.ts.map +1 -0
- package/dist/core/codegen/schemas/nullable.js +15 -0
- package/dist/core/codegen/schemas/nullable.js.map +1 -0
- package/dist/core/codegen/schemas/number.d.ts +5 -0
- package/dist/core/codegen/schemas/number.d.ts.map +1 -0
- package/dist/core/codegen/schemas/number.js +186 -0
- package/dist/core/codegen/schemas/number.js.map +1 -0
- package/dist/core/codegen/schemas/object.d.ts +7 -0
- package/dist/core/codegen/schemas/object.d.ts.map +1 -0
- package/dist/core/codegen/schemas/object.js +65 -0
- package/dist/core/codegen/schemas/object.js.map +1 -0
- package/dist/core/codegen/schemas/optional.d.ts +7 -0
- package/dist/core/codegen/schemas/optional.d.ts.map +1 -0
- package/dist/core/codegen/schemas/optional.js +15 -0
- package/dist/core/codegen/schemas/optional.js.map +1 -0
- package/dist/core/codegen/schemas/pipe.d.ts +7 -0
- package/dist/core/codegen/schemas/pipe.d.ts.map +1 -0
- package/dist/core/codegen/schemas/pipe.js +18 -0
- package/dist/core/codegen/schemas/pipe.js.map +1 -0
- package/dist/core/codegen/schemas/readonly.d.ts +7 -0
- package/dist/core/codegen/schemas/readonly.d.ts.map +1 -0
- package/dist/core/codegen/schemas/readonly.js +7 -0
- package/dist/core/codegen/schemas/readonly.js.map +1 -0
- package/dist/core/codegen/schemas/record.d.ts +7 -0
- package/dist/core/codegen/schemas/record.d.ts.map +1 -0
- package/dist/core/codegen/schemas/record.js +53 -0
- package/dist/core/codegen/schemas/record.js.map +1 -0
- package/dist/core/codegen/schemas/recursive-ref.d.ts +5 -0
- package/dist/core/codegen/schemas/recursive-ref.d.ts.map +1 -0
- package/dist/core/codegen/schemas/recursive-ref.js +24 -0
- package/dist/core/codegen/schemas/recursive-ref.js.map +1 -0
- package/dist/core/codegen/schemas/set.d.ts +7 -0
- package/dist/core/codegen/schemas/set.d.ts.map +1 -0
- package/dist/core/codegen/schemas/set.js +88 -0
- package/dist/core/codegen/schemas/set.js.map +1 -0
- package/dist/core/codegen/schemas/string-bool.d.ts +4 -0
- package/dist/core/codegen/schemas/string-bool.d.ts.map +1 -0
- package/dist/core/codegen/schemas/string-bool.js +39 -0
- package/dist/core/codegen/schemas/string-bool.js.map +1 -0
- package/dist/core/codegen/schemas/string.d.ts +5 -0
- package/dist/core/codegen/schemas/string.d.ts.map +1 -0
- package/dist/core/codegen/schemas/string.js +226 -0
- package/dist/core/codegen/schemas/string.js.map +1 -0
- package/dist/core/codegen/schemas/symbol.d.ts +5 -0
- package/dist/core/codegen/schemas/symbol.d.ts.map +1 -0
- package/dist/core/codegen/schemas/symbol.js +13 -0
- package/dist/core/codegen/schemas/symbol.js.map +1 -0
- package/dist/core/codegen/schemas/template-literal.d.ts +5 -0
- package/dist/core/codegen/schemas/template-literal.d.ts.map +1 -0
- package/dist/core/codegen/schemas/template-literal.js +16 -0
- package/dist/core/codegen/schemas/template-literal.js.map +1 -0
- package/dist/core/codegen/schemas/tuple.d.ts +15 -0
- package/dist/core/codegen/schemas/tuple.d.ts.map +1 -0
- package/dist/core/codegen/schemas/tuple.js +111 -0
- package/dist/core/codegen/schemas/tuple.js.map +1 -0
- package/dist/core/codegen/schemas/undefined.d.ts +5 -0
- package/dist/core/codegen/schemas/undefined.d.ts.map +1 -0
- package/dist/core/codegen/schemas/undefined.js +13 -0
- package/dist/core/codegen/schemas/undefined.js.map +1 -0
- package/dist/core/codegen/schemas/union.d.ts +7 -0
- package/dist/core/codegen/schemas/union.d.ts.map +1 -0
- package/dist/core/codegen/schemas/union.js +95 -0
- package/dist/core/codegen/schemas/union.js.map +1 -0
- package/dist/core/codegen/schemas/unknown.d.ts +5 -0
- package/dist/core/codegen/schemas/unknown.d.ts.map +1 -0
- package/dist/core/codegen/schemas/unknown.js +7 -0
- package/dist/core/codegen/schemas/unknown.js.map +1 -0
- package/dist/core/codegen/schemas/void.d.ts +5 -0
- package/dist/core/codegen/schemas/void.d.ts.map +1 -0
- package/dist/core/codegen/schemas/void.js +13 -0
- package/dist/core/codegen/schemas/void.js.map +1 -0
- package/dist/core/codegen/slow-path.d.ts +5 -0
- package/dist/core/codegen/slow-path.d.ts.map +1 -0
- package/dist/core/codegen/slow-path.js +113 -0
- package/dist/core/codegen/slow-path.js.map +1 -0
- package/dist/core/codegen/well-known-regex.d.ts +27 -0
- package/dist/core/codegen/well-known-regex.d.ts.map +1 -0
- package/dist/core/codegen/well-known-regex.js +51 -0
- package/dist/core/codegen/well-known-regex.js.map +1 -0
- package/dist/core/compile.d.ts +19 -0
- package/dist/core/compile.d.ts.map +1 -0
- package/dist/core/compile.js +37 -0
- package/dist/core/compile.js.map +1 -0
- package/dist/core/diagnostic.d.ts +46 -0
- package/dist/core/diagnostic.d.ts.map +1 -0
- package/dist/core/diagnostic.js +174 -0
- package/dist/core/diagnostic.js.map +1 -0
- package/dist/core/extract/checks.d.ts +35 -0
- package/dist/core/extract/checks.d.ts.map +1 -0
- package/dist/core/extract/checks.js +249 -0
- package/dist/core/extract/checks.js.map +1 -0
- package/dist/core/extract/effects.d.ts +12 -0
- package/dist/core/extract/effects.d.ts.map +1 -0
- package/dist/core/extract/effects.js +204 -0
- package/dist/core/extract/effects.js.map +1 -0
- package/dist/core/extract/extractors/any.d.ts +3 -0
- package/dist/core/extract/extractors/any.d.ts.map +1 -0
- package/dist/core/extract/extractors/any.js +2 -0
- package/dist/core/extract/extractors/any.js.map +1 -0
- package/dist/core/extract/extractors/array.d.ts +4 -0
- package/dist/core/extract/extractors/array.d.ts.map +1 -0
- package/dist/core/extract/extractors/array.js +19 -0
- package/dist/core/extract/extractors/array.js.map +1 -0
- package/dist/core/extract/extractors/bigint.d.ts +4 -0
- package/dist/core/extract/extractors/bigint.d.ts.map +1 -0
- package/dist/core/extract/extractors/bigint.js +70 -0
- package/dist/core/extract/extractors/bigint.js.map +1 -0
- package/dist/core/extract/extractors/boolean.d.ts +3 -0
- package/dist/core/extract/extractors/boolean.d.ts.map +1 -0
- package/dist/core/extract/extractors/boolean.js +5 -0
- package/dist/core/extract/extractors/boolean.js.map +1 -0
- package/dist/core/extract/extractors/catch.d.ts +11 -0
- package/dist/core/extract/extractors/catch.d.ts.map +1 -0
- package/dist/core/extract/extractors/catch.js +20 -0
- package/dist/core/extract/extractors/catch.js.map +1 -0
- package/dist/core/extract/extractors/date.d.ts +4 -0
- package/dist/core/extract/extractors/date.d.ts.map +1 -0
- package/dist/core/extract/extractors/date.js +49 -0
- package/dist/core/extract/extractors/date.js.map +1 -0
- package/dist/core/extract/extractors/default.d.ts +4 -0
- package/dist/core/extract/extractors/default.d.ts.map +1 -0
- package/dist/core/extract/extractors/default.js +11 -0
- package/dist/core/extract/extractors/default.js.map +1 -0
- package/dist/core/extract/extractors/enum.d.ts +3 -0
- package/dist/core/extract/extractors/enum.d.ts.map +1 -0
- package/dist/core/extract/extractors/enum.js +15 -0
- package/dist/core/extract/extractors/enum.js.map +1 -0
- package/dist/core/extract/extractors/file.d.ts +4 -0
- package/dist/core/extract/extractors/file.d.ts.map +1 -0
- package/dist/core/extract/extractors/file.js +24 -0
- package/dist/core/extract/extractors/file.js.map +1 -0
- package/dist/core/extract/extractors/index.d.ts +32 -0
- package/dist/core/extract/extractors/index.d.ts.map +1 -0
- package/dist/core/extract/extractors/index.js +32 -0
- package/dist/core/extract/extractors/index.js.map +1 -0
- package/dist/core/extract/extractors/intersection.d.ts +3 -0
- package/dist/core/extract/extractors/intersection.d.ts.map +1 -0
- package/dist/core/extract/extractors/intersection.js +14 -0
- package/dist/core/extract/extractors/intersection.js.map +1 -0
- package/dist/core/extract/extractors/lazy.d.ts +4 -0
- package/dist/core/extract/extractors/lazy.d.ts.map +1 -0
- package/dist/core/extract/extractors/lazy.js +23 -0
- package/dist/core/extract/extractors/lazy.js.map +1 -0
- package/dist/core/extract/extractors/literal.d.ts +3 -0
- package/dist/core/extract/extractors/literal.d.ts.map +1 -0
- package/dist/core/extract/extractors/literal.js +2 -0
- package/dist/core/extract/extractors/literal.js.map +1 -0
- package/dist/core/extract/extractors/map.d.ts +4 -0
- package/dist/core/extract/extractors/map.d.ts.map +1 -0
- package/dist/core/extract/extractors/map.js +6 -0
- package/dist/core/extract/extractors/map.js.map +1 -0
- package/dist/core/extract/extractors/nan.d.ts +3 -0
- package/dist/core/extract/extractors/nan.d.ts.map +1 -0
- package/dist/core/extract/extractors/nan.js +2 -0
- package/dist/core/extract/extractors/nan.js.map +1 -0
- package/dist/core/extract/extractors/never.d.ts +3 -0
- package/dist/core/extract/extractors/never.d.ts.map +1 -0
- package/dist/core/extract/extractors/never.js +2 -0
- package/dist/core/extract/extractors/never.js.map +1 -0
- package/dist/core/extract/extractors/null.d.ts +3 -0
- package/dist/core/extract/extractors/null.d.ts.map +1 -0
- package/dist/core/extract/extractors/null.js +2 -0
- package/dist/core/extract/extractors/null.js.map +1 -0
- package/dist/core/extract/extractors/nullable.d.ts +3 -0
- package/dist/core/extract/extractors/nullable.d.ts.map +1 -0
- package/dist/core/extract/extractors/nullable.js +5 -0
- package/dist/core/extract/extractors/nullable.js.map +1 -0
- package/dist/core/extract/extractors/number.d.ts +4 -0
- package/dist/core/extract/extractors/number.d.ts.map +1 -0
- package/dist/core/extract/extractors/number.js +38 -0
- package/dist/core/extract/extractors/number.js.map +1 -0
- package/dist/core/extract/extractors/object.d.ts +4 -0
- package/dist/core/extract/extractors/object.d.ts.map +1 -0
- package/dist/core/extract/extractors/object.js +43 -0
- package/dist/core/extract/extractors/object.js.map +1 -0
- package/dist/core/extract/extractors/optional.d.ts +3 -0
- package/dist/core/extract/extractors/optional.d.ts.map +1 -0
- package/dist/core/extract/extractors/optional.js +14 -0
- package/dist/core/extract/extractors/optional.js.map +1 -0
- package/dist/core/extract/extractors/pipe.d.ts +4 -0
- package/dist/core/extract/extractors/pipe.d.ts.map +1 -0
- package/dist/core/extract/extractors/pipe.js +31 -0
- package/dist/core/extract/extractors/pipe.js.map +1 -0
- package/dist/core/extract/extractors/readonly.d.ts +9 -0
- package/dist/core/extract/extractors/readonly.d.ts.map +1 -0
- package/dist/core/extract/extractors/readonly.js +8 -0
- package/dist/core/extract/extractors/readonly.js.map +1 -0
- package/dist/core/extract/extractors/record.d.ts +4 -0
- package/dist/core/extract/extractors/record.d.ts.map +1 -0
- package/dist/core/extract/extractors/record.js +39 -0
- package/dist/core/extract/extractors/record.js.map +1 -0
- package/dist/core/extract/extractors/set.d.ts +4 -0
- package/dist/core/extract/extractors/set.d.ts.map +1 -0
- package/dist/core/extract/extractors/set.js +33 -0
- package/dist/core/extract/extractors/set.js.map +1 -0
- package/dist/core/extract/extractors/string-bool.d.ts +10 -0
- package/dist/core/extract/extractors/string-bool.d.ts.map +1 -0
- package/dist/core/extract/extractors/string-bool.js +92 -0
- package/dist/core/extract/extractors/string-bool.js.map +1 -0
- package/dist/core/extract/extractors/string.d.ts +4 -0
- package/dist/core/extract/extractors/string.d.ts.map +1 -0
- package/dist/core/extract/extractors/string.js +41 -0
- package/dist/core/extract/extractors/string.js.map +1 -0
- package/dist/core/extract/extractors/symbol.d.ts +3 -0
- package/dist/core/extract/extractors/symbol.d.ts.map +1 -0
- package/dist/core/extract/extractors/symbol.js +2 -0
- package/dist/core/extract/extractors/symbol.js.map +1 -0
- package/dist/core/extract/extractors/template-literal.d.ts +4 -0
- package/dist/core/extract/extractors/template-literal.d.ts.map +1 -0
- package/dist/core/extract/extractors/template-literal.js +8 -0
- package/dist/core/extract/extractors/template-literal.js.map +1 -0
- package/dist/core/extract/extractors/tuple.d.ts +4 -0
- package/dist/core/extract/extractors/tuple.d.ts.map +1 -0
- package/dist/core/extract/extractors/tuple.js +6 -0
- package/dist/core/extract/extractors/tuple.js.map +1 -0
- package/dist/core/extract/extractors/undefined.d.ts +3 -0
- package/dist/core/extract/extractors/undefined.d.ts.map +1 -0
- package/dist/core/extract/extractors/undefined.js +2 -0
- package/dist/core/extract/extractors/undefined.js.map +1 -0
- package/dist/core/extract/extractors/union.d.ts +4 -0
- package/dist/core/extract/extractors/union.d.ts.map +1 -0
- package/dist/core/extract/extractors/union.js +44 -0
- package/dist/core/extract/extractors/union.js.map +1 -0
- package/dist/core/extract/extractors/unknown.d.ts +3 -0
- package/dist/core/extract/extractors/unknown.d.ts.map +1 -0
- package/dist/core/extract/extractors/unknown.js +2 -0
- package/dist/core/extract/extractors/unknown.js.map +1 -0
- package/dist/core/extract/extractors/void.d.ts +3 -0
- package/dist/core/extract/extractors/void.d.ts.map +1 -0
- package/dist/core/extract/extractors/void.js +2 -0
- package/dist/core/extract/extractors/void.js.map +1 -0
- package/dist/core/extract/fallback.d.ts +4 -0
- package/dist/core/extract/fallback.d.ts.map +1 -0
- package/dist/core/extract/fallback.js +9 -0
- package/dist/core/extract/fallback.js.map +1 -0
- package/dist/core/extract/index.d.ts +11 -0
- package/dist/core/extract/index.d.ts.map +1 -0
- package/dist/core/extract/index.js +11 -0
- package/dist/core/extract/index.js.map +1 -0
- package/dist/core/extract/registry.d.ts +59 -0
- package/dist/core/extract/registry.d.ts.map +1 -0
- package/dist/core/extract/registry.js +152 -0
- package/dist/core/extract/registry.js.map +1 -0
- package/dist/core/extract/types.d.ts +114 -0
- package/dist/core/extract/types.d.ts.map +1 -0
- package/dist/core/extract/types.js +2 -0
- package/dist/core/extract/types.js.map +1 -0
- package/dist/core/iife.d.ts +38 -0
- package/dist/core/iife.d.ts.map +1 -0
- package/dist/core/iife.js +59 -0
- package/dist/core/iife.js.map +1 -0
- package/dist/core/pipeline.d.ts +26 -0
- package/dist/core/pipeline.d.ts.map +1 -0
- package/dist/core/pipeline.js +42 -0
- package/dist/core/pipeline.js.map +1 -0
- package/dist/core/types.d.ts +352 -0
- package/dist/core/types.d.ts.map +1 -0
- package/dist/core/types.js +6 -0
- package/dist/core/types.js.map +1 -0
- package/dist/discovery.d.ts +14 -0
- package/dist/discovery.d.ts.map +1 -0
- package/dist/discovery.js +40 -0
- package/dist/discovery.js.map +1 -0
- package/dist/index.d.ts +4 -674
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +2 -2553
- package/dist/index.js.map +1 -0
- package/dist/loader.d.ts +24 -0
- package/dist/loader.d.ts.map +1 -0
- package/dist/loader.js +129 -0
- package/dist/loader.js.map +1 -0
- package/dist/static-filter.d.ts +7 -0
- package/dist/static-filter.d.ts.map +1 -0
- package/dist/static-filter.js +396 -0
- package/dist/static-filter.js.map +1 -0
- package/dist/unplugin/bun.d.ts +3 -0
- package/dist/unplugin/bun.d.ts.map +1 -0
- package/dist/unplugin/bun.js +3 -0
- package/dist/unplugin/bun.js.map +1 -0
- package/dist/unplugin/esbuild.d.ts +3 -0
- package/dist/unplugin/esbuild.d.ts.map +1 -0
- package/dist/unplugin/esbuild.js +3 -0
- package/dist/unplugin/esbuild.js.map +1 -0
- package/dist/unplugin/farm.d.ts +3 -0
- package/dist/unplugin/farm.d.ts.map +1 -0
- package/dist/unplugin/farm.js +3 -0
- package/dist/unplugin/farm.js.map +1 -0
- package/dist/unplugin/index.d.ts +4 -0
- package/dist/unplugin/index.d.ts.map +1 -0
- package/dist/unplugin/index.js +102 -0
- package/dist/unplugin/index.js.map +1 -0
- package/dist/unplugin/rolldown.d.ts +3 -0
- package/dist/unplugin/rolldown.d.ts.map +1 -0
- package/dist/unplugin/rolldown.js +3 -0
- package/dist/unplugin/rolldown.js.map +1 -0
- package/dist/unplugin/rollup.d.ts +3 -0
- package/dist/unplugin/rollup.d.ts.map +1 -0
- package/dist/unplugin/rollup.js +3 -0
- package/dist/unplugin/rollup.js.map +1 -0
- package/dist/unplugin/rspack.d.ts +3 -0
- package/dist/unplugin/rspack.d.ts.map +1 -0
- package/dist/unplugin/rspack.js +3 -0
- package/dist/unplugin/rspack.js.map +1 -0
- package/dist/unplugin/transform.d.ts +36 -0
- package/dist/unplugin/transform.d.ts.map +1 -0
- package/dist/unplugin/transform.js +292 -0
- package/dist/unplugin/transform.js.map +1 -0
- package/dist/unplugin/types.d.ts +67 -0
- package/dist/unplugin/types.d.ts.map +1 -0
- package/dist/unplugin/types.js +19 -0
- package/dist/unplugin/types.js.map +1 -0
- package/dist/unplugin/virtual.d.ts +24 -0
- package/dist/unplugin/virtual.d.ts.map +1 -0
- package/dist/unplugin/virtual.js +62 -0
- package/dist/unplugin/virtual.js.map +1 -0
- package/dist/unplugin/vite.d.ts +3 -0
- package/dist/unplugin/vite.d.ts.map +1 -0
- package/dist/unplugin/vite.js +3 -0
- package/dist/unplugin/vite.js.map +1 -0
- package/dist/unplugin/webpack.d.ts +3 -0
- package/dist/unplugin/webpack.d.ts.map +1 -0
- package/dist/unplugin/webpack.js +3 -0
- package/dist/unplugin/webpack.js.map +1 -0
- package/package.json +110 -51
- package/dist/index.mjs +0 -2539
- package/dist/standalone.d.ts +0 -386
- package/dist/standalone.js +0 -540
- package/dist/standalone.mjs +0 -531
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"void.js","sourceRoot":"","sources":["../../../../src/core/codegen/schemas/void.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAClC,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAE/C,MAAM,UAAU,QAAQ,CAAC,GAAW,EAAE,CAAU;IAC9C,OAAO,GAAG,IAAI,CAAA;SACP,CAAC,CAAC,KAAK;QACR,WAAW,CAAC,CAAC,EAAE,MAAM,CAAC;;GAE3B,IAAI,CAAC;AACR,CAAC;AAED,MAAM,UAAU,QAAQ,CAAC,GAAW,EAAE,CAAU;IAC9C,OAAO,GAAG,CAAC,CAAC,KAAK,cAAc,CAAC;AAClC,CAAC"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { SchemaIR } from "../types.js";
|
|
2
|
+
import type { CodeGenContext, SlowGen } from "./context.js";
|
|
3
|
+
export declare function createSlowGen(inputExpr: string, outputExpr: string, pathExpr: string, issuesVar: string, ctx: CodeGenContext): SlowGen;
|
|
4
|
+
export declare function generateSlow(ir: SchemaIR, g: SlowGen): string;
|
|
5
|
+
//# sourceMappingURL=slow-path.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"slow-path.d.ts","sourceRoot":"","sources":["../../../src/core/codegen/slow-path.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,KAAK,EAAE,cAAc,EAAE,OAAO,EAAiB,MAAM,cAAc,CAAC;AA+F3E,wBAAgB,aAAa,CAC3B,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,EACjB,GAAG,EAAE,cAAc,GAClB,OAAO,CAuBT;AAID,wBAAgB,YAAY,CAAC,EAAE,EAAE,QAAQ,EAAE,CAAC,EAAE,OAAO,GAAG,MAAM,CAO7D"}
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
import { emitRegex, emitSet, emitTemp } from "./context.js";
|
|
2
|
+
import { slowAny } from "./schemas/any.js";
|
|
3
|
+
import { slowArray } from "./schemas/array.js";
|
|
4
|
+
import { slowBigInt } from "./schemas/bigint.js";
|
|
5
|
+
import { slowBoolean } from "./schemas/boolean.js";
|
|
6
|
+
import { slowCatch } from "./schemas/catch.js";
|
|
7
|
+
import { slowDate } from "./schemas/date.js";
|
|
8
|
+
import { slowDefault } from "./schemas/default.js";
|
|
9
|
+
import { slowDiscriminatedUnion } from "./schemas/discriminated-union.js";
|
|
10
|
+
import { slowEffect } from "./schemas/effect.js";
|
|
11
|
+
import { slowEnum } from "./schemas/enum.js";
|
|
12
|
+
import { slowFallback } from "./schemas/fallback.js";
|
|
13
|
+
import { slowFile } from "./schemas/file.js";
|
|
14
|
+
import { slowIntersection } from "./schemas/intersection.js";
|
|
15
|
+
import { slowLiteral } from "./schemas/literal.js";
|
|
16
|
+
import { slowMap } from "./schemas/map.js";
|
|
17
|
+
import { slowNan } from "./schemas/nan.js";
|
|
18
|
+
import { slowNever } from "./schemas/never.js";
|
|
19
|
+
import { slowNull } from "./schemas/null.js";
|
|
20
|
+
import { slowNullable } from "./schemas/nullable.js";
|
|
21
|
+
import { slowNumber } from "./schemas/number.js";
|
|
22
|
+
import { slowObject } from "./schemas/object.js";
|
|
23
|
+
import { slowOptional } from "./schemas/optional.js";
|
|
24
|
+
import { slowPipe } from "./schemas/pipe.js";
|
|
25
|
+
import { slowReadonly } from "./schemas/readonly.js";
|
|
26
|
+
import { slowRecord } from "./schemas/record.js";
|
|
27
|
+
import { slowRecursiveRef } from "./schemas/recursive-ref.js";
|
|
28
|
+
import { slowSet } from "./schemas/set.js";
|
|
29
|
+
import { slowString } from "./schemas/string.js";
|
|
30
|
+
import { slowStringBool } from "./schemas/string-bool.js";
|
|
31
|
+
import { slowSymbol } from "./schemas/symbol.js";
|
|
32
|
+
import { slowTemplateLiteral } from "./schemas/template-literal.js";
|
|
33
|
+
import { slowTuple } from "./schemas/tuple.js";
|
|
34
|
+
import { slowUndefined } from "./schemas/undefined.js";
|
|
35
|
+
import { slowUnion } from "./schemas/union.js";
|
|
36
|
+
import { slowUnknown } from "./schemas/unknown.js";
|
|
37
|
+
import { slowVoid } from "./schemas/void.js";
|
|
38
|
+
// ─── Typed registry ─────────────────────────────────────────────────────────
|
|
39
|
+
// Adding a new SchemaIR type without registering a generator here causes a
|
|
40
|
+
// compile error, preventing the silent-missing-case bugs that plagued the old
|
|
41
|
+
// switch-based dispatch.
|
|
42
|
+
const slowRegistry = {
|
|
43
|
+
// Primitives (order follows SchemaIR union in types.ts)
|
|
44
|
+
string: slowString,
|
|
45
|
+
number: slowNumber,
|
|
46
|
+
boolean: slowBoolean,
|
|
47
|
+
bigint: slowBigInt,
|
|
48
|
+
date: slowDate,
|
|
49
|
+
symbol: slowSymbol,
|
|
50
|
+
null: slowNull,
|
|
51
|
+
undefined: slowUndefined,
|
|
52
|
+
void: slowVoid,
|
|
53
|
+
nan: slowNan,
|
|
54
|
+
never: slowNever,
|
|
55
|
+
any: slowAny,
|
|
56
|
+
unknown: slowUnknown,
|
|
57
|
+
literal: slowLiteral,
|
|
58
|
+
enum: slowEnum,
|
|
59
|
+
// Containers
|
|
60
|
+
object: slowObject,
|
|
61
|
+
array: slowArray,
|
|
62
|
+
tuple: slowTuple,
|
|
63
|
+
record: slowRecord,
|
|
64
|
+
set: slowSet,
|
|
65
|
+
map: slowMap,
|
|
66
|
+
file: slowFile,
|
|
67
|
+
// Unions & Intersections
|
|
68
|
+
union: slowUnion,
|
|
69
|
+
discriminatedUnion: slowDiscriminatedUnion,
|
|
70
|
+
intersection: slowIntersection,
|
|
71
|
+
// Modifiers
|
|
72
|
+
optional: slowOptional,
|
|
73
|
+
nullable: slowNullable,
|
|
74
|
+
readonly: slowReadonly,
|
|
75
|
+
default: slowDefault,
|
|
76
|
+
pipe: slowPipe,
|
|
77
|
+
// Effects
|
|
78
|
+
effect: slowEffect,
|
|
79
|
+
// Special
|
|
80
|
+
templateLiteral: slowTemplateLiteral,
|
|
81
|
+
catch: slowCatch,
|
|
82
|
+
fallback: slowFallback,
|
|
83
|
+
recursiveRef: slowRecursiveRef,
|
|
84
|
+
stringBool: slowStringBool,
|
|
85
|
+
};
|
|
86
|
+
// ─── Factory ─────────────────────────────────────────────────────────────────
|
|
87
|
+
// Lives here (not in context.ts) to avoid circular imports:
|
|
88
|
+
// visit() → generateSlow() → imports from context.ts
|
|
89
|
+
export function createSlowGen(inputExpr, outputExpr, pathExpr, issuesVar, ctx) {
|
|
90
|
+
return {
|
|
91
|
+
input: inputExpr,
|
|
92
|
+
output: outputExpr,
|
|
93
|
+
path: pathExpr,
|
|
94
|
+
issues: issuesVar,
|
|
95
|
+
ctx,
|
|
96
|
+
visit(ir, overrides) {
|
|
97
|
+
return generateSlow(ir, createSlowGen(overrides?.input ?? inputExpr, overrides?.output ?? outputExpr, overrides?.path ?? pathExpr, overrides?.issues ?? issuesVar, ctx));
|
|
98
|
+
},
|
|
99
|
+
temp: (prefix) => emitTemp(ctx, prefix),
|
|
100
|
+
regex: (prefix, pattern, flags) => emitRegex(ctx, prefix, pattern, flags),
|
|
101
|
+
set: (prefix, values) => emitSet(ctx, prefix, values),
|
|
102
|
+
};
|
|
103
|
+
}
|
|
104
|
+
// ─── Dispatch ────────────────────────────────────────────────────────────────
|
|
105
|
+
export function generateSlow(ir, g) {
|
|
106
|
+
// Surface the node's schema-level error message to issue emission. visit()
|
|
107
|
+
// always builds a fresh context, so typeMsg never leaks into child nodes.
|
|
108
|
+
const gen0 = ir.typeMessage !== g.typeMsg ? { ...g, typeMsg: ir.typeMessage } : g;
|
|
109
|
+
const gen = slowRegistry[ir.type];
|
|
110
|
+
// biome-ignore lint/suspicious/noExplicitAny: registry dispatch requires type erasure at call site
|
|
111
|
+
return gen(ir, gen0);
|
|
112
|
+
}
|
|
113
|
+
//# sourceMappingURL=slow-path.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"slow-path.js","sourceRoot":"","sources":["../../../src/core/codegen/slow-path.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAC5D,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAC3C,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC/C,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACjD,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACnD,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC/C,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAC7C,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACnD,OAAO,EAAE,sBAAsB,EAAE,MAAM,kCAAkC,CAAC;AAC1E,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACjD,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAC7C,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AACrD,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAC7C,OAAO,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAC7D,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACnD,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAC3C,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAC3C,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC/C,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAC7C,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AACrD,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACjD,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACjD,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AACrD,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAC7C,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AACrD,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAC9D,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAC3C,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACjD,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC1D,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACjD,OAAO,EAAE,mBAAmB,EAAE,MAAM,+BAA+B,CAAC;AACpE,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC/C,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACvD,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC/C,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACnD,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAE7C,+EAA+E;AAC/E,2EAA2E;AAC3E,8EAA8E;AAC9E,yBAAyB;AAEzB,MAAM,YAAY,GAAG;IACnB,wDAAwD;IACxD,MAAM,EAAE,UAAU;IAClB,MAAM,EAAE,UAAU;IAClB,OAAO,EAAE,WAAW;IACpB,MAAM,EAAE,UAAU;IAClB,IAAI,EAAE,QAAQ;IACd,MAAM,EAAE,UAAU;IAClB,IAAI,EAAE,QAAQ;IACd,SAAS,EAAE,aAAa;IACxB,IAAI,EAAE,QAAQ;IACd,GAAG,EAAE,OAAO;IACZ,KAAK,EAAE,SAAS;IAChB,GAAG,EAAE,OAAO;IACZ,OAAO,EAAE,WAAW;IACpB,OAAO,EAAE,WAAW;IACpB,IAAI,EAAE,QAAQ;IACd,aAAa;IACb,MAAM,EAAE,UAAU;IAClB,KAAK,EAAE,SAAS;IAChB,KAAK,EAAE,SAAS;IAChB,MAAM,EAAE,UAAU;IAClB,GAAG,EAAE,OAAO;IACZ,GAAG,EAAE,OAAO;IACZ,IAAI,EAAE,QAAQ;IACd,yBAAyB;IACzB,KAAK,EAAE,SAAS;IAChB,kBAAkB,EAAE,sBAAsB;IAC1C,YAAY,EAAE,gBAAgB;IAC9B,YAAY;IACZ,QAAQ,EAAE,YAAY;IACtB,QAAQ,EAAE,YAAY;IACtB,QAAQ,EAAE,YAAY;IACtB,OAAO,EAAE,WAAW;IACpB,IAAI,EAAE,QAAQ;IACd,UAAU;IACV,MAAM,EAAE,UAAU;IAClB,UAAU;IACV,eAAe,EAAE,mBAAmB;IACpC,KAAK,EAAE,SAAS;IAChB,QAAQ,EAAE,YAAY;IACtB,YAAY,EAAE,gBAAgB;IAC9B,UAAU,EAAE,cAAc;CAG3B,CAAC;AAEF,gFAAgF;AAChF,4DAA4D;AAC5D,qDAAqD;AAErD,MAAM,UAAU,aAAa,CAC3B,SAAiB,EACjB,UAAkB,EAClB,QAAgB,EAChB,SAAiB,EACjB,GAAmB;IAEnB,OAAO;QACL,KAAK,EAAE,SAAS;QAChB,MAAM,EAAE,UAAU;QAClB,IAAI,EAAE,QAAQ;QACd,MAAM,EAAE,SAAS;QACjB,GAAG;QACH,KAAK,CAAC,EAAE,EAAE,SAAS;YACjB,OAAO,YAAY,CACjB,EAAE,EACF,aAAa,CACX,SAAS,EAAE,KAAK,IAAI,SAAS,EAC7B,SAAS,EAAE,MAAM,IAAI,UAAU,EAC/B,SAAS,EAAE,IAAI,IAAI,QAAQ,EAC3B,SAAS,EAAE,MAAM,IAAI,SAAS,EAC9B,GAAG,CACJ,CACF,CAAC;QACJ,CAAC;QACD,IAAI,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;QACvC,KAAK,EAAE,CAAC,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,CAAC,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,CAAC;QACzE,GAAG,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC;KACtD,CAAC;AACJ,CAAC;AAED,gFAAgF;AAEhF,MAAM,UAAU,YAAY,CAAC,EAAY,EAAE,CAAU;IACnD,2EAA2E;IAC3E,0EAA0E;IAC1E,MAAM,IAAI,GAAG,EAAE,CAAC,WAAW,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,OAAO,EAAE,EAAE,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IAClF,MAAM,GAAG,GAAG,YAAY,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;IAClC,mGAAmG;IACnG,OAAQ,GAAW,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;AAChC,CAAC"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Well-known regex sources hosted in the virtual module "virtual:zod-compiler/runtime".
|
|
3
|
+
*
|
|
4
|
+
* In lean mode (unplugin), `g.regex()` consults this registry and emits a reference
|
|
5
|
+
* like `__zaReEmail` instead of declaring `var __re_email_*=new RegExp(...)`.
|
|
6
|
+
* The bundler then deduplicates the regex literal across all transformed files.
|
|
7
|
+
*
|
|
8
|
+
* Pattern sources are matched verbatim (string equality). Add new entries as Zod
|
|
9
|
+
* exposes additional well-known formats and we want bundle-wide dedup.
|
|
10
|
+
*/
|
|
11
|
+
/** Zod v4's email regex source (string.ts uses this directly when format === "email"). */
|
|
12
|
+
export declare const EMAIL_REGEX_SOURCE: string;
|
|
13
|
+
/** Fallback UUID regex used when the extractor doesn't provide a pattern (e.g. in unit tests). */
|
|
14
|
+
export declare const UUID_REGEX_SOURCE = "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$";
|
|
15
|
+
export interface WellKnownRegex {
|
|
16
|
+
/** Stable virtual-module export name. Always starts with "__zaRe". */
|
|
17
|
+
name: string;
|
|
18
|
+
/** Pattern source string (verbatim match against `g.regex()` 2nd argument). */
|
|
19
|
+
source: string;
|
|
20
|
+
}
|
|
21
|
+
export declare const WELL_KNOWN_REGEXES: readonly WellKnownRegex[];
|
|
22
|
+
/**
|
|
23
|
+
* Look up a well-known regex by its pattern source string.
|
|
24
|
+
* Returns the virtual-module export name or null if the pattern is user-defined.
|
|
25
|
+
*/
|
|
26
|
+
export declare function lookupWellKnownRegex(source: string): string | null;
|
|
27
|
+
//# sourceMappingURL=well-known-regex.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"well-known-regex.d.ts","sourceRoot":"","sources":["../../../src/core/codegen/well-known-regex.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,0FAA0F;AAC1F,eAAO,MAAM,kBAAkB,QAA+G,CAAC;AAE/I,kGAAkG;AAClG,eAAO,MAAM,iBAAiB,2KAC4I,CAAC;AAE3K,MAAM,WAAW,cAAc;IAC7B,sEAAsE;IACtE,IAAI,EAAE,MAAM,CAAC;IACb,+EAA+E;IAC/E,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,eAAO,MAAM,kBAAkB,EAAE,SAAS,cAAc,EA6BvD,CAAC;AAMF;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAElE"}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Well-known regex sources hosted in the virtual module "virtual:zod-compiler/runtime".
|
|
3
|
+
*
|
|
4
|
+
* In lean mode (unplugin), `g.regex()` consults this registry and emits a reference
|
|
5
|
+
* like `__zaReEmail` instead of declaring `var __re_email_*=new RegExp(...)`.
|
|
6
|
+
* The bundler then deduplicates the regex literal across all transformed files.
|
|
7
|
+
*
|
|
8
|
+
* Pattern sources are matched verbatim (string equality). Add new entries as Zod
|
|
9
|
+
* exposes additional well-known formats and we want bundle-wide dedup.
|
|
10
|
+
*/
|
|
11
|
+
/** Zod v4's email regex source (string.ts uses this directly when format === "email"). */
|
|
12
|
+
export const EMAIL_REGEX_SOURCE = String.raw `^(?!\.)(?!.*\.\.)([A-Za-z0-9_'+\-\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\-]*\.)+[A-Za-z]{2,}$`;
|
|
13
|
+
/** Fallback UUID regex used when the extractor doesn't provide a pattern (e.g. in unit tests). */
|
|
14
|
+
export const UUID_REGEX_SOURCE = "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$";
|
|
15
|
+
export const WELL_KNOWN_REGEXES = [
|
|
16
|
+
{ name: "__zaReEmail", source: EMAIL_REGEX_SOURCE },
|
|
17
|
+
{ name: "__zaReUuid", source: UUID_REGEX_SOURCE },
|
|
18
|
+
{ name: "__zaReCuid", source: "^[cC][^\\s-]{8,}$" },
|
|
19
|
+
{ name: "__zaReCuid2", source: "^[0-9a-z]+$" },
|
|
20
|
+
{ name: "__zaReUlid", source: "^[0-9A-HJKMNP-TV-Za-hjkmnp-tv-z]{26}$" },
|
|
21
|
+
{ name: "__zaReNanoid", source: "^[a-zA-Z0-9_-]{21}$" },
|
|
22
|
+
{ name: "__zaReXid", source: "^[0-9a-vA-V]{20}$" },
|
|
23
|
+
{ name: "__zaReKsuid", source: "^[A-Za-z0-9]{27}$" },
|
|
24
|
+
{
|
|
25
|
+
name: "__zaReIpv4",
|
|
26
|
+
source: "^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$",
|
|
27
|
+
},
|
|
28
|
+
{
|
|
29
|
+
name: "__zaReIpv6",
|
|
30
|
+
source: "^(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:))$",
|
|
31
|
+
},
|
|
32
|
+
{
|
|
33
|
+
name: "__zaReBase64",
|
|
34
|
+
source: "^$|^(?:[0-9a-zA-Z+/]{4})*(?:(?:[0-9a-zA-Z+/]{2}==)|(?:[0-9a-zA-Z+/]{3}=))?$",
|
|
35
|
+
},
|
|
36
|
+
{ name: "__zaReBase64Url", source: "^[A-Za-z0-9_-]*$" },
|
|
37
|
+
{ name: "__zaReE164", source: "^\\+[1-9]\\d{6,14}$" },
|
|
38
|
+
{
|
|
39
|
+
name: "__zaReGuid",
|
|
40
|
+
source: "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$",
|
|
41
|
+
},
|
|
42
|
+
];
|
|
43
|
+
const SOURCE_TO_NAME = new Map(WELL_KNOWN_REGEXES.map((r) => [r.source, r.name]));
|
|
44
|
+
/**
|
|
45
|
+
* Look up a well-known regex by its pattern source string.
|
|
46
|
+
* Returns the virtual-module export name or null if the pattern is user-defined.
|
|
47
|
+
*/
|
|
48
|
+
export function lookupWellKnownRegex(source) {
|
|
49
|
+
return SOURCE_TO_NAME.get(source) ?? null;
|
|
50
|
+
}
|
|
51
|
+
//# sourceMappingURL=well-known-regex.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"well-known-regex.js","sourceRoot":"","sources":["../../../src/core/codegen/well-known-regex.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,0FAA0F;AAC1F,MAAM,CAAC,MAAM,kBAAkB,GAAG,MAAM,CAAC,GAAG,CAAA,kGAAkG,CAAC;AAE/I,kGAAkG;AAClG,MAAM,CAAC,MAAM,iBAAiB,GAC5B,wKAAwK,CAAC;AAS3K,MAAM,CAAC,MAAM,kBAAkB,GAA8B;IAC3D,EAAE,IAAI,EAAE,aAAa,EAAE,MAAM,EAAE,kBAAkB,EAAE;IACnD,EAAE,IAAI,EAAE,YAAY,EAAE,MAAM,EAAE,iBAAiB,EAAE;IACjD,EAAE,IAAI,EAAE,YAAY,EAAE,MAAM,EAAE,mBAAmB,EAAE;IACnD,EAAE,IAAI,EAAE,aAAa,EAAE,MAAM,EAAE,aAAa,EAAE;IAC9C,EAAE,IAAI,EAAE,YAAY,EAAE,MAAM,EAAE,uCAAuC,EAAE;IACvE,EAAE,IAAI,EAAE,cAAc,EAAE,MAAM,EAAE,qBAAqB,EAAE;IACvD,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE,mBAAmB,EAAE;IAClD,EAAE,IAAI,EAAE,aAAa,EAAE,MAAM,EAAE,mBAAmB,EAAE;IACpD;QACE,IAAI,EAAE,YAAY;QAClB,MAAM,EACJ,sHAAsH;KACzH;IACD;QACE,IAAI,EAAE,YAAY;QAClB,MAAM,EACJ,8XAA8X;KACjY;IACD;QACE,IAAI,EAAE,cAAc;QACpB,MAAM,EAAE,6EAA6E;KACtF;IACD,EAAE,IAAI,EAAE,iBAAiB,EAAE,MAAM,EAAE,kBAAkB,EAAE;IACvD,EAAE,IAAI,EAAE,YAAY,EAAE,MAAM,EAAE,qBAAqB,EAAE;IACrD;QACE,IAAI,EAAE,YAAY;QAClB,MAAM,EAAE,iFAAiF;KAC1F;CACF,CAAC;AAEF,MAAM,cAAc,GAAgC,IAAI,GAAG,CACzD,kBAAkB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAClD,CAAC;AAEF;;;GAGG;AACH,MAAM,UAAU,oBAAoB,CAAC,MAAc;IACjD,OAAO,cAAc,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC;AAC5C,CAAC"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import type { output, ZodType } from "zod";
|
|
2
|
+
import type { CompiledSchema } from "./types.js";
|
|
3
|
+
/**
|
|
4
|
+
* Compile a Zod schema into an optimized validator.
|
|
5
|
+
*
|
|
6
|
+
* At dev-time, falls back to Zod's runtime validation via Object.create,
|
|
7
|
+
* preserving full Zod compatibility (e.g. `_zod`, `shape`, `safeParseAsync`).
|
|
8
|
+
* After `npx zod-compiler generate`, import from the `.compiled.ts` file instead.
|
|
9
|
+
*
|
|
10
|
+
* The return type is `T & CompiledSchema<output<T>>`, preserving the original
|
|
11
|
+
* Zod schema type for compatibility with libraries like `@hono/zod-validator`.
|
|
12
|
+
*/
|
|
13
|
+
export declare function compile<T extends ZodType>(zodSchema: T): T & CompiledSchema<output<T>>;
|
|
14
|
+
/**
|
|
15
|
+
* Check if a value is a CompiledSchema created by compile().
|
|
16
|
+
* Used by the CLI to discover schemas in source files.
|
|
17
|
+
*/
|
|
18
|
+
export declare function isCompiledSchema(value: unknown): value is CompiledSchema<unknown>;
|
|
19
|
+
//# sourceMappingURL=compile.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"compile.d.ts","sourceRoot":"","sources":["../../src/core/compile.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,KAAK,CAAC;AAC3C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAkBjD;;;;;;;;;GASG;AACH,wBAAgB,OAAO,CAAC,CAAC,SAAS,OAAO,EAAE,SAAS,EAAE,CAAC,GAAG,CAAC,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAItF;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,cAAc,CAAC,OAAO,CAAC,CAEjF"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
const COMPILED_MARKER = Symbol.for("zod-compiler:compiled");
|
|
2
|
+
/**
|
|
3
|
+
* Dev-time fallback: wraps Zod schema via Object.create to provide the CompiledSchema interface
|
|
4
|
+
* while preserving full Zod compatibility (e.g. `_zod`, `shape`, `safeParseAsync`).
|
|
5
|
+
*
|
|
6
|
+
* parse/safeParse/parseAsync/safeParseAsync fall through to the original Zod schema via prototype.
|
|
7
|
+
* Only `schema` is added as an own property.
|
|
8
|
+
*/
|
|
9
|
+
function createFallback(zodSchema) {
|
|
10
|
+
const facade = Object.create(zodSchema);
|
|
11
|
+
// Retained for CLI emitter discovery: (__src_X as any).schema resolves the original Zod schema.
|
|
12
|
+
facade["schema"] = zodSchema;
|
|
13
|
+
return facade;
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Compile a Zod schema into an optimized validator.
|
|
17
|
+
*
|
|
18
|
+
* At dev-time, falls back to Zod's runtime validation via Object.create,
|
|
19
|
+
* preserving full Zod compatibility (e.g. `_zod`, `shape`, `safeParseAsync`).
|
|
20
|
+
* After `npx zod-compiler generate`, import from the `.compiled.ts` file instead.
|
|
21
|
+
*
|
|
22
|
+
* The return type is `T & CompiledSchema<output<T>>`, preserving the original
|
|
23
|
+
* Zod schema type for compatibility with libraries like `@hono/zod-validator`.
|
|
24
|
+
*/
|
|
25
|
+
export function compile(zodSchema) {
|
|
26
|
+
const result = createFallback(zodSchema);
|
|
27
|
+
Object.defineProperty(result, COMPILED_MARKER, { value: true, enumerable: false });
|
|
28
|
+
return result;
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Check if a value is a CompiledSchema created by compile().
|
|
32
|
+
* Used by the CLI to discover schemas in source files.
|
|
33
|
+
*/
|
|
34
|
+
export function isCompiledSchema(value) {
|
|
35
|
+
return typeof value === "object" && value !== null && COMPILED_MARKER in value;
|
|
36
|
+
}
|
|
37
|
+
//# sourceMappingURL=compile.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"compile.js","sourceRoot":"","sources":["../../src/core/compile.ts"],"names":[],"mappings":"AAGA,MAAM,eAAe,GAAG,MAAM,CAAC,GAAG,CAAC,uBAAuB,CAAC,CAAC;AAE5D;;;;;;GAMG;AACH,SAAS,cAAc,CAAI,SAAkB;IAC3C,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,SAAmB,CAAsB,CAAC;IACvE,gGAAgG;IAC/F,MAA6C,CAAC,QAAQ,CAAC,GAAG,SAAS,CAAC;IACrE,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,OAAO,CAAoB,SAAY;IACrD,MAAM,MAAM,GAAG,cAAc,CAAY,SAAS,CAAC,CAAC;IACpD,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,eAAe,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC,CAAC;IACnF,OAAO,MAAuC,CAAC;AACjD,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,gBAAgB,CAAC,KAAc;IAC7C,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,eAAe,IAAI,KAAK,CAAC;AACjF,CAAC"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Schema diagnostic utilities for the `check` command.
|
|
3
|
+
* Walks SchemaIR in a single pass and collects per-node diagnostic info.
|
|
4
|
+
*/
|
|
5
|
+
import type { SchemaIR } from "./types.js";
|
|
6
|
+
export type NodeStatus = "compiled" | "fallback";
|
|
7
|
+
export interface DiagnosticNode {
|
|
8
|
+
/** SchemaIR type (e.g. "string", "object", "fallback") */
|
|
9
|
+
type: string;
|
|
10
|
+
/** Dot-separated path from root (e.g. ".name", ".addresses[]") */
|
|
11
|
+
path: string;
|
|
12
|
+
/** Whether this node is compiled or falls back to Zod */
|
|
13
|
+
status: NodeStatus;
|
|
14
|
+
/** Fallback reason when status is "fallback" */
|
|
15
|
+
reason?: string;
|
|
16
|
+
/** Actionable hint for fixing the fallback */
|
|
17
|
+
hint?: string;
|
|
18
|
+
/** Child diagnostic nodes */
|
|
19
|
+
children: DiagnosticNode[];
|
|
20
|
+
}
|
|
21
|
+
export interface DiagnosticResult {
|
|
22
|
+
/** Root diagnostic tree */
|
|
23
|
+
root: DiagnosticNode;
|
|
24
|
+
/** Total leaf node count */
|
|
25
|
+
total: number;
|
|
26
|
+
/** Number of compiled leaf nodes */
|
|
27
|
+
compilable: number;
|
|
28
|
+
/** Coverage percentage (0-100) */
|
|
29
|
+
coveragePct: number;
|
|
30
|
+
/** Whether the schema is eligible for Fast Path */
|
|
31
|
+
fastPathEligible: boolean;
|
|
32
|
+
/** Reason Fast Path is ineligible (when fastPathEligible is false) */
|
|
33
|
+
fastPathBlocker?: string;
|
|
34
|
+
/** Flat list of fallback entries for summary display */
|
|
35
|
+
fallbacks: {
|
|
36
|
+
reason: string;
|
|
37
|
+
path: string;
|
|
38
|
+
hint: string;
|
|
39
|
+
}[];
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Diagnose a SchemaIR in a single pass.
|
|
43
|
+
* Returns a diagnostic tree with coverage stats, Fast Path eligibility, and actionable hints.
|
|
44
|
+
*/
|
|
45
|
+
export declare function diagnoseSchema(ir: SchemaIR): DiagnosticResult;
|
|
46
|
+
//# sourceMappingURL=diagnostic.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"diagnostic.d.ts","sourceRoot":"","sources":["../../src/core/diagnostic.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAI3C,MAAM,MAAM,UAAU,GAAG,UAAU,GAAG,UAAU,CAAC;AAEjD,MAAM,WAAW,cAAc;IAC7B,0DAA0D;IAC1D,IAAI,EAAE,MAAM,CAAC;IACb,kEAAkE;IAClE,IAAI,EAAE,MAAM,CAAC;IACb,yDAAyD;IACzD,MAAM,EAAE,UAAU,CAAC;IACnB,gDAAgD;IAChD,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,8CAA8C;IAC9C,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,6BAA6B;IAC7B,QAAQ,EAAE,cAAc,EAAE,CAAC;CAC5B;AAED,MAAM,WAAW,gBAAgB;IAC/B,2BAA2B;IAC3B,IAAI,EAAE,cAAc,CAAC;IACrB,4BAA4B;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,oCAAoC;IACpC,UAAU,EAAE,MAAM,CAAC;IACnB,kCAAkC;IAClC,WAAW,EAAE,MAAM,CAAC;IACpB,mDAAmD;IACnD,gBAAgB,EAAE,OAAO,CAAC;IAC1B,sEAAsE;IACtE,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,wDAAwD;IACxD,SAAS,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;CAC7D;AA6KD;;;GAGG;AACH,wBAAgB,cAAc,CAAC,EAAE,EAAE,QAAQ,GAAG,gBAAgB,CAgB7D"}
|
|
@@ -0,0 +1,174 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Schema diagnostic utilities for the `check` command.
|
|
3
|
+
* Walks SchemaIR in a single pass and collects per-node diagnostic info.
|
|
4
|
+
*/
|
|
5
|
+
// ─── Fast Path Eligibility ──────────────────────────────────────────────────
|
|
6
|
+
/** Schema types that block Fast Path eligibility. */
|
|
7
|
+
const FAST_PATH_BLOCKERS = new Set(["fallback", "effect", "recursiveRef", "stringBool"]);
|
|
8
|
+
/** Check if a single node blocks Fast Path (without recursing). */
|
|
9
|
+
function detectFastPathBlocker(ir) {
|
|
10
|
+
if (FAST_PATH_BLOCKERS.has(ir.type)) {
|
|
11
|
+
return ir.type === "fallback" ? `fallback (${ir.reason})` : ir.type;
|
|
12
|
+
}
|
|
13
|
+
if ("coerce" in ir && ir.coerce) {
|
|
14
|
+
return `coerce (${ir.type})`;
|
|
15
|
+
}
|
|
16
|
+
// Value-mutating string checks make the schema slow-path only: overwrite
|
|
17
|
+
// effects (.trim()/.toLowerCase()) rewrite the value and url checks trim it,
|
|
18
|
+
// while the fast path returns input unchanged.
|
|
19
|
+
if (ir.type === "string") {
|
|
20
|
+
for (const check of ir.checks) {
|
|
21
|
+
if (check.kind === "overwrite_effect")
|
|
22
|
+
return "overwrite (.trim()/.toLowerCase())";
|
|
23
|
+
if (check.kind === "string_format" && check.format === "url")
|
|
24
|
+
return "url (trims value)";
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
return null;
|
|
28
|
+
}
|
|
29
|
+
// ─── Hint Generation ────────────────────────────────────────────────────────
|
|
30
|
+
const FALLBACK_HINTS = {
|
|
31
|
+
transform: "Extract transform into a separate post-processing step",
|
|
32
|
+
refine: "Replace .refine() with built-in checks (e.g. .min(), .max(), .regex())",
|
|
33
|
+
superRefine: "Replace .superRefine() with built-in checks if possible",
|
|
34
|
+
custom: "Replace z.custom() with a supported schema type",
|
|
35
|
+
lazy: "Use self-recursive lazy for automatic recursiveRef compilation",
|
|
36
|
+
unsupported: "This schema type is not yet supported by zod-compiler",
|
|
37
|
+
};
|
|
38
|
+
function getHint(reason) {
|
|
39
|
+
return FALLBACK_HINTS[reason] ?? "Check zod-compiler documentation for supported schemas";
|
|
40
|
+
}
|
|
41
|
+
// ─── Child Iteration (with path computation) ───────────────────────────────
|
|
42
|
+
/** Yields [childPath, childIR] pairs for a given SchemaIR node. */
|
|
43
|
+
function* iterChildren(ir, parentPath) {
|
|
44
|
+
switch (ir.type) {
|
|
45
|
+
case "object":
|
|
46
|
+
for (const [key, child] of Object.entries(ir.properties)) {
|
|
47
|
+
yield [`${parentPath}.${key}`, child];
|
|
48
|
+
}
|
|
49
|
+
break;
|
|
50
|
+
case "array":
|
|
51
|
+
yield [`${parentPath}[]`, ir.element];
|
|
52
|
+
break;
|
|
53
|
+
case "tuple":
|
|
54
|
+
for (const [i, item] of ir.items.entries()) {
|
|
55
|
+
yield [`${parentPath}[${i}]`, item];
|
|
56
|
+
}
|
|
57
|
+
if (ir.rest)
|
|
58
|
+
yield [`${parentPath}[...rest]`, ir.rest];
|
|
59
|
+
break;
|
|
60
|
+
case "record":
|
|
61
|
+
yield [`${parentPath}[key]`, ir.keyType];
|
|
62
|
+
yield [`${parentPath}[value]`, ir.valueType];
|
|
63
|
+
break;
|
|
64
|
+
case "set":
|
|
65
|
+
yield [`${parentPath}[element]`, ir.valueType];
|
|
66
|
+
break;
|
|
67
|
+
case "map":
|
|
68
|
+
yield [`${parentPath}[key]`, ir.keyType];
|
|
69
|
+
yield [`${parentPath}[value]`, ir.valueType];
|
|
70
|
+
break;
|
|
71
|
+
case "union":
|
|
72
|
+
case "discriminatedUnion":
|
|
73
|
+
for (const [i, opt] of ir.options.entries()) {
|
|
74
|
+
yield [`${parentPath}[${i}]`, opt];
|
|
75
|
+
}
|
|
76
|
+
break;
|
|
77
|
+
case "intersection":
|
|
78
|
+
yield [`${parentPath}[left]`, ir.left];
|
|
79
|
+
yield [`${parentPath}[right]`, ir.right];
|
|
80
|
+
break;
|
|
81
|
+
case "optional":
|
|
82
|
+
case "nullable":
|
|
83
|
+
case "readonly":
|
|
84
|
+
yield [parentPath, ir.inner];
|
|
85
|
+
break;
|
|
86
|
+
case "default":
|
|
87
|
+
case "catch":
|
|
88
|
+
yield [parentPath, ir.inner];
|
|
89
|
+
break;
|
|
90
|
+
case "pipe":
|
|
91
|
+
yield [`${parentPath}[in]`, ir.in];
|
|
92
|
+
yield [`${parentPath}[out]`, ir.out];
|
|
93
|
+
break;
|
|
94
|
+
case "effect":
|
|
95
|
+
yield [`${parentPath}[inner]`, ir.inner];
|
|
96
|
+
break;
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
function walkIR(ir, currentPath) {
|
|
100
|
+
// Fallback leaf
|
|
101
|
+
if (ir.type === "fallback") {
|
|
102
|
+
const hint = getHint(ir.reason);
|
|
103
|
+
const nodePath = currentPath || "(root)";
|
|
104
|
+
return {
|
|
105
|
+
node: {
|
|
106
|
+
type: ir.type,
|
|
107
|
+
path: nodePath,
|
|
108
|
+
status: "fallback",
|
|
109
|
+
reason: ir.reason,
|
|
110
|
+
hint,
|
|
111
|
+
children: [],
|
|
112
|
+
},
|
|
113
|
+
total: 1,
|
|
114
|
+
compilable: 0,
|
|
115
|
+
fallbacks: [{ reason: ir.reason, path: nodePath, hint }],
|
|
116
|
+
fastPathBlocker: `fallback (${ir.reason})`,
|
|
117
|
+
};
|
|
118
|
+
}
|
|
119
|
+
// Check if this node itself blocks Fast Path
|
|
120
|
+
let fastPathBlocker = detectFastPathBlocker(ir);
|
|
121
|
+
// Recurse into children
|
|
122
|
+
const children = [];
|
|
123
|
+
let total = 0;
|
|
124
|
+
let compilable = 0;
|
|
125
|
+
const fallbacks = [];
|
|
126
|
+
for (const [childPath, child] of iterChildren(ir, currentPath)) {
|
|
127
|
+
const r = walkIR(child, childPath);
|
|
128
|
+
children.push(r.node);
|
|
129
|
+
total += r.total;
|
|
130
|
+
compilable += r.compilable;
|
|
131
|
+
fallbacks.push(...r.fallbacks);
|
|
132
|
+
if (fastPathBlocker === null && r.fastPathBlocker !== null) {
|
|
133
|
+
fastPathBlocker = r.fastPathBlocker;
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
// Leaf node (no children produced by iterChildren)
|
|
137
|
+
if (children.length === 0) {
|
|
138
|
+
total = 1;
|
|
139
|
+
compilable = 1;
|
|
140
|
+
}
|
|
141
|
+
return {
|
|
142
|
+
node: {
|
|
143
|
+
type: ir.type,
|
|
144
|
+
path: currentPath || "(root)",
|
|
145
|
+
status: "compiled",
|
|
146
|
+
children,
|
|
147
|
+
},
|
|
148
|
+
total,
|
|
149
|
+
compilable,
|
|
150
|
+
fallbacks,
|
|
151
|
+
fastPathBlocker,
|
|
152
|
+
};
|
|
153
|
+
}
|
|
154
|
+
/**
|
|
155
|
+
* Diagnose a SchemaIR in a single pass.
|
|
156
|
+
* Returns a diagnostic tree with coverage stats, Fast Path eligibility, and actionable hints.
|
|
157
|
+
*/
|
|
158
|
+
export function diagnoseSchema(ir) {
|
|
159
|
+
const { node: root, total, compilable, fallbacks, fastPathBlocker } = walkIR(ir, "");
|
|
160
|
+
const coveragePct = total > 0 ? Math.round((compilable / total) * 100) : 100;
|
|
161
|
+
const result = {
|
|
162
|
+
root,
|
|
163
|
+
total,
|
|
164
|
+
compilable,
|
|
165
|
+
coveragePct,
|
|
166
|
+
fastPathEligible: fastPathBlocker === null,
|
|
167
|
+
fallbacks,
|
|
168
|
+
};
|
|
169
|
+
if (fastPathBlocker !== null) {
|
|
170
|
+
result.fastPathBlocker = fastPathBlocker;
|
|
171
|
+
}
|
|
172
|
+
return result;
|
|
173
|
+
}
|
|
174
|
+
//# sourceMappingURL=diagnostic.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"diagnostic.js","sourceRoot":"","sources":["../../src/core/diagnostic.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import type { CheckOrEffectIR } from "../types.js";
|
|
2
|
+
import type { ZodCheckDef, ZodCheckSchema } from "./types.js";
|
|
3
|
+
/** True when a check carries a runtime `when` predicate we cannot reproduce. */
|
|
4
|
+
export declare function hasUserWhen(def: ZodCheckDef): boolean;
|
|
5
|
+
/**
|
|
6
|
+
* True when a check can't be compiled because of runtime modifiers:
|
|
7
|
+
* a user-supplied `when` predicate, or `abort: true` (which stops later
|
|
8
|
+
* checks and marks the option as aborted in union pruning — compiled
|
|
9
|
+
* output always runs every check).
|
|
10
|
+
*/
|
|
11
|
+
export declare function hasUncompilableModifiers(def: ZodCheckDef): boolean;
|
|
12
|
+
export declare function extractChecks(checks: ZodCheckSchema[]): {
|
|
13
|
+
checkIRs: CheckOrEffectIR[];
|
|
14
|
+
hasFallback: boolean;
|
|
15
|
+
};
|
|
16
|
+
export type ResolvedMessage = {
|
|
17
|
+
kind: "none";
|
|
18
|
+
} | {
|
|
19
|
+
kind: "static";
|
|
20
|
+
message: string;
|
|
21
|
+
} | {
|
|
22
|
+
kind: "dynamic";
|
|
23
|
+
};
|
|
24
|
+
/**
|
|
25
|
+
* Classify a check/schema-level `error` param.
|
|
26
|
+
*
|
|
27
|
+
* Zod normalizes `.min(3, "msg")` / `{ error: "msg" }` / `{ message: "msg" }`
|
|
28
|
+
* into an error-map function that ignores its issue argument and returns the
|
|
29
|
+
* string. We call the function with an access-tracking Proxy: if it never
|
|
30
|
+
* inspects the issue, its return value is a constant we can bake into the
|
|
31
|
+
* generated issue. If it reads any issue property (input-dependent message),
|
|
32
|
+
* it is dynamic and the schema must fall back to Zod for exact messages.
|
|
33
|
+
*/
|
|
34
|
+
export declare function resolveCheckMessage(error: unknown): ResolvedMessage;
|
|
35
|
+
//# sourceMappingURL=checks.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"checks.d.ts","sourceRoot":"","sources":["../../../src/core/extract/checks.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAqB,MAAM,aAAa,CAAC;AAEtE,OAAO,KAAK,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAkC9D,gFAAgF;AAChF,wBAAgB,WAAW,CAAC,GAAG,EAAE,WAAW,GAAG,OAAO,CAErD;AAED;;;;;GAKG;AACH,wBAAgB,wBAAwB,CAAC,GAAG,EAAE,WAAW,GAAG,OAAO,CAElE;AAED,wBAAgB,aAAa,CAAC,MAAM,EAAE,cAAc,EAAE,GAAG;IACvD,QAAQ,EAAE,eAAe,EAAE,CAAC;IAC5B,WAAW,EAAE,OAAO,CAAC;CACtB,CAyIA;AAaD,MAAM,MAAM,eAAe,GACvB;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,GAChB;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GACnC;IAAE,IAAI,EAAE,SAAS,CAAA;CAAE,CAAC;AAExB;;;;;;;;;GASG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,OAAO,GAAG,eAAe,CAqDnE"}
|