Skip to content

Commit cf980df

Browse files
fix: update override patterns and minor changes to base config
1 parent decc7d9 commit cf980df

14 files changed

+137
-47
lines changed

.cspell.json

+4
Original file line numberDiff line numberDiff line change
@@ -35,13 +35,17 @@
3535
"words": [
3636
"bar",
3737
"baz",
38+
"cjsx",
3839
"corge",
40+
"ctsx",
3941
"foo",
4042
"fred",
4143
"garply",
4244
"grault",
4345
"litecoin",
46+
"mjsx",
4447
"monero",
48+
"mtsx",
4549
"noreply",
4650
"plugh",
4751
"quux",

src/builtin/deprecated.ts

+2
Original file line numberDiff line numberDiff line change
@@ -25,3 +25,5 @@ export const rules: Linter.Config["rules"] = {
2525
"require-jsdoc": "off",
2626
"valid-jsdoc": "off",
2727
};
28+
29+
export const overrides: NonNullable<Linter.Config["overrides"]> = [];

src/builtin/index.ts

+27-8
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,32 @@
11
import type { Linter } from "eslint";
22

3-
import { rules as deprecated } from "./deprecated";
4-
import { rules as layout } from "./layout+formatting";
5-
import { rules as possibleProblems } from "./possible-problems";
6-
import { rules as suggestions } from "./suggestions";
3+
import {
4+
rules as deprecatedRules,
5+
overrides as deprecatedOverrides,
6+
} from "./deprecated";
7+
import {
8+
rules as layoutRules,
9+
overrides as layoutOverrides,
10+
} from "./layout+formatting";
11+
import {
12+
rules as possibleProblemsRules,
13+
overrides as possibleProblemsOverrides,
14+
} from "./possible-problems";
15+
import {
16+
rules as suggestionsRules,
17+
overrides as suggestionsOverrides,
18+
} from "./suggestions";
719

820
export const rules: Linter.Config["rules"] = {
9-
...possibleProblems,
10-
...suggestions,
11-
...layout,
12-
...deprecated,
21+
...possibleProblemsRules,
22+
...suggestionsRules,
23+
...layoutRules,
24+
...deprecatedRules,
1325
};
26+
27+
export const overrides: NonNullable<Linter.Config["overrides"]> = [
28+
...deprecatedOverrides,
29+
...layoutOverrides,
30+
...possibleProblemsOverrides,
31+
...suggestionsOverrides,
32+
];

src/builtin/layout+formatting.ts

+2
Original file line numberDiff line numberDiff line change
@@ -290,3 +290,5 @@ export const rules: Linter.Config["rules"] = {
290290
],
291291
"yield-star-spacing": ["error", "after"],
292292
};
293+
294+
export const overrides: NonNullable<Linter.Config["overrides"]> = [];

src/builtin/possible-problems.ts

+2
Original file line numberDiff line numberDiff line change
@@ -82,3 +82,5 @@ export const rules: Linter.Config["rules"] = {
8282
},
8383
],
8484
};
85+
86+
export const overrides: NonNullable<Linter.Config["overrides"]> = [];

src/builtin/suggestions.ts

+10
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
import { typescriptDeclarationFiles } from "common/files";
12
import type { Linter } from "eslint";
23

34
const useNumberIsFinite = "Please use Number.isFinite instead";
@@ -182,3 +183,12 @@ export const rules: Linter.Config["rules"] = {
182183
"symbol-description": "error",
183184
"yoda": ["error", "never"],
184185
};
186+
187+
export const overrides: NonNullable<Linter.Config["overrides"]> = [
188+
{
189+
files: typescriptDeclarationFiles,
190+
rules: {
191+
"init-declarations": "off",
192+
},
193+
},
194+
];

src/common/files.ts

+5
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
export const typescriptFiles = ["**/*.{ts,tsx,mts,mtsx,cts,ctsx}"];
2+
export const typescriptDeclarationFiles = ["**/*.d.{ts,mts,cts}"];
3+
export const jsxFiles = ["**/*.{jsx,cjsx,mjsx,tsx,ctsx,mtsx}"];
4+
export const testFiles = ["{test,tests}/**/*", "**/*.{spec,test}.*"];
5+
export const commonJsFiles = ["**/*.{cjs,cts}"];

src/configs/common-overrides.ts

+11-7
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
import { jsxFiles, testFiles } from "common/files";
12
import type { Linter } from "eslint";
23

