From 3bd42407e57aebd29f84cc31dc73a931caf024ae Mon Sep 17 00:00:00 2001 From: Eden Zimbelman Date: Thu, 27 Aug 2026 10:55:21 -0700 Subject: [PATCH 1/2] fix: revert internal packages requiring esm loading for backward compatible support MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit p-queue (ESM-only since v7) and p-retry (ESM-only since v5) ship as pure ESM ("type": "module"), which made the CommonJS builds of @slack/web-api and @slack/webhook throw ERR_REQUIRE_ESM under require() on the pre-require(esm) Node.js in the declared ">= 20" support range (Node 20.0-20.18). Pin both back to their last CommonJS releases — p-queue@^6.6.2 and p-retry@^4.6.2 — matching what shipped in the working @slack/web-api@8.0.0. These are the terminal versions of their CJS majors, so the caret ranges resolve to exactly those releases while staying major-gated against the ESM-only successors; matching Dependabot ignore rules for web-api keep an accidental bump from re-breaking it. No public API or runtime behavior change: p-queue/p-retry are internal implementation details, RetryOptions is defined via the `retry` package (not p-retry), and only options common to these versions are used. Fixes #2711 Co-Authored-By: Claude --- .changeset/restore-cjs-loadable-deps.md | 6 ++ .github/dependabot.yml | 13 +++- package-lock.json | 90 +++++++++---------------- packages/web-api/package.json | 4 +- packages/webhook/package.json | 2 +- 5 files changed, 49 insertions(+), 66 deletions(-) create mode 100644 .changeset/restore-cjs-loadable-deps.md diff --git a/.changeset/restore-cjs-loadable-deps.md b/.changeset/restore-cjs-loadable-deps.md new file mode 100644 index 000000000..4c116fe4f --- /dev/null +++ b/.changeset/restore-cjs-loadable-deps.md @@ -0,0 +1,6 @@ +--- +"@slack/web-api": patch +"@slack/webhook": patch +--- + +fix: revert internal packages requiring esm loading for backward compatible support ([#2711](https://github.com/slackapi/node-slack-sdk/issues/2711)) diff --git a/.github/dependabot.yml b/.github/dependabot.yml index e3642c765..9a60d9eff 100644 --- a/.github/dependabot.yml +++ b/.github/dependabot.yml @@ -186,6 +186,12 @@ updates: - "@types/mocha" - "mocha" ignore: + # p-queue (v7+) and p-retry (v5+) are pure ESM and raise their minimum + # Node.js version each major. Bumping either breaks `require()` of this + # package's CommonJS build on the declared Node >= 20 range (ERR_REQUIRE_ESM, + # see #2711) and can force a change to its supported Node floor. + - dependency-name: "p-queue" + - dependency-name: "p-retry" - dependency-name: "@types/node" versions: - "21.x" @@ -215,9 +221,10 @@ updates: - "@types/mocha" - "mocha" ignore: - # p-retry is pure ESM and raises its minimum Node.js version each major - # (v7 requires Node >= 20, v8 requires Node >= 22). Bumping it can force a - # change to this package's own supported Node floor. + # p-retry (v5+) is pure ESM and raises its minimum Node.js version each + # major (v7 requires Node >= 20, v8 requires Node >= 22). Bumping it breaks + # `require()` of this package's CommonJS build (ERR_REQUIRE_ESM, see #2711) + # and can force a change to its supported Node floor. - dependency-name: "p-retry" - dependency-name: "@types/node" versions: diff --git a/package-lock.json b/package-lock.json index c54e97e91..7eaf5a532 100644 --- a/package-lock.json +++ b/package-lock.json @@ -3014,18 +3014,6 @@ "node": ">=0.10.0" } }, - "node_modules/is-network-error": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/is-network-error/-/is-network-error-1.3.2.tgz", - "integrity": "sha512-PhBY86zaxNZUuWP6h13Vu5oFe0XY6/UlKzQnYFELzGVHygP3MxmvTfYSG7GN3aIab/iWudSMgjSnG9Dq+nHrgA==", - "license": "MIT", - "engines": { - "node": ">=16" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/is-node-process": { "version": "1.2.0", "dev": true, @@ -3829,22 +3817,10 @@ "node": ">=6" } }, - "node_modules/p-queue": { - "version": "9.3.1", - "license": "MIT", - "dependencies": { - "eventemitter3": "^5.0.4", - "p-timeout": "^7.0.0" - }, - "engines": { - "node": ">=20" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/p-retry": { "version": "4.6.2", + "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-4.6.2.tgz", + "integrity": "sha512-312Id396EbJdvRONlngUx0NydfrIQ5lsYu0znKVUzVvArzEIt08V1qhtyESbGVd1FGX7UKtiFp5uwKZdM8wIuQ==", "license": "MIT", "dependencies": { "@types/retry": "0.12.0", @@ -3854,16 +3830,6 @@ "node": ">=8" } }, - "node_modules/p-timeout": { - "version": "7.0.1", - "license": "MIT", - "engines": { - "node": ">=20" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/p-try": { "version": "2.2.0", "dev": true, @@ -5759,8 +5725,8 @@ "@types/node": ">=20", "@types/retry": "0.12.5", "eventemitter3": "^5.0.1", - "p-queue": "^9", - "p-retry": "^8", + "p-queue": "^6.6.2", + "p-retry": "^4.6.2", "retry": "^0.13.1" }, "devDependencies": { @@ -5789,21 +5755,40 @@ "integrity": "sha512-3xSjTp3v03X/lSQLkczaN9UIEwJMoMCA1+Nb5HfbJEQWogdeQIyVtTvxPXDQjZ5zws8rFQfVfRdz03ARihPJgw==", "license": "MIT" }, - "packages/web-api/node_modules/p-retry": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-8.0.0.tgz", - "integrity": "sha512-kFVqH1HxOHp8LupNsOys7bSV09VYTRLxarH/mokO4Rqhk6wGi70E0jh4VzvVGXfEVNggHoHLAMWsQqHyU1Ey9A==", + "packages/web-api/node_modules/p-queue": { + "version": "6.6.2", + "resolved": "https://registry.npmjs.org/p-queue/-/p-queue-6.6.2.tgz", + "integrity": "sha512-RwFpb72c/BhQLEXIZ5K2e+AhgNVmIejGlTgiB9MzZ0e93GRvqZ7uSi0dvRF7/XIXDeNkra2fNHBxTyPDGySpjQ==", "license": "MIT", "dependencies": { - "is-network-error": "^1.3.0" + "eventemitter3": "^4.0.4", + "p-timeout": "^3.2.0" }, "engines": { - "node": ">=22" + "node": ">=8" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, + "packages/web-api/node_modules/p-queue/node_modules/eventemitter3": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", + "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==", + "license": "MIT" + }, + "packages/web-api/node_modules/p-timeout": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-3.2.0.tgz", + "integrity": "sha512-rhIwUycgwwKcP9yTOOFK/AKsAopjjCakVqLHePO3CC6Mir1Z99xT+R63jZxAT5lFZLa2inS5h+ZS2GvR99/FBg==", + "license": "MIT", + "dependencies": { + "p-finally": "^1.0.0" + }, + "engines": { + "node": ">=8" + } + }, "packages/web-api/node_modules/undici-types": { "version": "7.19.2", "license": "MIT" @@ -5816,7 +5801,7 @@ "@slack/types": "^3.1.0", "@types/node": ">=20", "@types/retry": "0.12.5", - "p-retry": "^8", + "p-retry": "^4.6.2", "retry": "^0.13.1" }, "devDependencies": { @@ -5840,21 +5825,6 @@ "integrity": "sha512-3xSjTp3v03X/lSQLkczaN9UIEwJMoMCA1+Nb5HfbJEQWogdeQIyVtTvxPXDQjZ5zws8rFQfVfRdz03ARihPJgw==", "license": "MIT" }, - "packages/webhook/node_modules/p-retry": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-8.0.0.tgz", - "integrity": "sha512-kFVqH1HxOHp8LupNsOys7bSV09VYTRLxarH/mokO4Rqhk6wGi70E0jh4VzvVGXfEVNggHoHLAMWsQqHyU1Ey9A==", - "license": "MIT", - "dependencies": { - "is-network-error": "^1.3.0" - }, - "engines": { - "node": ">=22" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "packages/webhook/node_modules/undici-types": { "version": "7.19.2", "license": "MIT" diff --git a/packages/web-api/package.json b/packages/web-api/package.json index 8a6daa081..d199ad9e3 100644 --- a/packages/web-api/package.json +++ b/packages/web-api/package.json @@ -53,8 +53,8 @@ "@types/node": ">=20", "@types/retry": "0.12.5", "eventemitter3": "^5.0.1", - "p-queue": "^9", - "p-retry": "^8", + "p-queue": "^6.6.2", + "p-retry": "^4.6.2", "retry": "^0.13.1" }, "devDependencies": { diff --git a/packages/webhook/package.json b/packages/webhook/package.json index 5c4f9749f..250d39211 100644 --- a/packages/webhook/package.json +++ b/packages/webhook/package.json @@ -44,7 +44,7 @@ "@slack/types": "^3.1.0", "@types/node": ">=20", "@types/retry": "0.12.5", - "p-retry": "^8", + "p-retry": "^4.6.2", "retry": "^0.13.1" }, "devDependencies": { From f57d7236059e1e0f4628cee71a66df7c5aae9c9c Mon Sep 17 00:00:00 2001 From: Eden Zimbelman Date: Thu, 27 Aug 2026 12:19:53 -0700 Subject: [PATCH 2/2] docs(deps): collapse dependabot ignore comments to one-liners Condense the p-queue/p-retry ignore rationale to a single line per block, keeping the #2711 reference inline. Co-Authored-By: William Bergamin <25348381+WilliamBergamin@users.noreply.github.com> Co-Authored-By: Claude --- .github/dependabot.yml | 10 ++-------- 1 file changed, 2 insertions(+), 8 deletions(-) diff --git a/.github/dependabot.yml b/.github/dependabot.yml index 9a60d9eff..8d5426c20 100644 --- a/.github/dependabot.yml +++ b/.github/dependabot.yml @@ -186,10 +186,7 @@ updates: - "@types/mocha" - "mocha" ignore: - # p-queue (v7+) and p-retry (v5+) are pure ESM and raise their minimum - # Node.js version each major. Bumping either breaks `require()` of this - # package's CommonJS build on the declared Node >= 20 range (ERR_REQUIRE_ESM, - # see #2711) and can force a change to its supported Node floor. + # Avoid pure ESM p-queue (v7+) / p-retry (v5+) to prevent CJS require() breakage on Node >= 20 (see #2711). - dependency-name: "p-queue" - dependency-name: "p-retry" - dependency-name: "@types/node" @@ -221,10 +218,7 @@ updates: - "@types/mocha" - "mocha" ignore: - # p-retry (v5+) is pure ESM and raises its minimum Node.js version each - # major (v7 requires Node >= 20, v8 requires Node >= 22). Bumping it breaks - # `require()` of this package's CommonJS build (ERR_REQUIRE_ESM, see #2711) - # and can force a change to its supported Node floor. + # Avoid pure ESM p-retry (v5+) to prevent CJS require() breakage on Node >= 20 (see #2711). - dependency-name: "p-retry" - dependency-name: "@types/node" versions: