react-doctor 0.5.8-dev.99f2417 → 0.5.8-dev.a7ad969

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.
package/dist/cli.js CHANGED
@@ -1,5 +1,5 @@
1
1
 
2
- !function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="cf52ec59-cee0-5503-b8f2-a4f98bf77ea4")}catch(e){}}();
2
+ !function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="eb7a01bc-f737-5207-b430-b8fee7a1895f")}catch(e){}}();
3
3
  import { createRequire } from "node:module";
4
4
  import * as NodeChildProcess from "node:child_process";
5
5
  import { execFile, execFileSync, spawn, spawnSync } from "node:child_process";
@@ -38187,7 +38187,6 @@ const collectStringSet = (values) => {
38187
38187
  if (!Array.isArray(values)) return /* @__PURE__ */ new Set();
38188
38188
  return new Set(values.filter((value) => typeof value === "string"));
38189
38189
  };
38190
- const JSX_NO_UNDEF_IDENTIFIER_PATTERN = /^`([^`]+)`/;
38191
38190
  /**
38192
38191
  * Pre-compiles every stateful filter and returns a single
38193
38192
  * `apply(diagnostic)` closure that runs (in order):
@@ -38221,10 +38220,8 @@ const buildDiagnosticPipeline = (input) => {
38221
38220
  const compiledOverrides = compileIgnoreOverrides(userConfig);
38222
38221
  const textComponentNames = collectStringSet(userConfig?.textComponents);
38223
38222
  const rawTextWrapperComponentNames = collectStringSet(userConfig?.rawTextWrapperComponents);
38224
- const runtimeGlobalNames = collectStringSet(userConfig?.runtimeGlobals);
38225
38223
  const hasTextComponents = textComponentNames.size > 0;
38226
38224
  const hasRawTextWrappers = rawTextWrapperComponentNames.size > 0;
38227
- const hasRuntimeGlobals = runtimeGlobalNames.size > 0;
38228
38225
  const fileLinesCache = /* @__PURE__ */ new Map();
38229
38226
  const fileContextCache = /* @__PURE__ */ new Map();
38230
38227
  const libraryFileCache = /* @__PURE__ */ new Map();
@@ -38276,12 +38273,6 @@ const buildDiagnosticPipeline = (input) => {
38276
38273
  if (hasRawTextWrappers && isInsideStringOnlyWrapper(lines, diagnostic.line, diagnostic.column, rawTextWrapperComponentNames)) return true;
38277
38274
  return false;
38278
38275
  };
38279
- const isJsxNoUndefSuppressedByConfig = (diagnostic) => {
38280
- if (!hasRuntimeGlobals) return false;
38281
- if (diagnostic.rule !== "jsx-no-undef") return false;
38282
- const identifierMatch = JSX_NO_UNDEF_IDENTIFIER_PATTERN.exec(diagnostic.message);
38283
- return identifierMatch !== null && runtimeGlobalNames.has(identifierMatch[1]);
38284
- };
38285
38276
  return { apply: (diagnostic) => {
38286
38277
  if (shouldAutoSuppress(diagnostic)) return null;
38287
38278
  let current = diagnostic;
@@ -38306,7 +38297,6 @@ const buildDiagnosticPipeline = (input) => {
38306
38297
  if (isFileIgnoredByPatterns(current.filePath, rootDirectory, ignoredFilePatterns)) return null;
38307
38298
  if (isDiagnosticIgnoredByOverrides(current, rootDirectory, compiledOverrides)) return null;
38308
38299
  if (isRnRawTextSuppressedByConfig(current)) return null;
38309
- if (isJsxNoUndefSuppressedByConfig(current)) return null;
38310
38300
  }
38311
38301
  if (respectInlineDisables && current.line > 0) {
38312
38302
  const lines = getFileLines(current.filePath);
@@ -38784,7 +38774,6 @@ const STRING_ARRAY_FIELD_NAMES = [
38784
38774
  "projects",
38785
38775
  "textComponents",
38786
38776
  "rawTextWrapperComponents",
38787
- "runtimeGlobals",
38788
38777
  "serverAuthFunctionNames"
38789
38778
  ];
38790
38779
  const SURFACE_CONTROL_FIELD_NAMES = [
@@ -40533,11 +40522,6 @@ const toCanonicalPath = (filePath) => {
40533
40522
  };
40534
40523
  const DEAD_CODE_PLUGIN = "deslop";
40535
40524
  const DEAD_CODE_CATEGORY = "Maintainability";
40536
- const REACT_DOCTOR_TOOLCHAIN_PACKAGES = new Set([
40537
- "react-doctor",
40538
- "eslint-plugin-react-doctor",
40539
- "oxlint-plugin-react-doctor"
40540
- ]);
40541
40525
  const DEAD_CODE_WORKER_SCRIPT = `
