@pobammer-ts/eslint-cease-nonsense-rules 0.2.0 → 0.4.0

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/README.md CHANGED
@@ -2,6 +2,321 @@
2
2
 
3
3
  A bunch of lints to prevent idiot mistakes I encounter with frequency.
4
4
 
5
- Note: You said to create a README now; if you'd like a different structure or badges, say so and I’ll update it.
6
-
7
5
  **NOTE** I did not write this junk, an LLM did because I do not care.
6
+
7
+ ## Installation
8
+
9
+ ```bash
10
+ bun add -D @pobammer-ts/eslint-cease-nonsense-rules
11
+ ```
12
+
13
+ ## Usage
14
+
15
+ Add to your ESLint config:
16
+
17
+ ```typescript
18
+ import ceaseNonsense from "@pobammer-ts/eslint-cease-nonsense-rules";
19
+
20
+ export default [
21
+ {
22
+ plugins: {
23
+ "cease-nonsense": ceaseNonsense,
24
+ },
25
+ rules: {
26
+ // Enable all rules (recommended)
27
+ "cease-nonsense/enforce-ianitor-check-type": "error",
28
+ "cease-nonsense/no-color3-constructor": "error",
29
+ "cease-nonsense/no-print": "error",
30
+ "cease-nonsense/no-shorthand-names": "error",
31
+ "cease-nonsense/no-warn": "error",
32
+ "cease-nonsense/require-react-component-keys": "error",
33
+ "cease-nonsense/use-exhaustive-dependencies": "error",
34
+ "cease-nonsense/use-hook-at-top-level": "error",
35
+ },
36
+ },
37
+ ];
38
+ ```
39
+
40
+ ## Rules
41
+
42
+ ### Type Safety
43
+
44
+ #### `enforce-ianitor-check-type`
45
+
46
+ Enforces `Ianitor.Check<T>` type annotations on complex TypeScript types to ensure runtime validation. You don't really need this.
47
+
48
+ Calculates structural complexity of types and requires Ianitor validators when complexity exceeds thresholds.
49
+
50
+ **❌ Bad:**
51
+
52
+ ```typescript
53
+ // Complex type without runtime validation
54
+ type UserConfig = {
55
+ id: number;
56
+ name: string;
57
+ settings: {
58
+ theme: string;
59
+ notifications: boolean;
60
+ };
61
+ };
62
+
63
+ const config = getUserConfig(); // No runtime check!
64
+ ```
65
+
66
+ **✅ Good:**
67
+
68
+ ```typescript
69
+ const userConfigValidator = Ianitor.interface({
70
+ id: Ianitor.number(),
71
+ name: Ianitor.string(),
72
+ settings: Ianitor.interface({
73
+ theme: Ianitor.string(),
74
+ notifications: Ianitor.boolean(),
75
+ }),
76
+ });
77
+
78
+ type UserConfig = Ianitor.Static<typeof userConfigValidator>;
79
+
80
+ const config = userConfigValidator.check(getUserConfig());
81
+ ```
82
+
83
+ **Configuration:**
84
+
85
+ ```typescript
86
+ {
87
+ "cease-nonsense/enforce-ianitor-check-type": ["error", {
88
+ "baseThreshold": 10, // Minimum complexity to require validation
89
+ "warnThreshold": 15, // Warning threshold
90
+ "errorThreshold": 25, // Error threshold
91
+ "interfacePenalty": 20, // Complexity penalty for interfaces
92
+ "performanceMode": true // Enable performance optimizations
93
+ }]
94
+ }
95
+ ```
96
+
97
+ ### React
98
+
99
+ #### `require-react-component-keys`
100
+
101
+ Enforces key props on all React elements except top-level returns from components.
102
+
103
+ **❌ Bad:**
104
+
105
+ ```typescript
106
+ function UserList({ users }) {
107
+ return (
108
+ <div>
109
+ {users.map(user => (
110
+ <UserCard user={user} /> // Missing key!
111
+ ))}
112
+ </div>
113
+ );
114
+ }
115
+ ```
116
+
117
+ **✅ Good:**
118
+
119
+ ```typescript
120
+ function UserList({ users }) {
121
+ return (
122
+ <div>
123
+ {users.map(user => (
124
+ <UserCard key={user.id} user={user} />
125
+ ))}
126
+ </div>
127
+ );
128
+ }
129
+ ```
130
+
131
+ **Configuration:**
132
+
133
+ ```typescript
134
+ {
135
+ "cease-nonsense/require-react-component-keys": ["error", {
136
+ "allowRootKeys": false, // Allow keys on root returns
137
+ "ignoreCallExpressions": ["ReactTree.mount"] // Functions to ignore
138
+ }]
139
+ }
140
+ ```
141
+
142
+ #### `use-exhaustive-dependencies`
143
+
144
+ Enforces exhaustive and correct dependency specification in React hooks to prevent stale closures and unnecessary re-renders.
145
+
146
+ **❌ Bad:**
147
+
148
+ ```typescript
149
+ function UserProfile({ userId }) {
150
+ const [user, setUser] = useState(null);
151
+
152
+ useEffect(() => {
153
+ fetchUser(userId).then(setUser);
154
+ }, []); // Missing userId dependency!
155
+ }
156
+ ```
157
+
158
+ **✅ Good:**
159
+
160
+ ```typescript
161
+ function UserProfile({ userId }) {
162
+ const [user, setUser] = useState(null);
163
+
164
+ useEffect(() => {
165
+ fetchUser(userId).then(setUser);
166
+ }, [userId]);
167
+ }
168
+ ```
169
+
170
+ **Configuration:**
171
+
172
+ ```typescript
173
+ {
174
+ "cease-nonsense/use-exhaustive-dependencies": ["error", {
175
+ "reportMissingDependenciesArray": true,
176
+ "reportUnnecessaryDependencies": true,
177
+ "hooks": [
178
+ {
179
+ "name": "useCustomHook",
180
+ "closureIndex": 0,
181
+ "dependenciesIndex": 1,
182
+ "stableResult": true
183
+ }
184
+ ]
185
+ }]
186
+ }
187
+ ```
188
+
189
+ #### `use-hook-at-top-level`
190
+
191
+ Enforces that React hooks are only called at the top level of components or custom hooks, never conditionally or in nested functions.
192
+
193
+ **❌ Bad:**
194
+
195
+ ```typescript
196
+ function UserProfile({ userId }) {
197
+ if (userId) {
198
+ useEffect(() => { // Hook in conditional!
199
+ fetchUser(userId);
200
+ }, [userId]);
201
+ }
202
+ }
203
+ ```
204
+
205
+ **✅ Good:**
206
+
207
+ ```typescript
208
+ function UserProfile({ userId }) {
209
+ useEffect(() => {
210
+ if (userId) {
211
+ fetchUser(userId);
212
+ }
213
+ }, [userId]);
214
+ }
215
+ ```
216
+
217
+ ### Logging
218
+
219
+ #### `no-print`
220
+
221
+ Bans use of `print()` function calls. Use `Log` instead.
222
+
223
+ **❌ Bad:**
224
+
225
+ ```typescript
226
+ print("Debug message");
227
+ ```
228
+
229
+ **✅ Good:**
230
+
231
+ ```typescript
232
+ Log.info("Debug message");
233
+ ```
234
+
235
+ #### `no-warn`
236
+
237
+ Bans use of `warn()` function calls. Use `Log` instead.
238
+
239
+ **❌ Bad:**
240
+
241
+ ```typescript
242
+ warn("Warning message");
243
+ ```
244
+
245
+ **✅ Good:**
246
+
247
+ ```typescript
248
+ Log.warn("Warning message");
249
+ ```
250
+
251
+ ### Code Quality
252
+
253
+ #### `no-color3-constructor`
254
+
255
+ Bans `new Color3(...)` except for `new Color3()` or `new Color3(0, 0, 0)`. Use `Color3.fromRGB()` instead for better performance.
256
+
257
+ **✨ Has auto-fix**
258
+
259
+ **❌ Bad:**
260
+
261
+ ```typescript
262
+ const red = new Color3(255, 0, 0);
263
+ const blue = new Color3(0.5, 0.5, 1);
264
+ ```
265
+
266
+ **✅ Good:**
267
+
268
+ ```typescript
269
+ const red = Color3.fromRGB(255, 0, 0);
270
+ const blue = Color3.fromRGB(127, 127, 255);
271
+ const black = new Color3(0, 0, 0); // Allowed
272
+ ```
273
+
274
+ #### `no-shorthand-names`
275
+
276
+ Bans shorthand variable names in favor of descriptive full names.
277
+
278
+ **Default mappings:**
279
+
280
+ - `plr` → `player` (or `localPlayer` for `Players.LocalPlayer`)
281
+ - `args` → `parameters`
282
+ - `dt` → `deltaTime`
283
+ - `char` → `character`
284
+
285
+ **❌ Bad:**
286
+
287
+ ```typescript
288
+ const plr = getPlayer();
289
+ const args = [1, 2, 3];
290
+ const dt = 0.016;
291
+ ```
292
+
293
+ **✅ Good:**
294
+
295
+ ```typescript
296
+ const player = getPlayer();
297
+ const localPlayer = Players.LocalPlayer;
298
+ const parameters = [1, 2, 3];
299
+ const deltaTime = 0.016;
300
+ const model = entity.char; // Property access is allowed
301
+ ```
302
+
303
+ **Configuration:**
304
+
305
+ ```typescript
306
+ {
307
+ "cease-nonsense/no-shorthand-names": ["error", {
308
+ "shorthands": {
309
+ "plr": "player",
310
+ "args": "parameters",
311
+ "dt": "deltaTime",
312
+ "char": "character",
313
+ "btn": "button" // Add custom mappings
314
+ },
315
+ "allowPropertyAccess": ["char"] // Allow as property
316
+ }]
317
+ }
318
+ ```
319
+
320
+ ## License
321
+
322
+ Do whatever you want with this code. I don't care. I know it says MIT but that is genuinely just a formality.
package/dist/index.d.ts CHANGED
@@ -1,9 +1,9 @@
1
1
  import type { Linter, Rule } from "eslint";
