@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
|
@@ -358,3 +358,34 @@ test("extra parameters with rest", () => {
|
|
|
358
358
|
const filteredList = ["apple", "orange", "pear", "banana", "strawberry"].filter(maxLength5);
|
|
359
359
|
expect(filteredList.length).toEqual(2);
|
|
360
360
|
});
|
|
361
|
+
|
|
362
|
+
test("implement exposes the function schema at runtime", () => {
|
|
363
|
+
const schema = z.function({ input: [z.string()], output: z.number() });
|
|
364
|
+
const fn = schema.implement((s) => s.length);
|
|
365
|
+
|
|
366
|
+
// Deliberately absent from implement()'s return type: reaching `_zod` takes a cast, so an implemented function never reads as a schema to TypeScript even though it does at runtime.
|
|
367
|
+
type HasZod = "_zod" extends keyof typeof fn ? true : false;
|
|
368
|
+
expectTypeOf<HasZod>().toEqualTypeOf<false>();
|
|
369
|
+
|
|
370
|
+
expect((fn as any)._zod).toBe(schema._zod);
|
|
371
|
+
expect((fn as any)._zod.def.input).toBe(schema._def.input);
|
|
372
|
+
expect((fn as any)._zod.def.output).toBe(schema._def.output);
|
|
373
|
+
expect(Object.keys(fn)).toEqual([]);
|
|
374
|
+
expect(Object.getOwnPropertyDescriptor(fn, "_zod")).toMatchObject({ enumerable: false, writable: false });
|
|
375
|
+
expect(fn("asdf")).toBe(4);
|
|
376
|
+
});
|
|
377
|
+
|
|
378
|
+
test("implementAsync exposes the function schema at runtime", async () => {
|
|
379
|
+
const schema = z.function({ input: [z.string()], output: z.promise(z.number()) });
|
|
380
|
+
const fn = schema.implementAsync(async (s) => s.length);
|
|
381
|
+
|
|
382
|
+
expect((fn as any)._zod).toBe(schema._zod);
|
|
383
|
+
await expect(fn("asdf")).resolves.toBe(4);
|
|
384
|
+
});
|
|
385
|
+
|
|
386
|
+
test("parsing through a function schema exposes it the same way", () => {
|
|
387
|
+
const schema = z.function({ input: [z.string()], output: z.number() });
|
|
388
|
+
const { handler } = z.object({ handler: schema }).parse({ handler: (s: string) => s.length });
|
|
389
|
+
|
|
390
|
+
expect((handler as any)._zod).toBe(schema._zod);
|
|
391
|
+
});
|
|
@@ -7,11 +7,7 @@ import * as core from "zod/v4/core";
|
|
|
7
7
|
// bundled copies of Zod in a monorepo. This mirrors the existing
|
|
8
8
|
// `globalRegistry` -> `globalThis.__zod_globalRegistry` treatment.
|
|
9
9
|
//
|
|
10
|
-
// See #5789 for the footgun this fixes: users with both CJS and ESM
|
|
11
|
-
// instances of Zod loaded had to call `z.config({ jitless: true })`
|
|
12
|
-
// twice — once per instance — because each module-scope `globalConfig`
|
|
13
|
-
// was a different object. With this change, one call updates state seen
|
|
14
|
-
// by every loaded copy.
|
|
10
|
+
// See #5789 for the footgun this fixes: users with both CJS and ESM instances of Zod loaded had to call `z.config({ jitless: true })` twice — once per instance — because each module-scope `globalConfig` was a different object. With this change, one call updates state seen by every loaded copy.
|
|
15
11
|
|
|
16
12
|
afterEach(() => {
|
|
17
13
|
// Don't leak config mutations into other test files.
|
|
@@ -28,10 +24,7 @@ test("z.config writes are observed via globalThis.__zod_globalConfig", () => {
|
|
|
28
24
|
});
|
|
29
25
|
|
|
30
26
|
test("pre-set globalThis.__zod_globalConfig is preserved on import", () => {
|
|
31
|
-
// Object identity is preserved across reloads of the module: anyone who
|
|
32
|
-
// pre-populates `globalThis.__zod_globalConfig` before Zod loads (e.g.
|
|
33
|
-
// an inline script before the bundle) keeps that exact object as the
|
|
34
|
-
// source of truth. Mutating it directly is equivalent to z.config().
|
|
27
|
+
// Object identity is preserved across reloads of the module: anyone who pre-populates `globalThis.__zod_globalConfig` before Zod loads (e.g. an inline script before the bundle) keeps that exact object as the source of truth. Mutating it directly is equivalent to z.config().
|
|
35
28
|
const direct = (globalThis as any).__zod_globalConfig;
|
|
36
29
|
direct.jitless = true;
|
|
37
30
|
expect(core.globalConfig.jitless).toBe(true);
|
|
@@ -46,8 +46,7 @@ test("hash() API — types and runtime across all alg/enc combinations", async (
|
|
|
46
46
|
expect(() => hash(alg, { enc: "base64" }).parse(hex)).toThrow();
|
|
47
47
|
expect(() => hash(alg, { enc: "base64url" }).parse(base64)).toThrow();
|
|
48
48
|
|
|
49
|
-
// Encoding-specific failures
|
|
50
|
-
// hex: uppercase allowed, wrong length should fail
|
|
49
|
+
// Encoding-specific failures hex: uppercase allowed, wrong length should fail
|
|
51
50
|
hash(alg, { enc: "hex" }).parse(hex.toUpperCase());
|
|
52
51
|
expect(() => hash(alg, { enc: "hex" }).parse(hex.slice(0, -1))).toThrow();
|
|
53
52
|
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
import { describe, expect, test } from "vitest";
|
|
2
|
+
import * as z from "zod";
|
|
3
|
+
|
|
4
|
+
describe("z.iban", () => {
|
|
5
|
+
const valid: [string, string][] = [
|
|
6
|
+
["Norway (15, minimum)", "NO9386011117947"],
|
|
7
|
+
["Belgium (16)", "BE68539007547034"],
|
|
8
|
+
["Netherlands (18)", "NL91ABNA0417164300"],
|
|
9
|
+
["Germany (22)", "DE89370400440532013000"],
|
|
10
|
+
["Great Britain (22)", "GB29NWBK60161331926819"],
|
|
11
|
+
["Turkey (26)", "TR610000100000000000000001"],
|
|
12
|
+
["France (27)", "FR1420041010050500013M02606"],
|
|
13
|
+
["Cyprus (28)", "CY17002001280000001200527600"],
|
|
14
|
+
["Malta (31)", "MT84MALT011000012345MTLCAST001S"],
|
|
15
|
+
["Maximum length (34)", "AA73AAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"],
|
|
16
|
+
["Maximum length mixed (34)", "ZZ560123456789ABCDEFGHIJKLMNOPQRST"],
|
|
17
|
+
];
|
|
18
|
+
|
|
19
|
+
test.each(valid)("accepts %s", (_label, n) => {
|
|
20
|
+
expect(z.iban().parse(n)).toBe(n);
|
|
21
|
+
});
|
|
22
|
+
|
|
23
|
+
test("rejects lowercase characters", () => {
|
|
24
|
+
expect(() => z.iban().parse("no9386011117947")).toThrow();
|
|
25
|
+
expect(() => z.iban().parse("de89370400440532013000")).toThrow();
|
|
26
|
+
expect(() => z.iban().parse("FR1420041010050500013m02606")).toThrow();
|
|
27
|
+
});
|
|
28
|
+
|
|
29
|
+
test("rejects spaces and hyphens", () => {
|
|
30
|
+
expect(() => z.iban().parse("NO93 8601 1117 947")).toThrow();
|
|
31
|
+
expect(() => z.iban().parse(" DE89370400440532013000")).toThrow();
|
|
32
|
+
expect(() => z.iban().parse("DE89370400440532013000 ")).toThrow();
|
|
33
|
+
expect(() => z.iban().parse("NO93-8601-1117-947")).toThrow();
|
|
34
|
+
expect(() => z.iban().parse("DE89-3704-0044-0532-0130-00")).toThrow();
|
|
35
|
+
});
|
|
36
|
+
|
|
37
|
+
test("rejects special characters", () => {
|
|
38
|
+
expect(() => z.iban().parse("NO938601111794!")).toThrow();
|
|
39
|
+
expect(() => z.iban().parse("DE8937040044053201300@")).toThrow();
|
|
40
|
+
expect(() => z.iban().parse("")).toThrow();
|
|
41
|
+
});
|
|
42
|
+
|
|
43
|
+
test("rejects inputs outside length bounds (15-34)", () => {
|
|
44
|
+
expect(() => z.iban().parse("NO938601111794")).toThrow();
|
|
45
|
+
expect(() => z.iban().parse("AA73AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA")).toThrow();
|
|
46
|
+
});
|
|
47
|
+
|
|
48
|
+
test("rejects invalid check digits (checksum failure)", () => {
|
|
49
|
+
expect(() => z.iban().parse("NO9386011117948")).toThrow();
|
|
50
|
+
expect(() => z.iban().parse("DE89370400440532013001")).toThrow();
|
|
51
|
+
expect(() => z.iban().parse("FR1420041010050500013M02607")).toThrow();
|
|
52
|
+
});
|
|
53
|
+
|
|
54
|
+
test("rejects check digits outside 02-98", () => {
|
|
55
|
+
// mod 97 alone accepts all three; `98 - remainder` can only ever emit 02-98
|
|
56
|
+
expect(() => z.iban().parse("DE00000000000000000066")).toThrow();
|
|
57
|
+
expect(() => z.iban().parse("DE01000000000000000048")).toThrow();
|
|
58
|
+
expect(() => z.iban().parse("DE99000000000000000030")).toThrow();
|
|
59
|
+
});
|
|
60
|
+
|
|
61
|
+
test("carries the shape regex as its JSON Schema pattern", () => {
|
|
62
|
+
expect(z.toJSONSchema(z.iban())).toMatchObject({
|
|
63
|
+
format: "iban",
|
|
64
|
+
pattern: z.regexes.iban.source,
|
|
65
|
+
});
|
|
66
|
+
});
|
|
67
|
+
|
|
68
|
+
test("round-trips through JSON Schema with the checksum intact", () => {
|
|
69
|
+
const schema = z.fromJSONSchema(z.toJSONSchema(z.iban()));
|
|
70
|
+
expect(schema.safeParse("DE89370400440532013000").success).toBe(true);
|
|
71
|
+
expect(schema.safeParse("DE89370400440532013001").success).toBe(false);
|
|
72
|
+
});
|
|
73
|
+
|
|
74
|
+
test("error message references IBAN", () => {
|
|
75
|
+
const result = z.iban().safeParse("not-an-iban");
|
|
76
|
+
expect(result.success).toBe(false);
|
|
77
|
+
if (!result.success) {
|
|
78
|
+
expect(result.error.issues[0]?.message).toMatch(/IBAN/i);
|
|
79
|
+
}
|
|
80
|
+
});
|
|
81
|
+
});
|
|
@@ -0,0 +1,159 @@
|
|
|
1
|
+
import { describe, expect, test } from "vitest";
|
|
2
|
+
import * as z from "zod";
|
|
3
|
+
|
|
4
|
+
describe("z.input / z.output", () => {
|
|
5
|
+
test("flat codec: input/output give the right side", () => {
|
|
6
|
+
const c = z.codec(z.string(), z.bigint(), {
|
|
7
|
+
decode: (s) => BigInt(s),
|
|
8
|
+
encode: (n) => n.toString(),
|
|
9
|
+
});
|
|
10
|
+
expect(z.input(c).parse("1")).toBe("1");
|
|
11
|
+
expect(z.output(c).parse(1n)).toBe(1n);
|
|
12
|
+
});
|
|
13
|
+
|
|
14
|
+
test("codec nested in object: output works recursively (regression #5224)", () => {
|
|
15
|
+
const c = z.codec(z.string(), z.bigint(), {
|
|
16
|
+
decode: (s) => BigInt(s),
|
|
17
|
+
encode: (n) => n.toString(),
|
|
18
|
+
});
|
|
19
|
+
const obj = z.object({ b: c });
|
|
20
|
+
|
|
21
|
+
const decoded = z.output(obj);
|
|
22
|
+
expect(decoded.parse({ b: 1n })).toEqual({ b: 1n });
|
|
23
|
+
|
|
24
|
+
const encoded = z.input(obj);
|
|
25
|
+
expect(encoded.parse({ b: "1" })).toEqual({ b: "1" });
|
|
26
|
+
});
|
|
27
|
+
|
|
28
|
+
test("nested across record / map: matches the use case in #5224", () => {
|
|
29
|
+
const keyCodec = z.codec(z.string(), z.enum(["a", "b"]), {
|
|
30
|
+
decode: (s) => (s === "a" || s === "b" ? s : z.NEVER),
|
|
31
|
+
encode: (s) => s,
|
|
32
|
+
});
|
|
33
|
+
const valueObject = z.object({
|
|
34
|
+
n: z.codec(z.string(), z.bigint(), { decode: (s) => BigInt(s), encode: (n) => n.toString() }),
|
|
35
|
+
});
|
|
36
|
+
|
|
37
|
+
const fullCodec = z.codec(
|
|
38
|
+
z.record(z.input(keyCodec), z.input(valueObject)),
|
|
39
|
+
z.map(z.output(keyCodec), z.output(valueObject)),
|
|
40
|
+
{
|
|
41
|
+
decode: (input) => {
|
|
42
|
+
const m = new Map<"a" | "b", { n: bigint }>();
|
|
43
|
+
for (const [k, v] of Object.entries(input)) {
|
|
44
|
+
m.set(keyCodec.decode(k), valueObject.decode(v));
|
|
45
|
+
}
|
|
46
|
+
return m;
|
|
47
|
+
},
|
|
48
|
+
encode: (input) => {
|
|
49
|
+
const out: Record<string, { n: string }> = {};
|
|
50
|
+
for (const [k, v] of input.entries()) {
|
|
51
|
+
out[keyCodec.encode(k)] = valueObject.encode(v);
|
|
52
|
+
}
|
|
53
|
+
return out;
|
|
54
|
+
},
|
|
55
|
+
}
|
|
56
|
+
);
|
|
57
|
+
|
|
58
|
+
expect(fullCodec.decode({ a: { n: "1" } })).toEqual(new Map([["a", { n: 1n }]]));
|
|
59
|
+
expect(fullCodec.encode(new Map([["b", { n: 2n }]]))).toEqual({ b: { n: "2" } });
|
|
60
|
+
});
|
|
61
|
+
|
|
62
|
+
test("schema without pipes is returned with identity (no clone)", () => {
|
|
63
|
+
const s = z.object({ a: z.string() });
|
|
64
|
+
expect(z.input(s)).toBe(s);
|
|
65
|
+
expect(z.output(s)).toBe(s);
|
|
66
|
+
});
|
|
67
|
+
|
|
68
|
+
test("z.output carries checks attached to a pipe", () => {
|
|
69
|
+
const c = z
|
|
70
|
+
.codec(z.string(), z.number().int(), { decode: Number, encode: String })
|
|
71
|
+
.refine((n) => n > 10, { error: "gt10" });
|
|
72
|
+
const obj = z.object({ list: z.array(c) });
|
|
73
|
+
const decoded = z.output(obj);
|
|
74
|
+
|
|
75
|
+
expect(decoded.parse({ list: [50] })).toEqual({ list: [50] });
|
|
76
|
+
// The pipe's own check and the one already on its out side both survive, in that order.
|
|
77
|
+
expect(() => decoded.parse({ list: [5] })).toThrow("gt10");
|
|
78
|
+
expect(() => decoded.parse({ list: [50.5] })).toThrow();
|
|
79
|
+
// A pipe's checks run on the decoded value in both directions, so encode enforces them too.
|
|
80
|
+
expect(() => decoded.encode({ list: [5] })).toThrow("gt10");
|
|
81
|
+
// Carrying them clones the out side rather than mutating it.
|
|
82
|
+
expect(c._zod.def.out._zod.def.checks).toHaveLength(1);
|
|
83
|
+
});
|
|
84
|
+
|
|
85
|
+
test("z.input drops a pipe's checks, which constrain a value the input side never produces", () => {
|
|
86
|
+
const c = z.codec(z.string(), z.number(), { decode: Number, encode: String }).refine((n) => n > 10);
|
|
87
|
+
expect(z.input(c).parse("5")).toBe("5");
|
|
88
|
+
|
|
89
|
+
// Control: a check that isn't attached to a pipe is left alone.
|
|
90
|
+
expect(() => z.input(z.object({ s: z.string().min(2) })).parse({ s: "a" })).toThrow();
|
|
91
|
+
});
|
|
92
|
+
|
|
93
|
+
test("z.input resolves past a preprocess transform, which is not a real input side", () => {
|
|
94
|
+
const p = z.preprocess((v) => String(v), z.string().min(5));
|
|
95
|
+
const encoded = z.input(p);
|
|
96
|
+
|
|
97
|
+
expect(encoded.parse("abcde")).toBe("abcde");
|
|
98
|
+
// The bare transform used to come back here: it validated nothing and re-ran the preprocessor.
|
|
99
|
+
expect(() => encoded.parse(1)).toThrow();
|
|
100
|
+
expect(() => encoded.parse("abc")).toThrow();
|
|
101
|
+
// The same resolution the JSON Schema emitter already makes for this schema.
|
|
102
|
+
expect(z.toJSONSchema(p, { io: "input" })).toMatchObject({ type: "string", minLength: 5 });
|
|
103
|
+
|
|
104
|
+
// A check on the pipe itself travels with whichever side wins.
|
|
105
|
+
const checked = z.preprocess((v) => String(v), z.string()).refine((s) => s.startsWith("ok"));
|
|
106
|
+
expect(z.input(checked).parse("okay")).toBe("okay");
|
|
107
|
+
expect(() => z.input(checked).parse("nope")).toThrow();
|
|
108
|
+
|
|
109
|
+
// Control: a codec has two real sides, so its input side is still `in`, by identity.
|
|
110
|
+
const c = z.codec(z.string(), z.number(), { decode: Number, encode: String });
|
|
111
|
+
expect(z.input(c)).toBe(c._zod.def.in);
|
|
112
|
+
});
|
|
113
|
+
|
|
114
|
+
test("a wrapper's stored value survives only on the side it belongs to", () => {
|
|
115
|
+
const c = z.codec(z.string(), z.number(), { decode: Number, encode: String });
|
|
116
|
+
|
|
117
|
+
// A default and a catch hold output-side values, so the input projection sheds them.
|
|
118
|
+
expect(z.input(c.default(7)).parse(undefined)).toBe(undefined);
|
|
119
|
+
expect(z.input(c.default(7)).parse("1")).toBe("1");
|
|
120
|
+
expect(() => z.input(c.catch(9)).parse(123 as any)).toThrow();
|
|
121
|
+
expect(z.input(c.catch(9)).parse("1")).toBe("1");
|
|
122
|
+
expect(z.output(c.default(7)).parse(undefined)).toBe(7);
|
|
123
|
+
expect(z.output(c.catch(9)).parse("zz" as any)).toBe(9);
|
|
124
|
+
|
|
125
|
+
// A prefault is fed through the schema, so it is input-side and the output projection sheds it.
|
|
126
|
+
expect(z.input(c.prefault("5")).parse(undefined)).toBe("5");
|
|
127
|
+
expect(() => z.output(c.prefault("5")).parse(undefined as any)).toThrow();
|
|
128
|
+
expect(z.output(c.prefault("5")).parse(3)).toBe(3);
|
|
129
|
+
});
|
|
130
|
+
|
|
131
|
+
test("a wrapper over a pipe-free schema keeps both its value and its identity", () => {
|
|
132
|
+
const d = z.string().default("x");
|
|
133
|
+
const k = z.string().catch("y");
|
|
134
|
+
const f = z.string().prefault("z");
|
|
135
|
+
|
|
136
|
+
expect(z.input(d)).toBe(d);
|
|
137
|
+
expect(z.input(d).parse(undefined)).toBe("x");
|
|
138
|
+
expect(z.input(k)).toBe(k);
|
|
139
|
+
expect(z.output(f)).toBe(f);
|
|
140
|
+
|
|
141
|
+
const obj = z.object({ a: z.string().default("q") });
|
|
142
|
+
expect(z.input(obj)).toBe(obj);
|
|
143
|
+
expect(z.input(obj).parse({})).toEqual({ a: "q" });
|
|
144
|
+
});
|
|
145
|
+
|
|
146
|
+
test("runtime `z.input` agrees with type-level `z.input<T>`", () => {
|
|
147
|
+
const c = z.codec(z.string(), z.bigint(), {
|
|
148
|
+
decode: (s) => BigInt(s),
|
|
149
|
+
encode: (n) => n.toString(),
|
|
150
|
+
});
|
|
151
|
+
const obj = z.object({ b: c });
|
|
152
|
+
|
|
153
|
+
// Runtime: parse the input shape.
|
|
154
|
+
const parsed = z.input(obj).parse({ b: "1" });
|
|
155
|
+
// Type: matches the declared input type.
|
|
156
|
+
const asType: z.input<typeof obj> = parsed;
|
|
157
|
+
expect(asType).toEqual({ b: "1" });
|
|
158
|
+
});
|
|
159
|
+
});
|
|
@@ -653,8 +653,7 @@ test("z.custom check", () => {
|
|
|
653
653
|
});
|
|
654
654
|
|
|
655
655
|
test("z.check", () => {
|
|
656
|
-
// this is a more flexible version of z.custom that accepts an arbitrary _parse logic
|
|
657
|
-
// the function should return base.$ZodResult
|
|
656
|
+
// this is a more flexible version of z.custom that accepts an arbitrary _parse logic the function should return base.$ZodResult
|
|
658
657
|
const a = z.any().check(
|
|
659
658
|
z.check<string>((ctx) => {
|
|
660
659
|
if (typeof ctx.value === "string") return;
|
|
@@ -736,6 +735,26 @@ test("z.refine", () => {
|
|
|
736
735
|
expect(() => z.parse(a, "hi")).toThrow();
|
|
737
736
|
});
|
|
738
737
|
|
|
738
|
+
test("z.superRefine preserves explicit nullish issue input", () => {
|
|
739
|
+
const schema = z.string().check(
|
|
740
|
+
z.superRefine((_, ctx) => {
|
|
741
|
+
ctx.addIssue({ code: "custom", message: "default" });
|
|
742
|
+
ctx.addIssue({ code: "custom", message: "null", input: null });
|
|
743
|
+
ctx.addIssue({ code: "custom", message: "undefined", input: undefined });
|
|
744
|
+
})
|
|
745
|
+
);
|
|
746
|
+
|
|
747
|
+
const result = z.safeParse(schema, "sensitive", { reportInput: true });
|
|
748
|
+
expect(result.success).toEqual(false);
|
|
749
|
+
if (!result.success) {
|
|
750
|
+
expect(result.error.issues).toHaveLength(3);
|
|
751
|
+
expect(result.error.issues[0].input).toEqual("sensitive");
|
|
752
|
+
expect(result.error.issues[1].input).toEqual(null);
|
|
753
|
+
expect(result.error.issues[2]).toHaveProperty("input");
|
|
754
|
+
expect(result.error.issues[2].input).toEqual(undefined);
|
|
755
|
+
}
|
|
756
|
+
});
|
|
757
|
+
|
|
739
758
|
// test("z.superRefine", () => {
|
|
740
759
|
// const a = z.number([
|
|
741
760
|
// z.superRefine((val, ctx) => {
|
|
@@ -0,0 +1,319 @@
|
|
|
1
|
+
import { expect, test } from "vitest";
|
|
2
|
+
|
|
3
|
+
import * as zm from "zod/mini";
|
|
4
|
+
import * as z from "zod/v4";
|
|
5
|
+
import * as core from "zod/v4/core";
|
|
6
|
+
|
|
7
|
+
// V8 sizes an instance's property backing store in steps, and schema instances get no in-object slots (their constructor assigns nothing itself): 12 own properties cost 128 bytes, 13 cost 848, 21 cost 1616. Methods therefore live on the prototype and materialize per instance on first read. These bounds are what keeps a schema graph small; crossing one silently multiplies its memory by 6x.
|
|
8
|
+
const MAX_OWN_PROPS = 12;
|
|
9
|
+
|
|
10
|
+
test("schema instances stay under V8's property-count step", () => {
|
|
11
|
+
const cases: Array<[string, object]> = [
|
|
12
|
+
["string", z.string()],
|
|
13
|
+
["number", z.number()],
|
|
14
|
+
["bigint", z.bigint()],
|
|
15
|
+
["boolean", z.boolean()],
|
|
16
|
+
["date", z.date()],
|
|
17
|
+
["enum", z.enum(["a", "b"])],
|
|
18
|
+
["array", z.array(z.string())],
|
|
19
|
+
["object", z.object({ a: z.string() })],
|
|
20
|
+
["record", z.record(z.string(), z.string())],
|
|
21
|
+
["map", z.map(z.string(), z.string())],
|
|
22
|
+
["set", z.set(z.string())],
|
|
23
|
+
["union", z.union([z.string(), z.number()])],
|
|
24
|
+
["optional", z.string().optional()],
|
|
25
|
+
["pipe", z.string().pipe(z.string())],
|
|
26
|
+
["email", z.email()],
|
|
27
|
+
["mini string", zm.string()],
|
|
28
|
+
["mini object", zm.object({ a: zm.string() })],
|
|
29
|
+
];
|
|
30
|
+
|
|
31
|
+
const over = cases
|
|
32
|
+
.map(([name, schema]) => [name, Reflect.ownKeys(schema).length] as const)
|
|
33
|
+
.filter(([, count]) => count > MAX_OWN_PROPS);
|
|
34
|
+
|
|
35
|
+
expect(over).toEqual([]);
|
|
36
|
+
});
|
|
37
|
+
|
|
38
|
+
test("prototype-installed members survive detaching", () => {
|
|
39
|
+
const schema = z.string();
|
|
40
|
+
const { parse, safeParse, spa } = schema;
|
|
41
|
+
|
|
42
|
+
expect(parse("hi")).toEqual("hi");
|
|
43
|
+
expect(safeParse("hi").success).toEqual(true);
|
|
44
|
+
expect(["a", "b"].map((v) => parse(v))).toEqual(["a", "b"]);
|
|
45
|
+
expect(spa).toBe(schema.safeParseAsync);
|
|
46
|
+
|
|
47
|
+
const email = schema.email;
|
|
48
|
+
expect(email().safeParse("a@b.co").success).toEqual(true);
|
|
49
|
+
});
|
|
50
|
+
|
|
51
|
+
test("prototype-installed members can be overwritten per instance", () => {
|
|
52
|
+
const schema: any = z.string();
|
|
53
|
+
schema.parse = () => "overridden";
|
|
54
|
+
|
|
55
|
+
expect(schema.parse("anything")).toEqual("overridden");
|
|
56
|
+
expect(z.string().parse("untouched")).toEqual("untouched");
|
|
57
|
+
});
|
|
58
|
+
|
|
59
|
+
test("~standard is lazy but complete", () => {
|
|
60
|
+
const schema = z.string();
|
|
61
|
+
|
|
62
|
+
expect(Object.prototype.hasOwnProperty.call(schema, "~standard")).toEqual(false);
|
|
63
|
+
expect(schema["~standard"].vendor).toEqual("zod");
|
|
64
|
+
expect(schema["~standard"].version).toEqual(1);
|
|
65
|
+
expect(schema["~standard"].validate("hi")).toEqual({ value: "hi" });
|
|
66
|
+
expect((schema["~standard"] as any).jsonSchema.input()).toMatchObject({ type: "string" });
|
|
67
|
+
// Reading it caches on the instance, so the getter runs once.
|
|
68
|
+
expect(Object.prototype.hasOwnProperty.call(schema, "~standard")).toEqual(true);
|
|
69
|
+
});
|
|
70
|
+
|
|
71
|
+
test("caching a lazy member preserves its original enumerability", () => {
|
|
72
|
+
const schema = z.string();
|
|
73
|
+
|
|
74
|
+
// Methods were enumerable own properties before they moved to the prototype, so touching one still surfaces it to `Object.keys`.
|
|
75
|
+
void schema.parse;
|
|
76
|
+
void schema.optional;
|
|
77
|
+
expect(Object.keys(schema)).toContain("parse");
|
|
78
|
+
expect(Object.keys(schema)).toContain("optional");
|
|
79
|
+
|
|
80
|
+
// `~standard` never was an own data property, so caching it must not add it to `Object.keys` or to `JSON.stringify` of a schema.
|
|
81
|
+
void schema["~standard"];
|
|
82
|
+
expect(Object.keys(schema)).not.toContain("~standard");
|
|
83
|
+
expect(JSON.stringify(schema)).not.toContain("~standard");
|
|
84
|
+
|
|
85
|
+
// An explicit assignment behaves like one, as before.
|
|
86
|
+
const other: any = z.string();
|
|
87
|
+
other["~standard"] = { vendor: "x" };
|
|
88
|
+
expect(Object.keys(other)).toContain("~standard");
|
|
89
|
+
});
|
|
90
|
+
|
|
91
|
+
test("_def stays read-only", () => {
|
|
92
|
+
expect(() => {
|
|
93
|
+
(z.string() as any)._def = {};
|
|
94
|
+
}).toThrow(TypeError);
|
|
95
|
+
expect(() => {
|
|
96
|
+
(z.function({ input: [z.string()], output: z.number() }) as any)._def = {};
|
|
97
|
+
}).toThrow(TypeError);
|
|
98
|
+
const schema = z.string();
|
|
99
|
+
expect(schema._def).toBe(schema._zod.def);
|
|
100
|
+
expect(z.object({ a: z.string() })._def.type).toEqual("object");
|
|
101
|
+
});
|
|
102
|
+
|
|
103
|
+
test("deferred initializers are released after construction", () => {
|
|
104
|
+
expect(z.string()._zod.deferred).toEqual(undefined);
|
|
105
|
+
expect(z.object({ a: z.string() })._zod.deferred).toEqual(undefined);
|
|
106
|
+
});
|
|
107
|
+
|
|
108
|
+
test("trait initializers run once per instance across repeated entry", () => {
|
|
109
|
+
const calls: string[] = [];
|
|
110
|
+
const Base: core.$constructor<any> = core.$constructor<any>("CountedBase", () => calls.push("base"));
|
|
111
|
+
const Child: core.$constructor<any> = core.$constructor<any>("CountedChild", (inst, def) => {
|
|
112
|
+
calls.push("child");
|
|
113
|
+
Base.init(inst, def);
|
|
114
|
+
Base.init(inst, def);
|
|
115
|
+
});
|
|
116
|
+
const constructed = new Child({});
|
|
117
|
+
Child.init(constructed, {});
|
|
118
|
+
const direct = Object.create({});
|
|
119
|
+
Child.init(direct, {});
|
|
120
|
+
Child.init(direct, {});
|
|
121
|
+
expect(calls).toEqual(["child", "base", "child", "base"]);
|
|
122
|
+
for (const inst of [constructed, direct]) {
|
|
123
|
+
expect([...inst._zod.traits]).toEqual(["CountedChild", "CountedBase"]);
|
|
124
|
+
expect(inst instanceof Base).toBe(true);
|
|
125
|
+
expect(inst instanceof Child).toBe(true);
|
|
126
|
+
}
|
|
127
|
+
expect(constructed._zod.traits).not.toBe(direct._zod.traits);
|
|
128
|
+
});
|
|
129
|
+
|
|
130
|
+
test("a trait initializer called directly still installs its members", () => {
|
|
131
|
+
// a direct `init` installs onto the receiver's own prototype, since it is not below the constructor's
|
|
132
|
+
z.string();
|
|
133
|
+
|
|
134
|
+
const proto = {};
|
|
135
|
+
const inst = Object.create(proto) as z.ZodString;
|
|
136
|
+
z.ZodString.init(inst, { type: "string" });
|
|
137
|
+
|
|
138
|
+
expect(typeof inst.email).toBe("function");
|
|
139
|
+
expect(typeof inst.optional).toBe("function");
|
|
140
|
+
expect(Object.prototype.hasOwnProperty.call(proto, "email")).toBe(true);
|
|
141
|
+
});
|
|
142
|
+
|
|
143
|
+
test("a nested init during a repeat construction still installs its members", () => {
|
|
144
|
+
// the install used to read a module-level flag the outer construction set, so a nested `init` on an unrelated receiver inherited an answer that was not about it
|
|
145
|
+
const seen: string[] = [];
|
|
146
|
+
|
|
147
|
+
// an assertion signature needs the call target explicitly annotated
|
|
148
|
+
const Nested: core.$constructor<any> = core.$constructor<any>("Nested", () => {}, {
|
|
149
|
+
tag() {
|
|
150
|
+
return "nested";
|
|
151
|
+
},
|
|
152
|
+
});
|
|
153
|
+
const Outer = core.$constructor<any>("Outer", (_inst, def) => {
|
|
154
|
+
if (!def.nest) return;
|
|
155
|
+
// not a plain `{}`: the install target would resolve to `Object.prototype` and leak `tag` into every object the worker touches
|
|
156
|
+
const plain: any = Object.create({});
|
|
157
|
+
Nested.init(plain, {});
|
|
158
|
+
seen.push(typeof plain.tag);
|
|
159
|
+
});
|
|
160
|
+
|
|
161
|
+
new Outer({ nest: false });
|
|
162
|
+
new Outer({ nest: true });
|
|
163
|
+
|
|
164
|
+
expect(seen).toEqual(["function"]);
|
|
165
|
+
});
|
|
166
|
+
|
|
167
|
+
test("a derived trait's members win over the ones it composes", () => {
|
|
168
|
+
// Classic installs a richer `~standard` over core's. Trait dedupe is what orders them: core's initializer runs once, at the first `init` that reaches it, so classic's always lands second.
|
|
169
|
+
expect(typeof (z.string()["~standard"] as any).jsonSchema.input).toBe("function");
|
|
170
|
+
});
|
|
171
|
+
|
|
172
|
+
test("a live member keeps the descriptor a prototype member had", () => {
|
|
173
|
+
// An object literal's getter is enumerable; the `defineProperty` it replaced was not. `for..in` over a schema is public surface, and the construction path walks the prototype with it.
|
|
174
|
+
const proto = Object.getPrototypeOf(z.string());
|
|
175
|
+
expect(Object.getOwnPropertyDescriptor(proto, "description")?.enumerable).toBe(false);
|
|
176
|
+
expect(Object.getOwnPropertyDescriptor(proto, "_def")?.enumerable).toBe(false);
|
|
177
|
+
// a derived member installs like a literal's accessor: not enumerable, still configurable
|
|
178
|
+
expect(Object.getOwnPropertyDescriptor(proto, "minLength")).toMatchObject({ enumerable: false, configurable: true });
|
|
179
|
+
|
|
180
|
+
// the derived metadata members live on the prototype and shadow as own data on first read
|
|
181
|
+
const schema = z.string();
|
|
182
|
+
const keys: string[] = [];
|
|
183
|
+
for (const k in schema) keys.push(k);
|
|
184
|
+
expect(keys).toEqual(["def", "type"]);
|
|
185
|
+
expect(schema.minLength).toBe(null);
|
|
186
|
+
expect(Object.keys(schema)).toContain("minLength");
|
|
187
|
+
});
|
|
188
|
+
|
|
189
|
+
test("a live member is not cached per instance", () => {
|
|
190
|
+
const schema = z.string();
|
|
191
|
+
|
|
192
|
+
expect(schema.description).toBe(undefined);
|
|
193
|
+
core.globalRegistry.add(schema, { description: "later" });
|
|
194
|
+
expect(schema.description).toBe("later");
|
|
195
|
+
expect(Object.prototype.hasOwnProperty.call(schema, "description")).toBe(false);
|
|
196
|
+
});
|
|
197
|
+
|
|
198
|
+
test("constructing through a subclass does not strip the base prototype", () => {
|
|
199
|
+
// `super(def)` gives `this` a prototype of `new.target.prototype`, so a constructor can complete a construction without having built its own prototype.
|
|
200
|
+
const MyString: new (def: { type: "string" }) => z.ZodString = class extends (z.ZodString as any) {} as any;
|
|
201
|
+
new MyString({ type: "string" });
|
|
202
|
+
|
|
203
|
+
const plain = z.string();
|
|
204
|
+
expect(plain.parse("x")).toBe("x");
|
|
205
|
+
expect(typeof plain.email).toBe("function");
|
|
206
|
+
expect(typeof new MyString({ type: "string" }).email).toBe("function");
|
|
207
|
+
});
|
|
208
|
+
|
|
209
|
+
test("a subclass's own members survive the install", () => {
|
|
210
|
+
// The members go on the prototype of the constructor that built the instance, so a subclass's own prototype keeps what it declared. `z.symbol()` is constructed nowhere else here, which puts the subclass before its base — the ordering the install has to get right. Asserted rather than assumed, so warming it elsewhere fails the test instead of hollowing it out.
|
|
211
|
+
expect(Object.prototype.hasOwnProperty.call((z.ZodSymbol as any).prototype, "parse")).toBe(false);
|
|
212
|
+
const First = class extends (z.ZodSymbol as any) {
|
|
213
|
+
parse() {
|
|
214
|
+
return "PARSE";
|
|
215
|
+
}
|
|
216
|
+
optional() {
|
|
217
|
+
return "OPTIONAL";
|
|
218
|
+
}
|
|
219
|
+
} as any;
|
|
220
|
+
const first = new First({ type: "symbol" });
|
|
221
|
+
expect(first.parse(Symbol())).toBe("PARSE");
|
|
222
|
+
expect(first.optional()).toBe("OPTIONAL");
|
|
223
|
+
const sym = Symbol();
|
|
224
|
+
expect(z.symbol().parse(sym)).toBe(sym);
|
|
225
|
+
|
|
226
|
+
// and the other way round, with the base prototype already built by one of the `z.number()` calls above. Asserted for the same reason: warm it nowhere and this block quietly becomes a second copy of the cold case.
|
|
227
|
+
expect(Object.prototype.hasOwnProperty.call((z.ZodNumber as any).prototype, "parse")).toBe(true);
|
|
228
|
+
const Second = class extends (z.ZodNumber as any) {
|
|
229
|
+
parse() {
|
|
230
|
+
return "SECOND";
|
|
231
|
+
}
|
|
232
|
+
} as any;
|
|
233
|
+
expect(new Second({ type: "number" }).parse(1)).toBe("SECOND");
|
|
234
|
+
|
|
235
|
+
// two levels deep: neither prototype takes a copy, so the inherited member is one function
|
|
236
|
+
const Third = class extends (Second as any) {} as any;
|
|
237
|
+
new Third({ type: "number" });
|
|
238
|
+
expect(Second.prototype.parse).toBe(Third.prototype.parse);
|
|
239
|
+
});
|
|
240
|
+
|
|
241
|
+
test("a hand-written getter member accepts assignment", () => {
|
|
242
|
+
// Every member was an accessor with a setter before they moved onto `proto`, so a getter written by hand needs one too.
|
|
243
|
+
const schema: any = z.string();
|
|
244
|
+
schema.spa = () => "SPA";
|
|
245
|
+
schema.toJSONSchema = () => "JSON";
|
|
246
|
+
expect(schema.spa()).toBe("SPA");
|
|
247
|
+
expect(schema.toJSONSchema()).toBe("JSON");
|
|
248
|
+
|
|
249
|
+
const mini: any = zm.string();
|
|
250
|
+
mini.with = () => "WITH";
|
|
251
|
+
expect(mini.with()).toBe("WITH");
|
|
252
|
+
|
|
253
|
+
// a derived metadata member accepts assignment before its first read, as it did as an own property
|
|
254
|
+
const derived = z.number().min(2);
|
|
255
|
+
derived.minValue = 99;
|
|
256
|
+
expect(derived.minValue).toBe(99);
|
|
257
|
+
expect(Object.keys(derived)).toContain("minValue");
|
|
258
|
+
|
|
259
|
+
// and, like every prototype member, recomputes after deletion rather than staying absent
|
|
260
|
+
delete (derived as any).minValue;
|
|
261
|
+
expect(derived.minValue).toBe(2);
|
|
262
|
+
});
|
|
263
|
+
|
|
264
|
+
test("shape is lazy and stays out of Object.keys", () => {
|
|
265
|
+
const schema = z.object({ a: z.string() });
|
|
266
|
+
|
|
267
|
+
expect(Object.prototype.hasOwnProperty.call(schema, "shape")).toEqual(false);
|
|
268
|
+
expect("shape" in schema).toEqual(true);
|
|
269
|
+
expect(Object.keys(schema)).not.toContain("shape");
|
|
270
|
+
expect({ ...schema }).not.toHaveProperty("shape");
|
|
271
|
+
|
|
272
|
+
expect(Object.keys(schema.shape)).toEqual(["a"]);
|
|
273
|
+
|
|
274
|
+
// Reading caches a non-enumerable own data property. An own accessor here would put every later object schema into V8 dictionary mode.
|
|
275
|
+
expect(Object.prototype.hasOwnProperty.call(schema, "shape")).toEqual(true);
|
|
276
|
+
expect(Object.getOwnPropertyDescriptor(schema, "shape")).toMatchObject({
|
|
277
|
+
writable: true,
|
|
278
|
+
enumerable: false,
|
|
279
|
+
configurable: true,
|
|
280
|
+
});
|
|
281
|
+
expect(Object.keys(schema)).not.toContain("shape");
|
|
282
|
+
|
|
283
|
+
const mini = zm.object({ a: zm.string() });
|
|
284
|
+
expect(Object.prototype.hasOwnProperty.call(mini, "shape")).toEqual(false);
|
|
285
|
+
expect(Object.keys(mini.shape)).toEqual(["a"]);
|
|
286
|
+
expect(Object.keys(mini)).not.toContain("shape");
|
|
287
|
+
});
|
|
288
|
+
|
|
289
|
+
test("shape accepts repeated assignment and recomputes after deletion", () => {
|
|
290
|
+
const schema: any = z.object({ a: z.string() });
|
|
291
|
+
|
|
292
|
+
schema.shape = { b: z.number() };
|
|
293
|
+
expect(Object.keys(schema.shape)).toEqual(["b"]);
|
|
294
|
+
// The cached property stays writable, so a second assignment does not throw in strict mode.
|
|
295
|
+
schema.shape = { c: z.boolean() };
|
|
296
|
+
expect(Object.keys(schema.shape)).toEqual(["c"]);
|
|
297
|
+
|
|
298
|
+
// Deleting clears the memo rather than removing the property, since the accessor lives on the prototype.
|
|
299
|
+
delete schema.shape;
|
|
300
|
+
expect(Object.keys(schema.shape)).toEqual(["a"]);
|
|
301
|
+
});
|
|
302
|
+
|
|
303
|
+
test("a self-referential shape getter breaks the cycle instead of recursing", () => {
|
|
304
|
+
const Self: any = z.object({
|
|
305
|
+
a: z.string(),
|
|
306
|
+
get b() {
|
|
307
|
+
return z.array(z.object(Self.shape));
|
|
308
|
+
},
|
|
309
|
+
});
|
|
310
|
+
expect(Object.keys(Self.shape)).toEqual(["a", "b"]);
|
|
311
|
+
|
|
312
|
+
const Mini: any = zm.object({
|
|
313
|
+
a: zm.string(),
|
|
314
|
+
get b() {
|
|
315
|
+
return zm.array(zm.object(Mini.shape));
|
|
316
|
+
},
|
|
317
|
+
});
|
|
318
|
+
expect(Object.keys(Mini.shape)).toEqual(["a", "b"]);
|
|
319
|
+
});
|