@openclaw/slack 2026.8.2 → 2026.8.34

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.
Files changed (88) hide show
  1. package/dist/{account-inspect-C3sePHWa.js → .setup/account-inspect-B86OaUEt.mjs} +2 -2
  2. package/dist/{accounts-Dm_H77gH.js → .setup/accounts-C1FspRF-.mjs} +1 -1
  3. package/dist/{accounts.runtime-DRuEK6mL.js → .setup/accounts.runtime-BpWv-6-2.mjs} +1 -1
  4. package/dist/{action-runtime-B0kRJ69h.js → .setup/action-runtime-Ddpb2CZS.mjs} +8 -8
  5. package/dist/.setup/action-runtime.runtime-Beq7Am11.mjs +2 -0
  6. package/dist/{actions-BOxiu2Vy.js → .setup/actions-DV3J6OB-.mjs} +6 -6
  7. package/dist/{approval-handler.runtime-l5_2JLqi.js → .setup/approval-handler.runtime-rEYfeaG_.mjs} +14 -9
  8. package/dist/{channel-BguxhhNG.js → .setup/channel-Bpv8aTo8.mjs} +31 -27
  9. package/dist/{channel-type-ChkODKBW.js → .setup/channel-type-CrwjkeJT.mjs} +4 -4
  10. package/dist/{channel.setup-BJohRJha.js → .setup/channel.setup-CTV8N2nI.mjs} +5 -5
  11. package/dist/{conversation-binding-route-Vee8Dgbf.js → .setup/conversation-binding-route-shed4O6L.mjs} +2 -2
  12. package/dist/{directory-config-Bmw4ykSy.js → .setup/directory-config-CW4ICy0y.mjs} +4 -4
  13. package/dist/{directory-live-BOILcXPo.js → .setup/directory-live-C2hI1rq1.mjs} +4 -4
  14. package/dist/{doctor-contract-BNjw9bxb.js → .setup/doctor-contract-CtMUqjvk.mjs} +1 -1
  15. package/dist/{group-policy-BYH74y50.js → .setup/group-policy-5epvX6Dt.mjs} +6 -6
  16. package/dist/{message-tool-api-BsZbsulu.js → .setup/message-tool-api-CBtuGn2d.mjs} +3 -3
  17. package/dist/{monitor-B72wWXWg.js → .setup/monitor-BnckzNnh.mjs} +4 -4
  18. package/dist/{outbound-adapter-CPgYQ-BM.js → .setup/outbound-adapter-Ic_fTJof.mjs} +6 -6
  19. package/dist/{pipeline.runtime-CcdujV99.js → .setup/pipeline.runtime-D4MRWgXI.mjs} +12 -12
  20. package/dist/{plugin-routes-CLp4obpN.js → .setup/plugin-routes-B8tooDLj.mjs} +1 -1
  21. package/dist/{policy-CUpBeOt9.js → .setup/policy-BxGXCr2q.mjs} +2 -2
  22. package/dist/{probe-gj5yQgN2.js → .setup/probe-DnWN6oBa.mjs} +3 -3
  23. package/dist/{provider-DW9YC_no.js → .setup/provider-DGNYrXQN.mjs} +17 -17
  24. package/dist/{registry-bbjH7IHX.js → .setup/registry-CIbMfuf8.mjs} +6 -2
  25. package/dist/{relay-source-BLMdBrAw.js → .setup/relay-source-BgJo9sZ_.mjs} +1 -1
  26. package/dist/{replies-DLjQ8RYU.js → .setup/replies-BRmyMlAE.mjs} +3 -3
  27. package/dist/{resolve-channels-Bv6IiGZ4.js → .setup/resolve-channels-Dpv7OyKO.mjs} +4 -4
  28. package/dist/{resolve-users-BXw2pA7y.js → .setup/resolve-users-DmyA3D_2.mjs} +4 -4
  29. package/dist/.setup/runtime-setter-api-CMFvhrAr.mjs +3 -0
  30. package/dist/{scopes-B9HRguDe.js → .setup/scopes-Dcgl9Nme.mjs} +1 -1
  31. package/dist/.setup/secret-contract-api-D9UfYujm.mjs +3 -0
  32. package/dist/{security-audit-B_yKr7MW.js → .setup/security-audit-tCbGyCfU.mjs} +1 -1
  33. package/dist/{send-GUz4_v2E.js → .setup/send-DN8vdkyi.mjs} +6 -6
  34. package/dist/{send.runtime-rScD-UJi.js → .setup/send.runtime-CtIhzzZU.mjs} +1 -1
  35. package/dist/.setup/setup-plugin-api-B1Y-kMp_.mjs +3 -0
  36. package/dist/{setup-surface-Cc3P-z35.js → .setup/setup-surface-BcIT0kDT.mjs} +6 -6
  37. package/dist/{shared-CQGVZ_8a.js → .setup/shared-DWQcLrb8.mjs} +9 -9
  38. package/dist/{slash-dispatch.runtime-C2015r6s.js → .setup/slash-dispatch.runtime-CZZBmmE3.mjs} +1 -1
  39. package/dist/{targets-7FexXJ62.js → .setup/targets-BlQcnjPc.mjs} +1 -1
  40. package/dist/account-inspect-api.js +1 -1
  41. package/dist/api.js +17 -17
  42. package/dist/channel-config-api.js +1 -1
  43. package/dist/channel-plugin-api.js +1 -1
  44. package/dist/configured-state.js +1 -1
  45. package/dist/directory-contract-api.js +1 -1
  46. package/dist/doctor-contract-api.js +1 -1
  47. package/dist/http-routes-api.js +1 -1
  48. package/dist/index.js +1 -1
  49. package/dist/message-tool-api.js +1 -1
  50. package/dist/runtime-api.js +13 -13
  51. package/dist/runtime-setter-api.js +1 -1
  52. package/dist/secret-contract-api.js +1 -1
  53. package/dist/security-contract-api.js +1 -1
  54. package/dist/setup-entry.js +4 -3
  55. package/dist/setup-plugin-api.js +1 -1
  56. package/node_modules/@slack/bolt/node_modules/proxy-addr/HISTORY.md +60 -54
  57. package/node_modules/@slack/bolt/node_modules/proxy-addr/README.md +1 -1
  58. package/node_modules/@slack/bolt/node_modules/proxy-addr/index.js +32 -0
  59. package/node_modules/@slack/bolt/node_modules/proxy-addr/package.json +8 -4
  60. package/node_modules/undici/lib/dispatcher/balanced-pool.js +4 -2
  61. package/node_modules/undici/lib/dispatcher/client-h1.js +12 -4
  62. package/node_modules/undici/lib/dispatcher/client-h2.js +70 -14
  63. package/node_modules/undici/lib/dispatcher/client.js +6 -2
  64. package/node_modules/undici/lib/handler/cache-handler.js +21 -5
  65. package/node_modules/undici/lib/handler/retry-handler.js +42 -7
  66. package/node_modules/undici/lib/interceptor/cache.js +20 -1
  67. package/node_modules/undici/lib/interceptor/decompress.js +146 -14
  68. package/node_modules/undici/lib/interceptor/dump.js +10 -23
  69. package/node_modules/undici/lib/web/eventsource/eventsource-stream.js +245 -150
  70. package/node_modules/undici/lib/web/websocket/connection.js +1 -1
  71. package/node_modules/undici/lib/web/websocket/permessage-deflate.js +5 -0
  72. package/node_modules/undici/lib/web/websocket/stream/websocketstream.js +8 -10
  73. package/node_modules/undici/package.json +1 -1
  74. package/node_modules/undici/types/interceptors.d.ts +2 -0
  75. package/package.json +5 -5
  76. package/dist/action-runtime.runtime-IuA14rev.js +0 -2
  77. /package/dist/{account-configured-sUohAxZr.js → .setup/account-configured-sUohAxZr.mjs} +0 -0
  78. /package/dist/{config-schema-B9GwoRlE.js → .setup/config-schema-B9GwoRlE.mjs} +0 -0
  79. /package/dist/{cursor-pages-eX7p8Wwt.js → .setup/cursor-pages-eX7p8Wwt.mjs} +0 -0
  80. /package/dist/{rolldown-runtime-8H4AJuhK.js → .setup/rolldown-runtime-8H4AJuhK.mjs} +0 -0
  81. /package/dist/{runtime-JSVZSWAj.js → .setup/runtime-JSVZSWAj.mjs} +0 -0
  82. /package/dist/{secret-contract-DxmvbxBF.js → .setup/secret-contract-DxmvbxBF.mjs} +0 -0
  83. /package/dist/{send-results-eeOu_HYm.js → .setup/send-results-eeOu_HYm.mjs} +0 -0
  84. /package/dist/{slash-commands.runtime-BTTMlmwy.js → .setup/slash-commands.runtime-BTTMlmwy.mjs} +0 -0
  85. /package/dist/{slash-skill-commands.runtime-CD1J2ODY.js → .setup/slash-skill-commands.runtime-CD1J2ODY.mjs} +0 -0
  86. /package/dist/{streaming-compat-B-e0mqM0.js → .setup/streaming-compat-B-e0mqM0.mjs} +0 -0
  87. /package/dist/{target-parsing-PbxGDbr9.js → .setup/target-parsing-PbxGDbr9.mjs} +0 -0
  88. /package/dist/{thread-ts-DUGhaYKq.js → .setup/thread-ts-DUGhaYKq.mjs} +0 -0
