@openclaw/slack 2026.9.6 → 2026.9.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/assets/icon.png +0 -0
- package/dist/.setup/{account-inspect-DP1Bcwj4.mjs → account-inspect-DWBXpER6.mjs} +1 -1
- package/dist/.setup/{accounts-BBHvg0pY.mjs → accounts-D_N9IqNA.mjs} +23 -1
- package/dist/.setup/{action-runtime-B01d85zt.mjs → action-runtime-DfWvuiZd.mjs} +26 -41
- package/dist/.setup/action-runtime.runtime-Ck4bAWOX.mjs +2 -0
- package/dist/.setup/{actions-DKCtBgCI.mjs → actions-Df0CzcDl.mjs} +88 -175
- package/dist/.setup/{approval-handler.runtime-DMszKn_7.mjs → approval-handler.runtime-Ed6Sw5VK.mjs} +37 -47
- package/dist/.setup/{approval-message-updates-Tb_qRokK.mjs → approval-message-updates-BadvtA7R.mjs} +1 -2
- package/dist/.setup/{channel-CErYZ5zw.mjs → channel-C7bgPSTE.mjs} +181 -273
- package/dist/.setup/channel-meta-C443t-lI.mjs +27 -0
- package/dist/.setup/{channel-type-Dxk8VJUb.mjs → channel-type-ClOttrZ5.mjs} +13 -21
- package/dist/.setup/{channel.setup-BVoUtdPn.mjs → channel.setup-Dh2jzAjN.mjs} +35 -42
- package/dist/.setup/{config-schema-CyL279e7.mjs → config-schema-BZCxmHKG.mjs} +24 -21
- package/dist/.setup/{directory-config-CQTSH45W.mjs → directory-config-BOUWH3hR.mjs} +7 -10
- package/dist/.setup/{directory-live-BCcj89QV.mjs → directory-live-B2O4B_Ho.mjs} +9 -21
- package/dist/.setup/doctor-contract-CRN1Z_c7.mjs +342 -0
- package/dist/.setup/{message-tool-api-C0PTFaNV.mjs → message-tool-api-Cu4lwlGy.mjs} +34 -48
- package/dist/.setup/{provider-C-jPaGt2.mjs → monitor-BPVfkumU.mjs} +2181 -2693
- package/dist/.setup/{outbound-adapter-A7Wdn8ZT.mjs → outbound-adapter-Bv48XUjq.mjs} +10 -21
- package/dist/.setup/{pipeline.runtime-BlPOexmJ.mjs → pipeline.runtime-B1H63Frf.mjs} +311 -457
- package/dist/.setup/{plugin-routes-C3X0eVaK.mjs → plugin-routes-B8tooDLj.mjs} +1 -1
- package/dist/.setup/{policy-BApW53pI.mjs → policy-D-jfM174.mjs} +5 -5
- package/dist/.setup/{probe-DiYIMPJo.mjs → probe-B2Y9qc_z.mjs} +101 -39
- package/dist/.setup/{registry-bbjH7IHX.mjs → registry-CIbMfuf8.mjs} +6 -2
- package/dist/.setup/{relay-source-DfOnjJTE.mjs → relay-source-BpKdjsll.mjs} +10 -12
- package/dist/.setup/{replies-BBAJxUOQ.mjs → replies-BAnUtr2f.mjs} +16 -76
- package/dist/.setup/{reply-blocks-Bm8kf6mK.mjs → reply-blocks-SE1kTE3I.mjs} +27 -154
- package/dist/.setup/{resolve-channels-BXbMBbJD.mjs → resolve-channels-XXBn8UU_.mjs} +4 -5
- package/dist/.setup/{resolve-users-65WqvIqD.mjs → resolve-users-DW0ngD03.mjs} +20 -22
- package/dist/.setup/{scopes-h3YB-mMs.mjs → scopes-CasuDvaa.mjs} +6 -17
- package/dist/.setup/{secret-contract-DxmvbxBF.mjs → secret-contract-BaZcu6P_.mjs} +15 -20
- package/dist/.setup/{secret-contract-api-D9UfYujm.mjs → secret-contract-api-Dp6290Vg.mjs} +1 -1
- package/dist/.setup/{security-audit-BypHqcq5.mjs → security-audit-BqDc-6VL.mjs} +1 -1
- package/dist/.setup/{send-Cp6omkOg.mjs → send-BOVLQi3n.mjs} +84 -171
- package/dist/.setup/{session-status-Cf7AvWOt.mjs → session-status-DscajIsd.mjs} +315 -238
- package/dist/.setup/{setup-plugin-api-dLPkL06L.mjs → setup-plugin-api-DTtbTKNk.mjs} +1 -1
- package/dist/.setup/{setup-surface-D3DLcCxu.mjs → setup-surface-Dn7QgWRE.mjs} +24 -56
- package/dist/.setup/{shared-CJ3arAFL.mjs → shared-qau-uDGl.mjs} +30 -56
- package/dist/.setup/{slash-dispatch.runtime-HFy_XvyO.mjs → slash-dispatch.runtime--AEzLVBF.mjs} +1 -1
- package/dist/.setup/{streaming-compat-B-e0mqM0.mjs → streaming-compat-C5Wut626.mjs} +31 -8
- package/dist/.setup/{target-parsing-DEsPjngB.mjs → target-parsing-FFE26kOV.mjs} +1 -7
- package/dist/.setup/{targets-Cku2KCvg.mjs → targets-C6LZQL1Q.mjs} +1 -1
- package/dist/.setup/{thread-ts-CukseRVL.mjs → thread-ts-Cvt7WD6B.mjs} +0 -1
- package/dist/account-inspect-api.js +1 -1
- package/dist/api.js +18 -17
- package/dist/channel-config-api.js +1 -1
- package/dist/channel-plugin-api.js +1 -1
- package/dist/directory-contract-api.js +1 -1
- package/dist/doctor-contract-api.js +1 -1
- package/dist/http-routes-api.js +1 -1
- package/dist/index.js +1 -1
- package/dist/message-tool-api.js +1 -1
- package/dist/runtime-api.js +11 -12
- package/dist/secret-contract-api.js +1 -1
- package/dist/security-contract-api.js +1 -1
- package/dist/setup-entry.js +2 -2
- package/dist/setup-plugin-api.js +1 -1
- package/node_modules/@slack/bolt/node_modules/@types/node/README.md +1 -1
- package/node_modules/@slack/bolt/node_modules/@types/node/child_process.d.ts +1 -1
- package/node_modules/@slack/bolt/node_modules/@types/node/crypto.d.ts +20 -8
- package/node_modules/@slack/bolt/node_modules/@types/node/ffi.d.ts +14 -0
- package/node_modules/@slack/bolt/node_modules/@types/node/http2.d.ts +3 -2
- package/node_modules/@slack/bolt/node_modules/@types/node/net.d.ts +16 -4
- package/node_modules/@slack/bolt/node_modules/@types/node/package.json +2 -2
- package/node_modules/@slack/bolt/node_modules/@types/node/process.d.ts +1 -0
- package/node_modules/@slack/bolt/node_modules/@types/node/quic.d.ts +39 -1
- package/node_modules/@slack/bolt/node_modules/@types/node/stream/iter.d.ts +9 -12
- package/node_modules/@slack/bolt/node_modules/@types/node/test/reporters.d.ts +1 -0
- package/node_modules/@slack/bolt/node_modules/@types/node/test.d.ts +72 -0
- package/node_modules/@slack/bolt/node_modules/@types/node/tls.d.ts +14 -10
- package/node_modules/@slack/bolt/node_modules/@types/node/vm.d.ts +2 -1
- package/node_modules/@slack/bolt/node_modules/@types/node/worker_threads.d.ts +4 -1
- package/node_modules/@slack/web-api/node_modules/@types/node/README.md +1 -1
- package/node_modules/@slack/web-api/node_modules/@types/node/child_process.d.ts +1 -1
- package/node_modules/@slack/web-api/node_modules/@types/node/crypto.d.ts +20 -8
- package/node_modules/@slack/web-api/node_modules/@types/node/ffi.d.ts +14 -0
- package/node_modules/@slack/web-api/node_modules/@types/node/http2.d.ts +3 -2
- package/node_modules/@slack/web-api/node_modules/@types/node/net.d.ts +16 -4
- package/node_modules/@slack/web-api/node_modules/@types/node/package.json +2 -2
- package/node_modules/@slack/web-api/node_modules/@types/node/process.d.ts +1 -0
- package/node_modules/@slack/web-api/node_modules/@types/node/quic.d.ts +39 -1
- package/node_modules/@slack/web-api/node_modules/@types/node/stream/iter.d.ts +9 -12
- package/node_modules/@slack/web-api/node_modules/@types/node/test/reporters.d.ts +1 -0
- package/node_modules/@slack/web-api/node_modules/@types/node/test.d.ts +72 -0
- package/node_modules/@slack/web-api/node_modules/@types/node/tls.d.ts +14 -10
- package/node_modules/@slack/web-api/node_modules/@types/node/vm.d.ts +2 -1
- package/node_modules/@slack/web-api/node_modules/@types/node/worker_threads.d.ts +4 -1
- package/node_modules/get-east-asian-width/index.js +8 -3
- package/node_modules/get-east-asian-width/lookup-data.js +1 -1
- package/node_modules/get-east-asian-width/lookup.js +4 -4
- package/node_modules/get-east-asian-width/package.json +1 -1
- package/node_modules/typebox/build/compile/code.mjs +1 -2
- package/node_modules/typebox/build/compile/validator.mjs +5 -1
- package/node_modules/typebox/build/format/iri.mjs +16 -9
- package/node_modules/typebox/build/guard/emit.mjs +2 -2
- package/node_modules/typebox/build/guard/guard.d.mts +7 -5
- package/node_modules/typebox/build/guard/guard.mjs +14 -9
- package/node_modules/typebox/build/guard/index.mjs +6 -0
- package/node_modules/typebox/build/guard/unicode/unicode.d.mts +6 -0
- package/node_modules/typebox/build/guard/unicode/unicode.mjs +35 -0
- package/node_modules/typebox/build/guard/{string.mjs → unicode/unicode_segment.mjs} +16 -19
- package/node_modules/typebox/build/schema/build.mjs +2 -3
- package/node_modules/typebox/build/schema/engine/_pathing.d.mts +1 -0
- package/node_modules/typebox/build/schema/engine/_pathing.mjs +11 -0
- package/node_modules/typebox/build/schema/engine/_refine.mjs +13 -5
- package/node_modules/typebox/build/schema/engine/additionalProperties.mjs +2 -1
- package/node_modules/typebox/build/schema/engine/dependencies.mjs +2 -1
- package/node_modules/typebox/build/schema/engine/dependentSchemas.mjs +2 -1
- package/node_modules/typebox/build/schema/engine/dynamicRef.d.mts +1 -1
- package/node_modules/typebox/build/schema/engine/dynamicRef.mjs +2 -2
- package/node_modules/typebox/build/schema/engine/format.mjs +9 -2
- package/node_modules/typebox/build/schema/engine/patternProperties.mjs +3 -2
- package/node_modules/typebox/build/schema/engine/properties.mjs +3 -2
- package/node_modules/typebox/build/schema/engine/propertyNames.mjs +2 -1
- package/node_modules/typebox/build/schema/engine/recursiveRef.d.mts +1 -1
- package/node_modules/typebox/build/schema/engine/recursiveRef.mjs +2 -2
- package/node_modules/typebox/build/schema/engine/ref.d.mts +1 -1
- package/node_modules/typebox/build/schema/engine/ref.mjs +2 -2
- package/node_modules/typebox/build/schema/engine/schema.mjs +24 -24
- package/node_modules/typebox/build/schema/parse.mjs +3 -0
- package/node_modules/typebox/build/schema/pointer/pointer.d.mts +1 -6
- package/node_modules/typebox/build/schema/pointer/pointer.mjs +47 -64
- package/node_modules/typebox/build/system/settings/internal.d.mts +2 -0
- package/node_modules/typebox/build/system/settings/internal.mjs +20 -0
- package/node_modules/typebox/build/system/settings/settings.d.mts +11 -0
- package/node_modules/typebox/build/system/settings/settings.mjs +14 -0
- package/node_modules/typebox/build/type/extends/inference.d.mts +1 -1
- package/node_modules/typebox/build/type/extends/inference.mjs +15 -2
- package/node_modules/typebox/build/type/extends/tuple.d.mts +2 -1
- package/node_modules/typebox/build/type/extends/tuple.mjs +21 -1
- package/node_modules/typebox/build/value/parse/parse.mjs +10 -4
- package/node_modules/typebox/package.json +1 -1
- package/node_modules/typebox/readme.md +3 -1
- package/node_modules/undici/README.md +81 -25
- package/node_modules/undici/docs/docs/api/Agent.md +249 -42
- package/node_modules/undici/docs/docs/api/BalancedPool.md +246 -48
- package/node_modules/undici/docs/docs/api/CacheStorage.md +171 -13
- package/node_modules/undici/docs/docs/api/CacheStore.md +294 -98
- package/node_modules/undici/docs/docs/api/Client.md +407 -162
- package/node_modules/undici/docs/docs/api/ClientStats.md +80 -14
- package/node_modules/undici/docs/docs/api/Connector.md +118 -35
- package/node_modules/undici/docs/docs/api/ContentType.md +65 -25
- package/node_modules/undici/docs/docs/api/Cookies.md +122 -71
- package/node_modules/undici/docs/docs/api/Debug.md +34 -18
- package/node_modules/undici/docs/docs/api/DiagnosticsChannel.md +364 -164
- package/node_modules/undici/docs/docs/api/Dispatcher.md +490 -1055
- package/node_modules/undici/docs/docs/api/EnvHttpProxyAgent.md +105 -93
- package/node_modules/undici/docs/docs/api/Errors.md +503 -28
- package/node_modules/undici/docs/docs/api/EventSource.md +326 -13
- package/node_modules/undici/docs/docs/api/Fetch.md +681 -30
- package/node_modules/undici/docs/docs/api/GlobalInstallation.md +78 -96
- package/node_modules/undici/docs/docs/api/H2CClient.md +298 -176
- package/node_modules/undici/docs/docs/api/Interceptors.md +418 -0
- package/node_modules/undici/docs/docs/api/MockAgent.md +333 -314
- package/node_modules/undici/docs/docs/api/MockCallHistory.md +272 -98
- package/node_modules/undici/docs/docs/api/MockCallHistoryLog.md +189 -26
- package/node_modules/undici/docs/docs/api/MockClient.md +151 -33
- package/node_modules/undici/docs/docs/api/MockErrors.md +56 -5
- package/node_modules/undici/docs/docs/api/MockPool.md +321 -258
- package/node_modules/undici/docs/docs/api/Pool.md +236 -41
- package/node_modules/undici/docs/docs/api/PoolStats.md +119 -13
- package/node_modules/undici/docs/docs/api/ProxyAgent.md +179 -160
- package/node_modules/undici/docs/docs/api/RedirectHandler.md +238 -55
- package/node_modules/undici/docs/docs/api/RetryAgent.md +113 -27
- package/node_modules/undici/docs/docs/api/RetryHandler.md +161 -79
- package/node_modules/undici/docs/docs/api/RoundRobinPool.md +166 -72
- package/node_modules/undici/docs/docs/api/SnapshotAgent.md +262 -517
- package/node_modules/undici/docs/docs/api/Socks5ProxyAgent.md +177 -196
- package/node_modules/undici/docs/docs/api/Util.md +68 -11
- package/node_modules/undici/docs/docs/api/WebSocket.md +475 -80
- package/node_modules/undici/docs/docs/api/api-lifecycle.md +100 -32
- package/node_modules/undici/docs/docs/best-practices/client-certificate.md +2 -0
- package/node_modules/undici/docs/docs/best-practices/crawling.md +3 -1
- package/node_modules/undici/docs/docs/best-practices/migrating-from-v7-to-v8.md +233 -0
- package/node_modules/undici/docs/docs/best-practices/mocking-request.md +9 -7
- package/node_modules/undici/docs/docs/best-practices/proxy.md +3 -1
- package/node_modules/undici/docs/docs/best-practices/undici-vs-builtin-fetch.md +10 -8
- package/node_modules/undici/docs/docs/best-practices/writing-tests.md +2 -0
- package/node_modules/undici/docs/docs/getting-started.md +281 -0
- package/node_modules/undici/docs/docs/index.md +784 -0
- package/node_modules/undici/docs/docs/site.json +125 -0
- package/node_modules/undici/docs/docs/type-map.json +79 -0
- package/node_modules/undici/index.js +4 -2
- package/node_modules/undici/lib/api/api-connect.js +13 -11
- package/node_modules/undici/lib/api/api-pipeline.js +26 -13
- package/node_modules/undici/lib/api/api-request.js +51 -21
- package/node_modules/undici/lib/api/api-stream.js +81 -20
- package/node_modules/undici/lib/api/api-upgrade.js +21 -11
- package/node_modules/undici/lib/api/readable.js +45 -9
- package/node_modules/undici/lib/cache/memory-cache-store.js +3 -3
- package/node_modules/undici/lib/cache/sqlite-cache-store.js +3 -1
- package/node_modules/undici/lib/core/connect.js +46 -7
- package/node_modules/undici/lib/core/constants.js +1 -24
- package/node_modules/undici/lib/core/errors.js +22 -2
- package/node_modules/undici/lib/core/request.js +100 -18
- package/node_modules/undici/lib/core/symbols.js +4 -0
- package/node_modules/undici/lib/core/util.js +105 -48
- package/node_modules/undici/lib/dispatcher/agent.js +51 -32
- package/node_modules/undici/lib/dispatcher/balanced-pool.js +23 -27
- package/node_modules/undici/lib/dispatcher/client-h1.js +86 -24
- package/node_modules/undici/lib/dispatcher/client-h2.js +1091 -361
- package/node_modules/undici/lib/dispatcher/client.js +109 -36
- package/node_modules/undici/lib/dispatcher/dispatcher-base.js +19 -6
- package/node_modules/undici/lib/dispatcher/dispatcher.js +15 -5
- package/node_modules/undici/lib/dispatcher/dispatcher1-wrapper.js +110 -0
- package/node_modules/undici/lib/dispatcher/env-http-proxy-agent.js +37 -8
- package/node_modules/undici/lib/dispatcher/h2c-client.js +4 -4
- package/node_modules/undici/lib/dispatcher/pool-base.js +28 -10
- package/node_modules/undici/lib/dispatcher/pool.js +30 -5
- package/node_modules/undici/lib/dispatcher/proxy-agent.js +95 -19
- package/node_modules/undici/lib/dispatcher/retry-agent.js +3 -0
- package/node_modules/undici/lib/dispatcher/round-robin-pool.js +32 -10
- package/node_modules/undici/lib/dispatcher/socks5-proxy-agent.js +153 -63
- package/node_modules/undici/lib/global.js +37 -14
- package/node_modules/undici/lib/handler/cache-handler.js +49 -7
- package/node_modules/undici/lib/handler/cache-revalidation-handler.js +10 -0
- package/node_modules/undici/lib/handler/decorator-handler.js +8 -3
- package/node_modules/undici/lib/handler/deduplication-handler.js +12 -6
- package/node_modules/undici/lib/handler/redirect-handler.js +66 -66
- package/node_modules/undici/lib/handler/retry-handler.js +191 -50
- package/node_modules/undici/lib/interceptor/cache.js +75 -25
- package/node_modules/undici/lib/interceptor/decompress.js +5 -2
- package/node_modules/undici/lib/interceptor/deduplicate.js +5 -4
- package/node_modules/undici/lib/interceptor/dns.js +12 -1
- package/node_modules/undici/lib/interceptor/redirect.js +3 -3
- package/node_modules/undici/lib/llhttp/llhttp-wasm.js +1 -1
- package/node_modules/undici/lib/llhttp/llhttp_simd-wasm.js +1 -1
- package/node_modules/undici/lib/mock/mock-agent.js +21 -9
- package/node_modules/undici/lib/mock/mock-call-history.js +1 -1
- package/node_modules/undici/lib/mock/mock-interceptor.js +25 -7
- package/node_modules/undici/lib/mock/mock-utils.js +281 -47
- package/node_modules/undici/lib/mock/snapshot-agent.js +25 -7
- package/node_modules/undici/lib/mock/snapshot-recorder.js +38 -3
- package/node_modules/undici/lib/util/cache.js +92 -10
- package/node_modules/undici/lib/util/runtime-features.js +3 -34
- package/node_modules/undici/lib/web/cache/cache.js +6 -8
- package/node_modules/undici/lib/web/cookies/parse.js +150 -146
- package/node_modules/undici/lib/web/cookies/util.js +1 -1
- package/node_modules/undici/lib/web/eventsource/eventsource-stream.js +28 -1
- package/node_modules/undici/lib/web/eventsource/eventsource.js +20 -21
- package/node_modules/undici/lib/web/eventsource/util.js +32 -1
- package/node_modules/undici/lib/web/fetch/body.js +48 -10
- package/node_modules/undici/lib/web/fetch/constants.js +1 -1
- package/node_modules/undici/lib/web/fetch/formdata.js +21 -2
- package/node_modules/undici/lib/web/fetch/index.js +242 -223
- package/node_modules/undici/lib/web/fetch/request.js +35 -6
- package/node_modules/undici/lib/web/fetch/response.js +1 -3
- package/node_modules/undici/lib/web/fetch/util.js +10 -2
- package/node_modules/undici/lib/web/webidl/index.js +5 -7
- package/node_modules/undici/lib/web/websocket/frame.js +1 -7
- package/node_modules/undici/lib/web/websocket/receiver.js +1 -1
- package/node_modules/undici/lib/web/websocket/stream/websocketstream.js +10 -10
- package/node_modules/undici/lib/web/websocket/websocket.js +25 -3
- package/node_modules/undici/package.json +10 -10
- package/node_modules/undici/types/agent.d.ts +0 -2
- package/node_modules/undici/types/client.d.ts +69 -24
- package/node_modules/undici/types/connector.d.ts +1 -0
- package/node_modules/undici/types/cookies.d.ts +1 -1
- package/node_modules/undici/types/dispatcher.d.ts +8 -30
- package/node_modules/undici/types/dispatcher1-wrapper.d.ts +7 -0
- package/node_modules/undici/types/errors.d.ts +10 -0
- package/node_modules/undici/types/fetch.d.ts +5 -1
- package/node_modules/undici/types/formdata.d.ts +0 -6
- package/node_modules/undici/types/h2c-client.d.ts +6 -6
- package/node_modules/undici/types/handlers.d.ts +2 -0
- package/node_modules/undici/types/header.d.ts +5 -0
- package/node_modules/undici/types/index.d.ts +3 -1
- package/node_modules/undici/types/interceptors.d.ts +1 -1
- package/node_modules/undici/types/mock-agent.d.ts +11 -10
- package/node_modules/undici/types/mock-interceptor.d.ts +5 -1
- package/node_modules/undici/types/pool.d.ts +0 -2
- package/node_modules/undici/types/proxy-agent.d.ts +9 -2
- package/node_modules/undici/types/round-robin-pool.d.ts +0 -2
- package/node_modules/undici/types/snapshot-agent.d.ts +4 -0
- package/node_modules/undici/types/socks5-proxy-agent.d.ts +4 -2
- package/node_modules/undici/types/webidl.d.ts +0 -1
- package/openclaw.plugin.json +31 -3
- package/package.json +7 -7
- package/dist/.setup/accounts.runtime-DN-PPocC.mjs +0 -2
- package/dist/.setup/action-runtime.runtime-C8R8CUan.mjs +0 -2
- package/dist/.setup/doctor-contract-CtMUqjvk.mjs +0 -186
- package/dist/.setup/monitor-_Sht7Dqy.mjs +0 -13
- package/dist/.setup/rolldown-runtime-D7D4PA-g.mjs +0 -13
- package/dist/.setup/send.runtime-B4caZU6T.mjs +0 -2
- package/dist/.setup/slash-commands.runtime-BpSH0b3q.mjs +0 -2
- package/dist/.setup/slash-skill-commands.runtime-Bi1JWZHY.mjs +0 -2
- package/node_modules/undici/lib/handler/unwrap-handler.js +0 -106
- package/node_modules/undici/lib/handler/wrap-handler.js +0 -105
- package/node_modules/undici/lib/llhttp/.gitkeep +0 -0
- package/node_modules/undici/lib/util/promise.js +0 -28
- /package/node_modules/typebox/build/guard/{string.d.mts → unicode/unicode_segment.d.mts} +0 -0
|
@@ -1,186 +0,0 @@
|
|
|
1
|
-
import { n as resolveSlackStreamingMode, t as resolveSlackNativeStreaming } from "./streaming-compat-B-e0mqM0.mjs";
|
|
2
|
-
import { asObjectRecord, defineChannelAliasMigration, defineKeyMoveMigration, hasLegacyAccountStreamingAliases, normalizeChannelConfigEntries, stripRetiredChannelKeys } from "openclaw/plugin-sdk/runtime-doctor-migrations";
|
|
3
|
-
//#region extensions/slack/src/doctor-contract.ts
|
|
4
|
-
const streamingAliasMigration = defineChannelAliasMigration({
|
|
5
|
-
channelId: "slack",
|
|
6
|
-
streaming: {
|
|
7
|
-
defaultMode: "partial",
|
|
8
|
-
resolveMode: resolveSlackStreamingMode,
|
|
9
|
-
resolveNativeTransport: resolveSlackNativeStreaming
|
|
10
|
-
},
|
|
11
|
-
dm: {
|
|
12
|
-
root: true,
|
|
13
|
-
accounts: true
|
|
14
|
-
}
|
|
15
|
-
});
|
|
16
|
-
const dmReplyModeMigration = defineKeyMoveMigration({
|
|
17
|
-
from: ["dm", "replyToMode"],
|
|
18
|
-
to: ["replyToModeByChatType", "direct"]
|
|
19
|
-
});
|
|
20
|
-
const threadMentionPolicyMigration = defineKeyMoveMigration({
|
|
21
|
-
from: ["thread", "requireExplicitMention"],
|
|
22
|
-
to: ["implicitMentions", "threadParticipation"],
|
|
23
|
-
map: (value) => typeof value === "boolean" ? { value: !value } : null,
|
|
24
|
-
pruneEmptySource: true,
|
|
25
|
-
movedMessage: ({ sourcePath, targetPath, mappedValue }) => `Moved ${sourcePath} → ${targetPath} (${String(mappedValue)}).`
|
|
26
|
-
});
|
|
27
|
-
const channelAllowMigration = defineKeyMoveMigration({
|
|
28
|
-
scope: ["channels", "*"],
|
|
29
|
-
from: ["allow"],
|
|
30
|
-
to: ["enabled"]
|
|
31
|
-
});
|
|
32
|
-
function hasInteractiveRepliesCapability(value) {
|
|
33
|
-
const capabilities = asObjectRecord(value)?.capabilities;
|
|
34
|
-
if (Array.isArray(capabilities)) return capabilities.some((entry) => typeof entry === "string" && entry.trim().toLowerCase() === "interactivereplies");
|
|
35
|
-
const capabilitiesRecord = asObjectRecord(capabilities);
|
|
36
|
-
return Boolean(capabilitiesRecord && (Object.keys(capabilitiesRecord).length === 0 || Object.hasOwn(capabilitiesRecord, "interactiveReplies")));
|
|
37
|
-
}
|
|
38
|
-
function hasEnterpriseOrgInstall(value) {
|
|
39
|
-
return Object.hasOwn(asObjectRecord(value) ?? {}, "enterpriseOrgInstall");
|
|
40
|
-
}
|
|
41
|
-
function removeInteractiveRepliesCapability(params) {
|
|
42
|
-
const capabilities = params.entry.capabilities;
|
|
43
|
-
let nextCapabilities;
|
|
44
|
-
let removedEmptyObject = false;
|
|
45
|
-
if (Array.isArray(capabilities)) {
|
|
46
|
-
nextCapabilities = capabilities.filter((entry) => !(typeof entry === "string" && entry.trim().toLowerCase() === "interactivereplies"));
|
|
47
|
-
if (nextCapabilities.length === capabilities.length) return {
|
|
48
|
-
entry: params.entry,
|
|
49
|
-
changed: false
|
|
50
|
-
};
|
|
51
|
-
} else {
|
|
52
|
-
const capabilitiesRecord = asObjectRecord(capabilities);
|
|
53
|
-
if (!capabilitiesRecord || Object.keys(capabilitiesRecord).length > 0 && !Object.hasOwn(capabilitiesRecord, "interactiveReplies")) return {
|
|
54
|
-
entry: params.entry,
|
|
55
|
-
changed: false
|
|
56
|
-
};
|
|
57
|
-
removedEmptyObject = Object.keys(capabilitiesRecord).length === 0;
|
|
58
|
-
const { interactiveReplies: _retired, ...rest } = capabilitiesRecord;
|
|
59
|
-
nextCapabilities = rest;
|
|
60
|
-
}
|
|
61
|
-
const entry = { ...params.entry };
|
|
62
|
-
if (Array.isArray(nextCapabilities) ? nextCapabilities.length === 0 : Object.keys(nextCapabilities).length === 0) delete entry.capabilities;
|
|
63
|
-
else entry.capabilities = nextCapabilities;
|
|
64
|
-
params.changes.push(removedEmptyObject ? `Removed retired empty ${params.pathPrefix}.capabilities object; use typed presentation actions instead.` : `Removed retired ${params.pathPrefix}.capabilities.interactiveReplies; use typed presentation actions instead.`);
|
|
65
|
-
return {
|
|
66
|
-
entry,
|
|
67
|
-
changed: true
|
|
68
|
-
};
|
|
69
|
-
}
|
|
70
|
-
const legacyConfigRules = [
|
|
71
|
-
...streamingAliasMigration.legacyConfigRules,
|
|
72
|
-
{
|
|
73
|
-
path: [
|
|
74
|
-
"channels",
|
|
75
|
-
"slack",
|
|
76
|
-
"enterpriseOrgInstall"
|
|
77
|
-
],
|
|
78
|
-
message: "channels.slack.enterpriseOrgInstall is retired; Slack now detects org-wide installations automatically. Run \"openclaw doctor --fix\"."
|
|
79
|
-
},
|
|
80
|
-
{
|
|
81
|
-
path: [
|
|
82
|
-
"channels",
|
|
83
|
-
"slack",
|
|
84
|
-
"accounts"
|
|
85
|
-
],
|
|
86
|
-
message: "channels.slack.accounts.<id>.enterpriseOrgInstall is retired; Slack now detects org-wide installations automatically. Run \"openclaw doctor --fix\".",
|
|
87
|
-
match: (value) => hasLegacyAccountStreamingAliases(value, hasEnterpriseOrgInstall)
|
|
88
|
-
},
|
|
89
|
-
{
|
|
90
|
-
path: ["channels", "slack"],
|
|
91
|
-
message: "channels.slack.capabilities.interactiveReplies is retired; use typed presentation actions instead. Run \"openclaw doctor --fix\".",
|
|
92
|
-
match: hasInteractiveRepliesCapability
|
|
93
|
-
},
|
|
94
|
-
{
|
|
95
|
-
path: [
|
|
96
|
-
"channels",
|
|
97
|
-
"slack",
|
|
98
|
-
"accounts"
|
|
99
|
-
],
|
|
100
|
-
message: "channels.slack.accounts.<id>.capabilities.interactiveReplies is retired; use typed presentation actions instead. Run \"openclaw doctor --fix\".",
|
|
101
|
-
match: (value) => hasLegacyAccountStreamingAliases(value, hasInteractiveRepliesCapability)
|
|
102
|
-
},
|
|
103
|
-
{
|
|
104
|
-
path: ["channels", "slack"],
|
|
105
|
-
message: "channels.slack.dm.replyToMode moved to replyToModeByChatType.direct. Run \"openclaw doctor --fix\".",
|
|
106
|
-
match: dmReplyModeMigration.hasLegacy
|
|
107
|
-
},
|
|
108
|
-
{
|
|
109
|
-
path: [
|
|
110
|
-
"channels",
|
|
111
|
-
"slack",
|
|
112
|
-
"accounts"
|
|
113
|
-
],
|
|
114
|
-
message: "channels.slack.accounts.<id>.dm.replyToMode moved to replyToModeByChatType.direct. Run \"openclaw doctor --fix\".",
|
|
115
|
-
match: (value) => hasLegacyAccountStreamingAliases(value, dmReplyModeMigration.hasLegacy)
|
|
116
|
-
},
|
|
117
|
-
{
|
|
118
|
-
path: ["channels", "slack"],
|
|
119
|
-
message: "channels.slack.thread.requireExplicitMention is legacy; use channels.slack.implicitMentions.threadParticipation instead. Run \"openclaw doctor --fix\".",
|
|
120
|
-
match: threadMentionPolicyMigration.hasLegacy
|
|
121
|
-
},
|
|
122
|
-
{
|
|
123
|
-
path: [
|
|
124
|
-
"channels",
|
|
125
|
-
"slack",
|
|
126
|
-
"accounts"
|
|
127
|
-
],
|
|
128
|
-
message: "channels.slack.accounts.<id>.thread.requireExplicitMention is legacy; use channels.slack.accounts.<id>.implicitMentions.threadParticipation instead. Run \"openclaw doctor --fix\".",
|
|
129
|
-
match: (value) => hasLegacyAccountStreamingAliases(value, threadMentionPolicyMigration.hasLegacy)
|
|
130
|
-
},
|
|
131
|
-
{
|
|
132
|
-
path: ["channels", "slack"],
|
|
133
|
-
message: "channels.slack.channels.<id>.allow is legacy; use channels.slack.channels.<id>.enabled instead. Run \"openclaw doctor --fix\".",
|
|
134
|
-
match: channelAllowMigration.hasLegacy
|
|
135
|
-
},
|
|
136
|
-
{
|
|
137
|
-
path: [
|
|
138
|
-
"channels",
|
|
139
|
-
"slack",
|
|
140
|
-
"accounts"
|
|
141
|
-
],
|
|
142
|
-
message: "channels.slack.accounts.<id>.channels.<id>.allow is legacy; use channels.slack.accounts.<id>.channels.<id>.enabled instead. Run \"openclaw doctor --fix\".",
|
|
143
|
-
match: (value) => hasLegacyAccountStreamingAliases(value, channelAllowMigration.hasLegacy)
|
|
144
|
-
}
|
|
145
|
-
];
|
|
146
|
-
function normalizeSlackEntry(params) {
|
|
147
|
-
const retiredInteractiveReplies = removeInteractiveRepliesCapability(params);
|
|
148
|
-
const dm = dmReplyModeMigration.normalize({
|
|
149
|
-
...params,
|
|
150
|
-
entry: retiredInteractiveReplies.entry
|
|
151
|
-
});
|
|
152
|
-
const thread = threadMentionPolicyMigration.normalize({
|
|
153
|
-
...params,
|
|
154
|
-
entry: dm.entry
|
|
155
|
-
});
|
|
156
|
-
const channels = channelAllowMigration.normalize({
|
|
157
|
-
...params,
|
|
158
|
-
entry: thread.entry
|
|
159
|
-
});
|
|
160
|
-
return {
|
|
161
|
-
entry: channels.entry,
|
|
162
|
-
changed: retiredInteractiveReplies.changed || dm.changed || thread.changed || channels.changed
|
|
163
|
-
};
|
|
164
|
-
}
|
|
165
|
-
function normalizeCompatibilityConfig({ cfg }) {
|
|
166
|
-
const changes = [];
|
|
167
|
-
const retired = stripRetiredChannelKeys({
|
|
168
|
-
cfg,
|
|
169
|
-
channelId: "slack",
|
|
170
|
-
keys: /* @__PURE__ */ new Set(["enterpriseOrgInstall"]),
|
|
171
|
-
scope: "root-and-accounts",
|
|
172
|
-
onRemove: ({ key, pathPrefix }) => changes.push(`Removed retired ${pathPrefix}.${key}; Slack detects org-wide installations automatically.`)
|
|
173
|
-
});
|
|
174
|
-
const aliases = streamingAliasMigration.normalizeChannelConfig({
|
|
175
|
-
cfg: retired.config,
|
|
176
|
-
changes
|
|
177
|
-
});
|
|
178
|
-
return normalizeChannelConfigEntries({
|
|
179
|
-
cfg: aliases.config,
|
|
180
|
-
channelId: "slack",
|
|
181
|
-
changes,
|
|
182
|
-
normalizeEntry: normalizeSlackEntry
|
|
183
|
-
});
|
|
184
|
-
}
|
|
185
|
-
//#endregion
|
|
186
|
-
export { normalizeCompatibilityConfig as n, legacyConfigRules as t };
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
import { t as __exportAll } from "./rolldown-runtime-D7D4PA-g.mjs";
|
|
2
|
-
import { P as buildSlackSlashCommandMatcher, t as monitorSlackProvider } from "./provider-C-jPaGt2.mjs";
|
|
3
|
-
import { t as isSlackChannelAllowedByPolicy } from "./policy-BApW53pI.mjs";
|
|
4
|
-
import { a as resolveSlackThreadTs } from "./replies-BBAJxUOQ.mjs";
|
|
5
|
-
//#region extensions/slack/src/monitor.ts
|
|
6
|
-
var monitor_exports = /* @__PURE__ */ __exportAll({
|
|
7
|
-
buildSlackSlashCommandMatcher: () => buildSlackSlashCommandMatcher,
|
|
8
|
-
isSlackChannelAllowedByPolicy: () => isSlackChannelAllowedByPolicy,
|
|
9
|
-
monitorSlackProvider: () => monitorSlackProvider,
|
|
10
|
-
resolveSlackThreadTs: () => resolveSlackThreadTs
|
|
11
|
-
});
|
|
12
|
-
//#endregion
|
|
13
|
-
export { monitor_exports as t };
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
//#region \0rolldown/runtime.js
|
|
2
|
-
var __defProp = Object.defineProperty;
|
|
3
|
-
var __exportAll = (all, no_symbols) => {
|
|
4
|
-
let target = {};
|
|
5
|
-
for (var name in all) __defProp(target, name, {
|
|
6
|
-
get: all[name],
|
|
7
|
-
enumerable: true
|
|
8
|
-
});
|
|
9
|
-
if (!no_symbols) __defProp(target, Symbol.toStringTag, { value: "Module" });
|
|
10
|
-
return target;
|
|
11
|
-
};
|
|
12
|
-
//#endregion
|
|
13
|
-
export { __exportAll as t };
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import { buildCommandTextFromArgs, findCommandByNativeName, listNativeCommandSpecsForConfig, parseCommandArgs, resolveCommandArgMenu } from "openclaw/plugin-sdk/command-auth-native";
|
|
2
|
-
export { buildCommandTextFromArgs, findCommandByNativeName, listNativeCommandSpecsForConfig, parseCommandArgs, resolveCommandArgMenu };
|
|
@@ -1,106 +0,0 @@
|
|
|
1
|
-
'use strict'
|
|
2
|
-
|
|
3
|
-
const { parseHeaders } = require('../core/util')
|
|
4
|
-
const { InvalidArgumentError } = require('../core/errors')
|
|
5
|
-
|
|
6
|
-
const kResume = Symbol('resume')
|
|
7
|
-
|
|
8
|
-
class UnwrapController {
|
|
9
|
-
#paused = false
|
|
10
|
-
#reason = null
|
|
11
|
-
#aborted = false
|
|
12
|
-
#abort
|
|
13
|
-
|
|
14
|
-
[kResume] = null
|
|
15
|
-
|
|
16
|
-
rawHeaders = null
|
|
17
|
-
rawTrailers = null
|
|
18
|
-
|
|
19
|
-
constructor (abort) {
|
|
20
|
-
this.#abort = abort
|
|
21
|
-
}
|
|
22
|
-
|
|
23
|
-
pause () {
|
|
24
|
-
this.#paused = true
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
resume () {
|
|
28
|
-
if (this.#paused) {
|
|
29
|
-
this.#paused = false
|
|
30
|
-
this[kResume]?.()
|
|
31
|
-
}
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
abort (reason) {
|
|
35
|
-
if (!this.#aborted) {
|
|
36
|
-
this.#aborted = true
|
|
37
|
-
this.#reason = reason
|
|
38
|
-
this.#abort(reason)
|
|
39
|
-
}
|
|
40
|
-
}
|
|
41
|
-
|
|
42
|
-
get aborted () {
|
|
43
|
-
return this.#aborted
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
get reason () {
|
|
47
|
-
return this.#reason
|
|
48
|
-
}
|
|
49
|
-
|
|
50
|
-
get paused () {
|
|
51
|
-
return this.#paused
|
|
52
|
-
}
|
|
53
|
-
}
|
|
54
|
-
|
|
55
|
-
module.exports = class UnwrapHandler {
|
|
56
|
-
#handler
|
|
57
|
-
#controller
|
|
58
|
-
|
|
59
|
-
constructor (handler) {
|
|
60
|
-
this.#handler = handler
|
|
61
|
-
}
|
|
62
|
-
|
|
63
|
-
static unwrap (handler) {
|
|
64
|
-
// TODO (fix): More checks...
|
|
65
|
-
return !handler.onRequestStart ? handler : new UnwrapHandler(handler)
|
|
66
|
-
}
|
|
67
|
-
|
|
68
|
-
onConnect (abort, context) {
|
|
69
|
-
this.#controller = new UnwrapController(abort)
|
|
70
|
-
this.#handler.onRequestStart?.(this.#controller, context)
|
|
71
|
-
}
|
|
72
|
-
|
|
73
|
-
onResponseStarted () {
|
|
74
|
-
return this.#handler.onResponseStarted?.()
|
|
75
|
-
}
|
|
76
|
-
|
|
77
|
-
onUpgrade (statusCode, rawHeaders, socket) {
|
|
78
|
-
this.#controller.rawHeaders = rawHeaders
|
|
79
|
-
this.#handler.onRequestUpgrade?.(this.#controller, statusCode, parseHeaders(rawHeaders), socket)
|
|
80
|
-
}
|
|
81
|
-
|
|
82
|
-
onHeaders (statusCode, rawHeaders, resume, statusMessage) {
|
|
83
|
-
this.#controller[kResume] = resume
|
|
84
|
-
this.#controller.rawHeaders = rawHeaders
|
|
85
|
-
this.#handler.onResponseStart?.(this.#controller, statusCode, parseHeaders(rawHeaders), statusMessage)
|
|
86
|
-
return !this.#controller.paused
|
|
87
|
-
}
|
|
88
|
-
|
|
89
|
-
onData (data) {
|
|
90
|
-
this.#handler.onResponseData?.(this.#controller, data)
|
|
91
|
-
return !this.#controller.paused
|
|
92
|
-
}
|
|
93
|
-
|
|
94
|
-
onComplete (rawTrailers) {
|
|
95
|
-
this.#controller.rawTrailers = rawTrailers
|
|
96
|
-
this.#handler.onResponseEnd?.(this.#controller, parseHeaders(rawTrailers))
|
|
97
|
-
}
|
|
98
|
-
|
|
99
|
-
onError (err) {
|
|
100
|
-
if (!this.#handler.onResponseError) {
|
|
101
|
-
throw new InvalidArgumentError('invalid onError method')
|
|
102
|
-
}
|
|
103
|
-
|
|
104
|
-
this.#handler.onResponseError?.(this.#controller, err)
|
|
105
|
-
}
|
|
106
|
-
}
|
|
@@ -1,105 +0,0 @@
|
|
|
1
|
-
'use strict'
|
|
2
|
-
|
|
3
|
-
const { InvalidArgumentError } = require('../core/errors')
|
|
4
|
-
|
|
5
|
-
module.exports = class WrapHandler {
|
|
6
|
-
#handler
|
|
7
|
-
|
|
8
|
-
constructor (handler) {
|
|
9
|
-
this.#handler = handler
|
|
10
|
-
}
|
|
11
|
-
|
|
12
|
-
static wrap (handler) {
|
|
13
|
-
// TODO (fix): More checks...
|
|
14
|
-
return handler.onRequestStart ? handler : new WrapHandler(handler)
|
|
15
|
-
}
|
|
16
|
-
|
|
17
|
-
// Unwrap Interface
|
|
18
|
-
|
|
19
|
-
onConnect (abort, context) {
|
|
20
|
-
return this.#handler.onConnect?.(abort, context)
|
|
21
|
-
}
|
|
22
|
-
|
|
23
|
-
onResponseStarted () {
|
|
24
|
-
return this.#handler.onResponseStarted?.()
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
onHeaders (statusCode, rawHeaders, resume, statusMessage) {
|
|
28
|
-
return this.#handler.onHeaders?.(statusCode, rawHeaders, resume, statusMessage)
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
onUpgrade (statusCode, rawHeaders, socket) {
|
|
32
|
-
return this.#handler.onUpgrade?.(statusCode, rawHeaders, socket)
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
onData (data) {
|
|
36
|
-
return this.#handler.onData?.(data)
|
|
37
|
-
}
|
|
38
|
-
|
|
39
|
-
onComplete (trailers) {
|
|
40
|
-
return this.#handler.onComplete?.(trailers)
|
|
41
|
-
}
|
|
42
|
-
|
|
43
|
-
onError (err) {
|
|
44
|
-
if (!this.#handler.onError) {
|
|
45
|
-
throw err
|
|
46
|
-
}
|
|
47
|
-
|
|
48
|
-
return this.#handler.onError?.(err)
|
|
49
|
-
}
|
|
50
|
-
|
|
51
|
-
// Wrap Interface
|
|
52
|
-
|
|
53
|
-
onRequestStart (controller, context) {
|
|
54
|
-
this.#handler.onConnect?.((reason) => controller.abort(reason), context)
|
|
55
|
-
}
|
|
56
|
-
|
|
57
|
-
onRequestUpgrade (controller, statusCode, headers, socket) {
|
|
58
|
-
const rawHeaders = []
|
|
59
|
-
for (const [key, val] of Object.entries(headers)) {
|
|
60
|
-
rawHeaders.push(Buffer.from(key, 'latin1'), toRawHeaderValue(val))
|
|
61
|
-
}
|
|
62
|
-
|
|
63
|
-
this.#handler.onUpgrade?.(statusCode, rawHeaders, socket)
|
|
64
|
-
}
|
|
65
|
-
|
|
66
|
-
onResponseStart (controller, statusCode, headers, statusMessage) {
|
|
67
|
-
const rawHeaders = []
|
|
68
|
-
for (const [key, val] of Object.entries(headers)) {
|
|
69
|
-
rawHeaders.push(Buffer.from(key, 'latin1'), toRawHeaderValue(val))
|
|
70
|
-
}
|
|
71
|
-
|
|
72
|
-
if (this.#handler.onHeaders?.(statusCode, rawHeaders, () => controller.resume(), statusMessage) === false) {
|
|
73
|
-
controller.pause()
|
|
74
|
-
}
|
|
75
|
-
}
|
|
76
|
-
|
|
77
|
-
onResponseData (controller, data) {
|
|
78
|
-
if (this.#handler.onData?.(data) === false) {
|
|
79
|
-
controller.pause()
|
|
80
|
-
}
|
|
81
|
-
}
|
|
82
|
-
|
|
83
|
-
onResponseEnd (controller, trailers) {
|
|
84
|
-
const rawTrailers = []
|
|
85
|
-
for (const [key, val] of Object.entries(trailers)) {
|
|
86
|
-
rawTrailers.push(Buffer.from(key, 'latin1'), toRawHeaderValue(val))
|
|
87
|
-
}
|
|
88
|
-
|
|
89
|
-
this.#handler.onComplete?.(rawTrailers)
|
|
90
|
-
}
|
|
91
|
-
|
|
92
|
-
onResponseError (controller, err) {
|
|
93
|
-
if (!this.#handler.onError) {
|
|
94
|
-
throw new InvalidArgumentError('invalid onError method')
|
|
95
|
-
}
|
|
96
|
-
|
|
97
|
-
this.#handler.onError?.(err)
|
|
98
|
-
}
|
|
99
|
-
}
|
|
100
|
-
|
|
101
|
-
function toRawHeaderValue (value) {
|
|
102
|
-
return Array.isArray(value)
|
|
103
|
-
? value.map((item) => Buffer.from(item, 'latin1'))
|
|
104
|
-
: Buffer.from(value, 'latin1')
|
|
105
|
-
}
|
|
File without changes
|
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
'use strict'
|
|
2
|
-
|
|
3
|
-
/**
|
|
4
|
-
* @template {*} T
|
|
5
|
-
* @typedef {Object} DeferredPromise
|
|
6
|
-
* @property {Promise<T>} promise
|
|
7
|
-
* @property {(value?: T) => void} resolve
|
|
8
|
-
* @property {(reason?: any) => void} reject
|
|
9
|
-
*/
|
|
10
|
-
|
|
11
|
-
/**
|
|
12
|
-
* @template {*} T
|
|
13
|
-
* @returns {DeferredPromise<T>} An object containing a promise and its resolve/reject methods.
|
|
14
|
-
*/
|
|
15
|
-
function createDeferredPromise () {
|
|
16
|
-
let res
|
|
17
|
-
let rej
|
|
18
|
-
const promise = new Promise((resolve, reject) => {
|
|
19
|
-
res = resolve
|
|
20
|
-
rej = reject
|
|
21
|
-
})
|
|
22
|
-
|
|
23
|
-
return { promise, resolve: res, reject: rej }
|
|
24
|
-
}
|
|
25
|
-
|
|
26
|
-
module.exports = {
|
|
27
|
-
createDeferredPromise
|
|
28
|
-
}
|
|
File without changes
|