@pobammer-ts/eslint-cease-nonsense-rules 0.10.1 → 1.0.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.
Files changed (35) hide show
  1. package/dist/rules/ban-react-fc.js +6 -37
  2. package/dist/rules/ban-react-fc.js.map +1 -1
  3. package/dist/rules/enforce-ianitor-check-type.d.ts +7 -0
  4. package/dist/rules/enforce-ianitor-check-type.js +71 -159
  5. package/dist/rules/enforce-ianitor-check-type.js.map +1 -1
  6. package/dist/rules/no-color3-constructor.d.ts +0 -17
  7. package/dist/rules/no-color3-constructor.js +11 -32
  8. package/dist/rules/no-color3-constructor.js.map +1 -1
  9. package/dist/rules/no-instance-methods-without-this.js +2 -3
  10. package/dist/rules/no-instance-methods-without-this.js.map +1 -1
  11. package/dist/rules/no-print.d.ts +0 -15
  12. package/dist/rules/no-print.js +0 -21
  13. package/dist/rules/no-print.js.map +1 -1
  14. package/dist/rules/no-shorthand-names.d.ts +0 -24
  15. package/dist/rules/no-shorthand-names.js +32 -86
  16. package/dist/rules/no-shorthand-names.js.map +1 -1
  17. package/dist/rules/no-warn.d.ts +0 -15
  18. package/dist/rules/no-warn.js +0 -21
  19. package/dist/rules/no-warn.js.map +1 -1
  20. package/dist/rules/prefer-sequence-overloads.js +26 -23
  21. package/dist/rules/prefer-sequence-overloads.js.map +1 -1
  22. package/dist/rules/prefer-udim2-shorthand.d.ts +0 -14
  23. package/dist/rules/prefer-udim2-shorthand.js +138 -44
  24. package/dist/rules/prefer-udim2-shorthand.js.map +1 -1
  25. package/dist/rules/require-named-effect-functions.js +271 -59
  26. package/dist/rules/require-named-effect-functions.js.map +1 -1
  27. package/dist/rules/require-react-component-keys.d.ts +3 -39
  28. package/dist/rules/require-react-component-keys.js +58 -158
  29. package/dist/rules/require-react-component-keys.js.map +1 -1
  30. package/dist/rules/use-exhaustive-dependencies.d.ts +0 -59
  31. package/dist/rules/use-exhaustive-dependencies.js +120 -329
  32. package/dist/rules/use-exhaustive-dependencies.js.map +1 -1
  33. package/dist/rules/use-hook-at-top-level.js +17 -118
  34. package/dist/rules/use-hook-at-top-level.js.map +1 -1
  35. package/package.json +11 -8
@@ -1,45 +1,9 @@
1
1
  import type { TSESLint } from "@typescript-eslint/utils";
2
- /**
3
- * Configuration options for the require-react-component-keys rule.
4
- *
5
- * @example
6
- * // Roblox-TS project with custom utilities
7
- * {
8
- * "cease-nonsense/require-react-component-keys": ["error", {
9
- * "iterationMethods": ["map", "filter", "forEach", "each"],
10
- * "memoizationHooks": ["useCallback", "useMemo", "useBinding"]
11
- * }]
12
- * }
13
- *
14
- * @example
15
- * // Lodash/Ramda project
16
- * {
17
- * "cease-nonsense/require-react-component-keys": ["error", {
18
- * "iterationMethods": ["map", "filter", "forEach", "each", "forOwn"]
19
- * }]
20
- * }
21
- *
22
- * @example
23
- * // Remove specific methods from being flagged
24
- * {
25
- * "cease-nonsense/require-react-component-keys": ["error", {
26
- * "iterationMethods": ["map", "filter"] // Allow forEach without keys
27
- * }]
28
- * }
29
- */
30
2
  interface RuleOptions {
31
3
  readonly allowRootKeys?: boolean;
32
- readonly ignoreCallExpressions?: Array<string>;
33
- /**
34
- * Array method names that indicate iteration contexts where keys are required.
35
- * Defaults to standard array methods like 'map', 'filter', 'forEach', etc.
36
- */
37
- readonly iterationMethods?: Array<string>;
38
- /**
39
- * Hook names that indicate memoization contexts where keys are required.
40
- * Defaults to React hooks like 'useCallback' and 'useMemo'.
41
- */
42
- readonly memoizationHooks?: Array<string>;
4
+ readonly ignoreCallExpressions?: ReadonlyArray<string>;
5
+ readonly iterationMethods?: ReadonlyArray<string>;
6
+ readonly memoizationHooks?: ReadonlyArray<string>;
43
7
  }
