react-doctor 0.7.1-dev.160f84c → 0.7.1-dev.5809083

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]="68e9635d-7a10-5469-afd5-edb7df5973ae")}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]="69a45de3-fe65-53dc-aed2-17f9cea22159")}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";
@@ -41807,7 +41807,7 @@ var Git = class Git extends Service()("react-doctor/Git") {
41807
41807
  })),
41808
41808
  showStagedContent: (directory, relativePath, options) => runCommand({
41809
41809
  command: "git",
41810
- args: ["show", `:${relativePath}`],
41810
+ args: ["show", `:./${relativePath}`],
41811
41811
  directory,
41812
41812
  maxStdoutBytes: options?.maxBufferBytes
41813
41813
  }).pipe(map$3((result) => result.status === 0 ? result.stdout : null)),
@@ -45924,7 +45924,7 @@ const makeNoopConsole = () => ({
45924
45924
  });
45925
45925
  //#endregion
45926
45926
  //#region src/cli/utils/version.ts
45927
- const VERSION = "0.7.1-dev.160f84c";
45927
+ const VERSION = "0.7.1-dev.5809083";
45928
45928
  //#endregion
45929
45929
  //#region src/cli/utils/json-mode.ts
45930
45930
  let context = null;
@@ -46293,13 +46293,13 @@ const isDevVersion = (version) => version === "0.0.0" || version.includes("-");
46293
46293
  * uploads source-map artifacts under, so stack frames symbolicate. Honors the
46294
46294
  * standard `SENTRY_RELEASE` override.
46295
46295
  */
46296
- const resolveSentryRelease = () => process.env.SENTRY_RELEASE || `react-doctor@0.7.1-dev.160f84c`;
46296
+ const resolveSentryRelease = () => process.env.SENTRY_RELEASE || `react-doctor@0.7.1-dev.5809083`;
46297
46297
  /**
46298
46298
  * Deployment environment shown in Sentry's environment filter. Defaults to
46299
46299
  * `production` for tagged releases and `development` for dev/unbuilt versions,
46300
46300
  * overridable via the standard `SENTRY_ENVIRONMENT` env var.
46301
46301
  */
