@psnext/slingcli 3.1.20260904-1 → 3.3.20260914-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-BRL3MDQL.js} +10 -10
- 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/dist/modes/interactive/components/model-selector.js +79 -32
- 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-cjs/submodules/serde/index.browser.js +2 -0
- package/node_modules/@smithy/core/dist-cjs/submodules/serde/index.js +25 -8
- package/node_modules/@smithy/core/dist-cjs/submodules/serde/index.native.js +2 -0
- 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-es/submodules/serde/util-stream/getAwsChunkedEncodingStream.browser.js +2 -0
- package/node_modules/@smithy/core/dist-es/submodules/serde/util-stream/getAwsChunkedEncodingStream.js +23 -8
- 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 +1 -1
- package/node_modules/@types/node/buffer.d.ts +1 -0
- package/node_modules/@types/node/diagnostics_channel.d.ts +4 -4
- package/node_modules/@types/node/http.d.ts +1 -1
- package/node_modules/@types/node/package.json +3 -3
- package/node_modules/@types/node/perf_hooks.d.ts +31 -19
- package/node_modules/@types/node/quic.d.ts +6 -4
- package/node_modules/@types/node/stream/web.d.ts +20 -0
- package/node_modules/@types/node/tls.d.ts +26 -15
- package/node_modules/@types/node/vfs.d.ts +7 -6
- package/node_modules/@types/node/web-globals/streams.d.ts +4 -0
- package/node_modules/@types/node/zlib.d.ts +17 -0
- 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/client.d.ts +8 -3
- package/node_modules/undici-types/connector.d.ts +1 -0
- package/node_modules/undici-types/cookies.d.ts +1 -1
- package/node_modules/undici-types/dispatcher.d.ts +3 -3
- package/node_modules/undici-types/errors.d.ts +10 -0
- package/node_modules/undici-types/fetch.d.ts +5 -1
- package/node_modules/undici-types/handlers.d.ts +2 -0
- package/node_modules/undici-types/interceptors.d.ts +1 -1
- package/node_modules/undici-types/mock-interceptor.d.ts +5 -1
- package/node_modules/undici-types/package.json +1 -1
- package/node_modules/undici-types/proxy-agent.d.ts +7 -0
- package/node_modules/zod/README.md +2 -2
- 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/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 +243 -168
- package/node_modules/zod/src/v4/classic/tests/assignability.test.ts +60 -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 +265 -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/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 +40 -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/number.test.ts +39 -0
- 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 +141 -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 +95 -1
- 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 +234 -38
- package/node_modules/zod/src/v4/classic/tests/validate.test.ts +569 -0
- package/node_modules/zod/src/v4/core/api.ts +44 -28
- package/node_modules/zod/src/v4/core/checks.ts +62 -102
- package/node_modules/zod/src/v4/core/compile.ts +218 -93
- package/node_modules/zod/src/v4/core/core.ts +1 -3
- 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 +185 -81
- package/node_modules/zod/src/v4/core/memoizer.ts +75 -28
- package/node_modules/zod/src/v4/core/parse.ts +37 -16
- package/node_modules/zod/src/v4/core/regexes.ts +14 -4
- package/node_modules/zod/src/v4/core/schemas.ts +296 -132
- 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 +35 -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 +399 -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/tests/url-no-canparse.test.ts +118 -16
- package/node_modules/zod/src/v4/core/to-json-schema.ts +9 -7
- package/node_modules/zod/src/v4/core/util.ts +218 -147
- package/node_modules/zod/src/v4/core/versions.ts +2 -2
- package/node_modules/zod/src/v4/locales/ar.ts +2 -0
- package/node_modules/zod/src/v4/locales/az.ts +2 -0
- package/node_modules/zod/src/v4/locales/be.ts +2 -0
- package/node_modules/zod/src/v4/locales/bg.ts +2 -0
- package/node_modules/zod/src/v4/locales/bn.ts +2 -0
- package/node_modules/zod/src/v4/locales/ca.ts +2 -0
- package/node_modules/zod/src/v4/locales/ckb.ts +2 -0
- package/node_modules/zod/src/v4/locales/cs.ts +2 -0
- package/node_modules/zod/src/v4/locales/da.ts +2 -0
- package/node_modules/zod/src/v4/locales/de.ts +2 -0
- package/node_modules/zod/src/v4/locales/el.ts +2 -0
- package/node_modules/zod/src/v4/locales/en.ts +2 -0
- package/node_modules/zod/src/v4/locales/eo.ts +2 -0
- package/node_modules/zod/src/v4/locales/es.ts +2 -0
- package/node_modules/zod/src/v4/locales/fa.ts +2 -0
- package/node_modules/zod/src/v4/locales/fi.ts +2 -0
- package/node_modules/zod/src/v4/locales/fr-CA.ts +2 -0
- package/node_modules/zod/src/v4/locales/fr.ts +2 -0
- package/node_modules/zod/src/v4/locales/gu.ts +2 -0
- package/node_modules/zod/src/v4/locales/he.ts +2 -0
- package/node_modules/zod/src/v4/locales/hi.ts +2 -0
- package/node_modules/zod/src/v4/locales/hr.ts +2 -0
- package/node_modules/zod/src/v4/locales/hu.ts +2 -0
- package/node_modules/zod/src/v4/locales/hy.ts +2 -0
- package/node_modules/zod/src/v4/locales/id.ts +2 -0
- package/node_modules/zod/src/v4/locales/index.ts +1 -0
- package/node_modules/zod/src/v4/locales/is.ts +2 -0
- package/node_modules/zod/src/v4/locales/it.ts +2 -0
- package/node_modules/zod/src/v4/locales/ja.ts +2 -0
- package/node_modules/zod/src/v4/locales/ka.ts +2 -0
- package/node_modules/zod/src/v4/locales/km.ts +2 -0
- package/node_modules/zod/src/v4/locales/kn.ts +2 -0
- package/node_modules/zod/src/v4/locales/ko.ts +2 -0
- package/node_modules/zod/src/v4/locales/lt.ts +2 -0
- package/node_modules/zod/src/v4/locales/mk.ts +2 -0
- package/node_modules/zod/src/v4/locales/ms.ts +2 -0
- package/node_modules/zod/src/v4/locales/ne.ts +2 -0
- package/node_modules/zod/src/v4/locales/nl.ts +2 -0
- package/node_modules/zod/src/v4/locales/nn.ts +2 -0
- package/node_modules/zod/src/v4/locales/no.ts +2 -0
- package/node_modules/zod/src/v4/locales/ota.ts +2 -0
- package/node_modules/zod/src/v4/locales/pl.ts +2 -0
- package/node_modules/zod/src/v4/locales/ps.ts +2 -0
- package/node_modules/zod/src/v4/locales/pt-BR.ts +2 -0
- package/node_modules/zod/src/v4/locales/pt.ts +2 -0
- package/node_modules/zod/src/v4/locales/ro.ts +2 -0
- package/node_modules/zod/src/v4/locales/ru.ts +2 -0
- package/node_modules/zod/src/v4/locales/sk.ts +2 -0
- package/node_modules/zod/src/v4/locales/sl.ts +2 -0
- package/node_modules/zod/src/v4/locales/sv.ts +2 -0
- package/node_modules/zod/src/v4/locales/ta.ts +2 -0
- package/node_modules/zod/src/v4/locales/tg.ts +135 -0
- package/node_modules/zod/src/v4/locales/th.ts +2 -0
- package/node_modules/zod/src/v4/locales/tk.ts +2 -0
- package/node_modules/zod/src/v4/locales/tr.ts +2 -0
- package/node_modules/zod/src/v4/locales/uk.ts +2 -0
- package/node_modules/zod/src/v4/locales/ur.ts +2 -0
- package/node_modules/zod/src/v4/locales/uz.ts +2 -0
- package/node_modules/zod/src/v4/locales/vi.ts +2 -0
- package/node_modules/zod/src/v4/locales/yo.ts +2 -0
- package/node_modules/zod/src/v4/locales/zh-CN.ts +2 -0
- package/node_modules/zod/src/v4/locales/zh-TW.ts +2 -0
- package/node_modules/zod/src/v4/mini/external.ts +2 -0
- package/node_modules/zod/src/v4/mini/schemas.ts +32 -7
- 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 +86 -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 +23 -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 +19 -0
- 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 -35
- package/node_modules/zod/v4/classic/schemas.d.cts +15 -1
- package/node_modules/zod/v4/classic/schemas.d.ts +15 -1
- package/node_modules/zod/v4/classic/schemas.js +77 -33
- package/node_modules/zod/v4/core/api.cjs +45 -22
- package/node_modules/zod/v4/core/api.d.cts +12 -6
- package/node_modules/zod/v4/core/api.d.ts +12 -6
- package/node_modules/zod/v4/core/api.js +25 -22
- package/node_modules/zod/v4/core/checks.cjs +51 -97
- package/node_modules/zod/v4/core/checks.d.cts +17 -1
- package/node_modules/zod/v4/core/checks.d.ts +17 -1
- package/node_modules/zod/v4/core/checks.js +31 -96
- package/node_modules/zod/v4/core/compile.cjs +173 -78
- 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 +154 -79
- package/node_modules/zod/v4/core/core.cjs +20 -1
- package/node_modules/zod/v4/core/core.js +1 -1
- 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 +188 -72
- 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 +170 -74
- package/node_modules/zod/v4/core/json-schema.cjs +19 -0
- package/node_modules/zod/v4/core/memoizer.cjs +111 -23
- package/node_modules/zod/v4/core/memoizer.js +69 -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 +31 -6
- package/node_modules/zod/v4/core/regexes.d.cts +3 -0
- package/node_modules/zod/v4/core/regexes.d.ts +3 -0
- package/node_modules/zod/v4/core/regexes.js +10 -4
- package/node_modules/zod/v4/core/registries.cjs +19 -0
- package/node_modules/zod/v4/core/schemas.cjs +302 -114
- package/node_modules/zod/v4/core/schemas.d.cts +28 -8
- package/node_modules/zod/v4/core/schemas.d.ts +28 -8
- package/node_modules/zod/v4/core/schemas.js +279 -113
- package/node_modules/zod/v4/core/standard-schema.cjs +19 -0
- package/node_modules/zod/v4/core/to-json-schema.cjs +28 -7
- package/node_modules/zod/v4/core/to-json-schema.d.cts +4 -3
- package/node_modules/zod/v4/core/to-json-schema.d.ts +4 -3
- package/node_modules/zod/v4/core/to-json-schema.js +7 -6
- package/node_modules/zod/v4/core/util.cjs +177 -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 +156 -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 +19 -0
- package/node_modules/zod/v4/index.cjs +19 -0
- package/node_modules/zod/v4/locales/ar.cjs +2 -0
- package/node_modules/zod/v4/locales/ar.js +2 -0
- package/node_modules/zod/v4/locales/az.cjs +2 -0
- package/node_modules/zod/v4/locales/az.js +2 -0
- package/node_modules/zod/v4/locales/be.cjs +2 -0
- package/node_modules/zod/v4/locales/be.js +2 -0
- package/node_modules/zod/v4/locales/bg.cjs +2 -0
- package/node_modules/zod/v4/locales/bg.js +2 -0
- package/node_modules/zod/v4/locales/bn.cjs +2 -0
- package/node_modules/zod/v4/locales/bn.js +2 -0
- package/node_modules/zod/v4/locales/ca.cjs +2 -0
- package/node_modules/zod/v4/locales/ca.js +2 -0
- package/node_modules/zod/v4/locales/ckb.cjs +2 -0
- package/node_modules/zod/v4/locales/ckb.js +2 -0
- package/node_modules/zod/v4/locales/cs.cjs +2 -0
- package/node_modules/zod/v4/locales/cs.js +2 -0
- package/node_modules/zod/v4/locales/da.cjs +2 -0
- package/node_modules/zod/v4/locales/da.js +2 -0
- package/node_modules/zod/v4/locales/de.cjs +2 -0
- package/node_modules/zod/v4/locales/de.js +2 -0
- package/node_modules/zod/v4/locales/el.cjs +2 -0
- package/node_modules/zod/v4/locales/el.js +2 -0
- package/node_modules/zod/v4/locales/en.cjs +2 -0
- package/node_modules/zod/v4/locales/en.js +2 -0
- package/node_modules/zod/v4/locales/eo.cjs +2 -0
- package/node_modules/zod/v4/locales/eo.js +2 -0
- package/node_modules/zod/v4/locales/es.cjs +2 -0
- package/node_modules/zod/v4/locales/es.js +2 -0
- package/node_modules/zod/v4/locales/fa.cjs +2 -0
- package/node_modules/zod/v4/locales/fa.js +2 -0
- package/node_modules/zod/v4/locales/fi.cjs +2 -0
- package/node_modules/zod/v4/locales/fi.js +2 -0
- package/node_modules/zod/v4/locales/fr-CA.cjs +2 -0
- package/node_modules/zod/v4/locales/fr-CA.js +2 -0
- package/node_modules/zod/v4/locales/fr.cjs +2 -0
- package/node_modules/zod/v4/locales/fr.js +2 -0
- package/node_modules/zod/v4/locales/gu.cjs +2 -0
- package/node_modules/zod/v4/locales/gu.js +2 -0
- package/node_modules/zod/v4/locales/he.cjs +2 -0
- package/node_modules/zod/v4/locales/he.js +2 -0
- package/node_modules/zod/v4/locales/hi.cjs +2 -0
- package/node_modules/zod/v4/locales/hi.js +2 -0
- package/node_modules/zod/v4/locales/hr.cjs +2 -0
- package/node_modules/zod/v4/locales/hr.js +2 -0
- package/node_modules/zod/v4/locales/hu.cjs +2 -0
- package/node_modules/zod/v4/locales/hu.js +2 -0
- package/node_modules/zod/v4/locales/hy.cjs +2 -0
- package/node_modules/zod/v4/locales/hy.js +2 -0
- package/node_modules/zod/v4/locales/id.cjs +2 -0
- package/node_modules/zod/v4/locales/id.js +2 -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 +2 -0
- package/node_modules/zod/v4/locales/is.js +2 -0
- package/node_modules/zod/v4/locales/it.cjs +2 -0
- package/node_modules/zod/v4/locales/it.js +2 -0
- package/node_modules/zod/v4/locales/ja.cjs +2 -0
- package/node_modules/zod/v4/locales/ja.js +2 -0
- package/node_modules/zod/v4/locales/ka.cjs +2 -0
- package/node_modules/zod/v4/locales/ka.js +2 -0
- package/node_modules/zod/v4/locales/km.cjs +2 -0
- package/node_modules/zod/v4/locales/km.js +2 -0
- package/node_modules/zod/v4/locales/kn.cjs +2 -0
- package/node_modules/zod/v4/locales/kn.js +2 -0
- package/node_modules/zod/v4/locales/ko.cjs +2 -0
- package/node_modules/zod/v4/locales/ko.js +2 -0
- package/node_modules/zod/v4/locales/lt.cjs +2 -0
- package/node_modules/zod/v4/locales/lt.js +2 -0
- package/node_modules/zod/v4/locales/mk.cjs +2 -0
- package/node_modules/zod/v4/locales/mk.js +2 -0
- package/node_modules/zod/v4/locales/ms.cjs +2 -0
- package/node_modules/zod/v4/locales/ms.js +2 -0
- package/node_modules/zod/v4/locales/ne.cjs +2 -0
- package/node_modules/zod/v4/locales/ne.js +2 -0
- package/node_modules/zod/v4/locales/nl.cjs +2 -0
- package/node_modules/zod/v4/locales/nl.js +2 -0
- package/node_modules/zod/v4/locales/nn.cjs +2 -0
- package/node_modules/zod/v4/locales/nn.js +2 -0
- package/node_modules/zod/v4/locales/no.cjs +2 -0
- package/node_modules/zod/v4/locales/no.js +2 -0
- package/node_modules/zod/v4/locales/ota.cjs +2 -0
- package/node_modules/zod/v4/locales/ota.js +2 -0
- package/node_modules/zod/v4/locales/pl.cjs +2 -0
- package/node_modules/zod/v4/locales/pl.js +2 -0
- package/node_modules/zod/v4/locales/ps.cjs +2 -0
- package/node_modules/zod/v4/locales/ps.js +2 -0
- package/node_modules/zod/v4/locales/pt-BR.cjs +2 -0
- package/node_modules/zod/v4/locales/pt-BR.js +2 -0
- package/node_modules/zod/v4/locales/pt.cjs +2 -0
- package/node_modules/zod/v4/locales/pt.js +2 -0
- package/node_modules/zod/v4/locales/ro.cjs +2 -0
- package/node_modules/zod/v4/locales/ro.js +2 -0
- package/node_modules/zod/v4/locales/ru.cjs +2 -0
- package/node_modules/zod/v4/locales/ru.js +2 -0
- package/node_modules/zod/v4/locales/sk.cjs +2 -0
- package/node_modules/zod/v4/locales/sk.js +2 -0
- package/node_modules/zod/v4/locales/sl.cjs +2 -0
- package/node_modules/zod/v4/locales/sl.js +2 -0
- package/node_modules/zod/v4/locales/sv.cjs +2 -0
- package/node_modules/zod/v4/locales/sv.js +2 -0
- package/node_modules/zod/v4/locales/ta.cjs +2 -0
- package/node_modules/zod/v4/locales/ta.js +2 -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 +2 -0
- package/node_modules/zod/v4/locales/th.js +2 -0
- package/node_modules/zod/v4/locales/tk.cjs +2 -0
- package/node_modules/zod/v4/locales/tk.js +2 -0
- package/node_modules/zod/v4/locales/tr.cjs +2 -0
- package/node_modules/zod/v4/locales/tr.js +2 -0
- package/node_modules/zod/v4/locales/uk.cjs +2 -0
- package/node_modules/zod/v4/locales/uk.js +2 -0
- package/node_modules/zod/v4/locales/ur.cjs +2 -0
- package/node_modules/zod/v4/locales/ur.js +2 -0
- package/node_modules/zod/v4/locales/uz.cjs +2 -0
- package/node_modules/zod/v4/locales/uz.js +2 -0
- package/node_modules/zod/v4/locales/vi.cjs +2 -0
- package/node_modules/zod/v4/locales/vi.js +2 -0
- package/node_modules/zod/v4/locales/yo.cjs +2 -0
- package/node_modules/zod/v4/locales/yo.js +2 -0
- package/node_modules/zod/v4/locales/zh-CN.cjs +2 -0
- package/node_modules/zod/v4/locales/zh-CN.js +2 -0
- package/node_modules/zod/v4/locales/zh-TW.cjs +2 -0
- package/node_modules/zod/v4/locales/zh-TW.js +2 -0
- package/node_modules/zod/v4/mini/checks.cjs +19 -0
- 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 +44 -8
- package/node_modules/zod/v4/mini/schemas.d.cts +6 -1
- package/node_modules/zod/v4/mini/schemas.d.ts +6 -1
- package/node_modules/zod/v4/mini/schemas.js +21 -6
- package/node_modules/zod/v4-mini/index.cjs +19 -0
- package/package.json +2 -2
- package/slingshot/index.js +201 -198
- 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
|
@@ -2,9 +2,9 @@ import { $ZodAsyncError } from "./core.js";
|
|
|
2
2
|
import { Doc } from "./doc.js";
|
|
3
3
|
import { isBackEdge, isRecursiveSchema } from "./memoizer.js";
|
|
4
4
|
import * as regexes from "./regexes.js";
|
|
5
|
-
import { isValidBase64, isValidBase64URL, isValidCIDRv6, isValidCreditCard, isValidIPv6, isValidJWT, mergeValues,
|
|
5
|
+
import { isValidBase64, isValidBase64URL, isValidCIDRv6, isValidCreditCard, isValidIBAN, isValidIPv6, isValidJWT, mergeValues, stripTabAndNewline, urlHostnameOk, urlProtocolOk, validateURL, } from "./schemas.js";
|
|
6
6
|
import * as util from "./util.js";
|
|
7
|
-
/** Sentinel
|
|
7
|
+
/** @internal Sentinel the compiled fast path returns when validation fails. */
|
|
8
8
|
export const INVALID = Symbol.for("zod.compile.invalid");
|
|
9
9
|
// Set on the parse ctx when a compiled wrapper falls back to the runtime, so nested compiled wrappers skip their fast paths for the rest of that parse.
|
|
10
10
|
const FALLBACK_FLAG = Symbol.for("zod.compile.fallback");
|
|
@@ -55,45 +55,9 @@ function compileValidator(schema, parser) {
|
|
|
55
55
|
export function compile(schema, options) {
|
|
56
56
|
try {
|
|
57
57
|
const parser = compileFn(schema);
|
|
58
|
-
const clone =
|
|
59
|
-
//
|
|
60
|
-
const liveRun = schema._zod.run;
|
|
61
|
-
const originalRun = liveRun.__originalRun ?? liveRun;
|
|
62
|
-
// Delegate to the *original* schema's run on bypass/fallback (not the
|
|
63
|
-
// clone's). The original closed over its own `inst` at construction time;
|
|
64
|
-
// issue payloads use that reference to derive things like the class name
|
|
65
|
-
// for `z.instanceof(Test)`. Calling the clone's freshly-initialized run
|
|
66
|
-
// would push issues with `inst === clone`, producing diverging error
|
|
67
|
-
// messages from the original schema.
|
|
68
|
-
const wrapped = (payload, ctx) => {
|
|
69
|
-
if (ctx?.async ||
|
|
70
|
-
ctx?.direction === "backward" ||
|
|
71
|
-
ctx?.skipChecks ||
|
|
72
|
-
ctx?.[FALLBACK_FLAG]) {
|
|
73
|
-
return originalRun(payload, ctx);
|
|
74
|
-
}
|
|
75
|
-
// A memoized back-edge: only the runtime can close a reference cycle, and a transform on one must raise $ZodCyclicError from its own parse.
|
|
76
|
-
if (ctx && isBackEdge(ctx, payload.value)) {
|
|
77
|
-
return originalRun(payload, ctx);
|
|
78
|
-
}
|
|
79
|
-
const out = parser(payload.value);
|
|
80
|
-
if (out !== INVALID) {
|
|
81
|
-
payload.value = out;
|
|
82
|
-
return payload;
|
|
83
|
-
}
|
|
84
|
-
// Mark this parse as runtime-driven: under global mode every nested schema carries its own compiled wrapper, and without the flag the parent's runtime fallback re-enters each child's fast path, running user callbacks a third time on invalid input.
|
|
85
|
-
if (ctx)
|
|
86
|
-
ctx[FALLBACK_FLAG] = true;
|
|
87
|
-
return originalRun(payload, ctx);
|
|
88
|
-
};
|
|
89
|
-
// Let later compiles of (or through) this run unwrap to the true runtime — both the global shim and repeated z.compile calls rely on this. The bag also carries the parser and the validator, so the standalone validate can skip the payload and wrapper on the happy path.
|
|
90
|
-
wrapped.__originalRun = originalRun;
|
|
91
|
-
clone._zod.bag.fallbackRun = originalRun;
|
|
58
|
+
const clone = withParser(schema, parser);
|
|
59
|
+
// withParser leaves the parser as its own validator; the generated assert-only variant is better when we have one
|
|
92
60
|
clone._zod.bag.validator = compileValidator(schema, parser);
|
|
93
|
-
clone._zod.run = wrapped;
|
|
94
|
-
// The fast parse/safeParse closures fall back through the source schema's methods. If the source is shim- or wrapper-managed, those methods route into a compiled run and would execute user callbacks a third time on invalid input — the plain method → wrapper path is exactly 2x, so skip.
|
|
95
|
-
if (!liveRun.__originalRun)
|
|
96
|
-
installCompiledUserMethods(clone, schema, parser);
|
|
97
61
|
return clone;
|
|
98
62
|
}
|
|
99
63
|
catch (err) {
|
|
@@ -103,6 +67,59 @@ export function compile(schema, options) {
|
|
|
103
67
|
return schema;
|
|
104
68
|
}
|
|
105
69
|
}
|
|
70
|
+
/**
|
|
71
|
+
* Install an already-generated parser as a schema's fast path. Returns a clone; the original is
|
|
72
|
+
* unchanged.
|
|
73
|
+
*
|
|
74
|
+
* The parser takes the input and returns the parsed value, or `INVALID` to hand the parse to the
|
|
75
|
+
* runtime. It must be synchronous and forward-direction, and it must build fresh output rather than
|
|
76
|
+
* return its input — Zod cannot check either, and a wrong *success* is returned to the caller as-is.
|
|
77
|
+
*
|
|
78
|
+
* `compile()` is the ordinary entry point. This is for a build-time or native compiler that produces
|
|
79
|
+
* a parser where `new Function` is unavailable.
|
|
80
|
+
*/
|
|
81
|
+
export function withParser(schema, parser) {
|
|
82
|
+
// generated code never receives the parse context, so only the runtime can close a reference cycle; compileFn refuses these too
|
|
83
|
+
if (isRecursiveSchema(schema)) {
|
|
84
|
+
throw new ZodCompileUnsupportedError("a schema whose subtree contains a reference cycle");
|
|
85
|
+
}
|
|
86
|
+
const clone = util.clone(schema);
|
|
87
|
+
// Capture the source-of-truth runtime eagerly. If schema._zod.run is itself a shim installed by global-mode (`__originalRun` set), unwrap past it. Otherwise capturing the live property lazily would let a later self- replacement of schema._zod.run feed our wrapper back into itself.
|
|
88
|
+
const liveRun = schema._zod.run;
|
|
89
|
+
const originalRun = liveRun.__originalRun ?? liveRun;
|
|
90
|
+
// Delegate to the *original* schema's run on bypass/fallback, not the clone's. The original closed over its own `inst` at construction time, and issue payloads use that reference to derive things like the class name for `z.instanceof(Test)`; calling the clone's freshly-initialized run would push issues with `inst === clone` and diverge from the original schema's error messages.
|
|
91
|
+
const wrapped = (payload, ctx) => {
|
|
92
|
+
if (ctx?.async ||
|
|
93
|
+
ctx?.direction === "backward" ||
|
|
94
|
+
ctx?.skipChecks ||
|
|
95
|
+
ctx?.[FALLBACK_FLAG]) {
|
|
96
|
+
return originalRun(payload, ctx);
|
|
97
|
+
}
|
|
98
|
+
// A memoized back-edge: only the runtime can close a reference cycle, and a transform on one must raise $ZodCyclicError from its own parse.
|
|
99
|
+
if (ctx && isBackEdge(ctx, payload.value)) {
|
|
100
|
+
return originalRun(payload, ctx);
|
|
101
|
+
}
|
|
102
|
+
const out = parser(payload.value);
|
|
103
|
+
if (out !== INVALID) {
|
|
104
|
+
payload.value = out;
|
|
105
|
+
return payload;
|
|
106
|
+
}
|
|
107
|
+
// Mark this parse as runtime-driven: under global mode every nested schema carries its own compiled wrapper, and without the flag the parent's runtime fallback re-enters each child's fast path, running user callbacks a third time on invalid input.
|
|
108
|
+
if (ctx)
|
|
109
|
+
ctx[FALLBACK_FLAG] = true;
|
|
110
|
+
return originalRun(payload, ctx);
|
|
111
|
+
};
|
|
112
|
+
// Let later compiles of (or through) this run unwrap to the true runtime — both the global shim and repeated z.compile calls rely on this. The bag also carries the parser and the validator, so the standalone validate can skip the payload and wrapper on the happy path.
|
|
113
|
+
wrapped.__originalRun = originalRun;
|
|
114
|
+
clone._zod.bag.fallbackRun = originalRun;
|
|
115
|
+
// a supplied parser answers `validate` too: one implementation means parse and validate cannot disagree, and its undefined `definite` keeps the runtime re-parse on every rejection
|
|
116
|
+
clone._zod.bag.validator = parser;
|
|
117
|
+
clone._zod.run = wrapped;
|
|
118
|
+
// The fast parse/safeParse closures fall back through the source schema's methods. If the source is shim- or wrapper-managed, those methods route into a compiled run and would execute user callbacks a third time on invalid input — the plain method → wrapper path is exactly 2x, so skip.
|
|
119
|
+
if (!liveRun.__originalRun)
|
|
120
|
+
installCompiledUserMethods(clone, schema, parser);
|
|
121
|
+
return clone;
|
|
122
|
+
}
|
|
106
123
|
function installCompiledUserMethods(target, source, parser) {
|
|
107
124
|
const targetAny = target;
|
|
108
125
|
const sourceAny = source;
|
|
@@ -128,9 +145,8 @@ function installCompiledUserMethods(target, source, parser) {
|
|
|
128
145
|
}
|
|
129
146
|
}
|
|
130
147
|
/**
|
|
131
|
-
* Generate the standalone compiled function: a parser by default, a validator under
|
|
132
|
-
* `assertOnly`. Returns
|
|
133
|
-
* or the `INVALID` sentinel. Internal — consumers should use `compile()`.
|
|
148
|
+
* @internal Generate the standalone compiled function: a parser by default, a validator under
|
|
149
|
+
* `assertOnly`. Returns the parsed value, `true` where nothing reads the output, or `INVALID`. Consumers use `compile()`.
|
|
134
150
|
*/
|
|
135
151
|
export function compileFn(schema, options) {
|
|
136
152
|
// Cycle-breaking is keyed on the parse context, which generated code never receives. `shape` can be a getter that throws (z.pick() with an unrecognized mask key), so treat "can't tell" as recursive.
|
|
@@ -146,6 +162,7 @@ export function compileFn(schema, options) {
|
|
|
146
162
|
constants: new Map(),
|
|
147
163
|
constantCounter: 0,
|
|
148
164
|
varCounter: 0,
|
|
165
|
+
definite: true,
|
|
149
166
|
};
|
|
150
167
|
const doc = new Doc(["input"]);
|
|
151
168
|
const outputAccessor = generateCheck(doc, ctx, schema, "input", !options?.assertOnly);
|
|
@@ -174,6 +191,7 @@ export function compileFn(schema, options) {
|
|
|
174
191
|
if (options?.debug) {
|
|
175
192
|
fn.code = fullCode;
|
|
176
193
|
}
|
|
194
|
+
fn.definite = ctx.definite;
|
|
177
195
|
return fn;
|
|
178
196
|
}
|
|
179
197
|
function addConstant(ctx, value) {
|
|
@@ -186,6 +204,11 @@ function addConstant(ctx, value) {
|
|
|
186
204
|
ctx.constants.set(name, value);
|
|
187
205
|
return name;
|
|
188
206
|
}
|
|
207
|
+
/** Hoists a user-supplied callback. Anything the schema's author wrote can throw, and generated code can reject an earlier sibling before ever reaching it, so this clears `definite` — a rejection is then no longer proof that the interpreter would have rejected rather than thrown. */
|
|
208
|
+
function addUserConstant(ctx, fn) {
|
|
209
|
+
ctx.definite = false;
|
|
210
|
+
return addConstant(ctx, fn);
|
|
211
|
+
}
|
|
189
212
|
function newVar(ctx) {
|
|
190
213
|
return `v${ctx.varCounter++}`;
|
|
191
214
|
}
|
|
@@ -221,6 +244,8 @@ function compileChild(doc, ctx, schema, accessor, needsValue = true) {
|
|
|
221
244
|
}
|
|
222
245
|
}
|
|
223
246
|
function emitRuntimeIsland(doc, ctx, schema, accessor) {
|
|
247
|
+
// an islanded child answers INVALID for an async run too, which the interpreter throws for
|
|
248
|
+
ctx.definite = false;
|
|
224
249
|
const schemaConst = addConstant(ctx, schema);
|
|
225
250
|
const runConst = addConstant(ctx, runtimeRun);
|
|
226
251
|
const outVar = newVar(ctx);
|
|
@@ -304,6 +329,9 @@ function generateChecks(doc, ctx, schema, accessor) {
|
|
|
304
329
|
case "property":
|
|
305
330
|
generatePropertyCheck(doc, ctx, def, currentAccessor);
|
|
306
331
|
break;
|
|
332
|
+
case "properties":
|
|
333
|
+
generatePropertiesChecks(doc, ctx, def, currentAccessor);
|
|
334
|
+
break;
|
|
307
335
|
case "overwrite": {
|
|
308
336
|
// Overwrite transforms the value - create new variable for transformed result
|
|
309
337
|
const newAccessor = newVar(ctx);
|
|
@@ -429,6 +457,24 @@ function generateMimeTypeCheck(doc, ctx, def, accessor) {
|
|
|
429
457
|
doc.write(`if (!${mimeSet}.has(${accessor}.type)) return INVALID;`);
|
|
430
458
|
}
|
|
431
459
|
}
|
|
460
|
+
// asserts each named property in place; children compile assert-only because z.properties never rebuilds its input
|
|
461
|
+
function generatePropertiesChecks(doc, ctx, def, accessor) {
|
|
462
|
+
// a custom `when` gates the assertion at runtime; inside a union a wrongly-run branch is absorbed as a branch failure rather than falling back, so refuse at codegen
|
|
463
|
+
if (def.when) {
|
|
464
|
+
throw new ZodCompileUnsupportedError(`check with a custom "when" condition`);
|
|
465
|
+
}
|
|
466
|
+
// matches the runtime gate: the base schema already typed the value, so only a nullish one is rejected
|
|
467
|
+
doc.write(`if (${accessor} == null) return INVALID;`);
|
|
468
|
+
const shape = def.shape;
|
|
469
|
+
for (const key of Reflect.ownKeys(shape)) {
|
|
470
|
+
// a symbol has no source literal, so it is hoisted as a constant
|
|
471
|
+
const keyExpr = typeof key === "symbol" ? addConstant(ctx, key) : util.esc(key);
|
|
472
|
+
// cache the property read so a getter runs exactly once, matching the runtime
|
|
473
|
+
const inputVar = newVar(ctx);
|
|
474
|
+
doc.write(`const ${inputVar} = ${accessor}[${keyExpr}];`);
|
|
475
|
+
compileChild(doc, ctx, shape[key], inputVar, false);
|
|
476
|
+
}
|
|
477
|
+
}
|
|
432
478
|
function generatePropertyCheck(doc, ctx, def, accessor) {
|
|
433
479
|
const propAccessor = `${accessor}[${JSON.stringify(def.property)}]`;
|
|
434
480
|
generateCheck(doc, ctx, def.schema, propAccessor);
|
|
@@ -461,7 +507,7 @@ function generateCustomRefineCheck(doc, ctx, check, accessor) {
|
|
|
461
507
|
if (isAsyncFunction(def.fn)) {
|
|
462
508
|
throw new ZodCompileAsyncError("z.compile: async .refine() predicates are not supported");
|
|
463
509
|
}
|
|
464
|
-
const fnConst =
|
|
510
|
+
const fnConst = addUserConstant(ctx, def.fn);
|
|
465
511
|
const throwAsyncConst = addConstant(ctx, throwAsync);
|
|
466
512
|
const resVar = newVar(ctx);
|
|
467
513
|
doc.write(`const ${resVar} = ${fnConst}(${accessor});`);
|
|
@@ -489,7 +535,7 @@ function generateCustomRefineCheck(doc, ctx, check, accessor) {
|
|
|
489
535
|
throwAsync();
|
|
490
536
|
return fakePayload.issues.length === 0 ? fakePayload.value : INVALID;
|
|
491
537
|
};
|
|
492
|
-
const helperConst =
|
|
538
|
+
const helperConst = addUserConstant(ctx, helperFn);
|
|
493
539
|
const outVar = newVar(ctx);
|
|
494
540
|
doc.write(`const ${outVar} = ${helperConst}(${accessor});`);
|
|
495
541
|
doc.write(`if (${outVar} === INVALID) return INVALID;`);
|
|
@@ -531,8 +577,7 @@ const PATTERN_IS_COMPLETE = new Set([
|
|
|
531
577
|
"uuid",
|
|
532
578
|
"xid",
|
|
533
579
|
]);
|
|
534
|
-
|
|
535
|
-
function generateStringFormatCheck(doc, ctx, def, accessor) {
|
|
580
|
+
function generateStringFormatCheck(doc, ctx, def, accessor, needsValue = true) {
|
|
536
581
|
// Some string formats do runtime validation beyond their advertised pattern. For cheap pure utility checks, hoist the runtime function and call it so the fast path stays correct without cloning the utility logic into codegen.
|
|
537
582
|
const fmt = def.format;
|
|
538
583
|
if (fmt === "base64") {
|
|
@@ -566,6 +611,11 @@ function generateStringFormatCheck(doc, ctx, def, accessor) {
|
|
|
566
611
|
doc.write(`if (!${validator}(${accessor})) return INVALID;`);
|
|
567
612
|
return accessor;
|
|
568
613
|
}
|
|
614
|
+
if (fmt === "iban") {
|
|
615
|
+
const validator = addConstant(ctx, isValidIBAN);
|
|
616
|
+
doc.write(`if (!${validator}(${accessor})) return INVALID;`);
|
|
617
|
+
return accessor;
|
|
618
|
+
}
|
|
569
619
|
const formatDef = def;
|
|
570
620
|
if (fmt === "url" ||
|
|
571
621
|
fmt === "httpurl" ||
|
|
@@ -573,7 +623,7 @@ function generateStringFormatCheck(doc, ctx, def, accessor) {
|
|
|
573
623
|
formatDef.hostname !== undefined ||
|
|
574
624
|
formatDef.protocol !== undefined) {
|
|
575
625
|
// Same three predicates the runtime calls, in the same order, so there is no second URL implementation to drift. Which options exist is known now, so the calls the runtime makes conditionally are emitted conditionally instead.
|
|
576
|
-
const parseConst = addConstant(ctx,
|
|
626
|
+
const parseConst = addConstant(ctx, validateURL);
|
|
577
627
|
const defConst = addConstant(ctx, def);
|
|
578
628
|
const trimVar = newVar(ctx);
|
|
579
629
|
const urlVar = newVar(ctx);
|
|
@@ -588,6 +638,8 @@ function generateStringFormatCheck(doc, ctx, def, accessor) {
|
|
|
588
638
|
const protocolConst = addConstant(ctx, urlProtocolOk);
|
|
589
639
|
doc.write(`if (!${protocolConst}(${urlVar}, ${defConst}.protocol)) return INVALID;`);
|
|
590
640
|
}
|
|
641
|
+
if (!needsValue)
|
|
642
|
+
return null;
|
|
591
643
|
const outputVar = newVar(ctx);
|
|
592
644
|
const outputExpr = formatDef.normalize ? `${urlVar}.href` : `${addConstant(ctx, stripTabAndNewline)}(${trimVar})`;
|
|
593
645
|
doc.write(`const ${outputVar} = ${outputExpr};`);
|
|
@@ -652,7 +704,7 @@ function generateCheck(doc, ctx, schema, accessor, needsValue = true) {
|
|
|
652
704
|
let typeAccessor;
|
|
653
705
|
switch (type) {
|
|
654
706
|
case "string":
|
|
655
|
-
typeAccessor = generateStringCheck(doc, ctx, schema, accessor);
|
|
707
|
+
typeAccessor = generateStringCheck(doc, ctx, schema, accessor, buildsValue);
|
|
656
708
|
break;
|
|
657
709
|
case "number":
|
|
658
710
|
typeAccessor = generateNumberCheck(doc, schema, accessor);
|
|
@@ -781,13 +833,13 @@ function generateCheck(doc, ctx, schema, accessor, needsValue = true) {
|
|
|
781
833
|
// Generate checks after the type-specific validation (may transform value)
|
|
782
834
|
return generateChecks(doc, ctx, schema, typeAccessor);
|
|
783
835
|
}
|
|
784
|
-
function generateStringCheck(doc, ctx, schema, accessor) {
|
|
836
|
+
function generateStringCheck(doc, ctx, schema, accessor, needsValue = true) {
|
|
785
837
|
doc.write(`if (typeof ${accessor} !== "string") return INVALID;`);
|
|
786
838
|
// z.email() carries its format on the def, z.string().email() in def.checks; both route here so the format table has no second copy to drift from.
|
|
787
839
|
const def = schema._zod.def;
|
|
788
840
|
if (def.format === undefined)
|
|
789
841
|
return accessor;
|
|
790
|
-
return generateStringFormatCheck(doc, ctx, def, accessor);
|
|
842
|
+
return generateStringFormatCheck(doc, ctx, def, accessor, needsValue);
|
|
791
843
|
}
|
|
792
844
|
function generateNumberCheck(doc, schema, accessor) {
|
|
793
845
|
// Runtime z.number() rejects NaN and ±Infinity. Number.isFinite covers both.
|
|
@@ -922,9 +974,9 @@ function generateObjectCheck(doc, ctx, schema, accessor, buildsValue = true) {
|
|
|
922
974
|
}
|
|
923
975
|
}
|
|
924
976
|
// else: strip mode (no catchall) - unknown keys ignored, only include known keys
|
|
925
|
-
//
|
|
977
|
+
// defaulted required outputs keep their keys even when undefined
|
|
926
978
|
const outputVar = newVar(ctx);
|
|
927
|
-
const hasConditionalKeys = allKeys.some((k) =>
|
|
979
|
+
const hasConditionalKeys = allKeys.some((k) => mayOmitUndefined(propShape[k]) || dropsWhenAbsent(propShape[k]));
|
|
928
980
|
// Assert mode: every declared key is validated above, so the output literal and the unknown-key copy are pure waste. A `never` catchall already emitted its rejection loop; a schema catchall still has to validate the values it would otherwise have stored.
|
|
929
981
|
if (!buildsValue) {
|
|
930
982
|
if (unknownKeysMode === "schema") {
|
|
@@ -954,7 +1006,7 @@ function generateObjectCheck(doc, ctx, schema, accessor, buildsValue = true) {
|
|
|
954
1006
|
if (dropsWhenAbsent(propShape[k])) {
|
|
955
1007
|
doc.write(`if (${kx} in ${accessor}) ${outputVar}[${kx}] = ${out};`);
|
|
956
1008
|
}
|
|
957
|
-
else if (
|
|
1009
|
+
else if (mayOmitUndefined(propShape[k])) {
|
|
958
1010
|
doc.write(`if (${out} !== undefined || ${kx} in ${accessor}) ${outputVar}[${kx}] = ${out};`);
|
|
959
1011
|
}
|
|
960
1012
|
else {
|
|
@@ -1097,9 +1149,10 @@ function fastPathAcceptsAbsence(schema) {
|
|
|
1097
1149
|
function dropsWhenAbsent(schema) {
|
|
1098
1150
|
return schema._zod.optin === "optional" && schema._zod.optout === "optional";
|
|
1099
1151
|
}
|
|
1100
|
-
|
|
1101
|
-
|
|
1102
|
-
|
|
1152
|
+
function mayOmitUndefined(schema) {
|
|
1153
|
+
return (schema._zod.optin !== "defaulted" || schema._zod.optout === "optional") && mayOutputUndefined(schema);
|
|
1154
|
+
}
|
|
1155
|
+
// whether a schema's success-path output can be undefined
|
|
1103
1156
|
function mayOutputUndefined(schema) {
|
|
1104
1157
|
const def = schema._zod.def;
|
|
1105
1158
|
switch (def.type) {
|
|
@@ -1437,7 +1490,7 @@ function generateDiscriminatedUnionCheck(doc, ctx, def, accessor) {
|
|
|
1437
1490
|
if (!values || values.size === 0) {
|
|
1438
1491
|
throw new ZodCompileUnsupportedError("discriminated union option without static discriminator values");
|
|
1439
1492
|
}
|
|
1440
|
-
//
|
|
1493
|
+
// let the interpreter handle collisions instead of compiling first-match dispatch
|
|
1441
1494
|
for (const value of values) {
|
|
1442
1495
|
if (claimed.has(value)) {
|
|
1443
1496
|
throw new ZodCompileUnsupportedError(`duplicate discriminator value ${String(value)}`);
|
|
@@ -1481,6 +1534,8 @@ function literalEquality(ctx, accessor, value) {
|
|
|
1481
1534
|
}
|
|
1482
1535
|
function generateIntersectionCheck(doc, ctx, schema, accessor) {
|
|
1483
1536
|
const def = schema._zod.def;
|
|
1537
|
+
// An unmergeable merge, and a child failing before the merge is even reached, both return INVALID for a case the interpreter answers with a throw.
|
|
1538
|
+
ctx.definite = false;
|
|
1484
1539
|
const leftOutput = compileChild(doc, ctx, def.left, accessor);
|
|
1485
1540
|
const rightOutput = compileChild(doc, ctx, def.right, accessor);
|
|
1486
1541
|
// Hoist the runtime merge helper so recursive object/array merge semantics stay in one place. If the merge is invalid, return INVALID and let the runtime fallback construct canonical errors.
|
|
@@ -1550,14 +1605,15 @@ function generateRecordCheck(doc, ctx, schema, accessor) {
|
|
|
1550
1605
|
// The runtime runs it against each own enumerable key and writes the value
|
|
1551
1606
|
// under the key it produced, so compile it once and call it per key.
|
|
1552
1607
|
const isLoose = def.mode === "loose";
|
|
1553
|
-
|
|
1608
|
+
// the key compiles in its own context, so carry its verdict out: a key schema that can answer INVALID undecidably makes this validator undecidable too
|
|
1609
|
+
const keyFn = compileFn(def.keyType);
|
|
1610
|
+
if (keyFn.definite === false)
|
|
1611
|
+
ctx.definite = false;
|
|
1612
|
+
const keyFast = addConstant(ctx, keyFn);
|
|
1554
1613
|
const numericConst = addConstant(ctx, regexes.number);
|
|
1555
|
-
const propIsEnumerableConst = addConstant(ctx, Object.prototype.propertyIsEnumerable);
|
|
1556
1614
|
const outKeyVar = newVar(ctx);
|
|
1557
|
-
|
|
1558
|
-
doc
|
|
1559
|
-
d.write(`if (${kVar} === "__proto__") continue;`);
|
|
1560
|
-
d.write(`if (!${propIsEnumerableConst}.call(${accessor}, ${kVar})) continue;`);
|
|
1615
|
+
// the body runs once per string key and once per symbol key, since a key schema can accept symbols
|
|
1616
|
+
emitOwnKeys(doc, ctx, accessor, kVar, (d) => {
|
|
1561
1617
|
d.write(`let ${outKeyVar} = ${keyFast}(${kVar});`);
|
|
1562
1618
|
// Numeric-string retry, mirroring the runtime: a key the schema rejects as a string is tried again as a number, so z.record(z.number(), …) matches the numeric keys JavaScript stringified on the way in.
|
|
1563
1619
|
d.write(`if (${outKeyVar} === INVALID && typeof ${kVar} === "string" && ${numericConst}.test(${kVar})) ${outKeyVar} = ${keyFast}(Number(${kVar}));`);
|
|
@@ -1576,22 +1632,41 @@ function generateRecordCheck(doc, ctx, schema, accessor) {
|
|
|
1576
1632
|
const valOutput = compileChild(d, ctx, def.valueType, valueVar);
|
|
1577
1633
|
d.write(`${outputVar}[${outKeyVar}] = ${valOutput};`);
|
|
1578
1634
|
});
|
|
1579
|
-
doc.write(`}`);
|
|
1580
1635
|
return outputVar;
|
|
1581
1636
|
}
|
|
1582
|
-
// Plain z.string() keys:
|
|
1583
|
-
|
|
1584
|
-
doc.write(`for (const ${kVar} of Reflect.ownKeys(${accessor})) {`);
|
|
1585
|
-
doc.indented((d) => {
|
|
1586
|
-
d.write(`if (${kVar} === "__proto__") continue;`);
|
|
1587
|
-
d.write(`if (!${propIsEnumerable}.call(${accessor}, ${kVar})) continue;`);
|
|
1588
|
-
d.write(`if (typeof ${kVar} !== "string") return INVALID;`);
|
|
1637
|
+
// Plain z.string() keys: every own enumerable string key's value is validated, and an own enumerable symbol key fails the string key schema, as it does in the runtime's Reflect.ownKeys walk.
|
|
1638
|
+
emitOwnKeys(doc, ctx, accessor, kVar, (d) => {
|
|
1589
1639
|
d.write(`const ${valVar} = ${accessor}[${kVar}];`);
|
|
1590
1640
|
const valOutput = compileChild(d, ctx, def.valueType, valVar);
|
|
1591
1641
|
d.write(`${outputVar}[${kVar}] = ${valOutput};`);
|
|
1642
|
+
}, `return INVALID;`);
|
|
1643
|
+
return outputVar;
|
|
1644
|
+
}
|
|
1645
|
+
// Walks the own enumerable keys of a plain object in Reflect.ownKeys order — strings from getOwnPropertyNames, then symbols — instead of Reflect.ownKeys, whose accumulator made that walk 3–6x the cost of the loop it fed. Both snapshots are taken before any value is read and every key is rechecked with propertyIsEnumerable when visited, exactly the runtime's walk, so a getter that adds, deletes, hides or reveals a key mid-walk sees the runtime's verdict; for-in and Object.keys were no faster and each lost a case (for-in enumerates the prototype chain after the own keys, Object.keys drops a key that is non-enumerable at snapshot time). `body` is written once for the string loop and once for the symbol loop unless `onSymbol` replaces the latter.
|
|
1646
|
+
function emitOwnKeys(doc, ctx, accessor, kVar, body, onSymbol) {
|
|
1647
|
+
const propIsEnumerableConst = addConstant(ctx, Object.prototype.propertyIsEnumerable);
|
|
1648
|
+
const symsVar = newVar(ctx);
|
|
1649
|
+
const keysVar = newVar(ctx);
|
|
1650
|
+
const iVar = newVar(ctx);
|
|
1651
|
+
doc.write(`const ${symsVar} = Object.getOwnPropertySymbols(${accessor});`);
|
|
1652
|
+
doc.write(`const ${keysVar} = Object.getOwnPropertyNames(${accessor});`);
|
|
1653
|
+
doc.write(`for (let ${iVar} = 0; ${iVar} < ${keysVar}.length; ${iVar}++) {`);
|
|
1654
|
+
doc.indented((d) => {
|
|
1655
|
+
d.write(`const ${kVar} = ${keysVar}[${iVar}];`);
|
|
1656
|
+
d.write(`if (${kVar} === "__proto__" || !${propIsEnumerableConst}.call(${accessor}, ${kVar})) continue;`);
|
|
1657
|
+
body(d);
|
|
1658
|
+
});
|
|
1659
|
+
doc.write(`}`);
|
|
1660
|
+
doc.write(`for (let ${iVar} = 0; ${iVar} < ${symsVar}.length; ${iVar}++) {`);
|
|
1661
|
+
doc.indented((d) => {
|
|
1662
|
+
d.write(`const ${kVar} = ${symsVar}[${iVar}];`);
|
|
1663
|
+
d.write(`if (!${propIsEnumerableConst}.call(${accessor}, ${kVar})) continue;`);
|
|
1664
|
+
if (onSymbol)
|
|
1665
|
+
d.write(onSymbol);
|
|
1666
|
+
else
|
|
1667
|
+
body(d);
|
|
1592
1668
|
});
|
|
1593
1669
|
doc.write(`}`);
|
|
1594
|
-
return outputVar;
|
|
1595
1670
|
}
|
|
1596
1671
|
function literalPropertyKey(ctx, key) {
|
|
1597
1672
|
if (typeof key === "string")
|
|
@@ -1647,7 +1722,7 @@ function generateTemplateLiteralCheck(doc, ctx, schema, accessor) {
|
|
|
1647
1722
|
function generateLazyCheck(doc, ctx, schema, accessor) {
|
|
1648
1723
|
// For lazy schemas, we use a cached parser that falls back to runtime Zod parsing This handles recursive schemas correctly by avoiding infinite compilation loops
|
|
1649
1724
|
const def = schema._zod.def;
|
|
1650
|
-
const getterConst =
|
|
1725
|
+
const getterConst = addUserConstant(ctx, def.getter);
|
|
1651
1726
|
const cacheConst = addConstant(ctx, { parser: null });
|
|
1652
1727
|
doc.write(`if (!${cacheConst}.parser) {`);
|
|
1653
1728
|
doc.indented((d) => {
|
|
@@ -1671,7 +1746,7 @@ function generatePipeCheck(doc, ctx, schema, accessor) {
|
|
|
1671
1746
|
// Validate input type first
|
|
1672
1747
|
const inputOutput = generateCheck(doc, ctx, def.in, accessor);
|
|
1673
1748
|
if (def.transform) {
|
|
1674
|
-
// Apply transform and validate output. The transform may read its second `payload` argument (codec transforms like z.stringbool() push issues there) so wrap the call in a helper that spoofs a payload. Pushed issues signal INVALID and the wrapper falls back to the runtime.
|
|
1749
|
+
// Apply transform and validate output. The transform may read its second `payload` argument (codec transforms like z.stringbool() push issues there) so wrap the call in a helper that spoofs a payload. Pushed issues signal INVALID and the wrapper falls back to the runtime, and a plain function handing back a promise answers INVALID too — union parity, but not a decidable rejection at the top level.
|
|
1675
1750
|
if (isAsyncFunction(def.transform)) {
|
|
1676
1751
|
throw new ZodCompileAsyncError("z.compile: async transforms in pipes are not supported");
|
|
1677
1752
|
}
|
|
@@ -1685,7 +1760,7 @@ function generatePipeCheck(doc, ctx, schema, accessor) {
|
|
|
1685
1760
|
return INVALID;
|
|
1686
1761
|
return fakePayload.issues.length === 0 ? result : INVALID;
|
|
1687
1762
|
};
|
|
1688
|
-
const helperConst =
|
|
1763
|
+
const helperConst = addUserConstant(ctx, helperFn);
|
|
1689
1764
|
const transformedVar = newVar(ctx);
|
|
1690
1765
|
doc.write(`const ${transformedVar} = ${helperConst}(${inputOutput});`);
|
|
1691
1766
|
doc.write(`if (${transformedVar} === INVALID) return INVALID;`);
|
|
@@ -1709,7 +1784,7 @@ function generateCustomCheck(doc, ctx, schema, accessor) {
|
|
|
1709
1784
|
throw new ZodCompileAsyncError("z.compile: async custom predicates are not supported");
|
|
1710
1785
|
}
|
|
1711
1786
|
// Custom schema with a predicate function (e.g. z.instanceof). `isAsyncFunction` above is syntactic, so a plain function returning a promise reaches here, and a promise is truthy — it would read as a pass where the interpreter throws.
|
|
1712
|
-
const fnConst =
|
|
1787
|
+
const fnConst = addUserConstant(ctx, def.fn);
|
|
1713
1788
|
const throwAsyncConst = addConstant(ctx, throwAsync);
|
|
1714
1789
|
const resVar = newVar(ctx);
|
|
1715
1790
|
doc.write(`const ${resVar} = ${fnConst}(${accessor});`);
|
|
@@ -1746,7 +1821,7 @@ function generateCatchCheck(doc, ctx, schema, accessor) {
|
|
|
1746
1821
|
});
|
|
1747
1822
|
doc.write(`})();`);
|
|
1748
1823
|
const innerConst = addConstant(ctx, def.innerType);
|
|
1749
|
-
const catchConst =
|
|
1824
|
+
const catchConst = addUserConstant(ctx, def.catchValue);
|
|
1750
1825
|
const catchHelperConst = addConstant(ctx, runtimeCatch);
|
|
1751
1826
|
doc.write(`if (${outputVar} === INVALID) {`);
|
|
1752
1827
|
doc.indented((d) => {
|
|
@@ -1773,7 +1848,7 @@ function generateTransformCheck(doc, ctx, schema, accessor) {
|
|
|
1773
1848
|
return INVALID;
|
|
1774
1849
|
return fakePayload.issues.length === 0 ? result : INVALID;
|
|
1775
1850
|
};
|
|
1776
|
-
const helperConst =
|
|
1851
|
+
const helperConst = addUserConstant(ctx, helperFn);
|
|
1777
1852
|
const outputVar = newVar(ctx);
|
|
1778
1853
|
doc.write(`const ${outputVar} = ${helperConst}(${accessor});`);
|
|
1779
1854
|
doc.write(`if (${outputVar} === INVALID) return INVALID;`);
|
|
@@ -63,7 +63,7 @@ proto, params) {
|
|
|
63
63
|
_zodDesc.value = undefined;
|
|
64
64
|
}
|
|
65
65
|
}
|
|
66
|
-
if (inst._zod.traits.has(name)) {
|
|
66
|
+
else if (inst._zod.traits.has(name)) {
|
|
67
67
|
return;
|
|
68
68
|
}
|
|
69
69
|
inst._zod.traits.add(name);
|
|
@@ -146,3 +146,22 @@ function config(newConfig) {
|
|
|
146
146
|
Object.assign(exports.globalConfig, newConfig);
|
|
147
147
|
return exports.globalConfig;
|
|
148
148
|
}
|
|
149
|
+
|
|
150
|
+
// seal-cjs-exports
|
|
151
|
+
(function () {
|
|
152
|
+
var keys = Object.getOwnPropertyNames(exports);
|
|
153
|
+
for (var i = 0; i < keys.length; i++) {
|
|
154
|
+
var desc = Object.getOwnPropertyDescriptor(exports, keys[i]);
|
|
155
|
+
if (!desc || !desc.get || !desc.configurable) continue;
|
|
156
|
+
var value;
|
|
157
|
+
try {
|
|
158
|
+
value = desc.get();
|
|
159
|
+
} catch (e) {
|
|
160
|
+
continue;
|
|
161
|
+
}
|
|
162
|
+
// a circular require may not have settled this one yet, so leave it live
|
|
163
|
+
if (value === undefined) continue;
|
|
164
|
+
Object.defineProperty(exports, keys[i], { value: value, writable: false, enumerable: desc.enumerable, configurable: false });
|
|
165
|
+
}
|
|
166
|
+
Object.freeze(exports);
|
|
167
|
+
})();
|
|
@@ -8,10 +8,15 @@ class Doc {
|
|
|
8
8
|
this.args = args;
|
|
9
9
|
this.closed = closed;
|
|
10
10
|
}
|
|
11
|
+
// the compiler catches a child's throw and keeps writing into this doc, so the indent has to unwind with it
|
|
11
12
|
indented(fn) {
|
|
12
13
|
this.indent += 1;
|
|
13
|
-
|
|
14
|
-
|
|
14
|
+
try {
|
|
15
|
+
fn(this);
|
|
16
|
+
}
|
|
17
|
+
finally {
|
|
18
|
+
this.indent -= 1;
|
|
19
|
+
}
|
|
15
20
|
}
|
|
16
21
|
write(arg) {
|
|
17
22
|
if (typeof arg === "function") {
|
|
@@ -35,3 +40,22 @@ class Doc {
|
|
|
35
40
|
}
|
|
36
41
|
}
|
|
37
42
|
exports.Doc = Doc;
|
|
43
|
+
|
|
44
|
+
// seal-cjs-exports
|
|
45
|
+
(function () {
|
|
46
|
+
var keys = Object.getOwnPropertyNames(exports);
|
|
47
|
+
for (var i = 0; i < keys.length; i++) {
|
|
48
|
+
var desc = Object.getOwnPropertyDescriptor(exports, keys[i]);
|
|
49
|
+
if (!desc || !desc.get || !desc.configurable) continue;
|
|
50
|
+
var value;
|
|
51
|
+
try {
|
|
52
|
+
value = desc.get();
|
|
53
|
+
} catch (e) {
|
|
54
|
+
continue;
|
|
55
|
+
}
|
|
56
|
+
// a circular require may not have settled this one yet, so leave it live
|
|
57
|
+
if (value === undefined) continue;
|
|
58
|
+
Object.defineProperty(exports, keys[i], { value: value, writable: false, enumerable: desc.enumerable, configurable: false });
|
|
59
|
+
}
|
|
60
|
+
Object.freeze(exports);
|
|
61
|
+
})();
|
|
@@ -5,10 +5,15 @@ export class Doc {
|
|
|
5
5
|
this.args = args;
|
|
6
6
|
this.closed = closed;
|
|
7
7
|
}
|
|
8
|
+
// the compiler catches a child's throw and keeps writing into this doc, so the indent has to unwind with it
|
|
8
9
|
indented(fn) {
|
|
9
10
|
this.indent += 1;
|
|
10
|
-
|
|
11
|
-
|
|
11
|
+
try {
|
|
12
|
+
fn(this);
|
|
13
|
+
}
|
|
14
|
+
finally {
|
|
15
|
+
this.indent -= 1;
|
|
16
|
+
}
|
|
12
17
|
}
|
|
13
18
|
write(arg) {
|
|
14
19
|
if (typeof arg === "function") {
|
|
@@ -51,7 +51,6 @@ const _messageDesc = {
|
|
|
51
51
|
enumerable: true,
|
|
52
52
|
configurable: true,
|
|
53
53
|
};
|
|
54
|
-
const _zodDesc = { value: undefined, enumerable: false };
|
|
55
54
|
const _issuesDesc = { value: undefined, enumerable: false };
|
|
56
55
|
/* Prototypes that already carry the lazy `toString`. Seeded with the
|
|
57
56
|
* intrinsics so that `init` on a foreign object — it accepts any object —
|
|
@@ -59,12 +58,10 @@ const _issuesDesc = { value: undefined, enumerable: false };
|
|
|
59
58
|
const _installedToString = /* @__PURE__ */ new WeakSet([Object.prototype, Error.prototype]);
|
|
60
59
|
const initializer = (inst, def) => {
|
|
61
60
|
inst.name = "$ZodError";
|
|
62
|
-
|
|
63
|
-
Object.defineProperty(inst, "_zod", _zodDesc);
|
|
61
|
+
// `_zod` is already non-enumerable: $constructor's init defined it with this same descriptor
|
|
64
62
|
_issuesDesc.value = def;
|
|
65
63
|
Object.defineProperty(inst, "issues", _issuesDesc);
|
|
66
|
-
// Clear the shared
|
|
67
|
-
_zodDesc.value = undefined;
|
|
64
|
+
// Clear the shared slot; a retained `value` pins the last error's issues.
|
|
68
65
|
_issuesDesc.value = undefined;
|
|
69
66
|
Object.defineProperty(inst, "message", _messageDesc);
|
|
70
67
|
/* `toString` lives as a non-enumerable lazy getter on the shared
|
|
@@ -299,3 +296,22 @@ function prettifyError(error) {
|
|
|
299
296
|
// Convert Map to formatted string
|
|
300
297
|
return lines.join("\n");
|
|
301
298
|
}
|
|
299
|
+
|
|
300
|
+
// seal-cjs-exports
|
|
301
|
+
(function () {
|
|
302
|
+
var keys = Object.getOwnPropertyNames(exports);
|
|
303
|
+
for (var i = 0; i < keys.length; i++) {
|
|
304
|
+
var desc = Object.getOwnPropertyDescriptor(exports, keys[i]);
|
|
305
|
+
if (!desc || !desc.get || !desc.configurable) continue;
|
|
306
|
+
var value;
|
|
307
|
+
try {
|
|
308
|
+
value = desc.get();
|
|
309
|
+
} catch (e) {
|
|
310
|
+
continue;
|
|
311
|
+
}
|
|
312
|
+
// a circular require may not have settled this one yet, so leave it live
|
|
313
|
+
if (value === undefined) continue;
|
|
314
|
+
Object.defineProperty(exports, keys[i], { value: value, writable: false, enumerable: desc.enumerable, configurable: false });
|
|
315
|
+
}
|
|
316
|
+
Object.freeze(exports);
|
|
317
|
+
})();
|
|
@@ -20,7 +20,6 @@ const _messageDesc = {
|
|
|
20
20
|
enumerable: true,
|
|
21
21
|
configurable: true,
|
|
22
22
|
};
|
|
23
|
-
const _zodDesc = { value: undefined, enumerable: false };
|
|
24
23
|
const _issuesDesc = { value: undefined, enumerable: false };
|
|
25
24
|
/* Prototypes that already carry the lazy `toString`. Seeded with the
|
|
26
25
|
* intrinsics so that `init` on a foreign object — it accepts any object —
|
|
@@ -28,12 +27,10 @@ const _issuesDesc = { value: undefined, enumerable: false };
|
|
|
28
27
|
const _installedToString = /* @__PURE__ */ new WeakSet([Object.prototype, Error.prototype]);
|
|
29
28
|
const initializer = (inst, def) => {
|
|
30
29
|
inst.name = "$ZodError";
|
|
31
|
-
|
|
32
|
-
Object.defineProperty(inst, "_zod", _zodDesc);
|
|
30
|
+
// `_zod` is already non-enumerable: $constructor's init defined it with this same descriptor
|
|
33
31
|
_issuesDesc.value = def;
|
|
34
32
|
Object.defineProperty(inst, "issues", _issuesDesc);
|
|
35
|
-
// Clear the shared
|
|
36
|
-
_zodDesc.value = undefined;
|
|
33
|
+
// Clear the shared slot; a retained `value` pins the last error's issues.
|
|
37
34
|
_issuesDesc.value = undefined;
|
|
38
35
|
Object.defineProperty(inst, "message", _messageDesc);
|
|
39
36
|
/* `toString` lives as a non-enumerable lazy getter on the shared
|
|
@@ -49,3 +49,22 @@ Object.defineProperty(exports, "toJSONSchema", { enumerable: true, get: function
|
|
|
49
49
|
var json_schema_generator_js_1 = require("./json-schema-generator.cjs");
|
|
50
50
|
Object.defineProperty(exports, "JSONSchemaGenerator", { enumerable: true, get: function () { return json_schema_generator_js_1.JSONSchemaGenerator; } });
|
|
51
51
|
exports.JSONSchema = __importStar(require("./json-schema.cjs"));
|
|
52
|
+
|
|
53
|
+
// seal-cjs-exports
|
|
54
|
+
(function () {
|
|
55
|
+
var keys = Object.getOwnPropertyNames(exports);
|
|
56
|
+
for (var i = 0; i < keys.length; i++) {
|
|
57
|
+
var desc = Object.getOwnPropertyDescriptor(exports, keys[i]);
|
|
58
|
+
if (!desc || !desc.get || !desc.configurable) continue;
|
|
59
|
+
var value;
|
|
60
|
+
try {
|
|
61
|
+
value = desc.get();
|
|
62
|
+
} catch (e) {
|
|
63
|
+
continue;
|
|
64
|
+
}
|
|
65
|
+
// a circular require may not have settled this one yet, so leave it live
|
|
66
|
+
if (value === undefined) continue;
|
|
67
|
+
Object.defineProperty(exports, keys[i], { value: value, writable: false, enumerable: desc.enumerable, configurable: false });
|
|
68
|
+
}
|
|
69
|
+
Object.freeze(exports);
|
|
70
|
+
})();
|