@openclaw/buzz 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 +3 -0
- package/assets/icon.png +0 -0
- package/dist/{adapter.runtime-CaDdxQ2C.js → .setup/adapter.runtime-FIC9NMFI.mjs} +3 -3
- package/dist/{channel-C6rro-f7.js → .setup/channel-qV8kQiPi.mjs} +203 -105
- package/dist/.setup/directory-config-CzHz6fzo.mjs +43 -0
- package/dist/{room-membership-a8IHfdgL.js → .setup/room-membership-tqLQznFE.mjs} +1 -1
- package/dist/{secret-contract-DNuqbK64.js → .setup/secret-contract-DjibkTDL.mjs} +1 -1
- package/dist/.setup/secret-contract-api-DcFDI-eR.mjs +3 -0
- package/dist/.setup/setup-plugin-api-DI8WfvKQ.mjs +47 -0
- package/dist/.setup/setup-plugin-api-H-XWBzaF.mjs +2 -0
- package/dist/{setup-surface-DDUmAluL.js → .setup/setup-surface-DOHxdPor.mjs} +3 -3
- package/dist/api.js +2 -2
- package/dist/channel-plugin-api.js +1 -1
- package/dist/directory-contract-api.js +1 -1
- package/dist/qa-runner-api.js +1 -1
- package/dist/secret-contract-api.js +1 -1
- package/dist/setup-entry.js +3 -2
- package/dist/setup-plugin-api.js +1 -46
- package/node_modules/nostr-tools/lib/cjs/abstract-pool.js +3 -1
- package/node_modules/nostr-tools/lib/cjs/abstract-pool.js.map +2 -2
- package/node_modules/nostr-tools/lib/cjs/abstract-relay.js +3 -1
- package/node_modules/nostr-tools/lib/cjs/abstract-relay.js.map +2 -2
- package/node_modules/nostr-tools/lib/cjs/index.js +3 -1
- package/node_modules/nostr-tools/lib/cjs/index.js.map +2 -2
- package/node_modules/nostr-tools/lib/cjs/nip46.js +3 -1
- package/node_modules/nostr-tools/lib/cjs/nip46.js.map +2 -2
- package/node_modules/nostr-tools/lib/cjs/pool.js +3 -1
- package/node_modules/nostr-tools/lib/cjs/pool.js.map +2 -2
- package/node_modules/nostr-tools/lib/cjs/relay.js +3 -1
- package/node_modules/nostr-tools/lib/cjs/relay.js.map +2 -2
- package/node_modules/nostr-tools/lib/esm/abstract-pool.js +3 -1
- package/node_modules/nostr-tools/lib/esm/abstract-pool.js.map +2 -2
- package/node_modules/nostr-tools/lib/esm/abstract-relay.js +3 -1
- package/node_modules/nostr-tools/lib/esm/abstract-relay.js.map +2 -2
- package/node_modules/nostr-tools/lib/esm/index.js +3 -1
- package/node_modules/nostr-tools/lib/esm/index.js.map +2 -2
- package/node_modules/nostr-tools/lib/esm/nip46.js +3 -1
- package/node_modules/nostr-tools/lib/esm/nip46.js.map +2 -2
- package/node_modules/nostr-tools/lib/esm/pool.js +3 -1
- package/node_modules/nostr-tools/lib/esm/pool.js.map +2 -2
- package/node_modules/nostr-tools/lib/esm/relay.js +3 -1
- package/node_modules/nostr-tools/lib/esm/relay.js.map +2 -2
- package/node_modules/nostr-tools/lib/nostr.bundle.js +3 -1
- package/node_modules/nostr-tools/lib/nostr.bundle.js.map +2 -2
- package/node_modules/nostr-tools/package.json +1 -1
- 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 +12 -28
- package/package.json +9 -7
- package/dist/directory-config-B0shiBa4.js +0 -33
- package/node_modules/zod/src/v4/core/config.ts +0 -15
- /package/dist/{message-event-X_aBiM1X.js → .setup/message-event-X_aBiM1X.mjs} +0 -0
- /package/dist/{types-CeupBG0P.js → .setup/types-CeupBG0P.mjs} +0 -0
|
@@ -1,7 +1,46 @@
|
|
|
1
|
-
import { expect, test } from "vitest";
|
|
1
|
+
import { expect, expectTypeOf, test } from "vitest";
|
|
2
2
|
|
|
3
3
|
import * as z from "zod/v4";
|
|
4
4
|
|
|
5
|
+
test("number factory checks", () => {
|
|
6
|
+
const schema = z.number({ checks: [z.gte(1), z.lte(3)] as const });
|
|
7
|
+
const chained = z.number().min(1).max(3);
|
|
8
|
+
expectTypeOf<z.output<typeof schema>>().toEqualTypeOf<number>();
|
|
9
|
+
for (const value of [0, 1, 3, 4, Number.NaN, "2", undefined]) {
|
|
10
|
+
expect(z.validate(schema, value)).toBe(z.validate(chained, value));
|
|
11
|
+
expect(schema.safeParse(value)).toEqual(chained.safeParse(value));
|
|
12
|
+
}
|
|
13
|
+
expect(z.toJSONSchema(schema)).toEqual(z.toJSONSchema(chained));
|
|
14
|
+
expect(schema.minValue).toBe(1);
|
|
15
|
+
expect(schema.maxValue).toBe(3);
|
|
16
|
+
expect(z.coerce.number({ checks: [z.gte(1)] }).parse("2")).toBe(2);
|
|
17
|
+
const overwritten = z.number({ checks: [z.overwrite<number>((value) => value + 1), z.gte(2)] });
|
|
18
|
+
expect(overwritten.parse(1)).toBe(2);
|
|
19
|
+
expect(z.validate(overwritten, 0)).toBe(false);
|
|
20
|
+
// @ts-expect-error length checks cannot validate numbers
|
|
21
|
+
z.number({ checks: [z.minLength(1)] });
|
|
22
|
+
});
|
|
23
|
+
|
|
24
|
+
test("number factory checks snapshot caller arrays", () => {
|
|
25
|
+
for (const factory of [z.number, z.coerce.number]) {
|
|
26
|
+
const checks = [z.gte(1)];
|
|
27
|
+
const schema = factory({ checks });
|
|
28
|
+
let reads = 0;
|
|
29
|
+
factory({
|
|
30
|
+
get checks() {
|
|
31
|
+
if (++reads > 1) throw new Error("checks read twice");
|
|
32
|
+
return checks;
|
|
33
|
+
},
|
|
34
|
+
});
|
|
35
|
+
expect(reads).toBe(1);
|
|
36
|
+
const before = z.toJSONSchema(schema);
|
|
37
|
+
checks.push(z.gte(10));
|
|
38
|
+
expect(z.validate(schema, 3)).toBe(true);
|
|
39
|
+
expect(z.validate(z.compile(schema), 3)).toBe(true);
|
|
40
|
+
expect(z.toJSONSchema(schema)).toEqual(before);
|
|
41
|
+
}
|
|
42
|
+
});
|
|
43
|
+
|
|
5
44
|
test("z.number() basic validation", () => {
|
|
6
45
|
const schema = z.number();
|
|
7
46
|
expect(schema.parse(1234)).toEqual(1234);
|
|
@@ -22,7 +61,7 @@ test("Infinity validation", () => {
|
|
|
22
61
|
"code": "invalid_type",
|
|
23
62
|
"received": "Infinity",
|
|
24
63
|
"path": [],
|
|
25
|
-
"message": "Invalid input: expected number, received
|
|
64
|
+
"message": "Invalid input: expected number, received Infinity"
|
|
26
65
|
}
|
|
27
66
|
]],
|
|
28
67
|
"success": false,
|
|
@@ -34,9 +73,9 @@ test("Infinity validation", () => {
|
|
|
34
73
|
{
|
|
35
74
|
"expected": "number",
|
|
36
75
|
"code": "invalid_type",
|
|
37
|
-
"received": "Infinity",
|
|
76
|
+
"received": "-Infinity",
|
|
38
77
|
"path": [],
|
|
39
|
-
"message": "Invalid input: expected number, received
|
|
78
|
+
"message": "Invalid input: expected number, received -Infinity"
|
|
40
79
|
}
|
|
41
80
|
]],
|
|
42
81
|
"success": false,
|
|
@@ -137,6 +176,16 @@ test("multipleOf", () => {
|
|
|
137
176
|
expect(() => schemas.schema7.parse(numbers.number8)).toThrow();
|
|
138
177
|
});
|
|
139
178
|
|
|
179
|
+
test(".multipleOf() accepts exact decimal multiples", () => {
|
|
180
|
+
// 2.03 === 29 * 0.07, but the quotient lands 2 ULP below 29, so the old tolerance rejected it while the neighbouring multiples 1.96 and 2.10 passed.
|
|
181
|
+
const schema = z.number().multipleOf(0.07);
|
|
182
|
+
expect(schema.safeParse(2.03).success).toBe(true);
|
|
183
|
+
expect(schema.safeParse(4.06).success).toBe(true);
|
|
184
|
+
expect(schema.safeParse(8.54).success).toBe(true);
|
|
185
|
+
// genuine non-multiples must still be rejected
|
|
186
|
+
expect(schema.safeParse(2.04).success).toBe(false);
|
|
187
|
+
});
|
|
188
|
+
|
|
140
189
|
test(".multipleOf() with positive divisor", () => {
|
|
141
190
|
const schema = z.number().multipleOf(5);
|
|
142
191
|
expect(schema.parse(15)).toEqual(15);
|
|
@@ -154,8 +203,7 @@ test(".multipleOf() with negative divisor", () => {
|
|
|
154
203
|
});
|
|
155
204
|
|
|
156
205
|
test(".multipleOf() with scientific notation (multi-digit exponents)", () => {
|
|
157
|
-
// Regression test for https://github.com/colinhacks/zod/pull/5687
|
|
158
|
-
// The regex was using \d? which only matches single-digit exponents
|
|
206
|
+
// Regression test for https://github.com/colinhacks/zod/pull/5687 — the regex was using \d? which only matches single-digit exponents
|
|
159
207
|
const schema = z.number().multipleOf(1e-10);
|
|
160
208
|
|
|
161
209
|
// These should all pass - they are valid multiples of 1e-10
|
|
@@ -208,7 +256,7 @@ test(".finite() validation", () => {
|
|
|
208
256
|
"code": "invalid_type",
|
|
209
257
|
"received": "Infinity",
|
|
210
258
|
"path": [],
|
|
211
|
-
"message": "Invalid input: expected number, received
|
|
259
|
+
"message": "Invalid input: expected number, received Infinity"
|
|
212
260
|
}
|
|
213
261
|
]],
|
|
214
262
|
"success": false,
|
|
@@ -220,9 +268,9 @@ test(".finite() validation", () => {
|
|
|
220
268
|
{
|
|
221
269
|
"expected": "number",
|
|
222
270
|
"code": "invalid_type",
|
|
223
|
-
"received": "Infinity",
|
|
271
|
+
"received": "-Infinity",
|
|
224
272
|
"path": [],
|
|
225
|
-
"message": "Invalid input: expected number, received
|
|
273
|
+
"message": "Invalid input: expected number, received -Infinity"
|
|
226
274
|
}
|
|
227
275
|
]],
|
|
228
276
|
"success": false,
|
|
@@ -323,3 +371,31 @@ test("error customization", () => {
|
|
|
323
371
|
z.number().gte(5, { error: (iss) => "Min: " + iss.minimum.valueOf() });
|
|
324
372
|
z.number().lte(5, { error: (iss) => "Max: " + iss.maximum.valueOf() });
|
|
325
373
|
});
|
|
374
|
+
|
|
375
|
+
test("number formats are distinct at the type level", () => {
|
|
376
|
+
expectTypeOf(z.int()._zod.def.format).toEqualTypeOf<"safeint">();
|
|
377
|
+
expectTypeOf(z.int32()._zod.def.format).toEqualTypeOf<"int32">();
|
|
378
|
+
expectTypeOf(z.uint32()._zod.def.format).toEqualTypeOf<"uint32">();
|
|
379
|
+
expectTypeOf(z.float32()._zod.def.format).toEqualTypeOf<"float32">();
|
|
380
|
+
expectTypeOf(z.float64()._zod.def.format).toEqualTypeOf<"float64">();
|
|
381
|
+
|
|
382
|
+
z.int() satisfies z.ZodNumberFormat;
|
|
383
|
+
z.int() satisfies z.ZodNumber;
|
|
384
|
+
|
|
385
|
+
// @ts-expect-error a float32 schema is not a ZodInt
|
|
386
|
+
z.float32() satisfies z.ZodInt;
|
|
387
|
+
// @ts-expect-error a uint32 schema is not a ZodInt32
|
|
388
|
+
z.uint32() satisfies z.ZodInt32;
|
|
389
|
+
|
|
390
|
+
// the point of the distinction: dispatching on the schema type in a conditional type
|
|
391
|
+
type Sql<T> = T extends z.ZodUInt32
|
|
392
|
+
? "BIGINT"
|
|
393
|
+
: T extends z.ZodInt32
|
|
394
|
+
? "INTEGER"
|
|
395
|
+
: T extends z.ZodFloat32
|
|
396
|
+
? "REAL"
|
|
397
|
+
: never;
|
|
398
|
+
expectTypeOf<Sql<z.ZodUInt32>>().toEqualTypeOf<"BIGINT">();
|
|
399
|
+
expectTypeOf<Sql<z.ZodInt32>>().toEqualTypeOf<"INTEGER">();
|
|
400
|
+
expectTypeOf<Sql<z.ZodFloat32>>().toEqualTypeOf<"REAL">();
|
|
401
|
+
});
|
|
@@ -132,14 +132,12 @@ test("catchall inference", () => {
|
|
|
132
132
|
test("catchall overrides strict", () => {
|
|
133
133
|
const o1 = z.object({ first: z.string().optional() }).strict().catchall(z.number());
|
|
134
134
|
|
|
135
|
-
// should run fine
|
|
136
|
-
// setting a catchall overrides the unknownKeys behavior
|
|
135
|
+
// should run fine setting a catchall overrides the unknownKeys behavior
|
|
137
136
|
o1.parse({
|
|
138
137
|
asdf: 1234,
|
|
139
138
|
});
|
|
140
139
|
|
|
141
|
-
// should only run catchall validation
|
|
142
|
-
// against unknown keys
|
|
140
|
+
// should only run catchall validation against unknown keys
|
|
143
141
|
o1.parse({
|
|
144
142
|
first: "asdf",
|
|
145
143
|
asdf: 1234,
|
|
@@ -154,8 +152,7 @@ test("catchall overrides strict", () => {
|
|
|
154
152
|
.strict()
|
|
155
153
|
.catchall(z.number());
|
|
156
154
|
|
|
157
|
-
// should run fine
|
|
158
|
-
// setting a catchall overrides the unknownKeys behavior
|
|
155
|
+
// should run fine setting a catchall overrides the unknownKeys behavior
|
|
159
156
|
o1.parse({
|
|
160
157
|
first: "asdf",
|
|
161
158
|
asdf: 1234,
|
|
@@ -670,10 +667,7 @@ test("safeExtend() on object with refinements should not throw", () => {
|
|
|
670
667
|
expect(() => schema.safeExtend({ b: z.string() })).not.toThrow();
|
|
671
668
|
});
|
|
672
669
|
|
|
673
|
-
// __proto__ in input must not replace the prototype of the parsed object via
|
|
674
|
-
// the assignment setter on the result {}.
|
|
675
|
-
// https://github.com/colinhacks/zod/security/advisories/GHSA-r34p-xfmx-58wv
|
|
676
|
-
// https://github.com/colinhacks/zod/security/advisories/GHSA-84jv-fqfx-wxhr
|
|
670
|
+
// __proto__ in input must not replace the prototype of the parsed object via the assignment setter on the result {}.
|
|
677
671
|
describe("__proto__ in object catchall paths", () => {
|
|
678
672
|
const protoInput = () => JSON.parse('{"__proto__":{"isAdmin":true},"name":"alice"}');
|
|
679
673
|
|
|
@@ -709,9 +703,304 @@ describe("__proto__ in object catchall paths", () => {
|
|
|
709
703
|
}
|
|
710
704
|
});
|
|
711
705
|
|
|
712
|
-
test("strict
|
|
706
|
+
test("strict surfaces __proto__ as unrecognized without copying it", () => {
|
|
713
707
|
const schema = z.object({ name: z.string() }).strict();
|
|
714
708
|
const result = schema.safeParse(protoInput());
|
|
715
|
-
expect(result.success).toBe(
|
|
709
|
+
expect(result.success).toBe(false);
|
|
710
|
+
if (!result.success) {
|
|
711
|
+
expect(result.error.issues[0].code).toBe("unrecognized_keys");
|
|
712
|
+
expect((result.error.issues[0] as any).keys).toEqual(["__proto__"]);
|
|
713
|
+
}
|
|
714
|
+
});
|
|
715
|
+
|
|
716
|
+
test("strict accepts but strips a __proto__ key the shape declares", () => {
|
|
717
|
+
const shape: any = { name: z.string() };
|
|
718
|
+
Object.defineProperty(shape, "__proto__", {
|
|
719
|
+
value: z.string(),
|
|
720
|
+
enumerable: true,
|
|
721
|
+
configurable: true,
|
|
722
|
+
writable: true,
|
|
723
|
+
});
|
|
724
|
+
const input = JSON.parse('{"name":"alice","__proto__":"hello"}');
|
|
725
|
+
|
|
726
|
+
for (const schema of [z.object(shape).strict(), z.object(shape).catchall(z.any()), z.object(shape)]) {
|
|
727
|
+
const result = schema.safeParse(input);
|
|
728
|
+
expect(result.success).toBe(true);
|
|
729
|
+
if (result.success) {
|
|
730
|
+
expect(Object.keys(result.data)).toEqual(["name"]);
|
|
731
|
+
expect(Object.getPrototypeOf(result.data)).toBe(Object.prototype);
|
|
732
|
+
}
|
|
733
|
+
}
|
|
734
|
+
});
|
|
735
|
+
|
|
736
|
+
test("strictObject and jitless agree with .strict()", async () => {
|
|
737
|
+
for (const schema of [z.strictObject({ name: z.string() }), z.object({ name: z.string() }).strict()]) {
|
|
738
|
+
for (const result of [
|
|
739
|
+
schema.safeParse(protoInput()),
|
|
740
|
+
await schema.safeParseAsync(protoInput(), {
|
|
741
|
+
jitless: true,
|
|
742
|
+
} as any),
|
|
743
|
+
]) {
|
|
744
|
+
expect(result.success).toBe(false);
|
|
745
|
+
if (!result.success) {
|
|
746
|
+
expect((result.error.issues[0] as any).keys).toEqual(["__proto__"]);
|
|
747
|
+
}
|
|
748
|
+
}
|
|
749
|
+
}
|
|
750
|
+
});
|
|
751
|
+
});
|
|
752
|
+
|
|
753
|
+
// Parsed objects always strip __proto__, including keys explicitly declared by the schema.
|
|
754
|
+
describe("__proto__ as a declared shape key", () => {
|
|
755
|
+
const protoInput = () => JSON.parse('{"__proto__":{"isAdmin":true},"name":"alice"}');
|
|
756
|
+
const makeShape = () =>
|
|
757
|
+
Object.fromEntries([
|
|
758
|
+
["__proto__", z.object({ isAdmin: z.boolean() })],
|
|
759
|
+
["name", z.string()],
|
|
760
|
+
]) as Record<string, any>;
|
|
761
|
+
|
|
762
|
+
const expectStripped = (parsed: any) => {
|
|
763
|
+
expect(Object.getPrototypeOf(parsed)).toBe(Object.prototype);
|
|
764
|
+
expect(Object.prototype.hasOwnProperty.call(parsed, "__proto__")).toBe(false);
|
|
765
|
+
expect((parsed as any).isAdmin).toBeUndefined();
|
|
766
|
+
expect(Object.keys(parsed)).toEqual(["name"]);
|
|
767
|
+
};
|
|
768
|
+
|
|
769
|
+
test("jit fastpass", () => {
|
|
770
|
+
expectStripped(z.object(makeShape()).parse(protoInput()));
|
|
771
|
+
});
|
|
772
|
+
|
|
773
|
+
test("jitless", () => {
|
|
774
|
+
expectStripped(z.object(makeShape()).parse(protoInput(), { jitless: true } as any));
|
|
775
|
+
});
|
|
776
|
+
|
|
777
|
+
test("async", async () => {
|
|
778
|
+
const shape = Object.fromEntries([
|
|
779
|
+
["__proto__", z.object({ isAdmin: z.boolean() }).refine(async () => true)],
|
|
780
|
+
["name", z.string()],
|
|
781
|
+
]) as Record<string, any>;
|
|
782
|
+
expectStripped(await z.object(shape).parseAsync(protoInput()));
|
|
783
|
+
});
|
|
784
|
+
|
|
785
|
+
test("primitive value is stripped", () => {
|
|
786
|
+
const schema = z.object(Object.fromEntries([["__proto__", z.string()]]) as Record<string, any>);
|
|
787
|
+
const parsed: any = schema.parse(JSON.parse('{"__proto__":"hello"}'));
|
|
788
|
+
expect(Object.prototype.hasOwnProperty.call(parsed, "__proto__")).toBe(false);
|
|
789
|
+
expect(Object.getPrototypeOf(parsed)).toBe(Object.prototype);
|
|
790
|
+
});
|
|
791
|
+
|
|
792
|
+
test("declared key is not validated", () => {
|
|
793
|
+
const schema = z.object(Object.fromEntries([["__proto__", z.string()]]) as Record<string, any>);
|
|
794
|
+
expect(schema.parse(JSON.parse('{"__proto__":123}'))).toEqual({});
|
|
795
|
+
});
|
|
796
|
+
|
|
797
|
+
test("required, optional, and defaulted declarations are all stripped", () => {
|
|
798
|
+
const shape = (schema: z.ZodType) => Object.fromEntries([["__proto__", schema]]) as Record<string, any>;
|
|
799
|
+
|
|
800
|
+
for (const jitless of [false, true]) {
|
|
801
|
+
const ctx = { jitless } as any;
|
|
802
|
+
expect(z.object(shape(z.unknown())).parse({}, ctx)).toEqual({});
|
|
803
|
+
expect(z.object(shape(z.string().optional())).parse({}, ctx)).toEqual({});
|
|
804
|
+
expect(z.object(shape(z.string().default("fallback"))).parse({}, ctx)).toEqual({});
|
|
805
|
+
}
|
|
806
|
+
});
|
|
807
|
+
|
|
808
|
+
test("an own getter is not evaluated", () => {
|
|
809
|
+
let reads = 0;
|
|
810
|
+
const input = Object.defineProperty({}, "__proto__", {
|
|
811
|
+
get() {
|
|
812
|
+
reads++;
|
|
813
|
+
return "value";
|
|
814
|
+
},
|
|
815
|
+
enumerable: true,
|
|
816
|
+
});
|
|
817
|
+
const schema = z.object(Object.fromEntries([["__proto__", z.string()]]) as Record<string, any>);
|
|
818
|
+
|
|
819
|
+
expect(schema.parse(input)).toEqual({});
|
|
820
|
+
expect(reads).toBe(0);
|
|
821
|
+
});
|
|
822
|
+
|
|
823
|
+
test("pick keeps a declared key", () => {
|
|
824
|
+
const shape = Object.fromEntries([["__proto__", z.string()]]) as Record<string, any>;
|
|
825
|
+
const mask = Object.fromEntries([["__proto__", true]]) as Record<string, true>;
|
|
826
|
+
const picked = z.object(shape).pick(mask);
|
|
827
|
+
|
|
828
|
+
expect(Object.keys(picked.shape)).toEqual(["__proto__"]);
|
|
829
|
+
const parsed: any = picked.parse(Object.fromEntries([["__proto__", "value"]]));
|
|
830
|
+
expect(parsed).toEqual({});
|
|
831
|
+
expect(() => z.object({ value: z.string() }).pick(mask as any).shape).toThrow('Unrecognized key: "__proto__"');
|
|
832
|
+
});
|
|
833
|
+
|
|
834
|
+
test.each(["omit", "partial", "required"] as const)("%s rejects an undeclared key", (method) => {
|
|
835
|
+
const mask = Object.fromEntries([["__proto__", true]]);
|
|
836
|
+
const schema = z.object({ value: z.string() });
|
|
837
|
+
|
|
838
|
+
expect(() => (schema[method] as any)(mask).shape).toThrow('Unrecognized key: "__proto__"');
|
|
839
|
+
});
|
|
840
|
+
|
|
841
|
+
// the mask is checked against the source's declared keys, which reads without resolving them, so it throws where the mistake is
|
|
842
|
+
test.each(["pick", "omit", "partial", "required"] as const)("%s rejects an undeclared key at the call", (method) => {
|
|
843
|
+
const schema = z.object({ value: z.string() });
|
|
844
|
+
|
|
845
|
+
expect(() => (schema[method] as any)({ nope: true })).toThrow('Unrecognized key: "nope"');
|
|
846
|
+
});
|
|
847
|
+
|
|
848
|
+
// a derived shape is built key by key, and a plain assignment runs whatever setter answers to the key — `__proto__` always has one, and a polluted prototype can supply one for any name
|
|
849
|
+
test("an inherited setter cannot swallow a derived key", () => {
|
|
850
|
+
let swallowed: unknown;
|
|
851
|
+
Object.defineProperty(Object.prototype, "field", {
|
|
852
|
+
configurable: true,
|
|
853
|
+
set(v) {
|
|
854
|
+
swallowed = v;
|
|
855
|
+
},
|
|
856
|
+
get() {
|
|
857
|
+
return undefined;
|
|
858
|
+
},
|
|
859
|
+
});
|
|
860
|
+
|
|
861
|
+
try {
|
|
862
|
+
const derived = z.object({ field: z.string() }).extend({ extra: z.number() });
|
|
863
|
+
|
|
864
|
+
expect(Object.keys(derived.shape)).toEqual(["field", "extra"]);
|
|
865
|
+
expect(swallowed).toBeUndefined();
|
|
866
|
+
// the key is still validated; what a parse writes into its result is the ambient prototype's business, as it is without a builder
|
|
867
|
+
expect(derived.safeParse({ field: 123, extra: 1 }).success).toBe(false);
|
|
868
|
+
expect(derived.safeParse({ field: "a", extra: 1 }).success).toBe(true);
|
|
869
|
+
} finally {
|
|
870
|
+
delete (Object.prototype as any).field;
|
|
871
|
+
}
|
|
872
|
+
});
|
|
873
|
+
|
|
874
|
+
// a shape resolves by object spread, so a non-enumerable entry is no part of it and no builder may promote one into a derived shape
|
|
875
|
+
test("a non-enumerable shape entry stays out of every derived shape", () => {
|
|
876
|
+
const sym = Symbol("kept");
|
|
877
|
+
const hide = (target: Record<string, any>) =>
|
|
878
|
+
Object.defineProperty(target, "hidden", { value: z.string(), enumerable: false, configurable: true });
|
|
879
|
+
// each case needs a source whose shape is still unresolved, since resolving drops the entry on its own
|
|
880
|
+
const source = () => z.object(hide({ b: z.number(), [sym]: z.boolean() }) as any);
|
|
881
|
+
|
|
882
|
+
expect(Reflect.ownKeys(source().shape)).toEqual(["b", sym]);
|
|
883
|
+
expect(Reflect.ownKeys(source().extend({ c: z.boolean() }).shape)).toEqual(["b", "c", sym]);
|
|
884
|
+
expect(Reflect.ownKeys(source().partial().shape)).toEqual(["b", sym]);
|
|
885
|
+
expect(Reflect.ownKeys(source().merge(z.object({ c: z.boolean() })).shape)).toEqual(["b", "c", sym]);
|
|
886
|
+
expect(Object.keys(z.object({ b: z.number() }).extend(hide({}) as any).shape)).toEqual(["b"]);
|
|
887
|
+
expect(() => source().pick({ hidden: true } as any)).toThrow('Unrecognized key: "hidden"');
|
|
888
|
+
|
|
889
|
+
// promoting it would make a key the source ignores required
|
|
890
|
+
expect(
|
|
891
|
+
source()
|
|
892
|
+
.extend({ c: z.boolean() })
|
|
893
|
+
.safeParse({ b: 1, [sym]: true, c: true }).success
|
|
894
|
+
).toBe(true);
|
|
895
|
+
});
|
|
896
|
+
|
|
897
|
+
test("shape helpers preserve a declared key", () => {
|
|
898
|
+
const shape = () =>
|
|
899
|
+
Object.fromEntries([
|
|
900
|
+
["__proto__", z.string()],
|
|
901
|
+
["value", z.string()],
|
|
902
|
+
]) as Record<string, any>;
|
|
903
|
+
const protoMask = Object.fromEntries([["__proto__", true]]);
|
|
904
|
+
const valueMask = { value: true } as const;
|
|
905
|
+
const shapes = [
|
|
906
|
+
z.object(shape()).omit(valueMask).shape,
|
|
907
|
+
z.object(shape()).partial(protoMask as any).shape,
|
|
908
|
+
z.object(shape()).required(protoMask as any).shape,
|
|
909
|
+
];
|
|
910
|
+
|
|
911
|
+
for (const next of shapes) {
|
|
912
|
+
expect(Object.getPrototypeOf(next)).toBe(Object.prototype);
|
|
913
|
+
expect(Object.prototype.hasOwnProperty.call(next, "__proto__")).toBe(true);
|
|
914
|
+
}
|
|
915
|
+
});
|
|
916
|
+
|
|
917
|
+
test("Object.prototype is untouched", () => {
|
|
918
|
+
z.object(makeShape()).parse(protoInput());
|
|
919
|
+
expect(({} as any).isAdmin).toBeUndefined();
|
|
920
|
+
});
|
|
921
|
+
});
|
|
922
|
+
|
|
923
|
+
test("object parsing still reads ordinary inherited properties", () => {
|
|
924
|
+
const input = Object.create({ value: "inherited" });
|
|
925
|
+
const schema = z.object({ value: z.string() });
|
|
926
|
+
|
|
927
|
+
expect(schema.parse(input)).toEqual({ value: "inherited" });
|
|
928
|
+
expect(schema.parse(input, { jitless: true } as any)).toEqual({ value: "inherited" });
|
|
929
|
+
});
|
|
930
|
+
|
|
931
|
+
describe("symbol keys in object shape", () => {
|
|
932
|
+
const SYM = Symbol("sym");
|
|
933
|
+
const OTHER = Symbol("other");
|
|
934
|
+
|
|
935
|
+
test("parses and validates a declared symbol key", () => {
|
|
936
|
+
const schema = z.object({ name: z.string(), [SYM]: z.number() });
|
|
937
|
+
expectTypeOf<z.infer<typeof schema>>().toEqualTypeOf<{ name: string; [SYM]: number }>();
|
|
938
|
+
|
|
939
|
+
for (const params of [undefined, { jitless: true } as any]) {
|
|
940
|
+
expect(schema.parse({ name: "alice", [SYM]: 42 }, params)).toEqual({ name: "alice", [SYM]: 42 });
|
|
941
|
+
expect(schema.safeParse({ name: "alice", [SYM]: "nope" }, params).success).toBe(false);
|
|
942
|
+
expect(schema.safeParse({ name: "alice" }, params).success).toBe(false);
|
|
943
|
+
}
|
|
944
|
+
});
|
|
945
|
+
|
|
946
|
+
test("reports an invalid symbol value at the symbol's own path", () => {
|
|
947
|
+
const schema = z.object({ [SYM]: z.number() });
|
|
948
|
+
const result = schema.safeParse({ [SYM]: "nope" });
|
|
949
|
+
expect(result.error!.issues[0].path).toEqual([SYM]);
|
|
950
|
+
});
|
|
951
|
+
|
|
952
|
+
test("honours optionality and defaults on a symbol key", () => {
|
|
953
|
+
expect(z.object({ [SYM]: z.number().optional() }).parse({})).toEqual({});
|
|
954
|
+
expect(z.object({ [SYM]: z.number().default(7) }).parse({})).toEqual({ [SYM]: 7 });
|
|
955
|
+
});
|
|
956
|
+
|
|
957
|
+
test("a declared symbol key survives strict and loose", () => {
|
|
958
|
+
expect(z.strictObject({ [SYM]: z.number() }).safeParse({ [SYM]: 1 }).success).toBe(true);
|
|
959
|
+
expect(z.strictObject({ [SYM]: z.number() }).safeParse({ [SYM]: 1, extra: 1 }).success).toBe(false);
|
|
960
|
+
expect(z.looseObject({ [SYM]: z.number() }).parse({ [SYM]: 1, extra: "e" })).toEqual({ [SYM]: 1, extra: "e" });
|
|
961
|
+
});
|
|
962
|
+
|
|
963
|
+
// Deliberate: hunting each input for undeclared symbols costs a `getOwnPropertySymbols` call on every parse of every strict/loose/catchall object, which measured +16-44% on `z.strictObject`. Declared keys are static and cost nothing, so only they are supported.
|
|
964
|
+
test("an undeclared symbol key is ignored, not passed through or flagged", () => {
|
|
965
|
+
expect(z.looseObject({ name: z.string() }).parse({ name: "a", [OTHER]: "x" })).toEqual({ name: "a" });
|
|
966
|
+
expect(z.strictObject({ name: z.string() }).safeParse({ name: "a", [OTHER]: "x" }).success).toBe(true);
|
|
967
|
+
});
|
|
968
|
+
|
|
969
|
+
test("builder methods reach symbol keys", () => {
|
|
970
|
+
const base = z.object({ a: z.string(), [SYM]: z.number() });
|
|
971
|
+
expect(base.partial().safeParse({ a: "x" }).success).toBe(true);
|
|
972
|
+
expect(base.partial().required().safeParse({ a: "x" }).success).toBe(false);
|
|
973
|
+
expect(Reflect.ownKeys(base.pick({ [SYM]: true }).shape)).toEqual([SYM]);
|
|
974
|
+
expect(Reflect.ownKeys(base.omit({ [SYM]: true }).shape)).toEqual(["a"]);
|
|
975
|
+
expect(Reflect.ownKeys(z.object({ a: z.string() }).extend({ [SYM]: z.number() }).shape)).toEqual(["a", SYM]);
|
|
976
|
+
});
|
|
977
|
+
|
|
978
|
+
test("a cycle through a symbol key is detected like a string-keyed one", () => {
|
|
979
|
+
const A: any = z.object({
|
|
980
|
+
name: z.string(),
|
|
981
|
+
get [SYM]() {
|
|
982
|
+
return A.optional();
|
|
983
|
+
},
|
|
984
|
+
});
|
|
985
|
+
const input: any = { name: "root" };
|
|
986
|
+
input[SYM] = input;
|
|
987
|
+
expect(A.safeParse(input).success).toBe(true);
|
|
988
|
+
expect(() => z.compile(A, { strict: true })).toThrow(/does not support/);
|
|
989
|
+
});
|
|
990
|
+
|
|
991
|
+
test("extend's refinement-overlap guard sees symbol keys", () => {
|
|
992
|
+
const refined = z.object({ a: z.string(), [SYM]: z.number() }).refine(() => true);
|
|
993
|
+
expect(() => refined.extend({ a: z.string() })).toThrow(/Cannot overwrite keys/);
|
|
994
|
+
expect(() => refined.extend({ [SYM]: z.string() })).toThrow(/Cannot overwrite keys/);
|
|
995
|
+
});
|
|
996
|
+
|
|
997
|
+
test("a symbol key is unrepresentable in JSON Schema", () => {
|
|
998
|
+
const schema = z.object({ a: z.string(), [SYM]: z.number() });
|
|
999
|
+
expect(() => z.toJSONSchema(schema)).toThrow(/Symbol keys cannot be represented/);
|
|
1000
|
+
expect(z.toJSONSchema(schema, { unrepresentable: "any" })).toMatchObject({ properties: { a: { type: "string" } } });
|
|
1001
|
+
});
|
|
1002
|
+
|
|
1003
|
+
test("rejects a non-schema value under a symbol key", () => {
|
|
1004
|
+
expect(() => z.object({ [SYM]: 123 as any }).parse({})).toThrow(/Invalid element at key "Symbol\(sym\)"/);
|
|
716
1005
|
});
|
|
717
1006
|
});
|