46302
- const resolveSentryEnvironment = () => process.env.SENTRY_ENVIRONMENT || (isDevVersion("0.7.1-dev.160f84c") ? "development" : "production");
46302
+ const resolveSentryEnvironment = () => process.env.SENTRY_ENVIRONMENT || (isDevVersion("0.7.1-dev.5809083") ? "development" : "production");
46303
46303
  /**
46304
46304
  * Performance-tracing sample rate in `[0, 1]`. Reads `SENTRY_TRACES_SAMPLE_RATE`
46305
46305
  * (set to `0` to disable tracing) and falls back to
@@ -58143,7 +58143,7 @@ const buildRuntimeLayers = (input) => {
58143
58143
  const linterLayer = input.shouldSkipLint ? Linter.layerOf([]) : Linter.layerOxlint;
58144
58144
  const deadCodeLayer = input.shouldRunDeadCode ? DeadCode.layerNode : DeadCode.layerOf([]);
58145
58145
  const scoreLayer = input.shouldComputeScore ? Score.layerHttp : Score.layerOf(null);
58146
- const supplyChainLayer = input.userConfig?.supplyChain?.enabled === false ? SupplyChain.layerOf([]) : SupplyChain.layerNode;
58146
+ const supplyChainLayer = input.shouldRunSupplyChain ? SupplyChain.layerNode : SupplyChain.layerOf([]);
58147
58147
  const projectLayer = input.projectInfoOverride === void 0 ? Project.layerNode : Project.layerOf(input.projectInfoOverride);
58148
58148
  const progressLayer = input.shouldShowProgressSpinners ? Progress.layerOra(buildSpinnerProgressHandle) : Progress.layerNoop;
58149
58149
  const baseLayers = mergeAll$1(projectLayer, input.hasConfigOverride ? Config.layerOf({
@@ -58499,21 +58499,22 @@ const resolveDotenvFingerprint = (projectDirectory) => {
58499
58499
  return [];
58500
58500
  }
58501
58501
  };
58502
- const hasHiddenTrackedFileState = (projectDirectory) => {
58502
+ const isGitIdentityTrustworthy = (projectDirectory) => {
58503
58503
  const output = runGit(projectDirectory, ["ls-files", "-v"]);
58504
- if (output === null) return true;
58505
- return output.split("\n").some((line) => line.length > 0 && line[0] !== "H");
58504
+ if (output === null) return false;
58505
+ const entryLines = output.split("\n").filter((line) => line.length > 0);
58506
+ return entryLines.length > 0 && entryLines.every((line) => line[0] === "H");
58506
58507
  };
58507
58508
  const resolveCacheFilePath = (projectDirectory) => path.join(resolveReactDoctorCacheDir(projectDirectory), SCAN_RESULT_CACHE_FILENAME);
58508
58509
  const readPersistedCache = (cacheFilePath) => {
58509
58510
  try {
58510
58511
  const parsed = JSON.parse(fs.readFileSync(cacheFilePath, "utf8"));
58511
- if (!isRecord(parsed) || parsed.version !== 3) return {
58512
- version: 3,
58512
+ if (!isRecord(parsed) || parsed.version !== 4) return {
58513
+ version: 4,
58513
58514
  entries: []
58514
58515
  };
58515
58516
  if (!Array.isArray(parsed.entries)) return {
58516
- version: 3,
58517
+ version: 4,
58517
58518
  entries: []
58518
58519
  };
58519
58520
  const entries = [];
@@ -58523,12 +58524,12 @@ const readPersistedCache = (cacheFilePath) => {
58523
58524
  entries.push(entry);
58524
58525
  }
58525
58526
  return {
58526
- version: 3,
58527
+ version: 4,
58527
58528
  entries
58528
58529
  };
58529
58530
  } catch {
58530
58531
  return {
58531
- version: 3,
58532
+ version: 4,
58532
58533
  entries: []
58533
58534
  };
58534
58535
  }
@@ -58560,6 +58561,7 @@ const resolveProjectIdentity = (projectDirectory) => {
58560
58561
  return path.resolve(projectDirectory);
58561
58562
  }
58562
58563
  };
58564
+ const resolveManifestContentHash = (projectDirectory) => hashFileContents(getPackageJsonPath(projectDirectory));
58563
58565
  const fileFingerprint = (filePath) => {
58564
58566
  try {
58565
58567
  const stat = fs.statSync(filePath);
@@ -58582,14 +58584,14 @@ const resolveToolchainFingerprint = (nodeBinaryPath) => {
58582
58584
  };
58583
58585
  const buildScanResultCacheKey = (input) => {
58584
58586
  if (isCacheGloballyDisabled()) return null;
58585
- if (hasHiddenTrackedFileState(input.projectDirectory)) return null;
58587
+ if (!isGitIdentityTrustworthy(input.projectDirectory)) return null;
58586
58588
  const worktreeFingerprint = buildWorktreeFingerprint(input.projectDirectory);
58587
58589
  if (worktreeFingerprint === null) return null;
58588
58590
  const headSha = readHeadSha(input.projectDirectory);
58589
58591
  if (headSha === null) return null;
58590
58592
  if (stringifyStableJson(input.userConfig) === null) return null;
58591
58593
  const cacheKeyJson = stringifyStableJson({
58592
- schemaVersion: 3,
58594
+ schemaVersion: 4,
58593
58595
  projectIdentity: resolveProjectIdentity(input.projectDirectory),
58594
58596
  headSha,
58595
58597
  worktreeFingerprint,
@@ -58604,6 +58606,7 @@ const buildScanResultCacheKey = (input) => {
58604
58606
  engineOptions: {
58605
58607
  lint: input.options.lint,
58606
58608
  deadCode: input.options.deadCode,
58609
+ supplyChain: input.options.supplyChain,
58607
58610
  includePaths: [...input.options.includePaths].sort(),
58608
58611
  customRulesOnly: input.options.customRulesOnly,
58609
58612
  respectInlineDisables: input.options.respectInlineDisables,
@@ -58629,17 +58632,24 @@ const createScanResultCache = (projectDirectory) => {
58629
58632
  for (const entry of persistedCache.entries) entries.set(entry.key, entry);
58630
58633
  const persist = () => {
58631
58634
  writePersistedCache(cacheFilePath, {
58632
- version: 3,
58635
+ version: 4,
58633
58636
  entries: [...entries.values()].sort((firstEntry, secondEntry) => secondEntry.createdAtMs - firstEntry.createdAtMs).slice(0, 20)
58634
58637
  });
58635
58638
  };
58636
58639
  return {
58637
- lookup: (key) => entries.get(key)?.payload ?? null,
58640
+ lookup: (key) => {
58641
+ const payload = entries.get(key)?.payload;
58642
+ if (payload === void 0) return null;
58643
+ return resolveProjectIdentity(payload.directory) === resolveProjectIdentity(projectDirectory) && (payload.manifestContentHash ?? null) === resolveManifestContentHash(projectDirectory) ? payload : null;
58644
+ },
58638
58645
  store: (key, payload) => {
58639
58646
  entries.set(key, {
58640
58647
  key,
58641
58648
  createdAtMs: Date.now(),
58642
- payload
58649
+ payload: {
58650
+ ...payload,
58651
+ manifestContentHash: resolveManifestContentHash(projectDirectory)
58652
+ }
58643
58653
  });
58644
58654
  persist();
58645
58655
  }
@@ -58904,6 +58914,7 @@ const buildScanAttributes = (input) => {
58904
58914
  maxDurationMs: input.maxDurationMs,
58905
58915
  lint: input.lint,
58906
58916
  deadCode: input.deadCode,
58917
+ supplyChain: input.supplyChain,
58907
58918
  scoreOnly: input.scoreOnly,
58908
58919
  noScore: input.noScore,
58909
58920
  respectInlineDisables: input.respectInlineDisables,
@@ -60178,6 +60189,7 @@ const buildIgnoredTags = (userConfig) => {
60178
60189
  const mergeInspectOptions = (inputOptions, userConfig) => ({
60179
60190
  lint: inputOptions.lint ?? userConfig?.lint ?? true,
60180
60191
  deadCode: inputOptions.deadCode ?? userConfig?.deadCode ?? true,
60192
+ supplyChain: inputOptions.supplyChain ?? userConfig?.supplyChain?.enabled ?? true,
60181
60193
  verbose: inputOptions.verbose ?? userConfig?.verbose ?? false,
60182
60194
  outputDirectory: inputOptions.outputDirectory || null,
60183
60195
  scoreOnly: inputOptions.scoreOnly ?? false,
@@ -60217,6 +60229,7 @@ const buildRunEventConfig = (options, userConfig, hasCustomConfig, resolvedWorke
60217
60229
  maxDurationMs: options.maxDurationMs,
60218
60230
  lint: options.lint,
60219
60231
  deadCode: options.deadCode,
60232
+ supplyChain: options.supplyChain,
60220
60233
  scoreOnly: options.scoreOnly,
60221
60234
  noScore: options.noScore,
60222
60235
  respectInlineDisables: options.respectInlineDisables,
@@ -60300,6 +60313,7 @@ const runBaselineComparison = async (params) => {
60300
60313
  projectInfoOverride: params.headProjectInfo,
60301
60314
  shouldSkipLint: !params.options.lint || !params.resolvedNodeBinaryPath,
60302
60315
  shouldRunDeadCode: false,
60316
+ shouldRunSupplyChain: params.options.supplyChain,
60303
60317
  shouldComputeScore: false,
60304
60318
  shouldShowProgressSpinners: false,
60305
60319
  oxlintConcurrency: params.options.concurrency
@@ -60388,6 +60402,7 @@ const runInspectWithRuntime = async (directory, options, userConfig, hasConfigOv
60388
60402
  configSourceDirectory,
60389
60403
  shouldSkipLint: !options.lint || lintBindingMissing,
60390
60404
  shouldRunDeadCode: options.deadCode,
60405
+ shouldRunSupplyChain: options.supplyChain,
60391
60406
  shouldComputeScore: !options.noScore,
60392
60407
  shouldShowProgressSpinners,
60393
60408
  oxlintConcurrency: options.concurrency
@@ -62673,8 +62688,8 @@ const resolveParallelFlag = (parallel) => parallel === false ? 1 : void 0;
62673
62688
  * accepts. Flag-derived fields only (`scoreOnly`, `noScore`, `silent`,
62674
62689
  * `isCi`): every `userConfig` fallback — including `noScore` — lives in
62675
62690
  * `inspect()`'s merge layer, which sees each project's module-merged
62676
- * config. The plain boolean knobs (`lint`, `deadCode`, `verbose`) pass
62677
- * through unchanged for the same reason. This resolver reads
62691
+ * config. The plain boolean knobs (`lint`, `deadCode`, `supplyChain`,
62692
+ * `verbose`) pass through unchanged for the same reason. This resolver reads
62678
62693
  * `userConfig` only to decide the `--blocking warning` gate.
62679
62694
  */
