Skip to content

Commit 9931ec1

Browse files
authored
Merge pull request #2084 from skaut/universal-eslint
Universal eslint linting
2 parents 4bc7770 + b52c522 commit 9931ec1

File tree

8 files changed

+1038
-185
lines changed

8 files changed

+1038
-185
lines changed

packages/collector/eslint.config.js

Lines changed: 65 additions & 54 deletions
Original file line numberDiff line numberDiff line change
@@ -1,62 +1,39 @@
11
import eslintComments from "@eslint-community/eslint-plugin-eslint-comments";
22
import commentsConfig from "@eslint-community/eslint-plugin-eslint-comments/configs";
33
import js from "@eslint/js";
4+
import json from "@eslint/json";
45
import vitest from "@vitest/eslint-plugin";
6+
import packageJson from "eslint-plugin-package-json";
57
import perfectionist from "eslint-plugin-perfectionist";
68
import preferArrowFunctions from "eslint-plugin-prefer-arrow-functions";
79
import prettierRecommended from "eslint-plugin-prettier/recommended";
10+
import { globalIgnores } from "eslint/config";
811
import tseslint from "typescript-eslint";
912

1013
export default tseslint.config(
11-
js.configs.recommended,
12-
prettierRecommended,
13-
commentsConfig.recommended,
14-
...tseslint.configs.strictTypeChecked,
15-
...tseslint.configs.stylisticTypeChecked,
16-
perfectionist.configs["recommended-natural"],
14+
globalIgnores(["package-lock.json"]),
15+
packageJson.configs.recommended,
1716
{
18-
languageOptions: {
19-
parserOptions: {
20-
projectService: {
21-
allowDefaultProject: ["*.js"],
22-
defaultProject: "tsconfig.json",
23-
},
24-
},
25-
},
17+
extends: [json.configs.recommended],
18+
files: ["**/*.json"],
19+
ignores: ["package.json"],
20+
language: "json/json",
21+
},
22+
{
23+
extends: [
24+
js.configs.recommended,
25+
prettierRecommended,
26+
commentsConfig.recommended,
27+
tseslint.configs.strict,
28+
tseslint.configs.stylistic,
29+
perfectionist.configs["recommended-natural"],
30+
],
31+
files: ["**/*.js", "**/*.ts"],
2632
plugins: {
2733
"eslint-comments": eslintComments,
2834
"prefer-arrow-functions": preferArrowFunctions,
2935
},
3036
rules: {
31-
"@typescript-eslint/array-type": ["error", { default: "generic" }],
32-
"@typescript-eslint/class-methods-use-this": "error",
33-
"@typescript-eslint/consistent-type-exports": "error",
34-
"@typescript-eslint/consistent-type-imports": "error",
35-
"@typescript-eslint/default-param-last": "error",
36-
"@typescript-eslint/explicit-function-return-type": "error",
37-
"@typescript-eslint/explicit-member-accessibility": "error",
38-
"@typescript-eslint/explicit-module-boundary-types": "error",
39-
"@typescript-eslint/init-declarations": "error",
40-
"@typescript-eslint/method-signature-style": ["error", "method"],
41-
"@typescript-eslint/no-import-type-side-effects": "error",
42-
"@typescript-eslint/no-shadow": "error",
43-
"@typescript-eslint/no-unnecessary-parameter-property-assignment":
44-
"error",
45-
"@typescript-eslint/no-unnecessary-qualifier": "error",
46-
"@typescript-eslint/no-unused-vars": "error",
47-
"@typescript-eslint/no-use-before-define": [
48-
"error",
49-
{ functions: false },
50-
],
51-
"@typescript-eslint/no-useless-empty-export": "error",
52-
"@typescript-eslint/parameter-properties": "error",
53-
"@typescript-eslint/prefer-enum-initializers": "error",
54-
"@typescript-eslint/prefer-readonly": "error",
55-
"@typescript-eslint/promise-function-async": "error",
56-
"@typescript-eslint/require-array-sort-compare": "error",
57-
"@typescript-eslint/strict-boolean-expressions": "error",
58-
"@typescript-eslint/switch-exhaustiveness-check": "error",
59-
"@typescript-eslint/typedef": "error",
6037
"array-callback-return": "error",
6138
"arrow-body-style": ["error", "as-needed"],
6239
"block-scoped-var": "error",
@@ -142,10 +119,52 @@ export default tseslint.config(
142119
},
143120
},
144121
{
145-
files: ["tests/**/*.test.ts"],
146-
...vitest.configs.recommended,
122+
extends: [
123+
tseslint.configs.strictTypeChecked,
124+
tseslint.configs.stylisticTypeChecked,
125+
],
126+
files: ["**/*.ts"],
127+
languageOptions: {
128+
parserOptions: {
129+
projectService: true,
130+
},
131+
},
132+
rules: {
133+
"@typescript-eslint/array-type": ["error", { default: "generic" }],
134+
"@typescript-eslint/class-methods-use-this": "error",
135+
"@typescript-eslint/consistent-type-exports": "error",
136+
"@typescript-eslint/consistent-type-imports": "error",
137+
"@typescript-eslint/default-param-last": "error",
138+
"@typescript-eslint/explicit-function-return-type": "error",
139+
"@typescript-eslint/explicit-member-accessibility": "error",
140+
"@typescript-eslint/explicit-module-boundary-types": "error",
141+
"@typescript-eslint/init-declarations": "error",
142+
"@typescript-eslint/method-signature-style": ["error", "method"],
143+
"@typescript-eslint/no-import-type-side-effects": "error",
144+
"@typescript-eslint/no-shadow": "error",
145+
"@typescript-eslint/no-unnecessary-parameter-property-assignment":
146+
"error",
147+
"@typescript-eslint/no-unnecessary-qualifier": "error",
148+
"@typescript-eslint/no-unused-vars": "error",
149+
"@typescript-eslint/no-use-before-define": [
150+
"error",
151+
{ functions: false },
152+
],
153+
"@typescript-eslint/no-useless-empty-export": "error",
154+
"@typescript-eslint/parameter-properties": "error",
155+
"@typescript-eslint/prefer-enum-initializers": "error",
156+
"@typescript-eslint/prefer-readonly": "error",
157+
"@typescript-eslint/promise-function-async": "error",
158+
"@typescript-eslint/require-array-sort-compare": "error",
159+
"@typescript-eslint/strict-boolean-expressions": "error",
160+
"@typescript-eslint/switch-exhaustiveness-check": "error",
161+
"@typescript-eslint/typedef": "error",
162+
},
163+
},
164+
{
165+
extends: [vitest.configs.recommended],
166+
files: ["tests/**/*.ts"],
147167
rules: {
148-
...vitest.configs.recommended.rules,
149168
"vitest/consistent-test-it": ["error", { withinDescribe: "test" }],
150169
"vitest/no-alias-methods": "error",
151170
"vitest/no-conditional-expect": "error",
@@ -191,12 +210,4 @@ export default tseslint.config(
191210
"vitest/valid-expect-in-promise": "error",
192211
},
193212
},
194-
{
195-
files: ["**/*.js"],
196-
rules: {
197-
"@typescript-eslint/no-unsafe-argument": "off",
198-
"@typescript-eslint/no-unsafe-assignment": "off",
199-
"@typescript-eslint/no-unsafe-member-access": "off",
200-
},
201-
},
202213
);

0 commit comments

Comments
 (0)