@pobammer-ts/eslint-cease-nonsense-rules 0.4.0 → 0.4.1
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.
|
@@ -18,6 +18,27 @@ function hasKeyAttribute(node) {
|
|
|
18
18
|
}
|
|
19
19
|
return false;
|
|
20
20
|
}
|
|
21
|
+
/**
|
|
22
|
+
* Checks if a CallExpression is for React.forwardRef or React.memo.
|
|
23
|
+
*
|
|
24
|
+
* @param callExpr - The CallExpression to check.
|
|
25
|
+
* @returns True if the call is for forwardRef or memo.
|
|
26
|
+
*/
|
|
27
|
+
function isReactComponentHOC(callExpr) {
|
|
28
|
+
const { callee } = callExpr;
|
|
29
|
+
// Simple identifier: forwardRef(...) or memo(...)
|
|
30
|
+
if (callee.type === "Identifier") {
|
|
31
|
+
return callee.name === "forwardRef" || callee.name === "memo";
|
|
32
|
+
}
|
|
33
|
+
// Member expression: React.forwardRef(...) or React.memo(...)
|
|
34
|
+
if (callee.type === "MemberExpression" &&
|
|
35
|
+
callee.object.type === "Identifier" &&
|
|
36
|
+
callee.object.name === "React" &&
|
|
37
|
+
callee.property.type === "Identifier") {
|
|
38
|
+
return callee.property.name === "forwardRef" || callee.property.name === "memo";
|
|
39
|
+
}
|
|
40
|
+
return false;
|
|
41
|
+
}
|
|
21
42
|
/**
|
|
22
43
|
* Checks if a JSX element is a top-level return from a component.
|
|
23
44
|
*
|
|
@@ -53,14 +74,28 @@ function isTopLevelReturn(node) {
|
|
|
53
74
|
return false;
|
|
54
75
|
// Check if this is a callback (arrow/function expression inside a call expression)
|
|
55
76
|
if (currentNode.type === "ArrowFunctionExpression" || currentNode.type === "FunctionExpression") {
|
|
56
|
-
// If the function is an argument to a call expression
|
|
57
|
-
|
|
77
|
+
// If the function is an argument to a call expression, check if it's a React HOC
|
|
78
|
+
if (currentNode.parent?.type === "CallExpression") {
|
|
79
|
+
// React.forwardRef and React.memo callbacks are component definitions, treat as top-level
|
|
80
|
+
return isReactComponentHOC(currentNode.parent);
|
|
81
|
+
}
|
|
82
|
+
// Not inside a call expression, so it's a top-level component
|
|
83
|
+
return true;
|
|
58
84
|
}
|
|
59
85
|
// Function declarations are always top-level
|
|
60
86
|
return currentNode.type === "FunctionDeclaration";
|
|
61
87
|
}
|
|
62
88
|
// Handle arrow function direct return: () => <div>
|
|
63
|
-
|
|
89
|
+
if (parent.type === "ArrowFunctionExpression") {
|
|
90
|
+
// Check if this arrow function is inside a call expression
|
|
91
|
+
if (parent.parent?.type === "CallExpression") {
|
|
92
|
+
// React.forwardRef and React.memo callbacks are component definitions, treat as top-level
|
|
93
|
+
return isReactComponentHOC(parent.parent);
|
|
94
|
+
}
|
|
95
|
+
// Not inside a call expression, so it's a top-level component
|
|
96
|
+
return true;
|
|
97
|
+
}
|
|
98
|
+
return false;
|
|
64
99
|
}
|
|
65
100
|
/**
|
|
66
101
|
* Checks if a JSX element is an argument to an ignored call expression.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"require-react-component-keys.js","sourceRoot":"","sources":["../../src/rules/require-react-component-keys.ts"],"names":[],"mappings":"AAWA;;GAEG;AACH,MAAM,eAAe,GAA0B;IAC9C,aAAa,EAAE,KAAK;IACpB,qBAAqB,EAAE,CAAC,iBAAiB,EAAE,kBAAkB,CAAC;CAC9D,CAAC;AAEF;;;;;GAKG;AACH,SAAS,eAAe,CAAC,IAAyB;IACjD,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,cAAc,CAAC,UAAU,EAAE,CAAC;QACnD,IAAI,IAAI,CAAC,IAAI,KAAK,cAAc,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,KAAK,KAAK;YAAE,OAAO,IAAI,CAAC;IAC3E,CAAC;IACD,OAAO,KAAK,CAAC;AACd,CAAC;AAED;;;;;GAKG;AACH,SAAS,gBAAgB,CAAC,IAAgD;IACzE,IAAI,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;IACzB,IAAI,CAAC,MAAM;QAAE,OAAO,KAAK,CAAC;IAE1B,oDAAoD;IACpD,IAAI,MAAM,CAAC,IAAI,KAAK,wBAAwB;QAAE,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;IACrE,IAAI,CAAC,MAAM;QAAE,OAAO,KAAK,CAAC;IAE1B,uDAAuD;IACvD,0CAA0C;IAC1C,4CAA4C;IAC5C,OAAO,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,KAAK,uBAAuB,IAAI,MAAM,CAAC,IAAI,KAAK,mBAAmB,CAAC,EAAE,CAAC;QACnG,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;IACxB,CAAC;IAED,IAAI,CAAC,MAAM;QAAE,OAAO,KAAK,CAAC;IAE1B,uBAAuB;IACvB,IAAI,MAAM,CAAC,IAAI,KAAK,iBAAiB,EAAE,CAAC;QACvC,0CAA0C;QAC1C,IAAI,WAAW,GAA8B,MAAM,CAAC,MAAM,CAAC;QAE3D,kDAAkD;QAClD,IAAI,WAAW,EAAE,IAAI,KAAK,gBAAgB,EAAE,CAAC;YAC5C,WAAW,GAAG,WAAW,CAAC,MAAM,CAAC;QAClC,CAAC;QAED,IAAI,CAAC,WAAW;YAAE,OAAO,KAAK,CAAC;QAE/B,mFAAmF;QACnF,IAAI,WAAW,CAAC,IAAI,KAAK,yBAAyB,IAAI,WAAW,CAAC,IAAI,KAAK,oBAAoB,EAAE,CAAC;YACjG,
|
|
1
|
+
{"version":3,"file":"require-react-component-keys.js","sourceRoot":"","sources":["../../src/rules/require-react-component-keys.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED