oxlint-plugin-react-doctor 0.2.10 → 0.2.11-dev.2e369e2

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 +537 -20
  2. package/dist/index.js +2714 -595
  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
  }
@@ -2067,6 +2074,40 @@ declare const REACT_DOCTOR_RULES: readonly [{
2067
2074
  readonly recommendation?: string;
2068
2075
  readonly create: (context: RuleContext) => RuleVisitors;
2069
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
+ };
2070
2111
  }, {
2071
2112
  readonly key: "react-doctor/no-danger";
2072
2113
  readonly id: "no-danger";
@@ -2373,6 +2414,23 @@ declare const REACT_DOCTOR_RULES: readonly [{
2373
2414
  readonly recommendation?: string;
2374
2415
  readonly create: (context: RuleContext) => RuleVisitors;
2375
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
+ };
2376
2434
  }, {
2377
2435
  readonly key: "react-doctor/no-eval";
2378
2436
  readonly id: "no-eval";
@@ -3104,6 +3162,23 @@ declare const REACT_DOCTOR_RULES: readonly [{
3104
3162
  readonly recommendation?: string;
3105
3163
  readonly create: (context: RuleContext) => RuleVisitors;
3106
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
+ };
3107
3182
  }, {
3108
3183
  readonly key: "react-doctor/no-pure-black-background";
3109
3184
  readonly id: "no-pure-black-background";
@@ -3121,6 +3196,23 @@ declare const REACT_DOCTOR_RULES: readonly [{
3121
3196
  readonly recommendation?: string;
3122
3197
  readonly create: (context: RuleContext) => RuleVisitors;
3123
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
+ };
3124
3216
  }, {
3125
3217
  readonly key: "react-doctor/no-react-children";
3126
3218
  readonly id: "no-react-children";
@@ -3308,6 +3400,23 @@ declare const REACT_DOCTOR_RULES: readonly [{
3308
3400
  readonly recommendation?: string;
3309
3401
  readonly create: (context: RuleContext) => RuleVisitors;
3310
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
+ };
3311
3420
  }, {
3312
3421
  readonly key: "react-doctor/no-set-state";
3313
3422
  readonly id: "no-set-state";
@@ -3784,6 +3893,57 @@ declare const REACT_DOCTOR_RULES: readonly [{
3784
3893
  readonly recommendation?: string;
3785
3894
  readonly create: (context: RuleContext) => RuleVisitors;
3786
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
+ };
3787
3947
  }, {
3788
3948
  readonly key: "react-doctor/prefer-tag-over-role";
3789
3949
  readonly id: "prefer-tag-over-role";
@@ -3955,8 +4115,8 @@ declare const REACT_DOCTOR_RULES: readonly [{
3955
4115
  readonly create: (context: RuleContext) => RuleVisitors;
3956
4116
  };
3957
4117
  }, {
3958
- readonly key: "react-doctor/react-compiler-destructure-method";
3959
- readonly id: "react-compiler-destructure-method";
4118
+ readonly key: "react-doctor/react-compiler-no-manual-memoization";
4119
+ readonly id: "react-compiler-no-manual-memoization";
3960
4120
  readonly source: "react-doctor";
3961
4121
  readonly originallyExternal: false;
3962
4122
  readonly rule: {
@@ -3972,13 +4132,30 @@ declare const REACT_DOCTOR_RULES: readonly [{
3972
4132
  readonly create: (context: RuleContext) => RuleVisitors;
3973
4133
  };
3974
4134
  }, {
3975
- readonly key: "react-doctor/react-compiler-no-manual-memoization";
3976
- 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";
3977
4154
  readonly source: "react-doctor";
3978
4155
  readonly originallyExternal: false;
3979
4156
  readonly rule: {
3980
4157
  readonly framework: "global";
3981
- readonly category: "Architecture";
4158
+ readonly category: "Performance";
3982
4159
  readonly id: string;
3983
4160
  readonly severity: RuleSeverity;
3984
4161
  readonly requires?: ReadonlyArray<string>;
@@ -3989,13 +4166,13 @@ declare const REACT_DOCTOR_RULES: readonly [{
3989
4166
  readonly create: (context: RuleContext) => RuleVisitors;
3990
4167
  };
3991
4168
  }, {
3992
- readonly key: "react-doctor/react-in-jsx-scope";
3993
- readonly id: "react-in-jsx-scope";
4169
+ readonly key: "react-doctor/redux-useselector-returns-new-collection";
4170
+ readonly id: "redux-useselector-returns-new-collection";
3994
4171
  readonly source: "react-doctor";
3995
- readonly originallyExternal: true;
4172
+ readonly originallyExternal: false;
3996
4173
  readonly rule: {
3997
4174
  readonly framework: "global";
3998
- readonly category: "Correctness";
4175
+ readonly category: "Performance";
3999
4176
  readonly id: string;
4000
4177
  readonly severity: RuleSeverity;
4001
4178
  readonly requires?: ReadonlyArray<string>;
@@ -4226,6 +4403,23 @@ declare const REACT_DOCTOR_RULES: readonly [{
4226
4403
  readonly recommendation?: string;
4227
4404
  readonly create: (context: RuleContext) => RuleVisitors;
4228
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
+ };
4229
4423
  }, {
4230
4424
  readonly key: "react-doctor/rerender-lazy-state-init";
4231
4425
  readonly id: "rerender-lazy-state-init";
@@ -5348,6 +5542,74 @@ declare const REACT_DOCTOR_RULES: readonly [{
5348
5542
  readonly recommendation?: string;
5349
5543
  readonly create: (context: RuleContext) => RuleVisitors;
5350
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
+ };
5351
5613
  }];
5352
5614
  declare const EXTERNAL_RULES: readonly [{
5353
5615
  readonly key: "react-hooks-js/set-state-in-render";
@@ -7352,6 +7614,40 @@ declare const RULES: readonly [{
7352
7614
  readonly recommendation?: string;
7353
7615
  readonly create: (context: RuleContext) => RuleVisitors;
7354
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
+ };
7355
7651
  }, {
7356
7652
  readonly key: "react-doctor/no-danger";
7357
7653
  readonly id: "no-danger";
@@ -7658,6 +7954,23 @@ declare const RULES: readonly [{
7658
7954
  readonly recommendation?: string;
7659
7955
  readonly create: (context: RuleContext) => RuleVisitors;
7660
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
+ };
7661
7974
  }, {
7662
7975
  readonly key: "react-doctor/no-eval";
7663
7976
  readonly id: "no-eval";
@@ -8389,6 +8702,23 @@ declare const RULES: readonly [{
8389
8702
  readonly recommendation?: string;
8390
8703
  readonly create: (context: RuleContext) => RuleVisitors;
8391
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
+ };
8392
8722
  }, {
8393
8723
  readonly key: "react-doctor/no-pure-black-background";
8394
8724
  readonly id: "no-pure-black-background";
@@ -8406,6 +8736,23 @@ declare const RULES: readonly [{
8406
8736
  readonly recommendation?: string;
8407
8737
  readonly create: (context: RuleContext) => RuleVisitors;
8408
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
+ };
8409
8756
  }, {
8410
8757
  readonly key: "react-doctor/no-react-children";
8411
8758
  readonly id: "no-react-children";
@@ -8593,6 +8940,23 @@ declare const RULES: readonly [{
8593
8940
  readonly recommendation?: string;
8594
8941
  readonly create: (context: RuleContext) => RuleVisitors;
8595
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
+ };
8596
8960
  }, {
8597
8961
  readonly key: "react-doctor/no-set-state";
8598
8962
  readonly id: "no-set-state";
@@ -9069,6 +9433,57 @@ declare const RULES: readonly [{
9069
9433
  readonly recommendation?: string;
9070
9434
  readonly create: (context: RuleContext) => RuleVisitors;
9071
9435
  };
9436
+ }, {
9437
+ readonly key: "react-doctor/prefer-module-scope-pure-function";
9438
+ readonly id: "prefer-module-scope-pure-function";
9439
+ readonly source: "react-doctor";
9440
+ readonly originallyExternal: false;
9441
+ readonly rule: {
9442
+ readonly framework: "global";
9443
+ readonly category: "Architecture";
9444
+ readonly id: string;
9445
+ readonly severity: RuleSeverity;
9446
+ readonly requires?: ReadonlyArray<string>;
9447
+ readonly disabledBy?: ReadonlyArray<string>;
9448
+ readonly tags?: ReadonlyArray<string>;
9449
+ readonly defaultEnabled?: boolean;
9450
+ readonly recommendation?: string;
9451
+ readonly create: (context: RuleContext) => RuleVisitors;
9452
+ };
9453
+ }, {
9454
+ readonly key: "react-doctor/prefer-module-scope-static-value";
9455
+ readonly id: "prefer-module-scope-static-value";
9456
+ readonly source: "react-doctor";
9457
+ readonly originallyExternal: false;
9458
+ readonly rule: {
9459
+ readonly framework: "global";
9460
+ readonly category: "Architecture";
9461
+ readonly id: string;
9462
+ readonly severity: RuleSeverity;
9463
+ readonly requires?: ReadonlyArray<string>;
9464
+ readonly disabledBy?: ReadonlyArray<string>;
9465
+ readonly tags?: ReadonlyArray<string>;
9466
+ readonly defaultEnabled?: boolean;
9467
+ readonly recommendation?: string;
9468
+ readonly create: (context: RuleContext) => RuleVisitors;
9469
+ };
9470
+ }, {
9471
+ readonly key: "react-doctor/prefer-stable-empty-fallback";
9472
+ readonly id: "prefer-stable-empty-fallback";
9473
+ readonly source: "react-doctor";
9474
+ readonly originallyExternal: false;
9475
+ readonly rule: {
9476
+ readonly framework: "global";
9477
+ readonly category: "Performance";
9478
+ readonly id: string;
9479
+ readonly severity: RuleSeverity;
9480
+ readonly requires?: ReadonlyArray<string>;
9481
+ readonly disabledBy?: ReadonlyArray<string>;
9482
+ readonly tags?: ReadonlyArray<string>;
9483
+ readonly defaultEnabled?: boolean;
9484
+ readonly recommendation?: string;
9485
+ readonly create: (context: RuleContext) => RuleVisitors;
9486
+ };
9072
9487
  }, {
9073
9488
  readonly key: "react-doctor/prefer-tag-over-role";
9074
9489
  readonly id: "prefer-tag-over-role";
@@ -9240,8 +9655,8 @@ declare const RULES: readonly [{
9240
9655
  readonly create: (context: RuleContext) => RuleVisitors;
9241
9656
  };
9242
9657
  }, {
9243
- readonly key: "react-doctor/react-compiler-destructure-method";
9244
- readonly id: "react-compiler-destructure-method";
9658
+ readonly key: "react-doctor/react-compiler-no-manual-memoization";
9659
+ readonly id: "react-compiler-no-manual-memoization";
9245
9660
  readonly source: "react-doctor";
9246
9661
  readonly originallyExternal: false;
9247
9662
  readonly rule: {
@@ -9257,13 +9672,30 @@ declare const RULES: readonly [{
9257
9672
  readonly create: (context: RuleContext) => RuleVisitors;
9258
9673
  };
9259
9674
  }, {
9260
- readonly key: "react-doctor/react-compiler-no-manual-memoization";
9261
- 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";
9262
9694
  readonly source: "react-doctor";
9263
9695
  readonly originallyExternal: false;
9264
9696
  readonly rule: {
9265
9697
  readonly framework: "global";
9266
- readonly category: "Architecture";
9698
+ readonly category: "Performance";
9267
9699
  readonly id: string;
9268
9700
  readonly severity: RuleSeverity;
9269
9701
  readonly requires?: ReadonlyArray<string>;
@@ -9274,13 +9706,13 @@ declare const RULES: readonly [{
9274
9706
  readonly create: (context: RuleContext) => RuleVisitors;
9275
9707
  };
9276
9708
  }, {
9277
- readonly key: "react-doctor/react-in-jsx-scope";
9278
- readonly id: "react-in-jsx-scope";
9709
+ readonly key: "react-doctor/redux-useselector-returns-new-collection";
9710
+ readonly id: "redux-useselector-returns-new-collection";
9279
9711
  readonly source: "react-doctor";
9280
- readonly originallyExternal: true;
9712
+ readonly originallyExternal: false;
9281
9713
  readonly rule: {
9282
9714
  readonly framework: "global";
9283
- readonly category: "Correctness";
9715
+ readonly category: "Performance";
9284
9716
  readonly id: string;
9285
9717
  readonly severity: RuleSeverity;
9286
9718
  readonly requires?: ReadonlyArray<string>;
@@ -9511,6 +9943,23 @@ declare const RULES: readonly [{
9511
9943
  readonly recommendation?: string;
9512
9944
  readonly create: (context: RuleContext) => RuleVisitors;
9513
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
+ };
9514
9963
  }, {
9515
9964
  readonly key: "react-doctor/rerender-lazy-state-init";
9516
9965
  readonly id: "rerender-lazy-state-init";
@@ -10633,6 +11082,74 @@ declare const RULES: readonly [{
10633
11082
  readonly recommendation?: string;
10634
11083
  readonly create: (context: RuleContext) => RuleVisitors;
10635
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
+ };
10636
11153
  }, {
10637
11154
  readonly key: "react-hooks-js/set-state-in-render";
10638
11155
  readonly source: "react-compiler";