eslint-config-typed 3.8.1 → 3.10.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 (66) hide show
  1. package/README.md +1 -1
  2. package/dist/plugins/react-coding-style/rules/ban-use-imperative-handle-hook.mjs +4 -4
  3. package/dist/plugins/react-coding-style/rules/ban-use-imperative-handle-hook.mjs.map +1 -1
  4. package/dist/plugins/react-coding-style/rules/component-name.d.mts.map +1 -1
  5. package/dist/plugins/react-coding-style/rules/component-name.mjs +5 -3
  6. package/dist/plugins/react-coding-style/rules/component-name.mjs.map +1 -1
  7. package/dist/plugins/react-coding-style/rules/display-name.d.mts +14 -0
  8. package/dist/plugins/react-coding-style/rules/display-name.d.mts.map +1 -0
  9. package/dist/plugins/react-coding-style/rules/display-name.mjs +86 -0
  10. package/dist/plugins/react-coding-style/rules/display-name.mjs.map +1 -0
  11. package/dist/plugins/react-coding-style/rules/import-style.d.mts +8 -2
  12. package/dist/plugins/react-coding-style/rules/import-style.d.mts.map +1 -1
  13. package/dist/plugins/react-coding-style/rules/import-style.mjs +63 -26
  14. package/dist/plugins/react-coding-style/rules/import-style.mjs.map +1 -1
  15. package/dist/plugins/react-coding-style/rules/props-type-annotation-style.mjs +2 -2
  16. package/dist/plugins/react-coding-style/rules/props-type-annotation-style.mjs.map +1 -1
  17. package/dist/plugins/react-coding-style/rules/react-memo-props-argument-name.mjs +2 -2
  18. package/dist/plugins/react-coding-style/rules/react-memo-props-argument-name.mjs.map +1 -1
  19. package/dist/plugins/react-coding-style/rules/react-memo-type-parameter.mjs +2 -2
  20. package/dist/plugins/react-coding-style/rules/react-memo-type-parameter.mjs.map +1 -1
  21. package/dist/plugins/react-coding-style/rules/rules.d.mts +6 -1
  22. package/dist/plugins/react-coding-style/rules/rules.d.mts.map +1 -1
  23. package/dist/plugins/react-coding-style/rules/rules.mjs +2 -0
  24. package/dist/plugins/react-coding-style/rules/rules.mjs.map +1 -1
  25. package/dist/plugins/react-coding-style/rules/shared.d.mts +7 -3
  26. package/dist/plugins/react-coding-style/rules/shared.d.mts.map +1 -1
  27. package/dist/plugins/react-coding-style/rules/shared.mjs +61 -3
  28. package/dist/plugins/react-coding-style/rules/shared.mjs.map +1 -1
  29. package/dist/plugins/react-coding-style/rules/use-memo-hooks-style.d.mts.map +1 -1
  30. package/dist/plugins/react-coding-style/rules/use-memo-hooks-style.mjs +45 -3
  31. package/dist/plugins/react-coding-style/rules/use-memo-hooks-style.mjs.map +1 -1
  32. package/dist/plugins/ts-restrictions/rules/check-destructuring-completeness.d.mts.map +1 -1
  33. package/dist/plugins/ts-restrictions/rules/check-destructuring-completeness.mjs +46 -46
  34. package/dist/plugins/ts-restrictions/rules/check-destructuring-completeness.mjs.map +1 -1
  35. package/dist/rules/eslint-import-rules.d.mts +1 -3
  36. package/dist/rules/eslint-import-rules.d.mts.map +1 -1
  37. package/dist/rules/eslint-import-rules.mjs +3 -1
  38. package/dist/rules/eslint-import-rules.mjs.map +1 -1
  39. package/dist/rules/eslint-react-coding-style-rules.d.mts +6 -1
  40. package/dist/rules/eslint-react-coding-style-rules.d.mts.map +1 -1
  41. package/dist/rules/eslint-react-coding-style-rules.mjs +3 -2
  42. package/dist/rules/eslint-react-coding-style-rules.mjs.map +1 -1
  43. package/dist/types/rules/eslint-react-coding-style-rules.d.mts +69 -2
  44. package/dist/types/rules/eslint-react-coding-style-rules.d.mts.map +1 -1
  45. package/package.json +1 -1
  46. package/src/plugins/react-coding-style/README.md +22 -0
  47. package/src/plugins/react-coding-style/rules/ban-use-imperative-handle-hook.mts +4 -4
  48. package/src/plugins/react-coding-style/rules/ban-use-imperative-handle-hook.test.mts +50 -18
  49. package/src/plugins/react-coding-style/rules/component-name.mts +6 -3
  50. package/src/plugins/react-coding-style/rules/display-name.mts +117 -0
  51. package/src/plugins/react-coding-style/rules/display-name.test.mts +87 -0
  52. package/src/plugins/react-coding-style/rules/import-style.mts +92 -34
  53. package/src/plugins/react-coding-style/rules/import-style.test.mts +81 -34
  54. package/src/plugins/react-coding-style/rules/props-type-annotation-style.mts +2 -2
  55. package/src/plugins/react-coding-style/rules/react-memo-props-argument-name.mts +2 -2
  56. package/src/plugins/react-coding-style/rules/react-memo-type-parameter.mts +2 -2
  57. package/src/plugins/react-coding-style/rules/rules.mts +2 -0
  58. package/src/plugins/react-coding-style/rules/shared.mts +92 -7
  59. package/src/plugins/react-coding-style/rules/use-memo-hooks-style-named.test.mts +162 -0
  60. package/src/plugins/react-coding-style/rules/use-memo-hooks-style-namespace.test.mts +162 -0
  61. package/src/plugins/react-coding-style/rules/use-memo-hooks-style.mts +68 -3
  62. package/src/plugins/ts-restrictions/rules/check-destructuring-completeness.mts +59 -59
  63. package/src/rules/eslint-import-rules.mts +4 -1
  64. package/src/rules/eslint-react-coding-style-rules.mts +3 -2
  65. package/src/types/rules/eslint-react-coding-style-rules.mts +78 -2
  66. package/src/plugins/react-coding-style/rules/use-memo-hooks-style.test.mts +0 -72
@@ -1,6 +1,6 @@
1
1
  import { AST_NODE_TYPES } from '@typescript-eslint/utils';
2
- import { castDeepMutable } from 'ts-data-forge';
3
- import { isReactCallExpression } from './shared.mjs';
2
+ import { castDeepMutable, hasKey } from 'ts-data-forge';
3
+ import { isReactApiCall } from './shared.mjs';
4
4
 
5
5
  const useMemoHooksStyleRule = {
6
6
  meta: {
@@ -15,7 +15,7 @@ const useMemoHooksStyleRule = {
15
15
  },
16
16
  create: (context) => ({
17
17
  CallExpression: (node) => {
18
- if (!isReactCallExpression(node, 'useMemo')) {
18
+ if (!isReactApiCall(context, node, 'useMemo')) {
19
19
  return;
20
20
  }
21
21
  const parent = node.parent;
@@ -33,10 +33,52 @@ const useMemoHooksStyleRule = {
33
33
  messageId: 'disallowUseMemoTypeAnnotation',
34
34
  });
35
35
  }
36
+ const [firstArg] = node.arguments;
37
+ if (firstArg?.type === AST_NODE_TYPES.ArrowFunctionExpression) {
38
+ const { returnType, body } = firstArg;
39
+ if (returnType !== undefined) {
40
+ context.report({
41
+ node: castDeepMutable(returnType),
42
+ messageId: 'disallowUseMemoTypeAnnotation',
43
+ });
44
+ }
45
+ checkNodeForTypeAnnotations(context, body);
46
+ }
36
47
  },
37
48
  }),
38
49
  defaultOptions: [],
39
50
  };
