eslint-plugin-react-hooks-extra 1.20.2-next.7 → 1.21.0-beta.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -30,7 +30,7 @@ export default [
30
30
  rules: {
31
31
  // react-hooks-extra recommended rules
32
32
  "react-hooks-extra/no-direct-set-state-in-use-effect": "warn",
33
- "react-hooks-extra/no-redundant-custom-hook": "warn",
33
+ "react-hooks-extra/no-useless-custom-hooks": "warn",
34
34
  "react-hooks-extra/prefer-use-state-lazy-initialization": "warn",
35
35
  },
36
36
  },
package/dist/index.d.mts CHANGED
@@ -8,14 +8,18 @@ declare const _default: {
8
8
  readonly rules: {
9
9
  readonly "no-direct-set-state-in-use-effect": _typescript_eslint_utils_ts_eslint.RuleModule<"noDirectSetStateInUseEffect", [], unknown, _typescript_eslint_utils_ts_eslint.RuleListener>;
10
10
  readonly "no-direct-set-state-in-use-layout-effect": _typescript_eslint_utils_ts_eslint.RuleModule<"noDirectSetStateInUseLayoutEffect", [], unknown, _typescript_eslint_utils_ts_eslint.RuleListener>;
11
- readonly "no-redundant-custom-hook": _typescript_eslint_utils_ts_eslint.RuleModule<"noRedundantCustomHook", [], unknown, _typescript_eslint_utils_ts_eslint.RuleListener>;
11
+ readonly "no-useless-custom-hooks": _typescript_eslint_utils_ts_eslint.RuleModule<"noUselessCustomHooks", [], unknown, _typescript_eslint_utils_ts_eslint.RuleListener>;
12
12
  readonly "no-unnecessary-use-callback": _typescript_eslint_utils_ts_eslint.RuleModule<"noUnnecessaryUseCallback", [], unknown, _typescript_eslint_utils_ts_eslint.RuleListener>;
13
13
  readonly "no-unnecessary-use-memo": _typescript_eslint_utils_ts_eslint.RuleModule<"noUnnecessaryUseMemo", [], unknown, _typescript_eslint_utils_ts_eslint.RuleListener>;
14
14
  readonly "prefer-use-state-lazy-initialization": _typescript_eslint_utils_ts_eslint.RuleModule<"preferUseStateLazyInitialization", [], unknown, _typescript_eslint_utils_ts_eslint.RuleListener>;
15
- /** @deprecated Use `no-redundant-custom-hook` instead */
16
- readonly "ensure-custom-hooks-using-other-hooks": _typescript_eslint_utils_ts_eslint.RuleModule<"noRedundantCustomHook", [], unknown, _typescript_eslint_utils_ts_eslint.RuleListener>;
15
+ /** @deprecated Use `no-useless-custom-hooks` instead */
16
+ readonly "no-redundant-custom-hook": _typescript_eslint_utils_ts_eslint.RuleModule<"noUselessCustomHooks", [], unknown, _typescript_eslint_utils_ts_eslint.RuleListener>;
17
+ /** @deprecated Use `no-useless-custom-hooks` instead */
18
+ readonly "ensure-custom-hooks-using-other-hooks": _typescript_eslint_utils_ts_eslint.RuleModule<"noUselessCustomHooks", [], unknown, _typescript_eslint_utils_ts_eslint.RuleListener>;
17
19
  /** @deprecated Use `no-unnecessary-use-memo` instead */
18
20
  readonly "ensure-use-memo-has-non-empty-deps": _typescript_eslint_utils_ts_eslint.RuleModule<"noUnnecessaryUseMemo", [], unknown, _typescript_eslint_utils_ts_eslint.RuleListener>;
21
+ /** @deprecated Use `no-unnecessary-use-callback` instead */
22
+ readonly "ensure-use-callback-has-non-empty-deps": _typescript_eslint_utils_ts_eslint.RuleModule<"noUnnecessaryUseCallback", [], unknown, _typescript_eslint_utils_ts_eslint.RuleListener>;
19
23
  };
20
24
  };
21
25
 
