@openclaw/slack 2026.9.6 → 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-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
|
@@ -0,0 +1,281 @@
|
|
|
1
|
+
# Getting Started
|
|
2
|
+
|
|
3
|
+
<!--type=misc-->
|
|
4
|
+
|
|
5
|
+
## Installation
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
npm install undici
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
## Fetch
|
|
12
|
+
|
|
13
|
+
The quickest way to get started is with `fetch`, which follows the
|
|
14
|
+
[Fetch Standard](https://fetch.spec.whatwg.org/) and works the same way as
|
|
15
|
+
the browser API:
|
|
16
|
+
|
|
17
|
+
```mjs
|
|
18
|
+
import { fetch } from 'undici'
|
|
19
|
+
|
|
20
|
+
const res = await fetch('https://example.com')
|
|
21
|
+
const data = await res.json()
|
|
22
|
+
console.log(data)
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
### Using the Request object
|
|
26
|
+
|
|
27
|
+
undici also exports a `Request` class that follows the Fetch Standard:
|
|
28
|
+
|
|
29
|
+
```mjs
|
|
30
|
+
import { fetch, Request } from 'undici'
|
|
31
|
+
|
|
32
|
+
const req = new Request('https://example.com', {
|
|
33
|
+
method: 'POST',
|
|
34
|
+
headers: { 'content-type': 'application/json' },
|
|
35
|
+
body: JSON.stringify({ hello: 'world' })
|
|
36
|
+
})
|
|
37
|
+
const res = await fetch(req)
|
|
38
|
+
console.log(res.status)
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
### Streaming the response
|
|
42
|
+
|
|
43
|
+
`res.body` is a web `ReadableStream`. Use `pipeline` from
|
|
44
|
+
`node:stream/promises` to stream it to a file:
|
|
45
|
+
|
|
46
|
+
```mjs
|
|
47
|
+
import { fetch } from 'undici'
|
|
48
|
+
import { pipeline } from 'node:stream/promises'
|
|
49
|
+
import { createWriteStream } from 'node:fs'
|
|
50
|
+
|
|
51
|
+
const res = await fetch('https://example.com/large-file.zip')
|
|
52
|
+
await pipeline(res.body, createWriteStream('./file.zip'))
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
> Always consume or cancel the response body. In Node.js, garbage collection
|
|
56
|
+
> is not aggressive enough to release connections promptly, so leaving a body
|
|
57
|
+
> unread can cause connection leaks and stalled requests. See
|
|
58
|
+
> [Specification Compliance - Garbage Collection](/#garbage-collection)
|
|
59
|
+
> for details.
|
|
60
|
+
|
|
61
|
+
For more on `fetch`, see [API Reference: Fetch](api/Fetch.md).
|
|
62
|
+
|
|
63
|
+
## Dispatchers: Connection reuse and pooling
|
|
64
|
+
|
|
65
|
+
By default, `fetch`, `request`, `stream`, and `pipeline` create a new connection
|
|
66
|
+
for each call. For applications that make many requests to the same origin,
|
|
67
|
+
this is wasteful. undici provides **dispatchers** that manage connections
|
|
68
|
+
internally.
|
|
69
|
+
|
|
70
|
+
### `Agent` — for requests to multiple origins
|
|
71
|
+
|
|
72
|
+
`Agent` is the most general-purpose dispatcher. It pools connections per-origin
|
|
73
|
+
and is the recommended default for most applications. Use it with
|
|
74
|
+
`setGlobalDispatcher` to affect all undici calls globally:
|
|
75
|
+
|
|
76
|
+
```js
|
|
77
|
+
import { Agent, setGlobalDispatcher, fetch } from 'undici'
|
|
78
|
+
|
|
79
|
+
const agent = new Agent({
|
|
80
|
+
keepAliveTimeout: 30_000,
|
|
81
|
+
keepAliveMaxTimeout: 600_000
|
|
82
|
+
})
|
|
83
|
+
setGlobalDispatcher(agent)
|
|
84
|
+
|
|
85
|
+
// All subsequent fetch/request/stream/pipeline calls reuse connections
|
|
86
|
+
const res = await fetch('https://api.example.com/data')
|
|
87
|
+
```
|
|
88
|
+
|
|
89
|
+
You can also pass a dispatcher per-request:
|
|
90
|
+
|
|
91
|
+
```js
|
|
92
|
+
await fetch('https://api.example.com/data', { dispatcher: agent })
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
### `Pool` — for requests to a single origin
|
|
96
|
+
|
|
97
|
+
`Pool` manages a fixed set of connections to one origin. It gives you explicit
|
|
98
|
+
control over concurrency:
|
|
99
|
+
|
|
100
|
+
```js
|
|
101
|
+
import { Pool, request } from 'undici'
|
|
102
|
+
|
|
103
|
+
const pool = new Pool('https://api.example.com', { connections: 10 })
|
|
104
|
+
|
|
105
|
+
const { body } = await request('https://api.example.com/data', {
|
|
106
|
+
dispatcher: pool
|
|
107
|
+
})
|
|
108
|
+
const data = await body.json()
|
|
109
|
+
|
|
110
|
+
pool.close()
|
|
111
|
+
```
|
|
112
|
+
|
|
113
|
+
### `Client` — for a single connection
|
|
114
|
+
|
|
115
|
+
`Client` maps to a single TCP connection. It supports pipelining (sending
|
|
116
|
+
multiple requests before responses arrive), which should only be enabled for
|
|
117
|
+
trusted remote servers:
|
|
118
|
+
|
|
119
|
+
```js
|
|
120
|
+
import { Client } from 'undici'
|
|
121
|
+
|
|
122
|
+
const client = new Client('https://api.example.com', {
|
|
123
|
+
pipelining: 5
|
|
124
|
+
})
|
|
125
|
+
|
|
126
|
+
const { body } = await client.request({ path: '/', method: 'GET' })
|
|
127
|
+
await body.dump()
|
|
128
|
+
|
|
129
|
+
client.close()
|
|
130
|
+
```
|
|
131
|
+
|
|
132
|
+
For more on dispatcher options and lifecycle, see:
|
|
133
|
+
- [API Reference: Agent](api/Agent.md)
|
|
134
|
+
- [API Reference: Pool](api/Pool.md)
|
|
135
|
+
- [API Reference: Client](api/Client.md)
|
|
136
|
+
|
|
137
|
+
## Timeouts
|
|
138
|
+
|
|
139
|
+
undici applies timeouts at two levels:
|
|
140
|
+
|
|
141
|
+
- **`headersTimeout`** — time to wait for response headers (default: 300s).
|
|
142
|
+
- **`bodyTimeout`** — time between consecutive body chunks (default: 300s).
|
|
143
|
+
|
|
144
|
+
Set these on the dispatcher or per-request:
|
|
145
|
+
|
|
146
|
+
```js
|
|
147
|
+
import { Agent, setGlobalDispatcher } from 'undici'
|
|
148
|
+
|
|
149
|
+
const agent = new Agent({
|
|
150
|
+
headersTimeout: 5_000,
|
|
151
|
+
bodyTimeout: 30_000
|
|
152
|
+
})
|
|
153
|
+
|
|
154
|
+
setGlobalDispatcher(agent)
|
|
155
|
+
```
|
|
156
|
+
|
|
157
|
+
Timeout errors are thrown as `HeadersTimeoutError` and `BodyTimeoutError`.
|
|
158
|
+
See [API Reference: Errors](api/Errors.md) for the full list.
|
|
159
|
+
|
|
160
|
+
## Error handling
|
|
161
|
+
|
|
162
|
+
undici exposes structured errors via `error.code`:
|
|
163
|
+
|
|
164
|
+
```js
|
|
165
|
+
import { request, errors } from 'undici'
|
|
166
|
+
|
|
167
|
+
try {
|
|
168
|
+
const { body } = await request('https://example.com')
|
|
169
|
+
await body.json()
|
|
170
|
+
} catch (err) {
|
|
171
|
+
switch (err.code) {
|
|
172
|
+
case 'UND_ERR_CONNECT_TIMEOUT':
|
|
173
|
+
console.error('Connection timed out')
|
|
174
|
+
break
|
|
175
|
+
case 'UND_ERR_HEADERS_TIMEOUT':
|
|
176
|
+
console.error('Headers timed out')
|
|
177
|
+
break
|
|
178
|
+
case 'UND_ERR_BODY_TIMEOUT':
|
|
179
|
+
console.error('Body timed out')
|
|
180
|
+
break
|
|
181
|
+
case 'UND_ERR_ABORTED':
|
|
182
|
+
console.error('Request was aborted')
|
|
183
|
+
break
|
|
184
|
+
default:
|
|
185
|
+
console.error(err)
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
```
|
|
189
|
+
|
|
190
|
+
### Aborting requests
|
|
191
|
+
|
|
192
|
+
```js
|
|
193
|
+
import { request } from 'undici'
|
|
194
|
+
|
|
195
|
+
const ac = new AbortController()
|
|
196
|
+
|
|
197
|
+
setTimeout(() => ac.abort(), 1000)
|
|
198
|
+
|
|
199
|
+
try {
|
|
200
|
+
const { body } = await request('https://example.com', {
|
|
201
|
+
signal: ac.signal
|
|
202
|
+
})
|
|
203
|
+
await body.dump()
|
|
204
|
+
} catch (err) {
|
|
205
|
+
console.error(err.code) // UND_ERR_ABORTED
|
|
206
|
+
}
|
|
207
|
+
```
|
|
208
|
+
|
|
209
|
+
## Common patterns
|
|
210
|
+
|
|
211
|
+
### Proxies
|
|
212
|
+
|
|
213
|
+
Use `ProxyAgent` for HTTP(S) proxies, or `EnvHttpProxyAgent` to pick up
|
|
214
|
+
proxy settings from environment variables:
|
|
215
|
+
|
|
216
|
+
```js
|
|
217
|
+
import { ProxyAgent, setGlobalDispatcher } from 'undici'
|
|
218
|
+
|
|
219
|
+
const proxy = new ProxyAgent('http://proxy.internal:8080')
|
|
220
|
+
setGlobalDispatcher(proxy)
|
|
221
|
+
```
|
|
222
|
+
|
|
223
|
+
See [Best Practices: Proxy](best-practices/proxy.md) and
|
|
224
|
+
[API Reference: ProxyAgent](api/ProxyAgent.md).
|
|
225
|
+
|
|
226
|
+
### Mocking in tests
|
|
227
|
+
|
|
228
|
+
```js
|
|
229
|
+
import { MockAgent, setGlobalDispatcher, request } from 'undici'
|
|
230
|
+
|
|
231
|
+
const mockAgent = new MockAgent()
|
|
232
|
+
setGlobalDispatcher(mockAgent)
|
|
233
|
+
|
|
234
|
+
const mockPool = mockAgent.get('https://api.example.com')
|
|
235
|
+
mockPool.intercept({ path: '/users' }).reply(200, [{ id: 1 }])
|
|
236
|
+
|
|
237
|
+
const { body } = await request('https://api.example.com/users')
|
|
238
|
+
console.log(await body.json())
|
|
239
|
+
```
|
|
240
|
+
|
|
241
|
+
See [Best Practices: Mocking Request](best-practices/mocking-request.md)
|
|
242
|
+
and [API Reference: MockAgent](api/MockAgent.md).
|
|
243
|
+
|
|
244
|
+
### Testing with undici
|
|
245
|
+
|
|
246
|
+
For test suites, set short keep-alive timeouts to avoid slow teardowns:
|
|
247
|
+
|
|
248
|
+
```js
|
|
249
|
+
import { Agent, setGlobalDispatcher } from 'undici'
|
|
250
|
+
|
|
251
|
+
const agent = new Agent({
|
|
252
|
+
keepAliveTimeout: 10,
|
|
253
|
+
keepAliveMaxTimeout: 10
|
|
254
|
+
})
|
|
255
|
+
setGlobalDispatcher(agent)
|
|
256
|
+
```
|
|
257
|
+
|
|
258
|
+
See [Best Practices: Writing Tests](best-practices/writing-tests.md).
|
|
259
|
+
|
|
260
|
+
### Customizing the global fetch
|
|
261
|
+
|
|
262
|
+
You can override Node.js's built-in globals with `install()`:
|
|
263
|
+
|
|
264
|
+
```js
|
|
265
|
+
import { install } from 'undici'
|
|
266
|
+
|
|
267
|
+
install()
|
|
268
|
+
|
|
269
|
+
// Global fetch, Headers, Response, Request, and FormData
|
|
270
|
+
// now come from undici, not the Node.js bundle
|
|
271
|
+
const res = await fetch('https://example.com')
|
|
272
|
+
```
|
|
273
|
+
|
|
274
|
+
See [API Reference: Global Installation](api/GlobalInstallation.md).
|
|
275
|
+
|
|
276
|
+
## Further reading
|
|
277
|
+
|
|
278
|
+
- [Undici vs. Built-in Fetch](best-practices/undici-vs-builtin-fetch.md) —
|
|
279
|
+
when to install undici vs using Node.js built-in fetch
|
|
280
|
+
- [API Reference](api/Dispatcher.md) — full dispatcher API documentation
|
|
281
|
+
- [Examples](/examples/) — runnable code examples
|