@psnext/slingcli 3.1.20260904-1 → 3.3.20260911-1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/node_modules/@aws-sdk/core/dist-cjs/submodules/util/index.js +5 -0
- package/node_modules/@aws-sdk/core/dist-es/submodules/util/hasOwn.js +3 -0
- package/node_modules/@aws-sdk/core/dist-es/submodules/util/index.js +1 -0
- package/node_modules/@aws-sdk/core/dist-types/submodules/util/hasOwn.d.ts +4 -0
- package/node_modules/@aws-sdk/core/dist-types/submodules/util/index.d.ts +1 -0
- package/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/util/hasOwn.d.ts +1 -0
- package/node_modules/@aws-sdk/core/dist-types/ts3.4/submodules/util/index.d.ts +1 -0
- package/node_modules/@aws-sdk/core/package.json +1 -1
- package/node_modules/@aws-sdk/credential-provider-env/package.json +2 -2
- package/node_modules/@aws-sdk/credential-provider-http/package.json +2 -2
- package/node_modules/@aws-sdk/credential-provider-ini/package.json +9 -9
- package/node_modules/@aws-sdk/credential-provider-login/package.json +3 -3
- package/node_modules/@aws-sdk/credential-provider-node/package.json +7 -7
- package/node_modules/@aws-sdk/credential-provider-process/package.json +2 -2
- package/node_modules/@aws-sdk/credential-provider-sso/node_modules/@aws-sdk/token-providers/package.json +3 -3
- package/node_modules/@aws-sdk/credential-provider-sso/package.json +4 -4
- package/node_modules/@aws-sdk/credential-provider-web-identity/package.json +3 -3
- package/node_modules/@aws-sdk/middleware-websocket/package.json +2 -2
- package/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/cognito-identity/index.js +1 -1
- package/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/signin/index.js +1 -1
- package/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/sso/index.js +1 -1
- package/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/sso-oidc/index.js +1 -1
- package/node_modules/@aws-sdk/nested-clients/dist-cjs/submodules/sts/index.js +1 -1
- package/node_modules/@aws-sdk/nested-clients/package.json +2 -2
- package/node_modules/@earendil-works/pi-coding-agent/dist/bundle/chunks/{chunk-PBNSMEG7.js → chunk-VDBOM5UG.js} +9 -9
- package/node_modules/@earendil-works/pi-coding-agent/dist/bundle/cli.js +1 -1
- package/node_modules/@earendil-works/pi-coding-agent/dist/bundle/index.js +1 -1
- package/node_modules/@earendil-works/pi-coding-agent/dist/bundle/rpc-entry.js +1 -1
- package/node_modules/@earendil-works/pi-coding-agent/node_modules/undici/docs/docs/api/Client.md +25 -8
- package/node_modules/@earendil-works/pi-coding-agent/node_modules/undici/docs/docs/api/EnvHttpProxyAgent.md +3 -2
- package/node_modules/@earendil-works/pi-coding-agent/node_modules/undici/docs/docs/api/EventSource.md +4 -0
- package/node_modules/@earendil-works/pi-coding-agent/node_modules/undici/docs/docs/api/Interceptors.md +7 -3
- package/node_modules/@earendil-works/pi-coding-agent/node_modules/undici/docs/docs/api/Socks5ProxyAgent.md +7 -1
- package/node_modules/@earendil-works/pi-coding-agent/node_modules/undici/lib/api/readable.js +33 -43
- package/node_modules/@earendil-works/pi-coding-agent/node_modules/undici/lib/cache/memory-cache-store.js +2 -2
- package/node_modules/@earendil-works/pi-coding-agent/node_modules/undici/lib/core/connect.js +16 -2
- package/node_modules/@earendil-works/pi-coding-agent/node_modules/undici/lib/core/symbols.js +3 -0
- package/node_modules/@earendil-works/pi-coding-agent/node_modules/undici/lib/dispatcher/agent.js +7 -2
- package/node_modules/@earendil-works/pi-coding-agent/node_modules/undici/lib/dispatcher/balanced-pool.js +7 -4
- package/node_modules/@earendil-works/pi-coding-agent/node_modules/undici/lib/dispatcher/client-h1.js +9 -1
- package/node_modules/@earendil-works/pi-coding-agent/node_modules/undici/lib/dispatcher/client-h2.js +221 -12
- package/node_modules/@earendil-works/pi-coding-agent/node_modules/undici/lib/dispatcher/client.js +76 -30
- package/node_modules/@earendil-works/pi-coding-agent/node_modules/undici/lib/dispatcher/dispatcher-base.js +13 -1
- package/node_modules/@earendil-works/pi-coding-agent/node_modules/undici/lib/dispatcher/dispatcher.js +15 -1
- package/node_modules/@earendil-works/pi-coding-agent/node_modules/undici/lib/dispatcher/dispatcher1-wrapper.js +3 -0
- package/node_modules/@earendil-works/pi-coding-agent/node_modules/undici/lib/dispatcher/env-http-proxy-agent.js +37 -8
- package/node_modules/@earendil-works/pi-coding-agent/node_modules/undici/lib/dispatcher/proxy-agent.js +18 -1
- package/node_modules/@earendil-works/pi-coding-agent/node_modules/undici/lib/dispatcher/retry-agent.js +3 -0
- package/node_modules/@earendil-works/pi-coding-agent/node_modules/undici/lib/dispatcher/round-robin-pool.js +1 -1
- package/node_modules/@earendil-works/pi-coding-agent/node_modules/undici/lib/dispatcher/socks5-proxy-agent.js +106 -22
- package/node_modules/@earendil-works/pi-coding-agent/node_modules/undici/lib/handler/cache-handler.js +29 -5
- package/node_modules/@earendil-works/pi-coding-agent/node_modules/undici/lib/handler/decorator-handler.js +7 -1
- package/node_modules/@earendil-works/pi-coding-agent/node_modules/undici/lib/handler/deduplication-handler.js +12 -6
- package/node_modules/@earendil-works/pi-coding-agent/node_modules/undici/lib/handler/redirect-handler.js +21 -4
- package/node_modules/@earendil-works/pi-coding-agent/node_modules/undici/lib/handler/retry-handler.js +155 -32
- package/node_modules/@earendil-works/pi-coding-agent/node_modules/undici/lib/interceptor/cache.js +65 -9
- package/node_modules/@earendil-works/pi-coding-agent/node_modules/undici/lib/interceptor/decompress.js +115 -13
- package/node_modules/@earendil-works/pi-coding-agent/node_modules/undici/lib/interceptor/deduplicate.js +5 -4
- package/node_modules/@earendil-works/pi-coding-agent/node_modules/undici/lib/interceptor/dns.js +7 -0
- package/node_modules/@earendil-works/pi-coding-agent/node_modules/undici/lib/interceptor/dump.js +10 -23
- package/node_modules/@earendil-works/pi-coding-agent/node_modules/undici/lib/mock/mock-agent.js +13 -1
- package/node_modules/@earendil-works/pi-coding-agent/node_modules/undici/lib/mock/mock-utils.js +217 -27
- package/node_modules/@earendil-works/pi-coding-agent/node_modules/undici/lib/util/cache.js +43 -3
- package/node_modules/@earendil-works/pi-coding-agent/node_modules/undici/lib/web/cookies/parse.js +150 -147
- package/node_modules/@earendil-works/pi-coding-agent/node_modules/undici/lib/web/eventsource/eventsource-stream.js +28 -1
- package/node_modules/@earendil-works/pi-coding-agent/node_modules/undici/lib/web/eventsource/eventsource.js +13 -3
- package/node_modules/@earendil-works/pi-coding-agent/node_modules/undici/lib/web/fetch/index.js +6 -0
- package/node_modules/@earendil-works/pi-coding-agent/node_modules/undici/lib/web/fetch/request.js +2 -3
- package/node_modules/@earendil-works/pi-coding-agent/node_modules/undici/lib/web/fetch/util.js +6 -1
- package/node_modules/@earendil-works/pi-coding-agent/node_modules/undici/lib/web/webidl/index.js +3 -3
- package/node_modules/@earendil-works/pi-coding-agent/node_modules/undici/lib/web/websocket/connection.js +1 -1
- package/node_modules/@earendil-works/pi-coding-agent/node_modules/undici/lib/web/websocket/permessage-deflate.js +5 -0
- package/node_modules/@earendil-works/pi-coding-agent/node_modules/undici/lib/web/websocket/stream/websocketstream.js +8 -10
- package/node_modules/@earendil-works/pi-coding-agent/node_modules/undici/lib/web/websocket/websocket.js +22 -0
- package/node_modules/@earendil-works/pi-coding-agent/node_modules/undici/package.json +3 -3
- package/node_modules/@earendil-works/pi-coding-agent/npm-shrinkwrap.json +4 -4
- package/node_modules/@earendil-works/pi-coding-agent/package.json +1 -1
- package/node_modules/@smithy/core/dist-cjs/submodules/errors/index.js +20 -0
- package/node_modules/@smithy/core/dist-cjs/submodules/retry/index.browser.js +11 -10
- package/node_modules/@smithy/core/dist-cjs/submodules/retry/index.js +11 -10
- package/node_modules/@smithy/core/dist-es/submodules/errors/errors.js +18 -0
- package/node_modules/@smithy/core/dist-es/submodules/errors/index.js +1 -0
- package/node_modules/@smithy/core/dist-es/submodules/retry/service-error-classification/service-error-classification.js +11 -10
- package/node_modules/@smithy/core/dist-types/submodules/errors/errors.d.ts +44 -0
- package/node_modules/@smithy/core/dist-types/submodules/errors/index.d.ts +1 -0
- package/node_modules/@smithy/core/dist-types/submodules/retry/service-error-classification/service-error-classification.d.ts +4 -0
- package/node_modules/@smithy/core/dist-types/ts3.4/submodules/errors/errors.d.ts +44 -0
- package/node_modules/@smithy/core/dist-types/ts3.4/submodules/errors/index.d.ts +1 -0
- package/node_modules/@smithy/core/dist-types/ts3.4/submodules/retry/service-error-classification/service-error-classification.d.ts +4 -0
- package/node_modules/@smithy/core/errors.d.ts +5 -0
- package/node_modules/@smithy/core/errors.js +5 -0
- package/node_modules/@smithy/core/package.json +11 -2
- package/node_modules/@types/node/README.md +3 -3
- package/node_modules/@types/node/assert/strict.d.ts +56 -13
- package/node_modules/@types/node/assert.d.ts +190 -189
- package/node_modules/@types/node/async_hooks.d.ts +43 -151
- package/node_modules/@types/node/buffer.buffer.d.ts +13 -12
- package/node_modules/@types/node/buffer.d.ts +237 -102
- package/node_modules/@types/node/child_process.d.ts +154 -39
- package/node_modules/@types/node/cluster.d.ts +384 -238
- package/node_modules/@types/node/compatibility/disposable.d.ts +14 -0
- package/node_modules/@types/node/compatibility/index.d.ts +9 -0
- package/node_modules/@types/node/compatibility/indexable.d.ts +20 -0
- package/node_modules/@types/node/compatibility/iterators.d.ts +20 -0
- package/node_modules/@types/node/console.d.ts +404 -45
- package/node_modules/@types/node/constants.d.ts +10 -3
- package/node_modules/@types/node/crypto.d.ts +1600 -1007
- package/node_modules/@types/node/dgram.d.ts +81 -133
- package/node_modules/@types/node/diagnostics_channel.d.ts +59 -277
- package/node_modules/@types/node/dns/promises.d.ts +15 -9
- package/node_modules/@types/node/dns.d.ts +183 -136
- package/node_modules/@types/node/domain.d.ts +32 -12
- package/node_modules/@types/node/events.d.ts +696 -728
- package/node_modules/@types/node/fs/promises.d.ts +85 -256
- package/node_modules/@types/node/fs.d.ts +525 -865
- package/node_modules/@types/node/globals.d.ts +34 -12
- package/node_modules/@types/node/globals.typedarray.d.ts +0 -63
- package/node_modules/@types/node/http.d.ts +311 -432
- package/node_modules/@types/node/http2.d.ts +891 -545
- package/node_modules/@types/node/https.d.ts +243 -64
- package/node_modules/@types/node/index.d.ts +7 -25
- package/node_modules/@types/node/inspector.d.ts +58 -70
- package/node_modules/@types/node/inspector.generated.d.ts +411 -765
- package/node_modules/@types/node/module.d.ts +219 -54
- package/node_modules/@types/node/net.d.ts +222 -208
- package/node_modules/@types/node/os.d.ts +49 -41
- package/node_modules/@types/node/package.json +3 -13
- package/node_modules/@types/node/path.d.ts +141 -119
- package/node_modules/@types/node/perf_hooks.d.ts +673 -310
- package/node_modules/@types/node/process.d.ts +205 -389
- package/node_modules/@types/node/punycode.d.ts +31 -3
- package/node_modules/@types/node/querystring.d.ts +16 -3
- package/node_modules/@types/node/readline/promises.d.ts +6 -3
- package/node_modules/@types/node/readline.d.ts +152 -66
- package/node_modules/@types/node/repl.d.ts +109 -101
- package/node_modules/@types/node/sea.d.ts +116 -1
- package/node_modules/@types/node/sqlite.d.ts +68 -486
- package/node_modules/@types/node/stream/consumers.d.ts +15 -91
- package/node_modules/@types/node/stream/promises.d.ts +15 -136
- package/node_modules/@types/node/stream/web.d.ts +456 -179
- package/node_modules/@types/node/stream.d.ts +491 -603
- package/node_modules/@types/node/string_decoder.d.ts +43 -3
- package/node_modules/@types/node/test.d.ts +292 -513
- package/node_modules/@types/node/timers/promises.d.ts +18 -3
- package/node_modules/@types/node/timers.d.ts +141 -3
- package/node_modules/@types/node/tls.d.ts +242 -140
- package/node_modules/@types/node/trace_events.d.ts +97 -3
- package/node_modules/@types/node/ts5.6/buffer.buffer.d.ts +8 -7
- package/node_modules/@types/node/ts5.6/globals.typedarray.d.ts +0 -2
- package/node_modules/@types/node/ts5.6/index.d.ts +6 -26
- package/node_modules/@types/node/tty.d.ts +43 -61
- package/node_modules/@types/node/url.d.ts +584 -156
- package/node_modules/@types/node/util.d.ts +1110 -181
- package/node_modules/@types/node/v8.d.ts +36 -175
- package/node_modules/@types/node/vm.d.ts +209 -292
- package/node_modules/@types/node/wasi.d.ts +74 -24
- package/node_modules/@types/node/web-globals/abortcontroller.d.ts +2 -27
- package/node_modules/@types/node/web-globals/domexception.d.ts +0 -15
- package/node_modules/@types/node/web-globals/events.d.ts +0 -9
- package/node_modules/@types/node/web-globals/fetch.d.ts +0 -14
- package/node_modules/@types/node/web-globals/navigator.d.ts +0 -3
- package/node_modules/@types/node/web-globals/streams.d.ts +0 -93
- package/node_modules/@types/node/worker_threads.d.ts +407 -257
- package/node_modules/@types/node/zlib.d.ts +165 -7
- package/node_modules/hono/dist/cjs/client/client.js +4 -4
- package/node_modules/hono/dist/cjs/hono-base.js +7 -6
- package/node_modules/hono/dist/cjs/jsx/base.js +18 -1
- package/node_modules/hono/dist/cjs/jsx/components.js +25 -26
- package/node_modules/hono/dist/cjs/jsx/context.js +5 -5
- package/node_modules/hono/dist/cjs/jsx/dom/server.js +5 -1
- package/node_modules/hono/dist/cjs/jsx/intrinsic-element/components.js +2 -2
- package/node_modules/hono/dist/cjs/jsx/streaming.js +4 -5
- package/node_modules/hono/dist/client/client.js +4 -4
- package/node_modules/hono/dist/hono-base.js +7 -6
- package/node_modules/hono/dist/jsx/base.js +15 -1
- package/node_modules/hono/dist/jsx/components.js +26 -27
- package/node_modules/hono/dist/jsx/context.js +6 -6
- package/node_modules/hono/dist/jsx/dom/server.js +5 -1
- package/node_modules/hono/dist/jsx/intrinsic-element/components.js +3 -3
- package/node_modules/hono/dist/jsx/streaming.js +5 -6
- package/node_modules/hono/dist/types/context.d.ts +2 -2
- package/node_modules/hono/dist/types/jsx/base.d.ts +3 -0
- package/node_modules/hono/package.json +2 -2
- package/node_modules/jose/dist/types/index.d.ts +1 -2
- package/node_modules/jose/dist/types/jwe/compact/decrypt.d.ts +7 -11
- package/node_modules/jose/dist/types/jwe/compact/encrypt.d.ts +13 -16
- package/node_modules/jose/dist/types/jwe/flattened/decrypt.d.ts +7 -11
- package/node_modules/jose/dist/types/jwe/flattened/encrypt.d.ts +16 -19
- package/node_modules/jose/dist/types/jwe/general/decrypt.d.ts +10 -16
- package/node_modules/jose/dist/types/jwe/general/encrypt.d.ts +18 -21
- package/node_modules/jose/dist/types/jwk/embedded.d.ts +3 -1
- package/node_modules/jose/dist/types/jwk/thumbprint.d.ts +4 -6
- package/node_modules/jose/dist/types/jwks/local.d.ts +5 -4
- package/node_modules/jose/dist/types/jwks/remote.d.ts +20 -21
- package/node_modules/jose/dist/types/jws/compact/sign.d.ts +4 -4
- package/node_modules/jose/dist/types/jws/compact/verify.d.ts +8 -11
- package/node_modules/jose/dist/types/jws/flattened/sign.d.ts +5 -5
- package/node_modules/jose/dist/types/jws/flattened/verify.d.ts +8 -11
- package/node_modules/jose/dist/types/jws/general/sign.d.ts +10 -14
- package/node_modules/jose/dist/types/jws/general/verify.d.ts +11 -17
- package/node_modules/jose/dist/types/jwt/decrypt.d.ts +14 -11
- package/node_modules/jose/dist/types/jwt/encrypt.d.ts +24 -22
- package/node_modules/jose/dist/types/jwt/sign.d.ts +3 -7
- package/node_modules/jose/dist/types/jwt/unsecured.d.ts +2 -6
- package/node_modules/jose/dist/types/jwt/verify.d.ts +13 -6
- package/node_modules/jose/dist/types/key/export.d.ts +6 -6
- package/node_modules/jose/dist/types/key/generate_key_pair.d.ts +9 -14
- package/node_modules/jose/dist/types/key/generate_secret.d.ts +10 -10
- package/node_modules/jose/dist/types/key/import.d.ts +19 -18
- package/node_modules/jose/dist/types/types.d.ts +152 -247
- package/node_modules/jose/dist/types/util/base64url.d.ts +7 -7
- package/node_modules/jose/dist/types/util/decode_jwt.d.ts +6 -1
- package/node_modules/jose/dist/types/util/decode_protected_header.d.ts +4 -3
- package/node_modules/jose/dist/types/util/errors.d.ts +29 -40
- package/node_modules/jose/dist/webapi/jwe/compact/decrypt.js +1 -2
- package/node_modules/jose/dist/webapi/jwe/compact/encrypt.js +9 -26
- package/node_modules/jose/dist/webapi/jwe/flattened/decrypt.js +3 -3
- package/node_modules/jose/dist/webapi/jwe/flattened/encrypt.js +11 -30
- package/node_modules/jose/dist/webapi/jwe/general/decrypt.js +6 -6
- package/node_modules/jose/dist/webapi/jwe/general/encrypt.js +33 -57
- package/node_modules/jose/dist/webapi/jwk/embedded.js +3 -4
- package/node_modules/jose/dist/webapi/jwk/thumbprint.js +3 -6
- package/node_modules/jose/dist/webapi/jwks/local.js +16 -10
- package/node_modules/jose/dist/webapi/jwks/remote.js +2 -2
- package/node_modules/jose/dist/webapi/jws/compact/sign.js +2 -4
- package/node_modules/jose/dist/webapi/jws/compact/verify.js +2 -2
- package/node_modules/jose/dist/webapi/jws/flattened/sign.js +8 -15
- package/node_modules/jose/dist/webapi/jws/flattened/verify.js +4 -14
- package/node_modules/jose/dist/webapi/jws/general/sign.js +4 -11
- package/node_modules/jose/dist/webapi/jws/general/verify.js +5 -7
- package/node_modules/jose/dist/webapi/jwt/decrypt.js +2 -3
- package/node_modules/jose/dist/webapi/jwt/encrypt.js +11 -25
- package/node_modules/jose/dist/webapi/jwt/sign.js +1 -1
- package/node_modules/jose/dist/webapi/jwt/unsecured.js +1 -2
- package/node_modules/jose/dist/webapi/jwt/verify.js +4 -4
- package/node_modules/jose/dist/webapi/key/export.js +12 -16
- package/node_modules/jose/dist/webapi/key/generate_key_pair.js +4 -13
- package/node_modules/jose/dist/webapi/key/generate_secret.js +1 -1
- package/node_modules/jose/dist/webapi/key/import.js +5 -9
- package/node_modules/jose/dist/webapi/lib/asn1.js +2 -4
- package/node_modules/jose/dist/webapi/lib/buffer_utils.js +35 -0
- package/node_modules/jose/dist/webapi/lib/content_encryption.js +21 -29
- package/node_modules/jose/dist/webapi/lib/deflate.js +9 -19
- package/node_modules/jose/dist/webapi/lib/jwe_algorithms.js +0 -4
- package/node_modules/jose/dist/webapi/lib/jwe_decrypt.js +21 -54
- package/node_modules/jose/dist/webapi/lib/jwe_encrypt.js +26 -59
- package/node_modules/jose/dist/webapi/lib/jws_sign.js +29 -43
- package/node_modules/jose/dist/webapi/lib/jws_verify.js +37 -45
- package/node_modules/jose/dist/webapi/lib/jwt_claims_set.js +1 -1
- package/node_modules/jose/dist/webapi/lib/key.js +119 -59
- package/node_modules/jose/dist/webapi/lib/key_management.js +45 -80
- package/node_modules/jose/dist/webapi/lib/{options.js → validate.js} +64 -3
- package/node_modules/jose/dist/webapi/util/base64url.js +5 -19
- package/node_modules/jose/dist/webapi/util/decode_jwt.js +1 -1
- package/node_modules/jose/dist/webapi/util/decode_protected_header.js +1 -1
- package/node_modules/jose/package.json +1 -1
- package/node_modules/undici/lib/dispatcher/balanced-pool.js +4 -2
- package/node_modules/undici/lib/dispatcher/client-h1.js +12 -4
- package/node_modules/undici/lib/dispatcher/client-h2.js +70 -14
- package/node_modules/undici/lib/dispatcher/client.js +6 -2
- package/node_modules/undici/lib/handler/cache-handler.js +21 -5
- package/node_modules/undici/lib/handler/retry-handler.js +42 -7
- package/node_modules/undici/lib/interceptor/cache.js +20 -1
- package/node_modules/undici/lib/interceptor/decompress.js +146 -14
- package/node_modules/undici/lib/interceptor/dump.js +10 -23
- package/node_modules/undici/lib/web/eventsource/eventsource-stream.js +245 -150
- package/node_modules/undici/lib/web/websocket/connection.js +1 -1
- package/node_modules/undici/lib/web/websocket/permessage-deflate.js +5 -0
- package/node_modules/undici/lib/web/websocket/stream/websocketstream.js +8 -10
- package/node_modules/undici/package.json +1 -1
- package/node_modules/undici/types/interceptors.d.ts +2 -0
- package/node_modules/undici-types/agent.d.ts +13 -12
- package/node_modules/undici-types/api.d.ts +26 -26
- package/node_modules/undici-types/balanced-pool.d.ts +12 -13
- package/node_modules/undici-types/client.d.ts +34 -55
- package/node_modules/undici-types/connector.d.ts +2 -4
- package/node_modules/undici-types/cookies.d.ts +0 -2
- package/node_modules/undici-types/diagnostics-channel.d.ts +10 -18
- package/node_modules/undici-types/dispatcher.d.ts +137 -134
- package/node_modules/undici-types/env-http-proxy-agent.d.ts +3 -4
- package/node_modules/undici-types/errors.d.ts +54 -82
- package/node_modules/undici-types/eventsource.d.ts +4 -9
- package/node_modules/undici-types/fetch.d.ts +24 -46
- package/node_modules/undici-types/file.d.ts +39 -0
- package/node_modules/undici-types/filereader.d.ts +54 -0
- package/node_modules/undici-types/formdata.d.ts +7 -7
- package/node_modules/undici-types/global-dispatcher.d.ts +4 -4
- package/node_modules/undici-types/global-origin.d.ts +5 -5
- package/node_modules/undici-types/handlers.d.ts +9 -8
- package/node_modules/undici-types/header.d.ts +1 -162
- package/node_modules/undici-types/index.d.ts +47 -69
- package/node_modules/undici-types/interceptors.d.ts +9 -72
- package/node_modules/undici-types/mock-agent.d.ts +18 -36
- package/node_modules/undici-types/mock-client.d.ts +4 -6
- package/node_modules/undici-types/mock-errors.d.ts +3 -3
- package/node_modules/undici-types/mock-interceptor.d.ts +20 -21
- package/node_modules/undici-types/mock-pool.d.ts +4 -6
- package/node_modules/undici-types/package.json +1 -1
- package/node_modules/undici-types/patch.d.ts +4 -0
- package/node_modules/undici-types/pool-stats.d.ts +8 -8
- package/node_modules/undici-types/pool.d.ts +14 -14
- package/node_modules/undici-types/proxy-agent.d.ts +6 -7
- package/node_modules/undici-types/readable.d.ts +16 -19
- package/node_modules/undici-types/retry-agent.d.ts +1 -1
- package/node_modules/undici-types/retry-handler.d.ts +10 -19
- package/node_modules/undici-types/util.d.ts +3 -3
- package/node_modules/undici-types/webidl.d.ts +30 -148
- package/node_modules/undici-types/websocket.d.ts +10 -48
- package/node_modules/zod/compile.cjs +19 -0
- package/node_modules/zod/index.cjs +19 -0
- package/node_modules/zod/locales/index.cjs +19 -0
- package/node_modules/zod/mini/index.cjs +19 -0
- package/node_modules/zod/package.json +8 -7
- package/node_modules/zod/src/v3/helpers/errorUtil.ts +1 -1
- package/node_modules/zod/src/v4/classic/checks.ts +0 -1
- package/node_modules/zod/src/v4/classic/external.ts +2 -0
- package/node_modules/zod/src/v4/classic/from-json-schema.ts +248 -25
- package/node_modules/zod/src/v4/classic/schemas.ts +255 -164
- package/node_modules/zod/src/v4/classic/tests/assignability.test.ts +59 -9
- package/node_modules/zod/src/v4/classic/tests/bigint.test.ts +6 -0
- package/node_modules/zod/src/v4/classic/tests/continuability.test.ts +2 -2
- package/node_modules/zod/src/v4/classic/tests/cyclic-data.test.ts +274 -0
- package/node_modules/zod/src/v4/classic/tests/discriminated-unions.test.ts +112 -6
- package/node_modules/zod/src/v4/classic/tests/enum.test.ts +9 -0
- package/node_modules/zod/src/v4/classic/tests/error.test.ts +130 -1
- package/node_modules/zod/src/v4/classic/tests/firstparty.test.ts +4 -0
- package/node_modules/zod/src/v4/classic/tests/from-json-schema.test.ts +157 -0
- package/node_modules/zod/src/v4/classic/tests/iban.test.ts +81 -0
- package/node_modules/zod/src/v4/classic/tests/instance-footprint.test.ts +18 -2
- package/node_modules/zod/src/v4/classic/tests/instanceof.test.ts +27 -7
- package/node_modules/zod/src/v4/classic/tests/issue-schema.test.ts +88 -56
- package/node_modules/zod/src/v4/classic/tests/object.test.ts +56 -0
- package/node_modules/zod/src/v4/classic/tests/optin-ladder.test.ts +3 -2
- package/node_modules/zod/src/v4/classic/tests/prefault.test.ts +70 -0
- package/node_modules/zod/src/v4/classic/tests/properties.test.ts +225 -0
- package/node_modules/zod/src/v4/classic/tests/recursive-types.test.ts +46 -1
- 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 +25 -0
- package/node_modules/zod/src/v4/classic/tests/template-literal.test.ts +33 -1
- package/node_modules/zod/src/v4/classic/tests/to-json-schema.test.ts +147 -3
- package/node_modules/zod/src/v4/classic/tests/validate.test.ts +569 -0
- package/node_modules/zod/src/v4/core/api.ts +30 -6
- package/node_modules/zod/src/v4/core/checks.ts +1 -101
- package/node_modules/zod/src/v4/core/compile.ts +202 -88
- package/node_modules/zod/src/v4/core/doc.ts +6 -2
- package/node_modules/zod/src/v4/core/errors.ts +3 -6
- package/node_modules/zod/src/v4/core/json-schema-generator.ts +2 -2
- package/node_modules/zod/src/v4/core/json-schema-processors.ts +226 -68
- package/node_modules/zod/src/v4/core/memoizer.ts +78 -28
- package/node_modules/zod/src/v4/core/parse.ts +37 -16
- package/node_modules/zod/src/v4/core/regexes.ts +10 -4
- package/node_modules/zod/src/v4/core/schemas.ts +359 -122
- package/node_modules/zod/src/v4/core/tests/cached.test.ts +54 -0
- package/node_modules/zod/src/v4/core/tests/compile-generative.test.ts +445 -0
- package/node_modules/zod/src/v4/core/tests/compile.test.ts +222 -2
- package/node_modules/zod/src/v4/core/tests/email-regex.test.ts +140 -0
- package/node_modules/zod/src/v4/core/tests/locales/tg.test.ts +85 -0
- package/node_modules/zod/src/v4/core/tests/polyfill-collision.test.ts +46 -0
- package/node_modules/zod/src/v4/core/to-json-schema.ts +10 -8
- package/node_modules/zod/src/v4/core/util.ts +222 -147
- package/node_modules/zod/src/v4/core/versions.ts +2 -2
- package/node_modules/zod/src/v4/core/visit.ts +11 -0
- package/node_modules/zod/src/v4/locales/ar.ts +1 -0
- package/node_modules/zod/src/v4/locales/az.ts +1 -0
- package/node_modules/zod/src/v4/locales/be.ts +1 -0
- package/node_modules/zod/src/v4/locales/bg.ts +1 -0
- package/node_modules/zod/src/v4/locales/bn.ts +1 -0
- package/node_modules/zod/src/v4/locales/ca.ts +1 -0
- package/node_modules/zod/src/v4/locales/ckb.ts +1 -0
- package/node_modules/zod/src/v4/locales/cs.ts +1 -0
- package/node_modules/zod/src/v4/locales/da.ts +1 -0
- package/node_modules/zod/src/v4/locales/de.ts +1 -0
- package/node_modules/zod/src/v4/locales/el.ts +1 -0
- package/node_modules/zod/src/v4/locales/en.ts +1 -0
- package/node_modules/zod/src/v4/locales/eo.ts +1 -0
- package/node_modules/zod/src/v4/locales/es.ts +1 -0
- package/node_modules/zod/src/v4/locales/fa.ts +1 -0
- package/node_modules/zod/src/v4/locales/fi.ts +1 -0
- package/node_modules/zod/src/v4/locales/fr-CA.ts +1 -0
- package/node_modules/zod/src/v4/locales/fr.ts +1 -0
- package/node_modules/zod/src/v4/locales/gu.ts +1 -0
- package/node_modules/zod/src/v4/locales/he.ts +1 -0
- package/node_modules/zod/src/v4/locales/hi.ts +1 -0
- package/node_modules/zod/src/v4/locales/hr.ts +1 -0
- package/node_modules/zod/src/v4/locales/hu.ts +1 -0
- package/node_modules/zod/src/v4/locales/hy.ts +1 -0
- package/node_modules/zod/src/v4/locales/id.ts +1 -0
- package/node_modules/zod/src/v4/locales/index.ts +1 -0
- package/node_modules/zod/src/v4/locales/is.ts +1 -0
- package/node_modules/zod/src/v4/locales/it.ts +1 -0
- package/node_modules/zod/src/v4/locales/ja.ts +1 -0
- package/node_modules/zod/src/v4/locales/ka.ts +1 -0
- package/node_modules/zod/src/v4/locales/km.ts +1 -0
- package/node_modules/zod/src/v4/locales/kn.ts +1 -0
- package/node_modules/zod/src/v4/locales/ko.ts +1 -0
- package/node_modules/zod/src/v4/locales/lt.ts +1 -0
- package/node_modules/zod/src/v4/locales/mk.ts +1 -0
- package/node_modules/zod/src/v4/locales/ms.ts +1 -0
- package/node_modules/zod/src/v4/locales/ne.ts +1 -0
- package/node_modules/zod/src/v4/locales/nl.ts +1 -0
- package/node_modules/zod/src/v4/locales/nn.ts +1 -0
- package/node_modules/zod/src/v4/locales/no.ts +1 -0
- package/node_modules/zod/src/v4/locales/ota.ts +1 -0
- package/node_modules/zod/src/v4/locales/pl.ts +1 -0
- package/node_modules/zod/src/v4/locales/ps.ts +1 -0
- package/node_modules/zod/src/v4/locales/pt-BR.ts +1 -0
- package/node_modules/zod/src/v4/locales/pt.ts +1 -0
- package/node_modules/zod/src/v4/locales/ro.ts +1 -0
- package/node_modules/zod/src/v4/locales/ru.ts +1 -0
- package/node_modules/zod/src/v4/locales/sk.ts +1 -0
- package/node_modules/zod/src/v4/locales/sl.ts +1 -0
- package/node_modules/zod/src/v4/locales/sv.ts +1 -0
- package/node_modules/zod/src/v4/locales/ta.ts +1 -0
- package/node_modules/zod/src/v4/locales/tg.ts +134 -0
- package/node_modules/zod/src/v4/locales/th.ts +1 -0
- package/node_modules/zod/src/v4/locales/tk.ts +1 -0
- package/node_modules/zod/src/v4/locales/tr.ts +1 -0
- package/node_modules/zod/src/v4/locales/uk.ts +1 -0
- package/node_modules/zod/src/v4/locales/ur.ts +1 -0
- package/node_modules/zod/src/v4/locales/uz.ts +1 -0
- package/node_modules/zod/src/v4/locales/vi.ts +1 -0
- package/node_modules/zod/src/v4/locales/yo.ts +1 -0
- package/node_modules/zod/src/v4/locales/zh-CN.ts +1 -0
- package/node_modules/zod/src/v4/locales/zh-TW.ts +1 -0
- package/node_modules/zod/src/v4/mini/checks.ts +0 -1
- package/node_modules/zod/src/v4/mini/external.ts +2 -0
- package/node_modules/zod/src/v4/mini/schemas.ts +39 -3
- package/node_modules/zod/src/v4/mini/tests/checks.test.ts +1 -1
- package/node_modules/zod/src/v4/mini/tests/computed.test.ts +11 -17
- package/node_modules/zod/src/v4/mini/tests/index.test.ts +30 -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 +16 -0
- package/node_modules/zod/v3/ZodError.cjs +19 -0
- 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 +19 -0
- package/node_modules/zod/v4/classic/checks.cjs +20 -2
- 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/deep-partial.cjs +19 -0
- package/node_modules/zod/v4/classic/errors.cjs +19 -0
- package/node_modules/zod/v4/classic/external.cjs +22 -1
- package/node_modules/zod/v4/classic/external.d.cts +1 -1
- package/node_modules/zod/v4/classic/external.d.ts +1 -1
- package/node_modules/zod/v4/classic/external.js +1 -1
- package/node_modules/zod/v4/classic/from-json-schema.cjs +264 -24
- package/node_modules/zod/v4/classic/from-json-schema.js +245 -24
- package/node_modules/zod/v4/classic/in-out.cjs +19 -0
- package/node_modules/zod/v4/classic/index.cjs +19 -0
- package/node_modules/zod/v4/classic/iso.cjs +19 -0
- package/node_modules/zod/v4/classic/parse.cjs +19 -0
- package/node_modules/zod/v4/classic/schemas.cjs +100 -31
- package/node_modules/zod/v4/classic/schemas.d.cts +17 -1
- package/node_modules/zod/v4/classic/schemas.d.ts +17 -1
- package/node_modules/zod/v4/classic/schemas.js +77 -29
- package/node_modules/zod/v4/core/api.cjs +37 -2
- package/node_modules/zod/v4/core/api.d.cts +6 -4
- package/node_modules/zod/v4/core/api.d.ts +6 -4
- package/node_modules/zod/v4/core/api.js +17 -2
- package/node_modules/zod/v4/core/checks.cjs +19 -96
- package/node_modules/zod/v4/core/checks.d.cts +1 -1
- package/node_modules/zod/v4/core/checks.d.ts +1 -1
- package/node_modules/zod/v4/core/checks.js +0 -96
- package/node_modules/zod/v4/core/compile.cjs +172 -72
- package/node_modules/zod/v4/core/compile.d.cts +18 -4
- package/node_modules/zod/v4/core/compile.d.ts +18 -4
- package/node_modules/zod/v4/core/compile.js +153 -73
- package/node_modules/zod/v4/core/core.cjs +19 -0
- package/node_modules/zod/v4/core/doc.cjs +26 -2
- package/node_modules/zod/v4/core/doc.js +7 -2
- package/node_modules/zod/v4/core/errors.cjs +21 -5
- package/node_modules/zod/v4/core/errors.js +2 -5
- package/node_modules/zod/v4/core/index.cjs +19 -0
- package/node_modules/zod/v4/core/json-schema-generator.cjs +20 -1
- package/node_modules/zod/v4/core/json-schema-generator.js +2 -2
- package/node_modules/zod/v4/core/json-schema-processors.cjs +215 -63
- package/node_modules/zod/v4/core/json-schema-processors.d.cts +17 -0
- package/node_modules/zod/v4/core/json-schema-processors.d.ts +17 -0
- package/node_modules/zod/v4/core/json-schema-processors.js +195 -64
- package/node_modules/zod/v4/core/json-schema.cjs +19 -0
- package/node_modules/zod/v4/core/memoizer.cjs +114 -23
- package/node_modules/zod/v4/core/memoizer.js +72 -23
- package/node_modules/zod/v4/core/parse.cjs +56 -16
- package/node_modules/zod/v4/core/parse.js +37 -16
- package/node_modules/zod/v4/core/regexes.cjs +29 -6
- package/node_modules/zod/v4/core/regexes.d.cts +2 -0
- package/node_modules/zod/v4/core/regexes.d.ts +2 -0
- package/node_modules/zod/v4/core/regexes.js +8 -4
- package/node_modules/zod/v4/core/registries.cjs +19 -0
- package/node_modules/zod/v4/core/schemas.cjs +331 -103
- package/node_modules/zod/v4/core/schemas.d.cts +43 -8
- package/node_modules/zod/v4/core/schemas.d.ts +43 -8
- package/node_modules/zod/v4/core/schemas.js +310 -102
- package/node_modules/zod/v4/core/standard-schema.cjs +19 -0
- package/node_modules/zod/v4/core/to-json-schema.cjs +29 -7
- package/node_modules/zod/v4/core/to-json-schema.d.cts +7 -3
- package/node_modules/zod/v4/core/to-json-schema.d.ts +7 -3
- package/node_modules/zod/v4/core/to-json-schema.js +8 -7
- package/node_modules/zod/v4/core/util.cjs +181 -143
- package/node_modules/zod/v4/core/util.d.cts +25 -4
- package/node_modules/zod/v4/core/util.d.ts +25 -4
- package/node_modules/zod/v4/core/util.js +160 -143
- 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 +31 -0
- package/node_modules/zod/v4/core/visit.js +12 -0
- package/node_modules/zod/v4/index.cjs +19 -0
- package/node_modules/zod/v4/locales/ar.cjs +1 -0
- package/node_modules/zod/v4/locales/ar.js +1 -0
- package/node_modules/zod/v4/locales/az.cjs +1 -0
- package/node_modules/zod/v4/locales/az.js +1 -0
- package/node_modules/zod/v4/locales/be.cjs +1 -0
- package/node_modules/zod/v4/locales/be.js +1 -0
- package/node_modules/zod/v4/locales/bg.cjs +1 -0
- package/node_modules/zod/v4/locales/bg.js +1 -0
- package/node_modules/zod/v4/locales/bn.cjs +1 -0
- package/node_modules/zod/v4/locales/bn.js +1 -0
- package/node_modules/zod/v4/locales/ca.cjs +1 -0
- package/node_modules/zod/v4/locales/ca.js +1 -0
- package/node_modules/zod/v4/locales/ckb.cjs +1 -0
- package/node_modules/zod/v4/locales/ckb.js +1 -0
- package/node_modules/zod/v4/locales/cs.cjs +1 -0
- package/node_modules/zod/v4/locales/cs.js +1 -0
- package/node_modules/zod/v4/locales/da.cjs +1 -0
- package/node_modules/zod/v4/locales/da.js +1 -0
- package/node_modules/zod/v4/locales/de.cjs +1 -0
- package/node_modules/zod/v4/locales/de.js +1 -0
- package/node_modules/zod/v4/locales/el.cjs +1 -0
- package/node_modules/zod/v4/locales/el.js +1 -0
- package/node_modules/zod/v4/locales/en.cjs +1 -0
- package/node_modules/zod/v4/locales/en.js +1 -0
- package/node_modules/zod/v4/locales/eo.cjs +1 -0
- package/node_modules/zod/v4/locales/eo.js +1 -0
- package/node_modules/zod/v4/locales/es.cjs +1 -0
- package/node_modules/zod/v4/locales/es.js +1 -0
- package/node_modules/zod/v4/locales/fa.cjs +1 -0
- package/node_modules/zod/v4/locales/fa.js +1 -0
- package/node_modules/zod/v4/locales/fi.cjs +1 -0
- package/node_modules/zod/v4/locales/fi.js +1 -0
- package/node_modules/zod/v4/locales/fr-CA.cjs +1 -0
- package/node_modules/zod/v4/locales/fr-CA.js +1 -0
- package/node_modules/zod/v4/locales/fr.cjs +1 -0
- package/node_modules/zod/v4/locales/fr.js +1 -0
- package/node_modules/zod/v4/locales/gu.cjs +1 -0
- package/node_modules/zod/v4/locales/gu.js +1 -0
- package/node_modules/zod/v4/locales/he.cjs +1 -0
- package/node_modules/zod/v4/locales/he.js +1 -0
- package/node_modules/zod/v4/locales/hi.cjs +1 -0
- package/node_modules/zod/v4/locales/hi.js +1 -0
- package/node_modules/zod/v4/locales/hr.cjs +1 -0
- package/node_modules/zod/v4/locales/hr.js +1 -0
- package/node_modules/zod/v4/locales/hu.cjs +1 -0
- package/node_modules/zod/v4/locales/hu.js +1 -0
- package/node_modules/zod/v4/locales/hy.cjs +1 -0
- package/node_modules/zod/v4/locales/hy.js +1 -0
- package/node_modules/zod/v4/locales/id.cjs +1 -0
- package/node_modules/zod/v4/locales/id.js +1 -0
- package/node_modules/zod/v4/locales/index.cjs +22 -1
- package/node_modules/zod/v4/locales/index.d.cts +1 -0
- package/node_modules/zod/v4/locales/index.d.ts +1 -0
- package/node_modules/zod/v4/locales/index.js +1 -0
- package/node_modules/zod/v4/locales/is.cjs +1 -0
- package/node_modules/zod/v4/locales/is.js +1 -0
- package/node_modules/zod/v4/locales/it.cjs +1 -0
- package/node_modules/zod/v4/locales/it.js +1 -0
- package/node_modules/zod/v4/locales/ja.cjs +1 -0
- package/node_modules/zod/v4/locales/ja.js +1 -0
- package/node_modules/zod/v4/locales/ka.cjs +1 -0
- package/node_modules/zod/v4/locales/ka.js +1 -0
- package/node_modules/zod/v4/locales/km.cjs +1 -0
- package/node_modules/zod/v4/locales/km.js +1 -0
- package/node_modules/zod/v4/locales/kn.cjs +1 -0
- package/node_modules/zod/v4/locales/kn.js +1 -0
- package/node_modules/zod/v4/locales/ko.cjs +1 -0
- package/node_modules/zod/v4/locales/ko.js +1 -0
- package/node_modules/zod/v4/locales/lt.cjs +1 -0
- package/node_modules/zod/v4/locales/lt.js +1 -0
- package/node_modules/zod/v4/locales/mk.cjs +1 -0
- package/node_modules/zod/v4/locales/mk.js +1 -0
- package/node_modules/zod/v4/locales/ms.cjs +1 -0
- package/node_modules/zod/v4/locales/ms.js +1 -0
- package/node_modules/zod/v4/locales/ne.cjs +1 -0
- package/node_modules/zod/v4/locales/ne.js +1 -0
- package/node_modules/zod/v4/locales/nl.cjs +1 -0
- package/node_modules/zod/v4/locales/nl.js +1 -0
- package/node_modules/zod/v4/locales/nn.cjs +1 -0
- package/node_modules/zod/v4/locales/nn.js +1 -0
- package/node_modules/zod/v4/locales/no.cjs +1 -0
- package/node_modules/zod/v4/locales/no.js +1 -0
- package/node_modules/zod/v4/locales/ota.cjs +1 -0
- package/node_modules/zod/v4/locales/ota.js +1 -0
- package/node_modules/zod/v4/locales/pl.cjs +1 -0
- package/node_modules/zod/v4/locales/pl.js +1 -0
- package/node_modules/zod/v4/locales/ps.cjs +1 -0
- package/node_modules/zod/v4/locales/ps.js +1 -0
- package/node_modules/zod/v4/locales/pt-BR.cjs +1 -0
- package/node_modules/zod/v4/locales/pt-BR.js +1 -0
- package/node_modules/zod/v4/locales/pt.cjs +1 -0
- package/node_modules/zod/v4/locales/pt.js +1 -0
- package/node_modules/zod/v4/locales/ro.cjs +1 -0
- package/node_modules/zod/v4/locales/ro.js +1 -0
- package/node_modules/zod/v4/locales/ru.cjs +1 -0
- package/node_modules/zod/v4/locales/ru.js +1 -0
- package/node_modules/zod/v4/locales/sk.cjs +1 -0
- package/node_modules/zod/v4/locales/sk.js +1 -0
- package/node_modules/zod/v4/locales/sl.cjs +1 -0
- package/node_modules/zod/v4/locales/sl.js +1 -0
- package/node_modules/zod/v4/locales/sv.cjs +1 -0
- package/node_modules/zod/v4/locales/sv.js +1 -0
- package/node_modules/zod/v4/locales/ta.cjs +1 -0
- package/node_modules/zod/v4/locales/ta.js +1 -0
- package/node_modules/zod/v4/locales/tg.cjs +143 -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 +116 -0
- package/node_modules/zod/v4/locales/th.cjs +1 -0
- package/node_modules/zod/v4/locales/th.js +1 -0
- package/node_modules/zod/v4/locales/tk.cjs +1 -0
- package/node_modules/zod/v4/locales/tk.js +1 -0
- package/node_modules/zod/v4/locales/tr.cjs +1 -0
- package/node_modules/zod/v4/locales/tr.js +1 -0
- package/node_modules/zod/v4/locales/uk.cjs +1 -0
- package/node_modules/zod/v4/locales/uk.js +1 -0
- package/node_modules/zod/v4/locales/ur.cjs +1 -0
- package/node_modules/zod/v4/locales/ur.js +1 -0
- package/node_modules/zod/v4/locales/uz.cjs +1 -0
- package/node_modules/zod/v4/locales/uz.js +1 -0
- package/node_modules/zod/v4/locales/vi.cjs +1 -0
- package/node_modules/zod/v4/locales/vi.js +1 -0
- package/node_modules/zod/v4/locales/yo.cjs +1 -0
- package/node_modules/zod/v4/locales/yo.js +1 -0
- package/node_modules/zod/v4/locales/zh-CN.cjs +1 -0
- package/node_modules/zod/v4/locales/zh-CN.js +1 -0
- package/node_modules/zod/v4/locales/zh-TW.cjs +1 -0
- package/node_modules/zod/v4/locales/zh-TW.js +1 -0
- package/node_modules/zod/v4/mini/checks.cjs +20 -2
- 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 +19 -0
- package/node_modules/zod/v4/mini/external.cjs +22 -1
- package/node_modules/zod/v4/mini/external.d.cts +1 -1
- package/node_modules/zod/v4/mini/external.d.ts +1 -1
- package/node_modules/zod/v4/mini/external.js +1 -1
- package/node_modules/zod/v4/mini/in-out.cjs +19 -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 +19 -0
- package/node_modules/zod/v4/mini/schemas.cjs +42 -4
- package/node_modules/zod/v4/mini/schemas.d.cts +9 -1
- package/node_modules/zod/v4/mini/schemas.d.ts +9 -1
- package/node_modules/zod/v4/mini/schemas.js +19 -2
- package/node_modules/zod/v4-mini/index.cjs +19 -0
- package/package.json +2 -2
- package/slingshot/index.js +151 -149
- package/node_modules/@types/node/ffi.d.ts +0 -486
- package/node_modules/@types/node/inspector/promises.d.ts +0 -35
- package/node_modules/@types/node/path/posix.d.ts +0 -8
- package/node_modules/@types/node/path/win32.d.ts +0 -8
- package/node_modules/@types/node/quic.d.ts +0 -2151
- package/node_modules/@types/node/stream/iter.d.ts +0 -452
- package/node_modules/@types/node/test/reporters.d.ts +0 -59
- package/node_modules/@types/node/ts5.6/compatibility/float16array.d.ts +0 -71
- package/node_modules/@types/node/ts5.7/compatibility/float16array.d.ts +0 -72
- package/node_modules/@types/node/ts5.7/index.d.ts +0 -118
- package/node_modules/@types/node/util/types.d.ts +0 -558
- package/node_modules/@types/node/vfs.d.ts +0 -210
- package/node_modules/@types/node/web-globals/blob.d.ts +0 -23
- package/node_modules/@types/node/web-globals/console.d.ts +0 -9
- package/node_modules/@types/node/web-globals/crypto.d.ts +0 -39
- package/node_modules/@types/node/web-globals/encoding.d.ts +0 -11
- package/node_modules/@types/node/web-globals/importmeta.d.ts +0 -13
- package/node_modules/@types/node/web-globals/messaging.d.ts +0 -23
- package/node_modules/@types/node/web-globals/performance.d.ts +0 -45
- package/node_modules/@types/node/web-globals/timers.d.ts +0 -44
- package/node_modules/@types/node/web-globals/url.d.ts +0 -24
- package/node_modules/@types/node/zlib/iter.d.ts +0 -131
- package/node_modules/jose/dist/webapi/lib/base64.js +0 -20
- package/node_modules/jose/dist/webapi/lib/crypto_key.js +0 -27
- package/node_modules/jose/dist/webapi/lib/helpers.js +0 -45
- package/node_modules/jose/dist/webapi/lib/invalid_key_input.js +0 -12
- package/node_modules/jose/dist/webapi/lib/is_key_like.js +0 -19
- package/node_modules/jose/dist/webapi/lib/jwk_metadata.js +0 -19
- package/node_modules/jose/dist/webapi/lib/jwk_to_key.js +0 -10
- package/node_modules/jose/dist/webapi/lib/key_options.js +0 -8
- package/node_modules/jose/dist/webapi/lib/signing.js +0 -22
- package/node_modules/jose/dist/webapi/lib/type_checks.js +0 -30
- package/node_modules/undici-types/cache-interceptor.d.ts +0 -179
- package/node_modules/undici-types/client-stats.d.ts +0 -15
- package/node_modules/undici-types/dispatcher1-wrapper.d.ts +0 -7
- package/node_modules/undici-types/h2c-client.d.ts +0 -73
- package/node_modules/undici-types/mock-call-history.d.ts +0 -111
- package/node_modules/undici-types/round-robin-pool.d.ts +0 -39
- package/node_modules/undici-types/snapshot-agent.d.ts +0 -113
- package/node_modules/undici-types/socks5-proxy-agent.d.ts +0 -25
- package/node_modules/undici-types/utility.d.ts +0 -7
|
@@ -1,6 +1,76 @@
|
|
|
1
1
|
import { expect, expectTypeOf, test } from "vitest";
|
|
2
2
|
import { z } from "zod/v4";
|
|
3
3
|
|
|
4
|
+
test.each([false, true])("undefined prefault preserves object keys (jitless: %s)", async (jitless) => {
|
|
5
|
+
const previous = z.config().jitless;
|
|
6
|
+
z.config({ jitless });
|
|
7
|
+
try {
|
|
8
|
+
let calls = 0;
|
|
9
|
+
const field = z.union([z.string(), z.undefined()]).prefault(() => {
|
|
10
|
+
calls++;
|
|
11
|
+
return undefined;
|
|
12
|
+
});
|
|
13
|
+
const schema = z.object({ a: field });
|
|
14
|
+
expectTypeOf<z.output<typeof field>>().toEqualTypeOf<string | undefined>();
|
|
15
|
+
expectTypeOf<z.input<typeof schema>>().toEqualTypeOf<{ a?: string | undefined }>();
|
|
16
|
+
expectTypeOf<z.output<typeof schema>>().toEqualTypeOf<{ a: string | undefined }>();
|
|
17
|
+
expect(schema.parse({})).toStrictEqual({ a: undefined });
|
|
18
|
+
expect(calls).toBe(1);
|
|
19
|
+
expect(schema.parse({ a: undefined })).toStrictEqual({ a: undefined });
|
|
20
|
+
expect(calls).toBe(2);
|
|
21
|
+
expect(await schema.parseAsync({})).toStrictEqual({ a: undefined });
|
|
22
|
+
expect(calls).toBe(3);
|
|
23
|
+
expect(schema.parse({ a: "value" })).toStrictEqual({ a: "value" });
|
|
24
|
+
expect(schema.safeParse({ a: 123 }).success).toBe(false);
|
|
25
|
+
expect(calls).toBe(3);
|
|
26
|
+
|
|
27
|
+
const literal = z.prefault(z.string().optional(), undefined);
|
|
28
|
+
expect(z.core.compileFn(z.object({ a: literal }))({})).toStrictEqual({ a: undefined });
|
|
29
|
+
for (const wrapped of [literal, literal.readonly(), literal.nullable(), z.lazy(() => literal)]) {
|
|
30
|
+
expect(z.object({ a: wrapped }).parse({})).toStrictEqual({ a: undefined });
|
|
31
|
+
}
|
|
32
|
+
expect(z.object({ a: literal.optional() }).parse({})).toStrictEqual({});
|
|
33
|
+
expect(z.object({ a: literal.optional() }).parse({ a: undefined })).toStrictEqual({ a: undefined });
|
|
34
|
+
expect(z.tuple([literal]).parse([])).toStrictEqual([undefined]);
|
|
35
|
+
} finally {
|
|
36
|
+
z.config({ jitless: previous });
|
|
37
|
+
}
|
|
38
|
+
});
|
|
39
|
+
|
|
40
|
+
test("prefault preserves transformed undefined output", async () => {
|
|
41
|
+
const field = z
|
|
42
|
+
.string()
|
|
43
|
+
.transform(() => undefined)
|
|
44
|
+
.prefault("fallback");
|
|
45
|
+
expectTypeOf<z.output<typeof field>>().toEqualTypeOf<undefined>();
|
|
46
|
+
expect(field.parse(undefined)).toBeUndefined();
|
|
47
|
+
const schema = z.object({ a: field, optional: z.string().optional() });
|
|
48
|
+
expectTypeOf<z.output<typeof schema>>().toEqualTypeOf<{ a: undefined; optional?: string | undefined }>();
|
|
49
|
+
expect(schema.parse({})).toStrictEqual({ a: undefined });
|
|
50
|
+
expect(z.core.compileFn(schema)({})).toStrictEqual({ a: undefined });
|
|
51
|
+
expect(z.compile(schema).parse({})).toStrictEqual({ a: undefined });
|
|
52
|
+
expect(
|
|
53
|
+
await z
|
|
54
|
+
.object({
|
|
55
|
+
a: z
|
|
56
|
+
.string()
|
|
57
|
+
.transform(async () => undefined)
|
|
58
|
+
.prefault("fallback"),
|
|
59
|
+
})
|
|
60
|
+
.parseAsync({})
|
|
61
|
+
).toStrictEqual({ a: undefined });
|
|
62
|
+
expect(
|
|
63
|
+
z
|
|
64
|
+
.object({
|
|
65
|
+
a: z
|
|
66
|
+
.string()
|
|
67
|
+
.prefault("fallback")
|
|
68
|
+
.transform(() => undefined),
|
|
69
|
+
})
|
|
70
|
+
.parse({})
|
|
71
|
+
).toStrictEqual({ a: undefined });
|
|
72
|
+
});
|
|
73
|
+
|
|
4
74
|
test("basic prefault", () => {
|
|
5
75
|
const a = z.prefault(z.string().trim(), " default ");
|
|
6
76
|
expect(a).toBeInstanceOf(z.ZodPrefault);
|
|
@@ -0,0 +1,225 @@
|
|
|
1
|
+
import { expect, expectTypeOf, test } from "vitest";
|
|
2
|
+
import * as z from "zod/v4";
|
|
3
|
+
|
|
4
|
+
test("z.properties is a schema", () => {
|
|
5
|
+
const p = z.properties({ a: z.literal("x"), b: z.literal("y") });
|
|
6
|
+
|
|
7
|
+
expectTypeOf<z.infer<typeof p>>().toEqualTypeOf<{ a: "x"; b: "y" }>();
|
|
8
|
+
|
|
9
|
+
// asserts in place: the parse returns the input identity, extra keys pass
|
|
10
|
+
const ok = { a: "x", b: "y", extra: 1 };
|
|
11
|
+
expect(p.parse(ok)).toBe(ok);
|
|
12
|
+
|
|
13
|
+
// every failing key reports
|
|
14
|
+
expect(p.safeParse({ a: "!", b: "!" }).error!.issues.map((i) => i.path)).toEqual([["a"], ["b"]]);
|
|
15
|
+
|
|
16
|
+
// as a schema it is the type gate and infers an object shape, so a primitive is a type error
|
|
17
|
+
for (const input of [null, undefined, 5, "abc"]) {
|
|
18
|
+
expect(p.safeParse(input).error!.issues.map((i) => [i.code, i.path])).toEqual([["invalid_type", []]]);
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
// as a check the base already typed the value, so the properties are asserted on whatever it produced — a string's length, as z.property() does
|
|
22
|
+
const long = z.string().check(...z.properties({ length: z.number().min(3) }));
|
|
23
|
+
expect(long.parse("abc")).toBe("abc");
|
|
24
|
+
expect(long.safeParse("ab").error!.issues.map((i) => i.path)).toEqual([["length"]]);
|
|
25
|
+
expect(
|
|
26
|
+
z
|
|
27
|
+
.compile(long)
|
|
28
|
+
.safeParse("ab")
|
|
29
|
+
.error!.issues.map((i) => i.path)
|
|
30
|
+
).toEqual([["length"]]);
|
|
31
|
+
|
|
32
|
+
// an optional key may be absent
|
|
33
|
+
const opt = z.properties({ a: z.string().optional() });
|
|
34
|
+
expect(opt.safeParse({}).success).toBe(true);
|
|
35
|
+
expectTypeOf<z.infer<typeof opt>>().toEqualTypeOf<{ a?: string | undefined }>();
|
|
36
|
+
});
|
|
37
|
+
|
|
38
|
+
test("z.properties discards transformed output", () => {
|
|
39
|
+
// asserts and never writes back, exactly as z.property() behaves; a nested object schema rebuilds its output even without transforms, so identity cannot distinguish the two
|
|
40
|
+
const p = z.properties({ a: z.string().transform((s) => s.toUpperCase()) });
|
|
41
|
+
const input = { a: "hi" };
|
|
42
|
+
expect(p.parse(input)).toBe(input);
|
|
43
|
+
expect(input.a).toBe("hi");
|
|
44
|
+
});
|
|
45
|
+
|
|
46
|
+
test("z.properties narrows through intersection", () => {
|
|
47
|
+
const httpsUrl = z.instanceof(URL).and(z.properties({ protocol: z.literal("https:") }));
|
|
48
|
+
expectTypeOf<z.infer<typeof httpsUrl>>().toEqualTypeOf<URL & { protocol: "https:" }>();
|
|
49
|
+
|
|
50
|
+
const u = new URL("https://example.com");
|
|
51
|
+
expect(httpsUrl.parse(u)).toBe(u);
|
|
52
|
+
expect(httpsUrl.safeParse(new URL("http://example.com")).success).toBe(false);
|
|
53
|
+
});
|
|
54
|
+
|
|
55
|
+
test("z.instanceof().properties()", () => {
|
|
56
|
+
const httpsUrl = z.instanceof(URL).properties({ protocol: z.literal("https:") });
|
|
57
|
+
expectTypeOf<z.infer<typeof httpsUrl>>().toEqualTypeOf<URL & { protocol: "https:" }>();
|
|
58
|
+
|
|
59
|
+
const u = new URL("https://example.com");
|
|
60
|
+
expect(httpsUrl.parse(u)).toBe(u);
|
|
61
|
+
expect(httpsUrl.safeParse(new URL("http://example.com")).error!.issues.map((i) => i.path)).toEqual([["protocol"]]);
|
|
62
|
+
|
|
63
|
+
// chains, and each call narrows further
|
|
64
|
+
const chained = httpsUrl.properties({ port: z.literal("") });
|
|
65
|
+
expectTypeOf<z.infer<typeof chained>>().toEqualTypeOf<URL & { protocol: "https:" } & { port: "" }>();
|
|
66
|
+
expect(chained.safeParse(u).success).toBe(true);
|
|
67
|
+
expect(chained.safeParse(new URL("https://example.com:8443")).error!.issues.map((i) => i.path)).toEqual([["port"]]);
|
|
68
|
+
});
|
|
69
|
+
|
|
70
|
+
test("z.properties spreads into .check()", () => {
|
|
71
|
+
// the pre-4.6 array call sites: the schema yields itself from Symbol.iterator
|
|
72
|
+
const p = z.properties({ a: z.literal("x") });
|
|
73
|
+
const spread = [...p];
|
|
74
|
+
expect(spread).toEqual([p]);
|
|
75
|
+
|
|
76
|
+
const s = z.object({ a: z.string() }).check(...z.properties({ a: z.literal("x") }));
|
|
77
|
+
expect(s.safeParse({ a: "x" }).success).toBe(true);
|
|
78
|
+
expect(s.safeParse({ a: "!" }).error!.issues.map((i) => i.path)).toEqual([["a"]]);
|
|
79
|
+
});
|
|
80
|
+
|
|
81
|
+
test("z.properties JSON Schema", () => {
|
|
82
|
+
const p = z.properties({ a: z.string(), b: z.number().optional() });
|
|
83
|
+
expect(z.toJSONSchema(p)).toEqual({
|
|
84
|
+
$schema: "https://json-schema.org/draft/2020-12/schema",
|
|
85
|
+
type: "object",
|
|
86
|
+
properties: { a: { type: "string" }, b: { type: "number" } },
|
|
87
|
+
required: ["a"],
|
|
88
|
+
});
|
|
89
|
+
});
|
|
90
|
+
|
|
91
|
+
test("z.properties compiles", () => {
|
|
92
|
+
const p = z.properties({ a: z.literal("x"), b: z.literal("y") });
|
|
93
|
+
const compiled = z.compile(p);
|
|
94
|
+
const ok = { a: "x", b: "y", extra: 1 };
|
|
95
|
+
expect(compiled.parse(ok)).toBe(ok);
|
|
96
|
+
expect(compiled.safeParse({ a: "!", b: "!" }).error!.issues.map((i) => i.path)).toEqual([["a"], ["b"]]);
|
|
97
|
+
expect(compiled.safeParse(null).error!.issues.map((i) => [i.code, i.path])).toEqual([["invalid_type", []]]);
|
|
98
|
+
|
|
99
|
+
// nested in a container
|
|
100
|
+
const outer = z.compile(z.object({ url: z.instanceof(URL).properties({ protocol: z.literal("https:") }) }));
|
|
101
|
+
expect(outer.safeParse({ url: new URL("http://example.com") }).error!.issues.map((i) => i.path)).toEqual([
|
|
102
|
+
["url", "protocol"],
|
|
103
|
+
]);
|
|
104
|
+
});
|
|
105
|
+
|
|
106
|
+
test("z.properties async", async () => {
|
|
107
|
+
const p = z.properties({ a: z.string().refine(async (s) => s.length > 1) });
|
|
108
|
+
const ok = { a: "hi" };
|
|
109
|
+
await expect(p.parseAsync(ok)).resolves.toBe(ok);
|
|
110
|
+
const bad = await p.safeParseAsync({ a: "!" });
|
|
111
|
+
expect(bad.error!.issues.map((i) => i.path)).toEqual([["a"]]);
|
|
112
|
+
});
|
|
113
|
+
|
|
114
|
+
test("z.properties infers the input side", () => {
|
|
115
|
+
// nothing is written back, so an output-typed inference would lie for every shape entry whose output differs from its input
|
|
116
|
+
const withDefault = z.properties({ a: z.string().default("x") });
|
|
117
|
+
expectTypeOf<z.infer<typeof withDefault>>().toEqualTypeOf<{ a?: string | undefined }>();
|
|
118
|
+
expect(withDefault.parse({})).toEqual({});
|
|
119
|
+
|
|
120
|
+
const withTransform = z.properties({ a: z.string().transform((s) => s.length) });
|
|
121
|
+
expectTypeOf<z.infer<typeof withTransform>>().toEqualTypeOf<{ a: string }>();
|
|
122
|
+
expect(withTransform.parse({ a: "hi" })).toEqual({ a: "hi" });
|
|
123
|
+
|
|
124
|
+
// a plain schema has the same input and output, so the documented narrowing is unchanged
|
|
125
|
+
const W = z.instanceof(URL).properties({ protocol: z.literal("https:") });
|
|
126
|
+
expectTypeOf<z.infer<typeof W>>().toEqualTypeOf<URL & { protocol: "https:" }>();
|
|
127
|
+
});
|
|
128
|
+
|
|
129
|
+
test("z.properties validates symbol keys", () => {
|
|
130
|
+
const sym = Symbol("tag");
|
|
131
|
+
const p = z.properties({ [sym]: z.string() });
|
|
132
|
+
expect(p.safeParse({ [sym]: "ok" }).success).toBe(true);
|
|
133
|
+
expect(p.safeParse({ [sym]: 123 }).error!.issues.map((i) => i.path)).toEqual([[sym]]);
|
|
134
|
+
expect(
|
|
135
|
+
z
|
|
136
|
+
.compile(p)
|
|
137
|
+
.safeParse({ [sym]: 123 })
|
|
138
|
+
.error!.issues.map((i) => i.path)
|
|
139
|
+
).toEqual([[sym]]);
|
|
140
|
+
});
|
|
141
|
+
|
|
142
|
+
test("z.properties compiled and interpreted agree on a nullish value", () => {
|
|
143
|
+
// a base that permits null reaches the check role with one; the compiled property read must not throw where the runtime reports an issue
|
|
144
|
+
const s = z.any().check(...z.properties({ a: z.string() }));
|
|
145
|
+
const expected = [["invalid_type", []]];
|
|
146
|
+
expect(s.safeParse(null).error!.issues.map((i) => [i.code, i.path])).toEqual(expected);
|
|
147
|
+
expect(
|
|
148
|
+
z
|
|
149
|
+
.compile(s)
|
|
150
|
+
.safeParse(null)
|
|
151
|
+
.error!.issues.map((i) => [i.code, i.path])
|
|
152
|
+
).toEqual(expected);
|
|
153
|
+
});
|
|
154
|
+
|
|
155
|
+
test("z.properties with a custom when refuses to compile", () => {
|
|
156
|
+
// `when` is not publicly settable, since it gates a check inside the run loop and means nothing to a parsed schema. A hand-built def can still carry one, and compiling it must refuse rather than run the shape unconditionally: a union branch compiles to its own IIFE, so a wrong rejection is absorbed as a branch failure with no fallback.
|
|
157
|
+
const p = new z.core.$ZodProperties({
|
|
158
|
+
type: "properties",
|
|
159
|
+
check: "properties",
|
|
160
|
+
shape: { a: z.literal("x") },
|
|
161
|
+
when: () => false,
|
|
162
|
+
});
|
|
163
|
+
const s = z.union([p as unknown as z.ZodType, z.object({ b: z.string() })]);
|
|
164
|
+
const input = { a: "wrong", b: "hello" };
|
|
165
|
+
expect(z.compile(s).safeParse(input)).toEqual(s.safeParse(input));
|
|
166
|
+
});
|
|
167
|
+
|
|
168
|
+
test("z.properties parses cyclic input", () => {
|
|
169
|
+
// the input is its own output, so it registers as its own memo entry; without that a cycle re-enters forever
|
|
170
|
+
const Node: z.ZodType<{ id: string; next?: unknown }> = z.lazy(() =>
|
|
171
|
+
z.properties({ id: z.string(), next: Node.optional() })
|
|
172
|
+
);
|
|
173
|
+
const cyclic: Record<string, unknown> = { id: "a" };
|
|
174
|
+
cyclic.next = cyclic;
|
|
175
|
+
expect(Node.parse(cyclic)).toBe(cyclic);
|
|
176
|
+
expect(z.compile(Node).parse(cyclic)).toBe(cyclic);
|
|
177
|
+
|
|
178
|
+
// the cycle guard must not swallow a real failure further down
|
|
179
|
+
expect(Node.safeParse({ id: "a", next: { id: 1 } }).error!.issues.map((i) => i.path)).toEqual([["next", "id"]]);
|
|
180
|
+
});
|
|
181
|
+
|
|
182
|
+
test("z.properties asserts forward while encoding", () => {
|
|
183
|
+
// both sides declare the shape's input type, so encoding must still check the value against it; running the children backward would encode them and reject that type
|
|
184
|
+
const codec = z.codec(z.string(), z.number(), { decode: (s) => Number(s), encode: (n) => String(n) });
|
|
185
|
+
const p = z.properties({ a: codec, b: z.string().transform((s) => s.length) });
|
|
186
|
+
const value = { a: "1", b: "hi" };
|
|
187
|
+
expect(z.decode(p, value)).toBe(value);
|
|
188
|
+
expect(z.encode(p, value)).toBe(value);
|
|
189
|
+
expect(z.safeEncode(p, { a: 1, b: "hi" } as never).error!.issues.map((i) => i.path)).toEqual([["a"]]);
|
|
190
|
+
});
|
|
191
|
+
|
|
192
|
+
test("z.properties parses a cyclic callable", () => {
|
|
193
|
+
// property reads work on a function too, so the cycle guard has to recognize one as a reference
|
|
194
|
+
const Fn: z.ZodType<{ self?: unknown }> = z.lazy(() => z.properties({ self: Fn.optional() }));
|
|
195
|
+
const fn = (() => {}) as unknown as Record<string, unknown>;
|
|
196
|
+
fn.self = fn;
|
|
197
|
+
expect(Fn.parse(fn)).toBe(fn);
|
|
198
|
+
});
|
|
199
|
+
|
|
200
|
+
test("z.properties survives shape mutation", () => {
|
|
201
|
+
// key and schema are snapshotted together; caching one and reading the other live paired a stale key with a missing schema
|
|
202
|
+
const shape: Record<string, z.ZodType> = { a: z.string() };
|
|
203
|
+
const p = z.properties(shape);
|
|
204
|
+
expect(p.safeParse({ a: "x" }).success).toBe(true);
|
|
205
|
+
delete shape.a;
|
|
206
|
+
expect(p.safeParse({ a: "x" }).success).toBe(true);
|
|
207
|
+
shape.b = z.string();
|
|
208
|
+
expect(p.safeParse({ a: "x" }).success).toBe(true);
|
|
209
|
+
});
|
|
210
|
+
|
|
211
|
+
test("z.properties JSON Schema describes the input side", () => {
|
|
212
|
+
// the parsed value is the input, so a defaulted key that stays absent must not be required of the output either
|
|
213
|
+
const p = z.properties({ a: z.string().default("x") });
|
|
214
|
+
expect(p.parse({})).toEqual({});
|
|
215
|
+
expect(z.toJSONSchema(p, { io: "output" })).toEqual({
|
|
216
|
+
$schema: "https://json-schema.org/draft/2020-12/schema",
|
|
217
|
+
type: "object",
|
|
218
|
+
properties: { a: { default: "x", type: "string" } },
|
|
219
|
+
});
|
|
220
|
+
|
|
221
|
+
// an output mode emission for a transforming child would describe a value this schema never returns
|
|
222
|
+
const t = z.properties({ a: z.string().transform((s) => s.length) });
|
|
223
|
+
expect(() => z.toJSONSchema(t, { io: "output" })).toThrow(/cannot be represented/);
|
|
224
|
+
expect(z.toJSONSchema(t, { io: "input" })).toMatchObject({ properties: { a: { type: "string" } }, required: ["a"] });
|
|
225
|
+
});
|
|
@@ -1,6 +1,51 @@
|
|
|
1
1
|
import { expect, expectTypeOf, test } from "vitest";
|
|
2
2
|
import { z } from "zod/v4";
|
|
3
3
|
|
|
4
|
+
test("recursive object schema type aliases", () => {
|
|
5
|
+
type ObjectField = z.ZodObject<{ [k: string]: ObjectField }>;
|
|
6
|
+
type MixedField = z.ZodString | z.ZodObject<{ [k: string]: MixedField }>;
|
|
7
|
+
expectTypeOf<ObjectField>().toExtend<z.ZodType>();
|
|
8
|
+
expectTypeOf<MixedField>().toExtend<z.ZodType>();
|
|
9
|
+
|
|
10
|
+
type ObjectValue = { [k: string]: ObjectValue };
|
|
11
|
+
type MixedValue = string | { [k: string]: MixedValue };
|
|
12
|
+
expectTypeOf<z.input<ObjectField>>().toEqualTypeOf<ObjectValue>();
|
|
13
|
+
expectTypeOf<z.output<ObjectField>>().toEqualTypeOf<ObjectValue>();
|
|
14
|
+
expectTypeOf<z.input<MixedField>>().toEqualTypeOf<MixedValue>();
|
|
15
|
+
expectTypeOf<z.output<MixedField>>().toEqualTypeOf<MixedValue>();
|
|
16
|
+
|
|
17
|
+
const schema: MixedField = z.object({ name: z.string(), nested: z.object({ name: z.string() }) });
|
|
18
|
+
expect(schema.parse({ name: "a", nested: { name: "b", extra: true } })).toEqual({
|
|
19
|
+
name: "a",
|
|
20
|
+
nested: { name: "b" },
|
|
21
|
+
});
|
|
22
|
+
expect(schema.safeParse({ name: "a", nested: { name: 123 } }).success).toBe(false);
|
|
23
|
+
|
|
24
|
+
type CoreField = z.core.$ZodString<string> | z.core.$ZodObject<{ [k: string]: CoreField }>;
|
|
25
|
+
expectTypeOf<z.input<CoreField>>().toEqualTypeOf<MixedValue>();
|
|
26
|
+
expectTypeOf<z.output<CoreField>>().toEqualTypeOf<MixedValue>();
|
|
27
|
+
});
|
|
28
|
+
|
|
29
|
+
test("recursive object aliases preserve distinct input and output", () => {
|
|
30
|
+
type Field = z.ZodPipe<z.ZodString, z.ZodTransform<number, string>> | z.ZodObject<{ [k: string]: Field }>;
|
|
31
|
+
type Input = string | { [k: string]: Input };
|
|
32
|
+
type Output = number | { [k: string]: Output };
|
|
33
|
+
expectTypeOf<z.input<Field>>().toEqualTypeOf<Input>();
|
|
34
|
+
expectTypeOf<z.output<Field>>().toEqualTypeOf<Output>();
|
|
35
|
+
const schema: Field = z.object({ nested: z.object({ length: z.string().transform((s) => s.length) }) });
|
|
36
|
+
expect(schema.parse({ nested: { length: "abc" } })).toEqual({ nested: { length: 3 } });
|
|
37
|
+
expect(schema.safeParse({ nested: { length: 3 } }).success).toBe(false);
|
|
38
|
+
});
|
|
39
|
+
|
|
40
|
+
test("indexed object inference preserves string keys", () => {
|
|
41
|
+
type Indexed = z.ZodObject<Record<string, z.ZodString>>;
|
|
42
|
+
type Recursive = z.ZodObject<Record<string, Recursive>>;
|
|
43
|
+
expectTypeOf<keyof z.input<Indexed>>().toEqualTypeOf<string>();
|
|
44
|
+
expectTypeOf<keyof z.output<Indexed>>().toEqualTypeOf<string>();
|
|
45
|
+
expectTypeOf<keyof z.input<Recursive>>().toEqualTypeOf<string>();
|
|
46
|
+
expectTypeOf<keyof z.output<Recursive>>().toEqualTypeOf<string>();
|
|
47
|
+
});
|
|
48
|
+
|
|
4
49
|
test("recursion with z.lazy", () => {
|
|
5
50
|
const data = {
|
|
6
51
|
name: "I",
|
|
@@ -556,7 +601,7 @@ test("recursive object with .check()", () => {
|
|
|
556
601
|
expect(() => Category.parse(invalidData)).toThrow();
|
|
557
602
|
});
|
|
558
603
|
|
|
559
|
-
// biome-ignore lint:
|
|
604
|
+
// biome-ignore lint/suspicious/noExportsInTest: unexported it trips noUnusedVariables instead
|
|
560
605
|
export type RecursiveA = z.ZodUnion<
|
|
561
606
|
[
|
|
562
607
|
z.ZodObject<{
|
|
@@ -132,3 +132,22 @@ test("z.toJSONSchema() returns StandardJSONSchemaV1", async () => {
|
|
|
132
132
|
}
|
|
133
133
|
`);
|
|
134
134
|
});
|
|
135
|
+
|
|
136
|
+
test("a failing validate reports the same issues as safeParse, without a ZodError", async () => {
|
|
137
|
+
const schema = z.object({ name: z.string().min(3), age: z.number().refine(async (n) => n > 0) });
|
|
138
|
+
const input = { name: "ab", age: -1 };
|
|
139
|
+
const result = (await schema["~standard"].validate(input)) as { issues: unknown[] };
|
|
140
|
+
expect(result.issues).toEqual((await schema.safeParseAsync(input)).error!.issues);
|
|
141
|
+
expect(result).not.toHaveProperty("error");
|
|
142
|
+
const sync = z.string().min(3)["~standard"].validate("ab") as { issues: unknown[] };
|
|
143
|
+
expect(sync.issues).toEqual(z.string().min(3).safeParse("ab").error!.issues);
|
|
144
|
+
});
|
|
145
|
+
|
|
146
|
+
test("a synchronously throwing check rejects through ~standard instead of throwing", async () => {
|
|
147
|
+
const schema = z.string().refine(() => {
|
|
148
|
+
throw new Error("boom");
|
|
149
|
+
});
|
|
150
|
+
const result = schema["~standard"].validate("abc");
|
|
151
|
+
expect(result).toBeInstanceOf(Promise);
|
|
152
|
+
await expect(result as Promise<unknown>).rejects.toThrow("boom");
|
|
153
|
+
});
|
|
@@ -264,6 +264,7 @@ test("base64url validations", () => {
|
|
|
264
264
|
|
|
265
265
|
const invalidBase64URLStrings = [
|
|
266
266
|
"w7/Dv8O+w74K", // Has + and / characters (is base64)
|
|
267
|
+
"A", // Invalid length (1 mod 4 carries no whole byte)
|
|
267
268
|
"12345", // Invalid length (not a multiple of 4 characters when adding allowed number of padding characters)
|
|
268
269
|
"12345===", // Not padded correctly
|
|
269
270
|
"!UGF0aWVuY2UgaXMgdGhlIGtleSB0byBzdWNjZXNz", // Invalid character '!'
|
|
@@ -291,6 +292,18 @@ test("big base64 and base64url", () => {
|
|
|
291
292
|
z.base64().parse(bigbase64);
|
|
292
293
|
const bigbase64url = randomBytes(1024 * 1024 * 10).toString("base64url");
|
|
293
294
|
z.base64url().parse(bigbase64url);
|
|
295
|
+
|
|
296
|
+
// template literals compose def.pattern and test it on every parse; the quantified block forms overflowed the regex stack here
|
|
297
|
+
expect(z.templateLiteral(["id-", z.base64()]).safeParse(`id-${bigbase64}`).success).toBe(true);
|
|
298
|
+
expect(z.templateLiteral(["id-", z.base64url()]).safeParse(`id-${bigbase64url}`).success).toBe(true);
|
|
299
|
+
});
|
|
300
|
+
|
|
301
|
+
test("template literal composes base64 without alternation leaks", () => {
|
|
302
|
+
// the ^$| alternation in regexes.base64 used to leak: "AAAA" matched with the prefix dropped and "id-AAAA" was rejected
|
|
303
|
+
const tl = z.templateLiteral(["id-", z.base64()]);
|
|
304
|
+
expect(tl.safeParse("id-AAAA").success).toBe(true);
|
|
305
|
+
expect(tl.safeParse("id-").success).toBe(true);
|
|
306
|
+
expect(tl.safeParse("AAAA").success).toBe(false);
|
|
294
307
|
});
|
|
295
308
|
|
|
296
309
|
function makeJwt(header: object, payload: object) {
|
|
@@ -552,6 +565,18 @@ test("emoji validations", () => {
|
|
|
552
565
|
expect(() => emoji.parse("😀 is an emoji")).toThrow();
|
|
553
566
|
expect(() => emoji.parse("😀stuff")).toThrow();
|
|
554
567
|
expect(() => emoji.parse("stuff😀")).toThrow();
|
|
568
|
+
|
|
569
|
+
emoji.parse("1\u{FE0F}\u{20E3}"); // keycap sequences stay valid
|
|
570
|
+
emoji.parse("#\u{FE0F}\u{20E3}");
|
|
571
|
+
|
|
572
|
+
// `\p{Emoji_Component}` alone covers ASCII digits, "#", "*", ZWJ, variation selectors and skin tone modifiers; none is an emoji without a base, so a component-only string is not one either
|
|
573
|
+
expect(() => emoji.parse("123")).toThrow();
|
|
574
|
+
expect(() => emoji.parse("#")).toThrow();
|
|
575
|
+
expect(() => emoji.parse("*")).toThrow();
|
|
576
|
+
expect(() => emoji.parse("\u{200D}")).toThrow();
|
|
577
|
+
expect(() => emoji.parse("\u{FE0F}")).toThrow();
|
|
578
|
+
expect(() => emoji.parse("\u{1F3FD}")).toThrow();
|
|
579
|
+
expect(() => emoji.parse("1\u{FE0F}")).toThrow();
|
|
555
580
|
});
|
|
556
581
|
|
|
557
582
|
test("nanoid", () => {
|
|
@@ -565,7 +565,7 @@ test("regexes", () => {
|
|
|
565
565
|
`"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"`
|
|
566
566
|
);
|
|
567
567
|
expect(email._zod.pattern.source).toMatchInlineSnapshot(
|
|
568
|
-
`"^(
|
|
568
|
+
`"^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"`
|
|
569
569
|
);
|
|
570
570
|
// expect(ip._zod.pattern.source).toMatchInlineSnapshot(
|
|
571
571
|
// `"^(^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$)|(^(([a-fA-F0-9]{1,4}:){7}|::([a-fA-F0-9]{1,4}:){0,6}|([a-fA-F0-9]{1,4}:){1}:([a-fA-F0-9]{1,4}:){0,5}|([a-fA-F0-9]{1,4}:){2}:([a-fA-F0-9]{1,4}:){0,4}|([a-fA-F0-9]{1,4}:){3}:([a-fA-F0-9]{1,4}:){0,3}|([a-fA-F0-9]{1,4}:){4}:([a-fA-F0-9]{1,4}:){0,2}|([a-fA-F0-9]{1,4}:){5}:([a-fA-F0-9]{1,4}:){0,1})([a-fA-F0-9]{1,4}|(((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))\\.){3}((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2})))$)$"`
|
|
@@ -778,3 +778,35 @@ test("template literal parsing - failure - issue format", () => {
|
|
|
778
778
|
}
|
|
779
779
|
`);
|
|
780
780
|
});
|
|
781
|
+
|
|
782
|
+
test("part patterns fold checks through wrappers and unions", () => {
|
|
783
|
+
// a constrained string keeps its bounds under a wrapper and inside a union
|
|
784
|
+
const wrapped = z.templateLiteral(["a-", z.string().min(2).max(3).optional()]);
|
|
785
|
+
expect(wrapped.safeParse("a-").success).toBe(true);
|
|
786
|
+
expect(wrapped.safeParse("a-xy").success).toBe(true);
|
|
787
|
+
expect(wrapped.safeParse("a-x").success).toBe(false);
|
|
788
|
+
expect(wrapped.safeParse("a-wxyz").success).toBe(false);
|
|
789
|
+
|
|
790
|
+
const union = z.templateLiteral(["", z.union([z.string().regex(/^[a-c]+$/), z.number().int()])]);
|
|
791
|
+
expect(union.safeParse("abc").success).toBe(true);
|
|
792
|
+
expect(union.safeParse("12").success).toBe(true);
|
|
793
|
+
expect(union.safeParse("xyz").success).toBe(false);
|
|
794
|
+
expect(union.safeParse("1.5").success).toBe(false);
|
|
795
|
+
|
|
796
|
+
// an empty length range matches nothing rather than building an invalid quantifier
|
|
797
|
+
const empty = z.templateLiteral(["", z.string().min(8).length(5)]);
|
|
798
|
+
expect(empty.safeParse("abcde").success).toBe(false);
|
|
799
|
+
|
|
800
|
+
// lazy resolves its inner schema on the internals, not the def
|
|
801
|
+
const lazy = z.templateLiteral(["", z.lazy(() => z.string().min(2)).optional()]);
|
|
802
|
+
expect(lazy.safeParse("x").success).toBe(false);
|
|
803
|
+
expect(lazy.safeParse("xy").success).toBe(true);
|
|
804
|
+
});
|
|
805
|
+
|
|
806
|
+
test("an embedded email does not constrain the other parts", () => {
|
|
807
|
+
const schema = z.templateLiteral([z.email(), "|", z.string()]);
|
|
808
|
+
expect(schema.safeParse("a@b.cc|a..b").success).toBe(true);
|
|
809
|
+
expect(schema.safeParse("a@b.cc|xy").success).toBe(true);
|
|
810
|
+
expect(schema.safeParse("a..b@b.cc|xy").success).toBe(false);
|
|
811
|
+
expect(schema.safeParse(".a@b.cc|xy").success).toBe(false);
|
|
812
|
+
});
|
|
@@ -79,7 +79,7 @@ describe("toJSONSchema", () => {
|
|
|
79
79
|
{
|
|
80
80
|
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
81
81
|
"format": "email",
|
|
82
|
-
"pattern": "^(
|
|
82
|
+
"pattern": "^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$",
|
|
83
83
|
"type": "string",
|
|
84
84
|
}
|
|
85
85
|
`);
|
|
@@ -218,6 +218,15 @@ describe("toJSONSchema", () => {
|
|
|
218
218
|
"type": "string",
|
|
219
219
|
}
|
|
220
220
|
`);
|
|
221
|
+
expect(z.toJSONSchema(z.base64url())).toMatchInlineSnapshot(`
|
|
222
|
+
{
|
|
223
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
224
|
+
"contentEncoding": "base64url",
|
|
225
|
+
"format": "base64url",
|
|
226
|
+
"pattern": "^(?:[A-Za-z0-9_-]{4})*(?:[A-Za-z0-9_-]{2,3})?$",
|
|
227
|
+
"type": "string",
|
|
228
|
+
}
|
|
229
|
+
`);
|
|
221
230
|
expect(z.toJSONSchema(z.cuid())).toMatchInlineSnapshot(`
|
|
222
231
|
{
|
|
223
232
|
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
@@ -231,7 +240,7 @@ describe("toJSONSchema", () => {
|
|
|
231
240
|
{
|
|
232
241
|
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
233
242
|
"format": "emoji",
|
|
234
|
-
"pattern": "^[\\p{Extended_Pictographic}\\p{Emoji_Component}]+$",
|
|
243
|
+
"pattern": "^(?=[\\s\\S]*[\\p{Extended_Pictographic}\\p{Regional_Indicator}\\u20E3])[\\p{Extended_Pictographic}\\p{Emoji_Component}]+$",
|
|
235
244
|
"type": "string",
|
|
236
245
|
}
|
|
237
246
|
`);
|
|
@@ -356,7 +365,7 @@ describe("toJSONSchema", () => {
|
|
|
356
365
|
{
|
|
357
366
|
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
358
367
|
"format": "email",
|
|
359
|
-
"pattern": "^(
|
|
368
|
+
"pattern": "^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$",
|
|
360
369
|
"type": "string",
|
|
361
370
|
}
|
|
362
371
|
`);
|
|
@@ -482,6 +491,30 @@ describe("toJSONSchema", () => {
|
|
|
482
491
|
`);
|
|
483
492
|
});
|
|
484
493
|
|
|
494
|
+
test("base64url pattern agrees with parse", () => {
|
|
495
|
+
const schema = z.base64url();
|
|
496
|
+
const pattern = new RegExp(z.toJSONSchema(schema).pattern!);
|
|
497
|
+
// lengths 1 (mod 4) carry no whole byte; the emitted pattern must reject them like parse does
|
|
498
|
+
for (const s of ["", "A", "AA", "AAA", "AAAA", "AAAAA"]) {
|
|
499
|
+
expect(pattern.test(s)).toBe(schema.safeParse(s).success);
|
|
500
|
+
}
|
|
501
|
+
});
|
|
502
|
+
|
|
503
|
+
test("base64 pattern agrees with parse", () => {
|
|
504
|
+
const schema = z.base64();
|
|
505
|
+
const pattern = new RegExp(z.toJSONSchema(schema).pattern!);
|
|
506
|
+
// the runtime def.pattern is lax; the emitted pattern must still carry the block structure parse enforces
|
|
507
|
+
for (const s of ["", "A", "AA", "AAA", "AAAA", "AAAAA", "AA==", "AAA=", "A===", "=", "AAAA=="]) {
|
|
508
|
+
expect(pattern.test(s)).toBe(schema.safeParse(s).success);
|
|
509
|
+
}
|
|
510
|
+
});
|
|
511
|
+
|
|
512
|
+
test("looseRecord with a format key emits the exact pattern", () => {
|
|
513
|
+
// recordProcessor reads bag.patterns directly; it must apply the same lax-to-exact swap as stringProcessor
|
|
514
|
+
const json = z.toJSONSchema(z.looseRecord(z.base64url(), z.number()));
|
|
515
|
+
expect(Object.keys(json.patternProperties!)).toEqual([z.regexes.base64url.source]);
|
|
516
|
+
});
|
|
517
|
+
|
|
485
518
|
test("string patterns", () => {
|
|
486
519
|
expect(
|
|
487
520
|
z.toJSONSchema(
|
|
@@ -724,6 +757,117 @@ describe("toJSONSchema", () => {
|
|
|
724
757
|
`);
|
|
725
758
|
});
|
|
726
759
|
|
|
760
|
+
test("number constraints order independence with int()", () => {
|
|
761
|
+
// .int() applied last should not overwrite the tighter bounds .min()/.max() already stored
|
|
762
|
+
expect(z.toJSONSchema(z.number().int().min(0).max(23))).toMatchInlineSnapshot(`
|
|
763
|
+
{
|
|
764
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
765
|
+
"maximum": 23,
|
|
766
|
+
"minimum": 0,
|
|
767
|
+
"type": "integer",
|
|
768
|
+
}
|
|
769
|
+
`);
|
|
770
|
+
expect(z.toJSONSchema(z.number().min(0).max(23).int())).toMatchInlineSnapshot(`
|
|
771
|
+
{
|
|
772
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
773
|
+
"maximum": 23,
|
|
774
|
+
"minimum": 0,
|
|
775
|
+
"type": "integer",
|
|
776
|
+
}
|
|
777
|
+
`);
|
|
778
|
+
});
|
|
779
|
+
|
|
780
|
+
test("chained multipleOf divisors emit the whole conjunction", () => {
|
|
781
|
+
// runtime rejects 4 (not a multiple of 3), so the emitted schema must too
|
|
782
|
+
expect(z.toJSONSchema(z.number().multipleOf(2).multipleOf(3))).toMatchInlineSnapshot(`
|
|
783
|
+
{
|
|
784
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
785
|
+
"allOf": [
|
|
786
|
+
{
|
|
787
|
+
"multipleOf": 3,
|
|
788
|
+
},
|
|
789
|
+
],
|
|
790
|
+
"multipleOf": 2,
|
|
791
|
+
"type": "number",
|
|
792
|
+
}
|
|
793
|
+
`);
|
|
794
|
+
});
|
|
795
|
+
|
|
796
|
+
test("length() does not overwrite a tighter earlier bound", () => {
|
|
797
|
+
// min(8) + length(5) matches nothing at runtime; the emitted bounds stay honest about that
|
|
798
|
+
expect(z.toJSONSchema(z.string().min(8).length(5))).toMatchInlineSnapshot(`
|
|
799
|
+
{
|
|
800
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
801
|
+
"maxLength": 5,
|
|
802
|
+
"minLength": 8,
|
|
803
|
+
"type": "string",
|
|
804
|
+
}
|
|
805
|
+
`);
|
|
806
|
+
});
|
|
807
|
+
|
|
808
|
+
test("an integer format keeps the emitted type integer whatever format lands last", () => {
|
|
809
|
+
// runtime rejects 1.5 in both orders, so both must emit type integer
|
|
810
|
+
const after = z.number().int().check(z.float32());
|
|
811
|
+
expect(after.safeParse(1.5).success).toBe(false);
|
|
812
|
+
expect(z.toJSONSchema(after).type).toBe("integer");
|
|
813
|
+
expect(z.toJSONSchema(z.number().check(z.float32()).int()).type).toBe("integer");
|
|
814
|
+
});
|
|
815
|
+
|
|
816
|
+
test("disjoint mime checks emit a false schema, not an unconstrained file", () => {
|
|
817
|
+
const file = z.file().mime("image/png").mime("text/plain");
|
|
818
|
+
expect(z.toJSONSchema(file)).toMatchInlineSnapshot(`
|
|
819
|
+
{
|
|
820
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
821
|
+
"contentEncoding": "binary",
|
|
822
|
+
"format": "binary",
|
|
823
|
+
"not": {},
|
|
824
|
+
"type": "string",
|
|
825
|
+
}
|
|
826
|
+
`);
|
|
827
|
+
});
|
|
828
|
+
|
|
829
|
+
test("a custom mime narrowing via onattach intersects with built-in mime checks", () => {
|
|
830
|
+
const check = {
|
|
831
|
+
_zod: {
|
|
832
|
+
def: { check: "custom_mime" },
|
|
833
|
+
onattach: [
|
|
834
|
+
(inst: any) => {
|
|
835
|
+
inst._zod.bag.mime = ["text/plain"];
|
|
836
|
+
},
|
|
837
|
+
],
|
|
838
|
+
check: () => {},
|
|
839
|
+
},
|
|
840
|
+
};
|
|
841
|
+
const file = z
|
|
842
|
+
.file()
|
|
843
|
+
.mime(["image/png", "text/plain"])
|
|
844
|
+
.check(check as any);
|
|
845
|
+
expect(z.toJSONSchema(file).contentMediaType).toBe("text/plain");
|
|
846
|
+
});
|
|
847
|
+
|
|
848
|
+
test("a custom check contributing via onattach still lands", () => {
|
|
849
|
+
// third-party checks have no converter handler; their bag writes are merged in as a fallback
|
|
850
|
+
const check = {
|
|
851
|
+
_zod: {
|
|
852
|
+
def: { check: "custom_range" },
|
|
853
|
+
onattach: [
|
|
854
|
+
(inst: any) => {
|
|
855
|
+
const bag = inst._zod.bag;
|
|
856
|
+
if (bag.minimum === undefined || 5 > bag.minimum) bag.minimum = 5;
|
|
857
|
+
},
|
|
858
|
+
],
|
|
859
|
+
check: () => {},
|
|
860
|
+
},
|
|
861
|
+
};
|
|
862
|
+
expect(z.toJSONSchema(z.number().check(check as any))).toMatchInlineSnapshot(`
|
|
863
|
+
{
|
|
864
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
865
|
+
"minimum": 5,
|
|
866
|
+
"type": "number",
|
|
867
|
+
}
|
|
868
|
+
`);
|
|
869
|
+
});
|
|
870
|
+
|
|
727
871
|
test("target normalization draft-04 and draft-07", () => {
|
|
728
872
|
// Test that both old (draft-4, draft-7) and new (draft-04, draft-07) target formats work
|
|
729
873
|
|