package/dist/index.d.ts CHANGED
@@ -8,14 +8,18 @@ declare const _default: {
8
8
  readonly rules: {
9
9
  readonly "no-direct-set-state-in-use-effect": _typescript_eslint_utils_ts_eslint.RuleModule<"noDirectSetStateInUseEffect", [], unknown, _typescript_eslint_utils_ts_eslint.RuleListener>;
10
10
  readonly "no-direct-set-state-in-use-layout-effect": _typescript_eslint_utils_ts_eslint.RuleModule<"noDirectSetStateInUseLayoutEffect", [], unknown, _typescript_eslint_utils_ts_eslint.RuleListener>;
11
- readonly "no-redundant-custom-hook": _typescript_eslint_utils_ts_eslint.RuleModule<"noRedundantCustomHook", [], unknown, _typescript_eslint_utils_ts_eslint.RuleListener>;
11
+ readonly "no-useless-custom-hooks": _typescript_eslint_utils_ts_eslint.RuleModule<"noUselessCustomHooks", [], unknown, _typescript_eslint_utils_ts_eslint.RuleListener>;
12
12
  readonly "no-unnecessary-use-callback": _typescript_eslint_utils_ts_eslint.RuleModule<"noUnnecessaryUseCallback", [], unknown, _typescript_eslint_utils_ts_eslint.RuleListener>;
13
13
  readonly "no-unnecessary-use-memo": _typescript_eslint_utils_ts_eslint.RuleModule<"noUnnecessaryUseMemo", [], unknown, _typescript_eslint_utils_ts_eslint.RuleListener>;
14
14
  readonly "prefer-use-state-lazy-initialization": _typescript_eslint_utils_ts_eslint.RuleModule<"preferUseStateLazyInitialization", [], unknown, _typescript_eslint_utils_ts_eslint.RuleListener>;
15
- /** @deprecated Use `no-redundant-custom-hook` instead */
16
- readonly "ensure-custom-hooks-using-other-hooks": _typescript_eslint_utils_ts_eslint.RuleModule<"noRedundantCustomHook", [], unknown, _typescript_eslint_utils_ts_eslint.RuleListener>;
15
+ /** @deprecated Use `no-useless-custom-hooks` instead */
16
+ readonly "no-redundant-custom-hook": _typescript_eslint_utils_ts_eslint.RuleModule<"noUselessCustomHooks", [], unknown, _typescript_eslint_utils_ts_eslint.RuleListener>;
17
+ /** @deprecated Use `no-useless-custom-hooks` instead */
18
+ readonly "ensure-custom-hooks-using-other-hooks": _typescript_eslint_utils_ts_eslint.RuleModule<"noUselessCustomHooks", [], unknown, _typescript_eslint_utils_ts_eslint.RuleListener>;
17
19
  /** @deprecated Use `no-unnecessary-use-memo` instead */
18
20
  readonly "ensure-use-memo-has-non-empty-deps": _typescript_eslint_utils_ts_eslint.RuleModule<"noUnnecessaryUseMemo", [], unknown, _typescript_eslint_utils_ts_eslint.RuleListener>;
21
+ /** @deprecated Use `no-unnecessary-use-callback` instead */
22
+ readonly "ensure-use-callback-has-non-empty-deps": _typescript_eslint_utils_ts_eslint.RuleModule<"noUnnecessaryUseCallback", [], unknown, _typescript_eslint_utils_ts_eslint.RuleListener>;
19
23
  };
20
24
  };
21
25
 
package/dist/index.js CHANGED
@@ -31,7 +31,7 @@ var VAR5__namespace = /*#__PURE__*/_interopNamespace(VAR5);
31
31
 
32
32
  // package.json
33
33
  var name = "eslint-plugin-react-hooks-extra";
34
- var version = "1.20.2-next.7";
34
+ var version = "1.21.0-beta.0";
35
35
  var createRule = shared.createRuleForPlugin("hooks-extra");
36
36
  function isFromHookCall(name2, context, settings, predicate = eff.F.constTrue) {
37
37
  const hookAlias = settings.additionalHooks?.[name2] ?? [];
@@ -475,62 +475,23 @@ var no_direct_set_state_in_use_layout_effect_default = createRule({
475
475
  },
476
476
  defaultOptions: []
477
477
  });
478
- var RULE_NAME3 = "no-redundant-custom-hook";
478
+ var RULE_NAME3 = "no-unnecessary-use-callback";
479
479
  var RULE_FEATURES3 = [
480
480
  "CHK"
481
481
  ];
