oxlint-plugin-react-doctor 0.2.9 → 0.2.11-dev.15e5fec

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 +1280 -116
  2. package/dist/index.js +4718 -986
  3. package/package.json +1 -1
package/dist/index.d.ts CHANGED
@@ -82,10 +82,17 @@ interface ScopeAnalysis {
82
82
  //#region src/plugin/utils/rule-context.d.ts
83
83
  interface BaseRuleContext {
84
84
  report: (descriptor: ReportDescriptor) => void;
85
- getFilename?: () => string;
85
+ readonly filename?: string;
86
+ /**
87
+ * @deprecated Rules use `context.filename`. Read only as a fallback by
88
+ * `wrapWithSemanticContext`; ESLint implements it as a `this`-bound class
89
+ * method, so it must be called on the host context, never a detached
90
+ * reference.
91
+ */
92
+ getFilename?: () => string | undefined;
86
93
  readonly settings?: Readonly<Record<string, unknown>>;
87
94
  }
88
- interface RuleContext extends BaseRuleContext {
95
+ interface RuleContext extends Omit<BaseRuleContext, "getFilename"> {
89
96
  readonly scopes: ScopeAnalysis;
90
97
  readonly cfg: ControlFlowAnalysis;
91
98
  }
@@ -97,7 +104,7 @@ interface RuleVisitors {
97
104
  //#endregion
98
105
  //#region src/plugin/utils/rule.d.ts
99
106
  type RuleSeverity = "error" | "warn";
100
- type RuleFramework = "global" | "nextjs" | "react-native" | "tanstack-start" | "tanstack-query";
107
+ type RuleFramework = "global" | "nextjs" | "react-native" | "tanstack-start" | "tanstack-query" | "preact";
101
108
  interface Rule {
102
109
  id: string;
103
110
  severity: RuleSeverity;
@@ -130,6 +137,23 @@ type OxlintRuleSeverity = RuleSeverity | "off";
130
137
  //#endregion
131
138
  //#region src/rules.d.ts
132
139
  declare const REACT_DOCTOR_RULES: readonly [{
140
+ readonly key: "react-doctor/activity-wraps-effect-heavy-subtree";
141
+ readonly id: "activity-wraps-effect-heavy-subtree";
142
+ readonly source: "react-doctor";
143
+ readonly originallyExternal: false;
144
+ readonly rule: {
145
+ readonly framework: "global";
146
+ readonly category: "State & Effects";
147
+ readonly id: string;
148
+ readonly severity: RuleSeverity;
149
+ readonly requires?: ReadonlyArray<string>;
150
+ readonly disabledBy?: ReadonlyArray<string>;
151
+ readonly tags?: ReadonlyArray<string>;
152
+ readonly defaultEnabled?: boolean;
153
+ readonly recommendation?: string;
154
+ readonly create: (context: RuleContext) => RuleVisitors;
155
+ };
156
+ }, {
133
157
  readonly key: "react-doctor/advanced-event-handler-refs";
134
158
  readonly id: "advanced-event-handler-refs";
135
159
  readonly source: "react-doctor";
@@ -724,6 +748,23 @@ declare const REACT_DOCTOR_RULES: readonly [{
724
748
  readonly recommendation?: string;
725
749
  readonly create: (context: RuleContext) => RuleVisitors;
726
750
  };
751
+ }, {
752
+ readonly key: "react-doctor/hooks-no-nan-in-deps";
753
+ readonly id: "hooks-no-nan-in-deps";
754
+ readonly source: "react-doctor";
755
+ readonly originallyExternal: false;
756
+ readonly rule: {
757
+ readonly framework: "global";
758
+ readonly category: "State & Effects";
759
+ readonly id: string;
760
+ readonly severity: RuleSeverity;
761
+ readonly requires?: ReadonlyArray<string>;
762
+ readonly disabledBy?: ReadonlyArray<string>;
763
+ readonly tags?: ReadonlyArray<string>;
764
+ readonly defaultEnabled?: boolean;
765
+ readonly recommendation?: string;
766
+ readonly create: (context: RuleContext) => RuleVisitors;
767
+ };
727
768
  }, {
728
769
  readonly key: "react-doctor/html-has-lang";
729
770
  readonly id: "html-has-lang";
@@ -741,6 +782,57 @@ declare const REACT_DOCTOR_RULES: readonly [{
741
782
  readonly recommendation?: string;
742
783
  readonly create: (context: RuleContext) => RuleVisitors;
743
784
  };
785
+ }, {
786
+ readonly key: "react-doctor/html-no-invalid-paragraph-child";
787
+ readonly id: "html-no-invalid-paragraph-child";
788
+ readonly source: "react-doctor";
789
+ readonly originallyExternal: false;
790
+ readonly rule: {
791
+ readonly framework: "global";
792
+ readonly category: "Correctness";
793
+ readonly id: string;
794
+ readonly severity: RuleSeverity;
795
+ readonly requires?: ReadonlyArray<string>;
796
+ readonly disabledBy?: ReadonlyArray<string>;
797
+ readonly tags?: ReadonlyArray<string>;
798
+ readonly defaultEnabled?: boolean;
799
+ readonly recommendation?: string;
800
+ readonly create: (context: RuleContext) => RuleVisitors;
801
+ };
802
+ }, {
803
+ readonly key: "react-doctor/html-no-invalid-table-nesting";
804
+ readonly id: "html-no-invalid-table-nesting";
805
+ readonly source: "react-doctor";
806
+ readonly originallyExternal: false;
807
+ readonly rule: {
808
+ readonly framework: "global";
809
+ readonly category: "Correctness";
810
+ readonly id: string;
811
+ readonly severity: RuleSeverity;
812
+ readonly requires?: ReadonlyArray<string>;
813
+ readonly disabledBy?: ReadonlyArray<string>;
814
+ readonly tags?: ReadonlyArray<string>;
815
+ readonly defaultEnabled?: boolean;
816
+ readonly recommendation?: string;
817
+ readonly create: (context: RuleContext) => RuleVisitors;
818
+ };
819
+ }, {
820
+ readonly key: "react-doctor/html-no-nested-interactive";
821
+ readonly id: "html-no-nested-interactive";
822
+ readonly source: "react-doctor";
823
+ readonly originallyExternal: false;
824
+ readonly rule: {
825
+ readonly framework: "global";
826
+ readonly category: "Correctness";
827
+ readonly id: string;
828
+ readonly severity: RuleSeverity;
829
+ readonly requires?: ReadonlyArray<string>;
830
+ readonly disabledBy?: ReadonlyArray<string>;
831
+ readonly tags?: ReadonlyArray<string>;
832
+ readonly defaultEnabled?: boolean;
833
+ readonly recommendation?: string;
834
+ readonly create: (context: RuleContext) => RuleVisitors;
835
+ };
744
836
  }, {
745
837
  readonly key: "react-doctor/iframe-has-title";
746
838
  readonly id: "iframe-has-title";
@@ -809,6 +901,74 @@ declare const REACT_DOCTOR_RULES: readonly [{
809
901
  readonly recommendation?: string;
810
902
  readonly create: (context: RuleContext) => RuleVisitors;
811
903
  };
904
+ }, {
905
+ readonly key: "react-doctor/jotai-derived-atom-returns-fresh-object";
906
+ readonly id: "jotai-derived-atom-returns-fresh-object";
907
+ readonly source: "react-doctor";
908
+ readonly originallyExternal: false;
909
+ readonly rule: {
910
+ readonly framework: "global";
911
+ readonly category: "State & Effects";
912
+ readonly id: string;
913
+ readonly severity: RuleSeverity;
914
+ readonly requires?: ReadonlyArray<string>;
915
+ readonly disabledBy?: ReadonlyArray<string>;
916
+ readonly tags?: ReadonlyArray<string>;
917
+ readonly defaultEnabled?: boolean;
918
+ readonly recommendation?: string;
919
+ readonly create: (context: RuleContext) => RuleVisitors;
920
+ };
921
+ }, {
922
+ readonly key: "react-doctor/jotai-select-atom-in-render-body";
923
+ readonly id: "jotai-select-atom-in-render-body";
924
+ readonly source: "react-doctor";
925
+ readonly originallyExternal: false;
926
+ readonly rule: {
927
+ readonly framework: "global";
928
+ readonly category: "State & Effects";
929
+ readonly id: string;
930
+ readonly severity: RuleSeverity;
931
+ readonly requires?: ReadonlyArray<string>;
932
+ readonly disabledBy?: ReadonlyArray<string>;
933
+ readonly tags?: ReadonlyArray<string>;
934
+ readonly defaultEnabled?: boolean;
935
+ readonly recommendation?: string;
936
+ readonly create: (context: RuleContext) => RuleVisitors;
937
+ };
938
+ }, {
939
+ readonly key: "react-doctor/jotai-tq-use-raw-query-atom";
940
+ readonly id: "jotai-tq-use-raw-query-atom";
941
+ readonly source: "react-doctor";
942
+ readonly originallyExternal: false;
943
+ readonly rule: {
944
+ readonly framework: "global";
945
+ readonly category: "State & Effects";
946
+ readonly id: string;
947
+ readonly severity: RuleSeverity;
948
+ readonly requires?: ReadonlyArray<string>;
949
+ readonly disabledBy?: ReadonlyArray<string>;
950
+ readonly tags?: ReadonlyArray<string>;
951
+ readonly defaultEnabled?: boolean;
952
+ readonly recommendation?: string;
953
+ readonly create: (context: RuleContext) => RuleVisitors;
954
+ };
955
+ }, {
956
+ readonly key: "react-doctor/js-async-reduce-without-awaited-acc";
957
+ readonly id: "js-async-reduce-without-awaited-acc";
958
+ readonly source: "react-doctor";
959
+ readonly originallyExternal: false;
960
+ readonly rule: {
961
+ readonly framework: "global";
962
+ readonly category: "Performance";
963
+ readonly id: string;
964
+ readonly severity: RuleSeverity;
965
+ readonly requires?: ReadonlyArray<string>;
966
+ readonly disabledBy?: ReadonlyArray<string>;
967
+ readonly tags?: ReadonlyArray<string>;
968
+ readonly defaultEnabled?: boolean;
969
+ readonly recommendation?: string;
970
+ readonly create: (context: RuleContext) => RuleVisitors;
971
+ };
812
972
  }, {
813
973
  readonly key: "react-doctor/js-batch-dom-css";
814
974
  readonly id: "js-batch-dom-css";
@@ -1914,6 +2074,40 @@ declare const REACT_DOCTOR_RULES: readonly [{
1914
2074
  readonly recommendation?: string;
1915
2075
  readonly create: (context: RuleContext) => RuleVisitors;
1916
2076
  };
2077
+ }, {
2078
+ readonly key: "react-doctor/no-create-context-in-render";
2079
+ readonly id: "no-create-context-in-render";
2080
+ readonly source: "react-doctor";
2081
+ readonly originallyExternal: false;
2082
+ readonly rule: {
2083
+ readonly framework: "global";
2084
+ readonly category: "Correctness";
2085
+ readonly id: string;
2086
+ readonly severity: RuleSeverity;
2087
+ readonly requires?: ReadonlyArray<string>;
2088
+ readonly disabledBy?: ReadonlyArray<string>;
2089
+ readonly tags?: ReadonlyArray<string>;
2090
+ readonly defaultEnabled?: boolean;
2091
+ readonly recommendation?: string;
2092
+ readonly create: (context: RuleContext) => RuleVisitors;
2093
+ };
2094
+ }, {
2095
+ readonly key: "react-doctor/no-create-store-in-render";
2096
+ readonly id: "no-create-store-in-render";
2097
+ readonly source: "react-doctor";
2098
+ readonly originallyExternal: false;
2099
+ readonly rule: {
2100
+ readonly framework: "global";
2101
+ readonly category: "Correctness";
2102
+ readonly id: string;
2103
+ readonly severity: RuleSeverity;
2104
+ readonly requires?: ReadonlyArray<string>;
2105
+ readonly disabledBy?: ReadonlyArray<string>;
2106
+ readonly tags?: ReadonlyArray<string>;
2107
+ readonly defaultEnabled?: boolean;
2108
+ readonly recommendation?: string;
2109
+ readonly create: (context: RuleContext) => RuleVisitors;
2110
+ };
1917
2111
  }, {
1918
2112
  readonly key: "react-doctor/no-danger";
1919
2113
  readonly id: "no-danger";
@@ -2220,6 +2414,23 @@ declare const REACT_DOCTOR_RULES: readonly [{
2220
2414
  readonly recommendation?: string;
2221
2415
  readonly create: (context: RuleContext) => RuleVisitors;
2222
2416
  };
2417
+ }, {
2418
+ readonly key: "react-doctor/no-effect-with-fresh-deps";
2419
+ readonly id: "no-effect-with-fresh-deps";
2420
+ readonly source: "react-doctor";
2421
+ readonly originallyExternal: false;
2422
+ readonly rule: {
2423
+ readonly framework: "global";
2424
+ readonly category: "State & Effects";
2425
+ readonly id: string;
2426
+ readonly severity: RuleSeverity;
2427
+ readonly requires?: ReadonlyArray<string>;
2428
+ readonly disabledBy?: ReadonlyArray<string>;
2429
+ readonly tags?: ReadonlyArray<string>;
2430
+ readonly defaultEnabled?: boolean;
2431
+ readonly recommendation?: string;
2432
+ readonly create: (context: RuleContext) => RuleVisitors;
2433
+ };
2223
2434
  }, {
2224
2435
  readonly key: "react-doctor/no-eval";
2225
2436
  readonly id: "no-eval";
@@ -2951,6 +3162,23 @@ declare const REACT_DOCTOR_RULES: readonly [{
2951
3162
  readonly recommendation?: string;
2952
3163
  readonly create: (context: RuleContext) => RuleVisitors;
2953
3164
  };
3165
+ }, {
3166
+ readonly key: "react-doctor/no-prop-types";
3167
+ readonly id: "no-prop-types";
3168
+ readonly source: "react-doctor";
3169
+ readonly originallyExternal: false;
3170
+ readonly rule: {
3171
+ readonly framework: "global";
3172
+ readonly category: "Architecture";
3173
+ readonly id: string;
3174
+ readonly severity: RuleSeverity;
3175
+ readonly requires?: ReadonlyArray<string>;
3176
+ readonly disabledBy?: ReadonlyArray<string>;
3177
+ readonly tags?: ReadonlyArray<string>;
3178
+ readonly defaultEnabled?: boolean;
3179
+ readonly recommendation?: string;
3180
+ readonly create: (context: RuleContext) => RuleVisitors;
3181
+ };
2954
3182
  }, {
2955
3183
  readonly key: "react-doctor/no-pure-black-background";
2956
3184
  readonly id: "no-pure-black-background";
@@ -2968,6 +3196,23 @@ declare const REACT_DOCTOR_RULES: readonly [{
2968
3196
  readonly recommendation?: string;
2969
3197
  readonly create: (context: RuleContext) => RuleVisitors;
2970
3198
  };
3199
+ }, {
3200
+ readonly key: "react-doctor/no-random-key";
3201
+ readonly id: "no-random-key";
3202
+ readonly source: "react-doctor";
3203
+ readonly originallyExternal: false;
3204
+ readonly rule: {
3205
+ readonly framework: "global";
3206
+ readonly category: "Correctness";
3207
+ readonly id: string;
3208
+ readonly severity: RuleSeverity;
3209
+ readonly requires?: ReadonlyArray<string>;
3210
+ readonly disabledBy?: ReadonlyArray<string>;
3211
+ readonly tags?: ReadonlyArray<string>;
3212
+ readonly defaultEnabled?: boolean;
3213
+ readonly recommendation?: string;
3214
+ readonly create: (context: RuleContext) => RuleVisitors;
3215
+ };
2971
3216
  }, {
2972
3217
  readonly key: "react-doctor/no-react-children";
2973
3218
  readonly id: "no-react-children";
@@ -3155,6 +3400,23 @@ declare const REACT_DOCTOR_RULES: readonly [{
3155
3400
  readonly recommendation?: string;
3156
3401
  readonly create: (context: RuleContext) => RuleVisitors;
3157
3402
  };
3403
+ }, {
3404
+ readonly key: "react-doctor/no-self-updating-effect";
3405
+ readonly id: "no-self-updating-effect";
3406
+ readonly source: "react-doctor";
3407
+ readonly originallyExternal: false;
3408
+ readonly rule: {
3409
+ readonly framework: "global";
3410
+ readonly category: "State & Effects";
3411
+ readonly id: string;
3412
+ readonly severity: RuleSeverity;
3413
+ readonly requires?: ReadonlyArray<string>;
3414
+ readonly disabledBy?: ReadonlyArray<string>;
3415
+ readonly tags?: ReadonlyArray<string>;
3416
+ readonly defaultEnabled?: boolean;
3417
+ readonly recommendation?: string;
3418
+ readonly create: (context: RuleContext) => RuleVisitors;
3419
+ };
3158
3420
  }, {
3159
3421
  readonly key: "react-doctor/no-set-state";
3160
3422
  readonly id: "no-set-state";
@@ -3479,13 +3741,13 @@ declare const REACT_DOCTOR_RULES: readonly [{
3479
3741
  readonly create: (context: RuleContext) => RuleVisitors;
3480
3742
  };
3481
3743
  }, {
3482
- readonly key: "react-doctor/prefer-dynamic-import";
3483
- readonly id: "prefer-dynamic-import";
3744
+ readonly key: "react-doctor/preact-no-children-length";
3745
+ readonly id: "preact-no-children-length";
3484
3746
  readonly source: "react-doctor";
3485
3747
  readonly originallyExternal: false;
3486
3748
  readonly rule: {
3487
- readonly framework: "global";
3488
- readonly category: "Bundle Size";
3749
+ readonly framework: "preact";
3750
+ readonly category: "Preact";
3489
3751
  readonly id: string;
3490
3752
  readonly severity: RuleSeverity;
3491
3753
  readonly requires?: ReadonlyArray<string>;
@@ -3496,13 +3758,13 @@ declare const REACT_DOCTOR_RULES: readonly [{
3496
3758
  readonly create: (context: RuleContext) => RuleVisitors;
3497
3759
  };
3498
3760
  }, {
3499
- readonly key: "react-doctor/prefer-es6-class";
3500
- readonly id: "prefer-es6-class";
3761
+ readonly key: "react-doctor/preact-no-react-hooks-import";
3762
+ readonly id: "preact-no-react-hooks-import";
3501
3763
  readonly source: "react-doctor";
3502
- readonly originallyExternal: true;
3764
+ readonly originallyExternal: false;
3503
3765
  readonly rule: {
3504
- readonly framework: "global";
3505
- readonly category: "Architecture";
3766
+ readonly framework: "preact";
3767
+ readonly category: "Preact";
3506
3768
  readonly id: string;
3507
3769
  readonly severity: RuleSeverity;
3508
3770
  readonly requires?: ReadonlyArray<string>;
@@ -3513,13 +3775,13 @@ declare const REACT_DOCTOR_RULES: readonly [{
3513
3775
  readonly create: (context: RuleContext) => RuleVisitors;
3514
3776
  };
3515
3777
  }, {
3516
- readonly key: "react-doctor/prefer-function-component";
3517
- readonly id: "prefer-function-component";
3778
+ readonly key: "react-doctor/preact-no-render-arguments";
3779
+ readonly id: "preact-no-render-arguments";
3518
3780
  readonly source: "react-doctor";
3519
- readonly originallyExternal: true;
3781
+ readonly originallyExternal: false;
3520
3782
  readonly rule: {
3521
- readonly framework: "global";
3522
- readonly category: "Architecture";
3783
+ readonly framework: "preact";
3784
+ readonly category: "Preact";
3523
3785
  readonly id: string;
3524
3786
  readonly severity: RuleSeverity;
3525
3787
  readonly requires?: ReadonlyArray<string>;
@@ -3530,13 +3792,13 @@ declare const REACT_DOCTOR_RULES: readonly [{
3530
3792
  readonly create: (context: RuleContext) => RuleVisitors;
3531
3793
  };
3532
3794
  }, {
3533
- readonly key: "react-doctor/prefer-tag-over-role";
3534
- readonly id: "prefer-tag-over-role";
3795
+ readonly key: "react-doctor/preact-prefer-ondblclick";
3796
+ readonly id: "preact-prefer-ondblclick";
3535
3797
  readonly source: "react-doctor";
3536
- readonly originallyExternal: true;
3798
+ readonly originallyExternal: false;
3537
3799
  readonly rule: {
3538
- readonly framework: "global";
3539
- readonly category: "Accessibility";
3800
+ readonly framework: "preact";
3801
+ readonly category: "Preact";
3540
3802
  readonly id: string;
3541
3803
  readonly severity: RuleSeverity;
3542
3804
  readonly requires?: ReadonlyArray<string>;
@@ -3547,13 +3809,13 @@ declare const REACT_DOCTOR_RULES: readonly [{
3547
3809
  readonly create: (context: RuleContext) => RuleVisitors;
3548
3810
  };
3549
3811
  }, {
3550
- readonly key: "react-doctor/prefer-use-effect-event";
3551
- readonly id: "prefer-use-effect-event";
3812
+ readonly key: "react-doctor/preact-prefer-oninput";
3813
+ readonly id: "preact-prefer-oninput";
3552
3814
  readonly source: "react-doctor";
3553
3815
  readonly originallyExternal: false;
3554
3816
  readonly rule: {
3555
- readonly framework: "global";
3556
- readonly category: "State & Effects";
3817
+ readonly framework: "preact";
3818
+ readonly category: "Preact";
3557
3819
  readonly id: string;
3558
3820
  readonly severity: RuleSeverity;
3559
3821
  readonly requires?: ReadonlyArray<string>;
@@ -3564,13 +3826,166 @@ declare const REACT_DOCTOR_RULES: readonly [{
3564
3826
  readonly create: (context: RuleContext) => RuleVisitors;
3565
3827
  };
3566
3828
  }, {
3567
- readonly key: "react-doctor/prefer-use-sync-external-store";
3568
- readonly id: "prefer-use-sync-external-store";
3829
+ readonly key: "react-doctor/prefer-dynamic-import";
3830
+ readonly id: "prefer-dynamic-import";
3569
3831
  readonly source: "react-doctor";
3570
3832
  readonly originallyExternal: false;
3571
3833
  readonly rule: {
3572
3834
  readonly framework: "global";
3573
- readonly category: "State & Effects";
3835
+ readonly category: "Bundle Size";
3836
+ readonly id: string;
3837
+ readonly severity: RuleSeverity;
3838
+ readonly requires?: ReadonlyArray<string>;
3839
+ readonly disabledBy?: ReadonlyArray<string>;
3840
+ readonly tags?: ReadonlyArray<string>;
3841
+ readonly defaultEnabled?: boolean;
3842
+ readonly recommendation?: string;
3843
+ readonly create: (context: RuleContext) => RuleVisitors;
3844
+ };
3845
+ }, {
3846
+ readonly key: "react-doctor/prefer-es6-class";
3847
+ readonly id: "prefer-es6-class";
3848
+ readonly source: "react-doctor";
3849
+ readonly originallyExternal: true;
3850
+ readonly rule: {
3851
+ readonly framework: "global";
3852
+ readonly category: "Architecture";
3853
+ readonly id: string;
3854
+ readonly severity: RuleSeverity;
3855
+ readonly requires?: ReadonlyArray<string>;
3856
+ readonly disabledBy?: ReadonlyArray<string>;
3857
+ readonly tags?: ReadonlyArray<string>;
3858
+ readonly defaultEnabled?: boolean;
3859
+ readonly recommendation?: string;
3860
+ readonly create: (context: RuleContext) => RuleVisitors;
3861
+ };
3862
+ }, {
3863
+ readonly key: "react-doctor/prefer-function-component";
3864
+ readonly id: "prefer-function-component";
3865
+ readonly source: "react-doctor";
3866
+ readonly originallyExternal: true;
3867
+ readonly rule: {
3868
+ readonly framework: "global";
3869
+ readonly category: "Architecture";
3870
+ readonly id: string;
3871
+ readonly severity: RuleSeverity;
3872
+ readonly requires?: ReadonlyArray<string>;
3873
+ readonly disabledBy?: ReadonlyArray<string>;
3874
+ readonly tags?: ReadonlyArray<string>;
3875
+ readonly defaultEnabled?: boolean;
3876
+ readonly recommendation?: string;
3877
+ readonly create: (context: RuleContext) => RuleVisitors;
3878
+ };
3879
+ }, {
3880
+ readonly key: "react-doctor/prefer-html-dialog";
3881
+ readonly id: "prefer-html-dialog";
3882
+ readonly source: "react-doctor";
3883
+ readonly originallyExternal: false;
3884
+ readonly rule: {
3885
+ readonly framework: "global";
3886
+ readonly category: "Accessibility";
3887
+ readonly id: string;
3888
+ readonly severity: RuleSeverity;
3889
+ readonly requires?: ReadonlyArray<string>;
3890
+ readonly disabledBy?: ReadonlyArray<string>;
3891
+ readonly tags?: ReadonlyArray<string>;
3892
+ readonly defaultEnabled?: boolean;
3893
+ readonly recommendation?: string;
3894
+ readonly create: (context: RuleContext) => RuleVisitors;
3895
+ };
3896
+ }, {
3897
+ readonly key: "react-doctor/prefer-module-scope-pure-function";
3898
+ readonly id: "prefer-module-scope-pure-function";
3899
+ readonly source: "react-doctor";
3900
+ readonly originallyExternal: false;
3901
+ readonly rule: {
3902
+ readonly framework: "global";
3903
+ readonly category: "Architecture";
3904
+ readonly id: string;
3905
+ readonly severity: RuleSeverity;
3906
+ readonly requires?: ReadonlyArray<string>;
3907
+ readonly disabledBy?: ReadonlyArray<string>;
3908
+ readonly tags?: ReadonlyArray<string>;
3909
+ readonly defaultEnabled?: boolean;
3910
+ readonly recommendation?: string;
3911
+ readonly create: (context: RuleContext) => RuleVisitors;
3912
+ };
3913
+ }, {
3914
+ readonly key: "react-doctor/prefer-module-scope-static-value";
3915
+ readonly id: "prefer-module-scope-static-value";
3916
+ readonly source: "react-doctor";
3917
+ readonly originallyExternal: false;
3918
+ readonly rule: {
3919
+ readonly framework: "global";
3920
+ readonly category: "Architecture";
3921
+ readonly id: string;
3922
+ readonly severity: RuleSeverity;
3923
+ readonly requires?: ReadonlyArray<string>;
3924
+ readonly disabledBy?: ReadonlyArray<string>;
3925
+ readonly tags?: ReadonlyArray<string>;
3926
+ readonly defaultEnabled?: boolean;
3927
+ readonly recommendation?: string;
3928
+ readonly create: (context: RuleContext) => RuleVisitors;
3929
+ };
3930
+ }, {
3931
+ readonly key: "react-doctor/prefer-stable-empty-fallback";
3932
+ readonly id: "prefer-stable-empty-fallback";
3933
+ readonly source: "react-doctor";
3934
+ readonly originallyExternal: false;
3935
+ readonly rule: {
3936
+ readonly framework: "global";
3937
+ readonly category: "Performance";
3938
+ readonly id: string;
3939
+ readonly severity: RuleSeverity;
3940
+ readonly requires?: ReadonlyArray<string>;
3941
+ readonly disabledBy?: ReadonlyArray<string>;
3942
+ readonly tags?: ReadonlyArray<string>;
3943
+ readonly defaultEnabled?: boolean;
3944
+ readonly recommendation?: string;
3945
+ readonly create: (context: RuleContext) => RuleVisitors;
3946
+ };
3947
+ }, {
3948
+ readonly key: "react-doctor/prefer-tag-over-role";
3949
+ readonly id: "prefer-tag-over-role";
3950
+ readonly source: "react-doctor";
3951
+ readonly originallyExternal: true;
3952
+ readonly rule: {
3953
+ readonly framework: "global";
3954
+ readonly category: "Accessibility";
3955
+ readonly id: string;
3956
+ readonly severity: RuleSeverity;
3957
+ readonly requires?: ReadonlyArray<string>;
3958
+ readonly disabledBy?: ReadonlyArray<string>;
3959
+ readonly tags?: ReadonlyArray<string>;
3960
+ readonly defaultEnabled?: boolean;
3961
+ readonly recommendation?: string;
3962
+ readonly create: (context: RuleContext) => RuleVisitors;
3963
+ };
3964
+ }, {
3965
+ readonly key: "react-doctor/prefer-use-effect-event";
3966
+ readonly id: "prefer-use-effect-event";
3967
+ readonly source: "react-doctor";
3968
+ readonly originallyExternal: false;
3969
+ readonly rule: {
3970
+ readonly framework: "global";
3971
+ readonly category: "State & Effects";
3972
+ readonly id: string;
3973
+ readonly severity: RuleSeverity;
3974
+ readonly requires?: ReadonlyArray<string>;
3975
+ readonly disabledBy?: ReadonlyArray<string>;
3976
+ readonly tags?: ReadonlyArray<string>;
3977
+ readonly defaultEnabled?: boolean;
3978
+ readonly recommendation?: string;
3979
+ readonly create: (context: RuleContext) => RuleVisitors;
3980
+ };
3981
+ }, {
3982
+ readonly key: "react-doctor/prefer-use-sync-external-store";
3983
+ readonly id: "prefer-use-sync-external-store";
3984
+ readonly source: "react-doctor";
3985
+ readonly originallyExternal: false;
3986
+ readonly rule: {
3987
+ readonly framework: "global";
3988
+ readonly category: "State & Effects";
3574
3989
  readonly id: string;
3575
3990
  readonly severity: RuleSeverity;
3576
3991
  readonly requires?: ReadonlyArray<string>;
@@ -3700,8 +4115,8 @@ declare const REACT_DOCTOR_RULES: readonly [{
3700
4115
  readonly create: (context: RuleContext) => RuleVisitors;
3701
4116
  };
3702
4117
  }, {
3703
- readonly key: "react-doctor/react-compiler-destructure-method";
3704
- readonly id: "react-compiler-destructure-method";
4118
+ readonly key: "react-doctor/react-compiler-no-manual-memoization";
4119
+ readonly id: "react-compiler-no-manual-memoization";
3705
4120
  readonly source: "react-doctor";
3706
4121
  readonly originallyExternal: false;
3707
4122
  readonly rule: {
@@ -3717,13 +4132,30 @@ declare const REACT_DOCTOR_RULES: readonly [{
3717
4132
  readonly create: (context: RuleContext) => RuleVisitors;
3718
4133
  };
3719
4134
  }, {
3720
- readonly key: "react-doctor/react-compiler-no-manual-memoization";
3721
- readonly id: "react-compiler-no-manual-memoization";
4135
+ readonly key: "react-doctor/react-in-jsx-scope";
4136
+ readonly id: "react-in-jsx-scope";
4137
+ readonly source: "react-doctor";
4138
+ readonly originallyExternal: true;
4139
+ readonly rule: {
4140
+ readonly framework: "global";
4141
+ readonly category: "Correctness";
4142
+ readonly id: string;
4143
+ readonly severity: RuleSeverity;
4144
+ readonly requires?: ReadonlyArray<string>;
4145
+ readonly disabledBy?: ReadonlyArray<string>;
4146
+ readonly tags?: ReadonlyArray<string>;
4147
+ readonly defaultEnabled?: boolean;
4148
+ readonly recommendation?: string;
4149
+ readonly create: (context: RuleContext) => RuleVisitors;
4150
+ };
4151
+ }, {
4152
+ readonly key: "react-doctor/redux-useselector-inline-derivation";
4153
+ readonly id: "redux-useselector-inline-derivation";
3722
4154
  readonly source: "react-doctor";
3723
4155
  readonly originallyExternal: false;
3724
4156
  readonly rule: {
3725
4157
  readonly framework: "global";
3726
- readonly category: "Architecture";
4158
+ readonly category: "Performance";
3727
4159
  readonly id: string;
3728
4160
  readonly severity: RuleSeverity;
3729
4161
  readonly requires?: ReadonlyArray<string>;
@@ -3734,13 +4166,13 @@ declare const REACT_DOCTOR_RULES: readonly [{
3734
4166
  readonly create: (context: RuleContext) => RuleVisitors;
3735
4167
  };
3736
4168
  }, {
3737
- readonly key: "react-doctor/react-in-jsx-scope";
3738
- readonly id: "react-in-jsx-scope";
4169
+ readonly key: "react-doctor/redux-useselector-returns-new-collection";
4170
+ readonly id: "redux-useselector-returns-new-collection";
3739
4171
  readonly source: "react-doctor";
3740
- readonly originallyExternal: true;
4172
+ readonly originallyExternal: false;
3741
4173
  readonly rule: {
3742
4174
  readonly framework: "global";
3743
- readonly category: "Correctness";
4175
+ readonly category: "Performance";
3744
4176
  readonly id: string;
3745
4177
  readonly severity: RuleSeverity;
3746
4178
  readonly requires?: ReadonlyArray<string>;
@@ -3971,6 +4403,23 @@ declare const REACT_DOCTOR_RULES: readonly [{
3971
4403
  readonly recommendation?: string;
3972
4404
  readonly create: (context: RuleContext) => RuleVisitors;
3973
4405
  };
4406
+ }, {
4407
+ readonly key: "react-doctor/rerender-lazy-ref-init";
4408
+ readonly id: "rerender-lazy-ref-init";
4409
+ readonly source: "react-doctor";
4410
+ readonly originallyExternal: false;
4411
+ readonly rule: {
4412
+ readonly framework: "global";
4413
+ readonly category: "Performance";
4414
+ readonly id: string;
4415
+ readonly severity: RuleSeverity;
4416
+ readonly requires?: ReadonlyArray<string>;
4417
+ readonly disabledBy?: ReadonlyArray<string>;
4418
+ readonly tags?: ReadonlyArray<string>;
4419
+ readonly defaultEnabled?: boolean;
4420
+ readonly recommendation?: string;
4421
+ readonly create: (context: RuleContext) => RuleVisitors;
4422
+ };
3974
4423
  }, {
3975
4424
  readonly key: "react-doctor/rerender-lazy-state-init";
3976
4425
  readonly id: "rerender-lazy-state-init";
@@ -4141,6 +4590,23 @@ declare const REACT_DOCTOR_RULES: readonly [{
4141
4590
  readonly recommendation?: string;
4142
4591
  readonly create: (context: RuleContext) => RuleVisitors;
4143
4592
  };
4593
+ }, {
4594
+ readonly key: "react-doctor/rn-list-missing-estimated-item-size";
4595
+ readonly id: "rn-list-missing-estimated-item-size";
4596
+ readonly source: "react-doctor";
4597
+ readonly originallyExternal: false;
4598
+ readonly rule: {
4599
+ readonly framework: "react-native";
4600
+ readonly category: "React Native";
4601
+ readonly tags: readonly string[];
4602
+ readonly id: string;
4603
+ readonly severity: RuleSeverity;
4604
+ readonly requires?: ReadonlyArray<string>;
4605
+ readonly disabledBy?: ReadonlyArray<string>;
4606
+ readonly defaultEnabled?: boolean;
4607
+ readonly recommendation?: string;
4608
+ readonly create: (context: RuleContext) => RuleVisitors;
4609
+ };
4144
4610
  }, {
4145
4611
  readonly key: "react-doctor/rn-list-recyclable-without-types";
4146
4612
  readonly id: "rn-list-recyclable-without-types";
@@ -4311,6 +4777,23 @@ declare const REACT_DOCTOR_RULES: readonly [{
4311
4777
  readonly recommendation?: string;
4312
4778
  readonly create: (context: RuleContext) => RuleVisitors;
4313
4779
  };
4780
+ }, {
4781
+ readonly key: "react-doctor/rn-no-renderitem-key";
4782
+ readonly id: "rn-no-renderitem-key";
4783
+ readonly source: "react-doctor";
4784
+ readonly originallyExternal: false;
4785
+ readonly rule: {
4786
+ readonly framework: "react-native";
4787
+ readonly category: "React Native";
4788
+ readonly tags: readonly string[];
4789
+ readonly id: string;
4790
+ readonly severity: RuleSeverity;
4791
+ readonly requires?: ReadonlyArray<string>;
4792
+ readonly disabledBy?: ReadonlyArray<string>;
4793
+ readonly defaultEnabled?: boolean;
4794
+ readonly recommendation?: string;
4795
+ readonly create: (context: RuleContext) => RuleVisitors;
4796
+ };
4314
4797
  }, {
4315
4798
  readonly key: "react-doctor/rn-no-scroll-state";
4316
4799
  readonly id: "rn-no-scroll-state";
@@ -4413,6 +4896,23 @@ declare const REACT_DOCTOR_RULES: readonly [{
4413
4896
  readonly recommendation?: string;
4414
4897
  readonly create: (context: RuleContext) => RuleVisitors;
4415
4898
  };
4899
+ }, {
4900
+ readonly key: "react-doctor/rn-prefer-pressable-over-gesture-detector";
4901
+ readonly id: "rn-prefer-pressable-over-gesture-detector";
4902
+ readonly source: "react-doctor";
4903
+ readonly originallyExternal: false;
4904
+ readonly rule: {
4905
+ readonly framework: "react-native";
4906
+ readonly category: "React Native";
4907
+ readonly tags: readonly string[];
4908
+ readonly id: string;
4909
+ readonly severity: RuleSeverity;
4910
+ readonly requires?: ReadonlyArray<string>;
4911
+ readonly disabledBy?: ReadonlyArray<string>;
4912
+ readonly defaultEnabled?: boolean;
4913
+ readonly recommendation?: string;
4914
+ readonly create: (context: RuleContext) => RuleVisitors;
4915
+ };
4416
4916
  }, {
4417
4917
  readonly key: "react-doctor/rn-prefer-reanimated";
4418
4918
  readonly id: "rn-prefer-reanimated";
@@ -4464,6 +4964,23 @@ declare const REACT_DOCTOR_RULES: readonly [{
4464
4964
  readonly recommendation?: string;
4465
4965
  readonly create: (context: RuleContext) => RuleVisitors;
4466
4966
  };
4967
+ }, {
4968
+ readonly key: "react-doctor/rn-scrollview-flex-in-content-container";
4969
+ readonly id: "rn-scrollview-flex-in-content-container";
4970
+ readonly source: "react-doctor";
4971
+ readonly originallyExternal: false;
4972
+ readonly rule: {
4973
+ readonly framework: "react-native";
4974
+ readonly category: "React Native";
4975
+ readonly tags: readonly string[];
4976
+ readonly id: string;
4977
+ readonly severity: RuleSeverity;
4978
+ readonly requires?: ReadonlyArray<string>;
4979
+ readonly disabledBy?: ReadonlyArray<string>;
4980
+ readonly defaultEnabled?: boolean;
4981
+ readonly recommendation?: string;
4982
+ readonly create: (context: RuleContext) => RuleVisitors;
4983
+ };
4467
4984
  }, {
4468
4985
  readonly key: "react-doctor/rn-style-prefer-boxshadow";
4469
4986
  readonly id: "rn-style-prefer-boxshadow";
@@ -5025,6 +5542,74 @@ declare const REACT_DOCTOR_RULES: readonly [{
5025
5542
  readonly recommendation?: string;
5026
5543
  readonly create: (context: RuleContext) => RuleVisitors;
5027
5544
  };
5545
+ }, {
5546
+ readonly key: "react-doctor/zod-v4-no-deprecated-error-apis";
5547
+ readonly id: "zod-v4-no-deprecated-error-apis";
5548
+ readonly source: "react-doctor";
5549
+ readonly originallyExternal: false;
5550
+ readonly rule: {
5551
+ readonly framework: "global";
5552
+ readonly category: "Architecture";
5553
+ readonly id: string;
5554
+ readonly severity: RuleSeverity;
5555
+ readonly requires?: ReadonlyArray<string>;
5556
+ readonly disabledBy?: ReadonlyArray<string>;
5557
+ readonly tags?: ReadonlyArray<string>;
5558
+ readonly defaultEnabled?: boolean;
5559
+ readonly recommendation?: string;
5560
+ readonly create: (context: RuleContext) => RuleVisitors;
5561
+ };
5562
+ }, {
5563
+ readonly key: "react-doctor/zod-v4-no-deprecated-error-customization";
5564
+ readonly id: "zod-v4-no-deprecated-error-customization";
5565
+ readonly source: "react-doctor";
5566
+ readonly originallyExternal: false;
5567
+ readonly rule: {
5568
+ readonly framework: "global";
5569
+ readonly category: "Architecture";
5570
+ readonly id: string;
5571
+ readonly severity: RuleSeverity;
5572
+ readonly requires?: ReadonlyArray<string>;
5573
+ readonly disabledBy?: ReadonlyArray<string>;
5574
+ readonly tags?: ReadonlyArray<string>;
5575
+ readonly defaultEnabled?: boolean;
5576
+ readonly recommendation?: string;
5577
+ readonly create: (context: RuleContext) => RuleVisitors;
5578
+ };
5579
+ }, {
5580
+ readonly key: "react-doctor/zod-v4-no-deprecated-schema-apis";
5581
+ readonly id: "zod-v4-no-deprecated-schema-apis";
5582
+ readonly source: "react-doctor";
5583
+ readonly originallyExternal: false;
5584
+ readonly rule: {
5585
+ readonly framework: "global";
5586
+ readonly category: "Architecture";
5587
+ readonly id: string;
5588
+ readonly severity: RuleSeverity;
5589
+ readonly requires?: ReadonlyArray<string>;
5590
+ readonly disabledBy?: ReadonlyArray<string>;
5591
+ readonly tags?: ReadonlyArray<string>;
5592
+ readonly defaultEnabled?: boolean;
5593
+ readonly recommendation?: string;
5594
+ readonly create: (context: RuleContext) => RuleVisitors;
5595
+ };
5596
+ }, {
5597
+ readonly key: "react-doctor/zod-v4-prefer-top-level-string-formats";
5598
+ readonly id: "zod-v4-prefer-top-level-string-formats";
5599
+ readonly source: "react-doctor";
5600
+ readonly originallyExternal: false;
5601
+ readonly rule: {
5602
+ readonly framework: "global";
5603
+ readonly category: "Architecture";
5604
+ readonly id: string;
5605
+ readonly severity: RuleSeverity;
5606
+ readonly requires?: ReadonlyArray<string>;
5607
+ readonly disabledBy?: ReadonlyArray<string>;
5608
+ readonly tags?: ReadonlyArray<string>;
5609
+ readonly defaultEnabled?: boolean;
5610
+ readonly recommendation?: string;
5611
+ readonly create: (context: RuleContext) => RuleVisitors;
5612
+ };
5028
5613
  }];
5029
5614
  declare const EXTERNAL_RULES: readonly [{
5030
5615
  readonly key: "react-hooks-js/set-state-in-render";
@@ -5092,6 +5677,23 @@ declare const EXTERNAL_RULES: readonly [{
5092
5677
  readonly severity: "error";
5093
5678
  }];
5094
5679
  declare const RULES: readonly [{
5680
+ readonly key: "react-doctor/activity-wraps-effect-heavy-subtree";
5681
+ readonly id: "activity-wraps-effect-heavy-subtree";
5682
+ readonly source: "react-doctor";
5683
+ readonly originallyExternal: false;
5684
+ readonly rule: {
5685
+ readonly framework: "global";
5686
+ readonly category: "State & Effects";
5687
+ readonly id: string;
5688
+ readonly severity: RuleSeverity;
5689
+ readonly requires?: ReadonlyArray<string>;
5690
+ readonly disabledBy?: ReadonlyArray<string>;
5691
+ readonly tags?: ReadonlyArray<string>;
5692
+ readonly defaultEnabled?: boolean;
5693
+ readonly recommendation?: string;
5694
+ readonly create: (context: RuleContext) => RuleVisitors;
5695
+ };
5696
+ }, {
5095
5697
  readonly key: "react-doctor/advanced-event-handler-refs";
5096
5698
  readonly id: "advanced-event-handler-refs";
5097
5699
  readonly source: "react-doctor";
@@ -5686,6 +6288,23 @@ declare const RULES: readonly [{
5686
6288
  readonly recommendation?: string;
5687
6289
  readonly create: (context: RuleContext) => RuleVisitors;
5688
6290
  };
6291
+ }, {
6292
+ readonly key: "react-doctor/hooks-no-nan-in-deps";
6293
+ readonly id: "hooks-no-nan-in-deps";
6294
+ readonly source: "react-doctor";
6295
+ readonly originallyExternal: false;
6296
+ readonly rule: {
6297
+ readonly framework: "global";
6298
+ readonly category: "State & Effects";
6299
+ readonly id: string;
6300
+ readonly severity: RuleSeverity;
6301
+ readonly requires?: ReadonlyArray<string>;
6302
+ readonly disabledBy?: ReadonlyArray<string>;
6303
+ readonly tags?: ReadonlyArray<string>;
6304
+ readonly defaultEnabled?: boolean;
6305
+ readonly recommendation?: string;
6306
+ readonly create: (context: RuleContext) => RuleVisitors;
6307
+ };
5689
6308
  }, {
5690
6309
  readonly key: "react-doctor/html-has-lang";
5691
6310
  readonly id: "html-has-lang";
@@ -5703,6 +6322,57 @@ declare const RULES: readonly [{
5703
6322
  readonly recommendation?: string;
5704
6323
  readonly create: (context: RuleContext) => RuleVisitors;
5705
6324
  };
6325
+ }, {
6326
+ readonly key: "react-doctor/html-no-invalid-paragraph-child";
6327
+ readonly id: "html-no-invalid-paragraph-child";
6328
+ readonly source: "react-doctor";
6329
+ readonly originallyExternal: false;
6330
+ readonly rule: {
6331
+ readonly framework: "global";
6332
+ readonly category: "Correctness";
6333
+ readonly id: string;
6334
+ readonly severity: RuleSeverity;
6335
+ readonly requires?: ReadonlyArray<string>;
6336
+ readonly disabledBy?: ReadonlyArray<string>;
6337
+ readonly tags?: ReadonlyArray<string>;
6338
+ readonly defaultEnabled?: boolean;
6339
+ readonly recommendation?: string;
6340
+ readonly create: (context: RuleContext) => RuleVisitors;
6341
+ };
6342
+ }, {
6343
+ readonly key: "react-doctor/html-no-invalid-table-nesting";
6344
+ readonly id: "html-no-invalid-table-nesting";
6345
+ readonly source: "react-doctor";
6346
+ readonly originallyExternal: false;
6347
+ readonly rule: {
6348
+ readonly framework: "global";
6349
+ readonly category: "Correctness";
6350
+ readonly id: string;
6351
+ readonly severity: RuleSeverity;
6352
+ readonly requires?: ReadonlyArray<string>;
6353
+ readonly disabledBy?: ReadonlyArray<string>;
6354
+ readonly tags?: ReadonlyArray<string>;
6355
+ readonly defaultEnabled?: boolean;
6356
+ readonly recommendation?: string;
6357
+ readonly create: (context: RuleContext) => RuleVisitors;
6358
+ };
6359
+ }, {
6360
+ readonly key: "react-doctor/html-no-nested-interactive";
6361
+ readonly id: "html-no-nested-interactive";
6362
+ readonly source: "react-doctor";
6363
+ readonly originallyExternal: false;
6364
+ readonly rule: {
6365
+ readonly framework: "global";
6366
+ readonly category: "Correctness";
6367
+ readonly id: string;
6368
+ readonly severity: RuleSeverity;
6369
+ readonly requires?: ReadonlyArray<string>;
6370
+ readonly disabledBy?: ReadonlyArray<string>;
6371
+ readonly tags?: ReadonlyArray<string>;
6372
+ readonly defaultEnabled?: boolean;
6373
+ readonly recommendation?: string;
6374
+ readonly create: (context: RuleContext) => RuleVisitors;
6375
+ };
5706
6376
  }, {
5707
6377
  readonly key: "react-doctor/iframe-has-title";
5708
6378
  readonly id: "iframe-has-title";
@@ -5727,7 +6397,75 @@ declare const RULES: readonly [{
5727
6397
  readonly originallyExternal: true;
5728
6398
  readonly rule: {
5729
6399
  readonly framework: "global";
5730
- readonly category: "Security";
6400
+ readonly category: "Security";
6401
+ readonly id: string;
6402
+ readonly severity: RuleSeverity;
6403
+ readonly requires?: ReadonlyArray<string>;
6404
+ readonly disabledBy?: ReadonlyArray<string>;
6405
+ readonly tags?: ReadonlyArray<string>;
6406
+ readonly defaultEnabled?: boolean;
6407
+ readonly recommendation?: string;
6408
+ readonly create: (context: RuleContext) => RuleVisitors;
6409
+ };
6410
+ }, {
6411
+ readonly key: "react-doctor/img-redundant-alt";
6412
+ readonly id: "img-redundant-alt";
6413
+ readonly source: "react-doctor";
6414
+ readonly originallyExternal: true;
6415
+ readonly rule: {
6416
+ readonly framework: "global";
6417
+ readonly category: "Accessibility";
6418
+ readonly id: string;
6419
+ readonly severity: RuleSeverity;
6420
+ readonly requires?: ReadonlyArray<string>;
6421
+ readonly disabledBy?: ReadonlyArray<string>;
6422
+ readonly tags?: ReadonlyArray<string>;
6423
+ readonly defaultEnabled?: boolean;
6424
+ readonly recommendation?: string;
6425
+ readonly create: (context: RuleContext) => RuleVisitors;
6426
+ };
6427
+ }, {
6428
+ readonly key: "react-doctor/interactive-supports-focus";
6429
+ readonly id: "interactive-supports-focus";
6430
+ readonly source: "react-doctor";
6431
+ readonly originallyExternal: true;
6432
+ readonly rule: {
6433
+ readonly framework: "global";
6434
+ readonly category: "Accessibility";
6435
+ readonly id: string;
6436
+ readonly severity: RuleSeverity;
6437
+ readonly requires?: ReadonlyArray<string>;
6438
+ readonly disabledBy?: ReadonlyArray<string>;
6439
+ readonly tags?: ReadonlyArray<string>;
6440
+ readonly defaultEnabled?: boolean;
6441
+ readonly recommendation?: string;
6442
+ readonly create: (context: RuleContext) => RuleVisitors;
6443
+ };
6444
+ }, {
6445
+ readonly key: "react-doctor/jotai-derived-atom-returns-fresh-object";
6446
+ readonly id: "jotai-derived-atom-returns-fresh-object";
6447
+ readonly source: "react-doctor";
6448
+ readonly originallyExternal: false;
6449
+ readonly rule: {
6450
+ readonly framework: "global";
6451
+ readonly category: "State & Effects";
6452
+ readonly id: string;
6453
+ readonly severity: RuleSeverity;
6454
+ readonly requires?: ReadonlyArray<string>;
6455
+ readonly disabledBy?: ReadonlyArray<string>;
6456
+ readonly tags?: ReadonlyArray<string>;
6457
+ readonly defaultEnabled?: boolean;
6458
+ readonly recommendation?: string;
6459
+ readonly create: (context: RuleContext) => RuleVisitors;
6460
+ };
6461
+ }, {
6462
+ readonly key: "react-doctor/jotai-select-atom-in-render-body";
6463
+ readonly id: "jotai-select-atom-in-render-body";
6464
+ readonly source: "react-doctor";
6465
+ readonly originallyExternal: false;
6466
+ readonly rule: {
6467
+ readonly framework: "global";
6468
+ readonly category: "State & Effects";
5731
6469
  readonly id: string;
5732
6470
  readonly severity: RuleSeverity;
5733
6471
  readonly requires?: ReadonlyArray<string>;
@@ -5738,13 +6476,13 @@ declare const RULES: readonly [{
5738
6476
  readonly create: (context: RuleContext) => RuleVisitors;
5739
6477
  };
5740
6478
  }, {
5741
- readonly key: "react-doctor/img-redundant-alt";
5742
- readonly id: "img-redundant-alt";
6479
+ readonly key: "react-doctor/jotai-tq-use-raw-query-atom";
6480
+ readonly id: "jotai-tq-use-raw-query-atom";
5743
6481
  readonly source: "react-doctor";
5744
- readonly originallyExternal: true;
6482
+ readonly originallyExternal: false;
5745
6483
  readonly rule: {
5746
6484
  readonly framework: "global";
5747
- readonly category: "Accessibility";
6485
+ readonly category: "State & Effects";
5748
6486
  readonly id: string;
5749
6487
  readonly severity: RuleSeverity;
5750
6488
  readonly requires?: ReadonlyArray<string>;
@@ -5755,13 +6493,13 @@ declare const RULES: readonly [{
5755
6493
  readonly create: (context: RuleContext) => RuleVisitors;
5756
6494
  };
5757
6495
  }, {
5758
- readonly key: "react-doctor/interactive-supports-focus";
5759
- readonly id: "interactive-supports-focus";
6496
+ readonly key: "react-doctor/js-async-reduce-without-awaited-acc";
6497
+ readonly id: "js-async-reduce-without-awaited-acc";
5760
6498
  readonly source: "react-doctor";
5761
- readonly originallyExternal: true;
6499
+ readonly originallyExternal: false;
5762
6500
  readonly rule: {
5763
6501
  readonly framework: "global";
5764
- readonly category: "Accessibility";
6502
+ readonly category: "Performance";
5765
6503
  readonly id: string;
5766
6504
  readonly severity: RuleSeverity;
5767
6505
  readonly requires?: ReadonlyArray<string>;
@@ -6876,6 +7614,40 @@ declare const RULES: readonly [{
6876
7614
  readonly recommendation?: string;
6877
7615
  readonly create: (context: RuleContext) => RuleVisitors;
6878
7616
  };
7617
+ }, {
7618
+ readonly key: "react-doctor/no-create-context-in-render";
7619
+ readonly id: "no-create-context-in-render";
7620
+ readonly source: "react-doctor";
7621
+ readonly originallyExternal: false;
7622
+ readonly rule: {
7623
+ readonly framework: "global";
7624
+ readonly category: "Correctness";
7625
+ readonly id: string;
7626
+ readonly severity: RuleSeverity;
7627
+ readonly requires?: ReadonlyArray<string>;
7628
+ readonly disabledBy?: ReadonlyArray<string>;
7629
+ readonly tags?: ReadonlyArray<string>;
7630
+ readonly defaultEnabled?: boolean;
7631
+ readonly recommendation?: string;
7632
+ readonly create: (context: RuleContext) => RuleVisitors;
7633
+ };
7634
+ }, {
7635
+ readonly key: "react-doctor/no-create-store-in-render";
7636
+ readonly id: "no-create-store-in-render";
7637
+ readonly source: "react-doctor";
7638
+ readonly originallyExternal: false;
7639
+ readonly rule: {
7640
+ readonly framework: "global";
7641
+ readonly category: "Correctness";
7642
+ readonly id: string;
7643
+ readonly severity: RuleSeverity;
7644
+ readonly requires?: ReadonlyArray<string>;
7645
+ readonly disabledBy?: ReadonlyArray<string>;
7646
+ readonly tags?: ReadonlyArray<string>;
7647
+ readonly defaultEnabled?: boolean;
7648
+ readonly recommendation?: string;
7649
+ readonly create: (context: RuleContext) => RuleVisitors;
7650
+ };
6879
7651
  }, {
6880
7652
  readonly key: "react-doctor/no-danger";
6881
7653
  readonly id: "no-danger";
@@ -7182,6 +7954,23 @@ declare const RULES: readonly [{
7182
7954
  readonly recommendation?: string;
7183
7955
  readonly create: (context: RuleContext) => RuleVisitors;
7184
7956
  };
7957
+ }, {
7958
+ readonly key: "react-doctor/no-effect-with-fresh-deps";
7959
+ readonly id: "no-effect-with-fresh-deps";
7960
+ readonly source: "react-doctor";
7961
+ readonly originallyExternal: false;
7962
+ readonly rule: {
7963
+ readonly framework: "global";
7964
+ readonly category: "State & Effects";
7965
+ readonly id: string;
7966
+ readonly severity: RuleSeverity;
7967
+ readonly requires?: ReadonlyArray<string>;
7968
+ readonly disabledBy?: ReadonlyArray<string>;
7969
+ readonly tags?: ReadonlyArray<string>;
7970
+ readonly defaultEnabled?: boolean;
7971
+ readonly recommendation?: string;
7972
+ readonly create: (context: RuleContext) => RuleVisitors;
7973
+ };
7185
7974
  }, {
7186
7975
  readonly key: "react-doctor/no-eval";
7187
7976
  readonly id: "no-eval";
@@ -7913,6 +8702,23 @@ declare const RULES: readonly [{
7913
8702
  readonly recommendation?: string;
7914
8703
  readonly create: (context: RuleContext) => RuleVisitors;
7915
8704
  };
8705
+ }, {
8706
+ readonly key: "react-doctor/no-prop-types";
8707
+ readonly id: "no-prop-types";
8708
+ readonly source: "react-doctor";
8709
+ readonly originallyExternal: false;
8710
+ readonly rule: {
8711
+ readonly framework: "global";
8712
+ readonly category: "Architecture";
8713
+ readonly id: string;
8714
+ readonly severity: RuleSeverity;
8715
+ readonly requires?: ReadonlyArray<string>;
8716
+ readonly disabledBy?: ReadonlyArray<string>;
8717
+ readonly tags?: ReadonlyArray<string>;
8718
+ readonly defaultEnabled?: boolean;
8719
+ readonly recommendation?: string;
8720
+ readonly create: (context: RuleContext) => RuleVisitors;
8721
+ };
7916
8722
  }, {
7917
8723
  readonly key: "react-doctor/no-pure-black-background";
7918
8724
  readonly id: "no-pure-black-background";
@@ -7930,6 +8736,23 @@ declare const RULES: readonly [{
7930
8736
  readonly recommendation?: string;
7931
8737
  readonly create: (context: RuleContext) => RuleVisitors;
7932
8738
  };
8739
+ }, {
8740
+ readonly key: "react-doctor/no-random-key";
8741
+ readonly id: "no-random-key";
8742
+ readonly source: "react-doctor";
8743
+ readonly originallyExternal: false;
8744
+ readonly rule: {
8745
+ readonly framework: "global";
8746
+ readonly category: "Correctness";
8747
+ readonly id: string;
8748
+ readonly severity: RuleSeverity;
8749
+ readonly requires?: ReadonlyArray<string>;
8750
+ readonly disabledBy?: ReadonlyArray<string>;
8751
+ readonly tags?: ReadonlyArray<string>;
8752
+ readonly defaultEnabled?: boolean;
8753
+ readonly recommendation?: string;
8754
+ readonly create: (context: RuleContext) => RuleVisitors;
8755
+ };
7933
8756
  }, {
7934
8757
  readonly key: "react-doctor/no-react-children";
7935
8758
  readonly id: "no-react-children";
@@ -8117,6 +8940,23 @@ declare const RULES: readonly [{
8117
8940
  readonly recommendation?: string;
8118
8941
  readonly create: (context: RuleContext) => RuleVisitors;
8119
8942
  };
8943
+ }, {
8944
+ readonly key: "react-doctor/no-self-updating-effect";
8945
+ readonly id: "no-self-updating-effect";
8946
+ readonly source: "react-doctor";
8947
+ readonly originallyExternal: false;
8948
+ readonly rule: {
8949
+ readonly framework: "global";
8950
+ readonly category: "State & Effects";
8951
+ readonly id: string;
8952
+ readonly severity: RuleSeverity;
8953
+ readonly requires?: ReadonlyArray<string>;
8954
+ readonly disabledBy?: ReadonlyArray<string>;
8955
+ readonly tags?: ReadonlyArray<string>;
8956
+ readonly defaultEnabled?: boolean;
8957
+ readonly recommendation?: string;
8958
+ readonly create: (context: RuleContext) => RuleVisitors;
8959
+ };
8120
8960
  }, {
8121
8961
  readonly key: "react-doctor/no-set-state";
8122
8962
  readonly id: "no-set-state";
@@ -8226,7 +9066,160 @@ declare const RULES: readonly [{
8226
9066
  readonly originallyExternal: false;
8227
9067
  readonly rule: {
8228
9068
  readonly framework: "global";
8229
- readonly category: "Accessibility";
9069
+ readonly category: "Accessibility";
9070
+ readonly id: string;
9071
+ readonly severity: RuleSeverity;
9072
+ readonly requires?: ReadonlyArray<string>;
9073
+ readonly disabledBy?: ReadonlyArray<string>;
9074
+ readonly tags?: ReadonlyArray<string>;
9075
+ readonly defaultEnabled?: boolean;
9076
+ readonly recommendation?: string;
9077
+ readonly create: (context: RuleContext) => RuleVisitors;
9078
+ };
9079
+ }, {
9080
+ readonly key: "react-doctor/no-transition-all";
9081
+ readonly id: "no-transition-all";
9082
+ readonly source: "react-doctor";
9083
+ readonly originallyExternal: false;
9084
+ readonly rule: {
9085
+ readonly framework: "global";
9086
+ readonly category: "Performance";
9087
+ readonly id: string;
9088
+ readonly severity: RuleSeverity;
9089
+ readonly requires?: ReadonlyArray<string>;
9090
+ readonly disabledBy?: ReadonlyArray<string>;
9091
+ readonly tags?: ReadonlyArray<string>;
9092
+ readonly defaultEnabled?: boolean;
9093
+ readonly recommendation?: string;
9094
+ readonly create: (context: RuleContext) => RuleVisitors;
9095
+ };
9096
+ }, {
9097
+ readonly key: "react-doctor/no-uncontrolled-input";
9098
+ readonly id: "no-uncontrolled-input";
9099
+ readonly source: "react-doctor";
9100
+ readonly originallyExternal: false;
9101
+ readonly rule: {
9102
+ readonly framework: "global";
9103
+ readonly category: "Correctness";
9104
+ readonly id: string;
9105
+ readonly severity: RuleSeverity;
9106
+ readonly requires?: ReadonlyArray<string>;
9107
+ readonly disabledBy?: ReadonlyArray<string>;
9108
+ readonly tags?: ReadonlyArray<string>;
9109
+ readonly defaultEnabled?: boolean;
9110
+ readonly recommendation?: string;
9111
+ readonly create: (context: RuleContext) => RuleVisitors;
9112
+ };
9113
+ }, {
9114
+ readonly key: "react-doctor/no-undeferred-third-party";
9115
+ readonly id: "no-undeferred-third-party";
9116
+ readonly source: "react-doctor";
9117
+ readonly originallyExternal: false;
9118
+ readonly rule: {
9119
+ readonly framework: "global";
9120
+ readonly category: "Bundle Size";
9121
+ readonly id: string;
9122
+ readonly severity: RuleSeverity;
9123
+ readonly requires?: ReadonlyArray<string>;
9124
+ readonly disabledBy?: ReadonlyArray<string>;
9125
+ readonly tags?: ReadonlyArray<string>;
9126
+ readonly defaultEnabled?: boolean;
9127
+ readonly recommendation?: string;
9128
+ readonly create: (context: RuleContext) => RuleVisitors;
9129
+ };
9130
+ }, {
9131
+ readonly key: "react-doctor/no-unescaped-entities";
9132
+ readonly id: "no-unescaped-entities";
9133
+ readonly source: "react-doctor";
9134
+ readonly originallyExternal: true;
9135
+ readonly rule: {
9136
+ readonly framework: "global";
9137
+ readonly category: "Correctness";
9138
+ readonly id: string;
9139
+ readonly severity: RuleSeverity;
9140
+ readonly requires?: ReadonlyArray<string>;
9141
+ readonly disabledBy?: ReadonlyArray<string>;
9142
+ readonly tags?: ReadonlyArray<string>;
9143
+ readonly defaultEnabled?: boolean;
9144
+ readonly recommendation?: string;
9145
+ readonly create: (context: RuleContext) => RuleVisitors;
9146
+ };
9147
+ }, {
9148
+ readonly key: "react-doctor/no-unknown-property";
9149
+ readonly id: "no-unknown-property";
9150
+ readonly source: "react-doctor";
9151
+ readonly originallyExternal: true;
9152
+ readonly rule: {
9153
+ readonly framework: "global";
9154
+ readonly category: "Correctness";
9155
+ readonly id: string;
9156
+ readonly severity: RuleSeverity;
9157
+ readonly requires?: ReadonlyArray<string>;
9158
+ readonly disabledBy?: ReadonlyArray<string>;
9159
+ readonly tags?: ReadonlyArray<string>;
9160
+ readonly defaultEnabled?: boolean;
9161
+ readonly recommendation?: string;
9162
+ readonly create: (context: RuleContext) => RuleVisitors;
9163
+ };
9164
+ }, {
9165
+ readonly key: "react-doctor/no-unsafe";
9166
+ readonly id: "no-unsafe";
9167
+ readonly source: "react-doctor";
9168
+ readonly originallyExternal: true;
9169
+ readonly rule: {
9170
+ readonly framework: "global";
9171
+ readonly category: "Correctness";
9172
+ readonly id: string;
9173
+ readonly severity: RuleSeverity;
9174
+ readonly requires?: ReadonlyArray<string>;
9175
+ readonly disabledBy?: ReadonlyArray<string>;
9176
+ readonly tags?: ReadonlyArray<string>;
9177
+ readonly defaultEnabled?: boolean;
9178
+ readonly recommendation?: string;
9179
+ readonly create: (context: RuleContext) => RuleVisitors;
9180
+ };
9181
+ }, {
9182
+ readonly key: "react-doctor/no-unstable-nested-components";
9183
+ readonly id: "no-unstable-nested-components";
9184
+ readonly source: "react-doctor";
9185
+ readonly originallyExternal: true;
9186
+ readonly rule: {
9187
+ readonly framework: "global";
9188
+ readonly category: "Performance";
9189
+ readonly id: string;
9190
+ readonly severity: RuleSeverity;
9191
+ readonly requires?: ReadonlyArray<string>;
9192
+ readonly disabledBy?: ReadonlyArray<string>;
9193
+ readonly tags?: ReadonlyArray<string>;
9194
+ readonly defaultEnabled?: boolean;
9195
+ readonly recommendation?: string;
9196
+ readonly create: (context: RuleContext) => RuleVisitors;
9197
+ };
9198
+ }, {
9199
+ readonly key: "react-doctor/no-usememo-simple-expression";
9200
+ readonly id: "no-usememo-simple-expression";
9201
+ readonly source: "react-doctor";
9202
+ readonly originallyExternal: false;
9203
+ readonly rule: {
9204
+ readonly framework: "global";
9205
+ readonly category: "Performance";
9206
+ readonly id: string;
9207
+ readonly severity: RuleSeverity;
9208
+ readonly requires?: ReadonlyArray<string>;
9209
+ readonly disabledBy?: ReadonlyArray<string>;
9210
+ readonly tags?: ReadonlyArray<string>;
9211
+ readonly defaultEnabled?: boolean;
9212
+ readonly recommendation?: string;
9213
+ readonly create: (context: RuleContext) => RuleVisitors;
9214
+ };
9215
+ }, {
9216
+ readonly key: "react-doctor/no-wide-letter-spacing";
9217
+ readonly id: "no-wide-letter-spacing";
9218
+ readonly source: "react-doctor";
9219
+ readonly originallyExternal: false;
9220
+ readonly rule: {
9221
+ readonly framework: "global";
9222
+ readonly category: "Architecture";
8230
9223
  readonly id: string;
8231
9224
  readonly severity: RuleSeverity;
8232
9225
  readonly requires?: ReadonlyArray<string>;
@@ -8237,13 +9230,13 @@ declare const RULES: readonly [{
8237
9230
  readonly create: (context: RuleContext) => RuleVisitors;
8238
9231
  };
8239
9232
  }, {
8240
- readonly key: "react-doctor/no-transition-all";
8241
- readonly id: "no-transition-all";
9233
+ readonly key: "react-doctor/no-will-update-set-state";
9234
+ readonly id: "no-will-update-set-state";
8242
9235
  readonly source: "react-doctor";
8243
- readonly originallyExternal: false;
9236
+ readonly originallyExternal: true;
8244
9237
  readonly rule: {
8245
9238
  readonly framework: "global";
8246
- readonly category: "Performance";
9239
+ readonly category: "Correctness";
8247
9240
  readonly id: string;
8248
9241
  readonly severity: RuleSeverity;
8249
9242
  readonly requires?: ReadonlyArray<string>;
@@ -8254,13 +9247,13 @@ declare const RULES: readonly [{
8254
9247
  readonly create: (context: RuleContext) => RuleVisitors;
8255
9248
  };
8256
9249
  }, {
8257
- readonly key: "react-doctor/no-uncontrolled-input";
8258
- readonly id: "no-uncontrolled-input";
9250
+ readonly key: "react-doctor/no-z-index-9999";
9251
+ readonly id: "no-z-index-9999";
8259
9252
  readonly source: "react-doctor";
8260
9253
  readonly originallyExternal: false;
8261
9254
  readonly rule: {
8262
9255
  readonly framework: "global";
8263
- readonly category: "Correctness";
9256
+ readonly category: "Architecture";
8264
9257
  readonly id: string;
8265
9258
  readonly severity: RuleSeverity;
8266
9259
  readonly requires?: ReadonlyArray<string>;
@@ -8271,13 +9264,13 @@ declare const RULES: readonly [{
8271
9264
  readonly create: (context: RuleContext) => RuleVisitors;
8272
9265
  };
8273
9266
  }, {
8274
- readonly key: "react-doctor/no-undeferred-third-party";
8275
- readonly id: "no-undeferred-third-party";
9267
+ readonly key: "react-doctor/only-export-components";
9268
+ readonly id: "only-export-components";
8276
9269
  readonly source: "react-doctor";
8277
- readonly originallyExternal: false;
9270
+ readonly originallyExternal: true;
8278
9271
  readonly rule: {
8279
9272
  readonly framework: "global";
8280
- readonly category: "Bundle Size";
9273
+ readonly category: "Architecture";
8281
9274
  readonly id: string;
8282
9275
  readonly severity: RuleSeverity;
8283
9276
  readonly requires?: ReadonlyArray<string>;
@@ -8288,13 +9281,13 @@ declare const RULES: readonly [{
8288
9281
  readonly create: (context: RuleContext) => RuleVisitors;
8289
9282
  };
8290
9283
  }, {
8291
- readonly key: "react-doctor/no-unescaped-entities";
8292
- readonly id: "no-unescaped-entities";
9284
+ readonly key: "react-doctor/preact-no-children-length";
9285
+ readonly id: "preact-no-children-length";
8293
9286
  readonly source: "react-doctor";
8294
- readonly originallyExternal: true;
9287
+ readonly originallyExternal: false;
8295
9288
  readonly rule: {
8296
- readonly framework: "global";
8297
- readonly category: "Correctness";
9289
+ readonly framework: "preact";
9290
+ readonly category: "Preact";
8298
9291
  readonly id: string;
8299
9292
  readonly severity: RuleSeverity;
8300
9293
  readonly requires?: ReadonlyArray<string>;
@@ -8305,13 +9298,13 @@ declare const RULES: readonly [{
8305
9298
  readonly create: (context: RuleContext) => RuleVisitors;
8306
9299
  };
8307
9300
  }, {
8308
- readonly key: "react-doctor/no-unknown-property";
8309
- readonly id: "no-unknown-property";
9301
+ readonly key: "react-doctor/preact-no-react-hooks-import";
9302
+ readonly id: "preact-no-react-hooks-import";
8310
9303
  readonly source: "react-doctor";
8311
- readonly originallyExternal: true;
9304
+ readonly originallyExternal: false;
8312
9305
  readonly rule: {
8313
- readonly framework: "global";
8314
- readonly category: "Correctness";
9306
+ readonly framework: "preact";
9307
+ readonly category: "Preact";
8315
9308
  readonly id: string;
8316
9309
  readonly severity: RuleSeverity;
8317
9310
  readonly requires?: ReadonlyArray<string>;
@@ -8322,13 +9315,13 @@ declare const RULES: readonly [{
8322
9315
  readonly create: (context: RuleContext) => RuleVisitors;
8323
9316
  };
8324
9317
  }, {
8325
- readonly key: "react-doctor/no-unsafe";
8326
- readonly id: "no-unsafe";
9318
+ readonly key: "react-doctor/preact-no-render-arguments";
9319
+ readonly id: "preact-no-render-arguments";
8327
9320
  readonly source: "react-doctor";
8328
- readonly originallyExternal: true;
9321
+ readonly originallyExternal: false;
8329
9322
  readonly rule: {
8330
- readonly framework: "global";
8331
- readonly category: "Correctness";
9323
+ readonly framework: "preact";
9324
+ readonly category: "Preact";
8332
9325
  readonly id: string;
8333
9326
  readonly severity: RuleSeverity;
8334
9327
  readonly requires?: ReadonlyArray<string>;
@@ -8339,13 +9332,13 @@ declare const RULES: readonly [{
8339
9332
  readonly create: (context: RuleContext) => RuleVisitors;
8340
9333
  };
8341
9334
  }, {
8342
- readonly key: "react-doctor/no-unstable-nested-components";
8343
- readonly id: "no-unstable-nested-components";
9335
+ readonly key: "react-doctor/preact-prefer-ondblclick";
9336
+ readonly id: "preact-prefer-ondblclick";
8344
9337
  readonly source: "react-doctor";
8345
- readonly originallyExternal: true;
9338
+ readonly originallyExternal: false;
8346
9339
  readonly rule: {
8347
- readonly framework: "global";
8348
- readonly category: "Performance";
9340
+ readonly framework: "preact";
9341
+ readonly category: "Preact";
8349
9342
  readonly id: string;
8350
9343
  readonly severity: RuleSeverity;
8351
9344
  readonly requires?: ReadonlyArray<string>;
@@ -8356,13 +9349,13 @@ declare const RULES: readonly [{
8356
9349
  readonly create: (context: RuleContext) => RuleVisitors;
8357
9350
  };
8358
9351
  }, {
8359
- readonly key: "react-doctor/no-usememo-simple-expression";
8360
- readonly id: "no-usememo-simple-expression";
9352
+ readonly key: "react-doctor/preact-prefer-oninput";
9353
+ readonly id: "preact-prefer-oninput";
8361
9354
  readonly source: "react-doctor";
8362
9355
  readonly originallyExternal: false;
8363
9356
  readonly rule: {
8364
- readonly framework: "global";
8365
- readonly category: "Performance";
9357
+ readonly framework: "preact";
9358
+ readonly category: "Preact";
8366
9359
  readonly id: string;
8367
9360
  readonly severity: RuleSeverity;
8368
9361
  readonly requires?: ReadonlyArray<string>;
@@ -8373,13 +9366,13 @@ declare const RULES: readonly [{
8373
9366
  readonly create: (context: RuleContext) => RuleVisitors;
8374
9367
  };
8375
9368
  }, {
8376
- readonly key: "react-doctor/no-wide-letter-spacing";
8377
- readonly id: "no-wide-letter-spacing";
9369
+ readonly key: "react-doctor/prefer-dynamic-import";
9370
+ readonly id: "prefer-dynamic-import";
8378
9371
  readonly source: "react-doctor";
8379
9372
  readonly originallyExternal: false;
8380
9373
  readonly rule: {
8381
9374
  readonly framework: "global";
8382
- readonly category: "Architecture";
9375
+ readonly category: "Bundle Size";
8383
9376
  readonly id: string;
8384
9377
  readonly severity: RuleSeverity;
8385
9378
  readonly requires?: ReadonlyArray<string>;
@@ -8390,13 +9383,13 @@ declare const RULES: readonly [{
8390
9383
  readonly create: (context: RuleContext) => RuleVisitors;
8391
9384
  };
8392
9385
  }, {
8393
- readonly key: "react-doctor/no-will-update-set-state";
8394
- readonly id: "no-will-update-set-state";
9386
+ readonly key: "react-doctor/prefer-es6-class";
9387
+ readonly id: "prefer-es6-class";
8395
9388
  readonly source: "react-doctor";
8396
9389
  readonly originallyExternal: true;
8397
9390
  readonly rule: {
8398
9391
  readonly framework: "global";
8399
- readonly category: "Correctness";
9392
+ readonly category: "Architecture";
8400
9393
  readonly id: string;
8401
9394
  readonly severity: RuleSeverity;
8402
9395
  readonly requires?: ReadonlyArray<string>;
@@ -8407,10 +9400,10 @@ declare const RULES: readonly [{
8407
9400
  readonly create: (context: RuleContext) => RuleVisitors;
8408
9401
  };
8409
9402
  }, {
8410
- readonly key: "react-doctor/no-z-index-9999";
8411
- readonly id: "no-z-index-9999";
9403
+ readonly key: "react-doctor/prefer-function-component";
9404
+ readonly id: "prefer-function-component";
8412
9405
  readonly source: "react-doctor";
8413
- readonly originallyExternal: false;
9406
+ readonly originallyExternal: true;
8414
9407
  readonly rule: {
8415
9408
  readonly framework: "global";
8416
9409
  readonly category: "Architecture";
@@ -8424,13 +9417,13 @@ declare const RULES: readonly [{
8424
9417
  readonly create: (context: RuleContext) => RuleVisitors;
8425
9418
  };
8426
9419
  }, {
8427
- readonly key: "react-doctor/only-export-components";
8428
- readonly id: "only-export-components";
9420
+ readonly key: "react-doctor/prefer-html-dialog";
9421
+ readonly id: "prefer-html-dialog";
8429
9422
  readonly source: "react-doctor";
8430
- readonly originallyExternal: true;
9423
+ readonly originallyExternal: false;
8431
9424
  readonly rule: {
8432
9425
  readonly framework: "global";
8433
- readonly category: "Architecture";
9426
+ readonly category: "Accessibility";
8434
9427
  readonly id: string;
8435
9428
  readonly severity: RuleSeverity;
8436
9429
  readonly requires?: ReadonlyArray<string>;
@@ -8441,13 +9434,13 @@ declare const RULES: readonly [{
8441
9434
  readonly create: (context: RuleContext) => RuleVisitors;
8442
9435
  };
8443
9436
  }, {
8444
- readonly key: "react-doctor/prefer-dynamic-import";
8445
- readonly id: "prefer-dynamic-import";
9437
+ readonly key: "react-doctor/prefer-module-scope-pure-function";
9438
+ readonly id: "prefer-module-scope-pure-function";
8446
9439
  readonly source: "react-doctor";
8447
9440
  readonly originallyExternal: false;
8448
9441
  readonly rule: {
8449
9442
  readonly framework: "global";
8450
- readonly category: "Bundle Size";
9443
+ readonly category: "Architecture";
8451
9444
  readonly id: string;
8452
9445
  readonly severity: RuleSeverity;
8453
9446
  readonly requires?: ReadonlyArray<string>;
@@ -8458,10 +9451,10 @@ declare const RULES: readonly [{
8458
9451
  readonly create: (context: RuleContext) => RuleVisitors;
8459
9452
  };
8460
9453
  }, {
8461
- readonly key: "react-doctor/prefer-es6-class";
8462
- readonly id: "prefer-es6-class";
9454
+ readonly key: "react-doctor/prefer-module-scope-static-value";
9455
+ readonly id: "prefer-module-scope-static-value";
8463
9456
  readonly source: "react-doctor";
8464
- readonly originallyExternal: true;
9457
+ readonly originallyExternal: false;
8465
9458
  readonly rule: {
8466
9459
  readonly framework: "global";
8467
9460
  readonly category: "Architecture";
@@ -8475,13 +9468,13 @@ declare const RULES: readonly [{
8475
9468
  readonly create: (context: RuleContext) => RuleVisitors;
8476
9469
  };
8477
9470
  }, {
8478
- readonly key: "react-doctor/prefer-function-component";
8479
- readonly id: "prefer-function-component";
9471
+ readonly key: "react-doctor/prefer-stable-empty-fallback";
9472
+ readonly id: "prefer-stable-empty-fallback";
8480
9473
  readonly source: "react-doctor";
8481
- readonly originallyExternal: true;
9474
+ readonly originallyExternal: false;
8482
9475
  readonly rule: {
8483
9476
  readonly framework: "global";
8484
- readonly category: "Architecture";
9477
+ readonly category: "Performance";
8485
9478
  readonly id: string;
8486
9479
  readonly severity: RuleSeverity;
8487
9480
  readonly requires?: ReadonlyArray<string>;
@@ -8662,8 +9655,8 @@ declare const RULES: readonly [{
8662
9655
  readonly create: (context: RuleContext) => RuleVisitors;
8663
9656
  };
8664
9657
  }, {
8665
- readonly key: "react-doctor/react-compiler-destructure-method";
8666
- readonly id: "react-compiler-destructure-method";
9658
+ readonly key: "react-doctor/react-compiler-no-manual-memoization";
9659
+ readonly id: "react-compiler-no-manual-memoization";
8667
9660
  readonly source: "react-doctor";
8668
9661
  readonly originallyExternal: false;
8669
9662
  readonly rule: {
@@ -8679,13 +9672,30 @@ declare const RULES: readonly [{
8679
9672
  readonly create: (context: RuleContext) => RuleVisitors;
8680
9673
  };
8681
9674
  }, {
8682
- readonly key: "react-doctor/react-compiler-no-manual-memoization";
8683
- readonly id: "react-compiler-no-manual-memoization";
9675
+ readonly key: "react-doctor/react-in-jsx-scope";
9676
+ readonly id: "react-in-jsx-scope";
9677
+ readonly source: "react-doctor";
9678
+ readonly originallyExternal: true;
9679
+ readonly rule: {
9680
+ readonly framework: "global";
9681
+ readonly category: "Correctness";
9682
+ readonly id: string;
9683
+ readonly severity: RuleSeverity;
9684
+ readonly requires?: ReadonlyArray<string>;
9685
+ readonly disabledBy?: ReadonlyArray<string>;
9686
+ readonly tags?: ReadonlyArray<string>;
9687
+ readonly defaultEnabled?: boolean;
9688
+ readonly recommendation?: string;
9689
+ readonly create: (context: RuleContext) => RuleVisitors;
9690
+ };
9691
+ }, {
9692
+ readonly key: "react-doctor/redux-useselector-inline-derivation";
9693
+ readonly id: "redux-useselector-inline-derivation";
8684
9694
  readonly source: "react-doctor";
8685
9695
  readonly originallyExternal: false;
8686
9696
  readonly rule: {
8687
9697
  readonly framework: "global";
8688
- readonly category: "Architecture";
9698
+ readonly category: "Performance";
8689
9699
  readonly id: string;
8690
9700
  readonly severity: RuleSeverity;
8691
9701
  readonly requires?: ReadonlyArray<string>;
@@ -8696,13 +9706,13 @@ declare const RULES: readonly [{
8696
9706
  readonly create: (context: RuleContext) => RuleVisitors;
8697
9707
  };
8698
9708
  }, {
8699
- readonly key: "react-doctor/react-in-jsx-scope";
8700
- readonly id: "react-in-jsx-scope";
9709
+ readonly key: "react-doctor/redux-useselector-returns-new-collection";
9710
+ readonly id: "redux-useselector-returns-new-collection";
8701
9711
  readonly source: "react-doctor";
8702
- readonly originallyExternal: true;
9712
+ readonly originallyExternal: false;
8703
9713
  readonly rule: {
8704
9714
  readonly framework: "global";
8705
- readonly category: "Correctness";
9715
+ readonly category: "Performance";
8706
9716
  readonly id: string;
8707
9717
  readonly severity: RuleSeverity;
8708
9718
  readonly requires?: ReadonlyArray<string>;
@@ -8933,6 +9943,23 @@ declare const RULES: readonly [{
8933
9943
  readonly recommendation?: string;
8934
9944
  readonly create: (context: RuleContext) => RuleVisitors;
8935
9945
  };
9946
+ }, {
9947
+ readonly key: "react-doctor/rerender-lazy-ref-init";
9948
+ readonly id: "rerender-lazy-ref-init";
9949
+ readonly source: "react-doctor";
9950
+ readonly originallyExternal: false;
9951
+ readonly rule: {
9952
+ readonly framework: "global";
9953
+ readonly category: "Performance";
9954
+ readonly id: string;
9955
+ readonly severity: RuleSeverity;
9956
+ readonly requires?: ReadonlyArray<string>;
9957
+ readonly disabledBy?: ReadonlyArray<string>;
9958
+ readonly tags?: ReadonlyArray<string>;
9959
+ readonly defaultEnabled?: boolean;
9960
+ readonly recommendation?: string;
9961
+ readonly create: (context: RuleContext) => RuleVisitors;
9962
+ };
8936
9963
  }, {
8937
9964
  readonly key: "react-doctor/rerender-lazy-state-init";
8938
9965
  readonly id: "rerender-lazy-state-init";
@@ -9103,6 +10130,23 @@ declare const RULES: readonly [{
9103
10130
  readonly recommendation?: string;
9104
10131
  readonly create: (context: RuleContext) => RuleVisitors;
9105
10132
  };
10133
+ }, {
10134
+ readonly key: "react-doctor/rn-list-missing-estimated-item-size";
10135
+ readonly id: "rn-list-missing-estimated-item-size";
10136
+ readonly source: "react-doctor";
10137
+ readonly originallyExternal: false;
10138
+ readonly rule: {
10139
+ readonly framework: "react-native";
10140
+ readonly category: "React Native";
10141
+ readonly tags: readonly string[];
10142
+ readonly id: string;
10143
+ readonly severity: RuleSeverity;
10144
+ readonly requires?: ReadonlyArray<string>;
10145
+ readonly disabledBy?: ReadonlyArray<string>;
10146
+ readonly defaultEnabled?: boolean;
10147
+ readonly recommendation?: string;
10148
+ readonly create: (context: RuleContext) => RuleVisitors;
10149
+ };
9106
10150
  }, {
9107
10151
  readonly key: "react-doctor/rn-list-recyclable-without-types";
9108
10152
  readonly id: "rn-list-recyclable-without-types";
@@ -9273,6 +10317,23 @@ declare const RULES: readonly [{
9273
10317
  readonly recommendation?: string;
9274
10318
  readonly create: (context: RuleContext) => RuleVisitors;
9275
10319
  };
10320
+ }, {
10321
+ readonly key: "react-doctor/rn-no-renderitem-key";
10322
+ readonly id: "rn-no-renderitem-key";
10323
+ readonly source: "react-doctor";
10324
+ readonly originallyExternal: false;
10325
+ readonly rule: {
10326
+ readonly framework: "react-native";
10327
+ readonly category: "React Native";
10328
+ readonly tags: readonly string[];
10329
+ readonly id: string;
10330
+ readonly severity: RuleSeverity;
10331
+ readonly requires?: ReadonlyArray<string>;
10332
+ readonly disabledBy?: ReadonlyArray<string>;
10333
+ readonly defaultEnabled?: boolean;
10334
+ readonly recommendation?: string;
10335
+ readonly create: (context: RuleContext) => RuleVisitors;
10336
+ };
9276
10337
  }, {
9277
10338
  readonly key: "react-doctor/rn-no-scroll-state";
9278
10339
  readonly id: "rn-no-scroll-state";
@@ -9375,6 +10436,23 @@ declare const RULES: readonly [{
9375
10436
  readonly recommendation?: string;
9376
10437
  readonly create: (context: RuleContext) => RuleVisitors;
9377
10438
  };
10439
+ }, {
10440
+ readonly key: "react-doctor/rn-prefer-pressable-over-gesture-detector";
10441
+ readonly id: "rn-prefer-pressable-over-gesture-detector";
10442
+ readonly source: "react-doctor";
10443
+ readonly originallyExternal: false;
10444
+ readonly rule: {
10445
+ readonly framework: "react-native";
10446
+ readonly category: "React Native";
10447
+ readonly tags: readonly string[];
10448
+ readonly id: string;
10449
+ readonly severity: RuleSeverity;
10450
+ readonly requires?: ReadonlyArray<string>;
10451
+ readonly disabledBy?: ReadonlyArray<string>;
10452
+ readonly defaultEnabled?: boolean;
10453
+ readonly recommendation?: string;
10454
+ readonly create: (context: RuleContext) => RuleVisitors;
10455
+ };
9378
10456
  }, {
9379
10457
  readonly key: "react-doctor/rn-prefer-reanimated";
9380
10458
  readonly id: "rn-prefer-reanimated";
@@ -9426,6 +10504,23 @@ declare const RULES: readonly [{
9426
10504
  readonly recommendation?: string;
9427
10505
  readonly create: (context: RuleContext) => RuleVisitors;
9428
10506
  };
10507
+ }, {
10508
+ readonly key: "react-doctor/rn-scrollview-flex-in-content-container";
10509
+ readonly id: "rn-scrollview-flex-in-content-container";
10510
+ readonly source: "react-doctor";
10511
+ readonly originallyExternal: false;
10512
+ readonly rule: {
10513
+ readonly framework: "react-native";
10514
+ readonly category: "React Native";
10515
+ readonly tags: readonly string[];
10516
+ readonly id: string;
10517
+ readonly severity: RuleSeverity;
10518
+ readonly requires?: ReadonlyArray<string>;
10519
+ readonly disabledBy?: ReadonlyArray<string>;
10520
+ readonly defaultEnabled?: boolean;
10521
+ readonly recommendation?: string;
10522
+ readonly create: (context: RuleContext) => RuleVisitors;
10523
+ };
9429
10524
  }, {
9430
10525
  readonly key: "react-doctor/rn-style-prefer-boxshadow";
9431
10526
  readonly id: "rn-style-prefer-boxshadow";
@@ -9987,6 +11082,74 @@ declare const RULES: readonly [{
9987
11082
  readonly recommendation?: string;
9988
11083
  readonly create: (context: RuleContext) => RuleVisitors;
9989
11084
  };
11085
+ }, {
11086
+ readonly key: "react-doctor/zod-v4-no-deprecated-error-apis";
11087
+ readonly id: "zod-v4-no-deprecated-error-apis";
11088
+ readonly source: "react-doctor";
11089
+ readonly originallyExternal: false;
11090
+ readonly rule: {
11091
+ readonly framework: "global";
11092
+ readonly category: "Architecture";
11093
+ readonly id: string;
11094
+ readonly severity: RuleSeverity;
11095
+ readonly requires?: ReadonlyArray<string>;
11096
+ readonly disabledBy?: ReadonlyArray<string>;
11097
+ readonly tags?: ReadonlyArray<string>;
11098
+ readonly defaultEnabled?: boolean;
11099
+ readonly recommendation?: string;
11100
+ readonly create: (context: RuleContext) => RuleVisitors;
11101
+ };
11102
+ }, {
11103
+ readonly key: "react-doctor/zod-v4-no-deprecated-error-customization";
11104
+ readonly id: "zod-v4-no-deprecated-error-customization";
11105
+ readonly source: "react-doctor";
11106
+ readonly originallyExternal: false;
11107
+ readonly rule: {
11108
+ readonly framework: "global";
11109
+ readonly category: "Architecture";
11110
+ readonly id: string;
11111
+ readonly severity: RuleSeverity;
11112
+ readonly requires?: ReadonlyArray<string>;
11113
+ readonly disabledBy?: ReadonlyArray<string>;
11114
+ readonly tags?: ReadonlyArray<string>;
11115
+ readonly defaultEnabled?: boolean;
11116
+ readonly recommendation?: string;
11117
+ readonly create: (context: RuleContext) => RuleVisitors;
11118
+ };
11119
+ }, {
11120
+ readonly key: "react-doctor/zod-v4-no-deprecated-schema-apis";
11121
+ readonly id: "zod-v4-no-deprecated-schema-apis";
11122
+ readonly source: "react-doctor";
11123
+ readonly originallyExternal: false;
11124
+ readonly rule: {
11125
+ readonly framework: "global";
11126
+ readonly category: "Architecture";
11127
+ readonly id: string;
11128
+ readonly severity: RuleSeverity;
11129
+ readonly requires?: ReadonlyArray<string>;
11130
+ readonly disabledBy?: ReadonlyArray<string>;
11131
+ readonly tags?: ReadonlyArray<string>;
11132
+ readonly defaultEnabled?: boolean;
11133
+ readonly recommendation?: string;
11134
+ readonly create: (context: RuleContext) => RuleVisitors;
11135
+ };
11136
+ }, {
11137
+ readonly key: "react-doctor/zod-v4-prefer-top-level-string-formats";
11138
+ readonly id: "zod-v4-prefer-top-level-string-formats";
11139
+ readonly source: "react-doctor";
11140
+ readonly originallyExternal: false;
11141
+ readonly rule: {
11142
+ readonly framework: "global";
11143
+ readonly category: "Architecture";
11144
+ readonly id: string;
11145
+ readonly severity: RuleSeverity;
11146
+ readonly requires?: ReadonlyArray<string>;
11147
+ readonly disabledBy?: ReadonlyArray<string>;
11148
+ readonly tags?: ReadonlyArray<string>;
11149
+ readonly defaultEnabled?: boolean;
11150
+ readonly recommendation?: string;
11151
+ readonly create: (context: RuleContext) => RuleVisitors;
11152
+ };
9990
11153
  }, {
9991
11154
  readonly key: "react-hooks-js/set-state-in-render";
9992
11155
  readonly source: "react-compiler";
@@ -10057,6 +11220,7 @@ declare const NEXTJS_RULES: Record<string, OxlintRuleSeverity>;
10057
11220
  declare const REACT_NATIVE_RULES: Record<string, OxlintRuleSeverity>;
10058
11221
  declare const TANSTACK_START_RULES: Record<string, OxlintRuleSeverity>;
10059
11222
  declare const TANSTACK_QUERY_RULES: Record<string, OxlintRuleSeverity>;
11223
+ declare const PREACT_RULES: Record<string, OxlintRuleSeverity>;
10060
11224
  declare const ALL_REACT_DOCTOR_RULES: Record<string, OxlintRuleSeverity>;
10061
11225
  declare const ALL_REACT_DOCTOR_RULE_KEYS: ReadonlySet<string>;
10062
11226
  declare const FRAMEWORK_SPECIFIC_RULE_KEYS: ReadonlySet<string>;
@@ -10070,5 +11234,5 @@ declare const REACT_NATIVE_DEPENDENCY_NAMES: ReadonlySet<string>;
10070
11234
  declare const REACT_NATIVE_DEPENDENCY_PREFIXES: ReadonlyArray<string>;
10071
11235
  declare const isReactNativeDependencyName: (dependencyName: string) => boolean;
10072
11236
  //#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 };
11237
+ 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
11238
  //# sourceMappingURL=index.d.ts.map