From d36b40f4cd05d5cd4e1be299f3fded486cf01b3f Mon Sep 17 00:00:00 2001 From: Eden Zimbelman Date: Tue, 3 Mar 2026 13:30:49 -0800 Subject: [PATCH 1/8] build: use minimum support @types/node@18 in development --- .changeset/vast-drinks-raise.md | 5 +++++ .claude/settings.json | 7 +++++++ packages/cli-hooks/package.json | 2 +- packages/cli-test/package.json | 2 +- packages/logger/package.json | 4 +--- packages/web-api/package.json | 2 +- packages/webhook/package.json | 2 +- 7 files changed, 17 insertions(+), 7 deletions(-) create mode 100644 .changeset/vast-drinks-raise.md diff --git a/.changeset/vast-drinks-raise.md b/.changeset/vast-drinks-raise.md new file mode 100644 index 000000000..8358f0b9a --- /dev/null +++ b/.changeset/vast-drinks-raise.md @@ -0,0 +1,5 @@ +--- +"@slack/logger": patch +--- + +build: remove @types/node from required dependencies diff --git a/.claude/settings.json b/.claude/settings.json index 357b4ca20..422d89133 100644 --- a/.claude/settings.json +++ b/.claude/settings.json @@ -10,15 +10,19 @@ "Bash(gh pr status:*)", "Bash(gh pr update-branch:*)", "Bash(gh pr view:*)", + "Bash(gh run view:*)", "Bash(gh search code:*)", "Bash(git diff:*)", "Bash(git grep:*)", "Bash(git log:*)", + "Bash(git ls-tree:*)", "Bash(git show:*)", "Bash(git status:*)", "Bash(grep:*)", "Bash(head:*)", + "Bash(jq:*)", "Bash(ls:*)", + "Bash(node --test:*)", "Bash(node --version:*)", "Bash(npm --version:*)", "Bash(npm config:*)", @@ -27,7 +31,10 @@ "Bash(npm run build:*)", "Bash(npm run lint:*)", "Bash(npm run lint:fix:*)", + "Bash(npm show:*)", "Bash(npm test:*)", + "Bash(npm version:*)", + "Bash(nvm use:*)", "Bash(tail:*)", "Bash(tree:*)", "WebFetch(domain:docs.slack.dev)", diff --git a/packages/cli-hooks/package.json b/packages/cli-hooks/package.json index e4478898a..59720a020 100644 --- a/packages/cli-hooks/package.json +++ b/packages/cli-hooks/package.json @@ -54,7 +54,7 @@ }, "devDependencies": { "@types/minimist": "^1.2.5", - "@types/node": "^25.0.3", + "@types/node": "^18.19.130", "@types/semver": "^7.5.6", "@types/sinon": "^21.0.0", "shx": "^0.4.0", diff --git a/packages/cli-test/package.json b/packages/cli-test/package.json index cfbf5d00f..be192823f 100644 --- a/packages/cli-test/package.json +++ b/packages/cli-test/package.json @@ -42,7 +42,7 @@ }, "devDependencies": { "@tsconfig/recommended": "^1.0.6", - "@types/node": "^25.0.3", + "@types/node": "^18.19.130", "@types/sinon": "^21.0.0", "cross-env": "^10.0.0", "shx": "^0.4.0", diff --git a/packages/logger/package.json b/packages/logger/package.json index bf640ca1f..a9dc56715 100644 --- a/packages/logger/package.json +++ b/packages/logger/package.json @@ -37,10 +37,8 @@ "test:node18": "npm run build && node --test --test-reporter=spec --import tsx --test src/index.test.ts", "test:unit": "npm run build && node --experimental-test-coverage --test-reporter=spec --test-reporter-destination=stdout --test-reporter=lcov --test-reporter-destination=lcov.info --test-reporter=junit --test-reporter-destination=test-results.xml --import tsx --test src/index.test.ts" }, - "dependencies": { - "@types/node": ">=18.0.0" - }, "devDependencies": { + "@types/node": "^18.19.130", "shx": "^0.4.0", "tsx": "^4.20.6", "typedoc": "^0.28.7", diff --git a/packages/web-api/package.json b/packages/web-api/package.json index 1ec889ede..69652c829 100644 --- a/packages/web-api/package.json +++ b/packages/web-api/package.json @@ -51,7 +51,7 @@ "dependencies": { "@slack/logger": "^4.0.0", "@slack/types": "^2.20.0", - "@types/node": ">=18.0.0", + "@types/node": ">=18", "@types/retry": "0.12.0", "axios": "^1.13.5", "eventemitter3": "^5.0.1", diff --git a/packages/webhook/package.json b/packages/webhook/package.json index adf3860dd..9aaa388dd 100644 --- a/packages/webhook/package.json +++ b/packages/webhook/package.json @@ -43,7 +43,7 @@ }, "dependencies": { "@slack/types": "^2.9.0", - "@types/node": ">=18.0.0", + "@types/node": ">=18", "axios": "^1.13.5" }, "devDependencies": { From 76e02e361edcda230d38d0c55e3bd19a7e7cea88 Mon Sep 17 00:00:00 2001 From: Eden Zimbelman Date: Tue, 3 Mar 2026 13:50:09 -0800 Subject: [PATCH 2/8] test: use @types/node@18 in development when exporting a range --- packages/oauth/package.json | 1 + packages/rtm-api/package.json | 1 + packages/socket-mode/package.json | 1 + packages/web-api/package.json | 1 + packages/webhook/package.json | 1 + 5 files changed, 5 insertions(+) diff --git a/packages/oauth/package.json b/packages/oauth/package.json index 131d09b4c..e75fc191d 100644 --- a/packages/oauth/package.json +++ b/packages/oauth/package.json @@ -48,6 +48,7 @@ "jsonwebtoken": "^9" }, "devDependencies": { + "@types/node": "^18.19.130", "@types/sinon": "^21", "rewiremock": "^3", "shx": "^0.4.0", diff --git a/packages/rtm-api/package.json b/packages/rtm-api/package.json index 22673b093..93fbdbae0 100644 --- a/packages/rtm-api/package.json +++ b/packages/rtm-api/package.json @@ -55,6 +55,7 @@ "ws": "^8" }, "devDependencies": { + "@types/node": "^18.19.130", "@types/sinon": "^17", "@types/ws": "^8", "shx": "^0.3.2", diff --git a/packages/socket-mode/package.json b/packages/socket-mode/package.json index f502c960b..c60a0cf23 100644 --- a/packages/socket-mode/package.json +++ b/packages/socket-mode/package.json @@ -58,6 +58,7 @@ "ws": "^8" }, "devDependencies": { + "@types/node": "^18.19.130", "@tsconfig/recommended": "^1.0.7", "@types/proxyquire": "^1.3.31", "@types/sinon": "^21", diff --git a/packages/web-api/package.json b/packages/web-api/package.json index 69652c829..766073b57 100644 --- a/packages/web-api/package.json +++ b/packages/web-api/package.json @@ -65,6 +65,7 @@ "devDependencies": { "@tsconfig/recommended": "^1", "@types/busboy": "^1.5.4", + "@types/node": "^18.19.130", "@types/sinon": "^21", "busboy": "^1", "nock": "^14", diff --git a/packages/webhook/package.json b/packages/webhook/package.json index 9aaa388dd..c489c7990 100644 --- a/packages/webhook/package.json +++ b/packages/webhook/package.json @@ -47,6 +47,7 @@ "axios": "^1.13.5" }, "devDependencies": { + "@types/node": "^18.19.130", "nock": "^14.0.6", "shx": "^0.4.0", "tsx": "^4.20.6", From 88e3ec777302fe73768d01a77cc0476e2fab1e11 Mon Sep 17 00:00:00 2001 From: Eden Zimbelman Date: Tue, 3 Mar 2026 14:41:28 -0800 Subject: [PATCH 3/8] build: use a shared tsconfig for workspace packages --- .claude/settings.json | 1 + package.json | 4 +++- packages/cli-hooks/jsconfig.json | 23 ++++------------------ packages/cli-hooks/package.json | 4 +--- packages/cli-test/package.json | 4 +--- packages/cli-test/tsconfig.json | 18 +---------------- packages/logger/package.json | 4 +--- packages/logger/tsconfig.json | 31 ++---------------------------- packages/oauth/package.json | 4 +--- packages/oauth/tsconfig.json | 31 ++---------------------------- packages/rtm-api/package.json | 4 +--- packages/rtm-api/tsconfig.json | 31 ++---------------------------- packages/socket-mode/package.json | 4 +--- packages/socket-mode/tsconfig.json | 19 +++--------------- packages/types/package.json | 3 +-- packages/types/tsconfig.json | 31 ++---------------------------- packages/web-api/package.json | 4 +--- packages/web-api/tsconfig.json | 19 ++---------------- packages/webhook/package.json | 4 +--- packages/webhook/tsconfig.json | 31 ++---------------------------- tsconfig.base.json | 28 +++++++++++++++++++++++++++ 21 files changed, 61 insertions(+), 241 deletions(-) create mode 100644 tsconfig.base.json diff --git a/.claude/settings.json b/.claude/settings.json index 422d89133..72bbed76d 100644 --- a/.claude/settings.json +++ b/.claude/settings.json @@ -1,6 +1,7 @@ { "permissions": { "allow": [ + "Bash(cat:*)", "Bash(echo:*)", "Bash(gh issue view:*)", "Bash(gh label list:*)", diff --git a/package.json b/package.json index fa876a1fa..436ab6f98 100644 --- a/package.json +++ b/package.json @@ -26,6 +26,8 @@ }, "devDependencies": { "@biomejs/biome": "^2.0.5", - "@changesets/cli": "^2.29.8" + "@changesets/cli": "^2.29.8", + "@types/node": "^18.19.130", + "typescript": "5.9.3" } } diff --git a/packages/cli-hooks/jsconfig.json b/packages/cli-hooks/jsconfig.json index aca7ed985..e97ebebcf 100644 --- a/packages/cli-hooks/jsconfig.json +++ b/packages/cli-hooks/jsconfig.json @@ -1,24 +1,9 @@ { + "$schema": "https://json.schemastore.org/jsconfig", + "extends": "../../tsconfig.base.json", "compilerOptions": { "module": "es2022", - "moduleResolution": "node", - "esModuleInterop": true, - "checkJs": true, - - "strict": true, - "noUnusedLocals": true, - "noUnusedParameters": true, - "noImplicitReturns": true, - "noFallthroughCasesInSwitch": true, - - "baseUrl": ".", - "paths": { - "*": ["./types/*"] - } + "checkJs": true }, - "include": ["src/**/*"], - "jsdoc": { - "out": "support/jsdoc", - "access": "public" - } + "include": ["src/**/*"] } diff --git a/packages/cli-hooks/package.json b/packages/cli-hooks/package.json index 59720a020..3de12a0a1 100644 --- a/packages/cli-hooks/package.json +++ b/packages/cli-hooks/package.json @@ -54,11 +54,9 @@ }, "devDependencies": { "@types/minimist": "^1.2.5", - "@types/node": "^18.19.130", "@types/semver": "^7.5.6", "@types/sinon": "^21.0.0", "shx": "^0.4.0", - "sinon": "^21.0.0", - "typescript": "5.9.3" + "sinon": "^21.0.0" } } diff --git a/packages/cli-test/package.json b/packages/cli-test/package.json index be192823f..e0b5af131 100644 --- a/packages/cli-test/package.json +++ b/packages/cli-test/package.json @@ -42,14 +42,12 @@ }, "devDependencies": { "@tsconfig/recommended": "^1.0.6", - "@types/node": "^18.19.130", "@types/sinon": "^21.0.0", "cross-env": "^10.0.0", "shx": "^0.4.0", "sinon": "^21.0.0", "tsx": "^4.20.6", "typedoc": "^0.28.7", - "typedoc-plugin-markdown": "^4.7.1", - "typescript": "5.9.3" + "typedoc-plugin-markdown": "^4.7.1" } } diff --git a/packages/cli-test/tsconfig.json b/packages/cli-test/tsconfig.json index 2bf1fa1b5..749075079 100644 --- a/packages/cli-test/tsconfig.json +++ b/packages/cli-test/tsconfig.json @@ -1,22 +1,6 @@ { "$schema": "https://json.schemastore.org/tsconfig", - "compilerOptions": { - "declaration": true, - "declarationMap": true, - "esModuleInterop": true, - "noFallthroughCasesInSwitch": true, - "noImplicitReturns": true, - "noUnusedLocals": true, - "noUnusedParameters": true, - "outDir": "dist", - "skipLibCheck": true, - "sourceMap": true - }, - "extends": "@tsconfig/recommended/tsconfig.json", + "extends": "../../tsconfig.base.json", "include": ["src/**/*"], - "jsdoc": { - "out": "support/jsdoc", - "access": "public" - }, "exclude": ["src/**/*.test.*"] } diff --git a/packages/logger/package.json b/packages/logger/package.json index a9dc56715..1d559d755 100644 --- a/packages/logger/package.json +++ b/packages/logger/package.json @@ -38,11 +38,9 @@ "test:unit": "npm run build && node --experimental-test-coverage --test-reporter=spec --test-reporter-destination=stdout --test-reporter=lcov --test-reporter-destination=lcov.info --test-reporter=junit --test-reporter-destination=test-results.xml --import tsx --test src/index.test.ts" }, "devDependencies": { - "@types/node": "^18.19.130", "shx": "^0.4.0", "tsx": "^4.20.6", "typedoc": "^0.28.7", - "typedoc-plugin-markdown": "^4.7.1", - "typescript": "^5.9.3" + "typedoc-plugin-markdown": "^4.7.1" } } diff --git a/packages/logger/tsconfig.json b/packages/logger/tsconfig.json index 709df4fe1..749075079 100644 --- a/packages/logger/tsconfig.json +++ b/packages/logger/tsconfig.json @@ -1,33 +1,6 @@ { "$schema": "https://json.schemastore.org/tsconfig", - "compilerOptions": { - "target": "es2017", - "module": "commonjs", - "declaration": true, - "declarationMap": true, - "sourceMap": true, - "outDir": "dist", - "skipLibCheck": true, - "strict": true, - "noUnusedLocals": true, - "noUnusedParameters": true, - "noImplicitReturns": true, - "noFallthroughCasesInSwitch": true, - "moduleResolution": "node", - "baseUrl": ".", - "paths": { - "*": ["./types/*"] - }, - "esModuleInterop": true - // Not using this setting because it's only used to require the package.json file, and that would change the - // structure of the files in the dist directory because package.json is not located inside src. It would be nice - // to use import instead of require(), but it's not worth the tradeoff of restructuring the build (for now). - // "resolveJsonModule": true, - }, + "extends": "../../tsconfig.base.json", "include": ["src/**/*"], - "exclude": ["src/**/*.test.*"], - "jsdoc": { - "out": "support/jsdoc", - "access": "public" - } + "exclude": ["src/**/*.test.*"] } diff --git a/packages/oauth/package.json b/packages/oauth/package.json index e75fc191d..c6a8db7be 100644 --- a/packages/oauth/package.json +++ b/packages/oauth/package.json @@ -48,14 +48,12 @@ "jsonwebtoken": "^9" }, "devDependencies": { - "@types/node": "^18.19.130", "@types/sinon": "^21", "rewiremock": "^3", "shx": "^0.4.0", "sinon": "^21", "tsx": "^4.20.6", "typedoc": "^0.28.7", - "typedoc-plugin-markdown": "^4.7.0", - "typescript": "5.9.3" + "typedoc-plugin-markdown": "^4.7.0" } } diff --git a/packages/oauth/tsconfig.json b/packages/oauth/tsconfig.json index 51c5094cc..bea8a558f 100644 --- a/packages/oauth/tsconfig.json +++ b/packages/oauth/tsconfig.json @@ -1,33 +1,6 @@ { "$schema": "https://json.schemastore.org/tsconfig", - "compilerOptions": { - "target": "es5", - "module": "commonjs", - "declaration": true, - "declarationMap": true, - "sourceMap": true, - "outDir": "dist", - "skipLibCheck": true, - "strict": true, - "noUnusedLocals": true, - "noUnusedParameters": true, - "noImplicitReturns": true, - "noFallthroughCasesInSwitch": true, - "moduleResolution": "node", - "baseUrl": ".", - "paths": { - "*": ["./types/*"] - }, - "esModuleInterop": true - // Not using this setting because it's only used to require the package.json file, and that would change the - // structure of the files in the dist directory because package.json is not located inside src. It would be nice - // to use import instead of require(), but it's not worth the tradeoff of restructuring the build (for now). - // "resolveJsonModule": true, - }, + "extends": "../../tsconfig.base.json", "include": ["src/**/*"], - "exclude": ["src/**/spec-utils.ts", "src/**/*.test.*"], - "jsdoc": { - "out": "support/jsdoc", - "access": "public" - } + "exclude": ["src/**/spec-utils.ts", "src/**/*.test.*"] } diff --git a/packages/rtm-api/package.json b/packages/rtm-api/package.json index 93fbdbae0..e3cfdaa89 100644 --- a/packages/rtm-api/package.json +++ b/packages/rtm-api/package.json @@ -55,14 +55,12 @@ "ws": "^8" }, "devDependencies": { - "@types/node": "^18.19.130", "@types/sinon": "^17", "@types/ws": "^8", "shx": "^0.3.2", "sinon": "^21", "tsx": "^4.20.6", "typedoc": "^0.28.7", - "typedoc-plugin-markdown": "^4.7.1", - "typescript": "5.9.3" + "typedoc-plugin-markdown": "^4.7.1" } } diff --git a/packages/rtm-api/tsconfig.json b/packages/rtm-api/tsconfig.json index adb1b18be..10107f9b5 100644 --- a/packages/rtm-api/tsconfig.json +++ b/packages/rtm-api/tsconfig.json @@ -1,33 +1,6 @@ { "$schema": "https://json.schemastore.org/tsconfig", - "compilerOptions": { - "target": "es2017", - "module": "commonjs", - "declaration": true, - "declarationMap": true, - "sourceMap": true, - "outDir": "dist", - "skipLibCheck": true, - "strict": true, - "noUnusedLocals": true, - "noUnusedParameters": true, - "noImplicitReturns": true, - "noFallthroughCasesInSwitch": true, - "moduleResolution": "node", - "baseUrl": ".", - "paths": { - "*": ["./types/*"] - }, - "esModuleInterop": true - // Not using this setting because it's only used to require the package.json file, and that would change the - // structure of the files in the dist directory because package.json is not located inside src. It would be nice - // to use import instead of require(), but it's not worth the tradeoff of restructuring the build (for now). - // "resolveJsonModule": true, - }, + "extends": "../../tsconfig.base.json", "include": ["src/**/*"], - "exclude": ["src/**/*.spec.*"], - "jsdoc": { - "out": "support/jsdoc", - "access": "public" - } + "exclude": ["src/**/*.spec.*"] } diff --git a/packages/socket-mode/package.json b/packages/socket-mode/package.json index c60a0cf23..e5d0e96e3 100644 --- a/packages/socket-mode/package.json +++ b/packages/socket-mode/package.json @@ -58,7 +58,6 @@ "ws": "^8" }, "devDependencies": { - "@types/node": "^18.19.130", "@tsconfig/recommended": "^1.0.7", "@types/proxyquire": "^1.3.31", "@types/sinon": "^21", @@ -68,7 +67,6 @@ "sinon": "^21", "tsx": "^4.20.6", "typedoc": "^0.28.7", - "typedoc-plugin-markdown": "^4.7.0", - "typescript": "5.9.3" + "typedoc-plugin-markdown": "^4.7.0" } } diff --git a/packages/socket-mode/tsconfig.json b/packages/socket-mode/tsconfig.json index 8c32efc39..275214891 100644 --- a/packages/socket-mode/tsconfig.json +++ b/packages/socket-mode/tsconfig.json @@ -1,22 +1,9 @@ { "$schema": "https://json.schemastore.org/tsconfig", + "extends": "../../tsconfig.base.json", "compilerOptions": { - "declaration": true, - "declarationMap": true, - "noFallthroughCasesInSwitch": true, - "noImplicitReturns": true, - "noUnusedLocals": true, - "noUnusedParameters": true, - "outDir": "dist", - "resolveJsonModule": true, - "skipLibCheck": true, - "sourceMap": true + "resolveJsonModule": true }, - "extends": "@tsconfig/recommended/tsconfig.json", "include": ["src/**/*"], - "exclude": ["src/**/*.test.*"], - "jsdoc": { - "out": "support/jsdoc", - "access": "public" - } + "exclude": ["src/**/*.test.*"] } diff --git a/packages/types/package.json b/packages/types/package.json index 09fde391b..52daa8802 100644 --- a/packages/types/package.json +++ b/packages/types/package.json @@ -42,8 +42,7 @@ "shx": "^0.4.0", "tsd": "^0.33.0", "typedoc": "^0.28.7", - "typedoc-plugin-markdown": "^4.7.1", - "typescript": "^5.9.3" + "typedoc-plugin-markdown": "^4.7.1" }, "tsd": { "directory": "test" diff --git a/packages/types/tsconfig.json b/packages/types/tsconfig.json index adb1b18be..10107f9b5 100644 --- a/packages/types/tsconfig.json +++ b/packages/types/tsconfig.json @@ -1,33 +1,6 @@ { "$schema": "https://json.schemastore.org/tsconfig", - "compilerOptions": { - "target": "es2017", - "module": "commonjs", - "declaration": true, - "declarationMap": true, - "sourceMap": true, - "outDir": "dist", - "skipLibCheck": true, - "strict": true, - "noUnusedLocals": true, - "noUnusedParameters": true, - "noImplicitReturns": true, - "noFallthroughCasesInSwitch": true, - "moduleResolution": "node", - "baseUrl": ".", - "paths": { - "*": ["./types/*"] - }, - "esModuleInterop": true - // Not using this setting because it's only used to require the package.json file, and that would change the - // structure of the files in the dist directory because package.json is not located inside src. It would be nice - // to use import instead of require(), but it's not worth the tradeoff of restructuring the build (for now). - // "resolveJsonModule": true, - }, + "extends": "../../tsconfig.base.json", "include": ["src/**/*"], - "exclude": ["src/**/*.spec.*"], - "jsdoc": { - "out": "support/jsdoc", - "access": "public" - } + "exclude": ["src/**/*.spec.*"] } diff --git a/packages/web-api/package.json b/packages/web-api/package.json index 766073b57..036d6f438 100644 --- a/packages/web-api/package.json +++ b/packages/web-api/package.json @@ -65,7 +65,6 @@ "devDependencies": { "@tsconfig/recommended": "^1", "@types/busboy": "^1.5.4", - "@types/node": "^18.19.130", "@types/sinon": "^21", "busboy": "^1", "nock": "^14", @@ -74,8 +73,7 @@ "tsx": "^4.20.6", "tsd": "^0.33.0", "typedoc": "^0.28.7", - "typedoc-plugin-markdown": "^4.7.1", - "typescript": "5.9.3" + "typedoc-plugin-markdown": "^4.7.1" }, "tsd": { "directory": "test/types" diff --git a/packages/web-api/tsconfig.json b/packages/web-api/tsconfig.json index 936e7d63c..749075079 100644 --- a/packages/web-api/tsconfig.json +++ b/packages/web-api/tsconfig.json @@ -1,21 +1,6 @@ { "$schema": "https://json.schemastore.org/tsconfig", - "compilerOptions": { - "declaration": true, - "declarationMap": true, - "noFallthroughCasesInSwitch": true, - "noImplicitReturns": true, - "noUnusedLocals": true, - "noUnusedParameters": true, - "outDir": "dist", - "skipLibCheck": true, - "sourceMap": true - }, - "extends": "@tsconfig/recommended/tsconfig.json", + "extends": "../../tsconfig.base.json", "include": ["src/**/*"], - "exclude": ["src/**/*.test.*"], - "jsdoc": { - "out": "support/jsdoc", - "access": "public" - } + "exclude": ["src/**/*.test.*"] } diff --git a/packages/webhook/package.json b/packages/webhook/package.json index c489c7990..e324e7709 100644 --- a/packages/webhook/package.json +++ b/packages/webhook/package.json @@ -47,12 +47,10 @@ "axios": "^1.13.5" }, "devDependencies": { - "@types/node": "^18.19.130", "nock": "^14.0.6", "shx": "^0.4.0", "tsx": "^4.20.6", "typedoc": "^0.28.7", - "typedoc-plugin-markdown": "^4.7.1", - "typescript": "^5.9.3" + "typedoc-plugin-markdown": "^4.7.1" } } diff --git a/packages/webhook/tsconfig.json b/packages/webhook/tsconfig.json index 709df4fe1..749075079 100644 --- a/packages/webhook/tsconfig.json +++ b/packages/webhook/tsconfig.json @@ -1,33 +1,6 @@ { "$schema": "https://json.schemastore.org/tsconfig", - "compilerOptions": { - "target": "es2017", - "module": "commonjs", - "declaration": true, - "declarationMap": true, - "sourceMap": true, - "outDir": "dist", - "skipLibCheck": true, - "strict": true, - "noUnusedLocals": true, - "noUnusedParameters": true, - "noImplicitReturns": true, - "noFallthroughCasesInSwitch": true, - "moduleResolution": "node", - "baseUrl": ".", - "paths": { - "*": ["./types/*"] - }, - "esModuleInterop": true - // Not using this setting because it's only used to require the package.json file, and that would change the - // structure of the files in the dist directory because package.json is not located inside src. It would be nice - // to use import instead of require(), but it's not worth the tradeoff of restructuring the build (for now). - // "resolveJsonModule": true, - }, + "extends": "../../tsconfig.base.json", "include": ["src/**/*"], - "exclude": ["src/**/*.test.*"], - "jsdoc": { - "out": "support/jsdoc", - "access": "public" - } + "exclude": ["src/**/*.test.*"] } diff --git a/tsconfig.base.json b/tsconfig.base.json new file mode 100644 index 000000000..5bf2bd980 --- /dev/null +++ b/tsconfig.base.json @@ -0,0 +1,28 @@ +{ + "$schema": "https://json.schemastore.org/tsconfig", + "compilerOptions": { + "target": "es2017", + "module": "commonjs", + "declaration": true, + "declarationMap": true, + "sourceMap": true, + "outDir": "${configDir}/dist", + "skipLibCheck": true, + "strict": true, + "noUnusedLocals": true, + "noUnusedParameters": true, + "noImplicitReturns": true, + "noFallthroughCasesInSwitch": true, + "moduleResolution": "node", + "esModuleInterop": true, + "forceConsistentCasingInFileNames": true, + "baseUrl": "${configDir}", + "paths": { + "*": ["${configDir}/types/*"] + } + }, + "jsdoc": { + "out": "support/jsdoc", + "access": "public" + } +} From cc3bfc1f00a39e43ab3d5c2cf957a0626bf55342 Mon Sep 17 00:00:00 2001 From: Eden Zimbelman Date: Tue, 3 Mar 2026 15:07:00 -0800 Subject: [PATCH 4/8] chore: centralize shared shx and tsx dependencies --- package.json | 2 ++ packages/cli-hooks/package.json | 1 - packages/cli-test/package.json | 3 --- packages/logger/package.json | 2 -- packages/oauth/package.json | 2 -- packages/rtm-api/package.json | 2 -- packages/rtm-api/tsconfig.json | 2 +- packages/socket-mode/package.json | 3 --- packages/types/package.json | 1 - packages/types/tsconfig.json | 2 +- packages/web-api/package.json | 3 --- packages/webhook/package.json | 2 -- 12 files changed, 4 insertions(+), 21 deletions(-) diff --git a/package.json b/package.json index 436ab6f98..d0255ed53 100644 --- a/package.json +++ b/package.json @@ -28,6 +28,8 @@ "@biomejs/biome": "^2.0.5", "@changesets/cli": "^2.29.8", "@types/node": "^18.19.130", + "shx": "^0.4.0", + "tsx": "^4.20.6", "typescript": "5.9.3" } } diff --git a/packages/cli-hooks/package.json b/packages/cli-hooks/package.json index 3de12a0a1..4800cbb5b 100644 --- a/packages/cli-hooks/package.json +++ b/packages/cli-hooks/package.json @@ -56,7 +56,6 @@ "@types/minimist": "^1.2.5", "@types/semver": "^7.5.6", "@types/sinon": "^21.0.0", - "shx": "^0.4.0", "sinon": "^21.0.0" } } diff --git a/packages/cli-test/package.json b/packages/cli-test/package.json index e0b5af131..d1e537352 100644 --- a/packages/cli-test/package.json +++ b/packages/cli-test/package.json @@ -41,12 +41,9 @@ "winston": "^3.8.2" }, "devDependencies": { - "@tsconfig/recommended": "^1.0.6", "@types/sinon": "^21.0.0", "cross-env": "^10.0.0", - "shx": "^0.4.0", "sinon": "^21.0.0", - "tsx": "^4.20.6", "typedoc": "^0.28.7", "typedoc-plugin-markdown": "^4.7.1" } diff --git a/packages/logger/package.json b/packages/logger/package.json index 1d559d755..2acf8e9ce 100644 --- a/packages/logger/package.json +++ b/packages/logger/package.json @@ -38,8 +38,6 @@ "test:unit": "npm run build && node --experimental-test-coverage --test-reporter=spec --test-reporter-destination=stdout --test-reporter=lcov --test-reporter-destination=lcov.info --test-reporter=junit --test-reporter-destination=test-results.xml --import tsx --test src/index.test.ts" }, "devDependencies": { - "shx": "^0.4.0", - "tsx": "^4.20.6", "typedoc": "^0.28.7", "typedoc-plugin-markdown": "^4.7.1" } diff --git a/packages/oauth/package.json b/packages/oauth/package.json index c6a8db7be..d36dfed71 100644 --- a/packages/oauth/package.json +++ b/packages/oauth/package.json @@ -50,9 +50,7 @@ "devDependencies": { "@types/sinon": "^21", "rewiremock": "^3", - "shx": "^0.4.0", "sinon": "^21", - "tsx": "^4.20.6", "typedoc": "^0.28.7", "typedoc-plugin-markdown": "^4.7.0" } diff --git a/packages/rtm-api/package.json b/packages/rtm-api/package.json index e3cfdaa89..ef2dcf222 100644 --- a/packages/rtm-api/package.json +++ b/packages/rtm-api/package.json @@ -57,9 +57,7 @@ "devDependencies": { "@types/sinon": "^17", "@types/ws": "^8", - "shx": "^0.3.2", "sinon": "^21", - "tsx": "^4.20.6", "typedoc": "^0.28.7", "typedoc-plugin-markdown": "^4.7.1" } diff --git a/packages/rtm-api/tsconfig.json b/packages/rtm-api/tsconfig.json index 10107f9b5..749075079 100644 --- a/packages/rtm-api/tsconfig.json +++ b/packages/rtm-api/tsconfig.json @@ -2,5 +2,5 @@ "$schema": "https://json.schemastore.org/tsconfig", "extends": "../../tsconfig.base.json", "include": ["src/**/*"], - "exclude": ["src/**/*.spec.*"] + "exclude": ["src/**/*.test.*"] } diff --git a/packages/socket-mode/package.json b/packages/socket-mode/package.json index e5d0e96e3..f2382ea92 100644 --- a/packages/socket-mode/package.json +++ b/packages/socket-mode/package.json @@ -58,14 +58,11 @@ "ws": "^8" }, "devDependencies": { - "@tsconfig/recommended": "^1.0.7", "@types/proxyquire": "^1.3.31", "@types/sinon": "^21", "nodemon": "^3.1.0", "proxyquire": "^2.1.3", - "shx": "^0.4.0", "sinon": "^21", - "tsx": "^4.20.6", "typedoc": "^0.28.7", "typedoc-plugin-markdown": "^4.7.0" } diff --git a/packages/types/package.json b/packages/types/package.json index 52daa8802..896ff08db 100644 --- a/packages/types/package.json +++ b/packages/types/package.json @@ -39,7 +39,6 @@ "test:types": "tsd" }, "devDependencies": { - "shx": "^0.4.0", "tsd": "^0.33.0", "typedoc": "^0.28.7", "typedoc-plugin-markdown": "^4.7.1" diff --git a/packages/types/tsconfig.json b/packages/types/tsconfig.json index 10107f9b5..749075079 100644 --- a/packages/types/tsconfig.json +++ b/packages/types/tsconfig.json @@ -2,5 +2,5 @@ "$schema": "https://json.schemastore.org/tsconfig", "extends": "../../tsconfig.base.json", "include": ["src/**/*"], - "exclude": ["src/**/*.spec.*"] + "exclude": ["src/**/*.test.*"] } diff --git a/packages/web-api/package.json b/packages/web-api/package.json index 036d6f438..70feb7882 100644 --- a/packages/web-api/package.json +++ b/packages/web-api/package.json @@ -63,14 +63,11 @@ "retry": "^0.13.1" }, "devDependencies": { - "@tsconfig/recommended": "^1", "@types/busboy": "^1.5.4", "@types/sinon": "^21", "busboy": "^1", "nock": "^14", - "shx": "^0.4.0", "sinon": "^21", - "tsx": "^4.20.6", "tsd": "^0.33.0", "typedoc": "^0.28.7", "typedoc-plugin-markdown": "^4.7.1" diff --git a/packages/webhook/package.json b/packages/webhook/package.json index e324e7709..375747fc2 100644 --- a/packages/webhook/package.json +++ b/packages/webhook/package.json @@ -48,8 +48,6 @@ }, "devDependencies": { "nock": "^14.0.6", - "shx": "^0.4.0", - "tsx": "^4.20.6", "typedoc": "^0.28.7", "typedoc-plugin-markdown": "^4.7.1" } From e306a492fdaf7b493d43c7a612b170b77d167544 Mon Sep 17 00:00:00 2001 From: Eden Zimbelman Date: Tue, 3 Mar 2026 15:19:18 -0800 Subject: [PATCH 5/8] build: write all docs for workspace packages --- .claude/settings.json | 2 ++ .github/maintainers_guide.md | 8 +++++++- package.json | 3 +++ packages/cli-test/package.json | 4 +--- packages/logger/package.json | 4 ---- packages/oauth/package.json | 4 +--- packages/rtm-api/package.json | 4 +--- packages/socket-mode/package.json | 4 +--- packages/types/package.json | 4 +--- packages/web-api/package.json | 4 +--- packages/webhook/package.json | 4 +--- 11 files changed, 19 insertions(+), 26 deletions(-) diff --git a/.claude/settings.json b/.claude/settings.json index 72bbed76d..5abd7d4ab 100644 --- a/.claude/settings.json +++ b/.claude/settings.json @@ -30,6 +30,7 @@ "Bash(npm install)", "Bash(npm install:*)", "Bash(npm run build:*)", + "Bash(npm run docs:*)", "Bash(npm run lint:*)", "Bash(npm run lint:fix:*)", "Bash(npm show:*)", @@ -38,6 +39,7 @@ "Bash(nvm use:*)", "Bash(tail:*)", "Bash(tree:*)", + "WebFetch(domain:devblogs.microsoft.com)", "WebFetch(domain:docs.slack.dev)", "WebFetch(domain:github.com)", "WebFetch(domain:npmjs.com)", diff --git a/.github/maintainers_guide.md b/.github/maintainers_guide.md index 22714cacd..1ab982f1e 100644 --- a/.github/maintainers_guide.md +++ b/.github/maintainers_guide.md @@ -55,7 +55,13 @@ Remove cached project dependencies with `rm -r node_modules package-lock.json` b The reference docs for each package is independent of the others. They're generated using the `typedoc` and `typedoc-plugin-markdown` packages with the configurations of the package's `typedoc.json` file. -Each package has a script to these generate reference docs. For example: +Generate reference docs for all packages: + +```sh +npm run docs +``` + +Or generate docs for a specific package. For example: ```sh npm run docs --workspace packages/web-api diff --git a/package.json b/package.json index d0255ed53..4ab48b775 100644 --- a/package.json +++ b/package.json @@ -20,6 +20,7 @@ ], "scripts": { "changeset": "npx @changesets/cli", + "docs": "npm run docs --workspaces --if-present", "lint": "npx @biomejs/biome check packages", "lint:fix": "npx @biomejs/biome check --write packages", "test": "npm test --workspaces --if-present" @@ -30,6 +31,8 @@ "@types/node": "^18.19.130", "shx": "^0.4.0", "tsx": "^4.20.6", + "typedoc": "^0.28.7", + "typedoc-plugin-markdown": "^4.7.1", "typescript": "5.9.3" } } diff --git a/packages/cli-test/package.json b/packages/cli-test/package.json index d1e537352..5d155518c 100644 --- a/packages/cli-test/package.json +++ b/packages/cli-test/package.json @@ -43,8 +43,6 @@ "devDependencies": { "@types/sinon": "^21.0.0", "cross-env": "^10.0.0", - "sinon": "^21.0.0", - "typedoc": "^0.28.7", - "typedoc-plugin-markdown": "^4.7.1" + "sinon": "^21.0.0" } } diff --git a/packages/logger/package.json b/packages/logger/package.json index 2acf8e9ce..f44bf2baa 100644 --- a/packages/logger/package.json +++ b/packages/logger/package.json @@ -36,9 +36,5 @@ "test": "npm run test:unit", "test:node18": "npm run build && node --test --test-reporter=spec --import tsx --test src/index.test.ts", "test:unit": "npm run build && node --experimental-test-coverage --test-reporter=spec --test-reporter-destination=stdout --test-reporter=lcov --test-reporter-destination=lcov.info --test-reporter=junit --test-reporter-destination=test-results.xml --import tsx --test src/index.test.ts" - }, - "devDependencies": { - "typedoc": "^0.28.7", - "typedoc-plugin-markdown": "^4.7.1" } } diff --git a/packages/oauth/package.json b/packages/oauth/package.json index d36dfed71..ca7a5ae26 100644 --- a/packages/oauth/package.json +++ b/packages/oauth/package.json @@ -50,8 +50,6 @@ "devDependencies": { "@types/sinon": "^21", "rewiremock": "^3", - "sinon": "^21", - "typedoc": "^0.28.7", - "typedoc-plugin-markdown": "^4.7.0" + "sinon": "^21" } } diff --git a/packages/rtm-api/package.json b/packages/rtm-api/package.json index ef2dcf222..01aa0e9cc 100644 --- a/packages/rtm-api/package.json +++ b/packages/rtm-api/package.json @@ -57,8 +57,6 @@ "devDependencies": { "@types/sinon": "^17", "@types/ws": "^8", - "sinon": "^21", - "typedoc": "^0.28.7", - "typedoc-plugin-markdown": "^4.7.1" + "sinon": "^21" } } diff --git a/packages/socket-mode/package.json b/packages/socket-mode/package.json index f2382ea92..cb4d3827e 100644 --- a/packages/socket-mode/package.json +++ b/packages/socket-mode/package.json @@ -62,8 +62,6 @@ "@types/sinon": "^21", "nodemon": "^3.1.0", "proxyquire": "^2.1.3", - "sinon": "^21", - "typedoc": "^0.28.7", - "typedoc-plugin-markdown": "^4.7.0" + "sinon": "^21" } } diff --git a/packages/types/package.json b/packages/types/package.json index 896ff08db..b8ba5b5c2 100644 --- a/packages/types/package.json +++ b/packages/types/package.json @@ -39,9 +39,7 @@ "test:types": "tsd" }, "devDependencies": { - "tsd": "^0.33.0", - "typedoc": "^0.28.7", - "typedoc-plugin-markdown": "^4.7.1" + "tsd": "^0.33.0" }, "tsd": { "directory": "test" diff --git a/packages/web-api/package.json b/packages/web-api/package.json index 70feb7882..b66789b0c 100644 --- a/packages/web-api/package.json +++ b/packages/web-api/package.json @@ -68,9 +68,7 @@ "busboy": "^1", "nock": "^14", "sinon": "^21", - "tsd": "^0.33.0", - "typedoc": "^0.28.7", - "typedoc-plugin-markdown": "^4.7.1" + "tsd": "^0.33.0" }, "tsd": { "directory": "test/types" diff --git a/packages/webhook/package.json b/packages/webhook/package.json index 375747fc2..b2644500e 100644 --- a/packages/webhook/package.json +++ b/packages/webhook/package.json @@ -47,8 +47,6 @@ "axios": "^1.13.5" }, "devDependencies": { - "nock": "^14.0.6", - "typedoc": "^0.28.7", - "typedoc-plugin-markdown": "^4.7.1" + "nock": "^14.0.6" } } From 45591e1860ed38eef56805cbaef8bcdc62707338 Mon Sep 17 00:00:00 2001 From: Eden Zimbelman Date: Tue, 3 Mar 2026 16:09:37 -0800 Subject: [PATCH 6/8] ci: build docs --- .github/workflows/ci-build.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/ci-build.yml b/.github/workflows/ci-build.yml index 79059cc99..6785791d5 100644 --- a/.github/workflows/ci-build.yml +++ b/.github/workflows/ci-build.yml @@ -61,6 +61,8 @@ jobs: npm run build --workspace=@slack/socket-mode - name: Lint run: npm run lint + - name: Build docs + run: npm run docs - name: Run tests (Node 18/20) if: matrix.node-version != '22.x' shell: bash From 481067927d6cc85904d38a252166d8e772df4e35 Mon Sep 17 00:00:00 2001 From: Eden Zimbelman Date: Thu, 12 Mar 2026 16:17:56 -0700 Subject: [PATCH 7/8] chore: claude remove typescript blog --- .claude/settings.json | 1 - 1 file changed, 1 deletion(-) diff --git a/.claude/settings.json b/.claude/settings.json index 5abd7d4ab..f9d192477 100644 --- a/.claude/settings.json +++ b/.claude/settings.json @@ -39,7 +39,6 @@ "Bash(nvm use:*)", "Bash(tail:*)", "Bash(tree:*)", - "WebFetch(domain:devblogs.microsoft.com)", "WebFetch(domain:docs.slack.dev)", "WebFetch(domain:github.com)", "WebFetch(domain:npmjs.com)", From 46d89aa6cc6de37336a319cb334ad9be54f34abf Mon Sep 17 00:00:00 2001 From: Eden Zimbelman Date: Thu, 12 Mar 2026 16:26:08 -0700 Subject: [PATCH 8/8] revert: coauthored by claude --- .changeset/vast-drinks-raise.md | 5 ----- 1 file changed, 5 deletions(-) delete mode 100644 .changeset/vast-drinks-raise.md diff --git a/.changeset/vast-drinks-raise.md b/.changeset/vast-drinks-raise.md deleted file mode 100644 index 8358f0b9a..000000000 --- a/.changeset/vast-drinks-raise.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"@slack/logger": patch ---- - -build: remove @types/node from required dependencies