@openclaw/slack 2026.7.2-beta.4 → 2026.7.2-beta.5
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/README.md +1 -1
- package/dist/{action-runtime-CFU52n4W.js → action-runtime-BO3HK_50.js} +5 -5
- package/dist/action-runtime.runtime-DbEcqEXC.js +2 -0
- package/dist/{actions-D51foiwR.js → actions-BkOaiDSX.js} +4 -4
- package/dist/{actions.runtime-BMJwtf5C.js → actions.runtime-Do-iOL51.js} +1 -1
- package/dist/api.js +12 -13
- package/dist/{approval-handler.runtime-3b4-wxMl.js → approval-handler.runtime-BAnGN7w0.js} +2 -2
- package/dist/{channel-Ds8NKvfr.js → channel-Cnrlie9S.js} +20 -32
- package/dist/channel-config-api.js +1 -1
- package/dist/channel-plugin-api.js +1 -1
- package/dist/{channel-type-DXkUajFP.js → channel-type-CPDX8EV-.js} +3 -3
- package/dist/{channel.setup-DOSTEDfA.js → channel.setup-DyZdLwUB.js} +4 -24
- package/dist/{setup-core-tPxMuFez.js → config-adapter-Bb8hn2tM.js} +38 -67
- package/dist/{config-schema-B4j4tCOI.js → config-schema-BajbuJGL.js} +0 -6
- package/dist/{directory-config-B08pm5ZT.js → directory-config-CeixfVuC.js} +1 -1
- package/dist/directory-contract-api.js +1 -1
- package/dist/{directory-live-DpPKzPrn.js → directory-live-CUwGPX2d.js} +2 -2
- package/dist/doctor-contract-CsGH1Dfc.js +158 -0
- package/dist/doctor-contract-api.js +1 -1
- package/dist/{group-policy-CdnQzQBI.js → group-policy-CthIXE2T.js} +27 -13
- package/dist/{message-tool-api-ByVyIVOh.js → message-tool-api-CvKoWYYQ.js} +0 -5
- package/dist/message-tool-api.js +1 -1
- package/dist/{monitor-CnB_WKvF.js → monitor-Cb5ZsOTY.js} +4 -4
- package/dist/{outbound-adapter-DuPz2HHt.js → outbound-adapter-sGrozuRg.js} +11 -68
- package/dist/{pipeline.runtime-5rRYZuX5.js → pipeline.runtime-mFCCSllA.js} +2094 -1953
- package/dist/{policy-C31RYSuT.js → policy-DVg6FyMP.js} +1 -1
- package/dist/{probe-CVRuArHA.js → probe-BhQTDVBQ.js} +50 -57
- package/dist/{provider-htuIJGFD.js → provider-PSppCU_K.js} +83 -65
- package/dist/{relay-source-Df9EaiTF.js → relay-source-D0mb_JBk.js} +1 -1
- package/dist/{replies-Cgr2Gli4.js → replies-BkPPM2Ri.js} +50 -13
- package/dist/{resolve-channels-DodP2TFx.js → resolve-channels-B3RlJKyV.js} +2 -2
- package/dist/{resolve-users-M9eF8891.js → resolve-users-DTm7PEMa.js} +2 -2
- package/dist/{rolldown-runtime-D7D4PA-g.js → rolldown-runtime-8H4AJuhK.js} +1 -0
- package/dist/{runtime-api-D5XYMMsf.js → runtime-api-jpn3vQ7e.js} +2 -2
- package/dist/runtime-api.js +10 -10
- package/dist/{scopes-CJRpHkDC.js → scopes-B2SqZ--4.js} +1 -1
- package/dist/{security-audit-Cz6erklv.js → security-audit-DR097212.js} +1 -1
- package/dist/security-contract-api.js +1 -1
- package/dist/{send-BZ1tPv7-.js → send-2IoDXPeB.js} +7 -21
- package/dist/{send.runtime-a2pilFor.js → send.runtime-BKd_PAEw.js} +1 -1
- package/dist/setup-plugin-api.js +1 -1
- package/dist/{setup-surface-wV-S1dE_.js → setup-surface-Dyam58nO.js} +8 -16
- package/dist/{shared-BfMskaMx.js → shared-g55DV75U.js} +14 -36
- package/dist/{slash-dispatch.runtime-lfeIsXTX.js → slash-dispatch.runtime-BRQbvn2e.js} +10 -9
- package/node_modules/@slack/bolt/dist/App.d.ts +4 -19
- package/node_modules/@slack/bolt/dist/App.d.ts.map +1 -1
- package/node_modules/@slack/bolt/dist/App.js +21 -40
- package/node_modules/@slack/bolt/dist/App.js.map +1 -1
- package/node_modules/@slack/bolt/dist/context/create-respond.d.ts +3 -3
- package/node_modules/@slack/bolt/dist/context/create-respond.d.ts.map +1 -1
- package/node_modules/@slack/bolt/dist/context/create-respond.js +13 -2
- package/node_modules/@slack/bolt/dist/context/create-respond.js.map +1 -1
- package/node_modules/@slack/bolt/dist/errors.d.ts +6 -8
- package/node_modules/@slack/bolt/dist/errors.d.ts.map +1 -1
- package/node_modules/@slack/bolt/dist/errors.js +11 -11
- package/node_modules/@slack/bolt/dist/errors.js.map +1 -1
- package/node_modules/@slack/bolt/dist/helpers.d.ts.map +1 -1
- package/node_modules/@slack/bolt/dist/helpers.js +1 -2
- package/node_modules/@slack/bolt/dist/helpers.js.map +1 -1
- package/node_modules/@slack/bolt/dist/index.d.ts +0 -1
- package/node_modules/@slack/bolt/dist/index.d.ts.map +1 -1
- package/node_modules/@slack/bolt/dist/index.js +1 -3
- package/node_modules/@slack/bolt/dist/index.js.map +1 -1
- package/node_modules/@slack/bolt/dist/receivers/AwsLambdaReceiver.d.ts +10 -1
- package/node_modules/@slack/bolt/dist/receivers/AwsLambdaReceiver.d.ts.map +1 -1
- package/node_modules/@slack/bolt/dist/receivers/AwsLambdaReceiver.js +5 -1
- package/node_modules/@slack/bolt/dist/receivers/AwsLambdaReceiver.js.map +1 -1
- package/node_modules/@slack/bolt/dist/receivers/HTTPModuleFunctions.d.ts.map +1 -1
- package/node_modules/@slack/bolt/dist/receivers/HTTPModuleFunctions.js +10 -14
- package/node_modules/@slack/bolt/dist/receivers/HTTPModuleFunctions.js.map +1 -1
- package/node_modules/@slack/bolt/dist/receivers/SocketModeFunctions.d.ts.map +1 -1
- package/node_modules/@slack/bolt/dist/receivers/SocketModeFunctions.js +1 -1
- package/node_modules/@slack/bolt/dist/receivers/SocketModeFunctions.js.map +1 -1
- package/node_modules/@slack/bolt/dist/receivers/SocketModeReceiver.d.ts +3 -1
- package/node_modules/@slack/bolt/dist/receivers/SocketModeReceiver.d.ts.map +1 -1
- package/node_modules/@slack/bolt/dist/receivers/SocketModeReceiver.js +2 -1
- package/node_modules/@slack/bolt/dist/receivers/SocketModeReceiver.js.map +1 -1
- package/node_modules/@slack/bolt/dist/types/actions/index.d.ts +2 -4
- package/node_modules/@slack/bolt/dist/types/actions/index.d.ts.map +1 -1
- package/node_modules/@slack/bolt/dist/types/actions/index.js +0 -2
- package/node_modules/@slack/bolt/dist/types/actions/index.js.map +1 -1
- package/node_modules/@slack/bolt/dist/types/events/index.d.ts +2 -0
- package/node_modules/@slack/bolt/dist/types/events/index.d.ts.map +1 -1
- package/node_modules/@slack/bolt/dist/types/utilities.d.ts +2 -2
- package/node_modules/@slack/bolt/dist/types/utilities.d.ts.map +1 -1
- package/node_modules/@slack/bolt/dist/types/view/index.d.ts +1 -31
- package/node_modules/@slack/bolt/dist/types/view/index.d.ts.map +1 -1
- package/node_modules/@slack/bolt/package.json +10 -11
- package/node_modules/@slack/logger/README.md +1 -1
- package/node_modules/@slack/logger/dist/index.js +17 -13
- package/node_modules/@slack/logger/dist/index.js.map +1 -1
- package/node_modules/@slack/logger/package.json +6 -7
- package/node_modules/@slack/oauth/README.md +1 -1
- package/node_modules/@slack/oauth/dist/errors.d.ts +25 -14
- package/node_modules/@slack/oauth/dist/errors.d.ts.map +1 -1
- package/node_modules/@slack/oauth/dist/errors.js +24 -33
- package/node_modules/@slack/oauth/dist/errors.js.map +1 -1
- package/node_modules/@slack/oauth/dist/install-provider.js +58 -16
- package/node_modules/@slack/oauth/dist/install-provider.js.map +1 -1
- package/node_modules/@slack/oauth/dist/installation-stores/file-store.js +4 -2
- package/node_modules/@slack/oauth/dist/installation-stores/file-store.js.map +1 -1
- package/node_modules/@slack/oauth/dist/installation-stores/memory-store.js +3 -16
- package/node_modules/@slack/oauth/dist/installation-stores/memory-store.js.map +1 -1
- package/node_modules/@slack/oauth/dist/state-stores/clear-state-store.js +2 -0
- package/node_modules/@slack/oauth/dist/state-stores/clear-state-store.js.map +1 -1
- package/node_modules/@slack/oauth/dist/state-stores/file-state-store.js +3 -0
- package/node_modules/@slack/oauth/dist/state-stores/file-state-store.js.map +1 -1
- package/node_modules/@slack/oauth/package.json +8 -9
- package/node_modules/@slack/socket-mode/README.md +1 -1
- package/node_modules/@slack/socket-mode/dist/package.json +21 -13
- package/node_modules/@slack/socket-mode/dist/src/SlackWebSocket.d.ts +14 -8
- package/node_modules/@slack/socket-mode/dist/src/SlackWebSocket.d.ts.map +1 -1
- package/node_modules/@slack/socket-mode/dist/src/SlackWebSocket.js +136 -48
- package/node_modules/@slack/socket-mode/dist/src/SlackWebSocket.js.map +1 -1
- package/node_modules/@slack/socket-mode/dist/src/SocketModeClient.d.ts +12 -6
- package/node_modules/@slack/socket-mode/dist/src/SocketModeClient.d.ts.map +1 -1
- package/node_modules/@slack/socket-mode/dist/src/SocketModeClient.js +87 -38
- package/node_modules/@slack/socket-mode/dist/src/SocketModeClient.js.map +1 -1
- package/node_modules/@slack/socket-mode/dist/src/SocketModeOptions.d.ts +31 -1
- package/node_modules/@slack/socket-mode/dist/src/SocketModeOptions.d.ts.map +1 -1
- package/node_modules/@slack/socket-mode/dist/src/errors.d.ts +31 -37
- package/node_modules/@slack/socket-mode/dist/src/errors.d.ts.map +1 -1
- package/node_modules/@slack/socket-mode/dist/src/errors.js +43 -47
- package/node_modules/@slack/socket-mode/dist/src/errors.js.map +1 -1
- package/node_modules/@slack/socket-mode/dist/src/index.d.ts +2 -2
- package/node_modules/@slack/socket-mode/dist/src/index.d.ts.map +1 -1
- package/node_modules/@slack/socket-mode/dist/src/index.js +7 -1
- package/node_modules/@slack/socket-mode/dist/src/index.js.map +1 -1
- package/node_modules/@slack/socket-mode/package.json +21 -13
- package/node_modules/@slack/types/README.md +1 -1
- package/node_modules/@slack/types/dist/events/app.d.ts +28 -0
- package/node_modules/@slack/types/dist/events/app.d.ts.map +1 -1
- package/node_modules/@slack/types/dist/events/index.d.ts +2 -2
- package/node_modules/@slack/types/dist/events/index.d.ts.map +1 -1
- package/node_modules/@slack/types/dist/events/index.js.map +1 -1
- package/node_modules/@slack/types/dist/events/message.d.ts +2 -0
- package/node_modules/@slack/types/dist/events/message.d.ts.map +1 -1
- package/node_modules/@slack/types/package.json +3 -3
- package/node_modules/@slack/web-api/README.md +1 -1
- package/node_modules/@slack/web-api/dist/WebClient.d.ts +42 -71
- package/node_modules/@slack/web-api/dist/WebClient.d.ts.map +1 -1
- package/node_modules/@slack/web-api/dist/WebClient.js +180 -248
- package/node_modules/@slack/web-api/dist/WebClient.js.map +1 -1
- package/node_modules/@slack/web-api/dist/chat-stream.js +37 -22
- package/node_modules/@slack/web-api/dist/chat-stream.js.map +1 -1
- package/node_modules/@slack/web-api/dist/errors.d.ts +32 -51
- package/node_modules/@slack/web-api/dist/errors.d.ts.map +1 -1
- package/node_modules/@slack/web-api/dist/errors.js +64 -55
- package/node_modules/@slack/web-api/dist/errors.js.map +1 -1
- package/node_modules/@slack/web-api/dist/file-upload.d.ts +0 -9
- package/node_modules/@slack/web-api/dist/file-upload.d.ts.map +1 -1
- package/node_modules/@slack/web-api/dist/file-upload.js +41 -46
- package/node_modules/@slack/web-api/dist/file-upload.js.map +1 -1
- package/node_modules/@slack/web-api/dist/index.d.ts +2 -2
- package/node_modules/@slack/web-api/dist/index.d.ts.map +1 -1
- package/node_modules/@slack/web-api/dist/index.js +8 -1
- package/node_modules/@slack/web-api/dist/index.js.map +1 -1
- package/node_modules/@slack/web-api/dist/methods.d.ts +2 -38
- package/node_modules/@slack/web-api/dist/methods.d.ts.map +1 -1
- package/node_modules/@slack/web-api/dist/methods.js +1347 -1384
- package/node_modules/@slack/web-api/dist/methods.js.map +1 -1
- package/node_modules/@slack/web-api/dist/types/request/files.d.ts +0 -1
- package/node_modules/@slack/web-api/dist/types/request/files.d.ts.map +1 -1
- package/node_modules/@slack/web-api/dist/types/request/index.d.ts +3 -3
- package/node_modules/@slack/web-api/dist/types/request/index.d.ts.map +1 -1
- package/node_modules/@slack/web-api/dist/types/request/manifest.d.ts +66 -1
- package/node_modules/@slack/web-api/dist/types/request/manifest.d.ts.map +1 -1
- package/node_modules/@slack/web-api/dist/types/request/rtm.d.ts +1 -14
- package/node_modules/@slack/web-api/dist/types/request/rtm.d.ts.map +1 -1
- package/node_modules/@slack/web-api/dist/types/request/workflows.d.ts +0 -29
- package/node_modules/@slack/web-api/dist/types/request/workflows.d.ts.map +1 -1
- package/node_modules/@slack/web-api/package.json +6 -10
- package/node_modules/@types/retry/LICENSE +21 -21
- package/node_modules/@types/retry/README.md +5 -4
- package/node_modules/@types/retry/index.d.ts +20 -13
- package/node_modules/@types/retry/package.json +9 -11
- package/node_modules/{es-set-tostringtag → undici}/LICENSE +1 -1
- package/node_modules/undici/README.md +741 -0
- package/node_modules/undici/docs/docs/api/Agent.md +84 -0
- package/node_modules/undici/docs/docs/api/BalancedPool.md +99 -0
- package/node_modules/undici/docs/docs/api/CacheStorage.md +30 -0
- package/node_modules/undici/docs/docs/api/CacheStore.md +164 -0
- package/node_modules/undici/docs/docs/api/Client.md +288 -0
- package/node_modules/undici/docs/docs/api/ClientStats.md +27 -0
- package/node_modules/undici/docs/docs/api/Connector.md +115 -0
- package/node_modules/undici/docs/docs/api/ContentType.md +57 -0
- package/node_modules/undici/docs/docs/api/Cookies.md +128 -0
- package/node_modules/undici/docs/docs/api/Debug.md +62 -0
- package/node_modules/undici/docs/docs/api/DiagnosticsChannel.md +315 -0
- package/node_modules/undici/docs/docs/api/Dispatcher.md +1392 -0
- package/node_modules/undici/docs/docs/api/EnvHttpProxyAgent.md +159 -0
- package/node_modules/undici/docs/docs/api/Errors.md +49 -0
- package/node_modules/undici/docs/docs/api/EventSource.md +45 -0
- package/node_modules/undici/docs/docs/api/Fetch.md +60 -0
- package/node_modules/undici/docs/docs/api/GlobalInstallation.md +139 -0
- package/node_modules/undici/docs/docs/api/H2CClient.md +263 -0
- package/node_modules/undici/docs/docs/api/MockAgent.md +603 -0
- package/node_modules/undici/docs/docs/api/MockCallHistory.md +197 -0
- package/node_modules/undici/docs/docs/api/MockCallHistoryLog.md +43 -0
- package/node_modules/undici/docs/docs/api/MockClient.md +81 -0
- package/node_modules/undici/docs/docs/api/MockErrors.md +12 -0
- package/node_modules/undici/docs/docs/api/MockPool.md +555 -0
- package/node_modules/undici/docs/docs/api/Pool.md +84 -0
- package/node_modules/undici/docs/docs/api/PoolStats.md +35 -0
- package/node_modules/undici/docs/docs/api/ProxyAgent.md +229 -0
- package/node_modules/undici/docs/docs/api/RedirectHandler.md +93 -0
- package/node_modules/undici/docs/docs/api/RetryAgent.md +50 -0
- package/node_modules/undici/docs/docs/api/RetryHandler.md +118 -0
- package/node_modules/undici/docs/docs/api/RoundRobinPool.md +145 -0
- package/node_modules/undici/docs/docs/api/SnapshotAgent.md +616 -0
- package/node_modules/undici/docs/docs/api/Socks5ProxyAgent.md +275 -0
- package/node_modules/undici/docs/docs/api/Util.md +25 -0
- package/node_modules/undici/docs/docs/api/WebSocket.md +141 -0
- package/node_modules/undici/docs/docs/api/api-lifecycle.md +91 -0
- package/node_modules/undici/docs/docs/best-practices/client-certificate.md +64 -0
- package/node_modules/undici/docs/docs/best-practices/crawling.md +58 -0
- package/node_modules/undici/docs/docs/best-practices/mocking-request.md +190 -0
- package/node_modules/undici/docs/docs/best-practices/proxy.md +127 -0
- package/node_modules/undici/docs/docs/best-practices/undici-vs-builtin-fetch.md +224 -0
- package/node_modules/undici/docs/docs/best-practices/writing-tests.md +63 -0
- package/node_modules/undici/index-fetch.js +65 -0
- package/node_modules/undici/index.d.ts +3 -0
- package/node_modules/undici/index.js +234 -0
- package/node_modules/undici/lib/api/abort-signal.js +59 -0
- package/node_modules/undici/lib/api/api-connect.js +110 -0
- package/node_modules/undici/lib/api/api-pipeline.js +252 -0
- package/node_modules/undici/lib/api/api-request.js +214 -0
- package/node_modules/undici/lib/api/api-stream.js +209 -0
- package/node_modules/undici/lib/api/api-upgrade.js +111 -0
- package/node_modules/undici/lib/api/index.js +7 -0
- package/node_modules/undici/lib/api/readable.js +580 -0
- package/node_modules/undici/lib/cache/memory-cache-store.js +234 -0
- package/node_modules/undici/lib/cache/sqlite-cache-store.js +461 -0
- package/node_modules/undici/lib/core/connect.js +153 -0
- package/node_modules/undici/lib/core/constants.js +143 -0
- package/node_modules/undici/lib/core/diagnostics.js +227 -0
- package/node_modules/undici/lib/core/errors.js +477 -0
- package/node_modules/undici/lib/core/request.js +453 -0
- package/node_modules/undici/lib/core/socks5-client.js +422 -0
- package/node_modules/undici/lib/core/socks5-utils.js +212 -0
- package/node_modules/undici/lib/core/symbols.js +75 -0
- package/node_modules/undici/lib/core/tree.js +160 -0
- package/node_modules/undici/lib/core/util.js +992 -0
- package/node_modules/undici/lib/dispatcher/agent.js +158 -0
- package/node_modules/undici/lib/dispatcher/balanced-pool.js +219 -0
- package/node_modules/undici/lib/dispatcher/client-h1.js +1722 -0
- package/node_modules/undici/lib/dispatcher/client-h2.js +995 -0
- package/node_modules/undici/lib/dispatcher/client.js +664 -0
- package/node_modules/undici/lib/dispatcher/dispatcher-base.js +184 -0
- package/node_modules/undici/lib/dispatcher/dispatcher.js +48 -0
- package/node_modules/undici/lib/dispatcher/env-http-proxy-agent.js +146 -0
- package/node_modules/undici/lib/dispatcher/fixed-queue.js +135 -0
- package/node_modules/undici/lib/dispatcher/h2c-client.js +51 -0
- package/node_modules/undici/lib/dispatcher/pool-base.js +214 -0
- package/node_modules/undici/lib/dispatcher/pool.js +118 -0
- package/node_modules/undici/lib/dispatcher/proxy-agent.js +319 -0
- package/node_modules/undici/lib/dispatcher/retry-agent.js +35 -0
- package/node_modules/undici/lib/dispatcher/round-robin-pool.js +137 -0
- package/node_modules/undici/lib/dispatcher/socks5-proxy-agent.js +260 -0
- package/node_modules/undici/lib/encoding/index.js +33 -0
- package/node_modules/undici/lib/global.js +59 -0
- package/node_modules/undici/lib/handler/cache-handler.js +578 -0
- package/node_modules/undici/lib/handler/cache-revalidation-handler.js +124 -0
- package/node_modules/undici/lib/handler/decorator-handler.js +67 -0
- package/node_modules/undici/lib/handler/deduplication-handler.js +460 -0
- package/node_modules/undici/lib/handler/redirect-handler.js +238 -0
- package/node_modules/undici/lib/handler/retry-handler.js +394 -0
- package/node_modules/undici/lib/handler/unwrap-handler.js +106 -0
- package/node_modules/undici/lib/handler/wrap-handler.js +105 -0
- package/node_modules/undici/lib/interceptor/cache.js +495 -0
- package/node_modules/undici/lib/interceptor/decompress.js +259 -0
- package/node_modules/undici/lib/interceptor/deduplicate.js +117 -0
- package/node_modules/undici/lib/interceptor/dns.js +571 -0
- package/node_modules/undici/lib/interceptor/dump.js +112 -0
- package/node_modules/undici/lib/interceptor/redirect.js +21 -0
- package/node_modules/undici/lib/interceptor/response-error.js +95 -0
- package/node_modules/undici/lib/interceptor/retry.js +19 -0
- package/node_modules/undici/lib/llhttp/.gitkeep +0 -0
- package/node_modules/undici/lib/llhttp/constants.d.ts +195 -0
- package/node_modules/undici/lib/llhttp/constants.js +531 -0
- package/node_modules/undici/lib/llhttp/llhttp-wasm.js +15 -0
- package/node_modules/undici/lib/llhttp/llhttp_simd-wasm.js +15 -0
- package/node_modules/undici/lib/llhttp/utils.d.ts +2 -0
- package/node_modules/undici/lib/llhttp/utils.js +12 -0
- package/node_modules/undici/lib/mock/mock-agent.js +232 -0
- package/node_modules/undici/lib/mock/mock-call-history.js +248 -0
- package/node_modules/undici/lib/mock/mock-client.js +68 -0
- package/node_modules/undici/lib/mock/mock-errors.js +29 -0
- package/node_modules/undici/lib/mock/mock-interceptor.js +209 -0
- package/node_modules/undici/lib/mock/mock-pool.js +68 -0
- package/node_modules/undici/lib/mock/mock-symbols.js +32 -0
- package/node_modules/undici/lib/mock/mock-utils.js +486 -0
- package/node_modules/undici/lib/mock/pending-interceptors-formatter.js +43 -0
- package/node_modules/undici/lib/mock/snapshot-agent.js +353 -0
- package/node_modules/undici/lib/mock/snapshot-recorder.js +588 -0
- package/node_modules/undici/lib/mock/snapshot-utils.js +158 -0
- package/node_modules/undici/lib/util/cache.js +414 -0
- package/node_modules/undici/lib/util/date.js +653 -0
- package/node_modules/undici/lib/util/promise.js +28 -0
- package/node_modules/undici/lib/util/runtime-features.js +124 -0
- package/node_modules/undici/lib/util/stats.js +32 -0
- package/node_modules/undici/lib/util/timers.js +425 -0
- package/node_modules/undici/lib/web/cache/cache.js +864 -0
- package/node_modules/undici/lib/web/cache/cachestorage.js +152 -0
- package/node_modules/undici/lib/web/cache/util.js +45 -0
- package/node_modules/undici/lib/web/cookies/constants.js +12 -0
- package/node_modules/undici/lib/web/cookies/index.js +199 -0
- package/node_modules/undici/lib/web/cookies/parse.js +314 -0
- package/node_modules/undici/lib/web/cookies/util.js +282 -0
- package/node_modules/undici/lib/web/eventsource/eventsource-stream.js +399 -0
- package/node_modules/undici/lib/web/eventsource/eventsource.js +501 -0
- package/node_modules/undici/lib/web/eventsource/util.js +29 -0
- package/node_modules/{has-tostringtag → undici/lib/web/fetch}/LICENSE +1 -1
- package/node_modules/undici/lib/web/fetch/body.js +509 -0
- package/node_modules/undici/lib/web/fetch/constants.js +131 -0
- package/node_modules/undici/lib/web/fetch/data-url.js +596 -0
- package/node_modules/undici/lib/web/fetch/formdata-parser.js +586 -0
- package/node_modules/undici/lib/web/fetch/formdata.js +259 -0
- package/node_modules/undici/lib/web/fetch/global.js +40 -0
- package/node_modules/undici/lib/web/fetch/headers.js +719 -0
- package/node_modules/undici/lib/web/fetch/index.js +2413 -0
- package/node_modules/undici/lib/web/fetch/request.js +1115 -0
- package/node_modules/undici/lib/web/fetch/response.js +641 -0
- package/node_modules/undici/lib/web/fetch/util.js +1522 -0
- package/node_modules/undici/lib/web/infra/index.js +229 -0
- package/node_modules/undici/lib/web/subresource-integrity/Readme.md +9 -0
- package/node_modules/undici/lib/web/subresource-integrity/subresource-integrity.js +307 -0
- package/node_modules/undici/lib/web/webidl/index.js +1006 -0
- package/node_modules/undici/lib/web/websocket/connection.js +329 -0
- package/node_modules/undici/lib/web/websocket/constants.js +126 -0
- package/node_modules/undici/lib/web/websocket/events.js +331 -0
- package/node_modules/undici/lib/web/websocket/frame.js +133 -0
- package/node_modules/undici/lib/web/websocket/permessage-deflate.js +100 -0
- package/node_modules/undici/lib/web/websocket/receiver.js +507 -0
- package/node_modules/undici/lib/web/websocket/sender.js +109 -0
- package/node_modules/undici/lib/web/websocket/stream/websocketerror.js +104 -0
- package/node_modules/undici/lib/web/websocket/stream/websocketstream.js +498 -0
- package/node_modules/undici/lib/web/websocket/util.js +347 -0
- package/node_modules/undici/lib/web/websocket/websocket.js +758 -0
- package/node_modules/undici/package.json +152 -0
- package/node_modules/undici/scripts/strip-comments.js +10 -0
- package/node_modules/undici/types/README.md +6 -0
- package/node_modules/undici/types/agent.d.ts +32 -0
- package/node_modules/undici/types/api.d.ts +43 -0
- package/node_modules/undici/types/balanced-pool.d.ts +30 -0
- package/node_modules/undici/types/cache-interceptor.d.ts +179 -0
- package/node_modules/undici/types/cache.d.ts +36 -0
- package/node_modules/undici/types/client-stats.d.ts +15 -0
- package/node_modules/undici/types/client.d.ts +139 -0
- package/node_modules/undici/types/connector.d.ts +36 -0
- package/node_modules/undici/types/content-type.d.ts +21 -0
- package/node_modules/undici/types/cookies.d.ts +30 -0
- package/node_modules/undici/types/diagnostics-channel.d.ts +74 -0
- package/node_modules/undici/types/dispatcher.d.ts +275 -0
- package/node_modules/undici/types/env-http-proxy-agent.d.ts +22 -0
- package/node_modules/undici/types/errors.d.ts +177 -0
- package/node_modules/undici/types/eventsource.d.ts +66 -0
- package/node_modules/undici/types/fetch.d.ts +231 -0
- package/node_modules/undici/types/formdata.d.ts +114 -0
- package/node_modules/undici/types/global-dispatcher.d.ts +9 -0
- package/node_modules/undici/types/global-origin.d.ts +7 -0
- package/node_modules/undici/types/h2c-client.d.ts +73 -0
- package/node_modules/undici/types/handlers.d.ts +14 -0
- package/node_modules/undici/types/header.d.ts +160 -0
- package/node_modules/undici/types/index.d.ts +91 -0
- package/node_modules/undici/types/interceptors.d.ts +80 -0
- package/node_modules/undici/types/mock-agent.d.ts +68 -0
- package/node_modules/undici/types/mock-call-history.d.ts +111 -0
- package/node_modules/undici/types/mock-client.d.ts +27 -0
- package/node_modules/undici/types/mock-errors.d.ts +12 -0
- package/node_modules/undici/types/mock-interceptor.d.ts +94 -0
- package/node_modules/undici/types/mock-pool.d.ts +27 -0
- package/node_modules/undici/types/patch.d.ts +29 -0
- package/node_modules/undici/types/pool-stats.d.ts +19 -0
- package/node_modules/undici/types/pool.d.ts +41 -0
- package/node_modules/undici/types/proxy-agent.d.ts +29 -0
- package/node_modules/undici/types/readable.d.ts +68 -0
- package/node_modules/undici/types/retry-agent.d.ts +8 -0
- package/node_modules/undici/types/retry-handler.d.ts +125 -0
- package/node_modules/undici/types/round-robin-pool.d.ts +41 -0
- package/node_modules/undici/types/snapshot-agent.d.ts +109 -0
- package/node_modules/undici/types/socks5-proxy-agent.d.ts +25 -0
- package/node_modules/undici/types/util.d.ts +18 -0
- package/node_modules/undici/types/utility.d.ts +7 -0
- package/node_modules/undici/types/webidl.d.ts +347 -0
- package/node_modules/undici/types/websocket.d.ts +188 -0
- package/openclaw.plugin.json +8 -38
- package/package.json +11 -8
- package/dist/action-runtime.runtime-9-17zvKH.js +0 -2
- package/dist/doctor-contract-U6oVntbM.js +0 -173
- package/dist/interactive-replies-C3ffk6oN.js +0 -197
- package/dist/interactive-replies-api.js +0 -2
- package/node_modules/@slack/bolt/dist/WorkflowStep.d.ts +0 -159
- package/node_modules/@slack/bolt/dist/WorkflowStep.d.ts.map +0 -1
- package/node_modules/@slack/bolt/dist/WorkflowStep.js +0 -217
- package/node_modules/@slack/bolt/dist/WorkflowStep.js.map +0 -1
- package/node_modules/@slack/bolt/dist/types/actions/workflow-step-edit.d.ts +0 -49
- package/node_modules/@slack/bolt/dist/types/actions/workflow-step-edit.d.ts.map +0 -1
- package/node_modules/@slack/bolt/dist/types/actions/workflow-step-edit.js +0 -3
- package/node_modules/@slack/bolt/dist/types/actions/workflow-step-edit.js.map +0 -1
- package/node_modules/@types/ws/LICENSE +0 -21
- package/node_modules/@types/ws/README.md +0 -15
- package/node_modules/@types/ws/index.d.mts +0 -451
- package/node_modules/@types/ws/index.d.ts +0 -445
- package/node_modules/@types/ws/package.json +0 -72
- package/node_modules/agent-base/README.md +0 -145
- package/node_modules/agent-base/dist/src/index.d.ts +0 -78
- package/node_modules/agent-base/dist/src/index.js +0 -203
- package/node_modules/agent-base/dist/src/index.js.map +0 -1
- package/node_modules/agent-base/dist/src/promisify.d.ts +0 -4
- package/node_modules/agent-base/dist/src/promisify.js +0 -18
- package/node_modules/agent-base/dist/src/promisify.js.map +0 -1
- package/node_modules/agent-base/package.json +0 -64
- package/node_modules/agent-base/src/index.ts +0 -345
- package/node_modules/agent-base/src/promisify.ts +0 -33
- package/node_modules/asynckit/LICENSE +0 -21
- package/node_modules/asynckit/README.md +0 -233
- package/node_modules/asynckit/bench.js +0 -76
- package/node_modules/asynckit/index.js +0 -6
- package/node_modules/asynckit/lib/abort.js +0 -29
- package/node_modules/asynckit/lib/async.js +0 -34
- package/node_modules/asynckit/lib/defer.js +0 -26
- package/node_modules/asynckit/lib/iterate.js +0 -75
- package/node_modules/asynckit/lib/readable_asynckit.js +0 -91
- package/node_modules/asynckit/lib/readable_parallel.js +0 -25
- package/node_modules/asynckit/lib/readable_serial.js +0 -25
- package/node_modules/asynckit/lib/readable_serial_ordered.js +0 -29
- package/node_modules/asynckit/lib/state.js +0 -37
- package/node_modules/asynckit/lib/streamify.js +0 -141
- package/node_modules/asynckit/lib/terminator.js +0 -29
- package/node_modules/asynckit/package.json +0 -63
- package/node_modules/asynckit/parallel.js +0 -43
- package/node_modules/asynckit/serial.js +0 -17
- package/node_modules/asynckit/serialOrdered.js +0 -75
- package/node_modules/asynckit/stream.js +0 -21
- package/node_modules/axios/CHANGELOG.md +0 -1872
- package/node_modules/axios/LICENSE +0 -7
- package/node_modules/axios/MIGRATION_GUIDE.md +0 -877
- package/node_modules/axios/README.md +0 -2559
- package/node_modules/axios/dist/axios.js +0 -5249
- package/node_modules/axios/dist/axios.min.js +0 -5
- package/node_modules/axios/dist/axios.min.js.map +0 -1
- package/node_modules/axios/dist/browser/axios.cjs +0 -5146
- package/node_modules/axios/dist/esm/axios.js +0 -5167
- package/node_modules/axios/dist/esm/axios.min.js +0 -3
- package/node_modules/axios/dist/esm/axios.min.js.map +0 -1
- package/node_modules/axios/dist/node/axios.cjs +0 -5996
- package/node_modules/axios/index.d.cts +0 -738
- package/node_modules/axios/index.d.ts +0 -755
- package/node_modules/axios/index.js +0 -45
- package/node_modules/axios/lib/adapters/README.md +0 -36
- package/node_modules/axios/lib/adapters/adapters.js +0 -132
- package/node_modules/axios/lib/adapters/fetch.js +0 -643
- package/node_modules/axios/lib/adapters/http.js +0 -1417
- package/node_modules/axios/lib/adapters/xhr.js +0 -228
- package/node_modules/axios/lib/axios.js +0 -89
- package/node_modules/axios/lib/cancel/CancelToken.js +0 -135
- package/node_modules/axios/lib/cancel/CanceledError.js +0 -22
- package/node_modules/axios/lib/cancel/isCancel.js +0 -5
- package/node_modules/axios/lib/core/Axios.js +0 -283
- package/node_modules/axios/lib/core/AxiosError.js +0 -188
- package/node_modules/axios/lib/core/AxiosHeaders.js +0 -351
- package/node_modules/axios/lib/core/InterceptorManager.js +0 -72
- package/node_modules/axios/lib/core/README.md +0 -8
- package/node_modules/axios/lib/core/buildFullPath.js +0 -50
- package/node_modules/axios/lib/core/dispatchRequest.js +0 -89
- package/node_modules/axios/lib/core/mergeConfig.js +0 -159
- package/node_modules/axios/lib/core/settle.js +0 -27
- package/node_modules/axios/lib/core/transformData.js +0 -28
- package/node_modules/axios/lib/defaults/index.js +0 -177
- package/node_modules/axios/lib/defaults/transitional.js +0 -10
- package/node_modules/axios/lib/env/README.md +0 -3
- package/node_modules/axios/lib/env/classes/FormData.js +0 -2
- package/node_modules/axios/lib/env/data.js +0 -1
- package/node_modules/axios/lib/helpers/AxiosTransformStream.js +0 -156
- package/node_modules/axios/lib/helpers/AxiosURLSearchParams.js +0 -59
- package/node_modules/axios/lib/helpers/Http2Sessions.js +0 -119
- package/node_modules/axios/lib/helpers/HttpStatusCode.js +0 -77
- package/node_modules/axios/lib/helpers/README.md +0 -7
- package/node_modules/axios/lib/helpers/ZlibHeaderTransformStream.js +0 -29
- package/node_modules/axios/lib/helpers/bind.js +0 -14
- package/node_modules/axios/lib/helpers/buildURL.js +0 -69
- package/node_modules/axios/lib/helpers/callbackify.js +0 -18
- package/node_modules/axios/lib/helpers/combineURLs.js +0 -15
- package/node_modules/axios/lib/helpers/composeSignals.js +0 -57
- package/node_modules/axios/lib/helpers/cookies.js +0 -64
- package/node_modules/axios/lib/helpers/deprecatedMethod.js +0 -31
- package/node_modules/axios/lib/helpers/estimateDataURLDecodedBytes.js +0 -105
- package/node_modules/axios/lib/helpers/formDataToJSON.js +0 -119
- package/node_modules/axios/lib/helpers/formDataToStream.js +0 -119
- package/node_modules/axios/lib/helpers/fromDataURI.js +0 -68
- package/node_modules/axios/lib/helpers/isAbsoluteURL.js +0 -19
- package/node_modules/axios/lib/helpers/isAxiosError.js +0 -14
- package/node_modules/axios/lib/helpers/isURLSameOrigin.js +0 -16
- package/node_modules/axios/lib/helpers/null.js +0 -2
- package/node_modules/axios/lib/helpers/parseHeaders.js +0 -69
- package/node_modules/axios/lib/helpers/parseProtocol.js +0 -6
- package/node_modules/axios/lib/helpers/progressEventReducer.js +0 -54
- package/node_modules/axios/lib/helpers/readBlob.js +0 -15
- package/node_modules/axios/lib/helpers/resolveConfig.js +0 -119
- package/node_modules/axios/lib/helpers/sanitizeHeaderValue.js +0 -60
- package/node_modules/axios/lib/helpers/shouldBypassProxy.js +0 -210
- package/node_modules/axios/lib/helpers/speedometer.js +0 -55
- package/node_modules/axios/lib/helpers/spread.js +0 -28
- package/node_modules/axios/lib/helpers/throttle.js +0 -44
- package/node_modules/axios/lib/helpers/toFormData.js +0 -285
- package/node_modules/axios/lib/helpers/toURLEncodedForm.js +0 -19
- package/node_modules/axios/lib/helpers/trackStream.js +0 -89
- package/node_modules/axios/lib/helpers/validator.js +0 -112
- package/node_modules/axios/lib/platform/browser/classes/Blob.js +0 -3
- package/node_modules/axios/lib/platform/browser/classes/FormData.js +0 -3
- package/node_modules/axios/lib/platform/browser/classes/URLSearchParams.js +0 -4
- package/node_modules/axios/lib/platform/browser/index.js +0 -13
- package/node_modules/axios/lib/platform/common/utils.js +0 -52
- package/node_modules/axios/lib/platform/index.js +0 -7
- package/node_modules/axios/lib/platform/node/classes/FormData.js +0 -3
- package/node_modules/axios/lib/platform/node/classes/URLSearchParams.js +0 -4
- package/node_modules/axios/lib/platform/node/index.js +0 -37
- package/node_modules/axios/lib/utils.js +0 -1017
- package/node_modules/axios/package.json +0 -201
- package/node_modules/combined-stream/License +0 -19
- package/node_modules/combined-stream/Readme.md +0 -138
- package/node_modules/combined-stream/lib/combined_stream.js +0 -208
- package/node_modules/combined-stream/package.json +0 -25
- package/node_modules/delayed-stream/.npmignore +0 -1
- package/node_modules/delayed-stream/License +0 -19
- package/node_modules/delayed-stream/Makefile +0 -7
- package/node_modules/delayed-stream/Readme.md +0 -141
- package/node_modules/delayed-stream/lib/delayed_stream.js +0 -107
- package/node_modules/delayed-stream/package.json +0 -27
- package/node_modules/es-set-tostringtag/.eslintrc +0 -13
- package/node_modules/es-set-tostringtag/.nycrc +0 -9
- package/node_modules/es-set-tostringtag/CHANGELOG.md +0 -67
- package/node_modules/es-set-tostringtag/README.md +0 -53
- package/node_modules/es-set-tostringtag/index.d.ts +0 -10
- package/node_modules/es-set-tostringtag/index.js +0 -35
- package/node_modules/es-set-tostringtag/package.json +0 -78
- package/node_modules/es-set-tostringtag/test/index.js +0 -85
- package/node_modules/es-set-tostringtag/tsconfig.json +0 -9
- package/node_modules/follow-redirects/LICENSE +0 -18
- package/node_modules/follow-redirects/README.md +0 -157
- package/node_modules/follow-redirects/debug.js +0 -15
- package/node_modules/follow-redirects/http.js +0 -1
- package/node_modules/follow-redirects/https.js +0 -1
- package/node_modules/follow-redirects/index.js +0 -709
- package/node_modules/follow-redirects/package.json +0 -58
- package/node_modules/form-data/CHANGELOG.md +0 -669
- package/node_modules/form-data/License +0 -19
- package/node_modules/form-data/README.md +0 -350
- package/node_modules/form-data/index.d.ts +0 -51
- package/node_modules/form-data/lib/browser.js +0 -4
- package/node_modules/form-data/lib/form_data.js +0 -514
- package/node_modules/form-data/lib/populate.js +0 -10
- package/node_modules/form-data/node_modules/mime-db/HISTORY.md +0 -507
- package/node_modules/form-data/node_modules/mime-db/LICENSE +0 -23
- package/node_modules/form-data/node_modules/mime-db/README.md +0 -100
- package/node_modules/form-data/node_modules/mime-db/db.json +0 -8519
- package/node_modules/form-data/node_modules/mime-db/index.js +0 -12
- package/node_modules/form-data/node_modules/mime-db/package.json +0 -60
- package/node_modules/form-data/node_modules/mime-types/HISTORY.md +0 -397
- package/node_modules/form-data/node_modules/mime-types/LICENSE +0 -23
- package/node_modules/form-data/node_modules/mime-types/README.md +0 -113
- package/node_modules/form-data/node_modules/mime-types/index.js +0 -188
- package/node_modules/form-data/node_modules/mime-types/package.json +0 -44
- package/node_modules/form-data/package.json +0 -83
- package/node_modules/has-tostringtag/.eslintrc +0 -5
- package/node_modules/has-tostringtag/.github/FUNDING.yml +0 -12
- package/node_modules/has-tostringtag/.nycrc +0 -13
- package/node_modules/has-tostringtag/CHANGELOG.md +0 -42
- package/node_modules/has-tostringtag/README.md +0 -46
- package/node_modules/has-tostringtag/index.d.ts +0 -3
- package/node_modules/has-tostringtag/index.js +0 -8
- package/node_modules/has-tostringtag/package.json +0 -108
- package/node_modules/has-tostringtag/shams.d.ts +0 -3
- package/node_modules/has-tostringtag/shams.js +0 -8
- package/node_modules/has-tostringtag/test/index.js +0 -21
- package/node_modules/has-tostringtag/test/shams/core-js.js +0 -31
- package/node_modules/has-tostringtag/test/shams/get-own-property-symbols.js +0 -30
- package/node_modules/has-tostringtag/test/tests.js +0 -15
- package/node_modules/has-tostringtag/tsconfig.json +0 -49
- package/node_modules/https-proxy-agent/README.md +0 -137
- package/node_modules/https-proxy-agent/dist/agent.d.ts +0 -30
- package/node_modules/https-proxy-agent/dist/agent.js +0 -177
- package/node_modules/https-proxy-agent/dist/agent.js.map +0 -1
- package/node_modules/https-proxy-agent/dist/index.d.ts +0 -23
- package/node_modules/https-proxy-agent/dist/index.js +0 -14
- package/node_modules/https-proxy-agent/dist/index.js.map +0 -1
- package/node_modules/https-proxy-agent/dist/parse-proxy-response.d.ts +0 -7
- package/node_modules/https-proxy-agent/dist/parse-proxy-response.js +0 -66
- package/node_modules/https-proxy-agent/dist/parse-proxy-response.js.map +0 -1
- package/node_modules/https-proxy-agent/package.json +0 -56
- package/node_modules/is-electron/LICENSE +0 -21
- package/node_modules/is-electron/README.md +0 -25
- package/node_modules/is-electron/index.d.ts +0 -2
- package/node_modules/is-electron/index.js +0 -21
- package/node_modules/is-electron/package.json +0 -34
- package/node_modules/is-stream/index.d.ts +0 -79
- package/node_modules/is-stream/index.js +0 -28
- package/node_modules/is-stream/license +0 -9
- package/node_modules/is-stream/package.json +0 -42
- package/node_modules/is-stream/readme.md +0 -60
- package/node_modules/proxy-from-env/LICENSE +0 -20
- package/node_modules/proxy-from-env/README.md +0 -163
- package/node_modules/proxy-from-env/index.cjs +0 -105
- package/node_modules/proxy-from-env/index.js +0 -103
- package/node_modules/proxy-from-env/package.json +0 -43
- package/npm-shrinkwrap.json +0 -1467
|
@@ -32,37 +32,6 @@ var __importStar = (this && this.__importStar) || (function () {
|
|
|
32
32
|
return result;
|
|
33
33
|
};
|
|
34
34
|
})();
|
|
35
|
-
var __await = (this && this.__await) || function (v) { return this instanceof __await ? (this.v = v, this) : new __await(v); }
|
|
36
|
-
var __asyncGenerator = (this && this.__asyncGenerator) || function (thisArg, _arguments, generator) {
|
|
37
|
-
if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined.");
|
|
38
|
-
var g = generator.apply(thisArg, _arguments || []), i, q = [];
|
|
39
|
-
return i = Object.create((typeof AsyncIterator === "function" ? AsyncIterator : Object).prototype), verb("next"), verb("throw"), verb("return", awaitReturn), i[Symbol.asyncIterator] = function () { return this; }, i;
|
|
40
|
-
function awaitReturn(f) { return function (v) { return Promise.resolve(v).then(f, reject); }; }
|
|
41
|
-
function verb(n, f) { if (g[n]) { i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; if (f) i[n] = f(i[n]); } }
|
|
42
|
-
function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }
|
|
43
|
-
function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }
|
|
44
|
-
function fulfill(value) { resume("next", value); }
|
|
45
|
-
function reject(value) { resume("throw", value); }
|
|
46
|
-
function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }
|
|
47
|
-
};
|
|
48
|
-
var __asyncValues = (this && this.__asyncValues) || function (o) {
|
|
49
|
-
if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined.");
|
|
50
|
-
var m = o[Symbol.asyncIterator], i;
|
|
51
|
-
return m ? m.call(o) : (o = typeof __values === "function" ? __values(o) : o[Symbol.iterator](), i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i);
|
|
52
|
-
function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }
|
|
53
|
-
function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }
|
|
54
|
-
};
|
|
55
|
-
var __rest = (this && this.__rest) || function (s, e) {
|
|
56
|
-
var t = {};
|
|
57
|
-
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
|
|
58
|
-
t[p] = s[p];
|
|
59
|
-
if (s != null && typeof Object.getOwnPropertySymbols === "function")
|
|
60
|
-
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
|
|
61
|
-
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
|
|
62
|
-
t[p[i]] = s[p[i]];
|
|
63
|
-
}
|
|
64
|
-
return t;
|
|
65
|
-
};
|
|
66
35
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
67
36
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
68
37
|
};
|
|
@@ -73,10 +42,6 @@ const node_path_1 = require("node:path");
|
|
|
73
42
|
const node_querystring_1 = require("node:querystring");
|
|
74
43
|
const node_util_1 = require("node:util");
|
|
75
44
|
const node_zlib_1 = __importDefault(require("node:zlib"));
|
|
76
|
-
const axios_1 = __importDefault(require("axios"));
|
|
77
|
-
const form_data_1 = __importDefault(require("form-data"));
|
|
78
|
-
const is_electron_1 = __importDefault(require("is-electron"));
|
|
79
|
-
const is_stream_1 = __importDefault(require("is-stream"));
|
|
80
45
|
const p_queue_1 = __importDefault(require("p-queue"));
|
|
81
46
|
const p_retry_1 = __importStar(require("p-retry"));
|
|
82
47
|
const chat_stream_1 = require("./chat-stream");
|
|
@@ -90,20 +55,6 @@ const retry_policies_1 = require("./retry-policies");
|
|
|
90
55
|
/*
|
|
91
56
|
* Helpers
|
|
92
57
|
*/
|
|
93
|
-
// Props on axios default headers object to ignore when retrieving full list of actual headers sent in any HTTP requests
|
|
94
|
-
const axiosHeaderPropsToIgnore = [
|
|
95
|
-
'delete',
|
|
96
|
-
'common',
|
|
97
|
-
'get',
|
|
98
|
-
'put',
|
|
99
|
-
'head',
|
|
100
|
-
'post',
|
|
101
|
-
'link',
|
|
102
|
-
'patch',
|
|
103
|
-
'purge',
|
|
104
|
-
'unlink',
|
|
105
|
-
'options',
|
|
106
|
-
];
|
|
107
58
|
const defaultFilename = 'Untitled';
|
|
108
59
|
const defaultPageSize = 200;
|
|
109
60
|
const noopPageReducer = () => undefined;
|
|
@@ -119,13 +70,57 @@ var WebClientEvent;
|
|
|
119
70
|
* a convenience wrapper for calling the {@link WebClient#apiCall} method using the method name as the first parameter.
|
|
120
71
|
*/
|
|
121
72
|
class WebClient extends methods_1.Methods {
|
|
73
|
+
/**
|
|
74
|
+
* The base URL for reaching Slack's Web API. Consider changing this value for testing purposes.
|
|
75
|
+
*/
|
|
76
|
+
slackApiUrl;
|
|
77
|
+
/**
|
|
78
|
+
* Authentication and authorization token for accessing Slack Web API (usually begins with `xoxp` or `xoxb`)
|
|
79
|
+
*/
|
|
80
|
+
token;
|
|
81
|
+
/**
|
|
82
|
+
* Configuration for retry operations. See {@link https://github.com/tim-kos/node-retry|node-retry} for more details.
|
|
83
|
+
*/
|
|
84
|
+
retryConfig;
|
|
85
|
+
/**
|
|
86
|
+
* Queue of requests in which a maximum of {@link WebClientOptions.maxRequestConcurrency} can concurrently be
|
|
87
|
+
* in-flight.
|
|
88
|
+
*/
|
|
89
|
+
requestQueue;
|
|
90
|
+
/**
|
|
91
|
+
* The fetch function used for HTTP requests
|
|
92
|
+
*/
|
|
93
|
+
fetchFn;
|
|
94
|
+
/**
|
|
95
|
+
* Request timeout in milliseconds
|
|
96
|
+
*/
|
|
97
|
+
timeout;
|
|
98
|
+
/**
|
|
99
|
+
* Default headers sent with every request
|
|
100
|
+
*/
|
|
101
|
+
defaultHeaders;
|
|
102
|
+
/**
|
|
103
|
+
* Preference for immediately rejecting API calls which result in a rate-limited response
|
|
104
|
+
*/
|
|
105
|
+
rejectRateLimitedCalls;
|
|
106
|
+
/**
|
|
107
|
+
* The name used to prefix all logging generated from this object
|
|
108
|
+
*/
|
|
109
|
+
static loggerName = 'WebClient';
|
|
110
|
+
/**
|
|
111
|
+
* This object's logger instance
|
|
112
|
+
*/
|
|
113
|
+
logger;
|
|
114
|
+
/**
|
|
115
|
+
* This object's teamId value
|
|
116
|
+
*/
|
|
117
|
+
teamId;
|
|
118
|
+
allowAbsoluteUrls;
|
|
122
119
|
/**
|
|
123
120
|
* @param token - An API token to authenticate/authorize with Slack (usually start with `xoxp`, `xoxb`)
|
|
124
121
|
* @param {Object} [webClientOptions] - Configuration options.
|
|
125
|
-
* @param {Function} [webClientOptions.requestInterceptor] - An interceptor to mutate outgoing requests. See {@link https://axios-http.com/docs/interceptors Axios interceptors}
|
|
126
|
-
* @param {Function} [webClientOptions.adapter] - An adapter to allow custom handling of requests. Useful if you would like to use a pre-configured http client. See {@link https://github.com/axios/axios/blob/v1.x/README.md?plain=1#L586 Axios adapter}
|
|
127
122
|
*/
|
|
128
|
-
constructor(token, { slackApiUrl = 'https://slack.com/api/', logger = undefined, logLevel = undefined, maxRequestConcurrency = 100, retryConfig = retry_policies_1.tenRetriesInAboutThirtyMinutes,
|
|
123
|
+
constructor(token, { slackApiUrl = 'https://slack.com/api/', logger = undefined, logLevel = undefined, maxRequestConcurrency = 100, retryConfig = retry_policies_1.tenRetriesInAboutThirtyMinutes, fetch = undefined, timeout = 0, rejectRateLimitedCalls = false, headers = {}, teamId = undefined, allowAbsoluteUrls = true, } = {}) {
|
|
129
124
|
super();
|
|
130
125
|
this.token = token;
|
|
131
126
|
this.slackApiUrl = slackApiUrl;
|
|
@@ -134,12 +129,9 @@ class WebClient extends methods_1.Methods {
|
|
|
134
129
|
}
|
|
135
130
|
this.retryConfig = retryConfig;
|
|
136
131
|
this.requestQueue = new p_queue_1.default({ concurrency: maxRequestConcurrency });
|
|
137
|
-
// NOTE: may want to filter the keys to only those acceptable for TLS options
|
|
138
|
-
this.tlsConfig = tls !== undefined ? tls : {};
|
|
139
132
|
this.rejectRateLimitedCalls = rejectRateLimitedCalls;
|
|
140
133
|
this.teamId = teamId;
|
|
141
134
|
this.allowAbsoluteUrls = allowAbsoluteUrls;
|
|
142
|
-
this.attachOriginalToWebAPIRequestError = attachOriginalToWebAPIRequestError;
|
|
143
135
|
// Logging
|
|
144
136
|
if (typeof logger !== 'undefined') {
|
|
145
137
|
this.logger = logger;
|
|
@@ -148,39 +140,19 @@ class WebClient extends methods_1.Methods {
|
|
|
148
140
|
}
|
|
149
141
|
}
|
|
150
142
|
else {
|
|
151
|
-
this.logger = (0, logger_1.getLogger)(WebClient.loggerName, logLevel
|
|
143
|
+
this.logger = (0, logger_1.getLogger)(WebClient.loggerName, logLevel ?? logger_1.LogLevel.INFO, logger);
|
|
152
144
|
}
|
|
153
145
|
if (this.token && !headers.Authorization)
|
|
154
146
|
headers.Authorization = `Bearer ${this.token}`;
|
|
155
|
-
this.
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
baseURL: this.slackApiUrl,
|
|
159
|
-
headers: (0, is_electron_1.default)() ? headers : Object.assign({ 'User-Agent': (0, instrument_1.getUserAgent)() }, headers),
|
|
160
|
-
httpAgent: agent,
|
|
161
|
-
httpsAgent: agent,
|
|
162
|
-
validateStatus: () => true, // all HTTP status codes should result in a resolved promise (as opposed to only 2xx)
|
|
163
|
-
maxRedirects: 0,
|
|
164
|
-
// disabling axios' automatic proxy support:
|
|
165
|
-
// axios would read from envvars to configure a proxy automatically, but it doesn't support TLS destinations.
|
|
166
|
-
// for compatibility with https://api.slack.com, and for a larger set of possible proxies (SOCKS or other
|
|
167
|
-
// protocols), users of this package should use the `agent` option to configure a proxy.
|
|
168
|
-
proxy: false,
|
|
169
|
-
});
|
|
170
|
-
// serializeApiCallData will always determine the appropriate content-type
|
|
171
|
-
this.axios.defaults.headers.post['Content-Type'] = undefined;
|
|
172
|
-
// request interceptors have reversed execution order
|
|
173
|
-
// see: https://github.com/axios/axios/blob/v1.x/test/specs/interceptors.spec.js#L88
|
|
174
|
-
if (requestInterceptor) {
|
|
175
|
-
this.axios.interceptors.request.use(requestInterceptor, null);
|
|
176
|
-
}
|
|
177
|
-
this.axios.interceptors.request.use(this.serializeApiCallData.bind(this), null);
|
|
147
|
+
this.fetchFn = fetch ?? globalThis.fetch;
|
|
148
|
+
this.timeout = timeout;
|
|
149
|
+
this.defaultHeaders = { 'User-Agent': (0, instrument_1.getUserAgent)(), Accept: 'application/json', ...headers };
|
|
178
150
|
this.logger.debug('initialized');
|
|
179
151
|
}
|
|
180
152
|
/**
|
|
181
153
|
* Generic method for calling a Web API method
|
|
182
154
|
* @param method - the Web API method to call {@link https://docs.slack.dev/reference/methods}
|
|
183
|
-
* @param options -
|
|
155
|
+
* @param options - arguments for the Web API method
|
|
184
156
|
*/
|
|
185
157
|
async apiCall(method, options = {}) {
|
|
186
158
|
this.logger.debug(`apiCall('${method}') start`);
|
|
@@ -190,7 +162,6 @@ class WebClient extends methods_1.Methods {
|
|
|
190
162
|
if (typeof options === 'string' || typeof options === 'number' || typeof options === 'boolean') {
|
|
191
163
|
throw new TypeError(`Expected an options argument but instead received a ${typeof options}`);
|
|
192
164
|
}
|
|
193
|
-
(0, file_upload_1.warnIfNotUsingFilesUploadV2)(method, this.logger);
|
|
194
165
|
// @ts-expect-error insufficient overlap between Record and FilesUploadV2Arguments
|
|
195
166
|
if (method === 'files.uploadV2')
|
|
196
167
|
return this.filesUploadV2(options);
|
|
@@ -198,9 +169,12 @@ class WebClient extends methods_1.Methods {
|
|
|
198
169
|
if (options.token)
|
|
199
170
|
headers.Authorization = `Bearer ${options.token}`;
|
|
200
171
|
const url = this.deriveRequestUrl(method);
|
|
201
|
-
const response = await this.makeRequest(url,
|
|
172
|
+
const response = await this.makeRequest(url, {
|
|
173
|
+
team_id: this.teamId,
|
|
174
|
+
...options,
|
|
175
|
+
}, headers);
|
|
202
176
|
const result = await this.buildResult(response);
|
|
203
|
-
this.logger.debug(`http request result: ${JSON.stringify(result)}`);
|
|
177
|
+
this.logger.debug(`http request result: ${JSON.stringify(redact(result))}`);
|
|
204
178
|
// log warnings in response metadata
|
|
205
179
|
if (result.response_metadata !== undefined && result.response_metadata.warnings !== undefined) {
|
|
206
180
|
result.response_metadata.warnings.forEach(this.logger.warn.bind(this.logger));
|
|
@@ -228,11 +202,11 @@ class WebClient extends methods_1.Methods {
|
|
|
228
202
|
// If result's content is gzip, "ok" property is not returned with successful response
|
|
229
203
|
// TODO: look into simplifying this code block to only check for the second condition
|
|
230
204
|
// if an { ok: false } body applies for all API errors
|
|
231
|
-
if (!result.ok && response.headers
|
|
232
|
-
throw
|
|
205
|
+
if (!result.ok && response.headers.get('content-type') !== 'application/gzip') {
|
|
206
|
+
throw new errors_1.WebAPIPlatformError(result);
|
|
233
207
|
}
|
|
234
208
|
if ('ok' in result && result.ok === false) {
|
|
235
|
-
throw
|
|
209
|
+
throw new errors_1.WebAPIPlatformError(result);
|
|
236
210
|
}
|
|
237
211
|
this.logger.debug(`apiCall('${method}') end`);
|
|
238
212
|
return result;
|
|
@@ -246,24 +220,22 @@ class WebClient extends methods_1.Methods {
|
|
|
246
220
|
}
|
|
247
221
|
return defaultPageSize;
|
|
248
222
|
})();
|
|
249
|
-
function generatePages() {
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
}
|
|
266
|
-
});
|
|
223
|
+
async function* generatePages() {
|
|
224
|
+
// when result is undefined, that signals that the first of potentially many calls has not yet been made
|
|
225
|
+
let result;
|
|
226
|
+
// paginationOptions stores pagination options not already stored in the options argument
|
|
227
|
+
let paginationOptions = {
|
|
228
|
+
limit: pageSize,
|
|
229
|
+
};
|
|
230
|
+
if (options !== undefined && options.cursor !== undefined) {
|
|
231
|
+
paginationOptions.cursor = options.cursor;
|
|
232
|
+
}
|
|
233
|
+
// NOTE: test for the situation where you're resuming a pagination using and existing cursor
|
|
234
|
+
while (result === undefined || paginationOptions !== undefined) {
|
|
235
|
+
result = await this.apiCall(method, Object.assign(options !== undefined ? options : {}, paginationOptions));
|
|
236
|
+
yield result;
|
|
237
|
+
paginationOptions = paginationOptionsForNextPage(result, pageSize);
|
|
238
|
+
}
|
|
267
239
|
}
|
|
268
240
|
if (shouldStop === undefined) {
|
|
269
241
|
return generatePages.call(this);
|
|
@@ -275,7 +247,6 @@ class WebClient extends methods_1.Methods {
|
|
|
275
247
|
// This is done primarily because in order to satisfy the type system, we need a variable that is typed as A
|
|
276
248
|
// (shown as accumulator before), but before the first iteration all we have is a variable typed A | undefined.
|
|
277
249
|
// Unrolling the first iteration allows us to deal with undefined as a special case.
|
|
278
|
-
var _a, e_1, _b, _c;
|
|
279
250
|
const pageIterator = generatePages.call(this);
|
|
280
251
|
const firstIteratorResult = await pageIterator.next(undefined);
|
|
281
252
|
// Assumption: there will always be at least one result in a paginated API request
|
|
@@ -286,25 +257,13 @@ class WebClient extends methods_1.Methods {
|
|
|
286
257
|
if (shouldStop(firstPage)) {
|
|
287
258
|
return accumulator;
|
|
288
259
|
}
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
const page = _c;
|
|
295
|
-
accumulator = pageReducer(accumulator, page, index);
|
|
296
|
-
if (shouldStop(page)) {
|
|
297
|
-
return accumulator;
|
|
298
|
-
}
|
|
299
|
-
index += 1;
|
|
300
|
-
}
|
|
301
|
-
}
|
|
302
|
-
catch (e_1_1) { e_1 = { error: e_1_1 }; }
|
|
303
|
-
finally {
|
|
304
|
-
try {
|
|
305
|
-
if (!_d && !_a && (_b = pageIterator_1.return)) await _b.call(pageIterator_1);
|
|
260
|
+
// Continue iteration
|
|
261
|
+
for await (const page of pageIterator) {
|
|
262
|
+
accumulator = pageReducer(accumulator, page, index);
|
|
263
|
+
if (shouldStop(page)) {
|
|
264
|
+
return accumulator;
|
|
306
265
|
}
|
|
307
|
-
|
|
266
|
+
index += 1;
|
|
308
267
|
}
|
|
309
268
|
return accumulator;
|
|
310
269
|
})();
|
|
@@ -336,7 +295,7 @@ class WebClient extends methods_1.Methods {
|
|
|
336
295
|
* @see {@link https://docs.slack.dev/reference/methods/chat.stopStream}
|
|
337
296
|
*/
|
|
338
297
|
chatStream(params) {
|
|
339
|
-
const { buffer_size
|
|
298
|
+
const { buffer_size, ...args } = params;
|
|
340
299
|
const options = {
|
|
341
300
|
buffer_size,
|
|
342
301
|
};
|
|
@@ -421,7 +380,8 @@ class WebClient extends methods_1.Methods {
|
|
|
421
380
|
if (uploadRes.status !== 200) {
|
|
422
381
|
return Promise.reject(Error(`Failed to upload file (id:${file_id}, filename: ${filename})`));
|
|
423
382
|
}
|
|
424
|
-
const
|
|
383
|
+
const responseBody = await uploadRes.text();
|
|
384
|
+
const returnData = { ok: true, body: responseBody };
|
|
425
385
|
return Promise.resolve(returnData);
|
|
426
386
|
}
|
|
427
387
|
return Promise.reject(Error(`No upload url found for file (id: ${file_id}, filename: ${filename}`));
|
|
@@ -447,49 +407,42 @@ class WebClient extends methods_1.Methods {
|
|
|
447
407
|
* Low-level function to make a single API request. handles queuing, retries, and http-level errors
|
|
448
408
|
*/
|
|
449
409
|
async makeRequest(url, body, headers = {}) {
|
|
450
|
-
// TODO: better input types - remove any
|
|
451
410
|
const task = () => this.requestQueue.add(async () => {
|
|
411
|
+
// apps.event.authorizations.list will reject HTTP requests that send token in the body
|
|
412
|
+
// TODO: consider applying this change to all methods - though that will require thorough integration testing
|
|
413
|
+
if (url.endsWith('/apps.event.authorizations.list')) {
|
|
414
|
+
body.token = undefined;
|
|
415
|
+
}
|
|
416
|
+
this.logger.debug(`http request url: ${url}`);
|
|
417
|
+
this.logger.debug(`http request body: ${JSON.stringify(redact(body))}`);
|
|
418
|
+
const { serializedBody, contentHeaders } = this.serializeBody(body);
|
|
419
|
+
const allHeaders = { ...this.defaultHeaders, ...contentHeaders, ...headers };
|
|
420
|
+
this.logger.debug(`http request headers: ${JSON.stringify(redact(allHeaders))}`);
|
|
421
|
+
const signal = this.timeout > 0 ? AbortSignal.timeout(this.timeout) : undefined;
|
|
452
422
|
try {
|
|
453
|
-
|
|
454
|
-
|
|
455
|
-
|
|
456
|
-
|
|
457
|
-
|
|
458
|
-
|
|
459
|
-
}
|
|
460
|
-
// apps.event.authorizations.list will reject HTTP requests that send token in the body
|
|
461
|
-
// TODO: consider applying this change to all methods - though that will require thorough integration testing
|
|
462
|
-
if (url.endsWith('apps.event.authorizations.list')) {
|
|
463
|
-
body.token = undefined;
|
|
464
|
-
}
|
|
465
|
-
this.logger.debug(`http request url: ${url}`);
|
|
466
|
-
this.logger.debug(`http request body: ${JSON.stringify(redact(body))}`);
|
|
467
|
-
// compile all headers - some set by default under the hood by axios - that will be sent along
|
|
468
|
-
let allHeaders = Object.keys(this.axios.defaults.headers).reduce((acc, cur) => {
|
|
469
|
-
if (!axiosHeaderPropsToIgnore.includes(cur)) {
|
|
470
|
-
acc[cur] = this.axios.defaults.headers[cur];
|
|
471
|
-
}
|
|
472
|
-
return acc;
|
|
473
|
-
}, {});
|
|
474
|
-
allHeaders = Object.assign(Object.assign(Object.assign({}, this.axios.defaults.headers.common), allHeaders), headers);
|
|
475
|
-
this.logger.debug(`http request headers: ${JSON.stringify(redact(allHeaders))}`);
|
|
476
|
-
const response = await this.axios.post(url, body, config);
|
|
423
|
+
const response = await this.fetchFn(url, {
|
|
424
|
+
method: 'POST',
|
|
425
|
+
headers: allHeaders,
|
|
426
|
+
body: serializedBody,
|
|
427
|
+
redirect: 'error',
|
|
428
|
+
signal,
|
|
429
|
+
});
|
|
477
430
|
this.logger.debug('http response received');
|
|
478
431
|
if (response.status === 429) {
|
|
479
432
|
const retrySec = parseRetryHeaders(response);
|
|
480
433
|
if (retrySec !== undefined) {
|
|
481
434
|
this.emit(WebClientEvent.RATE_LIMITED, retrySec, { url, body });
|
|
482
435
|
if (this.rejectRateLimitedCalls) {
|
|
483
|
-
throw new p_retry_1.AbortError(
|
|
436
|
+
throw new p_retry_1.AbortError(new errors_1.WebAPIRateLimitedError(retrySec));
|
|
484
437
|
}
|
|
485
438
|
this.logger.info(`API Call failed due to rate limiting. Will retry in ${retrySec} seconds.`);
|
|
486
439
|
// pause the request queue and then delay the rejection by the amount of time in the retry header
|
|
487
440
|
this.requestQueue.pause();
|
|
488
441
|
// NOTE: if there was a way to introspect the current RetryOperation and know what the next timeout
|
|
489
|
-
// would be, then we could subtract that time from the following delay, knowing that
|
|
490
|
-
// attempt still wouldn't occur until after the rate-limit header has specified.
|
|
442
|
+
// would be, then we could subtract that time from the following delay, knowing that the next
|
|
443
|
+
// attempt still wouldn't occur until after the rate-limit header has specified. An even better
|
|
491
444
|
// solution would be to subtract the time from only the timeout of this next attempt of the
|
|
492
|
-
// RetryOperation.
|
|
445
|
+
// RetryOperation. This would result in staying paused for the entire duration specified in the
|
|
493
446
|
// header, yet this operation not having to pay the timeout cost in addition to that.
|
|
494
447
|
await (0, helpers_1.default)(retrySec * 1000);
|
|
495
448
|
// resume the request queue and throw a non-abort error to signal a retry
|
|
@@ -498,26 +451,27 @@ class WebClient extends methods_1.Methods {
|
|
|
498
451
|
throw new Error(`A rate limit was exceeded (url: ${url}, retry-after: ${retrySec})`);
|
|
499
452
|
}
|
|
500
453
|
// TODO: turn this into some CodedError
|
|
501
|
-
throw new p_retry_1.AbortError(new Error(`Retry header did not contain a valid timeout (url: ${url}, retry-after header: ${response.headers
|
|
454
|
+
throw new p_retry_1.AbortError(new Error(`Retry header did not contain a valid timeout (url: ${url}, retry-after header: ${response.headers.get('retry-after')})`));
|
|
502
455
|
}
|
|
503
456
|
// Slack's Web API doesn't use meaningful status codes besides 429 and 200
|
|
504
457
|
if (response.status !== 200) {
|
|
505
|
-
|
|
458
|
+
const responseBody = await response.text();
|
|
459
|
+
throw new errors_1.WebAPIHTTPError(response.status, response.statusText, Object.fromEntries(response.headers.entries()), responseBody);
|
|
506
460
|
}
|
|
507
461
|
return response;
|
|
508
462
|
}
|
|
509
463
|
catch (error) {
|
|
510
|
-
|
|
511
|
-
|
|
512
|
-
|
|
513
|
-
|
|
514
|
-
|
|
515
|
-
throw (0, errors_1.requestErrorWithOriginal)(e, this.attachOriginalToWebAPIRequestError);
|
|
464
|
+
if (error instanceof p_retry_1.AbortError) {
|
|
465
|
+
throw error;
|
|
466
|
+
}
|
|
467
|
+
if (error instanceof errors_1.SlackError) {
|
|
468
|
+
throw error;
|
|
516
469
|
}
|
|
517
|
-
|
|
470
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
471
|
+
this.logger.warn('http request failed', message);
|
|
472
|
+
throw new errors_1.WebAPIRequestError(error instanceof Error ? error : new Error(String(error)));
|
|
518
473
|
}
|
|
519
474
|
});
|
|
520
|
-
// biome-ignore lint/suspicious/noExplicitAny: http responses can be anything
|
|
521
475
|
return (0, p_retry_1.default)(task, this.retryConfig);
|
|
522
476
|
}
|
|
523
477
|
/**
|
|
@@ -529,19 +483,15 @@ class WebClient extends methods_1.Methods {
|
|
|
529
483
|
if (isAbsoluteURL && this.allowAbsoluteUrls) {
|
|
530
484
|
return url;
|
|
531
485
|
}
|
|
532
|
-
return `${this.
|
|
486
|
+
return `${this.slackApiUrl}${url}`;
|
|
533
487
|
}
|
|
534
488
|
/**
|
|
535
|
-
* Transforms
|
|
536
|
-
*
|
|
537
|
-
*
|
|
538
|
-
*
|
|
539
|
-
* @param config - The Axios request configuration object
|
|
489
|
+
* Transforms a key-value object into a serialized body suitable for fetch.
|
|
490
|
+
* Flattens complex objects into JSON-encoded strings, detects binary content,
|
|
491
|
+
* and returns either a FormData (for binary uploads) or a URL-encoded string,
|
|
492
|
+
* along with any content-type headers that should be set.
|
|
540
493
|
*/
|
|
541
|
-
|
|
542
|
-
const { data, headers } = config;
|
|
543
|
-
// The following operation both flattens complex objects into a JSON-encoded strings and searches the values for
|
|
544
|
-
// binary content
|
|
494
|
+
serializeBody(data) {
|
|
545
495
|
let containsBinaryData = false;
|
|
546
496
|
// biome-ignore lint/suspicious/noExplicitAny: HTTP request data can be anything
|
|
547
497
|
const flattened = Object.entries(data).map(([key, value]) => {
|
|
@@ -549,7 +499,7 @@ class WebClient extends methods_1.Methods {
|
|
|
549
499
|
return [];
|
|
550
500
|
}
|
|
551
501
|
let serializedValue = value;
|
|
552
|
-
if (Buffer.isBuffer(value)
|
|
502
|
+
if (Buffer.isBuffer(value)) {
|
|
553
503
|
containsBinaryData = true;
|
|
554
504
|
}
|
|
555
505
|
else if (typeof value !== 'string' && typeof value !== 'number' && typeof value !== 'boolean') {
|
|
@@ -562,55 +512,41 @@ class WebClient extends methods_1.Methods {
|
|
|
562
512
|
// A body with binary content should be serialized as multipart/form-data
|
|
563
513
|
if (containsBinaryData) {
|
|
564
514
|
this.logger.debug('Request arguments contain binary data');
|
|
565
|
-
const form =
|
|
566
|
-
|
|
567
|
-
|
|
568
|
-
|
|
569
|
-
|
|
570
|
-
|
|
571
|
-
|
|
572
|
-
|
|
573
|
-
|
|
574
|
-
|
|
575
|
-
|
|
576
|
-
|
|
577
|
-
|
|
578
|
-
|
|
579
|
-
return (0, node_path_1.basename)(streamOrBuffer.path);
|
|
580
|
-
}
|
|
581
|
-
return defaultFilename;
|
|
582
|
-
})();
|
|
583
|
-
frm.append(key, value, opts);
|
|
584
|
-
}
|
|
585
|
-
else if (key !== undefined && value !== undefined) {
|
|
586
|
-
frm.append(key, value);
|
|
515
|
+
const form = new FormData();
|
|
516
|
+
for (const [key, value] of flattened) {
|
|
517
|
+
if (key === undefined || value === undefined)
|
|
518
|
+
continue;
|
|
519
|
+
if (Buffer.isBuffer(value)) {
|
|
520
|
+
const streamOrBuffer = value;
|
|
521
|
+
let filename = defaultFilename;
|
|
522
|
+
if (typeof streamOrBuffer.name === 'string') {
|
|
523
|
+
filename = (0, node_path_1.basename)(streamOrBuffer.name);
|
|
524
|
+
}
|
|
525
|
+
else if (typeof streamOrBuffer.path === 'string') {
|
|
526
|
+
filename = (0, node_path_1.basename)(streamOrBuffer.path);
|
|
527
|
+
}
|
|
528
|
+
form.append(key, new Blob([new Uint8Array(value)]), filename);
|
|
587
529
|
}
|
|
588
|
-
|
|
589
|
-
|
|
590
|
-
if (headers) {
|
|
591
|
-
// Copying FormData-generated headers into headers param
|
|
592
|
-
// not reassigning to headers param since it is passed by reference and behaves as an inout param
|
|
593
|
-
for (const [header, value] of Object.entries(form.getHeaders())) {
|
|
594
|
-
headers[header] = value;
|
|
530
|
+
else {
|
|
531
|
+
form.append(key, String(value));
|
|
595
532
|
}
|
|
596
533
|
}
|
|
597
|
-
|
|
598
|
-
|
|
599
|
-
return config;
|
|
534
|
+
// Do not set Content-Type — fetch auto-generates the multipart boundary
|
|
535
|
+
return { serializedBody: form, contentHeaders: {} };
|
|
600
536
|
}
|
|
601
|
-
// Otherwise,
|
|
602
|
-
if (headers)
|
|
603
|
-
headers['Content-Type'] = 'application/x-www-form-urlencoded';
|
|
537
|
+
// Otherwise, serialize as url-encoded key-value pairs
|
|
604
538
|
// biome-ignore lint/suspicious/noExplicitAny: form values can be anything
|
|
605
539
|
const initialValue = {};
|
|
606
|
-
|
|
540
|
+
const encoded = (0, node_querystring_1.stringify)(flattened.reduce((accumulator, [key, value]) => {
|
|
607
541
|
if (key !== undefined && value !== undefined) {
|
|
608
542
|
accumulator[key] = value;
|
|
609
543
|
}
|
|
610
544
|
return accumulator;
|
|
611
545
|
}, initialValue));
|
|
612
|
-
|
|
613
|
-
|
|
546
|
+
return {
|
|
547
|
+
serializedBody: encoded,
|
|
548
|
+
contentHeaders: { 'Content-Type': 'application/x-www-form-urlencoded' },
|
|
549
|
+
};
|
|
614
550
|
}
|
|
615
551
|
/**
|
|
616
552
|
* Processes an HTTP response into a WebAPICallResult by performing JSON parsing on the body and merging relevant
|
|
@@ -618,23 +554,21 @@ class WebClient extends methods_1.Methods {
|
|
|
618
554
|
* @param response - an http response
|
|
619
555
|
*/
|
|
620
556
|
async buildResult(response) {
|
|
621
|
-
|
|
622
|
-
const isGzipResponse =
|
|
623
|
-
//
|
|
557
|
+
const contentType = response.headers.get('content-type');
|
|
558
|
+
const isGzipResponse = contentType === 'application/gzip';
|
|
559
|
+
// biome-ignore lint/suspicious/noExplicitAny: HTTP response data can be anything
|
|
560
|
+
let data;
|
|
561
|
+
// admin.analytics.getFile returns a gzip binary response that can be unzipped
|
|
624
562
|
if (isGzipResponse) {
|
|
625
|
-
// admin.analytics.getFile will return a Buffer that can be unzipped
|
|
626
563
|
try {
|
|
564
|
+
const buffer = Buffer.from(await response.arrayBuffer());
|
|
627
565
|
const unzippedData = await new Promise((resolve, reject) => {
|
|
628
|
-
node_zlib_1.default.unzip(
|
|
566
|
+
node_zlib_1.default.unzip(buffer, (err, buf) => {
|
|
629
567
|
if (err) {
|
|
630
568
|
return reject(err);
|
|
631
569
|
}
|
|
632
570
|
return resolve(buf.toString().split('\n'));
|
|
633
571
|
});
|
|
634
|
-
})
|
|
635
|
-
.then((res) => res)
|
|
636
|
-
.catch((err) => {
|
|
637
|
-
throw err;
|
|
638
572
|
});
|
|
639
573
|
const fileData = [];
|
|
640
574
|
if (Array.isArray(unzippedData)) {
|
|
@@ -650,32 +584,33 @@ class WebClient extends methods_1.Methods {
|
|
|
650
584
|
data = { ok: false, error: err };
|
|
651
585
|
}
|
|
652
586
|
}
|
|
653
|
-
else if (!isGzipResponse && response.
|
|
587
|
+
else if (!isGzipResponse && response.url.endsWith('/admin.analytics.getFile')) {
|
|
654
588
|
// if it isn't a Gzip response but is from the admin.analytics.getFile request,
|
|
655
589
|
// decode the ArrayBuffer to JSON read the error
|
|
656
|
-
|
|
590
|
+
const buffer = await response.arrayBuffer();
|
|
591
|
+
data = JSON.parse(new node_util_1.TextDecoder().decode(buffer));
|
|
657
592
|
}
|
|
658
|
-
|
|
659
|
-
|
|
593
|
+
else {
|
|
594
|
+
const text = await response.text();
|
|
660
595
|
try {
|
|
661
|
-
data = JSON.parse(
|
|
596
|
+
data = JSON.parse(text);
|
|
662
597
|
}
|
|
663
598
|
catch (_) {
|
|
664
|
-
// failed to parse the
|
|
665
|
-
data = { ok: false, error:
|
|
599
|
+
// failed to parse the response body as JSON
|
|
600
|
+
data = { ok: false, error: text };
|
|
666
601
|
}
|
|
667
602
|
}
|
|
668
603
|
if (data.response_metadata === undefined) {
|
|
669
604
|
data.response_metadata = {};
|
|
670
605
|
}
|
|
671
606
|
// add scopes metadata from headers
|
|
672
|
-
|
|
673
|
-
|
|
607
|
+
const oauthScopes = response.headers.get('x-oauth-scopes');
|
|
608
|
+
if (oauthScopes !== null) {
|
|
609
|
+
data.response_metadata.scopes = oauthScopes.trim().split(/\s*,\s*/);
|
|
674
610
|
}
|
|
675
|
-
|
|
676
|
-
|
|
677
|
-
|
|
678
|
-
.split(/\s*,\s*/);
|
|
611
|
+
const acceptedOauthScopes = response.headers.get('x-accepted-oauth-scopes');
|
|
612
|
+
if (acceptedOauthScopes !== null) {
|
|
613
|
+
data.response_metadata.acceptedScopes = acceptedOauthScopes.trim().split(/\s*,\s*/);
|
|
679
614
|
}
|
|
680
615
|
// add retry metadata from headers
|
|
681
616
|
const retrySec = parseRetryHeaders(response);
|
|
@@ -686,10 +621,6 @@ class WebClient extends methods_1.Methods {
|
|
|
686
621
|
}
|
|
687
622
|
}
|
|
688
623
|
exports.WebClient = WebClient;
|
|
689
|
-
/**
|
|
690
|
-
* The name used to prefix all logging generated from this object
|
|
691
|
-
*/
|
|
692
|
-
WebClient.loggerName = 'WebClient';
|
|
693
624
|
exports.default = WebClient;
|
|
694
625
|
/**
|
|
695
626
|
* Determines an appropriate set of cursor pagination options for the next request to a paginated API method.
|
|
@@ -713,8 +644,9 @@ function paginationOptionsForNextPage(previousResult, pageSize) {
|
|
|
713
644
|
* from a rate-limited HTTP response (statusCode = 429).
|
|
714
645
|
*/
|
|
715
646
|
function parseRetryHeaders(response) {
|
|
716
|
-
|
|
717
|
-
|
|
647
|
+
const retryAfterHeader = response.headers.get('retry-after');
|
|
648
|
+
if (retryAfterHeader !== null) {
|
|
649
|
+
const retryAfter = Number.parseInt(retryAfterHeader, 10);
|
|
718
650
|
if (!Number.isNaN(retryAfter)) {
|
|
719
651
|
return retryAfter;
|
|
720
652
|
}
|
|
@@ -727,7 +659,7 @@ function parseRetryHeaders(response) {
|
|
|
727
659
|
* @param logger instance of web clients logger
|
|
728
660
|
*/
|
|
729
661
|
function warnDeprecations(method, logger) {
|
|
730
|
-
const deprecatedMethods = ['
|
|
662
|
+
const deprecatedMethods = ['oauth.access'];
|
|
731
663
|
const isDeprecated = deprecatedMethods.some((depMethod) => {
|
|
732
664
|
const re = new RegExp(`^${depMethod}`);
|
|
733
665
|
return re.test(method);
|
|
@@ -771,9 +703,9 @@ function warnIfFallbackIsMissing(method, logger, options) {
|
|
|
771
703
|
* @param options arguments for the Web API method
|
|
772
704
|
*/
|
|
773
705
|
function warnIfThreadTsIsNotString(method, logger, options) {
|
|
774
|
-
const targetMethods = ['chat.postEphemeral', 'chat.postMessage', 'chat.scheduleMessage'
|
|
706
|
+
const targetMethods = ['chat.postEphemeral', 'chat.postMessage', 'chat.scheduleMessage'];
|
|
775
707
|
const isTargetMethod = targetMethods.includes(method);
|
|
776
|
-
if (isTargetMethod &&
|
|
708
|
+
if (isTargetMethod && options?.thread_ts !== undefined && typeof options?.thread_ts !== 'string') {
|
|
777
709
|
logger.warn(buildThreadTsWarningMessage(method));
|
|
778
710
|
}
|
|
779
711
|
}
|
|
@@ -797,12 +729,12 @@ function redact(body) {
|
|
|
797
729
|
if (key.match(/.*token.*/) !== null || key.match(/[Aa]uthorization/)) {
|
|
798
730
|
serializedValue = '[[REDACTED]]';
|
|
799
731
|
}
|
|
800
|
-
// when value is buffer
|
|
801
|
-
if (Buffer.isBuffer(value)
|
|
732
|
+
// when value is buffer we can avoid logging it
|
|
733
|
+
if (Buffer.isBuffer(value)) {
|
|
802
734
|
serializedValue = '[[BINARY VALUE OMITTED]]';
|
|
803
735
|
}
|
|
804
|
-
else if (typeof value
|
|
805
|
-
serializedValue =
|
|
736
|
+
else if (typeof value === 'object') {
|
|
737
|
+
serializedValue = redact(value);
|
|
806
738
|
}
|
|
807
739
|
return [key, serializedValue];
|
|
808
740
|
});
|