2
2
  interface Plugin {
3
3
  readonly rules: Readonly<Record<string, Rule.RuleModule>>;
4
- readonly configs: Readonly<{
4
+ readonly configs: {
5
5
  readonly recommended: Linter.Config;
6
- }>;
6
+ };
7
7
  }
8
8
  declare const plugin: Plugin;
9
9
  export default plugin;
package/dist/index.js CHANGED
@@ -4,6 +4,8 @@ import noPrint from "./rules/no-print";
4
4
  import noShorthandNames from "./rules/no-shorthand-names";
5
5
  import noWarn from "./rules/no-warn";
6
6
  import requireReactComponentKeys from "./rules/require-react-component-keys";
7
+ import useExhaustiveDependencies from "./rules/use-exhaustive-dependencies";
8
+ import useHookAtTopLevel from "./rules/use-hook-at-top-level";
7
9
  /**
8
10
  * ESLint plugin entry for eslint-cease-nonsense-rules.
9
11
  *
@@ -16,6 +18,8 @@ const rules = {
16
18
  "no-shorthand-names": noShorthandNames,
17
19
  "no-warn": noWarn,
18
20
  "require-react-component-keys": requireReactComponentKeys,
21
+ "use-exhaustive-dependencies": useExhaustiveDependencies,
22
+ "use-hook-at-top-level": useHookAtTopLevel,
19
23
  };
20
24
  /**
21
25
  * Recommended configuration for ESLint flat config.
@@ -46,6 +50,8 @@ const recommended = {
46
50
  "cease-nonsense/no-shorthand-names": "error",
47
51
  "cease-nonsense/no-warn": "error",
48
52
  "cease-nonsense/require-react-component-keys": "error",
53
+ "cease-nonsense/use-exhaustive-dependencies": "error",
54
+ "cease-nonsense/use-hook-at-top-level": "error",
49
55
  },
50
56
  };
51
57
  const plugin = {
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,uBAAuB,MAAM,oCAAoC,CAAC;AACzE,OAAO,mBAAmB,MAAM,+BAA+B,CAAC;AAChE,OAAO,OAAO,MAAM,kBAAkB,CAAC;AACvC,OAAO,gBAAgB,MAAM,4BAA4B,CAAC;AAC1D,OAAO,MAAM,MAAM,iBAAiB,CAAC;AACrC,OAAO,yBAAyB,MAAM,sCAAsC,CAAC;AAE7E;;;;GAIG;AACH,MAAM,KAAK,GAA8C;IACxD,4BAA4B,EAAE,uBAAuB;IACrD,uBAAuB,EAAE,mBAAmB;IAC5C,UAAU,EAAE,OAAO;IACnB,oBAAoB,EAAE,gBAAgB;IACtC,SAAS,EAAE,MAAM;IACjB,8BAA8B,EAAE,yBAAyB;CAChD,CAAC;AAEX;;;;;;;;;;;;;;;GAeG;AACH,MAAM,WAAW,GAAkB;IAClC,OAAO,EAAE;QACR,gBAAgB,EAAE;YACjB,KAAK;SACL;KACD;IACD,KAAK,EAAE;QACN,2CAA2C,EAAE,OAAO;QACpD,sCAAsC,EAAE,OAAO;QAC/C,yBAAyB,EAAE,OAAO;QAClC,mCAAmC,EAAE,OAAO;QAC5C,wBAAwB,EAAE,OAAO;QACjC,6CAA6C,EAAE,OAAO;KACtD;CACQ,CAAC;AASX,MAAM,MAAM,GAAW;IACtB,OAAO,EAAE,EAAE,WAAW,EAAE;IACxB,KAAK;CACI,CAAC;AAEX,eAAe,MAAM,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,uBAAuB,MAAM,oCAAoC,CAAC;AACzE,OAAO,mBAAmB,MAAM,+BAA+B,CAAC;AAChE,OAAO,OAAO,MAAM,kBAAkB,CAAC;AACvC,OAAO,gBAAgB,MAAM,4BAA4B,CAAC;AAC1D,OAAO,MAAM,MAAM,iBAAiB,CAAC;AACrC,OAAO,yBAAyB,MAAM,sCAAsC,CAAC;AAC7E,OAAO,yBAAyB,MAAM,qCAAqC,CAAC;AAC5E,OAAO,iBAAiB,MAAM,+BAA+B,CAAC;AAE9D;;;;GAIG;AACH,MAAM,KAAK,GAA8C;IACxD,4BAA4B,EAAE,uBAAuB;IACrD,uBAAuB,EAAE,mBAAmB;IAC5C,UAAU,EAAE,OAAO;IACnB,oBAAoB,EAAE,gBAAgB;IACtC,SAAS,EAAE,MAAM;IACjB,8BAA8B,EAAE,yBAAyB;IACzD,6BAA6B,EAAE,yBAAyB;IACxD,uBAAuB,EAAE,iBAAiB;CACjC,CAAC;AAEX;;;;;;;;;;;;;;;GAeG;AACH,MAAM,WAAW,GAAkB;IAClC,OAAO,EAAE;QACR,gBAAgB,EAAE;YACjB,KAAK;SACL;KACD;IACD,KAAK,EAAE;QACN,2CAA2C,EAAE,OAAO;QACpD,sCAAsC,EAAE,OAAO;QAC/C,yBAAyB,EAAE,OAAO;QAClC,mCAAmC,EAAE,OAAO;QAC5C,wBAAwB,EAAE,OAAO;QACjC,6CAA6C,EAAE,OAAO;QACtD,4CAA4C,EAAE,OAAO;QACrD,sCAAsC,EAAE,OAAO;KAC/C;CACQ,CAAC;AASX,MAAM,MAAM,GAAW;IACtB,OAAO,EAAE,EAAE,WAAW,EAAE;IACxB,KAAK;CACI,CAAC;AAEX,eAAe,MAAM,CAAC"}
@@ -25,10 +25,10 @@ function hasTypeAnnotation(node) {
25
25
  * Extracts the type name from a TypeScript type node.
26
26
  *
27
27
  * @param node - The TypeScript AST node.
28
- * @returns The type name or null if not applicable.
28
+ * @returns The type name or undefined if not applicable.
29
29
  */