40542
40526
  const inputChunks = [];
40543
40527
  process.stdin.on("data", (chunk) => inputChunks.push(chunk));
@@ -40843,7 +40827,6 @@ const checkDeadCode = async (options) => {
40843
40827
  });
40844
40828
  }
40845
40829
  for (const unusedDependency of result.unusedDependencies) {
40846
- if (REACT_DOCTOR_TOOLCHAIN_PACKAGES.has(unusedDependency.name)) continue;
40847
40830
  const label = unusedDependency.isDevDependency ? "devDependency" : "dependency";
40848
40831
  diagnostics.push({
40849
40832
  filePath: "package.json",
@@ -45120,7 +45103,7 @@ const makeNoopConsole = () => ({
45120
45103
  });
45121
45104
  //#endregion
45122
45105
  //#region src/cli/utils/version.ts
45123
- const VERSION = "0.5.8-dev.99f2417";
45106
+ const VERSION = "0.5.8-dev.a7ad969";
45124
45107
  //#endregion
45125
45108
  //#region src/cli/utils/json-mode.ts
45126
45109
  let context = null;
@@ -45489,13 +45472,13 @@ const isDevVersion = (version) => version === "0.0.0" || version.includes("-");
45489
45472
  * uploads source-map artifacts under, so stack frames symbolicate. Honors the
45490
45473
  * standard `SENTRY_RELEASE` override.
45491
45474
  */
45492
- const resolveSentryRelease = () => process.env.SENTRY_RELEASE || `react-doctor@0.5.8-dev.99f2417`;
45475
+ const resolveSentryRelease = () => process.env.SENTRY_RELEASE || `react-doctor@0.5.8-dev.a7ad969`;
45493
45476
  /**
45494
45477
  * Deployment environment shown in Sentry's environment filter. Defaults to
45495
45478
  * `production` for tagged releases and `development` for dev/unbuilt versions,
45496
45479
  * overridable via the standard `SENTRY_ENVIRONMENT` env var.
45497
45480
  */
45498
- const resolveSentryEnvironment = () => process.env.SENTRY_ENVIRONMENT || (isDevVersion("0.5.8-dev.99f2417") ? "development" : "production");
45481
+ const resolveSentryEnvironment = () => process.env.SENTRY_ENVIRONMENT || (isDevVersion("0.5.8-dev.a7ad969") ? "development" : "production");
45499
45482
  /**
45500
45483
  * Performance-tracing sample rate in `[0, 1]`. Reads `SENTRY_TRACES_SAMPLE_RATE`
45501
45484
  * (set to `0` to disable tracing) and falls back to
@@ -50579,7 +50562,6 @@ const NON_BLOCKING_REACT_DOCTOR_COMMAND = [
50579
50562
  `if ${REACT_DOCTOR_COMMAND} > "$react_doctor_output" 2>&1; then`,
50580
50563
  "rm -f \"$react_doctor_output\";",
50581
50564
  "else",
50582
- "cat \"$react_doctor_output\" >&2;",
50583
50565
  "rm -f \"$react_doctor_output\";",
50584
50566
  `printf "%s\\n" "React Doctor found staged regressions." "Run ${REACT_DOCTOR_COMMAND} to inspect." "Want them fixed? Ask your agent to run that command and resolve the findings." >&2;`,
50585
50567
  "fi"
@@ -52520,7 +52502,6 @@ const buildReactDoctorHookBlock = () => [
52520
52502
  "if react_doctor_scan_staged_files > \"$react_doctor_output\" 2>&1; then",
52521
52503
  " rm -f \"$react_doctor_output\"",
52522
52504
  "else",
52523
- " cat \"$react_doctor_output\" >&2",
52524
52505
  " rm -f \"$react_doctor_output\"",
52525
52506
  ` printf '%s\\n' "React Doctor found staged regressions." "Run ${REACT_DOCTOR_COMMAND} to inspect." "Want them fixed? Ask your agent to run that command and resolve the findings." >&2`,
52526
52507
  "fi",
@@ -55783,4 +55764,4 @@ Promise.resolve().then(() => assertNoRemovedFlags(process.argv)).then(() => prog
55783
55764
  export {};
55784
55765
 
55785
55766
  //# sourceMappingURL=cli.js.map
55786
- //# debugId=cf52ec59-cee0-5503-b8f2-a4f98bf77ea4
55767
+ //# debugId=eb7a01bc-f737-5207-b430-b8fee7a1895f
package/dist/index.d.ts CHANGED
@@ -9271,15 +9271,6 @@ interface ReactDoctorConfig {
9271
9271
  * suppresses regardless of sibling content.
9272
9272
  */
9273
9273
  rawTextWrapperComponents?: string[];
9274
- /**
9275
- * Capitalized identifiers that exist at runtime but aren't imported in
9276
- * the file that uses them — react-live's `<LiveProvider scope={...}>`,
9277
- * Storybook globals, MDX live blocks, or an ambient `declare global` in a
9278
- * separate `.d.ts`. The single-file `jsx-no-undef` rule can't see those
9279
- * bindings and would report `<DatePicker />` as an undefined JSX component.
9280
- * List the injected names here and `jsx-no-undef` treats them as known.
9281
- */
9282
- runtimeGlobals?: string[];
9283
9274
  /**
9284
9275
  * Project-level allowlist of function names that the
9285
9276
  * `server-auth-actions` rule treats as an auth check at the top of
package/dist/index.js CHANGED
@@ -1,5 +1,5 @@
1
1
 
2
- !function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="0bd202f9-5e22-5625-86dc-458270afbcca")}catch(e){}}();
2
+ !function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="9807b1bf-1e62-5421-ad35-d1f4129c1538")}catch(e){}}();
3
3
  import { r as __toESM$1, t as __commonJSMin$1 } from "./chunk-N93fKeF6.js";
4
4
  import { createRequire } from "node:module";
5
5
  import * as NFS from "node:fs";
@@ -34999,7 +34999,6 @@ const collectStringSet = (values) => {
34999
34999
  if (!Array.isArray(values)) return /* @__PURE__ */ new Set();
35000
35000
  return new Set(values.filter((value) => typeof value === "string"));
35001
35001
  };
35002
- const JSX_NO_UNDEF_IDENTIFIER_PATTERN = /^`([^`]+)`/;
35003
35002
  /**
35004
35003
  * Pre-compiles every stateful filter and returns a single
35005
35004
  * `apply(diagnostic)` closure that runs (in order):
@@ -35033,10 +35032,8 @@ const buildDiagnosticPipeline = (input) => {
35033
35032
  const compiledOverrides = compileIgnoreOverrides(userConfig);
35034
35033
  const textComponentNames = collectStringSet(userConfig?.textComponents);
35035
35034
  const rawTextWrapperComponentNames = collectStringSet(userConfig?.rawTextWrapperComponents);
35036
- const runtimeGlobalNames = collectStringSet(userConfig?.runtimeGlobals);
35037
35035
  const hasTextComponents = textComponentNames.size > 0;
35038
35036
  const hasRawTextWrappers = rawTextWrapperComponentNames.size > 0;
35039
- const hasRuntimeGlobals = runtimeGlobalNames.size > 0;
35040
35037
  const fileLinesCache = /* @__PURE__ */ new Map();
35041
35038
  const fileContextCache = /* @__PURE__ */ new Map();
35042
35039
  const libraryFileCache = /* @__PURE__ */ new Map();
@@ -35088,12 +35085,6 @@ const buildDiagnosticPipeline = (input) => {
35088
35085
  if (hasRawTextWrappers && isInsideStringOnlyWrapper(lines, diagnostic.line, diagnostic.column, rawTextWrapperComponentNames)) return true;
35089
35086
  return false;
35090
35087
  };
35091
- const isJsxNoUndefSuppressedByConfig = (diagnostic) => {
35092
- if (!hasRuntimeGlobals) return false;
35093
- if (diagnostic.rule !== "jsx-no-undef") return false;
35094
- const identifierMatch = JSX_NO_UNDEF_IDENTIFIER_PATTERN.exec(diagnostic.message);
35095
- return identifierMatch !== null && runtimeGlobalNames.has(identifierMatch[1]);
35096
- };
35097
35088
  return { apply: (diagnostic) => {
35098
35089
  if (shouldAutoSuppress(diagnostic)) return null;
35099
35090
  let current = diagnostic;
@@ -35118,7 +35109,6 @@ const buildDiagnosticPipeline = (input) => {
35118
35109
  if (isFileIgnoredByPatterns(current.filePath, rootDirectory, ignoredFilePatterns)) return null;
35119
35110
  if (isDiagnosticIgnoredByOverrides(current, rootDirectory, compiledOverrides)) return null;
35120
35111
  if (isRnRawTextSuppressedByConfig(current)) return null;
35121
- if (isJsxNoUndefSuppressedByConfig(current)) return null;
35122
35112
  }
35123
35113
  if (respectInlineDisables && current.line > 0) {
35124
35114
  const lines = getFileLines(current.filePath);
@@ -35596,7 +35586,6 @@ const STRING_ARRAY_FIELD_NAMES = [
35596
35586
  "projects",
35597
35587
  "textComponents",
35598
35588
  "rawTextWrapperComponents",
35599
- "runtimeGlobals",
35600
35589
  "serverAuthFunctionNames"
35601
35590
  ];
35602
35591
  const SURFACE_CONTROL_FIELD_NAMES = [
@@ -37301,11 +37290,6 @@ const toCanonicalPath = (filePath) => {
37301
37290
  };
37302
37291
  const DEAD_CODE_PLUGIN = "deslop";
37303
37292
  const DEAD_CODE_CATEGORY = "Maintainability";
37304
- const REACT_DOCTOR_TOOLCHAIN_PACKAGES = new Set([
37305
- "react-doctor",
37306
- "eslint-plugin-react-doctor",
37307
- "oxlint-plugin-react-doctor"
37308
- ]);
37309
37293
  const DEAD_CODE_WORKER_SCRIPT = `
