react-doctor 0.9.13-dev.1239043 → 0.9.13-dev.2e3f6eb

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 (34) hide show
  1. package/dist/{build-section-divider-C09RcJrc.js → build-section-divider-DZA4c-cf.js} +7 -7
  2. package/dist/{ci-CUgNjCr-.js → ci-S0bTu0o7.js} +12 -12
  3. package/dist/cli.js +24 -24
  4. package/dist/{design-CX2j8ubS.js → design-B_e6HEZ7.js} +4 -4
  5. package/dist/{exit-gracefully-cGJM2g3O.js → exit-gracefully-DyTWDVj-.js} +6 -6
  6. package/dist/{handle-error-BCI-Nv3P.js → handle-error-4yYwwrfs.js} +5 -5
  7. package/dist/index.js +21 -41
  8. package/dist/{inspect-Dq5krKWG.js → inspect-CuGcOcRw.js} +17 -19
  9. package/dist/{install-C0aiZKgf.js → install-HI1T486C.js} +9 -9
  10. package/dist/{install-doctor-script-CaTIms0r.js → install-doctor-script-Deldi_8f.js} +4 -4
  11. package/dist/{install-github-workflow-DjPgXVqg.js → install-github-workflow-DSe3lec2.js} +5 -5
  12. package/dist/{install-react-doctor-C-PVDWXv.js → install-react-doctor-CF-vA_AY.js} +8 -8
  13. package/dist/{jsx-runtime-D_A4d39v.js → jsx-runtime-Dv23MVo2.js} +5 -5
  14. package/dist/{print-branded-header-Dz0SwyHQ.js → print-branded-header-DGdy9YGZ.js} +4 -4
  15. package/dist/project-analysis-worker.js +2 -2
  16. package/dist/{prompt-runtime-scan-url-BXdY2Opw.js → prompt-runtime-scan-url-CoDCW0Xw.js} +5 -5
  17. package/dist/{read-object-file-CmMGK1uu.js → read-object-file-CLvVP0OL.js} +4 -4
  18. package/dist/{record-metric-B6T_Ej33.js → record-metric-CFTeG4Ha.js} +24 -45
  19. package/dist/{report-error-DwL3b99q.js → report-error-B_O2ZFAv.js} +5 -5
  20. package/dist/{report-workflow-result-5PueDIAr.js → report-workflow-result-CjDXDNp9.js} +5 -5
  21. package/dist/{resolve-scope-CTlLl7e6.js → resolve-scope-B-trcJ7X.js} +6 -6
  22. package/dist/{rules-DEbHKRag.js → rules-VU4BYkQ8.js} +6 -6
  23. package/dist/{run-scan-app-D3huvmXJ.js → run-scan-app-BfeaRuV4.js} +20 -26
  24. package/dist/{runtime-scan-CHFAEYg3.js → runtime-scan-B_Eegbyo.js} +9 -9
  25. package/dist/{sanitize-runtime-url-Bbq40iIp.js → sanitize-runtime-url-hKKd5j5H.js} +4 -4
  26. package/dist/{scan-C7sCm7wi.js → scan-CrgcC-Rk.js} +9 -9
  27. package/dist/{should-fail-scan-gate-CfG_ppAV.js → should-fail-scan-gate-DE7RleKZ.js} +17 -42
  28. package/dist/{should-skip-prompts-BuNtAVEs.js → should-skip-prompts-BmYznvDr.js} +4 -4
  29. package/dist/{should-use-tui-B-lCjXVG.js → should-use-tui-dVbYKSDM.js} +4 -4
  30. package/dist/{telemetry-runtime-BF83aBFL.js → telemetry-runtime-D2l_bu0o.js} +4 -4
  31. package/dist/{version-C27gr4Qj.js → version-CB3K7ucz.js} +4 -4
  32. package/dist/{why-CYRkZ2VY.js → why-CCN3R7xM.js} +4 -4
  33. package/dist/{with-run-span-CdsXSJgE.js → with-run-span-BC-NFEo9.js} +5 -5
  34. package/package.json +4 -4
@@ -1,7 +1,7 @@
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]="b37f4df2-f905-5bdf-9075-d7d409a6d722")}catch(e){}}();
3
- import { Kt as highlighter, N as SENTRY_FLUSH_TIMEOUT_MS, a as isEnvFlagEnabled, er as CANONICAL_GITHUB_URL, ft as anonymizeInPlace, hn as scrubSensitivePaths, i as isTelemetryEnabled, o as buildSentryScope, or as DOCS_URL, pt as anonymizeText } from "./record-metric-B6T_Ej33.js";
4
- import { r as isExpectedUserError } from "./telemetry-runtime-BF83aBFL.js";
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]="77f415be-8b2d-5565-9704-5574facaf227")}catch(e){}}();
3
+ import { Kt as highlighter, N as SENTRY_FLUSH_TIMEOUT_MS, a as isEnvFlagEnabled, er as CANONICAL_GITHUB_URL, ft as anonymizeInPlace, hn as scrubSensitivePaths, i as isTelemetryEnabled, o as buildSentryScope, or as DOCS_URL, pt as anonymizeText } from "./record-metric-CFTeG4Ha.js";
4
+ import { r as isExpectedUserError } from "./telemetry-runtime-D2l_bu0o.js";
5
5
  import * as Sentry from "@sentry/node";
6
6
  //#region src/cli/utils/scrub-sentry-event.ts
7
7
  /**
@@ -70,13 +70,13 @@ const isDevVersion = (version) => version === "0.0.0" || version.includes("-");
70
70
  * uploads source-map artifacts under, so stack frames symbolicate. Honors the
71
71
  * standard `SENTRY_RELEASE` override.
72
72
  */
73
- const resolveSentryRelease = () => process.env.SENTRY_RELEASE || `react-doctor@0.9.13-dev.1239043`;
73
+ const resolveSentryRelease = () => process.env.SENTRY_RELEASE || `react-doctor@0.9.13-dev.2e3f6eb`;
74
74
  /**
75
75
  * Deployment environment shown in Sentry's environment filter. Defaults to
76
76
  * `production` for tagged releases and `development` for dev/unbuilt versions,
77
77
  * overridable via the standard `SENTRY_ENVIRONMENT` env var.
78
78
  */
79
- const resolveSentryEnvironment = () => process.env.SENTRY_ENVIRONMENT || (isDevVersion("0.9.13-dev.1239043") ? "development" : "production");
79
+ const resolveSentryEnvironment = () => process.env.SENTRY_ENVIRONMENT || (isDevVersion("0.9.13-dev.2e3f6eb") ? "development" : "production");
80
80
  //#endregion
81
81
  //#region src/instrument.ts
82
82
  let isInitialized = false;