@@ -1,7 +1,7 @@
1
- import { t as __exportAll } from "./rolldown-runtime-8H4AJuhK.js";
2
- import { a as parseSlackTarget, n as formatSlackTarget } from "./target-parsing-PbxGDbr9.js";
3
- import { s as createSlackLookupClient } from "./probe-gj5yQgN2.js";
4
- import { t as collectSlackCursorPages } from "./cursor-pages-eX7p8Wwt.js";
1
+ import { t as __exportAll } from "./rolldown-runtime-8H4AJuhK.mjs";
2
+ import { a as parseSlackTarget, n as formatSlackTarget } from "./target-parsing-PbxGDbr9.mjs";
3
+ import { s as createSlackLookupClient } from "./probe-DnWN6oBa.mjs";
4
+ import { t as collectSlackCursorPages } from "./cursor-pages-eX7p8Wwt.mjs";
5
5
  import { normalizeLowercaseStringOrEmpty } from "openclaw/plugin-sdk/string-coerce-runtime";
6
6
  import { resolveDirectoryAllowlistEntries } from "openclaw/plugin-sdk/directory-runtime";
7
7
  //#region extensions/slack/src/resolve-channels.ts
@@ -1,7 +1,7 @@
1
- import { t as __exportAll } from "./rolldown-runtime-8H4AJuhK.js";
2
- import { a as parseSlackTarget, n as formatSlackTarget } from "./target-parsing-PbxGDbr9.js";
3
- import { s as createSlackLookupClient } from "./probe-gj5yQgN2.js";
4
- import { t as collectSlackCursorPages } from "./cursor-pages-eX7p8Wwt.js";
1
+ import { t as __exportAll } from "./rolldown-runtime-8H4AJuhK.mjs";
2
+ import { a as parseSlackTarget, n as formatSlackTarget } from "./target-parsing-PbxGDbr9.mjs";
3
+ import { s as createSlackLookupClient } from "./probe-DnWN6oBa.mjs";
4
+ import { t as collectSlackCursorPages } from "./cursor-pages-eX7p8Wwt.mjs";
5
5
  import { normalizeLowercaseStringOrEmpty, normalizeOptionalString } from "openclaw/plugin-sdk/string-coerce-runtime";
6
6
  import { resolveDirectoryAllowlistEntries } from "openclaw/plugin-sdk/directory-runtime";
7
7
  //#region extensions/slack/src/resolve-users.ts
@@ -0,0 +1,3 @@
1
+ import { r as setSlackRuntime } from "./runtime-JSVZSWAj.mjs";
2
+ import "../runtime-setter-api.js";
3
+ export { setSlackRuntime };
@@ -1,4 +1,4 @@
1
- import { c as createSlackReadClient, o as formatSlackError } from "./probe-gj5yQgN2.js";
1
+ import { c as createSlackReadClient, o as formatSlackError } from "./probe-DnWN6oBa.mjs";
2
2
  import { isRecord, normalizeOptionalString, normalizeStringEntries, sortUniqueStrings } from "openclaw/plugin-sdk/string-coerce-runtime";
3
3
  //#region extensions/slack/src/scopes.ts