51
+ const checkNodeForTypeAnnotations = (context, node) => {
52
+ if (node.type === AST_NODE_TYPES.TSAsExpression ||
53
+ node.type === AST_NODE_TYPES.TSTypeAssertion ||
54
+ node.type === AST_NODE_TYPES.TSSatisfiesExpression) {
55
+ context.report({
56
+ node: castDeepMutable(node),
57
+ messageId: 'disallowUseMemoTypeAnnotation',
58
+ });
59
+ return;
60
+ }
61
+ if (hasKey(node, 'body')) {
62
+ const nodeWithBody = node;
63
+ if (nodeWithBody.body !== undefined && nodeWithBody.body !== null) {
64
+ checkNodeForTypeAnnotations(context,
65
+ // eslint-disable-next-line total-functions/no-unsafe-type-assertion
66
+ nodeWithBody.body);
67
+ }
68
+ }
69
+ if (hasKey(node, 'expression')) {
70
+ const nodeWithExpression = node;
71
+ checkNodeForTypeAnnotations(context,
72
+ // eslint-disable-next-line total-functions/no-unsafe-type-assertion
73
+ nodeWithExpression.expression);
74
+ }
75
+ if (hasKey(node, 'argument')) {
76
+ const nodeWithArgument = node;
77
+ checkNodeForTypeAnnotations(context,
78
+ // eslint-disable-next-line total-functions/no-unsafe-type-assertion
79
+ nodeWithArgument.argument);
80
+ }
81
+ };
40
82
 
41
83
  export { useMemoHooksStyleRule };
42
84
  //# sourceMappingURL=use-memo-hooks-style.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"use-memo-hooks-style.mjs","sources":["../../../../src/plugins/react-coding-style/rules/use-memo-hooks-style.mts"],"sourcesContent":[null],"names":[],"mappings":";;;;AAUO,MAAM,qBAAqB,GAAoC;AACpE,IAAA,IAAI,EAAE;AACJ,QAAA,IAAI,EAAE,YAAY;AAClB,QAAA,IAAI,EAAE;AACJ,YAAA,WAAW,EACT,oEAAoE;AACvE,SAAA;AACD,QAAA,MAAM,EAAE,EAAE;AACV,QAAA,QAAQ,EAAE;AACR,YAAA,6BAA6B,EAC3B,qGAAqG;AACxG,SAAA;AACF,KAAA;AACD,IAAA,MAAM,EAAE,CAAC,OAAO,MAAM;AACpB,QAAA,cAAc,EAAE,CAAC,IAA2C,KAAI;YAC9D,IAAI,CAAC,qBAAqB,CAAC,IAAI,EAAE,SAAS,CAAC,EAAE;gBAC3C;YACF;AAEA,YAAA,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM;AAE1B,YAAA,IACE,MAAM,CAAC,IAAI,KAAK,cAAc,CAAC,cAAc;AAC7C,gBAAA,MAAM,CAAC,IAAI,KAAK,cAAc,CAAC,eAAe;AAC9C,gBAAA,MAAM,CAAC,IAAI,KAAK,cAAc,CAAC,qBAAqB,EACpD;gBACA,OAAO,CAAC,MAAM,CAAC;AACb,oBAAA,IAAI,EAAE,eAAe,CAAC,MAAM,CAAC;AAC7B,oBAAA,SAAS,EAAE,+BAA+B;AAC3C,iBAAA,CAAC;YACJ;YAEA,IAAI,MAAM,CAAC,IAAI,KAAK,cAAc,CAAC,gBAAgB,EAAE;gBACnD,OAAO,CAAC,MAAM,CAAC;AACb,oBAAA,IAAI,EAAE,eAAe,CAAC,MAAM,CAAC;AAC7B,oBAAA,SAAS,EAAE,+BAA+B;AAC3C,iBAAA,CAAC;YACJ;QACF,CAAC;KACF,CAAC;AACF,IAAA,cAAc,EAAE,EAAE;;;;;"}