482
- var no_redundant_custom_hook_default = createRule({
483
- meta: {
484
- type: "problem",
485
- docs: {
486
- description: "enforce custom hooks to use at least one other hook inside",
487
- [Symbol.for("rule_features")]: RULE_FEATURES3
488
- },
489
- messages: {
490
- noRedundantCustomHook: "A custom hook '{{name}}' should use at least one other hook."
491
- },
492
- schema: []
493
- },
494
- name: RULE_NAME3,
495
- create(context) {
496
- const { ctx, listeners } = core.useHookCollector();
497
- return {
498
- ...listeners,
499
- "Program:exit"(node) {
500
- const allHooks = ctx.getAllHooks(node);
501
- for (const { name: name2, node: node2, hookCalls } of allHooks.values()) {
502
- if (AST2__namespace.isEmptyFunction(node2)) continue;
503
- if (hookCalls.length > 0) continue;
504
- context.report({
505
- messageId: "noRedundantCustomHook",
506
- node: node2,
507
- data: {
508
- name: name2.value
509
- }
510
- });
511
- }
512
- }
513
- };
514
- },
515
- defaultOptions: []
516
- });
517
- var RULE_NAME4 = "no-unnecessary-use-callback";
518
- var RULE_FEATURES4 = [
519
- "CHK"
520
- ];
521
482
  var no_unnecessary_use_callback_default = createRule({
522
483
  meta: {
523
484
  type: "problem",
524
485
  docs: {
525
486
  description: "disallow unnecessary usage of 'useCallback'",
526
- [Symbol.for("rule_features")]: RULE_FEATURES4
487
+ [Symbol.for("rule_features")]: RULE_FEATURES3
527
488
  },
528
489
  messages: {
529
490
  noUnnecessaryUseCallback: "An 'useCallback' with empty deps and no references to the component scope may be unnecessary."
530
491
  },
531
492
  schema: []
532
493
  },
533
- name: RULE_NAME4,
494
+ name: RULE_NAME3,
534
495
  create(context) {
535
496
  if (!context.sourceCode.text.includes("use")) return {};
536
497
  const alias = shared.decodeSettings(context.settings).additionalHooks?.useCallback ?? [];
@@ -597,8 +558,8 @@ var no_unnecessary_use_callback_default = createRule({
597
558
  },
598
559
  defaultOptions: []
599
560
  });
600
- var RULE_NAME5 = "no-unnecessary-use-memo";
601
- var RULE_FEATURES5 = [
561
+ var RULE_NAME4 = "no-unnecessary-use-memo";
562
+ var RULE_FEATURES4 = [
602
563
  "CHK"
603
564
  ];
604
565
  var no_unnecessary_use_memo_default = createRule({
@@ -606,14 +567,14 @@ var no_unnecessary_use_memo_default = createRule({
606
567
  type: "problem",
607
568
  docs: {
608
569
  description: "disallow unnecessary usage of 'useMemo'",
609
- [Symbol.for("rule_features")]: RULE_FEATURES5
570
+ [Symbol.for("rule_features")]: RULE_FEATURES4
610
571
  },
611
572
  messages: {
612
573
  noUnnecessaryUseMemo: "An 'useMemo' with empty deps and no references to the component scope may be unnecessary."
613
574
  },
614
575
  schema: []
615
576
  },
616
- name: RULE_NAME5,
577
+ name: RULE_NAME4,
617
578
  create(context) {
618
579
  if (!context.sourceCode.text.includes("use")) return {};
619
580
  const alias = shared.decodeSettings(context.settings).additionalHooks?.useMemo ?? [];
@@ -680,6 +641,49 @@ var no_unnecessary_use_memo_default = createRule({
680
641
  },
681
642
  defaultOptions: []
682
643
  });
644
+ var RULE_NAME5 = "no-useless-custom-hooks";
645
+ var RULE_FEATURES5 = [
646
+ "CHK"
647
+ ];
648
+ function isNodeContainsUseCallComments(node, context) {
649
+ return context.sourceCode.getCommentsInside(node).some((comment) => /use\w+\(/u.test(comment.value));
650
+ }
651
+ var no_useless_custom_hooks_default = createRule({
652
+ meta: {
653
+ type: "problem",
654
+ docs: {
655
+ description: "enforce custom hooks to use at least one other hook inside",
656
+ [Symbol.for("rule_features")]: RULE_FEATURES5
657
+ },
658
+ messages: {
659
+ noUselessCustomHooks: "A custom hook '{{name}}' should use at least one other hook."
660
+ },
661
+ schema: []
662
+ },
663
+ name: RULE_NAME5,
664
+ create(context) {
665
+ const { ctx, listeners } = core.useHookCollector();
666
+ return {
667
+ ...listeners,
668
+ "Program:exit"(node) {
669
+ const allHooks = ctx.getAllHooks(node);
670
+ for (const { name: name2, node: node2, hookCalls } of allHooks.values()) {
671
+ if (AST2__namespace.isEmptyFunction(node2)) continue;
672
+ if (hookCalls.length > 0) continue;
673
+ if (isNodeContainsUseCallComments(node2, context)) continue;
674
+ context.report({
675
+ messageId: "noUselessCustomHooks",
676
+ node: node2,
677
+ data: {
678
+ name: name2.value
679
+ }
680
+ });
681
+ }
682
+ }
683
+ };
684
+ },
685
+ defaultOptions: []
686
+ });
683
687
  var RULE_NAME6 = "prefer-use-state-lazy-initialization";
684
688
  var RULE_FEATURES6 = [
685
689
  "CHK"
@@ -734,15 +738,19 @@ var src_default = {
734
738
  rules: {
735
739
  "no-direct-set-state-in-use-effect": no_direct_set_state_in_use_effect_default,
736
740
  "no-direct-set-state-in-use-layout-effect": no_direct_set_state_in_use_layout_effect_default,
737
- "no-redundant-custom-hook": no_redundant_custom_hook_default,
741
+ "no-useless-custom-hooks": no_useless_custom_hooks_default,
738
742
  "no-unnecessary-use-callback": no_unnecessary_use_callback_default,
739
743
  "no-unnecessary-use-memo": no_unnecessary_use_memo_default,
740
744
  "prefer-use-state-lazy-initialization": prefer_use_state_lazy_initialization_default,
741
- // Deprecated Rules
742
- /** @deprecated Use `no-redundant-custom-hook` instead */
743
- "ensure-custom-hooks-using-other-hooks": no_redundant_custom_hook_default,
745
+ // Deprecated rules
746
+ /** @deprecated Use `no-useless-custom-hooks` instead */
747
+ "no-redundant-custom-hook": no_useless_custom_hooks_default,
748
+ /** @deprecated Use `no-useless-custom-hooks` instead */
749
+ "ensure-custom-hooks-using-other-hooks": no_useless_custom_hooks_default,
744
750
  /** @deprecated Use `no-unnecessary-use-memo` instead */
745
- "ensure-use-memo-has-non-empty-deps": no_unnecessary_use_memo_default
751
+ "ensure-use-memo-has-non-empty-deps": no_unnecessary_use_memo_default,
752
+ /** @deprecated Use `no-unnecessary-use-callback` instead */
753
+ "ensure-use-callback-has-non-empty-deps": no_unnecessary_use_callback_default
746
754
  }
747
755
  };
748
756
 
package/dist/index.mjs CHANGED
@@ -1,5 +1,5 @@
1
1
  import * as AST2 from '@eslint-react/ast';
2
- import { isReactHookCallWithNameAlias, useHookCollector, isReactHookCall, isUseCallbackCall, isReactHookCallWithNameLoose, isUseMemoCall, isUseStateCall, isReactHookName } from '@eslint-react/core';
2
+ import { isReactHookCallWithNameAlias, isReactHookCall, isUseCallbackCall, isReactHookCallWithNameLoose, isUseMemoCall, useHookCollector, isUseStateCall, isReactHookName } from '@eslint-react/core';
3
3
  import { MutRef, O, F } from '@eslint-react/eff';
4
4
  import { createRuleForPlugin, decodeSettings } from '@eslint-react/shared';
5
5
  import * as VAR5 from '@eslint-react/var';
@@ -8,7 +8,7 @@ import { match, isMatching } from 'ts-pattern';
8
8
 
9
9
  // package.json
10
10
  var name = "eslint-plugin-react-hooks-extra";
11
- var version = "1.20.2-next.7";
11
+ var version = "1.21.0-beta.0";
12
12
  var createRule = createRuleForPlugin("hooks-extra");
13
13
  function isFromHookCall(name2, context, settings, predicate = F.constTrue) {
14
14
  const hookAlias = settings.additionalHooks?.[name2] ?? [];
@@ -452,62 +452,23 @@ var no_direct_set_state_in_use_layout_effect_default = createRule({
452
452
  },
453
453
  defaultOptions: []
454
454
  });
455
- var RULE_NAME3 = "no-redundant-custom-hook";
455
+ var RULE_NAME3 = "no-unnecessary-use-callback";
456
456
  var RULE_FEATURES3 = [
457
457
  "CHK"
458
458
  ];
459
- var no_redundant_custom_hook_default = createRule({
460
- meta: {
461
- type: "problem",
462
- docs: {
463
- description: "enforce custom hooks to use at least one other hook inside",
464
- [Symbol.for("rule_features")]: RULE_FEATURES3
465
- },
466
- messages: {
467
- noRedundantCustomHook: "A custom hook '{{name}}' should use at least one other hook."
468
- },
469
- schema: []
470
- },
471
- name: RULE_NAME3,
472
- create(context) {
473
- const { ctx, listeners } = useHookCollector();
474
- return {
475
- ...listeners,
476
- "Program:exit"(node) {
477
- const allHooks = ctx.getAllHooks(node);
478
- for (const { name: name2, node: node2, hookCalls } of allHooks.values()) {
479
- if (AST2.isEmptyFunction(node2)) continue;
480
- if (hookCalls.length > 0) continue;
481
- context.report({
482
- messageId: "noRedundantCustomHook",
483
- node: node2,
484
- data: {
485
- name: name2.value
486
- }
487
- });
488
- }
489
- }
490
- };
491
- },
492
- defaultOptions: []
493
- });
494
- var RULE_NAME4 = "no-unnecessary-use-callback";
495
- var RULE_FEATURES4 = [
496
- "CHK"
497
- ];
498
459
  var no_unnecessary_use_callback_default = createRule({
499
460
  meta: {
500
461
  type: "problem",
501
462
  docs: {
502
463
  description: "disallow unnecessary usage of 'useCallback'",
503
- [Symbol.for("rule_features")]: RULE_FEATURES4
464
+ [Symbol.for("rule_features")]: RULE_FEATURES3
504
465
  },
505
466
  messages: {
506
467
  noUnnecessaryUseCallback: "An 'useCallback' with empty deps and no references to the component scope may be unnecessary."
507
468
  },
508
469
  schema: []
509
470
  },
510
- name: RULE_NAME4,
471
+ name: RULE_NAME3,
511
472
  create(context) {
512
473
  if (!context.sourceCode.text.includes("use")) return {};
513
474
  const alias = decodeSettings(context.settings).additionalHooks?.useCallback ?? [];
@@ -574,8 +535,8 @@ var no_unnecessary_use_callback_default = createRule({
574
535
  },
575
536
  defaultOptions: []
576
537
  });
577
- var RULE_NAME5 = "no-unnecessary-use-memo";
578
- var RULE_FEATURES5 = [
538
+ var RULE_NAME4 = "no-unnecessary-use-memo";
539
+ var RULE_FEATURES4 = [
579
540
  "CHK"
580
541
  ];
581
542
  var no_unnecessary_use_memo_default = createRule({
@@ -583,14 +544,14 @@ var no_unnecessary_use_memo_default = createRule({
583
544
  type: "problem",
584
545
  docs: {
585
546
  description: "disallow unnecessary usage of 'useMemo'",
586
- [Symbol.for("rule_features")]: RULE_FEATURES5
547
+ [Symbol.for("rule_features")]: RULE_FEATURES4
587
548
  },
588
549
  messages: {
589
550
  noUnnecessaryUseMemo: "An 'useMemo' with empty deps and no references to the component scope may be unnecessary."
590
551
  },
591
552
  schema: []
592
553
  },
593
- name: RULE_NAME5,
554
+ name: RULE_NAME4,
594
555
  create(context) {
595
556
  if (!context.sourceCode.text.includes("use")) return {};
596
557
  const alias = decodeSettings(context.settings).additionalHooks?.useMemo ?? [];
@@ -657,6 +618,49 @@ var no_unnecessary_use_memo_default = createRule({
657
618
  },
658
619
  defaultOptions: []
659
620
  });
621
+ var RULE_NAME5 = "no-useless-custom-hooks";
622
+ var RULE_FEATURES5 = [
623
+ "CHK"
624
+ ];
625
+ function isNodeContainsUseCallComments(node, context) {
626
+ return context.sourceCode.getCommentsInside(node).some((comment) => /use\w+\(/u.test(comment.value));
627
+ }
628
+ var no_useless_custom_hooks_default = createRule({
629
+ meta: {
630
+ type: "problem",
631
+ docs: {
632
+ description: "enforce custom hooks to use at least one other hook inside",
633
+ [Symbol.for("rule_features")]: RULE_FEATURES5
634
+ },
635
+ messages: {
636
+ noUselessCustomHooks: "A custom hook '{{name}}' should use at least one other hook."
637
+ },
638
+ schema: []
639
+ },
640
+ name: RULE_NAME5,
641
+ create(context) {
642
+ const { ctx, listeners } = useHookCollector();
643
+ return {
644
+ ...listeners,
645
+ "Program:exit"(node) {
646
+ const allHooks = ctx.getAllHooks(node);
647
+ for (const { name: name2, node: node2, hookCalls } of allHooks.values()) {
648
+ if (AST2.isEmptyFunction(node2)) continue;
649
+ if (hookCalls.length > 0) continue;
650
+ if (isNodeContainsUseCallComments(node2, context)) continue;
651
+ context.report({
652
+ messageId: "noUselessCustomHooks",
653
+ node: node2,
654
+ data: {
655
+ name: name2.value
656
+ }
657
+ });
658
+ }
659
+ }
660
+ };
661
+ },
662
+ defaultOptions: []
663
+ });
660
664
  var RULE_NAME6 = "prefer-use-state-lazy-initialization";
661
665
  var RULE_FEATURES6 = [
662
666
  "CHK"
@@ -711,15 +715,19 @@ var src_default = {
711
715
  rules: {
712
716
  "no-direct-set-state-in-use-effect": no_direct_set_state_in_use_effect_default,
713
717
  "no-direct-set-state-in-use-layout-effect": no_direct_set_state_in_use_layout_effect_default,
714
- "no-redundant-custom-hook": no_redundant_custom_hook_default,
718
+ "no-useless-custom-hooks": no_useless_custom_hooks_default,
715
719
  "no-unnecessary-use-callback": no_unnecessary_use_callback_default,
716
720
  "no-unnecessary-use-memo": no_unnecessary_use_memo_default,
717
721
  "prefer-use-state-lazy-initialization": prefer_use_state_lazy_initialization_default,
718
- // Deprecated Rules
719
- /** @deprecated Use `no-redundant-custom-hook` instead */
720
- "ensure-custom-hooks-using-other-hooks": no_redundant_custom_hook_default,
722
+ // Deprecated rules
723
+ /** @deprecated Use `no-useless-custom-hooks` instead */
724
+ "no-redundant-custom-hook": no_useless_custom_hooks_default,
725
+ /** @deprecated Use `no-useless-custom-hooks` instead */
726
+ "ensure-custom-hooks-using-other-hooks": no_useless_custom_hooks_default,
721
727
  /** @deprecated Use `no-unnecessary-use-memo` instead */
722
- "ensure-use-memo-has-non-empty-deps": no_unnecessary_use_memo_default
728
+ "ensure-use-memo-has-non-empty-deps": no_unnecessary_use_memo_default,
729
+ /** @deprecated Use `no-unnecessary-use-callback` instead */
730
+ "ensure-use-callback-has-non-empty-deps": no_unnecessary_use_callback_default
723
731
  }
724
732
  };
725
733
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "eslint-plugin-react-hooks-extra",
3
- "version": "1.20.2-next.7",
3
+ "version": "1.21.0-beta.0",
4
4
  "description": "ESLint React's ESLint plugin for React Hooks related rules.",
5
5
  "keywords": [
6
6
  "react",
@@ -49,13 +49,13 @@
49
49
  "@typescript-eslint/types": "^8.18.1",
50
50
  "@typescript-eslint/utils": "^8.18.1",
51
51
  "ts-pattern": "^5.6.0",
52
- "@eslint-react/ast": "1.20.2-next.7",
53
- "@eslint-react/core": "1.20.2-next.7",
54
- "@eslint-react/jsx": "1.20.2-next.7",
55
- "@eslint-react/shared": "1.20.2-next.7",
56
- "@eslint-react/eff": "1.20.2-next.7",
57
- "@eslint-react/types": "1.20.2-next.7",
58
- "@eslint-react/var": "1.20.2-next.7"
52
+ "@eslint-react/core": "1.21.0-beta.0",
53
+ "@eslint-react/ast": "1.21.0-beta.0",
54
+ "@eslint-react/jsx": "1.21.0-beta.0",
55
+ "@eslint-react/eff": "1.21.0-beta.0",
56
+ "@eslint-react/types": "1.21.0-beta.0",
57
+ "@eslint-react/shared": "1.21.0-beta.0",
58
+ "@eslint-react/var": "1.21.0-beta.0"
59
59
  },
60
60
  "devDependencies": {
61
61
  "@types/react": "^19.0.2",