oxlint-plugin-react-doctor 0.9.1-dev.54ba416 → 0.9.1-dev.7ee59d3

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 +337 -1
  2. package/dist/index.js +1844 -102
  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" | "remotion" | "pure-preact" | "react-native" | "server-actions" | "ssr" | "client-only" | "nextjs:static-export" | "nextjs:15" | "nextjs:16" | "tailwind" | "tailwind:3.4" | "tailwind:4" | "zod" | "zod:4" | "mobx" | "mobx-react" | "mobx-react-lite" | "mobx-react-binding" | "mobx-react-binding-observer-memo-guard" | "mobx-react-observer-memo-guard" | "mobx-react-lite-observer-memo-guard" | "mobx-state-tree" | "mobx-react-observer" | "zustand" | "typescript" | "react-compiler" | "tanstack-query" | "valtio" | "i18n" | "styled-components" | "styled-components:6" | "three" | "r3f" | "react-router" | "react-router-framework" | "react-router:6.4" | "react-router:6.7" | "react-router:6.9" | "react-router:6.19" | "react-router:7" | "react-router:7.8" | "react-router:7.9" | "react-router:7.10" | "react-router:7.15" | "react-router:8" | "pre-es2023" | "target-blank-needs-explicit-protection" | "target-blank-needs-noreferrer" | `react:${number}` | `preact:${number}` | `remotion:${number}` | `valtio:${number}` | `mobx:${number}` | `zustand:${number}` | `three:${number}` | `r3f:${number}`;
103
+ type Capability = FrameworkToken | "react" | "remotion" | "pure-preact" | "react-native" | "server-actions" | "ssr" | "client-only" | "expo:54" | "nextjs:static-export" | "nextjs:15" | "nextjs:16" | "tailwind" | "tailwind:3.4" | "tailwind:4" | "zod" | "zod:4" | "mobx" | "mobx-react" | "mobx-react-lite" | "mobx-react-binding" | "mobx-react-binding-observer-memo-guard" | "mobx-react-observer-memo-guard" | "mobx-react-lite-observer-memo-guard" | "mobx-state-tree" | "mobx-react-observer" | "zustand" | "typescript" | "react-compiler" | "reanimated" | "reanimated:4" | "tanstack-query" | "valtio" | "i18n" | "styled-components" | "styled-components:6" | "three" | "r3f" | "react-router" | "react-router-framework" | "react-router:6.4" | "react-router:6.7" | "react-router:6.9" | "react-router:6.19" | "react-router:7" | "react-router:7.8" | "react-router:7.9" | "react-router:7.10" | "react-router:7.15" | "react-router:8" | "pre-es2023" | "target-blank-needs-explicit-protection" | "target-blank-needs-noreferrer" | `react:${number}` | `preact:${number}` | `remotion:${number}` | `valtio:${number}` | `mobx:${number}` | `zustand:${number}` | `three:${number}` | `r3f:${number}`;
104
104
  type CapabilityQuery = (capability: Capability) => boolean;
105
105
  //#endregion
106
106
  //#region src/plugin/utils/file-scan.d.ts
