Skip to content

Commit be5cd04

Browse files
joker23claude
andauthored
chore: replace eslint-config-airbnb with eslint:recommended (#1299)
## Summary - Replace unmaintained `eslint-config-airbnb-base` (v15, last published 2022) and `eslint-config-airbnb-typescript` (archived May 2025) with `eslint:recommended` + `@typescript-eslint/recommended` - Add explicit rules for `eqeqeq`, `prefer-const`, `no-var`, and `no-restricted-syntax` (drops `ForOfStatement` ban since ES2020 target makes it irrelevant) - Remove airbnb deps from all 36 `package.json` devDependencies - Fix pre-existing parsing errors via ignorePatterns, `tsconfigRootDir`, and standalone svelte `tsconfig.eslint.json` ## What changed in .eslintrc.js - **extends**: `airbnb-base` + `airbnb-typescript/base` -> `eslint:recommended` + `@typescript-eslint/recommended` - **plugins**: Added `import` (was loaded implicitly by airbnb) - **Disabled noisy rules**: `no-explicit-any`, `ban-ts-comment`, `ban-types`, `no-var-requires`, `no-this-alias`, `no-non-null-asserted-optional-chain` - **import/extensions**: Turned off (was masked by airbnb-typescript override for TS files) - **valid-typeof**: Turned off for now (re-enabled in a follow-up PR with bug fixes) - **ignorePatterns**: Added electron/example, svelte/.svelte-kit, server-ai/examples - **parserOptions**: Added `tsconfigRootDir: __dirname` and svelte tsconfig to project array ## Test plan - [ ] `yarn workspaces foreach -p run lint` passes with 0 errors - [ ] No functional code changes (config and dependency removal only) - [ ] Existing stale `eslint-disable` comments are harmless (cleaned up in follow-up PR) 🤖 Generated with [Claude Code](https://claude.com/claude-code) <!-- CURSOR_SUMMARY --> --- > [!NOTE] > **Medium Risk** > Touches repo-wide lint/TS parsing configuration and removes shared ESLint presets across many workspaces, which may cause new/changed lint failures in CI even though runtime code is unchanged. > > **Overview** > Swaps the root ESLint baseline from Airbnb TypeScript presets to `eslint:recommended` + `@typescript-eslint/recommended`, adds the missing `import` plugin explicitly, and tweaks/overrides several rules (e.g., enforcing `eqeqeq`/`no-var`, relaxing several TypeScript strictness rules, and disabling `import/extensions` and `import/export`). > > Updates ESLint parsing inputs by expanding `parserOptions.project` (including a dedicated Svelte `tsconfig.eslint.json` and setting `tsconfigRootDir`), broadens `tsconfig.eslint.json` to include `*.tsx`, and adds new `ignorePatterns` for additional generated/example directories. Removes `eslint-config-airbnb-base` and `eslint-config-airbnb-typescript` from devDependencies across the monorepo. > > <sup>Reviewed by [Cursor Bugbot](https://cursor.com/bugbot) for commit 3ee1a8f. Bugbot is set up for automated code reviews on this repo. Configure [here](https://www.cursor.com/dashboard/bugbot).</sup> <!-- /CURSOR_SUMMARY --> --------- Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
1 parent 73aee9c commit be5cd04

39 files changed

Lines changed: 40 additions & 80 deletions

File tree

.eslintrc.js

Lines changed: 29 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -3,20 +3,43 @@ module.exports = {
33
node: true,
44
'jest/globals': true,
55
},
6-
extends: ['airbnb-base', 'airbnb-typescript/base', 'prettier'],
6+
extends: ['eslint:recommended', 'plugin:@typescript-eslint/recommended', 'prettier'],
77
parser: '@typescript-eslint/parser',
88
parserOptions: {
9-
project: './tsconfig.eslint.json',
9+
project: [
10+
'./packages/sdk/svelte/tsconfig.eslint.json',
11+
'./tsconfig.eslint.json',
12+
],
13+
tsconfigRootDir: __dirname,
1014
},
11-
plugins: ['@typescript-eslint', 'prettier', 'jest'],
15+
plugins: ['@typescript-eslint', 'import', 'prettier', 'jest'],
1216
ignorePatterns: [
1317
'**/dist/**',
1418
'**/vercel/examples/**',
1519
'**/react-native/example/**',
20+
'**/electron/example/**',
21+
'**/svelte/.svelte-kit/**',
22+
'**/server-ai/examples/chat-judge/**',
23+
'**/server-ai/examples/direct-judge/**',
1624
'**/fromExternal/**',
1725
],
1826
rules: {
19-
'@typescript-eslint/lines-between-class-members': 'off',
27+
'eqeqeq': ['error', 'always', { null: 'ignore' }],
28+
'prefer-const': ['error', { ignoreReadBeforeAssign: true }],
29+
'no-var': 'error',
30+
'valid-typeof': 'off',
31+
'no-restricted-syntax': [
32+
'error',
33+
{ selector: 'ForInStatement', message: 'Use Object.{keys,values,entries} instead.' },
34+
{ selector: 'LabeledStatement', message: 'Labels are a form of GOTO.' },
35+
{ selector: 'WithStatement', message: '`with` is disallowed in strict mode.' },
36+
],
37+
'@typescript-eslint/no-explicit-any': 'off',
38+
'@typescript-eslint/ban-ts-comment': 'off',
39+
'@typescript-eslint/ban-types': 'off',
40+
'@typescript-eslint/no-var-requires': 'off',
41+
'@typescript-eslint/no-non-null-asserted-optional-chain': 'off',
42+
'@typescript-eslint/no-this-alias': 'off',
2043
'@typescript-eslint/no-unused-vars': [
2144
'error',
2245
{ ignoreRestSiblings: true, argsIgnorePattern: '^_', varsIgnorePattern: '^__' },
@@ -35,8 +58,8 @@ module.exports = {
3558
},
3659
],
3760
'import/default': 'error',
38-
'import/export': 'error',
39-
'import/extensions': ['error', 'never', { json: 'always' }],
61+
'import/export': 'off',
62+
'import/extensions': 'off',
4063
'import/no-self-import': 'error',
4164
'import/no-cycle': 'error',
4265
'import/no-useless-path-segments': 'error',

package.json

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -78,8 +78,6 @@
7878
"@typescript-eslint/eslint-plugin": "^6.20.0",
7979
"@typescript-eslint/parser": "^6.20.0",
8080
"eslint": "^8.56.0",
81-
"eslint-config-airbnb-base": "^15.0.0",
82-
"eslint-config-airbnb-typescript": "^17.1.0",
8381
"eslint-config-prettier": "^8.8.0",
8482
"eslint-plugin-import": "^2.27.5",
8583
"eslint-plugin-jest": "^27.6.3",

packages/ai-providers/server-ai-langchain/package.json

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -53,8 +53,6 @@
5353
"@typescript-eslint/eslint-plugin": "^6.20.0",
5454
"@typescript-eslint/parser": "^6.20.0",
5555
"eslint": "^8.45.0",
56-
"eslint-config-airbnb-base": "^15.0.0",
57-
"eslint-config-airbnb-typescript": "^17.1.0",
5856
"eslint-config-prettier": "^8.8.0",
5957
"eslint-plugin-import": "^2.27.5",
6058
"eslint-plugin-jest": "^27.6.3",

packages/ai-providers/server-ai-openai/package.json

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -52,8 +52,6 @@
5252
"@typescript-eslint/eslint-plugin": "^6.20.0",
5353
"@typescript-eslint/parser": "^6.20.0",
5454
"eslint": "^8.45.0",
55-
"eslint-config-airbnb-base": "^15.0.0",
56-
"eslint-config-airbnb-typescript": "^17.1.0",
5755
"eslint-config-prettier": "^8.8.0",
5856
"eslint-plugin-import": "^2.27.5",
5957
"eslint-plugin-jest": "^27.6.3",

packages/ai-providers/server-ai-vercel/package.json

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -55,8 +55,6 @@
5555
"@typescript-eslint/parser": "^6.20.0",
5656
"ai": "^5.0.0",
5757
"eslint": "^8.45.0",
58-
"eslint-config-airbnb-base": "^15.0.0",
59-
"eslint-config-airbnb-typescript": "^17.1.0",
6058
"eslint-config-prettier": "^8.8.0",
6159
"eslint-plugin-import": "^2.27.5",
6260
"eslint-plugin-jest": "^27.6.3",

packages/sdk/akamai-base/package.json

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -56,8 +56,6 @@
5656
"@typescript-eslint/eslint-plugin": "^6.20.0",
5757
"@typescript-eslint/parser": "^6.20.0",
5858
"eslint": "^8.45.0",
59-
"eslint-config-airbnb-base": "^15.0.0",
60-
"eslint-config-airbnb-typescript": "^17.1.0",
6159
"eslint-config-prettier": "^8.8.0",
6260
"eslint-plugin-import": "^2.27.5",
6361
"eslint-plugin-jest": "^27.6.3",

packages/sdk/akamai-edgekv/package.json

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -56,8 +56,6 @@
5656
"@typescript-eslint/eslint-plugin": "^6.20.0",
5757
"@typescript-eslint/parser": "^6.20.0",
5858
"eslint": "^8.45.0",
59-
"eslint-config-airbnb-base": "^15.0.0",
60-
"eslint-config-airbnb-typescript": "^17.1.0",
6159
"eslint-config-prettier": "^8.8.0",
6260
"eslint-plugin-import": "^2.27.5",
6361
"eslint-plugin-jest": "^27.6.3",

packages/sdk/browser/contract-tests/entity/package.json

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,8 +22,6 @@
2222
"@typescript-eslint/eslint-plugin": "^6.20.0",
2323
"@typescript-eslint/parser": "^6.20.0",
2424
"eslint": "^8.45.0",
25-
"eslint-config-airbnb-base": "^15.0.0",
26-
"eslint-config-airbnb-typescript": "^17.1.0",
2725
"eslint-config-prettier": "^8.8.0",
2826
"eslint-plugin-import": "^2.27.5",
2927
"eslint-plugin-jest": "^27.6.3",

packages/sdk/browser/package.json

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -54,8 +54,6 @@
5454
"@typescript-eslint/eslint-plugin": "^6.20.0",
5555
"@typescript-eslint/parser": "^6.20.0",
5656
"eslint": "^8.45.0",
57-
"eslint-config-airbnb-base": "^15.0.0",
58-
"eslint-config-airbnb-typescript": "^17.1.0",
5957
"eslint-config-prettier": "^8.8.0",
6058
"eslint-plugin-import": "^2.27.5",
6159
"eslint-plugin-jest": "^27.6.3",

packages/sdk/cloudflare/package.json

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -57,8 +57,6 @@
5757
"@typescript-eslint/eslint-plugin": "^6.20.0",
5858
"@typescript-eslint/parser": "^6.20.0",
5959
"eslint": "^8.45.0",
60-
"eslint-config-airbnb-base": "^15.0.0",
61-
"eslint-config-airbnb-typescript": "^17.1.0",
6260
"eslint-config-prettier": "^8.8.0",
6361
"eslint-plugin-import": "^2.27.5",
6462
"eslint-plugin-jest": "^27.6.3",

0 commit comments

Comments
 (0)