Skip to content

Commit 1c109eb

Browse files
fix: eslint v9
1 parent 2da06c5 commit 1c109eb

File tree

3 files changed

+149
-298
lines changed

3 files changed

+149
-298
lines changed

eslint.config.mjs

+24-48
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,8 @@
1-
import path from "node:path";
2-
3-
import { fileURLToPath } from "node:url";
4-
5-
import { fixupConfigRules } from "@eslint/compat";
6-
import { FlatCompat } from "@eslint/eslintrc";
71
import js from "@eslint/js";
82
import stylistic from "@stylistic/eslint-plugin-ts";
93
import tsParser from "@typescript-eslint/parser";
104
import love from "eslint-config-love";
11-
import importPlugin from "eslint-plugin-import-x";
5+
import importPlugin from "eslint-plugin-import";
126
import nPlugin from "eslint-plugin-n";
137
import perfectionist from "eslint-plugin-perfectionist";
148
import prettier from "eslint-plugin-prettier/recommended";
@@ -18,28 +12,8 @@ import eslintPluginUnicorn from "eslint-plugin-unicorn";
1812
import globals from "globals";
1913
import tseslint from "typescript-eslint";
2014

21-
const __filename = fileURLToPath(import.meta.url);
22-
const __dirname = path.dirname(__filename);
23-
const compat = new FlatCompat({
24-
allConfig: js.configs.all,
25-
baseDirectory: __dirname,
26-
recommendedConfig: js.configs.recommended,
27-
});
28-
29-
function fixUpLoveRules() {
30-
const rules = {};
31-
32-
const regex = new RegExp(/^import\//);
33-
34-
for (const [key, value] of Object.entries(love.rules)) {
35-
rules[key.replace(regex, "import-x/")] = value;
36-
}
37-
38-
return rules;
39-
}
40-
4115
export default tseslint.config(
42-
...fixupConfigRules(compat.extends("eslint:recommended")),
16+
js.configs.recommended,
4317
{
4418
ignores: ["dist/**", "reports/**", "coverage/**"],
4519
},
@@ -55,10 +29,10 @@ export default tseslint.config(
5529
},
5630
},
5731
plugins: {
58-
"import-x": importPlugin,
32+
import: importPlugin,
5933
},
6034
settings: {
61-
"import-x/resolver": {
35+
"import/resolver": {
6236
node: {
6337
extensions: [".d.ts", ".ts"],
6438
},
@@ -71,12 +45,12 @@ export default tseslint.config(
7145
...importPlugin.configs.recommended.rules,
7246
...eslintPluginUnicorn.configs.recommended.rules,
7347

74-
"import-x/export": ["error"],
75-
"import-x/first": ["error"],
76-
"import-x/no-absolute-path": ["error", { esmodule: true, commonjs: true, amd: false }],
77-
"import-x/no-duplicates": ["error"],
78-
"import-x/no-named-default": ["error"],
79-
"import-x/no-webpack-loader-syntax": ["error"],
48+
"import/export": ["error"],
49+
"import/first": ["error"],
50+
"import/no-absolute-path": ["error", { esmodule: true, commonjs: true, amd: false }],
51+
"import/no-duplicates": ["error"],
52+
"import/no-named-default": ["error"],
53+
"import/no-webpack-loader-syntax": ["error"],
8054
"arrow-body-style": ["error", "always"],
8155

8256
curly: ["error", "all"],
@@ -122,26 +96,26 @@ export default tseslint.config(
12296
"unicorn/no-null": ["off"],
12397
"unicorn/prefer-ternary": ["off"],
12498

125-
"import-x/extensions": [
99+
"import/extensions": [
126100
"error",
127101
"never",
128102
{
129103
json: "always",
130104
},
131105
],
132-
"import-x/newline-after-import": ["error"],
133-
"import-x/no-cycle": ["off"],
134-
"import-x/no-extraneous-dependencies": ["off"],
135-
"import-x/no-relative-packages": ["error"],
136-
"import-x/no-unresolved": ["error"],
137-
"import-x/order": [
106+
"import/newline-after-import": ["error"],
107+
"import/no-cycle": ["off"],
108+
"import/no-extraneous-dependencies": ["off"],
109+
"import/no-relative-packages": ["error"],
110+
"import/no-unresolved": ["error"],
111+
"import/order": [
138112
"error",
139113
{
140114
alphabetize: { caseInsensitive: true, order: "asc" },
141115
"newlines-between": "always-and-inside-groups",
142116
},
143117
],
144-
"import-x/prefer-default-export": ["off"],
118+
"import/prefer-default-export": ["off"],
145119
},
146120
},
147121
...tseslint.configs.strictTypeChecked,
@@ -160,13 +134,13 @@ export default tseslint.config(
160134
},
161135
plugins: {
162136
"@stylistic/ts": stylistic,
163-
"import-x": importPlugin,
137+
import: importPlugin,
164138
n: nPlugin,
165139
promise,
166140
perfectionist,
167141
},
168142
settings: {
169-
"import-x/resolver": {
143+
"import/resolver": {
170144
node: {
171145
extensions: [".ts"],
172146
},
@@ -177,7 +151,7 @@ export default tseslint.config(
177151
},
178152
rules: {
179153
...importPlugin.configs.typescript.rules,
180-
...fixUpLoveRules(),
154+
...love.rules,
181155

182156
"@stylistic/ts/no-extra-semi": ["error"],
183157
"@typescript-eslint/array-type": ["error", { default: "array" }],
@@ -191,6 +165,8 @@ export default tseslint.config(
191165
},
192166
],
193167

168+
"@typescript-eslint/prefer-destructuring": ["off"],
169+
194170
"@typescript-eslint/explicit-member-accessibility": ["error"],
195171

196172
"@typescript-eslint/explicit-module-boundary-types": ["error"],
@@ -263,7 +239,7 @@ export default tseslint.config(
263239

264240
"@typescript-eslint/unified-signatures": ["error"],
265241

266-
"import-x/consistent-type-specifier-style": ["error", "prefer-top-level"],
242+
"import/consistent-type-specifier-style": ["error", "prefer-top-level"],
267243

268244
"n/handle-callback-err": ["error", "^(err|error)$"],
269245
"n/no-callback-literal": ["error"],

0 commit comments

Comments
 (0)