Skip to content

Commit 6a19c66

Browse files
committed
refactor: improve settings handling
1 parent 6308d51 commit 6a19c66

File tree

14 files changed

+260
-272
lines changed

14 files changed

+260
-272
lines changed

packages/core/src/hook/hook-is.ts

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,9 @@ import type { RuleContext } from "@eslint-react/kit";
33
import type { TSESTree } from "@typescript-eslint/types";
44
import * as AST from "@eslint-react/ast";
55
import { constFalse, flip } from "@eslint-react/eff";
6-
import { coerceSettings } from "@eslint-react/shared";
6+
import { coerceSettings, DEFAULT_ESLINT_REACT_SETTINGS } from "@eslint-react/shared";
77
import { AST_NODE_TYPES as T } from "@typescript-eslint/types";
88

9-
import { DEFAULT_ESLINT_REACT_SETTINGS } from "../../../shared/src/schemas";
109
import { isInitializedFromReact } from "../utils";
1110
import { isReactHookName } from "./hook-name";
1211

packages/plugins/eslint-plugin-react-dom/src/utils/create-jsx-element-resolver.ts

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -5,14 +5,11 @@ import * as ER from "@eslint-react/core";
55
import { getSettingsFromContext } from "@eslint-react/shared";
66

77
export function createJsxElementResolver(context: RuleContext) {
8-
const {
9-
additionalComponents,
10-
polymorphicPropName,
11-
} = getSettingsFromContext(context);
8+
const { components, polymorphicPropName } = getSettingsFromContext(context);
129
return {
1310
resolve(node: TSESTree.JSXElement) {
1411
const name = ER.getElementType(context, node);
15-
const component = additionalComponents
12+
const component = components
1613
.findLast((c) => c.name === name || c.re.test(name));
1714
const result = {
1815
attributes: component?.attributes ?? [],

packages/plugins/eslint-plugin-react-hooks-extra/src/hooks/use-no-direct-set-state-in-use-effect.ts

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -46,12 +46,12 @@ export function useNoDirectSetStateInUseEffect<Ctx extends RuleContext>(
4646
): useNoDirectSetStateInUseEffect.ReturnType {
4747
const { onViolation, useEffectKind } = options;
4848
const settings = getSettingsFromContext(context);
49-
const additionalHooks = settings.additionalHooks;
49+
const hooks = settings.hooks;
5050
const getText = (n: TSESTree.Node) => context.sourceCode.getText(n);
51-
const isUseEffectLikeCall = ER.isReactHookCallWithNameAlias(context, useEffectKind, additionalHooks[useEffectKind]);
52-
const isUseStateCall = ER.isReactHookCallWithNameAlias(context, "useState", additionalHooks.useState);
53-
const isUseMemoCall = ER.isReactHookCallWithNameAlias(context, "useMemo", additionalHooks.useMemo);
54-
const isUseCallbackCall = ER.isReactHookCallWithNameAlias(context, "useCallback", additionalHooks.useCallback);
51+
const isUseEffectLikeCall = ER.isReactHookCallWithNameAlias(context, useEffectKind, hooks[useEffectKind]);
52+
const isUseStateCall = ER.isReactHookCallWithNameAlias(context, "useState", hooks.useState);
53+
const isUseMemoCall = ER.isReactHookCallWithNameAlias(context, "useMemo", hooks.useMemo);
54+
const isUseCallbackCall = ER.isReactHookCallWithNameAlias(context, "useCallback", hooks.useCallback);
5555
const isSetStateCall = isSetFunctionCall(context, settings);
5656
const isIdFromUseStateCall = isFromUseStateCall(context, settings);
5757

packages/plugins/eslint-plugin-react-hooks-extra/src/rules/no-unnecessary-use-callback.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ export default createRule<[], MessageID>({
3939

4040
export function create(context: RuleContext<MessageID, []>): RuleListener {
4141
if (!context.sourceCode.text.includes("use")) return {};
42-
const alias = getSettingsFromContext(context).additionalHooks.useCallback ?? [];
42+
const alias = getSettingsFromContext(context).hooks.useCallback ?? [];
4343
const isUseCallbackCall = ER.isReactHookCallWithNameAlias(context, "useCallback", alias);
4444
return {
4545
CallExpression(node) {

packages/plugins/eslint-plugin-react-hooks-extra/src/rules/no-unnecessary-use-memo.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ export default createRule<[], MessageID>({
3838

3939
export function create(context: RuleContext<MessageID, []>): RuleListener {
4040
if (!context.sourceCode.text.includes("use")) return {};
41-
const alias = getSettingsFromContext(context).additionalHooks.useMemo ?? [];
41+
const alias = getSettingsFromContext(context).hooks.useMemo ?? [];
4242
const isUseMemoCall = ER.isReactHookCallWithNameAlias(context, "useMemo", alias);
4343
return {
4444
CallExpression(node) {

packages/plugins/eslint-plugin-react-hooks-extra/src/rules/prefer-use-state-lazy-initialization.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ export default createRule<[], MessageID>({
4343
});
4444

4545
export function create(context: RuleContext<MessageID, []>): RuleListener {
46-
const alias = getSettingsFromContext(context).additionalHooks.useState ?? [];
46+
const alias = getSettingsFromContext(context).hooks.useState ?? [];
4747
const isUseStateCall = ER.isReactHookCallWithNameAlias(context, "useState", alias);
4848
return {
4949
CallExpression(node) {

packages/plugins/eslint-plugin-react-hooks-extra/src/utils/is-from-hook-call.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ export function isFromHookCall(
3434
settings: ESLintReactSettingsNormalized,
3535
predicate: (topLevelId: TSESTree.Identifier, call: TSESTree.CallExpression) => boolean = constTrue,
3636
) {
37-
const hookAlias = settings.additionalHooks[name] ?? [];
37+
const hookAlias = settings.hooks[name] ?? [];
3838
// eslint-disable-next-line function/function-return-boolean
3939
return (topLevelId: TSESTree.Identifier) => {
4040
const variable = VAR.findVariable(topLevelId, context.sourceCode.getScope(topLevelId));

packages/plugins/eslint-plugin-react-naming-convention/src/rules/use-state.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ export default createRule<[], MessageID>({
3636
});
3737

3838
export function create(context: RuleContext<MessageID, []>): RuleListener {
39-
const alias = getSettingsFromContext(context).additionalHooks.useState ?? [];
39+
const alias = getSettingsFromContext(context).hooks.useState ?? [];
4040
const isUseStateCall = ER.isReactHookCallWithNameAlias(context, "useState", alias);
4141
return {
4242
CallExpression(node: TSESTree.CallExpression) {

packages/shared/docs/functions/normalizeSettings.md

Lines changed: 23 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -128,87 +128,87 @@
128128

129129
`object`
130130

131-
### additionalComponents
131+
### components
132132

133-
> `readonly` **additionalComponents**: `object`[]
133+
> `readonly` **components**: `object`[]
134134
135-
### additionalHooks
135+
### hooks
136136

137-
> **additionalHooks**: `object`
137+
> `readonly` **hooks**: `object` = `additionalHooks`
138138
139-
#### additionalHooks.use?
139+
#### hooks.use?
140140

141141
> `optional` **use**: `string`[]
142142
143-
#### additionalHooks.useActionState?
143+
#### hooks.useActionState?
144144

145145
> `optional` **useActionState**: `string`[]
146146
147-
#### additionalHooks.useCallback?
147+
#### hooks.useCallback?
148148

149149
> `optional` **useCallback**: `string`[]
150150
151-
#### additionalHooks.useContext?
151+
#### hooks.useContext?
152152

153153
> `optional` **useContext**: `string`[]
154154
155-
#### additionalHooks.useDebugValue?
155+
#### hooks.useDebugValue?
156156

157157
> `optional` **useDebugValue**: `string`[]
158158
159-
#### additionalHooks.useDeferredValue?
159+
#### hooks.useDeferredValue?
160160

161161
> `optional` **useDeferredValue**: `string`[]
162162
163-
#### additionalHooks.useEffect?
163+
#### hooks.useEffect?
164164

165165
> `optional` **useEffect**: `string`[]
166166
167-
#### additionalHooks.useFormStatus?
167+
#### hooks.useFormStatus?
168168

169169
> `optional` **useFormStatus**: `string`[]
170170
171-
#### additionalHooks.useId?
171+
#### hooks.useId?
172172

173173
> `optional` **useId**: `string`[]
174174
175-
#### additionalHooks.useImperativeHandle?
175+
#### hooks.useImperativeHandle?
176176

177177
> `optional` **useImperativeHandle**: `string`[]
178178
179-
#### additionalHooks.useInsertionEffect?
179+
#### hooks.useInsertionEffect?
180180

181181
> `optional` **useInsertionEffect**: `string`[]
182182
183-
#### additionalHooks.useLayoutEffect?
183+
#### hooks.useLayoutEffect?
184184

185185
> `optional` **useLayoutEffect**: `string`[]
186186
187-
#### additionalHooks.useMemo?
187+
#### hooks.useMemo?
188188

189189
> `optional` **useMemo**: `string`[]
190190
191-
#### additionalHooks.useOptimistic?
191+
#### hooks.useOptimistic?
192192

193193
> `optional` **useOptimistic**: `string`[]
194194
195-
#### additionalHooks.useReducer?
195+
#### hooks.useReducer?
196196

197197
> `optional` **useReducer**: `string`[]
198198
199-
#### additionalHooks.useRef?
199+
#### hooks.useRef?
200200

201201
> `optional` **useRef**: `string`[]
202202
203-
#### additionalHooks.useState?
203+
#### hooks.useState?
204204

205205
> `optional` **useState**: `string`[]
206206
207-
#### additionalHooks.useSyncExternalStore?
207+
#### hooks.useSyncExternalStore?
208208

209209
> `optional` **useSyncExternalStore**: `string`[]
210210
211-
#### additionalHooks.useTransition?
211+
#### hooks.useTransition?
212212

213213
> `optional` **useTransition**: `string`[]
214214

packages/shared/docs/interfaces/ESLintReactSettingsNormalized.md

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,15 +8,15 @@
88

99
## Properties
1010

11-
### additionalComponents
11+
### components
1212

13-
> **additionalComponents**: [`CustomComponentNormalized`](CustomComponentNormalized.md)[]
13+
> **components**: [`CustomComponentNormalized`](CustomComponentNormalized.md)[]
1414
1515
***
1616

17-
### additionalHooks
17+
### hooks
1818

19-
> **additionalHooks**: `object`
19+
> **hooks**: `object`
2020
2121
#### use?
2222

0 commit comments

Comments
 (0)