oxlint-plugin-react-doctor 0.8.1-dev.b852961 → 0.8.1-dev.cc2d168

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 +659 -61
  2. package/dist/index.js +2415 -718
  3. package/package.json +1 -1
package/dist/index.d.ts CHANGED
@@ -100,7 +100,7 @@ interface RuleContext extends Omit<BaseRuleContext, "getFilename"> {
100
100
  //#region src/plugin/utils/capability.d.ts
101
101
  declare const FRAMEWORK_TOKENS: readonly ["nextjs", "vite", "cra", "remix", "gatsby", "expo", "react-native", "tanstack-start", "preact", "unknown"];
102
102
  type FrameworkToken = (typeof FRAMEWORK_TOKENS)[number];
103
- type Capability = FrameworkToken | "react" | "pure-preact" | "react-native" | "server-actions" | "ssr" | "client-only" | "nextjs:static-export" | "nextjs:15" | "tailwind" | "tailwind:3.4" | "zod" | "zod:4" | "typescript" | "react-compiler" | "tanstack-query" | "pre-es2023" | `react:${number}` | `preact:${number}`;
103
+ type Capability = FrameworkToken | "react" | "remotion" | "pure-preact" | "react-native" | "server-actions" | "ssr" | "client-only" | "nextjs:static-export" | "nextjs:15" | "tailwind" | "tailwind:3.4" | "zod" | "zod:4" | "mobx" | "mobx-react" | "mobx-react-lite" | "mobx-react-binding" | "mobx-state-tree" | "mobx-react-observer" | "zustand" | "typescript" | "react-compiler" | "tanstack-query" | "valtio" | "pre-es2023" | `react:${number}` | `preact:${number}` | `remotion:${number}` | `valtio:${number}` | `mobx:${number}` | `zustand:${number}`;
104
104
  type CapabilityQuery = (capability: Capability) => boolean;
105
105
  //#endregion
106
106
  //#region src/plugin/utils/file-scan.d.ts
@@ -2421,29 +2421,6 @@ declare const REACT_DOCTOR_RULES: readonly [{
2421
2421
  readonly recommendationFor?: (hasCapability: CapabilityQuery) => string | undefined;
2422
2422
  readonly create: (context: RuleContext) => RuleVisitors;
2423
2423
  };
2424
- }, {
2425
- readonly key: "react-doctor/jsx-no-target-blank";
2426
- readonly id: "jsx-no-target-blank";
2427
- readonly source: "react-doctor";
2428
- readonly originallyExternal: true;
2429
- readonly rule: {
2430
- readonly framework: "global";
2431
- readonly category: "Security";
2432
- readonly requires: readonly Capability[];
2433
- readonly id: string;
2434
- readonly title?: string;
2435
- readonly severity: RuleSeverity;
2436
- readonly disabledWhen?: ReadonlyArray<Capability>;
2437
- readonly tags?: ReadonlyArray<string>;
2438
- readonly matchByOccurrence?: boolean;
2439
- readonly defaultEnabled?: boolean;
2440
- readonly lifecycle?: "retired";
2441
- readonly scan?: FileScan;
2442
- readonly committedFilesOnly?: boolean;
2443
- readonly recommendation?: string;
2444
- readonly recommendationFor?: (hasCapability: CapabilityQuery) => string | undefined;
2445
- readonly create: (context: RuleContext) => RuleVisitors;
2446
- };
2447
2424
  }, {
2448
2425
  readonly key: "react-doctor/jsx-no-undef";
2449
2426
  readonly id: "jsx-no-undef";
@@ -2743,6 +2720,75 @@ declare const REACT_DOCTOR_RULES: readonly [{
2743
2720
  readonly recommendationFor?: (hasCapability: CapabilityQuery) => string | undefined;
2744
2721
  readonly create: (context: RuleContext) => RuleVisitors;
2745
2722
  };
2723
+ }, {
2724
+ readonly key: "react-doctor/mobx-no-make-auto-observable-in-inheritance";
2725
+ readonly id: "mobx-no-make-auto-observable-in-inheritance";
2726
+ readonly source: "react-doctor";
2727
+ readonly originallyExternal: false;
2728
+ readonly rule: {
2729
+ readonly framework: "global";
2730
+ readonly category: "Bugs";
2731
+ readonly id: string;
2732
+ readonly title?: string;
2733
+ readonly severity: RuleSeverity;
2734
+ readonly requires?: ReadonlyArray<Capability>;
2735
+ readonly disabledWhen?: ReadonlyArray<Capability>;
2736
+ readonly tags?: ReadonlyArray<string>;
2737
+ readonly matchByOccurrence?: boolean;
2738
+ readonly defaultEnabled?: boolean;
2739
+ readonly lifecycle?: "retired";
2740
+ readonly scan?: FileScan;
2741
+ readonly committedFilesOnly?: boolean;
2742
+ readonly recommendation?: string;
2743
+ readonly recommendationFor?: (hasCapability: CapabilityQuery) => string | undefined;
2744
+ readonly create: (context: RuleContext) => RuleVisitors;
2745
+ };
2746
+ }, {
2747
+ readonly key: "react-doctor/mobx-no-observer-wrapped-memo";
2748
+ readonly id: "mobx-no-observer-wrapped-memo";
2749
+ readonly source: "react-doctor";
2750
+ readonly originallyExternal: false;
2751
+ readonly rule: {
2752
+ readonly framework: "global";
2753
+ readonly category: "Bugs";
2754
+ readonly id: string;
2755
+ readonly title?: string;
2756
+ readonly severity: RuleSeverity;
2757
+ readonly requires?: ReadonlyArray<Capability>;
2758
+ readonly disabledWhen?: ReadonlyArray<Capability>;
2759
+ readonly tags?: ReadonlyArray<string>;
2760
+ readonly matchByOccurrence?: boolean;
2761
+ readonly defaultEnabled?: boolean;
2762
+ readonly lifecycle?: "retired";
2763
+ readonly scan?: FileScan;
2764
+ readonly committedFilesOnly?: boolean;
2765
+ readonly recommendation?: string;
2766
+ readonly recommendationFor?: (hasCapability: CapabilityQuery) => string | undefined;
2767
+ readonly create: (context: RuleContext) => RuleVisitors;
2768
+ };
2769
+ }, {
2770
+ readonly key: "react-doctor/mobx-reaction-disposer-discarded";
2771
+ readonly id: "mobx-reaction-disposer-discarded";
2772
+ readonly source: "react-doctor";
2773
+ readonly originallyExternal: false;
2774
+ readonly rule: {
2775
+ readonly framework: "global";
2776
+ readonly category: "Bugs";
2777
+ readonly id: string;
2778
+ readonly title?: string;
2779
+ readonly severity: RuleSeverity;
2780
+ readonly requires?: ReadonlyArray<Capability>;
2781
+ readonly disabledWhen?: ReadonlyArray<Capability>;
2782
+ readonly tags?: ReadonlyArray<string>;
2783
+ readonly matchByOccurrence?: boolean;
2784
+ readonly defaultEnabled?: boolean;
2785
+ readonly lifecycle?: "retired";
2786
+ readonly scan?: FileScan;
2787
+ readonly committedFilesOnly?: boolean;
2788
+ readonly recommendation?: string;
2789
+ readonly recommendationFor?: (hasCapability: CapabilityQuery) => string | undefined;
2790
+ readonly create: (context: RuleContext) => RuleVisitors;
2791
+ };
2746
2792
  }, {
2747
2793
  readonly key: "react-doctor/mouse-events-have-key-events";
2748
2794
  readonly id: "mouse-events-have-key-events";
@@ -7090,6 +7136,213 @@ declare const REACT_DOCTOR_RULES: readonly [{
7090
7136
  readonly recommendationFor?: (hasCapability: CapabilityQuery) => string | undefined;
7091
7137
  readonly create: (context: RuleContext) => RuleVisitors;
7092
7138
  };
7139
+ }, {
7140
+ readonly key: "react-doctor/remotion-calculate-metadata-fetch-signal";
7141
+ readonly id: "remotion-calculate-metadata-fetch-signal";
7142
+ readonly source: "react-doctor";
7143
+ readonly originallyExternal: false;
7144
+ readonly rule: {
7145
+ readonly framework: "global";
7146
+ readonly category: "Bugs";
7147
+ readonly id: string;
7148
+ readonly title?: string;
7149
+ readonly severity: RuleSeverity;
7150
+ readonly requires?: ReadonlyArray<Capability>;
7151
+ readonly disabledWhen?: ReadonlyArray<Capability>;
7152
+ readonly tags?: ReadonlyArray<string>;
7153
+ readonly matchByOccurrence?: boolean;
7154
+ readonly defaultEnabled?: boolean;
7155
+ readonly lifecycle?: "retired";
7156
+ readonly scan?: FileScan;
7157
+ readonly committedFilesOnly?: boolean;
7158
+ readonly recommendation?: string;
7159
+ readonly recommendationFor?: (hasCapability: CapabilityQuery) => string | undefined;
7160
+ readonly create: (context: RuleContext) => RuleVisitors;
7161
+ };
7162
+ }, {
7163
+ readonly key: "react-doctor/remotion-deterministic-randomness";
7164
+ readonly id: "remotion-deterministic-randomness";
7165
+ readonly source: "react-doctor";
7166
+ readonly originallyExternal: false;
7167
+ readonly rule: {
7168
+ readonly framework: "global";
7169
+ readonly category: "Bugs";
7170
+ readonly id: string;
7171
+ readonly title?: string;
7172
+ readonly severity: RuleSeverity;
7173
+ readonly requires?: ReadonlyArray<Capability>;
7174
+ readonly disabledWhen?: ReadonlyArray<Capability>;
7175
+ readonly tags?: ReadonlyArray<string>;
7176
+ readonly matchByOccurrence?: boolean;
7177
+ readonly defaultEnabled?: boolean;
7178
+ readonly lifecycle?: "retired";
7179
+ readonly scan?: FileScan;
7180
+ readonly committedFilesOnly?: boolean;
7181
+ readonly recommendation?: string;
7182
+ readonly recommendationFor?: (hasCapability: CapabilityQuery) => string | undefined;
7183
+ readonly create: (context: RuleContext) => RuleVisitors;
7184
+ };
7185
+ }, {
7186
+ readonly key: "react-doctor/remotion-no-css-animation";
7187
+ readonly id: "remotion-no-css-animation";
7188
+ readonly source: "react-doctor";
7189
+ readonly originallyExternal: false;
7190
+ readonly rule: {
7191
+ readonly framework: "global";
7192
+ readonly category: "Bugs";
7193
+ readonly id: string;
7194
+ readonly title?: string;
7195
+ readonly severity: RuleSeverity;
7196
+ readonly requires?: ReadonlyArray<Capability>;
7197
+ readonly disabledWhen?: ReadonlyArray<Capability>;
7198
+ readonly tags?: ReadonlyArray<string>;
7199
+ readonly matchByOccurrence?: boolean;
7200
+ readonly defaultEnabled?: boolean;
7201
+ readonly lifecycle?: "retired";
7202
+ readonly scan?: FileScan;
7203
+ readonly committedFilesOnly?: boolean;
7204
+ readonly recommendation?: string;
7205
+ readonly recommendationFor?: (hasCapability: CapabilityQuery) => string | undefined;
7206
+ readonly create: (context: RuleContext) => RuleVisitors;
7207
+ };
7208
+ }, {
7209
+ readonly key: "react-doctor/remotion-no-css-transition";
7210
+ readonly id: "remotion-no-css-transition";
7211
+ readonly source: "react-doctor";
7212
+ readonly originallyExternal: false;
7213
+ readonly rule: {
7214
+ readonly framework: "global";
7215
+ readonly category: "Bugs";
7216
+ readonly id: string;
7217
+ readonly title?: string;
7218
+ readonly severity: RuleSeverity;
7219
+ readonly requires?: ReadonlyArray<Capability>;
7220
+ readonly disabledWhen?: ReadonlyArray<Capability>;
7221
+ readonly tags?: ReadonlyArray<string>;
7222
+ readonly matchByOccurrence?: boolean;
7223
+ readonly defaultEnabled?: boolean;
7224
+ readonly lifecycle?: "retired";
7225
+ readonly scan?: FileScan;
7226
+ readonly committedFilesOnly?: boolean;
7227
+ readonly recommendation?: string;
7228
+ readonly recommendationFor?: (hasCapability: CapabilityQuery) => string | undefined;
7229
+ readonly create: (context: RuleContext) => RuleVisitors;
7230
+ };
7231
+ }, {
7232
+ readonly key: "react-doctor/remotion-no-css-url-assets";
7233
+ readonly id: "remotion-no-css-url-assets";
7234
+ readonly source: "react-doctor";
7235
+ readonly originallyExternal: false;
7236
+ readonly rule: {
7237
+ readonly framework: "global";
7238
+ readonly category: "Bugs";
7239
+ readonly id: string;
7240
+ readonly title?: string;
7241
+ readonly severity: RuleSeverity;
7242
+ readonly requires?: ReadonlyArray<Capability>;
7243
+ readonly disabledWhen?: ReadonlyArray<Capability>;
7244
+ readonly tags?: ReadonlyArray<string>;
7245
+ readonly matchByOccurrence?: boolean;
7246
+ readonly defaultEnabled?: boolean;
7247
+ readonly lifecycle?: "retired";
7248
+ readonly scan?: FileScan;
7249
+ readonly committedFilesOnly?: boolean;
7250
+ readonly recommendation?: string;
7251
+ readonly recommendationFor?: (hasCapability: CapabilityQuery) => string | undefined;
7252
+ readonly create: (context: RuleContext) => RuleVisitors;
7253
+ };
7254
+ }, {
7255
+ readonly key: "react-doctor/remotion-no-module-scope-delay-render";
7256
+ readonly id: "remotion-no-module-scope-delay-render";
7257
+ readonly source: "react-doctor";
7258
+ readonly originallyExternal: false;
7259
+ readonly rule: {
7260
+ readonly framework: "global";
7261
+ readonly category: "Bugs";
7262
+ readonly id: string;
7263
+ readonly title?: string;
7264
+ readonly severity: RuleSeverity;
7265
+ readonly requires?: ReadonlyArray<Capability>;
7266
+ readonly disabledWhen?: ReadonlyArray<Capability>;
7267
+ readonly tags?: ReadonlyArray<string>;
7268
+ readonly matchByOccurrence?: boolean;
7269
+ readonly defaultEnabled?: boolean;
7270
+ readonly lifecycle?: "retired";
7271
+ readonly scan?: FileScan;
7272
+ readonly committedFilesOnly?: boolean;
7273
+ readonly recommendation?: string;
7274
+ readonly recommendationFor?: (hasCapability: CapabilityQuery) => string | undefined;
7275
+ readonly create: (context: RuleContext) => RuleVisitors;
7276
+ };
7277
+ }, {
7278
+ readonly key: "react-doctor/remotion-no-native-media-elements";
7279
+ readonly id: "remotion-no-native-media-elements";
7280
+ readonly source: "react-doctor";
7281
+ readonly originallyExternal: false;
7282
+ readonly rule: {
7283
+ readonly framework: "global";
7284
+ readonly category: "Bugs";
7285
+ readonly id: string;
7286
+ readonly title?: string;
7287
+ readonly severity: RuleSeverity;
7288
+ readonly requires?: ReadonlyArray<Capability>;
7289
+ readonly disabledWhen?: ReadonlyArray<Capability>;
7290
+ readonly tags?: ReadonlyArray<string>;
7291
+ readonly matchByOccurrence?: boolean;
7292
+ readonly defaultEnabled?: boolean;
7293
+ readonly lifecycle?: "retired";
7294
+ readonly scan?: FileScan;
7295
+ readonly committedFilesOnly?: boolean;
7296
+ readonly recommendation?: string;
7297
+ readonly recommendationFor?: (hasCapability: CapabilityQuery) => string | undefined;
7298
+ readonly create: (context: RuleContext) => RuleVisitors;
7299
+ };
7300
+ }, {
7301
+ readonly key: "react-doctor/remotion-no-next-image";
7302
+ readonly id: "remotion-no-next-image";
7303
+ readonly source: "react-doctor";
7304
+ readonly originallyExternal: false;
7305
+ readonly rule: {
7306
+ readonly framework: "global";
7307
+ readonly category: "Bugs";
7308
+ readonly id: string;
7309
+ readonly title?: string;
7310
+ readonly severity: RuleSeverity;
7311
+ readonly requires?: ReadonlyArray<Capability>;
7312
+ readonly disabledWhen?: ReadonlyArray<Capability>;
7313
+ readonly tags?: ReadonlyArray<string>;
7314
+ readonly matchByOccurrence?: boolean;
7315
+ readonly defaultEnabled?: boolean;
7316
+ readonly lifecycle?: "retired";
7317
+ readonly scan?: FileScan;
7318
+ readonly committedFilesOnly?: boolean;
7319
+ readonly recommendation?: string;
7320
+ readonly recommendationFor?: (hasCapability: CapabilityQuery) => string | undefined;
7321
+ readonly create: (context: RuleContext) => RuleVisitors;
7322
+ };
7323
+ }, {
7324
+ readonly key: "react-doctor/remotion-stable-delay-render-handle";
7325
+ readonly id: "remotion-stable-delay-render-handle";
7326
+ readonly source: "react-doctor";
7327
+ readonly originallyExternal: false;
7328
+ readonly rule: {
7329
+ readonly framework: "global";
7330
+ readonly category: "Bugs";
7331
+ readonly id: string;
7332
+ readonly title?: string;
7333
+ readonly severity: RuleSeverity;
7334
+ readonly requires?: ReadonlyArray<Capability>;
7335
+ readonly disabledWhen?: ReadonlyArray<Capability>;
7336
+ readonly tags?: ReadonlyArray<string>;
7337
+ readonly matchByOccurrence?: boolean;
7338
+ readonly defaultEnabled?: boolean;
7339
+ readonly lifecycle?: "retired";
7340
+ readonly scan?: FileScan;
7341
+ readonly committedFilesOnly?: boolean;
7342
+ readonly recommendation?: string;
7343
+ readonly recommendationFor?: (hasCapability: CapabilityQuery) => string | undefined;
7344
+ readonly create: (context: RuleContext) => RuleVisitors;
7345
+ };
7093
7346
  }, {
7094
7347
  readonly key: "react-doctor/rendering-animate-svg-wrapper";
7095
7348
  readonly id: "rendering-animate-svg-wrapper";
@@ -9275,6 +9528,52 @@ declare const REACT_DOCTOR_RULES: readonly [{
9275
9528
  readonly recommendationFor?: (hasCapability: CapabilityQuery) => string | undefined;
9276
9529
  readonly create: (context: RuleContext) => RuleVisitors;
9277
9530
  };
9531
+ }, {
9532
+ readonly key: "react-doctor/valtio-no-proxy-read-in-render";
9533
+ readonly id: "valtio-no-proxy-read-in-render";
9534
+ readonly source: "react-doctor";
9535
+ readonly originallyExternal: false;
9536
+ readonly rule: {
9537
+ readonly framework: "global";
9538
+ readonly category: "Bugs";
9539
+ readonly requires: readonly Capability[];
9540
+ readonly id: string;
9541
+ readonly title?: string;
9542
+ readonly severity: RuleSeverity;
9543
+ readonly disabledWhen?: ReadonlyArray<Capability>;
9544
+ readonly tags?: ReadonlyArray<string>;
9545
+ readonly matchByOccurrence?: boolean;
9546
+ readonly defaultEnabled?: boolean;
9547
+ readonly lifecycle?: "retired";
9548
+ readonly scan?: FileScan;
9549
+ readonly committedFilesOnly?: boolean;
9550
+ readonly recommendation?: string;
9551
+ readonly recommendationFor?: (hasCapability: CapabilityQuery) => string | undefined;
9552
+ readonly create: (context: RuleContext) => RuleVisitors;
9553
+ };
9554
+ }, {
9555
+ readonly key: "react-doctor/valtio-no-snapshot-in-callback";
9556
+ readonly id: "valtio-no-snapshot-in-callback";
9557
+ readonly source: "react-doctor";
9558
+ readonly originallyExternal: false;
9559
+ readonly rule: {
9560
+ readonly framework: "global";
9561
+ readonly category: "Bugs";
9562
+ readonly requires: readonly Capability[];
9563
+ readonly id: string;
9564
+ readonly title?: string;
9565
+ readonly severity: RuleSeverity;
9566
+ readonly disabledWhen?: ReadonlyArray<Capability>;
9567
+ readonly tags?: ReadonlyArray<string>;
9568
+ readonly matchByOccurrence?: boolean;
9569
+ readonly defaultEnabled?: boolean;
9570
+ readonly lifecycle?: "retired";
9571
+ readonly scan?: FileScan;
9572
+ readonly committedFilesOnly?: boolean;
9573
+ readonly recommendation?: string;
9574
+ readonly recommendationFor?: (hasCapability: CapabilityQuery) => string | undefined;
9575
+ readonly create: (context: RuleContext) => RuleVisitors;
9576
+ };
9278
9577
  }, {
9279
9578
  readonly key: "react-doctor/void-dom-elements-no-children";
9280
9579
  readonly id: "void-dom-elements-no-children";
@@ -11733,29 +12032,6 @@ declare const RULES: readonly [{
11733
12032
  readonly recommendationFor?: (hasCapability: CapabilityQuery) => string | undefined;
11734
12033
  readonly create: (context: RuleContext) => RuleVisitors;
11735
12034
  };
11736
- }, {
11737
- readonly key: "react-doctor/jsx-no-target-blank";
11738
- readonly id: "jsx-no-target-blank";
11739
- readonly source: "react-doctor";
11740
- readonly originallyExternal: true;
11741
- readonly rule: {
11742
- readonly framework: "global";
11743
- readonly category: "Security";
11744
- readonly requires: readonly Capability[];
11745
- readonly id: string;
11746
- readonly title?: string;
11747
- readonly severity: RuleSeverity;
11748
- readonly disabledWhen?: ReadonlyArray<Capability>;
11749
- readonly tags?: ReadonlyArray<string>;
11750
- readonly matchByOccurrence?: boolean;
11751
- readonly defaultEnabled?: boolean;
11752
- readonly lifecycle?: "retired";
11753
- readonly scan?: FileScan;
11754
- readonly committedFilesOnly?: boolean;
11755
- readonly recommendation?: string;
11756
- readonly recommendationFor?: (hasCapability: CapabilityQuery) => string | undefined;
11757
- readonly create: (context: RuleContext) => RuleVisitors;
11758
- };
11759
12035
  }, {
11760
12036
  readonly key: "react-doctor/jsx-no-undef";
11761
12037
  readonly id: "jsx-no-undef";
@@ -11975,8 +12251,77 @@ declare const RULES: readonly [{
11975
12251
  readonly id: string;
11976
12252
  readonly title?: string;
11977
12253
  readonly severity: RuleSeverity;
11978
- readonly requires?: ReadonlyArray<Capability>;
12254
+ readonly requires?: ReadonlyArray<Capability>;
12255
+ readonly disabledWhen?: ReadonlyArray<Capability>;
12256
+ readonly matchByOccurrence?: boolean;
12257
+ readonly defaultEnabled?: boolean;
12258
+ readonly lifecycle?: "retired";
12259
+ readonly scan?: FileScan;
12260
+ readonly committedFilesOnly?: boolean;
12261
+ readonly recommendation?: string;
12262
+ readonly recommendationFor?: (hasCapability: CapabilityQuery) => string | undefined;
12263
+ readonly create: (context: RuleContext) => RuleVisitors;
12264
+ };
12265
+ }, {
12266
+ readonly key: "react-doctor/mcp-tool-capability-risk";
12267
+ readonly id: "mcp-tool-capability-risk";
12268
+ readonly source: "react-doctor";
12269
+ readonly originallyExternal: false;
12270
+ readonly rule: {
12271
+ readonly framework: "global";
12272
+ readonly category: "Security";
12273
+ readonly tags: readonly string[];
12274
+ readonly id: string;
12275
+ readonly title?: string;
12276
+ readonly severity: RuleSeverity;
12277
+ readonly requires?: ReadonlyArray<Capability>;
12278
+ readonly disabledWhen?: ReadonlyArray<Capability>;
12279
+ readonly matchByOccurrence?: boolean;
12280
+ readonly defaultEnabled?: boolean;
12281
+ readonly lifecycle?: "retired";
12282
+ readonly scan?: FileScan;
12283
+ readonly committedFilesOnly?: boolean;
12284
+ readonly recommendation?: string;
12285
+ readonly recommendationFor?: (hasCapability: CapabilityQuery) => string | undefined;
12286
+ readonly create: (context: RuleContext) => RuleVisitors;
12287
+ };
12288
+ }, {
12289
+ readonly key: "react-doctor/mdx-ssr-execution-risk";
12290
+ readonly id: "mdx-ssr-execution-risk";
12291
+ readonly source: "react-doctor";
12292
+ readonly originallyExternal: false;
12293
+ readonly rule: {
12294
+ readonly framework: "global";
12295
+ readonly category: "Security";
12296
+ readonly tags: readonly string[];
12297
+ readonly id: string;
12298
+ readonly title?: string;
12299
+ readonly severity: RuleSeverity;
12300
+ readonly requires?: ReadonlyArray<Capability>;
12301
+ readonly disabledWhen?: ReadonlyArray<Capability>;
12302
+ readonly matchByOccurrence?: boolean;
12303
+ readonly defaultEnabled?: boolean;
12304
+ readonly lifecycle?: "retired";
12305
+ readonly scan?: FileScan;
12306
+ readonly committedFilesOnly?: boolean;
12307
+ readonly recommendation?: string;
12308
+ readonly recommendationFor?: (hasCapability: CapabilityQuery) => string | undefined;
12309
+ readonly create: (context: RuleContext) => RuleVisitors;
12310
+ };
12311
+ }, {
12312
+ readonly key: "react-doctor/media-has-caption";
12313
+ readonly id: "media-has-caption";
12314
+ readonly source: "react-doctor";
12315
+ readonly originallyExternal: true;
12316
+ readonly rule: {
12317
+ readonly framework: "global";
12318
+ readonly category: "Accessibility";
12319
+ readonly requires: readonly Capability[];
12320
+ readonly id: string;
12321
+ readonly title?: string;
12322
+ readonly severity: RuleSeverity;
11979
12323
  readonly disabledWhen?: ReadonlyArray<Capability>;
12324
+ readonly tags?: ReadonlyArray<string>;
11980
12325
  readonly matchByOccurrence?: boolean;
11981
12326
  readonly defaultEnabled?: boolean;
11982
12327
  readonly lifecycle?: "retired";
@@ -11987,19 +12332,19 @@ declare const RULES: readonly [{
11987
12332
  readonly create: (context: RuleContext) => RuleVisitors;
11988
12333
  };
11989
12334
  }, {
11990
- readonly key: "react-doctor/mcp-tool-capability-risk";
11991
- readonly id: "mcp-tool-capability-risk";
12335
+ readonly key: "react-doctor/mobx-no-make-auto-observable-in-inheritance";
12336
+ readonly id: "mobx-no-make-auto-observable-in-inheritance";
11992
12337
  readonly source: "react-doctor";
11993
12338
  readonly originallyExternal: false;
11994
12339
  readonly rule: {
11995
12340
  readonly framework: "global";
11996
- readonly category: "Security";
11997
- readonly tags: readonly string[];
12341
+ readonly category: "Bugs";
11998
12342
  readonly id: string;
11999
12343
  readonly title?: string;
12000
12344
  readonly severity: RuleSeverity;
12001
12345
  readonly requires?: ReadonlyArray<Capability>;
12002
12346
  readonly disabledWhen?: ReadonlyArray<Capability>;
12347
+ readonly tags?: ReadonlyArray<string>;
12003
12348
  readonly matchByOccurrence?: boolean;
12004
12349
  readonly defaultEnabled?: boolean;
12005
12350
  readonly lifecycle?: "retired";
@@ -12010,19 +12355,19 @@ declare const RULES: readonly [{
12010
12355
  readonly create: (context: RuleContext) => RuleVisitors;
12011
12356
  };
12012
12357
  }, {
12013
- readonly key: "react-doctor/mdx-ssr-execution-risk";
12014
- readonly id: "mdx-ssr-execution-risk";
12358
+ readonly key: "react-doctor/mobx-no-observer-wrapped-memo";
12359
+ readonly id: "mobx-no-observer-wrapped-memo";
12015
12360
  readonly source: "react-doctor";
12016
12361
  readonly originallyExternal: false;
12017
12362
  readonly rule: {
12018
12363
  readonly framework: "global";
12019
- readonly category: "Security";
12020
- readonly tags: readonly string[];
12364
+ readonly category: "Bugs";
12021
12365
  readonly id: string;
12022
12366
  readonly title?: string;
12023
12367
  readonly severity: RuleSeverity;
12024
12368
  readonly requires?: ReadonlyArray<Capability>;
12025
12369
  readonly disabledWhen?: ReadonlyArray<Capability>;
12370
+ readonly tags?: ReadonlyArray<string>;
12026
12371
  readonly matchByOccurrence?: boolean;
12027
12372
  readonly defaultEnabled?: boolean;
12028
12373
  readonly lifecycle?: "retired";
@@ -12033,17 +12378,17 @@ declare const RULES: readonly [{
12033
12378
  readonly create: (context: RuleContext) => RuleVisitors;
12034
12379
  };
12035
12380
  }, {
12036
- readonly key: "react-doctor/media-has-caption";
12037
- readonly id: "media-has-caption";
12381
+ readonly key: "react-doctor/mobx-reaction-disposer-discarded";
12382
+ readonly id: "mobx-reaction-disposer-discarded";
12038
12383
  readonly source: "react-doctor";
12039
- readonly originallyExternal: true;
12384
+ readonly originallyExternal: false;
12040
12385
  readonly rule: {
12041
12386
  readonly framework: "global";
12042
- readonly category: "Accessibility";
12043
- readonly requires: readonly Capability[];
12387
+ readonly category: "Bugs";
12044
12388
  readonly id: string;
12045
12389
  readonly title?: string;
12046
12390
  readonly severity: RuleSeverity;
12391
+ readonly requires?: ReadonlyArray<Capability>;
12047
12392
  readonly disabledWhen?: ReadonlyArray<Capability>;
12048
12393
  readonly tags?: ReadonlyArray<string>;
12049
12394
  readonly matchByOccurrence?: boolean;
@@ -16402,6 +16747,213 @@ declare const RULES: readonly [{
16402
16747
  readonly recommendationFor?: (hasCapability: CapabilityQuery) => string | undefined;
16403
16748
  readonly create: (context: RuleContext) => RuleVisitors;
16404
16749
  };
16750
+ }, {
16751
+ readonly key: "react-doctor/remotion-calculate-metadata-fetch-signal";
16752
+ readonly id: "remotion-calculate-metadata-fetch-signal";
16753
+ readonly source: "react-doctor";
16754
+ readonly originallyExternal: false;
16755
+ readonly rule: {
16756
+ readonly framework: "global";
16757
+ readonly category: "Bugs";
16758
+ readonly id: string;
16759
+ readonly title?: string;
16760
+ readonly severity: RuleSeverity;
16761
+ readonly requires?: ReadonlyArray<Capability>;
16762
+ readonly disabledWhen?: ReadonlyArray<Capability>;
16763
+ readonly tags?: ReadonlyArray<string>;
16764
+ readonly matchByOccurrence?: boolean;
16765
+ readonly defaultEnabled?: boolean;
16766
+ readonly lifecycle?: "retired";
16767
+ readonly scan?: FileScan;
16768
+ readonly committedFilesOnly?: boolean;
16769
+ readonly recommendation?: string;
16770
+ readonly recommendationFor?: (hasCapability: CapabilityQuery) => string | undefined;
16771
+ readonly create: (context: RuleContext) => RuleVisitors;
16772
+ };
16773
+ }, {
16774
+ readonly key: "react-doctor/remotion-deterministic-randomness";
16775
+ readonly id: "remotion-deterministic-randomness";
16776
+ readonly source: "react-doctor";
16777
+ readonly originallyExternal: false;
16778
+ readonly rule: {
16779
+ readonly framework: "global";
16780
+ readonly category: "Bugs";
16781
+ readonly id: string;
16782
+ readonly title?: string;
16783
+ readonly severity: RuleSeverity;
16784
+ readonly requires?: ReadonlyArray<Capability>;
16785
+ readonly disabledWhen?: ReadonlyArray<Capability>;
16786
+ readonly tags?: ReadonlyArray<string>;
16787
+ readonly matchByOccurrence?: boolean;
16788
+ readonly defaultEnabled?: boolean;
16789
+ readonly lifecycle?: "retired";
16790
+ readonly scan?: FileScan;
16791
+ readonly committedFilesOnly?: boolean;
16792
+ readonly recommendation?: string;
16793
+ readonly recommendationFor?: (hasCapability: CapabilityQuery) => string | undefined;
16794
+ readonly create: (context: RuleContext) => RuleVisitors;
16795
+ };
16796
+ }, {
16797
+ readonly key: "react-doctor/remotion-no-css-animation";
16798
+ readonly id: "remotion-no-css-animation";
16799
+ readonly source: "react-doctor";
16800
+ readonly originallyExternal: false;
16801
+ readonly rule: {
16802
+ readonly framework: "global";
16803
+ readonly category: "Bugs";
16804
+ readonly id: string;
16805
+ readonly title?: string;
16806
+ readonly severity: RuleSeverity;
16807
+ readonly requires?: ReadonlyArray<Capability>;
16808
+ readonly disabledWhen?: ReadonlyArray<Capability>;
16809
+ readonly tags?: ReadonlyArray<string>;
16810
+ readonly matchByOccurrence?: boolean;
16811
+ readonly defaultEnabled?: boolean;
16812
+ readonly lifecycle?: "retired";
16813
+ readonly scan?: FileScan;
16814
+ readonly committedFilesOnly?: boolean;
16815
+ readonly recommendation?: string;
16816
+ readonly recommendationFor?: (hasCapability: CapabilityQuery) => string | undefined;
16817
+ readonly create: (context: RuleContext) => RuleVisitors;
16818
+ };
16819
+ }, {
16820
+ readonly key: "react-doctor/remotion-no-css-transition";
16821
+ readonly id: "remotion-no-css-transition";
16822
+ readonly source: "react-doctor";
16823
+ readonly originallyExternal: false;
16824
+ readonly rule: {
16825
+ readonly framework: "global";
16826
+ readonly category: "Bugs";
16827
+ readonly id: string;
16828
+ readonly title?: string;
16829
+ readonly severity: RuleSeverity;
16830
+ readonly requires?: ReadonlyArray<Capability>;
16831
+ readonly disabledWhen?: ReadonlyArray<Capability>;
16832
+ readonly tags?: ReadonlyArray<string>;
16833
+ readonly matchByOccurrence?: boolean;
16834
+ readonly defaultEnabled?: boolean;
16835
+ readonly lifecycle?: "retired";
16836
+ readonly scan?: FileScan;
16837
+ readonly committedFilesOnly?: boolean;
16838
+ readonly recommendation?: string;
16839
+ readonly recommendationFor?: (hasCapability: CapabilityQuery) => string | undefined;
16840
+ readonly create: (context: RuleContext) => RuleVisitors;
16841
+ };
16842
+ }, {
16843
+ readonly key: "react-doctor/remotion-no-css-url-assets";
16844
+ readonly id: "remotion-no-css-url-assets";
16845
+ readonly source: "react-doctor";
16846
+ readonly originallyExternal: false;
16847
+ readonly rule: {
16848
+ readonly framework: "global";
16849
+ readonly category: "Bugs";
16850
+ readonly id: string;
16851
+ readonly title?: string;
16852
+ readonly severity: RuleSeverity;
16853
+ readonly requires?: ReadonlyArray<Capability>;
16854
+ readonly disabledWhen?: ReadonlyArray<Capability>;
16855
+ readonly tags?: ReadonlyArray<string>;
16856
+ readonly matchByOccurrence?: boolean;
16857
+ readonly defaultEnabled?: boolean;
16858
+ readonly lifecycle?: "retired";
16859
+ readonly scan?: FileScan;
16860
+ readonly committedFilesOnly?: boolean;
16861
+ readonly recommendation?: string;
16862
+ readonly recommendationFor?: (hasCapability: CapabilityQuery) => string | undefined;
16863
+ readonly create: (context: RuleContext) => RuleVisitors;
16864
+ };
16865
+ }, {
16866
+ readonly key: "react-doctor/remotion-no-module-scope-delay-render";
16867
+ readonly id: "remotion-no-module-scope-delay-render";
16868
+ readonly source: "react-doctor";
16869
+ readonly originallyExternal: false;
16870
+ readonly rule: {
16871
+ readonly framework: "global";
16872
+ readonly category: "Bugs";
16873
+ readonly id: string;
16874
+ readonly title?: string;
16875
+ readonly severity: RuleSeverity;
16876
+ readonly requires?: ReadonlyArray<Capability>;
16877
+ readonly disabledWhen?: ReadonlyArray<Capability>;
16878
+ readonly tags?: ReadonlyArray<string>;
16879
+ readonly matchByOccurrence?: boolean;
16880
+ readonly defaultEnabled?: boolean;
16881
+ readonly lifecycle?: "retired";
16882
+ readonly scan?: FileScan;
16883
+ readonly committedFilesOnly?: boolean;
16884
+ readonly recommendation?: string;
16885
+ readonly recommendationFor?: (hasCapability: CapabilityQuery) => string | undefined;
16886
+ readonly create: (context: RuleContext) => RuleVisitors;
16887
+ };
16888
+ }, {
16889
+ readonly key: "react-doctor/remotion-no-native-media-elements";
16890
+ readonly id: "remotion-no-native-media-elements";
16891
+ readonly source: "react-doctor";
16892
+ readonly originallyExternal: false;
16893
+ readonly rule: {
16894
+ readonly framework: "global";
16895
+ readonly category: "Bugs";
16896
+ readonly id: string;
16897
+ readonly title?: string;
16898
+ readonly severity: RuleSeverity;
16899
+ readonly requires?: ReadonlyArray<Capability>;
16900
+ readonly disabledWhen?: ReadonlyArray<Capability>;
16901
+ readonly tags?: ReadonlyArray<string>;
16902
+ readonly matchByOccurrence?: boolean;
16903
+ readonly defaultEnabled?: boolean;
16904
+ readonly lifecycle?: "retired";
16905
+ readonly scan?: FileScan;
16906
+ readonly committedFilesOnly?: boolean;
16907
+ readonly recommendation?: string;
16908
+ readonly recommendationFor?: (hasCapability: CapabilityQuery) => string | undefined;
16909
+ readonly create: (context: RuleContext) => RuleVisitors;
16910
+ };
16911
+ }, {
16912
+ readonly key: "react-doctor/remotion-no-next-image";
16913
+ readonly id: "remotion-no-next-image";
16914
+ readonly source: "react-doctor";
16915
+ readonly originallyExternal: false;
16916
+ readonly rule: {
16917
+ readonly framework: "global";
16918
+ readonly category: "Bugs";
16919
+ readonly id: string;
16920
+ readonly title?: string;
16921
+ readonly severity: RuleSeverity;
16922
+ readonly requires?: ReadonlyArray<Capability>;
16923
+ readonly disabledWhen?: ReadonlyArray<Capability>;
16924
+ readonly tags?: ReadonlyArray<string>;
16925
+ readonly matchByOccurrence?: boolean;
16926
+ readonly defaultEnabled?: boolean;
16927
+ readonly lifecycle?: "retired";
16928
+ readonly scan?: FileScan;
16929
+ readonly committedFilesOnly?: boolean;
16930
+ readonly recommendation?: string;
16931
+ readonly recommendationFor?: (hasCapability: CapabilityQuery) => string | undefined;
16932
+ readonly create: (context: RuleContext) => RuleVisitors;
16933
+ };
16934
+ }, {
16935
+ readonly key: "react-doctor/remotion-stable-delay-render-handle";
16936
+ readonly id: "remotion-stable-delay-render-handle";
16937
+ readonly source: "react-doctor";
16938
+ readonly originallyExternal: false;
16939
+ readonly rule: {
16940
+ readonly framework: "global";
16941
+ readonly category: "Bugs";
16942
+ readonly id: string;
16943
+ readonly title?: string;
16944
+ readonly severity: RuleSeverity;
16945
+ readonly requires?: ReadonlyArray<Capability>;
16946
+ readonly disabledWhen?: ReadonlyArray<Capability>;
16947
+ readonly tags?: ReadonlyArray<string>;
16948
+ readonly matchByOccurrence?: boolean;
16949
+ readonly defaultEnabled?: boolean;
16950
+ readonly lifecycle?: "retired";
16951
+ readonly scan?: FileScan;
16952
+ readonly committedFilesOnly?: boolean;
16953
+ readonly recommendation?: string;
16954
+ readonly recommendationFor?: (hasCapability: CapabilityQuery) => string | undefined;
16955
+ readonly create: (context: RuleContext) => RuleVisitors;
16956
+ };
16405
16957
  }, {
16406
16958
  readonly key: "react-doctor/rendering-animate-svg-wrapper";
16407
16959
  readonly id: "rendering-animate-svg-wrapper";
@@ -18587,6 +19139,52 @@ declare const RULES: readonly [{
18587
19139
  readonly recommendationFor?: (hasCapability: CapabilityQuery) => string | undefined;
18588
19140
  readonly create: (context: RuleContext) => RuleVisitors;
18589
19141
  };
19142
+ }, {
19143
+ readonly key: "react-doctor/valtio-no-proxy-read-in-render";
19144
+ readonly id: "valtio-no-proxy-read-in-render";
19145
+ readonly source: "react-doctor";
19146
+ readonly originallyExternal: false;
19147
+ readonly rule: {
19148
+ readonly framework: "global";
19149
+ readonly category: "Bugs";
19150
+ readonly requires: readonly Capability[];
19151
+ readonly id: string;
19152
+ readonly title?: string;
19153
+ readonly severity: RuleSeverity;
19154
+ readonly disabledWhen?: ReadonlyArray<Capability>;
19155
+ readonly tags?: ReadonlyArray<string>;
19156
+ readonly matchByOccurrence?: boolean;
19157
+ readonly defaultEnabled?: boolean;
19158
+ readonly lifecycle?: "retired";
19159
+ readonly scan?: FileScan;
19160
+ readonly committedFilesOnly?: boolean;
19161
+ readonly recommendation?: string;
19162
+ readonly recommendationFor?: (hasCapability: CapabilityQuery) => string | undefined;
19163
+ readonly create: (context: RuleContext) => RuleVisitors;
19164
+ };
19165
+ }, {
19166
+ readonly key: "react-doctor/valtio-no-snapshot-in-callback";
19167
+ readonly id: "valtio-no-snapshot-in-callback";
19168
+ readonly source: "react-doctor";
19169
+ readonly originallyExternal: false;
19170
+ readonly rule: {
19171
+ readonly framework: "global";
19172
+ readonly category: "Bugs";
19173
+ readonly requires: readonly Capability[];
19174
+ readonly id: string;
19175
+ readonly title?: string;
19176
+ readonly severity: RuleSeverity;
19177
+ readonly disabledWhen?: ReadonlyArray<Capability>;
19178
+ readonly tags?: ReadonlyArray<string>;
19179
+ readonly matchByOccurrence?: boolean;
19180
+ readonly defaultEnabled?: boolean;
19181
+ readonly lifecycle?: "retired";
19182
+ readonly scan?: FileScan;
19183
+ readonly committedFilesOnly?: boolean;
19184
+ readonly recommendation?: string;
19185
+ readonly recommendationFor?: (hasCapability: CapabilityQuery) => string | undefined;
19186
+ readonly create: (context: RuleContext) => RuleVisitors;
19187
+ };
18590
19188
  }, {
18591
19189
  readonly key: "react-doctor/void-dom-elements-no-children";
18592
19190
  readonly id: "void-dom-elements-no-children";