4
4
  function collectScopes(value, into) {
@@ -0,0 +1,3 @@
1
+ import { n as collectRuntimeConfigAssignments, r as secretTargetRegistryEntries, t as channelSecrets } from "./secret-contract-DxmvbxBF.mjs";
2
+ import "../secret-contract-api.js";
3
+ export { channelSecrets, collectRuntimeConfigAssignments, secretTargetRegistryEntries };
@@ -1,4 +1,4 @@
1
- import { t as __exportAll } from "./rolldown-runtime-8H4AJuhK.js";
1
+ import { t as __exportAll } from "./rolldown-runtime-8H4AJuhK.mjs";
2
2
  import { readChannelAllowFromStore } from "openclaw/plugin-sdk/conversation-runtime";
3
3
  import { coerceNativeSetting, normalizeAllowFromList } from "openclaw/plugin-sdk/channel-policy";
4
4
  import { resolveNativeCommandsEnabled, resolveNativeSkillsEnabled } from "openclaw/plugin-sdk/native-command-config-runtime";
@@ -1,9 +1,9 @@
1
- import { a as resolveSlackAccount, l as resolveSlackOperationToken } from "./accounts-Dm_H77gH.js";
2
- import { a as parseSlackTarget, t as canonicalizeSlackApiTargetId } from "./target-parsing-PbxGDbr9.js";
3
- import { A as SLACK_MESSAGE_TEXT_HARD_LIMIT, D as renderSlackBlockFallbackText, E as buildSlackCompleteBlocksFallbackText, L as truncateSlackText, M as SLACK_TEXT_LIMIT, R as truncateSlackTextByUtf8Bytes, X as chunkSlackMrkdwnText, Z as markdownToSlackMrkdwnChunks, _ as appendSlackNativeDataPlainTextFallback, b as hasSlackNativeDataBlock, c as assertSlackDetachedTargetAllowed, j as SLACK_MESSAGE_TEXT_RECOMMENDED_LIMIT, k as SLACK_EDIT_TEXT_MAX_BYTES, q as resolveSlackQuestionActionIds, st as validateSlackBlocksArray, v as buildSlackNativeDataAccessibilityText, w as stripSlackNativeDataBlocks, x as isSlackInvalidBlocksError, y as createSlackNativeDataBaseTextConsumer, z as SLACK_QUESTION_FINALIZATION_BLOCKS } from "./group-policy-BYH74y50.js";
4
- import { c as createSlackReadClient, m as getSlackWriteClient, o as formatSlackError, u as createSlackTokenCacheKey } from "./probe-gj5yQgN2.js";
5
- import { n as resolveSlackThreadTsValue, t as normalizeSlackThreadTsCandidate } from "./thread-ts-DUGhaYKq.js";
6
- import { t as getOptionalSlackRuntime } from "./runtime-JSVZSWAj.js";
1
+ import { a as resolveSlackAccount, l as resolveSlackOperationToken } from "./accounts-C1FspRF-.mjs";
2
+ import { a as parseSlackTarget, t as canonicalizeSlackApiTargetId } from "./target-parsing-PbxGDbr9.mjs";
3
+ import { A as SLACK_MESSAGE_TEXT_HARD_LIMIT, D as renderSlackBlockFallbackText, E as buildSlackCompleteBlocksFallbackText, L as truncateSlackText, M as SLACK_TEXT_LIMIT, R as truncateSlackTextByUtf8Bytes, X as chunkSlackMrkdwnText, Z as markdownToSlackMrkdwnChunks, _ as appendSlackNativeDataPlainTextFallback, b as hasSlackNativeDataBlock, c as assertSlackDetachedTargetAllowed, j as SLACK_MESSAGE_TEXT_RECOMMENDED_LIMIT, k as SLACK_EDIT_TEXT_MAX_BYTES, q as resolveSlackQuestionActionIds, st as validateSlackBlocksArray, v as buildSlackNativeDataAccessibilityText, w as stripSlackNativeDataBlocks, x as isSlackInvalidBlocksError, y as createSlackNativeDataBaseTextConsumer, z as SLACK_QUESTION_FINALIZATION_BLOCKS } from "./group-policy-5epvX6Dt.mjs";
4
+ import { c as createSlackReadClient, m as getSlackWriteClient, o as formatSlackError, u as createSlackTokenCacheKey } from "./probe-DnWN6oBa.mjs";
5
+ import { n as resolveSlackThreadTsValue, t as normalizeSlackThreadTsCandidate } from "./thread-ts-DUGhaYKq.mjs";
6
+ import { t as getOptionalSlackRuntime } from "./runtime-JSVZSWAj.mjs";
7
7
  import { isRecord, normalizeLowercaseStringOrEmpty, normalizeOptionalString, normalizeTrimmedStringList } from "openclaw/plugin-sdk/string-coerce-runtime";
8
8
  import { createMessageReceiptFromOutboundResults } from "openclaw/plugin-sdk/channel-outbound";
9
9
  import { logVerbose, sleepWithAbort } from "openclaw/plugin-sdk/runtime-env";
@@ -1,2 +1,2 @@
1
- import { a as updateMessageSlack, n as resolveSlackDmChannelId, r as sendMessageSlack, t as reconcileSlackUnknownSend } from "./send-GUz4_v2E.js";
1
+ import { a as updateMessageSlack, n as resolveSlackDmChannelId, r as sendMessageSlack, t as reconcileSlackUnknownSend } from "./send-DN8vdkyi.mjs";
2
2
  export { reconcileSlackUnknownSend, resolveSlackDmChannelId, sendMessageSlack, updateMessageSlack };
@@ -0,0 +1,3 @@
1
+ import { t as slackSetupPlugin } from "./channel.setup-CTV8N2nI.mjs";
2
+ import "../setup-plugin-api.js";
3
+ export { slackSetupPlugin };
@@ -1,9 +1,9 @@
1
- import { i as resolveDefaultSlackAccountId, o as resolveSlackAccountAllowFrom } from "./accounts-Dm_H77gH.js";
2
- import { t as inspectSlackAccount } from "./account-inspect-C3sePHWa.js";
3
- import "./shared-CQGVZ_8a.js";
4
- import { o as SLACK_CHANNEL, r as createSlackSetupWizardBase } from "./channel.setup-BJohRJha.js";
5
- import { t as resolveSlackChannelAllowlist } from "./resolve-channels-Bv6IiGZ4.js";
6
- import { t as resolveSlackUserAllowlist } from "./resolve-users-BXw2pA7y.js";
1
+ import { i as resolveDefaultSlackAccountId, o as resolveSlackAccountAllowFrom } from "./accounts-C1FspRF-.mjs";
2
+ import { t as inspectSlackAccount } from "./account-inspect-B86OaUEt.mjs";
3
+ import "./shared-DWQcLrb8.mjs";
4
+ import { o as SLACK_CHANNEL, r as createSlackSetupWizardBase } from "./channel.setup-CTV8N2nI.mjs";
5
+ import { t as resolveSlackChannelAllowlist } from "./resolve-channels-Dpv7OyKO.mjs";
6
+ import { t as resolveSlackUserAllowlist } from "./resolve-users-DmyA3D_2.mjs";
7
7
  import { normalizeStringEntries } from "openclaw/plugin-sdk/string-coerce-runtime";
8
8
  import { resolveBasicAllowFromEntries } from "openclaw/plugin-sdk/allow-from";
9
9
  import { createSetupTranslator, noteChannelLookupFailure, noteChannelLookupSummary, parseMentionOrPrefixedId, patchChannelConfigForAccount, promptResolvedAllowFrom, resolveEntriesWithOptionalToken, resolveSetupAccountId, splitSetupEntries } from "openclaw/plugin-sdk/setup-runtime";
@@ -1,11 +1,11 @@
1
- import { n as isSlackPluginAccountConfigured } from "./account-configured-sUohAxZr.js";
2
- import { n as listSlackAccountIds, o as resolveSlackAccountAllowFrom, r as mergeSlackAccountConfig, s as resolveSlackAccountDmPolicy } from "./accounts-Dm_H77gH.js";
3
- import { t as inspectSlackAccount } from "./account-inspect-C3sePHWa.js";
4
- import { a as parseSlackTarget } from "./target-parsing-PbxGDbr9.js";
5
- import { a as slackIngressIdentity, t as probeSlack } from "./probe-gj5yQgN2.js";
6
- import { n as slackBaseConfigAdapter, t as slackSetupPlugin } from "./channel.setup-BJohRJha.js";
7
- import { n as normalizeCompatibilityConfig, t as legacyConfigRules } from "./doctor-contract-BNjw9bxb.js";
8
- import { n as collectRuntimeConfigAssignments, r as secretTargetRegistryEntries } from "./secret-contract-DxmvbxBF.js";
1
+ import { n as isSlackPluginAccountConfigured } from "./account-configured-sUohAxZr.mjs";
2
+ import { n as listSlackAccountIds, o as resolveSlackAccountAllowFrom, r as mergeSlackAccountConfig, s as resolveSlackAccountDmPolicy } from "./accounts-C1FspRF-.mjs";
3
+ import { t as inspectSlackAccount } from "./account-inspect-B86OaUEt.mjs";
4
+ import { a as parseSlackTarget } from "./target-parsing-PbxGDbr9.mjs";
5
+ import { a as slackIngressIdentity, t as probeSlack } from "./probe-DnWN6oBa.mjs";
6
+ import { n as slackBaseConfigAdapter, t as slackSetupPlugin } from "./channel.setup-CTV8N2nI.mjs";
7
+ import { n as normalizeCompatibilityConfig, t as legacyConfigRules } from "./doctor-contract-CtMUqjvk.mjs";
8
+ import { n as collectRuntimeConfigAssignments, r as secretTargetRegistryEntries } from "./secret-contract-DxmvbxBF.mjs";
9
9
  import { DEFAULT_ACCOUNT_ID as DEFAULT_ACCOUNT_ID$1 } from "openclaw/plugin-sdk/account-id";
10
10
  import { adaptScopedAccountAccessor, createScopedDmSecurityResolver } from "openclaw/plugin-sdk/channel-config-helpers";
11
11
  import { createLazyRuntimeModule } from "openclaw/plugin-sdk/lazy-runtime";
@@ -71,7 +71,7 @@ const collectSlackSecurityFindings = createConditionalWarningCollector.findings(
71
71
  severity: "critical",
72
72
  title: "Slack security warning"
73
73
  });
