eslint-plugin-react-x 2.8.2-next.5 → 2.8.3-beta.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.js +240 -149
- package/package.json +6 -6
package/dist/index.js
CHANGED
|
@@ -66,7 +66,7 @@ const rules$7 = {
|
|
|
66
66
|
//#endregion
|
|
67
67
|
//#region package.json
|
|
68
68
|
var name$6 = "eslint-plugin-react-x";
|
|
69
|
-
var version = "2.8.
|
|
69
|
+
var version = "2.8.3-beta.7";
|
|
70
70
|
|
|
71
71
|
//#endregion
|
|
72
72
|
//#region src/utils/create-rule.ts
|
|
@@ -170,7 +170,7 @@ function getTypeVariants(types) {
|
|
|
170
170
|
|
|
171
171
|
//#endregion
|
|
172
172
|
//#region src/rules/jsx-dollar.ts
|
|
173
|
-
const RULE_NAME$
|
|
173
|
+
const RULE_NAME$64 = "jsx-dollar";
|
|
174
174
|
var jsx_dollar_default = createRule({
|
|
175
175
|
meta: {
|
|
176
176
|
type: "problem",
|
|
@@ -183,11 +183,11 @@ var jsx_dollar_default = createRule({
|
|
|
183
183
|
},
|
|
184
184
|
schema: []
|
|
185
185
|
},
|
|
186
|
-
name: RULE_NAME$
|
|
187
|
-
create: create$
|
|
186
|
+
name: RULE_NAME$64,
|
|
187
|
+
create: create$64,
|
|
188
188
|
defaultOptions: []
|
|
189
189
|
});
|
|
190
|
-
function create$
|
|
190
|
+
function create$64(context) {
|
|
191
191
|
/**
|
|
192
192
|
* Visitor function for JSXElement and JSXFragment nodes
|
|
193
193
|
* @param node The JSXElement or JSXFragment node to be checked
|
|
@@ -228,7 +228,7 @@ function create$63(context) {
|
|
|
228
228
|
|
|
229
229
|
//#endregion
|
|
230
230
|
//#region src/rules/jsx-key-before-spread.ts
|
|
231
|
-
const RULE_NAME$
|
|
231
|
+
const RULE_NAME$63 = "jsx-key-before-spread";
|
|
232
232
|
var jsx_key_before_spread_default = createRule({
|
|
233
233
|
meta: {
|
|
234
234
|
type: "problem",
|
|
@@ -236,11 +236,11 @@ var jsx_key_before_spread_default = createRule({
|
|
|
236
236
|
messages: { default: "The 'key' prop must be placed before any spread props when using the new JSX transform." },
|
|
237
237
|
schema: []
|
|
238
238
|
},
|
|
239
|
-
name: RULE_NAME$
|
|
240
|
-
create: create$
|
|
239
|
+
name: RULE_NAME$63,
|
|
240
|
+
create: create$63,
|
|
241
241
|
defaultOptions: []
|
|
242
242
|
});
|
|
243
|
-
function create$
|
|
243
|
+
function create$63(context) {
|
|
244
244
|
const { jsx } = {
|
|
245
245
|
...core.getJsxConfigFromContext(context),
|
|
246
246
|
...core.getJsxConfigFromAnnotation(context)
|
|
@@ -264,7 +264,7 @@ function create$62(context) {
|
|
|
264
264
|
|
|
265
265
|
//#endregion
|
|
266
266
|
//#region src/rules/jsx-no-comment-textnodes.ts
|
|
267
|
-
const RULE_NAME$
|
|
267
|
+
const RULE_NAME$62 = "jsx-no-comment-textnodes";
|
|
268
268
|
var jsx_no_comment_textnodes_default = createRule({
|
|
269
269
|
meta: {
|
|
270
270
|
type: "problem",
|
|
@@ -272,11 +272,11 @@ var jsx_no_comment_textnodes_default = createRule({
|
|
|
272
272
|
messages: { default: "Possible misused comment in text node. Comments inside children section of tag should be placed inside braces." },
|
|
273
273
|
schema: []
|
|
274
274
|
},
|
|
275
|
-
name: RULE_NAME$
|
|
276
|
-
create: create$
|
|
275
|
+
name: RULE_NAME$62,
|
|
276
|
+
create: create$62,
|
|
277
277
|
defaultOptions: []
|
|
278
278
|
});
|
|
279
|
-
function create$
|
|
279
|
+
function create$62(context) {
|
|
280
280
|
function hasCommentLike(node) {
|
|
281
281
|
if (ast.isOneOf([AST_NODE_TYPES.JSXAttribute, AST_NODE_TYPES.JSXExpressionContainer])(node.parent)) return false;
|
|
282
282
|
return /^\s*\/(?:\/|\*)/mu.test(context.sourceCode.getText(node));
|
|
@@ -297,7 +297,7 @@ function create$61(context) {
|
|
|
297
297
|
|
|
298
298
|
//#endregion
|
|
299
299
|
//#region src/rules/jsx-no-duplicate-props.ts
|
|
300
|
-
const RULE_NAME$
|
|
300
|
+
const RULE_NAME$61 = "jsx-no-duplicate-props";
|
|
301
301
|
var jsx_no_duplicate_props_default = createRule({
|
|
302
302
|
meta: {
|
|
303
303
|
type: "problem",
|
|
@@ -305,11 +305,11 @@ var jsx_no_duplicate_props_default = createRule({
|
|
|
305
305
|
messages: { default: "This JSX property is assigned multiple times." },
|
|
306
306
|
schema: []
|
|
307
307
|
},
|
|
308
|
-
name: RULE_NAME$
|
|
309
|
-
create: create$
|
|
308
|
+
name: RULE_NAME$61,
|
|
309
|
+
create: create$61,
|
|
310
310
|
defaultOptions: []
|
|
311
311
|
});
|
|
312
|
-
function create$
|
|
312
|
+
function create$61(context) {
|
|
313
313
|
return { JSXOpeningElement(node) {
|
|
314
314
|
const props = [];
|
|
315
315
|
for (const attr of node.attributes) {
|
|
@@ -330,7 +330,7 @@ function create$60(context) {
|
|
|
330
330
|
|
|
331
331
|
//#endregion
|
|
332
332
|
//#region src/rules/jsx-no-iife.ts
|
|
333
|
-
const RULE_NAME$
|
|
333
|
+
const RULE_NAME$60 = "jsx-no-iife";
|
|
334
334
|
var jsx_no_iife_default = createRule({
|
|
335
335
|
meta: {
|
|
336
336
|
type: "problem",
|
|
@@ -338,11 +338,11 @@ var jsx_no_iife_default = createRule({
|
|
|
338
338
|
messages: { default: "Avoid using immediately-invoked function expressions in JSX." },
|
|
339
339
|
schema: []
|
|
340
340
|
},
|
|
341
|
-
name: RULE_NAME$
|
|
342
|
-
create: create$
|
|
341
|
+
name: RULE_NAME$60,
|
|
342
|
+
create: create$60,
|
|
343
343
|
defaultOptions: []
|
|
344
344
|
});
|
|
345
|
-
function create$
|
|
345
|
+
function create$60(context) {
|
|
346
346
|
return {
|
|
347
347
|
"JSXElement :function"(node) {
|
|
348
348
|
if (node.parent.type === AST_NODE_TYPES.CallExpression && node.parent.callee === node) context.report({
|
|
@@ -361,7 +361,7 @@ function create$59(context) {
|
|
|
361
361
|
|
|
362
362
|
//#endregion
|
|
363
363
|
//#region src/rules/jsx-no-undef.ts
|
|
364
|
-
const RULE_NAME$
|
|
364
|
+
const RULE_NAME$59 = "jsx-no-undef";
|
|
365
365
|
var jsx_no_undef_default = createRule({
|
|
366
366
|
meta: {
|
|
367
367
|
type: "problem",
|
|
@@ -369,11 +369,11 @@ var jsx_no_undef_default = createRule({
|
|
|
369
369
|
messages: { default: "JSX variable '{{name}}' is not defined." },
|
|
370
370
|
schema: []
|
|
371
371
|
},
|
|
372
|
-
name: RULE_NAME$
|
|
373
|
-
create: create$
|
|
372
|
+
name: RULE_NAME$59,
|
|
373
|
+
create: create$59,
|
|
374
374
|
defaultOptions: []
|
|
375
375
|
});
|
|
376
|
-
function create$
|
|
376
|
+
function create$59(context) {
|
|
377
377
|
return { JSXOpeningElement(node) {
|
|
378
378
|
const name = match(node.name).with({ type: AST_NODE_TYPES.JSXIdentifier }, (n) => n.name).with({
|
|
379
379
|
type: AST_NODE_TYPES.JSXMemberExpression,
|
|
@@ -392,7 +392,7 @@ function create$58(context) {
|
|
|
392
392
|
|
|
393
393
|
//#endregion
|
|
394
394
|
//#region src/rules/jsx-shorthand-boolean.ts
|
|
395
|
-
const RULE_NAME$
|
|
395
|
+
const RULE_NAME$58 = "jsx-shorthand-boolean";
|
|
396
396
|
const defaultOptions$4 = [1];
|
|
397
397
|
const schema$3 = [{
|
|
398
398
|
type: "integer",
|
|
@@ -406,11 +406,11 @@ var jsx_shorthand_boolean_default = createRule({
|
|
|
406
406
|
messages: { default: "{{message}}" },
|
|
407
407
|
schema: schema$3
|
|
408
408
|
},
|
|
409
|
-
name: RULE_NAME$
|
|
410
|
-
create: create$
|
|
409
|
+
name: RULE_NAME$58,
|
|
410
|
+
create: create$58,
|
|
411
411
|
defaultOptions: defaultOptions$4
|
|
412
412
|
});
|
|
413
|
-
function create$
|
|
413
|
+
function create$58(context) {
|
|
414
414
|
const policy = context.options[0] ?? defaultOptions$4[0];
|
|
415
415
|
return { JSXAttribute(node) {
|
|
416
416
|
const { value } = node;
|
|
@@ -438,7 +438,7 @@ function create$57(context) {
|
|
|
438
438
|
|
|
439
439
|
//#endregion
|
|
440
440
|
//#region src/rules/jsx-shorthand-fragment.ts
|
|
441
|
-
const RULE_NAME$
|
|
441
|
+
const RULE_NAME$57 = "jsx-shorthand-fragment";
|
|
442
442
|
const defaultOptions$3 = [1];
|
|
443
443
|
const schema$2 = [{
|
|
444
444
|
type: "integer",
|
|
@@ -452,11 +452,11 @@ var jsx_shorthand_fragment_default = createRule({
|
|
|
452
452
|
messages: { default: "{{message}}" },
|
|
453
453
|
schema: schema$2
|
|
454
454
|
},
|
|
455
|
-
name: RULE_NAME$
|
|
456
|
-
create: create$
|
|
455
|
+
name: RULE_NAME$57,
|
|
456
|
+
create: create$57,
|
|
457
457
|
defaultOptions: defaultOptions$3
|
|
458
458
|
});
|
|
459
|
-
function create$
|
|
459
|
+
function create$57(context) {
|
|
460
460
|
const policy = context.options[0] ?? defaultOptions$3[0];
|
|
461
461
|
const jsxConfig = {
|
|
462
462
|
...core.getJsxConfigFromContext(context),
|
|
@@ -491,7 +491,7 @@ function create$56(context) {
|
|
|
491
491
|
|
|
492
492
|
//#endregion
|
|
493
493
|
//#region src/rules/jsx-uses-react.ts
|
|
494
|
-
const RULE_NAME$
|
|
494
|
+
const RULE_NAME$56 = "jsx-uses-react";
|
|
495
495
|
var jsx_uses_react_default = createRule({
|
|
496
496
|
meta: {
|
|
497
497
|
type: "problem",
|
|
@@ -499,11 +499,11 @@ var jsx_uses_react_default = createRule({
|
|
|
499
499
|
messages: { default: "Marked {{name}} as used." },
|
|
500
500
|
schema: []
|
|
501
501
|
},
|
|
502
|
-
name: RULE_NAME$
|
|
503
|
-
create: create$
|
|
502
|
+
name: RULE_NAME$56,
|
|
503
|
+
create: create$56,
|
|
504
504
|
defaultOptions: []
|
|
505
505
|
});
|
|
506
|
-
function create$
|
|
506
|
+
function create$56(context) {
|
|
507
507
|
const { jsx, jsxFactory, jsxFragmentFactory } = {
|
|
508
508
|
...core.getJsxConfigFromContext(context),
|
|
509
509
|
...core.getJsxConfigFromAnnotation(context)
|
|
@@ -534,7 +534,7 @@ function debugReport(context, node, name) {
|
|
|
534
534
|
|
|
535
535
|
//#endregion
|
|
536
536
|
//#region src/rules/jsx-uses-vars.ts
|
|
537
|
-
const RULE_NAME$
|
|
537
|
+
const RULE_NAME$55 = "jsx-uses-vars";
|
|
538
538
|
var jsx_uses_vars_default = createRule({
|
|
539
539
|
meta: {
|
|
540
540
|
type: "problem",
|
|
@@ -542,11 +542,11 @@ var jsx_uses_vars_default = createRule({
|
|
|
542
542
|
messages: { default: "An identifier in JSX is marked as used." },
|
|
543
543
|
schema: []
|
|
544
544
|
},
|
|
545
|
-
name: RULE_NAME$
|
|
546
|
-
create: create$
|
|
545
|
+
name: RULE_NAME$55,
|
|
546
|
+
create: create$55,
|
|
547
547
|
defaultOptions: []
|
|
548
548
|
});
|
|
549
|
-
function create$
|
|
549
|
+
function create$55(context) {
|
|
550
550
|
return { JSXOpeningElement(node) {
|
|
551
551
|
switch (node.name.type) {
|
|
552
552
|
case AST_NODE_TYPES.JSXIdentifier:
|
|
@@ -564,7 +564,7 @@ function create$54(context) {
|
|
|
564
564
|
|
|
565
565
|
//#endregion
|
|
566
566
|
//#region src/rules/no-access-state-in-setstate.ts
|
|
567
|
-
const RULE_NAME$
|
|
567
|
+
const RULE_NAME$54 = "no-access-state-in-setstate";
|
|
568
568
|
function isKeyLiteral$2(node, key) {
|
|
569
569
|
return match(key).with({ type: AST_NODE_TYPES.Literal }, constTrue).with({
|
|
570
570
|
type: AST_NODE_TYPES.TemplateLiteral,
|
|
@@ -578,11 +578,11 @@ var no_access_state_in_setstate_default = createRule({
|
|
|
578
578
|
messages: { default: "Do not access 'this.state' within 'setState'. Use the update function instead." },
|
|
579
579
|
schema: []
|
|
580
580
|
},
|
|
581
|
-
name: RULE_NAME$
|
|
582
|
-
create: create$
|
|
581
|
+
name: RULE_NAME$54,
|
|
582
|
+
create: create$54,
|
|
583
583
|
defaultOptions: []
|
|
584
584
|
});
|
|
585
|
-
function create$
|
|
585
|
+
function create$54(context) {
|
|
586
586
|
if (!context.sourceCode.text.includes("setState")) return {};
|
|
587
587
|
const classStack = [];
|
|
588
588
|
const methodStack = [];
|
|
@@ -653,7 +653,7 @@ function create$53(context) {
|
|
|
653
653
|
|
|
654
654
|
//#endregion
|
|
655
655
|
//#region src/rules/no-array-index-key.ts
|
|
656
|
-
const RULE_NAME$
|
|
656
|
+
const RULE_NAME$53 = "no-array-index-key";
|
|
657
657
|
const REACT_CHILDREN_METHOD = ["forEach", "map"];
|
|
658
658
|
function getIndexParamPosition(methodName) {
|
|
659
659
|
switch (methodName) {
|
|
@@ -712,11 +712,11 @@ var no_array_index_key_default = createRule({
|
|
|
712
712
|
messages: { default: "Do not use item index in the array as its key." },
|
|
713
713
|
schema: []
|
|
714
714
|
},
|
|
715
|
-
name: RULE_NAME$
|
|
716
|
-
create: create$
|
|
715
|
+
name: RULE_NAME$53,
|
|
716
|
+
create: create$53,
|
|
717
717
|
defaultOptions: []
|
|
718
718
|
});
|
|
719
|
-
function create$
|
|
719
|
+
function create$53(context) {
|
|
720
720
|
const indexParamNames = [];
|
|
721
721
|
function isArrayIndex(node) {
|
|
722
722
|
return node.type === AST_NODE_TYPES.Identifier && indexParamNames.some((name) => name != null && name === node.name);
|
|
@@ -782,7 +782,7 @@ function create$52(context) {
|
|
|
782
782
|
|
|
783
783
|
//#endregion
|
|
784
784
|
//#region src/rules/no-children-count.ts
|
|
785
|
-
const RULE_NAME$
|
|
785
|
+
const RULE_NAME$52 = "no-children-count";
|
|
786
786
|
var no_children_count_default = createRule({
|
|
787
787
|
meta: {
|
|
788
788
|
type: "problem",
|
|
@@ -790,11 +790,11 @@ var no_children_count_default = createRule({
|
|
|
790
790
|
messages: { default: "Using 'Children.count' is uncommon and can lead to fragile code. Use alternatives instead." },
|
|
791
791
|
schema: []
|
|
792
792
|
},
|
|
793
|
-
name: RULE_NAME$
|
|
794
|
-
create: create$
|
|
793
|
+
name: RULE_NAME$52,
|
|
794
|
+
create: create$52,
|
|
795
795
|
defaultOptions: []
|
|
796
796
|
});
|
|
797
|
-
function create$
|
|
797
|
+
function create$52(context) {
|
|
798
798
|
return { MemberExpression(node) {
|
|
799
799
|
if (core.isChildrenCount(context, node)) context.report({
|
|
800
800
|
messageId: "default",
|
|
@@ -805,7 +805,7 @@ function create$51(context) {
|
|
|
805
805
|
|
|
806
806
|
//#endregion
|
|
807
807
|
//#region src/rules/no-children-for-each.ts
|
|
808
|
-
const RULE_NAME$
|
|
808
|
+
const RULE_NAME$51 = "no-children-for-each";
|
|
809
809
|
var no_children_for_each_default = createRule({
|
|
810
810
|
meta: {
|
|
811
811
|
type: "problem",
|
|
@@ -813,11 +813,11 @@ var no_children_for_each_default = createRule({
|
|
|
813
813
|
messages: { default: "Using 'Children.forEach' is uncommon and can lead to fragile code. Use alternatives instead." },
|
|
814
814
|
schema: []
|
|
815
815
|
},
|
|
816
|
-
name: RULE_NAME$
|
|
817
|
-
create: create$
|
|
816
|
+
name: RULE_NAME$51,
|
|
817
|
+
create: create$51,
|
|
818
818
|
defaultOptions: []
|
|
819
819
|
});
|
|
820
|
-
function create$
|
|
820
|
+
function create$51(context) {
|
|
821
821
|
return { MemberExpression(node) {
|
|
822
822
|
if (core.isChildrenForEach(context, node)) context.report({
|
|
823
823
|
messageId: "default",
|
|
@@ -828,7 +828,7 @@ function create$50(context) {
|
|
|
828
828
|
|
|
829
829
|
//#endregion
|
|
830
830
|
//#region src/rules/no-children-map.ts
|
|
831
|
-
const RULE_NAME$
|
|
831
|
+
const RULE_NAME$50 = "no-children-map";
|
|
832
832
|
var no_children_map_default = createRule({
|
|
833
833
|
meta: {
|
|
834
834
|
type: "problem",
|
|
@@ -836,11 +836,11 @@ var no_children_map_default = createRule({
|
|
|
836
836
|
messages: { default: "Using 'Children.map' is uncommon and can lead to fragile code. Use alternatives instead." },
|
|
837
837
|
schema: []
|
|
838
838
|
},
|
|
839
|
-
name: RULE_NAME$
|
|
840
|
-
create: create$
|
|
839
|
+
name: RULE_NAME$50,
|
|
840
|
+
create: create$50,
|
|
841
841
|
defaultOptions: []
|
|
842
842
|
});
|
|
843
|
-
function create$
|
|
843
|
+
function create$50(context) {
|
|
844
844
|
return { MemberExpression(node) {
|
|
845
845
|
if (core.isChildrenMap(context, node)) context.report({
|
|
846
846
|
messageId: "default",
|
|
@@ -851,7 +851,7 @@ function create$49(context) {
|
|
|
851
851
|
|
|
852
852
|
//#endregion
|
|
853
853
|
//#region src/rules/no-children-only.ts
|
|
854
|
-
const RULE_NAME$
|
|
854
|
+
const RULE_NAME$49 = "no-children-only";
|
|
855
855
|
var no_children_only_default = createRule({
|
|
856
856
|
meta: {
|
|
857
857
|
type: "problem",
|
|
@@ -859,11 +859,11 @@ var no_children_only_default = createRule({
|
|
|
859
859
|
messages: { default: "Using 'Children.only' is uncommon and can lead to fragile code. Use alternatives instead." },
|
|
860
860
|
schema: []
|
|
861
861
|
},
|
|
862
|
-
name: RULE_NAME$
|
|
863
|
-
create: create$
|
|
862
|
+
name: RULE_NAME$49,
|
|
863
|
+
create: create$49,
|
|
864
864
|
defaultOptions: []
|
|
865
865
|
});
|
|
866
|
-
function create$
|
|
866
|
+
function create$49(context) {
|
|
867
867
|
return { MemberExpression(node) {
|
|
868
868
|
if (core.isChildrenOnly(context, node)) context.report({
|
|
869
869
|
messageId: "default",
|
|
@@ -874,7 +874,7 @@ function create$48(context) {
|
|
|
874
874
|
|
|
875
875
|
//#endregion
|
|
876
876
|
//#region src/rules/no-children-prop.ts
|
|
877
|
-
const RULE_NAME$
|
|
877
|
+
const RULE_NAME$48 = "no-children-prop";
|
|
878
878
|
var no_children_prop_default = createRule({
|
|
879
879
|
meta: {
|
|
880
880
|
type: "problem",
|
|
@@ -882,11 +882,11 @@ var no_children_prop_default = createRule({
|
|
|
882
882
|
messages: { default: "Do not pass 'children' as props." },
|
|
883
883
|
schema: []
|
|
884
884
|
},
|
|
885
|
-
name: RULE_NAME$
|
|
886
|
-
create: create$
|
|
885
|
+
name: RULE_NAME$48,
|
|
886
|
+
create: create$48,
|
|
887
887
|
defaultOptions: []
|
|
888
888
|
});
|
|
889
|
-
function create$
|
|
889
|
+
function create$48(context) {
|
|
890
890
|
return { JSXElement(node) {
|
|
891
891
|
const childrenProp = core.getJsxAttribute(context, node)("children");
|
|
892
892
|
if (childrenProp != null) context.report({
|
|
@@ -898,7 +898,7 @@ function create$47(context) {
|
|
|
898
898
|
|
|
899
899
|
//#endregion
|
|
900
900
|
//#region src/rules/no-children-to-array.ts
|
|
901
|
-
const RULE_NAME$
|
|
901
|
+
const RULE_NAME$47 = "no-children-to-array";
|
|
902
902
|
var no_children_to_array_default = createRule({
|
|
903
903
|
meta: {
|
|
904
904
|
type: "problem",
|
|
@@ -906,11 +906,11 @@ var no_children_to_array_default = createRule({
|
|
|
906
906
|
messages: { default: "Using 'Children.toArray' is uncommon and can lead to fragile code. Use alternatives instead." },
|
|
907
907
|
schema: []
|
|
908
908
|
},
|
|
909
|
-
name: RULE_NAME$
|
|
910
|
-
create: create$
|
|
909
|
+
name: RULE_NAME$47,
|
|
910
|
+
create: create$47,
|
|
911
911
|
defaultOptions: []
|
|
912
912
|
});
|
|
913
|
-
function create$
|
|
913
|
+
function create$47(context) {
|
|
914
914
|
return { MemberExpression(node) {
|
|
915
915
|
if (core.isChildrenToArray(context, node)) context.report({
|
|
916
916
|
messageId: "default",
|
|
@@ -921,7 +921,7 @@ function create$46(context) {
|
|
|
921
921
|
|
|
922
922
|
//#endregion
|
|
923
923
|
//#region src/rules/no-class-component.ts
|
|
924
|
-
const RULE_NAME$
|
|
924
|
+
const RULE_NAME$46 = "no-class-component";
|
|
925
925
|
var no_class_component_default = createRule({
|
|
926
926
|
meta: {
|
|
927
927
|
type: "problem",
|
|
@@ -929,11 +929,11 @@ var no_class_component_default = createRule({
|
|
|
929
929
|
messages: { default: "Avoid using class components. Use function components instead." },
|
|
930
930
|
schema: []
|
|
931
931
|
},
|
|
932
|
-
name: RULE_NAME$
|
|
933
|
-
create: create$
|
|
932
|
+
name: RULE_NAME$46,
|
|
933
|
+
create: create$46,
|
|
934
934
|
defaultOptions: []
|
|
935
935
|
});
|
|
936
|
-
function create$
|
|
936
|
+
function create$46(context) {
|
|
937
937
|
if (!context.sourceCode.text.includes("Component")) return {};
|
|
938
938
|
const { ctx, visitor } = core.useComponentCollectorLegacy(context);
|
|
939
939
|
return defineRuleListener(visitor, { "Program:exit"(program) {
|
|
@@ -950,7 +950,7 @@ function create$45(context) {
|
|
|
950
950
|
|
|
951
951
|
//#endregion
|
|
952
952
|
//#region src/rules/no-clone-element.ts
|
|
953
|
-
const RULE_NAME$
|
|
953
|
+
const RULE_NAME$45 = "no-clone-element";
|
|
954
954
|
var no_clone_element_default = createRule({
|
|
955
955
|
meta: {
|
|
956
956
|
type: "problem",
|
|
@@ -958,11 +958,11 @@ var no_clone_element_default = createRule({
|
|
|
958
958
|
messages: { default: "Using 'cloneElement' is uncommon and can lead to fragile code. Use alternatives instead." },
|
|
959
959
|
schema: []
|
|
960
960
|
},
|
|
961
|
-
name: RULE_NAME$
|
|
962
|
-
create: create$
|
|
961
|
+
name: RULE_NAME$45,
|
|
962
|
+
create: create$45,
|
|
963
963
|
defaultOptions: []
|
|
964
964
|
});
|
|
965
|
-
function create$
|
|
965
|
+
function create$45(context) {
|
|
966
966
|
return { CallExpression(node) {
|
|
967
967
|
if (core.isCloneElementCall(context, node)) context.report({
|
|
968
968
|
messageId: "default",
|
|
@@ -973,7 +973,7 @@ function create$44(context) {
|
|
|
973
973
|
|
|
974
974
|
//#endregion
|
|
975
975
|
//#region src/rules/no-component-will-mount.ts
|
|
976
|
-
const RULE_NAME$
|
|
976
|
+
const RULE_NAME$44 = "no-component-will-mount";
|
|
977
977
|
var no_component_will_mount_default = createRule({
|
|
978
978
|
meta: {
|
|
979
979
|
type: "problem",
|
|
@@ -982,11 +982,11 @@ var no_component_will_mount_default = createRule({
|
|
|
982
982
|
messages: { default: "[Deprecated] Use 'UNSAFE_componentWillMount' instead." },
|
|
983
983
|
schema: []
|
|
984
984
|
},
|
|
985
|
-
name: RULE_NAME$
|
|
986
|
-
create: create$
|
|
985
|
+
name: RULE_NAME$44,
|
|
986
|
+
create: create$44,
|
|
987
987
|
defaultOptions: []
|
|
988
988
|
});
|
|
989
|
-
function create$
|
|
989
|
+
function create$44(context) {
|
|
990
990
|
if (!context.sourceCode.text.includes("componentWillMount")) return {};
|
|
991
991
|
const { ctx, visitor } = core.useComponentCollectorLegacy(context);
|
|
992
992
|
return defineRuleListener(visitor, { "Program:exit"(program) {
|
|
@@ -1006,7 +1006,7 @@ function create$43(context) {
|
|
|
1006
1006
|
|
|
1007
1007
|
//#endregion
|
|
1008
1008
|
//#region src/rules/no-component-will-receive-props.ts
|
|
1009
|
-
const RULE_NAME$
|
|
1009
|
+
const RULE_NAME$43 = "no-component-will-receive-props";
|
|
1010
1010
|
var no_component_will_receive_props_default = createRule({
|
|
1011
1011
|
meta: {
|
|
1012
1012
|
type: "problem",
|
|
@@ -1015,11 +1015,11 @@ var no_component_will_receive_props_default = createRule({
|
|
|
1015
1015
|
messages: { default: "[Deprecated] Use 'UNSAFE_componentWillReceiveProps' instead." },
|
|
1016
1016
|
schema: []
|
|
1017
1017
|
},
|
|
1018
|
-
name: RULE_NAME$
|
|
1019
|
-
create: create$
|
|
1018
|
+
name: RULE_NAME$43,
|
|
1019
|
+
create: create$43,
|
|
1020
1020
|
defaultOptions: []
|
|
1021
1021
|
});
|
|
1022
|
-
function create$
|
|
1022
|
+
function create$43(context) {
|
|
1023
1023
|
if (!context.sourceCode.text.includes("componentWillReceiveProps")) return {};
|
|
1024
1024
|
const { ctx, visitor } = core.useComponentCollectorLegacy(context);
|
|
1025
1025
|
return defineRuleListener(visitor, { "Program:exit"(program) {
|
|
@@ -1039,7 +1039,7 @@ function create$42(context) {
|
|
|
1039
1039
|
|
|
1040
1040
|
//#endregion
|
|
1041
1041
|
//#region src/rules/no-component-will-update.ts
|
|
1042
|
-
const RULE_NAME$
|
|
1042
|
+
const RULE_NAME$42 = "no-component-will-update";
|
|
1043
1043
|
var no_component_will_update_default = createRule({
|
|
1044
1044
|
meta: {
|
|
1045
1045
|
type: "problem",
|
|
@@ -1048,11 +1048,11 @@ var no_component_will_update_default = createRule({
|
|
|
1048
1048
|
messages: { default: "[Deprecated] Use 'UNSAFE_componentWillUpdate' instead." },
|
|
1049
1049
|
schema: []
|
|
1050
1050
|
},
|
|
1051
|
-
name: RULE_NAME$
|
|
1052
|
-
create: create$
|
|
1051
|
+
name: RULE_NAME$42,
|
|
1052
|
+
create: create$42,
|
|
1053
1053
|
defaultOptions: []
|
|
1054
1054
|
});
|
|
1055
|
-
function create$
|
|
1055
|
+
function create$42(context) {
|
|
1056
1056
|
if (!context.sourceCode.text.includes("componentWillUpdate")) return {};
|
|
1057
1057
|
const { ctx, visitor } = core.useComponentCollectorLegacy(context);
|
|
1058
1058
|
return defineRuleListener(visitor, { "Program:exit"(program) {
|
|
@@ -1072,7 +1072,7 @@ function create$41(context) {
|
|
|
1072
1072
|
|
|
1073
1073
|
//#endregion
|
|
1074
1074
|
//#region src/rules/no-context-provider.ts
|
|
1075
|
-
const RULE_NAME$
|
|
1075
|
+
const RULE_NAME$41 = "no-context-provider";
|
|
1076
1076
|
var no_context_provider_default = createRule({
|
|
1077
1077
|
meta: {
|
|
1078
1078
|
type: "problem",
|
|
@@ -1081,11 +1081,11 @@ var no_context_provider_default = createRule({
|
|
|
1081
1081
|
messages: { default: "In React 19, you can render '<Context>' as a provider instead of '<Context.Provider>'." },
|
|
1082
1082
|
schema: []
|
|
1083
1083
|
},
|
|
1084
|
-
name: RULE_NAME$
|
|
1085
|
-
create: create$
|
|
1084
|
+
name: RULE_NAME$41,
|
|
1085
|
+
create: create$41,
|
|
1086
1086
|
defaultOptions: []
|
|
1087
1087
|
});
|
|
1088
|
-
function create$
|
|
1088
|
+
function create$41(context) {
|
|
1089
1089
|
if (!context.sourceCode.text.includes("Provider")) return {};
|
|
1090
1090
|
const { version } = getSettingsFromContext(context);
|
|
1091
1091
|
if (compare(version, "19.0.0", "<")) return {};
|
|
@@ -1112,7 +1112,7 @@ function create$40(context) {
|
|
|
1112
1112
|
|
|
1113
1113
|
//#endregion
|
|
1114
1114
|
//#region src/rules/no-create-ref.ts
|
|
1115
|
-
const RULE_NAME$
|
|
1115
|
+
const RULE_NAME$40 = "no-create-ref";
|
|
1116
1116
|
var no_create_ref_default = createRule({
|
|
1117
1117
|
meta: {
|
|
1118
1118
|
type: "problem",
|
|
@@ -1120,11 +1120,11 @@ var no_create_ref_default = createRule({
|
|
|
1120
1120
|
messages: { default: "[Deprecated] Use 'useRef' instead." },
|
|
1121
1121
|
schema: []
|
|
1122
1122
|
},
|
|
1123
|
-
name: RULE_NAME$
|
|
1124
|
-
create: create$
|
|
1123
|
+
name: RULE_NAME$40,
|
|
1124
|
+
create: create$40,
|
|
1125
1125
|
defaultOptions: []
|
|
1126
1126
|
});
|
|
1127
|
-
function create$
|
|
1127
|
+
function create$40(context) {
|
|
1128
1128
|
return { CallExpression(node) {
|
|
1129
1129
|
if (core.isCreateRefCall(context, node) && ast.findParentNode(node, core.isClassComponent) == null) context.report({
|
|
1130
1130
|
messageId: "default",
|
|
@@ -1135,7 +1135,7 @@ function create$39(context) {
|
|
|
1135
1135
|
|
|
1136
1136
|
//#endregion
|
|
1137
1137
|
//#region src/rules/no-default-props.ts
|
|
1138
|
-
const RULE_NAME$
|
|
1138
|
+
const RULE_NAME$39 = "no-default-props";
|
|
1139
1139
|
var no_default_props_default = createRule({
|
|
1140
1140
|
meta: {
|
|
1141
1141
|
type: "problem",
|
|
@@ -1143,11 +1143,11 @@ var no_default_props_default = createRule({
|
|
|
1143
1143
|
messages: { default: "[Deprecated] Use ES6 default parameters instead." },
|
|
1144
1144
|
schema: []
|
|
1145
1145
|
},
|
|
1146
|
-
name: RULE_NAME$
|
|
1147
|
-
create: create$
|
|
1146
|
+
name: RULE_NAME$39,
|
|
1147
|
+
create: create$39,
|
|
1148
1148
|
defaultOptions: []
|
|
1149
1149
|
});
|
|
1150
|
-
function create$
|
|
1150
|
+
function create$39(context) {
|
|
1151
1151
|
if (!context.sourceCode.text.includes("defaultProps")) return {};
|
|
1152
1152
|
return { AssignmentExpression(node) {
|
|
1153
1153
|
if (node.operator !== "=" || node.left.type !== AST_NODE_TYPES.MemberExpression) return;
|
|
@@ -1167,7 +1167,7 @@ function create$38(context) {
|
|
|
1167
1167
|
|
|
1168
1168
|
//#endregion
|
|
1169
1169
|
//#region src/rules/no-direct-mutation-state.ts
|
|
1170
|
-
const RULE_NAME$
|
|
1170
|
+
const RULE_NAME$38 = "no-direct-mutation-state";
|
|
1171
1171
|
function isConstructorFunction(node) {
|
|
1172
1172
|
return ast.isOneOf([AST_NODE_TYPES.FunctionDeclaration, AST_NODE_TYPES.FunctionExpression])(node) && ast.isMethodOrProperty(node.parent) && node.parent.key.type === AST_NODE_TYPES.Identifier && node.parent.key.name === "constructor";
|
|
1173
1173
|
}
|
|
@@ -1178,11 +1178,11 @@ var no_direct_mutation_state_default = createRule({
|
|
|
1178
1178
|
messages: { default: "Do not mutate state directly. Use 'setState()' instead." },
|
|
1179
1179
|
schema: []
|
|
1180
1180
|
},
|
|
1181
|
-
name: RULE_NAME$
|
|
1182
|
-
create: create$
|
|
1181
|
+
name: RULE_NAME$38,
|
|
1182
|
+
create: create$38,
|
|
1183
1183
|
defaultOptions: []
|
|
1184
1184
|
});
|
|
1185
|
-
function create$
|
|
1185
|
+
function create$38(context) {
|
|
1186
1186
|
return { AssignmentExpression(node) {
|
|
1187
1187
|
if (!core.isAssignmentToThisState(node)) return;
|
|
1188
1188
|
const parentClass = ast.findParentNode(node, ast.isOneOf([AST_NODE_TYPES.ClassDeclaration, AST_NODE_TYPES.ClassExpression]));
|
|
@@ -1196,7 +1196,7 @@ function create$37(context) {
|
|
|
1196
1196
|
|
|
1197
1197
|
//#endregion
|
|
1198
1198
|
//#region src/rules/no-duplicate-key.ts
|
|
1199
|
-
const RULE_NAME$
|
|
1199
|
+
const RULE_NAME$37 = "no-duplicate-key";
|
|
1200
1200
|
var no_duplicate_key_default = createRule({
|
|
1201
1201
|
meta: {
|
|
1202
1202
|
type: "problem",
|
|
@@ -1204,11 +1204,11 @@ var no_duplicate_key_default = createRule({
|
|
|
1204
1204
|
messages: { default: "The 'key' prop must be unique to its sibling elements." },
|
|
1205
1205
|
schema: []
|
|
1206
1206
|
},
|
|
1207
|
-
name: RULE_NAME$
|
|
1208
|
-
create: create$
|
|
1207
|
+
name: RULE_NAME$37,
|
|
1208
|
+
create: create$37,
|
|
1209
1209
|
defaultOptions: []
|
|
1210
1210
|
});
|
|
1211
|
-
function create$
|
|
1211
|
+
function create$37(context) {
|
|
1212
1212
|
if (!context.sourceCode.text.includes("key=")) return {};
|
|
1213
1213
|
const keyedEntries = /* @__PURE__ */ new Map();
|
|
1214
1214
|
function isKeyValueEqual(a, b) {
|
|
@@ -1263,7 +1263,7 @@ function create$36(context) {
|
|
|
1263
1263
|
|
|
1264
1264
|
//#endregion
|
|
1265
1265
|
//#region src/rules/no-forward-ref.ts
|
|
1266
|
-
const RULE_NAME$
|
|
1266
|
+
const RULE_NAME$36 = "no-forward-ref";
|
|
1267
1267
|
var no_forward_ref_default = createRule({
|
|
1268
1268
|
meta: {
|
|
1269
1269
|
type: "problem",
|
|
@@ -1272,11 +1272,11 @@ var no_forward_ref_default = createRule({
|
|
|
1272
1272
|
messages: { default: "In React 19, 'forwardRef' is no longer necessary. Pass 'ref' as a prop instead." },
|
|
1273
1273
|
schema: []
|
|
1274
1274
|
},
|
|
1275
|
-
name: RULE_NAME$
|
|
1276
|
-
create: create$
|
|
1275
|
+
name: RULE_NAME$36,
|
|
1276
|
+
create: create$36,
|
|
1277
1277
|
defaultOptions: []
|
|
1278
1278
|
});
|
|
1279
|
-
function create$
|
|
1279
|
+
function create$36(context) {
|
|
1280
1280
|
if (!context.sourceCode.text.includes("forwardRef")) return {};
|
|
1281
1281
|
const { version } = getSettingsFromContext(context);
|
|
1282
1282
|
if (compare(version, "19.0.0", "<")) return {};
|
|
@@ -1371,7 +1371,7 @@ function getComponentPropsFixes(context, fixer, node, typeArguments) {
|
|
|
1371
1371
|
|
|
1372
1372
|
//#endregion
|
|
1373
1373
|
//#region src/rules/no-implicit-key.ts
|
|
1374
|
-
const RULE_NAME$
|
|
1374
|
+
const RULE_NAME$35 = "no-implicit-key";
|
|
1375
1375
|
var no_implicit_key_default = createRule({
|
|
1376
1376
|
meta: {
|
|
1377
1377
|
type: "problem",
|
|
@@ -1379,11 +1379,11 @@ var no_implicit_key_default = createRule({
|
|
|
1379
1379
|
messages: { default: "Do not use implicit 'key' props." },
|
|
1380
1380
|
schema: []
|
|
1381
1381
|
},
|
|
1382
|
-
name: RULE_NAME$
|
|
1383
|
-
create: create$
|
|
1382
|
+
name: RULE_NAME$35,
|
|
1383
|
+
create: create$35,
|
|
1384
1384
|
defaultOptions: []
|
|
1385
1385
|
});
|
|
1386
|
-
function create$
|
|
1386
|
+
function create$35(context) {
|
|
1387
1387
|
return { JSXOpeningElement(node) {
|
|
1388
1388
|
const keyProp = core.getJsxAttribute(context, node.parent)("key");
|
|
1389
1389
|
const isKeyPropOnElement = node.attributes.some((n) => n.type === AST_NODE_TYPES.JSXAttribute && n.name.type === AST_NODE_TYPES.JSXIdentifier && n.name.name === "key");
|
|
@@ -1396,7 +1396,7 @@ function create$34(context) {
|
|
|
1396
1396
|
|
|
1397
1397
|
//#endregion
|
|
1398
1398
|
//#region src/rules/no-leaked-conditional-rendering.ts
|
|
1399
|
-
const RULE_NAME$
|
|
1399
|
+
const RULE_NAME$34 = "no-leaked-conditional-rendering";
|
|
1400
1400
|
var no_leaked_conditional_rendering_default = createRule({
|
|
1401
1401
|
meta: {
|
|
1402
1402
|
type: "problem",
|
|
@@ -1404,11 +1404,11 @@ var no_leaked_conditional_rendering_default = createRule({
|
|
|
1404
1404
|
messages: { default: "Potential leaked value {{value}} that might cause unintentionally rendered values or rendering crashes." },
|
|
1405
1405
|
schema: []
|
|
1406
1406
|
},
|
|
1407
|
-
name: RULE_NAME$
|
|
1408
|
-
create: create$
|
|
1407
|
+
name: RULE_NAME$34,
|
|
1408
|
+
create: create$34,
|
|
1409
1409
|
defaultOptions: []
|
|
1410
1410
|
});
|
|
1411
|
-
function create$
|
|
1411
|
+
function create$34(context) {
|
|
1412
1412
|
if (!context.sourceCode.text.includes("&&")) return {};
|
|
1413
1413
|
const { version } = getSettingsFromContext(context);
|
|
1414
1414
|
const allowedVariants = [
|
|
@@ -1465,7 +1465,7 @@ function create$33(context) {
|
|
|
1465
1465
|
|
|
1466
1466
|
//#endregion
|
|
1467
1467
|
//#region src/rules/no-missing-component-display-name.ts
|
|
1468
|
-
const RULE_NAME$
|
|
1468
|
+
const RULE_NAME$33 = "no-missing-component-display-name";
|
|
1469
1469
|
var no_missing_component_display_name_default = createRule({
|
|
1470
1470
|
meta: {
|
|
1471
1471
|
type: "problem",
|
|
@@ -1473,11 +1473,11 @@ var no_missing_component_display_name_default = createRule({
|
|
|
1473
1473
|
messages: { default: "Add missing 'displayName' for component." },
|
|
1474
1474
|
schema: []
|
|
1475
1475
|
},
|
|
1476
|
-
name: RULE_NAME$
|
|
1477
|
-
create: create$
|
|
1476
|
+
name: RULE_NAME$33,
|
|
1477
|
+
create: create$33,
|
|
1478
1478
|
defaultOptions: []
|
|
1479
1479
|
});
|
|
1480
|
-
function create$
|
|
1480
|
+
function create$33(context) {
|
|
1481
1481
|
if (!context.sourceCode.text.includes("memo") && !context.sourceCode.text.includes("forwardRef")) return {};
|
|
1482
1482
|
const { ctx, visitor } = core.useComponentCollector(context, {
|
|
1483
1483
|
collectDisplayName: true,
|
|
@@ -1499,7 +1499,7 @@ function create$32(context) {
|
|
|
1499
1499
|
|
|
1500
1500
|
//#endregion
|
|
1501
1501
|
//#region src/rules/no-missing-context-display-name.ts
|
|
1502
|
-
const RULE_NAME$
|
|
1502
|
+
const RULE_NAME$32 = "no-missing-context-display-name";
|
|
1503
1503
|
var no_missing_context_display_name_default = createRule({
|
|
1504
1504
|
meta: {
|
|
1505
1505
|
type: "problem",
|
|
@@ -1508,11 +1508,11 @@ var no_missing_context_display_name_default = createRule({
|
|
|
1508
1508
|
messages: { default: "Add missing 'displayName' for context." },
|
|
1509
1509
|
schema: []
|
|
1510
1510
|
},
|
|
1511
|
-
name: RULE_NAME$
|
|
1512
|
-
create: create$
|
|
1511
|
+
name: RULE_NAME$32,
|
|
1512
|
+
create: create$32,
|
|
1513
1513
|
defaultOptions: []
|
|
1514
1514
|
});
|
|
1515
|
-
function create$
|
|
1515
|
+
function create$32(context) {
|
|
1516
1516
|
if (!context.sourceCode.text.includes("createContext")) return {};
|
|
1517
1517
|
const createCalls = [];
|
|
1518
1518
|
const displayNameAssignments = [];
|
|
@@ -1564,7 +1564,7 @@ function create$31(context) {
|
|
|
1564
1564
|
|
|
1565
1565
|
//#endregion
|
|
1566
1566
|
//#region src/rules/no-missing-key.ts
|
|
1567
|
-
const RULE_NAME$
|
|
1567
|
+
const RULE_NAME$31 = "no-missing-key";
|
|
1568
1568
|
var no_missing_key_default = createRule({
|
|
1569
1569
|
meta: {
|
|
1570
1570
|
type: "problem",
|
|
@@ -1575,11 +1575,11 @@ var no_missing_key_default = createRule({
|
|
|
1575
1575
|
},
|
|
1576
1576
|
schema: []
|
|
1577
1577
|
},
|
|
1578
|
-
name: RULE_NAME$
|
|
1579
|
-
create: create$
|
|
1578
|
+
name: RULE_NAME$31,
|
|
1579
|
+
create: create$31,
|
|
1580
1580
|
defaultOptions: []
|
|
1581
1581
|
});
|
|
1582
|
-
function create$
|
|
1582
|
+
function create$31(ctx) {
|
|
1583
1583
|
let inChildrenToArray = false;
|
|
1584
1584
|
function check(node) {
|
|
1585
1585
|
if (node.type === AST_NODE_TYPES.JSXElement) return core.getJsxAttribute(ctx, node)("key") == null ? {
|
|
@@ -1643,7 +1643,7 @@ function create$30(ctx) {
|
|
|
1643
1643
|
|
|
1644
1644
|
//#endregion
|
|
1645
1645
|
//#region src/rules/no-misused-capture-owner-stack.ts
|
|
1646
|
-
const RULE_NAME$
|
|
1646
|
+
const RULE_NAME$30 = "no-misused-capture-owner-stack";
|
|
1647
1647
|
var no_misused_capture_owner_stack_default = createRule({
|
|
1648
1648
|
meta: {
|
|
1649
1649
|
type: "problem",
|
|
@@ -1654,11 +1654,11 @@ var no_misused_capture_owner_stack_default = createRule({
|
|
|
1654
1654
|
},
|
|
1655
1655
|
schema: []
|
|
1656
1656
|
},
|
|
1657
|
-
name: RULE_NAME$
|
|
1658
|
-
create: create$
|
|
1657
|
+
name: RULE_NAME$30,
|
|
1658
|
+
create: create$30,
|
|
1659
1659
|
defaultOptions: []
|
|
1660
1660
|
});
|
|
1661
|
-
function create$
|
|
1661
|
+
function create$30(context) {
|
|
1662
1662
|
if (!context.sourceCode.text.includes("captureOwnerStack")) return {};
|
|
1663
1663
|
const { importSource } = getSettingsFromContext(context);
|
|
1664
1664
|
return {
|
|
@@ -1689,7 +1689,7 @@ function isDevelopmentOnlyCheck(node) {
|
|
|
1689
1689
|
|
|
1690
1690
|
//#endregion
|
|
1691
1691
|
//#region src/rules/no-nested-component-definitions.ts
|
|
1692
|
-
const RULE_NAME$
|
|
1692
|
+
const RULE_NAME$29 = "no-nested-component-definitions";
|
|
1693
1693
|
var no_nested_component_definitions_default = createRule({
|
|
1694
1694
|
meta: {
|
|
1695
1695
|
type: "problem",
|
|
@@ -1697,11 +1697,11 @@ var no_nested_component_definitions_default = createRule({
|
|
|
1697
1697
|
messages: { default: "Do not nest component definitions inside other components or props. {{suggestion}}" },
|
|
1698
1698
|
schema: []
|
|
1699
1699
|
},
|
|
1700
|
-
name: RULE_NAME$
|
|
1701
|
-
create: create$
|
|
1700
|
+
name: RULE_NAME$29,
|
|
1701
|
+
create: create$29,
|
|
1702
1702
|
defaultOptions: []
|
|
1703
1703
|
});
|
|
1704
|
-
function create$
|
|
1704
|
+
function create$29(context) {
|
|
1705
1705
|
const hint = core.ComponentDetectionHint.SkipArrayMapCallback | core.ComponentDetectionHint.SkipNullLiteral | core.ComponentDetectionHint.SkipUndefined | core.ComponentDetectionHint.SkipBooleanLiteral | core.ComponentDetectionHint.SkipStringLiteral | core.ComponentDetectionHint.SkipNumberLiteral | core.ComponentDetectionHint.StrictLogical | core.ComponentDetectionHint.StrictConditional;
|
|
1706
1706
|
const fCollector = core.useComponentCollector(context, { hint });
|
|
1707
1707
|
const cCollector = core.useComponentCollectorLegacy(context);
|
|
@@ -1806,7 +1806,7 @@ function isInsideCreateElementProps(context, node) {
|
|
|
1806
1806
|
|
|
1807
1807
|
//#endregion
|
|
1808
1808
|
//#region src/rules/no-nested-lazy-component-declarations.ts
|
|
1809
|
-
const RULE_NAME$
|
|
1809
|
+
const RULE_NAME$28 = "no-nested-lazy-component-declarations";
|
|
1810
1810
|
var no_nested_lazy_component_declarations_default = createRule({
|
|
1811
1811
|
meta: {
|
|
1812
1812
|
type: "problem",
|
|
@@ -1814,11 +1814,11 @@ var no_nested_lazy_component_declarations_default = createRule({
|
|
|
1814
1814
|
messages: { default: "Do not declare lazy components inside other components. Instead, always declare them at the top level of your module." },
|
|
1815
1815
|
schema: []
|
|
1816
1816
|
},
|
|
1817
|
-
name: RULE_NAME$
|
|
1818
|
-
create: create$
|
|
1817
|
+
name: RULE_NAME$28,
|
|
1818
|
+
create: create$28,
|
|
1819
1819
|
defaultOptions: []
|
|
1820
1820
|
});
|
|
1821
|
-
function create$
|
|
1821
|
+
function create$28(context) {
|
|
1822
1822
|
const hint = core.ComponentDetectionHint.None;
|
|
1823
1823
|
const collector = core.useComponentCollector(context, { hint });
|
|
1824
1824
|
const collectorLegacy = core.useComponentCollectorLegacy(context);
|
|
@@ -1845,6 +1845,96 @@ function create$27(context) {
|
|
|
1845
1845
|
});
|
|
1846
1846
|
}
|
|
1847
1847
|
|
|
1848
|
+
//#endregion
|
|
1849
|
+
//#region src/rules/no-non-async-server-functions.ts
|
|
1850
|
+
const RULE_NAME$27 = "no-non-async-server-functions";
|
|
1851
|
+
var no_non_async_server_functions_default = createRule({
|
|
1852
|
+
meta: {
|
|
1853
|
+
type: "problem",
|
|
1854
|
+
docs: { description: "Enforces that server functions are async. If a file has a top-level 'use server' directive, exported functions/methods must be async. Functions with their own 'use server' directive must also be async." },
|
|
1855
|
+
fixable: "code",
|
|
1856
|
+
messages: { default: "Server functions must be async." },
|
|
1857
|
+
schema: []
|
|
1858
|
+
},
|
|
1859
|
+
name: RULE_NAME$27,
|
|
1860
|
+
create: create$27,
|
|
1861
|
+
defaultOptions: []
|
|
1862
|
+
});
|
|
1863
|
+
function create$27(context) {
|
|
1864
|
+
if (!context.sourceCode.text.includes("use server")) return {};
|
|
1865
|
+
const hasFileLevelUseServerDirective = ast.getFileDirectives(context.sourceCode.ast).some((d) => d.value === "use server");
|
|
1866
|
+
/**
|
|
1867
|
+
* Check if `node` is an async function, and report if not
|
|
1868
|
+
* @param node The function node to check
|
|
1869
|
+
* @returns Whether a report was made
|
|
1870
|
+
*/
|
|
1871
|
+
function getAsyncFix(node) {
|
|
1872
|
+
if (node.type === AST_NODE_TYPES.FunctionDeclaration || node.type === AST_NODE_TYPES.FunctionExpression) {
|
|
1873
|
+
const fnToken = context.sourceCode.getFirstToken(node);
|
|
1874
|
+
if (fnToken != null) return (fixer) => fixer.insertTextBefore(fnToken, "async ");
|
|
1875
|
+
return null;
|
|
1876
|
+
}
|
|
1877
|
+
if (node.type === AST_NODE_TYPES.ArrowFunctionExpression) return (fixer) => fixer.insertTextBefore(node, "async ");
|
|
1878
|
+
return null;
|
|
1879
|
+
}
|
|
1880
|
+
function reportNonAsyncFunction(node) {
|
|
1881
|
+
if (!ast.isFunction(node)) return false;
|
|
1882
|
+
if (!node.async) {
|
|
1883
|
+
context.report({
|
|
1884
|
+
messageId: "default",
|
|
1885
|
+
node,
|
|
1886
|
+
fix: getAsyncFix(node)
|
|
1887
|
+
});
|
|
1888
|
+
return true;
|
|
1889
|
+
}
|
|
1890
|
+
return false;
|
|
1891
|
+
}
|
|
1892
|
+
/**
|
|
1893
|
+
* Check non-exported local functions for 'use server' directives, and report if they are not async
|
|
1894
|
+
* @param node The function node to check
|
|
1895
|
+
*/
|
|
1896
|
+
function checkLocalServerFunction(node) {
|
|
1897
|
+
if (ast.getFunctionDirectives(node).some((d) => d.value === "use server")) reportNonAsyncFunction(node);
|
|
1898
|
+
}
|
|
1899
|
+
/**
|
|
1900
|
+
* Find function declarations from exports and check them
|
|
1901
|
+
* @param id The identifier of the exported function
|
|
1902
|
+
* @param node The export declaration node
|
|
1903
|
+
*/
|
|
1904
|
+
function findAndCheckExportedFunctionDeclarations(id, node) {
|
|
1905
|
+
const variableNode = getVariableDefinitionNode(findVariable(id.name, context.sourceCode.getScope(node)), 0);
|
|
1906
|
+
if (variableNode == null) return;
|
|
1907
|
+
reportNonAsyncFunction(variableNode);
|
|
1908
|
+
}
|
|
1909
|
+
return {
|
|
1910
|
+
ArrowFunctionExpression(node) {
|
|
1911
|
+
checkLocalServerFunction(node);
|
|
1912
|
+
},
|
|
1913
|
+
ExportDefaultDeclaration(node) {
|
|
1914
|
+
if (!hasFileLevelUseServerDirective) return;
|
|
1915
|
+
const decl = node.declaration;
|
|
1916
|
+
if (reportNonAsyncFunction(decl)) return;
|
|
1917
|
+
if (ast.isIdentifier(decl)) findAndCheckExportedFunctionDeclarations(decl, node);
|
|
1918
|
+
},
|
|
1919
|
+
ExportNamedDeclaration(node) {
|
|
1920
|
+
if (!hasFileLevelUseServerDirective) return;
|
|
1921
|
+
if (node.declaration != null) {
|
|
1922
|
+
const decl = node.declaration;
|
|
1923
|
+
if (reportNonAsyncFunction(decl)) return;
|
|
1924
|
+
if (decl.type === AST_NODE_TYPES.VariableDeclaration) for (const declarator of decl.declarations) reportNonAsyncFunction(declarator.init);
|
|
1925
|
+
return;
|
|
1926
|
+
}
|
|
1927
|
+
if (node.source == null && node.specifiers.length > 0) for (const spec of node.specifiers) findAndCheckExportedFunctionDeclarations(spec.local, node);
|
|
1928
|
+
},
|
|
1929
|
+
FunctionDeclaration(node) {
|
|
1930
|
+
checkLocalServerFunction(node);
|
|
1931
|
+
},
|
|
1932
|
+
FunctionExpression(node) {
|
|
1933
|
+
checkLocalServerFunction(node);
|
|
1934
|
+
}
|
|
1935
|
+
};
|
|
1936
|
+
}
|
|
1937
|
+
|
|
1848
1938
|
//#endregion
|
|
1849
1939
|
//#region src/rules/no-prop-types.ts
|
|
1850
1940
|
const RULE_NAME$26 = "no-prop-types";
|
|
@@ -3477,6 +3567,7 @@ const plugin = {
|
|
|
3477
3567
|
"no-nested-component-definitions": no_nested_component_definitions_default,
|
|
3478
3568
|
"no-nested-lazy-component-declarations": no_nested_lazy_component_declarations_default,
|
|
3479
3569
|
"no-prop-types": no_prop_types_default,
|
|
3570
|
+
"no-non-async-server-functions": no_non_async_server_functions_default,
|
|
3480
3571
|
"no-redundant-should-component-update": no_redundant_should_component_update_default,
|
|
3481
3572
|
"no-set-state-in-component-did-mount": no_set_state_in_component_did_mount_default,
|
|
3482
3573
|
"no-set-state-in-component-did-update": no_set_state_in_component_did_update_default,
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "eslint-plugin-react-x",
|
|
3
|
-
"version": "2.8.
|
|
3
|
+
"version": "2.8.3-beta.7",
|
|
4
4
|
"description": "A set of composable ESLint rules for for libraries and frameworks that use React as a UI runtime.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"react",
|
|
@@ -45,11 +45,11 @@
|
|
|
45
45
|
"is-immutable-type": "^5.0.1",
|
|
46
46
|
"ts-api-utils": "^2.4.0",
|
|
47
47
|
"ts-pattern": "^5.9.0",
|
|
48
|
-
"@eslint-react/ast": "2.8.
|
|
49
|
-
"@eslint-react/
|
|
50
|
-
"@eslint-react/
|
|
51
|
-
"@eslint-react/
|
|
52
|
-
"@eslint-react/var": "2.8.
|
|
48
|
+
"@eslint-react/ast": "2.8.3-beta.7",
|
|
49
|
+
"@eslint-react/core": "2.8.3-beta.7",
|
|
50
|
+
"@eslint-react/eff": "2.8.3-beta.7",
|
|
51
|
+
"@eslint-react/shared": "2.8.3-beta.7",
|
|
52
|
+
"@eslint-react/var": "2.8.3-beta.7"
|
|
53
53
|
},
|
|
54
54
|
"devDependencies": {
|
|
55
55
|
"@types/react": "^19.2.10",
|