1
+ {"version":3,"file":"use-memo-hooks-style.mjs","sources":["../../../../src/plugins/react-coding-style/rules/use-memo-hooks-style.mts"],"sourcesContent":[null],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"check-destructuring-completeness.d.mts","sourceRoot":"","sources":["../../../../src/plugins/ts-restrictions/rules/check-destructuring-completeness.mts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,QAAQ,EAEd,MAAM,0BAA0B,CAAC;AAGlC,KAAK,OAAO,GAAG,SAAS;IACtB,QAAQ,CAAC;QACP,8BAA8B,CAAC,EAAE,OAAO,CAAC;QACzC,gBAAgB,CAAC,EAAE,MAAM,CAAC;KAC3B,CAAC,CAAC;CACJ,CAAC;AAEF,KAAK,UAAU,GAAG,yBAAyB,CAAC;AA8D5C,eAAO,MAAM,8BAA8B,EAAE,QAAQ,CAAC,UAAU,CAC9D,UAAU,EACV,OAAO,CAmOR,CAAC"}
1
+ {"version":3,"file":"check-destructuring-completeness.d.mts","sourceRoot":"","sources":["../../../../src/plugins/ts-restrictions/rules/check-destructuring-completeness.mts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,QAAQ,EAEd,MAAM,0BAA0B,CAAC;AAGlC,KAAK,OAAO,GAAG,SAAS;IACtB,QAAQ,CAAC;QACP,8BAA8B,CAAC,EAAE,OAAO,CAAC;QACzC,gBAAgB,CAAC,EAAE,MAAM,CAAC;KAC3B,CAAC,CAAC;CACJ,CAAC;AAEF,KAAK,UAAU,GAAG,yBAAyB,CAAC;AAI5C,eAAO,MAAM,8BAA8B,EAAE,QAAQ,CAAC,UAAU,CAC9D,UAAU,EACV,OAAO,CAmOR,CAAC"}
@@ -1,51 +1,6 @@
1
1
  import { AST_NODE_TYPES } from '@typescript-eslint/utils';
2
2
 
3
3
  const DEFAULT_DIRECTIVE_KEYWORD = '@check-destructuring-completeness';
4
- // eslint-disable-next-line @typescript-eslint/prefer-readonly-parameter-types
5
- const getObjectTypeProperties = (type) => {
6
- try {
7
- const properties = type.getProperties();
8
- // Limit to reasonable number of properties to avoid hangs
9
- if (properties.length > 1000) {
10
- return [];
11
- }
12
- return properties
13
- .map((prop) => prop.name)
14
- .filter((name) =>
15
- // Filter out symbol properties and internal properties
16
- !name.startsWith('__') &&
17
- // Only include string property names
18
- typeof name === 'string' &&
19
- name.length > 0);
20
- }
21
- catch {
22
- // If there's any error getting properties, return empty array
23
- return [];
24
- }
25
- };
26
- const isReactComponentFunction = (node) => {
27
- if (node === undefined || node === null)
28
- return false;
29
- // Arrow function component
30
- if (node.type === AST_NODE_TYPES.ArrowFunctionExpression) {
31
- const { body } = node;
32
- if (body.type === AST_NODE_TYPES.BlockStatement) {
33
- return body.body.some((statement) => {
34
- if (statement.type !== AST_NODE_TYPES.ReturnStatement)
35
- return false;
36
- const { argument } = statement;
37
- // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
38
- if (argument === null || argument === undefined)
39
- return false;
40
- const argType = argument.type;
41
- return argType === 'JSXElement' || argType === 'JSXFragment';
42
- });
43
- }
44
- const bodyType = body.type;
45
- return bodyType === 'JSXElement' || bodyType === 'JSXFragment';
46
- }
47
- return false;
48
- };
49
4
  const checkDestructuringCompleteness = {
50
5
  meta: {
51
6
  type: 'suggestion',
@@ -210,7 +165,52 @@ const checkDestructuringCompleteness = {
210
165
  },
211
166
  };
212
167
  },
213
- defaultOptions: [],
168
+ defaultOptions: [{ alwaysCheckReactComponentProps: true }],
169
+ };
170
+ // eslint-disable-next-line @typescript-eslint/prefer-readonly-parameter-types
171
+ const getObjectTypeProperties = (type) => {
172
+ try {
173
+ const properties = type.getProperties();
174
+ // Limit to reasonable number of properties to avoid hangs
175
+ if (properties.length > 1000) {
176
+ return [];
177
+ }
178
+ return properties
179
+ .map((prop) => prop.name)
180
+ .filter((name) =>
181
+ // Filter out symbol properties and internal properties
182
+ !name.startsWith('__') &&
183
+ // Only include string property names
184
+ typeof name === 'string' &&
185
+ name.length > 0);
186
+ }
187
+ catch {
188
+ // If there's any error getting properties, return empty array
189
+ return [];
190
+ }
191
+ };
192
+ const isReactComponentFunction = (node) => {
193
+ if (node === undefined || node === null)
194
+ return false;
195
+ // Arrow function component
196
+ if (node.type === AST_NODE_TYPES.ArrowFunctionExpression) {
197
+ const { body } = node;
198
+ if (body.type === AST_NODE_TYPES.BlockStatement) {
199
+ return body.body.some((statement) => {
200
+ if (statement.type !== AST_NODE_TYPES.ReturnStatement)
201
+ return false;
202
+ const { argument } = statement;
203
+ // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
204
+ if (argument === null || argument === undefined)
205
+ return false;
206
+ const argType = argument.type;
207
+ return argType === 'JSXElement' || argType === 'JSXFragment';
208
+ });
209
+ }
210
+ const bodyType = body.type;
211
+ return bodyType === 'JSXElement' || bodyType === 'JSXFragment';
212
+ }
213
+ return false;
214
214
  };
215
215
 
216
216
  export { checkDestructuringCompleteness };
@@ -1 +1 @@
1
- {"version":3,"file":"check-destructuring-completeness.mjs","sources":["../../../../src/plugins/ts-restrictions/rules/check-destructuring-completeness.mts"],"sourcesContent":[null],"names":[],"mappings":";;AAgBA,MAAM,yBAAyB,GAAG,mCAAmC;AAErE;AACA,MAAM,uBAAuB,GAAG,CAAC,IAAa,KAAuB;AACnE,IAAA,IAAI;AACF,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,aAAa,EAAE;;AAGvC,QAAA,IAAI,UAAU,CAAC,MAAM,GAAG,IAAI,EAAE;AAC5B,YAAA,OAAO,EAAE;QACX;AAEA,QAAA,OAAO;aACJ,GAAG,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI;AACvB,aAAA,MAAM,CACL,CAAC,IAAI;;AAEH,QAAA,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;;YAEtB,OAAO,IAAI,KAAK,QAAQ;AACxB,YAAA,IAAI,CAAC,MAAM,GAAG,CAAC,CAClB;IACL;AAAE,IAAA,MAAM;;AAEN,QAAA,OAAO,EAAE;IACX;AACF,CAAC;AAED,MAAM,wBAAwB,GAAG,CAC/B,IAAoD,KACzC;AACX,IAAA,IAAI,IAAI,KAAK,SAAS,IAAI,IAAI,KAAK,IAAI;AAAE,QAAA,OAAO,KAAK;;IAGrD,IAAI,IAAI,CAAC,IAAI,KAAK,cAAc,CAAC,uBAAuB,EAAE;AACxD,QAAA,MAAM,EAAE,IAAI,EAAE,GAAG,IAAI;QAErB,IAAI,IAAI,CAAC,IAAI,KAAK,cAAc,CAAC,cAAc,EAAE;YAC/C,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,SAAS,KAAI;AAClC,gBAAA,IAAI,SAAS,CAAC,IAAI,KAAK,cAAc,CAAC,eAAe;AAAE,oBAAA,OAAO,KAAK;AAEnE,gBAAA,MAAM,EAAE,QAAQ,EAAE,GAAG,SAAS;;AAG9B,gBAAA,IAAI,QAAQ,KAAK,IAAI,IAAI,QAAQ,KAAK,SAAS;AAAE,oBAAA,OAAO,KAAK;AAE7D,gBAAA,MAAM,OAAO,GAAI,QAA8B,CAAC,IAAI;AAEpD,gBAAA,OAAO,OAAO,KAAK,YAAY,IAAI,OAAO,KAAK,aAAa;AAC9D,YAAA,CAAC,CAAC;QACJ;AAEA,QAAA,MAAM,QAAQ,GAAI,IAA0B,CAAC,IAAI;AAEjD,QAAA,OAAO,QAAQ,KAAK,YAAY,IAAI,QAAQ,KAAK,aAAa;IAChE;AAEA,IAAA,OAAO,KAAK;AACd,CAAC;AAEM,MAAM,8BAA8B,GAGvC;AACF,IAAA,IAAI,EAAE;AACJ,QAAA,IAAI,EAAE,YAAY;AAClB,QAAA,IAAI,EAAE;AACJ,YAAA,WAAW,EACT,iFAAiF;AACpF,SAAA;AACD,QAAA,MAAM,EAAE;AACN,YAAA;AACE,gBAAA,IAAI,EAAE,QAAQ;AACd,gBAAA,UAAU,EAAE;AACV,oBAAA,8BAA8B,EAAE;AAC9B,wBAAA,IAAI,EAAE,SAAS;AACf,wBAAA,WAAW,EACT,4EAA4E;AAC/E,qBAAA;AACD,oBAAA,gBAAgB,EAAE;AAChB,wBAAA,IAAI,EAAE,QAAQ;AACd,wBAAA,WAAW,EACT,4FAA4F;AAC/F,qBAAA;AACF,iBAAA;AACD,gBAAA,oBAAoB,EAAE,KAAK;AAC5B,aAAA;AACF,SAAA;AACD,QAAA,QAAQ,EAAE;AACR,YAAA,uBAAuB,EACrB,gEAAgE;AACnE,SAAA;AACF,KAAA;AAED,IAAA,MAAM,EAAE,CAAC,OAAO,KAAI;AAClB,QAAA,MAAM,cAAc,GAAG,OAAO,CAAC,UAAU,CAAC,cAAc;AAExD,QAAA,IACE,cAAc,EAAE,OAAO,KAAK,SAAS;YACrC,cAAc,CAAC,OAAO,KAAK,IAAI;AAC/B,YAAA,cAAc,CAAC,qBAAqB,KAAK,SAAS,EAClD;AACA,YAAA,OAAO,EAAE;QACX;QAEA,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,EAAE;AAExC,QAAA,MAAM,8BAA8B,GAClC,OAAO,CAAC,8BAA8B,IAAI,IAAI;AAEhD,QAAA,MAAM,gBAAgB,GACpB,OAAO,CAAC,gBAAgB,IAAI,yBAAyB;QAEvD,MAAM,WAAW,GAAG,cAAc,CAAC,OAAO,CAAC,cAAc,EAAE;AAC3D,QAAA,MAAM,qBAAqB,GAAG,cAAc,CAAC,qBAAqB;AAClE,QAAA,MAAM,UAAU,GAAG,OAAO,CAAC,UAAU;AAErC,QAAA,MAAM,mBAAmB,GAAG,CAC1B,IAA+C,KACpC;;AAEX,YAAA,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM;;YAG1B,IAAI,MAAM,EAAE,IAAI,KAAK,cAAc,CAAC,mBAAmB,EAAE;AACvD,gBAAA,OAAO,KAAK;YACd;;YAGA,MAAM,QAAQ,GAAG,UAAU,CAAC,iBAAiB,CAAC,MAAe,CAAC;AAE9D,YAAA,OAAO,QAAQ,CAAC,IAAI,CAAC,CAAC,OAAO,KAC3B,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CACzC;AACH,QAAA,CAAC;AAED,QAAA,MAAM,kCAAkC,GAAG,CACzC,IAA+C,KACpC;AACX,YAAA,IAAI,CAAC,8BAA8B;AAAE,gBAAA,OAAO,KAAK;AAEjD,YAAA,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM;;YAG1B,IAAI,MAAM,KAAK,SAAS;AAAE,gBAAA,OAAO,KAAK;;;YAItC,IAAI,MAAM,CAAC,IAAI,KAAK,cAAc,CAAC,mBAAmB,EAAE;AACtD,gBAAA,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM;;gBAGjC,IAAI,WAAW,KAAK,SAAS;AAAE,oBAAA,OAAO,KAAK;;gBAG3C,IAAI,WAAW,CAAC,IAAI,KAAK,cAAc,CAAC,cAAc,EAAE;AACtD,oBAAA,MAAM,gBAAgB,GAAG,WAAW,CAAC,MAAM;AAE3C,oBAAA;;AAEE,oBAAA,gBAAgB,EAAE,IAAI,KAAK,cAAc,CAAC,uBAAuB;wBACjE,IAAI,CAAC,IAAI,EAAE,IAAI,KAAK,cAAc,CAAC,UAAU,EAC7C;AACA,wBAAA,MAAM,QAAQ;;AAEZ,wBAAA,IAAI,CAAC,IAAI,CAAC,IAAI,KAAK,cAAc,CAAC;AAChC,8BAAE,IAAI,CAAC,IAAI,CAAC;8BACV,SAAS;wBAEf,IACE,QAAQ,KAAK,SAAS;AACtB,4BAAA,gBAAgB,CAAC,MAAM,CAAC,IAAI,CAC1B,CAAC,KAAK,KACJ,KAAK,CAAC,IAAI,KAAK,cAAc,CAAC,UAAU;AACxC,gCAAA,KAAK,CAAC,IAAI,KAAK,QAAQ,CAC1B,EACD;AACA,4BAAA,OAAO,wBAAwB,CAAC,gBAAgB,CAAC;wBACnD;oBACF;gBACF;gBAEA,IAAI,WAAW,CAAC,IAAI,KAAK,cAAc,CAAC,uBAAuB,EAAE;AAC/D,oBAAA,OAAO,wBAAwB,CAAC,WAAW,CAAC;gBAC9C;YACF;AAEA,YAAA,OAAO,KAAK;AACd,QAAA,CAAC;AAED,QAAA,MAAM,SAAS,GAAG,CAChB,IAA+C,KACvC;YACR,IAAI,IAAI,CAAC,EAAE,CAAC,IAAI,KAAK,cAAc,CAAC,aAAa;gBAAE;;YAGnD,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS,IAAI,IAAI,CAAC,IAAI,KAAK,IAAI;gBAAE;YAEnD,MAAM,WAAW,GACf,mBAAmB,CAAC,IAAI,CAAC,IAAI,kCAAkC,CAAC,IAAI,CAAC;AAEvE,YAAA,IAAI,CAAC,WAAW;gBAAE;;YAGlB,MAAM,MAAM,GAAG,qBAAqB,CAAC,GAAG,CAAC,IAAI,CAAC,IAAa,CAAC;;YAG5D,IAAI,MAAM,KAAK,SAAS;gBAAE;YAE1B,MAAM,IAAI,GAAG,WAAW,CAAC,iBAAiB,CAAC,MAAM,CAAC;AAElD,YAAA,MAAM,WAAW,GAAG,uBAAuB,CAAC,IAAI,CAAC;AACjD,YAAA,MAAM,iBAAiB,GAAG,IAAI,GAAG,EAAU;YAE3C,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,EAAE,CAAC,UAAU,EAAE;AACrC,gBAAA,IACE,IAAI,CAAC,IAAI,KAAK,cAAc,CAAC,QAAQ;oBACrC,IAAI,CAAC,GAAG,CAAC,IAAI,KAAK,cAAc,CAAC,UAAU,EAC3C;;oBAEA,iBAAiB,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC;gBACtC;YACF;AAEA,YAAA,MAAM,YAAY,GAAG,WAAW,CAAC,MAAM,CACrC,CAAC,IAAI,KAAK,CAAC,iBAAiB,CAAC,GAAG,CAAC,IAAI,CAAC,CACvC;AAED,YAAA,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE;gBAC3B,OAAO,CAAC,MAAM,CAAC;;oBAEb,IAAI,EAAE,IAAI,CAAC,EAAW;AACtB,oBAAA,SAAS,EAAE,yBAAyB;AACpC,oBAAA,IAAI,EAAE;AACJ,wBAAA,YAAY,EAAE,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC;AACtC,qBAAA;AACF,iBAAA,CAAC;YACJ;AACF,QAAA,CAAC;QAED,OAAO;AACL,YAAA,kBAAkB,EAAE,SAAS;AAC7B,YAAA,uBAAuB,EAAE,CAAC,IAAI,KAAI;AAChC,gBAAA,IAAI,CAAC,8BAA8B;oBAAE;AAErC,gBAAA,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC;oBAAE;AAErC,gBAAA,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,MAAM,EAAE;oBAC/B,IAAI,KAAK,CAAC,IAAI,KAAK,cAAc,CAAC,aAAa,EAAE;;wBAE/C,MAAM,MAAM,GAAG,qBAAqB,CAAC,GAAG,CAAC,KAAc,CAAC;;wBAGxD,IAAI,MAAM,KAAK,SAAS;4BAAE;wBAE1B,MAAM,IAAI,GAAG,WAAW,CAAC,iBAAiB,CAAC,MAAM,CAAC;AAElD,wBAAA,MAAM,WAAW,GAAG,uBAAuB,CAAC,IAAI,CAAC;AACjD,wBAAA,MAAM,iBAAiB,GAAG,IAAI,GAAG,EAAU;AAE3C,wBAAA,KAAK,MAAM,IAAI,IAAI,KAAK,CAAC,UAAU,EAAE;AACnC,4BAAA,IACE,IAAI,CAAC,IAAI,KAAK,cAAc,CAAC,QAAQ;gCACrC,IAAI,CAAC,GAAG,CAAC,IAAI,KAAK,cAAc,CAAC,UAAU,EAC3C;;gCAEA,iBAAiB,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC;4BACtC;wBACF;AAEA,wBAAA,MAAM,YAAY,GAAG,WAAW,CAAC,MAAM,CACrC,CAAC,IAAI,KAAK,CAAC,iBAAiB,CAAC,GAAG,CAAC,IAAI,CAAC,CACvC;AAED,wBAAA,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE;4BAC3B,OAAO,CAAC,MAAM,CAAC;AACb,gCAAA,IAAI,EAAE,KAAK;AACX,gCAAA,SAAS,EAAE,yBAAyB;AACpC,gCAAA,IAAI,EAAE;AACJ,oCAAA,YAAY,EAAE,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC;AACtC,iCAAA;AACF,6BAAA,CAAC;wBACJ;oBACF;gBACF;YACF,CAAC;SACF;IACH,CAAC;AACD,IAAA,cAAc,EAAE,EAAE;;;;;"}
1
+ {"version":3,"file":"check-destructuring-completeness.mjs","sources":["../../../../src/plugins/ts-restrictions/rules/check-destructuring-completeness.mts"],"sourcesContent":[null],"names":[],"mappings":"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"}
@@ -60,9 +60,7 @@ export declare const eslintImportsRules: {
60
60
  readonly 'import-x/dynamic-import-chunkname': "off";
61
61
  readonly 'import-x/no-empty-named-blocks': "error";
62
62
  readonly 'import-x/no-rename-default': 2 | 1;
63
- readonly 'import-x/prefer-namespace-import': readonly ["error", {
64
- readonly patterns: readonly ["react"];
65
- }];
63
+ readonly 'import-x/prefer-namespace-import': "off";
66
64
  readonly 'import-x/imports-first': 0;
67
65
  };
68
66
  //# sourceMappingURL=eslint-import-rules.d.mts.map
@@ -1 +1 @@
1
- {"version":3,"file":"eslint-import-rules.d.mts","sourceRoot":"","sources":["../../src/rules/eslint-import-rules.mts"],"names":[],"mappings":"AAGA,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAiH7B;;;OAGG;;;;;;;;;;;;CAmBkC,CAAC"}
1
+ {"version":3,"file":"eslint-import-rules.d.mts","sourceRoot":"","sources":["../../src/rules/eslint-import-rules.mts"],"names":[],"mappings":"AAGA,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAiH7B;;;OAGG;;;;;;;;;;CAsBkC,CAAC"}
@@ -114,7 +114,9 @@ const eslintImportsRules = {
114
114
  // Covered by unicorn/prefer-node-protocol
115
115
  // 'import/enforce-node-protocol-usage': ['error', 'always'],
116
116
  'import-x/no-rename-default': withDefaultOption('error'),
117
- 'import-x/prefer-namespace-import': ['error', { patterns: ['react'] }],
117
+ // Covered by react-coding-style/import-style
118
+ 'import-x/prefer-namespace-import': 'off',
119
+ // 'import-x/prefer-namespace-import': ['error', { patterns: ['react'] }],
118
120
  // deprecated rules
119
121
  'import-x/imports-first': 0,
120
122
  };
@@ -1 +1 @@
1
- {"version":3,"file":"eslint-import-rules.mjs","sources":["../../src/rules/eslint-import-rules.mts"],"sourcesContent":[null],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"eslint-import-rules.mjs","sources":["../../src/rules/eslint-import-rules.mts"],"sourcesContent":[null],"names":[],"mappings":"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"}
@@ -1,5 +1,7 @@
1
1
  export declare const eslintReactCodingStyleRules: {
2
- readonly 'react-coding-style/import-style': "off";
2
+ readonly 'react-coding-style/import-style': readonly ["error", {
3
+ readonly importStyle: "namespace";
4
+ }];
3
5
  readonly 'react-coding-style/component-name': readonly ["error", {
4
6
  readonly maxLength: 42;
5
7
  }];
@@ -9,5 +11,8 @@ export declare const eslintReactCodingStyleRules: {
9
11
  readonly 'react-coding-style/react-memo-type-parameter': "error";
10
12
  readonly 'react-coding-style/ban-use-imperative-handle-hook': "error";
11
13
  readonly 'react-coding-style/use-memo-hook-style': "error";
14
+ readonly 'react-coding-style/display-name': readonly ["error", {
15
+ readonly ignoreTranspilerName: false;
16
+ }];
12
17
  };
13
18
  //# sourceMappingURL=eslint-react-coding-style-rules.d.mts.map
@@ -1 +1 @@
1
- {"version":3,"file":"eslint-react-coding-style-rules.d.mts","sourceRoot":"","sources":["../../src/rules/eslint-react-coding-style-rules.mts"],"names":[],"mappings":"AAEA,eAAO,MAAM,2BAA2B;;;;;;;;;;;CAWQ,CAAC"}
1
+ {"version":3,"file":"eslint-react-coding-style-rules.d.mts","sourceRoot":"","sources":["../../src/rules/eslint-react-coding-style-rules.mts"],"names":[],"mappings":"AAEA,eAAO,MAAM,2BAA2B;;;;;;;;;;;;;;;;CAYQ,CAAC"}
@@ -1,6 +1,6 @@
1
1
  const eslintReactCodingStyleRules = {
2
- // Covered by import-x/prefer-namespace-import
3
- 'react-coding-style/import-style': 'off',
2
+ // import-x/prefer-namespace-import checks similar things, but this rule enforces more strict style.
3
+ 'react-coding-style/import-style': ['error', { importStyle: 'namespace' }],
4
4
  'react-coding-style/component-name': ['error', { maxLength: 42 }],
5
5
  'react-coding-style/component-var-type-annotation': 'error',
6
6
  'react-coding-style/props-type-annotation-style': 'error',
@@ -8,6 +8,7 @@ const eslintReactCodingStyleRules = {
8
8
  'react-coding-style/react-memo-type-parameter': 'error',
9
9
  'react-coding-style/ban-use-imperative-handle-hook': 'error',
10
10
  'react-coding-style/use-memo-hook-style': 'error',
11
+ 'react-coding-style/display-name': ['error', { ignoreTranspilerName: false }],
11
12
  };
12
13
 
13
14
  export { eslintReactCodingStyleRules };
@@ -1 +1 @@
1
- {"version":3,"file":"eslint-react-coding-style-rules.mjs","sources":["../../src/rules/eslint-react-coding-style-rules.mts"],"sourcesContent":[null],"names":[],"mappings":"AAEO,MAAM,2BAA2B,GAAG;;AAEzC,IAAA,iCAAiC,EAAE,KAAK;IAExC,mCAAmC,EAAE,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC;AACjE,IAAA,kDAAkD,EAAE,OAAO;AAC3D,IAAA,gDAAgD,EAAE,OAAO;AACzD,IAAA,mDAAmD,EAAE,OAAO;AAC5D,IAAA,8CAA8C,EAAE,OAAO;AACvD,IAAA,mDAAmD,EAAE,OAAO;AAC5D,IAAA,wCAAwC,EAAE,OAAO;;;;;"}
1
+ {"version":3,"file":"eslint-react-coding-style-rules.mjs","sources":["../../src/rules/eslint-react-coding-style-rules.mts"],"sourcesContent":[null],"names":[],"mappings":"AAEO,MAAM,2BAA2B,GAAG;;IAEzC,iCAAiC,EAAE,CAAC,OAAO,EAAE,EAAE,WAAW,EAAE,WAAW,EAAE,CAAC;IAE1E,mCAAmC,EAAE,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC;AACjE,IAAA,kDAAkD,EAAE,OAAO;AAC3D,IAAA,gDAAgD,EAAE,OAAO;AACzD,IAAA,mDAAmD,EAAE,OAAO;AAC5D,IAAA,8CAA8C,EAAE,OAAO;AACvD,IAAA,mDAAmD,EAAE,OAAO;AAC5D,IAAA,wCAAwC,EAAE,OAAO;IACjD,iCAAiC,EAAE,CAAC,OAAO,EAAE,EAAE,oBAAoB,EAAE,KAAK,EAAE,CAAC;;;;;"}
@@ -53,7 +53,7 @@ declare namespace ComponentVarTypeAnnotation {
53
53
  type RuleEntry = Linter.StringSeverity;
54
54
  }
55
55
  /**
56
- * Enforces importing React with a single namespace import named 'React'.
56
+ * Enforces importing React with a specific style (namespace or named imports).
57
57
  *
58
58
  * ```md
59
59
  * | key | value |
@@ -63,7 +63,36 @@ declare namespace ComponentVarTypeAnnotation {
63
63
  * ```
64
64
  */
65
65
  declare namespace ImportStyle {
66
- type RuleEntry = Linter.StringSeverity;
66
+ /**
67
+ * ### schema
68
+ *
69
+ * ```json
70
+ * [
71
+ * {
72
+ * "type": "object",
73
+ * "properties": {
74
+ * "importStyle": {
75
+ * "type": "string",
76
+ * "enum": [
77
+ * "namespace",
78
+ * "named"
79
+ * ],
80
+ * "description": "Import style to enforce: \"namespace\" for `import * as React` or \"named\" for `import { ... }`"
81
+ * }
82
+ * },
83
+ * "additionalProperties": false
84
+ * }
85
+ * ]
86
+ * ```
87
+ */
88
+ type Options = {
89
+ /**
90
+ * Import style to enforce: "namespace" for `import * as React` or "named"
91
+ * for `import { ... }`
92
+ */
93
+ readonly importStyle?: 'named' | 'namespace';
94
+ };
95
+ type RuleEntry = Linter.Severity | SpreadOptionsIfIsArray<readonly [Linter.StringSeverity, Options]> | 'off';
67
96
  }
68
97
  /**
69
98
  * Forbids annotating props directly in the arrow function passed to React.memo.
@@ -131,6 +160,41 @@ declare namespace UseMemoHookStyle {
131
160
  declare namespace BanUseImperativeHandleHook {
132
161
  type RuleEntry = Linter.StringSeverity;
133
162
  }
163
+ /**
164
+ * Require displayName property for React components created with React.memo
165
+ *
166
+ * ```md
167
+ * | key | value |
168
+ * | :--------- | :--------- |
169
+ * | type | suggestion |
170
+ * | deprecated | false |
171
+ * ```
172
+ */
173
+ declare namespace DisplayName {
174
+ /**
175
+ * ### schema
176
+ *
177
+ * ```json
178
+ * [
179
+ * {
180
+ * "type": "object",
181
+ * "properties": {
182
+ * "ignoreTranspilerName": {
183
+ * "type": "boolean",
184
+ * "description": "When true, ignores components that get displayName from variable name"
185
+ * }
186
+ * },
187
+ * "additionalProperties": false
188
+ * }
189
+ * ]
190
+ * ```
191
+ */
192
+ type Options = {
193
+ /** When true, ignores components that get displayName from variable name */
194
+ readonly ignoreTranspilerName?: boolean;
195
+ };
196
+ type RuleEntry = Linter.Severity | SpreadOptionsIfIsArray<readonly [Linter.StringSeverity, Options]> | 'off';
197
+ }
134
198
  export type EslintReactCodingStyleRules = {
135
199
  readonly 'react-coding-style/component-name': ComponentName.RuleEntry;
136
200
  readonly 'react-coding-style/component-var-type-annotation': ComponentVarTypeAnnotation.RuleEntry;
@@ -140,9 +204,12 @@ export type EslintReactCodingStyleRules = {
140
204
  readonly 'react-coding-style/react-memo-type-parameter': ReactMemoTypeParameter.RuleEntry;
141
205
  readonly 'react-coding-style/use-memo-hook-style': UseMemoHookStyle.RuleEntry;
142
206
  readonly 'react-coding-style/ban-use-imperative-handle-hook': BanUseImperativeHandleHook.RuleEntry;
207
+ readonly 'react-coding-style/display-name': DisplayName.RuleEntry;
143
208
  };
144
209
  export type EslintReactCodingStyleRulesOption = {
145
210
  readonly 'react-coding-style/component-name': ComponentName.Options;
211
+ readonly 'react-coding-style/import-style': ImportStyle.Options;
212
+ readonly 'react-coding-style/display-name': DisplayName.Options;
146
213
  };
147
214
  export {};
148
215
  //# sourceMappingURL=eslint-react-coding-style-rules.d.mts.map
@@ -1 +1 @@
1
- {"version":3,"file":"eslint-react-coding-style-rules.d.mts","sourceRoot":"","sources":["../../../src/types/rules/eslint-react-coding-style-rules.mts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,MAAM,EAAE,MAAM,QAAQ,CAAC;AAErC,KAAK,sBAAsB,CACzB,CAAC,SAAS,SAAS,CAAC,MAAM,CAAC,cAAc,EAAE,OAAO,CAAC,IACjD,CAAC,CAAC,CAAC,CAAC,SAAS,SAAS,OAAO,EAAE,GAC/B,SAAS,CAAC,MAAM,CAAC,cAAc,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GACzC,CAAC,CAAC;AAEN;;;;;;;;;;GAUG;AACH,kBAAU,aAAa,CAAC;IACtB;;;;;;;;;;;;;;;;;;;;OAoBG;IACH,KAAY,OAAO,GAAG;QACpB,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;QAC5B,QAAQ,CAAC,OAAO,CAAC,EAAE,aAAa,CAAC;KAClC,CAAC;IAEF,KAAY,SAAS,GACjB,MAAM,CAAC,QAAQ,GACf,sBAAsB,CAAC,SAAS,CAAC,MAAM,CAAC,cAAc,EAAE,OAAO,CAAC,CAAC,GACjE,KAAK,CAAC;CACX;AAED;;;;;;;;;GASG;AACH,kBAAU,0BAA0B,CAAC;IACnC,KAAY,SAAS,GAAG,MAAM,CAAC,cAAc,CAAC;CAC/C;AAED;;;;;;;;;GASG;AACH,kBAAU,WAAW,CAAC;IACpB,KAAY,SAAS,GAAG,MAAM,CAAC,cAAc,CAAC;CAC/C;AAED;;;;;;;;;GASG;AACH,kBAAU,wBAAwB,CAAC;IACjC,KAAY,SAAS,GAAG,MAAM,CAAC,cAAc,CAAC;CAC/C;AAED;;;;;;;;;;GAUG;AACH,kBAAU,0BAA0B,CAAC;IACnC,KAAY,SAAS,GAAG,MAAM,CAAC,cAAc,CAAC;CAC/C;AAED;;;;;;;;;GASG;AACH,kBAAU,sBAAsB,CAAC;IAC/B,KAAY,SAAS,GAAG,MAAM,CAAC,cAAc,CAAC;CAC/C;AAED;;;;;;;;;GASG;AACH,kBAAU,gBAAgB,CAAC;IACzB,KAAY,SAAS,GAAG,MAAM,CAAC,cAAc,CAAC;CAC/C;AAED;;;;;;;;;GASG;AACH,kBAAU,0BAA0B,CAAC;IACnC,KAAY,SAAS,GAAG,MAAM,CAAC,cAAc,CAAC;CAC/C;AAED,MAAM,MAAM,2BAA2B,GAAG;IACxC,QAAQ,CAAC,mCAAmC,EAAE,aAAa,CAAC,SAAS,CAAC;IACtE,QAAQ,CAAC,kDAAkD,EAAE,0BAA0B,CAAC,SAAS,CAAC;IAClG,QAAQ,CAAC,iCAAiC,EAAE,WAAW,CAAC,SAAS,CAAC;IAClE,QAAQ,CAAC,gDAAgD,EAAE,wBAAwB,CAAC,SAAS,CAAC;IAC9F,QAAQ,CAAC,mDAAmD,EAAE,0BAA0B,CAAC,SAAS,CAAC;IACnG,QAAQ,CAAC,8CAA8C,EAAE,sBAAsB,CAAC,SAAS,CAAC;IAC1F,QAAQ,CAAC,wCAAwC,EAAE,gBAAgB,CAAC,SAAS,CAAC;IAC9E,QAAQ,CAAC,mDAAmD,EAAE,0BAA0B,CAAC,SAAS,CAAC;CACpG,CAAC;AAEF,MAAM,MAAM,iCAAiC,GAAG;IAC9C,QAAQ,CAAC,mCAAmC,EAAE,aAAa,CAAC,OAAO,CAAC;CACrE,CAAC"}
1
+ {"version":3,"file":"eslint-react-coding-style-rules.d.mts","sourceRoot":"","sources":["../../../src/types/rules/eslint-react-coding-style-rules.mts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "eslint-config-typed",
3
- "version": "3.8.1",
3
+ "version": "3.10.0",
4
4
  "private": false,
5
5
  "keywords": [
6
6
  "typescript"
@@ -34,3 +34,25 @@ export const MemoWithoutProps = React.memo(() => <div>{1}</div>);
34
34
  ```
35
35
 
36
36
  [typescript-eslint PlayGround](https://typescript-eslint.io/play/#ts=5.9.3&showAST=es&fileType=.tsx&code=JYWwDg9gTgLgBAKjgQwM5wEoFNkGN4BmUEIcARFDvmQNwCwAUKJLIiugDYQAmaAFnCIlyXXqj61GjGAE8wWOAAViYdAF5MObhAB2HGQB4A3ozhwdAVxAAZYKhgAuOJWTa9M81YBGWKAG0AXXoGAF8APmDGAHoouAB5AGlGLAAPFnhcXXt4gGs4DWw8GAA6ECwQCANlCFUwgAo6sBVUAEp8sLgTBjNMnWzUK3zNIuKLVCwAWXKIOtMzODq2tQ6mmtRiyxs7EspuC1wsBuQAGjgvJY7kOABqM9OABhbjubM-VdUNq1t7AOfuuBakX%2BlBgFigOjgBm4wAAbmEjAMQCEDFFoXDgiFAVIGDF4kkGKl0nBetkAHIQbCg8EAZRgyBg5SwOhgAHVgDA%2BNSmlohoV8KVplVmvU6kZPFtspj2pC0fDNt8ShwmQBzDnI1GwsJYhjRWKJZJpaAZLLwcmUsE6Wn0xnMtkciAWGBclzcXlUEplCpCtYi96taVQzVGP2fCWKlVqlGy7W6uCkgDiBqJJPgAEEoMrUzodBA6QzXQV3QKvdVag0-U5S-7lp05im4Ii3SMxpNprN-mZFtKQ-LtsVdvtDnUTmcLigbnc4I8-vM4G9mqGFb85jHgVgqRDA3CEVZ1bKMavcQmk0biSa4OnM9nc9buKnUABJPTAHQKQsjT2VKu%2B5pOMW9%2BwnBdXR9HFHx-ACOApRrLoenPRt335FspgqdtZy7Gsey%2BPsBwOI5TnOaUrluLwHieF45ywsNl3%2BVczBBC0ZSDRE901A8gSPRMCUNVh60vLMczzLA70fZ9XztPgABU5CwbACF8JkDibflP29MtGl-YY3H0YxxQVICtBAjxNnAwIoK1aVYLPPp4AQ4YkPGFCZgojCVgXACdmEwd8NHIiJ1IqdyI7Sj3Own4ZwBIF6PXRit3hFiozYxhMQ42Jj245NzyciSHRgaT5EvKwmUceySicgBRFJc2AXAAGESEgV9mQMDS1krZoxz5EoAClqQADWKcqlTKZkOkQj021a1Qxys%2Bs7K60ZHLbFyxyohV%2By8vDhwIsdiMnacKPnNZF22GizDo5wYvBJjtwSjV0WSw80q4wlT3rJyBJvfN7yzDxxuLSpkB0GQfzWGa63gwZ-uQ5bgtcuA1pwzahxHQiaz2gKDuCo6Pg8s7IuxaKNxu%2BLd0Sh7QieuMXp440bLgD7ryEkSnw4F831KgHdI8gzXCMsDfDM8Jyw6yyIfp%2Baixh1CVu7UKww2vYttR3b-LIiLXkR8KVyiy7ibinckXJiJHtS6mT14rLpk%2B5n71Z9mJPy2SsHkygdCU-7VMKbTDH-MKSuA9wBYg8zQemsX-jmqHOel5y4dW%2BX1twlGdr8kj1cOrWYHxi6GOug27v3U3sU4i26eyS9nS0YTlImkthQaP2wyg8HI8h0hoaWmX4%2BlDzFe87bfPRtXAo1uc8Yi3Ors3WVDdYimUpL57GHrSSIHXjfN637eN%2BsXRlXq8BdGK0lkDKWuue-EWwYjuCJejhbY7Q%2BZ4az-vldT4f09HzPE9OyfdZ5xnsxMm90TaUyBEAA&eslintrc=N4KABGBEBOCuA2BTAzpAXGUEKQHYHsBaaFAF2gEsBjUxAE0OQE9dSBDAD3TAG1xsciaNHzRIAGn4CsA7JGSIkNUd0gBJALYAHUaQAiiKvDbQ2pCvlw9k%2BWNCqIAdADc28WIgC8AchJsa3gC61lqGFABmFELIjgAMjqRMoQCEPpo60KQAcmwaKFr%2BiADKoVQRUdBBElKykHnIyGwA5oiqAEqI-qRgyAAWtvB0YABGiGAU2rr0YGzIYAAGExndAFQzcx1dYOEiGmC%2BnQHzjpA1EAC%2BkrKYZ3IKSqQqGOp0iKzlQjy4uYip3psBYIFEisBJJLzedK6HL1AoOEphSJCII8YFvUiONGgxKhNKTTIGIwmMwWXAorEYimOGx2BwuNweHx%2BQHVa44eqNFqqAAqvTG31hhTAArGSymQx2%2BD2By63jAGlgyG6o32ANI3hOt0uIB11xk13kikMjzEz25RQAirA3B86DDEDwkOEMSKfGqUZQmr0XT8fAAxADCVSubLqKE5rWeAFUFGA1Y48hp8AAeAAKIi0yAAfAAKHNaDPIACUYE8WcwYEcVbA5xLFFwSs6dE1121etuOHuxqeUHNVptSLtP0diGdjld-0O6uCnu94993j9sFwNFJAalOlw6ODHagHOakagMbG8cTKfT%2BEzufzhZLZYrVccNbrDdobGbp1bkl1sn1tS7yimlAACyiAaKM0AAKIcAW4akjw%2BDDAAVsa855G6U7khmQiJGhEJnuSJjomCoQAILQE0sB5KwyCeMuryRFudCBKyob7lyzynmB%2BA9P0CBDL0bDOGMOJjMCPy0NACzeBembeMcn6yG2v67oaDw9pAoHgUI0GwQ08GIShNB4RhspAthmRMCZ3gEUCRHYuC5GUdRpDIKk9GjvW9B2SCGKiU5VHojEol-Oa3LgqmxJ5JJaivmw7wkpYO5snu4YHu0U4JtxvEDAJQkieCYDidFQjSbJyDyS2SkhtIqkASaqhaRBukkPplgIchqETu65mXjhVkTrZqL2X5jkUYFNHubgDFecxw2%2BSRiABS5wXgj4YURVFiAxXFCXmElPnEf540rZiUUxPEIXrUU4WhB04RCG8DjJWxaUcVAXFJjl-FgIJwlgKJRVbZJZWFpVikCMptUpWp3ZAZpYHNTBrXIAZnXGd1mG9aElnWUNVLHc5QVTTNTGHQ5ZEnUFi3XbdiCRaYJXQLFSrxeYiVkuTo2U0TNFnYzF0094G13aOj0roghELYTE2ufzuSC6J9p4X85UvQa7GHpAn08X0uW-flAOFcV22lfMMlgwpWrfrcf4CLDgE8jdjm4AQ7D7VYBNrZCrzvEilRc-zR3e%2BRIgAO5LiuHstXBB3zcRVJe7i3gBm48Ax21nPx6CicjY4VBp4gTiGV1C49dnlJ51SBfwEgTgFn1uODdx6u1JrGVaMYDgLDreYN5mGDlXe5bAJW1a1vMYBhxQpC9D3mVnmmhbXv3xaliPY9PhPVWQzb7Yw-VGlqL75j%2B18Px-KvUvB8nof4BHy6rpYGeo3HVKIMjse4Kk5AeIH1eF2LujH06FJxmQrkHUENc66YgsrhZuSZW723bmaPkMwqasGFD8MA%2BBwjoPDtsR%2BHsgYNGmI8OMC9sp6x%2BiqbwV8d7YChtgO2dwjSO2eAAeWAZFUgklPZ51Ej4O%2BD8o6khfqSa%2BoIP56Vft-Twv9ED-zztAoujgS4YzLljCBADa6qP7v1PGLcWI1Tbm9LWvIxKFhwXgtgYAqAbksOiOxlh2D1nrE0GYYASCkDsLgHo7swJOKImAeAEwZ5kJ4rY1wlA2DDCQFgvIQxzZXytl%2BHUts6psIas8Y%2B6IPjQHPuhAA9AAPUcMAAALAAJnEOcAAJEUwOgjvAADUTAUFiUgQkxhTAmkkRiNx3MISp1ruIt%2BedBn50AWo4B1ly5UkmSo%2BucCBoLlsqxDWZieRoPsZMLcmCRQhLeE0We31BgjDGEgBoANBJ%2BOqU%2BdcDYKCvCkiQMOlBaDrAWPY18YB1x7KcZ4ChXQspJiXpebMfdbzrwrLWAA3GAaRugKz-M3EEuYRQpSIFRY4zB5w4UQ0YXvFSB8skaSajpT%2BmcOpGRARCeZKzrKKkQOkIQJJhIAAl4p0CQEguQKCQL4H%2BvGZlRQAkAx4jPOY8UHBKlEM4gFmD6yNnfAwi4JiIAsM7GS%2BGIslqu3wO7eCudpbexGenKlsj%2BmQIxEsmZtK5laJNcRO1%2Bim4LmZVpfAfL2RbNQWMaJHS4kFVCGAbkZyhgqnim7Mw0xZjzxBZ67iyZuRZknvK%2BYPylRgGcBgcNQKRUKC9TmR8RZUlKRqIEfg5wQDnCAA&tsconfig=N4KABGBEDGD2C2AHAlgGwKYCcDyiAuysAdgM6QBcYoEEkJemy0eFYDArugDTg2RGwAqkWgALdNADW6ACYBJIjPQAPWQEFo0dCTKUO6XgF8QhoA&tokens=false)
37
+
38
+ ## `display-name`
39
+
40
+ Requires React components created with `React.memo` to have a `displayName` property for better debugging in React DevTools.
41
+
42
+ **Options:**
43
+
44
+ - `ignoreTranspilerName` (boolean, default: `false`): When true, ignores components that get displayName from variable name (many transpilers add this automatically).
45
+
46
+ **Examples:**
47
+
48
+ ```typescript
49
+ // ❌ Bad
50
+ const MyComponent = React.memo(() => <div>Hello</div>);
51
+
52
+ // ✅ Good
53
+ const MyComponent = React.memo(() => <div>Hello</div>);
54
+ MyComponent.displayName = 'MyComponent';
55
+
56
+ // ✅ Good (with ignoreTranspilerName: true)
57
+ const MyComponent = React.memo(() => <div>Hello</div>);
58
+ ```
@@ -1,6 +1,6 @@
1
1
  import { type TSESLint, type TSESTree } from '@typescript-eslint/utils';
2
2
  import { castDeepMutable } from 'ts-data-forge';
3
- import { isReactMemberExpression } from './shared.mjs';
3
+ import { isReactApiCall } from './shared.mjs';
4
4
 
5
5
  type MessageIds = 'disallowUseImperativeHandle';
6
6
 
@@ -18,10 +18,10 @@ export const banUseImperativeHandleHook: TSESLint.RuleModule<MessageIds> = {
18
18
  },
19
19
  },
20
20
  create: (context) => ({
21
- MemberExpression: (node: DeepReadonly<TSESTree.MemberExpression>) => {
22
- if (isReactMemberExpression(node, 'useImperativeHandle')) {
21
+ CallExpression: (node: DeepReadonly<TSESTree.CallExpression>) => {
22
+ if (isReactApiCall(context, node, 'useImperativeHandle')) {
23
23
  context.report({
24
- node: castDeepMutable(node),
24
+ node: castDeepMutable(node.callee),
25
25
  messageId: 'disallowUseImperativeHandle',
26
26
  });
27
27
  }
@@ -15,26 +15,58 @@ const tester = new RuleTester({
15
15
  },
16
16
  });
17
17
 
18
- tester.run(ruleName, banUseImperativeHandleHook, {
19
- valid: [],
20
- invalid: [
21
- {
22
- name: 'Disallow React.useImperativeHandle',
23
- code: dedent`
24
- type Props = Readonly<{
25
- readonly ref: unknown;
26
- }>;
18
+ describe('ban-use-imperative-handle-hook', () => {
19
+ describe('namespace import (React.useImperativeHandle)', () => {
20
+ tester.run(ruleName, banUseImperativeHandleHook, {
21
+ valid: [],
22
+ invalid: [
23
+ {
24
+ name: 'Disallow React.useImperativeHandle',
25
+ code: dedent`
26
+ type Props = Readonly<{
27
+ readonly ref: unknown;
28
+ }>;
29
+
30
+ const Component = React.memo<Props>((props) => {
31
+ React.useImperativeHandle(props.ref, () => ({}));
32
+ return null;
33
+ });
34
+ `,
35
+ errors: [
36
+ {
37
+ messageId: 'disallowUseImperativeHandle',
38
+ },
39
+ ],
40
+ },
41
+ ],
42
+ });
43
+ });
27
44
 
28
- const Component = React.memo<Props>((props) => {
29
- React.useImperativeHandle(props.ref, () => ({}));
30
- return null;
31
- });
32
- `,
33
- errors: [
45
+ describe('named import (useImperativeHandle)', () => {
46
+ tester.run(ruleName, banUseImperativeHandleHook, {
47
+ valid: [],
48
+ invalid: [
34
49
  {
35
- messageId: 'disallowUseImperativeHandle',
50
+ name: 'Disallow useImperativeHandle',
51
+ code: dedent`
52
+ import { memo, useImperativeHandle } from 'react';
53
+
54
+ type Props = Readonly<{
55
+ readonly ref: unknown;
56
+ }>;
57
+
58
+ const Component = memo<Props>((props) => {
59
+ useImperativeHandle(props.ref, () => ({}));
60
+ return null;
61
+ });
62
+ `,
63
+ errors: [
64
+ {
65
+ messageId: 'disallowUseImperativeHandle',
66
+ },
67
+ ],
36
68
  },
37
69
  ],
38
- },
39
- ],
70
+ });
71
+ });
40
72
  });
@@ -1,5 +1,5 @@
1
1
  import { AST_NODE_TYPES, type TSESLint } from '@typescript-eslint/utils';
2
- import { isReactCallExpression } from './shared.mjs';
2
+ import { isReactApiCall } from './shared.mjs';
3
3
 
4
4
  type ComponentNameOption = Readonly<{
5
5
  maxLength?: number;
@@ -60,12 +60,15 @@ export const componentNameRule: TSESLint.RuleModule<MessageIds, Options> = {
60
60
  VariableDeclarator: (node) => {
61
61
  if (
62
62
  node.id.type !== AST_NODE_TYPES.Identifier ||
63
- node.init?.type !== AST_NODE_TYPES.CallExpression ||
64
- !isReactCallExpression(node.init, 'memo')
63
+ node.init?.type !== AST_NODE_TYPES.CallExpression
65
64
  ) {
66
65
  return;
67
66
  }
68
67
 
68
+ if (!isReactApiCall(context, node.init, 'memo')) {
69
+ return;
70
+ }
71
+
69
72
  if (node.id.name.length >= maxLength) {
70
73
  context.report({
71
74
  node: node.id,