@openclaw/firecrawl-plugin 2026.9.4 → 2026.9.6
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/assets/activity.svg +31 -0
- package/assets/icon.png +0 -0
- package/dist/{firecrawl-client-BPFpIblh.js → .setup/firecrawl-client-hBjAoE8s.mjs} +25 -26
- package/dist/{firecrawl-fetch-provider-CIpxLKLq.js → .setup/firecrawl-fetch-provider-DH8FdBjV.mjs} +1 -1
- package/dist/{firecrawl-search-provider-80szkO8A.js → .setup/firecrawl-search-provider-8H0Cu9l0.mjs} +1 -1
- package/dist/api.js +1 -1
- package/dist/index.js +3 -3
- package/dist/web-fetch-contract-api.js +1 -1
- package/dist/web-fetch-provider.js +1 -1
- package/dist/web-search-contract-api.js +1 -1
- package/dist/web-search-provider.js +1 -1
- package/node_modules/typebox/build/compile/validator.d.mts +1 -1
- package/node_modules/typebox/build/compile/validator.mjs +1 -1
- package/node_modules/typebox/build/format/idna/idn-hostname.mjs +7 -5
- package/node_modules/typebox/build/format/iri.mjs +5 -1
- package/node_modules/typebox/build/guard/emit.mjs +2 -4
- package/node_modules/typebox/build/guard/guard.mjs +6 -18
- package/node_modules/typebox/build/guard/string.mjs +16 -24
- package/node_modules/typebox/build/schema/build.mjs +2 -2
- package/node_modules/typebox/build/schema/check.mjs +1 -1
- package/node_modules/typebox/build/schema/compile.d.mts +3 -2
- package/node_modules/typebox/build/schema/compile.mjs +8 -8
- package/node_modules/typebox/build/schema/engine/_context.d.mts +6 -7
- package/node_modules/typebox/build/schema/engine/_context.mjs +23 -15
- package/node_modules/typebox/build/schema/engine/_functions.d.mts +2 -2
- package/node_modules/typebox/build/schema/engine/_functions.mjs +1 -1
- package/node_modules/typebox/build/schema/engine/_reducer.d.mts +3 -3
- package/node_modules/typebox/build/schema/engine/_refine.d.mts +5 -5
- package/node_modules/typebox/build/schema/engine/_refine.mjs +4 -7
- package/node_modules/typebox/build/schema/engine/_stack.d.mts +34 -16
- package/node_modules/typebox/build/schema/engine/_stack.mjs +148 -104
- package/node_modules/typebox/build/schema/engine/additionalItems.d.mts +4 -4
- package/node_modules/typebox/build/schema/engine/additionalProperties.d.mts +8 -8
- package/node_modules/typebox/build/schema/engine/additionalProperties.mjs +26 -18
- package/node_modules/typebox/build/schema/engine/allOf.d.mts +4 -4
- package/node_modules/typebox/build/schema/engine/allOf.mjs +3 -3
- package/node_modules/typebox/build/schema/engine/anyOf.d.mts +4 -4
- package/node_modules/typebox/build/schema/engine/anyOf.mjs +5 -10
- package/node_modules/typebox/build/schema/engine/boolean.d.mts +4 -4
- package/node_modules/typebox/build/schema/engine/boolean.mjs +2 -6
- package/node_modules/typebox/build/schema/engine/const.d.mts +4 -4
- package/node_modules/typebox/build/schema/engine/const.mjs +2 -6
- package/node_modules/typebox/build/schema/engine/contains.d.mts +4 -4
- package/node_modules/typebox/build/schema/engine/contains.mjs +2 -6
- package/node_modules/typebox/build/schema/engine/dependencies.d.mts +4 -4
- package/node_modules/typebox/build/schema/engine/dependencies.mjs +3 -6
- package/node_modules/typebox/build/schema/engine/dependentRequired.d.mts +4 -4
- package/node_modules/typebox/build/schema/engine/dependentRequired.mjs +2 -6
- package/node_modules/typebox/build/schema/engine/dependentSchemas.d.mts +4 -4
- package/node_modules/typebox/build/schema/engine/dynamicRef.d.mts +4 -4
- package/node_modules/typebox/build/schema/engine/dynamicRef.mjs +11 -7
- package/node_modules/typebox/build/schema/engine/enum.d.mts +4 -4
- package/node_modules/typebox/build/schema/engine/enum.mjs +2 -6
- package/node_modules/typebox/build/schema/engine/exclusiveMaximum.d.mts +4 -4
- package/node_modules/typebox/build/schema/engine/exclusiveMaximum.mjs +2 -6
- package/node_modules/typebox/build/schema/engine/exclusiveMinimum.d.mts +4 -4
- package/node_modules/typebox/build/schema/engine/exclusiveMinimum.mjs +2 -6
- package/node_modules/typebox/build/schema/engine/format.d.mts +4 -4
- package/node_modules/typebox/build/schema/engine/format.mjs +2 -6
- package/node_modules/typebox/build/schema/engine/if.d.mts +4 -4
- package/node_modules/typebox/build/schema/engine/if.mjs +7 -15
- package/node_modules/typebox/build/schema/engine/items.d.mts +4 -4
- package/node_modules/typebox/build/schema/engine/items.mjs +1 -1
- package/node_modules/typebox/build/schema/engine/maxContains.d.mts +4 -4
- package/node_modules/typebox/build/schema/engine/maxContains.mjs +2 -6
- package/node_modules/typebox/build/schema/engine/maxItems.d.mts +4 -4
- package/node_modules/typebox/build/schema/engine/maxItems.mjs +2 -6
- package/node_modules/typebox/build/schema/engine/maxLength.d.mts +4 -4
- package/node_modules/typebox/build/schema/engine/maxLength.mjs +2 -6
- package/node_modules/typebox/build/schema/engine/maxProperties.d.mts +4 -4
- package/node_modules/typebox/build/schema/engine/maxProperties.mjs +2 -6
- package/node_modules/typebox/build/schema/engine/maximum.d.mts +4 -4
- package/node_modules/typebox/build/schema/engine/maximum.mjs +2 -6
- package/node_modules/typebox/build/schema/engine/minContains.d.mts +4 -4
- package/node_modules/typebox/build/schema/engine/minContains.mjs +2 -6
- package/node_modules/typebox/build/schema/engine/minItems.d.mts +5 -5
- package/node_modules/typebox/build/schema/engine/minItems.mjs +2 -6
- package/node_modules/typebox/build/schema/engine/minLength.d.mts +4 -4
- package/node_modules/typebox/build/schema/engine/minLength.mjs +2 -6
- package/node_modules/typebox/build/schema/engine/minProperties.d.mts +4 -4
- package/node_modules/typebox/build/schema/engine/minProperties.mjs +2 -6
- package/node_modules/typebox/build/schema/engine/minimum.d.mts +4 -4
- package/node_modules/typebox/build/schema/engine/minimum.mjs +2 -6
- package/node_modules/typebox/build/schema/engine/multipleOf.d.mts +4 -4
- package/node_modules/typebox/build/schema/engine/multipleOf.mjs +2 -6
- package/node_modules/typebox/build/schema/engine/not.d.mts +4 -4
- package/node_modules/typebox/build/schema/engine/not.mjs +4 -8
- package/node_modules/typebox/build/schema/engine/oneOf.d.mts +4 -4
- package/node_modules/typebox/build/schema/engine/oneOf.mjs +6 -11
- package/node_modules/typebox/build/schema/engine/pattern.d.mts +4 -4
- package/node_modules/typebox/build/schema/engine/pattern.mjs +3 -7
- package/node_modules/typebox/build/schema/engine/patternProperties.d.mts +4 -4
- package/node_modules/typebox/build/schema/engine/patternProperties.mjs +1 -1
- package/node_modules/typebox/build/schema/engine/prefixItems.d.mts +4 -4
- package/node_modules/typebox/build/schema/engine/prefixItems.mjs +1 -1
- package/node_modules/typebox/build/schema/engine/properties.d.mts +4 -4
- package/node_modules/typebox/build/schema/engine/properties.mjs +1 -1
- package/node_modules/typebox/build/schema/engine/propertyNames.d.mts +4 -4
- package/node_modules/typebox/build/schema/engine/propertyNames.mjs +4 -10
- package/node_modules/typebox/build/schema/engine/recursiveRef.d.mts +4 -4
- package/node_modules/typebox/build/schema/engine/recursiveRef.mjs +11 -7
- package/node_modules/typebox/build/schema/engine/ref.d.mts +4 -4
- package/node_modules/typebox/build/schema/engine/ref.mjs +19 -15
- package/node_modules/typebox/build/schema/engine/required.d.mts +4 -4
- package/node_modules/typebox/build/schema/engine/required.mjs +2 -6
- package/node_modules/typebox/build/schema/engine/schema.d.mts +7 -7
- package/node_modules/typebox/build/schema/engine/schema.mjs +137 -133
- package/node_modules/typebox/build/schema/engine/type.d.mts +4 -4
- package/node_modules/typebox/build/schema/engine/type.mjs +2 -6
- package/node_modules/typebox/build/schema/engine/unevaluatedItems.d.mts +4 -4
- package/node_modules/typebox/build/schema/engine/unevaluatedItems.mjs +5 -9
- package/node_modules/typebox/build/schema/engine/unevaluatedProperties.d.mts +4 -4
- package/node_modules/typebox/build/schema/engine/unevaluatedProperties.mjs +5 -9
- package/node_modules/typebox/build/schema/engine/uniqueItems.d.mts +4 -4
- package/node_modules/typebox/build/schema/engine/uniqueItems.mjs +2 -6
- package/node_modules/typebox/build/schema/errors.d.mts +2 -2
- package/node_modules/typebox/build/schema/errors.mjs +8 -14
- package/node_modules/typebox/build/schema/intern/index.d.mts +1 -0
- package/node_modules/typebox/build/schema/intern/index.mjs +1 -0
- package/node_modules/typebox/build/schema/intern/intern.d.mts +11 -0
- package/node_modules/typebox/build/schema/intern/intern.mjs +293 -0
- package/node_modules/typebox/build/schema/meta/draft_2019_09.d.mts +2 -0
- package/node_modules/typebox/build/schema/meta/draft_2019_09.mjs +288 -0
- package/node_modules/typebox/build/schema/meta/draft_2020_12.d.mts +2 -0
- package/node_modules/typebox/build/schema/meta/draft_2020_12.mjs +300 -0
- package/node_modules/typebox/build/schema/meta/draft_3.d.mts +2 -0
- package/node_modules/typebox/build/schema/meta/draft_3.mjs +143 -0
- package/node_modules/typebox/build/schema/meta/draft_4.d.mts +2 -0
- package/node_modules/typebox/build/schema/meta/draft_4.mjs +149 -0
- package/node_modules/typebox/build/schema/meta/draft_6.d.mts +2 -0
- package/node_modules/typebox/build/schema/meta/draft_6.mjs +155 -0
- package/node_modules/typebox/build/schema/meta/draft_7.d.mts +2 -0
- package/node_modules/typebox/build/schema/meta/draft_7.mjs +172 -0
- package/node_modules/typebox/build/schema/meta/index.d.mts +2 -0
- package/node_modules/typebox/build/schema/meta/index.mjs +2 -0
- package/node_modules/typebox/build/schema/meta/meta.d.mts +9 -0
- package/node_modules/typebox/build/schema/meta/meta.mjs +15 -0
- package/node_modules/typebox/build/schema/meta/schema.d.mts +6 -0
- package/node_modules/typebox/build/schema/meta/schema.mjs +1 -0
- package/node_modules/typebox/build/schema/parse.d.mts +1 -0
- package/node_modules/typebox/build/schema/parse.mjs +10 -5
- package/node_modules/typebox/build/schema/resolve/resolve.d.mts +8 -3
- package/node_modules/typebox/build/schema/resolve/resolve.mjs +268 -139
- package/node_modules/typebox/build/schema/schema.d.mts +2 -0
- package/node_modules/typebox/build/schema/schema.mjs +2 -0
- package/node_modules/typebox/build/value/errors/errors.d.mts +2 -12
- package/node_modules/typebox/build/value/errors/errors.mjs +2 -7
- package/node_modules/typebox/package.json +1 -1
- package/node_modules/typebox/readme.md +59 -89
- package/node_modules/zod/README.md +29 -2
- package/node_modules/zod/compile.cjs +96 -0
- package/node_modules/zod/compile.d.cts +1 -0
- package/node_modules/zod/compile.d.ts +1 -0
- package/node_modules/zod/compile.js +52 -0
- package/node_modules/zod/index.cjs +21 -2
- package/node_modules/zod/index.d.cts +1 -2
- package/node_modules/zod/index.d.ts +1 -2
- package/node_modules/zod/index.js +5 -2
- package/node_modules/zod/locales/index.cjs +19 -0
- package/node_modules/zod/mini/index.cjs +19 -0
- package/node_modules/zod/package.json +20 -8
- package/node_modules/zod/src/compile.ts +56 -0
- package/node_modules/zod/src/index.ts +5 -2
- package/node_modules/zod/src/v3/ZodError.ts +22 -12
- package/node_modules/zod/src/v3/helpers/errorUtil.ts +1 -1
- package/node_modules/zod/src/v3/tests/error.test.ts +35 -0
- package/node_modules/zod/src/v3/tests/intersection.test.ts +18 -0
- package/node_modules/zod/src/v3/tests/language-server.test.ts +1 -2
- package/node_modules/zod/src/v3/tests/object.test.ts +3 -6
- package/node_modules/zod/src/v3/tests/readonly.test.ts +0 -80
- package/node_modules/zod/src/v3/tests/string.test.ts +6 -0
- package/node_modules/zod/src/v3/types.ts +5 -5
- package/node_modules/zod/src/v4/classic/checks.ts +1 -0
- package/node_modules/zod/src/v4/classic/compat.ts +26 -18
- package/node_modules/zod/src/v4/classic/deep-partial.ts +76 -0
- package/node_modules/zod/src/v4/classic/errors.ts +59 -44
- package/node_modules/zod/src/v4/classic/external.ts +14 -9
- package/node_modules/zod/src/v4/classic/from-json-schema.ts +363 -78
- package/node_modules/zod/src/v4/classic/in-out.ts +45 -0
- package/node_modules/zod/src/v4/classic/index.ts +2 -2
- package/node_modules/zod/src/v4/classic/iso.ts +2 -72
- package/node_modules/zod/src/v4/classic/parse.ts +10 -4
- package/node_modules/zod/src/v4/classic/schemas.ts +640 -375
- package/node_modules/zod/src/v4/classic/tests/apply.test.ts +27 -0
- package/node_modules/zod/src/v4/classic/tests/array.test.ts +2 -2
- package/node_modules/zod/src/v4/classic/tests/assignability.test.ts +186 -0
- package/node_modules/zod/src/v4/classic/tests/bigint.test.ts +36 -1
- package/node_modules/zod/src/v4/classic/tests/catch.test.ts +278 -0
- package/node_modules/zod/src/v4/classic/tests/codec-examples.test.ts +1 -2
- package/node_modules/zod/src/v4/classic/tests/codec.test.ts +2 -1
- package/node_modules/zod/src/v4/classic/tests/continuability.test.ts +3 -3
- package/node_modules/zod/src/v4/classic/tests/credit-card.test.ts +76 -0
- package/node_modules/zod/src/v4/classic/tests/cyclic-data.test.ts +985 -0
- package/node_modules/zod/src/v4/classic/tests/date.test.ts +30 -0
- package/node_modules/zod/src/v4/classic/tests/datetime.test.ts +32 -18
- package/node_modules/zod/src/v4/classic/tests/deep-partial.test.ts +380 -0
- package/node_modules/zod/src/v4/classic/tests/default-locale.test.ts +32 -0
- package/node_modules/zod/src/v4/classic/tests/default.test.ts +46 -0
- package/node_modules/zod/src/v4/classic/tests/detached-methods.test.ts +31 -7
- package/node_modules/zod/src/v4/classic/tests/discriminated-unions.test.ts +261 -13
- package/node_modules/zod/src/v4/classic/tests/enum.test.ts +20 -0
- package/node_modules/zod/src/v4/classic/tests/error-utils.test.ts +112 -2
- package/node_modules/zod/src/v4/classic/tests/error.test.ts +403 -6
- package/node_modules/zod/src/v4/classic/tests/from-json-schema.test.ts +582 -10
- package/node_modules/zod/src/v4/classic/tests/function.test.ts +31 -0
- package/node_modules/zod/src/v4/classic/tests/global-config.test.ts +2 -9
- package/node_modules/zod/src/v4/classic/tests/hash.test.ts +1 -2
- package/node_modules/zod/src/v4/classic/tests/iban.test.ts +81 -0
- package/node_modules/zod/src/v4/classic/tests/in-out.test.ts +159 -0
- package/node_modules/zod/src/v4/classic/tests/index.test.ts +21 -2
- package/node_modules/zod/src/v4/classic/tests/instance-footprint.test.ts +319 -0
- package/node_modules/zod/src/v4/classic/tests/instanceof.test.ts +67 -0
- package/node_modules/zod/src/v4/classic/tests/intersection.test.ts +136 -0
- package/node_modules/zod/src/v4/classic/tests/issue-schema.test.ts +215 -0
- package/node_modules/zod/src/v4/classic/tests/jitless-allows-eval.test.ts +3 -10
- package/node_modules/zod/src/v4/classic/tests/lazy.test.ts +36 -1
- package/node_modules/zod/src/v4/classic/tests/literal.test.ts +12 -1
- package/node_modules/zod/src/v4/classic/tests/map.test.ts +12 -0
- package/node_modules/zod/src/v4/classic/tests/number.test.ts +85 -9
- package/node_modules/zod/src/v4/classic/tests/object.test.ts +301 -12
- package/node_modules/zod/src/v4/classic/tests/optin-ladder.test.ts +235 -0
- package/node_modules/zod/src/v4/classic/tests/optional.test.ts +49 -16
- package/node_modules/zod/src/v4/classic/tests/partial.test.ts +51 -4
- package/node_modules/zod/src/v4/classic/tests/prefault.test.ts +70 -0
- package/node_modules/zod/src/v4/classic/tests/preprocess-types.test.ts +20 -2
- package/node_modules/zod/src/v4/classic/tests/properties.test.ts +141 -0
- package/node_modules/zod/src/v4/classic/tests/readonly.test.ts +0 -68
- package/node_modules/zod/src/v4/classic/tests/record.test.ts +186 -18
- package/node_modules/zod/src/v4/classic/tests/recursive-types.test.ts +79 -3
- package/node_modules/zod/src/v4/classic/tests/redos.test.ts +68 -0
- package/node_modules/zod/src/v4/classic/tests/refine.test.ts +60 -0
- package/node_modules/zod/src/v4/classic/tests/set.test.ts +9 -0
- package/node_modules/zod/src/v4/classic/tests/standard-schema.test.ts +19 -0
- package/node_modules/zod/src/v4/classic/tests/string.test.ts +222 -6
- package/node_modules/zod/src/v4/classic/tests/stringbool.test.ts +18 -0
- package/node_modules/zod/src/v4/classic/tests/template-literal.test.ts +44 -3
- package/node_modules/zod/src/v4/classic/tests/to-json-schema.test.ts +1812 -204
- package/node_modules/zod/src/v4/classic/tests/tuple.test.ts +45 -30
- package/node_modules/zod/src/v4/classic/tests/union.test.ts +39 -2
- package/node_modules/zod/src/v4/classic/tests/validate.test.ts +645 -0
- package/node_modules/zod/src/v4/classic/tests/validations.test.ts +2 -2
- package/node_modules/zod/src/v4/core/api.ts +87 -35
- package/node_modules/zod/src/v4/core/checks.ts +119 -146
- package/node_modules/zod/src/v4/core/compile.ts +2313 -0
- package/node_modules/zod/src/v4/core/core.ts +99 -22
- package/node_modules/zod/src/v4/core/doc.ts +17 -9
- package/node_modules/zod/src/v4/core/errors.ts +113 -25
- package/node_modules/zod/src/v4/core/index.ts +3 -0
- package/node_modules/zod/src/v4/core/json-schema-generator.ts +8 -3
- package/node_modules/zod/src/v4/core/json-schema-processors.ts +424 -156
- package/node_modules/zod/src/v4/core/json-schema.ts +2 -1
- package/node_modules/zod/src/v4/core/memoizer.ts +331 -0
- package/node_modules/zod/src/v4/core/parse.ts +164 -50
- package/node_modules/zod/src/v4/core/regexes.ts +42 -15
- package/node_modules/zod/src/v4/core/registries.ts +2 -2
- package/node_modules/zod/src/v4/core/schemas.ts +1000 -538
- package/node_modules/zod/src/v4/core/tests/cached.test.ts +54 -0
- package/node_modules/zod/src/v4/core/tests/compile-differential.test.ts +1004 -0
- package/node_modules/zod/src/v4/core/tests/compile-generative.test.ts +445 -0
- package/node_modules/zod/src/v4/core/tests/compile-global.test.ts +89 -0
- package/node_modules/zod/src/v4/core/tests/compile-off-by-default.test.ts +26 -0
- package/node_modules/zod/src/v4/core/tests/compile-stats.test.ts +34 -0
- package/node_modules/zod/src/v4/core/tests/compile.test.ts +2036 -0
- package/node_modules/zod/src/v4/core/tests/email-regex.test.ts +140 -0
- package/node_modules/zod/src/v4/core/tests/locales/el.test.ts +1 -2
- package/node_modules/zod/src/v4/core/tests/locales/es.test.ts +1 -2
- package/node_modules/zod/src/v4/core/tests/locales/fr.test.ts +3 -3
- package/node_modules/zod/src/v4/core/tests/locales/parity.test.ts +42 -0
- package/node_modules/zod/src/v4/core/tests/locales/tg.test.ts +85 -0
- package/node_modules/zod/src/v4/core/tests/locales/tk.test.ts +69 -0
- package/node_modules/zod/src/v4/core/tests/polyfill-collision.test.ts +46 -0
- package/node_modules/zod/src/v4/core/tests/treeshake.test.ts +51 -0
- package/node_modules/zod/src/v4/core/tests/url-no-canparse.test.ts +133 -0
- package/node_modules/zod/src/v4/core/to-json-schema.ts +283 -48
- package/node_modules/zod/src/v4/core/util.ts +454 -157
- package/node_modules/zod/src/v4/core/versions.ts +2 -2
- package/node_modules/zod/src/v4/core/visit.ts +193 -0
- package/node_modules/zod/src/v4/index.ts +3 -3
- package/node_modules/zod/src/v4/locales/ar.ts +5 -0
- package/node_modules/zod/src/v4/locales/az.ts +5 -0
- package/node_modules/zod/src/v4/locales/be.ts +12 -0
- package/node_modules/zod/src/v4/locales/bg.ts +5 -0
- package/node_modules/zod/src/v4/locales/bn.ts +123 -0
- package/node_modules/zod/src/v4/locales/ca.ts +5 -0
- package/node_modules/zod/src/v4/locales/ckb.ts +140 -0
- package/node_modules/zod/src/v4/locales/cs.ts +5 -0
- package/node_modules/zod/src/v4/locales/da.ts +7 -2
- package/node_modules/zod/src/v4/locales/de.ts +5 -0
- package/node_modules/zod/src/v4/locales/el.ts +3 -0
- package/node_modules/zod/src/v4/locales/en.ts +17 -4
- package/node_modules/zod/src/v4/locales/eo.ts +5 -0
- package/node_modules/zod/src/v4/locales/es.ts +4 -0
- package/node_modules/zod/src/v4/locales/fa.ts +5 -0
- package/node_modules/zod/src/v4/locales/fi.ts +5 -0
- package/node_modules/zod/src/v4/locales/fr-CA.ts +5 -0
- package/node_modules/zod/src/v4/locales/fr.ts +21 -14
- package/node_modules/zod/src/v4/locales/gu.ts +123 -0
- package/node_modules/zod/src/v4/locales/he.ts +8 -1
- package/node_modules/zod/src/v4/locales/hi.ts +126 -0
- package/node_modules/zod/src/v4/locales/hr.ts +4 -0
- package/node_modules/zod/src/v4/locales/hu.ts +5 -0
- package/node_modules/zod/src/v4/locales/hy.ts +11 -0
- package/node_modules/zod/src/v4/locales/id.ts +5 -0
- package/node_modules/zod/src/v4/locales/index.ts +11 -0
- package/node_modules/zod/src/v4/locales/is.ts +5 -0
- package/node_modules/zod/src/v4/locales/it.ts +5 -0
- package/node_modules/zod/src/v4/locales/ja.ts +5 -0
- package/node_modules/zod/src/v4/locales/ka.ts +5 -0
- package/node_modules/zod/src/v4/locales/km.ts +5 -0
- package/node_modules/zod/src/v4/locales/kn.ts +126 -0
- package/node_modules/zod/src/v4/locales/ko.ts +5 -0
- package/node_modules/zod/src/v4/locales/lt.ts +4 -0
- package/node_modules/zod/src/v4/locales/mk.ts +5 -0
- package/node_modules/zod/src/v4/locales/ms.ts +5 -0
- package/node_modules/zod/src/v4/locales/ne.ts +128 -0
- package/node_modules/zod/src/v4/locales/nl.ts +5 -0
- package/node_modules/zod/src/v4/locales/nn.ts +121 -0
- package/node_modules/zod/src/v4/locales/no.ts +7 -2
- package/node_modules/zod/src/v4/locales/ota.ts +5 -0
- package/node_modules/zod/src/v4/locales/pl.ts +5 -0
- package/node_modules/zod/src/v4/locales/ps.ts +5 -0
- package/node_modules/zod/src/v4/locales/pt-BR.ts +161 -0
- package/node_modules/zod/src/v4/locales/pt.ts +101 -58
- package/node_modules/zod/src/v4/locales/ro.ts +3 -0
- package/node_modules/zod/src/v4/locales/ru.ts +12 -0
- package/node_modules/zod/src/v4/locales/sk.ts +123 -0
- package/node_modules/zod/src/v4/locales/sl.ts +5 -0
- package/node_modules/zod/src/v4/locales/sv.ts +7 -2
- package/node_modules/zod/src/v4/locales/ta.ts +5 -0
- package/node_modules/zod/src/v4/locales/tg.ts +135 -0
- package/node_modules/zod/src/v4/locales/th.ts +5 -0
- package/node_modules/zod/src/v4/locales/tk.ts +113 -0
- package/node_modules/zod/src/v4/locales/tr.ts +5 -0
- package/node_modules/zod/src/v4/locales/uk.ts +5 -0
- package/node_modules/zod/src/v4/locales/ur.ts +5 -0
- package/node_modules/zod/src/v4/locales/uz.ts +3 -0
- package/node_modules/zod/src/v4/locales/vi.ts +5 -0
- package/node_modules/zod/src/v4/locales/yo.ts +5 -0
- package/node_modules/zod/src/v4/locales/zh-CN.ts +5 -0
- package/node_modules/zod/src/v4/locales/zh-TW.ts +5 -0
- package/node_modules/zod/src/v4/mini/checks.ts +1 -0
- package/node_modules/zod/src/v4/mini/deep-partial.ts +73 -0
- package/node_modules/zod/src/v4/mini/external.ts +12 -1
- package/node_modules/zod/src/v4/mini/in-out.ts +45 -0
- package/node_modules/zod/src/v4/mini/parse.ts +2 -0
- package/node_modules/zod/src/v4/mini/schemas.ts +167 -63
- package/node_modules/zod/src/v4/mini/tests/apply.test.ts +33 -0
- package/node_modules/zod/src/v4/mini/tests/assignability.test.ts +62 -1
- package/node_modules/zod/src/v4/mini/tests/checks.test.ts +14 -0
- package/node_modules/zod/src/v4/mini/tests/codec.test.ts +35 -1
- package/node_modules/zod/src/v4/mini/tests/computed.test.ts +11 -17
- package/node_modules/zod/src/v4/mini/tests/cyclic-data.test.ts +84 -0
- package/node_modules/zod/src/v4/mini/tests/deep-partial.test.ts +54 -0
- package/node_modules/zod/src/v4/mini/tests/error.test.ts +23 -4
- package/node_modules/zod/src/v4/mini/tests/functions.test.ts +9 -0
- package/node_modules/zod/src/v4/mini/tests/index.test.ts +158 -5
- package/node_modules/zod/src/v4/mini/tests/number.test.ts +14 -0
- package/node_modules/zod/src/v4/mini/tests/object.test.ts +65 -0
- package/node_modules/zod/src/v4/mini/tests/recursive-types.test.ts +16 -0
- package/node_modules/zod/src/v4/mini/tests/string.test.ts +44 -0
- package/node_modules/zod/v3/ZodError.cjs +41 -12
- package/node_modules/zod/v3/ZodError.d.cts +1 -1
- package/node_modules/zod/v3/ZodError.d.ts +1 -1
- package/node_modules/zod/v3/ZodError.js +22 -12
- package/node_modules/zod/v3/errors.cjs +19 -0
- package/node_modules/zod/v3/external.cjs +19 -0
- package/node_modules/zod/v3/helpers/enumUtil.cjs +19 -0
- package/node_modules/zod/v3/helpers/errorUtil.cjs +20 -1
- package/node_modules/zod/v3/helpers/errorUtil.js +1 -1
- package/node_modules/zod/v3/helpers/parseUtil.cjs +19 -0
- package/node_modules/zod/v3/helpers/partialUtil.cjs +19 -0
- package/node_modules/zod/v3/helpers/typeAliases.cjs +19 -0
- package/node_modules/zod/v3/helpers/util.cjs +19 -0
- package/node_modules/zod/v3/index.cjs +19 -0
- package/node_modules/zod/v3/standard-schema.cjs +19 -0
- package/node_modules/zod/v3/types.cjs +26 -5
- package/node_modules/zod/v3/types.js +7 -5
- package/node_modules/zod/v4/classic/checks.cjs +21 -1
- package/node_modules/zod/v4/classic/checks.d.cts +1 -1
- package/node_modules/zod/v4/classic/checks.d.ts +1 -1
- package/node_modules/zod/v4/classic/checks.js +1 -1
- package/node_modules/zod/v4/classic/coerce.cjs +19 -0
- package/node_modules/zod/v4/classic/compat.cjs +19 -0
- package/node_modules/zod/v4/classic/compat.d.cts +9 -11
- package/node_modules/zod/v4/classic/compat.d.ts +9 -11
- package/node_modules/zod/v4/classic/deep-partial.cjs +58 -0
- package/node_modules/zod/v4/classic/deep-partial.d.cts +14 -0
- package/node_modules/zod/v4/classic/deep-partial.d.ts +14 -0
- package/node_modules/zod/v4/classic/deep-partial.js +13 -0
- package/node_modules/zod/v4/classic/errors.cjs +62 -34
- package/node_modules/zod/v4/classic/errors.d.cts +3 -4
- package/node_modules/zod/v4/classic/errors.d.ts +3 -4
- package/node_modules/zod/v4/classic/errors.js +43 -34
- package/node_modules/zod/v4/classic/external.cjs +51 -27
- package/node_modules/zod/v4/classic/external.d.cts +5 -2
- package/node_modules/zod/v4/classic/external.d.ts +5 -2
- package/node_modules/zod/v4/classic/external.js +5 -8
- package/node_modules/zod/v4/classic/from-json-schema.cjs +376 -75
- package/node_modules/zod/v4/classic/from-json-schema.js +357 -75
- package/node_modules/zod/v4/classic/in-out.cjs +82 -0
- package/node_modules/zod/v4/classic/in-out.d.cts +8 -0
- package/node_modules/zod/v4/classic/in-out.d.ts +8 -0
- package/node_modules/zod/v4/classic/in-out.js +36 -0
- package/node_modules/zod/v4/classic/index.cjs +21 -2
- package/node_modules/zod/v4/classic/index.d.cts +1 -2
- package/node_modules/zod/v4/classic/index.d.ts +1 -2
- package/node_modules/zod/v4/classic/index.js +2 -2
- package/node_modules/zod/v4/classic/iso.cjs +30 -22
- package/node_modules/zod/v4/classic/iso.d.cts +2 -17
- package/node_modules/zod/v4/classic/iso.d.ts +2 -17
- package/node_modules/zod/v4/classic/iso.js +2 -17
- package/node_modules/zod/v4/classic/parse.cjs +23 -1
- package/node_modules/zod/v4/classic/parse.d.cts +17 -4
- package/node_modules/zod/v4/classic/parse.d.ts +17 -4
- package/node_modules/zod/v4/classic/parse.js +1 -0
- package/node_modules/zod/v4/classic/schemas.cjs +591 -426
- package/node_modules/zod/v4/classic/schemas.d.cts +68 -19
- package/node_modules/zod/v4/classic/schemas.d.ts +68 -19
- package/node_modules/zod/v4/classic/schemas.js +564 -424
- package/node_modules/zod/v4/core/api.cjs +66 -24
- package/node_modules/zod/v4/core/api.d.cts +22 -12
- package/node_modules/zod/v4/core/api.d.ts +22 -12
- package/node_modules/zod/v4/core/api.js +44 -24
- package/node_modules/zod/v4/core/checks.cjs +88 -128
- package/node_modules/zod/v4/core/checks.d.cts +29 -13
- package/node_modules/zod/v4/core/checks.d.ts +29 -13
- package/node_modules/zod/v4/core/checks.js +68 -127
- package/node_modules/zod/v4/core/compile.cjs +1908 -0
- package/node_modules/zod/v4/core/compile.d.cts +65 -0
- package/node_modules/zod/v4/core/compile.d.ts +65 -0
- package/node_modules/zod/v4/core/compile.js +1858 -0
- package/node_modules/zod/v4/core/core.cjs +101 -19
- package/node_modules/zod/v4/core/core.d.cts +16 -4
- package/node_modules/zod/v4/core/core.d.ts +16 -4
- package/node_modules/zod/v4/core/core.js +83 -20
- package/node_modules/zod/v4/core/doc.cjs +31 -9
- package/node_modules/zod/v4/core/doc.d.cts +3 -1
- package/node_modules/zod/v4/core/doc.d.ts +3 -1
- package/node_modules/zod/v4/core/doc.js +12 -9
- package/node_modules/zod/v4/core/errors.cjs +126 -25
- package/node_modules/zod/v4/core/errors.d.cts +4 -0
- package/node_modules/zod/v4/core/errors.d.ts +4 -0
- package/node_modules/zod/v4/core/errors.js +107 -25
- package/node_modules/zod/v4/core/index.cjs +24 -1
- package/node_modules/zod/v4/core/index.d.cts +3 -0
- package/node_modules/zod/v4/core/index.d.ts +3 -0
- package/node_modules/zod/v4/core/index.js +3 -0
- package/node_modules/zod/v4/core/json-schema-generator.cjs +24 -1
- package/node_modules/zod/v4/core/json-schema-generator.d.cts +2 -2
- package/node_modules/zod/v4/core/json-schema-generator.d.ts +2 -2
- package/node_modules/zod/v4/core/json-schema-generator.js +6 -2
- package/node_modules/zod/v4/core/json-schema-processors.cjs +441 -156
- package/node_modules/zod/v4/core/json-schema-processors.d.cts +16 -0
- package/node_modules/zod/v4/core/json-schema-processors.d.ts +16 -0
- package/node_modules/zod/v4/core/json-schema-processors.js +400 -158
- package/node_modules/zod/v4/core/json-schema.cjs +19 -0
- package/node_modules/zod/v4/core/json-schema.d.cts +2 -1
- package/node_modules/zod/v4/core/json-schema.d.ts +2 -1
- package/node_modules/zod/v4/core/memoizer.cjs +360 -0
- package/node_modules/zod/v4/core/memoizer.d.cts +15 -0
- package/node_modules/zod/v4/core/memoizer.d.ts +15 -0
- package/node_modules/zod/v4/core/memoizer.js +311 -0
- package/node_modules/zod/v4/core/parse.cjs +148 -46
- package/node_modules/zod/v4/core/parse.d.cts +14 -11
- package/node_modules/zod/v4/core/parse.d.ts +14 -11
- package/node_modules/zod/v4/core/parse.js +127 -45
- package/node_modules/zod/v4/core/regexes.cjs +54 -17
- package/node_modules/zod/v4/core/regexes.d.cts +5 -0
- package/node_modules/zod/v4/core/regexes.d.ts +5 -0
- package/node_modules/zod/v4/core/regexes.js +32 -15
- package/node_modules/zod/v4/core/registries.cjs +19 -0
- package/node_modules/zod/v4/core/registries.js +2 -2
- package/node_modules/zod/v4/core/schemas.cjs +785 -386
- package/node_modules/zod/v4/core/schemas.d.cts +123 -34
- package/node_modules/zod/v4/core/schemas.d.ts +123 -34
- package/node_modules/zod/v4/core/schemas.js +753 -386
- package/node_modules/zod/v4/core/standard-schema.cjs +19 -0
- package/node_modules/zod/v4/core/to-json-schema.cjs +269 -45
- package/node_modules/zod/v4/core/to-json-schema.d.cts +45 -5
- package/node_modules/zod/v4/core/to-json-schema.d.ts +45 -5
- package/node_modules/zod/v4/core/to-json-schema.js +247 -44
- package/node_modules/zod/v4/core/util.cjs +372 -157
- package/node_modules/zod/v4/core/util.d.cts +79 -1
- package/node_modules/zod/v4/core/util.d.ts +79 -1
- package/node_modules/zod/v4/core/util.js +341 -156
- package/node_modules/zod/v4/core/versions.cjs +21 -2
- package/node_modules/zod/v4/core/versions.d.cts +1 -1
- package/node_modules/zod/v4/core/versions.d.ts +1 -1
- package/node_modules/zod/v4/core/versions.js +2 -2
- package/node_modules/zod/v4/core/visit.cjs +214 -0
- package/node_modules/zod/v4/core/visit.d.cts +30 -0
- package/node_modules/zod/v4/core/visit.d.ts +30 -0
- package/node_modules/zod/v4/core/visit.js +169 -0
- package/node_modules/zod/v4/index.cjs +34 -5
- package/node_modules/zod/v4/index.d.cts +2 -2
- package/node_modules/zod/v4/index.d.ts +2 -2
- package/node_modules/zod/v4/index.js +3 -2
- package/node_modules/zod/v4/locales/ar.cjs +5 -0
- package/node_modules/zod/v4/locales/ar.js +5 -0
- package/node_modules/zod/v4/locales/az.cjs +5 -0
- package/node_modules/zod/v4/locales/az.js +5 -0
- package/node_modules/zod/v4/locales/be.cjs +12 -0
- package/node_modules/zod/v4/locales/be.js +12 -0
- package/node_modules/zod/v4/locales/bg.cjs +5 -0
- package/node_modules/zod/v4/locales/bg.js +5 -0
- package/node_modules/zod/v4/locales/bn.cjs +140 -0
- package/node_modules/zod/v4/locales/bn.d.cts +5 -0
- package/node_modules/zod/v4/locales/bn.d.ts +4 -0
- package/node_modules/zod/v4/locales/bn.js +113 -0
- package/node_modules/zod/v4/locales/ca.cjs +5 -0
- package/node_modules/zod/v4/locales/ca.js +5 -0
- package/node_modules/zod/v4/locales/ckb.cjs +160 -0
- package/node_modules/zod/v4/locales/ckb.d.cts +5 -0
- package/node_modules/zod/v4/locales/ckb.d.ts +4 -0
- package/node_modules/zod/v4/locales/ckb.js +133 -0
- package/node_modules/zod/v4/locales/cs.cjs +5 -0
- package/node_modules/zod/v4/locales/cs.js +5 -0
- package/node_modules/zod/v4/locales/da.cjs +7 -2
- package/node_modules/zod/v4/locales/da.js +7 -2
- package/node_modules/zod/v4/locales/de.cjs +5 -0
- package/node_modules/zod/v4/locales/de.js +5 -0
- package/node_modules/zod/v4/locales/el.cjs +3 -0
- package/node_modules/zod/v4/locales/el.js +3 -0
- package/node_modules/zod/v4/locales/en.cjs +16 -4
- package/node_modules/zod/v4/locales/en.js +16 -4
- package/node_modules/zod/v4/locales/eo.cjs +5 -0
- package/node_modules/zod/v4/locales/eo.js +5 -0
- package/node_modules/zod/v4/locales/es.cjs +4 -0
- package/node_modules/zod/v4/locales/es.js +4 -0
- package/node_modules/zod/v4/locales/fa.cjs +5 -0
- package/node_modules/zod/v4/locales/fa.js +5 -0
- package/node_modules/zod/v4/locales/fi.cjs +5 -0
- package/node_modules/zod/v4/locales/fi.js +5 -0
- package/node_modules/zod/v4/locales/fr-CA.cjs +5 -0
- package/node_modules/zod/v4/locales/fr-CA.js +5 -0
- package/node_modules/zod/v4/locales/fr.cjs +18 -14
- package/node_modules/zod/v4/locales/fr.js +18 -14
- package/node_modules/zod/v4/locales/gu.cjs +140 -0
- package/node_modules/zod/v4/locales/gu.d.cts +5 -0
- package/node_modules/zod/v4/locales/gu.d.ts +4 -0
- package/node_modules/zod/v4/locales/gu.js +113 -0
- package/node_modules/zod/v4/locales/he.cjs +7 -0
- package/node_modules/zod/v4/locales/he.js +7 -0
- package/node_modules/zod/v4/locales/hi.cjs +138 -0
- package/node_modules/zod/v4/locales/hi.d.cts +5 -0
- package/node_modules/zod/v4/locales/hi.d.ts +4 -0
- package/node_modules/zod/v4/locales/hi.js +111 -0
- package/node_modules/zod/v4/locales/hr.cjs +4 -0
- package/node_modules/zod/v4/locales/hr.js +4 -0
- package/node_modules/zod/v4/locales/hu.cjs +5 -0
- package/node_modules/zod/v4/locales/hu.js +5 -0
- package/node_modules/zod/v4/locales/hy.cjs +11 -0
- package/node_modules/zod/v4/locales/hy.js +11 -0
- package/node_modules/zod/v4/locales/id.cjs +5 -0
- package/node_modules/zod/v4/locales/id.js +5 -0
- package/node_modules/zod/v4/locales/index.cjs +43 -2
- package/node_modules/zod/v4/locales/index.d.cts +11 -0
- package/node_modules/zod/v4/locales/index.d.ts +11 -0
- package/node_modules/zod/v4/locales/index.js +11 -0
- package/node_modules/zod/v4/locales/is.cjs +5 -0
- package/node_modules/zod/v4/locales/is.js +5 -0
- package/node_modules/zod/v4/locales/it.cjs +5 -0
- package/node_modules/zod/v4/locales/it.js +5 -0
- package/node_modules/zod/v4/locales/ja.cjs +5 -0
- package/node_modules/zod/v4/locales/ja.js +5 -0
- package/node_modules/zod/v4/locales/ka.cjs +5 -0
- package/node_modules/zod/v4/locales/ka.js +5 -0
- package/node_modules/zod/v4/locales/km.cjs +5 -0
- package/node_modules/zod/v4/locales/km.js +5 -0
- package/node_modules/zod/v4/locales/kn.cjs +143 -0
- package/node_modules/zod/v4/locales/kn.d.cts +5 -0
- package/node_modules/zod/v4/locales/kn.d.ts +4 -0
- package/node_modules/zod/v4/locales/kn.js +116 -0
- package/node_modules/zod/v4/locales/ko.cjs +5 -0
- package/node_modules/zod/v4/locales/ko.js +5 -0
- package/node_modules/zod/v4/locales/lt.cjs +4 -0
- package/node_modules/zod/v4/locales/lt.js +4 -0
- package/node_modules/zod/v4/locales/mk.cjs +5 -0
- package/node_modules/zod/v4/locales/mk.js +5 -0
- package/node_modules/zod/v4/locales/ms.cjs +5 -0
- package/node_modules/zod/v4/locales/ms.js +5 -0
- package/node_modules/zod/v4/locales/ne.cjs +138 -0
- package/node_modules/zod/v4/locales/ne.d.cts +5 -0
- package/node_modules/zod/v4/locales/ne.d.ts +4 -0
- package/node_modules/zod/v4/locales/ne.js +111 -0
- package/node_modules/zod/v4/locales/nl.cjs +5 -0
- package/node_modules/zod/v4/locales/nl.js +5 -0
- package/node_modules/zod/v4/locales/nn.cjs +140 -0
- package/node_modules/zod/v4/locales/nn.d.cts +5 -0
- package/node_modules/zod/v4/locales/nn.d.ts +4 -0
- package/node_modules/zod/v4/locales/nn.js +113 -0
- package/node_modules/zod/v4/locales/no.cjs +7 -2
- package/node_modules/zod/v4/locales/no.js +7 -2
- package/node_modules/zod/v4/locales/ota.cjs +5 -0
- package/node_modules/zod/v4/locales/ota.js +5 -0
- package/node_modules/zod/v4/locales/pl.cjs +5 -0
- package/node_modules/zod/v4/locales/pl.js +5 -0
- package/node_modules/zod/v4/locales/ps.cjs +5 -0
- package/node_modules/zod/v4/locales/ps.js +5 -0
- package/node_modules/zod/v4/locales/pt-BR.cjs +170 -0
- package/node_modules/zod/v4/locales/pt-BR.d.cts +5 -0
- package/node_modules/zod/v4/locales/pt-BR.d.ts +4 -0
- package/node_modules/zod/v4/locales/pt-BR.js +143 -0
- package/node_modules/zod/v4/locales/pt.cjs +89 -55
- package/node_modules/zod/v4/locales/pt.js +89 -55
- package/node_modules/zod/v4/locales/ro.cjs +3 -0
- package/node_modules/zod/v4/locales/ro.js +3 -0
- package/node_modules/zod/v4/locales/ru.cjs +12 -0
- package/node_modules/zod/v4/locales/ru.js +12 -0
- package/node_modules/zod/v4/locales/sk.cjs +143 -0
- package/node_modules/zod/v4/locales/sk.d.cts +5 -0
- package/node_modules/zod/v4/locales/sk.d.ts +4 -0
- package/node_modules/zod/v4/locales/sk.js +116 -0
- package/node_modules/zod/v4/locales/sl.cjs +5 -0
- package/node_modules/zod/v4/locales/sl.js +5 -0
- package/node_modules/zod/v4/locales/sv.cjs +7 -2
- package/node_modules/zod/v4/locales/sv.js +7 -2
- package/node_modules/zod/v4/locales/ta.cjs +5 -0
- package/node_modules/zod/v4/locales/ta.js +5 -0
- package/node_modules/zod/v4/locales/tg.cjs +144 -0
- package/node_modules/zod/v4/locales/tg.d.cts +5 -0
- package/node_modules/zod/v4/locales/tg.d.ts +4 -0
- package/node_modules/zod/v4/locales/tg.js +117 -0
- package/node_modules/zod/v4/locales/th.cjs +5 -0
- package/node_modules/zod/v4/locales/th.js +5 -0
- package/node_modules/zod/v4/locales/tk.cjs +134 -0
- package/node_modules/zod/v4/locales/tk.d.cts +5 -0
- package/node_modules/zod/v4/locales/tk.d.ts +4 -0
- package/node_modules/zod/v4/locales/tk.js +107 -0
- package/node_modules/zod/v4/locales/tr.cjs +5 -0
- package/node_modules/zod/v4/locales/tr.js +5 -0
- package/node_modules/zod/v4/locales/uk.cjs +5 -0
- package/node_modules/zod/v4/locales/uk.js +5 -0
- package/node_modules/zod/v4/locales/ur.cjs +5 -0
- package/node_modules/zod/v4/locales/ur.js +5 -0
- package/node_modules/zod/v4/locales/uz.cjs +3 -0
- package/node_modules/zod/v4/locales/uz.js +3 -0
- package/node_modules/zod/v4/locales/vi.cjs +5 -0
- package/node_modules/zod/v4/locales/vi.js +5 -0
- package/node_modules/zod/v4/locales/yo.cjs +5 -0
- package/node_modules/zod/v4/locales/yo.js +5 -0
- package/node_modules/zod/v4/locales/zh-CN.cjs +5 -0
- package/node_modules/zod/v4/locales/zh-CN.js +5 -0
- package/node_modules/zod/v4/locales/zh-TW.cjs +5 -0
- package/node_modules/zod/v4/locales/zh-TW.js +5 -0
- package/node_modules/zod/v4/mini/checks.cjs +21 -1
- package/node_modules/zod/v4/mini/checks.d.cts +1 -1
- package/node_modules/zod/v4/mini/checks.d.ts +1 -1
- package/node_modules/zod/v4/mini/checks.js +1 -1
- package/node_modules/zod/v4/mini/coerce.cjs +19 -0
- package/node_modules/zod/v4/mini/deep-partial.cjs +58 -0
- package/node_modules/zod/v4/mini/deep-partial.d.cts +14 -0
- package/node_modules/zod/v4/mini/deep-partial.d.ts +14 -0
- package/node_modules/zod/v4/mini/deep-partial.js +13 -0
- package/node_modules/zod/v4/mini/external.cjs +33 -1
- package/node_modules/zod/v4/mini/external.d.cts +5 -2
- package/node_modules/zod/v4/mini/external.d.ts +5 -2
- package/node_modules/zod/v4/mini/external.js +3 -1
- package/node_modules/zod/v4/mini/in-out.cjs +82 -0
- package/node_modules/zod/v4/mini/in-out.d.cts +8 -0
- package/node_modules/zod/v4/mini/in-out.d.ts +8 -0
- package/node_modules/zod/v4/mini/in-out.js +36 -0
- package/node_modules/zod/v4/mini/index.cjs +19 -0
- package/node_modules/zod/v4/mini/iso.cjs +19 -0
- package/node_modules/zod/v4/mini/parse.cjs +22 -1
- package/node_modules/zod/v4/mini/parse.d.cts +1 -1
- package/node_modules/zod/v4/mini/parse.d.ts +1 -1
- package/node_modules/zod/v4/mini/parse.js +1 -1
- package/node_modules/zod/v4/mini/schemas.cjs +117 -53
- package/node_modules/zod/v4/mini/schemas.d.cts +49 -14
- package/node_modules/zod/v4/mini/schemas.d.ts +49 -14
- package/node_modules/zod/v4/mini/schemas.js +92 -51
- package/node_modules/zod/v4-mini/index.cjs +19 -0
- package/openclaw.plugin.json +15 -1
- package/package.json +9 -7
- package/node_modules/zod/src/v4/core/config.ts +0 -15
|
@@ -23,11 +23,24 @@ var __importStar = (this && this.__importStar) || function (mod) {
|
|
|
23
23
|
return result;
|
|
24
24
|
};
|
|
25
25
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
|
-
exports.$
|
|
27
|
-
exports.$ZodCustom = exports.$ZodLazy = exports.$ZodPromise = exports.$ZodFunction = exports.$ZodTemplateLiteral = exports.$ZodReadonly = exports.$ZodPreprocess = exports.$ZodCodec = exports.$ZodPipe = exports.$ZodNaN = exports.$ZodCatch = exports.$ZodSuccess = exports.$ZodNonOptional = exports.$ZodPrefault = exports.$ZodDefault = exports.$ZodNullable = exports.$ZodExactOptional = exports.$ZodOptional = exports.$ZodTransform = exports.$ZodFile = exports.$ZodLiteral = exports.$ZodEnum = exports.$ZodSet = exports.$ZodMap = exports.$ZodRecord = void 0;
|
|
26
|
+
exports.$ZodObject = exports.$ZodArray = exports.$ZodDate = exports.$ZodVoid = exports.$ZodNever = exports.$ZodUnknown = exports.$ZodAny = exports.$ZodNull = exports.$ZodUndefined = exports.$ZodSymbol = exports.$ZodBigIntFormat = exports.$ZodBigInt = exports.$ZodBoolean = exports.$ZodNumberFormat = exports.$ZodNumber = exports.$ZodCustomStringFormat = exports.$ZodJWT = exports.$ZodIBAN = exports.$ZodCreditCard = exports.$ZodE164 = exports.$ZodBase64URL = exports.base64urlCharset = exports.$ZodBase64 = exports.base64Charset = exports.$ZodCIDRv6 = exports.$ZodCIDRv4 = exports.$ZodMAC = exports.$ZodIPv6 = exports.$ZodIPv4 = exports.$ZodISODuration = exports.$ZodISOTime = exports.$ZodISODate = exports.$ZodISODateTime = exports.$ZodKSUID = exports.$ZodXID = exports.$ZodULID = exports.$ZodCUID2 = exports.$ZodCUID = exports.$ZodNanoID = exports.$ZodEmoji = exports.$ZodURL = exports.URL_UNPARSEABLE = exports.URL_BAD_FORMAT = exports.$ZodEmail = exports.$ZodUUID = exports.$ZodGUID = exports.$ZodStringFormat = exports.$ZodString = exports.clone = exports.$ZodType = void 0;
|
|
27
|
+
exports.$ZodCustom = exports.$ZodLazy = exports.$ZodPromise = exports.$ZodFunction = exports.$ZodTemplateLiteral = exports.$ZodReadonly = exports.$ZodPreprocess = exports.$ZodCodec = exports.$ZodPipe = exports.$ZodNaN = exports.$ZodCatch = exports.$ZodSuccess = exports.$ZodNonOptional = exports.$ZodPrefault = exports.$ZodDefault = exports.$ZodNullable = exports.$ZodExactOptional = exports.$ZodOptional = exports.$ZodTransform = exports.$ZodFile = exports.$ZodLiteral = exports.$ZodEnum = exports.$ZodSet = exports.$ZodMap = exports.$ZodRecord = exports.$ZodTuple = exports.$ZodIntersection = exports.$ZodDiscriminatedUnion = exports.$ZodXor = exports.$ZodUnion = exports.$ZodObjectJIT = void 0;
|
|
28
|
+
exports.standardProps = standardProps;
|
|
29
|
+
exports.canParseURL = canParseURL;
|
|
30
|
+
exports.validateURL = validateURL;
|
|
31
|
+
exports.parseURLObject = parseURLObject;
|
|
32
|
+
exports.stripTabAndNewline = stripTabAndNewline;
|
|
33
|
+
exports.urlHostnameOk = urlHostnameOk;
|
|
34
|
+
exports.urlProtocolOk = urlProtocolOk;
|
|
35
|
+
exports.isValidIPv6 = isValidIPv6;
|
|
36
|
+
exports.isValidCIDRv6 = isValidCIDRv6;
|
|
28
37
|
exports.isValidBase64 = isValidBase64;
|
|
29
38
|
exports.isValidBase64URL = isValidBase64URL;
|
|
39
|
+
exports.isValidCreditCard = isValidCreditCard;
|
|
40
|
+
exports.isValidIBAN = isValidIBAN;
|
|
30
41
|
exports.isValidJWT = isValidJWT;
|
|
42
|
+
exports.getDiscriminatedOption = getDiscriminatedOption;
|
|
43
|
+
exports.mergeValues = mergeValues;
|
|
31
44
|
const checks = __importStar(require("./checks.cjs"));
|
|
32
45
|
const core = __importStar(require("./core.cjs"));
|
|
33
46
|
const doc_js_1 = require("./doc.cjs");
|
|
@@ -41,19 +54,20 @@ exports.$ZodType = core.$constructor("$ZodType", (inst, def) => {
|
|
|
41
54
|
inst._zod.def = def; // set _def property
|
|
42
55
|
inst._zod.bag = inst._zod.bag || {}; // initialize _bag object
|
|
43
56
|
inst._zod.version = versions_js_1.version;
|
|
44
|
-
const
|
|
57
|
+
const defChecks = inst._zod.def.checks;
|
|
45
58
|
// if inst is itself a checks.$ZodCheck, run it as a check
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
59
|
+
const checks = inst._zod.traits.has("$ZodCheck")
|
|
60
|
+
? [inst, ...(defChecks ?? [])]
|
|
61
|
+
: defChecks?.length
|
|
62
|
+
? [...defChecks]
|
|
63
|
+
: [];
|
|
49
64
|
for (const ch of checks) {
|
|
50
65
|
for (const fn of ch._zod.onattach) {
|
|
51
66
|
fn(inst);
|
|
52
67
|
}
|
|
53
68
|
}
|
|
54
69
|
if (checks.length === 0) {
|
|
55
|
-
// deferred initializer
|
|
56
|
-
// inst._zod.parse is not yet defined
|
|
70
|
+
// deferred initializer inst._zod.parse is not yet defined
|
|
57
71
|
(_a = inst._zod).deferred ?? (_a.deferred = []);
|
|
58
72
|
inst._zod.deferred?.push(() => {
|
|
59
73
|
inst._zod.run = inst._zod.parse;
|
|
@@ -61,6 +75,8 @@ exports.$ZodType = core.$constructor("$ZodType", (inst, def) => {
|
|
|
61
75
|
}
|
|
62
76
|
else {
|
|
63
77
|
const runChecks = (payload, checks, ctx) => {
|
|
78
|
+
if (payload.memo)
|
|
79
|
+
return payload;
|
|
64
80
|
let isAborted = util.aborted(payload);
|
|
65
81
|
let asyncResult;
|
|
66
82
|
for (const ch of checks) {
|
|
@@ -85,6 +101,7 @@ exports.$ZodType = core.$constructor("$ZodType", (inst, def) => {
|
|
|
85
101
|
const nextLen = payload.issues.length;
|
|
86
102
|
if (nextLen === currLen)
|
|
87
103
|
return;
|
|
104
|
+
util.attachSchema(payload.issues, currLen, inst);
|
|
88
105
|
if (!isAborted)
|
|
89
106
|
isAborted = util.aborted(payload, currLen);
|
|
90
107
|
});
|
|
@@ -93,6 +110,7 @@ exports.$ZodType = core.$constructor("$ZodType", (inst, def) => {
|
|
|
93
110
|
const nextLen = payload.issues.length;
|
|
94
111
|
if (nextLen === currLen)
|
|
95
112
|
continue;
|
|
113
|
+
util.attachSchema(payload.issues, currLen, inst);
|
|
96
114
|
if (!isAborted)
|
|
97
115
|
isAborted = util.aborted(payload, currLen);
|
|
98
116
|
}
|
|
@@ -124,8 +142,7 @@ exports.$ZodType = core.$constructor("$ZodType", (inst, def) => {
|
|
|
124
142
|
return inst._zod.parse(payload, ctx);
|
|
125
143
|
}
|
|
126
144
|
if (ctx.direction === "backward") {
|
|
127
|
-
// run canary
|
|
128
|
-
// initial pass (no checks)
|
|
145
|
+
// run canary initial pass (no checks)
|
|
129
146
|
const canary = inst._zod.parse({ value: payload.value, issues: [] }, { ...ctx, skipChecks: true });
|
|
130
147
|
if (canary instanceof Promise) {
|
|
131
148
|
return canary.then((canary) => {
|
|
@@ -144,26 +161,45 @@ exports.$ZodType = core.$constructor("$ZodType", (inst, def) => {
|
|
|
144
161
|
return runChecks(result, checks, ctx);
|
|
145
162
|
};
|
|
146
163
|
}
|
|
147
|
-
|
|
148
|
-
|
|
164
|
+
}, {
|
|
165
|
+
// Wrappers extend this by installing a richer factory over it; reading it eagerly would defeat the laziness.
|
|
166
|
+
get "~standard"() {
|
|
167
|
+
return util.hide(this, "~standard", standardProps(this));
|
|
168
|
+
},
|
|
169
|
+
set "~standard"(value) {
|
|
170
|
+
util.own(this, "~standard", value);
|
|
171
|
+
},
|
|
172
|
+
});
|
|
173
|
+
/** The Standard Schema surface for `inst`. Shared so wrappers can extend it without forcing it. */
|
|
174
|
+
// a Standard Schema result only reports issues, so a failure finalizes them straight off the raw payload: no ZodError, and no lazy result to read through
|
|
175
|
+
const toStandardResult = (r, ctx) => r.issues.length ? { issues: r.issues.map((iss) => util.finalizeIssue(iss, ctx, core.config())) } : { value: r.value };
|
|
176
|
+
async function validateAsync(inst, value) {
|
|
177
|
+
const ctx = { async: true };
|
|
178
|
+
return toStandardResult((await inst._zod.run({ value, issues: [] }, ctx)), ctx);
|
|
179
|
+
}
|
|
180
|
+
function standardProps(inst) {
|
|
181
|
+
return {
|
|
149
182
|
validate: (value) => {
|
|
183
|
+
const ctx = { async: false };
|
|
150
184
|
try {
|
|
151
|
-
const r = (
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
catch (_) {
|
|
155
|
-
return (0, parse_js_1.safeParseAsync)(inst, value).then((r) => (r.success ? { value: r.data } : { issues: r.error?.issues }));
|
|
185
|
+
const r = inst._zod.run({ value, issues: [] }, ctx);
|
|
186
|
+
if (!(r instanceof Promise))
|
|
187
|
+
return toStandardResult(r, ctx);
|
|
156
188
|
}
|
|
189
|
+
catch (_) { }
|
|
190
|
+
// async function so a synchronously throwing check rejects instead of escaping validate
|
|
191
|
+
return validateAsync(inst, value);
|
|
157
192
|
},
|
|
158
193
|
vendor: "zod",
|
|
159
194
|
version: 1,
|
|
160
|
-
}
|
|
161
|
-
}
|
|
195
|
+
};
|
|
196
|
+
}
|
|
162
197
|
var util_js_1 = require("./util.cjs");
|
|
163
198
|
Object.defineProperty(exports, "clone", { enumerable: true, get: function () { return util_js_1.clone; } });
|
|
164
199
|
exports.$ZodString = core.$constructor("$ZodString", (inst, def) => {
|
|
165
200
|
exports.$ZodType.init(inst, def);
|
|
166
|
-
|
|
201
|
+
// a format's own pattern, else unbounded; a template literal derives the check-aware form itself
|
|
202
|
+
inst._zod.pattern = def.pattern ?? regexes.anyString;
|
|
167
203
|
inst._zod.parse = (payload, _) => {
|
|
168
204
|
if (def.coerce)
|
|
169
205
|
try {
|
|
@@ -215,66 +251,115 @@ exports.$ZodEmail = core.$constructor("$ZodEmail", (inst, def) => {
|
|
|
215
251
|
def.pattern ?? (def.pattern = regexes.email);
|
|
216
252
|
exports.$ZodStringFormat.init(inst, def);
|
|
217
253
|
});
|
|
254
|
+
/** The `://` guard rejected the input before the URL constructor saw it. */
|
|
255
|
+
exports.URL_BAD_FORMAT = 1;
|
|
256
|
+
/** The URL parser rejected the input. */
|
|
257
|
+
exports.URL_UNPARSEABLE = 2;
|
|
258
|
+
function canParseURL(input) {
|
|
259
|
+
try {
|
|
260
|
+
if (typeof URL !== "undefined" && typeof URL.canParse === "function")
|
|
261
|
+
return URL.canParse(input);
|
|
262
|
+
new URL(input);
|
|
263
|
+
return true;
|
|
264
|
+
}
|
|
265
|
+
catch {
|
|
266
|
+
return false;
|
|
267
|
+
}
|
|
268
|
+
}
|
|
269
|
+
function validateURL(trimmed, def) {
|
|
270
|
+
if (!("normalize" in def) && !("hostname" in def) && !("protocol" in def)) {
|
|
271
|
+
return canParseURL(trimmed) || exports.URL_UNPARSEABLE;
|
|
272
|
+
}
|
|
273
|
+
return parseURLObject(trimmed, def);
|
|
274
|
+
}
|
|
275
|
+
/** Parses a URL while preserving the non-normalizing HTTP guard. */
|
|
276
|
+
function parseURLObject(trimmed, def) {
|
|
277
|
+
// When normalize is off, require :// for http/https URLs. This prevents strings like "http:example.com" or "https:/path" from being silently accepted
|
|
278
|
+
if (!def.normalize && def.protocol?.source === regexes.httpProtocol.source && !/^https?:\/\//i.test(trimmed)) {
|
|
279
|
+
return exports.URL_BAD_FORMAT;
|
|
280
|
+
}
|
|
281
|
+
try {
|
|
282
|
+
if (typeof URL !== "undefined") {
|
|
283
|
+
const URLStatic = URL;
|
|
284
|
+
if (typeof URLStatic.parse === "function")
|
|
285
|
+
return URLStatic.parse(trimmed) ?? exports.URL_UNPARSEABLE;
|
|
286
|
+
}
|
|
287
|
+
// @ts-ignore
|
|
288
|
+
return new URL(trimmed);
|
|
289
|
+
}
|
|
290
|
+
catch {
|
|
291
|
+
return exports.URL_UNPARSEABLE;
|
|
292
|
+
}
|
|
293
|
+
}
|
|
294
|
+
const asciiTabOrNewline = /[\t\n\r]/g;
|
|
295
|
+
/** The URL parser deletes every ASCII tab, LF and CR from its input before it parses, so `new URL("https://exa\nmple.com")` reports on `example.com`. Applying the same deletion to the returned value closes the half of that divergence which can move the host; the parser's other rewrite, stripping C0 controls at the edges, cannot. */
|
|
296
|
+
function stripTabAndNewline(value) {
|
|
297
|
+
return value.replace(asciiTabOrNewline, "");
|
|
298
|
+
}
|
|
299
|
+
function urlHostnameOk(url, hostname) {
|
|
300
|
+
hostname.lastIndex = 0;
|
|
301
|
+
return hostname.test(url.hostname);
|
|
302
|
+
}
|
|
303
|
+
function urlProtocolOk(url, protocol) {
|
|
304
|
+
protocol.lastIndex = 0;
|
|
305
|
+
return protocol.test(url.protocol.endsWith(":") ? url.protocol.slice(0, -1) : url.protocol);
|
|
306
|
+
}
|
|
218
307
|
exports.$ZodURL = core.$constructor("$ZodURL", (inst, def) => {
|
|
219
308
|
exports.$ZodStringFormat.init(inst, def);
|
|
220
309
|
inst._zod.check = (payload) => {
|
|
221
310
|
try {
|
|
222
311
|
// Trim whitespace from input
|
|
223
312
|
const trimmed = payload.value.trim();
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
});
|
|
236
|
-
return;
|
|
237
|
-
}
|
|
313
|
+
const url = validateURL(trimmed, def);
|
|
314
|
+
if (url === exports.URL_BAD_FORMAT) {
|
|
315
|
+
payload.issues.push({
|
|
316
|
+
code: "invalid_format",
|
|
317
|
+
format: "url",
|
|
318
|
+
note: "Invalid URL format",
|
|
319
|
+
input: payload.value,
|
|
320
|
+
inst,
|
|
321
|
+
continue: !def.abort,
|
|
322
|
+
});
|
|
323
|
+
return;
|
|
238
324
|
}
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
pattern: def.hostname.source,
|
|
249
|
-
input: payload.value,
|
|
250
|
-
inst,
|
|
251
|
-
continue: !def.abort,
|
|
252
|
-
});
|
|
253
|
-
}
|
|
325
|
+
if (url === exports.URL_UNPARSEABLE) {
|
|
326
|
+
payload.issues.push({
|
|
327
|
+
code: "invalid_format",
|
|
328
|
+
format: "url",
|
|
329
|
+
input: payload.value,
|
|
330
|
+
inst,
|
|
331
|
+
continue: !def.abort,
|
|
332
|
+
});
|
|
333
|
+
return;
|
|
254
334
|
}
|
|
255
|
-
if (
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
payload.issues.push({
|
|
259
|
-
code: "invalid_format",
|
|
260
|
-
format: "url",
|
|
261
|
-
note: "Invalid protocol",
|
|
262
|
-
pattern: def.protocol.source,
|
|
263
|
-
input: payload.value,
|
|
264
|
-
inst,
|
|
265
|
-
continue: !def.abort,
|
|
266
|
-
});
|
|
267
|
-
}
|
|
335
|
+
if (url === true) {
|
|
336
|
+
payload.value = stripTabAndNewline(trimmed);
|
|
337
|
+
return;
|
|
268
338
|
}
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
339
|
+
if (def.hostname && !urlHostnameOk(url, def.hostname)) {
|
|
340
|
+
payload.issues.push({
|
|
341
|
+
code: "invalid_format",
|
|
342
|
+
format: "url",
|
|
343
|
+
note: "Invalid hostname",
|
|
344
|
+
pattern: def.hostname.source,
|
|
345
|
+
input: payload.value,
|
|
346
|
+
inst,
|
|
347
|
+
continue: !def.abort,
|
|
348
|
+
});
|
|
273
349
|
}
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
350
|
+
if (def.protocol && !urlProtocolOk(url, def.protocol)) {
|
|
351
|
+
payload.issues.push({
|
|
352
|
+
code: "invalid_format",
|
|
353
|
+
format: "url",
|
|
354
|
+
note: "Invalid protocol",
|
|
355
|
+
pattern: def.protocol.source,
|
|
356
|
+
input: payload.value,
|
|
357
|
+
inst,
|
|
358
|
+
continue: !def.abort,
|
|
359
|
+
});
|
|
277
360
|
}
|
|
361
|
+
// Set the output value based on normalize flag
|
|
362
|
+
payload.value = def.normalize ? url.href : stripTabAndNewline(trimmed);
|
|
278
363
|
return;
|
|
279
364
|
}
|
|
280
365
|
catch (_) {
|
|
@@ -293,7 +378,9 @@ exports.$ZodEmoji = core.$constructor("$ZodEmoji", (inst, def) => {
|
|
|
293
378
|
exports.$ZodStringFormat.init(inst, def);
|
|
294
379
|
});
|
|
295
380
|
exports.$ZodNanoID = core.$constructor("$ZodNanoID", (inst, def) => {
|
|
296
|
-
def.
|
|
381
|
+
if (def.length !== undefined && (!Number.isInteger(def.length) || def.length < 1))
|
|
382
|
+
throw new Error(`Invalid nanoid length: ${def.length}`);
|
|
383
|
+
def.pattern ?? (def.pattern = def.length === undefined ? regexes.nanoid : regexes.nanoidOfLength(def.length));
|
|
297
384
|
exports.$ZodStringFormat.init(inst, def);
|
|
298
385
|
});
|
|
299
386
|
/**
|
|
@@ -340,19 +427,19 @@ exports.$ZodISODuration = core.$constructor("$ZodISODuration", (inst, def) => {
|
|
|
340
427
|
exports.$ZodIPv4 = core.$constructor("$ZodIPv4", (inst, def) => {
|
|
341
428
|
def.pattern ?? (def.pattern = regexes.ipv4);
|
|
342
429
|
exports.$ZodStringFormat.init(inst, def);
|
|
343
|
-
inst._zod.bag.format = `ipv4`;
|
|
344
430
|
});
|
|
431
|
+
/** An IPv6 address is written with hex digits, colons and dots, and nothing else. The guard is what makes the check below an IPv6 check: `new URL("http://[...]")` parses an authority, not an address, so `@` and `\` re-delimit it and `"::@1\\"` validates against the host `0.0.0.1`. The URL parser also deletes ASCII tab, LF and CR rather than failing, which is how `"::1\n"` validated as `::1`. */
|
|
432
|
+
const ipv6Alphabet = /^[0-9a-fA-F:.]+$/;
|
|
433
|
+
function isValidIPv6(value) {
|
|
434
|
+
if (!ipv6Alphabet.test(value))
|
|
435
|
+
return false;
|
|
436
|
+
return canParseURL(`http://[${value}]`);
|
|
437
|
+
}
|
|
345
438
|
exports.$ZodIPv6 = core.$constructor("$ZodIPv6", (inst, def) => {
|
|
346
439
|
def.pattern ?? (def.pattern = regexes.ipv6);
|
|
347
440
|
exports.$ZodStringFormat.init(inst, def);
|
|
348
|
-
inst._zod.bag.format = `ipv6`;
|
|
349
441
|
inst._zod.check = (payload) => {
|
|
350
|
-
|
|
351
|
-
// @ts-ignore
|
|
352
|
-
new URL(`http://[${payload.value}]`);
|
|
353
|
-
// return;
|
|
354
|
-
}
|
|
355
|
-
catch {
|
|
442
|
+
if (!isValidIPv6(payload.value)) {
|
|
356
443
|
payload.issues.push({
|
|
357
444
|
code: "invalid_format",
|
|
358
445
|
format: "ipv6",
|
|
@@ -366,32 +453,30 @@ exports.$ZodIPv6 = core.$constructor("$ZodIPv6", (inst, def) => {
|
|
|
366
453
|
exports.$ZodMAC = core.$constructor("$ZodMAC", (inst, def) => {
|
|
367
454
|
def.pattern ?? (def.pattern = regexes.mac(def.delimiter));
|
|
368
455
|
exports.$ZodStringFormat.init(inst, def);
|
|
369
|
-
inst._zod.bag.format = `mac`;
|
|
370
456
|
});
|
|
371
457
|
exports.$ZodCIDRv4 = core.$constructor("$ZodCIDRv4", (inst, def) => {
|
|
372
458
|
def.pattern ?? (def.pattern = regexes.cidrv4);
|
|
373
459
|
exports.$ZodStringFormat.init(inst, def);
|
|
374
460
|
});
|
|
461
|
+
function isValidCIDRv6(value) {
|
|
462
|
+
const parts = value.split("/");
|
|
463
|
+
if (parts.length !== 2)
|
|
464
|
+
return false;
|
|
465
|
+
const [address, prefix] = parts;
|
|
466
|
+
if (!prefix)
|
|
467
|
+
return false;
|
|
468
|
+
const prefixNum = Number(prefix);
|
|
469
|
+
if (`${prefixNum}` !== prefix)
|
|
470
|
+
return false;
|
|
471
|
+
if (prefixNum < 0 || prefixNum > 128)
|
|
472
|
+
return false;
|
|
473
|
+
return isValidIPv6(address);
|
|
474
|
+
}
|
|
375
475
|
exports.$ZodCIDRv6 = core.$constructor("$ZodCIDRv6", (inst, def) => {
|
|
376
476
|
def.pattern ?? (def.pattern = regexes.cidrv6); // not used for validation
|
|
377
477
|
exports.$ZodStringFormat.init(inst, def);
|
|
378
478
|
inst._zod.check = (payload) => {
|
|
379
|
-
|
|
380
|
-
try {
|
|
381
|
-
if (parts.length !== 2)
|
|
382
|
-
throw new Error();
|
|
383
|
-
const [address, prefix] = parts;
|
|
384
|
-
if (!prefix)
|
|
385
|
-
throw new Error();
|
|
386
|
-
const prefixNum = Number(prefix);
|
|
387
|
-
if (`${prefixNum}` !== prefix)
|
|
388
|
-
throw new Error();
|
|
389
|
-
if (prefixNum < 0 || prefixNum > 128)
|
|
390
|
-
throw new Error();
|
|
391
|
-
// @ts-ignore
|
|
392
|
-
new URL(`http://[${address}]`);
|
|
393
|
-
}
|
|
394
|
-
catch {
|
|
479
|
+
if (!isValidCIDRv6(payload.value)) {
|
|
395
480
|
payload.issues.push({
|
|
396
481
|
code: "invalid_format",
|
|
397
482
|
format: "cidrv6",
|
|
@@ -420,10 +505,11 @@ function isValidBase64(data) {
|
|
|
420
505
|
return false;
|
|
421
506
|
}
|
|
422
507
|
}
|
|
508
|
+
// lax on purpose: the quantified regexes.base64 overflows the regex stack on multi-MB input and its leading ^$| alternation leaks through template-literal composition; isValidBase64 enforces length and padding
|
|
509
|
+
exports.base64Charset = /^[0-9a-zA-Z+/]*={0,2}$/;
|
|
423
510
|
exports.$ZodBase64 = core.$constructor("$ZodBase64", (inst, def) => {
|
|
424
|
-
def.pattern ?? (def.pattern =
|
|
511
|
+
def.pattern ?? (def.pattern = exports.base64Charset);
|
|
425
512
|
exports.$ZodStringFormat.init(inst, def);
|
|
426
|
-
inst._zod.bag.contentEncoding = "base64";
|
|
427
513
|
inst._zod.check = (payload) => {
|
|
428
514
|
if (isValidBase64(payload.value))
|
|
429
515
|
return;
|
|
@@ -436,18 +522,19 @@ exports.$ZodBase64 = core.$constructor("$ZodBase64", (inst, def) => {
|
|
|
436
522
|
});
|
|
437
523
|
};
|
|
438
524
|
});
|
|
439
|
-
//////////////////////////////
|
|
525
|
+
////////////////////////////// ZodBase64URL //////////////////////////////
|
|
526
|
+
// lax on purpose: the quantified regexes.base64url overflows the regex stack on multi-MB input; isValidBase64 enforces length on the padded string
|
|
527
|
+
exports.base64urlCharset = /^[A-Za-z0-9_-]*$/;
|
|
440
528
|
function isValidBase64URL(data) {
|
|
441
|
-
if (!
|
|
529
|
+
if (!exports.base64urlCharset.test(data))
|
|
442
530
|
return false;
|
|
443
531
|
const base64 = data.replace(/[-_]/g, (c) => (c === "-" ? "+" : "/"));
|
|
444
532
|
const padded = base64.padEnd(Math.ceil(base64.length / 4) * 4, "=");
|
|
445
533
|
return isValidBase64(padded);
|
|
446
534
|
}
|
|
447
535
|
exports.$ZodBase64URL = core.$constructor("$ZodBase64URL", (inst, def) => {
|
|
448
|
-
def.pattern ?? (def.pattern =
|
|
536
|
+
def.pattern ?? (def.pattern = exports.base64urlCharset);
|
|
449
537
|
exports.$ZodStringFormat.init(inst, def);
|
|
450
|
-
inst._zod.bag.contentEncoding = "base64url";
|
|
451
538
|
inst._zod.check = (payload) => {
|
|
452
539
|
if (isValidBase64URL(payload.value))
|
|
453
540
|
return;
|
|
@@ -464,6 +551,77 @@ exports.$ZodE164 = core.$constructor("$ZodE164", (inst, def) => {
|
|
|
464
551
|
def.pattern ?? (def.pattern = regexes.e164);
|
|
465
552
|
exports.$ZodStringFormat.init(inst, def);
|
|
466
553
|
});
|
|
554
|
+
////////////////////////////// ZodCreditCard //////////////////////////////
|
|
555
|
+
const CC_SANITIZE = /[- ]/g;
|
|
556
|
+
/** Luhn checksum on a digit-only string. Adapted from valibot (MIT). */
|
|
557
|
+
function isLuhnAlgo(digits) {
|
|
558
|
+
let length = digits.length;
|
|
559
|
+
let bit = 1;
|
|
560
|
+
let sum = 0;
|
|
561
|
+
while (length) {
|
|
562
|
+
const value = digits.charCodeAt(--length) - 48;
|
|
563
|
+
bit ^= 1;
|
|
564
|
+
sum += bit ? [0, 2, 4, 6, 8, 1, 3, 5, 7, 9][value] : value;
|
|
565
|
+
}
|
|
566
|
+
return sum % 10 === 0;
|
|
567
|
+
}
|
|
568
|
+
function isValidCreditCard(input) {
|
|
569
|
+
if (!regexes.creditCard.test(input))
|
|
570
|
+
return false;
|
|
571
|
+
return isLuhnAlgo(input.replace(CC_SANITIZE, ""));
|
|
572
|
+
}
|
|
573
|
+
exports.$ZodCreditCard = core.$constructor("$ZodCreditCard", (inst, def) => {
|
|
574
|
+
// Shape only — the Luhn check below is not expressible as a pattern, so consumers of `pattern` (JSON Schema, template literals) get the length and separator rules alone.
|
|
575
|
+
def.pattern ?? (def.pattern = regexes.creditCard);
|
|
576
|
+
exports.$ZodStringFormat.init(inst, def);
|
|
577
|
+
inst._zod.check = (payload) => {
|
|
578
|
+
if (isValidCreditCard(payload.value))
|
|
579
|
+
return;
|
|
580
|
+
payload.issues.push({
|
|
581
|
+
code: "invalid_format",
|
|
582
|
+
format: "credit_card",
|
|
583
|
+
input: payload.value,
|
|
584
|
+
inst,
|
|
585
|
+
continue: !def.abort,
|
|
586
|
+
});
|
|
587
|
+
};
|
|
588
|
+
});
|
|
589
|
+
////////////////////////////// ZodIBAN //////////////////////////////
|
|
590
|
+
// iso 7064 mod 97-10 checksum without BigInt
|
|
591
|
+
function isIso7064Mod97(iban) {
|
|
592
|
+
let remainder = 0;
|
|
593
|
+
const len = iban.length;
|
|
594
|
+
for (let i = 4; i < len; i++) {
|
|
595
|
+
const code = iban.charCodeAt(i);
|
|
596
|
+
remainder = (code >= 65 ? remainder * 100 + (code - 55) : remainder * 10 + (code - 48)) % 97;
|
|
597
|
+
}
|
|
598
|
+
for (let i = 0; i < 4; i++) {
|
|
599
|
+
const code = iban.charCodeAt(i);
|
|
600
|
+
remainder = (code >= 65 ? remainder * 100 + (code - 55) : remainder * 10 + (code - 48)) % 97;
|
|
601
|
+
}
|
|
602
|
+
return remainder === 1;
|
|
603
|
+
}
|
|
604
|
+
function isValidIBAN(input) {
|
|
605
|
+
if (!regexes.iban.test(input))
|
|
606
|
+
return false;
|
|
607
|
+
return isIso7064Mod97(input);
|
|
608
|
+
}
|
|
609
|
+
exports.$ZodIBAN = core.$constructor("$ZodIBAN", (inst, def) => {
|
|
610
|
+
// shape only — checksum is not expressible as a pattern
|
|
611
|
+
def.pattern ?? (def.pattern = regexes.iban);
|
|
612
|
+
exports.$ZodStringFormat.init(inst, def);
|
|
613
|
+
inst._zod.check = (payload) => {
|
|
614
|
+
if (isValidIBAN(payload.value))
|
|
615
|
+
return;
|
|
616
|
+
payload.issues.push({
|
|
617
|
+
code: "invalid_format",
|
|
618
|
+
format: "iban",
|
|
619
|
+
input: payload.value,
|
|
620
|
+
inst,
|
|
621
|
+
continue: !def.abort,
|
|
622
|
+
});
|
|
623
|
+
};
|
|
624
|
+
});
|
|
467
625
|
////////////////////////////// ZodJWT //////////////////////////////
|
|
468
626
|
function isValidJWT(token, algorithm = null) {
|
|
469
627
|
try {
|
|
@@ -517,7 +675,7 @@ exports.$ZodCustomStringFormat = core.$constructor("$ZodCustomStringFormat", (in
|
|
|
517
675
|
});
|
|
518
676
|
exports.$ZodNumber = core.$constructor("$ZodNumber", (inst, def) => {
|
|
519
677
|
exports.$ZodType.init(inst, def);
|
|
520
|
-
inst._zod.pattern =
|
|
678
|
+
inst._zod.pattern = regexes.number;
|
|
521
679
|
inst._zod.parse = (payload, _ctx) => {
|
|
522
680
|
if (def.coerce)
|
|
523
681
|
try {
|
|
@@ -532,7 +690,7 @@ exports.$ZodNumber = core.$constructor("$ZodNumber", (inst, def) => {
|
|
|
532
690
|
? Number.isNaN(input)
|
|
533
691
|
? "NaN"
|
|
534
692
|
: !Number.isFinite(input)
|
|
535
|
-
?
|
|
693
|
+
? String(input)
|
|
536
694
|
: undefined
|
|
537
695
|
: undefined;
|
|
538
696
|
payload.issues.push({
|
|
@@ -710,6 +868,8 @@ function handleArrayResult(result, final, index) {
|
|
|
710
868
|
}
|
|
711
869
|
exports.$ZodArray = core.$constructor("$ZodArray", (inst, def) => {
|
|
712
870
|
exports.$ZodType.init(inst, def);
|
|
871
|
+
const memo = core.globalConfig.memoizer;
|
|
872
|
+
memo?.attach(inst);
|
|
713
873
|
inst._zod.parse = (payload, ctx) => {
|
|
714
874
|
const input = payload.value;
|
|
715
875
|
if (!Array.isArray(input)) {
|
|
@@ -721,8 +881,9 @@ exports.$ZodArray = core.$constructor("$ZodArray", (inst, def) => {
|
|
|
721
881
|
});
|
|
722
882
|
return payload;
|
|
723
883
|
}
|
|
724
|
-
payload.value = Array(input.length);
|
|
884
|
+
payload.value = memo ? memo.alloc(inst, payload, Array(input.length), ctx) : Array(input.length);
|
|
725
885
|
const proms = [];
|
|
886
|
+
const abortEarly = ctx?.abortEarly;
|
|
726
887
|
for (let i = 0; i < input.length; i++) {
|
|
727
888
|
const item = input[i];
|
|
728
889
|
const result = def.element._zod.run({
|
|
@@ -734,6 +895,9 @@ exports.$ZodArray = core.$constructor("$ZodArray", (inst, def) => {
|
|
|
734
895
|
}
|
|
735
896
|
else {
|
|
736
897
|
handleArrayResult(result, payload, i);
|
|
898
|
+
// the element's payload is authoritative here, since handleArrayResult forwards every issue; an object's is not, because it drops a failed absent optional
|
|
899
|
+
if (abortEarly && result.issues.length !== 0 && util.aborted(result))
|
|
900
|
+
break;
|
|
737
901
|
}
|
|
738
902
|
}
|
|
739
903
|
if (proms.length) {
|
|
@@ -742,16 +906,21 @@ exports.$ZodArray = core.$constructor("$ZodArray", (inst, def) => {
|
|
|
742
906
|
return payload; //handleArrayResultsAsync(parseResults, final);
|
|
743
907
|
};
|
|
744
908
|
});
|
|
745
|
-
function handlePropertyResult(result, final, key, input,
|
|
909
|
+
function handlePropertyResult(result, final, key, input, optin, optout) {
|
|
746
910
|
const isPresent = key in input;
|
|
911
|
+
const isOptionalOut = optout === "optional";
|
|
912
|
+
// The middle rung means "absence permitted, nothing supplied in its place", so an absent key contributes nothing — whatever the schema made of `undefined` is invented, not substituted. Only `optional` reaches this with a value: `defaulted` substitutes, and a schema that isn't optional-out has to keep the key.
|
|
913
|
+
if (!isPresent && isOptionalOut && optin === "optional") {
|
|
914
|
+
return;
|
|
915
|
+
}
|
|
747
916
|
if (result.issues.length) {
|
|
748
917
|
// For optional-in/out schemas, ignore errors on absent keys.
|
|
749
|
-
if (
|
|
918
|
+
if (optin !== undefined && isOptionalOut && !isPresent) {
|
|
750
919
|
return;
|
|
751
920
|
}
|
|
752
921
|
final.issues.push(...util.prefixIssues(key, result.issues));
|
|
753
922
|
}
|
|
754
|
-
if (!isPresent &&
|
|
923
|
+
if (!isPresent && optin === undefined) {
|
|
755
924
|
if (!result.issues.length) {
|
|
756
925
|
final.issues.push({
|
|
757
926
|
code: "invalid_type",
|
|
@@ -763,7 +932,7 @@ function handlePropertyResult(result, final, key, input, isOptionalIn, isOptiona
|
|
|
763
932
|
return;
|
|
764
933
|
}
|
|
765
934
|
if (result.value === undefined) {
|
|
766
|
-
if (isPresent) {
|
|
935
|
+
if (isPresent || (optin === "defaulted" && !isOptionalOut)) {
|
|
767
936
|
final.value[key] = undefined;
|
|
768
937
|
}
|
|
769
938
|
}
|
|
@@ -771,46 +940,64 @@ function handlePropertyResult(result, final, key, input, isOptionalIn, isOptiona
|
|
|
771
940
|
final.value[key] = result.value;
|
|
772
941
|
}
|
|
773
942
|
}
|
|
943
|
+
// one shared instance; a fresh [] per schema cost 56 bytes retained
|
|
944
|
+
const NO_SYMBOL_KEYS = [];
|
|
774
945
|
function normalizeDef(def) {
|
|
775
946
|
const keys = Object.keys(def.shape);
|
|
776
|
-
|
|
947
|
+
const ownSymbols = Object.getOwnPropertySymbols(def.shape);
|
|
948
|
+
const symbolKeys = ownSymbols.length ? ownSymbols : NO_SYMBOL_KEYS;
|
|
949
|
+
// aliases `keys` when there are no symbols, so a string-only shape keeps one array
|
|
950
|
+
const allKeys = symbolKeys.length ? [...keys, ...symbolKeys] : keys;
|
|
951
|
+
for (const k of allKeys) {
|
|
777
952
|
if (!def.shape?.[k]?._zod?.traits?.has("$ZodType")) {
|
|
778
|
-
throw new Error(`Invalid element at key "${k}": expected a Zod schema`);
|
|
953
|
+
throw new Error(`Invalid element at key "${String(k)}": expected a Zod schema`);
|
|
779
954
|
}
|
|
780
955
|
}
|
|
781
956
|
const okeys = util.optionalKeys(def.shape);
|
|
782
957
|
return {
|
|
783
958
|
...def,
|
|
784
|
-
|
|
959
|
+
allKeys,
|
|
960
|
+
symbolKeys,
|
|
961
|
+
// string-only: handleCatchall matches it against `for...in`, which never yields a symbol
|
|
785
962
|
keySet: new Set(keys),
|
|
786
963
|
numKeys: keys.length,
|
|
787
964
|
optionalKeys: new Set(okeys),
|
|
788
965
|
};
|
|
789
966
|
}
|
|
790
|
-
function handleCatchall(proms, input, payload, ctx, def, inst) {
|
|
967
|
+
function handleCatchall(proms, input, payload, ctx, def, inst, abortEarly) {
|
|
791
968
|
const unrecognized = [];
|
|
792
969
|
const keySet = def.keySet;
|
|
793
970
|
const _catchall = def.catchall._zod;
|
|
794
971
|
const t = _catchall.def.type;
|
|
795
|
-
const
|
|
796
|
-
const
|
|
972
|
+
const optin = _catchall.optin;
|
|
973
|
+
const optout = _catchall.optout;
|
|
974
|
+
// starts at 0, not the current length: the shape phase already ran and may have aborted
|
|
975
|
+
let seen = 0;
|
|
797
976
|
for (const key in input) {
|
|
798
|
-
|
|
799
|
-
|
|
800
|
-
|
|
801
|
-
|
|
977
|
+
if (abortEarly && payload.issues.length !== seen) {
|
|
978
|
+
if (util.aborted(payload, seen))
|
|
979
|
+
break;
|
|
980
|
+
seen = payload.issues.length;
|
|
981
|
+
}
|
|
982
|
+
// Must precede the __proto__ branch: a declared key is not unrecognized, even though the shape loop deliberately strips __proto__ from the parsed output.
|
|
802
983
|
if (keySet.has(key))
|
|
803
984
|
continue;
|
|
985
|
+
// Don't copy an undeclared __proto__ into the result; assignment to a plain {} would replace the result prototype. But in strict mode it is still an unknown key, so report it before skipping.
|
|
986
|
+
if (key === "__proto__") {
|
|
987
|
+
if (t === "never")
|
|
988
|
+
unrecognized.push(key);
|
|
989
|
+
continue;
|
|
990
|
+
}
|
|
804
991
|
if (t === "never") {
|
|
805
992
|
unrecognized.push(key);
|
|
806
993
|
continue;
|
|
807
994
|
}
|
|
808
995
|
const r = _catchall.run({ value: input[key], issues: [] }, ctx);
|
|
809
996
|
if (r instanceof Promise) {
|
|
810
|
-
proms.push(r.then((r) => handlePropertyResult(r, payload, key, input,
|
|
997
|
+
proms.push(r.then((r) => handlePropertyResult(r, payload, key, input, optin, optout)));
|
|
811
998
|
}
|
|
812
999
|
else {
|
|
813
|
-
handlePropertyResult(r, payload, key, input,
|
|
1000
|
+
handlePropertyResult(r, payload, key, input, optin, optout);
|
|
814
1001
|
}
|
|
815
1002
|
}
|
|
816
1003
|
if (unrecognized.length) {
|
|
@@ -819,6 +1006,8 @@ function handleCatchall(proms, input, payload, ctx, def, inst) {
|
|
|
819
1006
|
keys: unrecognized,
|
|
820
1007
|
input,
|
|
821
1008
|
inst,
|
|
1009
|
+
// Describes the shape of the input, not the validity of the parsed value, so it never aborts. The parse still fails; the schema's own checks just get to run first, and an enclosing intersection can reconcile the key against a sibling operand.
|
|
1010
|
+
continue: true,
|
|
822
1011
|
});
|
|
823
1012
|
}
|
|
824
1013
|
if (!proms.length)
|
|
@@ -830,30 +1019,35 @@ function handleCatchall(proms, input, payload, ctx, def, inst) {
|
|
|
830
1019
|
exports.$ZodObject = core.$constructor("$ZodObject", (inst, def) => {
|
|
831
1020
|
// requires cast because technically $ZodObject doesn't extend
|
|
832
1021
|
exports.$ZodType.init(inst, def);
|
|
833
|
-
// const sh = def.shape;
|
|
834
1022
|
const desc = Object.getOwnPropertyDescriptor(def, "shape");
|
|
835
|
-
|
|
836
|
-
|
|
837
|
-
|
|
838
|
-
|
|
839
|
-
|
|
840
|
-
|
|
841
|
-
|
|
842
|
-
|
|
843
|
-
|
|
844
|
-
|
|
845
|
-
|
|
1023
|
+
// a cloned def carries its source's accessor, which knows the shape it answers from; adopting that keeps the clone's keys readable without running it
|
|
1024
|
+
const sh = desc?.get ? desc.get.raw : (def.shape ?? {});
|
|
1025
|
+
if (sh) {
|
|
1026
|
+
// Freezes the shape on first read, so its getters resolve once and every later read sees the same schemas.
|
|
1027
|
+
const get = () => {
|
|
1028
|
+
const newSh = { ...sh };
|
|
1029
|
+
Object.defineProperty(def, "shape", { value: newSh });
|
|
1030
|
+
get.raw = newSh;
|
|
1031
|
+
return newSh;
|
|
1032
|
+
};
|
|
1033
|
+
get.raw = sh;
|
|
1034
|
+
Object.defineProperty(def, "shape", { get });
|
|
846
1035
|
}
|
|
847
1036
|
const _normalized = util.cached(() => normalizeDef(def));
|
|
848
|
-
util.
|
|
849
|
-
const shape = def.shape;
|
|
1037
|
+
util.defineLazyInternal(inst, "propValues", (zod) => {
|
|
1038
|
+
const shape = zod.def.shape;
|
|
850
1039
|
const propValues = {};
|
|
851
1040
|
for (const key in shape) {
|
|
852
1041
|
const field = shape[key]._zod;
|
|
853
1042
|
if (field.values) {
|
|
854
|
-
|
|
1043
|
+
if (!Object.prototype.hasOwnProperty.call(propValues, key)) {
|
|
1044
|
+
util.assignProp(propValues, key, new Set());
|
|
1045
|
+
}
|
|
855
1046
|
for (const v of field.values)
|
|
856
1047
|
propValues[key].add(v);
|
|
1048
|
+
// An omittable slot reads back as undefined at a discriminator lookup, so it has to claim undefined: two options that can both omit the key are not discriminable on it.
|
|
1049
|
+
if (field.optin !== undefined)
|
|
1050
|
+
propValues[key].add(undefined);
|
|
857
1051
|
}
|
|
858
1052
|
}
|
|
859
1053
|
return propValues;
|
|
@@ -861,6 +1055,8 @@ exports.$ZodObject = core.$constructor("$ZodObject", (inst, def) => {
|
|
|
861
1055
|
const isObject = util.isObject;
|
|
862
1056
|
const catchall = def.catchall;
|
|
863
1057
|
let value;
|
|
1058
|
+
const memo = core.globalConfig.memoizer;
|
|
1059
|
+
memo?.attach(inst);
|
|
864
1060
|
inst._zod.parse = (payload, ctx) => {
|
|
865
1061
|
value ?? (value = _normalized.value);
|
|
866
1062
|
const input = payload.value;
|
|
@@ -873,25 +1069,34 @@ exports.$ZodObject = core.$constructor("$ZodObject", (inst, def) => {
|
|
|
873
1069
|
});
|
|
874
1070
|
return payload;
|
|
875
1071
|
}
|
|
876
|
-
payload.value = {};
|
|
1072
|
+
payload.value = memo ? memo.alloc(inst, payload, {}, ctx) : {};
|
|
877
1073
|
const proms = [];
|
|
878
1074
|
const shape = value.shape;
|
|
879
|
-
|
|
1075
|
+
const abortEarly = ctx?.abortEarly;
|
|
1076
|
+
let seen = payload.issues.length;
|
|
1077
|
+
for (const key of value.allKeys) {
|
|
1078
|
+
if (abortEarly && payload.issues.length !== seen) {
|
|
1079
|
+
if (util.aborted(payload, seen))
|
|
1080
|
+
break;
|
|
1081
|
+
seen = payload.issues.length;
|
|
1082
|
+
}
|
|
1083
|
+
if (key === "__proto__")
|
|
1084
|
+
continue;
|
|
880
1085
|
const el = shape[key];
|
|
881
|
-
const
|
|
882
|
-
const
|
|
1086
|
+
const optin = el._zod.optin;
|
|
1087
|
+
const optout = el._zod.optout;
|
|
883
1088
|
const r = el._zod.run({ value: input[key], issues: [] }, ctx);
|
|
884
1089
|
if (r instanceof Promise) {
|
|
885
|
-
proms.push(r.then((r) => handlePropertyResult(r, payload, key, input,
|
|
1090
|
+
proms.push(r.then((r) => handlePropertyResult(r, payload, key, input, optin, optout)));
|
|
886
1091
|
}
|
|
887
1092
|
else {
|
|
888
|
-
handlePropertyResult(r, payload, key, input,
|
|
1093
|
+
handlePropertyResult(r, payload, key, input, optin, optout);
|
|
889
1094
|
}
|
|
890
1095
|
}
|
|
891
1096
|
if (!catchall) {
|
|
892
1097
|
return proms.length ? Promise.all(proms).then(() => payload) : payload;
|
|
893
1098
|
}
|
|
894
|
-
return handleCatchall(proms, input, payload, ctx, _normalized.value, inst);
|
|
1099
|
+
return handleCatchall(proms, input, payload, ctx, _normalized.value, inst, abortEarly === true);
|
|
895
1100
|
};
|
|
896
1101
|
});
|
|
897
1102
|
exports.$ZodObjectJIT = core.$constructor("$ZodObjectJIT", (inst, def) => {
|
|
@@ -899,58 +1104,65 @@ exports.$ZodObjectJIT = core.$constructor("$ZodObjectJIT", (inst, def) => {
|
|
|
899
1104
|
exports.$ZodObject.init(inst, def);
|
|
900
1105
|
const superParse = inst._zod.parse;
|
|
901
1106
|
const _normalized = util.cached(() => normalizeDef(def));
|
|
1107
|
+
const memo = core.globalConfig.memoizer;
|
|
902
1108
|
const generateFastpass = (shape) => {
|
|
903
|
-
const doc = new doc_js_1.Doc(["shape", "payload", "ctx"]);
|
|
904
1109
|
const normalized = _normalized.value;
|
|
905
|
-
const
|
|
906
|
-
|
|
907
|
-
|
|
908
|
-
}
|
|
1110
|
+
const syms = normalized.symbolKeys;
|
|
1111
|
+
// a symbol has no source literal, so it is read as `syms[i]` off the closed-over scope
|
|
1112
|
+
const doc = new doc_js_1.Doc(["payload", "ctx"], { shape, inst, memo, syms });
|
|
1113
|
+
const parseStr = (k) => `shape[${k}]._zod.run({ value: input[${k}], issues: [] }, ctx)`;
|
|
1114
|
+
// prefixes in place, like util.prefixIssues. newResult must land before the early return: a catchall runs after this and would otherwise write onto the caller's input
|
|
1115
|
+
const prefixStr = (id, k) => `
|
|
1116
|
+
let ${id}_ab = false;
|
|
1117
|
+
for (let i = 0; i < ${id}.issues.length; i++) {
|
|
1118
|
+
const iss = ${id}.issues[i];
|
|
1119
|
+
iss.path = iss.path ? [${k}, ...iss.path] : [${k}];
|
|
1120
|
+
payload.issues.push(iss);
|
|
1121
|
+
if (iss.continue !== true) ${id}_ab = true;
|
|
1122
|
+
}
|
|
1123
|
+
if (${id}_ab && ctx && ctx.abortEarly) {
|
|
1124
|
+
payload.value = newResult;
|
|
1125
|
+
return payload;
|
|
1126
|
+
}`;
|
|
909
1127
|
doc.write(`const input = payload.value;`);
|
|
910
1128
|
const ids = Object.create(null);
|
|
911
1129
|
let counter = 0;
|
|
912
|
-
for (const key of normalized.
|
|
1130
|
+
for (const key of normalized.allKeys) {
|
|
913
1131
|
ids[key] = `key_${counter++}`;
|
|
914
1132
|
}
|
|
915
1133
|
// A: preserve key order {
|
|
916
|
-
doc.write(`const newResult = {};`);
|
|
917
|
-
for (const key of normalized.
|
|
1134
|
+
doc.write(memo ? `const newResult = memo.alloc(inst, payload, {}, ctx);` : `const newResult = {};`);
|
|
1135
|
+
for (const key of normalized.allKeys) {
|
|
1136
|
+
if (key === "__proto__")
|
|
1137
|
+
continue;
|
|
918
1138
|
const id = ids[key];
|
|
919
|
-
const k = util.esc(key);
|
|
1139
|
+
const k = typeof key === "symbol" ? `syms[${syms.indexOf(key)}]` : util.esc(key);
|
|
1140
|
+
const isPresent = `${k} in input`;
|
|
920
1141
|
const schema = shape[key];
|
|
921
|
-
const
|
|
1142
|
+
const optin = schema?._zod?.optin;
|
|
1143
|
+
const isOptionalIn = optin !== undefined;
|
|
922
1144
|
const isOptionalOut = schema?._zod?.optout === "optional";
|
|
923
|
-
doc.write(`const ${id} = ${parseStr(
|
|
1145
|
+
doc.write(`const ${id} = ${parseStr(k)};`);
|
|
924
1146
|
if (isOptionalIn && isOptionalOut) {
|
|
925
|
-
// For optional-in/out schemas, ignore errors on absent keys
|
|
1147
|
+
// For optional-in/out schemas, ignore errors on absent keys — and, like the interpreted path, drop the value produced alongside them. The middle rung goes further: it permits absence without supplying anything in its place, so an absent key contributes nothing at all.
|
|
1148
|
+
const assign = optin === "optional" ? `${id}_present` : `${id}.value !== undefined || ${id}_present`;
|
|
926
1149
|
doc.write(`
|
|
927
|
-
|
|
928
|
-
|
|
929
|
-
|
|
930
|
-
...iss,
|
|
931
|
-
path: iss.path ? [${k}, ...iss.path] : [${k}]
|
|
932
|
-
})));
|
|
1150
|
+
const ${id}_present = ${isPresent};
|
|
1151
|
+
if (!${id}.issues.length || ${id}_present) {
|
|
1152
|
+
if (${id}.issues.length) {${prefixStr(id, k)}
|
|
933
1153
|
}
|
|
934
|
-
|
|
935
|
-
|
|
936
|
-
|
|
937
|
-
if (${k} in input) {
|
|
938
|
-
newResult[${k}] = undefined;
|
|
1154
|
+
|
|
1155
|
+
if (${assign}) {
|
|
1156
|
+
newResult[${k}] = ${id}.value;
|
|
939
1157
|
}
|
|
940
|
-
} else {
|
|
941
|
-
newResult[${k}] = ${id}.value;
|
|
942
1158
|
}
|
|
943
|
-
|
|
1159
|
+
|
|
944
1160
|
`);
|
|
945
1161
|
}
|
|
946
1162
|
else if (!isOptionalIn) {
|
|
947
1163
|
doc.write(`
|
|
948
|
-
const ${id}_present = ${
|
|
949
|
-
if (${id}.issues.length) {
|
|
950
|
-
payload.issues = payload.issues.concat(${id}.issues.map(iss => ({
|
|
951
|
-
...iss,
|
|
952
|
-
path: iss.path ? [${k}, ...iss.path] : [${k}]
|
|
953
|
-
})));
|
|
1164
|
+
const ${id}_present = ${isPresent};
|
|
1165
|
+
if (${id}.issues.length) {${prefixStr(id, k)}
|
|
954
1166
|
}
|
|
955
1167
|
if (!${id}_present && !${id}.issues.length) {
|
|
956
1168
|
payload.issues.push({
|
|
@@ -959,42 +1171,39 @@ exports.$ZodObjectJIT = core.$constructor("$ZodObjectJIT", (inst, def) => {
|
|
|
959
1171
|
input: undefined,
|
|
960
1172
|
path: [${k}]
|
|
961
1173
|
});
|
|
1174
|
+
if (ctx && ctx.abortEarly) {
|
|
1175
|
+
payload.value = newResult;
|
|
1176
|
+
return payload;
|
|
1177
|
+
}
|
|
962
1178
|
}
|
|
963
1179
|
|
|
964
1180
|
if (${id}_present) {
|
|
965
|
-
|
|
966
|
-
newResult[${k}] = undefined;
|
|
967
|
-
} else {
|
|
968
|
-
newResult[${k}] = ${id}.value;
|
|
969
|
-
}
|
|
1181
|
+
newResult[${k}] = ${id}.value;
|
|
970
1182
|
}
|
|
971
1183
|
|
|
972
1184
|
`);
|
|
973
1185
|
}
|
|
974
1186
|
else {
|
|
975
1187
|
doc.write(`
|
|
976
|
-
if (${id}.issues.length) {
|
|
977
|
-
|
|
978
|
-
|
|
979
|
-
|
|
980
|
-
|
|
981
|
-
|
|
982
|
-
|
|
983
|
-
|
|
984
|
-
|
|
985
|
-
newResult[${k}] = undefined;
|
|
986
|
-
}
|
|
987
|
-
} else {
|
|
1188
|
+
if (${id}.issues.length) {${prefixStr(id, k)}
|
|
1189
|
+
}
|
|
1190
|
+
`);
|
|
1191
|
+
if (optin === "defaulted") {
|
|
1192
|
+
doc.write(`newResult[${k}] = ${id}.value;`);
|
|
1193
|
+
}
|
|
1194
|
+
else {
|
|
1195
|
+
doc.write(`
|
|
1196
|
+
if (${id}.value !== undefined || ${isPresent}) {
|
|
988
1197
|
newResult[${k}] = ${id}.value;
|
|
989
1198
|
}
|
|
990
|
-
|
|
991
1199
|
`);
|
|
1200
|
+
}
|
|
992
1201
|
}
|
|
993
1202
|
}
|
|
994
1203
|
doc.write(`payload.value = newResult;`);
|
|
995
1204
|
doc.write(`return payload;`);
|
|
996
|
-
|
|
997
|
-
return (
|
|
1205
|
+
// closing `shape` in is what pays: turbofan specializes the parser against that one shape object, so every `shape[k]._zod.run` folds to a known callee. as a parameter it stays a generic load and measures 13% slower even with the forwarding frame gone
|
|
1206
|
+
return doc.compile();
|
|
998
1207
|
};
|
|
999
1208
|
let fastpass;
|
|
1000
1209
|
const isObject = util.isObject;
|
|
@@ -1022,7 +1231,7 @@ exports.$ZodObjectJIT = core.$constructor("$ZodObjectJIT", (inst, def) => {
|
|
|
1022
1231
|
payload = fastpass(payload, ctx);
|
|
1023
1232
|
if (!catchall)
|
|
1024
1233
|
return payload;
|
|
1025
|
-
return handleCatchall([], input, payload, ctx, value, inst);
|
|
1234
|
+
return handleCatchall([], input, payload, ctx, value, inst, ctx?.abortEarly === true);
|
|
1026
1235
|
}
|
|
1027
1236
|
return superParse(payload, ctx);
|
|
1028
1237
|
};
|
|
@@ -1049,17 +1258,21 @@ function handleUnionResults(results, final, inst, ctx) {
|
|
|
1049
1258
|
}
|
|
1050
1259
|
exports.$ZodUnion = core.$constructor("$ZodUnion", (inst, def) => {
|
|
1051
1260
|
exports.$ZodType.init(inst, def);
|
|
1052
|
-
util.
|
|
1053
|
-
|
|
1054
|
-
|
|
1055
|
-
|
|
1056
|
-
|
|
1261
|
+
util.defineLazyInternal(inst, "optin", (zod) => zod.def.options.some((o) => o._zod.optin === "defaulted")
|
|
1262
|
+
? "defaulted"
|
|
1263
|
+
: zod.def.options.some((o) => o._zod.optin !== undefined)
|
|
1264
|
+
? "optional"
|
|
1265
|
+
: undefined);
|
|
1266
|
+
util.defineLazyInternal(inst, "optout", (zod) => zod.def.options.some((o) => o._zod.optout === "optional") ? "optional" : undefined);
|
|
1267
|
+
util.defineLazyInternal(inst, "values", (zod) => {
|
|
1268
|
+
if (zod.def.options.every((o) => o._zod.values)) {
|
|
1269
|
+
return new Set(zod.def.options.flatMap((option) => Array.from(option._zod.values)));
|
|
1057
1270
|
}
|
|
1058
1271
|
return undefined;
|
|
1059
1272
|
});
|
|
1060
|
-
util.
|
|
1061
|
-
if (def.options.every((o) => o._zod.pattern)) {
|
|
1062
|
-
const patterns = def.options.map((o) => o._zod.pattern);
|
|
1273
|
+
util.defineLazyInternal(inst, "pattern", (zod) => {
|
|
1274
|
+
if (zod.def.options.every((o) => o._zod.pattern)) {
|
|
1275
|
+
const patterns = zod.def.options.map((o) => o._zod.pattern);
|
|
1063
1276
|
return new RegExp(`^(${patterns.map((p) => util.cleanRegex(p.source)).join("|")})$`);
|
|
1064
1277
|
}
|
|
1065
1278
|
return undefined;
|
|
@@ -1094,12 +1307,16 @@ exports.$ZodUnion = core.$constructor("$ZodUnion", (inst, def) => {
|
|
|
1094
1307
|
};
|
|
1095
1308
|
});
|
|
1096
1309
|
function handleExclusiveUnionResults(results, final, inst, ctx) {
|
|
1097
|
-
const
|
|
1098
|
-
|
|
1099
|
-
|
|
1310
|
+
const matches = [];
|
|
1311
|
+
for (let i = 0; i < results.length; i++) {
|
|
1312
|
+
if (results[i].issues.length === 0)
|
|
1313
|
+
matches.push(i);
|
|
1314
|
+
}
|
|
1315
|
+
if (matches.length === 1) {
|
|
1316
|
+
final.value = results[matches[0]].value;
|
|
1100
1317
|
return final;
|
|
1101
1318
|
}
|
|
1102
|
-
if (
|
|
1319
|
+
if (matches.length === 0) {
|
|
1103
1320
|
// No matches - same as regular union
|
|
1104
1321
|
final.issues.push({
|
|
1105
1322
|
code: "invalid_union",
|
|
@@ -1116,6 +1333,7 @@ function handleExclusiveUnionResults(results, final, inst, ctx) {
|
|
|
1116
1333
|
inst,
|
|
1117
1334
|
errors: [],
|
|
1118
1335
|
inclusive: false,
|
|
1336
|
+
matches,
|
|
1119
1337
|
});
|
|
1120
1338
|
}
|
|
1121
1339
|
return final;
|
|
@@ -1150,44 +1368,75 @@ exports.$ZodXor = core.$constructor("$ZodXor", (inst, def) => {
|
|
|
1150
1368
|
});
|
|
1151
1369
|
};
|
|
1152
1370
|
});
|
|
1371
|
+
/** Returns the option whose discriminator claims `value`, or throws if ambiguous. */
|
|
1372
|
+
function getDiscriminatedOption(union, value) {
|
|
1373
|
+
const internals = union._zod;
|
|
1374
|
+
let map = internals.bag.optionsMap;
|
|
1375
|
+
if (!map) {
|
|
1376
|
+
map = discriminatorMap(internals.def);
|
|
1377
|
+
internals.bag.optionsMap = map;
|
|
1378
|
+
}
|
|
1379
|
+
const option = map.get(value);
|
|
1380
|
+
if (option === null)
|
|
1381
|
+
throw new Error(`Ambiguous discriminator value "${String(value)}"`);
|
|
1382
|
+
return option;
|
|
1383
|
+
}
|
|
1384
|
+
function discriminatorMap(def) {
|
|
1385
|
+
const map = new Map();
|
|
1386
|
+
for (const option of def.options) {
|
|
1387
|
+
const values = option._zod.propValues?.[def.discriminator];
|
|
1388
|
+
if (!values || values.size === 0)
|
|
1389
|
+
throw new Error(`Invalid discriminated union option at index "${def.options.indexOf(option)}"`);
|
|
1390
|
+
for (const value of values) {
|
|
1391
|
+
if (map.has(value)) {
|
|
1392
|
+
if (value !== undefined)
|
|
1393
|
+
throw new Error(`Duplicate discriminator value "${String(value)}"`);
|
|
1394
|
+
// keep the collision marked so a later member cannot reclaim it
|
|
1395
|
+
map.set(value, null);
|
|
1396
|
+
}
|
|
1397
|
+
else {
|
|
1398
|
+
map.set(value, option);
|
|
1399
|
+
}
|
|
1400
|
+
}
|
|
1401
|
+
}
|
|
1402
|
+
return map;
|
|
1403
|
+
}
|
|
1153
1404
|
exports.$ZodDiscriminatedUnion =
|
|
1154
1405
|
/*@__PURE__*/
|
|
1155
1406
|
core.$constructor("$ZodDiscriminatedUnion", (inst, def) => {
|
|
1156
1407
|
def.inclusive = false;
|
|
1157
1408
|
exports.$ZodUnion.init(inst, def);
|
|
1158
1409
|
const _super = inst._zod.parse;
|
|
1159
|
-
util.
|
|
1410
|
+
util.defineLazyInternal(inst, "propValues", (zod) => {
|
|
1160
1411
|
const propValues = {};
|
|
1161
|
-
|
|
1412
|
+
let undefinedCount = 0;
|
|
1413
|
+
for (const option of zod.def.options) {
|
|
1162
1414
|
const pv = option._zod.propValues;
|
|
1163
1415
|
if (!pv || Object.keys(pv).length === 0)
|
|
1164
|
-
throw new Error(`Invalid discriminated union option at index "${def.options.indexOf(option)}"`);
|
|
1416
|
+
throw new Error(`Invalid discriminated union option at index "${zod.def.options.indexOf(option)}"`);
|
|
1417
|
+
if (pv[zod.def.discriminator]?.has(undefined))
|
|
1418
|
+
undefinedCount++;
|
|
1165
1419
|
for (const [k, v] of Object.entries(pv)) {
|
|
1166
|
-
if (!propValues
|
|
1167
|
-
propValues
|
|
1420
|
+
if (!Object.prototype.hasOwnProperty.call(propValues, k)) {
|
|
1421
|
+
util.assignProp(propValues, k, new Set());
|
|
1422
|
+
}
|
|
1168
1423
|
for (const val of v) {
|
|
1169
1424
|
propValues[k].add(val);
|
|
1170
1425
|
}
|
|
1171
1426
|
}
|
|
1172
1427
|
}
|
|
1428
|
+
if (!zod.def.unionFallback && undefinedCount > 1)
|
|
1429
|
+
propValues[zod.def.discriminator]?.delete(undefined);
|
|
1173
1430
|
return propValues;
|
|
1174
1431
|
});
|
|
1175
|
-
|
|
1176
|
-
|
|
1177
|
-
const
|
|
1178
|
-
|
|
1179
|
-
|
|
1180
|
-
if (!values || values.size === 0)
|
|
1181
|
-
throw new Error(`Invalid discriminated union option at index "${def.options.indexOf(o)}"`);
|
|
1182
|
-
for (const v of values) {
|
|
1183
|
-
if (map.has(v)) {
|
|
1184
|
-
throw new Error(`Duplicate discriminator value "${String(v)}"`);
|
|
1185
|
-
}
|
|
1186
|
-
map.set(v, o);
|
|
1187
|
-
}
|
|
1432
|
+
// Checked now rather than in the lookup map below, so an option that lacks the discriminator fails at the `discriminatedUnion` call instead of on the first object parsed. Options whose shape cannot be enumerated without resolving it — pipes and lazies — are left to the map.
|
|
1433
|
+
def.options.forEach((option, i) => {
|
|
1434
|
+
const propShape = util.rawShape(option._zod.def);
|
|
1435
|
+
if (propShape && !Object.prototype.hasOwnProperty.call(propShape, def.discriminator)) {
|
|
1436
|
+
throw new Error(`Invalid discriminated union option at index "${i}"`);
|
|
1188
1437
|
}
|
|
1189
|
-
return map;
|
|
1190
1438
|
});
|
|
1439
|
+
const disc = util.cached(() => discriminatorMap(def));
|
|
1191
1440
|
inst._zod.parse = (payload, ctx) => {
|
|
1192
1441
|
const input = payload.value;
|
|
1193
1442
|
if (!util.isObject(input)) {
|
|
@@ -1199,14 +1448,15 @@ core.$constructor("$ZodDiscriminatedUnion", (inst, def) => {
|
|
|
1199
1448
|
});
|
|
1200
1449
|
return payload;
|
|
1201
1450
|
}
|
|
1202
|
-
const
|
|
1203
|
-
|
|
1451
|
+
const value = input?.[def.discriminator];
|
|
1452
|
+
const opt = disc.value.get(value);
|
|
1453
|
+
// forward metadata cannot choose an encoder for an absent tag
|
|
1454
|
+
if (opt && (value !== undefined || ctx.direction !== "backward")) {
|
|
1204
1455
|
return opt._zod.run(payload, ctx);
|
|
1205
1456
|
}
|
|
1206
1457
|
// Fall back to union matching when the fast discriminator path fails:
|
|
1207
1458
|
// - explicitly enabled via unionFallback, or
|
|
1208
|
-
// - during backward direction (encode), since codec-based discriminators
|
|
1209
|
-
// have different values in forward vs backward directions
|
|
1459
|
+
// - during backward direction (encode), since codec-based discriminators have different values in forward vs backward directions
|
|
1210
1460
|
if (def.unionFallback || ctx.direction === "backward") {
|
|
1211
1461
|
return _super(payload, ctx);
|
|
1212
1462
|
}
|
|
@@ -1216,7 +1466,7 @@ core.$constructor("$ZodDiscriminatedUnion", (inst, def) => {
|
|
|
1216
1466
|
errors: [],
|
|
1217
1467
|
note: "No matching discriminator",
|
|
1218
1468
|
discriminator: def.discriminator,
|
|
1219
|
-
options: Array.from(disc.value.keys()),
|
|
1469
|
+
options: Array.from(disc.value.keys()).filter((value) => disc.value.get(value) !== null),
|
|
1220
1470
|
input,
|
|
1221
1471
|
path: [def.discriminator],
|
|
1222
1472
|
inst,
|
|
@@ -1252,7 +1502,11 @@ function mergeValues(a, b) {
|
|
|
1252
1502
|
const bKeys = Object.keys(b);
|
|
1253
1503
|
const sharedKeys = Object.keys(a).filter((key) => bKeys.indexOf(key) !== -1);
|
|
1254
1504
|
const newObj = { ...a, ...b };
|
|
1505
|
+
if (Object.prototype.hasOwnProperty.call(newObj, "__proto__"))
|
|
1506
|
+
delete newObj.__proto__;
|
|
1255
1507
|
for (const key of sharedKeys) {
|
|
1508
|
+
if (key === "__proto__")
|
|
1509
|
+
continue;
|
|
1256
1510
|
const sharedValue = mergeValues(a[key], b[key]);
|
|
1257
1511
|
if (!sharedValue.valid) {
|
|
1258
1512
|
return {
|
|
@@ -1286,43 +1540,55 @@ function mergeValues(a, b) {
|
|
|
1286
1540
|
return { valid: false, mergeErrorPath: [] };
|
|
1287
1541
|
}
|
|
1288
1542
|
function handleIntersectionResults(result, left, right) {
|
|
1289
|
-
// Track which side(s)
|
|
1543
|
+
// Track which side(s) reject each key. A key rejection is reported only when BOTH sides reject it, so a key owned by one branch survives the other's key schema. strictObject reports these as unrecognized_keys; a record with an open key schema reports one invalid_key per key.
|
|
1290
1544
|
const unrecKeys = new Map();
|
|
1291
1545
|
let unrecIssue;
|
|
1292
|
-
|
|
1293
|
-
|
|
1546
|
+
const keyIssues = new Map();
|
|
1547
|
+
const collect = (iss, side) => {
|
|
1548
|
+
let keys;
|
|
1549
|
+
if (iss.code === "unrecognized_keys" && !iss.path?.length) {
|
|
1294
1550
|
unrecIssue ?? (unrecIssue = iss);
|
|
1295
|
-
|
|
1296
|
-
|
|
1297
|
-
|
|
1298
|
-
|
|
1299
|
-
|
|
1551
|
+
keys = iss.keys;
|
|
1552
|
+
}
|
|
1553
|
+
else if (iss.code === "invalid_key" && iss.origin === "record" && iss.path?.length === 1) {
|
|
1554
|
+
const k = String(iss.path[0]);
|
|
1555
|
+
if (!keyIssues.has(k))
|
|
1556
|
+
keyIssues.set(k, iss);
|
|
1557
|
+
keys = [k];
|
|
1300
1558
|
}
|
|
1301
1559
|
else {
|
|
1302
|
-
|
|
1560
|
+
return false;
|
|
1303
1561
|
}
|
|
1562
|
+
for (const k of keys) {
|
|
1563
|
+
if (!unrecKeys.has(k))
|
|
1564
|
+
unrecKeys.set(k, {});
|
|
1565
|
+
unrecKeys.get(k)[side] = true;
|
|
1566
|
+
}
|
|
1567
|
+
return true;
|
|
1568
|
+
};
|
|
1569
|
+
for (const iss of left.issues) {
|
|
1570
|
+
if (!collect(iss, "l"))
|
|
1571
|
+
result.issues.push(iss);
|
|
1304
1572
|
}
|
|
1305
1573
|
for (const iss of right.issues) {
|
|
1306
|
-
if (iss
|
|
1307
|
-
for (const k of iss.keys) {
|
|
1308
|
-
if (!unrecKeys.has(k))
|
|
1309
|
-
unrecKeys.set(k, {});
|
|
1310
|
-
unrecKeys.get(k).r = true;
|
|
1311
|
-
}
|
|
1312
|
-
}
|
|
1313
|
-
else {
|
|
1574
|
+
if (!collect(iss, "r"))
|
|
1314
1575
|
result.issues.push(iss);
|
|
1315
|
-
}
|
|
1316
1576
|
}
|
|
1317
|
-
// Report only keys
|
|
1577
|
+
// Report only keys rejected by BOTH sides
|
|
1318
1578
|
const bothKeys = [...unrecKeys].filter(([, f]) => f.l && f.r).map(([k]) => k);
|
|
1319
|
-
if (bothKeys.length
|
|
1320
|
-
|
|
1579
|
+
if (bothKeys.length) {
|
|
1580
|
+
const aggregated = unrecIssue ? bothKeys.filter((k) => unrecIssue.keys.includes(k)) : [];
|
|
1581
|
+
if (aggregated.length)
|
|
1582
|
+
result.issues.push({ ...unrecIssue, keys: aggregated });
|
|
1583
|
+
for (const k of bothKeys) {
|
|
1584
|
+
if (!aggregated.includes(k) && keyIssues.has(k))
|
|
1585
|
+
result.issues.push(keyIssues.get(k));
|
|
1586
|
+
}
|
|
1321
1587
|
}
|
|
1322
|
-
if (util.aborted(result))
|
|
1323
|
-
return result;
|
|
1324
1588
|
const merged = mergeValues(left.value, right.value);
|
|
1325
1589
|
if (!merged.valid) {
|
|
1590
|
+
if (util.aborted(result))
|
|
1591
|
+
return result;
|
|
1326
1592
|
throw new Error(`Unmergable intersection. Error path: ` + `${JSON.stringify(merged.mergeErrorPath)}`);
|
|
1327
1593
|
}
|
|
1328
1594
|
result.value = merged.data;
|
|
@@ -1331,6 +1597,8 @@ function handleIntersectionResults(result, left, right) {
|
|
|
1331
1597
|
exports.$ZodTuple = core.$constructor("$ZodTuple", (inst, def) => {
|
|
1332
1598
|
exports.$ZodType.init(inst, def);
|
|
1333
1599
|
const items = def.items;
|
|
1600
|
+
const memo = core.globalConfig.memoizer;
|
|
1601
|
+
memo?.attach(inst);
|
|
1334
1602
|
inst._zod.parse = (payload, ctx) => {
|
|
1335
1603
|
const input = payload.value;
|
|
1336
1604
|
if (!Array.isArray(input)) {
|
|
@@ -1342,7 +1610,7 @@ exports.$ZodTuple = core.$constructor("$ZodTuple", (inst, def) => {
|
|
|
1342
1610
|
});
|
|
1343
1611
|
return payload;
|
|
1344
1612
|
}
|
|
1345
|
-
payload.value = [];
|
|
1613
|
+
payload.value = memo ? memo.alloc(inst, payload, [], ctx) : [];
|
|
1346
1614
|
const proms = [];
|
|
1347
1615
|
const optinStart = getTupleOptStart(items, "optin");
|
|
1348
1616
|
const optoutStart = getTupleOptStart(items, "optout");
|
|
@@ -1369,11 +1637,11 @@ exports.$ZodTuple = core.$constructor("$ZodTuple", (inst, def) => {
|
|
|
1369
1637
|
});
|
|
1370
1638
|
}
|
|
1371
1639
|
}
|
|
1372
|
-
// Run every item in parallel, collecting results into an indexed
|
|
1373
|
-
// array. The post-processing in `handleTupleResults` walks them in
|
|
1374
|
-
// order so it can decide whether an absent optional-output error can
|
|
1375
|
-
// truncate the tail or must be reported to preserve required output.
|
|
1640
|
+
// Run every item in parallel, collecting results into an indexed array. The post-processing in `handleTupleResults` walks them in order so it can decide whether an absent optional-output error can truncate the tail or must be reported to preserve required output.
|
|
1376
1641
|
const itemResults = new Array(items.length);
|
|
1642
|
+
// only tracked when there is a rest loop to skip
|
|
1643
|
+
const abortEarly = def.rest ? ctx?.abortEarly : undefined;
|
|
1644
|
+
let itemAborted = false;
|
|
1377
1645
|
for (let i = 0; i < items.length; i++) {
|
|
1378
1646
|
const r = items[i]._zod.run({ value: input[i], issues: [] }, ctx);
|
|
1379
1647
|
if (r instanceof Promise) {
|
|
@@ -1383,12 +1651,21 @@ exports.$ZodTuple = core.$constructor("$ZodTuple", (inst, def) => {
|
|
|
1383
1651
|
}
|
|
1384
1652
|
else {
|
|
1385
1653
|
itemResults[i] = r;
|
|
1654
|
+
if (abortEarly && !itemAborted && r.issues.length)
|
|
1655
|
+
itemAborted = util.aborted(r);
|
|
1386
1656
|
}
|
|
1387
1657
|
}
|
|
1388
|
-
|
|
1658
|
+
// sound because rest is non-empty exactly when every fixed index is present, the one case handleTupleResults cannot discard an item's issues
|
|
1659
|
+
if (def.rest && !itemAborted) {
|
|
1389
1660
|
let i = items.length - 1;
|
|
1390
1661
|
const rest = input.slice(items.length);
|
|
1662
|
+
let seen = payload.issues.length;
|
|
1391
1663
|
for (const el of rest) {
|
|
1664
|
+
if (abortEarly && payload.issues.length !== seen) {
|
|
1665
|
+
if (util.aborted(payload, seen))
|
|
1666
|
+
break;
|
|
1667
|
+
seen = payload.issues.length;
|
|
1668
|
+
}
|
|
1392
1669
|
i++;
|
|
1393
1670
|
const result = def.rest._zod.run({ value: el, issues: [] }, ctx);
|
|
1394
1671
|
if (result instanceof Promise) {
|
|
@@ -1407,7 +1684,9 @@ exports.$ZodTuple = core.$constructor("$ZodTuple", (inst, def) => {
|
|
|
1407
1684
|
});
|
|
1408
1685
|
function getTupleOptStart(items, key) {
|
|
1409
1686
|
for (let i = items.length - 1; i >= 0; i--) {
|
|
1410
|
-
|
|
1687
|
+
// optin is a three-rung ladder so any rung above `undefined` permits an absent slot; optout stays two-valued.
|
|
1688
|
+
const omittable = key === "optin" ? items[i]._zod.optin !== undefined : items[i]._zod.optout === "optional";
|
|
1689
|
+
if (!omittable)
|
|
1411
1690
|
return i + 1;
|
|
1412
1691
|
}
|
|
1413
1692
|
return 0;
|
|
@@ -1419,12 +1698,15 @@ function handleTupleResult(result, final, index) {
|
|
|
1419
1698
|
final.value[index] = result.value;
|
|
1420
1699
|
}
|
|
1421
1700
|
function handleTupleResults(itemResults, final, items, input, optoutStart) {
|
|
1422
|
-
// Walk results in order. Mirror $ZodObject's swallow-on-absent-optional
|
|
1423
|
-
// rule, but only after `optoutStart`: the first index where the output
|
|
1424
|
-
// tuple tail can be absent.
|
|
1701
|
+
// Walk results in order. Mirror $ZodObject's swallow-on-absent-optional rule, but only after `optoutStart`: the first index where the output tuple tail can be absent.
|
|
1425
1702
|
for (let i = 0; i < items.length; i++) {
|
|
1426
1703
|
const r = itemResults[i];
|
|
1427
1704
|
const isPresent = i < input.length;
|
|
1705
|
+
// The array analog of `handlePropertyResult`'s absent-key early return: the middle rung permits absence without supplying anything in its place, so the tail truncates here instead of materializing whatever the item made of `undefined`.
|
|
1706
|
+
if (!isPresent && i >= optoutStart && items[i]._zod.optin === "optional") {
|
|
1707
|
+
final.value.length = i;
|
|
1708
|
+
break;
|
|
1709
|
+
}
|
|
1428
1710
|
if (r.issues.length) {
|
|
1429
1711
|
if (!isPresent && i >= optoutStart) {
|
|
1430
1712
|
final.value.length = i;
|
|
@@ -1452,6 +1734,8 @@ function handleTupleResults(itemResults, final, items, input, optoutStart) {
|
|
|
1452
1734
|
}
|
|
1453
1735
|
exports.$ZodRecord = core.$constructor("$ZodRecord", (inst, def) => {
|
|
1454
1736
|
exports.$ZodType.init(inst, def);
|
|
1737
|
+
const memo = core.globalConfig.memoizer;
|
|
1738
|
+
memo?.attach(inst);
|
|
1455
1739
|
inst._zod.parse = (payload, ctx) => {
|
|
1456
1740
|
const input = payload.value;
|
|
1457
1741
|
if (!util.isPlainObject(input)) {
|
|
@@ -1463,14 +1747,18 @@ exports.$ZodRecord = core.$constructor("$ZodRecord", (inst, def) => {
|
|
|
1463
1747
|
});
|
|
1464
1748
|
return payload;
|
|
1465
1749
|
}
|
|
1750
|
+
// no guard in either loop below: a record's invalid_key aborts but an enclosing intersection can reconcile it, so a stopped loop hides keys the sibling does not own and the intersection then rejects nothing
|
|
1466
1751
|
const proms = [];
|
|
1467
1752
|
const values = def.keyType._zod.values;
|
|
1468
|
-
if (values) {
|
|
1469
|
-
payload.value = {};
|
|
1753
|
+
if (values && !def.partial) {
|
|
1754
|
+
payload.value = memo ? memo.alloc(inst, payload, {}, ctx) : {};
|
|
1470
1755
|
const recordKeys = new Set();
|
|
1471
1756
|
for (const key of values) {
|
|
1472
1757
|
if (typeof key === "string" || typeof key === "number" || typeof key === "symbol") {
|
|
1473
1758
|
recordKeys.add(typeof key === "number" ? key.toString() : key);
|
|
1759
|
+
// A declared __proto__ is stripped but is not an unrecognized key.
|
|
1760
|
+
if (key === "__proto__")
|
|
1761
|
+
continue;
|
|
1474
1762
|
const keyResult = def.keyType._zod.run({ value: key, issues: [] }, ctx);
|
|
1475
1763
|
if (keyResult instanceof Promise) {
|
|
1476
1764
|
throw new Error("Async schemas not supported in object keys currently");
|
|
@@ -1487,6 +1775,8 @@ exports.$ZodRecord = core.$constructor("$ZodRecord", (inst, def) => {
|
|
|
1487
1775
|
continue;
|
|
1488
1776
|
}
|
|
1489
1777
|
const outKey = keyResult.value;
|
|
1778
|
+
if (outKey === "__proto__")
|
|
1779
|
+
continue;
|
|
1490
1780
|
const result = def.valueType._zod.run({ value: input[key], issues: [] }, ctx);
|
|
1491
1781
|
if (result instanceof Promise) {
|
|
1492
1782
|
proms.push(result.then((result) => {
|
|
@@ -1507,8 +1797,16 @@ exports.$ZodRecord = core.$constructor("$ZodRecord", (inst, def) => {
|
|
|
1507
1797
|
let unrecognized;
|
|
1508
1798
|
for (const key in input) {
|
|
1509
1799
|
if (!recordKeys.has(key)) {
|
|
1510
|
-
|
|
1511
|
-
|
|
1800
|
+
if (def.mode === "loose") {
|
|
1801
|
+
// skip __proto__ so it can't replace the result prototype via the assignment setter on the plain {} we build into
|
|
1802
|
+
if (key === "__proto__")
|
|
1803
|
+
continue;
|
|
1804
|
+
payload.value[key] = input[key];
|
|
1805
|
+
}
|
|
1806
|
+
else {
|
|
1807
|
+
unrecognized = unrecognized ?? [];
|
|
1808
|
+
unrecognized.push(key);
|
|
1809
|
+
}
|
|
1512
1810
|
}
|
|
1513
1811
|
}
|
|
1514
1812
|
if (unrecognized && unrecognized.length > 0) {
|
|
@@ -1517,11 +1815,14 @@ exports.$ZodRecord = core.$constructor("$ZodRecord", (inst, def) => {
|
|
|
1517
1815
|
input,
|
|
1518
1816
|
inst,
|
|
1519
1817
|
keys: unrecognized,
|
|
1818
|
+
continue: true,
|
|
1520
1819
|
});
|
|
1521
1820
|
}
|
|
1522
1821
|
}
|
|
1523
1822
|
else {
|
|
1524
|
-
payload.value = {};
|
|
1823
|
+
payload.value = memo ? memo.alloc(inst, payload, {}, ctx) : {};
|
|
1824
|
+
// An enumerable key schema declares which keys the record owns, so a key outside the set is unrecognized. A non-enumerable one (regex, refine) is a constraint every key must satisfy, so a failing key is invalid. Only the former is reconcilable against the other side of an intersection.
|
|
1825
|
+
let unrecognized;
|
|
1525
1826
|
// Reflect.ownKeys for Symbol-key support; filter non-enumerable to match z.object()
|
|
1526
1827
|
for (const key of Reflect.ownKeys(input)) {
|
|
1527
1828
|
if (key === "__proto__")
|
|
@@ -1532,8 +1833,7 @@ exports.$ZodRecord = core.$constructor("$ZodRecord", (inst, def) => {
|
|
|
1532
1833
|
if (keyResult instanceof Promise) {
|
|
1533
1834
|
throw new Error("Async schemas not supported in object keys currently");
|
|
1534
1835
|
}
|
|
1535
|
-
// Numeric string fallback: if key is a numeric string and failed, retry with Number(key)
|
|
1536
|
-
// This handles z.number(), z.literal([1, 2, 3]), and unions containing numeric literals
|
|
1836
|
+
// Numeric string fallback: if key is a numeric string and failed, retry with Number(key). This handles z.number(), z.literal([1, 2, 3]), and unions containing numeric literals
|
|
1537
1837
|
const checkNumericKey = typeof key === "string" && regexes.number.test(key) && keyResult.issues.length;
|
|
1538
1838
|
if (checkNumericKey) {
|
|
1539
1839
|
const retryResult = def.keyType._zod.run({ value: Number(key), issues: [] }, ctx);
|
|
@@ -1549,6 +1849,10 @@ exports.$ZodRecord = core.$constructor("$ZodRecord", (inst, def) => {
|
|
|
1549
1849
|
// Pass through unchanged
|
|
1550
1850
|
payload.value[key] = input[key];
|
|
1551
1851
|
}
|
|
1852
|
+
else if (values) {
|
|
1853
|
+
unrecognized = unrecognized ?? [];
|
|
1854
|
+
unrecognized.push(key);
|
|
1855
|
+
}
|
|
1552
1856
|
else {
|
|
1553
1857
|
// Default "strict" behavior: error on invalid key
|
|
1554
1858
|
payload.issues.push({
|
|
@@ -1562,22 +1866,35 @@ exports.$ZodRecord = core.$constructor("$ZodRecord", (inst, def) => {
|
|
|
1562
1866
|
}
|
|
1563
1867
|
continue;
|
|
1564
1868
|
}
|
|
1869
|
+
// the guard above tests the raw input key, but the key schema can normalize an ordinary key into __proto__; re-check the key we actually write under
|
|
1870
|
+
const outKey = keyResult.value;
|
|
1871
|
+
if (outKey === "__proto__")
|
|
1872
|
+
continue;
|
|
1565
1873
|
const result = def.valueType._zod.run({ value: input[key], issues: [] }, ctx);
|
|
1566
1874
|
if (result instanceof Promise) {
|
|
1567
1875
|
proms.push(result.then((result) => {
|
|
1568
1876
|
if (result.issues.length) {
|
|
1569
1877
|
payload.issues.push(...util.prefixIssues(key, result.issues));
|
|
1570
1878
|
}
|
|
1571
|
-
payload.value[
|
|
1879
|
+
payload.value[outKey] = result.value;
|
|
1572
1880
|
}));
|
|
1573
1881
|
}
|
|
1574
1882
|
else {
|
|
1575
1883
|
if (result.issues.length) {
|
|
1576
1884
|
payload.issues.push(...util.prefixIssues(key, result.issues));
|
|
1577
1885
|
}
|
|
1578
|
-
payload.value[
|
|
1886
|
+
payload.value[outKey] = result.value;
|
|
1579
1887
|
}
|
|
1580
1888
|
}
|
|
1889
|
+
if (unrecognized && unrecognized.length > 0) {
|
|
1890
|
+
payload.issues.push({
|
|
1891
|
+
code: "unrecognized_keys",
|
|
1892
|
+
input,
|
|
1893
|
+
inst,
|
|
1894
|
+
keys: unrecognized,
|
|
1895
|
+
continue: true,
|
|
1896
|
+
});
|
|
1897
|
+
}
|
|
1581
1898
|
}
|
|
1582
1899
|
if (proms.length) {
|
|
1583
1900
|
return Promise.all(proms).then(() => payload);
|
|
@@ -1587,6 +1904,8 @@ exports.$ZodRecord = core.$constructor("$ZodRecord", (inst, def) => {
|
|
|
1587
1904
|
});
|
|
1588
1905
|
exports.$ZodMap = core.$constructor("$ZodMap", (inst, def) => {
|
|
1589
1906
|
exports.$ZodType.init(inst, def);
|
|
1907
|
+
const memo = core.globalConfig.memoizer;
|
|
1908
|
+
memo?.attach(inst);
|
|
1590
1909
|
inst._zod.parse = (payload, ctx) => {
|
|
1591
1910
|
const input = payload.value;
|
|
1592
1911
|
if (!(input instanceof Map)) {
|
|
@@ -1599,8 +1918,15 @@ exports.$ZodMap = core.$constructor("$ZodMap", (inst, def) => {
|
|
|
1599
1918
|
return payload;
|
|
1600
1919
|
}
|
|
1601
1920
|
const proms = [];
|
|
1602
|
-
payload.value = new Map();
|
|
1921
|
+
payload.value = memo ? memo.alloc(inst, payload, new Map(), ctx) : new Map();
|
|
1922
|
+
const abortEarly = ctx?.abortEarly;
|
|
1923
|
+
let seen = payload.issues.length;
|
|
1603
1924
|
for (const [key, value] of input) {
|
|
1925
|
+
if (abortEarly && payload.issues.length !== seen) {
|
|
1926
|
+
if (util.aborted(payload, seen))
|
|
1927
|
+
break;
|
|
1928
|
+
seen = payload.issues.length;
|
|
1929
|
+
}
|
|
1604
1930
|
const keyResult = def.keyType._zod.run({ value: key, issues: [] }, ctx);
|
|
1605
1931
|
const valueResult = def.valueType._zod.run({ value: value, issues: [] }, ctx);
|
|
1606
1932
|
if (keyResult instanceof Promise || valueResult instanceof Promise) {
|
|
@@ -1651,6 +1977,8 @@ function handleMapResult(keyResult, valueResult, final, key, input, inst, ctx) {
|
|
|
1651
1977
|
}
|
|
1652
1978
|
exports.$ZodSet = core.$constructor("$ZodSet", (inst, def) => {
|
|
1653
1979
|
exports.$ZodType.init(inst, def);
|
|
1980
|
+
const memo = core.globalConfig.memoizer;
|
|
1981
|
+
memo?.attach(inst);
|
|
1654
1982
|
inst._zod.parse = (payload, ctx) => {
|
|
1655
1983
|
const input = payload.value;
|
|
1656
1984
|
if (!(input instanceof Set)) {
|
|
@@ -1663,8 +1991,15 @@ exports.$ZodSet = core.$constructor("$ZodSet", (inst, def) => {
|
|
|
1663
1991
|
return payload;
|
|
1664
1992
|
}
|
|
1665
1993
|
const proms = [];
|
|
1666
|
-
payload.value = new Set();
|
|
1994
|
+
payload.value = memo ? memo.alloc(inst, payload, new Set(), ctx) : new Set();
|
|
1995
|
+
const abortEarly = ctx?.abortEarly;
|
|
1996
|
+
let seen = payload.issues.length;
|
|
1667
1997
|
for (const item of input) {
|
|
1998
|
+
if (abortEarly && payload.issues.length !== seen) {
|
|
1999
|
+
if (util.aborted(payload, seen))
|
|
2000
|
+
break;
|
|
2001
|
+
seen = payload.issues.length;
|
|
2002
|
+
}
|
|
1668
2003
|
const result = def.valueType._zod.run({ value: item, issues: [] }, ctx);
|
|
1669
2004
|
if (result instanceof Promise) {
|
|
1670
2005
|
proms.push(result.then((result) => handleSetResult(result, payload)));
|
|
@@ -1688,10 +2023,11 @@ exports.$ZodEnum = core.$constructor("$ZodEnum", (inst, def) => {
|
|
|
1688
2023
|
const values = util.getEnumValues(def.entries);
|
|
1689
2024
|
const valuesSet = new Set(values);
|
|
1690
2025
|
inst._zod.values = valuesSet;
|
|
1691
|
-
inst
|
|
1692
|
-
.filter((k) => util.propertyKeyTypes.has(typeof k))
|
|
1693
|
-
|
|
1694
|
-
.join("|")})$`);
|
|
2026
|
+
util.defineLazyInternal(inst, "pattern", (zod) => {
|
|
2027
|
+
const patternValues = util.getEnumValues(zod.def.entries).filter((k) => util.propertyKeyTypes.has(typeof k));
|
|
2028
|
+
// unmatchable fallback, RE2-safe: an empty alternation would compile to /^()$/, which matches ""
|
|
2029
|
+
return new RegExp(patternValues.length ? `^(${patternValues.map((o) => util.escapeRegex(o.toString())).join("|")})$` : "^[^\\s\\S]$");
|
|
2030
|
+
});
|
|
1695
2031
|
inst._zod.parse = (payload, _ctx) => {
|
|
1696
2032
|
const input = payload.value;
|
|
1697
2033
|
if (valuesSet.has(input)) {
|
|
@@ -1708,14 +2044,17 @@ exports.$ZodEnum = core.$constructor("$ZodEnum", (inst, def) => {
|
|
|
1708
2044
|
});
|
|
1709
2045
|
exports.$ZodLiteral = core.$constructor("$ZodLiteral", (inst, def) => {
|
|
1710
2046
|
exports.$ZodType.init(inst, def);
|
|
1711
|
-
if (def.values.length === 0) {
|
|
1712
|
-
throw new Error("Cannot create literal schema with no valid values");
|
|
1713
|
-
}
|
|
1714
2047
|
const values = new Set(def.values);
|
|
1715
2048
|
inst._zod.values = values;
|
|
1716
|
-
inst
|
|
1717
|
-
|
|
1718
|
-
|
|
2049
|
+
util.defineLazyInternal(inst, "pattern", (zod) => {
|
|
2050
|
+
const vals = zod.def.values;
|
|
2051
|
+
// unmatchable fallback, RE2-safe: an empty alternation would compile to /^()$/, which matches ""
|
|
2052
|
+
return new RegExp(vals.length
|
|
2053
|
+
? `^(${vals
|
|
2054
|
+
.map((o) => typeof o === "string" ? util.escapeRegex(o) : o ? util.escapeRegex(o.toString()) : String(o))
|
|
2055
|
+
.join("|")})$`
|
|
2056
|
+
: "^[^\\s\\S]$");
|
|
2057
|
+
});
|
|
1719
2058
|
inst._zod.parse = (payload, _ctx) => {
|
|
1720
2059
|
const input = payload.value;
|
|
1721
2060
|
if (values.has(input)) {
|
|
@@ -1749,6 +2088,7 @@ exports.$ZodFile = core.$constructor("$ZodFile", (inst, def) => {
|
|
|
1749
2088
|
exports.$ZodTransform = core.$constructor("$ZodTransform", (inst, def) => {
|
|
1750
2089
|
exports.$ZodType.init(inst, def);
|
|
1751
2090
|
inst._zod.optin = "optional";
|
|
2091
|
+
core.globalConfig.memoizer?.guard(inst);
|
|
1752
2092
|
inst._zod.parse = (payload, ctx) => {
|
|
1753
2093
|
if (ctx.direction === "backward") {
|
|
1754
2094
|
throw new core.$ZodEncodeError(inst.constructor.name);
|
|
@@ -1758,7 +2098,6 @@ exports.$ZodTransform = core.$constructor("$ZodTransform", (inst, def) => {
|
|
|
1758
2098
|
const output = _out instanceof Promise ? _out : Promise.resolve(_out);
|
|
1759
2099
|
return output.then((output) => {
|
|
1760
2100
|
payload.value = output;
|
|
1761
|
-
payload.fallback = true;
|
|
1762
2101
|
return payload;
|
|
1763
2102
|
});
|
|
1764
2103
|
}
|
|
@@ -1766,37 +2105,37 @@ exports.$ZodTransform = core.$constructor("$ZodTransform", (inst, def) => {
|
|
|
1766
2105
|
throw new core.$ZodAsyncError();
|
|
1767
2106
|
}
|
|
1768
2107
|
payload.value = _out;
|
|
1769
|
-
payload.fallback = true;
|
|
1770
2108
|
return payload;
|
|
1771
2109
|
};
|
|
1772
2110
|
});
|
|
1773
|
-
function handleOptionalResult(
|
|
1774
|
-
|
|
1775
|
-
|
|
1776
|
-
|
|
1777
|
-
return result;
|
|
2111
|
+
function handleOptionalResult(payload, result) {
|
|
2112
|
+
// A substituting schema that still failed has no usable answer; yield undefined. Its issues are simply dropped: it ran on a payload of its own, so there is no shared array to truncate and nothing of the caller's to lose with it.
|
|
2113
|
+
payload.value = result.issues.length ? undefined : result.value;
|
|
2114
|
+
return payload;
|
|
1778
2115
|
}
|
|
1779
2116
|
exports.$ZodOptional = core.$constructor("$ZodOptional", (inst, def) => {
|
|
1780
2117
|
exports.$ZodType.init(inst, def);
|
|
1781
|
-
|
|
2118
|
+
// .optional() propagates absence rather than substituting for it, so a defaulted inner keeps its rung.
|
|
2119
|
+
util.defineLazyInternal(inst, "optin", (zod) => zod.def.innerType._zod.optin === "defaulted" ? "defaulted" : "optional");
|
|
1782
2120
|
inst._zod.optout = "optional";
|
|
1783
|
-
util.
|
|
1784
|
-
|
|
2121
|
+
util.defineLazyInternal(inst, "values", (zod) => {
|
|
2122
|
+
const values = zod.def.innerType._zod.values;
|
|
2123
|
+
return values ? new Set([...values, undefined]) : undefined;
|
|
1785
2124
|
});
|
|
1786
|
-
util.
|
|
1787
|
-
const pattern = def.innerType._zod.pattern;
|
|
2125
|
+
util.defineLazyInternal(inst, "pattern", (zod) => {
|
|
2126
|
+
const pattern = zod.def.innerType._zod.pattern;
|
|
1788
2127
|
return pattern ? new RegExp(`^(${util.cleanRegex(pattern.source)})?$`) : undefined;
|
|
1789
2128
|
});
|
|
1790
2129
|
inst._zod.parse = (payload, ctx) => {
|
|
1791
|
-
if (def.innerType._zod.optin === "optional") {
|
|
1792
|
-
const input = payload.value;
|
|
1793
|
-
const result = def.innerType._zod.run(payload, ctx);
|
|
1794
|
-
if (result instanceof Promise)
|
|
1795
|
-
return result.then((r) => handleOptionalResult(r, input));
|
|
1796
|
-
return handleOptionalResult(result, input);
|
|
1797
|
-
}
|
|
1798
2130
|
if (payload.value === undefined) {
|
|
1799
|
-
|
|
2131
|
+
// Only the top rung substitutes a value for absence; everything else leaves it intact, which is what .optional() means.
|
|
2132
|
+
if (def.innerType._zod.optin !== "defaulted")
|
|
2133
|
+
return payload;
|
|
2134
|
+
// Its own payload, for the same reason $ZodCatch gets one: a pipe forwards an unrecognized key through the caller's issues array, and this must not read that as the substituting schema failing and drop it.
|
|
2135
|
+
const result = def.innerType._zod.run({ value: payload.value, issues: [] }, ctx);
|
|
2136
|
+
if (result instanceof Promise)
|
|
2137
|
+
return result.then((result) => handleOptionalResult(payload, result));
|
|
2138
|
+
return handleOptionalResult(payload, result);
|
|
1800
2139
|
}
|
|
1801
2140
|
return def.innerType._zod.run(payload, ctx);
|
|
1802
2141
|
};
|
|
@@ -1805,8 +2144,8 @@ exports.$ZodExactOptional = core.$constructor("$ZodExactOptional", (inst, def) =
|
|
|
1805
2144
|
// Call parent init - inherits optin/optout = "optional"
|
|
1806
2145
|
exports.$ZodOptional.init(inst, def);
|
|
1807
2146
|
// Override values/pattern to NOT add undefined
|
|
1808
|
-
util.
|
|
1809
|
-
util.
|
|
2147
|
+
util.defineLazyInternal(inst, "values", (zod) => zod.def.innerType._zod.values);
|
|
2148
|
+
util.defineLazyInternal(inst, "pattern", (zod) => zod.def.innerType._zod.pattern);
|
|
1810
2149
|
// Override parse to just delegate (no undefined handling)
|
|
1811
2150
|
inst._zod.parse = (payload, ctx) => {
|
|
1812
2151
|
return def.innerType._zod.run(payload, ctx);
|
|
@@ -1814,14 +2153,14 @@ exports.$ZodExactOptional = core.$constructor("$ZodExactOptional", (inst, def) =
|
|
|
1814
2153
|
});
|
|
1815
2154
|
exports.$ZodNullable = core.$constructor("$ZodNullable", (inst, def) => {
|
|
1816
2155
|
exports.$ZodType.init(inst, def);
|
|
1817
|
-
util.
|
|
1818
|
-
util.
|
|
1819
|
-
util.
|
|
1820
|
-
const pattern = def.innerType._zod.pattern;
|
|
2156
|
+
util.defineLazyInternal(inst, "optin", (zod) => zod.def.innerType._zod.optin);
|
|
2157
|
+
util.defineLazyInternal(inst, "optout", (zod) => zod.def.innerType._zod.optout);
|
|
2158
|
+
util.defineLazyInternal(inst, "pattern", (zod) => {
|
|
2159
|
+
const pattern = zod.def.innerType._zod.pattern;
|
|
1821
2160
|
return pattern ? new RegExp(`^(${util.cleanRegex(pattern.source)}|null)$`) : undefined;
|
|
1822
2161
|
});
|
|
1823
|
-
util.
|
|
1824
|
-
return def.innerType._zod.values ? new Set([...def.innerType._zod.values, null]) : undefined;
|
|
2162
|
+
util.defineLazyInternal(inst, "values", (zod) => {
|
|
2163
|
+
return zod.def.innerType._zod.values ? new Set([...zod.def.innerType._zod.values, null]) : undefined;
|
|
1825
2164
|
});
|
|
1826
2165
|
inst._zod.parse = (payload, ctx) => {
|
|
1827
2166
|
// Forward direction (decode): allow null to pass through
|
|
@@ -1833,8 +2172,8 @@ exports.$ZodNullable = core.$constructor("$ZodNullable", (inst, def) => {
|
|
|
1833
2172
|
exports.$ZodDefault = core.$constructor("$ZodDefault", (inst, def) => {
|
|
1834
2173
|
exports.$ZodType.init(inst, def);
|
|
1835
2174
|
// inst._zod.qin = "true";
|
|
1836
|
-
inst._zod.optin = "
|
|
1837
|
-
util.
|
|
2175
|
+
inst._zod.optin = "defaulted";
|
|
2176
|
+
util.defineLazyInternal(inst, "values", (zod) => zod.def.innerType._zod.values);
|
|
1838
2177
|
inst._zod.parse = (payload, ctx) => {
|
|
1839
2178
|
if (ctx.direction === "backward") {
|
|
1840
2179
|
return def.innerType._zod.run(payload, ctx);
|
|
@@ -1863,8 +2202,8 @@ function handleDefaultResult(payload, def) {
|
|
|
1863
2202
|
}
|
|
1864
2203
|
exports.$ZodPrefault = core.$constructor("$ZodPrefault", (inst, def) => {
|
|
1865
2204
|
exports.$ZodType.init(inst, def);
|
|
1866
|
-
inst._zod.optin = "
|
|
1867
|
-
util.
|
|
2205
|
+
inst._zod.optin = "defaulted";
|
|
2206
|
+
util.defineLazyInternal(inst, "values", (zod) => zod.def.innerType._zod.values);
|
|
1868
2207
|
inst._zod.parse = (payload, ctx) => {
|
|
1869
2208
|
if (ctx.direction === "backward") {
|
|
1870
2209
|
return def.innerType._zod.run(payload, ctx);
|
|
@@ -1878,8 +2217,8 @@ exports.$ZodPrefault = core.$constructor("$ZodPrefault", (inst, def) => {
|
|
|
1878
2217
|
});
|
|
1879
2218
|
exports.$ZodNonOptional = core.$constructor("$ZodNonOptional", (inst, def) => {
|
|
1880
2219
|
exports.$ZodType.init(inst, def);
|
|
1881
|
-
util.
|
|
1882
|
-
const v = def.innerType._zod.values;
|
|
2220
|
+
util.defineLazyInternal(inst, "values", (zod) => {
|
|
2221
|
+
const v = zod.def.innerType._zod.values;
|
|
1883
2222
|
return v ? new Set([...v].filter((x) => x !== undefined)) : undefined;
|
|
1884
2223
|
});
|
|
1885
2224
|
inst._zod.parse = (payload, ctx) => {
|
|
@@ -1918,47 +2257,40 @@ exports.$ZodSuccess = core.$constructor("$ZodSuccess", (inst, def) => {
|
|
|
1918
2257
|
return payload;
|
|
1919
2258
|
};
|
|
1920
2259
|
});
|
|
2260
|
+
function handleCatchResult(payload, result, def, ctx) {
|
|
2261
|
+
if (!result.issues.length) {
|
|
2262
|
+
payload.value = result.value;
|
|
2263
|
+
// The value carries up, so the flag describing it has to carry with it: a back-edge into a node still being parsed must not be frozen by an enclosing readonly, and its checks belong to the node itself. Guarded so the ordinary case adds no own property.
|
|
2264
|
+
if (result.memo)
|
|
2265
|
+
payload.memo = true;
|
|
2266
|
+
return payload;
|
|
2267
|
+
}
|
|
2268
|
+
// Spread the inner's own payload, not ours: `value` has to stay the input the catch was handed, and the inner ran on a payload of its own so its issues are already private to this call.
|
|
2269
|
+
payload.value = def.catchValue({
|
|
2270
|
+
...result,
|
|
2271
|
+
value: payload.value,
|
|
2272
|
+
error: {
|
|
2273
|
+
issues: result.issues.map((iss) => util.finalizeIssue(iss, ctx, core.config())),
|
|
2274
|
+
},
|
|
2275
|
+
input: payload.value,
|
|
2276
|
+
});
|
|
2277
|
+
return payload;
|
|
2278
|
+
}
|
|
1921
2279
|
exports.$ZodCatch = core.$constructor("$ZodCatch", (inst, def) => {
|
|
1922
2280
|
exports.$ZodType.init(inst, def);
|
|
1923
|
-
inst._zod.optin
|
|
1924
|
-
util.
|
|
1925
|
-
util.
|
|
2281
|
+
util.defineLazyInternal(inst, "optin", (zod) => zod.def.innerType._zod.optin === "defaulted" ? "defaulted" : "optional");
|
|
2282
|
+
util.defineLazyInternal(inst, "optout", (zod) => zod.def.innerType._zod.optout);
|
|
2283
|
+
util.defineLazyInternal(inst, "values", (zod) => zod.def.innerType._zod.values);
|
|
1926
2284
|
inst._zod.parse = (payload, ctx) => {
|
|
1927
2285
|
if (ctx.direction === "backward") {
|
|
1928
2286
|
return def.innerType._zod.run(payload, ctx);
|
|
1929
2287
|
}
|
|
1930
2288
|
// Forward direction (decode): apply catch logic
|
|
1931
|
-
const result = def.innerType._zod.run(payload, ctx);
|
|
2289
|
+
const result = def.innerType._zod.run({ value: payload.value, issues: [] }, ctx);
|
|
1932
2290
|
if (result instanceof Promise) {
|
|
1933
|
-
return result.then((result) =>
|
|
1934
|
-
payload.value = result.value;
|
|
1935
|
-
if (result.issues.length) {
|
|
1936
|
-
payload.value = def.catchValue({
|
|
1937
|
-
...payload,
|
|
1938
|
-
error: {
|
|
1939
|
-
issues: result.issues.map((iss) => util.finalizeIssue(iss, ctx, core.config())),
|
|
1940
|
-
},
|
|
1941
|
-
input: payload.value,
|
|
1942
|
-
});
|
|
1943
|
-
payload.issues = [];
|
|
1944
|
-
payload.fallback = true;
|
|
1945
|
-
}
|
|
1946
|
-
return payload;
|
|
1947
|
-
});
|
|
2291
|
+
return result.then((result) => handleCatchResult(payload, result, def, ctx));
|
|
1948
2292
|
}
|
|
1949
|
-
payload
|
|
1950
|
-
if (result.issues.length) {
|
|
1951
|
-
payload.value = def.catchValue({
|
|
1952
|
-
...payload,
|
|
1953
|
-
error: {
|
|
1954
|
-
issues: result.issues.map((iss) => util.finalizeIssue(iss, ctx, core.config())),
|
|
1955
|
-
},
|
|
1956
|
-
input: payload.value,
|
|
1957
|
-
});
|
|
1958
|
-
payload.issues = [];
|
|
1959
|
-
payload.fallback = true;
|
|
1960
|
-
}
|
|
1961
|
-
return payload;
|
|
2293
|
+
return handleCatchResult(payload, result, def, ctx);
|
|
1962
2294
|
};
|
|
1963
2295
|
});
|
|
1964
2296
|
exports.$ZodNaN = core.$constructor("$ZodNaN", (inst, def) => {
|
|
@@ -1978,10 +2310,10 @@ exports.$ZodNaN = core.$constructor("$ZodNaN", (inst, def) => {
|
|
|
1978
2310
|
});
|
|
1979
2311
|
exports.$ZodPipe = core.$constructor("$ZodPipe", (inst, def) => {
|
|
1980
2312
|
exports.$ZodType.init(inst, def);
|
|
1981
|
-
util.
|
|
1982
|
-
util.
|
|
1983
|
-
util.
|
|
1984
|
-
util.
|
|
2313
|
+
util.defineLazyInternal(inst, "values", (zod) => zod.def.in._zod.values);
|
|
2314
|
+
util.defineLazyInternal(inst, "optin", (zod) => zod.def.in._zod.optin);
|
|
2315
|
+
util.defineLazyInternal(inst, "optout", (zod) => zod.def.out._zod.optout);
|
|
2316
|
+
util.defineLazyInternal(inst, "propValues", (zod) => zod.def.in._zod.propValues);
|
|
1985
2317
|
inst._zod.parse = (payload, ctx) => {
|
|
1986
2318
|
if (ctx.direction === "backward") {
|
|
1987
2319
|
const right = def.out._zod.run(payload, ctx);
|
|
@@ -1998,19 +2330,20 @@ exports.$ZodPipe = core.$constructor("$ZodPipe", (inst, def) => {
|
|
|
1998
2330
|
};
|
|
1999
2331
|
});
|
|
2000
2332
|
function handlePipeResult(left, next, ctx) {
|
|
2001
|
-
|
|
2333
|
+
// Any issue stops the pipe, so a failing refinement never feeds its transform. An unrecognized key is the exception: it describes the input's extra properties, not the value being piped, and an enclosing intersection may yet reconcile it.
|
|
2334
|
+
if (left.issues.some((iss) => iss.code !== "unrecognized_keys")) {
|
|
2002
2335
|
// prevent further checks
|
|
2003
2336
|
left.aborted = true;
|
|
2004
2337
|
return left;
|
|
2005
2338
|
}
|
|
2006
|
-
return next._zod.run({ value: left.value, issues: left.issues
|
|
2339
|
+
return next._zod.run({ value: left.value, issues: left.issues }, ctx);
|
|
2007
2340
|
}
|
|
2008
2341
|
exports.$ZodCodec = core.$constructor("$ZodCodec", (inst, def) => {
|
|
2009
2342
|
exports.$ZodType.init(inst, def);
|
|
2010
|
-
util.
|
|
2011
|
-
util.
|
|
2012
|
-
util.
|
|
2013
|
-
util.
|
|
2343
|
+
util.defineLazyInternal(inst, "values", (zod) => zod.def.in._zod.values);
|
|
2344
|
+
util.defineLazyInternal(inst, "optin", (zod) => zod.def.in._zod.optin);
|
|
2345
|
+
util.defineLazyInternal(inst, "optout", (zod) => zod.def.out._zod.optout);
|
|
2346
|
+
util.defineLazyInternal(inst, "propValues", (zod) => zod.def.in._zod.propValues);
|
|
2014
2347
|
inst._zod.parse = (payload, ctx) => {
|
|
2015
2348
|
const direction = ctx.direction || "forward";
|
|
2016
2349
|
if (direction === "forward") {
|
|
@@ -2064,10 +2397,10 @@ exports.$ZodPreprocess = core.$constructor("$ZodPreprocess", (inst, def) => {
|
|
|
2064
2397
|
});
|
|
2065
2398
|
exports.$ZodReadonly = core.$constructor("$ZodReadonly", (inst, def) => {
|
|
2066
2399
|
exports.$ZodType.init(inst, def);
|
|
2067
|
-
util.
|
|
2068
|
-
util.
|
|
2069
|
-
util.
|
|
2070
|
-
util.
|
|
2400
|
+
util.defineLazyInternal(inst, "propValues", (zod) => zod.def.innerType._zod.propValues);
|
|
2401
|
+
util.defineLazyInternal(inst, "values", (zod) => zod.def.innerType._zod.values);
|
|
2402
|
+
util.defineLazyInternal(inst, "optin", (zod) => zod.def.innerType?._zod?.optin);
|
|
2403
|
+
util.defineLazyInternal(inst, "optout", (zod) => zod.def.innerType?._zod?.optout);
|
|
2071
2404
|
inst._zod.parse = (payload, ctx) => {
|
|
2072
2405
|
if (ctx.direction === "backward") {
|
|
2073
2406
|
return def.innerType._zod.run(payload, ctx);
|
|
@@ -2080,25 +2413,72 @@ exports.$ZodReadonly = core.$constructor("$ZodReadonly", (inst, def) => {
|
|
|
2080
2413
|
};
|
|
2081
2414
|
});
|
|
2082
2415
|
function handleReadonlyResult(payload) {
|
|
2083
|
-
|
|
2416
|
+
// A repeat visit hands back a node that is still being built; freezing it here would make the rest of its keys fail to assign.
|
|
2417
|
+
if (!payload.memo)
|
|
2418
|
+
payload.value = Object.freeze(payload.value);
|
|
2084
2419
|
return payload;
|
|
2085
2420
|
}
|
|
2421
|
+
// a leaf's pattern source with its own checks folded in: the last pattern-carrying check wins, else length bounds narrow the catch-all, else an integer format narrows the number form. the fold lives here instead of on `_zod.pattern` so a bundle without template literals never pays for it
|
|
2422
|
+
function leafPattern(schema) {
|
|
2423
|
+
const def = schema._zod.def;
|
|
2424
|
+
let pattern = def.pattern;
|
|
2425
|
+
let isInt = !!def.format?.includes("int");
|
|
2426
|
+
let minimum;
|
|
2427
|
+
let maximum;
|
|
2428
|
+
for (const ch of def.checks ?? []) {
|
|
2429
|
+
const d = ch._zod.def;
|
|
2430
|
+
if (d.pattern)
|
|
2431
|
+
pattern = d.pattern;
|
|
2432
|
+
isInt || (isInt = !!d.format?.includes("int"));
|
|
2433
|
+
const lo = d.minimum ?? d.length;
|
|
2434
|
+
const hi = d.maximum ?? d.length;
|
|
2435
|
+
if (lo !== undefined && (minimum === undefined || lo > minimum))
|
|
2436
|
+
minimum = lo;
|
|
2437
|
+
if (hi !== undefined && (maximum === undefined || hi < maximum))
|
|
2438
|
+
maximum = hi;
|
|
2439
|
+
}
|
|
2440
|
+
if (pattern)
|
|
2441
|
+
return pattern.source;
|
|
2442
|
+
// an empty range matches nothing at runtime, and `{8,5}` is not a legal quantifier
|
|
2443
|
+
if (minimum !== undefined && maximum !== undefined && minimum > maximum)
|
|
2444
|
+
return "(?!)";
|
|
2445
|
+
if (minimum !== undefined || maximum !== undefined)
|
|
2446
|
+
return regexes.string({ minimum, maximum }).source;
|
|
2447
|
+
const own = schema._zod.pattern;
|
|
2448
|
+
return (isInt && own === regexes.number ? regexes.integer : own)?.source;
|
|
2449
|
+
}
|
|
2450
|
+
// a part's pattern source. a wrapper's pattern embeds its inner pattern's source verbatim, so the folded form is substituted in place without knowing the wrapper's own composition; a union's options are joined the way the union builds its own pattern
|
|
2451
|
+
function partPattern(schema) {
|
|
2452
|
+
const def = schema._zod.def;
|
|
2453
|
+
const own = schema._zod.pattern?.source;
|
|
2454
|
+
// lazy resolves its inner on the internals, not the def
|
|
2455
|
+
const inner = def.innerType ?? schema._zod.innerType;
|
|
2456
|
+
if (inner) {
|
|
2457
|
+
const before = inner._zod.pattern?.source;
|
|
2458
|
+
const after = partPattern(inner);
|
|
2459
|
+
if (own && before && after && after !== before) {
|
|
2460
|
+
return own.replace(util.cleanRegex(before), () => util.cleanRegex(after));
|
|
2461
|
+
}
|
|
2462
|
+
return own;
|
|
2463
|
+
}
|
|
2464
|
+
if (def.options) {
|
|
2465
|
+
const sources = def.options.map(partPattern);
|
|
2466
|
+
if (sources.every(Boolean))
|
|
2467
|
+
return `^(${sources.map((s) => util.cleanRegex(s)).join("|")})$`;
|
|
2468
|
+
}
|
|
2469
|
+
return leafPattern(schema);
|
|
2470
|
+
}
|
|
2086
2471
|
exports.$ZodTemplateLiteral = core.$constructor("$ZodTemplateLiteral", (inst, def) => {
|
|
2087
2472
|
exports.$ZodType.init(inst, def);
|
|
2088
2473
|
const regexParts = [];
|
|
2089
2474
|
for (const part of def.parts) {
|
|
2090
2475
|
if (typeof part === "object" && part !== null) {
|
|
2091
2476
|
// is Zod schema
|
|
2092
|
-
|
|
2093
|
-
|
|
2477
|
+
const source = partPattern(part);
|
|
2478
|
+
if (!source) {
|
|
2094
2479
|
throw new Error(`Invalid template literal part, no pattern found: ${[...part._zod.traits].shift()}`);
|
|
2095
2480
|
}
|
|
2096
|
-
|
|
2097
|
-
if (!source)
|
|
2098
|
-
throw new Error(`Invalid template literal part: ${part._zod.traits}`);
|
|
2099
|
-
const start = source.startsWith("^") ? 1 : 0;
|
|
2100
|
-
const end = source.endsWith("$") ? source.length - 1 : source.length;
|
|
2101
|
-
regexParts.push(source.slice(start, end));
|
|
2481
|
+
regexParts.push(util.cleanRegex(source));
|
|
2102
2482
|
}
|
|
2103
2483
|
else if (part === null || util.primitiveTypes.has(typeof part)) {
|
|
2104
2484
|
regexParts.push(util.escapeRegex(`${part}`));
|
|
@@ -2134,33 +2514,35 @@ exports.$ZodTemplateLiteral = core.$constructor("$ZodTemplateLiteral", (inst, de
|
|
|
2134
2514
|
});
|
|
2135
2515
|
exports.$ZodFunction = core.$constructor("$ZodFunction", (inst, def) => {
|
|
2136
2516
|
exports.$ZodType.init(inst, def);
|
|
2137
|
-
|
|
2517
|
+
// Defined, not assigned: the classic prototype exposes `_def` as a getter with no setter.
|
|
2518
|
+
Object.defineProperty(inst, "_def", { value: def });
|
|
2138
2519
|
inst._zod.def = def;
|
|
2139
2520
|
inst.implement = (func) => {
|
|
2140
2521
|
if (typeof func !== "function") {
|
|
2141
2522
|
throw new Error("implement() must be called with a function");
|
|
2142
2523
|
}
|
|
2143
|
-
|
|
2524
|
+
// Defined inline so the closure stays anonymous: binding it to a `const` first names it, which costs 256 bytes per implemented function.
|
|
2525
|
+
return Object.defineProperty(function (...args) {
|
|
2144
2526
|
const parsedArgs = inst._def.input ? (0, parse_js_1.parse)(inst._def.input, args) : args;
|
|
2145
2527
|
const result = Reflect.apply(func, this, parsedArgs);
|
|
2146
2528
|
if (inst._def.output) {
|
|
2147
2529
|
return (0, parse_js_1.parse)(inst._def.output, result);
|
|
2148
2530
|
}
|
|
2149
2531
|
return result;
|
|
2150
|
-
};
|
|
2532
|
+
}, "_zod", { value: inst._zod, enumerable: false });
|
|
2151
2533
|
};
|
|
2152
2534
|
inst.implementAsync = (func) => {
|
|
2153
2535
|
if (typeof func !== "function") {
|
|
2154
2536
|
throw new Error("implementAsync() must be called with a function");
|
|
2155
2537
|
}
|
|
2156
|
-
return async function (...args) {
|
|
2538
|
+
return Object.defineProperty(async function (...args) {
|
|
2157
2539
|
const parsedArgs = inst._def.input ? await (0, parse_js_1.parseAsync)(inst._def.input, args) : args;
|
|
2158
2540
|
const result = await Reflect.apply(func, this, parsedArgs);
|
|
2159
2541
|
if (inst._def.output) {
|
|
2160
2542
|
return await (0, parse_js_1.parseAsync)(inst._def.output, result);
|
|
2161
2543
|
}
|
|
2162
2544
|
return result;
|
|
2163
|
-
};
|
|
2545
|
+
}, "_zod", { value: inst._zod, enumerable: false });
|
|
2164
2546
|
};
|
|
2165
2547
|
inst._zod.parse = (payload, _ctx) => {
|
|
2166
2548
|
if (typeof payload.value !== "function") {
|
|
@@ -2219,19 +2601,17 @@ exports.$ZodPromise = core.$constructor("$ZodPromise", (inst, def) => {
|
|
|
2219
2601
|
});
|
|
2220
2602
|
exports.$ZodLazy = core.$constructor("$ZodLazy", (inst, def) => {
|
|
2221
2603
|
exports.$ZodType.init(inst, def);
|
|
2222
|
-
// Cache the resolved inner type on the shared `def` so all clones of this
|
|
2223
|
-
// lazy (e.g. via `.describe()`/`.meta()`) share the same inner instance,
|
|
2224
|
-
// preserving identity for cycle detection on recursive schemas.
|
|
2604
|
+
// Cache the resolved inner type on the shared `def` so all clones of this lazy (e.g. via `.describe()`/`.meta()`) share the same inner instance, preserving identity for cycle detection on recursive schemas.
|
|
2225
2605
|
util.defineLazy(inst._zod, "innerType", () => {
|
|
2226
2606
|
const d = def;
|
|
2227
2607
|
if (!d._cachedInner)
|
|
2228
2608
|
d._cachedInner = def.getter();
|
|
2229
2609
|
return d._cachedInner;
|
|
2230
2610
|
});
|
|
2231
|
-
util.
|
|
2232
|
-
util.
|
|
2233
|
-
util.
|
|
2234
|
-
util.
|
|
2611
|
+
util.defineLazyInternal(inst, "pattern", (zod) => zod.innerType?._zod?.pattern);
|
|
2612
|
+
util.defineLazyInternal(inst, "propValues", (zod) => zod.innerType?._zod?.propValues);
|
|
2613
|
+
util.defineLazyInternal(inst, "optin", (zod) => zod.innerType?._zod?.optin ?? undefined);
|
|
2614
|
+
util.defineLazyInternal(inst, "optout", (zod) => zod.innerType?._zod?.optout ?? undefined);
|
|
2235
2615
|
inst._zod.parse = (payload, ctx) => {
|
|
2236
2616
|
const inner = inst._zod.innerType;
|
|
2237
2617
|
return inner._zod.run(payload, ctx);
|
|
@@ -2268,3 +2648,22 @@ function handleRefineResult(result, payload, input, inst) {
|
|
|
2268
2648
|
payload.issues.push(util.issue(_iss));
|
|
2269
2649
|
}
|
|
2270
2650
|
}
|
|
2651
|
+
|
|
2652
|
+
// seal-cjs-exports
|
|
2653
|
+
(function () {
|
|
2654
|
+
var keys = Object.getOwnPropertyNames(exports);
|
|
2655
|
+
for (var i = 0; i < keys.length; i++) {
|
|
2656
|
+
var desc = Object.getOwnPropertyDescriptor(exports, keys[i]);
|
|
2657
|
+
if (!desc || !desc.get || !desc.configurable) continue;
|
|
2658
|
+
var value;
|
|
2659
|
+
try {
|
|
2660
|
+
value = desc.get();
|
|
2661
|
+
} catch (e) {
|
|
2662
|
+
continue;
|
|
2663
|
+
}
|
|
2664
|
+
// a circular require may not have settled this one yet, so leave it live
|
|
2665
|
+
if (value === undefined) continue;
|
|
2666
|
+
Object.defineProperty(exports, keys[i], { value: value, writable: false, enumerable: desc.enumerable, configurable: false });
|
|
2667
|
+
}
|
|
2668
|
+
Object.freeze(exports);
|
|
2669
|
+
})();
|