Skip to content

Commit 70f169d

Browse files
authored
Add strict presets to x and dom plugins (#1267)
1 parent 13a4f16 commit 70f169d

File tree

14 files changed

+131
-39
lines changed

14 files changed

+131
-39
lines changed
Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
import type { RuleConfig } from "@eslint-react/kit";
22
import { DEFAULT_ESLINT_REACT_SETTINGS } from "@eslint-react/shared";
33

4+
import { plugin } from "../plugin";
5+
46
export const name = "react-dom/recommended";
57

68
export const rules = {
@@ -9,19 +11,19 @@ export const rules = {
911
"react-dom/no-find-dom-node": "error",
1012
"react-dom/no-flush-sync": "error",
1113
"react-dom/no-hydrate": "error",
12-
"react-dom/no-missing-button-type": "warn",
13-
"react-dom/no-missing-iframe-sandbox": "warn",
1414
"react-dom/no-namespace": "error",
1515
"react-dom/no-render": "error",
1616
"react-dom/no-render-return-value": "error",
1717
"react-dom/no-script-url": "warn",
18-
"react-dom/no-string-style-prop": "error",
1918
"react-dom/no-unsafe-iframe-sandbox": "warn",
20-
"react-dom/no-unsafe-target-blank": "warn",
2119
"react-dom/no-use-form-state": "error",
2220
"react-dom/no-void-elements-with-children": "error",
2321
} as const satisfies Record<string, RuleConfig>;
2422

23+
export const plugins = {
24+
"react-dom": plugin,
25+
};
26+
2527
export const settings = {
2628
"react-x": DEFAULT_ESLINT_REACT_SETTINGS,
2729
};
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
import type { RuleConfig } from "@eslint-react/kit";
2+
3+
import * as recommendedConfig from "./recommended";
4+
5+
export const name = "react-dom/strict";
6+
7+
export const rules = {
8+
...recommendedConfig.rules,
9+
"react-dom/no-missing-button-type": "warn",
10+
"react-dom/no-missing-iframe-sandbox": "warn",
11+
"react-dom/no-unsafe-target-blank": "warn",
12+
} as const satisfies Record<string, RuleConfig>;
13+
14+
export const plugins = {
15+
...recommendedConfig.plugins,
16+
};
17+
18+
export const settings = {
19+
...recommendedConfig.settings,
20+
};

packages/plugins/eslint-plugin-react-dom/src/index.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import { getConfigAdapters } from "@eslint-react/shared";
22

33
import * as recommendedConfig from "./configs/recommended";
4+
import * as strictConfig from "./configs/strict";
45
import { plugin } from "./plugin";
56

67
const { toFlatConfig } = getConfigAdapters("react-dom", plugin);
@@ -9,5 +10,6 @@ export default {
910
...plugin,
1011
configs: {
1112
["recommended"]: toFlatConfig(recommendedConfig),
13+
["strict"]: toFlatConfig(strictConfig),
1214
},
1315
};
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
import type { RuleConfig } from "@eslint-react/kit";
2+
3+
export const rules = {
4+
"react-x/no-leaked-conditional-rendering": "warn",
5+
"react-x/no-unused-props": "warn",
6+
} as const satisfies Record<string, RuleConfig>;
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
import type { RuleConfig } from "@eslint-react/kit";
2+
3+
export const rules = {
4+
"react-x/jsx-no-duplicate-props": "off",
5+
"react-x/jsx-no-undef": "off",
6+
"react-x/jsx-uses-react": "off",
7+
"react-x/jsx-uses-vars": "off",
8+
} as const satisfies Record<string, RuleConfig>;
Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,19 @@
11
import type { RuleConfig } from "@eslint-react/kit";
22

3-
import * as recommendedTypeScript from "./recommended-typescript";
3+
import * as tc from "./_tc";
4+
import * as recommendedTypescript from "./recommended-typescript";
45

56
export const name = "react-x/recommended-type-checked";
67

78
export const rules = {
8-
...recommendedTypeScript.rules,
9-
"react-x/no-leaked-conditional-rendering": "warn",
10-
"react-x/no-unused-props": "warn",
9+
...recommendedTypescript.rules,
10+
...tc.rules,
1111
} as const satisfies Record<string, RuleConfig>;
1212

13+
export const plugins = {
14+
...recommendedTypescript.plugins,
15+
};
16+
1317
export const settings = {
14-
...recommendedTypeScript.settings,
18+
...recommendedTypescript.settings,
1519
};
Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,19 @@
11
import type { RuleConfig } from "@eslint-react/kit";
22

3+
import * as ts from "./_ts";
34
import * as recommended from "./recommended";
45

56
export const name = "react-x/recommended-typescript";
67

78
export const rules = {
89
...recommended.rules,
9-
"react-x/jsx-no-duplicate-props": "off",
10-
"react-x/jsx-no-undef": "off",
11-
"react-x/jsx-uses-react": "off",
12-
"react-x/jsx-uses-vars": "off",
10+
...ts.rules,
1311
} as const satisfies Record<string, RuleConfig>;
1412

13+
export const plugins = {
14+
...recommended.plugins,
15+
};
16+
1517
export const settings = {
1618
...recommended.settings,
1719
};
Lines changed: 6 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,13 @@
11
import type { RuleConfig } from "@eslint-react/kit";
22
import { DEFAULT_ESLINT_REACT_SETTINGS } from "@eslint-react/shared";
33

4+
import { plugin } from "../plugin";
5+
46
export const name = "react-x/recommended";
57

68
export const rules = {
79
"react-x/jsx-no-comment-textnodes": "warn",
810
"react-x/jsx-no-duplicate-props": "warn",
9-
"react-x/jsx-no-iife": "off",
10-
"react-x/jsx-no-undef": "off",
11-
"react-x/jsx-shorthand-boolean": "off",
12-
"react-x/jsx-shorthand-fragment": "off",
1311
"react-x/jsx-uses-react": "warn",
1412
"react-x/jsx-uses-vars": "warn",
1513
"react-x/no-access-state-in-setstate": "error",
@@ -18,9 +16,7 @@ export const rules = {
1816
"react-x/no-children-for-each": "warn",
1917
"react-x/no-children-map": "warn",
2018
"react-x/no-children-only": "warn",
21-
"react-x/no-children-prop": "off",
2219
"react-x/no-children-to-array": "warn",
23-
"react-x/no-class-component": "off",
2420
"react-x/no-clone-element": "warn",
2521
"react-x/no-component-will-mount": "error",
2622
"react-x/no-component-will-receive-props": "error",
@@ -30,14 +26,9 @@ export const rules = {
3026
"react-x/no-default-props": "error",
3127
"react-x/no-direct-mutation-state": "error",
3228
"react-x/no-duplicate-key": "error",
33-
"react-x/no-forbidden-props": "off",
3429
"react-x/no-forward-ref": "warn",
3530
"react-x/no-implicit-key": "warn",
36-
"react-x/no-leaked-conditional-rendering": "off",
37-
"react-x/no-missing-component-display-name": "off",
38-
"react-x/no-missing-context-display-name": "off",
3931
"react-x/no-missing-key": "error",
40-
"react-x/no-misused-capture-owner-stack": "off",
4132
"react-x/no-nested-component-definitions": "error",
4233
"react-x/no-nested-lazy-component-declarations": "error",
4334
"react-x/no-prop-types": "error",
@@ -46,27 +37,20 @@ export const rules = {
4637
"react-x/no-set-state-in-component-did-update": "warn",
4738
"react-x/no-set-state-in-component-will-update": "warn",
4839
"react-x/no-string-refs": "error",
49-
"react-x/no-unnecessary-key": "off",
50-
"react-x/no-unnecessary-use-callback": "off",
51-
"react-x/no-unnecessary-use-memo": "off",
5240
"react-x/no-unnecessary-use-prefix": "warn",
5341
"react-x/no-unsafe-component-will-mount": "warn",
5442
"react-x/no-unsafe-component-will-receive-props": "warn",
5543
"react-x/no-unsafe-component-will-update": "warn",
56-
"react-x/no-unstable-context-value": "warn",
57-
"react-x/no-unstable-default-props": "warn",
5844
"react-x/no-unused-class-component-members": "warn",
59-
"react-x/no-unused-props": "off",
60-
"react-x/no-unused-state": "warn",
6145
"react-x/no-use-context": "warn",
6246
"react-x/no-useless-forward-ref": "warn",
63-
"react-x/no-useless-fragment": "off",
64-
"react-x/prefer-destructuring-assignment": "off",
65-
"react-x/prefer-namespace-import": "off",
66-
"react-x/prefer-read-only-props": "off",
6747
"react-x/prefer-use-state-lazy-initialization": "warn",
6848
} as const satisfies Record<string, RuleConfig>;
6949

50+
export const plugins = {
51+
"react-x": plugin,
52+
};
53+
7054
export const settings = {
7155
"react-x": DEFAULT_ESLINT_REACT_SETTINGS,
7256
};
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
import type { RuleConfig } from "@eslint-react/kit";
2+
3+
import * as tc from "./_tc";
4+
import * as strictTypeScript from "./strict-typescript";
5+
6+
export const name = "react-x/strict-type-checked";
7+
8+
export const rules = {
9+
...strictTypeScript.rules,
10+
...tc.rules,
11+
} as const satisfies Record<string, RuleConfig>;
12+
13+
export const plugins = {
14+
...strictTypeScript.plugins,
15+
};
16+
17+
export const settings = {
18+
...strictTypeScript.settings,
19+
};
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
import type { RuleConfig } from "@eslint-react/kit";
2+
3+
import * as ts from "./_ts";
4+
import * as strict from "./strict";
5+
6+
export const name = "react-x/strict-typescript";
7+
8+
export const rules = {
9+
...strict.rules,
10+
...ts.rules,
11+
} as const satisfies Record<string, RuleConfig>;
12+
13+
export const plugins = {
14+
...strict.plugins,
15+
};
16+
17+
export const settings = {
18+
...strict.settings,
19+
};

0 commit comments

Comments
 (0)