74
- const loadSlackSecurityAuditModule = createLazyRuntimeModule(() => import("./security-audit-B_yKr7MW.js").then((n) => n.n));
74
+ const loadSlackSecurityAuditModule = createLazyRuntimeModule(() => import("./security-audit-tCbGyCfU.mjs").then((n) => n.n));
75
75
  const slackSecurityAdapter = {
76
76
  resolveDmPolicy: resolveSlackDmPolicy,
77
77
  collectWarnings: collectSlackSecurityFindings,
@@ -1,4 +1,4 @@
1
- import { r as deliverSlackSlashReplies$1, s as sanitizeSlackMonitorReplyPayload } from "./replies-DLjQ8RYU.js";
1
+ import { r as deliverSlackSlashReplies$1, s as sanitizeSlackMonitorReplyPayload } from "./replies-BRmyMlAE.mjs";
2
2
  import { resolveAgentRoute as resolveAgentRoute$1 } from "openclaw/plugin-sdk/routing";
3
3
  import { resolveMarkdownTableMode as resolveMarkdownTableMode$1 } from "openclaw/plugin-sdk/markdown-table-runtime";
4
4
  import { resolveConversationLabel as resolveConversationLabel$1 } from "openclaw/plugin-sdk/conversation-runtime";
@@ -1,4 +1,4 @@
1
- import { a as parseSlackTarget, s as slackTargetsMatch } from "./target-parsing-PbxGDbr9.js";
1
+ import { a as parseSlackTarget, s as slackTargetsMatch } from "./target-parsing-PbxGDbr9.mjs";
2
2
  //#region extensions/slack/src/targets.ts
3
3
  function matchesResolvedUserTarget(target, currentMessagingTarget) {
4
4
  const resolvedId = target.trim();
@@ -1,4 +1,4 @@
1
- import { t as inspectSlackAccount } from "./account-inspect-C3sePHWa.js";
1
+ import { t as inspectSlackAccount } from "./.setup/account-inspect-B86OaUEt.mjs";
2
2
  //#region extensions/slack/account-inspect-api.ts
3
3
  function inspectSlackReadOnlyAccount(cfg, accountId) {
4
4
  return inspectSlackAccount({
package/dist/api.js CHANGED
@@ -1,18 +1,18 @@
1
- import { n as registerSlackHttpHandler, r as normalizeSlackWebhookPath, t as handleSlackHttpRequest } from "./registry-bbjH7IHX.js";
2
- import { a as resolveSlackAccount, i as resolveDefaultSlackAccountId, n as listSlackAccountIds, r as mergeSlackAccountConfig, t as listEnabledSlackAccounts } from "./accounts-Dm_H77gH.js";
3
- import { r as resolveSlackReplyToMode } from "./conversation-binding-route-Vee8Dgbf.js";
4
- import { t as inspectSlackAccount } from "./account-inspect-C3sePHWa.js";
5
- import { a as parseSlackTarget, i as normalizeSlackMessagingTarget, o as resolveSlackChannelId, r as looksLikeSlackTargetId } from "./target-parsing-PbxGDbr9.js";
6
- import "./targets-7FexXJ62.js";
7
- import { N as buildSlackInteractiveBlocks, P as buildSlackPresentationBlocks, at as SLACK_MAX_BLOCKS, i as resolveSlackGroupToolPolicy, jt as resolveSlackAutoThreadId, ot as parseSlackBlocksInput, r as resolveSlackGroupRequireMention, st as validateSlackBlocksArray } from "./group-policy-BYH74y50.js";
8
- import { C as normalizeAllowListLower, E as resolveSlackAllowListMatch, O as resolveSlackUserAllowed, S as normalizeAllowList, T as normalizeSlackSlug, b as resolveSlackWriteClientOptions, d as createSlackWebClient, f as createSlackWriteClient, g as SLACK_WRITE_RETRY_OPTIONS, h as SLACK_DEFAULT_RETRY_OPTIONS, m as getSlackWriteClient, t as probeSlack, u as createSlackTokenCacheKey, w as normalizeSlackAllowOwnerEntry, x as allowListMatches, y as resolveSlackWebClientOptions } from "./probe-gj5yQgN2.js";
9
- import { n as buildSlackThreadingToolContext, t as slackPlugin } from "./channel-BguxhhNG.js";
10
- import { n as extractSlackToolSend, r as listSlackMessageActions } from "./message-tool-api-BsZbsulu.js";
11
- import { n as resolveSlackChannelType } from "./channel-type-ChkODKBW.js";
12
- import { t as slackSetupPlugin } from "./channel.setup-BJohRJha.js";
13
- import { c as listSlackPins, d as reactSlackMessage, f as readSlackMessages, g as unpinSlackMessage, h as sendSlackMessage, i as editSlackMessage, l as listSlackReactions, m as removeSlackReaction, n as deleteSlackMessage, o as getSlackMemberInfo, p as removeOwnSlackReactions, r as downloadSlackFile, s as listSlackEmojis, u as pinSlackMessage } from "./actions-BOxiu2Vy.js";
14
- import { f as recordSlackThreadParticipation, l as hasSlackThreadParticipation, s as clearSlackThreadParticipationCache } from "./send-GUz4_v2E.js";
15
- import { n as listSlackDirectoryGroupsFromConfig, r as listSlackDirectoryPeersFromConfig } from "./directory-config-Bmw4ykSy.js";
16
- import { t as collectSlackSecurityAuditFindings } from "./security-audit-B_yKr7MW.js";
17
- import { n as resolveSlackRuntimeGroupPolicy } from "./provider-DW9YC_no.js";
1
+ import { n as registerSlackHttpHandler, r as normalizeSlackWebhookPath, t as handleSlackHttpRequest } from "./.setup/registry-CIbMfuf8.mjs";
2
+ import { a as resolveSlackAccount, i as resolveDefaultSlackAccountId, n as listSlackAccountIds, r as mergeSlackAccountConfig, t as listEnabledSlackAccounts } from "./.setup/accounts-C1FspRF-.mjs";
3
+ import { r as resolveSlackReplyToMode } from "./.setup/conversation-binding-route-shed4O6L.mjs";
4
+ import { t as inspectSlackAccount } from "./.setup/account-inspect-B86OaUEt.mjs";
5
+ import { a as parseSlackTarget, i as normalizeSlackMessagingTarget, o as resolveSlackChannelId, r as looksLikeSlackTargetId } from "./.setup/target-parsing-PbxGDbr9.mjs";
6
+ import "./.setup/targets-BlQcnjPc.mjs";
7
+ import { N as buildSlackInteractiveBlocks, P as buildSlackPresentationBlocks, at as SLACK_MAX_BLOCKS, i as resolveSlackGroupToolPolicy, jt as resolveSlackAutoThreadId, ot as parseSlackBlocksInput, r as resolveSlackGroupRequireMention, st as validateSlackBlocksArray } from "./.setup/group-policy-5epvX6Dt.mjs";
8
+ import { C as normalizeAllowListLower, E as resolveSlackAllowListMatch, O as resolveSlackUserAllowed, S as normalizeAllowList, T as normalizeSlackSlug, b as resolveSlackWriteClientOptions, d as createSlackWebClient, f as createSlackWriteClient, g as SLACK_WRITE_RETRY_OPTIONS, h as SLACK_DEFAULT_RETRY_OPTIONS, m as getSlackWriteClient, t as probeSlack, u as createSlackTokenCacheKey, w as normalizeSlackAllowOwnerEntry, x as allowListMatches, y as resolveSlackWebClientOptions } from "./.setup/probe-DnWN6oBa.mjs";
9
+ import { n as buildSlackThreadingToolContext, t as slackPlugin } from "./.setup/channel-Bpv8aTo8.mjs";
10
+ import { n as extractSlackToolSend, r as listSlackMessageActions } from "./.setup/message-tool-api-CBtuGn2d.mjs";
11
+ import { n as resolveSlackChannelType } from "./.setup/channel-type-CrwjkeJT.mjs";
12
+ import { t as slackSetupPlugin } from "./.setup/channel.setup-CTV8N2nI.mjs";
13
+ import { c as listSlackPins, d as reactSlackMessage, f as readSlackMessages, g as unpinSlackMessage, h as sendSlackMessage, i as editSlackMessage, l as listSlackReactions, m as removeSlackReaction, n as deleteSlackMessage, o as getSlackMemberInfo, p as removeOwnSlackReactions, r as downloadSlackFile, s as listSlackEmojis, u as pinSlackMessage } from "./.setup/actions-DV3J6OB-.mjs";
14
+ import { f as recordSlackThreadParticipation, l as hasSlackThreadParticipation, s as clearSlackThreadParticipationCache } from "./.setup/send-DN8vdkyi.mjs";
15
+ import { n as listSlackDirectoryGroupsFromConfig, r as listSlackDirectoryPeersFromConfig } from "./.setup/directory-config-CW4ICy0y.mjs";
16
+ import { t as collectSlackSecurityAuditFindings } from "./.setup/security-audit-tCbGyCfU.mjs";
17
+ import { n as resolveSlackRuntimeGroupPolicy } from "./.setup/provider-DGNYrXQN.mjs";
18
18
  export { SLACK_DEFAULT_RETRY_OPTIONS, SLACK_MAX_BLOCKS, SLACK_WRITE_RETRY_OPTIONS, allowListMatches, buildSlackInteractiveBlocks, buildSlackPresentationBlocks, buildSlackThreadingToolContext, clearSlackThreadParticipationCache, collectSlackSecurityAuditFindings, createSlackTokenCacheKey, createSlackWebClient, createSlackWriteClient, deleteSlackMessage, downloadSlackFile, editSlackMessage, extractSlackToolSend, getSlackMemberInfo, getSlackWriteClient, handleSlackHttpRequest, hasSlackThreadParticipation, inspectSlackAccount, listEnabledSlackAccounts, listSlackAccountIds, listSlackDirectoryGroupsFromConfig, listSlackDirectoryPeersFromConfig, listSlackEmojis, listSlackMessageActions, listSlackPins, listSlackReactions, looksLikeSlackTargetId, mergeSlackAccountConfig, normalizeAllowList, normalizeAllowListLower, normalizeSlackAllowOwnerEntry, normalizeSlackMessagingTarget, normalizeSlackSlug, normalizeSlackWebhookPath, parseSlackBlocksInput, parseSlackTarget, pinSlackMessage, probeSlack, reactSlackMessage, readSlackMessages, recordSlackThreadParticipation, registerSlackHttpHandler, removeOwnSlackReactions, removeSlackReaction, resolveDefaultSlackAccountId, resolveSlackAccount, resolveSlackAllowListMatch, resolveSlackAutoThreadId, resolveSlackChannelId, resolveSlackChannelType, resolveSlackGroupRequireMention, resolveSlackGroupToolPolicy, resolveSlackReplyToMode, resolveSlackRuntimeGroupPolicy, resolveSlackUserAllowed, resolveSlackWebClientOptions, resolveSlackWriteClientOptions, sendSlackMessage, slackPlugin, slackSetupPlugin, unpinSlackMessage, validateSlackBlocksArray };
@@ -1,2 +1,2 @@
1
- import { t as SlackChannelConfigSchema } from "./config-schema-B9GwoRlE.js";
1
+ import { t as SlackChannelConfigSchema } from "./.setup/config-schema-B9GwoRlE.mjs";
2
2
  export { SlackChannelConfigSchema };
@@ -1,2 +1,2 @@
1
- import { t as slackPlugin } from "./channel-BguxhhNG.js";
1
+ import { t as slackPlugin } from "./.setup/channel-Bpv8aTo8.mjs";
2
2
  export { slackPlugin };
@@ -1,4 +1,4 @@
1
- import { t as hasSlackAccountCredentials } from "./account-configured-sUohAxZr.js";
1
+ import { t as hasSlackAccountCredentials } from "./.setup/account-configured-sUohAxZr.mjs";
2
2
  import { DEFAULT_ACCOUNT_ID, hasConfiguredAccountValue, mergeAccountConfig } from "openclaw/plugin-sdk/account-core";
3
3
  //#region extensions/slack/configured-state.ts
4
4
  function hasConfiguredSlackAccount(account, env) {
@@ -1,2 +1,2 @@
1
- import { n as listSlackDirectoryGroupsFromConfig, r as listSlackDirectoryPeersFromConfig } from "./directory-config-Bmw4ykSy.js";
1
+ import { n as listSlackDirectoryGroupsFromConfig, r as listSlackDirectoryPeersFromConfig } from "./.setup/directory-config-CW4ICy0y.mjs";
2
2
  export { listSlackDirectoryGroupsFromConfig, listSlackDirectoryPeersFromConfig };
@@ -1,2 +1,2 @@
1
- import { n as normalizeCompatibilityConfig, t as legacyConfigRules } from "./doctor-contract-BNjw9bxb.js";
1
+ import { n as normalizeCompatibilityConfig, t as legacyConfigRules } from "./.setup/doctor-contract-CtMUqjvk.mjs";
2
2
  export { legacyConfigRules, normalizeCompatibilityConfig };
@@ -1,2 +1,2 @@
1
- import { t as registerSlackPluginHttpRoutes } from "./plugin-routes-CLp4obpN.js";
1
+ import { t as registerSlackPluginHttpRoutes } from "./.setup/plugin-routes-B8tooDLj.mjs";
2
2
  export { registerSlackPluginHttpRoutes };
package/dist/index.js CHANGED
@@ -1,4 +1,4 @@
1
- import { t as registerSlackPluginHttpRoutes } from "./plugin-routes-CLp4obpN.js";
1
+ import { t as registerSlackPluginHttpRoutes } from "./.setup/plugin-routes-B8tooDLj.mjs";
2
2
  import "./http-routes-api.js";
3
3
  import { defineBundledChannelEntry } from "openclaw/plugin-sdk/channel-entry-contract";
4
4
  //#region extensions/slack/index.ts
@@ -1,2 +1,2 @@
1
- import { t as describeSlackMessageTool } from "./message-tool-api-BsZbsulu.js";
1
+ import { t as describeSlackMessageTool } from "./.setup/message-tool-api-CBtuGn2d.mjs";
2
2
  export { describeSlackMessageTool as describeMessageTool };
@@ -1,14 +1,14 @@
1
- import { t as registerSlackPluginHttpRoutes } from "./plugin-routes-CLp4obpN.js";
2
- import { a as resolveSlackAccount, d as resolveSlackAppToken, f as resolveSlackBotToken, i as resolveDefaultSlackAccountId, n as listSlackAccountIds, t as listEnabledSlackAccounts } from "./accounts-Dm_H77gH.js";
3
- import { i as resolveSlackGroupToolPolicy, r as resolveSlackGroupRequireMention } from "./group-policy-BYH74y50.js";
4
- import { t as probeSlack } from "./probe-gj5yQgN2.js";
5
- import { r as setSlackRuntime } from "./runtime-JSVZSWAj.js";
6
- import { c as listSlackPins, d as reactSlackMessage, f as readSlackMessages, g as unpinSlackMessage, h as sendSlackMessage, i as editSlackMessage, l as listSlackReactions, m as removeSlackReaction, n as deleteSlackMessage, o as getSlackMemberInfo, p as removeOwnSlackReactions, s as listSlackEmojis, u as pinSlackMessage } from "./actions-BOxiu2Vy.js";
7
- import { r as sendMessageSlack } from "./send-GUz4_v2E.js";
8
- import { t as resolveSlackChannelAllowlist } from "./resolve-channels-Bv6IiGZ4.js";
9
- import { t as resolveSlackUserAllowlist } from "./resolve-users-BXw2pA7y.js";
10
- import { t as monitorSlackProvider } from "./provider-DW9YC_no.js";
11
- import { n as slackActionRuntime, t as handleSlackAction } from "./action-runtime-B0kRJ69h.js";
12
- import { n as listSlackDirectoryGroupsLive, r as listSlackDirectoryPeersLive } from "./directory-live-BOILcXPo.js";
13
- import "./monitor-B72wWXWg.js";
1
+ import { t as registerSlackPluginHttpRoutes } from "./.setup/plugin-routes-B8tooDLj.mjs";
2
+ import { a as resolveSlackAccount, d as resolveSlackAppToken, f as resolveSlackBotToken, i as resolveDefaultSlackAccountId, n as listSlackAccountIds, t as listEnabledSlackAccounts } from "./.setup/accounts-C1FspRF-.mjs";
3
+ import { i as resolveSlackGroupToolPolicy, r as resolveSlackGroupRequireMention } from "./.setup/group-policy-5epvX6Dt.mjs";
4
+ import { t as probeSlack } from "./.setup/probe-DnWN6oBa.mjs";
5
+ import { r as setSlackRuntime } from "./.setup/runtime-JSVZSWAj.mjs";
6
+ import { c as listSlackPins, d as reactSlackMessage, f as readSlackMessages, g as unpinSlackMessage, h as sendSlackMessage, i as editSlackMessage, l as listSlackReactions, m as removeSlackReaction, n as deleteSlackMessage, o as getSlackMemberInfo, p as removeOwnSlackReactions, s as listSlackEmojis, u as pinSlackMessage } from "./.setup/actions-DV3J6OB-.mjs";
7
+ import { r as sendMessageSlack } from "./.setup/send-DN8vdkyi.mjs";
8
+ import { t as resolveSlackChannelAllowlist } from "./.setup/resolve-channels-Dpv7OyKO.mjs";
9
+ import { t as resolveSlackUserAllowlist } from "./.setup/resolve-users-DmyA3D_2.mjs";
10
+ import { t as monitorSlackProvider } from "./.setup/provider-DGNYrXQN.mjs";
11
+ import { n as slackActionRuntime, t as handleSlackAction } from "./.setup/action-runtime-Ddpb2CZS.mjs";
12
+ import { n as listSlackDirectoryGroupsLive, r as listSlackDirectoryPeersLive } from "./.setup/directory-live-C2hI1rq1.mjs";
13
+ import "./.setup/monitor-BnckzNnh.mjs";
14
14
  export { deleteSlackMessage, editSlackMessage, getSlackMemberInfo, handleSlackAction, listEnabledSlackAccounts, listSlackAccountIds, listSlackDirectoryGroupsLive, listSlackDirectoryPeersLive, listSlackEmojis, listSlackPins, listSlackReactions, monitorSlackProvider, pinSlackMessage, probeSlack, reactSlackMessage, readSlackMessages, registerSlackPluginHttpRoutes, removeOwnSlackReactions, removeSlackReaction, resolveDefaultSlackAccountId, resolveSlackAccount, resolveSlackAppToken, resolveSlackBotToken, resolveSlackChannelAllowlist, resolveSlackGroupRequireMention, resolveSlackGroupToolPolicy, resolveSlackUserAllowlist, sendMessageSlack, sendSlackMessage, setSlackRuntime, slackActionRuntime, unpinSlackMessage };
@@ -1,2 +1,2 @@
1
- import { r as setSlackRuntime } from "./runtime-JSVZSWAj.js";
1
+ import { r as setSlackRuntime } from "./.setup/runtime-JSVZSWAj.mjs";
2
2
  export { setSlackRuntime };
@@ -1,2 +1,2 @@
1
- import { n as collectRuntimeConfigAssignments, r as secretTargetRegistryEntries, t as channelSecrets } from "./secret-contract-DxmvbxBF.js";
1
+ import { n as collectRuntimeConfigAssignments, r as secretTargetRegistryEntries, t as channelSecrets } from "./.setup/secret-contract-DxmvbxBF.mjs";
2
2
  export { channelSecrets, collectRuntimeConfigAssignments, secretTargetRegistryEntries };
@@ -1,2 +1,2 @@
1
- import { t as collectSlackSecurityAuditFindings } from "./security-audit-B_yKr7MW.js";
1
+ import { t as collectSlackSecurityAuditFindings } from "./.setup/security-audit-tCbGyCfU.mjs";
2
2
  export { collectSlackSecurityAuditFindings };
@@ -1,17 +1,18 @@
1
1
  import { defineBundledChannelSetupEntry } from "openclaw/plugin-sdk/channel-entry-contract";
2
+ import { fileURLToPath } from "node:url";
2
3
  //#region extensions/slack/setup-entry.ts
3
4
  var setup_entry_default = defineBundledChannelSetupEntry({
4
5
  importMetaUrl: import.meta.url,
5
6
  plugin: {
6
- specifier: "./setup-plugin-api.js",
7
+ specifier: fileURLToPath(new URL(".setup/setup-plugin-api-B1Y-kMp_.mjs", import.meta.url).href),
7
8
  exportName: "slackSetupPlugin"
8
9
  },
9
10
  secrets: {
10
- specifier: "./secret-contract-api.js",
11
+ specifier: fileURLToPath(new URL(".setup/secret-contract-api-D9UfYujm.mjs", import.meta.url).href),
11
12
  exportName: "channelSecrets"
12
13
  },
13
14
  runtime: {
14
- specifier: "./runtime-setter-api.js",
15
+ specifier: fileURLToPath(new URL(".setup/runtime-setter-api-CMFvhrAr.mjs", import.meta.url).href),
15
16
  exportName: "setSlackRuntime"
16
17
  }
17
18
  });
@@ -1,2 +1,2 @@
1
- import { t as slackSetupPlugin } from "./channel.setup-BJohRJha.js";
1
+ import { t as slackSetupPlugin } from "./.setup/channel.setup-CTV8N2nI.mjs";
2
2
  export { slackSetupPlugin };
@@ -1,144 +1,150 @@
1
- 2.0.7 / 2021-05-31
2
- ==================
1
+ 2.0.8
2
+ =====
3
+
4
+ * Fix [CVE-2026-90711](https://www.cve.org/CVERecord?id=CVE-2026-90711) ([GHSA-jqcg-44mw-7w3h](https://github.com/jshttp/proxy-addr/security/advisories/GHSA-jqcg-44mw-7w3h))
5
+
6
+
7
+ 2.0.7
8
+ =====
3
9
 
4
10
  * deps: forwarded@0.2.0
5
11
  - Use `req.socket` over deprecated `req.connection`
6
12
 
7
- 2.0.6 / 2020-02-24
8
- ==================
13
+ 2.0.6
14
+ =====
9
15
 
10
16
  * deps: ipaddr.js@1.9.1
11
17
 
12
- 2.0.5 / 2019-04-16
13
- ==================
18
+ 2.0.5
19
+ =====
14
20
 
15
21
  * deps: ipaddr.js@1.9.0
16
22
 
17
- 2.0.4 / 2018-07-26
18
- ==================
23
+ 2.0.4
24
+ =====
19
25
 
20
26
  * deps: ipaddr.js@1.8.0
21
27
 
22
- 2.0.3 / 2018-02-19
23
- ==================
28
+ 2.0.3
29
+ =====
24
30
 
25
31
  * deps: ipaddr.js@1.6.0
26
32
 
27
- 2.0.2 / 2017-09-24
28
- ==================
33
+ 2.0.2
34
+ =====
29
35
 
30
36
  * deps: forwarded@~0.1.2
31
37
  - perf: improve header parsing
32
38
  - perf: reduce overhead when no `X-Forwarded-For` header
33
39
 
34
- 2.0.1 / 2017-09-10
35
- ==================
40
+ 2.0.1
41
+ =====
36
42
 
37
43
  * deps: forwarded@~0.1.1
38
44
  - Fix trimming leading / trailing OWS
39
45
  - perf: hoist regular expression
40
46
  * deps: ipaddr.js@1.5.2
41
47
 
42
- 2.0.0 / 2017-08-08
43
- ==================
48
+ 2.0.0
49
+ =====
44
50
 
45
51
  * Drop support for Node.js below 0.10
46
52
 
47
- 1.1.5 / 2017-07-25
48
- ==================
53
+ 1.1.5
54
+ =====
49
55
 
50
56
  * Fix array argument being altered
51
57
  * deps: ipaddr.js@1.4.0
52
58
 
53
- 1.1.4 / 2017-03-24
54
- ==================
59
+ 1.1.4
60
+ =====
55
61
 
56
62
  * deps: ipaddr.js@1.3.0
57
63
 
58
- 1.1.3 / 2017-01-14
59
- ==================
64
+ 1.1.3
65
+ =====
60
66
 
61
67
  * deps: ipaddr.js@1.2.0
62
68
 
63
- 1.1.2 / 2016-05-29
64
- ==================
69
+ 1.1.2
70
+ =====
65
71
 
66
72
  * deps: ipaddr.js@1.1.1
67
73
  - Fix IPv6-mapped IPv4 validation edge cases
68
74
 
69
- 1.1.1 / 2016-05-03
70
- ==================
75
+ 1.1.1
76
+ =====
71
77
 
72
78
  * Fix regression matching mixed versions against multiple subnets
73
79
 
74
- 1.1.0 / 2016-05-01
75
- ==================
80
+ 1.1.0
81
+ =====
76
82
 
77
83
  * Fix accepting various invalid netmasks
78
84
  - IPv4 netmasks must be contingous
79
85
  - IPv6 addresses cannot be used as a netmask
80
86
  * deps: ipaddr.js@1.1.0
81
87
 
82
- 1.0.10 / 2015-12-09
83
- ===================
88
+ 1.0.10
89
+ ======
84
90
 
85
91
  * deps: ipaddr.js@1.0.5
86
92
  - Fix regression in `isValid` with non-string arguments
87
93
 
88
- 1.0.9 / 2015-12-01
89
- ==================
94
+ 1.0.9
95
+ =====
90
96
 
91
97
  * deps: ipaddr.js@1.0.4
92
98
  - Fix accepting some invalid IPv6 addresses
93
99
  - Reject CIDRs with negative or overlong masks
94
100
  * perf: enable strict mode
95
101
 
96
- 1.0.8 / 2015-05-10
97
- ==================
102
+ 1.0.8
103
+ =====
98
104
 
99
105
  * deps: ipaddr.js@1.0.1
100
106
 
101
- 1.0.7 / 2015-03-16
102
- ==================
107
+ 1.0.7
108
+ =====
103
109
 
104
110
  * deps: ipaddr.js@0.1.9
105
111
  - Fix OOM on certain inputs to `isValid`
106
112
 
107
- 1.0.6 / 2015-02-01
108
- ==================
113
+ 1.0.6
114
+ =====
109
115
 
110
116
  * deps: ipaddr.js@0.1.8
111
117
 
112
- 1.0.5 / 2015-01-08
113
- ==================
118
+ 1.0.5
119
+ =====
114
120
 
115
121
  * deps: ipaddr.js@0.1.6
116
122
 
117
- 1.0.4 / 2014-11-23
118
- ==================
123
+ 1.0.4
124
+ =====
119
125
 
120
126
  * deps: ipaddr.js@0.1.5
121
127
  - Fix edge cases with `isValid`
122
128
 
123
- 1.0.3 / 2014-09-21
124
- ==================
129
+ 1.0.3
130
+ =====
125
131
 
126
132
  * Use `forwarded` npm module
127
133
 
128
- 1.0.2 / 2014-09-18
129
- ==================
134
+ 1.0.2
135
+ =====
130
136
 
131
137
  * Fix a global leak when multiple subnets are trusted
132
138
  * Support Node.js 0.6
133
139
  * deps: ipaddr.js@0.1.3
134
140
 
135
- 1.0.1 / 2014-06-03
136
- ==================
141
+ 1.0.1
142
+ =====
137
143
 
138
144
  * Fix links in npm package
139
145
 
140
- 1.0.0 / 2014-05-08
141
- ==================
146
+ 1.0.0
147
+ =====
142
148
 
143
149
  * Add `trust` argument to determine proxy trust on
144
150
  * Accepts custom function
@@ -150,12 +156,12 @@
150
156
  * Add `proxyaddr.compile` to pre-compile `trust` function
151
157
  to make subsequent calls faster
152
158
 
153
- 0.0.1 / 2014-05-04
154
- ==================
159
+ 0.0.1
160
+ =====
155
161
 
156
162
  * Fix bad npm publish
157
163
 
158
- 0.0.0 / 2014-05-04
159
- ==================
164
+ 0.0.0
165
+ =====
160
166
 
161
167
  * Initial release
@@ -37,7 +37,7 @@ proxyaddr(req, function (addr) { return addr === '127.0.0.1' })
37
37
  proxyaddr(req, function (addr, i) { return i < 1 })
38
38
  ```
39
39
 
40
- The `trust` arugment may also be a single IP address string or an
40
+ The `trust` argument may also be a single IP address string or an
41
41
  array of trusted addresses, as plain IP addresses, CIDR-formatted
42
42
  strings, or IP/netmask strings.
43
43
 
@@ -256,6 +256,13 @@ function trustMulti (subnets) {
256
256
  if (!isip(addr)) return false
257
257
 
258
258
  var ip = parseip(addr)
259
+
260
+ if (ip.kind() === 'ipv6' && ip.isIPv4MappedAddress()) {
261
+ // Canonicalize IPv4-mapped candidates to IPv4 so a mapped address
262
+ // cannot bypass the cross-family guard via the same-family path
263
+ ip = ip.toIPv4Address()
264
+ }
265
+
259
266
  var ipconv
260
267
  var kind = ip.kind()
261
268
 
@@ -272,6 +279,12 @@ function trustMulti (subnets) {
272
279
  continue
273
280
  }
274
281
 
282
+ if (subnetkind !== 'ipv4' && !(subnetrange >= 96 && subnetip.isIPv4MappedAddress())) {
283
+ // IPv6 subnet only spans IPv4 when it is a mapped subnet whose
284
+ // prefix covers the ::ffff: marker; otherwise it must not match IPv4
285
+ continue
286
+ }
287
+
275
288
  if (!ipconv) {
276
289
  // Convert IP to match subnet IP kind
277
290
  ipconv = subnetkind === 'ipv4'
@@ -280,6 +293,9 @@ function trustMulti (subnets) {
280
293
  }
281
294
 
282
295
  trusted = ipconv
296
+ } else if (kind === 'ipv6' && subnetip.isIPv4MappedAddress()) {
297
+ // A native IPv6 candidate cannot match an IPv4-mapped subnet
298
+ continue
283
299
  }
284
300
 
285
301
  if (trusted.match(subnetip, subnetrange)) {
@@ -308,6 +324,13 @@ function trustSingle (subnet) {
308
324
  if (!isip(addr)) return false
309
325
 
310
326
  var ip = parseip(addr)
327
+
328
+ if (ip.kind() === 'ipv6' && ip.isIPv4MappedAddress()) {
329
+ // Canonicalize IPv4-mapped candidates to IPv4 so a mapped address
330
+ // cannot bypass the cross-family guard via the same-family path
331
+ ip = ip.toIPv4Address()
332
+ }
333
+
311
334
  var kind = ip.kind()
312
335
 
313
336
  if (kind !== subnetkind) {
@@ -316,10 +339,19 @@ function trustSingle (subnet) {
316
339
  return false
317
340
  }
318
341
 
342
+ if (!subnetisipv4 && !(subnetrange >= 96 && subnetip.isIPv4MappedAddress())) {
343
+ // IPv6 subnet only spans IPv4 when it is a mapped subnet whose
344
+ // prefix covers the ::ffff: marker; otherwise it must not match IPv4
345
+ return false
346
+ }
347
+
319
348
  // Convert IP to match subnet IP kind
320
349
  ip = subnetisipv4
321
350
  ? ip.toIPv4Address()
322
351
  : ip.toIPv4MappedAddress()
352
+ } else if (kind === 'ipv6' && subnetip.isIPv4MappedAddress()) {
353
+ // A native IPv6 candidate cannot match an IPv4-mapped subnet
354
+ return false
323
355
  }
324
356
 
325
357
  return ip.match(subnetip, subnetrange)