@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
|
@@ -25,6 +25,7 @@ var __importStar = (this && this.__importStar) || function (mod) {
|
|
|
25
25
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
26
|
exports.ZodCompileUnsupportedError = exports.ZodCompileAsyncError = exports.INVALID = void 0;
|
|
27
27
|
exports.compile = compile;
|
|
28
|
+
exports.withParser = withParser;
|
|
28
29
|
exports.compileFn = compileFn;
|
|
29
30
|
const core_js_1 = require("./core.cjs");
|
|
30
31
|
const doc_js_1 = require("./doc.cjs");
|
|
@@ -32,7 +33,7 @@ const memoizer_js_1 = require("./memoizer.cjs");
|
|
|
32
33
|
const regexes = __importStar(require("./regexes.cjs"));
|
|
33
34
|
const schemas_js_1 = require("./schemas.cjs");
|
|
34
35
|
const util = __importStar(require("./util.cjs"));
|
|
35
|
-
/** Sentinel
|
|
36
|
+
/** @internal Sentinel the compiled fast path returns when validation fails. */
|
|
36
37
|
exports.INVALID = Symbol.for("zod.compile.invalid");
|
|
37
38
|
// 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.
|
|
38
39
|
const FALLBACK_FLAG = Symbol.for("zod.compile.fallback");
|
|
@@ -85,45 +86,9 @@ function compileValidator(schema, parser) {
|
|
|
85
86
|
function compile(schema, options) {
|
|
86
87
|
try {
|
|
87
88
|
const parser = compileFn(schema);
|
|
88
|
-
const clone =
|
|
89
|
-
//
|
|
90
|
-
const liveRun = schema._zod.run;
|
|
91
|
-
const originalRun = liveRun.__originalRun ?? liveRun;
|
|
92
|
-
// Delegate to the *original* schema's run on bypass/fallback (not the
|
|
93
|
-
// clone's). The original closed over its own `inst` at construction time;
|
|
94
|
-
// issue payloads use that reference to derive things like the class name
|
|
95
|
-
// for `z.instanceof(Test)`. Calling the clone's freshly-initialized run
|
|
96
|
-
// would push issues with `inst === clone`, producing diverging error
|
|
97
|
-
// messages from the original schema.
|
|
98
|
-
const wrapped = (payload, ctx) => {
|
|
99
|
-
if (ctx?.async ||
|
|
100
|
-
ctx?.direction === "backward" ||
|
|
101
|
-
ctx?.skipChecks ||
|
|
102
|
-
ctx?.[FALLBACK_FLAG]) {
|
|
103
|
-
return originalRun(payload, ctx);
|
|
104
|
-
}
|
|
105
|
-
// A memoized back-edge: only the runtime can close a reference cycle, and a transform on one must raise $ZodCyclicError from its own parse.
|
|
106
|
-
if (ctx && (0, memoizer_js_1.isBackEdge)(ctx, payload.value)) {
|
|
107
|
-
return originalRun(payload, ctx);
|
|
108
|
-
}
|
|
109
|
-
const out = parser(payload.value);
|
|
110
|
-
if (out !== exports.INVALID) {
|
|
111
|
-
payload.value = out;
|
|
112
|
-
return payload;
|
|
113
|
-
}
|
|
114
|
-
// 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.
|
|
115
|
-
if (ctx)
|
|
116
|
-
ctx[FALLBACK_FLAG] = true;
|
|
117
|
-
return originalRun(payload, ctx);
|
|
118
|
-
};
|
|
119
|
-
// 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.
|
|
120
|
-
wrapped.__originalRun = originalRun;
|
|
121
|
-
clone._zod.bag.fallbackRun = originalRun;
|
|
89
|
+
const clone = withParser(schema, parser);
|
|
90
|
+
// withParser leaves the parser as its own validator; the generated assert-only variant is better when we have one
|
|
122
91
|
clone._zod.bag.validator = compileValidator(schema, parser);
|
|
123
|
-
clone._zod.run = wrapped;
|
|
124
|
-
// 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.
|
|
125
|
-
if (!liveRun.__originalRun)
|
|
126
|
-
installCompiledUserMethods(clone, schema, parser);
|
|
127
92
|
return clone;
|
|
128
93
|
}
|
|
129
94
|
catch (err) {
|
|
@@ -133,6 +98,59 @@ function compile(schema, options) {
|
|
|
133
98
|
return schema;
|
|
134
99
|
}
|
|
135
100
|
}
|
|
101
|
+
/**
|
|
102
|
+
* Install an already-generated parser as a schema's fast path. Returns a clone; the original is
|
|
103
|
+
* unchanged.
|
|
104
|
+
*
|
|
105
|
+
* The parser takes the input and returns the parsed value, or `INVALID` to hand the parse to the
|
|
106
|
+
* runtime. It must be synchronous and forward-direction, and it must build fresh output rather than
|
|
107
|
+
* return its input — Zod cannot check either, and a wrong *success* is returned to the caller as-is.
|
|
108
|
+
*
|
|
109
|
+
* `compile()` is the ordinary entry point. This is for a build-time or native compiler that produces
|
|
110
|
+
* a parser where `new Function` is unavailable.
|
|
111
|
+
*/
|
|
112
|
+
function withParser(schema, parser) {
|
|
113
|
+
// generated code never receives the parse context, so only the runtime can close a reference cycle; compileFn refuses these too
|
|
114
|
+
if ((0, memoizer_js_1.isRecursiveSchema)(schema)) {
|
|
115
|
+
throw new ZodCompileUnsupportedError("a schema whose subtree contains a reference cycle");
|
|
116
|
+
}
|
|
117
|
+
const clone = util.clone(schema);
|
|
118
|
+
// 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.
|
|
119
|
+
const liveRun = schema._zod.run;
|
|
120
|
+
const originalRun = liveRun.__originalRun ?? liveRun;
|
|
121
|
+
// 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.
|
|
122
|
+
const wrapped = (payload, ctx) => {
|
|
123
|
+
if (ctx?.async ||
|
|
124
|
+
ctx?.direction === "backward" ||
|
|
125
|
+
ctx?.skipChecks ||
|
|
126
|
+
ctx?.[FALLBACK_FLAG]) {
|
|
127
|
+
return originalRun(payload, ctx);
|
|
128
|
+
}
|
|
129
|
+
// A memoized back-edge: only the runtime can close a reference cycle, and a transform on one must raise $ZodCyclicError from its own parse.
|
|
130
|
+
if (ctx && (0, memoizer_js_1.isBackEdge)(ctx, payload.value)) {
|
|
131
|
+
return originalRun(payload, ctx);
|
|
132
|
+
}
|
|
133
|
+
const out = parser(payload.value);
|
|
134
|
+
if (out !== exports.INVALID) {
|
|
135
|
+
payload.value = out;
|
|
136
|
+
return payload;
|
|
137
|
+
}
|
|
138
|
+
// 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.
|
|
139
|
+
if (ctx)
|
|
140
|
+
ctx[FALLBACK_FLAG] = true;
|
|
141
|
+
return originalRun(payload, ctx);
|
|
142
|
+
};
|
|
143
|
+
// 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.
|
|
144
|
+
wrapped.__originalRun = originalRun;
|
|
145
|
+
clone._zod.bag.fallbackRun = originalRun;
|
|
146
|
+
// 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
|
|
147
|
+
clone._zod.bag.validator = parser;
|
|
148
|
+
clone._zod.run = wrapped;
|
|
149
|
+
// 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.
|
|
150
|
+
if (!liveRun.__originalRun)
|
|
151
|
+
installCompiledUserMethods(clone, schema, parser);
|
|
152
|
+
return clone;
|
|
153
|
+
}
|
|
136
154
|
function installCompiledUserMethods(target, source, parser) {
|
|
137
155
|
const targetAny = target;
|
|
138
156
|
const sourceAny = source;
|
|
@@ -158,9 +176,8 @@ function installCompiledUserMethods(target, source, parser) {
|
|
|
158
176
|
}
|
|
159
177
|
}
|
|
160
178
|
/**
|
|
161
|
-
* Generate the standalone compiled function: a parser by default, a validator under
|
|
162
|
-
* `assertOnly`. Returns
|
|
163
|
-
* or the `INVALID` sentinel. Internal — consumers should use `compile()`.
|
|
179
|
+
* @internal Generate the standalone compiled function: a parser by default, a validator under
|
|
180
|
+
* `assertOnly`. Returns the parsed value, `true` where nothing reads the output, or `INVALID`. Consumers use `compile()`.
|
|
164
181
|
*/
|
|
165
182
|
function compileFn(schema, options) {
|
|
166
183
|
// 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.
|
|
@@ -176,6 +193,7 @@ function compileFn(schema, options) {
|
|
|
176
193
|
constants: new Map(),
|
|
177
194
|
constantCounter: 0,
|
|
178
195
|
varCounter: 0,
|
|
196
|
+
definite: true,
|
|
179
197
|
};
|
|
180
198
|
const doc = new doc_js_1.Doc(["input"]);
|
|
181
199
|
const outputAccessor = generateCheck(doc, ctx, schema, "input", !options?.assertOnly);
|
|
@@ -204,6 +222,7 @@ function compileFn(schema, options) {
|
|
|
204
222
|
if (options?.debug) {
|
|
205
223
|
fn.code = fullCode;
|
|
206
224
|
}
|
|
225
|
+
fn.definite = ctx.definite;
|
|
207
226
|
return fn;
|
|
208
227
|
}
|
|
209
228
|
function addConstant(ctx, value) {
|
|
@@ -216,6 +235,11 @@ function addConstant(ctx, value) {
|
|
|
216
235
|
ctx.constants.set(name, value);
|
|
217
236
|
return name;
|
|
218
237
|
}
|
|
238
|
+
/** 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. */
|
|
239
|
+
function addUserConstant(ctx, fn) {
|
|
240
|
+
ctx.definite = false;
|
|
241
|
+
return addConstant(ctx, fn);
|
|
242
|
+
}
|
|
219
243
|
function newVar(ctx) {
|
|
220
244
|
return `v${ctx.varCounter++}`;
|
|
221
245
|
}
|
|
@@ -251,6 +275,8 @@ function compileChild(doc, ctx, schema, accessor, needsValue = true) {
|
|
|
251
275
|
}
|
|
252
276
|
}
|
|
253
277
|
function emitRuntimeIsland(doc, ctx, schema, accessor) {
|
|
278
|
+
// an islanded child answers INVALID for an async run too, which the interpreter throws for
|
|
279
|
+
ctx.definite = false;
|
|
254
280
|
const schemaConst = addConstant(ctx, schema);
|
|
255
281
|
const runConst = addConstant(ctx, runtimeRun);
|
|
256
282
|
const outVar = newVar(ctx);
|
|
@@ -334,6 +360,9 @@ function generateChecks(doc, ctx, schema, accessor) {
|
|
|
334
360
|
case "property":
|
|
335
361
|
generatePropertyCheck(doc, ctx, def, currentAccessor);
|
|
336
362
|
break;
|
|
363
|
+
case "properties":
|
|
364
|
+
generatePropertiesChecks(doc, ctx, def, currentAccessor);
|
|
365
|
+
break;
|
|
337
366
|
case "overwrite": {
|
|
338
367
|
// Overwrite transforms the value - create new variable for transformed result
|
|
339
368
|
const newAccessor = newVar(ctx);
|
|
@@ -459,6 +488,24 @@ function generateMimeTypeCheck(doc, ctx, def, accessor) {
|
|
|
459
488
|
doc.write(`if (!${mimeSet}.has(${accessor}.type)) return INVALID;`);
|
|
460
489
|
}
|
|
461
490
|
}
|
|
491
|
+
// asserts each named property in place; children compile assert-only because z.properties never rebuilds its input
|
|
492
|
+
function generatePropertiesChecks(doc, ctx, def, accessor) {
|
|
493
|
+
// 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
|
|
494
|
+
if (def.when) {
|
|
495
|
+
throw new ZodCompileUnsupportedError(`check with a custom "when" condition`);
|
|
496
|
+
}
|
|
497
|
+
// matches the runtime gate: the base schema already typed the value, so only a nullish one is rejected
|
|
498
|
+
doc.write(`if (${accessor} == null) return INVALID;`);
|
|
499
|
+
const shape = def.shape;
|
|
500
|
+
for (const key of Reflect.ownKeys(shape)) {
|
|
501
|
+
// a symbol has no source literal, so it is hoisted as a constant
|
|
502
|
+
const keyExpr = typeof key === "symbol" ? addConstant(ctx, key) : util.esc(key);
|
|
503
|
+
// cache the property read so a getter runs exactly once, matching the runtime
|
|
504
|
+
const inputVar = newVar(ctx);
|
|
505
|
+
doc.write(`const ${inputVar} = ${accessor}[${keyExpr}];`);
|
|
506
|
+
compileChild(doc, ctx, shape[key], inputVar, false);
|
|
507
|
+
}
|
|
508
|
+
}
|
|
462
509
|
function generatePropertyCheck(doc, ctx, def, accessor) {
|
|
463
510
|
const propAccessor = `${accessor}[${JSON.stringify(def.property)}]`;
|
|
464
511
|
generateCheck(doc, ctx, def.schema, propAccessor);
|
|
@@ -491,7 +538,7 @@ function generateCustomRefineCheck(doc, ctx, check, accessor) {
|
|
|
491
538
|
if (isAsyncFunction(def.fn)) {
|
|
492
539
|
throw new ZodCompileAsyncError("z.compile: async .refine() predicates are not supported");
|
|
493
540
|
}
|
|
494
|
-
const fnConst =
|
|
541
|
+
const fnConst = addUserConstant(ctx, def.fn);
|
|
495
542
|
const throwAsyncConst = addConstant(ctx, throwAsync);
|
|
496
543
|
const resVar = newVar(ctx);
|
|
497
544
|
doc.write(`const ${resVar} = ${fnConst}(${accessor});`);
|
|
@@ -519,7 +566,7 @@ function generateCustomRefineCheck(doc, ctx, check, accessor) {
|
|
|
519
566
|
throwAsync();
|
|
520
567
|
return fakePayload.issues.length === 0 ? fakePayload.value : exports.INVALID;
|
|
521
568
|
};
|
|
522
|
-
const helperConst =
|
|
569
|
+
const helperConst = addUserConstant(ctx, helperFn);
|
|
523
570
|
const outVar = newVar(ctx);
|
|
524
571
|
doc.write(`const ${outVar} = ${helperConst}(${accessor});`);
|
|
525
572
|
doc.write(`if (${outVar} === INVALID) return INVALID;`);
|
|
@@ -561,8 +608,7 @@ const PATTERN_IS_COMPLETE = new Set([
|
|
|
561
608
|
"uuid",
|
|
562
609
|
"xid",
|
|
563
610
|
]);
|
|
564
|
-
|
|
565
|
-
function generateStringFormatCheck(doc, ctx, def, accessor) {
|
|
611
|
+
function generateStringFormatCheck(doc, ctx, def, accessor, needsValue = true) {
|
|
566
612
|
// 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.
|
|
567
613
|
const fmt = def.format;
|
|
568
614
|
if (fmt === "base64") {
|
|
@@ -596,6 +642,11 @@ function generateStringFormatCheck(doc, ctx, def, accessor) {
|
|
|
596
642
|
doc.write(`if (!${validator}(${accessor})) return INVALID;`);
|
|
597
643
|
return accessor;
|
|
598
644
|
}
|
|
645
|
+
if (fmt === "iban") {
|
|
646
|
+
const validator = addConstant(ctx, schemas_js_1.isValidIBAN);
|
|
647
|
+
doc.write(`if (!${validator}(${accessor})) return INVALID;`);
|
|
648
|
+
return accessor;
|
|
649
|
+
}
|
|
599
650
|
const formatDef = def;
|
|
600
651
|
if (fmt === "url" ||
|
|
601
652
|
fmt === "httpurl" ||
|
|
@@ -603,7 +654,7 @@ function generateStringFormatCheck(doc, ctx, def, accessor) {
|
|
|
603
654
|
formatDef.hostname !== undefined ||
|
|
604
655
|
formatDef.protocol !== undefined) {
|
|
605
656
|
// 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.
|
|
606
|
-
const parseConst = addConstant(ctx, schemas_js_1.
|
|
657
|
+
const parseConst = addConstant(ctx, schemas_js_1.validateURL);
|
|
607
658
|
const defConst = addConstant(ctx, def);
|
|
608
659
|
const trimVar = newVar(ctx);
|
|
609
660
|
const urlVar = newVar(ctx);
|
|
@@ -618,6 +669,8 @@ function generateStringFormatCheck(doc, ctx, def, accessor) {
|
|
|
618
669
|
const protocolConst = addConstant(ctx, schemas_js_1.urlProtocolOk);
|
|
619
670
|
doc.write(`if (!${protocolConst}(${urlVar}, ${defConst}.protocol)) return INVALID;`);
|
|
620
671
|
}
|
|
672
|
+
if (!needsValue)
|
|
673
|
+
return null;
|
|
621
674
|
const outputVar = newVar(ctx);
|
|
622
675
|
const outputExpr = formatDef.normalize ? `${urlVar}.href` : `${addConstant(ctx, schemas_js_1.stripTabAndNewline)}(${trimVar})`;
|
|
623
676
|
doc.write(`const ${outputVar} = ${outputExpr};`);
|
|
@@ -682,7 +735,7 @@ function generateCheck(doc, ctx, schema, accessor, needsValue = true) {
|
|
|
682
735
|
let typeAccessor;
|
|
683
736
|
switch (type) {
|
|
684
737
|
case "string":
|
|
685
|
-
typeAccessor = generateStringCheck(doc, ctx, schema, accessor);
|
|
738
|
+
typeAccessor = generateStringCheck(doc, ctx, schema, accessor, buildsValue);
|
|
686
739
|
break;
|
|
687
740
|
case "number":
|
|
688
741
|
typeAccessor = generateNumberCheck(doc, schema, accessor);
|
|
@@ -811,13 +864,13 @@ function generateCheck(doc, ctx, schema, accessor, needsValue = true) {
|
|
|
811
864
|
// Generate checks after the type-specific validation (may transform value)
|
|
812
865
|
return generateChecks(doc, ctx, schema, typeAccessor);
|
|
813
866
|
}
|
|
814
|
-
function generateStringCheck(doc, ctx, schema, accessor) {
|
|
867
|
+
function generateStringCheck(doc, ctx, schema, accessor, needsValue = true) {
|
|
815
868
|
doc.write(`if (typeof ${accessor} !== "string") return INVALID;`);
|
|
816
869
|
// 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.
|
|
817
870
|
const def = schema._zod.def;
|
|
818
871
|
if (def.format === undefined)
|
|
819
872
|
return accessor;
|
|
820
|
-
return generateStringFormatCheck(doc, ctx, def, accessor);
|
|
873
|
+
return generateStringFormatCheck(doc, ctx, def, accessor, needsValue);
|
|
821
874
|
}
|
|
822
875
|
function generateNumberCheck(doc, schema, accessor) {
|
|
823
876
|
// Runtime z.number() rejects NaN and ±Infinity. Number.isFinite covers both.
|
|
@@ -952,9 +1005,9 @@ function generateObjectCheck(doc, ctx, schema, accessor, buildsValue = true) {
|
|
|
952
1005
|
}
|
|
953
1006
|
}
|
|
954
1007
|
// else: strip mode (no catchall) - unknown keys ignored, only include known keys
|
|
955
|
-
//
|
|
1008
|
+
// defaulted required outputs keep their keys even when undefined
|
|
956
1009
|
const outputVar = newVar(ctx);
|
|
957
|
-
const hasConditionalKeys = allKeys.some((k) =>
|
|
1010
|
+
const hasConditionalKeys = allKeys.some((k) => mayOmitUndefined(propShape[k]) || dropsWhenAbsent(propShape[k]));
|
|
958
1011
|
// 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.
|
|
959
1012
|
if (!buildsValue) {
|
|
960
1013
|
if (unknownKeysMode === "schema") {
|
|
@@ -984,7 +1037,7 @@ function generateObjectCheck(doc, ctx, schema, accessor, buildsValue = true) {
|
|
|
984
1037
|
if (dropsWhenAbsent(propShape[k])) {
|
|
985
1038
|
doc.write(`if (${kx} in ${accessor}) ${outputVar}[${kx}] = ${out};`);
|
|
986
1039
|
}
|
|
987
|
-
else if (
|
|
1040
|
+
else if (mayOmitUndefined(propShape[k])) {
|
|
988
1041
|
doc.write(`if (${out} !== undefined || ${kx} in ${accessor}) ${outputVar}[${kx}] = ${out};`);
|
|
989
1042
|
}
|
|
990
1043
|
else {
|
|
@@ -1127,9 +1180,10 @@ function fastPathAcceptsAbsence(schema) {
|
|
|
1127
1180
|
function dropsWhenAbsent(schema) {
|
|
1128
1181
|
return schema._zod.optin === "optional" && schema._zod.optout === "optional";
|
|
1129
1182
|
}
|
|
1130
|
-
|
|
1131
|
-
|
|
1132
|
-
|
|
1183
|
+
function mayOmitUndefined(schema) {
|
|
1184
|
+
return (schema._zod.optin !== "defaulted" || schema._zod.optout === "optional") && mayOutputUndefined(schema);
|
|
1185
|
+
}
|
|
1186
|
+
// whether a schema's success-path output can be undefined
|
|
1133
1187
|
function mayOutputUndefined(schema) {
|
|
1134
1188
|
const def = schema._zod.def;
|
|
1135
1189
|
switch (def.type) {
|
|
@@ -1467,7 +1521,7 @@ function generateDiscriminatedUnionCheck(doc, ctx, def, accessor) {
|
|
|
1467
1521
|
if (!values || values.size === 0) {
|
|
1468
1522
|
throw new ZodCompileUnsupportedError("discriminated union option without static discriminator values");
|
|
1469
1523
|
}
|
|
1470
|
-
//
|
|
1524
|
+
// let the interpreter handle collisions instead of compiling first-match dispatch
|
|
1471
1525
|
for (const value of values) {
|
|
1472
1526
|
if (claimed.has(value)) {
|
|
1473
1527
|
throw new ZodCompileUnsupportedError(`duplicate discriminator value ${String(value)}`);
|
|
@@ -1511,6 +1565,8 @@ function literalEquality(ctx, accessor, value) {
|
|
|
1511
1565
|
}
|
|
1512
1566
|
function generateIntersectionCheck(doc, ctx, schema, accessor) {
|
|
1513
1567
|
const def = schema._zod.def;
|
|
1568
|
+
// 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.
|
|
1569
|
+
ctx.definite = false;
|
|
1514
1570
|
const leftOutput = compileChild(doc, ctx, def.left, accessor);
|
|
1515
1571
|
const rightOutput = compileChild(doc, ctx, def.right, accessor);
|
|
1516
1572
|
// 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.
|
|
@@ -1580,14 +1636,15 @@ function generateRecordCheck(doc, ctx, schema, accessor) {
|
|
|
1580
1636
|
// The runtime runs it against each own enumerable key and writes the value
|
|
1581
1637
|
// under the key it produced, so compile it once and call it per key.
|
|
1582
1638
|
const isLoose = def.mode === "loose";
|
|
1583
|
-
|
|
1639
|
+
// 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
|
|
1640
|
+
const keyFn = compileFn(def.keyType);
|
|
1641
|
+
if (keyFn.definite === false)
|
|
1642
|
+
ctx.definite = false;
|
|
1643
|
+
const keyFast = addConstant(ctx, keyFn);
|
|
1584
1644
|
const numericConst = addConstant(ctx, regexes.number);
|
|
1585
|
-
const propIsEnumerableConst = addConstant(ctx, Object.prototype.propertyIsEnumerable);
|
|
1586
1645
|
const outKeyVar = newVar(ctx);
|
|
1587
|
-
|
|
1588
|
-
doc
|
|
1589
|
-
d.write(`if (${kVar} === "__proto__") continue;`);
|
|
1590
|
-
d.write(`if (!${propIsEnumerableConst}.call(${accessor}, ${kVar})) continue;`);
|
|
1646
|
+
// the body runs once per string key and once per symbol key, since a key schema can accept symbols
|
|
1647
|
+
emitOwnKeys(doc, ctx, accessor, kVar, (d) => {
|
|
1591
1648
|
d.write(`let ${outKeyVar} = ${keyFast}(${kVar});`);
|
|
1592
1649
|
// 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.
|
|
1593
1650
|
d.write(`if (${outKeyVar} === INVALID && typeof ${kVar} === "string" && ${numericConst}.test(${kVar})) ${outKeyVar} = ${keyFast}(Number(${kVar}));`);
|
|
@@ -1606,22 +1663,41 @@ function generateRecordCheck(doc, ctx, schema, accessor) {
|
|
|
1606
1663
|
const valOutput = compileChild(d, ctx, def.valueType, valueVar);
|
|
1607
1664
|
d.write(`${outputVar}[${outKeyVar}] = ${valOutput};`);
|
|
1608
1665
|
});
|
|
1609
|
-
doc.write(`}`);
|
|
1610
1666
|
return outputVar;
|
|
1611
1667
|
}
|
|
1612
|
-
// Plain z.string() keys:
|
|
1613
|
-
|
|
1614
|
-
doc.write(`for (const ${kVar} of Reflect.ownKeys(${accessor})) {`);
|
|
1615
|
-
doc.indented((d) => {
|
|
1616
|
-
d.write(`if (${kVar} === "__proto__") continue;`);
|
|
1617
|
-
d.write(`if (!${propIsEnumerable}.call(${accessor}, ${kVar})) continue;`);
|
|
1618
|
-
d.write(`if (typeof ${kVar} !== "string") return INVALID;`);
|
|
1668
|
+
// 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.
|
|
1669
|
+
emitOwnKeys(doc, ctx, accessor, kVar, (d) => {
|
|
1619
1670
|
d.write(`const ${valVar} = ${accessor}[${kVar}];`);
|
|
1620
1671
|
const valOutput = compileChild(d, ctx, def.valueType, valVar);
|
|
1621
1672
|
d.write(`${outputVar}[${kVar}] = ${valOutput};`);
|
|
1673
|
+
}, `return INVALID;`);
|
|
1674
|
+
return outputVar;
|
|
1675
|
+
}
|
|
1676
|
+
// 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.
|
|
1677
|
+
function emitOwnKeys(doc, ctx, accessor, kVar, body, onSymbol) {
|
|
1678
|
+
const propIsEnumerableConst = addConstant(ctx, Object.prototype.propertyIsEnumerable);
|
|
1679
|
+
const symsVar = newVar(ctx);
|
|
1680
|
+
const keysVar = newVar(ctx);
|
|
1681
|
+
const iVar = newVar(ctx);
|
|
1682
|
+
doc.write(`const ${symsVar} = Object.getOwnPropertySymbols(${accessor});`);
|
|
1683
|
+
doc.write(`const ${keysVar} = Object.getOwnPropertyNames(${accessor});`);
|
|
1684
|
+
doc.write(`for (let ${iVar} = 0; ${iVar} < ${keysVar}.length; ${iVar}++) {`);
|
|
1685
|
+
doc.indented((d) => {
|
|
1686
|
+
d.write(`const ${kVar} = ${keysVar}[${iVar}];`);
|
|
1687
|
+
d.write(`if (${kVar} === "__proto__" || !${propIsEnumerableConst}.call(${accessor}, ${kVar})) continue;`);
|
|
1688
|
+
body(d);
|
|
1689
|
+
});
|
|
1690
|
+
doc.write(`}`);
|
|
1691
|
+
doc.write(`for (let ${iVar} = 0; ${iVar} < ${symsVar}.length; ${iVar}++) {`);
|
|
1692
|
+
doc.indented((d) => {
|
|
1693
|
+
d.write(`const ${kVar} = ${symsVar}[${iVar}];`);
|
|
1694
|
+
d.write(`if (!${propIsEnumerableConst}.call(${accessor}, ${kVar})) continue;`);
|
|
1695
|
+
if (onSymbol)
|
|
1696
|
+
d.write(onSymbol);
|
|
1697
|
+
else
|
|
1698
|
+
body(d);
|
|
1622
1699
|
});
|
|
1623
1700
|
doc.write(`}`);
|
|
1624
|
-
return outputVar;
|
|
1625
1701
|
}
|
|
1626
1702
|
function literalPropertyKey(ctx, key) {
|
|
1627
1703
|
if (typeof key === "string")
|
|
@@ -1677,7 +1753,7 @@ function generateTemplateLiteralCheck(doc, ctx, schema, accessor) {
|
|
|
1677
1753
|
function generateLazyCheck(doc, ctx, schema, accessor) {
|
|
1678
1754
|
// 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
|
|
1679
1755
|
const def = schema._zod.def;
|
|
1680
|
-
const getterConst =
|
|
1756
|
+
const getterConst = addUserConstant(ctx, def.getter);
|
|
1681
1757
|
const cacheConst = addConstant(ctx, { parser: null });
|
|
1682
1758
|
doc.write(`if (!${cacheConst}.parser) {`);
|
|
1683
1759
|
doc.indented((d) => {
|
|
@@ -1701,7 +1777,7 @@ function generatePipeCheck(doc, ctx, schema, accessor) {
|
|
|
1701
1777
|
// Validate input type first
|
|
1702
1778
|
const inputOutput = generateCheck(doc, ctx, def.in, accessor);
|
|
1703
1779
|
if (def.transform) {
|
|
1704
|
-
// 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.
|
|
1780
|
+
// 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.
|
|
1705
1781
|
if (isAsyncFunction(def.transform)) {
|
|
1706
1782
|
throw new ZodCompileAsyncError("z.compile: async transforms in pipes are not supported");
|
|
1707
1783
|
}
|
|
@@ -1715,7 +1791,7 @@ function generatePipeCheck(doc, ctx, schema, accessor) {
|
|
|
1715
1791
|
return exports.INVALID;
|
|
1716
1792
|
return fakePayload.issues.length === 0 ? result : exports.INVALID;
|
|
1717
1793
|
};
|
|
1718
|
-
const helperConst =
|
|
1794
|
+
const helperConst = addUserConstant(ctx, helperFn);
|
|
1719
1795
|
const transformedVar = newVar(ctx);
|
|
1720
1796
|
doc.write(`const ${transformedVar} = ${helperConst}(${inputOutput});`);
|
|
1721
1797
|
doc.write(`if (${transformedVar} === INVALID) return INVALID;`);
|
|
@@ -1739,7 +1815,7 @@ function generateCustomCheck(doc, ctx, schema, accessor) {
|
|
|
1739
1815
|
throw new ZodCompileAsyncError("z.compile: async custom predicates are not supported");
|
|
1740
1816
|
}
|
|
1741
1817
|
// 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.
|
|
1742
|
-
const fnConst =
|
|
1818
|
+
const fnConst = addUserConstant(ctx, def.fn);
|
|
1743
1819
|
const throwAsyncConst = addConstant(ctx, throwAsync);
|
|
1744
1820
|
const resVar = newVar(ctx);
|
|
1745
1821
|
doc.write(`const ${resVar} = ${fnConst}(${accessor});`);
|
|
@@ -1776,7 +1852,7 @@ function generateCatchCheck(doc, ctx, schema, accessor) {
|
|
|
1776
1852
|
});
|
|
1777
1853
|
doc.write(`})();`);
|
|
1778
1854
|
const innerConst = addConstant(ctx, def.innerType);
|
|
1779
|
-
const catchConst =
|
|
1855
|
+
const catchConst = addUserConstant(ctx, def.catchValue);
|
|
1780
1856
|
const catchHelperConst = addConstant(ctx, runtimeCatch);
|
|
1781
1857
|
doc.write(`if (${outputVar} === INVALID) {`);
|
|
1782
1858
|
doc.indented((d) => {
|
|
@@ -1803,7 +1879,7 @@ function generateTransformCheck(doc, ctx, schema, accessor) {
|
|
|
1803
1879
|
return exports.INVALID;
|
|
1804
1880
|
return fakePayload.issues.length === 0 ? result : exports.INVALID;
|
|
1805
1881
|
};
|
|
1806
|
-
const helperConst =
|
|
1882
|
+
const helperConst = addUserConstant(ctx, helperFn);
|
|
1807
1883
|
const outputVar = newVar(ctx);
|
|
1808
1884
|
doc.write(`const ${outputVar} = ${helperConst}(${accessor});`);
|
|
1809
1885
|
doc.write(`if (${outputVar} === INVALID) return INVALID;`);
|
|
@@ -1811,3 +1887,22 @@ function generateTransformCheck(doc, ctx, schema, accessor) {
|
|
|
1811
1887
|
}
|
|
1812
1888
|
return accessor;
|
|
1813
1889
|
}
|
|
1890
|
+
|
|
1891
|
+
// seal-cjs-exports
|
|
1892
|
+
(function () {
|
|
1893
|
+
var keys = Object.getOwnPropertyNames(exports);
|
|
1894
|
+
for (var i = 0; i < keys.length; i++) {
|
|
1895
|
+
var desc = Object.getOwnPropertyDescriptor(exports, keys[i]);
|
|
1896
|
+
if (!desc || !desc.get || !desc.configurable) continue;
|
|
1897
|
+
var value;
|
|
1898
|
+
try {
|
|
1899
|
+
value = desc.get();
|
|
1900
|
+
} catch (e) {
|
|
1901
|
+
continue;
|
|
1902
|
+
}
|
|
1903
|
+
// a circular require may not have settled this one yet, so leave it live
|
|
1904
|
+
if (value === undefined) continue;
|
|
1905
|
+
Object.defineProperty(exports, keys[i], { value: value, writable: false, enumerable: desc.enumerable, configurable: false });
|
|
1906
|
+
}
|
|
1907
|
+
Object.freeze(exports);
|
|
1908
|
+
})();
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import type * as core from "./core.cjs";
|
|
2
2
|
import type { SomeType } from "./schemas.cjs";
|
|
3
|
-
/** Sentinel
|
|
3
|
+
/** @internal Sentinel the compiled fast path returns when validation fails. */
|
|
4
4
|
export declare const INVALID: unique symbol;
|
|
5
|
+
/** @internal */
|
|
5
6
|
export type INVALID = typeof INVALID;
|
|
6
7
|
interface CompileFnOptions {
|
|
7
8
|
debug?: boolean | undefined;
|
|
@@ -10,6 +11,8 @@ interface CompileFnOptions {
|
|
|
10
11
|
}
|
|
11
12
|
type CompiledFn<T> = ((input: unknown) => T | INVALID) & {
|
|
12
13
|
code?: string | undefined;
|
|
14
|
+
/** False when this function's INVALID does not strictly mean "the runtime would reject". */
|
|
15
|
+
definite?: boolean | undefined;
|
|
13
16
|
};
|
|
14
17
|
/** Raised when the schema contains async refinements or transforms. Surfaces only under `compile(schema, { strict: true })`. */
|
|
15
18
|
export declare class ZodCompileAsyncError extends Error {
|
|
@@ -43,9 +46,20 @@ export interface CompileOptions {
|
|
|
43
46
|
*/
|
|
44
47
|
export declare function compile<T extends SomeType>(schema: T, options?: CompileOptions): T;
|
|
45
48
|
/**
|
|
46
|
-
*
|
|
47
|
-
*
|
|
48
|
-
*
|
|
49
|
+
* Install an already-generated parser as a schema's fast path. Returns a clone; the original is
|
|
50
|
+
* unchanged.
|
|
51
|
+
*
|
|
52
|
+
* The parser takes the input and returns the parsed value, or `INVALID` to hand the parse to the
|
|
53
|
+
* runtime. It must be synchronous and forward-direction, and it must build fresh output rather than
|
|
54
|
+
* return its input — Zod cannot check either, and a wrong *success* is returned to the caller as-is.
|
|
55
|
+
*
|
|
56
|
+
* `compile()` is the ordinary entry point. This is for a build-time or native compiler that produces
|
|
57
|
+
* a parser where `new Function` is unavailable.
|
|
58
|
+
*/
|
|
59
|
+
export declare function withParser<T extends SomeType>(schema: T, parser: (input: unknown) => core.output<T> | INVALID): T;
|
|
60
|
+
/**
|
|
61
|
+
* @internal Generate the standalone compiled function: a parser by default, a validator under
|
|
62
|
+
* `assertOnly`. Returns the parsed value, `true` where nothing reads the output, or `INVALID`. Consumers use `compile()`.
|
|
49
63
|
*/
|
|
50
64
|
export declare function compileFn<T extends SomeType>(schema: T, options?: CompileFnOptions): CompiledFn<core.output<T>>;
|
|
51
65
|
export {};
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import type * as core from "./core.js";
|
|
2
2
|
import type { SomeType } from "./schemas.js";
|
|
3
|
-
/** Sentinel
|
|
3
|
+
/** @internal Sentinel the compiled fast path returns when validation fails. */
|
|
4
4
|
export declare const INVALID: unique symbol;
|
|
5
|
+
/** @internal */
|
|
5
6
|
export type INVALID = typeof INVALID;
|
|
6
7
|
interface CompileFnOptions {
|
|
7
8
|
debug?: boolean | undefined;
|
|
@@ -10,6 +11,8 @@ interface CompileFnOptions {
|
|
|
10
11
|
}
|
|
11
12
|
type CompiledFn<T> = ((input: unknown) => T | INVALID) & {
|
|
12
13
|
code?: string | undefined;
|
|
14
|
+
/** False when this function's INVALID does not strictly mean "the runtime would reject". */
|
|
15
|
+
definite?: boolean | undefined;
|
|
13
16
|
};
|
|
14
17
|
/** Raised when the schema contains async refinements or transforms. Surfaces only under `compile(schema, { strict: true })`. */
|
|
15
18
|
export declare class ZodCompileAsyncError extends Error {
|
|
@@ -43,9 +46,20 @@ export interface CompileOptions {
|
|
|
43
46
|
*/
|
|
44
47
|
export declare function compile<T extends SomeType>(schema: T, options?: CompileOptions): T;
|
|
45
48
|
/**
|
|
46
|
-
*
|
|
47
|
-
*
|
|
48
|
-
*
|
|
49
|
+
* Install an already-generated parser as a schema's fast path. Returns a clone; the original is
|
|
50
|
+
* unchanged.
|
|
51
|
+
*
|
|
52
|
+
* The parser takes the input and returns the parsed value, or `INVALID` to hand the parse to the
|
|
53
|
+
* runtime. It must be synchronous and forward-direction, and it must build fresh output rather than
|
|
54
|
+
* return its input — Zod cannot check either, and a wrong *success* is returned to the caller as-is.
|
|
55
|
+
*
|
|
56
|
+
* `compile()` is the ordinary entry point. This is for a build-time or native compiler that produces
|
|
57
|
+
* a parser where `new Function` is unavailable.
|
|
58
|
+
*/
|
|
59
|
+
export declare function withParser<T extends SomeType>(schema: T, parser: (input: unknown) => core.output<T> | INVALID): T;
|
|
60
|
+
/**
|
|
61
|
+
* @internal Generate the standalone compiled function: a parser by default, a validator under
|
|
62
|
+
* `assertOnly`. Returns the parsed value, `true` where nothing reads the output, or `INVALID`. Consumers use `compile()`.
|
|
49
63
|
*/
|
|
50
64
|
export declare function compileFn<T extends SomeType>(schema: T, options?: CompileFnOptions): CompiledFn<core.output<T>>;
|
|
51
65
|
export {};
|