30
30
  function getTypeName(node) {
31
- return node.type === "TSInterfaceDeclaration" || node.type === "TSTypeAliasDeclaration" ? node.id.name : null;
31
+ return node.type === "TSInterfaceDeclaration" || node.type === "TSTypeAliasDeclaration" ? node.id.name : undefined;
32
32
  }
33
33
  /**
34
34
  * Checks if a node is an Ianitor validator call.
@@ -54,9 +54,8 @@ function hasIanitorStaticType(typeAnnotation) {
54
54
  if (currentType.type === "TSTypeReference" &&
55
55
  currentType.typeName.type === "Identifier" &&
56
56
  currentType.typeName.name === "Readonly" &&
57
- currentType.typeArguments?.params[0]) {
57
+ currentType.typeArguments?.params[0])
58
58
  currentType = currentType.typeArguments.params[0];
59
- }
60
59
  // Check for Ianitor.Static<typeof ...>
61
60
  if (currentType.type !== "TSTypeReference")
62
61
  return false;
@@ -83,8 +82,8 @@ function calculateIanitorComplexity(node) {
83
82
  switch (method) {
84
83
  case "interface":
85
84
  case "strictInterface": {
86
- const props = node.arguments?.[0];
87
- return props?.type === "ObjectExpression" ? 10 + (props.properties?.length || 0) * 3 : 0;
85
+ const properties = node.arguments?.[0];
86
+ return properties?.type === "ObjectExpression" ? 10 + (properties.properties?.length || 0) * 3 : 0;
88
87
  }
89
88
  case "optional":
90
89
  case "array":
@@ -162,9 +161,8 @@ const enforceIanitorCheckType = {
162
161
  if (currentType.type === "TSTypeReference" &&
163
162
  currentType.typeName.type === "Identifier" &&
164
163
  currentType.typeName.name === "Readonly" &&
165
- currentType.typeArguments?.params[0]) {
164
+ currentType.typeArguments?.params[0])
166
165
  currentType = currentType.typeArguments.params[0];
167
- }
168
166
  // Check for Ianitor.Static<typeof varName>
169
167
  if (currentType.type !== "TSTypeReference")
170
168
  return null;
@@ -176,9 +174,8 @@ const enforceIanitorCheckType = {
176
174
  typeName.right.type === "Identifier" &&
177
175
  typeName.right.name === "Static" &&
178
176
  firstParam?.type === "TSTypeQuery" &&
179
- firstParam.exprName.type === "Identifier") {
177
+ firstParam.exprName.type === "Identifier")
180
178
  return firstParam.exprName.name;
181
- }
182
179
  return null;
183
180
  }
184
181
  /**
@@ -386,7 +383,7 @@ const enforceIanitorCheckType = {
386
383
  context.report({
387
384
  data: { score: data.complexity.toFixed(1) },
388
385
  messageId: "missingIanitorCheckType",
389
- node,
386
+ node: node.id,
390
387
  });
391
388
  }
392
389
  },
@@ -1 +1 @@
1
- {"version":3,"file":"enforce-ianitor-check-type.js","sourceRoot":"","sources":["../../src/rules/enforce-ianitor-check-type.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"enforce-ianitor-check-type.js","sourceRoot":"","sources":["../../src/rules/enforce-ianitor-check-type.ts"],"names":[],"mappings":"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"}
@@ -2,16 +2,13 @@ function isUnknownRecord(value) {
2
2
  return typeof value === "object" && value !== null;
3
3
  }
4
4
  function isNumericLiteralNode(value) {
5
- return (isUnknownRecord(value) &&
6
- value.type === "Literal" &&
7
- "value" in value &&
8
- typeof value.value === "number");
5
+ return isUnknownRecord(value) && value.type === "Literal" && "value" in value && typeof value.value === "number";
9
6
  }
10
7
  function mapComponentToRgbRange(value) {
11
8
  return Math.round(value > 1 ? value : value * 255);
12
9
  }
13
10
  function collectNumericComponents(parameters) {
14
- const components = [];
11
+ const components = new Array();
15
12
  let allZero = true;
16
13
  for (const parameter of parameters) {
17
14
  if (!isNumericLiteralNode(parameter))
@@ -1 +1 @@
1
- {"version":3,"file":"no-color3-constructor.js","sourceRoot":"","sources":["../../src/rules/no-color3-constructor.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"no-color3-constructor.js","sourceRoot":"","sources":["../../src/rules/no-color3-constructor.ts"],"names":[],"mappings":"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"}
@@ -104,9 +104,8 @@ const noShorthandNames = {
104
104
  parent &&
105
105
  isUnknownRecord(parent) &&
106
106
  parent.type === "MemberExpression" &&
107
- parent.property === node) {
107
+ parent.property === node)
108
108
  return;
109
- }
110
109
  // Special case: plr → localPlayer for Players.LocalPlayer
111
110
  if (shorthandName === "plr" && parent?.type === "VariableDeclarator" && parent.id === node) {
112
111
  const init = parent.init;
@@ -1 +1 @@
1
- {"version":3,"file":"no-shorthand-names.js","sourceRoot":"","sources":["../../src/rules/no-shorthand-names.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"no-shorthand-names.js","sourceRoot":"","sources":["../../src/rules/no-shorthand-names.ts"],"names":[],"mappings":"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"}
@@ -3,7 +3,7 @@
3
3
  */
