Skip to content

Commit f789da0

Browse files
committed
fix(deps): Migrate to ESLint 10 flat config
Upgrade ESLint and related plugins to latest major versions. Migrate from legacy .eslintrc to eslint.config.js (flat config) as required by ESLint 10. Replace eslint-plugin-import with eslint-plugin-import-x for ESLint 10 compatibility. Replace separate @typescript-eslint packages with unified typescript-eslint.
1 parent 0ebbbaa commit f789da0

File tree

15 files changed

+492
-412
lines changed

15 files changed

+492
-412
lines changed

.eslintrc

Lines changed: 0 additions & 68 deletions
This file was deleted.

eslint.config.js

Lines changed: 94 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,94 @@
1+
import eslint from '@eslint/js';
2+
import tseslint from 'typescript-eslint';
3+
import eslintConfigPrettier from 'eslint-config-prettier/flat';
4+
import eslintPluginUnicorn from 'eslint-plugin-unicorn';
5+
import nodePlugin from 'eslint-plugin-n';
6+
import pluginPromise from 'eslint-plugin-promise';
7+
import pluginAva from 'eslint-plugin-ava';
8+
import unusedImports from 'eslint-plugin-unused-imports';
9+
import importPlugin from 'eslint-plugin-import-x';
10+
import { createTypeScriptImportResolver } from 'eslint-import-resolver-typescript';
11+
12+
export default tseslint.config(
13+
{
14+
ignores: ['dist/**', 'node_modules/**'],
15+
},
16+
17+
eslint.configs.recommended,
18+
...tseslint.configs.recommended,
19+
{
20+
languageOptions: {
21+
parserOptions: {
22+
projectService: true,
23+
tsconfigRootDir: import.meta.dirname,
24+
},
25+
},
26+
},
27+
importPlugin.flatConfigs.recommended,
28+
importPlugin.flatConfigs.typescript,
29+
eslintPluginUnicorn.configs.recommended,
30+
nodePlugin.configs['flat/recommended-module'],
31+
pluginPromise.configs['flat/recommended'],
32+
...pluginAva.configs['recommended'],
33+
eslintConfigPrettier,
34+
35+
{
36+
files: ['src/**/*.ts'],
37+
plugins: {
38+
'unused-imports': unusedImports,
39+
},
40+
settings: {
41+
'import-x/resolver-next': [
42+
createTypeScriptImportResolver({
43+
project: './tsconfig.json',
44+
}),
45+
],
46+
},
47+
rules: {
48+
'unicorn/no-null': 'off',
49+
'unicorn/prevent-abbreviations': 'off',
50+
'unicorn/consistent-function-scoping': 'off',
51+
'n/no-missing-import': 'off',
52+
'n/no-unsupported-features/node-builtins': 'off',
53+
'import-x/no-named-as-default': 'off',
54+
'unused-imports/no-unused-imports': 'error',
55+
'no-console': 'error',
56+
'require-await': 'off',
57+
'@typescript-eslint/require-await': 'error',
58+
'@typescript-eslint/naming-convention': 'error',
59+
'import-x/no-cycle': 'error',
60+
'import-x/no-self-import': 'error',
61+
'@typescript-eslint/consistent-type-imports': 'error',
62+
'import-x/order': [
63+
'error',
64+
{
65+
'newlines-between': 'always',
66+
alphabetize: { order: 'asc', caseInsensitive: true },
67+
},
68+
],
69+
},
70+
},
71+
72+
{
73+
files: ['src/grpc/**/*.ts'],
74+
rules: {
75+
'@typescript-eslint/naming-convention': 'off',
76+
'@typescript-eslint/no-require-imports': 'off',
77+
},
78+
},
79+
80+
{
81+
files: ['**/*test.ts'],
82+
rules: {
83+
'unicorn/no-array-for-each': 'off',
84+
'ava/no-conditional-assertion': 'off',
85+
},
86+
},
87+
88+
{
89+
files: ['src/errors/errors.ts'],
90+
rules: {
91+
'@typescript-eslint/naming-convention': 'off',
92+
},
93+
},
94+
);

package.json

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -23,8 +23,8 @@
2323
"build": "rm -rf dist && tsc",
2424
"format": "prettier --write 'src/**/*.ts'",
2525
"format:check": "prettier --check 'src/**/*.ts'",
26-
"lint": "eslint --max-warnings 0 --ext .ts src",
27-
"lint:fix": "eslint --max-warnings 0 --ext .ts --fix src",
26+
"lint": "eslint --max-warnings 0 src",
27+
"lint:fix": "eslint --max-warnings 0 --fix src",
2828
"test": "ava --timeout=10m"
2929
},
3030
"description": "This is the high-level package to use for developing CloudQuery plugins in JavaScript",
@@ -55,21 +55,18 @@
5555
"@types/semver": "^7.5.8",
5656
"@types/uuid": "^11.0.0",
5757
"@types/yargs": "^17.0.24",
58-
"@typescript-eslint/eslint-plugin": "^8.0.0",
59-
"@typescript-eslint/parser": "^8.0.0",
6058
"ava": "^7.0.0",
6159
"eslint": "^10.0.0",
6260
"eslint-config-prettier": "^10.0.0",
63-
"eslint-config-standard": "^17.1.0",
6461
"eslint-import-resolver-typescript": "^4.0.0",
6562
"eslint-plugin-ava": "^16.0.0",
66-
"eslint-plugin-import": "^2.28.0",
63+
"eslint-plugin-import-x": "^4.0.0",
6764
"eslint-plugin-n": "^17.0.0",
6865
"eslint-plugin-prettier": "^5.0.0",
6966
"eslint-plugin-promise": "^7.0.0",
7067
"eslint-plugin-unicorn": "^63.0.0",
7168
"eslint-plugin-unused-imports": "^4.0.0",
72-
"eslint-plugin-you-dont-need-lodash-underscore": "^6.12.0",
69+
"typescript-eslint": "^8.0.0",
7370
"prettier": "^3.0.1",
7471
"tempy": "^3.1.0",
7572
"ts-node": "^10.9.1",

0 commit comments

Comments
 (0)