@@ -15288,6 +15288,54 @@ declare const REACT_DOCTOR_RULES: readonly [{
15288
15288
  readonly recommendationFor?: (hasCapability: CapabilityQuery) => string | undefined;
15289
15289
  readonly create: (context: RuleContext) => RuleVisitors;
15290
15290
  };
15291
+ }, {
15292
+ readonly key: "react-doctor/rn-bottom-sheet-no-ignored-scroll-prop";
15293
+ readonly id: "rn-bottom-sheet-no-ignored-scroll-prop";
15294
+ readonly source: "react-doctor";
15295
+ readonly originallyExternal: false;
15296
+ readonly rule: {
15297
+ readonly framework: "react-native";
15298
+ readonly category: "Bugs";
15299
+ readonly tags: readonly string[];
15300
+ readonly id: string;
15301
+ readonly title?: string;
15302
+ readonly severity: RuleSeverity;
15303
+ readonly requires?: ReadonlyArray<Capability>;
15304
+ readonly minimumInkVersion?: string;
15305
+ readonly disabledWhen?: ReadonlyArray<Capability>;
15306
+ readonly matchByOccurrence?: boolean;
15307
+ readonly defaultEnabled?: boolean;
15308
+ readonly lifecycle?: "retired";
15309
+ readonly scan?: FileScan;
15310
+ readonly committedFilesOnly?: boolean;
15311
+ readonly recommendation?: string;
15312
+ readonly recommendationFor?: (hasCapability: CapabilityQuery) => string | undefined;
15313
+ readonly create: (context: RuleContext) => RuleVisitors;
15314
+ };
15315
+ }, {
15316
+ readonly key: "react-doctor/rn-bottom-sheet-no-state-in-on-animate";
15317
+ readonly id: "rn-bottom-sheet-no-state-in-on-animate";
15318
+ readonly source: "react-doctor";
15319
+ readonly originallyExternal: false;
15320
+ readonly rule: {
15321
+ readonly framework: "react-native";
15322
+ readonly category: "Bugs";
15323
+ readonly tags: readonly string[];
15324
+ readonly id: string;
15325
+ readonly title?: string;
15326
+ readonly severity: RuleSeverity;
15327
+ readonly requires?: ReadonlyArray<Capability>;
15328
+ readonly minimumInkVersion?: string;
15329
+ readonly disabledWhen?: ReadonlyArray<Capability>;
15330
+ readonly matchByOccurrence?: boolean;
15331
+ readonly defaultEnabled?: boolean;
15332
+ readonly lifecycle?: "retired";
15333
+ readonly scan?: FileScan;
15334
+ readonly committedFilesOnly?: boolean;
15335
+ readonly recommendation?: string;
15336
+ readonly recommendationFor?: (hasCapability: CapabilityQuery) => string | undefined;
15337
+ readonly create: (context: RuleContext) => RuleVisitors;
15338
+ };
15291
15339
  }, {
15292
15340
  readonly key: "react-doctor/rn-bottom-sheet-prefer-native";
15293
15341
  readonly id: "rn-bottom-sheet-prefer-native";
@@ -15312,6 +15360,30 @@ declare const REACT_DOCTOR_RULES: readonly [{
15312
15360
  readonly recommendationFor?: (hasCapability: CapabilityQuery) => string | undefined;
15313
15361
  readonly create: (context: RuleContext) => RuleVisitors;
15314
15362
  };
15363
+ }, {
15364
+ readonly key: "react-doctor/rn-bottom-sheet-use-integrated-scrollable";
15365
+ readonly id: "rn-bottom-sheet-use-integrated-scrollable";
15366
+ readonly source: "react-doctor";
15367
+ readonly originallyExternal: false;
15368
+ readonly rule: {
15369
+ readonly framework: "react-native";
15370
+ readonly category: "Bugs";
15371
+ readonly tags: readonly string[];
15372
+ readonly id: string;
15373
+ readonly title?: string;
15374
+ readonly severity: RuleSeverity;
15375
+ readonly requires?: ReadonlyArray<Capability>;
15376
+ readonly minimumInkVersion?: string;
15377
+ readonly disabledWhen?: ReadonlyArray<Capability>;
15378
+ readonly matchByOccurrence?: boolean;
15379
+ readonly defaultEnabled?: boolean;
15380
+ readonly lifecycle?: "retired";
15381
+ readonly scan?: FileScan;
15382
+ readonly committedFilesOnly?: boolean;
15383
+ readonly recommendation?: string;
15384
+ readonly recommendationFor?: (hasCapability: CapabilityQuery) => string | undefined;
15385
+ readonly create: (context: RuleContext) => RuleVisitors;
15386
+ };
15315
15387
  }, {
15316
15388
  readonly key: "react-doctor/rn-detox-missing-await";
15317
15389
  readonly id: "rn-detox-missing-await";
@@ -15840,6 +15912,30 @@ declare const REACT_DOCTOR_RULES: readonly [{
15840
15912
  readonly recommendationFor?: (hasCapability: CapabilityQuery) => string | undefined;
15841
15913
  readonly create: (context: RuleContext) => RuleVisitors;
15842
15914
  };
15915
+ }, {
15916
+ readonly key: "react-doctor/rn-platform-shaking-use-direct-import";
15917
+ readonly id: "rn-platform-shaking-use-direct-import";
15918
+ readonly source: "react-doctor";
15919
+ readonly originallyExternal: false;
15920
+ readonly rule: {
15921
+ readonly framework: "react-native";
15922
+ readonly category: "Bugs";
15923
+ readonly tags: readonly string[];
15924
+ readonly id: string;
15925
+ readonly title?: string;
15926
+ readonly severity: RuleSeverity;
15927
+ readonly requires?: ReadonlyArray<Capability>;
15928
+ readonly minimumInkVersion?: string;
15929
+ readonly disabledWhen?: ReadonlyArray<Capability>;
15930
+ readonly matchByOccurrence?: boolean;
15931
+ readonly defaultEnabled?: boolean;
15932
+ readonly lifecycle?: "retired";
15933
+ readonly scan?: FileScan;
15934
+ readonly committedFilesOnly?: boolean;
15935
+ readonly recommendation?: string;
15936
+ readonly recommendationFor?: (hasCapability: CapabilityQuery) => string | undefined;
15937
+ readonly create: (context: RuleContext) => RuleVisitors;
15938
+ };
15843
15939
  }, {
15844
15940
  readonly key: "react-doctor/rn-prefer-content-inset-adjustment";
15845
15941
  readonly id: "rn-prefer-content-inset-adjustment";
@@ -15984,6 +16080,78 @@ declare const REACT_DOCTOR_RULES: readonly [{
15984
16080
  readonly recommendationFor?: (hasCapability: CapabilityQuery) => string | undefined;
15985
16081
  readonly create: (context: RuleContext) => RuleVisitors;
15986
16082
  };
16083
+ }, {
16084
+ readonly key: "react-doctor/rn-reanimated-4-no-legacy-spring-thresholds";
16085
+ readonly id: "rn-reanimated-4-no-legacy-spring-thresholds";
16086
+ readonly source: "react-doctor";
16087
+ readonly originallyExternal: false;
16088
+ readonly rule: {
16089
+ readonly framework: "react-native";
16090
+ readonly category: "Bugs";
16091
+ readonly tags: readonly string[];
16092
+ readonly id: string;
16093
+ readonly title?: string;
16094
+ readonly severity: RuleSeverity;
16095
+ readonly requires?: ReadonlyArray<Capability>;
16096
+ readonly minimumInkVersion?: string;
16097
+ readonly disabledWhen?: ReadonlyArray<Capability>;
16098
+ readonly matchByOccurrence?: boolean;
16099
+ readonly defaultEnabled?: boolean;
16100
+ readonly lifecycle?: "retired";
16101
+ readonly scan?: FileScan;
16102
+ readonly committedFilesOnly?: boolean;
16103
+ readonly recommendation?: string;
16104
+ readonly recommendationFor?: (hasCapability: CapabilityQuery) => string | undefined;
16105
+ readonly create: (context: RuleContext) => RuleVisitors;
16106
+ };
16107
+ }, {
16108
+ readonly key: "react-doctor/rn-reanimated-4-no-removed-api";
16109
+ readonly id: "rn-reanimated-4-no-removed-api";
16110
+ readonly source: "react-doctor";
16111
+ readonly originallyExternal: false;
16112
+ readonly rule: {
16113
+ readonly framework: "react-native";
16114
+ readonly category: "Bugs";
16115
+ readonly tags: readonly string[];
16116
+ readonly id: string;
16117
+ readonly title?: string;
16118
+ readonly severity: RuleSeverity;
16119
+ readonly requires?: ReadonlyArray<Capability>;
16120
+ readonly minimumInkVersion?: string;
16121
+ readonly disabledWhen?: ReadonlyArray<Capability>;
16122
+ readonly matchByOccurrence?: boolean;
16123
+ readonly defaultEnabled?: boolean;
16124
+ readonly lifecycle?: "retired";
16125
+ readonly scan?: FileScan;
16126
+ readonly committedFilesOnly?: boolean;
16127
+ readonly recommendation?: string;
16128
+ readonly recommendationFor?: (hasCapability: CapabilityQuery) => string | undefined;
16129
+ readonly create: (context: RuleContext) => RuleVisitors;
16130
+ };
16131
+ }, {
16132
+ readonly key: "react-doctor/rn-reanimated-4-use-worklets-scheduler";
16133
+ readonly id: "rn-reanimated-4-use-worklets-scheduler";
16134
+ readonly source: "react-doctor";
16135
+ readonly originallyExternal: false;
16136
+ readonly rule: {
16137
+ readonly framework: "react-native";
16138
+ readonly category: "Bugs";
16139
+ readonly tags: readonly string[];
16140
+ readonly id: string;
16141
+ readonly title?: string;
16142
+ readonly severity: RuleSeverity;
16143
+ readonly requires?: ReadonlyArray<Capability>;
16144
+ readonly minimumInkVersion?: string;
16145
+ readonly disabledWhen?: ReadonlyArray<Capability>;
16146
+ readonly matchByOccurrence?: boolean;
16147
+ readonly defaultEnabled?: boolean;
16148
+ readonly lifecycle?: "retired";
16149
+ readonly scan?: FileScan;
16150
+ readonly committedFilesOnly?: boolean;
16151
+ readonly recommendation?: string;
16152
+ readonly recommendationFor?: (hasCapability: CapabilityQuery) => string | undefined;
16153
+ readonly create: (context: RuleContext) => RuleVisitors;
16154
+ };
15987
16155
  }, {
15988
16156
  readonly key: "react-doctor/rn-scrollview-dynamic-padding";
15989
16157
  readonly id: "rn-scrollview-dynamic-padding";
@@ -33234,6 +33402,54 @@ declare const RULES: readonly [{
33234
33402
  readonly recommendationFor?: (hasCapability: CapabilityQuery) => string | undefined;
33235
33403
  readonly create: (context: RuleContext) => RuleVisitors;
33236
33404
  };
33405
+ }, {
33406
+ readonly key: "react-doctor/rn-bottom-sheet-no-ignored-scroll-prop";
33407
+ readonly id: "rn-bottom-sheet-no-ignored-scroll-prop";
33408
+ readonly source: "react-doctor";
33409
+ readonly originallyExternal: false;
33410
+ readonly rule: {
33411
+ readonly framework: "react-native";
33412
+ readonly category: "Bugs";
33413
+ readonly tags: readonly string[];
33414
+ readonly id: string;
33415
+ readonly title?: string;
33416
+ readonly severity: RuleSeverity;
33417
+ readonly requires?: ReadonlyArray<Capability>;
33418
+ readonly minimumInkVersion?: string;
33419
+ readonly disabledWhen?: ReadonlyArray<Capability>;
33420
+ readonly matchByOccurrence?: boolean;
33421
+ readonly defaultEnabled?: boolean;
33422
+ readonly lifecycle?: "retired";
33423
+ readonly scan?: FileScan;
33424
+ readonly committedFilesOnly?: boolean;
33425
+ readonly recommendation?: string;
33426
+ readonly recommendationFor?: (hasCapability: CapabilityQuery) => string | undefined;
33427
+ readonly create: (context: RuleContext) => RuleVisitors;
33428
+ };
33429
+ }, {
33430
+ readonly key: "react-doctor/rn-bottom-sheet-no-state-in-on-animate";
33431
+ readonly id: "rn-bottom-sheet-no-state-in-on-animate";
33432
+ readonly source: "react-doctor";
33433
+ readonly originallyExternal: false;
33434
+ readonly rule: {
33435
+ readonly framework: "react-native";
33436
+ readonly category: "Bugs";
33437
+ readonly tags: readonly string[];
33438
+ readonly id: string;
33439
+ readonly title?: string;
33440
+ readonly severity: RuleSeverity;
33441
+ readonly requires?: ReadonlyArray<Capability>;
33442
+ readonly minimumInkVersion?: string;
33443
+ readonly disabledWhen?: ReadonlyArray<Capability>;
33444
+ readonly matchByOccurrence?: boolean;
33445
+ readonly defaultEnabled?: boolean;
33446
+ readonly lifecycle?: "retired";
33447
+ readonly scan?: FileScan;
33448
+ readonly committedFilesOnly?: boolean;
33449
+ readonly recommendation?: string;
33450
+ readonly recommendationFor?: (hasCapability: CapabilityQuery) => string | undefined;
33451
+ readonly create: (context: RuleContext) => RuleVisitors;
33452
+ };
33237
33453
  }, {
33238
33454
  readonly key: "react-doctor/rn-bottom-sheet-prefer-native";
33239
33455
  readonly id: "rn-bottom-sheet-prefer-native";
@@ -33258,6 +33474,30 @@ declare const RULES: readonly [{
33258
33474
  readonly recommendationFor?: (hasCapability: CapabilityQuery) => string | undefined;
33259
33475
  readonly create: (context: RuleContext) => RuleVisitors;
33260
33476
  };
33477
+ }, {
33478
+ readonly key: "react-doctor/rn-bottom-sheet-use-integrated-scrollable";
33479
+ readonly id: "rn-bottom-sheet-use-integrated-scrollable";
33480
+ readonly source: "react-doctor";
33481
+ readonly originallyExternal: false;
33482
+ readonly rule: {
33483
+ readonly framework: "react-native";
33484
+ readonly category: "Bugs";
33485
+ readonly tags: readonly string[];
33486
+ readonly id: string;
33487
+ readonly title?: string;
33488
+ readonly severity: RuleSeverity;
33489
+ readonly requires?: ReadonlyArray<Capability>;
33490
+ readonly minimumInkVersion?: string;
33491
+ readonly disabledWhen?: ReadonlyArray<Capability>;
33492
+ readonly matchByOccurrence?: boolean;
33493
+ readonly defaultEnabled?: boolean;
33494
+ readonly lifecycle?: "retired";
33495
+ readonly scan?: FileScan;
33496
+ readonly committedFilesOnly?: boolean;
33497
+ readonly recommendation?: string;
33498
+ readonly recommendationFor?: (hasCapability: CapabilityQuery) => string | undefined;
33499
+ readonly create: (context: RuleContext) => RuleVisitors;
33500
+ };
33261
33501
  }, {
33262
33502
  readonly key: "react-doctor/rn-detox-missing-await";
33263
33503
  readonly id: "rn-detox-missing-await";
@@ -33786,6 +34026,30 @@ declare const RULES: readonly [{
33786
34026
  readonly recommendationFor?: (hasCapability: CapabilityQuery) => string | undefined;
33787
34027
  readonly create: (context: RuleContext) => RuleVisitors;
33788
34028
  };
34029
+ }, {
34030
+ readonly key: "react-doctor/rn-platform-shaking-use-direct-import";
34031
+ readonly id: "rn-platform-shaking-use-direct-import";
34032
+ readonly source: "react-doctor";
34033
+ readonly originallyExternal: false;
34034
+ readonly rule: {
34035
+ readonly framework: "react-native";
34036
+ readonly category: "Bugs";
34037
+ readonly tags: readonly string[];
34038
+ readonly id: string;
34039
+ readonly title?: string;
34040
+ readonly severity: RuleSeverity;
34041
+ readonly requires?: ReadonlyArray<Capability>;
34042
+ readonly minimumInkVersion?: string;
34043
+ readonly disabledWhen?: ReadonlyArray<Capability>;
34044
+ readonly matchByOccurrence?: boolean;
34045
+ readonly defaultEnabled?: boolean;
34046
+ readonly lifecycle?: "retired";
34047
+ readonly scan?: FileScan;
34048
+ readonly committedFilesOnly?: boolean;
34049
+ readonly recommendation?: string;
34050
+ readonly recommendationFor?: (hasCapability: CapabilityQuery) => string | undefined;
34051
+ readonly create: (context: RuleContext) => RuleVisitors;
34052
+ };
33789
34053
  }, {
33790
34054
  readonly key: "react-doctor/rn-prefer-content-inset-adjustment";
33791
34055
  readonly id: "rn-prefer-content-inset-adjustment";
@@ -33930,6 +34194,78 @@ declare const RULES: readonly [{
33930
34194
  readonly recommendationFor?: (hasCapability: CapabilityQuery) => string | undefined;
33931
34195
  readonly create: (context: RuleContext) => RuleVisitors;
33932
34196
  };
34197
+ }, {
34198
+ readonly key: "react-doctor/rn-reanimated-4-no-legacy-spring-thresholds";
34199
+ readonly id: "rn-reanimated-4-no-legacy-spring-thresholds";
34200
+ readonly source: "react-doctor";
34201
+ readonly originallyExternal: false;
34202
+ readonly rule: {
34203
+ readonly framework: "react-native";
34204
+ readonly category: "Bugs";
34205
+ readonly tags: readonly string[];
34206
+ readonly id: string;
34207
+ readonly title?: string;
34208
+ readonly severity: RuleSeverity;
34209
+ readonly requires?: ReadonlyArray<Capability>;
34210
+ readonly minimumInkVersion?: string;
34211
+ readonly disabledWhen?: ReadonlyArray<Capability>;
34212
+ readonly matchByOccurrence?: boolean;
34213
+ readonly defaultEnabled?: boolean;
34214
+ readonly lifecycle?: "retired";
34215
+ readonly scan?: FileScan;
34216
+ readonly committedFilesOnly?: boolean;
34217
+ readonly recommendation?: string;
34218
+ readonly recommendationFor?: (hasCapability: CapabilityQuery) => string | undefined;
34219
+ readonly create: (context: RuleContext) => RuleVisitors;
34220
+ };
34221
+ }, {
34222
+ readonly key: "react-doctor/rn-reanimated-4-no-removed-api";
34223
+ readonly id: "rn-reanimated-4-no-removed-api";
34224
+ readonly source: "react-doctor";
34225
+ readonly originallyExternal: false;
34226
+ readonly rule: {
34227
+ readonly framework: "react-native";
34228
+ readonly category: "Bugs";
34229
+ readonly tags: readonly string[];
34230
+ readonly id: string;
34231
+ readonly title?: string;
34232
+ readonly severity: RuleSeverity;
34233
+ readonly requires?: ReadonlyArray<Capability>;
34234
+ readonly minimumInkVersion?: string;
34235
+ readonly disabledWhen?: ReadonlyArray<Capability>;
34236
+ readonly matchByOccurrence?: boolean;
34237
+ readonly defaultEnabled?: boolean;
34238
+ readonly lifecycle?: "retired";
34239
+ readonly scan?: FileScan;
34240
+ readonly committedFilesOnly?: boolean;
34241
+ readonly recommendation?: string;
34242
+ readonly recommendationFor?: (hasCapability: CapabilityQuery) => string | undefined;
34243
+ readonly create: (context: RuleContext) => RuleVisitors;
34244
+ };
34245
+ }, {
34246
+ readonly key: "react-doctor/rn-reanimated-4-use-worklets-scheduler";
34247
+ readonly id: "rn-reanimated-4-use-worklets-scheduler";
34248
+ readonly source: "react-doctor";
34249
+ readonly originallyExternal: false;
34250
+ readonly rule: {
34251
+ readonly framework: "react-native";
34252
+ readonly category: "Bugs";
34253
+ readonly tags: readonly string[];
34254
+ readonly id: string;
34255
+ readonly title?: string;
34256
+ readonly severity: RuleSeverity;
34257
+ readonly requires?: ReadonlyArray<Capability>;
34258
+ readonly minimumInkVersion?: string;
34259
+ readonly disabledWhen?: ReadonlyArray<Capability>;
34260
+ readonly matchByOccurrence?: boolean;
34261
+ readonly defaultEnabled?: boolean;
34262
+ readonly lifecycle?: "retired";
34263
+ readonly scan?: FileScan;
34264
+ readonly committedFilesOnly?: boolean;
34265
+ readonly recommendation?: string;
34266
+ readonly recommendationFor?: (hasCapability: CapabilityQuery) => string | undefined;
34267
+ readonly create: (context: RuleContext) => RuleVisitors;
34268
+ };
33933
34269
  }, {
33934
34270
  readonly key: "react-doctor/rn-scrollview-dynamic-padding";
33935
34271
  readonly id: "rn-scrollview-dynamic-padding";