oxlint-plugin-react-doctor 0.2.9 → 0.2.10

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 (3) hide show
  1. package/dist/index.d.ts +656 -9
  2. package/dist/index.js +2200 -587
  3. package/package.json +1 -1
package/dist/index.d.ts CHANGED
@@ -97,7 +97,7 @@ interface RuleVisitors {
97
97
  //#endregion
98
98
  //#region src/plugin/utils/rule.d.ts
99
99
  type RuleSeverity = "error" | "warn";
100
- type RuleFramework = "global" | "nextjs" | "react-native" | "tanstack-start" | "tanstack-query";
100
+ type RuleFramework = "global" | "nextjs" | "react-native" | "tanstack-start" | "tanstack-query" | "preact";
101
101
  interface Rule {
102
102
  id: string;
103
103
  severity: RuleSeverity;
@@ -130,6 +130,23 @@ type OxlintRuleSeverity = RuleSeverity | "off";
130
130
  //#endregion
131
131
  //#region src/rules.d.ts
132
132
  declare const REACT_DOCTOR_RULES: readonly [{
133
+ readonly key: "react-doctor/activity-wraps-effect-heavy-subtree";
134
+ readonly id: "activity-wraps-effect-heavy-subtree";
135
+ readonly source: "react-doctor";
136
+ readonly originallyExternal: false;
137
+ readonly rule: {
138
+ readonly framework: "global";
139
+ readonly category: "State & Effects";
140
+ readonly id: string;
141
+ readonly severity: RuleSeverity;
142
+ readonly requires?: ReadonlyArray<string>;
143
+ readonly disabledBy?: ReadonlyArray<string>;
144
+ readonly tags?: ReadonlyArray<string>;
145
+ readonly defaultEnabled?: boolean;
146
+ readonly recommendation?: string;
147
+ readonly create: (context: RuleContext) => RuleVisitors;
148
+ };
149
+ }, {
133
150
  readonly key: "react-doctor/advanced-event-handler-refs";
134
151
  readonly id: "advanced-event-handler-refs";
135
152
  readonly source: "react-doctor";
@@ -724,6 +741,23 @@ declare const REACT_DOCTOR_RULES: readonly [{
724
741
  readonly recommendation?: string;
725
742
  readonly create: (context: RuleContext) => RuleVisitors;
726
743
  };
744
+ }, {
745
+ readonly key: "react-doctor/hooks-no-nan-in-deps";
746
+ readonly id: "hooks-no-nan-in-deps";
747
+ readonly source: "react-doctor";
748
+ readonly originallyExternal: false;
749
+ readonly rule: {
750
+ readonly framework: "global";
751
+ readonly category: "State & Effects";
752
+ readonly id: string;
753
+ readonly severity: RuleSeverity;
754
+ readonly requires?: ReadonlyArray<string>;
755
+ readonly disabledBy?: ReadonlyArray<string>;
756
+ readonly tags?: ReadonlyArray<string>;
757
+ readonly defaultEnabled?: boolean;
758
+ readonly recommendation?: string;
759
+ readonly create: (context: RuleContext) => RuleVisitors;
760
+ };
727
761
  }, {
728
762
  readonly key: "react-doctor/html-has-lang";
729
763
  readonly id: "html-has-lang";
@@ -741,6 +775,57 @@ declare const REACT_DOCTOR_RULES: readonly [{
741
775
  readonly recommendation?: string;
742
776
  readonly create: (context: RuleContext) => RuleVisitors;
743
777
  };
778
+ }, {
779
+ readonly key: "react-doctor/html-no-invalid-paragraph-child";
780
+ readonly id: "html-no-invalid-paragraph-child";
781
+ readonly source: "react-doctor";
782
+ readonly originallyExternal: false;
783
+ readonly rule: {
784
+ readonly framework: "global";
785
+ readonly category: "Correctness";
786
+ readonly id: string;
787
+ readonly severity: RuleSeverity;
788
+ readonly requires?: ReadonlyArray<string>;
789
+ readonly disabledBy?: ReadonlyArray<string>;
790
+ readonly tags?: ReadonlyArray<string>;
791
+ readonly defaultEnabled?: boolean;
792
+ readonly recommendation?: string;
793
+ readonly create: (context: RuleContext) => RuleVisitors;
794
+ };
795
+ }, {
796
+ readonly key: "react-doctor/html-no-invalid-table-nesting";
797
+ readonly id: "html-no-invalid-table-nesting";
798
+ readonly source: "react-doctor";
799
+ readonly originallyExternal: false;
800
+ readonly rule: {
801
+ readonly framework: "global";
802
+ readonly category: "Correctness";
803
+ readonly id: string;
804
+ readonly severity: RuleSeverity;
805
+ readonly requires?: ReadonlyArray<string>;
806
+ readonly disabledBy?: ReadonlyArray<string>;
807
+ readonly tags?: ReadonlyArray<string>;
808
+ readonly defaultEnabled?: boolean;
809
+ readonly recommendation?: string;
810
+ readonly create: (context: RuleContext) => RuleVisitors;
811
+ };
812
+ }, {
813
+ readonly key: "react-doctor/html-no-nested-interactive";
814
+ readonly id: "html-no-nested-interactive";
815
+ readonly source: "react-doctor";
816
+ readonly originallyExternal: false;
817
+ readonly rule: {
818
+ readonly framework: "global";
819
+ readonly category: "Correctness";
820
+ readonly id: string;
821
+ readonly severity: RuleSeverity;
822
+ readonly requires?: ReadonlyArray<string>;
823
+ readonly disabledBy?: ReadonlyArray<string>;
824
+ readonly tags?: ReadonlyArray<string>;
825
+ readonly defaultEnabled?: boolean;
826
+ readonly recommendation?: string;
827
+ readonly create: (context: RuleContext) => RuleVisitors;
828
+ };
744
829
  }, {
745
830
  readonly key: "react-doctor/iframe-has-title";
746
831
  readonly id: "iframe-has-title";
@@ -809,6 +894,74 @@ declare const REACT_DOCTOR_RULES: readonly [{
809
894
  readonly recommendation?: string;
810
895
  readonly create: (context: RuleContext) => RuleVisitors;
811
896
  };
897
+ }, {
898
+ readonly key: "react-doctor/jotai-derived-atom-returns-fresh-object";
899
+ readonly id: "jotai-derived-atom-returns-fresh-object";
900
+ readonly source: "react-doctor";
901
+ readonly originallyExternal: false;
902
+ readonly rule: {
903
+ readonly framework: "global";
904
+ readonly category: "State & Effects";
905
+ readonly id: string;
906
+ readonly severity: RuleSeverity;
907
+ readonly requires?: ReadonlyArray<string>;
908
+ readonly disabledBy?: ReadonlyArray<string>;
909
+ readonly tags?: ReadonlyArray<string>;
910
+ readonly defaultEnabled?: boolean;
911
+ readonly recommendation?: string;
912
+ readonly create: (context: RuleContext) => RuleVisitors;
913
+ };
914
+ }, {
915
+ readonly key: "react-doctor/jotai-select-atom-in-render-body";
916
+ readonly id: "jotai-select-atom-in-render-body";
917
+ readonly source: "react-doctor";
918
+ readonly originallyExternal: false;
919
+ readonly rule: {
920
+ readonly framework: "global";
921
+ readonly category: "State & Effects";
922
+ readonly id: string;
923
+ readonly severity: RuleSeverity;
924
+ readonly requires?: ReadonlyArray<string>;
925
+ readonly disabledBy?: ReadonlyArray<string>;
926
+ readonly tags?: ReadonlyArray<string>;
927
+ readonly defaultEnabled?: boolean;
928
+ readonly recommendation?: string;
929
+ readonly create: (context: RuleContext) => RuleVisitors;
930
+ };
931
+ }, {
932
+ readonly key: "react-doctor/jotai-tq-use-raw-query-atom";
933
+ readonly id: "jotai-tq-use-raw-query-atom";
934
+ readonly source: "react-doctor";
935
+ readonly originallyExternal: false;
936
+ readonly rule: {
937
+ readonly framework: "global";
938
+ readonly category: "State & Effects";
939
+ readonly id: string;
940
+ readonly severity: RuleSeverity;
941
+ readonly requires?: ReadonlyArray<string>;
942
+ readonly disabledBy?: ReadonlyArray<string>;
943
+ readonly tags?: ReadonlyArray<string>;
944
+ readonly defaultEnabled?: boolean;
945
+ readonly recommendation?: string;
946
+ readonly create: (context: RuleContext) => RuleVisitors;
947
+ };
948
+ }, {
949
+ readonly key: "react-doctor/js-async-reduce-without-awaited-acc";
950
+ readonly id: "js-async-reduce-without-awaited-acc";
951
+ readonly source: "react-doctor";
952
+ readonly originallyExternal: false;
953
+ readonly rule: {
954
+ readonly framework: "global";
955
+ readonly category: "Performance";
956
+ readonly id: string;
957
+ readonly severity: RuleSeverity;
958
+ readonly requires?: ReadonlyArray<string>;
959
+ readonly disabledBy?: ReadonlyArray<string>;
960
+ readonly tags?: ReadonlyArray<string>;
961
+ readonly defaultEnabled?: boolean;
962
+ readonly recommendation?: string;
963
+ readonly create: (context: RuleContext) => RuleVisitors;
964
+ };
812
965
  }, {
813
966
  readonly key: "react-doctor/js-batch-dom-css";
814
967
  readonly id: "js-batch-dom-css";
@@ -3478,6 +3631,91 @@ declare const REACT_DOCTOR_RULES: readonly [{
3478
3631
  readonly recommendation?: string;
3479
3632
  readonly create: (context: RuleContext) => RuleVisitors;
3480
3633
  };
3634
+ }, {
3635
+ readonly key: "react-doctor/preact-no-children-length";
3636
+ readonly id: "preact-no-children-length";
3637
+ readonly source: "react-doctor";
3638
+ readonly originallyExternal: false;
3639
+ readonly rule: {
3640
+ readonly framework: "preact";
3641
+ readonly category: "Preact";
3642
+ readonly id: string;
3643
+ readonly severity: RuleSeverity;
3644
+ readonly requires?: ReadonlyArray<string>;
3645
+ readonly disabledBy?: ReadonlyArray<string>;
3646
+ readonly tags?: ReadonlyArray<string>;
3647
+ readonly defaultEnabled?: boolean;
3648
+ readonly recommendation?: string;
3649
+ readonly create: (context: RuleContext) => RuleVisitors;
3650
+ };
3651
+ }, {
3652
+ readonly key: "react-doctor/preact-no-react-hooks-import";
3653
+ readonly id: "preact-no-react-hooks-import";
3654
+ readonly source: "react-doctor";
3655
+ readonly originallyExternal: false;
3656
+ readonly rule: {
3657
+ readonly framework: "preact";
3658
+ readonly category: "Preact";
3659
+ readonly id: string;
3660
+ readonly severity: RuleSeverity;
3661
+ readonly requires?: ReadonlyArray<string>;
3662
+ readonly disabledBy?: ReadonlyArray<string>;
3663
+ readonly tags?: ReadonlyArray<string>;
3664
+ readonly defaultEnabled?: boolean;
3665
+ readonly recommendation?: string;
3666
+ readonly create: (context: RuleContext) => RuleVisitors;
3667
+ };
3668
+ }, {
3669
+ readonly key: "react-doctor/preact-no-render-arguments";
3670
+ readonly id: "preact-no-render-arguments";
3671
+ readonly source: "react-doctor";
3672
+ readonly originallyExternal: false;
3673
+ readonly rule: {
3674
+ readonly framework: "preact";
3675
+ readonly category: "Preact";
3676
+ readonly id: string;
3677
+ readonly severity: RuleSeverity;
3678
+ readonly requires?: ReadonlyArray<string>;
3679
+ readonly disabledBy?: ReadonlyArray<string>;
3680
+ readonly tags?: ReadonlyArray<string>;
3681
+ readonly defaultEnabled?: boolean;
3682
+ readonly recommendation?: string;
3683
+ readonly create: (context: RuleContext) => RuleVisitors;
3684
+ };
3685
+ }, {
3686
+ readonly key: "react-doctor/preact-prefer-ondblclick";
3687
+ readonly id: "preact-prefer-ondblclick";
3688
+ readonly source: "react-doctor";
3689
+ readonly originallyExternal: false;
3690
+ readonly rule: {
3691
+ readonly framework: "preact";
3692
+ readonly category: "Preact";
3693
+ readonly id: string;
3694
+ readonly severity: RuleSeverity;
3695
+ readonly requires?: ReadonlyArray<string>;
3696
+ readonly disabledBy?: ReadonlyArray<string>;
3697
+ readonly tags?: ReadonlyArray<string>;
3698
+ readonly defaultEnabled?: boolean;
3699
+ readonly recommendation?: string;
3700
+ readonly create: (context: RuleContext) => RuleVisitors;
3701
+ };
3702
+ }, {
3703
+ readonly key: "react-doctor/preact-prefer-oninput";
3704
+ readonly id: "preact-prefer-oninput";
3705
+ readonly source: "react-doctor";
3706
+ readonly originallyExternal: false;
3707
+ readonly rule: {
3708
+ readonly framework: "preact";
3709
+ readonly category: "Preact";
3710
+ readonly id: string;
3711
+ readonly severity: RuleSeverity;
3712
+ readonly requires?: ReadonlyArray<string>;
3713
+ readonly disabledBy?: ReadonlyArray<string>;
3714
+ readonly tags?: ReadonlyArray<string>;
3715
+ readonly defaultEnabled?: boolean;
3716
+ readonly recommendation?: string;
3717
+ readonly create: (context: RuleContext) => RuleVisitors;
3718
+ };
3481
3719
  }, {
3482
3720
  readonly key: "react-doctor/prefer-dynamic-import";
3483
3721
  readonly id: "prefer-dynamic-import";
@@ -3529,6 +3767,23 @@ declare const REACT_DOCTOR_RULES: readonly [{
3529
3767
  readonly recommendation?: string;
3530
3768
  readonly create: (context: RuleContext) => RuleVisitors;
3531
3769
  };
3770
+ }, {
3771
+ readonly key: "react-doctor/prefer-html-dialog";
3772
+ readonly id: "prefer-html-dialog";
3773
+ readonly source: "react-doctor";
3774
+ readonly originallyExternal: false;
3775
+ readonly rule: {
3776
+ readonly framework: "global";
3777
+ readonly category: "Accessibility";
3778
+ readonly id: string;
3779
+ readonly severity: RuleSeverity;
3780
+ readonly requires?: ReadonlyArray<string>;
3781
+ readonly disabledBy?: ReadonlyArray<string>;
3782
+ readonly tags?: ReadonlyArray<string>;
3783
+ readonly defaultEnabled?: boolean;
3784
+ readonly recommendation?: string;
3785
+ readonly create: (context: RuleContext) => RuleVisitors;
3786
+ };
3532
3787
  }, {
3533
3788
  readonly key: "react-doctor/prefer-tag-over-role";
3534
3789
  readonly id: "prefer-tag-over-role";
@@ -4141,6 +4396,23 @@ declare const REACT_DOCTOR_RULES: readonly [{
4141
4396
  readonly recommendation?: string;
4142
4397
  readonly create: (context: RuleContext) => RuleVisitors;
4143
4398
  };
4399
+ }, {
4400
+ readonly key: "react-doctor/rn-list-missing-estimated-item-size";
4401
+ readonly id: "rn-list-missing-estimated-item-size";
4402
+ readonly source: "react-doctor";
4403
+ readonly originallyExternal: false;
4404
+ readonly rule: {
4405
+ readonly framework: "react-native";
4406
+ readonly category: "React Native";
4407
+ readonly tags: readonly string[];
4408
+ readonly id: string;
4409
+ readonly severity: RuleSeverity;
4410
+ readonly requires?: ReadonlyArray<string>;
4411
+ readonly disabledBy?: ReadonlyArray<string>;
4412
+ readonly defaultEnabled?: boolean;
4413
+ readonly recommendation?: string;
4414
+ readonly create: (context: RuleContext) => RuleVisitors;
4415
+ };
4144
4416
  }, {
4145
4417
  readonly key: "react-doctor/rn-list-recyclable-without-types";
4146
4418
  readonly id: "rn-list-recyclable-without-types";
@@ -4311,6 +4583,23 @@ declare const REACT_DOCTOR_RULES: readonly [{
4311
4583
  readonly recommendation?: string;
4312
4584
  readonly create: (context: RuleContext) => RuleVisitors;
4313
4585
  };
4586
+ }, {
4587
+ readonly key: "react-doctor/rn-no-renderitem-key";
4588
+ readonly id: "rn-no-renderitem-key";
4589
+ readonly source: "react-doctor";
4590
+ readonly originallyExternal: false;
4591
+ readonly rule: {
4592
+ readonly framework: "react-native";
4593
+ readonly category: "React Native";
4594
+ readonly tags: readonly string[];
4595
+ readonly id: string;
4596
+ readonly severity: RuleSeverity;
4597
+ readonly requires?: ReadonlyArray<string>;
4598
+ readonly disabledBy?: ReadonlyArray<string>;
4599
+ readonly defaultEnabled?: boolean;
4600
+ readonly recommendation?: string;
4601
+ readonly create: (context: RuleContext) => RuleVisitors;
4602
+ };
4314
4603
  }, {
4315
4604
  readonly key: "react-doctor/rn-no-scroll-state";
4316
4605
  readonly id: "rn-no-scroll-state";
@@ -4414,8 +4703,8 @@ declare const REACT_DOCTOR_RULES: readonly [{
4414
4703
  readonly create: (context: RuleContext) => RuleVisitors;
4415
4704
  };
4416
4705
  }, {
4417
- readonly key: "react-doctor/rn-prefer-reanimated";
4418
- readonly id: "rn-prefer-reanimated";
4706
+ readonly key: "react-doctor/rn-prefer-pressable-over-gesture-detector";
4707
+ readonly id: "rn-prefer-pressable-over-gesture-detector";
4419
4708
  readonly source: "react-doctor";
4420
4709
  readonly originallyExternal: false;
4421
4710
  readonly rule: {
@@ -4431,8 +4720,8 @@ declare const REACT_DOCTOR_RULES: readonly [{
4431
4720
  readonly create: (context: RuleContext) => RuleVisitors;
4432
4721
  };
4433
4722
  }, {
4434
- readonly key: "react-doctor/rn-pressable-shared-value-mutation";
4435
- readonly id: "rn-pressable-shared-value-mutation";
4723
+ readonly key: "react-doctor/rn-prefer-reanimated";
4724
+ readonly id: "rn-prefer-reanimated";
4436
4725
  readonly source: "react-doctor";
4437
4726
  readonly originallyExternal: false;
4438
4727
  readonly rule: {
@@ -4448,8 +4737,8 @@ declare const REACT_DOCTOR_RULES: readonly [{
4448
4737
  readonly create: (context: RuleContext) => RuleVisitors;
4449
4738
  };
4450
4739
  }, {
4451
- readonly key: "react-doctor/rn-scrollview-dynamic-padding";
4452
- readonly id: "rn-scrollview-dynamic-padding";
4740
+ readonly key: "react-doctor/rn-pressable-shared-value-mutation";
4741
+ readonly id: "rn-pressable-shared-value-mutation";
4453
4742
  readonly source: "react-doctor";
4454
4743
  readonly originallyExternal: false;
4455
4744
  readonly rule: {
@@ -4465,7 +4754,41 @@ declare const REACT_DOCTOR_RULES: readonly [{
4465
4754
  readonly create: (context: RuleContext) => RuleVisitors;
4466
4755
  };
4467
4756
  }, {
4468
- readonly key: "react-doctor/rn-style-prefer-boxshadow";
4757
+ readonly key: "react-doctor/rn-scrollview-dynamic-padding";
4758
+ readonly id: "rn-scrollview-dynamic-padding";
4759
+ readonly source: "react-doctor";
4760
+ readonly originallyExternal: false;
4761
+ readonly rule: {
4762
+ readonly framework: "react-native";
4763
+ readonly category: "React Native";
4764
+ readonly tags: readonly string[];
4765
+ readonly id: string;
4766
+ readonly severity: RuleSeverity;
4767
+ readonly requires?: ReadonlyArray<string>;
4768
+ readonly disabledBy?: ReadonlyArray<string>;
4769
+ readonly defaultEnabled?: boolean;
4770
+ readonly recommendation?: string;
4771
+ readonly create: (context: RuleContext) => RuleVisitors;
4772
+ };
4773
+ }, {
4774
+ readonly key: "react-doctor/rn-scrollview-flex-in-content-container";
4775
+ readonly id: "rn-scrollview-flex-in-content-container";
4776
+ readonly source: "react-doctor";
4777
+ readonly originallyExternal: false;
4778
+ readonly rule: {
4779
+ readonly framework: "react-native";
4780
+ readonly category: "React Native";
4781
+ readonly tags: readonly string[];
4782
+ readonly id: string;
4783
+ readonly severity: RuleSeverity;
4784
+ readonly requires?: ReadonlyArray<string>;
4785
+ readonly disabledBy?: ReadonlyArray<string>;
4786
+ readonly defaultEnabled?: boolean;
4787
+ readonly recommendation?: string;
4788
+ readonly create: (context: RuleContext) => RuleVisitors;
4789
+ };
4790
+ }, {
4791
+ readonly key: "react-doctor/rn-style-prefer-boxshadow";
4469
4792
  readonly id: "rn-style-prefer-boxshadow";
4470
4793
  readonly source: "react-doctor";
4471
4794
  readonly originallyExternal: false;
@@ -5092,6 +5415,23 @@ declare const EXTERNAL_RULES: readonly [{
5092
5415
  readonly severity: "error";
5093
5416
  }];
5094
5417
  declare const RULES: readonly [{
5418
+ readonly key: "react-doctor/activity-wraps-effect-heavy-subtree";
5419
+ readonly id: "activity-wraps-effect-heavy-subtree";
5420
+ readonly source: "react-doctor";
5421
+ readonly originallyExternal: false;
5422
+ readonly rule: {
5423
+ readonly framework: "global";
5424
+ readonly category: "State & Effects";
5425
+ readonly id: string;
5426
+ readonly severity: RuleSeverity;
5427
+ readonly requires?: ReadonlyArray<string>;
5428
+ readonly disabledBy?: ReadonlyArray<string>;
5429
+ readonly tags?: ReadonlyArray<string>;
5430
+ readonly defaultEnabled?: boolean;
5431
+ readonly recommendation?: string;
5432
+ readonly create: (context: RuleContext) => RuleVisitors;
5433
+ };
5434
+ }, {
5095
5435
  readonly key: "react-doctor/advanced-event-handler-refs";
5096
5436
  readonly id: "advanced-event-handler-refs";
5097
5437
  readonly source: "react-doctor";
@@ -5686,6 +6026,23 @@ declare const RULES: readonly [{
5686
6026
  readonly recommendation?: string;
5687
6027
  readonly create: (context: RuleContext) => RuleVisitors;
5688
6028
  };
6029
+ }, {
6030
+ readonly key: "react-doctor/hooks-no-nan-in-deps";
6031
+ readonly id: "hooks-no-nan-in-deps";
6032
+ readonly source: "react-doctor";
6033
+ readonly originallyExternal: false;
6034
+ readonly rule: {
6035
+ readonly framework: "global";
6036
+ readonly category: "State & Effects";
6037
+ readonly id: string;
6038
+ readonly severity: RuleSeverity;
6039
+ readonly requires?: ReadonlyArray<string>;
6040
+ readonly disabledBy?: ReadonlyArray<string>;
6041
+ readonly tags?: ReadonlyArray<string>;
6042
+ readonly defaultEnabled?: boolean;
6043
+ readonly recommendation?: string;
6044
+ readonly create: (context: RuleContext) => RuleVisitors;
6045
+ };
5689
6046
  }, {
5690
6047
  readonly key: "react-doctor/html-has-lang";
5691
6048
  readonly id: "html-has-lang";
@@ -5703,6 +6060,57 @@ declare const RULES: readonly [{
5703
6060
  readonly recommendation?: string;
5704
6061
  readonly create: (context: RuleContext) => RuleVisitors;
5705
6062
  };
6063
+ }, {
6064
+ readonly key: "react-doctor/html-no-invalid-paragraph-child";
6065
+ readonly id: "html-no-invalid-paragraph-child";
6066
+ readonly source: "react-doctor";
6067
+ readonly originallyExternal: false;
6068
+ readonly rule: {
6069
+ readonly framework: "global";
6070
+ readonly category: "Correctness";
6071
+ readonly id: string;
6072
+ readonly severity: RuleSeverity;
6073
+ readonly requires?: ReadonlyArray<string>;
6074
+ readonly disabledBy?: ReadonlyArray<string>;
6075
+ readonly tags?: ReadonlyArray<string>;
6076
+ readonly defaultEnabled?: boolean;
6077
+ readonly recommendation?: string;
6078
+ readonly create: (context: RuleContext) => RuleVisitors;
6079
+ };
6080
+ }, {
6081
+ readonly key: "react-doctor/html-no-invalid-table-nesting";
6082
+ readonly id: "html-no-invalid-table-nesting";
6083
+ readonly source: "react-doctor";
6084
+ readonly originallyExternal: false;
6085
+ readonly rule: {
6086
+ readonly framework: "global";
6087
+ readonly category: "Correctness";
6088
+ readonly id: string;
6089
+ readonly severity: RuleSeverity;
6090
+ readonly requires?: ReadonlyArray<string>;
6091
+ readonly disabledBy?: ReadonlyArray<string>;
6092
+ readonly tags?: ReadonlyArray<string>;
6093
+ readonly defaultEnabled?: boolean;
6094
+ readonly recommendation?: string;
6095
+ readonly create: (context: RuleContext) => RuleVisitors;
6096
+ };
6097
+ }, {
6098
+ readonly key: "react-doctor/html-no-nested-interactive";
6099
+ readonly id: "html-no-nested-interactive";
6100
+ readonly source: "react-doctor";
6101
+ readonly originallyExternal: false;
6102
+ readonly rule: {
6103
+ readonly framework: "global";
6104
+ readonly category: "Correctness";
6105
+ readonly id: string;
6106
+ readonly severity: RuleSeverity;
6107
+ readonly requires?: ReadonlyArray<string>;
6108
+ readonly disabledBy?: ReadonlyArray<string>;
6109
+ readonly tags?: ReadonlyArray<string>;
6110
+ readonly defaultEnabled?: boolean;
6111
+ readonly recommendation?: string;
6112
+ readonly create: (context: RuleContext) => RuleVisitors;
6113
+ };
5706
6114
  }, {
5707
6115
  readonly key: "react-doctor/iframe-has-title";
5708
6116
  readonly id: "iframe-has-title";
@@ -5771,6 +6179,74 @@ declare const RULES: readonly [{
5771
6179
  readonly recommendation?: string;
5772
6180
  readonly create: (context: RuleContext) => RuleVisitors;
5773
6181
  };
6182
+ }, {
6183
+ readonly key: "react-doctor/jotai-derived-atom-returns-fresh-object";
6184
+ readonly id: "jotai-derived-atom-returns-fresh-object";
6185
+ readonly source: "react-doctor";
6186
+ readonly originallyExternal: false;
6187
+ readonly rule: {
6188
+ readonly framework: "global";
6189
+ readonly category: "State & Effects";
6190
+ readonly id: string;
6191
+ readonly severity: RuleSeverity;
6192
+ readonly requires?: ReadonlyArray<string>;
6193
+ readonly disabledBy?: ReadonlyArray<string>;
6194
+ readonly tags?: ReadonlyArray<string>;
6195
+ readonly defaultEnabled?: boolean;
6196
+ readonly recommendation?: string;
6197
+ readonly create: (context: RuleContext) => RuleVisitors;
6198
+ };
6199
+ }, {
6200
+ readonly key: "react-doctor/jotai-select-atom-in-render-body";
6201
+ readonly id: "jotai-select-atom-in-render-body";
6202
+ readonly source: "react-doctor";
6203
+ readonly originallyExternal: false;
6204
+ readonly rule: {
6205
+ readonly framework: "global";
6206
+ readonly category: "State & Effects";
6207
+ readonly id: string;
6208
+ readonly severity: RuleSeverity;
6209
+ readonly requires?: ReadonlyArray<string>;
6210
+ readonly disabledBy?: ReadonlyArray<string>;
6211
+ readonly tags?: ReadonlyArray<string>;
6212
+ readonly defaultEnabled?: boolean;
6213
+ readonly recommendation?: string;
6214
+ readonly create: (context: RuleContext) => RuleVisitors;
6215
+ };
6216
+ }, {
6217
+ readonly key: "react-doctor/jotai-tq-use-raw-query-atom";
6218
+ readonly id: "jotai-tq-use-raw-query-atom";
6219
+ readonly source: "react-doctor";
6220
+ readonly originallyExternal: false;
6221
+ readonly rule: {
6222
+ readonly framework: "global";
6223
+ readonly category: "State & Effects";
6224
+ readonly id: string;
6225
+ readonly severity: RuleSeverity;
6226
+ readonly requires?: ReadonlyArray<string>;
6227
+ readonly disabledBy?: ReadonlyArray<string>;
6228
+ readonly tags?: ReadonlyArray<string>;
6229
+ readonly defaultEnabled?: boolean;
6230
+ readonly recommendation?: string;
6231
+ readonly create: (context: RuleContext) => RuleVisitors;
6232
+ };
6233
+ }, {
6234
+ readonly key: "react-doctor/js-async-reduce-without-awaited-acc";
6235
+ readonly id: "js-async-reduce-without-awaited-acc";
6236
+ readonly source: "react-doctor";
6237
+ readonly originallyExternal: false;
6238
+ readonly rule: {
6239
+ readonly framework: "global";
6240
+ readonly category: "Performance";
6241
+ readonly id: string;
6242
+ readonly severity: RuleSeverity;
6243
+ readonly requires?: ReadonlyArray<string>;
6244
+ readonly disabledBy?: ReadonlyArray<string>;
6245
+ readonly tags?: ReadonlyArray<string>;
6246
+ readonly defaultEnabled?: boolean;
6247
+ readonly recommendation?: string;
6248
+ readonly create: (context: RuleContext) => RuleVisitors;
6249
+ };
5774
6250
  }, {
5775
6251
  readonly key: "react-doctor/js-batch-dom-css";
5776
6252
  readonly id: "js-batch-dom-css";
@@ -8440,6 +8916,91 @@ declare const RULES: readonly [{
8440
8916
  readonly recommendation?: string;
8441
8917
  readonly create: (context: RuleContext) => RuleVisitors;
8442
8918
  };
8919
+ }, {
8920
+ readonly key: "react-doctor/preact-no-children-length";
8921
+ readonly id: "preact-no-children-length";
8922
+ readonly source: "react-doctor";
8923
+ readonly originallyExternal: false;
8924
+ readonly rule: {
8925
+ readonly framework: "preact";
8926
+ readonly category: "Preact";
8927
+ readonly id: string;
8928
+ readonly severity: RuleSeverity;
8929
+ readonly requires?: ReadonlyArray<string>;
8930
+ readonly disabledBy?: ReadonlyArray<string>;
8931
+ readonly tags?: ReadonlyArray<string>;
8932
+ readonly defaultEnabled?: boolean;
8933
+ readonly recommendation?: string;
8934
+ readonly create: (context: RuleContext) => RuleVisitors;
8935
+ };
8936
+ }, {
8937
+ readonly key: "react-doctor/preact-no-react-hooks-import";
8938
+ readonly id: "preact-no-react-hooks-import";
8939
+ readonly source: "react-doctor";
8940
+ readonly originallyExternal: false;
8941
+ readonly rule: {
8942
+ readonly framework: "preact";
8943
+ readonly category: "Preact";
8944
+ readonly id: string;
8945
+ readonly severity: RuleSeverity;
8946
+ readonly requires?: ReadonlyArray<string>;
8947
+ readonly disabledBy?: ReadonlyArray<string>;
8948
+ readonly tags?: ReadonlyArray<string>;
8949
+ readonly defaultEnabled?: boolean;
8950
+ readonly recommendation?: string;
8951
+ readonly create: (context: RuleContext) => RuleVisitors;
8952
+ };
8953
+ }, {
8954
+ readonly key: "react-doctor/preact-no-render-arguments";
8955
+ readonly id: "preact-no-render-arguments";
8956
+ readonly source: "react-doctor";
8957
+ readonly originallyExternal: false;
8958
+ readonly rule: {
8959
+ readonly framework: "preact";
8960
+ readonly category: "Preact";
8961
+ readonly id: string;
8962
+ readonly severity: RuleSeverity;
8963
+ readonly requires?: ReadonlyArray<string>;
8964
+ readonly disabledBy?: ReadonlyArray<string>;
8965
+ readonly tags?: ReadonlyArray<string>;
8966
+ readonly defaultEnabled?: boolean;
8967
+ readonly recommendation?: string;
8968
+ readonly create: (context: RuleContext) => RuleVisitors;
8969
+ };
8970
+ }, {
8971
+ readonly key: "react-doctor/preact-prefer-ondblclick";
8972
+ readonly id: "preact-prefer-ondblclick";
8973
+ readonly source: "react-doctor";
8974
+ readonly originallyExternal: false;
8975
+ readonly rule: {
8976
+ readonly framework: "preact";
8977
+ readonly category: "Preact";
8978
+ readonly id: string;
8979
+ readonly severity: RuleSeverity;
8980
+ readonly requires?: ReadonlyArray<string>;
8981
+ readonly disabledBy?: ReadonlyArray<string>;
8982
+ readonly tags?: ReadonlyArray<string>;
8983
+ readonly defaultEnabled?: boolean;
8984
+ readonly recommendation?: string;
8985
+ readonly create: (context: RuleContext) => RuleVisitors;
8986
+ };
8987
+ }, {
8988
+ readonly key: "react-doctor/preact-prefer-oninput";
8989
+ readonly id: "preact-prefer-oninput";
8990
+ readonly source: "react-doctor";
8991
+ readonly originallyExternal: false;
8992
+ readonly rule: {
8993
+ readonly framework: "preact";
8994
+ readonly category: "Preact";
8995
+ readonly id: string;
8996
+ readonly severity: RuleSeverity;
8997
+ readonly requires?: ReadonlyArray<string>;
8998
+ readonly disabledBy?: ReadonlyArray<string>;
8999
+ readonly tags?: ReadonlyArray<string>;
9000
+ readonly defaultEnabled?: boolean;
9001
+ readonly recommendation?: string;
9002
+ readonly create: (context: RuleContext) => RuleVisitors;
9003
+ };
8443
9004
  }, {
8444
9005
  readonly key: "react-doctor/prefer-dynamic-import";
8445
9006
  readonly id: "prefer-dynamic-import";
@@ -8491,6 +9052,23 @@ declare const RULES: readonly [{
8491
9052
  readonly recommendation?: string;
8492
9053
  readonly create: (context: RuleContext) => RuleVisitors;
8493
9054
  };
9055
+ }, {
9056
+ readonly key: "react-doctor/prefer-html-dialog";
9057
+ readonly id: "prefer-html-dialog";
9058
+ readonly source: "react-doctor";
9059
+ readonly originallyExternal: false;
9060
+ readonly rule: {
9061
+ readonly framework: "global";
9062
+ readonly category: "Accessibility";
9063
+ readonly id: string;
9064
+ readonly severity: RuleSeverity;
9065
+ readonly requires?: ReadonlyArray<string>;
9066
+ readonly disabledBy?: ReadonlyArray<string>;
9067
+ readonly tags?: ReadonlyArray<string>;
9068
+ readonly defaultEnabled?: boolean;
9069
+ readonly recommendation?: string;
9070
+ readonly create: (context: RuleContext) => RuleVisitors;
9071
+ };
8494
9072
  }, {
8495
9073
  readonly key: "react-doctor/prefer-tag-over-role";
8496
9074
  readonly id: "prefer-tag-over-role";
@@ -9103,6 +9681,23 @@ declare const RULES: readonly [{
9103
9681
  readonly recommendation?: string;
9104
9682
  readonly create: (context: RuleContext) => RuleVisitors;
9105
9683
  };
9684
+ }, {
9685
+ readonly key: "react-doctor/rn-list-missing-estimated-item-size";
9686
+ readonly id: "rn-list-missing-estimated-item-size";
9687
+ readonly source: "react-doctor";
9688
+ readonly originallyExternal: false;
9689
+ readonly rule: {
9690
+ readonly framework: "react-native";
9691
+ readonly category: "React Native";
9692
+ readonly tags: readonly string[];
9693
+ readonly id: string;
9694
+ readonly severity: RuleSeverity;
9695
+ readonly requires?: ReadonlyArray<string>;
9696
+ readonly disabledBy?: ReadonlyArray<string>;
9697
+ readonly defaultEnabled?: boolean;
9698
+ readonly recommendation?: string;
9699
+ readonly create: (context: RuleContext) => RuleVisitors;
9700
+ };
9106
9701
  }, {
9107
9702
  readonly key: "react-doctor/rn-list-recyclable-without-types";
9108
9703
  readonly id: "rn-list-recyclable-without-types";
@@ -9273,6 +9868,23 @@ declare const RULES: readonly [{
9273
9868
  readonly recommendation?: string;
9274
9869
  readonly create: (context: RuleContext) => RuleVisitors;
9275
9870
  };
9871
+ }, {
9872
+ readonly key: "react-doctor/rn-no-renderitem-key";
9873
+ readonly id: "rn-no-renderitem-key";
9874
+ readonly source: "react-doctor";
9875
+ readonly originallyExternal: false;
9876
+ readonly rule: {
9877
+ readonly framework: "react-native";
9878
+ readonly category: "React Native";
9879
+ readonly tags: readonly string[];
9880
+ readonly id: string;
9881
+ readonly severity: RuleSeverity;
9882
+ readonly requires?: ReadonlyArray<string>;
9883
+ readonly disabledBy?: ReadonlyArray<string>;
9884
+ readonly defaultEnabled?: boolean;
9885
+ readonly recommendation?: string;
9886
+ readonly create: (context: RuleContext) => RuleVisitors;
9887
+ };
9276
9888
  }, {
9277
9889
  readonly key: "react-doctor/rn-no-scroll-state";
9278
9890
  readonly id: "rn-no-scroll-state";
@@ -9375,6 +9987,23 @@ declare const RULES: readonly [{
9375
9987
  readonly recommendation?: string;
9376
9988
  readonly create: (context: RuleContext) => RuleVisitors;
9377
9989
  };
9990
+ }, {
9991
+ readonly key: "react-doctor/rn-prefer-pressable-over-gesture-detector";
9992
+ readonly id: "rn-prefer-pressable-over-gesture-detector";
9993
+ readonly source: "react-doctor";
9994
+ readonly originallyExternal: false;
9995
+ readonly rule: {
9996
+ readonly framework: "react-native";
9997
+ readonly category: "React Native";
9998
+ readonly tags: readonly string[];
9999
+ readonly id: string;
10000
+ readonly severity: RuleSeverity;
10001
+ readonly requires?: ReadonlyArray<string>;
10002
+ readonly disabledBy?: ReadonlyArray<string>;
10003
+ readonly defaultEnabled?: boolean;
10004
+ readonly recommendation?: string;
10005
+ readonly create: (context: RuleContext) => RuleVisitors;
10006
+ };
9378
10007
  }, {
9379
10008
  readonly key: "react-doctor/rn-prefer-reanimated";
9380
10009
  readonly id: "rn-prefer-reanimated";
@@ -9426,6 +10055,23 @@ declare const RULES: readonly [{
9426
10055
  readonly recommendation?: string;
9427
10056
  readonly create: (context: RuleContext) => RuleVisitors;
9428
10057
  };
10058
+ }, {
10059
+ readonly key: "react-doctor/rn-scrollview-flex-in-content-container";
10060
+ readonly id: "rn-scrollview-flex-in-content-container";
10061
+ readonly source: "react-doctor";
10062
+ readonly originallyExternal: false;
10063
+ readonly rule: {
10064
+ readonly framework: "react-native";
10065
+ readonly category: "React Native";
10066
+ readonly tags: readonly string[];
10067
+ readonly id: string;
10068
+ readonly severity: RuleSeverity;
10069
+ readonly requires?: ReadonlyArray<string>;
10070
+ readonly disabledBy?: ReadonlyArray<string>;
10071
+ readonly defaultEnabled?: boolean;
10072
+ readonly recommendation?: string;
10073
+ readonly create: (context: RuleContext) => RuleVisitors;
10074
+ };
9429
10075
  }, {
9430
10076
  readonly key: "react-doctor/rn-style-prefer-boxshadow";
9431
10077
  readonly id: "rn-style-prefer-boxshadow";
@@ -10057,6 +10703,7 @@ declare const NEXTJS_RULES: Record<string, OxlintRuleSeverity>;
10057
10703
  declare const REACT_NATIVE_RULES: Record<string, OxlintRuleSeverity>;
10058
10704
  declare const TANSTACK_START_RULES: Record<string, OxlintRuleSeverity>;
10059
10705
  declare const TANSTACK_QUERY_RULES: Record<string, OxlintRuleSeverity>;
10706
+ declare const PREACT_RULES: Record<string, OxlintRuleSeverity>;
10060
10707
  declare const ALL_REACT_DOCTOR_RULES: Record<string, OxlintRuleSeverity>;
10061
10708
  declare const ALL_REACT_DOCTOR_RULE_KEYS: ReadonlySet<string>;
10062
10709
  declare const FRAMEWORK_SPECIFIC_RULE_KEYS: ReadonlySet<string>;
@@ -10070,5 +10717,5 @@ declare const REACT_NATIVE_DEPENDENCY_NAMES: ReadonlySet<string>;
10070
10717
  declare const REACT_NATIVE_DEPENDENCY_PREFIXES: ReadonlyArray<string>;
10071
10718
  declare const isReactNativeDependencyName: (dependencyName: string) => boolean;
10072
10719
  //#endregion
10073
- export { ALL_REACT_DOCTOR_RULES, ALL_REACT_DOCTOR_RULE_KEYS, EXTERNAL_RULES, type EsTreeNode, FRAMEWORK_SPECIFIC_RULE_KEYS, MOTION_LIBRARY_PACKAGES, NEXTJS_RULES, type OxlintRuleSeverity, REACT_COMPILER_RULES, REACT_DOCTOR_RULES, REACT_NATIVE_DEPENDENCY_NAMES, REACT_NATIVE_DEPENDENCY_PREFIXES, REACT_NATIVE_RULES, RECOMMENDED_RULES, RULES, type Rule, type RuleFramework, type RulePlugin, type RuleSeverity, type RuleVisitors, TANSTACK_QUERY_RULES, TANSTACK_START_RULES, plugin as default, isReactNativeDependencyName };
10720
+ export { ALL_REACT_DOCTOR_RULES, ALL_REACT_DOCTOR_RULE_KEYS, EXTERNAL_RULES, type EsTreeNode, FRAMEWORK_SPECIFIC_RULE_KEYS, MOTION_LIBRARY_PACKAGES, NEXTJS_RULES, type OxlintRuleSeverity, PREACT_RULES, REACT_COMPILER_RULES, REACT_DOCTOR_RULES, REACT_NATIVE_DEPENDENCY_NAMES, REACT_NATIVE_DEPENDENCY_PREFIXES, REACT_NATIVE_RULES, RECOMMENDED_RULES, RULES, type Rule, type RuleFramework, type RulePlugin, type RuleSeverity, type RuleVisitors, TANSTACK_QUERY_RULES, TANSTACK_START_RULES, plugin as default, isReactNativeDependencyName };
10074
10721
  //# sourceMappingURL=index.d.ts.map