@@ -212,5 +212,5 @@ const buildSectionDivider = () => highlighter.dim(`${DIVIDER_INDENT}${"─".repe
212
212
  //#endregion
213
213
  export { initializeSentry as i, buildFooterLinkLines as n, flushSentry as r, buildSectionDivider as t };
214
214
 
215
- //# sourceMappingURL=build-section-divider-C09RcJrc.js.map
216
- //# debugId=b37f4df2-f905-5bdf-9075-d7d409a6d722
215
+ //# sourceMappingURL=build-section-divider-DZA4c-cf.js.map
216
+ //# debugId=77f415be-8b2d-5565-9704-5574facaf227
@@ -1,15 +1,15 @@
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]="19ba3b5a-532b-5ee2-959c-102a94c515ed")}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]="599188f3-4d6d-51a0-b455-711cd3adb878")}catch(e){}}();
3
3
  import { i as __toESM, r as __require, t as __commonJSMin } from "./chunk-ChKA3wi6.js";
4
- import { Kt as highlighter, T as METRIC, cr as GITHUB_ACTIONS_SETUP_URL, t as recordCount, tr as CI_URL, zn as runSync } from "./record-metric-B6T_Ej33.js";
5
- import { r as isExpectedUserError } from "./telemetry-runtime-BF83aBFL.js";
6
- import { n as handleUserError, t as handleError } from "./handle-error-BCI-Nv3P.js";
7
- import { t as reportErrorToSentry } from "./report-error-DwL3b99q.js";
8
- import { M as cliLogger, c as spinner, n as findNearestPackageDirectory } from "./install-doctor-script-CaTIms0r.js";
9
- import { a as readReactDoctorWorkflow, d as detectDefaultBranch, f as runCommand, l as prompts, n as getReactDoctorWorkflowPath, s as upgradeWorkflowActionToV2, t as buildWorkflowContent } from "./install-github-workflow-DjPgXVqg.js";
10
- import { a as isValidBlockingLevel, c as openWorkflowPullRequest, l as stageWorkflowFile, n as isScopeValue } from "./resolve-scope-CTlLl7e6.js";
11
- import { t as shouldSkipPrompts } from "./should-skip-prompts-BuNtAVEs.js";
12
- import { t as printBrandedHeader } from "./print-branded-header-Dz0SwyHQ.js";
4
+ import { Kt as highlighter, T as METRIC, cr as GITHUB_ACTIONS_SETUP_URL, t as recordCount, tr as CI_URL, zn as runSync } from "./record-metric-CFTeG4Ha.js";
5
+ import { r as isExpectedUserError } from "./telemetry-runtime-D2l_bu0o.js";
6
+ import { n as handleUserError, t as handleError } from "./handle-error-4yYwwrfs.js";
7
+ import { t as reportErrorToSentry } from "./report-error-B_O2ZFAv.js";
8
+ import { M as cliLogger, c as spinner, n as findNearestPackageDirectory } from "./install-doctor-script-Deldi_8f.js";
9
+ import { a as readReactDoctorWorkflow, d as detectDefaultBranch, f as runCommand, l as prompts, n as getReactDoctorWorkflowPath, s as upgradeWorkflowActionToV2, t as buildWorkflowContent } from "./install-github-workflow-DSe3lec2.js";
10
+ import { a as isValidBlockingLevel, c as openWorkflowPullRequest, l as stageWorkflowFile, n as isScopeValue } from "./resolve-scope-B-trcJ7X.js";
11
+ import { t as shouldSkipPrompts } from "./should-skip-prompts-BmYznvDr.js";
12
+ import { t as printBrandedHeader } from "./print-branded-header-DGdy9YGZ.js";
13
13
  import * as path$1 from "node:path";
14
14
  import * as fs$1 from "node:fs";
15
15
  //#region src/cli/utils/ci/ci-provider.ts
@@ -7498,5 +7498,5 @@ const ciConfigAction = (options) => runCiCommand("config", runCiConfig, options)
7498
7498
  //#endregion
7499
7499
  export { ciConfigAction, ciInstallAction, ciUpgradeAction };
7500
7500
 
7501
- //# sourceMappingURL=ci-CUgNjCr-.js.map
7502
- //# debugId=19ba3b5a-532b-5ee2-959c-102a94c515ed
7501
+ //# sourceMappingURL=ci-S0bTu0o7.js.map
7502
+ //# debugId=599188f3-4d6d-51a0-b455-711cd3adb878
package/dist/cli.js CHANGED
@@ -1,13 +1,13 @@
1
1
 
2
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]="2db05473-003e-52a5-853a-90e4f4f5ac96")}catch(e){}}();
3
3
  import { i as __toESM, r as __require, t as __commonJSMin } from "./chunk-ChKA3wi6.js";
4
- import { H as isDebugFlagEnabled, Jt as isPathInsideDirectory, Kt as highlighter, Nt as filterSourceFiles, _ as VERSION, d as isJsonModeActive, er as CANONICAL_GITHUB_URL, gn as setColorEnabled, h as writeJsonErrorReport, i as isTelemetryEnabled, tr as CI_URL, xr as isFile, yr as isDirectory, z as CliInputError } from "./record-metric-B6T_Ej33.js";
5
- import { n as shutdownTelemetry, r as isExpectedUserError } from "./telemetry-runtime-BF83aBFL.js";
6
- import { i as initializeSentry, r as flushSentry } from "./build-section-divider-C09RcJrc.js";
7
- import { t as exitGracefully } from "./exit-gracefully-cGJM2g3O.js";
8
- import { n as handleUserError, t as handleError } from "./handle-error-BCI-Nv3P.js";
4
+ import { H as isDebugFlagEnabled, Jt as isPathInsideDirectory, Kt as highlighter, Nt as filterSourceFiles, _ as VERSION, d as isJsonModeActive, er as CANONICAL_GITHUB_URL, gn as setColorEnabled, h as writeJsonErrorReport, i as isTelemetryEnabled, tr as CI_URL, xr as isFile, yr as isDirectory, z as CliInputError } from "./record-metric-CFTeG4Ha.js";
5
+ import { n as shutdownTelemetry, r as isExpectedUserError } from "./telemetry-runtime-D2l_bu0o.js";
6
+ import { i as initializeSentry, r as flushSentry } from "./build-section-divider-DZA4c-cf.js";
7
+ import { t as exitGracefully } from "./exit-gracefully-DyTWDVj-.js";
8
+ import { n as handleUserError, t as handleError } from "./handle-error-4yYwwrfs.js";
9
9
  import { n as getLastRunTraceId } from "./active-run-trace-dlIZeEvb.js";
10
- import { t as reportErrorToSentry } from "./report-error-DwL3b99q.js";
10
+ import { t as reportErrorToSentry } from "./report-error-B_O2ZFAv.js";
11
11
  import { t as toForwardSlashes } from "./path-format-DnHpmJwG.js";
12
12
  import { t as unrefStdin } from "./unref-stdin-SK3WfwxS.js";
13
13
  import { execFileSync } from "node:child_process";
@@ -3557,7 +3557,7 @@ ${highlighter.dim("Learn more:")}
3557
3557
  const collectCategoryOption = (value, previousValues) => [...previousValues ?? [], value];
3558
3558
  const program = new Command().name("react-doctor").description("Diagnose React codebase health").version(VERSION, "-v, --version", "display the version number").argument("[paths...]", "one project directory or source file paths to scan").option("--lint", "enable linting").option("--no-lint", "skip linting").addOption(new Option("--dead-code").hideHelp()).addOption(new Option("--no-dead-code").hideHelp()).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("--no-cache", "disable all scan caches for this run").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 supported JS/TS and inline HTML script source to scan/report: full (default), files, changed (only new issues vs base), or lines (issues whose source spans touch changed lines)").option("--base <ref>", "base git ref for files/changed/lines scope (auto-detected when omitted)").option("--include-untracked", "with --scope files/changed/lines, also scan ordinary untracked files (respects .gitignore)").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 (honors --project and config `projects`; exits 0 when nothing is staged)").option("--max-duration <seconds>", MAX_DURATION_OPTION_DESCRIPTION).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);
3559
3559
  program.action(async (positionalPaths = [], flags) => {
3560
- const { runScanCommand } = await import("./scan-C7sCm7wi.js");
3560
+ const { runScanCommand } = await import("./scan-CrgcC-Rk.js");
3561
3561
  return runScanCommand({
3562
3562
  ...resolvePositionalScanInput(positionalPaths),
3563
3563
  flags,
@@ -3565,75 +3565,75 @@ program.action(async (positionalPaths = [], flags) => {
3565
3565
  });
3566
3566
  });
3567
3567
  program.command("design [directory]").description("Run only the focused UI design diagnostics").addHelpText("after", renderDesignHelpEpilog).action(async (directory, _options, command) => {
3568
- const { designAction } = await import("./design-CX2j8ubS.js");
3568
+ const { designAction } = await import("./design-B_e6HEZ7.js");
3569
3569
  return designAction(directory ?? ".", command.optsWithGlobals());
3570
3570
  });
3571
3571
  program.command("scan").description("Scan a React interaction in Chrome until you press Enter").argument("[url]", "HTTP(S) URL of the running React app; detects local apps when omitted").option("-f, --format <format>", "report format: text, json, or jsonl", "text").option("--cdp <url>", "reuse Chrome at this remote-debugging endpoint").option("--trace-out <path>", "save the compressed .json.gz DevTools trace at this path").addHelpText("after", renderRuntimeScanHelpEpilog).action(async (url, options) => {
3572
- const { runtimeScanAction } = await import("./runtime-scan-CHFAEYg3.js");
3572
+ const { runtimeScanAction } = await import("./runtime-scan-B_Eegbyo.js");
3573
3573
  return runtimeScanAction(url, options);
3574
3574
  });
3575
3575
  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(async (location, options) => {
3576
- const { whyAction } = await import("./why-CYRkZ2VY.js");
3576
+ const { whyAction } = await import("./why-CCN3R7xM.js");
3577
3577
  return whyAction(location, options);
3578
3578
  });
3579
3579
  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 end-of-turn 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(async (options, command) => {
3580
- const { installAction } = await import("./install-C0aiZKgf.js");
3580
+ const { installAction } = await import("./install-HI1T486C.js");
3581
3581
  return installAction(options, command);
3582
3582
  });
3583
3583
  const providerOption = ["--provider <name>", "ci provider: github-actions or gitlab-ci (auto-detected by default)"];
3584
3584
  const prOption = ["--pr", "open a pull request with the change instead of writing it to the working tree"];
3585
3585
  const ci = program.command("ci").description("Set up, upgrade, and configure React Doctor in your CI");
3586
3586
  ci.command("install").description("Add a CI workflow that scans every pull request").option(...providerOption).option(...prOption).option("--blocking <level>", "gate level: none (advisory, default), warning, or error").option("--scope <value>", "what a pull-request scan reports: changed (default), files, lines, full").option("--comment", "post a summary comment on each pull request").option("--no-comment", "don't post a summary comment").option("--review-comments", "add inline review comments on changed lines").option("--no-review-comments", "don't add inline review comments").option("--commit-status", "report a commit status with the health score").option("--no-commit-status", "don't report a commit status").option("-y, --yes", "skip prompts; use the defaults").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", renderCiHelpEpilog).action(async (_options, command) => {
3587
- const { ciInstallAction } = await import("./ci-CUgNjCr-.js");
3587
+ const { ciInstallAction } = await import("./ci-S0bTu0o7.js");
3588
3588
  return ciInstallAction(command.optsWithGlobals());
3589
3589
  });
3590
3590
  ci.command("config").description("Change the gate, scan scope, and pull-request reporting").option(...providerOption).option("--blocking <level>", "gate level: none (advisory), warning, or error").option("--scope <value>", "what a pull-request scan reports: changed, files, lines, or full").option("--comment", "post a summary comment on each pull request").option("--no-comment", "don't post a summary comment").option("--review-comments", "add inline review comments on changed lines").option("--no-review-comments", "don't add inline review comments").option("--commit-status", "report a commit status with the health score").option("--no-commit-status", "don't report a commit status").option("-y, --yes", "skip prompts; print the current settings").option("-c, --cwd <cwd>", "working directory", process.cwd()).option("--color", "force colored output").option("--no-color", "disable colored output (also honors NO_COLOR)").action(async (_options, command) => {
3591
- const { ciConfigAction } = await import("./ci-CUgNjCr-.js");
3591
+ const { ciConfigAction } = await import("./ci-S0bTu0o7.js");
3592
3592
  return ciConfigAction(command.optsWithGlobals());
3593
3593
  });
3594
3594
  ci.command("upgrade").description("Upgrade the CI workflow to the action's current major").option(...providerOption).option(...prOption).option("-y, --yes", "skip prompts").option("-c, --cwd <cwd>", "working directory", process.cwd()).option("--color", "force colored output").option("--no-color", "disable colored output (also honors NO_COLOR)").action(async (_options, command) => {
3595
- const { ciUpgradeAction } = await import("./ci-CUgNjCr-.js");
3595
+ const { ciUpgradeAction } = await import("./ci-S0bTu0o7.js");
3596
3596
  return ciUpgradeAction(command.optsWithGlobals());
3597
3597
  });
3598
3598
  program.command("version").description("show the version with Node and platform info").option("--color", "force colored output").option("--no-color", "disable colored output (also honors NO_COLOR)").action(async () => {
3599
- const { versionAction } = await import("./version-C27gr4Qj.js");
3599
+ const { versionAction } = await import("./version-CB3K7ucz.js");
3600
3600
  return versionAction();
3601
3601
  });
3602
3602
  const rules = program.command("rules").description("List, explain, and configure which React Doctor rules run");
3603
3603
  rules.command("list").description("List rules and the severity they run at under your config").option("--category <name>", "only show rules in a category (e.g. Performance)").option("--tag <name>", "only show rules with a tag (e.g. design, test-noise)").option("--framework <name>", "only show rules for a framework (e.g. global, nextjs)").option("--configured", "only show rules your config has changed from the default").option("--json", "output a structured JSON array").option("-c, --cwd <cwd>", "working directory", process.cwd()).action(async (_options, command) => {
3604
- const { rulesListAction } = await import("./rules-DEbHKRag.js");
3604
+ const { rulesListAction } = await import("./rules-VU4BYkQ8.js");
3605
3605
  return rulesListAction(command.optsWithGlobals());
3606
3606
  });
3607
3607
  rules.command("explain <rule>").description("Explain why a rule matters, its current severity, and how to configure it").option("--json", "output a structured JSON object").option("-c, --cwd <cwd>", "working directory", process.cwd()).action(async (rule, _options, command) => {
3608
- const { rulesExplainAction } = await import("./rules-DEbHKRag.js");
3608
+ const { rulesExplainAction } = await import("./rules-VU4BYkQ8.js");
3609
3609
  return rulesExplainAction(rule, command.optsWithGlobals());
3610
3610
  });
3611
3611
  rules.command("set <rule> <severity>").description("Set a rule's severity: off, warn, or error").option("-c, --cwd <cwd>", "working directory", process.cwd()).action(async (rule, severity, _options, command) => {
3612
- const { rulesSetAction } = await import("./rules-DEbHKRag.js");
3612
+ const { rulesSetAction } = await import("./rules-VU4BYkQ8.js");
3613
3613
  return rulesSetAction(rule, severity, command.optsWithGlobals());
3614
3614
  });
3615
3615
  rules.command("enable <rule>").description("Enable a rule at its recommended severity (or pass --severity)").option("--severity <level>", "severity to enable at: warn or error").option("-c, --cwd <cwd>", "working directory", process.cwd()).action(async (rule, _options, command) => {
3616
- const { rulesEnableAction } = await import("./rules-DEbHKRag.js");
3616
+ const { rulesEnableAction } = await import("./rules-VU4BYkQ8.js");
3617
3617
  return rulesEnableAction(rule, command.optsWithGlobals());
3618
3618
  });
3619
3619
  rules.command("disable <rule>").description("Disable a rule so it never runs").option("-c, --cwd <cwd>", "working directory", process.cwd()).action(async (rule, _options, command) => {
3620
- const { rulesDisableAction } = await import("./rules-DEbHKRag.js");
3620
+ const { rulesDisableAction } = await import("./rules-VU4BYkQ8.js");
3621
3621
  return rulesDisableAction(rule, command.optsWithGlobals());
3622
3622
  });
3623
3623
  rules.command("category <category> <severity>").description("Set the severity for a whole category (off, warn, error)").option("-c, --cwd <cwd>", "working directory", process.cwd()).action(async (category, severity, _options, command) => {
3624
- const { rulesCategoryAction } = await import("./rules-DEbHKRag.js");
3624
+ const { rulesCategoryAction } = await import("./rules-VU4BYkQ8.js");
3625
3625
  return rulesCategoryAction(category, severity, command.optsWithGlobals());
3626
3626
  });
3627
3627
  rules.command("ignore-tag <tag>").description("Skip a whole rule family by tag before linting (e.g. design)").option("-c, --cwd <cwd>", "working directory", process.cwd()).action(async (tag, _options, command) => {
3628
- const { rulesIgnoreTagAction } = await import("./rules-DEbHKRag.js");
3628
+ const { rulesIgnoreTagAction } = await import("./rules-VU4BYkQ8.js");
3629
3629
  return rulesIgnoreTagAction(tag, command.optsWithGlobals());
3630
3630
  });
3631
3631
  rules.command("unignore-tag <tag>").description("Stop ignoring a tag previously skipped via ignore-tag").option("-c, --cwd <cwd>", "working directory", process.cwd()).action(async (tag, _options, command) => {
3632
- const { rulesUnignoreTagAction } = await import("./rules-DEbHKRag.js");
3632
+ const { rulesUnignoreTagAction } = await import("./rules-VU4BYkQ8.js");
3633
3633
  return rulesUnignoreTagAction(tag, command.optsWithGlobals());
3634
3634
  });
3635
3635
  program.command("experimental-tui [directory]", { hidden: true }).description("[experimental] interactive, scrollable scan report").option("--blocking <level>", "severity that fails CI: error (default), warning, or none (advisory)").option("--color", "force colored output").option("--no-color", "disable colored output (also honors NO_COLOR)").addOption(new Option("--no-dead-code").hideHelp()).option("--no-supply-chain", "skip the dependency supply-chain scan").option("--score", "only print the numeric score (for scripts and CI)").option("--no-score", "skip the score API, the share URL, and crash reporting").option("--no-cache", "disable all scan caches for this run").option("--max-duration <seconds>", MAX_DURATION_OPTION_DESCRIPTION).option("-p, --project <names>", "scan specific workspace projects (comma-separated, or *)").option("-y, --yes", "skip the project prompt and scan every discovered project").action(async (directory = ".", _localOptions, command) => {
3636
- const { runScanCommand } = await import("./scan-C7sCm7wi.js");
3636
+ const { runScanCommand } = await import("./scan-CrgcC-Rk.js");
3637
3637
  return runScanCommand({
3638
3638
  directory,
3639
3639
  flags: command.optsWithGlobals(),
@@ -1,6 +1,6 @@
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]="410558e0-ae8c-5265-9240-1f4608b6e8f6")}catch(e){}}();
3
- import { t as inspectAction } from "./inspect-Dq5krKWG.js";
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]="41ba5f61-8931-5876-a57a-767d86bfba38")}catch(e){}}();
3
+ import { t as inspectAction } from "./inspect-CuGcOcRw.js";
4
4
  //#region src/cli/commands/design.ts
5
5
  const designAction = async (directory, flags) => inspectAction(directory, {
6
6
  ...flags,
@@ -10,5 +10,5 @@ const designAction = async (directory, flags) => inspectAction(directory, {
10
10
  //#endregion
11
11
  export { designAction };
12
12
 
13
- //# sourceMappingURL=design-CX2j8ubS.js.map
14
- //# debugId=410558e0-ae8c-5265-9240-1f4608b6e8f6
13
+ //# sourceMappingURL=design-B_e6HEZ7.js.map
14
+ //# debugId=41ba5f61-8931-5876-a57a-767d86bfba38
@@ -1,8 +1,8 @@
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]="db5b004a-0362-54b6-90ba-78912f728dce")}catch(e){}}();
3
- import { d as isJsonModeActive, m as writeJsonCancellationReport } from "./record-metric-B6T_Ej33.js";
4
- import { n as shutdownTelemetry } from "./telemetry-runtime-BF83aBFL.js";
5
- import { n as buildFooterLinkLines, r as flushSentry, t as buildSectionDivider } from "./build-section-divider-C09RcJrc.js";
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]="c4179b72-9eb6-58a0-8d4d-e43bc68447f1")}catch(e){}}();
3
+ import { d as isJsonModeActive, m as writeJsonCancellationReport } from "./record-metric-CFTeG4Ha.js";
4
+ import { n as shutdownTelemetry } from "./telemetry-runtime-D2l_bu0o.js";
5
+ import { n as buildFooterLinkLines, r as flushSentry, t as buildSectionDivider } from "./build-section-divider-DZA4c-cf.js";
6
6
  import { t as activeScanAbortRegistry } from "./active-scan-abort-registry-DwG6tSPy.js";
7
7
  //#region src/cli/utils/active-tui-renderer.ts
8
8
  let activeTuiRenderer = null;
@@ -50,5 +50,5 @@ const exitGracefully = () => {
50
50
  //#endregion
51
51
  export { registerActiveTuiRenderer as n, exitGracefully as t };
52
52
 
53
- //# sourceMappingURL=exit-gracefully-cGJM2g3O.js.map
54
- //# debugId=db5b004a-0362-54b6-90ba-78912f728dce
53
+ //# sourceMappingURL=exit-gracefully-DyTWDVj-.js.map
54
+ //# debugId=c4179b72-9eb6-58a0-8d4d-e43bc68447f1
@@ -1,7 +1,7 @@
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]="2f0e348c-03d6-5abf-8238-e319bcc4b47c")}catch(e){}}();
3
- import { $n as CANONICAL_DISCORD_URL, An as gen, Cn as error, Ft as formatErrorChain, It as formatReactDoctorError, Kt as highlighter, T as METRIC, Xt as isReactDoctorError, _ as VERSION, br as isErrnoException, er as CANONICAL_GITHUB_URL, t as recordCount, zn as runSync } from "./record-metric-B6T_Ej33.js";
4
- import { a as isNpmCacheCorruptionError, i as formatNpmCacheCorruptionError, o as formatEnvironmentError, s as isEnvironmentError } from "./telemetry-runtime-BF83aBFL.js";
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]="8ef00521-2791-5b1e-a2f4-a1f665e38811")}catch(e){}}();
3
+ import { $n as CANONICAL_DISCORD_URL, An as gen, Cn as error, Ft as formatErrorChain, It as formatReactDoctorError, Kt as highlighter, T as METRIC, Xt as isReactDoctorError, _ as VERSION, br as isErrnoException, er as CANONICAL_GITHUB_URL, t as recordCount, zn as runSync } from "./record-metric-CFTeG4Ha.js";
4
+ import { a as isNpmCacheCorruptionError, i as formatNpmCacheCorruptionError, o as formatEnvironmentError, s as isEnvironmentError } from "./telemetry-runtime-D2l_bu0o.js";
5
5
  //#region src/cli/utils/handle-error.ts
6
6
  const OTLP_ENDPOINT_ENVIRONMENT_VARIABLE = "REACT_DOCTOR_OTLP_ENDPOINT";
7
7
  const OTLP_AUTH_HEADER_ENVIRONMENT_VARIABLE = "REACT_DOCTOR_OTLP_AUTH_HEADER";
@@ -110,5 +110,5 @@ const handleUserError = (error$1, options = {}) => {
110
110
  //#endregion
111
111
  export { handleUserError as n, handleError as t };
112
112
 
113
- //# sourceMappingURL=handle-error-BCI-Nv3P.js.map
114
- //# debugId=2f0e348c-03d6-5abf-8238-e319bcc4b47c
113
+ //# sourceMappingURL=handle-error-4yYwwrfs.js.map
114
+ //# debugId=8ef00521-2791-5b1e-a2f4-a1f665e38811
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]="ffdf66e4-453b-5f6c-993d-310f76b49218")}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]="5453bc11-5691-5788-ba63-d87c0b7a6bff")}catch(e){}}();
3
3
  import { i as __toESM, r as __require, t as __commonJSMin } from "./chunk-ChKA3wi6.js";
4
4
  import { createRequire } from "node:module";
5
5
  import * as path$1$1 from "node:path";
@@ -1884,7 +1884,7 @@ var require_picomatch$1 = /* @__PURE__ */ __commonJSMin(((exports, module) => {
1884
1884
  module.exports = picomatch;
1885
1885
  }));
1886
1886
  //#endregion
1887
- //#region ../core/dist/collect-unplugin-auto-import-global-scopes-BUQgAJ1L.js
1887
+ //#region ../core/dist/collect-unplugin-auto-import-global-scopes-Dwzr_czq.js
1888
1888
  var import_picomatch = /* @__PURE__ */ __toESM((/* @__PURE__ */ __commonJSMin(((exports, module) => {
1889
1889
  const pico = require_picomatch$1();
1890
1890
  const utils = require_utils();
@@ -2246,7 +2246,7 @@ const SUPPLY_CHAIN_OVERLAP_TIMEOUT_MS = 9e4;
2246
2246
  const SUPPLY_CHAIN_CACHE_TTL_MS = 864e5;
2247
2247
  const SUPPLY_CHAIN_CACHE_SUBDIR = "supply-chain";
2248
2248
  const SUPPLY_CHAIN_IGNORED_PACKAGES = new Set(["next"]);
2249
- const JSX_DUPLICATION_SOURCE_FILE_PATTERN = /\.[cm]?(?:jsx?|tsx)$/;
2249
+ const JSX_DUPLICATION_SOURCE_FILE_PATTERN = /\.[cm]?[jt]sx?$/;
2250
2250
  const MAINTAINABILITY_PLUGIN = "react-doctor";
2251
2251
  const MAINTAINABILITY_DUPLICATE_JSX_RULE = "duplicate-jsx-subtree";
2252
2252
  const MAINTAINABILITY_CATEGORY = "Maintainability";
@@ -64531,14 +64531,6 @@ const isLargeMinifiedFile = (absolutePath, knownSizeBytes) => {
64531
64531
  cachedIsLargeMinifiedByPath.set(absolutePath, result);
64532
64532
  return result;
64533
64533
  };
64534
- const isMissingPath = (absolutePath) => {
64535
- try {
64536
- fs$1$3.statSync(absolutePath);
64537
- return false;
64538
- } catch (error) {
64539
- return isErrnoException(error) && error.code === "ENOENT";
64540
- }
64541
- };
64542
64534
  function* walkSourceTreeFiles(rootDirectory) {
64543
64535
  const stack = [rootDirectory];
64544
64536
  while (stack.length > 0) {
@@ -64560,21 +64552,16 @@ function* walkSourceTreeFiles(rootDirectory) {
64560
64552
  const yieldToEventLoop = () => new Promise((resolve) => {
64561
64553
  setImmediate(resolve);
64562
64554
  });
64563
- const toSizedSourceFileEntry = (rootDirectory, relativePath) => {
64564
- const absolutePath = path$1$1.resolve(rootDirectory, relativePath);
64565
- const sizeBytes = statSourceFileSize(absolutePath);
64566
- if (sizeBytes === null && isMissingPath(absolutePath)) return null;
64567
- if (isLargeMinifiedFile(absolutePath, sizeBytes)) return null;
64568
- return {
64569
- path: relativePath,
64570
- sizeBytes: sizeBytes ?? 0
64571
- };
64572
- };
64573
64555
  const collectSizedSourceFiles = (rootDirectory, relativePaths) => {
64574
64556
  const entries = [];
64575
64557
  for (const relativePath of relativePaths) {
64576
- const entry = toSizedSourceFileEntry(rootDirectory, relativePath);
64577
- if (entry !== null) entries.push(entry);
64558
+ const absolutePath = path$1$1.resolve(rootDirectory, relativePath);
64559
+ const sizeBytes = statSourceFileSize(absolutePath);
64560
+ if (isLargeMinifiedFile(absolutePath, sizeBytes)) continue;
64561
+ entries.push({
64562
+ path: relativePath,
64563
+ sizeBytes: sizeBytes ?? 0
64564
+ });
64578
64565
  }
64579
64566
  return entries;
64580
64567
  };
@@ -64583,8 +64570,12 @@ const collectSizedSourceFilesCooperative = async (rootDirectory, relativePaths,
64583
64570
  let sliceStartedAt = performance.now();
64584
64571
  for (const relativePath of relativePaths) {
64585
64572
  signal?.throwIfAborted();
64586
- const entry = toSizedSourceFileEntry(rootDirectory, relativePath);
64587
- if (entry !== null) entries.push(entry);
64573
+ const absolutePath = path$1$1.resolve(rootDirectory, relativePath);
64574
+ const sizeBytes = statSourceFileSize(absolutePath);
64575
+ if (!isLargeMinifiedFile(absolutePath, sizeBytes)) entries.push({
64576
+ path: relativePath,
64577
+ sizeBytes: sizeBytes ?? 0
64578
+ });
64588
64579
  if (performance.now() - sliceStartedAt >= 12) {
64589
64580
  await yieldToEventLoop();
64590
64581
  sliceStartedAt = performance.now();
@@ -65422,22 +65413,12 @@ const hasReactCompilerConfigInSentryWrapperArgument = (callExpression, analysis,
65422
65413
  const [configArgument] = callExpression.arguments;
65423
65414
  return Boolean(configArgument && analyzeConfigNode(configArgument, analysis, false));
65424
65415
  };
65425
- const hasEnabledCompilerOptionInVitePluginArgument = (callExpression, analysis, moduleSpecifier, exportName) => {
65426
- if (moduleSpecifier !== "@vitejs/plugin-react" || exportName !== "default") return false;
65427
- const [optionsArgument] = callExpression.arguments;
65428
- if (!optionsArgument) return false;
65429
- const compilerProperty = getSelectedObjectProperty(optionsArgument, "compiler", analysis);
65430
- if (compilerProperty === null) return false;
65431
- return !ts.isExpression(compilerProperty.node) || !isStaticallyDisabledConfigExpression(compilerProperty.node, compilerProperty.analysis);
65432
- };
65433
- const hasReactCompilerConfigInCallArguments = (callExpression, analysis, moduleSpecifier, exportName) => hasReactCompilerConfigInSentryWrapperArgument(callExpression, analysis, moduleSpecifier, exportName) || hasEnabledCompilerOptionInVitePluginArgument(callExpression, analysis, moduleSpecifier, exportName);
65434
65416
  const analyzeConfigCallTarget = (callExpression, analysis, allowCompilerTransform) => {
65435
65417
  const target = callExpression.expression;
65436
65418
  const callableRequiredModuleSpecifier = getRequireModuleSpecifier(target);
65437
65419
  if (callableRequiredModuleSpecifier !== null) {
65438
65420
  if (ts.isCallExpression(target) && ts.isIdentifier(target.expression) && (analysis.localBindings.has(target.expression.text) || getScopedConfigBinding(target.expression).wasFound || hasTopLevelValueBinding(analysis.sourceFile, "require"))) return false;
65439
65421
  if (allowCompilerTransform && isCompilerTransformModule(callableRequiredModuleSpecifier, "default")) return true;
65440
- if (hasReactCompilerConfigInCallArguments(callExpression, analysis, callableRequiredModuleSpecifier, "default")) return true;
65441
65422
  const hasCompilerTransform = analyzeImportedConfig({
65442
65423
  analysis,
65443
65424
  moduleSpecifier: callableRequiredModuleSpecifier,
@@ -65455,7 +65436,7 @@ const analyzeConfigCallTarget = (callExpression, analysis, allowCompilerTransfor
65455
65436
  if (requiredModuleSpecifier !== null) {
65456
65437
  if (ts.isCallExpression(target.expression) && ts.isIdentifier(target.expression.expression) && (analysis.localBindings.has(target.expression.expression.text) || getScopedConfigBinding(target.expression.expression).wasFound || hasTopLevelValueBinding(analysis.sourceFile, "require"))) return false;
65457
65438
  if (allowCompilerTransform && isCompilerTransformModule(requiredModuleSpecifier, propertyName)) return true;
65458
- if (hasReactCompilerConfigInCallArguments(callExpression, analysis, requiredModuleSpecifier, propertyName)) return true;
65439
+ if (hasReactCompilerConfigInSentryWrapperArgument(callExpression, analysis, requiredModuleSpecifier, propertyName)) return true;
65459
65440
  const hasCompilerTransform = analyzeImportedConfig({
65460
65441
  analysis,
65461
65442
  moduleSpecifier: requiredModuleSpecifier,
@@ -65470,7 +65451,7 @@ const analyzeConfigCallTarget = (callExpression, analysis, allowCompilerTransfor
65470
65451
  const importBinding = analysis.localBindings.has(target.expression.text) || getScopedConfigBinding(target.expression).wasFound ? null : getImportBinding(analysis.sourceFile, target.expression.text);
65471
65452
  if (importBinding?.isNamespace) {
65472
65453
  if (allowCompilerTransform && isCompilerTransformModule(importBinding.moduleSpecifier, propertyName)) return true;
65473
- if (hasReactCompilerConfigInCallArguments(callExpression, analysis, importBinding.moduleSpecifier, propertyName)) return true;
65454
+ if (hasReactCompilerConfigInSentryWrapperArgument(callExpression, analysis, importBinding.moduleSpecifier, propertyName)) return true;
65474
65455
  const hasCompilerTransform = analyzeImportedConfig({
65475
65456
  analysis,
65476
65457
  moduleSpecifier: importBinding.moduleSpecifier,
@@ -65572,7 +65553,7 @@ const analyzeConfigNode = (node, analysis, allowCompilerTransform, isCompilerTra
65572
65553
  const importBinding = getImportBinding(analysis.sourceFile, node.expression.text);
65573
65554
  if (importBinding) {
65574
65555
  if (allowCompilerTransform && isCompilerTransformModule(importBinding.moduleSpecifier, importBinding.exportName)) return true;
65575
- if (hasReactCompilerConfigInCallArguments(node, analysis, importBinding.moduleSpecifier, importBinding.exportName)) return true;
65556
+ if (hasReactCompilerConfigInSentryWrapperArgument(node, analysis, importBinding.moduleSpecifier, importBinding.exportName)) return true;
65576
65557
  if (allowCompilerTransform && importBinding.moduleSpecifier === "@rolldown/plugin-babel" && importBinding.exportName === "default" && node.arguments.some((argument) => analyzeConfigNode(argument, analysis, false))) return true;
65577
65558
  const hasCompilerTransform = analyzeImportedConfig({
65578
65559
  analysis,
@@ -72358,7 +72339,7 @@ const buildResult = (input) => {
72358
72339
  const detectDuplicateJsxSubtreesCooperative = async (sourceReader, options = {}) => {
72359
72340
  const resolvedOptions = resolveOptions$1(options);
72360
72341
  const incompleteReasons = [];
72361
- const sortedPaths = sourceReader.paths.filter((sourcePath) => JSX_DUPLICATION_SOURCE_FILE_PATTERN.test(sourcePath)).sort((left, right) => left.localeCompare(right));
72342
+ const sortedPaths = [...sourceReader.paths].sort((left, right) => left.localeCompare(right));
72362
72343
  if (sortedPaths.length > resolvedOptions.maxSourceFiles) incompleteReasons.push({
72363
72344
  kind: "source-file-limit",
72364
72345
  limit: resolvedOptions.maxSourceFiles,
@@ -75669,7 +75650,6 @@ const prepareLintSources = (rootDirectory, temporaryDirectory, candidateFiles) =
75669
75650
  continue;
75670
75651
  }
75671
75652
  const absoluteSourcePath = path$1$1.isAbsolute(candidateFile) ? candidateFile : path$1$1.resolve(rootDirectory, candidateFile);
75672
- if (isMissingPath(absoluteSourcePath)) continue;
75673
75653
  const sourceBuffer = fs$1$3.readFileSync(absoluteSourcePath);
75674
75654
  if (ASTRO_FILE_PATTERN.test(candidateFile)) {
75675
75655
  const compilerSourcePath = absoluteSourcePath.replaceAll("\\", "/");
@@ -78209,4 +78189,4 @@ const toJsonReport = (result, options) => buildJsonReport({
78209
78189
  export { AmbiguousProjectError, NoReactDependencyError, NotADirectoryError, PackageJsonNotFoundError, ProjectNotFoundError, ReactDoctorError, buildJsonReport, buildJsonReportError, clearCaches, defineConfig, diagnose, filterSourceFiles, getDiffInfo, hasReactRuntime, isProjectDiscoveryError, isReactDoctorError, summarizeDiagnostics, toJsonReport };
78210
78190
 
78211
78191
  //# sourceMappingURL=index.js.map
78212
- //# debugId=ffdf66e4-453b-5f6c-993d-310f76b49218
78192
+ //# debugId=5453bc11-5691-5788-ba63-d87c0b7a6bff
@@ -1,19 +1,19 @@
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]="a848d2ef-3d8d-5de6-8dea-5b757aa38c3e")}catch(e){}}();
3
- import { An as gen, At as discoverSupportedSubprojects, Bt as getDiffInfo, Cr as messageFromUnknown, F as STAGED_FILES_TEMP_DIR_PREFIX, Fn as provide$1, Gn as provide, H as isDebugFlagEnabled, I as STAGED_SNAPSHOT_ADDITIONAL_CONFIG_FILENAMES, K as isCiOrCodingAgentEnvironment, Kt as highlighter, Lt as getBaselineDiffPlan, Pt as findLegacyConfig, Rn as runPromise, Rt as getChangedLineRanges, Sr as isPlainObject, T as METRIC, Wt as hasSupportedFrameworkOrLibrary, X as Git, _ as VERSION, _r as STAGED_FILES_PROJECT_CONFIG_FILENAMES, br as isErrnoException, er as CANONICAL_GITHUB_URL, f as setJsonReportDirectory, fn as resolveScanTarget, g as writeJsonReport, h as writeJsonErrorReport, ht as buildJsonReport, in as mapWithConcurrency, kt as detectAiTrainingEnvironment, n as recordDistribution, nn as listWorkspacePackages, p as setJsonReportMode, q as isCodingAgentEnvironment, sn as remainingDeadlineBudgetMs, t as recordCount, u as enableJsonMode, ut as StagedFiles, yn as toRelativePath, z as CliInputError } from "./record-metric-B6T_Ej33.js";
4
- import { n as shutdownTelemetry, r as isExpectedUserError } from "./telemetry-runtime-BF83aBFL.js";
5
- import { r as flushSentry } from "./build-section-divider-C09RcJrc.js";
6
- import { n as handleUserError, t as handleError } from "./handle-error-BCI-Nv3P.js";
7
- import { t as reportErrorToSentry } from "./report-error-DwL3b99q.js";
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]="8747af7b-e78e-5329-b860-84bdd850e380")}catch(e){}}();
3
+ import { An as gen, At as discoverSupportedSubprojects, Bt as getDiffInfo, Cr as messageFromUnknown, F as STAGED_FILES_TEMP_DIR_PREFIX, Fn as provide$1, Gn as provide, H as isDebugFlagEnabled, I as STAGED_SNAPSHOT_ADDITIONAL_CONFIG_FILENAMES, Jt as isPathInsideDirectory, K as isCiOrCodingAgentEnvironment, Kt as highlighter, Lt as getBaselineDiffPlan, Pt as findLegacyConfig, Rn as runPromise, Rt as getChangedLineRanges, Sr as isPlainObject, T as METRIC, Wt as hasSupportedFrameworkOrLibrary, X as Git, _ as VERSION, _r as STAGED_FILES_PROJECT_CONFIG_FILENAMES, br as isErrnoException, er as CANONICAL_GITHUB_URL, f as setJsonReportDirectory, fn as resolveScanTarget, g as writeJsonReport, h as writeJsonErrorReport, ht as buildJsonReport, in as mapWithConcurrency, kt as detectAiTrainingEnvironment, n as recordDistribution, nn as listWorkspacePackages, p as setJsonReportMode, q as isCodingAgentEnvironment, sn as remainingDeadlineBudgetMs, t as recordCount, u as enableJsonMode, ut as StagedFiles, yn as toRelativePath, z as CliInputError } from "./record-metric-CFTeG4Ha.js";
4
+ import { n as shutdownTelemetry, r as isExpectedUserError } from "./telemetry-runtime-D2l_bu0o.js";
5
+ import { r as flushSentry } from "./build-section-divider-DZA4c-cf.js";
6
+ import { n as handleUserError, t as handleError } from "./handle-error-4yYwwrfs.js";
7
+ import { t as reportErrorToSentry } from "./report-error-B_O2ZFAv.js";
8
8
  import { t as toForwardSlashes } from "./path-format-DnHpmJwG.js";
9
- import { A as runGitRaw, M as cliLogger, c as spinner, i as hasDoctorScript, n as findNearestPackageDirectory, o as isSpinnerSilent, s as setSpinnerSilent } from "./install-doctor-script-CaTIms0r.js";
10
- import { a as readReactDoctorWorkflow, c as workflowUsesV1Action, i as isReactDoctorWorkflowInstalled, l as prompts, s as upgradeWorkflowActionToV2 } from "./install-github-workflow-DjPgXVqg.js";
11
- import { c as openWorkflowPullRequest, i as warnDeprecatedDiff, l as stageWorkflowFile, r as resolveScope, s as resolveBlockingLevel, t as finalizeScope } from "./resolve-scope-CTlLl7e6.js";
12
- import { t as shouldSkipPrompts } from "./should-skip-prompts-BuNtAVEs.js";
13
- import { A as createInvocationInspect, C as detectLaunchableAgents, D as buildHandoffPayload, E as launchCliAgent, M as resolveMergeBaseRef, N as printHeadlessReport, O as collectProjectSourceFileCounts, R as printDiagnosticsDump, S as setUpGitHubActions, T as copyToClipboard, U as buildEmptyReportMessage, V as filterDiagnosticsByCategories, _ as retryMissingProjectScores, a as validateModeFlags, b as filterScansForSurface, c as partitionProjectScanOutcomes, d as buildCodeFrame, f as resolveProjectScan, g as resolveProjectRelativeDirectory, h as resolveProjectSourceFilePaths, i as validateIncludeUntrackedScope, j as inspect, k as deduplicateProjectScans, l as discoverWorkspacePackages, m as resolveProjectDiffIncludePaths, n as formatSkippedProjectsMessage, o as resolveExcludedProjectDirectories, p as resolveProjectChangedLineRanges, s as projectManifestChanged, t as shouldFailScanGate, u as selectProjects, v as resolveWorkspaceDeadCodeOwner, w as CLI_AGENT_BINARIES, x as countUniqueScannedFiles, y as resolveCliInspectOptions } from "./should-fail-scan-gate-CfG_ppAV.js";
14
- import { a as recordGate, i as readPreference, o as runMigrations, p as SETUP_HINT_EVENT, r as isGatePending, s as writePreference, u as HANDOFF_TARGET_PREFERENCE_ID } from "./report-workflow-result-5PueDIAr.js";
15
- import { a as askUpgradeActionVersion, c as recordCiPromptDecision, i as installReactDoctorAgentHooks, l as hasHandledActionUpgrade, o as askAddToGitHubActions, r as findAgentsWithOutdatedReactDoctorHooks, s as hasHandledCiPrompt, t as getSkillSourceDirectory, u as recordActionUpgradeDecision } from "./install-react-doctor-C-PVDWXv.js";
16
- import { t as readObjectFile } from "./read-object-file-CmMGK1uu.js";
9
+ import { A as runGitRaw, M as cliLogger, c as spinner, i as hasDoctorScript, n as findNearestPackageDirectory, o as isSpinnerSilent, s as setSpinnerSilent } from "./install-doctor-script-Deldi_8f.js";
10
+ import { a as readReactDoctorWorkflow, c as workflowUsesV1Action, i as isReactDoctorWorkflowInstalled, l as prompts, s as upgradeWorkflowActionToV2 } from "./install-github-workflow-DSe3lec2.js";
11
+ import { c as openWorkflowPullRequest, i as warnDeprecatedDiff, l as stageWorkflowFile, r as resolveScope, s as resolveBlockingLevel, t as finalizeScope } from "./resolve-scope-B-trcJ7X.js";
12
+ import { t as shouldSkipPrompts } from "./should-skip-prompts-BmYznvDr.js";
13
+ import { A as inspect, B as filterDiagnosticsByCategories, C as CLI_AGENT_BINARIES, D as collectProjectSourceFileCounts, E as buildHandoffPayload, H as buildEmptyReportMessage, L as printDiagnosticsDump, M as printHeadlessReport, O as deduplicateProjectScans, S as detectLaunchableAgents, T as launchCliAgent, _ as resolveWorkspaceDeadCodeOwner, a as validateModeFlags, b as countUniqueScannedFiles, d as resolveProjectScan, f as resolveProjectChangedLineRanges, g as retryMissingProjectScores, h as resolveProjectRelativeDirectory, i as validateIncludeUntrackedScope, j as resolveMergeBaseRef, k as createInvocationInspect, l as selectProjects, m as resolveProjectSourceFilePaths, n as formatSkippedProjectsMessage, o as projectManifestChanged, p as resolveProjectDiffIncludePaths, s as partitionProjectScanOutcomes, t as shouldFailScanGate, u as buildCodeFrame, v as resolveCliInspectOptions, w as copyToClipboard, x as setUpGitHubActions, y as filterScansForSurface } from "./should-fail-scan-gate-DE7RleKZ.js";
14
+ import { a as recordGate, i as readPreference, o as runMigrations, p as SETUP_HINT_EVENT, r as isGatePending, s as writePreference, u as HANDOFF_TARGET_PREFERENCE_ID } from "./report-workflow-result-CjDXDNp9.js";
15
+ import { a as askUpgradeActionVersion, c as recordCiPromptDecision, i as installReactDoctorAgentHooks, l as hasHandledActionUpgrade, o as askAddToGitHubActions, r as findAgentsWithOutdatedReactDoctorHooks, s as hasHandledCiPrompt, t as getSkillSourceDirectory, u as recordActionUpgradeDecision } from "./install-react-doctor-CF-vA_AY.js";
16
+ import { t as readObjectFile } from "./read-object-file-CLvVP0OL.js";
17
17
  import * as path$1 from "node:path";
18
18
  import * as fs$1 from "node:fs";
19
19
  import { tmpdir } from "node:os";
@@ -1116,7 +1116,7 @@ const buildProjectInspectOptions = ({ context, projectScan, projectScanPlan, own
1116
1116
  configSourceDirectory: projectScan.configSourceDirectory ?? void 0,
1117
1117
  suppressRendering: context.isMultiProject,
1118
1118
  concurrentScan: context.isMultiProject,
1119
- excludedProjectDirectories: resolveExcludedProjectDirectories(scanDirectory, [...context.projectScans.map((candidateProjectScan) => candidateProjectScan.directory), ...context.workspaceProjectDirectories]),
1119
+ excludedProjectDirectories: context.projectScans.filter((candidateProjectScan) => isPathInsideDirectory(candidateProjectScan.directory, scanDirectory)).map((candidateProjectScan) => candidateProjectScan.directory),
1120
1120
  retainExcludedProjectDeadCodeDiagnostics: ownsWorkspaceDeadCode,
1121
1121
  baseline: context.baselineRef !== null && projectScanPlan.projectBaselineBaseFiles !== null && projectScanPlan.projectBaselineHeadFiles !== null ? {
1122
1122
  ref: context.baselineRef,
@@ -1261,7 +1261,6 @@ const inspectAction = async (directory, flags, invocationCommand = "inspect", se
1261
1261
  });
1262
1262
  return;
1263
1263
  }
1264
- const workspaceProjectDirectories = discoverWorkspacePackages(resolvedDirectory).map((workspacePackage) => workspacePackage.directory);
1265
1264
  const projectDirectories = await selectProjects(resolvedDirectory, flags.project, skipPrompts, userConfig?.projects);
1266
1265
  const projectSelectionCompletedTime = performance.now();
1267
1266
  const hasPositionalFileSelection = selectedFilePaths !== void 0;
@@ -1355,7 +1354,6 @@ const inspectAction = async (directory, flags, invocationCommand = "inspect", se
1355
1354
  workspaceDeadCodeOwner,
1356
1355
  precomputedSourceFileCounts: isMultiProject && !isDiffMode ? await collectProjectSourceFileCounts(resolvedDirectory, projectScans.map((projectScan) => projectScan.directory)) : null,
1357
1356
  projectScans,
1358
- workspaceProjectDirectories,
1359
1357
  baselineRef,
1360
1358
  scope,
1361
1359
  changedLineRanges
@@ -1452,5 +1450,5 @@ const inspectAction = async (directory, flags, invocationCommand = "inspect", se
1452
1450
  //#endregion
1453
1451
  export { warnDeprecatedFailOn as n, runProjectMigrations as r, inspectAction as t };
1454
1452
 
1455
- //# sourceMappingURL=inspect-Dq5krKWG.js.map
1456
- //# debugId=a848d2ef-3d8d-5de6-8dea-5b757aa38c3e
1453
+ //# sourceMappingURL=inspect-CuGcOcRw.js.map
1454
+ //# debugId=8747af7b-e78e-5329-b860-84bdd850e380
@@ -1,11 +1,11 @@
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]="1ec9c2fd-d101-59b4-b11c-283c3e91bcba")}catch(e){}}();
3
- import { T as METRIC, t as recordCount, zn as runSync } from "./record-metric-B6T_Ej33.js";
4
- import { r as isExpectedUserError } from "./telemetry-runtime-BF83aBFL.js";
5
- import { n as handleUserError, t as handleError } from "./handle-error-BCI-Nv3P.js";
6
- import { t as reportErrorToSentry } from "./report-error-DwL3b99q.js";
7
- import { t as printBrandedHeader } from "./print-branded-header-Dz0SwyHQ.js";
8
- import { n as runInstallReactDoctor } from "./install-react-doctor-C-PVDWXv.js";
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]="fec4e00b-5503-5d93-ac7f-bf25d90c4c01")}catch(e){}}();
3
+ import { T as METRIC, t as recordCount, zn as runSync } from "./record-metric-CFTeG4Ha.js";
4
+ import { r as isExpectedUserError } from "./telemetry-runtime-D2l_bu0o.js";
5
+ import { n as handleUserError, t as handleError } from "./handle-error-4yYwwrfs.js";
6
+ import { t as reportErrorToSentry } from "./report-error-B_O2ZFAv.js";
7
+ import { t as printBrandedHeader } from "./print-branded-header-DGdy9YGZ.js";
8
+ import { n as runInstallReactDoctor } from "./install-react-doctor-CF-vA_AY.js";
9
9
  //#region src/cli/commands/install.ts
10
10
  const installAction = async (options, command) => {
11
11
  recordCount(METRIC.cliInvoked, 1, { command: "install" });
@@ -29,5 +29,5 @@ const installAction = async (options, command) => {
29
29
  //#endregion
30
30
  export { installAction };
31
31
 
32
- //# sourceMappingURL=install-C0aiZKgf.js.map
33
- //# debugId=1ec9c2fd-d101-59b4-b11c-283c3e91bcba
32
+ //# sourceMappingURL=install-HI1T486C.js.map
33
+ //# debugId=fec4e00b-5503-5d93-ac7f-bf25d90c4c01
@@ -1,6 +1,6 @@
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]="b17c6e58-aea3-5726-b36a-fa4d4b3dc871")}catch(e){}}();
3
- import { B as isNonInteractiveEnvironment, Cn as error$1, En as warn, Kt as highlighter, Tn as log, k as RUN_GIT_MAX_BUFFER_BYTES, wn as info$1, zn as runSync } from "./record-metric-B6T_Ej33.js";
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]="ed2ed5b2-88c6-5d9f-99f2-b60f3282ddd5")}catch(e){}}();
3
+ import { B as isNonInteractiveEnvironment, Cn as error$1, En as warn, Kt as highlighter, Tn as log, k as RUN_GIT_MAX_BUFFER_BYTES, wn as info$1, zn as runSync } from "./record-metric-CFTeG4Ha.js";
4
4
  import { a as chalk, i as stripAnsi, t as eastAsianWidth } from "./get-east-asian-width-Bv2TD3Xj.js";
5
5
  import { execFileSync } from "node:child_process";
6
6
  import * as path$1 from "node:path";
@@ -2805,5 +2805,5 @@ const installReactDoctorScriptStep = (projectRoot) => {
2805
2805
  //#endregion
2806
2806
  export { runGitRaw as A, isRecord as C, readPackageJson as D, packageHasRecordKey as E, cliLogger as M, resolveGitPath as O, getPackageJsonPath as S, packageHasNestedRecordKey as T, REACT_DOCTOR_COMMAND as _, installReactDoctorScriptStep as a, VITE_PLUS_HOOKS_PATH as b, spinner as c, HUSKY_HOOKS_PATH as d, LEFTHOOK_CONFIG_FILES as f, PRE_COMMIT_CONFIG_FILE as g, OVERCOMMIT_CONFIG_FILE as h, hasDoctorScript as i, writeJsonFile as j, runGit as k, HOOK_FILE_NAME as l, NON_BLOCKING_REACT_DOCTOR_COMMAND as m, findNearestPackageDirectory as n, isSpinnerSilent as o, LEGACY_HOOK_RUNNER_RELATIVE_PATH as p, hasDoctorDependency as r, setSpinnerSilent as s, DOCTOR_PACKAGE_NAME as t, HOOK_RELATIVE_PATH as u, SIMPLE_GIT_HOOKS_CONFIG_FILE as v, packageHasDependency as w, ensureTrailingNewline as x, SIMPLE_GIT_HOOKS_PACKAGE_JSON_KEY as y };
2807
2807
 
2808
- //# sourceMappingURL=install-doctor-script-CaTIms0r.js.map
2809
- //# debugId=b17c6e58-aea3-5726-b36a-fa4d4b3dc871
2808
+ //# sourceMappingURL=install-doctor-script-Deldi_8f.js.map
2809
+ //# debugId=ed2ed5b2-88c6-5d9f-99f2-b60f3282ddd5
@@ -1,8 +1,8 @@
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]="2f08f606-9038-5386-aad2-7ba72348e465")}catch(e){}}();
3
- import { w as GH_DEFAULT_BRANCH_PROBE_TIMEOUT_MS } from "./record-metric-B6T_Ej33.js";
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]="4322dfe5-353c-5912-ab46-0cd03fe69b97")}catch(e){}}();
3
+ import { w as GH_DEFAULT_BRANCH_PROBE_TIMEOUT_MS } from "./record-metric-CFTeG4Ha.js";
4
4
  import { t as unrefStdin } from "./unref-stdin-SK3WfwxS.js";
5
- import { M as cliLogger } from "./install-doctor-script-CaTIms0r.js";
5
+ import { M as cliLogger } from "./install-doctor-script-Deldi_8f.js";
6
6
  import { createRequire } from "node:module";
7
7
  import { execFile } from "node:child_process";
8
8
  import * as path$1 from "node:path";
@@ -267,5 +267,5 @@ const upgradeReactDoctorWorkflowInPlace = (projectRoot) => {
267
267
  //#endregion
268
268
  export { readReactDoctorWorkflow as a, workflowUsesV1Action as c, detectDefaultBranch as d, runCommand as f, isReactDoctorWorkflowInstalled as i, prompts as l, getReactDoctorWorkflowPath as n, upgradeReactDoctorWorkflowInPlace as o, installReactDoctorWorkflow as r, upgradeWorkflowActionToV2 as s, buildWorkflowContent as t, isCommandAvailable as u };
269
269
 
270
- //# sourceMappingURL=install-github-workflow-DjPgXVqg.js.map
271
- //# debugId=2f08f606-9038-5386-aad2-7ba72348e465
270
+ //# sourceMappingURL=install-github-workflow-DSe3lec2.js.map
271
+ //# debugId=4322dfe5-353c-5912-ab46-0cd03fe69b97