44
8
  type Options = [RuleOptions?];
45
9
  type MessageIds = "missingKey" | "rootComponentWithKey";
@@ -1,7 +1,4 @@
1
1
  import { TSESTree } from "@typescript-eslint/types";
2
- /**
3
- * Default configuration values for the rule.
4
- */
5
2
  const DEFAULT_OPTIONS = {
6
3
  allowRootKeys: false,
7
4
  ignoreCallExpressions: ["ReactTree.mount", "CreateReactStory"],
@@ -19,10 +16,6 @@ const DEFAULT_OPTIONS = {
19
16
  ],
20
17
  memoizationHooks: ["useCallback", "useMemo"],
21
18
  };
22
- /**
23
- * Parent node types that simply wrap another expression without changing its semantics.
24
- * These should be skipped when walking up the AST to analyze structural context.
25
- */
26
19
  const WRAPPER_PARENT_TYPES = new Set([
27
20
  "ParenthesizedExpression",
28
21
  "TSAsExpression",
@@ -32,9 +25,6 @@ const WRAPPER_PARENT_TYPES = new Set([
32
25
  "TSInstantiationExpression",
33
26
  "ChainExpression",
34
27
  ]);
35
- /**
36
- * Node types that act as transparent wrappers when walking from a call argument to its call expression.
37
- */
38
28
  const ARGUMENT_WRAPPER_TYPES = new Set([
39
29
  ...WRAPPER_PARENT_TYPES,
40
30
  "AwaitExpression",
@@ -43,116 +33,73 @@ const ARGUMENT_WRAPPER_TYPES = new Set([
43
33
  "SequenceExpression",
44
34
  "SpreadElement",
45
35
  ]);
46
- /**
47
- * Walks up the AST from a starting node, skipping wrapper expressions that do not
48
- * materially affect JSX placement (e.g. parentheses, type assertions).
49
- *
50
- * @param node - The starting node whose wrappers should be skipped.
51
- * @returns The first ancestor node that is not a simple wrapper, or undefined.
52
- */
53
36
  function ascendPastWrappers(node) {
54
37
  let current = node;
55
38
  while (current && WRAPPER_PARENT_TYPES.has(current.type))
56
39
  current = current.parent;
57
40
  return current;
58
41
  }
59
- /**
60
- * Checks if a JSX element has a key attribute.
61
- *
62
- * @param node - The JSX element to check.
63
- * @returns True if the element has a key attribute.
64
- */
65
42
  function hasKeyAttribute(node) {
66
43
  for (const attribute of node.openingElement.attributes)
67
- if (attribute.type === "JSXAttribute" && attribute.name.name === "key")
44
+ if (attribute.type === TSESTree.AST_NODE_TYPES.JSXAttribute && attribute.name.name === "key")
68
45
  return true;
69
46
  return false;
70
47
  }
71
- /**
72
- * Checks if a CallExpression is for React.forwardRef or React.memo.
73
- *
74
- * @param callExpr - The CallExpression to check.
75
- * @returns True if the call is for forwardRef or memo.
76
- */
77
48
  function isReactComponentHOC(callExpr) {
78
49
  const { callee } = callExpr;
79
- if (callee.type === "Identifier")
50
+ if (callee.type === TSESTree.AST_NODE_TYPES.Identifier)
80
51
  return callee.name === "forwardRef" || callee.name === "memo";
81
- if (callee.type === "MemberExpression" &&
82
- callee.object.type === "Identifier" &&
52
+ if (callee.type === TSESTree.AST_NODE_TYPES.MemberExpression &&
53
+ callee.object.type === TSESTree.AST_NODE_TYPES.Identifier &&
83
54
  callee.object.name === "React" &&
84
- callee.property.type === "Identifier")
55
+ callee.property.type === TSESTree.AST_NODE_TYPES.Identifier)
85
56
  return callee.property.name === "forwardRef" || callee.property.name === "memo";
86
57
  return false;
87
58
  }
88
- /**
89
- * Finds the nearest function-like ancestor for a given node.
90
- *
91
- * @param node - The starting node.
92
- * @returns The nearest function declaration/expression/arrow function ancestor if any.
93
- */
94
59
  function getEnclosingFunctionLike(node) {
95
60
  let current = node.parent;
96
61
  while (current) {
97
- if (current.type === "ArrowFunctionExpression" ||
98
- current.type === "FunctionExpression" ||
99
- current.type === "FunctionDeclaration")
62
+ if (current.type === TSESTree.AST_NODE_TYPES.ArrowFunctionExpression ||
63
+ current.type === TSESTree.AST_NODE_TYPES.FunctionExpression ||
64
+ current.type === TSESTree.AST_NODE_TYPES.FunctionDeclaration)
100
65
  return current;
101
66
  current = current.parent;
102
67
  }
103
68
  return undefined;
104
69
  }
105
- /**
106
- * Checks if a CallExpression represents an array iteration or memoization context that requires keys.
107
- *
108
- * @param callExpr - The CallExpression to check.
109
- * @param iterationMethods - Set of method names that indicate iteration contexts.
110
- * @param memoizationHooks - Set of hook names that indicate memoization contexts.
111
- * @returns True if the call represents an iteration or memo context.
112
- */
113
70
  function isIterationOrMemoCallback(callExpr, iterationMethods, memoizationHooks) {
114
71
  const { callee } = callExpr;
115
- // Check for memoization hooks
116
- if (callee.type === "Identifier" && memoizationHooks.has(callee.name))
72
+ if (callee.type === TSESTree.AST_NODE_TYPES.Identifier && memoizationHooks.has(callee.name))
117
73
  return true;
118
- if (callee.type === "MemberExpression" && callee.property.type === "Identifier") {
74
+ if (callee.type === TSESTree.AST_NODE_TYPES.MemberExpression &&
75
+ callee.property.type === TSESTree.AST_NODE_TYPES.Identifier) {
119
76
  const methodName = callee.property.name;
120
- // Check for Array iteration methods
121
77
  if (iterationMethods.has(methodName))
122
78
  return true;
123
- // Check for Array.from with mapper
124
79
  if (methodName === "from" &&
125
- callee.object.type === "MemberExpression" &&
126
- callee.object.object.type === "Identifier" &&
80
+ callee.object.type === TSESTree.AST_NODE_TYPES.MemberExpression &&
81
+ callee.object.object.type === TSESTree.AST_NODE_TYPES.Identifier &&
127
82
  callee.object.object.name === "Array" &&
128
- callExpr.arguments.length >= 2 // has mapper argument
129
- )
83
+ callExpr.arguments.length >= 2)
130
84
  return true;
131
- // Check for Array.prototype.[method].call pattern
132
85
  if (methodName === "call" &&
133
- callee.object.type === "MemberExpression" &&
134
- callee.object.object.type === "MemberExpression" &&
135
- callee.object.object.property.type === "Identifier" &&
86
+ callee.object.type === TSESTree.AST_NODE_TYPES.MemberExpression &&
87
+ callee.object.object.type === TSESTree.AST_NODE_TYPES.MemberExpression &&
88
+ callee.object.object.property.type === TSESTree.AST_NODE_TYPES.Identifier &&
136
89
  iterationMethods.has(callee.object.object.property.name))
137
90
  return true;
138
91
  }
139
92
  return false;
140
93
  }
141
- /**
142
- * Walks upward from a potential call argument to find the enclosing CallExpression, if any.
143
- *
144
- * @param node - The starting node.
145
- * @returns The nearest CallExpression where the node participates as an argument.
146
- */
147
94
  function findEnclosingCallExpression(node) {
148
95
  let current = node;
149
96
  let parent = node.parent;
150
97
  while (parent) {
151
- if (parent.type === "CallExpression") {
98
+ if (parent.type === TSESTree.AST_NODE_TYPES.CallExpression) {
152
99
  for (const argument of parent.arguments) {
153
100
  if (argument === current)
154
101
  return parent;
155
- if (argument.type === "SpreadElement" && argument.argument === current)
102
+ if (argument.type === TSESTree.AST_NODE_TYPES.SpreadElement && argument.argument === current)
156
103
  return parent;
157
104
  }
158
105
  return undefined;
@@ -166,13 +113,6 @@ function findEnclosingCallExpression(node) {
166
113
  }
167
114
  return undefined;
168
115
  }
169
- /**
170
- * Fetches the declared variable associated with a function-like node, if any.
171
- *
172
- * @param context - ESLint rule context.
173
- * @param functionLike - The function-like node.
174
- * @returns The corresponding scope variable, when available.
175
- */
176
116
  function getVariableForFunction(context, functionLike) {
177
117
  if (functionLike.type === TSESTree.AST_NODE_TYPES.FunctionDeclaration) {
178
118
  const declared = context.sourceCode.getDeclaredVariables(functionLike);
@@ -180,7 +120,7 @@ function getVariableForFunction(context, functionLike) {
180
120
  return declared[0];
181
121
  return undefined;
182
122
  }
183
- const parent = functionLike.parent;
123
+ const { parent } = functionLike;
184
124
  if (!parent)
185
125
  return undefined;
186
126
  if (parent.type === TSESTree.AST_NODE_TYPES.VariableDeclarator ||
@@ -191,45 +131,24 @@ function getVariableForFunction(context, functionLike) {
191
131
  }
192
132
  return undefined;
193
133
  }
194
- /**
195
- * Checks whether a scope reference is used as an argument to a call expression that requires keys.
196
- *
197
- * @param reference - The reference to evaluate.
198
- * @param iterationMethods - Set of method names that indicate iteration contexts.
199
- * @param memoizationHooks - Set of hook names that indicate memoization contexts.
200
- * @returns True if the reference participates in an iteration or memoization call as an argument.
201
- */
202
134
  function referenceActsAsCallback(reference, iterationMethods, memoizationHooks) {
203
135
  if (!reference.isRead())
204
136
  return false;
205
137
  const callExpression = findEnclosingCallExpression(reference.identifier);
206
138
  if (!callExpression)
207
139
  return false;
208
- // React HOCs don't need keys on top-level returns
209
140
  if (isReactComponentHOC(callExpression))
210
141
  return false;
211
- // Only iteration or memoization contexts need keys on top-level returns
212
142
  return isIterationOrMemoCallback(callExpression, iterationMethods, memoizationHooks);
213
143
  }
214
- /**
215
- * Determines whether a function-like node is used as a callback in iteration or memoization contexts.
216
- *
217
- * @param context - ESLint rule context.
218
- * @param fn - The function node to inspect.
219
- * @param iterationMethods - Set of method names that indicate iteration contexts.
220
- * @param memoizationHooks - Set of hook names that indicate memoization contexts.
221
- * @returns True if the function participates in iteration or memoization invocations.
222
- */
223
- function isFunctionUsedAsCallback(context, fn, iterationMethods, memoizationHooks) {
224
- const inlineCall = findEnclosingCallExpression(fn);
144
+ function isFunctionUsedAsCallback(context, functionLike, iterationMethods, memoizationHooks) {
145
+ const inlineCall = findEnclosingCallExpression(functionLike);
225
146
  if (inlineCall) {
226
- // React HOCs don't need keys on top-level returns
227
147
  if (isReactComponentHOC(inlineCall))
228
148
  return false;
229
- // Only iteration or memoization contexts need keys on top-level returns
230
149
  return isIterationOrMemoCallback(inlineCall, iterationMethods, memoizationHooks);
231
150
  }
232
- const variable = getVariableForFunction(context, fn);
151
+ const variable = getVariableForFunction(context, functionLike);
233
152
  if (!variable)
234
153
  return false;
235
154
  for (const reference of variable.references)
@@ -237,76 +156,71 @@ function isFunctionUsedAsCallback(context, fn, iterationMethods, memoizationHook
237
156
  return true;
238
157
  return false;
239
158
  }
240
- /**
241
- * Checks if a JSX element is a top-level return from a component.
242
- *
243
- * @param node - The JSX element or fragment to check.
244
- * @returns True if the element is directly returned from a component.
245
- */
159
+ const SHOULD_ASCEND_TYPES = new Set([
160
+ TSESTree.AST_NODE_TYPES.ConditionalExpression,
161
+ TSESTree.AST_NODE_TYPES.LogicalExpression,
162
+ ]);
163
+ const IS_FUNCTION_EXPRESSION = new Set([
164
+ TSESTree.AST_NODE_TYPES.FunctionExpression,
165
+ TSESTree.AST_NODE_TYPES.ArrowFunctionExpression,
166
+ ]);
246
167
  function isTopLevelReturn(node) {
247
168
  let parent = ascendPastWrappers(node.parent);
248
169
  if (!parent)
249
170
  return false;
250
- if (parent.type === "JSXExpressionContainer")
171
+ if (parent.type === TSESTree.AST_NODE_TYPES.JSXExpressionContainer)
251
172
  parent = ascendPastWrappers(parent.parent);
252
173
  if (!parent)
253
174
  return false;
254
- while (parent && (parent.type === "ConditionalExpression" || parent.type === "LogicalExpression"))
175
+ while (parent && SHOULD_ASCEND_TYPES.has(parent.type))
255
176
  parent = ascendPastWrappers(parent.parent);
256
177
  if (!parent)
257
178
  return false;
258
- if (parent.type === "JSXExpressionContainer")
179
+ if (parent.type === TSESTree.AST_NODE_TYPES.JSXExpressionContainer)
259
180
  parent = ascendPastWrappers(parent.parent);
260
181
  if (!parent)
261
182
  return false;
262
- if (parent.type === "ReturnStatement") {
183
+ if (parent.type === TSESTree.AST_NODE_TYPES.ReturnStatement) {
263
184
  let currentNode = ascendPastWrappers(parent.parent);
264
- if (currentNode?.type === "BlockStatement")
185
+ if (currentNode?.type === TSESTree.AST_NODE_TYPES.BlockStatement)
265
186
  currentNode = ascendPastWrappers(currentNode.parent);
266
187
  if (!currentNode)
267
188
  return false;
268
- if (currentNode.type === "ArrowFunctionExpression" || currentNode.type === "FunctionExpression") {
189
+ if (IS_FUNCTION_EXPRESSION.has(currentNode.type)) {
269
190
  const functionParent = ascendPastWrappers(currentNode.parent);
270
- if (functionParent?.type === "CallExpression")
191
+ if (functionParent?.type === TSESTree.AST_NODE_TYPES.CallExpression)
271
192
  return isReactComponentHOC(functionParent);
272
193
  return true;
273
194
  }
274
- return currentNode.type === "FunctionDeclaration";
195
+ return currentNode.type === TSESTree.AST_NODE_TYPES.FunctionDeclaration;
275
196
  }
276
- if (parent.type === "ArrowFunctionExpression") {
197
+ if (parent.type === TSESTree.AST_NODE_TYPES.ArrowFunctionExpression) {
277
198
  const functionParent = ascendPastWrappers(parent.parent);
278
- if (functionParent?.type === "CallExpression")
199
+ if (functionParent?.type === TSESTree.AST_NODE_TYPES.CallExpression)
279
200
  return isReactComponentHOC(functionParent);
280
201
  return true;
281
202
  }
282
203
  return false;
283
204
  }
284
- /**
285
- * Checks if a JSX element is an argument to an ignored call expression.
286
- *
287
- * @param node - The JSX element or fragment to check.
288
- * @param ignoreList - List of function names to ignore.
289
- * @returns True if the element is passed to an ignored function.
290
- */
291
205
  function isIgnoredCallExpression(node, ignoreList) {
292
206
  let parent = node.parent;
293
207
  if (!parent)
294
208
  return false;
295
- if (parent.type === "JSXExpressionContainer") {
209
+ if (parent.type === TSESTree.AST_NODE_TYPES.JSXExpressionContainer) {
296
210
  parent = parent.parent;
297
211
  if (!parent)
298
212
  return false;
299
213
  }
300
214
  const maxDepth = 20;
301
- for (let depth = 0; depth < maxDepth && parent; depth++) {
215
+ for (let depth = 0; depth < maxDepth && parent; depth += 1) {
302
216
  const { type } = parent;
303
- if (type === "CallExpression") {
217
+ if (type === TSESTree.AST_NODE_TYPES.CallExpression) {
304
218
  const { callee } = parent;
305
- if (callee.type === "Identifier")
219
+ if (callee.type === TSESTree.AST_NODE_TYPES.Identifier)
306
220
  return ignoreList.includes(callee.name);
307
- if (callee.type === "MemberExpression" &&
308
- callee.object.type === "Identifier" &&
309
- callee.property.type === "Identifier")
221
+ if (callee.type === TSESTree.AST_NODE_TYPES.MemberExpression &&
222
+ callee.object.type === TSESTree.AST_NODE_TYPES.Identifier &&
223
+ callee.property.type === TSESTree.AST_NODE_TYPES.Identifier)
310
224
  return ignoreList.includes(`${callee.object.name}.${callee.property.name}`);
311
225
  return false;
312
226
  }
@@ -314,51 +228,35 @@ function isIgnoredCallExpression(node, ignoreList) {
314
228
  }
315
229
  return false;
316
230
  }
317
- /**
318
- * Checks if a JSX element is passed as a prop value.
319
- *
320
- * @param node - The JSX element or fragment to check.
321
- * @returns True if the element is passed as a prop value.
322
- */
323
231
  function isJSXPropValue(node) {
324
- let parent = node.parent;
232
+ let { parent } = node;
325
233
  if (!parent)
326
234
  return false;
327
- while (parent && (parent.type === "ConditionalExpression" || parent.type === "LogicalExpression"))
235
+ while (parent &&
236
+ (parent.type === TSESTree.AST_NODE_TYPES.ConditionalExpression ||
237
+ parent.type === TSESTree.AST_NODE_TYPES.LogicalExpression))
328
238
  parent = parent.parent;
329
239
  if (!parent)
330
240
  return false;
331
- if (parent.type === "JSXExpressionContainer") {
241
+ if (parent.type === TSESTree.AST_NODE_TYPES.JSXExpressionContainer) {
332
242
  parent = parent.parent;
333
243
  if (!parent)
334
244
  return false;
335
245
  }
336
- return parent.type === "JSXAttribute";
246
+ return parent.type === TSESTree.AST_NODE_TYPES.JSXAttribute;
337
247
  }
338
248
  const docs = {
339
249
  description: "Enforce key props on all React elements except top-level returns",
340
250
  recommended: true,
341
251
  };
342
252
  const requireReactComponentKeys = {
343
- /**
344
- * Creates the ESLint rule visitor.
345
- *
346
- * @param context - The ESLint rule context.
347
- * @returns The visitor object with AST node handlers.
348
- */
349
253
  create(context) {
350
254
  const options = {
351
255
  ...DEFAULT_OPTIONS,
352
256
  ...context.options[0],
353
257
  };
354
- // Convert arrays to Sets for performance
355
258
  const iterationMethods = new Set(options.iterationMethods);
356
259
  const memoizationHooks = new Set(options.memoizationHooks);
357
- /**
358
- * Checks a JSX element or fragment for required key prop.
359
- *
360
- * @param node - The JSX element or fragment to check.
361
- */
362
260
  function checkElement(node) {
363
261
  const functionLike = getEnclosingFunctionLike(node);
364
262
  const isCallback = functionLike
@@ -366,7 +264,9 @@ const requireReactComponentKeys = {
366
264
  : false;
367
265
  const isRoot = isTopLevelReturn(node);
368
266
  if (isRoot && !isCallback) {
369
- if (!options.allowRootKeys && node.type === "JSXElement" && hasKeyAttribute(node)) {
267
+ if (!options.allowRootKeys &&
268
+ node.type === TSESTree.AST_NODE_TYPES.JSXElement &&
269
+ hasKeyAttribute(node)) {
370
270
  context.report({
371
271
  messageId: "rootComponentWithKey",
372
272
  node,
@@ -378,7 +278,7 @@ const requireReactComponentKeys = {
378
278
  return;
379
279
  if (isJSXPropValue(node))
380
280
  return;
381
- if (node.type === "JSXFragment") {
281
+ if (node.type === TSESTree.AST_NODE_TYPES.JSXFragment) {
382
282
  context.report({
383
283
  messageId: "missingKey",
384
284
  node,
@@ -1 +1 @@
1
- {"version":3,"file":"require-react-component-keys.js","sourceRoot":"","sources":["../../src/rules/require-react-component-keys.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"require-react-component-keys.js","sourceRoot":"","sources":["../../src/rules/require-react-component-keys.ts"],"names":[],"mappings":"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"}
@@ -1,26 +1,14 @@
1
1
  import { TSESTree } from "@typescript-eslint/types";
2
2
  import type { Rule, Scope } from "eslint";
3
- /**
4
- * Stable result configuration.
5
- */
6
3
  type StableResult = boolean | ReadonlySet<number> | ReadonlySet<string>;
7
4
  declare function resetTestingMetrics(): void;
8
- /**
9
- * Minimal definition information used for stability analysis.
10
- */
11
5
  interface VariableDefinitionLike {
12
6
  readonly node: TSESTree.Node | Rule.Node;
13
7
  readonly type: string;
14
8
  }
15
- /**
16
- * Minimal variable interface compatible with ESLint scope variables.
17
- */
18
9
  interface VariableLike {
19
10
  readonly defs: ReadonlyArray<VariableDefinitionLike>;
20
11
  }
21
- /**
22
- * Capture information from closure analysis.
23
- */
24
12
  interface CaptureInfo {
25
13
  readonly name: string;
26
14
  readonly node: TSESTree.Node;
@@ -28,58 +16,11 @@ interface CaptureInfo {
28
16
  readonly variable: VariableLike | undefined;
29
17
  readonly depth: number;
30
18
  }
31
- /**
32
- * Checks if a stable array index is being accessed.
33
- *
34
- * @param stableResult - The stable result set.
35
- * @param node - The variable declarator node.
36
- * @param identifierName - The identifier name being accessed.
37
- * @returns True if accessing a stable array index.
38
- */
39
19
  declare function isStableArrayIndex(stableResult: StableResult | undefined, node: Scope.Definition["node"], identifierName: string): boolean;
40
- /**
41
- * Checks if a value is stable (doesn't need to be in dependencies).
42
- *
43
- * @param variable - The variable to check.
44
- * @param identifierName - The identifier name being accessed.
45
- * @param stableHooks - Map of stable hooks.
46
- * @returns True if the value is stable.
47
- */
48
20
  declare function isStableValue(variable: VariableLike | undefined, identifierName: string, stableHooks: Map<string, StableResult>): boolean;
49
- /**
50
- * Checks if an identifier is in a TypeScript type-only position.
51
- * Type parameters and type annotations are compile-time only and should not be dependencies.
52
- *
53
- * @param identifier - The identifier node to check.
54
- * @returns True if the identifier is in a type-only position.
55
- */
56
21
  declare function isInTypePosition(identifier: TSESTree.Identifier): boolean;
57
- /**
58
- * Checks if a variable is declared directly in the component/hook body OR is a prop (parameter).
59
- * Per React rules, only variables "declared directly inside the component body" are reactive.
60
- * This includes props (function parameters).
61
- * Variables from outer scopes (module-level, parent functions) are non-reactive.
62
- *
63
- * @param variable - The variable to check.
64
- * @param closureNode - The closure node (useEffect callback, etc.).
65
- * @returns True if the variable is declared in the component body or is a prop.
66
- */
67
22
  declare function isDeclaredInComponentBody(variable: VariableLike, closureNode: TSESTree.Node): boolean;
68
- /**
69
- * Collects all captured identifiers from a closure.
70
- *
71
- * @param node - The closure node (function/arrow function).
72
- * @param scope - The scope of the closure.
73
- * @param sourceCode - The source code instance.
74
- * @returns Array of captured identifiers.
75
- */
76
23
  declare function collectCaptures(node: TSESTree.Node, scope: Scope.Scope, sourceCode: Rule.RuleContext["sourceCode"]): ReadonlyArray<CaptureInfo>;
77
- /**
78
- * Converts stableResult configuration to internal format.
79
- *
80
- * @param stableResult - The stable result configuration.
81
- * @returns The internal stable result format.
82
- */
83
24
  declare function convertStableResult(stableResult: boolean | number | ReadonlyArray<number> | ReadonlyArray<string>): StableResult;
84
25
  declare const useExhaustiveDependencies: Rule.RuleModule;
85
26
  export declare const __testing: {