62680
62695
  const resolveCliInspectOptions = (flags, userConfig) => {
@@ -62682,6 +62697,7 @@ const resolveCliInspectOptions = (flags, userConfig) => {
62682
62697
  return {
62683
62698
  lint: flags.lint,
62684
62699
  deadCode: flags.deadCode,
62700
+ supplyChain: flags.supplyChain,
62685
62701
  verbose: flags.verbose,
62686
62702
  outputDirectory: flags.outputDir,
62687
62703
  respectInlineDisables: flags.respectInlineDisables === false ? false : void 0,
@@ -63232,7 +63248,7 @@ const inspectAction = async (directory, flags) => {
63232
63248
  const scanDirectory = projectScanTarget.resolvedDirectory;
63233
63249
  const projectConfig = projectDirectory === resolvedDirectory ? userConfig : mergeReactDoctorConfigs(userConfig, projectScanTarget.userConfig ?? void 0);
63234
63250
  const projectConfigSourceDirectory = projectScanTarget.userConfig?.plugins === void 0 ? scanTarget.configSourceDirectory : projectScanTarget.configSourceDirectory;
63235
- const supplyChainEnabled = projectConfig?.supplyChain?.enabled !== false;
63251
+ const supplyChainEnabled = flags.supplyChain ?? projectConfig?.supplyChain?.enabled !== false;
63236
63252
  let includePaths;
63237
63253
  let supplyChainManifestChanged = false;
63238
63254
  if (isDiffMode) {
@@ -64152,10 +64168,12 @@ const ROOT_FLAG_SPEC = {
64152
64168
  "--no-parallel",
64153
64169
  "--no-respect-inline-disables",
64154
64170
  "--no-score",
64171
+ "--no-supply-chain",
64155
64172
  "--no-telemetry",
64156
64173
  "--no-warnings",
64157
64174
  "--score",
64158
64175
  "--staged",
64176
+ "--supply-chain",
64159
64177
  "--verbose",
64160
64178
  "--version",
64161
64179
  "--warnings",
@@ -64404,7 +64422,7 @@ ${highlighter.dim("Learn more:")}
64404
64422
  ${highlighter.info(CI_URL)}
64405
64423
  `;
64406
64424
  const collectCategoryOption = (value, previousValues) => [...previousValues ?? [], value];
64407
- const program = new Command().name("react-doctor").description("Diagnose React codebase health").version(VERSION, "-v, --version", "display the version number").argument("[directory]", "project directory to scan", ".").option("--lint", "enable linting").option("--no-lint", "skip linting").option("--dead-code", "enable dead-code analysis (default)").option("--no-dead-code", "skip dead-code analysis (unused files / exports / dependencies, circular imports)").option("--verbose", "show every rule and per-file details (default shows top 3 rules)").option("--debug", "force a Sentry trace and print its id at the end (paste it into a bug report)").option("--output-dir <dir>", "directory for the full diagnostics dump (default: a temp folder)").option("--score", "output only the score").option("--json", "output a single structured JSON report (suppresses other output)").option("--json-compact", "with --json, emit compact JSON (no indentation)").option("--json-out <path>", "with --json, write the report to a file instead of stdout").option("-y, --yes", "skip prompts, scan all workspace projects").option("--no-parallel", "lint serially with one worker (default: parallel across CPU cores; set the worker count with REACT_DOCTOR_PARALLEL)").option("--project <name>", "select projects: workspace names or directory paths (comma-separated for multiple); overrides the `projects` config field").option("--scope <value>", "how much to scan/report: full (default), files, changed (only new issues vs base), or lines (only changed lines)").option("--base <ref>", "base git ref for files/changed/lines scope (auto-detected when omitted)").addOption(new Option("--diff [base]", "[deprecated] alias for --scope changed (pass `false` to force a full scan)").hideHelp()).addOption(new Option("--changed-files-from <file>", "scan source files listed in a newline-delimited changed-files file").hideHelp()).option("--no-score", "skip the score API, the share URL, and crash reporting").addOption(new Option("--category <category>", "only show diagnostics in a category (repeatable; e.g. Security)").argParser(collectCategoryOption)).option("--no-telemetry", "alias for --no-score (skip the score API, share URL, and crash reporting)").option("--staged", "scan only staged (git index) files for pre-commit hooks").option("--max-duration <seconds>", "scan time budget for the whole run, shared across workspace projects: past it, remaining lint batches and dead-code are skipped and partial results are reported (skipped files are listed in the JSON report)").option("--blocking <level>", "severity that fails CI: error (default), warning, or none (advisory)").addOption(new Option("--fail-on <level>", "[deprecated] alias for --blocking <level>").hideHelp()).option("--no-respect-inline-disables", "audit mode: neutralize inline lint suppressions before scanning").option("--warnings", "show warning-severity diagnostics (default)").option("--no-warnings", "hide warning-severity diagnostics (errors only)").option("--color", "force colored output").option("--no-color", "disable colored output (also honors NO_COLOR)").addHelpText("after", renderRootHelpEpilog);
64425
+ const program = new Command().name("react-doctor").description("Diagnose React codebase health").version(VERSION, "-v, --version", "display the version number").argument("[directory]", "project directory to scan", ".").option("--lint", "enable linting").option("--no-lint", "skip linting").option("--dead-code", "enable dead-code analysis (default)").option("--no-dead-code", "skip dead-code analysis (unused files / exports / dependencies, circular imports)").option("--supply-chain", "enable the dependency supply-chain scan (default)").option("--no-supply-chain", "skip the dependency supply-chain scan (Socket.dev dependency health checks)").option("--verbose", "show every rule and per-file details (default shows top 3 rules)").option("--debug", "force a Sentry trace and print its id at the end (paste it into a bug report)").option("--output-dir <dir>", "directory for the full diagnostics dump (default: a temp folder)").option("--score", "output only the score").option("--json", "output a single structured JSON report (suppresses other output)").option("--json-compact", "with --json, emit compact JSON (no indentation)").option("--json-out <path>", "with --json, write the report to a file instead of stdout").option("-y, --yes", "skip prompts, scan all workspace projects").option("--no-parallel", "lint serially with one worker (default: parallel across CPU cores; set the worker count with REACT_DOCTOR_PARALLEL)").option("--project <name>", "select projects: workspace names or directory paths (comma-separated for multiple); overrides the `projects` config field").option("--scope <value>", "how much to scan/report: full (default), files, changed (only new issues vs base), or lines (only changed lines)").option("--base <ref>", "base git ref for files/changed/lines scope (auto-detected when omitted)").addOption(new Option("--diff [base]", "[deprecated] alias for --scope changed (pass `false` to force a full scan)").hideHelp()).addOption(new Option("--changed-files-from <file>", "scan source files listed in a newline-delimited changed-files file").hideHelp()).option("--no-score", "skip the score API, the share URL, and crash reporting").addOption(new Option("--category <category>", "only show diagnostics in a category (repeatable; e.g. Security)").argParser(collectCategoryOption)).option("--no-telemetry", "alias for --no-score (skip the score API, share URL, and crash reporting)").option("--staged", "scan only staged (git index) files for pre-commit hooks").option("--max-duration <seconds>", "scan time budget for the whole run, shared across workspace projects: past it, remaining lint batches and dead-code are skipped and partial results are reported (skipped files are listed in the JSON report)").option("--blocking <level>", "severity that fails CI: error (default), warning, or none (advisory)").addOption(new Option("--fail-on <level>", "[deprecated] alias for --blocking <level>").hideHelp()).option("--no-respect-inline-disables", "audit mode: neutralize inline lint suppressions before scanning").option("--warnings", "show warning-severity diagnostics (default)").option("--no-warnings", "hide warning-severity diagnostics (errors only)").option("--color", "force colored output").option("--no-color", "disable colored output (also honors NO_COLOR)").addHelpText("after", renderRootHelpEpilog);
64408
64426
  program.action(inspectAction);
64409
64427
  program.command("why <location>").description("Explain why a rule fired (or why a suppression didn't apply) at a file:line").option("--project <name>", "select projects: workspace names or directory paths (comma-separated for multiple)").option("-c, --cwd <cwd>", "working directory", process.cwd()).option("--color", "force colored output").option("--no-color", "disable colored output (also honors NO_COLOR)").action((location, options) => whyAction(location, options));
64410
64428
  program.command("install").alias("setup").description("Install the react-doctor skill into your coding agents and optional git hook").option("-y, --yes", "skip prompts, install for all detected agents").option("--dry-run", "show what would be installed without writing files").option("--agent-hooks", "install native non-blocking agent hooks for Claude Code and Cursor").option("-c, --cwd <cwd>", "working directory", process.cwd()).option("--color", "force colored output").option("--no-color", "disable colored output (also honors NO_COLOR)").addHelpText("after", renderInstallHelpEpilog).action(installAction);
@@ -64454,4 +64472,4 @@ Promise.resolve().then(() => assertNoRemovedFlags(process.argv)).then(() => prog
64454
64472
  export {};
64455
64473
 
64456
64474
  //# sourceMappingURL=cli.js.map
64457
- //# debugId=68e9635d-7a10-5469-afd5-edb7df5973ae
64475
+ //# debugId=69a45de3-fe65-53dc-aed2-17f9cea22159
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]="7cb857ba-6f0a-57d9-91f3-3c286472121d")}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]="f1919957-a013-5ded-b0ed-3d2e8469d0e2")}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";
@@ -38564,7 +38564,7 @@ var Git = class Git extends Service()("react-doctor/Git") {
38564
38564
  })),
38565
38565
  showStagedContent: (directory, relativePath, options) => runCommand({
38566
38566
  command: "git",
38567
- args: ["show", `:${relativePath}`],
38567
+ args: ["show", `:./${relativePath}`],
38568
38568
  directory,
38569
38569
  maxStdoutBytes: options?.maxBufferBytes
38570
38570
  }).pipe(map$3((result) => result.status === 0 ? result.stdout : null)),
@@ -42441,4 +42441,4 @@ const toJsonReport = (result, options) => buildJsonReport({
42441
42441
  export { AmbiguousProjectError, NoReactDependencyError, NotADirectoryError, PackageJsonNotFoundError, ProjectNotFoundError, ReactDoctorError, buildJsonReport, buildJsonReportError, clearCaches, defineConfig, diagnose, filterSourceFiles, getDiffInfo, hasReactRuntime, isProjectDiscoveryError, isReactDoctorError, summarizeDiagnostics, toJsonReport };
42442
42442
 
42443
42443
  //# sourceMappingURL=index.js.map
42444
- //# debugId=7cb857ba-6f0a-57d9-91f3-3c286472121d
42444
+ //# debugId=f1919957-a013-5ded-b0ed-3d2e8469d0e2
package/dist/lsp.js CHANGED
@@ -38549,7 +38549,7 @@ var Git = class Git extends Service()("react-doctor/Git") {
38549
38549
  })),
38550
38550
  showStagedContent: (directory, relativePath, options) => runCommand({
38551
38551
  command: "git",
38552
- args: ["show", `:${relativePath}`],
38552
+ args: ["show", `:./${relativePath}`],
38553
38553
  directory,
38554
38554
  maxStdoutBytes: options?.maxBufferBytes
38555
38555
  }).pipe(map$3((result) => result.status === 0 ? result.stdout : null)),
@@ -44160,5 +44160,5 @@ const startLanguageServer = () => {
44160
44160
  };
44161
44161
  //#endregion
44162
44162
  export { startLanguageServer };
44163
- !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]="027c66d6-b30a-59de-ad83-58f5ad304c94")}catch(e){}}();
44164
- //# debugId=027c66d6-b30a-59de-ad83-58f5ad304c94
44163
+ !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]="0cab34bf-65ac-5994-9a93-41f1b5670387")}catch(e){}}();
44164
+ //# debugId=0cab34bf-65ac-5994-9a93-41f1b5670387
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "react-doctor",
3
- "version": "0.7.1-dev.160f84c",
3
+ "version": "0.7.1-dev.5809083",
4
4
  "description": "Your agent writes bad React. This catches it",
5
5
  "keywords": [
6
6
  "accessibility",
@@ -66,7 +66,7 @@
66
66
  "vscode-uri": "^3.1.0",
67
67
  "yaml": "^2.9.0",
68
68
  "deslop-js": "0.7.1",
69
- "oxlint-plugin-react-doctor": "0.7.1-dev.160f84c"
69
+ "oxlint-plugin-react-doctor": "0.7.1-dev.5809083"
70
70
  },
71
71
  "devDependencies": {
72
72
  "@types/babel__code-frame": "^7.27.0",