@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
|
@@ -1,27 +1,20 @@
|
|
|
1
1
|
import { createSignature } from "../../lib/jws_sign.js";
|
|
2
|
-
import { assertNotSet } from "../../lib/
|
|
2
|
+
import { assertNotSet, assertUint8Array } from "../../lib/validate.js";
|
|
3
3
|
class FlattenedSign {
|
|
4
|
-
#
|
|
5
|
-
#protectedHeader;
|
|
6
|
-
#unprotectedHeader;
|
|
4
|
+
#input;
|
|
7
5
|
constructor(payload) {
|
|
8
|
-
|
|
9
|
-
throw new TypeError("payload must be an instance of Uint8Array");
|
|
10
|
-
this.#payload = payload;
|
|
6
|
+
assertUint8Array(payload, "payload"), this.#input = [payload];
|
|
11
7
|
}
|
|
12
8
|
setProtectedHeader(protectedHeader) {
|
|
13
|
-
return assertNotSet(this.#
|
|
9
|
+
return assertNotSet(this.#input[1], "setProtectedHeader"), this.#input[1] = protectedHeader, this;
|
|
14
10
|
}
|
|
15
11
|
setUnprotectedHeader(unprotectedHeader) {
|
|
16
|
-
return assertNotSet(this.#
|
|
12
|
+
return assertNotSet(this.#input[2], "setUnprotectedHeader"), this.#input[2] = unprotectedHeader, this;
|
|
17
13
|
}
|
|
18
14
|
async sign(key, options) {
|
|
19
|
-
const
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
unprotectedHeader: this.#unprotectedHeader,
|
|
23
|
-
crit: options?.crit
|
|
24
|
-
}, key);
|
|
15
|
+
const input = [...this.#input];
|
|
16
|
+
input[3] = options?.crit;
|
|
17
|
+
const [jws] = await createSignature(input, key);
|
|
25
18
|
return jws;
|
|
26
19
|
}
|
|
27
20
|
}
|
|
@@ -1,21 +1,11 @@
|
|
|
1
1
|
import { JWSInvalid } from "../../util/errors.js";
|
|
2
|
-
import { isObject } from "../../lib/
|
|
3
|
-
import { encodeJsonUnencodedPayload, prepareVerify, snapshotJws, verifySignature
|
|
2
|
+
import { isObject } from "../../lib/validate.js";
|
|
3
|
+
import { encodeJsonUnencodedPayload, prepareVerify, snapshotJws, verifySignature } from "../../lib/jws_verify.js";
|
|
4
4
|
async function flattenedVerify(jws, key, options) {
|
|
5
5
|
if (!isObject(jws))
|
|
6
6
|
throw new JWSInvalid("Flattened JWS must be an object");
|
|
7
|
-
const snapshot = snapshotJws(jws);
|
|
8
|
-
|
|
9
|
-
throw new JWSInvalid('Flattened JWS must have either of the "protected" or "header" members');
|
|
10
|
-
if (snapshot.protected !== void 0 && typeof snapshot.protected != "string")
|
|
11
|
-
throw new JWSInvalid("JWS Protected Header incorrect type");
|
|
12
|
-
if (snapshot.payload === void 0)
|
|
13
|
-
throw new JWSInvalid("JWS Payload missing");
|
|
14
|
-
if (typeof snapshot.signature != "string")
|
|
15
|
-
throw new JWSInvalid("JWS Signature missing or incorrect type");
|
|
16
|
-
if (snapshot.header !== void 0 && !isObject(snapshot.header))
|
|
17
|
-
throw new JWSInvalid("JWS Unprotected Header incorrect type");
|
|
18
|
-
return verifyResult(snapshot, await verifySignature(snapshot, prepareVerify(options), key, encodeJsonUnencodedPayload));
|
|
7
|
+
const snapshot = snapshotJws(jws), [result] = await verifySignature(snapshot, prepareVerify(options), key, encodeJsonUnencodedPayload);
|
|
8
|
+
return result;
|
|
19
9
|
}
|
|
20
10
|
export {
|
|
21
11
|
flattenedVerify
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { createSignature } from "../../lib/jws_sign.js";
|
|
2
2
|
import { JWSInvalid } from "../../util/errors.js";
|
|
3
|
-
import { assertNotSet } from "../../lib/
|
|
3
|
+
import { assertNotSet, assertUint8Array } from "../../lib/validate.js";
|
|
4
4
|
class IndividualSignature {
|
|
5
5
|
#parent;
|
|
6
6
|
state;
|
|
@@ -36,21 +36,14 @@ class GeneralSign {
|
|
|
36
36
|
async sign() {
|
|
37
37
|
if (!this.#signatures.length)
|
|
38
38
|
throw new JWSInvalid("at least one signature must be added");
|
|
39
|
-
|
|
40
|
-
throw new TypeError("payload must be an instance of Uint8Array");
|
|
39
|
+
assertUint8Array(this.#payload, "payload");
|
|
41
40
|
const jws = {
|
|
42
41
|
signatures: [],
|
|
43
42
|
payload: ""
|
|
44
43
|
}, encoded = [];
|
|
45
44
|
let b64;
|
|
46
|
-
for (
|
|
47
|
-
const
|
|
48
|
-
payload: this.#payload,
|
|
49
|
-
protectedHeader,
|
|
50
|
-
unprotectedHeader,
|
|
51
|
-
crit,
|
|
52
|
-
encoded
|
|
53
|
-
}, key);
|
|
45
|
+
for (const signature of this.#signatures) {
|
|
46
|
+
const [protectedHeader, unprotectedHeader, key, crit] = signature.state, [{ payload, ...rest }, signatureB64] = await createSignature([this.#payload, protectedHeader, unprotectedHeader, crit, encoded], key);
|
|
54
47
|
if (b64 === void 0)
|
|
55
48
|
b64 = signatureB64, jws.payload = payload;
|
|
56
49
|
else if (b64 !== signatureB64)
|
|
@@ -1,12 +1,9 @@
|
|
|
1
|
-
import { encodeJsonUnencodedPayload, parseProtectedHeader, prepareVerify, snapshotJws, verifySignature
|
|
1
|
+
import { encodeJsonUnencodedPayload, parseProtectedHeader, prepareVerify, snapshotJws, verifySignature } from "../../lib/jws_verify.js";
|
|
2
2
|
import { JWSInvalid, JWSSignatureVerificationFailed } from "../../util/errors.js";
|
|
3
|
-
import { isObject } from "../../lib/
|
|
3
|
+
import { isObject } from "../../lib/validate.js";
|
|
4
4
|
function snapshotSignature(signature, payload) {
|
|
5
5
|
try {
|
|
6
|
-
const jws = snapshotJws(signature, [payload]),
|
|
7
|
-
if (encodedProtected === void 0 && header === void 0 || encodedProtected !== void 0 && typeof encodedProtected != "string" || typeof encodedSignature != "string" || header !== void 0 && !isObject(header))
|
|
8
|
-
return;
|
|
9
|
-
const protectedHeader = parseProtectedHeader(encodedProtected), { b64, crit } = protectedHeader;
|
|
6
|
+
const jws = snapshotJws(signature, [payload]), protectedHeader = parseProtectedHeader(jws.protected), { b64, crit } = protectedHeader;
|
|
10
7
|
return [
|
|
11
8
|
jws,
|
|
12
9
|
protectedHeader,
|
|
@@ -40,7 +37,8 @@ async function generalVerify(jws, key, options) {
|
|
|
40
37
|
throw new JWSInvalid("inconsistent use of JWS Unencoded Payload (RFC7797)");
|
|
41
38
|
for (const candidate of candidates)
|
|
42
39
|
try {
|
|
43
|
-
|
|
40
|
+
const [result] = await verifySignature(candidate[0], shared, key, encodeJsonUnencodedPayload, candidate[1]);
|
|
41
|
+
return result;
|
|
44
42
|
} catch {
|
|
45
43
|
}
|
|
46
44
|
throw new JWSSignatureVerificationFailed();
|
|
@@ -2,12 +2,11 @@ import { prepareDecrypt, decryptCompact } from "../lib/jwe_decrypt.js";
|
|
|
2
2
|
import { validateClaimsSet } from "../lib/jwt_claims_set.js";
|
|
3
3
|
import { JWTClaimValidationFailed } from "../util/errors.js";
|
|
4
4
|
async function jwtDecrypt(jwt, key, options) {
|
|
5
|
-
const
|
|
5
|
+
const { plaintext, ...result } = await decryptCompact(jwt, prepareDecrypt(options), key), { protectedHeader } = result, payload = validateClaimsSet(protectedHeader, plaintext, options);
|
|
6
6
|
for (const claim of ["iss", "sub", "aud"])
|
|
7
7
|
if (protectedHeader[claim] !== void 0 && (claim === "aud" ? JSON.stringify(protectedHeader.aud) !== JSON.stringify(payload.aud) : protectedHeader[claim] !== payload[claim]))
|
|
8
8
|
throw new JWTClaimValidationFailed(`replicated "${claim}" claim header parameter mismatch`, payload, claim, "mismatch");
|
|
9
|
-
|
|
10
|
-
return typeof key == "function" ? { ...result, key: decrypted[2] } : result;
|
|
9
|
+
return { payload, ...result };
|
|
11
10
|
}
|
|
12
11
|
export {
|
|
13
12
|
jwtDecrypt
|
|
@@ -1,26 +1,23 @@
|
|
|
1
|
-
import { createJWE } from "../lib/jwe_encrypt.js";
|
|
1
|
+
import { compactJWE, createJWE } from "../lib/jwe_encrypt.js";
|
|
2
2
|
import { JWTClaimsBuilder, jwtClaim, jwtData } from "../lib/jwt_claims_set.js";
|
|
3
|
-
import { assertNotSet } from "../lib/
|
|
3
|
+
import { assertNotSet } from "../lib/validate.js";
|
|
4
4
|
const EncryptJWT_base = JWTClaimsBuilder;
|
|
5
5
|
class EncryptJWT extends EncryptJWT_base {
|
|
6
|
-
#
|
|
7
|
-
#iv;
|
|
8
|
-
#keyManagementParameters;
|
|
9
|
-
#protectedHeader;
|
|
6
|
+
#input = [void 0];
|
|
10
7
|
#replicateIssuerAsHeader;
|
|
11
8
|
#replicateSubjectAsHeader;
|
|
12
9
|
#replicateAudienceAsHeader;
|
|
13
10
|
setProtectedHeader(protectedHeader) {
|
|
14
|
-
return assertNotSet(this.#
|
|
11
|
+
return assertNotSet(this.#input[1], "setProtectedHeader"), this.#input[1] = protectedHeader, this;
|
|
15
12
|
}
|
|
16
13
|
setKeyManagementParameters(parameters) {
|
|
17
|
-
return assertNotSet(this.#
|
|
14
|
+
return assertNotSet(this.#input[7], "setKeyManagementParameters"), this.#input[7] = parameters, this;
|
|
18
15
|
}
|
|
19
16
|
setContentEncryptionKey(cek) {
|
|
20
|
-
return assertNotSet(this.#
|
|
17
|
+
return assertNotSet(this.#input[5], "setContentEncryptionKey"), this.#input[5] = cek, this;
|
|
21
18
|
}
|
|
22
19
|
setInitializationVector(iv) {
|
|
23
|
-
return assertNotSet(this.#
|
|
20
|
+
return assertNotSet(this.#input[6], "setInitializationVector"), this.#input[6] = iv, this;
|
|
24
21
|
}
|
|
25
22
|
replicateIssuerAsHeader() {
|
|
26
23
|
return this.#replicateIssuerAsHeader = !0, this;
|
|
@@ -33,25 +30,14 @@ class EncryptJWT extends EncryptJWT_base {
|
|
|
33
30
|
}
|
|
34
31
|
async encrypt(key, options) {
|
|
35
32
|
const plaintext = jwtData(this);
|
|
36
|
-
this.#
|
|
37
|
-
...this.#
|
|
33
|
+
this.#input[1] && (this.#replicateIssuerAsHeader || this.#replicateSubjectAsHeader || this.#replicateAudienceAsHeader) && (this.#input[1] = {
|
|
34
|
+
...this.#input[1],
|
|
38
35
|
iss: this.#replicateIssuerAsHeader ? jwtClaim(this, "iss") : void 0,
|
|
39
36
|
sub: this.#replicateSubjectAsHeader ? jwtClaim(this, "sub") : void 0,
|
|
40
37
|
aud: this.#replicateAudienceAsHeader ? jwtClaim(this, "aud") : void 0
|
|
41
38
|
});
|
|
42
|
-
const
|
|
43
|
-
|
|
44
|
-
this.#protectedHeader,
|
|
45
|
-
void 0,
|
|
46
|
-
void 0,
|
|
47
|
-
void 0,
|
|
48
|
-
this.#cek,
|
|
49
|
-
this.#iv,
|
|
50
|
-
this.#keyManagementParameters,
|
|
51
|
-
void 0,
|
|
52
|
-
!1
|
|
53
|
-
], key, options);
|
|
54
|
-
return [jwe.protected, jwe.encrypted_key, jwe.iv, jwe.ciphertext, jwe.tag].join(".");
|
|
39
|
+
const input = [...this.#input];
|
|
40
|
+
return input[0] = plaintext, compactJWE(await createJWE(input, key, options));
|
|
55
41
|
}
|
|
56
42
|
}
|
|
57
43
|
export {
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { createCompactSignature } from "../lib/jws_sign.js";
|
|
2
2
|
import { JWTInvalid } from "../util/errors.js";
|
|
3
3
|
import { JWTClaimsBuilder, jwtData } from "../lib/jwt_claims_set.js";
|
|
4
|
-
import { assertNotSet } from "../lib/
|
|
4
|
+
import { assertNotSet } from "../lib/validate.js";
|
|
5
5
|
const SignJWT_base = JWTClaimsBuilder;
|
|
6
6
|
class SignJWT extends SignJWT_base {
|
|
7
7
|
#protectedHeader;
|
|
@@ -1,8 +1,7 @@
|
|
|
1
1
|
import * as b64u from "../util/base64url.js";
|
|
2
|
-
import { decodeBase64url, parseJoseHeader } from "../lib/
|
|
2
|
+
import { decodeBase64url, parseJoseHeader, JWS_RECOGNIZED, validateB64, validateCrit } from "../lib/validate.js";
|
|
3
3
|
import { JWSInvalid, JWTInvalid } from "../util/errors.js";
|
|
4
4
|
import { validateClaimsSet, JWTClaimsBuilder, jwtData } from "../lib/jwt_claims_set.js";
|
|
5
|
-
import { JWS_RECOGNIZED, validateB64, validateCrit } from "../lib/options.js";
|
|
6
5
|
const UnsecuredJWT_base = JWTClaimsBuilder;
|
|
7
6
|
class UnsecuredJWT extends UnsecuredJWT_base {
|
|
8
7
|
encode() {
|
|
@@ -2,11 +2,11 @@ import { prepareVerify, verifyCompact } from "../lib/jws_verify.js";
|
|
|
2
2
|
import { validateClaimsSet } from "../lib/jwt_claims_set.js";
|
|
3
3
|
import { JWTInvalid } from "../util/errors.js";
|
|
4
4
|
async function jwtVerify(jwt, key, options) {
|
|
5
|
-
const verified = await verifyCompact(jwt, prepareVerify(options), key);
|
|
6
|
-
if (!
|
|
5
|
+
const [verified, b64] = await verifyCompact(jwt, prepareVerify(options), key);
|
|
6
|
+
if (!b64)
|
|
7
7
|
throw new JWTInvalid("JWTs MUST NOT use unencoded payload");
|
|
8
|
-
const
|
|
9
|
-
return
|
|
8
|
+
const payload = validateClaimsSet(verified.protectedHeader, verified.payload, options);
|
|
9
|
+
return { ...verified, payload };
|
|
10
10
|
}
|
|
11
11
|
export {
|
|
12
12
|
jwtVerify
|
|
@@ -1,11 +1,13 @@
|
|
|
1
1
|
import { toSPKI as exportPublic, toPKCS8 as exportPrivate } from "../lib/asn1.js";
|
|
2
|
-
import { invalidKeyInput } from "../lib/
|
|
2
|
+
import { invalidKeyInput, isCryptoKey, isKeyObject } from "../lib/key.js";
|
|
3
3
|
import { encode as b64u } from "../util/base64url.js";
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
4
|
+
function exportSPKI(key) {
|
|
5
|
+
return exportPublic(key);
|
|
6
|
+
}
|
|
7
|
+
function exportPKCS8(key) {
|
|
8
|
+
return exportPrivate(key);
|
|
7
9
|
}
|
|
8
|
-
async function
|
|
10
|
+
async function exportJWK(key) {
|
|
9
11
|
if (isKeyObject(key))
|
|
10
12
|
if (key.type === "secret")
|
|
11
13
|
key = key.export();
|
|
@@ -20,17 +22,11 @@ async function keyToJWK(key) {
|
|
|
20
22
|
throw new TypeError(invalidKeyInput(key, "CryptoKey", "KeyObject", "Uint8Array"));
|
|
21
23
|
if (!key.extractable)
|
|
22
24
|
throw new TypeError("non-extractable CryptoKey cannot be exported as a JWK");
|
|
23
|
-
const
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
return
|
|
28
|
-
}
|
|
29
|
-
function exportPKCS8(key) {
|
|
30
|
-
return exportPrivate(key);
|
|
31
|
-
}
|
|
32
|
-
function exportJWK(key) {
|
|
33
|
-
return keyToJWK(key);
|
|
25
|
+
const jwk = await crypto.subtle.exportKey("jwk", key);
|
|
26
|
+
delete jwk.ext, delete jwk.key_ops, delete jwk.use, jwk.kty !== "AKP" && delete jwk.alg;
|
|
27
|
+
for (const parameter of Object.keys(jwk))
|
|
28
|
+
jwk[parameter] === void 0 && delete jwk[parameter];
|
|
29
|
+
return jwk;
|
|
34
30
|
}
|
|
35
31
|
export {
|
|
36
32
|
exportJWK,
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { JOSENotSupported } from "../util/errors.js";
|
|
2
|
-
import { validateExtractableOption } from "../lib/
|
|
2
|
+
import { validateExtractableOption } from "../lib/key.js";
|
|
3
3
|
import { keyAlgorithm, unsupportedAlg, algArgument } from "../lib/key_algorithm.js";
|
|
4
4
|
function getModulusLengthOption(options) {
|
|
5
5
|
const modulusLength = options?.modulusLength ?? 2048;
|
|
@@ -13,18 +13,9 @@ async function generateKeyPair(alg, options) {
|
|
|
13
13
|
let algorithm;
|
|
14
14
|
if (entry.resolve) {
|
|
15
15
|
const crv = options?.crv ?? "P-256";
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
case "P-521":
|
|
20
|
-
algorithm = { name: "ECDH", namedCurve: crv };
|
|
21
|
-
break;
|
|
22
|
-
case "X25519":
|
|
23
|
-
algorithm = { name: "X25519" };
|
|
24
|
-
break;
|
|
25
|
-
default:
|
|
26
|
-
throw new JOSENotSupported("Invalid or unsupported crv option provided, supported values are P-256, P-384, P-521, and X25519");
|
|
27
|
-
}
|
|
16
|
+
if (!["P-256", "P-384", "P-521", "X25519"].includes(crv))
|
|
17
|
+
throw new JOSENotSupported("Invalid or unsupported crv option provided, supported values are P-256, P-384, P-521, and X25519");
|
|
18
|
+
algorithm = entry.resolve({ crv });
|
|
28
19
|
} else {
|
|
29
20
|
if (entry.crv !== void 0 && options?.crv !== void 0 && options.crv !== entry.crv)
|
|
30
21
|
throw new JOSENotSupported(`Invalid or unsupported crv option provided, the only supported value for ${alg} is ${entry.crv}`);
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { unsupportedAlg, algArgument } from "../lib/key_algorithm.js";
|
|
2
|
-
import { validateExtractableOption } from "../lib/
|
|
2
|
+
import { validateExtractableOption } from "../lib/key.js";
|
|
3
3
|
async function generateSecret(alg, options) {
|
|
4
4
|
const extractable = validateExtractableOption(options?.extractable);
|
|
5
5
|
let length, algorithm, keyUsages;
|
|
@@ -1,11 +1,9 @@
|
|
|
1
1
|
import { decode as decodeBase64URL } from "../util/base64url.js";
|
|
2
2
|
import { fromSPKI, fromPKCS8, fromX509 } from "../lib/asn1.js";
|
|
3
|
-
import { jwkToKey } from "../lib/
|
|
3
|
+
import { jwkToKey, validateExtractableOption, normalizeJwk } from "../lib/key.js";
|
|
4
4
|
import { keyAlgorithm } from "../lib/key_algorithm.js";
|
|
5
5
|
import { JOSENotSupported } from "../util/errors.js";
|
|
6
|
-
import { isObject } from "../lib/
|
|
7
|
-
import { validateExtractableOption } from "../lib/key_options.js";
|
|
8
|
-
import { normalizeJwk } from "../lib/jwk_metadata.js";
|
|
6
|
+
import { isObject } from "../lib/validate.js";
|
|
9
7
|
async function importSPKI(spki, alg, options) {
|
|
10
8
|
if (typeof spki != "string" || spki.indexOf("-----BEGIN PUBLIC KEY-----") !== 0)
|
|
11
9
|
throw new TypeError('"spki" must be SPKI formatted string');
|
|
@@ -25,9 +23,7 @@ async function importJWK(jwk, alg, options) {
|
|
|
25
23
|
if (!isObject(jwk))
|
|
26
24
|
throw new TypeError("JWK must be an object");
|
|
27
25
|
const normalized = normalizeJwk(jwk), extractable = validateExtractableOption(options?.extractable), { alg: jwkAlg } = normalized;
|
|
28
|
-
alg ??= jwkAlg
|
|
29
|
-
const ext = extractable ?? normalized.ext;
|
|
30
|
-
if (normalized.kty !== "oct" && !alg)
|
|
26
|
+
if (alg ??= jwkAlg, normalized.kty !== "oct" && !alg)
|
|
31
27
|
throw new TypeError('"alg" argument is required when "jwk.alg" is not present');
|
|
32
28
|
switch (normalized.kty) {
|
|
33
29
|
case "oct":
|
|
@@ -39,12 +35,12 @@ async function importJWK(jwk, alg, options) {
|
|
|
39
35
|
throw new TypeError('missing "alg" (Algorithm) Parameter value');
|
|
40
36
|
if (alg !== jwkAlg)
|
|
41
37
|
throw new TypeError("JWK alg and alg option value mismatch");
|
|
42
|
-
return jwkToKey(keyAlgorithm(alg),
|
|
38
|
+
return jwkToKey(keyAlgorithm(alg), normalized, extractable);
|
|
43
39
|
}
|
|
44
40
|
case "RSA":
|
|
45
41
|
case "EC":
|
|
46
42
|
case "OKP":
|
|
47
|
-
return jwkToKey(keyAlgorithm(alg),
|
|
43
|
+
return jwkToKey(keyAlgorithm(alg), normalized, extractable);
|
|
48
44
|
default:
|
|
49
45
|
throw new JOSENotSupported('Unsupported "kty" (Key Type) Parameter value');
|
|
50
46
|
}
|
|
@@ -1,9 +1,7 @@
|
|
|
1
|
-
import { invalidKeyInput } from "./
|
|
2
|
-
import { encodeBase64, decodeBase64 } from "
|
|
1
|
+
import { invalidKeyInput, isCryptoKey, isKeyObject, validateExtractableOption } from "./key.js";
|
|
2
|
+
import { encodeBase64, decodeBase64 } from "./buffer_utils.js";
|
|
3
3
|
import { JOSENotSupported } from "../util/errors.js";
|
|
4
4
|
import { keyAlgorithm, unsupportedAlg, algArgument } from "./key_algorithm.js";
|
|
5
|
-
import { isCryptoKey, isKeyObject } from "./is_key_like.js";
|
|
6
|
-
import { validateExtractableOption } from "./key_options.js";
|
|
7
5
|
const formatPEM = (b64, descriptor) => {
|
|
8
6
|
const newlined = (b64.match(/.{1,64}/g) || []).join(`
|
|
9
7
|
`);
|
|
@@ -19,7 +19,13 @@ function uint32be(value) {
|
|
|
19
19
|
const buf = new Uint8Array(4);
|
|
20
20
|
return writeUInt32BE(buf, value), buf;
|
|
21
21
|
}
|
|
22
|
+
const NON_ASCII = /[^\x00-\x7f]/;
|
|
22
23
|
function encode(string) {
|
|
24
|
+
if (typeof string == "string" && string.length >= 128) {
|
|
25
|
+
if (NON_ASCII.test(string))
|
|
26
|
+
throw new TypeError("non-ASCII string encountered in encode()");
|
|
27
|
+
return encoder.encode(string);
|
|
28
|
+
}
|
|
23
29
|
const bytes = new Uint8Array(string.length);
|
|
24
30
|
for (let i = 0; i < string.length; i++) {
|
|
25
31
|
const code = string.charCodeAt(i);
|
|
@@ -29,10 +35,39 @@ function encode(string) {
|
|
|
29
35
|
}
|
|
30
36
|
return bytes;
|
|
31
37
|
}
|
|
38
|
+
function encodeBase64(input, url = !1) {
|
|
39
|
+
if (Uint8Array.prototype.toBase64)
|
|
40
|
+
return input.toBase64({ alphabet: url ? "base64url" : "base64", omitPadding: url });
|
|
41
|
+
const CHUNK_SIZE = 32768, arr = [];
|
|
42
|
+
for (let i = 0; i < input.length; i += CHUNK_SIZE)
|
|
43
|
+
arr.push(String.fromCharCode.apply(null, input.subarray(i, i + CHUNK_SIZE)));
|
|
44
|
+
const encoded = btoa(arr.join(""));
|
|
45
|
+
return url ? encoded.replace(/=/g, "").replace(/\+/g, "-").replace(/\//g, "_") : encoded;
|
|
46
|
+
}
|
|
47
|
+
function decodeBase64(encoded, url = !1) {
|
|
48
|
+
if (Uint8Array.fromBase64)
|
|
49
|
+
return Uint8Array.fromBase64(encoded, { alphabet: url ? "base64url" : "base64" });
|
|
50
|
+
if (url) {
|
|
51
|
+
if (encoded.includes("+") || encoded.includes("/"))
|
|
52
|
+
throw new TypeError("Invalid base64url");
|
|
53
|
+
encoded = encoded.replace(/-/g, "+").replace(/_/g, "/");
|
|
54
|
+
}
|
|
55
|
+
const binary = atob(encoded), bytes = new Uint8Array(binary.length);
|
|
56
|
+
for (let i = 0; i < binary.length; i++)
|
|
57
|
+
bytes[i] = binary.charCodeAt(i);
|
|
58
|
+
return bytes;
|
|
59
|
+
}
|
|
60
|
+
async function digest(algorithm, data) {
|
|
61
|
+
const subtleDigest = `SHA-${algorithm.slice(-3)}`;
|
|
62
|
+
return new Uint8Array(await crypto.subtle.digest(subtleDigest, data));
|
|
63
|
+
}
|
|
32
64
|
export {
|
|
33
65
|
concat,
|
|
66
|
+
decodeBase64,
|
|
34
67
|
decoder,
|
|
68
|
+
digest,
|
|
35
69
|
encode,
|
|
70
|
+
encodeBase64,
|
|
36
71
|
encoder,
|
|
37
72
|
strictDecoder,
|
|
38
73
|
uint32be,
|
|
@@ -1,8 +1,6 @@
|
|
|
1
1
|
import { concat, uint64be } from "./buffer_utils.js";
|
|
2
|
-
import {
|
|
3
|
-
import { invalidKeyInput } from "./invalid_key_input.js";
|
|
2
|
+
import { rawKey, invalidKeyInput, isCryptoKey } from "./key.js";
|
|
4
3
|
import { JWEDecryptionFailed, JWEInvalid } from "../util/errors.js";
|
|
5
|
-
import { isCryptoKey } from "./is_key_like.js";
|
|
6
4
|
const generateCek = (enc) => crypto.getRandomValues(new Uint8Array(enc.cekBits >> 3));
|
|
7
5
|
function checkCekLength(cek, expected) {
|
|
8
6
|
const actual = cek.byteLength << 3;
|
|
@@ -46,21 +44,31 @@ async function cbcDecrypt(enc, cek, ciphertext, iv, tag, aad) {
|
|
|
46
44
|
}
|
|
47
45
|
throw new JWEDecryptionFailed();
|
|
48
46
|
}
|
|
49
|
-
async function
|
|
50
|
-
|
|
51
|
-
"
|
|
52
|
-
|
|
47
|
+
async function encrypt(enc, plaintext, cek, iv, aad) {
|
|
48
|
+
if (!isCryptoKey(cek) && !(cek instanceof Uint8Array))
|
|
49
|
+
throw new TypeError(invalidKeyInput(cek, "CryptoKey", "KeyObject", "Uint8Array", "JSON Web Key"));
|
|
50
|
+
if (iv ? checkIvLength(enc, iv) : iv = generateIv(enc), cek instanceof Uint8Array && checkCekLength(cek, enc.cekBits), enc.cbc)
|
|
51
|
+
return cbcEncrypt(enc, plaintext, cek, iv, aad);
|
|
52
|
+
const encKey = await rawKey(cek, enc.subtle, "encrypt"), encrypted = new Uint8Array(await crypto.subtle.encrypt({
|
|
53
53
|
additionalData: aad,
|
|
54
54
|
iv,
|
|
55
55
|
name: "AES-GCM",
|
|
56
56
|
tagLength: 128
|
|
57
|
-
}, encKey, plaintext))
|
|
58
|
-
return { ciphertext: encrypted.
|
|
57
|
+
}, encKey, plaintext));
|
|
58
|
+
return { ciphertext: encrypted.subarray(0, -16), tag: encrypted.subarray(-16), iv };
|
|
59
59
|
}
|
|
60
|
-
async function
|
|
61
|
-
|
|
62
|
-
"
|
|
63
|
-
|
|
60
|
+
async function decrypt(enc, cek, ciphertext, iv, tag, aad) {
|
|
61
|
+
if (!isCryptoKey(cek) && !(cek instanceof Uint8Array))
|
|
62
|
+
throw new TypeError(invalidKeyInput(cek, "CryptoKey", "KeyObject", "Uint8Array", "JSON Web Key"));
|
|
63
|
+
if (!iv)
|
|
64
|
+
throw new JWEInvalid("JWE Initialization Vector missing");
|
|
65
|
+
if (!tag)
|
|
66
|
+
throw new JWEInvalid("JWE Authentication Tag missing");
|
|
67
|
+
if (!enc.cbc && tag.length !== 16)
|
|
68
|
+
throw new JWEInvalid("Invalid Authentication Tag length");
|
|
69
|
+
if (checkIvLength(enc, iv), cek instanceof Uint8Array && checkCekLength(cek, enc.cekBits), enc.cbc)
|
|
70
|
+
return cbcDecrypt(enc, cek, ciphertext, iv, tag, aad);
|
|
71
|
+
const encKey = await rawKey(cek, enc.subtle, "decrypt");
|
|
64
72
|
try {
|
|
65
73
|
return new Uint8Array(await crypto.subtle.decrypt({
|
|
66
74
|
additionalData: aad,
|
|
@@ -72,22 +80,6 @@ async function gcmDecrypt(enc, cek, ciphertext, iv, tag, aad) {
|
|
|
72
80
|
throw new JWEDecryptionFailed();
|
|
73
81
|
}
|
|
74
82
|
}
|
|
75
|
-
async function encrypt(enc, plaintext, cek, iv, aad) {
|
|
76
|
-
if (!isCryptoKey(cek) && !(cek instanceof Uint8Array))
|
|
77
|
-
throw new TypeError(invalidKeyInput(cek, "CryptoKey", "KeyObject", "Uint8Array", "JSON Web Key"));
|
|
78
|
-
return iv ? checkIvLength(enc, iv) : iv = generateIv(enc), cek instanceof Uint8Array && checkCekLength(cek, enc.cekBits), enc.cbc ? cbcEncrypt(enc, plaintext, cek, iv, aad) : gcmEncrypt(enc, plaintext, cek, iv, aad);
|
|
79
|
-
}
|
|
80
|
-
async function decrypt(enc, cek, ciphertext, iv, tag, aad) {
|
|
81
|
-
if (!isCryptoKey(cek) && !(cek instanceof Uint8Array))
|
|
82
|
-
throw new TypeError(invalidKeyInput(cek, "CryptoKey", "KeyObject", "Uint8Array", "JSON Web Key"));
|
|
83
|
-
if (!iv)
|
|
84
|
-
throw new JWEInvalid("JWE Initialization Vector missing");
|
|
85
|
-
if (!tag)
|
|
86
|
-
throw new JWEInvalid("JWE Authentication Tag missing");
|
|
87
|
-
if (!enc.cbc && tag.length !== 16)
|
|
88
|
-
throw new JWEInvalid("Invalid Authentication Tag length");
|
|
89
|
-
return checkIvLength(enc, iv), cek instanceof Uint8Array && checkCekLength(cek, enc.cekBits), enc.cbc ? cbcDecrypt(enc, cek, ciphertext, iv, tag, aad) : gcmDecrypt(enc, cek, ciphertext, iv, tag, aad);
|
|
90
|
-
}
|
|
91
83
|
export {
|
|
92
84
|
checkCekLength,
|
|
93
85
|
checkIvLength,
|
|
@@ -10,30 +10,14 @@ function supported(name) {
|
|
|
10
10
|
if (typeof globalThis[name] > "u")
|
|
11
11
|
throw new JOSENotSupported(`JWE "zip" (Compression Algorithm) Header Parameter requires the ${name} API.`);
|
|
12
12
|
}
|
|
13
|
-
async function
|
|
14
|
-
|
|
15
|
-
const cs = new CompressionStream("deflate-raw"), writer = cs.writable.getWriter();
|
|
16
|
-
writer.write(input).catch(() => {
|
|
17
|
-
}), writer.close().catch(() => {
|
|
18
|
-
});
|
|
19
|
-
const chunks = [], reader = cs.readable.getReader();
|
|
20
|
-
for (; ; ) {
|
|
21
|
-
const { value, done } = await reader.read();
|
|
22
|
-
if (done)
|
|
23
|
-
break;
|
|
24
|
-
chunks.push(value);
|
|
25
|
-
}
|
|
26
|
-
return concat(...chunks);
|
|
27
|
-
}
|
|
28
|
-
async function decompress(input, maxLength) {
|
|
29
|
-
supported("DecompressionStream");
|
|
30
|
-
const ds = new DecompressionStream("deflate-raw"), writer = ds.writable.getWriter();
|
|
13
|
+
async function transform(stream, input, maxLength = 1 / 0) {
|
|
14
|
+
const writer = stream.writable.getWriter();
|
|
31
15
|
writer.write(input).catch(() => {
|
|
32
16
|
}), writer.close().catch(() => {
|
|
33
17
|
});
|
|
34
18
|
const chunks = [];
|
|
35
19
|
let length = 0;
|
|
36
|
-
const reader =
|
|
20
|
+
const reader = stream.readable.getReader();
|
|
37
21
|
for (; ; ) {
|
|
38
22
|
const { value, done } = await reader.read();
|
|
39
23
|
if (done)
|
|
@@ -43,6 +27,12 @@ async function decompress(input, maxLength) {
|
|
|
43
27
|
}
|
|
44
28
|
return concat(...chunks);
|
|
45
29
|
}
|
|
30
|
+
async function compress(input) {
|
|
31
|
+
return supported("CompressionStream"), transform(new CompressionStream("deflate-raw"), input);
|
|
32
|
+
}
|
|
33
|
+
async function decompress(input, maxLength) {
|
|
34
|
+
return supported("DecompressionStream"), transform(new DecompressionStream("deflate-raw"), input, maxLength);
|
|
35
|
+
}
|
|
46
36
|
export {
|
|
47
37
|
compress,
|
|
48
38
|
decompress,
|
|
@@ -105,15 +105,11 @@ function jweAlgorithm(alg) {
|
|
|
105
105
|
function isJWECEKTransport(algorithm) {
|
|
106
106
|
return algorithm.mode === "key-wrapping" || algorithm.mode === "key-encryption" || algorithm.mode === "key-agreement-with-key-wrapping";
|
|
107
107
|
}
|
|
108
|
-
function invalidJWEKeyManagementMode(_mode) {
|
|
109
|
-
throw new TypeError("Invalid JWE key management mode");
|
|
110
|
-
}
|
|
111
108
|
function jweEncryption(enc) {
|
|
112
109
|
return (typeof enc == "string" ? ENC[enc] : void 0) ?? unsupported("enc", "Encryption Algorithm");
|
|
113
110
|
}
|
|
114
111
|
export {
|
|
115
112
|
JWE,
|
|
116
|
-
invalidJWEKeyManagementMode,
|
|
117
113
|
isJWECEKTransport,
|
|
118
114
|
jweAlgorithm,
|
|
119
115
|
jweEncryption
|