Skip to content

Commit 54a11c6

Browse files
authored
Migrate ESLint to the latest config style (#72)
1 parent 7cd1cb0 commit 54a11c6

File tree

3 files changed

+173
-221
lines changed

3 files changed

+173
-221
lines changed

eslint.config.js

Lines changed: 85 additions & 76 deletions
Original file line numberDiff line numberDiff line change
@@ -1,94 +1,103 @@
1-
import {FlatCompat} from "@eslint/eslintrc";
2-
import js from "@eslint/js";
3-
4-
const config = {
5-
"env": {
6-
"commonjs": true,
7-
"es6": true,
8-
"node": true,
9-
},
10-
"ignorePatterns": ["docs/", "site/"],
11-
"extends": "eslint:recommended",
12-
"globals": {
13-
"Atomics": "readonly",
14-
"SharedArrayBuffer": "readonly",
15-
},
16-
"parserOptions": {
17-
"ecmaVersion": 2020,
18-
"sourceType": "module",
19-
},
20-
"rules": {
21-
"no-empty": ["error", {"allowEmptyCatch": true}],
22-
"no-unused-vars": ["error", {"caughtErrors": "none"}],
23-
"prefer-const": "error",
1+
import {defineConfig, globalIgnores} from "eslint/config";
2+
import eslint from "@eslint/js";
3+
import globals from "globals";
4+
import stylistic from "@stylistic/eslint-plugin";
245

6+
export default defineConfig([
7+
globalIgnores([
8+
"docs/",
9+
"site/",
10+
]),
11+
stylistic.configs.customize({
12+
indent: 4,
13+
quotes: "double",
14+
semi: true,
15+
braceStyle: "1tbs",
16+
}),
17+
eslint.configs.recommended,
18+
{languageOptions: {
19+
sourceType: "module",
20+
parserOptions: {
21+
ecmaVersion: 2020,
22+
},
23+
globals: {
24+
...globals.node,
25+
},
26+
}},
27+
{rules: {
28+
"@stylistic/array-bracket-spacing": "error",
29+
"@stylistic/arrow-parens": ["error", "always"],
30+
"@stylistic/arrow-spacing": "error",
31+
"@stylistic/brace-style": "error",
32+
"@stylistic/comma-dangle": ["error", "always-multiline"],
33+
"@stylistic/comma-spacing": "error",
34+
"@stylistic/comma-style": "error",
35+
"@stylistic/computed-property-spacing": "error",
36+
"@stylistic/eol-last": "error",
37+
"@stylistic/function-call-spacing": "error",
38+
"@stylistic/generator-star-spacing": ["error", "after"],
39+
"@stylistic/implicit-arrow-linebreak": "error",
40+
"@stylistic/key-spacing": "error",
41+
"@stylistic/keyword-spacing": "error",
42+
"@stylistic/no-confusing-arrow": "error",
43+
"@stylistic/no-extra-semi": "error",
44+
"@stylistic/no-multi-spaces": ["error"],
45+
"@stylistic/no-multiple-empty-lines": "error",
46+
"@stylistic/no-trailing-spaces": "error",
47+
"@stylistic/no-whitespace-before-property": "error",
48+
"@stylistic/object-curly-spacing": ["error", "never"],
49+
"@stylistic/padded-blocks": ["error", "never"],
50+
"@stylistic/quote-props": "off",
51+
"@stylistic/quotes": ["error", "double"],
52+
"@stylistic/rest-spread-spacing": "error",
53+
"@stylistic/semi": "error",
54+
"@stylistic/semi-spacing": "error",
55+
"@stylistic/semi-style": "error",
56+
"@stylistic/space-before-function-paren": ["error", {anonymous: "always", named: "never", asyncArrow: "always"}],
57+
"@stylistic/space-in-parens": ["error", "never"],
58+
"@stylistic/space-infix-ops": "error",
59+
"@stylistic/space-unary-ops": "error",
60+
"@stylistic/spaced-comment": ["error", "always", {markers: ["/"]}],
61+
"@stylistic/switch-colon-spacing": "error",
62+
"@stylistic/template-curly-spacing": "error",
63+
"@stylistic/template-tag-spacing": "error",
64+
"@stylistic/type-annotation-spacing": "error",
65+
"@stylistic/yield-star-spacing": "error",
66+
"arrow-body-style": ["error", "as-needed"],
2567
"block-scoped-var": "error",
68+
"camelcase": "error",
2669
"consistent-return": "error",
27-
"curly": "error",
28-
"eqeqeq": "error",
70+
"curly": ["error", "all"],
71+
"eqeqeq": ["error", "always", {"null": "ignore"}],
72+
"func-style": ["error", "declaration"],
73+
"max-len": ["error", {code: 120, ignoreStrings: true, ignoreTemplateLiterals: true}],
74+
"no-cond-assign": ["error", "except-parens"],
75+
"no-duplicate-imports": "error",
76+
"no-empty": ["error", {allowEmptyCatch: true}],
2977
"no-floating-decimal": "error",
3078
"no-implicit-globals": "error",
3179
"no-implied-eval": "error",
32-
"no-multi-spaces": "error",
80+
"no-mixed-operators": "error",
3381
"no-multi-str": "error",
3482
"no-return-assign": "error",
3583
"no-return-await": "error",
3684
"no-self-compare": "error",
3785
"no-sequences": "error",
38-
"no-useless-return": "error",
39-
"yoda": "error",
40-
41-
"brace-style": "error",
42-
"camelcase": "error",
43-
"comma-dangle": ["error", "always-multiline"],
44-
"comma-spacing": "error",
45-
"comma-style": "error",
46-
"computed-property-spacing": "error",
47-
"eol-last": "error",
48-
"func-call-spacing": "error",
49-
"implicit-arrow-linebreak": "error",
50-
"indent": "error",
51-
"key-spacing": "error",
52-
"keyword-spacing": "error",
53-
"max-len": ["error", {"code": 100, "ignoreStrings": true, "ignoreTemplateLiterals": true}],
54-
"no-mixed-operators": "error",
55-
"no-multiple-empty-lines": "error",
56-
"no-trailing-spaces": "error",
5786
"no-unneeded-ternary": "error",
58-
"no-whitespace-before-property": "error",
59-
"object-curly-spacing": ["error", "never"],
60-
"operator-assignment": "error",
61-
"padded-blocks": ["error", "never"],
62-
"quotes": "error",
63-
"semi": "error",
64-
"semi-spacing": "error",
65-
"semi-style": "error",
66-
"space-before-function-paren": ["error", {
67-
"anonymous": "always", "named": "never", "asyncArrow": "always",
68-
}],
69-
"space-infix-ops": "error",
70-
"space-unary-ops": "error",
71-
"spaced-comment": "error",
72-
"switch-colon-spacing": "error",
73-
"template-tag-spacing": "error",
74-
"unicode-bom": "error",
75-
76-
"arrow-body-style": "error",
77-
"arrow-parens": "error",
78-
"arrow-spacing": "error",
79-
"generator-star-spacing": ["error", "after"],
80-
"no-duplicate-imports": "error",
87+
"no-unused-vars": ["error", {"caughtErrors": "none"}],
88+
"no-useless-return": "error",
8189
"no-var": "error",
90+
"operator-assignment": "error",
91+
"prefer-arrow-callback": "error",
92+
"prefer-const": ["error", {"destructuring": "all"}],
8293
"prefer-destructuring": "error",
8394
"prefer-numeric-literals": "error",
8495
"prefer-rest-params": "error",
8596
"prefer-spread": "error",
86-
"rest-spread-spacing": "error",
97+
"require-await": "error",
8798
"sort-imports": "error",
88-
"template-curly-spacing": "error",
89-
"yield-star-spacing": "error",
90-
},
91-
};
92-
93-
const compat = new FlatCompat({recommendedConfig: js.configs.recommended});
94-
export default compat.config(config);
99+
"sort-keys": ["error", "asc", {minKeys: 10}],
100+
"unicode-bom": "error",
101+
"yoda": "error",
102+
}},
103+
]);

0 commit comments

Comments
 (0)