eslint-plugin-react-hooks-extra 1.28.0-next.2 → 1.28.0-next.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.js +17 -17
- package/dist/index.mjs +17 -17
- package/package.json +7 -7
package/dist/index.js
CHANGED
|
@@ -50,16 +50,16 @@ var rules = {
|
|
|
50
50
|
|
|
51
51
|
// package.json
|
|
52
52
|
var name2 = "eslint-plugin-react-hooks-extra";
|
|
53
|
-
var version = "1.28.0-next.
|
|
53
|
+
var version = "1.28.0-next.4";
|
|
54
54
|
var createRule = shared.createRuleForPlugin("hooks-extra");
|
|
55
|
-
function isFromHookCall(
|
|
55
|
+
function isFromHookCall(context, name3, settings, predicate = eff.constTrue) {
|
|
56
56
|
const hookAlias = settings.additionalHooks[name3] ?? [];
|
|
57
57
|
return (topLevelId) => {
|
|
58
58
|
const variable = VAR5__namespace.findVariable(topLevelId, context.sourceCode.getScope(topLevelId));
|
|
59
59
|
const variableNode = VAR5__namespace.getVariableNode(variable, 0);
|
|
60
60
|
if (variableNode == null) return false;
|
|
61
61
|
if (variableNode.type !== types.AST_NODE_TYPES.CallExpression) return false;
|
|
62
|
-
if (!core.isReactHookCallWithNameAlias(
|
|
62
|
+
if (!core.isReactHookCallWithNameAlias(context, name3, hookAlias)(variableNode)) return false;
|
|
63
63
|
return predicate(topLevelId, variableNode);
|
|
64
64
|
};
|
|
65
65
|
}
|
|
@@ -71,7 +71,7 @@ function isFromUseStateCall(context, settings) {
|
|
|
71
71
|
}
|
|
72
72
|
return parent.id.elements.findIndex((e) => e?.type === types.AST_NODE_TYPES.Identifier && e.name === topLevelId.name) === 1;
|
|
73
73
|
};
|
|
74
|
-
return isFromHookCall("useState",
|
|
74
|
+
return isFromHookCall(context, "useState", settings, predicate);
|
|
75
75
|
}
|
|
76
76
|
function isFunctionOfImmediatelyInvoked(node) {
|
|
77
77
|
return node.type !== types.AST_NODE_TYPES.FunctionDeclaration && node.parent.type === types.AST_NODE_TYPES.CallExpression && node.parent.callee === node;
|
|
@@ -176,10 +176,10 @@ var no_direct_set_state_in_use_effect_default = createRule({
|
|
|
176
176
|
}
|
|
177
177
|
const settings = shared.getSettingsFromContext(context);
|
|
178
178
|
const additionalHooks = settings.additionalHooks;
|
|
179
|
-
const isUseEffectLikeCall = core.isReactHookCallWithNameAlias("useEffect",
|
|
180
|
-
const isUseStateCall2 = core.isReactHookCallWithNameAlias("useState",
|
|
181
|
-
const isUseMemoCall2 = core.isReactHookCallWithNameAlias("useMemo",
|
|
182
|
-
const isUseCallbackCall2 = core.isReactHookCallWithNameAlias("useCallback",
|
|
179
|
+
const isUseEffectLikeCall = core.isReactHookCallWithNameAlias(context, "useEffect", additionalHooks.useEffect ?? []);
|
|
180
|
+
const isUseStateCall2 = core.isReactHookCallWithNameAlias(context, "useState", additionalHooks.useState ?? []);
|
|
181
|
+
const isUseMemoCall2 = core.isReactHookCallWithNameAlias(context, "useMemo", additionalHooks.useMemo ?? []);
|
|
182
|
+
const isUseCallbackCall2 = core.isReactHookCallWithNameAlias(context, "useCallback", additionalHooks.useCallback ?? []);
|
|
183
183
|
const isSetStateCall = isSetFunctionCall(context, settings);
|
|
184
184
|
const isIdFromUseStateCall = isFromUseStateCall(context, settings);
|
|
185
185
|
const functionEntries = [];
|
|
@@ -372,13 +372,13 @@ var no_direct_set_state_in_use_layout_effect_default = createRule({
|
|
|
372
372
|
const settings = shared.getSettingsFromContext(context);
|
|
373
373
|
const additionalHooks = settings.additionalHooks;
|
|
374
374
|
const isUseLayoutEffectLikeCall = core.isReactHookCallWithNameAlias(
|
|
375
|
-
"useLayoutEffect",
|
|
376
375
|
context,
|
|
376
|
+
"useLayoutEffect",
|
|
377
377
|
additionalHooks.useLayoutEffect ?? []
|
|
378
378
|
);
|
|
379
|
-
const isUseStateCall2 = core.isReactHookCallWithNameAlias("useState",
|
|
380
|
-
const isUseMemoCall2 = core.isReactHookCallWithNameAlias("useMemo",
|
|
381
|
-
const isUseCallbackCall2 = core.isReactHookCallWithNameAlias("useCallback",
|
|
379
|
+
const isUseStateCall2 = core.isReactHookCallWithNameAlias(context, "useState", additionalHooks.useState ?? []);
|
|
380
|
+
const isUseMemoCall2 = core.isReactHookCallWithNameAlias(context, "useMemo", additionalHooks.useMemo ?? []);
|
|
381
|
+
const isUseCallbackCall2 = core.isReactHookCallWithNameAlias(context, "useCallback", additionalHooks.useCallback ?? []);
|
|
382
382
|
const isSetStateCall = isSetFunctionCall(context, settings);
|
|
383
383
|
const isIdFromUseStateCall = isFromUseStateCall(context, settings);
|
|
384
384
|
const functionEntries = [];
|
|
@@ -575,7 +575,7 @@ var no_unnecessary_use_callback_default = createRule({
|
|
|
575
575
|
return;
|
|
576
576
|
}
|
|
577
577
|
const initialScope = context.sourceCode.getScope(node);
|
|
578
|
-
if (!core.isUseCallbackCall(
|
|
578
|
+
if (!core.isUseCallbackCall(context, node) && !alias.some(core.isReactHookCallWithNameLoose(node))) {
|
|
579
579
|
return;
|
|
580
580
|
}
|
|
581
581
|
const scope = context.sourceCode.getScope(node);
|
|
@@ -654,7 +654,7 @@ var no_unnecessary_use_memo_default = createRule({
|
|
|
654
654
|
return;
|
|
655
655
|
}
|
|
656
656
|
const initialScope = context.sourceCode.getScope(node);
|
|
657
|
-
if (!core.isUseMemoCall(
|
|
657
|
+
if (!core.isUseMemoCall(context, node) && !alias.some(core.isReactHookCallWithNameLoose(node))) {
|
|
658
658
|
return;
|
|
659
659
|
}
|
|
660
660
|
const scope = context.sourceCode.getScope(node);
|
|
@@ -713,7 +713,7 @@ var RULE_NAME5 = "no-useless-custom-hooks";
|
|
|
713
713
|
var RULE_FEATURES5 = [
|
|
714
714
|
"CHK"
|
|
715
715
|
];
|
|
716
|
-
function isNodeContainsUseCallComments(
|
|
716
|
+
function isNodeContainsUseCallComments(context, node) {
|
|
717
717
|
return context.sourceCode.getCommentsInside(node).some((comment) => /use\w+\(/u.test(comment.value));
|
|
718
718
|
}
|
|
719
719
|
var no_useless_custom_hooks_default = createRule({
|
|
@@ -742,7 +742,7 @@ var no_useless_custom_hooks_default = createRule({
|
|
|
742
742
|
if (hookCalls.length > 0) {
|
|
743
743
|
continue;
|
|
744
744
|
}
|
|
745
|
-
if (isNodeContainsUseCallComments(
|
|
745
|
+
if (isNodeContainsUseCallComments(context, node2)) {
|
|
746
746
|
continue;
|
|
747
747
|
}
|
|
748
748
|
context.report({
|
|
@@ -786,7 +786,7 @@ var prefer_use_state_lazy_initialization_default = createRule({
|
|
|
786
786
|
if (!core.isReactHookCall(node)) {
|
|
787
787
|
return;
|
|
788
788
|
}
|
|
789
|
-
if (!core.isUseStateCall(
|
|
789
|
+
if (!core.isUseStateCall(context, node) && !alias.some(core.isReactHookCallWithNameLoose(node))) {
|
|
790
790
|
return;
|
|
791
791
|
}
|
|
792
792
|
const [useStateInput] = node.arguments;
|
package/dist/index.mjs
CHANGED
|
@@ -27,16 +27,16 @@ var rules = {
|
|
|
27
27
|
|
|
28
28
|
// package.json
|
|
29
29
|
var name2 = "eslint-plugin-react-hooks-extra";
|
|
30
|
-
var version = "1.28.0-next.
|
|
30
|
+
var version = "1.28.0-next.4";
|
|
31
31
|
var createRule = createRuleForPlugin("hooks-extra");
|
|
32
|
-
function isFromHookCall(
|
|
32
|
+
function isFromHookCall(context, name3, settings, predicate = constTrue) {
|
|
33
33
|
const hookAlias = settings.additionalHooks[name3] ?? [];
|
|
34
34
|
return (topLevelId) => {
|
|
35
35
|
const variable = VAR5.findVariable(topLevelId, context.sourceCode.getScope(topLevelId));
|
|
36
36
|
const variableNode = VAR5.getVariableNode(variable, 0);
|
|
37
37
|
if (variableNode == null) return false;
|
|
38
38
|
if (variableNode.type !== AST_NODE_TYPES.CallExpression) return false;
|
|
39
|
-
if (!isReactHookCallWithNameAlias(
|
|
39
|
+
if (!isReactHookCallWithNameAlias(context, name3, hookAlias)(variableNode)) return false;
|
|
40
40
|
return predicate(topLevelId, variableNode);
|
|
41
41
|
};
|
|
42
42
|
}
|
|
@@ -48,7 +48,7 @@ function isFromUseStateCall(context, settings) {
|
|
|
48
48
|
}
|
|
49
49
|
return parent.id.elements.findIndex((e) => e?.type === AST_NODE_TYPES.Identifier && e.name === topLevelId.name) === 1;
|
|
50
50
|
};
|
|
51
|
-
return isFromHookCall("useState",
|
|
51
|
+
return isFromHookCall(context, "useState", settings, predicate);
|
|
52
52
|
}
|
|
53
53
|
function isFunctionOfImmediatelyInvoked(node) {
|
|
54
54
|
return node.type !== AST_NODE_TYPES.FunctionDeclaration && node.parent.type === AST_NODE_TYPES.CallExpression && node.parent.callee === node;
|
|
@@ -153,10 +153,10 @@ var no_direct_set_state_in_use_effect_default = createRule({
|
|
|
153
153
|
}
|
|
154
154
|
const settings = getSettingsFromContext(context);
|
|
155
155
|
const additionalHooks = settings.additionalHooks;
|
|
156
|
-
const isUseEffectLikeCall = isReactHookCallWithNameAlias("useEffect",
|
|
157
|
-
const isUseStateCall2 = isReactHookCallWithNameAlias("useState",
|
|
158
|
-
const isUseMemoCall2 = isReactHookCallWithNameAlias("useMemo",
|
|
159
|
-
const isUseCallbackCall2 = isReactHookCallWithNameAlias("useCallback",
|
|
156
|
+
const isUseEffectLikeCall = isReactHookCallWithNameAlias(context, "useEffect", additionalHooks.useEffect ?? []);
|
|
157
|
+
const isUseStateCall2 = isReactHookCallWithNameAlias(context, "useState", additionalHooks.useState ?? []);
|
|
158
|
+
const isUseMemoCall2 = isReactHookCallWithNameAlias(context, "useMemo", additionalHooks.useMemo ?? []);
|
|
159
|
+
const isUseCallbackCall2 = isReactHookCallWithNameAlias(context, "useCallback", additionalHooks.useCallback ?? []);
|
|
160
160
|
const isSetStateCall = isSetFunctionCall(context, settings);
|
|
161
161
|
const isIdFromUseStateCall = isFromUseStateCall(context, settings);
|
|
162
162
|
const functionEntries = [];
|
|
@@ -349,13 +349,13 @@ var no_direct_set_state_in_use_layout_effect_default = createRule({
|
|
|
349
349
|
const settings = getSettingsFromContext(context);
|
|
350
350
|
const additionalHooks = settings.additionalHooks;
|
|
351
351
|
const isUseLayoutEffectLikeCall = isReactHookCallWithNameAlias(
|
|
352
|
-
"useLayoutEffect",
|
|
353
352
|
context,
|
|
353
|
+
"useLayoutEffect",
|
|
354
354
|
additionalHooks.useLayoutEffect ?? []
|
|
355
355
|
);
|
|
356
|
-
const isUseStateCall2 = isReactHookCallWithNameAlias("useState",
|
|
357
|
-
const isUseMemoCall2 = isReactHookCallWithNameAlias("useMemo",
|
|
358
|
-
const isUseCallbackCall2 = isReactHookCallWithNameAlias("useCallback",
|
|
356
|
+
const isUseStateCall2 = isReactHookCallWithNameAlias(context, "useState", additionalHooks.useState ?? []);
|
|
357
|
+
const isUseMemoCall2 = isReactHookCallWithNameAlias(context, "useMemo", additionalHooks.useMemo ?? []);
|
|
358
|
+
const isUseCallbackCall2 = isReactHookCallWithNameAlias(context, "useCallback", additionalHooks.useCallback ?? []);
|
|
359
359
|
const isSetStateCall = isSetFunctionCall(context, settings);
|
|
360
360
|
const isIdFromUseStateCall = isFromUseStateCall(context, settings);
|
|
361
361
|
const functionEntries = [];
|
|
@@ -552,7 +552,7 @@ var no_unnecessary_use_callback_default = createRule({
|
|
|
552
552
|
return;
|
|
553
553
|
}
|
|
554
554
|
const initialScope = context.sourceCode.getScope(node);
|
|
555
|
-
if (!isUseCallbackCall(
|
|
555
|
+
if (!isUseCallbackCall(context, node) && !alias.some(isReactHookCallWithNameLoose(node))) {
|
|
556
556
|
return;
|
|
557
557
|
}
|
|
558
558
|
const scope = context.sourceCode.getScope(node);
|
|
@@ -631,7 +631,7 @@ var no_unnecessary_use_memo_default = createRule({
|
|
|
631
631
|
return;
|
|
632
632
|
}
|
|
633
633
|
const initialScope = context.sourceCode.getScope(node);
|
|
634
|
-
if (!isUseMemoCall(
|
|
634
|
+
if (!isUseMemoCall(context, node) && !alias.some(isReactHookCallWithNameLoose(node))) {
|
|
635
635
|
return;
|
|
636
636
|
}
|
|
637
637
|
const scope = context.sourceCode.getScope(node);
|
|
@@ -690,7 +690,7 @@ var RULE_NAME5 = "no-useless-custom-hooks";
|
|
|
690
690
|
var RULE_FEATURES5 = [
|
|
691
691
|
"CHK"
|
|
692
692
|
];
|
|
693
|
-
function isNodeContainsUseCallComments(
|
|
693
|
+
function isNodeContainsUseCallComments(context, node) {
|
|
694
694
|
return context.sourceCode.getCommentsInside(node).some((comment) => /use\w+\(/u.test(comment.value));
|
|
695
695
|
}
|
|
696
696
|
var no_useless_custom_hooks_default = createRule({
|
|
@@ -719,7 +719,7 @@ var no_useless_custom_hooks_default = createRule({
|
|
|
719
719
|
if (hookCalls.length > 0) {
|
|
720
720
|
continue;
|
|
721
721
|
}
|
|
722
|
-
if (isNodeContainsUseCallComments(
|
|
722
|
+
if (isNodeContainsUseCallComments(context, node2)) {
|
|
723
723
|
continue;
|
|
724
724
|
}
|
|
725
725
|
context.report({
|
|
@@ -763,7 +763,7 @@ var prefer_use_state_lazy_initialization_default = createRule({
|
|
|
763
763
|
if (!isReactHookCall(node)) {
|
|
764
764
|
return;
|
|
765
765
|
}
|
|
766
|
-
if (!isUseStateCall(
|
|
766
|
+
if (!isUseStateCall(context, node) && !alias.some(isReactHookCallWithNameLoose(node))) {
|
|
767
767
|
return;
|
|
768
768
|
}
|
|
769
769
|
const [useStateInput] = node.arguments;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "eslint-plugin-react-hooks-extra",
|
|
3
|
-
"version": "1.28.0-next.
|
|
3
|
+
"version": "1.28.0-next.4",
|
|
4
4
|
"description": "ESLint React's ESLint plugin for React Hooks related rules.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"react",
|
|
@@ -50,12 +50,12 @@
|
|
|
50
50
|
"@typescript-eslint/utils": "^8.25.0",
|
|
51
51
|
"string-ts": "^2.2.1",
|
|
52
52
|
"ts-pattern": "^5.6.2",
|
|
53
|
-
"@eslint-react/ast": "1.28.0-next.
|
|
54
|
-
"@eslint-react/core": "1.28.0-next.
|
|
55
|
-
"@eslint-react/
|
|
56
|
-
"@eslint-react/
|
|
57
|
-
"@eslint-react/shared": "1.28.0-next.
|
|
58
|
-
"@eslint-react/
|
|
53
|
+
"@eslint-react/ast": "1.28.0-next.4",
|
|
54
|
+
"@eslint-react/core": "1.28.0-next.4",
|
|
55
|
+
"@eslint-react/jsx": "1.28.0-next.4",
|
|
56
|
+
"@eslint-react/var": "1.28.0-next.4",
|
|
57
|
+
"@eslint-react/shared": "1.28.0-next.4",
|
|
58
|
+
"@eslint-react/eff": "1.28.0-next.4"
|
|
59
59
|
},
|
|
60
60
|
"devDependencies": {
|
|
61
61
|
"@types/react": "^19.0.10",
|