@openclaw/slack 2026.9.6 → 2026.9.8
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-DP1Bcwj4.mjs → account-inspect-DWBXpER6.mjs} +1 -1
- package/dist/.setup/{accounts-BBHvg0pY.mjs → accounts-D_N9IqNA.mjs} +23 -1
- package/dist/.setup/{action-runtime-B01d85zt.mjs → action-runtime-DfWvuiZd.mjs} +26 -41
- package/dist/.setup/action-runtime.runtime-Ck4bAWOX.mjs +2 -0
- package/dist/.setup/{actions-DKCtBgCI.mjs → actions-Df0CzcDl.mjs} +88 -175
- package/dist/.setup/{approval-handler.runtime-DMszKn_7.mjs → approval-handler.runtime-Ed6Sw5VK.mjs} +37 -47
- package/dist/.setup/{approval-message-updates-Tb_qRokK.mjs → approval-message-updates-BadvtA7R.mjs} +1 -2
- package/dist/.setup/{channel-CErYZ5zw.mjs → channel-C7bgPSTE.mjs} +181 -273
- package/dist/.setup/channel-meta-C443t-lI.mjs +27 -0
- package/dist/.setup/{channel-type-Dxk8VJUb.mjs → channel-type-ClOttrZ5.mjs} +13 -21
- package/dist/.setup/{channel.setup-BVoUtdPn.mjs → channel.setup-Dh2jzAjN.mjs} +35 -42
- package/dist/.setup/{config-schema-CyL279e7.mjs → config-schema-BZCxmHKG.mjs} +24 -21
- package/dist/.setup/{directory-config-CQTSH45W.mjs → directory-config-BOUWH3hR.mjs} +7 -10
- package/dist/.setup/{directory-live-BCcj89QV.mjs → directory-live-B2O4B_Ho.mjs} +9 -21
- package/dist/.setup/doctor-contract-CRN1Z_c7.mjs +342 -0
- package/dist/.setup/{message-tool-api-C0PTFaNV.mjs → message-tool-api-Cu4lwlGy.mjs} +34 -48
- package/dist/.setup/{provider-C-jPaGt2.mjs → monitor-BPVfkumU.mjs} +2181 -2693
- package/dist/.setup/{outbound-adapter-A7Wdn8ZT.mjs → outbound-adapter-Bv48XUjq.mjs} +10 -21
- package/dist/.setup/{pipeline.runtime-BlPOexmJ.mjs → pipeline.runtime-B1H63Frf.mjs} +311 -457
- package/dist/.setup/{plugin-routes-C3X0eVaK.mjs → plugin-routes-B8tooDLj.mjs} +1 -1
- package/dist/.setup/{policy-BApW53pI.mjs → policy-D-jfM174.mjs} +5 -5
- package/dist/.setup/{probe-DiYIMPJo.mjs → probe-B2Y9qc_z.mjs} +101 -39
- package/dist/.setup/{registry-bbjH7IHX.mjs → registry-CIbMfuf8.mjs} +6 -2
- package/dist/.setup/{relay-source-DfOnjJTE.mjs → relay-source-BpKdjsll.mjs} +10 -12
- package/dist/.setup/{replies-BBAJxUOQ.mjs → replies-BAnUtr2f.mjs} +16 -76
- package/dist/.setup/{reply-blocks-Bm8kf6mK.mjs → reply-blocks-SE1kTE3I.mjs} +27 -154
- package/dist/.setup/{resolve-channels-BXbMBbJD.mjs → resolve-channels-XXBn8UU_.mjs} +4 -5
- package/dist/.setup/{resolve-users-65WqvIqD.mjs → resolve-users-DW0ngD03.mjs} +20 -22
- package/dist/.setup/{scopes-h3YB-mMs.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-Cp6omkOg.mjs → send-BOVLQi3n.mjs} +84 -171
- package/dist/.setup/{session-status-Cf7AvWOt.mjs → session-status-DscajIsd.mjs} +315 -238
- package/dist/.setup/{setup-plugin-api-dLPkL06L.mjs → setup-plugin-api-DTtbTKNk.mjs} +1 -1
- package/dist/.setup/{setup-surface-D3DLcCxu.mjs → setup-surface-Dn7QgWRE.mjs} +24 -56
- package/dist/.setup/{shared-CJ3arAFL.mjs → shared-qau-uDGl.mjs} +30 -56
- package/dist/.setup/{slash-dispatch.runtime-HFy_XvyO.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/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/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/openclaw.plugin.json +31 -3
- package/package.json +7 -7
- package/dist/.setup/accounts.runtime-DN-PPocC.mjs +0 -2
- package/dist/.setup/action-runtime.runtime-C8R8CUan.mjs +0 -2
- package/dist/.setup/doctor-contract-CtMUqjvk.mjs +0 -186
- package/dist/.setup/monitor-_Sht7Dqy.mjs +0 -13
- package/dist/.setup/rolldown-runtime-D7D4PA-g.mjs +0 -13
- package/dist/.setup/send.runtime-B4caZU6T.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
|
@@ -97,6 +97,13 @@ class Request {
|
|
|
97
97
|
|
|
98
98
|
#state
|
|
99
99
|
|
|
100
|
+
/**
|
|
101
|
+
* Removes the `abort` listener that makes this request's signal follow the
|
|
102
|
+
* passed signal. `null` when no such listener was registered.
|
|
103
|
+
* @type {(() => void) | null}
|
|
104
|
+
*/
|
|
105
|
+
#abortCleanup = null
|
|
106
|
+
|
|
100
107
|
// https://fetch.spec.whatwg.org/#dom-request
|
|
101
108
|
constructor (input, init = undefined) {
|
|
102
109
|
webidl.util.markAsUncloneable(this)
|
|
@@ -436,12 +443,23 @@ class Request {
|
|
|
436
443
|
setMaxListeners(1500, signal)
|
|
437
444
|
}
|
|
438
445
|
|
|
439
|
-
util.addAbortListener(signal, abort)
|
|
446
|
+
const removeAbortListener = util.addAbortListener(signal, abort)
|
|
440
447
|
// The third argument must be a registry key to be unregistered.
|
|
441
448
|
// Without it, you cannot unregister.
|
|
442
449
|
// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/FinalizationRegistry
|
|
443
450
|
// abort is used as the unregister key. (because it is unique)
|
|
444
451
|
requestFinalizer.register(ac, { signal, abort }, abort)
|
|
452
|
+
|
|
453
|
+
// Allow the listener to be removed deterministically once the fetch
|
|
454
|
+
// that owns this request has settled, instead of relying solely on the
|
|
455
|
+
// FinalizationRegistry (i.e. garbage collection). Reusing a single
|
|
456
|
+
// signal across many requests would otherwise leak listeners.
|
|
457
|
+
// See https://github.com/nodejs/undici/issues/5285
|
|
458
|
+
this.#abortCleanup = () => {
|
|
459
|
+
requestFinalizer.unregister(abort)
|
|
460
|
+
removeAbortListener()
|
|
461
|
+
this.#abortCleanup = null
|
|
462
|
+
}
|
|
445
463
|
}
|
|
446
464
|
}
|
|
447
465
|
|
|
@@ -868,15 +886,25 @@ class Request {
|
|
|
868
886
|
static setRequestState (request, newState) {
|
|
869
887
|
request.#state = newState
|
|
870
888
|
}
|
|
889
|
+
|
|
890
|
+
/**
|
|
891
|
+
* Removes the `abort` listener that makes this request's signal follow the
|
|
892
|
+
* signal passed to its constructor, if any. Idempotent.
|
|
893
|
+
* @param {Request} request
|
|
894
|
+
*/
|
|
895
|
+
static removeRequestAbortListener (request) {
|
|
896
|
+
request.#abortCleanup?.()
|
|
897
|
+
}
|
|
871
898
|
}
|
|
872
899
|
|
|
873
|
-
const { setRequestSignal, getRequestDispatcher, setRequestDispatcher, setRequestHeaders, getRequestState, setRequestState } = Request
|
|
900
|
+
const { setRequestSignal, getRequestDispatcher, setRequestDispatcher, setRequestHeaders, getRequestState, setRequestState, removeRequestAbortListener } = Request
|
|
874
901
|
Reflect.deleteProperty(Request, 'setRequestSignal')
|
|
875
902
|
Reflect.deleteProperty(Request, 'getRequestDispatcher')
|
|
876
903
|
Reflect.deleteProperty(Request, 'setRequestDispatcher')
|
|
877
904
|
Reflect.deleteProperty(Request, 'setRequestHeaders')
|
|
878
905
|
Reflect.deleteProperty(Request, 'getRequestState')
|
|
879
906
|
Reflect.deleteProperty(Request, 'setRequestState')
|
|
907
|
+
Reflect.deleteProperty(Request, 'removeRequestAbortListener')
|
|
880
908
|
|
|
881
909
|
mixinBody(Request, getRequestState)
|
|
882
910
|
|
|
@@ -895,13 +923,14 @@ function makeRequest (init) {
|
|
|
895
923
|
serviceWorkers: init.serviceWorkers ?? 'all',
|
|
896
924
|
initiator: init.initiator ?? '',
|
|
897
925
|
destination: init.destination ?? '',
|
|
898
|
-
priority: init.priority ??
|
|
926
|
+
priority: init.priority ?? 'auto',
|
|
899
927
|
origin: init.origin ?? 'client',
|
|
900
928
|
policyContainer: init.policyContainer ?? 'client',
|
|
901
929
|
referrer: init.referrer ?? 'client',
|
|
902
930
|
referrerPolicy: init.referrerPolicy ?? '',
|
|
903
931
|
mode: init.mode ?? 'no-cors',
|
|
904
932
|
useCORSPreflightFlag: init.useCORSPreflightFlag ?? false,
|
|
933
|
+
// TODO: is this credentials mode? https://fetch.spec.whatwg.org/#concept-request-credentials-mode
|
|
905
934
|
credentials: init.credentials ?? 'same-origin',
|
|
906
935
|
useCredentials: init.useCredentials ?? false,
|
|
907
936
|
cache: init.cache ?? 'default',
|
|
@@ -1100,8 +1129,7 @@ webidl.converters.RequestInit = webidl.dictionaryConverter([
|
|
|
1100
1129
|
{
|
|
1101
1130
|
key: 'priority',
|
|
1102
1131
|
converter: webidl.converters.DOMString,
|
|
1103
|
-
allowedValues: ['high', 'low', 'auto']
|
|
1104
|
-
defaultValue: () => 'auto'
|
|
1132
|
+
allowedValues: ['high', 'low', 'auto']
|
|
1105
1133
|
}
|
|
1106
1134
|
])
|
|
1107
1135
|
|
|
@@ -1111,5 +1139,6 @@ module.exports = {
|
|
|
1111
1139
|
fromInnerRequest,
|
|
1112
1140
|
cloneRequest,
|
|
1113
1141
|
getRequestDispatcher,
|
|
1114
|
-
getRequestState
|
|
1142
|
+
getRequestState,
|
|
1143
|
+
removeRequestAbortListener
|
|
1115
1144
|
}
|
|
@@ -45,9 +45,7 @@ class Response {
|
|
|
45
45
|
static json (data, init = undefined) {
|
|
46
46
|
webidl.argumentLengthCheck(arguments, 1, 'Response.json')
|
|
47
47
|
|
|
48
|
-
|
|
49
|
-
init = webidl.converters.ResponseInit(init)
|
|
50
|
-
}
|
|
48
|
+
init = webidl.converters.ResponseInit(init)
|
|
51
49
|
|
|
52
50
|
// 1. Let bytes the result of running serialize a JavaScript value to JSON bytes on data.
|
|
53
51
|
const bytes = textEncoder.encode(
|
|
@@ -227,14 +227,19 @@ function TAOCheck () {
|
|
|
227
227
|
return 'success'
|
|
228
228
|
}
|
|
229
229
|
|
|
230
|
+
// https://w3c.github.io/webappsec-fetch-metadata/#abstract-opdef-append-the-fetch-metadata-headers-for-a-request
|
|
230
231
|
function appendFetchMetadata (httpRequest) {
|
|
232
|
+
// 1. If r’s url is not a potentially trustworthy URL, return.
|
|
233
|
+
if (!isURLPotentiallyTrustworthy(requestCurrentURL(httpRequest))) {
|
|
234
|
+
return
|
|
235
|
+
}
|
|
236
|
+
|
|
231
237
|
// https://w3c.github.io/webappsec-fetch-metadata/#sec-fetch-dest-header
|
|
232
238
|
// TODO
|
|
233
239
|
|
|
234
240
|
// https://w3c.github.io/webappsec-fetch-metadata/#sec-fetch-mode-header
|
|
235
241
|
|
|
236
242
|
// 1. Assert: r’s url is a potentially trustworthy URL.
|
|
237
|
-
// TODO
|
|
238
243
|
|
|
239
244
|
// 2. Let header be a Structured Header whose value is a token.
|
|
240
245
|
let header = null
|
|
@@ -1195,7 +1200,10 @@ function simpleRangeHeaderValue (value, allowWhitespace) {
|
|
|
1195
1200
|
// 18. If rangeStartValue and rangeEndValue are numbers, and rangeStartValue is
|
|
1196
1201
|
// greater than rangeEndValue, then return failure.
|
|
1197
1202
|
// Note: ... when can they not be numbers?
|
|
1198
|
-
|
|
1203
|
+
// Note: rangeStartValue or rangeEndValue may be null for open-ended ranges
|
|
1204
|
+
// such as `bytes=5-` or `bytes=-5`. A null value must not be coerced to 0
|
|
1205
|
+
// in the comparison, so this check only applies when both are numbers.
|
|
1206
|
+
if (rangeStartValue !== null && rangeEndValue !== null && rangeStartValue > rangeEndValue) {
|
|
1199
1207
|
return 'failure'
|
|
1200
1208
|
}
|
|
1201
1209
|
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
const assert = require('node:assert')
|
|
4
4
|
const { types, inspect } = require('node:util')
|
|
5
|
-
const {
|
|
5
|
+
const { markAsUncloneable } = require('node:worker_threads')
|
|
6
6
|
|
|
7
7
|
const UNDEFINED = 1
|
|
8
8
|
const BOOLEAN = 2
|
|
@@ -26,9 +26,9 @@ const webidl = {
|
|
|
26
26
|
/**
|
|
27
27
|
* @description Instantiate an error.
|
|
28
28
|
*
|
|
29
|
-
* @param {Object}
|
|
30
|
-
* @param {string}
|
|
31
|
-
* @param {string}
|
|
29
|
+
* @param {Object} message
|
|
30
|
+
* @param {string} message.header
|
|
31
|
+
* @param {string} message.message
|
|
32
32
|
* @returns {TypeError}
|
|
33
33
|
*/
|
|
34
34
|
webidl.errors.exception = function (message) {
|
|
@@ -158,9 +158,7 @@ webidl.util.TypeValueToString = function (o) {
|
|
|
158
158
|
}
|
|
159
159
|
}
|
|
160
160
|
|
|
161
|
-
webidl.util.markAsUncloneable =
|
|
162
|
-
? require('node:worker_threads').markAsUncloneable
|
|
163
|
-
: () => {}
|
|
161
|
+
webidl.util.markAsUncloneable = markAsUncloneable
|
|
164
162
|
|
|
165
163
|
// https://webidl.spec.whatwg.org/#abstract-opdef-converttoint
|
|
166
164
|
webidl.util.ConvertToInt = function (V, bitLength, signedness, flags) {
|
|
@@ -10,13 +10,7 @@ let bufIdx = BUFFER_SIZE
|
|
|
10
10
|
|
|
11
11
|
const randomFillSync = runtimeFeatures.has('crypto')
|
|
12
12
|
? require('node:crypto').randomFillSync
|
|
13
|
-
|
|
14
|
-
: function randomFillSync (buffer, _offset, _size) {
|
|
15
|
-
for (let i = 0; i < buffer.length; ++i) {
|
|
16
|
-
buffer[i] = Math.random() * 255 | 0
|
|
17
|
-
}
|
|
18
|
-
return buffer
|
|
19
|
-
}
|
|
13
|
+
: null
|
|
20
14
|
|
|
21
15
|
function generateMask () {
|
|
22
16
|
if (bufIdx === BUFFER_SIZE) {
|
|
@@ -48,7 +48,7 @@ class ByteParser extends Writable {
|
|
|
48
48
|
/**
|
|
49
49
|
* @param {import('./websocket').Handler} handler
|
|
50
50
|
* @param {Map<string, string>|null} extensions
|
|
51
|
-
* @param {{
|
|
51
|
+
* @param {{ maxPayloadSize?: number }} [options]
|
|
52
52
|
*/
|
|
53
53
|
constructor (handler, extensions, options = {}) {
|
|
54
54
|
super()
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
'use strict'
|
|
2
2
|
|
|
3
|
-
const {
|
|
4
|
-
const { environmentSettingsObject } = require('../../fetch/util')
|
|
3
|
+
const { addAbortListener } = require('node:events')
|
|
4
|
+
const { environmentSettingsObject, readableStreamClose } = require('../../fetch/util')
|
|
5
5
|
const { states, opcodes, sentCloseFrameState } = require('../constants')
|
|
6
6
|
const { webidl } = require('../../webidl')
|
|
7
7
|
const { getURLRecord, isValidSubprotocol, isEstablished, utf8Decode } = require('../util')
|
|
@@ -21,11 +21,11 @@ class WebSocketStream {
|
|
|
21
21
|
#url
|
|
22
22
|
|
|
23
23
|
// Each WebSocketStream object has an associated opened promise , which is a promise.
|
|
24
|
-
/** @type {
|
|
24
|
+
/** @type {ReturnType<typeof Promise.withResolvers>} */
|
|
25
25
|
#openedPromise
|
|
26
26
|
|
|
27
27
|
// Each WebSocketStream object has an associated closed promise , which is a promise.
|
|
28
|
-
/** @type {
|
|
28
|
+
/** @type {ReturnType<typeof Promise.withResolvers>} */
|
|
29
29
|
#closedPromise
|
|
30
30
|
|
|
31
31
|
// Each WebSocketStream object has an associated readable stream , which is a ReadableStream .
|
|
@@ -113,8 +113,8 @@ class WebSocketStream {
|
|
|
113
113
|
this.#url = urlRecord.toString()
|
|
114
114
|
|
|
115
115
|
// 6. Set this 's opened promise and closed promise to new promises.
|
|
116
|
-
this.#openedPromise =
|
|
117
|
-
this.#closedPromise =
|
|
116
|
+
this.#openedPromise = Promise.withResolvers()
|
|
117
|
+
this.#closedPromise = Promise.withResolvers()
|
|
118
118
|
|
|
119
119
|
// 7. Apply backpressure to the WebSocket.
|
|
120
120
|
// TODO
|
|
@@ -133,7 +133,7 @@ class WebSocketStream {
|
|
|
133
133
|
}
|
|
134
134
|
|
|
135
135
|
// 8.3. Add the following abort steps to signal :
|
|
136
|
-
signal
|
|
136
|
+
addAbortListener(signal, () => {
|
|
137
137
|
// 8.3.1. If the WebSocket connection is not yet established : [WSP]
|
|
138
138
|
if (!isEstablished(this.#handler.readyState)) {
|
|
139
139
|
// 8.3.1.1. Fail the WebSocket connection .
|
|
@@ -149,7 +149,7 @@ class WebSocketStream {
|
|
|
149
149
|
// Set this 's handshake aborted to true.
|
|
150
150
|
this.#handshakeAborted = true
|
|
151
151
|
}
|
|
152
|
-
}
|
|
152
|
+
})
|
|
153
153
|
}
|
|
154
154
|
|
|
155
155
|
// 9. Let client be this 's relevant settings object .
|
|
@@ -202,7 +202,7 @@ class WebSocketStream {
|
|
|
202
202
|
chunk = webidl.converters.WebSocketStreamWrite(chunk)
|
|
203
203
|
|
|
204
204
|
// 1. Let promise be a new promise created in stream ’s relevant realm .
|
|
205
|
-
const promise =
|
|
205
|
+
const promise = Promise.withResolvers()
|
|
206
206
|
|
|
207
207
|
// 2. Let data be null.
|
|
208
208
|
let data = null
|
|
@@ -393,7 +393,7 @@ class WebSocketStream {
|
|
|
393
393
|
// 6. If the connection was closed cleanly ,
|
|
394
394
|
if (wasClean) {
|
|
395
395
|
// 6.1. Close stream ’s readable stream .
|
|
396
|
-
this.#readableStreamController
|
|
396
|
+
readableStreamClose(this.#readableStreamController)
|
|
397
397
|
|
|
398
398
|
// 6.2. Error stream ’s writable stream with an " InvalidStateError " DOMException indicating that a closed WebSocketStream cannot be written to.
|
|
399
399
|
this.#writableStreamController.error(new DOMException('A closed WebSocketStream cannot be written to', 'InvalidStateError'))
|
|
@@ -25,6 +25,9 @@ const { SendQueue } = require('./sender')
|
|
|
25
25
|
const { WebsocketFrameSend } = require('./frame')
|
|
26
26
|
const { channels } = require('../../core/diagnostics')
|
|
27
27
|
|
|
28
|
+
const kRef = Symbol.for('nodejs.ref')
|
|
29
|
+
const kUnref = Symbol.for('nodejs.unref')
|
|
30
|
+
|
|
28
31
|
function getSocketAddress (socket) {
|
|
29
32
|
if (typeof socket?.address === 'function') {
|
|
30
33
|
return socket.address()
|
|
@@ -68,6 +71,7 @@ class WebSocket extends EventTarget {
|
|
|
68
71
|
#bufferedAmount = 0
|
|
69
72
|
#protocol = ''
|
|
70
73
|
#extensions = ''
|
|
74
|
+
#refed = true
|
|
71
75
|
|
|
72
76
|
/** @type {SendQueue} */
|
|
73
77
|
#sendQueue
|
|
@@ -194,6 +198,20 @@ class WebSocket extends EventTarget {
|
|
|
194
198
|
this.#binaryType = 'blob'
|
|
195
199
|
}
|
|
196
200
|
|
|
201
|
+
[kRef] () {
|
|
202
|
+
webidl.brandCheck(this, WebSocket)
|
|
203
|
+
|
|
204
|
+
this.#refed = true
|
|
205
|
+
this.#handler.socket?.ref?.()
|
|
206
|
+
}
|
|
207
|
+
|
|
208
|
+
[kUnref] () {
|
|
209
|
+
webidl.brandCheck(this, WebSocket)
|
|
210
|
+
|
|
211
|
+
this.#refed = false
|
|
212
|
+
this.#handler.socket?.unref?.()
|
|
213
|
+
}
|
|
214
|
+
|
|
197
215
|
/**
|
|
198
216
|
* @see https://websockets.spec.whatwg.org/#dom-websocket-close
|
|
199
217
|
* @param {number|undefined} code
|
|
@@ -468,9 +486,13 @@ class WebSocket extends EventTarget {
|
|
|
468
486
|
// once this happens, the connection is open
|
|
469
487
|
this.#handler.socket = response.socket
|
|
470
488
|
|
|
471
|
-
|
|
472
|
-
|
|
473
|
-
|
|
489
|
+
if (!this.#refed) {
|
|
490
|
+
this.#handler.socket.unref?.()
|
|
491
|
+
}
|
|
492
|
+
|
|
493
|
+
// Get options from dispatcher options
|
|
494
|
+
const maxFragments = this.#handler.controller.dispatcher?.webSocketOptions?.maxFragments
|
|
495
|
+
const maxPayloadSize = this.#handler.controller.dispatcher?.webSocketOptions?.maxPayloadSize
|
|
474
496
|
|
|
475
497
|
const parser = new ByteParser(this.#handler, parsedExtensions, {
|
|
476
498
|
maxFragments,
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "undici",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "8.10.2",
|
|
4
4
|
"description": "An HTTP/1.1 client, written from scratch for Node.js",
|
|
5
5
|
"homepage": "https://undici.nodejs.org",
|
|
6
6
|
"bugs": {
|
|
@@ -97,7 +97,7 @@
|
|
|
97
97
|
"test:websocket:autobahn": "node test/autobahn/client.js",
|
|
98
98
|
"test:websocket:autobahn:report": "node test/autobahn/report.js",
|
|
99
99
|
"test:wpt:setup": "node test/web-platform-tests/wpt-runner.mjs setup",
|
|
100
|
-
"test:wpt": "npm run test:wpt:setup && node test/web-platform-tests/wpt-runner.mjs run /fetch /mimesniff /xhr /websockets /
|
|
100
|
+
"test:wpt": "npm run test:wpt:setup && node test/web-platform-tests/wpt-runner.mjs run /fetch /mimesniff /xhr /websockets /eventsource",
|
|
101
101
|
"test:cache-tests": "node test/cache-interceptor/cache-tests.mjs --ci",
|
|
102
102
|
"coverage": "npm run coverage:clean && cross-env NODE_V8_COVERAGE=./coverage/tmp npm run test:javascript && npm run coverage:report",
|
|
103
103
|
"coverage:ci": "npm run coverage:clean && cross-env NODE_V8_COVERAGE=./coverage/tmp npm run test:javascript && npm run coverage:report:ci",
|
|
@@ -109,31 +109,31 @@
|
|
|
109
109
|
"prepare": "husky && node ./scripts/platform-shell.js"
|
|
110
110
|
},
|
|
111
111
|
"devDependencies": {
|
|
112
|
-
"@fastify/busboy": "3.2.
|
|
112
|
+
"@fastify/busboy": "3.2.2",
|
|
113
113
|
"@matteo.collina/tspl": "^0.2.0",
|
|
114
114
|
"@metcoder95/https-pem": "^1.0.0",
|
|
115
115
|
"@sinonjs/fake-timers": "^12.0.0",
|
|
116
|
-
"@types/node": "^
|
|
116
|
+
"@types/node": "^22.0.0",
|
|
117
117
|
"abort-controller": "^3.0.0",
|
|
118
|
-
"borp": "^0.
|
|
119
|
-
"c8": "^
|
|
118
|
+
"borp": "^1.0.0",
|
|
119
|
+
"c8": "^12.0.0",
|
|
120
120
|
"cross-env": "^10.0.0",
|
|
121
121
|
"dns-packet": "^5.4.0",
|
|
122
|
-
"esbuild": "^0.
|
|
122
|
+
"esbuild": "^0.28.0",
|
|
123
123
|
"eslint": "^9.9.0",
|
|
124
124
|
"fast-check": "^4.1.1",
|
|
125
125
|
"husky": "^9.0.7",
|
|
126
126
|
"jest": "^30.0.5",
|
|
127
127
|
"jsondiffpatch": "^0.7.3",
|
|
128
|
-
"neostandard": "^0.
|
|
128
|
+
"neostandard": "^0.13.0",
|
|
129
129
|
"node-forge": "^1.3.1",
|
|
130
|
-
"proxy": "^
|
|
130
|
+
"proxy": "^4.0.0",
|
|
131
131
|
"tsd": "^0.33.0",
|
|
132
132
|
"typescript": "^6.0.2",
|
|
133
133
|
"ws": "^8.11.0"
|
|
134
134
|
},
|
|
135
135
|
"engines": {
|
|
136
|
-
"node": ">=
|
|
136
|
+
"node": ">=22.19.0"
|
|
137
137
|
},
|
|
138
138
|
"tsd": {
|
|
139
139
|
"directory": "test/types",
|
|
@@ -22,8 +22,6 @@ declare namespace Agent {
|
|
|
22
22
|
export interface Options extends Pool.Options {
|
|
23
23
|
/** Default: `(origin, opts) => new Pool(origin, opts)`. */
|
|
24
24
|
factory?(origin: string | URL, opts: Object): Dispatcher;
|
|
25
|
-
|
|
26
|
-
interceptors?: { Agent?: readonly Dispatcher.DispatchInterceptor[] } & Pool.Options['interceptors']
|
|
27
25
|
maxOrigins?: number
|
|
28
26
|
}
|
|
29
27
|
|
|
@@ -1,9 +1,14 @@
|
|
|
1
1
|
import { URL } from 'node:url'
|
|
2
|
+
import { SessionOptions } from 'node:http2'
|
|
2
3
|
import Dispatcher from './dispatcher'
|
|
3
4
|
import buildConnector from './connector'
|
|
4
5
|
import TClientStats from './client-stats'
|
|
5
6
|
|
|
6
|
-
type ClientConnectOptions = Omit<Dispatcher.ConnectOptions
|
|
7
|
+
type ClientConnectOptions<TOpaque = null> = Omit<Dispatcher.ConnectOptions<TOpaque>, 'origin'>
|
|
8
|
+
|
|
9
|
+
// TODO: Pendings
|
|
10
|
+
// 1. Reflect this on Client instantiation
|
|
11
|
+
// 2. Client H2 should use this namespaced options instead.
|
|
7
12
|
|
|
8
13
|
/**
|
|
9
14
|
* A basic HTTP/1.1 client, mapped on top a single TCP/TLS connection. Pipelining is disabled by default.
|
|
@@ -20,33 +25,28 @@ export class Client extends Dispatcher {
|
|
|
20
25
|
readonly stats: TClientStats
|
|
21
26
|
|
|
22
27
|
// Override dispatcher APIs.
|
|
23
|
-
override connect (
|
|
24
|
-
options: ClientConnectOptions
|
|
25
|
-
): Promise<Dispatcher.ConnectData
|
|
26
|
-
override connect (
|
|
27
|
-
options: ClientConnectOptions
|
|
28
|
-
callback: (err: Error | null, data: Dispatcher.ConnectData) => void
|
|
28
|
+
override connect<TOpaque = null> (
|
|
29
|
+
options: ClientConnectOptions<TOpaque>
|
|
30
|
+
): Promise<Dispatcher.ConnectData<TOpaque>>
|
|
31
|
+
override connect<TOpaque = null> (
|
|
32
|
+
options: ClientConnectOptions<TOpaque>,
|
|
33
|
+
callback: (err: Error | null, data: Dispatcher.ConnectData<TOpaque>) => void
|
|
29
34
|
): void
|
|
30
35
|
}
|
|
31
36
|
|
|
32
37
|
export declare namespace Client {
|
|
33
|
-
export interface OptionsInterceptors {
|
|
34
|
-
Client: readonly Dispatcher.DispatchInterceptor[];
|
|
35
|
-
}
|
|
36
38
|
export interface Options {
|
|
37
|
-
/** TODO */
|
|
38
|
-
interceptors?: OptionsInterceptors;
|
|
39
39
|
/** The maximum length of request headers in bytes. Default: Node.js' `--max-http-header-size` or `16384` (16KiB). */
|
|
40
40
|
maxHeaderSize?: number;
|
|
41
|
-
/** The amount of time, in milliseconds, the parser will wait to receive the complete HTTP headers (Node 14 and above only). Default: `300e3` milliseconds (300s). */
|
|
41
|
+
/** The amount of time, in milliseconds, the parser will wait to receive the complete HTTP headers (Node 14 and above only). Default: `300e3` milliseconds (300s). HTTP/1.1 parser timeouts are not guaranteed to fire with exact millisecond precision: delays up to 1000ms use native timers, while larger delays use lower-overhead fast timers with a target resolution around 500ms. */
|
|
42
42
|
headersTimeout?: number;
|
|
43
43
|
/** @deprecated unsupported socketTimeout, use headersTimeout & bodyTimeout instead */
|
|
44
44
|
socketTimeout?: never;
|
|
45
45
|
/** @deprecated unsupported requestTimeout, use headersTimeout & bodyTimeout instead */
|
|
46
46
|
requestTimeout?: never;
|
|
47
|
-
/**
|
|
47
|
+
/** The timeout for establishing a socket connection, in milliseconds. Use `0` to disable it entirely. Default: `10e3` milliseconds (10s). */
|
|
48
48
|
connectTimeout?: number;
|
|
49
|
-
/** The timeout after which a request will time out, in milliseconds. Monitors time between receiving body data. Use `0` to disable it entirely. Default: `300e3` milliseconds (300s). */
|
|
49
|
+
/** The timeout after which a request will time out, in milliseconds. Monitors time between receiving body data. Use `0` to disable it entirely. Default: `300e3` milliseconds (300s). HTTP/1.1 parser timeouts are not guaranteed to fire with exact millisecond precision: delays up to 1000ms use native timers, while larger delays use lower-overhead fast timers with a target resolution around 500ms. */
|
|
50
50
|
bodyTimeout?: number;
|
|
51
51
|
/** @deprecated unsupported idleTimeout, use keepAliveTimeout instead */
|
|
52
52
|
idleTimeout?: never;
|
|
@@ -60,55 +60,65 @@ export declare namespace Client {
|
|
|
60
60
|
keepAliveMaxTimeout?: number;
|
|
61
61
|
/** A number of milliseconds subtracted from server *keep-alive* hints when overriding `idleTimeout` to account for timing inaccuracies caused by e.g. transport latency. Default: `1e3` milliseconds (1s). */
|
|
62
62
|
keepAliveTimeoutThreshold?: number;
|
|
63
|
-
/**
|
|
63
|
+
/** An IPC endpoint, either a Unix domain socket or Windows named pipe. Default: `null`. */
|
|
64
64
|
socketPath?: string;
|
|
65
|
-
/** The amount of concurrent requests to be sent over the single TCP/TLS connection according to [RFC7230](https://tools.ietf.org/html/rfc7230#section-6.3.2). Default: `1`. */
|
|
65
|
+
/** The amount of concurrent requests to be sent over the single TCP/TLS connection according to [RFC7230](https://tools.ietf.org/html/rfc7230#section-6.3.2). Only enable values greater than `1` when the remote server is trusted. Default: `1`. */
|
|
66
66
|
pipelining?: number;
|
|
67
67
|
/** @deprecated use the connect option instead */
|
|
68
68
|
tls?: never;
|
|
69
69
|
/** If `true`, an error is thrown when the request content-length header doesn't match the length of the request body. Default: `true`. */
|
|
70
70
|
strictContentLength?: boolean;
|
|
71
|
-
/**
|
|
71
|
+
/** Maximum number of TLS cached sessions used by the built-in connector. Use `0` to disable TLS session caching. Default: `100`. */
|
|
72
72
|
maxCachedSessions?: number;
|
|
73
|
-
/**
|
|
73
|
+
/** Connector options passed to `buildConnector`, or a custom connector function. Default: `null`. */
|
|
74
74
|
connect?: Partial<buildConnector.BuildOptions> | buildConnector.connector;
|
|
75
|
-
/**
|
|
75
|
+
/** The maximum number of requests to send over a single connection before it is reset. Use `0` to disable this limit. Default: `null`. */
|
|
76
76
|
maxRequestsPerClient?: number;
|
|
77
|
-
/**
|
|
77
|
+
/** Local IP address the socket should connect from. */
|
|
78
78
|
localAddress?: string;
|
|
79
79
|
/** Max response body size in bytes, -1 is disabled */
|
|
80
80
|
maxResponseSize?: number;
|
|
81
|
+
/** WebSocket-specific options */
|
|
82
|
+
webSocket?: Client.WebSocketOptions;
|
|
83
|
+
/** EventSource-specific options */
|
|
84
|
+
eventSource?: Client.EventSourceOptions;
|
|
81
85
|
/** Enables a family autodetection algorithm that loosely implements section 5 of RFC 8305. */
|
|
82
86
|
autoSelectFamily?: boolean;
|
|
83
87
|
/** The amount of time in milliseconds to wait for a connection attempt to finish before trying the next address when using the `autoSelectFamily` option. */
|
|
84
88
|
autoSelectFamilyAttemptTimeout?: number;
|
|
85
89
|
/**
|
|
86
90
|
* @description Enables support for H2 if the server has assigned bigger priority to it through ALPN negotiation.
|
|
87
|
-
* @default
|
|
91
|
+
* @default true
|
|
88
92
|
*/
|
|
89
93
|
allowH2?: boolean;
|
|
90
94
|
/**
|
|
91
95
|
* @description Dictates the maximum number of concurrent streams for a single H2 session. It can be overridden by a SETTINGS remote frame.
|
|
92
96
|
* @default 100
|
|
97
|
+
* @deprecated Use h2Options.maxConcurrentStreams instead
|
|
93
98
|
*/
|
|
94
99
|
maxConcurrentStreams?: number;
|
|
95
100
|
/**
|
|
96
101
|
* @description Sets the HTTP/2 stream-level flow-control window size (SETTINGS_INITIAL_WINDOW_SIZE).
|
|
97
102
|
* @default 262144
|
|
103
|
+
* @deprecated Use h2Options.settings.initialWindowSize instead
|
|
98
104
|
*/
|
|
99
105
|
initialWindowSize?: number;
|
|
100
106
|
/**
|
|
101
107
|
* @description Sets the HTTP/2 connection-level flow-control window size (ClientHttp2Session.setLocalWindowSize).
|
|
102
108
|
* @default 524288
|
|
109
|
+
* @deprecated Use h2Options.connectionWindowSize instead
|
|
103
110
|
*/
|
|
104
111
|
connectionWindowSize?: number;
|
|
105
112
|
/**
|
|
106
113
|
* @description Time interval between PING frames dispatch
|
|
107
114
|
* @default 60000
|
|
115
|
+
* @deprecated Use h2Options.connectionWindowSize instead
|
|
108
116
|
*/
|
|
109
117
|
pingInterval?: number;
|
|
110
|
-
/**
|
|
111
|
-
|
|
118
|
+
/**
|
|
119
|
+
* @description HTTP/2 configuration options
|
|
120
|
+
*/
|
|
121
|
+
h2Options?: Client.H2Options;
|
|
112
122
|
}
|
|
113
123
|
export interface SocketInfo {
|
|
114
124
|
localAddress?: string
|
|
@@ -134,6 +144,41 @@ export declare namespace Client {
|
|
|
134
144
|
*/
|
|
135
145
|
maxPayloadSize?: number;
|
|
136
146
|
}
|
|
147
|
+
|
|
148
|
+
export interface H2Options extends Omit<SessionOptions, keyof buildConnector.BuildOptions> {
|
|
149
|
+
/**
|
|
150
|
+
* @description Sets the HTTP/2 connection-level flow-control window size (ClientHttp2Session.setLocalWindowSize).
|
|
151
|
+
* @default 524288
|
|
152
|
+
*/
|
|
153
|
+
connectionWindowSize?: number;
|
|
154
|
+
/**
|
|
155
|
+
* @description Time interval between PING frames dispatch
|
|
156
|
+
* @default 60000
|
|
157
|
+
*/
|
|
158
|
+
pingInterval?: number;
|
|
159
|
+
/**
|
|
160
|
+
* @description Dictates the maximum number of concurrent streams for a single H2 session. It can be overridden by a SETTINGS remote frame.
|
|
161
|
+
* @default 100
|
|
162
|
+
*/
|
|
163
|
+
maxConcurrentStreams?: number;
|
|
164
|
+
/**
|
|
165
|
+
* @description Enable support for H2C (plain text)
|
|
166
|
+
* @default false
|
|
167
|
+
*/
|
|
168
|
+
useH2c?: boolean;
|
|
169
|
+
/**
|
|
170
|
+
* @description SETTINGS frame object. Default to 'node:http2' defaults
|
|
171
|
+
*/
|
|
172
|
+
settings?: Omit<SessionOptions['settings'], 'enablePush' | 'maxConcurrentStreams' | 'enableConnectProtocol'>
|
|
173
|
+
}
|
|
174
|
+
export interface EventSourceOptions {
|
|
175
|
+
/**
|
|
176
|
+
* Maximum allowed event size in bytes for EventSource messages.
|
|
177
|
+
* Set to 0 to disable the limit.
|
|
178
|
+
* @default buffer.kStringMaxLength
|
|
179
|
+
*/
|
|
180
|
+
maxEventSize?: number;
|
|
181
|
+
}
|
|
137
182
|
}
|
|
138
183
|
|
|
139
184
|
export default Client
|
|
@@ -7,6 +7,7 @@ declare function buildConnector (options?: buildConnector.BuildOptions): buildCo
|
|
|
7
7
|
declare namespace buildConnector {
|
|
8
8
|
export type BuildOptions = (ConnectionOptions | TcpNetConnectOpts | IpcNetConnectOpts) & {
|
|
9
9
|
allowH2?: boolean;
|
|
10
|
+
preferH2?: boolean;
|
|
10
11
|
maxCachedSessions?: number | null;
|
|
11
12
|
socketPath?: string | null;
|
|
12
13
|
timeout?: number | null;
|
|
@@ -18,7 +18,7 @@ export interface Cookie {
|
|
|
18
18
|
export function deleteCookie (
|
|
19
19
|
headers: Headers,
|
|
20
20
|
name: string,
|
|
21
|
-
attributes?: {
|
|
21
|
+
attributes?: { path?: string, domain?: string }
|
|
22
22
|
): void
|
|
23
23
|
|
|
24
24
|
export function getCookies (headers: Headers): Record<string, string>
|