34
export default {
@@ -16,16 +17,19 @@ export default {
1617
extends: ["@rebeccastevens/eslint-config/script"],
1718
},
1819
{
19-
files: ["{test,tests}/**/*", "**/*.test.*"],
20+
files: testFiles,
2021
extends: ["@rebeccastevens/eslint-config/test"],
2122
},
2223
{
23-
files: ["**/*.{cjs,cts}"],
24-
rules: {
25-
"@typescript-eslint/no-var-requires": "off",
26-
"import/no-dynamic-require": "off",
27-
"node/no-missing-require": "off",
28-
"unicorn/prefer-module": "off",
24+
files: jsxFiles,
25+
parserOptions: {
26+
ecmaVersion: "latest",
27+
sourceType: "module",
28+
ecmaFeatures: {
29+
globalReturn: false,
30+
impliedStrict: true,
31+
jsx: true,
32+
},
2933
},
3034
},
3135
],

src/configs/modern.ts

+9-7
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,10 @@
11
import { deepmerge } from "deepmerge-ts";
22
import type { Linter } from "eslint";
33

4-
import { rules as builtinRules } from "~/builtin";
4+
import {
5+
rules as builtinRules,
6+
overrides as builtinOverrides,
7+
} from "~/builtin";
58
import { settings as eslintComments } from "~/plugins/eslint-comments";
69
import { settings as functional } from "~/plugins/functional";
710
import { settings as importPlugin } from "~/plugins/import";
@@ -17,24 +20,23 @@ const baseConfig: Linter.Config = {
1720
parser: "babel-eslint",
1821

1922
parserOptions: {
20-
ecmaVersion: 2021,
23+
ecmaVersion: "latest",
2124
ecmaFeatures: {
2225
globalReturn: false,
2326
impliedStrict: true,
2427
},
2528
sourceType: "module",
26-
extraFileExtensions: [".cjs", ".mjs"],
2729
},
2830

2931
extends: ["eslint:recommended"],
3032

31-
env: {
32-
es6: true,
33-
},
34-
3533
rules: builtinRules,
3634

35+
overrides: builtinOverrides,
36+
3737
ignorePatterns: ["dist/"],
38+
39+
reportUnusedDisableDirectives: true,
3840
};
3941

4042
export default deepmerge(

src/configs/typescript.ts

+10-24
Original file line numberDiff line numberDiff line change
@@ -33,36 +33,22 @@ const baseConfig: Linter.Config = {
3333
".tsx",
3434
".mjs",
3535
".mts",
36+
".mtsx",
3637
".cjs",
3738
".cts",
39+
".ctsx",
3840
],
3941
"import/parsers": {
40-
"@typescript-eslint/parser": [".ts", ".tsx", ".mts", ".cts"],
42+
"@typescript-eslint/parser": [
43+
".ts",
44+
".tsx",
45+
".mts",
46+
".mtsx",
47+
".cts",
48+
".ctsx",
49+
],
4150
},
4251
},
43-
44-
overrides: [
45-
{
46-
files: ["**/*.{ts,tsx,mts,cts}"],
47-
rules: {
48-
"import/no-unresolved": "off",
49-
"import/named": "off",
50-
"import/default": "off",
51-
"import/namespace": "off",
52-
53-
"node/no-unsupported-features/es-syntax": "off",
54-
},
55-
},
56-
{
57-
files: "**/*.d.{ts,mts,cts}",
58-
rules: {
59-
"@typescript-eslint/consistent-type-definitions": "off",
60-
"@typescript-eslint/triple-slash-reference": "off",
61-
62-
"init-declarations": "off",
63-
},
64-
},
65-
],
6652
};
6753

6854
export default deepmerge(baseConfig, typescript);

src/plugins/import.ts

+12-1
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
import { commonJsFiles, typescriptFiles } from "common/files";
12
import type { Linter } from "eslint";
23

34
export const settings: Linter.Config = {
@@ -150,9 +151,19 @@ export const settings: Linter.Config = {
150151

151152
overrides: [
152153
{
153-
files: ["**/*.cjs"],
154+
files: commonJsFiles,
154155
rules: {
155156
"import/no-commonjs": "off",
157+
"import/no-dynamic-require": "off",
158+
},
159+
},
160+
{
161+
files: typescriptFiles,
162+
rules: {
163+
"import/no-unresolved": "off",
164+
"import/named": "off",
165+
"import/default": "off",
166+
"import/namespace": "off",
156167
},
157168
},
158169
],

src/plugins/node.ts

+16
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
import { commonJsFiles, typescriptFiles } from "common/files";
12
import type { Linter } from "eslint";
23

34
export const settings: Linter.Config = {
@@ -36,4 +37,19 @@ export const settings: Linter.Config = {
3637
"node/prefer-promises/dns": "error",
3738
"node/prefer-promises/fs": "error",
3839
},
40+
41+
overrides: [
42+
{
43+
files: commonJsFiles,
44+
rules: {
45+
"node/no-missing-require": "off",
46+
},
47+
},
48+
{
49+
files: typescriptFiles,
50+
rules: {
51+
"node/no-unsupported-features/es-syntax": "off",
52+
},
53+
},
54+
],
3955
};

src/plugins/typescript.ts

+17
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
import { commonJsFiles, typescriptDeclarationFiles } from "common/files";
12
import type { Linter } from "eslint";
23

34
export const settings: Linter.Config = {
@@ -266,4 +267,20 @@ export const settings: Linter.Config = {
266267
"@typescript-eslint/unified-signatures": "warn",
267268
"@typescript-eslint/no-redeclare": "error",
268269
},
270+
271+
overrides: [
272+
{
273+
files: commonJsFiles,
274+
rules: {
275+
"@typescript-eslint/no-var-requires": "off",
276+
},
277+
},
278+
{
279+
files: typescriptDeclarationFiles,
280+
rules: {
281+
"@typescript-eslint/consistent-type-definitions": "off",
282+
"@typescript-eslint/triple-slash-reference": "off",
283+
},
284+
},
285+
],
269286
};

src/plugins/unicorn.ts

+10
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
import { commonJsFiles } from "common/files";
12
import type { Linter } from "eslint";
23

34
export const settings: Linter.Config = {
@@ -27,4 +28,13 @@ export const settings: Linter.Config = {
2728
"unicorn/prefer-top-level-await": "error",
2829
"unicorn/prevent-abbreviations": "off",
2930
},
31+
32+
overrides: [
33+
{
34+
files: commonJsFiles,
35+
rules: {
36+
"unicorn/prefer-module": "off",
37+
},
38+
},
39+
],
3040
};

0 commit comments

Comments
 (0)