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,181 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import { createRequire } from "node:module";
|
|
3
|
+
import process from "node:process";
|
|
4
|
+
import { getErrorMessage } from "./errors.js";
|
|
5
|
+
import { logger } from "./logger.js";
|
|
6
|
+
const require = createRequire(import.meta.url);
|
|
7
|
+
const VERSION = require("../../package.json").version;
|
|
8
|
+
function printUsage() {
|
|
9
|
+
// biome-ignore lint/suspicious/noConsole: CLI output
|
|
10
|
+
console.log(`
|
|
11
|
+
zod-compiler v${VERSION} — Compile Zod schemas into zero-overhead validation functions
|
|
12
|
+
|
|
13
|
+
Usage:
|
|
14
|
+
zod-compiler generate <files...> [-o <output>] [-w] [--auto-discover]
|
|
15
|
+
zod-compiler check <files...> [--json] [--fail-under <pct>] [--no-color] [--auto-discover]
|
|
16
|
+
|
|
17
|
+
Commands:
|
|
18
|
+
generate Generate optimized validation code from compile() calls
|
|
19
|
+
check Check schemas with tree view, coverage, Fast Path status, and hints
|
|
20
|
+
|
|
21
|
+
Options:
|
|
22
|
+
-o, --output <path> Output file or directory
|
|
23
|
+
-w, --watch Watch for changes and regenerate
|
|
24
|
+
--no-zod-compat Minimal output without Zod compatibility (smaller bundle)
|
|
25
|
+
--auto-discover Scan all exported Zod schemas (no compile() wrapper required)
|
|
26
|
+
--json Output diagnosis as JSON (check only)
|
|
27
|
+
--fail-under <pct> Exit with code 1 if any schema's coverage < pct (check only)
|
|
28
|
+
--no-color Disable colored output (check only)
|
|
29
|
+
-h, --help Show this help message
|
|
30
|
+
-v, --version Show version number
|
|
31
|
+
|
|
32
|
+
Examples:
|
|
33
|
+
zod-compiler generate src/schemas.ts
|
|
34
|
+
zod-compiler generate src/schemas.ts -o src/schemas.compiled.ts
|
|
35
|
+
zod-compiler generate src/ --watch
|
|
36
|
+
zod-compiler generate src/env.ts --auto-discover
|
|
37
|
+
zod-compiler check src/schemas.ts
|
|
38
|
+
zod-compiler check src/env.ts --auto-discover
|
|
39
|
+
zod-compiler check src/schemas.ts --json --fail-under 80
|
|
40
|
+
`.trim());
|
|
41
|
+
}
|
|
42
|
+
function parseArgs(argv) {
|
|
43
|
+
const args = argv.slice(2);
|
|
44
|
+
if (args.length === 0 || args.includes("--help") || args.includes("-h")) {
|
|
45
|
+
return { kind: "help" };
|
|
46
|
+
}
|
|
47
|
+
if (args.includes("--version") || args.includes("-v")) {
|
|
48
|
+
return { kind: "version" };
|
|
49
|
+
}
|
|
50
|
+
const command = args[0];
|
|
51
|
+
const rest = args.slice(1);
|
|
52
|
+
if (command === "generate") {
|
|
53
|
+
const inputs = [];
|
|
54
|
+
let output;
|
|
55
|
+
let watch = false;
|
|
56
|
+
let zodCompat;
|
|
57
|
+
let autoDiscover = false;
|
|
58
|
+
for (let i = 0; i < rest.length; i++) {
|
|
59
|
+
const arg = rest[i];
|
|
60
|
+
if (arg === "-o" || arg === "--output") {
|
|
61
|
+
i++;
|
|
62
|
+
const val = rest[i];
|
|
63
|
+
if (!val) {
|
|
64
|
+
logger.error("Missing value for --output");
|
|
65
|
+
process.exit(1);
|
|
66
|
+
}
|
|
67
|
+
output = val;
|
|
68
|
+
}
|
|
69
|
+
else if (arg === "-w" || arg === "--watch") {
|
|
70
|
+
watch = true;
|
|
71
|
+
}
|
|
72
|
+
else if (arg === "--no-zod-compat") {
|
|
73
|
+
zodCompat = false;
|
|
74
|
+
}
|
|
75
|
+
else if (arg === "--auto-discover") {
|
|
76
|
+
autoDiscover = true;
|
|
77
|
+
}
|
|
78
|
+
else if (arg.startsWith("-")) {
|
|
79
|
+
logger.error(`Unknown option: ${arg}`);
|
|
80
|
+
process.exit(1);
|
|
81
|
+
}
|
|
82
|
+
else {
|
|
83
|
+
inputs.push(arg);
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
if (inputs.length === 0) {
|
|
87
|
+
logger.error("No input files specified. Run 'zod-compiler --help' for usage.");
|
|
88
|
+
process.exit(1);
|
|
89
|
+
}
|
|
90
|
+
return {
|
|
91
|
+
kind: "generate",
|
|
92
|
+
options: {
|
|
93
|
+
inputs,
|
|
94
|
+
output,
|
|
95
|
+
watch,
|
|
96
|
+
zodCompat,
|
|
97
|
+
autoDiscover,
|
|
98
|
+
},
|
|
99
|
+
};
|
|
100
|
+
}
|
|
101
|
+
if (command === "check") {
|
|
102
|
+
const inputs = [];
|
|
103
|
+
let json = false;
|
|
104
|
+
let failUnder;
|
|
105
|
+
let noColor = false;
|
|
106
|
+
let autoDiscover = false;
|
|
107
|
+
for (let i = 0; i < rest.length; i++) {
|
|
108
|
+
const arg = rest[i];
|
|
109
|
+
if (arg === "--json") {
|
|
110
|
+
json = true;
|
|
111
|
+
}
|
|
112
|
+
else if (arg === "--fail-under") {
|
|
113
|
+
i++;
|
|
114
|
+
const val = rest[i];
|
|
115
|
+
if (!val) {
|
|
116
|
+
logger.error("Missing value for --fail-under");
|
|
117
|
+
process.exit(1);
|
|
118
|
+
}
|
|
119
|
+
const num = Number(val);
|
|
120
|
+
if (Number.isNaN(num) || num < 0 || num > 100) {
|
|
121
|
+
logger.error("--fail-under must be a number between 0 and 100");
|
|
122
|
+
process.exit(1);
|
|
123
|
+
}
|
|
124
|
+
failUnder = num;
|
|
125
|
+
}
|
|
126
|
+
else if (arg === "--no-color") {
|
|
127
|
+
noColor = true;
|
|
128
|
+
}
|
|
129
|
+
else if (arg === "--auto-discover") {
|
|
130
|
+
autoDiscover = true;
|
|
131
|
+
}
|
|
132
|
+
else if (arg.startsWith("-")) {
|
|
133
|
+
logger.error(`Unknown option: ${arg}`);
|
|
134
|
+
process.exit(1);
|
|
135
|
+
}
|
|
136
|
+
else {
|
|
137
|
+
inputs.push(arg);
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
if (inputs.length === 0) {
|
|
141
|
+
logger.error("No input files specified. Run 'zod-compiler --help' for usage.");
|
|
142
|
+
process.exit(1);
|
|
143
|
+
}
|
|
144
|
+
return { kind: "check", options: { inputs, json, failUnder, noColor, autoDiscover } };
|
|
145
|
+
}
|
|
146
|
+
logger.error(`Unknown command: ${command}. Run 'zod-compiler --help' for usage.`);
|
|
147
|
+
process.exit(1);
|
|
148
|
+
}
|
|
149
|
+
async function main() {
|
|
150
|
+
const command = parseArgs(process.argv);
|
|
151
|
+
switch (command.kind) {
|
|
152
|
+
case "help":
|
|
153
|
+
printUsage();
|
|
154
|
+
break;
|
|
155
|
+
case "version":
|
|
156
|
+
// biome-ignore lint/suspicious/noConsole: CLI output
|
|
157
|
+
console.log(VERSION);
|
|
158
|
+
break;
|
|
159
|
+
case "generate": {
|
|
160
|
+
if (command.options.watch) {
|
|
161
|
+
const { runWatch } = await import("./commands/watch.js");
|
|
162
|
+
await runWatch(command.options);
|
|
163
|
+
}
|
|
164
|
+
else {
|
|
165
|
+
const { runGenerate } = await import("./commands/generate.js");
|
|
166
|
+
await runGenerate(command.options);
|
|
167
|
+
}
|
|
168
|
+
break;
|
|
169
|
+
}
|
|
170
|
+
case "check": {
|
|
171
|
+
const { runCheck } = await import("./commands/check.js");
|
|
172
|
+
await runCheck(command.options);
|
|
173
|
+
break;
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
void main().catch((err) => {
|
|
178
|
+
logger.error(getErrorMessage(err));
|
|
179
|
+
process.exit(1);
|
|
180
|
+
});
|
|
181
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
export interface Colors {
|
|
2
|
+
reset: string;
|
|
3
|
+
red: string;
|
|
4
|
+
green: string;
|
|
5
|
+
yellow: string;
|
|
6
|
+
cyan: string;
|
|
7
|
+
dim: string;
|
|
8
|
+
bold: string;
|
|
9
|
+
}
|
|
10
|
+
export declare function createColors(enabled: boolean): Colors;
|
|
11
|
+
export declare const logger: {
|
|
12
|
+
info(msg: string): void;
|
|
13
|
+
success(msg: string): void;
|
|
14
|
+
warn(msg: string): void;
|
|
15
|
+
error(msg: string): void;
|
|
16
|
+
dim(msg: string): void;
|
|
17
|
+
};
|
|
18
|
+
//# sourceMappingURL=logger.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../src/cli/logger.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,MAAM;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;CACd;AAYD,wBAAgB,YAAY,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,CAWrD;AASD,eAAO,MAAM,MAAM;cACP,MAAM,GAAG,IAAI;iBAGV,MAAM,GAAG,IAAI;cAGhB,MAAM,GAAG,IAAI;eAGZ,MAAM,GAAG,IAAI;aAGf,MAAM,GAAG,IAAI;CAGvB,CAAC"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import process from "node:process";
|
|
2
|
+
const NO_COLORS = {
|
|
3
|
+
reset: "",
|
|
4
|
+
red: "",
|
|
5
|
+
green: "",
|
|
6
|
+
yellow: "",
|
|
7
|
+
cyan: "",
|
|
8
|
+
dim: "",
|
|
9
|
+
bold: "",
|
|
10
|
+
};
|
|
11
|
+
export function createColors(enabled) {
|
|
12
|
+
if (!enabled)
|
|
13
|
+
return NO_COLORS;
|
|
14
|
+
return {
|
|
15
|
+
reset: "\x1b[0m",
|
|
16
|
+
red: "\x1b[31m",
|
|
17
|
+
green: "\x1b[32m",
|
|
18
|
+
yellow: "\x1b[33m",
|
|
19
|
+
cyan: "\x1b[36m",
|
|
20
|
+
dim: "\x1b[2m",
|
|
21
|
+
bold: "\x1b[1m",
|
|
22
|
+
};
|
|
23
|
+
}
|
|
24
|
+
const colors = createColors(process.stdout.isTTY === true);
|
|
25
|
+
// biome-ignore lint/suspicious/noConsole: CLI output
|
|
26
|
+
const log = console.log;
|
|
27
|
+
// biome-ignore lint/suspicious/noConsole: CLI output
|
|
28
|
+
const logError = console.error;
|
|
29
|
+
export const logger = {
|
|
30
|
+
info(msg) {
|
|
31
|
+
log(`${colors.cyan}info${colors.reset} ${msg}`);
|
|
32
|
+
},
|
|
33
|
+
success(msg) {
|
|
34
|
+
log(`${colors.green}done${colors.reset} ${msg}`);
|
|
35
|
+
},
|
|
36
|
+
warn(msg) {
|
|
37
|
+
logError(`${colors.yellow}warn${colors.reset} ${msg}`);
|
|
38
|
+
},
|
|
39
|
+
error(msg) {
|
|
40
|
+
logError(`${colors.red}error${colors.reset} ${msg}`);
|
|
41
|
+
},
|
|
42
|
+
dim(msg) {
|
|
43
|
+
log(`${colors.dim}${msg}${colors.reset}`);
|
|
44
|
+
},
|
|
45
|
+
};
|
|
46
|
+
//# sourceMappingURL=logger.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logger.js","sourceRoot":"","sources":["../../src/cli/logger.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,cAAc,CAAC;AAYnC,MAAM,SAAS,GAAW;IACxB,KAAK,EAAE,EAAE;IACT,GAAG,EAAE,EAAE;IACP,KAAK,EAAE,EAAE;IACT,MAAM,EAAE,EAAE;IACV,IAAI,EAAE,EAAE;IACR,GAAG,EAAE,EAAE;IACP,IAAI,EAAE,EAAE;CACT,CAAC;AAEF,MAAM,UAAU,YAAY,CAAC,OAAgB;IAC3C,IAAI,CAAC,OAAO;QAAE,OAAO,SAAS,CAAC;IAC/B,OAAO;QACL,KAAK,EAAE,SAAS;QAChB,GAAG,EAAE,UAAU;QACf,KAAK,EAAE,UAAU;QACjB,MAAM,EAAE,UAAU;QAClB,IAAI,EAAE,UAAU;QAChB,GAAG,EAAE,SAAS;QACd,IAAI,EAAE,SAAS;KAChB,CAAC;AACJ,CAAC;AAED,MAAM,MAAM,GAAG,YAAY,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,KAAK,IAAI,CAAC,CAAC;AAE3D,qDAAqD;AACrD,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC;AACxB,qDAAqD;AACrD,MAAM,QAAQ,GAAG,OAAO,CAAC,KAAK,CAAC;AAE/B,MAAM,CAAC,MAAM,MAAM,GAAG;IACpB,IAAI,CAAC,GAAW;QACd,GAAG,CAAC,GAAG,MAAM,CAAC,IAAI,OAAO,MAAM,CAAC,KAAK,IAAI,GAAG,EAAE,CAAC,CAAC;IAClD,CAAC;IACD,OAAO,CAAC,GAAW;QACjB,GAAG,CAAC,GAAG,MAAM,CAAC,KAAK,OAAO,MAAM,CAAC,KAAK,IAAI,GAAG,EAAE,CAAC,CAAC;IACnD,CAAC;IACD,IAAI,CAAC,GAAW;QACd,QAAQ,CAAC,GAAG,MAAM,CAAC,MAAM,OAAO,MAAM,CAAC,KAAK,IAAI,GAAG,EAAE,CAAC,CAAC;IACzD,CAAC;IACD,KAAK,CAAC,GAAW;QACf,QAAQ,CAAC,GAAG,MAAM,CAAC,GAAG,QAAQ,MAAM,CAAC,KAAK,IAAI,GAAG,EAAE,CAAC,CAAC;IACvD,CAAC;IACD,GAAG,CAAC,GAAW;QACb,GAAG,CAAC,GAAG,MAAM,CAAC,GAAG,GAAG,GAAG,GAAG,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;IAC5C,CAAC;CACF,CAAC"}
|
|
@@ -0,0 +1,138 @@
|
|
|
1
|
+
import type { BigIntCheckIR, CheckIR, CheckOrEffectIR, DateCheckIR, SchemaIR, SetCheckIR } from "../types.js";
|
|
2
|
+
/** Codegen output mode. "inline" emits self-contained code (CLI .compiled.ts). "lean" emits references to imports from "virtual:zod-compiler/runtime" (unplugin). */
|
|
3
|
+
export type CodegenMode = "inline" | "lean";
|
|
4
|
+
export interface CodeGenResult {
|
|
5
|
+
code: string;
|
|
6
|
+
functionDef: string;
|
|
7
|
+
/** Number of fallback schemas referenced by __rf[N] in the generated code. 0 = no fallbacks. */
|
|
8
|
+
refCount: number;
|
|
9
|
+
/**
|
|
10
|
+
* Helper names referenced by this schema in lean mode (e.g. "__zaTS", "__zaReEmail").
|
|
11
|
+
* Used by the unplugin transform to construct the `import { ... } from "virtual:zod-compiler/runtime"` line.
|
|
12
|
+
* Always empty in inline mode.
|
|
13
|
+
*/
|
|
14
|
+
usedHelpers: Set<string>;
|
|
15
|
+
}
|
|
16
|
+
/** Shared mutable state for code generation. Fast and slow paths share the same instance. */
|
|
17
|
+
export interface CodeGenContext {
|
|
18
|
+
preamble: string[];
|
|
19
|
+
counter: number;
|
|
20
|
+
fnName: string;
|
|
21
|
+
/** Deduplicates regex patterns: same pattern string → same preamble variable name. */
|
|
22
|
+
regexCache: Map<string, string>;
|
|
23
|
+
/** Codegen output mode. */
|
|
24
|
+
mode: CodegenMode;
|
|
25
|
+
/** Names of helpers from "virtual:zod-compiler/runtime" referenced in this schema (lean mode only). */
|
|
26
|
+
usedHelpers: Set<string>;
|
|
27
|
+
}
|
|
28
|
+
/** Context object for slow-path (error-collecting) generator functions. */
|
|
29
|
+
export interface SlowGen {
|
|
30
|
+
readonly input: string;
|
|
31
|
+
readonly output: string;
|
|
32
|
+
readonly path: string;
|
|
33
|
+
readonly issues: string;
|
|
34
|
+
readonly ctx: CodeGenContext;
|
|
35
|
+
/**
|
|
36
|
+
* Schema-level static error message of the node being generated
|
|
37
|
+
* (z.string({ error: "..." })). Default message for issues this node emits
|
|
38
|
+
* when the individual check has no message of its own. Set by generateSlow()
|
|
39
|
+
* from ir.typeMessage; never inherited by child nodes.
|
|
40
|
+
*/
|
|
41
|
+
readonly typeMsg?: string | undefined;
|
|
42
|
+
/**
|
|
43
|
+
* Recursively generate validation for a child IR node.
|
|
44
|
+
* All fields are inherited from parent unless overridden.
|
|
45
|
+
* Union generators use `{ issues }` to redirect child errors to temporary arrays.
|
|
46
|
+
* Container generators use `{ input, output, path }` for element traversal.
|
|
47
|
+
*/
|
|
48
|
+
visit(ir: SchemaIR, overrides?: {
|
|
49
|
+
input?: string;
|
|
50
|
+
output?: string;
|
|
51
|
+
path?: string;
|
|
52
|
+
issues?: string;
|
|
53
|
+
}): string;
|
|
54
|
+
/** Generate a unique temp variable name: `__${prefix}_${counter++}` */
|
|
55
|
+
temp(prefix: string): string;
|
|
56
|
+
/** Add a regex to preamble and return the variable name. */
|
|
57
|
+
regex(prefix: string, pattern: string, flags?: string): string;
|
|
58
|
+
/** Add a Set to preamble and return the variable name. */
|
|
59
|
+
set(prefix: string, values: readonly unknown[]): string;
|
|
60
|
+
}
|
|
61
|
+
/** Slow-path generator function signature — registered in slowRegistry. */
|
|
62
|
+
export type SlowGenerator<T extends SchemaIR = SchemaIR> = (ir: T, g: SlowGen) => string;
|
|
63
|
+
/** Context object for fast-path (boolean expression) generator functions. */
|
|
64
|
+
export interface FastGen {
|
|
65
|
+
readonly input: string;
|
|
66
|
+
readonly ctx: CodeGenContext;
|
|
67
|
+
/**
|
|
68
|
+
* Recursively generate fast-check expression for a child IR node.
|
|
69
|
+
* Returns null if any child is ineligible for fast path.
|
|
70
|
+
*/
|
|
71
|
+
visit(ir: SchemaIR, overrides?: {
|
|
72
|
+
input?: string;
|
|
73
|
+
}): string | null;
|
|
74
|
+
/** Generate a unique temp variable name. */
|
|
75
|
+
temp(prefix: string): string;
|
|
76
|
+
/** Add a regex to preamble and return the variable name. */
|
|
77
|
+
regex(prefix: string, pattern: string, flags?: string): string;
|
|
78
|
+
}
|
|
79
|
+
/** Fast-path generator function signature — registered in fastRegistry. */
|
|
80
|
+
export type FastGenerator<T extends SchemaIR = SchemaIR> = (ir: T, g: FastGen) => string | null;
|
|
81
|
+
/** Allocate a fresh `__${prefix}_${n}` identifier and bump the shared counter. */
|
|
82
|
+
export declare function emitTemp(ctx: CodeGenContext, prefix: string): string;
|
|
83
|
+
/**
|
|
84
|
+
* Resolve a regex pattern to a runtime variable name.
|
|
85
|
+
* Lean mode short-circuits well-known patterns to virtual-module names so the
|
|
86
|
+
* bundler can dedup across files; everything else is cached + declared in the
|
|
87
|
+
* per-IIFE preamble exactly once per pattern.
|
|
88
|
+
*/
|
|
89
|
+
export declare function emitRegex(ctx: CodeGenContext, prefix: string, pattern: string, flags?: string): string;
|
|
90
|
+
/** Declare a `new Set([...])` in the preamble and return its variable name. */
|
|
91
|
+
export declare function emitSet(ctx: CodeGenContext, prefix: string, values: readonly unknown[]): string;
|
|
92
|
+
/** Enum values at or below this count use inline === checks instead of Set.has(). */
|
|
93
|
+
export declare const ENUM_INLINE_THRESHOLD = 3;
|
|
94
|
+
export declare function escapeString(s: string | number): string;
|
|
95
|
+
/**
|
|
96
|
+
* JS source for a primitive literal value (literal schemas, discriminator
|
|
97
|
+
* case labels). JSON.stringify covers string/number/boolean/null; bigint
|
|
98
|
+
* needs the `n` suffix (JSON.stringify throws and String(5n) renders a
|
|
99
|
+
* number literal that never strict-equals a bigint); undefined isn't JSON.
|
|
100
|
+
*/
|
|
101
|
+
export declare function literalToJs(v: string | number | boolean | null | bigint | undefined): string;
|
|
102
|
+
/**
|
|
103
|
+
* Reference a shared runtime helper (e.g. __zaFsr) from generated code.
|
|
104
|
+
* Lean mode: registers it for the `virtual:zod-compiler/runtime` import.
|
|
105
|
+
* Inline mode: declares it once in the per-IIFE preamble.
|
|
106
|
+
*/
|
|
107
|
+
export declare function emitRuntimeHelper(ctx: CodeGenContext, name: string, decl: string): string;
|
|
108
|
+
/**
|
|
109
|
+
* Extend a path expression with a static string key.
|
|
110
|
+
* Avoids [].concat("key") at root level; falls back to .concat() for nested paths.
|
|
111
|
+
*/
|
|
112
|
+
export declare function extendStaticPath(parentPath: string, key: string): string;
|
|
113
|
+
/**
|
|
114
|
+
* Extend a path expression with a numeric index.
|
|
115
|
+
* Avoids [].concat(0) at root level; falls back to .concat() for nested paths.
|
|
116
|
+
*/
|
|
117
|
+
export declare function extendStaticPathIndex(parentPath: string, index: number): string;
|
|
118
|
+
/**
|
|
119
|
+
* Check if a SchemaIR tree contains any value-mutating operations
|
|
120
|
+
* (coerce, default, catch) that would write back to the input expression.
|
|
121
|
+
* Used by container generators to decide whether to shallow-clone.
|
|
122
|
+
*/
|
|
123
|
+
export declare function hasMutation(ir: SchemaIR): boolean;
|
|
124
|
+
/**
|
|
125
|
+
* Sort comparator for CheckIR: cheapest/most-discriminating checks first.
|
|
126
|
+
* Used by fast-path generators after filtering out refine_effect entries.
|
|
127
|
+
*/
|
|
128
|
+
export declare function checkPriority(a: CheckIR | BigIntCheckIR | DateCheckIR | SetCheckIR, b: CheckIR | BigIntCheckIR | DateCheckIR | SetCheckIR): number;
|
|
129
|
+
/**
|
|
130
|
+
* Sort compilable checks by cost (cheapest first) while preserving
|
|
131
|
+
* the original position of refine_effect entries.
|
|
132
|
+
*
|
|
133
|
+
* Zod preserves insertion order for checks. Compilable checks (typeof, length,
|
|
134
|
+
* regex) are reordered for performance, but refine_effect entries stay at their
|
|
135
|
+
* original index to maintain semantic parity with Zod.
|
|
136
|
+
*/
|
|
137
|
+
export declare function sortChecksPreservingEffects<T extends CheckIR | CheckOrEffectIR | BigIntCheckIR | DateCheckIR>(checks: T[]): T[];
|
|
138
|
+
//# sourceMappingURL=context.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../../src/core/codegen/context.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,213 @@
|
|
|
1
|
+
import { lookupWellKnownRegex } from "./well-known-regex.js";
|
|
2
|
+
// ─── Shared emit helpers (used by both slow-path and fast-path factories) ────
|
|
3
|
+
/** Allocate a fresh `__${prefix}_${n}` identifier and bump the shared counter. */
|
|
4
|
+
export function emitTemp(ctx, prefix) {
|
|
5
|
+
return `__${prefix}_${ctx.counter++}`;
|
|
6
|
+
}
|
|
7
|
+
/**
|
|
8
|
+
* Resolve a regex pattern to a runtime variable name.
|
|
9
|
+
* Lean mode short-circuits well-known patterns to virtual-module names so the
|
|
10
|
+
* bundler can dedup across files; everything else is cached + declared in the
|
|
11
|
+
* per-IIFE preamble exactly once per pattern.
|
|
12
|
+
*/
|
|
13
|
+
export function emitRegex(ctx, prefix, pattern, flags) {
|
|
14
|
+
if (ctx.mode === "lean" && !flags) {
|
|
15
|
+
const wellKnown = lookupWellKnownRegex(pattern);
|
|
16
|
+
if (wellKnown !== null) {
|
|
17
|
+
ctx.usedHelpers.add(wellKnown);
|
|
18
|
+
return wellKnown;
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
const cacheKey = flags ? `${flags}\u0000${pattern}` : pattern;
|
|
22
|
+
const cached = ctx.regexCache.get(cacheKey);
|
|
23
|
+
if (cached)
|
|
24
|
+
return cached;
|
|
25
|
+
const name = `__re_${prefix}_${ctx.counter++}`;
|
|
26
|
+
const flagsArg = flags ? `,${escapeString(flags)}` : "";
|
|
27
|
+
ctx.preamble.push(`var ${name}=new RegExp(${escapeString(pattern)}${flagsArg});`);
|
|
28
|
+
ctx.regexCache.set(cacheKey, name);
|
|
29
|
+
return name;
|
|
30
|
+
}
|
|
31
|
+
/** Declare a `new Set([...])` in the preamble and return its variable name. */
|
|
32
|
+
export function emitSet(ctx, prefix, values) {
|
|
33
|
+
const name = `__set_${prefix}_${ctx.counter++}`;
|
|
34
|
+
ctx.preamble.push(`var ${name}=new Set(${JSON.stringify([...values])});`);
|
|
35
|
+
return name;
|
|
36
|
+
}
|
|
37
|
+
/** Enum values at or below this count use inline === checks instead of Set.has(). */
|
|
38
|
+
export const ENUM_INLINE_THRESHOLD = 3;
|
|
39
|
+
const CHECK_PRIORITY = {
|
|
40
|
+
// Cheapest: length/size comparisons (O(1))
|
|
41
|
+
min_length: 10,
|
|
42
|
+
max_length: 11,
|
|
43
|
+
length_equals: 12,
|
|
44
|
+
min_size: 13,
|
|
45
|
+
max_size: 14,
|
|
46
|
+
// Number format checks (comparison + bitwise)
|
|
47
|
+
number_format: 15,
|
|
48
|
+
// Range comparisons
|
|
49
|
+
greater_than: 20,
|
|
50
|
+
less_than: 21,
|
|
51
|
+
bigint_greater_than: 20,
|
|
52
|
+
bigint_less_than: 21,
|
|
53
|
+
date_greater_than: 22,
|
|
54
|
+
date_less_than: 23,
|
|
55
|
+
// Modulo
|
|
56
|
+
multiple_of: 30,
|
|
57
|
+
bigint_multiple_of: 30,
|
|
58
|
+
// String prefix/suffix (O(prefix/suffix length))
|
|
59
|
+
starts_with: 40,
|
|
60
|
+
ends_with: 41,
|
|
61
|
+
// String search (O(n·m) worst case)
|
|
62
|
+
includes: 42,
|
|
63
|
+
// Regex (most expensive)
|
|
64
|
+
string_format: 50,
|
|
65
|
+
};
|
|
66
|
+
export function escapeString(s) {
|
|
67
|
+
return JSON.stringify(s);
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* JS source for a primitive literal value (literal schemas, discriminator
|
|
71
|
+
* case labels). JSON.stringify covers string/number/boolean/null; bigint
|
|
72
|
+
* needs the `n` suffix (JSON.stringify throws and String(5n) renders a
|
|
73
|
+
* number literal that never strict-equals a bigint); undefined isn't JSON.
|
|
74
|
+
*/
|
|
75
|
+
export function literalToJs(v) {
|
|
76
|
+
if (typeof v === "bigint")
|
|
77
|
+
return `${v}n`;
|
|
78
|
+
if (v === undefined)
|
|
79
|
+
return "undefined";
|
|
80
|
+
return JSON.stringify(v);
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* Reference a shared runtime helper (e.g. __zaFsr) from generated code.
|
|
84
|
+
* Lean mode: registers it for the `virtual:zod-compiler/runtime` import.
|
|
85
|
+
* Inline mode: declares it once in the per-IIFE preamble.
|
|
86
|
+
*/
|
|
87
|
+
export function emitRuntimeHelper(ctx, name, decl) {
|
|
88
|
+
if (ctx.mode === "lean") {
|
|
89
|
+
ctx.usedHelpers.add(name);
|
|
90
|
+
}
|
|
91
|
+
else if (!ctx.preamble.includes(decl)) {
|
|
92
|
+
ctx.preamble.push(decl);
|
|
93
|
+
}
|
|
94
|
+
return name;
|
|
95
|
+
}
|
|
96
|
+
/**
|
|
97
|
+
* Extend a path expression with a static string key.
|
|
98
|
+
* Avoids [].concat("key") at root level; falls back to .concat() for nested paths.
|
|
99
|
+
*/
|
|
100
|
+
export function extendStaticPath(parentPath, key) {
|
|
101
|
+
if (parentPath === "[]")
|
|
102
|
+
return `[${escapeString(key)}]`;
|
|
103
|
+
return `${parentPath}.concat(${escapeString(key)})`;
|
|
104
|
+
}
|
|
105
|
+
/**
|
|
106
|
+
* Extend a path expression with a numeric index.
|
|
107
|
+
* Avoids [].concat(0) at root level; falls back to .concat() for nested paths.
|
|
108
|
+
*/
|
|
109
|
+
export function extendStaticPathIndex(parentPath, index) {
|
|
110
|
+
if (parentPath === "[]")
|
|
111
|
+
return `[${index}]`;
|
|
112
|
+
return `${parentPath}.concat(${index})`;
|
|
113
|
+
}
|
|
114
|
+
/**
|
|
115
|
+
* Check if a SchemaIR tree contains any value-mutating operations
|
|
116
|
+
* (coerce, default, catch) that would write back to the input expression.
|
|
117
|
+
* Used by container generators to decide whether to shallow-clone.
|
|
118
|
+
*/
|
|
119
|
+
export function hasMutation(ir) {
|
|
120
|
+
switch (ir.type) {
|
|
121
|
+
case "string":
|
|
122
|
+
// url checks trim (and optionally normalize) the value; overwrite
|
|
123
|
+
// effects (.trim(), .toLowerCase()) rewrite it.
|
|
124
|
+
return (ir.coerce === true ||
|
|
125
|
+
ir.checks.some((c) => c.kind === "overwrite_effect" || (c.kind === "string_format" && c.format === "url")));
|
|
126
|
+
case "number":
|
|
127
|
+
case "boolean":
|
|
128
|
+
case "bigint":
|
|
129
|
+
case "date":
|
|
130
|
+
return ir.coerce === true;
|
|
131
|
+
case "default":
|
|
132
|
+
case "catch":
|
|
133
|
+
case "effect":
|
|
134
|
+
case "fallback":
|
|
135
|
+
case "stringBool":
|
|
136
|
+
return true;
|
|
137
|
+
case "object":
|
|
138
|
+
return Object.values(ir.properties).some(hasMutation);
|
|
139
|
+
case "array":
|
|
140
|
+
return hasMutation(ir.element);
|
|
141
|
+
case "tuple":
|
|
142
|
+
return ir.items.some(hasMutation) || (ir.rest !== null && hasMutation(ir.rest));
|
|
143
|
+
case "record":
|
|
144
|
+
return hasMutation(ir.valueType);
|
|
145
|
+
case "optional":
|
|
146
|
+
case "nullable":
|
|
147
|
+
case "readonly":
|
|
148
|
+
return hasMutation(ir.inner);
|
|
149
|
+
case "union":
|
|
150
|
+
case "discriminatedUnion":
|
|
151
|
+
return ir.options.some(hasMutation);
|
|
152
|
+
case "intersection":
|
|
153
|
+
return hasMutation(ir.left) || hasMutation(ir.right);
|
|
154
|
+
case "pipe":
|
|
155
|
+
return hasMutation(ir.in) || hasMutation(ir.out);
|
|
156
|
+
case "set":
|
|
157
|
+
return hasMutation(ir.valueType);
|
|
158
|
+
case "map":
|
|
159
|
+
return hasMutation(ir.keyType) || hasMutation(ir.valueType);
|
|
160
|
+
case "file":
|
|
161
|
+
return false;
|
|
162
|
+
default:
|
|
163
|
+
return false;
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
/**
|
|
167
|
+
* Sort comparator for CheckIR: cheapest/most-discriminating checks first.
|
|
168
|
+
* Used by fast-path generators after filtering out refine_effect entries.
|
|
169
|
+
*/
|
|
170
|
+
export function checkPriority(a, b) {
|
|
171
|
+
return (CHECK_PRIORITY[a.kind] ?? 99) - (CHECK_PRIORITY[b.kind] ?? 99);
|
|
172
|
+
}
|
|
173
|
+
/**
|
|
174
|
+
* Sort compilable checks by cost (cheapest first) while preserving
|
|
175
|
+
* the original position of refine_effect entries.
|
|
176
|
+
*
|
|
177
|
+
* Zod preserves insertion order for checks. Compilable checks (typeof, length,
|
|
178
|
+
* regex) are reordered for performance, but refine_effect entries stay at their
|
|
179
|
+
* original index to maintain semantic parity with Zod.
|
|
180
|
+
*/
|
|
181
|
+
export function sortChecksPreservingEffects(checks) {
|
|
182
|
+
// Value-mutating checks (overwrite effects, trimming url checks) make order
|
|
183
|
+
// semantically load-bearing: a length check before vs after .trim() measures
|
|
184
|
+
// different strings. Keep Zod's exact order when any mutator is present.
|
|
185
|
+
const isMutator = (c) => c.kind === "overwrite_effect" || (c.kind === "string_format" && c.format === "url");
|
|
186
|
+
if (checks.some(isMutator)) {
|
|
187
|
+
return [...checks];
|
|
188
|
+
}
|
|
189
|
+
const result = new Array(checks.length);
|
|
190
|
+
const compilable = [];
|
|
191
|
+
// First pass: place refine_effects at their original positions
|
|
192
|
+
for (let i = 0; i < checks.length; i++) {
|
|
193
|
+
const check = checks[i];
|
|
194
|
+
if (check.kind === "refine_effect") {
|
|
195
|
+
result[i] = check;
|
|
196
|
+
}
|
|
197
|
+
else {
|
|
198
|
+
compilable.push({ check, originalIndex: i });
|
|
199
|
+
}
|
|
200
|
+
}
|
|
201
|
+
// Sort compilable checks by priority (cheapest first)
|
|
202
|
+
compilable.sort((a, b) => (CHECK_PRIORITY[a.check.kind] ?? 99) - (CHECK_PRIORITY[b.check.kind] ?? 99));
|
|
203
|
+
// Fill remaining slots with sorted compilable checks
|
|
204
|
+
let ci = 0;
|
|
205
|
+
for (let i = 0; i < result.length; i++) {
|
|
206
|
+
if (result[i] === undefined) {
|
|
207
|
+
const entry = compilable[ci++];
|
|
208
|
+
result[i] = entry.check;
|
|
209
|
+
}
|
|
210
|
+
}
|
|
211
|
+
return result;
|
|
212
|
+
}
|
|
213
|
+
//# sourceMappingURL=context.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"context.js","sourceRoot":"","sources":["../../../src/core/codegen/context.ts"],"names":[],"mappings":"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"}
|