4
4
  const DEFAULT_OPTIONS = {
5
5
  allowRootKeys: false,
6
- ignoreCallExpressions: ["ReactTree.mount"],
6
+ ignoreCallExpressions: ["ReactTree.mount", "CreateReactStory"],
7
7
  };
8
8
  /**
9
9
  * Checks if a JSX element has a key attribute.
@@ -31,11 +31,34 @@ function isTopLevelReturn(node) {
31
31
  // Handle return with parentheses: return (<div>...)
32
32
  if (parent.type === "JSXExpressionContainer")
33
33
  parent = parent.parent;
34
+ if (!parent)
35
+ return false;
36
+ // Traverse through conditional and logical expressions
37
+ // Example: return condition ? <A/> : <B/>
38
+ // Example: return condition && <Component/>
39
+ while (parent && (parent.type === "ConditionalExpression" || parent.type === "LogicalExpression")) {
40
+ parent = parent.parent;
41
+ }
34
42
  if (!parent)
35
43
  return false;
36
44
  // Handle direct return
37
- if (parent.type === "ReturnStatement")
38
- return true;
45
+ if (parent.type === "ReturnStatement") {
46
+ // Walk up to find the containing function
47
+ let currentNode = parent.parent;
48
+ // Skip through block statement to get to function
49
+ if (currentNode?.type === "BlockStatement") {
50
+ currentNode = currentNode.parent;
51
+ }
52
+ if (!currentNode)
53
+ return false;
54
+ // Check if this is a callback (arrow/function expression inside a call expression)
55
+ if (currentNode.type === "ArrowFunctionExpression" || currentNode.type === "FunctionExpression") {
56
+ // If the function is an argument to a call expression (like useCallback), it's a callback, not a top-level return
57
+ return currentNode.parent?.type !== "CallExpression";
58
+ }
59
+ // Function declarations are always top-level
60
+ return currentNode.type === "FunctionDeclaration";
61
+ }
39
62
  // Handle arrow function direct return: () => <div>
40
63
  return parent.type === "ArrowFunctionExpression" && parent.parent?.type !== "CallExpression";
41
64
  }
@@ -57,7 +80,7 @@ function isIgnoredCallExpression(node, ignoreList) {
57
80
  return false;
58
81
  }
59
82
  // Traverse up to find CallExpression
60
- const maxDepth = 10;
83
+ const maxDepth = 20;
61
84
  for (let depth = 0; depth < maxDepth && parent; depth++) {
62
85
  const { type } = parent;
63
86
  // Found CallExpression - check if it's in the ignore list
@@ -69,23 +92,41 @@ function isIgnoredCallExpression(node, ignoreList) {
69
92
  // Member expression: ReactTree.mount(...)
70
93
  if (callee.type === "MemberExpression" &&
71
94
  callee.object.type === "Identifier" &&
72
- callee.property.type === "Identifier") {
95
+ callee.property.type === "Identifier")
73
96
  return ignoreList.includes(`${callee.object.name}.${callee.property.name}`);
74
- }
75
- return false;
76
- }
77
- // Stop at JSX or function boundaries
78
- if (type === "JSXElement" ||
79
- type === "JSXFragment" ||
80
- type === "FunctionDeclaration" ||
81
- type === "FunctionExpression" ||
82
- type === "ArrowFunctionExpression") {
83
97
  return false;
84
98
  }
99
+ // Don't stop at any boundaries - continue traversing until we find CallExpression or run out of parents
85
100
  parent = parent.parent;
86
101
  }
87
102
  return false;
88
103
  }
104
+ /**
105
+ * Checks if a JSX element is passed as a prop value.
106
+ *
107
+ * @param node - The JSX element or fragment to check.
108
+ * @returns True if the element is passed as a prop value.
109
+ */
110
+ function isJSXPropValue(node) {
111
+ let parent = node.parent;
112
+ if (!parent)
113
+ return false;
114
+ // Traverse through conditional and logical expressions
115
+ // Example: fallback={condition ? <A/> : <B/>}
116
+ // Example: fallback={placeholder ?? <></>}
117
+ while (parent && (parent.type === "ConditionalExpression" || parent.type === "LogicalExpression"))
118
+ parent = parent.parent;
119
+ if (!parent)
120
+ return false;
121
+ // Handle JSXExpressionContainer wrapper: prop={<div/>}
122
+ if (parent.type === "JSXExpressionContainer") {
123
+ parent = parent.parent;
124
+ if (!parent)
125
+ return false;
126
+ }
127
+ // Check if parent is a JSXAttribute (prop)
128
+ return parent.type === "JSXAttribute";
129
+ }
89
130
  const requireReactComponentKeys = {
90
131
  /**
91
132
  * Creates the ESLint rule visitor.
@@ -118,6 +159,9 @@ const requireReactComponentKeys = {
118
159
  // Skip key requirement for ignored call expressions
119
160
  if (isIgnoredCallExpression(node, options.ignoreCallExpressions))
120
161
  return;
162
+ // Skip key requirement for JSX passed as props
163
+ if (isJSXPropValue(node))
164
+ return;
121
165
  // Fragments always need keys when not top-level
122
166
  if (node.type === "JSXFragment") {
123
167
  context.report({