37310
37294
  const inputChunks = [];
37311
37295
  process.stdin.on("data", (chunk) => inputChunks.push(chunk));
@@ -37611,7 +37595,6 @@ const checkDeadCode = async (options) => {
37611
37595
  });
37612
37596
  }
37613
37597
  for (const unusedDependency of result.unusedDependencies) {
37614
- if (REACT_DOCTOR_TOOLCHAIN_PACKAGES.has(unusedDependency.name)) continue;
37615
37598
  const label = unusedDependency.isDevDependency ? "devDependency" : "dependency";
37616
37599
  diagnostics.push({
37617
37600
  filePath: "package.json",
@@ -41662,4 +41645,4 @@ const toJsonReport = (result, options) => buildJsonReport({
41662
41645
  export { AmbiguousProjectError, NoReactDependencyError, NotADirectoryError, PackageJsonNotFoundError, ProjectNotFoundError, ReactDoctorError, buildJsonReport, buildJsonReportError, clearCaches, defineConfig, diagnose, filterSourceFiles, getDiffInfo, isProjectDiscoveryError, isReactDoctorError, summarizeDiagnostics, toJsonReport };
41663
41646
 
41664
41647
  //# sourceMappingURL=index.js.map
41665
- //# debugId=0bd202f9-5e22-5625-86dc-458270afbcca
41648
+ //# debugId=9807b1bf-1e62-5421-ad35-d1f4129c1538
package/dist/lsp.js CHANGED
@@ -35054,7 +35054,6 @@ const collectStringSet = (values) => {
35054
35054
  if (!Array.isArray(values)) return /* @__PURE__ */ new Set();
35055
35055
  return new Set(values.filter((value) => typeof value === "string"));
35056
35056
  };
35057
- const JSX_NO_UNDEF_IDENTIFIER_PATTERN = /^`([^`]+)`/;
35058
35057
  /**
35059
35058
  * Pre-compiles every stateful filter and returns a single
35060
35059
  * `apply(diagnostic)` closure that runs (in order):
@@ -35088,10 +35087,8 @@ const buildDiagnosticPipeline = (input) => {
35088
35087
  const compiledOverrides = compileIgnoreOverrides(userConfig);
35089
35088
  const textComponentNames = collectStringSet(userConfig?.textComponents);
35090
35089
  const rawTextWrapperComponentNames = collectStringSet(userConfig?.rawTextWrapperComponents);
35091
- const runtimeGlobalNames = collectStringSet(userConfig?.runtimeGlobals);
35092
35090
  const hasTextComponents = textComponentNames.size > 0;
35093
35091
  const hasRawTextWrappers = rawTextWrapperComponentNames.size > 0;
35094
- const hasRuntimeGlobals = runtimeGlobalNames.size > 0;
35095
35092
  const fileLinesCache = /* @__PURE__ */ new Map();
35096
35093
  const fileContextCache = /* @__PURE__ */ new Map();
35097
35094
  const libraryFileCache = /* @__PURE__ */ new Map();
@@ -35143,12 +35140,6 @@ const buildDiagnosticPipeline = (input) => {
35143
35140
  if (hasRawTextWrappers && isInsideStringOnlyWrapper(lines, diagnostic.line, diagnostic.column, rawTextWrapperComponentNames)) return true;
35144
35141
  return false;
35145
35142
  };
35146
- const isJsxNoUndefSuppressedByConfig = (diagnostic) => {
35147
- if (!hasRuntimeGlobals) return false;
35148
- if (diagnostic.rule !== "jsx-no-undef") return false;
35149
- const identifierMatch = JSX_NO_UNDEF_IDENTIFIER_PATTERN.exec(diagnostic.message);
35150
- return identifierMatch !== null && runtimeGlobalNames.has(identifierMatch[1]);
35151
- };
35152
35143
  return { apply: (diagnostic) => {
35153
35144
  if (shouldAutoSuppress(diagnostic)) return null;
35154
35145
  let current = diagnostic;
@@ -35173,7 +35164,6 @@ const buildDiagnosticPipeline = (input) => {
35173
35164
  if (isFileIgnoredByPatterns(current.filePath, rootDirectory, ignoredFilePatterns)) return null;
35174
35165
  if (isDiagnosticIgnoredByOverrides(current, rootDirectory, compiledOverrides)) return null;
35175
35166
  if (isRnRawTextSuppressedByConfig(current)) return null;
35176
- if (isJsxNoUndefSuppressedByConfig(current)) return null;
35177
35167
  }
35178
35168
  if (respectInlineDisables && current.line > 0) {
35179
35169
  const lines = getFileLines(current.filePath);
@@ -35629,7 +35619,6 @@ const STRING_ARRAY_FIELD_NAMES = [
35629
35619
  "projects",
35630
35620
  "textComponents",
35631
35621
  "rawTextWrapperComponents",
35632
- "runtimeGlobals",
35633
35622
  "serverAuthFunctionNames"
35634
35623
  ];
35635
35624
  const SURFACE_CONTROL_FIELD_NAMES = [
@@ -37286,11 +37275,6 @@ const toCanonicalPath = (filePath) => {
37286
37275
  };
37287
37276
  const DEAD_CODE_PLUGIN = "deslop";
37288
37277
  const DEAD_CODE_CATEGORY = "Maintainability";
37289
- const REACT_DOCTOR_TOOLCHAIN_PACKAGES = new Set([
37290
- "react-doctor",
37291
- "eslint-plugin-react-doctor",
37292
- "oxlint-plugin-react-doctor"
37293
- ]);
37294
37278
  const DEAD_CODE_WORKER_SCRIPT = `
37295
37279
  const inputChunks = [];
37296
37280
  process.stdin.on("data", (chunk) => inputChunks.push(chunk));
@@ -37596,7 +37580,6 @@ const checkDeadCode = async (options) => {
37596
37580
  });
37597
37581
  }
37598
37582
  for (const unusedDependency of result.unusedDependencies) {
37599
- if (REACT_DOCTOR_TOOLCHAIN_PACKAGES.has(unusedDependency.name)) continue;
37600
37583
  const label = unusedDependency.isDevDependency ? "devDependency" : "dependency";
37601
37584
  diagnostics.push({
37602
37585
  filePath: "package.json",
@@ -43382,5 +43365,5 @@ const startLanguageServer = () => {
43382
43365
  };
43383
43366
  //#endregion
43384
43367
  export { startLanguageServer };
43385
- !function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="0423aeac-9239-56af-8e8c-ada39e5172dd")}catch(e){}}();
43386
- //# debugId=0423aeac-9239-56af-8e8c-ada39e5172dd
43368
+ !function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="c5b6c740-461d-5f65-a993-9e6d35ad9113")}catch(e){}}();
43369
+ //# debugId=c5b6c740-461d-5f65-a993-9e6d35ad9113
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "react-doctor",
3
- "version": "0.5.8-dev.99f2417",
3
+ "version": "0.5.8-dev.a7ad969",
4
4
  "description": "Your agent writes bad React. This catches it",
5
5
  "keywords": [
6
6
  "accessibility",
@@ -65,7 +65,7 @@
65
65
  "vscode-languageserver-textdocument": "^1.0.12",
66
66
  "vscode-uri": "^3.1.0",
67
67
  "deslop-js": "0.5.8",
68
- "oxlint-plugin-react-doctor": "0.5.8-dev.99f2417"
68
+ "oxlint-plugin-react-doctor": "0.5.8-dev.a7ad969"
69
69
  },
70
70
  "devDependencies": {
71
71
  "@types/babel__code-frame": "^7.27.0",