Skip to content

Commit 40ca3bd

Browse files
committed
refactor: use default settings when 'settings["react-x"]' is not set
1 parent 79f0748 commit 40ca3bd

File tree

10 files changed

+54
-57
lines changed

10 files changed

+54
-57
lines changed

packages/plugins/eslint-plugin-react-debug/src/rules/is-from-react.spec.ts

+6
Original file line numberDiff line numberDiff line change
@@ -263,6 +263,12 @@ ruleTester.run(RULE_NAME, rule, {
263263
const toArr = Children.toArray;
264264
return null;
265265
}
266+
function Component2() {
267+
const Children = {
268+
toArray: () => {},
269+
}
270+
const toArr = Children.toArray;
271+
}
266272
`,
267273
errors: [
268274
{ messageId: "isFromReact", data: { name: "React", importSource: "@pika/react" } },
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,3 @@
1-
import type { ESLintReactSettings } from "@eslint-react/shared";
2-
31
import { name, version } from "../package.json";
42
import noChildrenInVoidDomElements from "./rules/no-children-in-void-dom-elements";
53
import noDangerouslySetInnerHTML from "./rules/no-dangerously-set-innerhtml";
@@ -14,21 +12,6 @@ import noUnknownProperty from "./rules/no-unknown-property";
1412
import noUnsafeIframeSandbox from "./rules/no-unsafe-iframe-sandbox";
1513
import noUnsafeTargetBlank from "./rules/no-unsafe-target-blank";
1614

17-
const DEFAULT_ESLINT_REACT_SETTINGS = {
18-
additionalComponents: [
19-
{
20-
name: "Link",
21-
as: "a",
22-
attributes: [
23-
{
24-
name: "to",
25-
as: "href",
26-
},
27-
],
28-
},
29-
],
30-
} as const satisfies ESLintReactSettings;
31-
3215
export default {
3316
meta: {
3417
name,
@@ -48,6 +31,4 @@ export default {
4831
"no-unsafe-iframe-sandbox": noUnsafeIframeSandbox,
4932
"no-unsafe-target-blank": noUnsafeTargetBlank,
5033
},
51-
// eslint-disable-next-line perfectionist/sort-objects
52-
DEFAULT_ESLINT_REACT_SETTINGS,
5334
} as const;
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,9 @@
1-
import type { ESLintReactSettings } from "@eslint-react/shared";
2-
31
import { name, version } from "../package.json";
42
import noLeakedEventListener from "./rules/no-leaked-event-listener";
53
import noLeakedInterval from "./rules/no-leaked-interval";
64
import noLeakedResizeObserver from "./rules/no-leaked-resize-observer";
75
import noLeakedTimeout from "./rules/no-leaked-timeout";
86

9-
const DEFAULT_ESLINT_REACT_SETTINGS = {} as const satisfies ESLintReactSettings;
10-
117
export default {
128
meta: {
139
name,
@@ -19,6 +15,4 @@ export default {
1915
"no-leaked-resize-observer": noLeakedResizeObserver,
2016
"no-leaked-timeout": noLeakedTimeout,
2117
},
22-
// eslint-disable-next-line perfectionist/sort-objects
23-
DEFAULT_ESLINT_REACT_SETTINGS,
2418
};

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

-15
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,4 @@
11
/* eslint-disable perfectionist/sort-objects */
2-
import type { ESLintReactSettings } from "@eslint-react/shared";
3-
42
import { name, version } from "../package.json";
53
import avoidShorthandBoolean from "./rules/avoid-shorthand-boolean";
64
import avoidShorthandFragment from "./rules/avoid-shorthand-fragment";
@@ -53,18 +51,6 @@ import preferReadOnlyProps from "./rules/prefer-read-only-props";
5351
import preferShorthandBoolean from "./rules/prefer-shorthand-boolean";
5452
import preferShorthandFragment from "./rules/prefer-shorthand-fragment";
5553

56-
/**
57-
* The default ESLint settings for "react-x".
58-
*/
59-
const DEFAULT_ESLINT_REACT_SETTINGS = {
60-
additionalHooks: {
61-
useLayoutEffect: ["useIsomorphicLayoutEffect"],
62-
},
63-
polymorphicPropName: "as",
64-
strictImportCheck: true,
65-
version: "detect",
66-
} as const satisfies ESLintReactSettings;
67-
6854
export default {
6955
meta: {
7056
name,
@@ -125,5 +111,4 @@ export default {
125111
/** @deprecated Use `no-complex-conditional-rendering` instead. */
126112
"no-complicated-conditional-rendering": noComplexConditionalRendering,
127113
},
128-
DEFAULT_ESLINT_REACT_SETTINGS,
129114
};

packages/plugins/eslint-plugin/src/configs/core.ts

+2-1
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
import { DEFAULT_ESLINT_REACT_SETTINGS } from "@eslint-react/shared";
12
import type { RulePreset } from "@eslint-react/types";
23
import react from "eslint-plugin-react-x";
34

@@ -48,5 +49,5 @@ export const plugins = {
4849
};
4950

5051
export const settings = {
51-
"react-x": react.DEFAULT_ESLINT_REACT_SETTINGS,
52+
"react-x": DEFAULT_ESLINT_REACT_SETTINGS,
5253
};

packages/plugins/eslint-plugin/src/configs/dom.ts

+2-1
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
import { DEFAULT_ESLINT_REACT_SETTINGS } from "@eslint-react/shared";
12
import type { RulePreset } from "@eslint-react/types";
23
import reactDom from "eslint-plugin-react-dom";
34

@@ -24,5 +25,5 @@ export const plugins = {
2425
};
2526

2627
export const settings = {
27-
"react-x": reactDom.DEFAULT_ESLINT_REACT_SETTINGS,
28+
"react-x": DEFAULT_ESLINT_REACT_SETTINGS,
2829
};

packages/shared/docs/README.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,8 @@
1616
## Variables
1717

1818
- [CustomComponentNormalizedSchema](variables/CustomComponentNormalizedSchema.md)
19+
- [DEFAULT\_ESLINT\_REACT\_SETTINGS](variables/DEFAULT_ESLINT_REACT_SETTINGS.md)
1920
- [GITHUB\_URL](variables/GITHUB_URL.md)
20-
- [INITIAL\_ESLINT\_REACT\_SETTINGS](variables/INITIAL_ESLINT_REACT_SETTINGS.md)
2121
- [NPM\_SCOPE](variables/NPM_SCOPE.md)
2222
- [RE\_CAMEL\_CASE](variables/RE_CAMEL_CASE.md)
2323
- [RE\_CONSTANT\_CASE](variables/RE_CONSTANT_CASE.md)
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
[**@eslint-react/shared**](../README.md)
2+
3+
***
4+
5+
[@eslint-react/shared](../README.md) / DEFAULT\_ESLINT\_REACT\_SETTINGS
6+
7+
# Variable: DEFAULT\_ESLINT\_REACT\_SETTINGS
8+
9+
> `const` **DEFAULT\_ESLINT\_REACT\_SETTINGS**: `object`
10+
11+
The default ESLint settings for "react-x".
12+
13+
## Type declaration
14+
15+
### additionalHooks
16+
17+
> `readonly` **additionalHooks**: `object`
18+
19+
#### additionalHooks.useLayoutEffect
20+
21+
> `readonly` **useLayoutEffect**: [`"useIsomorphicLayoutEffect"`]
22+
23+
### polymorphicPropName
24+
25+
> `readonly` **polymorphicPropName**: `"as"` = `"as"`
26+
27+
### strictImportCheck
28+
29+
> `readonly` **strictImportCheck**: `false` = `false`
30+
31+
### version
32+
33+
> `readonly` **version**: `"detect"` = `"detect"`

packages/shared/docs/variables/INITIAL_ESLINT_REACT_SETTINGS.md

-11
This file was deleted.

packages/shared/src/settings.ts

+10-3
Original file line numberDiff line numberDiff line change
@@ -13,9 +13,16 @@ import { ESLintSettingsSchema } from "./schemas";
1313
// #region Constants
1414

1515
/**
16-
* The initial settings for "react-x".
16+
* The default ESLint settings for "react-x".
1717
*/
18-
export const INITIAL_ESLINT_REACT_SETTINGS = {} as const satisfies ESLintReactSettings;
18+
export const DEFAULT_ESLINT_REACT_SETTINGS = {
19+
additionalHooks: {
20+
useLayoutEffect: ["useIsomorphicLayoutEffect"],
21+
},
22+
polymorphicPropName: "as",
23+
strictImportCheck: false,
24+
version: "detect",
25+
} as const satisfies ESLintReactSettings;
1926

2027
// #endregion
2128

@@ -41,7 +48,7 @@ export function unsafeReadSettings(data: unknown): PartialDeep<ESLintReactSettin
4148
*/
4249
export const decodeSettings = memoize((data: unknown) => {
4350
return {
44-
...INITIAL_ESLINT_REACT_SETTINGS,
51+
...DEFAULT_ESLINT_REACT_SETTINGS,
4552
...parse(ESLintSettingsSchema, data)["react-x"] ?? {},
4653
} as const satisfies ESLintReactSettings;
4754
}, { isEqual: (a, b) => a === b });

0 commit comments

Comments
 (0)