@openclaw/slack 2026.9.5 → 2026.9.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/assets/icon.png +0 -0
- package/dist/.setup/{account-inspect-B86OaUEt.mjs → account-inspect-DWBXpER6.mjs} +1 -1
- package/dist/.setup/{accounts-C1FspRF-.mjs → accounts-D_N9IqNA.mjs} +33 -10
- package/dist/.setup/{action-runtime-Aa-h24Fq.mjs → action-runtime-DfWvuiZd.mjs} +46 -65
- package/dist/.setup/action-runtime.runtime-Ck4bAWOX.mjs +2 -0
- package/dist/.setup/{actions-BvGUGk3w.mjs → actions-Df0CzcDl.mjs} +148 -204
- package/dist/.setup/{approval-handler.runtime-BcZNF-VP.mjs → approval-handler.runtime-Ed6Sw5VK.mjs} +37 -47
- package/dist/.setup/{approval-message-updates-Cy1cxfBn.mjs → approval-message-updates-BadvtA7R.mjs} +1 -2
- package/dist/.setup/{channel-DrBm0NFw.mjs → channel-C7bgPSTE.mjs} +192 -280
- package/dist/.setup/channel-meta-C443t-lI.mjs +27 -0
- package/dist/.setup/{channel-type-osC0XOES.mjs → channel-type-ClOttrZ5.mjs} +13 -21
- package/dist/.setup/{channel.setup-BSY5hzVz.mjs → channel.setup-Dh2jzAjN.mjs} +35 -42
- package/dist/.setup/{config-schema-DrY3S7Ee.mjs → config-schema-BZCxmHKG.mjs} +32 -21
- package/dist/.setup/{directory-config-CTs7YyuU.mjs → directory-config-BOUWH3hR.mjs} +7 -10
- package/dist/.setup/{directory-live-Btq0063Q.mjs → directory-live-B2O4B_Ho.mjs} +9 -21
- package/dist/.setup/doctor-contract-CRN1Z_c7.mjs +342 -0
- package/dist/.setup/{message-tool-api-DRnDCVdY.mjs → message-tool-api-Cu4lwlGy.mjs} +34 -48
- package/dist/.setup/{provider-w36VTgZ3.mjs → monitor-BPVfkumU.mjs} +2191 -2704
- package/dist/.setup/{outbound-adapter-K3Ek1iSR.mjs → outbound-adapter-Bv48XUjq.mjs} +10 -21
- package/dist/.setup/{pipeline.runtime-BZqGcbfi.mjs → pipeline.runtime-B1H63Frf.mjs} +901 -892
- package/dist/.setup/{plugin-routes-C3X0eVaK.mjs → plugin-routes-B8tooDLj.mjs} +1 -1
- package/dist/.setup/{policy-Db_QWCZZ.mjs → policy-D-jfM174.mjs} +5 -5
- package/dist/.setup/{probe-64C6k3_Q.mjs → probe-B2Y9qc_z.mjs} +101 -39
- package/dist/.setup/{registry-bbjH7IHX.mjs → registry-CIbMfuf8.mjs} +6 -2
- package/dist/.setup/{relay-source-CDqY76Vp.mjs → relay-source-BpKdjsll.mjs} +10 -12
- package/dist/.setup/{replies-CWFhjS9S.mjs → replies-BAnUtr2f.mjs} +16 -76
- package/dist/.setup/{reply-blocks-9uCeAJts.mjs → reply-blocks-SE1kTE3I.mjs} +27 -154
- package/dist/.setup/{resolve-channels-x8fX1SEt.mjs → resolve-channels-XXBn8UU_.mjs} +4 -5
- package/dist/.setup/{resolve-users-B8BpBnH2.mjs → resolve-users-DW0ngD03.mjs} +20 -22
- package/dist/.setup/{scopes-CJ-6l4v4.mjs → scopes-CasuDvaa.mjs} +6 -17
- package/dist/.setup/{secret-contract-DxmvbxBF.mjs → secret-contract-BaZcu6P_.mjs} +15 -20
- package/dist/.setup/{secret-contract-api-D9UfYujm.mjs → secret-contract-api-Dp6290Vg.mjs} +1 -1
- package/dist/.setup/{security-audit-BypHqcq5.mjs → security-audit-BqDc-6VL.mjs} +1 -1
- package/dist/.setup/{send-6GCb3lBP.mjs → send-BOVLQi3n.mjs} +102 -199
- package/dist/.setup/{session-status-BhG6pdiH.mjs → session-status-DscajIsd.mjs} +323 -250
- package/dist/.setup/{setup-plugin-api-DtCEByQB.mjs → setup-plugin-api-DTtbTKNk.mjs} +1 -1
- package/dist/.setup/{setup-surface-DsE0hsYY.mjs → setup-surface-Dn7QgWRE.mjs} +24 -56
- package/dist/.setup/{shared-BNmqCPgQ.mjs → shared-qau-uDGl.mjs} +30 -56
- package/dist/.setup/{slash-dispatch.runtime-Io4ASZsY.mjs → slash-dispatch.runtime--AEzLVBF.mjs} +1 -1
- package/dist/.setup/{streaming-compat-B-e0mqM0.mjs → streaming-compat-C5Wut626.mjs} +31 -8
- package/dist/.setup/{target-parsing-DEsPjngB.mjs → target-parsing-FFE26kOV.mjs} +1 -7
- package/dist/.setup/{targets-Cku2KCvg.mjs → targets-C6LZQL1Q.mjs} +1 -1
- package/dist/.setup/{thread-ts-CukseRVL.mjs → thread-ts-Cvt7WD6B.mjs} +0 -1
- package/dist/account-inspect-api.js +1 -1
- package/dist/api.js +18 -17
- package/dist/channel-config-api.js +1 -1
- package/dist/channel-plugin-api.js +1 -1
- package/dist/directory-contract-api.js +1 -1
- package/dist/doctor-contract-api.js +1 -1
- package/dist/http-routes-api.js +1 -1
- package/dist/index.js +1 -1
- package/dist/message-tool-api.js +1 -1
- package/dist/runtime-api.js +11 -12
- package/dist/secret-contract-api.js +1 -1
- package/dist/security-contract-api.js +1 -1
- package/dist/setup-entry.js +2 -2
- package/dist/setup-plugin-api.js +1 -1
- package/node_modules/@slack/bolt/node_modules/@types/node/README.md +1 -1
- package/node_modules/@slack/bolt/node_modules/@types/node/child_process.d.ts +1 -1
- package/node_modules/@slack/bolt/node_modules/@types/node/crypto.d.ts +20 -8
- package/node_modules/@slack/bolt/node_modules/@types/node/ffi.d.ts +14 -0
- package/node_modules/@slack/bolt/node_modules/@types/node/http2.d.ts +3 -2
- package/node_modules/@slack/bolt/node_modules/@types/node/net.d.ts +16 -4
- package/node_modules/@slack/bolt/node_modules/@types/node/package.json +2 -2
- package/node_modules/@slack/bolt/node_modules/@types/node/process.d.ts +1 -0
- package/node_modules/@slack/bolt/node_modules/@types/node/quic.d.ts +39 -1
- package/node_modules/@slack/bolt/node_modules/@types/node/stream/iter.d.ts +9 -12
- package/node_modules/@slack/bolt/node_modules/@types/node/test/reporters.d.ts +1 -0
- package/node_modules/@slack/bolt/node_modules/@types/node/test.d.ts +72 -0
- package/node_modules/@slack/bolt/node_modules/@types/node/tls.d.ts +14 -10
- package/node_modules/@slack/bolt/node_modules/@types/node/vm.d.ts +2 -1
- package/node_modules/@slack/bolt/node_modules/@types/node/web-globals/streams.d.ts +4 -0
- package/node_modules/@slack/bolt/node_modules/@types/node/worker_threads.d.ts +4 -1
- package/node_modules/@slack/web-api/node_modules/@types/node/README.md +1 -1
- package/node_modules/@slack/web-api/node_modules/@types/node/child_process.d.ts +1 -1
- package/node_modules/@slack/web-api/node_modules/@types/node/crypto.d.ts +20 -8
- package/node_modules/@slack/web-api/node_modules/@types/node/ffi.d.ts +14 -0
- package/node_modules/@slack/web-api/node_modules/@types/node/http2.d.ts +3 -2
- package/node_modules/@slack/web-api/node_modules/@types/node/net.d.ts +16 -4
- package/node_modules/@slack/web-api/node_modules/@types/node/package.json +2 -2
- package/node_modules/@slack/web-api/node_modules/@types/node/process.d.ts +1 -0
- package/node_modules/@slack/web-api/node_modules/@types/node/quic.d.ts +39 -1
- package/node_modules/@slack/web-api/node_modules/@types/node/stream/iter.d.ts +9 -12
- package/node_modules/@slack/web-api/node_modules/@types/node/test/reporters.d.ts +1 -0
- package/node_modules/@slack/web-api/node_modules/@types/node/test.d.ts +72 -0
- package/node_modules/@slack/web-api/node_modules/@types/node/tls.d.ts +14 -10
- package/node_modules/@slack/web-api/node_modules/@types/node/vm.d.ts +2 -1
- package/node_modules/@slack/web-api/node_modules/@types/node/web-globals/streams.d.ts +4 -0
- package/node_modules/@slack/web-api/node_modules/@types/node/worker_threads.d.ts +4 -1
- package/node_modules/get-east-asian-width/index.js +8 -3
- package/node_modules/get-east-asian-width/lookup-data.js +1 -1
- package/node_modules/get-east-asian-width/lookup.js +4 -4
- package/node_modules/get-east-asian-width/package.json +1 -1
- package/node_modules/typebox/build/compile/code.mjs +1 -2
- package/node_modules/typebox/build/compile/validator.mjs +5 -1
- package/node_modules/typebox/build/format/iri.mjs +16 -9
- package/node_modules/typebox/build/guard/emit.mjs +2 -2
- package/node_modules/typebox/build/guard/guard.d.mts +7 -5
- package/node_modules/typebox/build/guard/guard.mjs +14 -9
- package/node_modules/typebox/build/guard/index.mjs +6 -0
- package/node_modules/typebox/build/guard/unicode/unicode.d.mts +6 -0
- package/node_modules/typebox/build/guard/unicode/unicode.mjs +35 -0
- package/node_modules/typebox/build/guard/{string.mjs → unicode/unicode_segment.mjs} +16 -19
- package/node_modules/typebox/build/schema/build.mjs +2 -3
- package/node_modules/typebox/build/schema/engine/_pathing.d.mts +1 -0
- package/node_modules/typebox/build/schema/engine/_pathing.mjs +11 -0
- package/node_modules/typebox/build/schema/engine/_refine.mjs +13 -5
- package/node_modules/typebox/build/schema/engine/additionalProperties.mjs +2 -1
- package/node_modules/typebox/build/schema/engine/dependencies.mjs +2 -1
- package/node_modules/typebox/build/schema/engine/dependentSchemas.mjs +2 -1
- package/node_modules/typebox/build/schema/engine/dynamicRef.d.mts +1 -1
- package/node_modules/typebox/build/schema/engine/dynamicRef.mjs +2 -2
- package/node_modules/typebox/build/schema/engine/format.mjs +9 -2
- package/node_modules/typebox/build/schema/engine/patternProperties.mjs +3 -2
- package/node_modules/typebox/build/schema/engine/properties.mjs +3 -2
- package/node_modules/typebox/build/schema/engine/propertyNames.mjs +2 -1
- package/node_modules/typebox/build/schema/engine/recursiveRef.d.mts +1 -1
- package/node_modules/typebox/build/schema/engine/recursiveRef.mjs +2 -2
- package/node_modules/typebox/build/schema/engine/ref.d.mts +1 -1
- package/node_modules/typebox/build/schema/engine/ref.mjs +2 -2
- package/node_modules/typebox/build/schema/engine/schema.mjs +24 -24
- package/node_modules/typebox/build/schema/parse.mjs +3 -0
- package/node_modules/typebox/build/schema/pointer/pointer.d.mts +1 -6
- package/node_modules/typebox/build/schema/pointer/pointer.mjs +47 -64
- package/node_modules/typebox/build/system/settings/internal.d.mts +2 -0
- package/node_modules/typebox/build/system/settings/internal.mjs +20 -0
- package/node_modules/typebox/build/system/settings/settings.d.mts +11 -0
- package/node_modules/typebox/build/system/settings/settings.mjs +14 -0
- package/node_modules/typebox/build/type/extends/inference.d.mts +1 -1
- package/node_modules/typebox/build/type/extends/inference.mjs +15 -2
- package/node_modules/typebox/build/type/extends/tuple.d.mts +2 -1
- package/node_modules/typebox/build/type/extends/tuple.mjs +21 -1
- package/node_modules/typebox/build/value/parse/parse.mjs +10 -4
- package/node_modules/typebox/package.json +1 -1
- package/node_modules/typebox/readme.md +3 -1
- package/node_modules/undici/README.md +81 -25
- package/node_modules/undici/docs/docs/api/Agent.md +249 -42
- package/node_modules/undici/docs/docs/api/BalancedPool.md +246 -48
- package/node_modules/undici/docs/docs/api/CacheStorage.md +171 -13
- package/node_modules/undici/docs/docs/api/CacheStore.md +294 -98
- package/node_modules/undici/docs/docs/api/Client.md +407 -162
- package/node_modules/undici/docs/docs/api/ClientStats.md +80 -14
- package/node_modules/undici/docs/docs/api/Connector.md +118 -35
- package/node_modules/undici/docs/docs/api/ContentType.md +65 -25
- package/node_modules/undici/docs/docs/api/Cookies.md +122 -71
- package/node_modules/undici/docs/docs/api/Debug.md +34 -18
- package/node_modules/undici/docs/docs/api/DiagnosticsChannel.md +364 -164
- package/node_modules/undici/docs/docs/api/Dispatcher.md +490 -1055
- package/node_modules/undici/docs/docs/api/EnvHttpProxyAgent.md +105 -93
- package/node_modules/undici/docs/docs/api/Errors.md +503 -28
- package/node_modules/undici/docs/docs/api/EventSource.md +326 -13
- package/node_modules/undici/docs/docs/api/Fetch.md +681 -30
- package/node_modules/undici/docs/docs/api/GlobalInstallation.md +78 -96
- package/node_modules/undici/docs/docs/api/H2CClient.md +298 -176
- package/node_modules/undici/docs/docs/api/Interceptors.md +418 -0
- package/node_modules/undici/docs/docs/api/MockAgent.md +333 -314
- package/node_modules/undici/docs/docs/api/MockCallHistory.md +272 -98
- package/node_modules/undici/docs/docs/api/MockCallHistoryLog.md +189 -26
- package/node_modules/undici/docs/docs/api/MockClient.md +151 -33
- package/node_modules/undici/docs/docs/api/MockErrors.md +56 -5
- package/node_modules/undici/docs/docs/api/MockPool.md +321 -258
- package/node_modules/undici/docs/docs/api/Pool.md +236 -41
- package/node_modules/undici/docs/docs/api/PoolStats.md +119 -13
- package/node_modules/undici/docs/docs/api/ProxyAgent.md +179 -160
- package/node_modules/undici/docs/docs/api/RedirectHandler.md +238 -55
- package/node_modules/undici/docs/docs/api/RetryAgent.md +113 -27
- package/node_modules/undici/docs/docs/api/RetryHandler.md +161 -79
- package/node_modules/undici/docs/docs/api/RoundRobinPool.md +166 -72
- package/node_modules/undici/docs/docs/api/SnapshotAgent.md +262 -517
- package/node_modules/undici/docs/docs/api/Socks5ProxyAgent.md +177 -196
- package/node_modules/undici/docs/docs/api/Util.md +68 -11
- package/node_modules/undici/docs/docs/api/WebSocket.md +475 -80
- package/node_modules/undici/docs/docs/api/api-lifecycle.md +100 -32
- package/node_modules/undici/docs/docs/best-practices/client-certificate.md +2 -0
- package/node_modules/undici/docs/docs/best-practices/crawling.md +3 -1
- package/node_modules/undici/docs/docs/best-practices/migrating-from-v7-to-v8.md +233 -0
- package/node_modules/undici/docs/docs/best-practices/mocking-request.md +9 -7
- package/node_modules/undici/docs/docs/best-practices/proxy.md +3 -1
- package/node_modules/undici/docs/docs/best-practices/undici-vs-builtin-fetch.md +10 -8
- package/node_modules/undici/docs/docs/best-practices/writing-tests.md +2 -0
- package/node_modules/undici/docs/docs/getting-started.md +281 -0
- package/node_modules/undici/docs/docs/index.md +784 -0
- package/node_modules/undici/docs/docs/site.json +125 -0
- package/node_modules/undici/docs/docs/type-map.json +79 -0
- package/node_modules/undici/index.js +4 -2
- package/node_modules/undici/lib/api/api-connect.js +13 -11
- package/node_modules/undici/lib/api/api-pipeline.js +26 -13
- package/node_modules/undici/lib/api/api-request.js +51 -21
- package/node_modules/undici/lib/api/api-stream.js +81 -20
- package/node_modules/undici/lib/api/api-upgrade.js +21 -11
- package/node_modules/undici/lib/api/readable.js +45 -9
- package/node_modules/undici/lib/cache/memory-cache-store.js +3 -3
- package/node_modules/undici/lib/cache/sqlite-cache-store.js +3 -1
- package/node_modules/undici/lib/core/connect.js +46 -7
- package/node_modules/undici/lib/core/constants.js +1 -24
- package/node_modules/undici/lib/core/errors.js +22 -2
- package/node_modules/undici/lib/core/request.js +100 -18
- package/node_modules/undici/lib/core/symbols.js +4 -0
- package/node_modules/undici/lib/core/util.js +105 -48
- package/node_modules/undici/lib/dispatcher/agent.js +51 -32
- package/node_modules/undici/lib/dispatcher/balanced-pool.js +23 -27
- package/node_modules/undici/lib/dispatcher/client-h1.js +86 -24
- package/node_modules/undici/lib/dispatcher/client-h2.js +1091 -361
- package/node_modules/undici/lib/dispatcher/client.js +109 -36
- package/node_modules/undici/lib/dispatcher/dispatcher-base.js +19 -6
- package/node_modules/undici/lib/dispatcher/dispatcher.js +15 -5
- package/node_modules/undici/lib/dispatcher/dispatcher1-wrapper.js +110 -0
- package/node_modules/undici/lib/dispatcher/env-http-proxy-agent.js +37 -8
- package/node_modules/undici/lib/dispatcher/h2c-client.js +4 -4
- package/node_modules/undici/lib/dispatcher/pool-base.js +28 -10
- package/node_modules/undici/lib/dispatcher/pool.js +30 -5
- package/node_modules/undici/lib/dispatcher/proxy-agent.js +95 -19
- package/node_modules/undici/lib/dispatcher/retry-agent.js +3 -0
- package/node_modules/undici/lib/dispatcher/round-robin-pool.js +32 -10
- package/node_modules/undici/lib/dispatcher/socks5-proxy-agent.js +153 -63
- package/node_modules/undici/lib/global.js +37 -14
- package/node_modules/undici/lib/handler/cache-handler.js +49 -7
- package/node_modules/undici/lib/handler/cache-revalidation-handler.js +10 -0
- package/node_modules/undici/lib/handler/decorator-handler.js +8 -3
- package/node_modules/undici/lib/handler/deduplication-handler.js +12 -6
- package/node_modules/undici/lib/handler/redirect-handler.js +66 -66
- package/node_modules/undici/lib/handler/retry-handler.js +191 -50
- package/node_modules/undici/lib/interceptor/cache.js +75 -25
- package/node_modules/undici/lib/interceptor/decompress.js +5 -2
- package/node_modules/undici/lib/interceptor/deduplicate.js +5 -4
- package/node_modules/undici/lib/interceptor/dns.js +12 -1
- package/node_modules/undici/lib/interceptor/redirect.js +3 -3
- package/node_modules/undici/lib/llhttp/llhttp-wasm.js +1 -1
- package/node_modules/undici/lib/llhttp/llhttp_simd-wasm.js +1 -1
- package/node_modules/undici/lib/mock/mock-agent.js +21 -9
- package/node_modules/undici/lib/mock/mock-call-history.js +1 -1
- package/node_modules/undici/lib/mock/mock-interceptor.js +25 -7
- package/node_modules/undici/lib/mock/mock-utils.js +281 -47
- package/node_modules/undici/lib/mock/snapshot-agent.js +25 -7
- package/node_modules/undici/lib/mock/snapshot-recorder.js +38 -3
- package/node_modules/undici/lib/util/cache.js +92 -10
- package/node_modules/undici/lib/util/runtime-features.js +3 -34
- package/node_modules/undici/lib/web/cache/cache.js +6 -8
- package/node_modules/undici/lib/web/cookies/parse.js +150 -146
- package/node_modules/undici/lib/web/cookies/util.js +1 -1
- package/node_modules/undici/lib/web/eventsource/eventsource-stream.js +28 -1
- package/node_modules/undici/lib/web/eventsource/eventsource.js +20 -21
- package/node_modules/undici/lib/web/eventsource/util.js +32 -1
- package/node_modules/undici/lib/web/fetch/body.js +48 -10
- package/node_modules/undici/lib/web/fetch/constants.js +1 -1
- package/node_modules/undici/lib/web/fetch/formdata.js +21 -2
- package/node_modules/undici/lib/web/fetch/index.js +242 -223
- package/node_modules/undici/lib/web/fetch/request.js +35 -6
- package/node_modules/undici/lib/web/fetch/response.js +1 -3
- package/node_modules/undici/lib/web/fetch/util.js +10 -2
- package/node_modules/undici/lib/web/webidl/index.js +5 -7
- package/node_modules/undici/lib/web/websocket/frame.js +1 -7
- package/node_modules/undici/lib/web/websocket/receiver.js +1 -1
- package/node_modules/undici/lib/web/websocket/stream/websocketstream.js +10 -10
- package/node_modules/undici/lib/web/websocket/websocket.js +25 -3
- package/node_modules/undici/package.json +10 -10
- package/node_modules/undici/types/agent.d.ts +0 -2
- package/node_modules/undici/types/client.d.ts +69 -24
- 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 +8 -30
- package/node_modules/undici/types/dispatcher1-wrapper.d.ts +7 -0
- 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/formdata.d.ts +0 -6
- package/node_modules/undici/types/h2c-client.d.ts +6 -6
- package/node_modules/undici/types/handlers.d.ts +2 -0
- package/node_modules/undici/types/header.d.ts +5 -0
- package/node_modules/undici/types/index.d.ts +3 -1
- package/node_modules/undici/types/interceptors.d.ts +1 -1
- package/node_modules/undici/types/mock-agent.d.ts +11 -10
- package/node_modules/undici/types/mock-interceptor.d.ts +5 -1
- package/node_modules/undici/types/pool.d.ts +0 -2
- package/node_modules/undici/types/proxy-agent.d.ts +9 -2
- package/node_modules/undici/types/round-robin-pool.d.ts +0 -2
- package/node_modules/undici/types/snapshot-agent.d.ts +4 -0
- package/node_modules/undici/types/socks5-proxy-agent.d.ts +4 -2
- package/node_modules/undici/types/webidl.d.ts +0 -1
- 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/openclaw.plugin.json +49 -3
- package/package.json +8 -8
- package/dist/.setup/accounts.runtime-BpWv-6-2.mjs +0 -2
- package/dist/.setup/action-runtime.runtime-DwH3NdpT.mjs +0 -2
- package/dist/.setup/doctor-contract-CtMUqjvk.mjs +0 -186
- package/dist/.setup/monitor-Dw5uuKWM.mjs +0 -13
- package/dist/.setup/rolldown-runtime-D7D4PA-g.mjs +0 -13
- package/dist/.setup/send.runtime-BmqRP-WG.mjs +0 -2
- package/dist/.setup/slash-commands.runtime-BpSH0b3q.mjs +0 -2
- package/dist/.setup/slash-skill-commands.runtime-Bi1JWZHY.mjs +0 -2
- package/node_modules/undici/lib/handler/unwrap-handler.js +0 -106
- package/node_modules/undici/lib/handler/wrap-handler.js +0 -105
- package/node_modules/undici/lib/llhttp/.gitkeep +0 -0
- package/node_modules/undici/lib/util/promise.js +0 -28
- /package/node_modules/typebox/build/guard/{string.d.mts → unicode/unicode_segment.d.mts} +0 -0
|
@@ -52,10 +52,9 @@ const {
|
|
|
52
52
|
kOnError,
|
|
53
53
|
kHTTPContext,
|
|
54
54
|
kMaxConcurrentStreams,
|
|
55
|
-
|
|
56
|
-
kHTTP2ConnectionWindowSize,
|
|
55
|
+
kHostAuthority,
|
|
57
56
|
kResume,
|
|
58
|
-
|
|
57
|
+
kHTTP2Options
|
|
59
58
|
} = require('../core/symbols.js')
|
|
60
59
|
const connectH1 = require('./client-h1.js')
|
|
61
60
|
const connectH2 = require('./client-h2.js')
|
|
@@ -75,6 +74,28 @@ function getPipelining (client) {
|
|
|
75
74
|
return client[kPipelining] ?? client[kHTTPContext]?.defaultPipelining ?? 1
|
|
76
75
|
}
|
|
77
76
|
|
|
77
|
+
let h2NamespaceOptsWarning = false
|
|
78
|
+
function emitH2OptionsNamespaceWarning (optName) {
|
|
79
|
+
if (h2NamespaceOptsWarning === true) return
|
|
80
|
+
|
|
81
|
+
process.emitWarning(`Use h2Options.${optName} instead. ${optName} for H2 will be deprecated in future major.`, {
|
|
82
|
+
code: 'UNDICI-H2-OPTIONS'
|
|
83
|
+
})
|
|
84
|
+
h2NamespaceOptsWarning = true
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
// Protocol-aware dispatch ceiling. h1 RFC7230 pipelining is unrelated to h2
|
|
88
|
+
// stream multiplexing — over h2 the ceiling is the (server-confirmed)
|
|
89
|
+
// maxConcurrentStreams. Before a context is attached we use the h1
|
|
90
|
+
// pipelining factor; once h2 attaches the queued requests can drain in
|
|
91
|
+
// one batch up to maxConcurrentStreams.
|
|
92
|
+
function getMaxConcurrent (client) {
|
|
93
|
+
if (client[kHTTPContext]?.version === 'h2') {
|
|
94
|
+
return client[kMaxConcurrentStreams]
|
|
95
|
+
}
|
|
96
|
+
return getPipelining(client)
|
|
97
|
+
}
|
|
98
|
+
|
|
78
99
|
/**
|
|
79
100
|
* @type {import('../../types/client.js').default}
|
|
80
101
|
*/
|
|
@@ -115,7 +136,9 @@ class Client extends DispatcherBase {
|
|
|
115
136
|
initialWindowSize,
|
|
116
137
|
connectionWindowSize,
|
|
117
138
|
pingInterval,
|
|
118
|
-
webSocket
|
|
139
|
+
webSocket,
|
|
140
|
+
h2Options,
|
|
141
|
+
eventSource
|
|
119
142
|
} = {}) {
|
|
120
143
|
if (keepAlive !== undefined) {
|
|
121
144
|
throw new InvalidArgumentError('unsupported keepAlive, use pipelining=0 instead')
|
|
@@ -203,35 +226,66 @@ class Client extends DispatcherBase {
|
|
|
203
226
|
throw new InvalidArgumentError('allowH2 must be a valid boolean value')
|
|
204
227
|
}
|
|
205
228
|
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
229
|
+
// We validate only if allowH2 is enabled or null (enabled by default)
|
|
230
|
+
if (allowH2 !== false) {
|
|
231
|
+
// Prioritise new h2Options object, otherwise fallback to prior configuration options
|
|
232
|
+
if (h2Options != null) {
|
|
233
|
+
if (h2Options.useH2c != null && typeof h2Options.useH2c !== 'boolean') {
|
|
234
|
+
throw new InvalidArgumentError('h2Options.useH2c must be a valid boolean value')
|
|
235
|
+
}
|
|
209
236
|
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
237
|
+
if (h2Options.settings?.initialWindowSize != null && (!Number.isInteger(h2Options.settings.initialWindowSize) || h2Options.settings.initialWindowSize < 1)) {
|
|
238
|
+
throw new InvalidArgumentError('h2Options.settings.initialWindowSize must be a positive integer, greater than 0')
|
|
239
|
+
}
|
|
213
240
|
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
241
|
+
if (h2Options.maxConcurrentStreams != null && (!Number.isInteger(h2Options.connectionWindowSize) || h2Options.maxConcurrentStreams < 1)) {
|
|
242
|
+
throw new InvalidArgumentError('h2Options.maxConcurrentStreams must be a positive integer, greater than 0')
|
|
243
|
+
}
|
|
217
244
|
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
245
|
+
if (h2Options.connectionWindowSize != null && (!Number.isInteger(h2Options.connectionWindowSize) || h2Options.connectionWindowSize < 1)) {
|
|
246
|
+
throw new InvalidArgumentError('h2Options.connectionWindowSize must be a positive integer, greater than 0')
|
|
247
|
+
}
|
|
221
248
|
|
|
222
|
-
|
|
223
|
-
|
|
249
|
+
if (h2Options.pingInterval != null && (typeof h2Options.pingInterval !== 'number' || !Number.isInteger(h2Options.pingInterval) || h2Options.pingInterval < 0)) {
|
|
250
|
+
throw new InvalidArgumentError('h2Options.pingInterval must be a positive integer, greater or equal to 0')
|
|
251
|
+
}
|
|
252
|
+
} else {
|
|
253
|
+
if (useH2c != null && typeof useH2c !== 'boolean') {
|
|
254
|
+
emitH2OptionsNamespaceWarning('useH2c')
|
|
255
|
+
throw new InvalidArgumentError('useH2c must be a valid boolean value')
|
|
256
|
+
}
|
|
257
|
+
|
|
258
|
+
if (maxConcurrentStreams != null && (typeof maxConcurrentStreams !== 'number' || maxConcurrentStreams < 1)) {
|
|
259
|
+
emitH2OptionsNamespaceWarning('maxConcurrentStreams')
|
|
260
|
+
throw new InvalidArgumentError('maxConcurrentStreams must be a positive integer, greater than 0')
|
|
261
|
+
}
|
|
262
|
+
|
|
263
|
+
if (initialWindowSize != null && (!Number.isInteger(initialWindowSize) || initialWindowSize < 1)) {
|
|
264
|
+
emitH2OptionsNamespaceWarning('initialWindowSize')
|
|
265
|
+
throw new InvalidArgumentError('initialWindowSize must be a positive integer, greater than 0')
|
|
266
|
+
}
|
|
267
|
+
|
|
268
|
+
if (connectionWindowSize != null && (!Number.isInteger(connectionWindowSize) || connectionWindowSize < 1)) {
|
|
269
|
+
emitH2OptionsNamespaceWarning('connectionWindowSize')
|
|
270
|
+
throw new InvalidArgumentError('connectionWindowSize must be a positive integer, greater than 0')
|
|
271
|
+
}
|
|
272
|
+
|
|
273
|
+
if (pingInterval != null && (typeof pingInterval !== 'number' || !Number.isInteger(pingInterval) || pingInterval < 0)) {
|
|
274
|
+
emitH2OptionsNamespaceWarning('pingInterval')
|
|
275
|
+
throw new InvalidArgumentError('pingInterval must be a positive integer, greater or equal to 0')
|
|
276
|
+
}
|
|
277
|
+
}
|
|
224
278
|
}
|
|
225
279
|
|
|
226
|
-
super({ webSocket })
|
|
280
|
+
super({ webSocket, eventSource })
|
|
227
281
|
|
|
228
282
|
if (typeof connect !== 'function') {
|
|
229
283
|
connect = buildConnector({
|
|
230
284
|
...tls,
|
|
231
285
|
maxCachedSessions,
|
|
232
286
|
allowH2,
|
|
233
|
-
useH2c,
|
|
234
287
|
socketPath,
|
|
288
|
+
useH2c: h2Options?.useH2c ?? useH2c,
|
|
235
289
|
timeout: connectTimeout,
|
|
236
290
|
...(typeof autoSelectFamily === 'boolean' ? { autoSelectFamily, autoSelectFamilyAttemptTimeout } : undefined),
|
|
237
291
|
...connect
|
|
@@ -246,6 +300,7 @@ class Client extends DispatcherBase {
|
|
|
246
300
|
}
|
|
247
301
|
|
|
248
302
|
this[kUrl] = util.parseOrigin(url)
|
|
303
|
+
this[kHostAuthority] = `${this[kUrl].hostname}${this[kUrl].port ? `:${this[kUrl].port}` : ''}`
|
|
249
304
|
this[kConnector] = connect
|
|
250
305
|
this[kPipelining] = pipelining != null ? pipelining : 1
|
|
251
306
|
this[kMaxHeadersSize] = maxHeaderSize
|
|
@@ -257,7 +312,7 @@ class Client extends DispatcherBase {
|
|
|
257
312
|
this[kLocalAddress] = localAddress != null ? localAddress : null
|
|
258
313
|
this[kResuming] = 0 // 0, idle, 1, scheduled, 2 resuming
|
|
259
314
|
this[kNeedDrain] = 0 // 0, idle, 1, scheduled, 2 resuming
|
|
260
|
-
this[kHostHeader] = `host: ${this[
|
|
315
|
+
this[kHostHeader] = `host: ${this[kHostAuthority]}\r\n`
|
|
261
316
|
this[kBodyTimeout] = bodyTimeout != null ? bodyTimeout : 300e3
|
|
262
317
|
this[kHeadersTimeout] = headersTimeout != null ? headersTimeout : 300e3
|
|
263
318
|
this[kStrictContentLength] = strictContentLength == null ? true : strictContentLength
|
|
@@ -266,16 +321,20 @@ class Client extends DispatcherBase {
|
|
|
266
321
|
this[kMaxResponseSize] = maxResponseSize > -1 ? maxResponseSize : -1
|
|
267
322
|
this[kHTTPContext] = null
|
|
268
323
|
// h2
|
|
269
|
-
this[
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
324
|
+
this[kHTTP2Options] = {
|
|
325
|
+
pingInterval: h2Options?.pingInterval ?? pingInterval ?? 60e3,
|
|
326
|
+
connectionWindowSize: h2Options?.connectionWindowSize ?? connectionWindowSize ?? 524288,
|
|
327
|
+
maxConcurrentStreams: h2Options?.maxConcurrentStreams ?? maxConcurrentStreams ?? 100, // Max peerConcurrentStreams for a Node h2 server
|
|
328
|
+
sessionOptions: {
|
|
329
|
+
// HTTP/2 window sizes are set to higher defaults than Node.js core for better performance:
|
|
330
|
+
// - initialWindowSize: 262144 (256KB) vs Node.js default 65535 (64KB - 1)
|
|
331
|
+
// Allows more data to be sent before requiring acknowledgment, improving throughput
|
|
332
|
+
// especially on high-latency networks. This matches common production HTTP/2 servers.
|
|
333
|
+
// - connectionWindowSize: 524288 (512KB) vs Node.js default (none set)
|
|
334
|
+
// Provides better flow control for the entire connection across multiple streams.
|
|
335
|
+
initialWindowSize: h2Options?.initialWindowSize ?? initialWindowSize ?? 262144
|
|
336
|
+
}
|
|
337
|
+
}
|
|
279
338
|
|
|
280
339
|
// kQueue is built up of 3 sections separated by
|
|
281
340
|
// the kRunningIdx and kPendingIdx indices.
|
|
@@ -324,10 +383,17 @@ class Client extends DispatcherBase {
|
|
|
324
383
|
}
|
|
325
384
|
|
|
326
385
|
get [kBusy] () {
|
|
386
|
+
// The `kPending > 0` check below is the gate Pool uses to decide whether
|
|
387
|
+
// to spin up an additional Client. For h1 that fan-out is correct —
|
|
388
|
+
// each socket only handles one pipelined request at a time. Once an h2
|
|
389
|
+
// context is attached we want concurrent dispatches to multiplex onto
|
|
390
|
+
// the shared session, so suppress that signal in the h2 case.
|
|
391
|
+
const allowsMux = this[kHTTPContext]?.version === 'h2'
|
|
392
|
+
|
|
327
393
|
return Boolean(
|
|
328
394
|
this[kHTTPContext]?.busy(null) ||
|
|
329
|
-
(this[kSize] >= (
|
|
330
|
-
this[kPending] > 0
|
|
395
|
+
(this[kSize] >= (getMaxConcurrent(this) || 1)) ||
|
|
396
|
+
(this[kPending] > 0 && !allowsMux)
|
|
331
397
|
)
|
|
332
398
|
}
|
|
333
399
|
|
|
@@ -551,9 +617,15 @@ function handleConnectError (client, err, { host, hostname, protocol, port }) {
|
|
|
551
617
|
}
|
|
552
618
|
|
|
553
619
|
if (err.code === 'ERR_TLS_CERT_ALTNAME_INVALID') {
|
|
554
|
-
|
|
620
|
+
const running = client[kQueue].splice(client[kRunningIdx], client[kRunning])
|
|
621
|
+
client[kPendingIdx] = client[kRunningIdx]
|
|
622
|
+
|
|
623
|
+
for (let i = 0; i < running.length; i++) {
|
|
624
|
+
util.errorRequest(client, running[i], err)
|
|
625
|
+
}
|
|
626
|
+
|
|
555
627
|
while (client[kPending] > 0 && client[kQueue][client[kPendingIdx]].servername === client[kServerName]) {
|
|
556
|
-
const request = client[kQueue]
|
|
628
|
+
const request = client[kQueue].splice(client[kPendingIdx], 1)[0]
|
|
557
629
|
util.errorRequest(client, request, err)
|
|
558
630
|
}
|
|
559
631
|
} else {
|
|
@@ -618,7 +690,7 @@ function _resume (client, sync) {
|
|
|
618
690
|
return
|
|
619
691
|
}
|
|
620
692
|
|
|
621
|
-
if (client[kRunning] >= (
|
|
693
|
+
if (client[kRunning] >= (getMaxConcurrent(client) || 1)) {
|
|
622
694
|
return
|
|
623
695
|
}
|
|
624
696
|
|
|
@@ -645,6 +717,7 @@ function _resume (client, sync) {
|
|
|
645
717
|
}
|
|
646
718
|
|
|
647
719
|
if (!client[kHTTPContext]) {
|
|
720
|
+
client[kServerName] = request.servername
|
|
648
721
|
connect(client)
|
|
649
722
|
return
|
|
650
723
|
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
'use strict'
|
|
2
2
|
|
|
3
|
+
const buffer = require('node:buffer')
|
|
3
4
|
const Dispatcher = require('./dispatcher')
|
|
4
|
-
const UnwrapHandler = require('../handler/unwrap-handler')
|
|
5
5
|
const {
|
|
6
6
|
ClientDestroyedError,
|
|
7
7
|
ClientClosedError,
|
|
@@ -12,6 +12,7 @@ const { kDestroy, kClose, kClosed, kDestroyed, kDispatch } = require('../core/sy
|
|
|
12
12
|
const kOnDestroyed = Symbol('onDestroyed')
|
|
13
13
|
const kOnClosed = Symbol('onClosed')
|
|
14
14
|
const kWebSocketOptions = Symbol('webSocketOptions')
|
|
15
|
+
const kEventSourceOptions = Symbol('eventSourceOptions')
|
|
15
16
|
|
|
16
17
|
class DispatcherBase extends Dispatcher {
|
|
17
18
|
/** @type {boolean} */
|
|
@@ -32,10 +33,11 @@ class DispatcherBase extends Dispatcher {
|
|
|
32
33
|
constructor (opts) {
|
|
33
34
|
super()
|
|
34
35
|
this[kWebSocketOptions] = opts?.webSocket ?? {}
|
|
36
|
+
this[kEventSourceOptions] = opts?.eventSource ?? {}
|
|
35
37
|
}
|
|
36
38
|
|
|
37
39
|
/**
|
|
38
|
-
* @returns {import('../../types/
|
|
40
|
+
* @returns {import('../../types/client').Client.WebSocketOptions}
|
|
39
41
|
*/
|
|
40
42
|
get webSocketOptions () {
|
|
41
43
|
return {
|
|
@@ -44,6 +46,15 @@ class DispatcherBase extends Dispatcher {
|
|
|
44
46
|
}
|
|
45
47
|
}
|
|
46
48
|
|
|
49
|
+
/**
|
|
50
|
+
* @returns {import('../../types/client').Client.EventSourceOptions}
|
|
51
|
+
*/
|
|
52
|
+
get eventSourceOptions () {
|
|
53
|
+
return {
|
|
54
|
+
maxEventSize: this[kEventSourceOptions].maxEventSize ?? buffer.kStringMaxLength
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
|
|
47
58
|
/** @returns {boolean} */
|
|
48
59
|
get destroyed () {
|
|
49
60
|
return this[kDestroyed]
|
|
@@ -153,13 +164,15 @@ class DispatcherBase extends Dispatcher {
|
|
|
153
164
|
throw new InvalidArgumentError('handler must be an object')
|
|
154
165
|
}
|
|
155
166
|
|
|
156
|
-
handler = UnwrapHandler.unwrap(handler)
|
|
157
|
-
|
|
158
167
|
try {
|
|
159
168
|
if (!opts || typeof opts !== 'object') {
|
|
160
169
|
throw new InvalidArgumentError('opts must be an object.')
|
|
161
170
|
}
|
|
162
171
|
|
|
172
|
+
if (opts.dispatcher) {
|
|
173
|
+
throw new InvalidArgumentError('opts.dispatcher is not supported by instance methods. Pass opts.dispatcher to the top-level undici functions or call the dispatcher instance method directly.')
|
|
174
|
+
}
|
|
175
|
+
|
|
163
176
|
if (this[kDestroyed] || this[kOnDestroyed]) {
|
|
164
177
|
throw new ClientDestroyedError()
|
|
165
178
|
}
|
|
@@ -170,11 +183,11 @@ class DispatcherBase extends Dispatcher {
|
|
|
170
183
|
|
|
171
184
|
return this[kDispatch](opts, handler)
|
|
172
185
|
} catch (err) {
|
|
173
|
-
if (typeof handler.
|
|
186
|
+
if (typeof handler.onResponseError !== 'function') {
|
|
174
187
|
throw err
|
|
175
188
|
}
|
|
176
189
|
|
|
177
|
-
handler.
|
|
190
|
+
handler.onResponseError(null, err)
|
|
178
191
|
|
|
179
192
|
return false
|
|
180
193
|
}
|
|
@@ -1,8 +1,6 @@
|
|
|
1
1
|
'use strict'
|
|
2
2
|
const EventEmitter = require('node:events')
|
|
3
|
-
const
|
|
4
|
-
|
|
5
|
-
const wrapInterceptor = (dispatch) => (opts, handler) => dispatch(opts, WrapHandler.wrap(handler))
|
|
3
|
+
const { kOriginless, kUrl } = require('../core/symbols')
|
|
6
4
|
|
|
7
5
|
class Dispatcher extends EventEmitter {
|
|
8
6
|
dispatch () {
|
|
@@ -20,6 +18,10 @@ class Dispatcher extends EventEmitter {
|
|
|
20
18
|
compose (...args) {
|
|
21
19
|
// So we handle [interceptor1, interceptor2] or interceptor1, interceptor2, ...
|
|
22
20
|
const interceptors = Array.isArray(args[0]) ? args[0] : args
|
|
21
|
+
// null disables origin-dependent interceptors; undefined uses opts.origin.
|
|
22
|
+
const interceptorOrigin = this[kOriginless] === true
|
|
23
|
+
? null
|
|
24
|
+
: this[kUrl]?.origin
|
|
23
25
|
let dispatch = this.dispatch.bind(this)
|
|
24
26
|
|
|
25
27
|
for (const interceptor of interceptors) {
|
|
@@ -31,14 +33,22 @@ class Dispatcher extends EventEmitter {
|
|
|
31
33
|
throw new TypeError(`invalid interceptor, expected function received ${typeof interceptor}`)
|
|
32
34
|
}
|
|
33
35
|
|
|
34
|
-
dispatch = interceptor(dispatch)
|
|
35
|
-
dispatch = wrapInterceptor(dispatch)
|
|
36
|
+
dispatch = interceptor(dispatch, interceptorOrigin)
|
|
36
37
|
|
|
37
38
|
if (dispatch == null || typeof dispatch !== 'function' || dispatch.length !== 2) {
|
|
38
39
|
throw new TypeError('invalid interceptor')
|
|
39
40
|
}
|
|
40
41
|
}
|
|
41
42
|
|
|
43
|
+
const originalDispatch = dispatch
|
|
44
|
+
const self = this
|
|
45
|
+
dispatch = function (opts, handler) {
|
|
46
|
+
if (opts && typeof opts === 'object' && !opts.origin && self[kUrl]) {
|
|
47
|
+
opts = Object.assign({}, opts, { origin: self[kUrl].origin })
|
|
48
|
+
}
|
|
49
|
+
return originalDispatch(opts, handler)
|
|
50
|
+
}
|
|
51
|
+
|
|
42
52
|
return new Proxy(this, {
|
|
43
53
|
get: (target, key) => key === 'dispatch' ? dispatch : target[key]
|
|
44
54
|
})
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
'use strict'
|
|
2
|
+
|
|
3
|
+
const Dispatcher = require('./dispatcher')
|
|
4
|
+
const { InvalidArgumentError } = require('../core/errors')
|
|
5
|
+
const { toRawHeaders } = require('../core/util')
|
|
6
|
+
const { kOriginless, kUrl } = require('../core/symbols')
|
|
7
|
+
|
|
8
|
+
class LegacyHandlerWrapper {
|
|
9
|
+
#handler
|
|
10
|
+
|
|
11
|
+
constructor (handler) {
|
|
12
|
+
this.#handler = handler
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
onRequestStart (controller, context) {
|
|
16
|
+
this.#handler.onConnect?.((reason) => controller.abort(reason), context)
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
onRequestUpgrade (controller, statusCode, headers, socket) {
|
|
20
|
+
const rawHeaders = controller?.rawHeaders ?? toRawHeaders(headers ?? {})
|
|
21
|
+
this.#handler.onUpgrade?.(statusCode, rawHeaders, socket)
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
onResponseStart (controller, statusCode, headers, statusMessage) {
|
|
25
|
+
const rawHeaders = controller?.rawHeaders ?? toRawHeaders(headers ?? {})
|
|
26
|
+
|
|
27
|
+
if (this.#handler.onHeaders?.(statusCode, rawHeaders, () => controller.resume(), statusMessage) === false) {
|
|
28
|
+
controller.pause()
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
onResponseData (controller, chunk) {
|
|
33
|
+
if (this.#handler.onData?.(chunk) === false) {
|
|
34
|
+
controller.pause()
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
onResponseEnd (controller, trailers) {
|
|
39
|
+
const rawTrailers = controller?.rawTrailers ?? toRawHeaders(trailers ?? {})
|
|
40
|
+
this.#handler.onComplete?.(rawTrailers)
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
onResponseError (_controller, err) {
|
|
44
|
+
if (!this.#handler.onError) {
|
|
45
|
+
throw err
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
this.#handler.onError(err)
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
onBodySent (chunk) {
|
|
52
|
+
this.#handler.onBodySent?.(chunk)
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
onRequestSent () {
|
|
56
|
+
this.#handler.onRequestSent?.()
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
onResponseStarted () {
|
|
60
|
+
this.#handler.onResponseStarted?.()
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
class Dispatcher1Wrapper extends Dispatcher {
|
|
65
|
+
#dispatcher
|
|
66
|
+
|
|
67
|
+
constructor (dispatcher) {
|
|
68
|
+
super()
|
|
69
|
+
|
|
70
|
+
if (!dispatcher || typeof dispatcher.dispatch !== 'function') {
|
|
71
|
+
throw new InvalidArgumentError('Argument dispatcher must implement dispatch')
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
this.#dispatcher = dispatcher
|
|
75
|
+
this[kUrl] = dispatcher[kUrl]
|
|
76
|
+
this[kOriginless] = dispatcher[kOriginless]
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
static wrapHandler (handler) {
|
|
80
|
+
if (!handler || typeof handler !== 'object') {
|
|
81
|
+
throw new InvalidArgumentError('handler must be an object')
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
if (typeof handler.onRequestStart === 'function') {
|
|
85
|
+
return handler
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
return new LegacyHandlerWrapper(handler)
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
dispatch (opts, handler) {
|
|
92
|
+
// Legacy (v1) consumers do not support HTTP/2, so force HTTP/1.1.
|
|
93
|
+
// See https://github.com/nodejs/undici/issues/4989
|
|
94
|
+
if (opts.allowH2 !== false) {
|
|
95
|
+
opts = { ...opts, allowH2: false }
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
return this.#dispatcher.dispatch(opts, Dispatcher1Wrapper.wrapHandler(handler))
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
close (...args) {
|
|
102
|
+
return this.#dispatcher.close(...args)
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
destroy (...args) {
|
|
106
|
+
return this.#dispatcher.destroy(...args)
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
module.exports = Dispatcher1Wrapper
|
|
@@ -16,7 +16,7 @@ class EnvHttpProxyAgent extends DispatcherBase {
|
|
|
16
16
|
#opts = null
|
|
17
17
|
|
|
18
18
|
constructor (opts = {}) {
|
|
19
|
-
super()
|
|
19
|
+
super(opts)
|
|
20
20
|
this.#opts = opts
|
|
21
21
|
|
|
22
22
|
const { httpProxy, httpsProxy, noProxy, ...agentOpts } = opts
|
|
@@ -65,9 +65,17 @@ class EnvHttpProxyAgent extends DispatcherBase {
|
|
|
65
65
|
#getProxyAgentForUrl (url) {
|
|
66
66
|
let { protocol, host: hostname, port } = url
|
|
67
67
|
|
|
68
|
-
//
|
|
69
|
-
//
|
|
70
|
-
|
|
68
|
+
// Remove the port suffix (e.g. ":8080") and then strip surrounding
|
|
69
|
+
// brackets from IPv6 literals (e.g. "[::1]" -> "::1") so that the
|
|
70
|
+
// result matches the unbracketed form stored by #parseNoProxy.
|
|
71
|
+
hostname = hostname.replace(/:\d*$/, '').replace(/^\[(.+)\]$/, '$1').toLowerCase()
|
|
72
|
+
// Drop a trailing dot: it only marks the fully qualified form of a domain
|
|
73
|
+
// name ("example.com." and "example.com" are the same name, RFC 1034 root
|
|
74
|
+
// label). This runs on every dispatch, so it is a charCode check rather
|
|
75
|
+
// than a third regex. `length > 1` leaves the degenerate host "." alone.
|
|
76
|
+
if (hostname.length > 1 && hostname.charCodeAt(hostname.length - 1) === 46) {
|
|
77
|
+
hostname = hostname.slice(0, -1)
|
|
78
|
+
}
|
|
71
79
|
port = Number.parseInt(port, 10) || DEFAULT_PORTS[protocol] || 0
|
|
72
80
|
if (!this.#shouldProxy(hostname, port)) {
|
|
73
81
|
return this[kNoProxyAgent]
|
|
@@ -119,11 +127,32 @@ class EnvHttpProxyAgent extends DispatcherBase {
|
|
|
119
127
|
if (!entry) {
|
|
120
128
|
continue
|
|
121
129
|
}
|
|
122
|
-
|
|
130
|
+
|
|
131
|
+
// An IPv6 entry with a port must be bracketed: [::1]:443.
|
|
132
|
+
// A bare IPv6 address like ::1 contains colons that must not be
|
|
133
|
+
// confused with a host:port separator, so we handle it separately.
|
|
134
|
+
let hostname, port
|
|
135
|
+
const ipv6WithPort = entry.match(/^\[(.+)\]:(\d+)$/)
|
|
136
|
+
if (ipv6WithPort) {
|
|
137
|
+
hostname = ipv6WithPort[1]
|
|
138
|
+
port = Number.parseInt(ipv6WithPort[2], 10)
|
|
139
|
+
} else {
|
|
140
|
+
// Bracketed IPv6 without port, or plain hostname[:port], or bare IPv6.
|
|
141
|
+
// Strip optional brackets first.
|
|
142
|
+
const unbracketed = entry.replace(/^\[(.+)\]$/, '$1')
|
|
143
|
+
// A bare IPv6 address contains multiple colons; a hostname:port entry
|
|
144
|
+
// has exactly one colon followed by digits. Only attempt host:port
|
|
145
|
+
// splitting when that is unambiguously the case.
|
|
146
|
+
const colonCount = (unbracketed.match(/:/g) || []).length
|
|
147
|
+
const parsed = colonCount === 1 && unbracketed.match(/^(.+):(\d+)$/)
|
|
148
|
+
hostname = parsed ? parsed[1] : unbracketed
|
|
149
|
+
port = parsed ? Number.parseInt(parsed[2], 10) : 0
|
|
150
|
+
}
|
|
151
|
+
|
|
123
152
|
noProxyEntries.push({
|
|
124
|
-
// strip leading dot or asterisk with dot
|
|
125
|
-
hostname: (
|
|
126
|
-
port
|
|
153
|
+
// strip leading dot or asterisk with dot, and any trailing dot
|
|
154
|
+
hostname: hostname.replace(/^\*?\./, '').replace(/^(.+)\.$/, '$1').toLowerCase(),
|
|
155
|
+
port
|
|
127
156
|
})
|
|
128
157
|
}
|
|
129
158
|
|
|
@@ -17,15 +17,15 @@ class H2CClient extends Client {
|
|
|
17
17
|
|
|
18
18
|
const { maxConcurrentStreams, pipelining, ...opts } =
|
|
19
19
|
clientOpts ?? {}
|
|
20
|
-
|
|
20
|
+
const defaultMaxConcurrentStreams = maxConcurrentStreams ?? 100
|
|
21
21
|
let defaultPipelining = 100
|
|
22
22
|
|
|
23
23
|
if (
|
|
24
24
|
maxConcurrentStreams != null &&
|
|
25
|
-
Number.isInteger(maxConcurrentStreams)
|
|
26
|
-
maxConcurrentStreams
|
|
25
|
+
(!Number.isInteger(maxConcurrentStreams) ||
|
|
26
|
+
maxConcurrentStreams < 1)
|
|
27
27
|
) {
|
|
28
|
-
|
|
28
|
+
throw new InvalidArgumentError('maxConcurrentStreams must be a positive integer, greater than 0')
|
|
29
29
|
}
|
|
30
30
|
|
|
31
31
|
if (pipelining != null && Number.isInteger(pipelining) && pipelining > 0) {
|
|
@@ -14,6 +14,7 @@ const kOnConnect = Symbol('onConnect')
|
|
|
14
14
|
const kOnDisconnect = Symbol('onDisconnect')
|
|
15
15
|
const kOnConnectionError = Symbol('onConnectionError')
|
|
16
16
|
const kGetDispatcher = Symbol('get dispatcher')
|
|
17
|
+
const kHasDispatcher = Symbol('has dispatcher')
|
|
17
18
|
const kAddClient = Symbol('add client')
|
|
18
19
|
const kRemoveClient = Symbol('remove client')
|
|
19
20
|
|
|
@@ -143,7 +144,7 @@ class PoolBase extends DispatcherBase {
|
|
|
143
144
|
if (!item) {
|
|
144
145
|
break
|
|
145
146
|
}
|
|
146
|
-
item.handler.
|
|
147
|
+
item.handler.onResponseError(null, err)
|
|
147
148
|
}
|
|
148
149
|
|
|
149
150
|
const destroyAll = new Array(this[kClients].length)
|
|
@@ -162,12 +163,28 @@ class PoolBase extends DispatcherBase {
|
|
|
162
163
|
this[kQueued]++
|
|
163
164
|
} else if (!dispatcher.dispatch(opts, handler)) {
|
|
164
165
|
dispatcher[kNeedDrain] = true
|
|
165
|
-
this[kNeedDrain] = !this[
|
|
166
|
+
this[kNeedDrain] = !this[kHasDispatcher]()
|
|
166
167
|
}
|
|
167
168
|
|
|
168
169
|
return !this[kNeedDrain]
|
|
169
170
|
}
|
|
170
171
|
|
|
172
|
+
[kHasDispatcher] () {
|
|
173
|
+
for (let i = 0; i < this[kClients].length; i++) {
|
|
174
|
+
const dispatcher = this[kClients][i]
|
|
175
|
+
|
|
176
|
+
if (
|
|
177
|
+
!dispatcher[kNeedDrain] &&
|
|
178
|
+
dispatcher.closed !== true &&
|
|
179
|
+
dispatcher.destroyed !== true
|
|
180
|
+
) {
|
|
181
|
+
return true
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
|
|
185
|
+
return false
|
|
186
|
+
}
|
|
187
|
+
|
|
171
188
|
[kAddClient] (client) {
|
|
172
189
|
client
|
|
173
190
|
.on('drain', this[kOnDrain].bind(this, client))
|
|
@@ -189,14 +206,14 @@ class PoolBase extends DispatcherBase {
|
|
|
189
206
|
}
|
|
190
207
|
|
|
191
208
|
[kRemoveClient] (client) {
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
})
|
|
209
|
+
const idx = this[kClients].indexOf(client)
|
|
210
|
+
if (idx !== -1) {
|
|
211
|
+
this[kClients].splice(idx, 1)
|
|
212
|
+
}
|
|
213
|
+
|
|
214
|
+
client.close(() => {})
|
|
198
215
|
|
|
199
|
-
this[kNeedDrain] = this[kClients].some(dispatcher => (
|
|
216
|
+
this[kNeedDrain] = !this[kClients].some(dispatcher => (
|
|
200
217
|
!dispatcher[kNeedDrain] &&
|
|
201
218
|
dispatcher.closed !== true &&
|
|
202
219
|
dispatcher.destroyed !== true
|
|
@@ -210,5 +227,6 @@ module.exports = {
|
|
|
210
227
|
kNeedDrain,
|
|
211
228
|
kAddClient,
|
|
212
229
|
kRemoveClient,
|
|
213
|
-
kGetDispatcher
|
|
230
|
+
kGetDispatcher,
|
|
231
|
+
kHasDispatcher
|
|
214
232
|
}
|