react-doctor 0.9.16 → 0.9.17

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 (40) hide show
  1. package/README.md +3 -3
  2. package/dist/{build-section-divider-DdDfVhIU.js → build-section-divider-BpE5NDDX.js} +5 -5
  3. package/dist/{ci-DB7v3zSt.js → ci-DNtt9X6S.js} +13 -13
  4. package/dist/cli.js +25 -25
  5. package/dist/{constants-rmkaA7iw.js → constants-DHn5rUeg.js} +5 -5
  6. package/dist/{design-CdjV6tS8.js → design-u2afuNir.js} +4 -4
  7. package/dist/{exit-gracefully-DYAZMdvL.js → exit-gracefully-DlI5QxjC.js} +6 -6
  8. package/dist/{handle-error-rZIxgzIJ.js → handle-error-ChH7NTTt.js} +6 -6
  9. package/dist/index.d.ts +4 -1
  10. package/dist/index.js +9 -7
  11. package/dist/{inspect-td2f87RL.js → inspect-BEMrqB0D.js} +29 -29
  12. package/dist/{install-doctor-script-DutA3AmF.js → install-doctor-script-D5XbyGON.js} +5 -5
  13. package/dist/{install-github-workflow-CrCUq-fk.js → install-github-workflow-bsR3MAJ4.js} +5 -5
  14. package/dist/{install-react-doctor-AjM8eNr6.js → install-react-doctor-CEZd9boZ.js} +9 -9
  15. package/dist/{install-DFz26Git.js → install-rmw4kZuQ.js} +10 -10
  16. package/dist/{is-cache-globally-disabled-DquUESHw.js → is-cache-globally-disabled-DDlh_f1u.js} +4 -4
  17. package/dist/{jsx-runtime-CmVfaGKL.js → jsx-runtime-RhgTgCyJ.js} +6 -6
  18. package/dist/{print-branded-header-BSPcMb1k.js → print-branded-header-DUpSxfB1.js} +4 -4
  19. package/dist/{prompt-runtime-scan-url-9SslR9ci.js → prompt-runtime-scan-url-ClnyA-kD.js} +5 -5
  20. package/dist/{read-object-file-FXP4EgJe.js → read-object-file-BmbbCthv.js} +4 -4
  21. package/dist/{record-metric-DlQ2Xkco.js → record-metric-BNXhF2A-.js} +157 -83
  22. package/dist/{report-error-CsS16tjk.js → report-error-BaQdqDfo.js} +6 -6
  23. package/dist/{report-workflow-result-DL4pJV2h.js → report-workflow-result-keduRDKN.js} +6 -6
  24. package/dist/{resolve-scope-Dydx4htr.js → resolve-scope-_R9av4PA.js} +6 -6
  25. package/dist/{rules-BITRtAOo.js → rules-mbLozamL.js} +7 -7
  26. package/dist/{run-scan-app-BvZAmq01.js → run-scan-app-yG6ELpUl.js} +11 -11
  27. package/dist/{runtime-scan-BKWHOq5l.js → runtime-scan-DNhYo683.js} +10 -10
  28. package/dist/{sanitize-runtime-url-SAbuIQOl.js → sanitize-runtime-url-DM_qbPGY.js} +4 -4
  29. package/dist/{scan-BNqVRm8k.js → scan-CAAixMS9.js} +10 -10
  30. package/dist/{should-fail-scan-gate-ASw8KS4V.js → should-fail-scan-gate-DobEL_kS.js} +104 -18
  31. package/dist/{should-skip-prompts-D86BK2WZ.js → should-skip-prompts-CGTEgq2F.js} +4 -4
  32. package/dist/{should-use-tui--ondyPLd.js → should-use-tui-DG2l-Td3.js} +4 -4
  33. package/dist/skills/react-doctor/SKILL.md +1 -1
  34. package/dist/{start-scan-preamble-CCqs1vP4.js → start-scan-preamble-BPz3nzCQ.js} +5 -5
  35. package/dist/start-scan-preamble.js +3 -3
  36. package/dist/{telemetry-runtime-DRB6SHxI.js → telemetry-runtime-CUn1--rM.js} +7 -7
  37. package/dist/{version-c57nNOfC.js → version-CbFBCUY9.js} +5 -5
  38. package/dist/{why-B16Tzl_q.js → why-BIX2FUbP.js} +4 -4
  39. package/dist/{with-run-span-BpoDt67p.js → with-run-span-BsS7dU6e.js} +6 -6
  40. package/package.json +4 -4
package/README.md CHANGED
@@ -95,7 +95,7 @@ URLs, source paths, and React profiling details. Treat it as sensitive applicati
95
95
 
96
96
  `--scope changed --base <ref>` reports only new findings in files touched by the diff. It scans those files at the base and in the current tree. Uncommitted changes use `HEAD` when the base is the current branch.
97
97
 
98
- A match uses the rule ID, file path (following Git renames), diagnostic message, and a fingerprint of the flagged source span with whitespace normalized. Line and column numbers do not affect the match. Each base finding matches at most one current finding: two matching findings at base and three now produce one new finding. Changes elsewhere in a function do not change a finding's fingerprint. Changed flagged code or a changed message can produce a new finding.
98
+ Findings are grouped by file path (following Git renames) and rule ID. Only the increase in each group's finding count is new: two findings at base and three now produce one new finding; two at base and two now produce none. Formatting, variable renames, edits inside flagged code, and line shifts do not create new findings when the count stays the same. Groups with no count increase need no location matching. When the count increases, exact fingerprint and message matches are paired first. Message similarity and line distance adjusted for Git diff shifts then select the most likely added findings. This is a count gate: fixing one issue and adding another under the same rule in the same file produces no increase. Current rule, severity, tag, and ignore settings apply before matching.
99
99
 
100
100
  New files have no base findings. Add `--include-untracked` to scan untracked files too. Deleted files and removed findings are not reported. `--blocking`, the exit code, and summary counts use only the unmatched current findings. The score still describes the current scan.
101
101
 
@@ -109,9 +109,9 @@ react-doctor --baseline base-report.json --blocking warning
109
109
  react-doctor --scope changed --baseline base-report.json --blocking warning
110
110
  ```
111
111
 
112
- `--baseline` uses the same matching rules and skips the base scan. Use the same React Doctor version, rules, and scan options for both scans. The saved report must be a complete scan with fingerprints, not a previous comparison result. Regenerate older reports that lack fingerprints. Without Git, a saved report still works; rename matching requires Git history for the report's `sourceRevision`. With `--scope changed`, Git limits the scan to changed files when available; otherwise the full current tree is compared.
112
+ `--baseline` uses the same matching rules and skips the base scan. Use the same React Doctor version, rules, and scan options for both scans. The saved report must be a complete scan with fingerprints, not a previous comparison result. Saved reports record each project's source-dependent filter settings (`textComponents`, `rawTextWrapperComponents`, and `respectInlineDisables`). A mismatch requires a new base report with the current settings, or a Git comparison. Reports cannot recover findings that the original scan suppressed. Regenerate older reports that lack fingerprints or filter settings. Without Git, a saved report still works; rename matching requires Git history for the report's `sourceRevision`. With `--scope changed`, Git limits the scan to changed files when available; otherwise the full current tree is compared.
113
113
 
114
- JSON reports keep schema version 3 and add optional diagnostic `fingerprint` and report `sourceRevision` fields. The `baseline` block records `source` (`"base"` or `"baseline"`), `baseRef`, `baselineFile` for saved reports, and `matchedCount`. `newCount` equals the summary finding count.
114
+ JSON reports keep schema version 3 and add optional diagnostic `fingerprint`, report `sourceRevision`, and per-project `sourceFilterConfigHash` fields. The `baseline` block records `source` (`"base"` or `"baseline"`), `baseRef`, `baselineFile` for saved reports, and `matchedCount`. `newCount` equals the summary finding count.
115
115
 
116
116
  ## Telemetry
117
117
 
@@ -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]="fd9a916f-fad0-5b8d-8484-ecb9d4c035c8")}catch(e){}}();
3
- import { bt as DOCS_URL, lt as CANONICAL_GITHUB_URL } from "./constants-rmkaA7iw.js";
4
- import { kt as highlighter } from "./record-metric-DlQ2Xkco.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]="fdf844a9-225a-5571-95c2-e00ec5a93c1d")}catch(e){}}();
3
+ import { bt as DOCS_URL, lt as CANONICAL_GITHUB_URL } from "./constants-DHn5rUeg.js";
4
+ import { At as highlighter } from "./record-metric-BNXhF2A-.js";
5
5
  //#region src/cli/utils/resolve-measure-width.ts
6
6
  const resolveClampedWidth = (input) => {
7
7
  const terminalColumns = process.stdout.columns;
@@ -77,5 +77,5 @@ const buildSectionDivider = () => highlighter.dim(`${DIVIDER_INDENT}${"─".repe
77
77
  //#endregion
78
78
  export { buildFooterLinkLines as n, buildSectionDivider as t };
79
79
 
80
- //# sourceMappingURL=build-section-divider-DdDfVhIU.js.map
81
- //# debugId=fd9a916f-fad0-5b8d-8484-ecb9d4c035c8
80
+ //# sourceMappingURL=build-section-divider-BpE5NDDX.js.map
81
+ //# debugId=fdf844a9-225a-5571-95c2-e00ec5a93c1d
@@ -1,16 +1,16 @@
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]="f1b77053-b079-57fb-831f-44e1f31ad7d3")}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]="d8641b5b-5cd3-5f36-bd26-dbab433a31a8")}catch(e){}}();
3
3
  import { i as __toESM, r as __require, t as __commonJSMin } from "./chunk-ChKA3wi6.js";
4
- import { kt as GITHUB_ACTIONS_SETUP_URL, u as METRIC, ut as CI_URL } from "./constants-rmkaA7iw.js";
5
- import { kt as highlighter, t as recordCount, xn as runSync } from "./record-metric-DlQ2Xkco.js";
6
- import { o as isExpectedUserError } from "./telemetry-runtime-DRB6SHxI.js";
7
- import { n as handleUserError, t as handleError } from "./handle-error-rZIxgzIJ.js";
8
- import { t as reportErrorToSentry } from "./report-error-CsS16tjk.js";
9
- import { N as cliLogger, c as spinner, n as findNearestPackageDirectory } from "./install-doctor-script-DutA3AmF.js";
10
- 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-CrCUq-fk.js";
11
- import { a as isValidBlockingLevel, c as openWorkflowPullRequest, l as stageWorkflowFile, n as isScopeValue } from "./resolve-scope-Dydx4htr.js";
12
- import { t as shouldSkipPrompts } from "./should-skip-prompts-D86BK2WZ.js";
13
- import { t as printBrandedHeader } from "./print-branded-header-BSPcMb1k.js";
4
+ import { kt as GITHUB_ACTIONS_SETUP_URL, u as METRIC, ut as CI_URL } from "./constants-DHn5rUeg.js";
5
+ import { At as highlighter, Cn as runSync, t as recordCount } from "./record-metric-BNXhF2A-.js";
6
+ import { o as isExpectedUserError } from "./telemetry-runtime-CUn1--rM.js";
7
+ import { n as handleUserError, t as handleError } from "./handle-error-ChH7NTTt.js";
8
+ import { t as reportErrorToSentry } from "./report-error-BaQdqDfo.js";
9
+ import { N as cliLogger, c as spinner, n as findNearestPackageDirectory } from "./install-doctor-script-D5XbyGON.js";
10
+ 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-bsR3MAJ4.js";
11
+ import { a as isValidBlockingLevel, c as openWorkflowPullRequest, l as stageWorkflowFile, n as isScopeValue } from "./resolve-scope-_R9av4PA.js";
12
+ import { t as shouldSkipPrompts } from "./should-skip-prompts-CGTEgq2F.js";
13
+ import { t as printBrandedHeader } from "./print-branded-header-DUpSxfB1.js";
14
14
  import * as fs$1 from "node:fs";
15
15
  import * as path$1 from "node:path";
16
16
  //#region src/cli/utils/ci/ci-provider.ts
@@ -7499,5 +7499,5 @@ const ciConfigAction = (options) => runCiCommand("config", runCiConfig, options)
7499
7499
  //#endregion
7500
7500
  export { ciConfigAction, ciInstallAction, ciUpgradeAction };
7501
7501
 
7502
- //# sourceMappingURL=ci-DB7v3zSt.js.map
7503
- //# debugId=f1b77053-b079-57fb-831f-44e1f31ad7d3
7502
+ //# sourceMappingURL=ci-DNtt9X6S.js.map
7503
+ //# debugId=d8641b5b-5cd3-5f36-bd26-dbab433a31a8
package/dist/cli.js CHANGED
@@ -1,14 +1,14 @@
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]="cc8f2e34-2b12-55f0-907a-f0131fd67226")}catch(e){}}();
3
3
  import { i as __toESM, r as __require, t as __commonJSMin } from "./chunk-ChKA3wi6.js";
4
- import { lt as CANONICAL_GITHUB_URL, ut as CI_URL } from "./constants-rmkaA7iw.js";
5
- import "./start-scan-preamble-CCqs1vP4.js";
6
- import { At as isPathInsideDirectory, Bn as isFile, Rn as isDirectory, S as isDebugFlagEnabled, Xt as setColorEnabled, _ as VERSION, d as isJsonModeActive, h as writeJsonErrorReport, ht as filterSourceFiles, i as isTelemetryEnabled, kt as highlighter, y as CliInputError } from "./record-metric-DlQ2Xkco.js";
7
- import { a as initializeSentry, n as shutdownTelemetry, o as isExpectedUserError, r as flushSentry } from "./telemetry-runtime-DRB6SHxI.js";
8
- import { t as exitGracefully } from "./exit-gracefully-DYAZMdvL.js";
9
- import { n as handleUserError, t as handleError } from "./handle-error-rZIxgzIJ.js";
4
+ import { lt as CANONICAL_GITHUB_URL, ut as CI_URL } from "./constants-DHn5rUeg.js";
5
+ import "./start-scan-preamble-BPz3nzCQ.js";
6
+ import { At as highlighter, Bn as isDirectory, Hn as isFile, Qt as setColorEnabled, S as isDebugFlagEnabled, _ as VERSION, d as isJsonModeActive, h as writeJsonErrorReport, ht as filterSourceFiles, i as isTelemetryEnabled, jt as isPathInsideDirectory, y as CliInputError } from "./record-metric-BNXhF2A-.js";
7
+ import { a as initializeSentry, n as shutdownTelemetry, o as isExpectedUserError, r as flushSentry } from "./telemetry-runtime-CUn1--rM.js";
8
+ import { t as exitGracefully } from "./exit-gracefully-DlI5QxjC.js";
9
+ import { n as handleUserError, t as handleError } from "./handle-error-ChH7NTTt.js";
10
10
  import { n as getLastRunTraceId } from "./active-run-trace-Dewycxda.js";
11
- import { t as reportErrorToSentry } from "./report-error-CsS16tjk.js";
11
+ import { t as reportErrorToSentry } from "./report-error-BaQdqDfo.js";
12
12
  import { t as toForwardSlashes } from "./path-format-By20mo8A.js";
13
13
  import { t as unrefStdin } from "./unref-stdin-D-NZBFpg.js";
14
14
  import * as path$1 from "node:path";
@@ -3560,7 +3560,7 @@ ${highlighter.dim("Learn more:")}
3560
3560
  const collectCategoryOption = (value, previousValues) => [...previousValues ?? [], value];
3561
3561
  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("--baseline <report.json>", "report only new issues compared with a saved JSON report").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);
3562
3562
  program.action(async (positionalPaths = [], flags) => {
3563
- const { runScanCommand } = await import("./scan-BNqVRm8k.js");
3563
+ const { runScanCommand } = await import("./scan-CAAixMS9.js");
3564
3564
  return runScanCommand({
3565
3565
  ...resolvePositionalScanInput(positionalPaths),
3566
3566
  flags,
@@ -3568,75 +3568,75 @@ program.action(async (positionalPaths = [], flags) => {
3568
3568
  });
3569
3569
  });
3570
3570
  program.command("design [directory]").description("Run only the focused UI design diagnostics").addHelpText("after", renderDesignHelpEpilog).action(async (directory, _options, command) => {
3571
- const { designAction } = await import("./design-CdjV6tS8.js");
3571
+ const { designAction } = await import("./design-u2afuNir.js");
3572
3572
  return designAction(directory ?? ".", command.optsWithGlobals());
3573
3573
  });
3574
3574
  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) => {
3575
- const { runtimeScanAction } = await import("./runtime-scan-BKWHOq5l.js");
3575
+ const { runtimeScanAction } = await import("./runtime-scan-DNhYo683.js");
3576
3576
  return runtimeScanAction(url, options);
3577
3577
  });
3578
3578
  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) => {
3579
- const { whyAction } = await import("./why-B16Tzl_q.js");
3579
+ const { whyAction } = await import("./why-BIX2FUbP.js");
3580
3580
  return whyAction(location, options);
3581
3581
  });
3582
3582
  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) => {
3583
- const { installAction } = await import("./install-DFz26Git.js");
3583
+ const { installAction } = await import("./install-rmw4kZuQ.js");
3584
3584
  return installAction(options, command);
3585
3585
  });
3586
3586
  const providerOption = ["--provider <name>", "ci provider: github-actions or gitlab-ci (auto-detected by default)"];
3587
3587
  const prOption = ["--pr", "open a pull request with the change instead of writing it to the working tree"];
3588
3588
  const ci = program.command("ci").description("Set up, upgrade, and configure React Doctor in your CI");
3589
3589
  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) => {
3590
- const { ciInstallAction } = await import("./ci-DB7v3zSt.js");
3590
+ const { ciInstallAction } = await import("./ci-DNtt9X6S.js");
3591
3591
  return ciInstallAction(command.optsWithGlobals());
3592
3592
  });
3593
3593
  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) => {
3594
- const { ciConfigAction } = await import("./ci-DB7v3zSt.js");
3594
+ const { ciConfigAction } = await import("./ci-DNtt9X6S.js");
3595
3595
  return ciConfigAction(command.optsWithGlobals());
3596
3596
  });
3597
3597
  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) => {
3598
- const { ciUpgradeAction } = await import("./ci-DB7v3zSt.js");
3598
+ const { ciUpgradeAction } = await import("./ci-DNtt9X6S.js");
3599
3599
  return ciUpgradeAction(command.optsWithGlobals());
3600
3600
  });
3601
3601
  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 () => {
3602
- const { versionAction } = await import("./version-c57nNOfC.js");
3602
+ const { versionAction } = await import("./version-CbFBCUY9.js");
3603
3603
  return versionAction();
3604
3604
  });
3605
3605
  const rules = program.command("rules").description("List, explain, and configure which React Doctor rules run");
3606
3606
  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) => {
3607
- const { rulesListAction } = await import("./rules-BITRtAOo.js");
3607
+ const { rulesListAction } = await import("./rules-mbLozamL.js");
3608
3608
  return rulesListAction(command.optsWithGlobals());
3609
3609
  });
3610
3610
  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) => {
3611
- const { rulesExplainAction } = await import("./rules-BITRtAOo.js");
3611
+ const { rulesExplainAction } = await import("./rules-mbLozamL.js");
3612
3612
  return rulesExplainAction(rule, command.optsWithGlobals());
3613
3613
  });
3614
3614
  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) => {
3615
- const { rulesSetAction } = await import("./rules-BITRtAOo.js");
3615
+ const { rulesSetAction } = await import("./rules-mbLozamL.js");
3616
3616
  return rulesSetAction(rule, severity, command.optsWithGlobals());
3617
3617
  });
3618
3618
  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) => {
3619
- const { rulesEnableAction } = await import("./rules-BITRtAOo.js");
3619
+ const { rulesEnableAction } = await import("./rules-mbLozamL.js");
3620
3620
  return rulesEnableAction(rule, command.optsWithGlobals());
3621
3621
  });
3622
3622
  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) => {
3623
- const { rulesDisableAction } = await import("./rules-BITRtAOo.js");
3623
+ const { rulesDisableAction } = await import("./rules-mbLozamL.js");
3624
3624
  return rulesDisableAction(rule, command.optsWithGlobals());
3625
3625
  });
3626
3626
  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) => {
3627
- const { rulesCategoryAction } = await import("./rules-BITRtAOo.js");
3627
+ const { rulesCategoryAction } = await import("./rules-mbLozamL.js");
3628
3628
  return rulesCategoryAction(category, severity, command.optsWithGlobals());
3629
3629
  });
3630
3630
  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) => {
3631
- const { rulesIgnoreTagAction } = await import("./rules-BITRtAOo.js");
3631
+ const { rulesIgnoreTagAction } = await import("./rules-mbLozamL.js");
3632
3632
  return rulesIgnoreTagAction(tag, command.optsWithGlobals());
3633
3633
  });
3634
3634
  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) => {
3635
- const { rulesUnignoreTagAction } = await import("./rules-BITRtAOo.js");
3635
+ const { rulesUnignoreTagAction } = await import("./rules-mbLozamL.js");
3636
3636
  return rulesUnignoreTagAction(tag, command.optsWithGlobals());
3637
3637
  });
3638
3638
  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) => {
3639
- const { runScanCommand } = await import("./scan-BNqVRm8k.js");
3639
+ const { runScanCommand } = await import("./scan-CAAixMS9.js");
3640
3640
  return runScanCommand({
3641
3641
  directory,
3642
3642
  flags: command.optsWithGlobals(),
@@ -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]="6c91479d-198c-5c9d-beae-b13bc66cd3eb")}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]="a2fb00c2-593b-5d58-b7fe-378efd853ad4")}catch(e){}}();
3
3
  import { createRequire } from "node:module";
4
4
  import * as fs$1 from "node:fs";
5
5
  import fs from "node:fs";
@@ -11,7 +11,7 @@ import os from "node:os";
11
11
  import crypto from "node:crypto";
12
12
  import { Worker } from "node:worker_threads";
13
13
  import * as net from "node:net";
14
- //#region ../core/dist/constants-BnAIbT84.js
14
+ //#region ../core/dist/constants-E-ghW6VY.js
15
15
  const HTML_FILE_PATTERN = /\.html$/i;
16
16
  const SOURCE_FILE_PATTERN = /\.(?:astro|tsx?|jsx?|mts|mjs|[hH][tT][mM][lL])$/;
17
17
  const GENERATED_BUNDLE_FILE_PATTERN = /\.(iife|umd|global|min)\.m?js$/i;
@@ -425,7 +425,7 @@ const MAINTAINABILITY_CATEGORY = "Maintainability";
425
425
  //#region ../core/dist/react-compiler-detection-worker-protocol-Dp5LlrE8.js
426
426
  const isReactCompilerDetectionReply = (value) => typeof value === "object" && value !== null && "id" in value && typeof value.id === "number" && "hasReactCompiler" in value && (typeof value.hasReactCompiler === "boolean" || value.hasReactCompiler === null);
427
427
  //#endregion
428
- //#region ../core/dist/react-compiler-detection-client-D6Lj1rf0.js
428
+ //#region ../core/dist/react-compiler-detection-client-fc698QTY.js
429
429
  const pendingOutputsByRequestKey = /* @__PURE__ */ new Map();
430
430
  const toRequestKey = (request) => [
431
431
  request.directory,
@@ -1031,5 +1031,5 @@ const METRIC = {
1031
1031
  //#endregion
1032
1032
  export { warmReactCompilerDetection as $, OXLINT_WORKER_JOB_END_MARKER as $t, buildGitSourceListingRequest as A, TARGET_BLANK_BROWSER_SUPPORT as An, GITHUB_VIEWER_PERMISSION_TIMEOUT_MS as At, resolveGitCommand as B, MAINTAINABILITY_DUPLICATE_JSX_RULE as Bt, SENTRY_RELEASE_PREFIX as C, SUPPLY_CHAIN_CACHE_TTL_MS as Cn, ES_TARGET_YEAR_BY_NAME as Ct, TUI_REPORT_COMPACT_MAX_ROWS as D, SUPPLY_CHAIN_PLUGIN as Dn, GENERATED_BUNDLE_FILE_PATTERN as Dt, TRACKED_FILE_FLAGS_GIT_ARGUMENTS as E, SUPPLY_CHAIN_OVERLAP_TIMEOUT_MS as En, FILE_LINT_CACHE_MAX_FILE_COUNT as Et, lowerChildProcessPriority as F, VERCEL_NEXTJS_SECURITY_RELEASE_URL as Fn, HTML_FILE_PATTERN as Ft, resolvePluginPath as G, MINIFIED_SNIFF_BYTES as Gt, resolveOxlintThreadCount as H, MAINTAINABILITY_SOURCE_FILE_PATTERN as Ht, prefetchGitCommand as I, getCategoryImpact as In, IGNORED_DIRECTORIES as It, resolveTsConfigRelativePath as J, OXLINT_NODE_REQUIREMENT as Jt, resolveReactDoctorCacheDir as K, OCCURRENCE_MATCHED_CATEGORIES as Kt, prespawnOxlintWorkers as L, JSX_DUPLICATION_SOURCE_FILE_PATTERN as Lt, buildOxlintWorkerSpawnSpec as M, TELEMETRY_SHUTDOWN_TIMEOUT_MS as Mn, GIT_LS_FILES_MAX_BUFFER_BYTES as Mt, discardPrefetchedGitCommands as N, TSCONFIG_FILENAMES as Nn, GIT_SHOW_MAX_BUFFER_BYTES as Nt, TUI_REPORT_DETAIL_WIDTH_FRACTION as O, SUPPLY_CHAIN_RULE as On, GENERATED_SOURCE_DIRECTORY_PATTERN as Ot, killUnadoptedOxlintWorkers as P, TYPESCRIPT_DECLARATION_FILE_PATTERN as Pn, GIT_SOURCE_LISTING_ARGUMENTS as Pt, takeReactCompilerDetection as Q, OXLINT_SPLIT_TOTAL_BUDGET_MS as Qt, readSystemConcurrencyFacts as R, JSX_FILE_PATTERN as Rt, SENTRY_FLUSH_TIMEOUT_MS as S, SUPPLY_CHAIN_CACHE_SUBDIR as Sn, ENTERPRISE_CONTACT_URL as St, STAGED_SNAPSHOT_ADDITIONAL_CONFIG_FILENAMES as T, SUPPLY_CHAIN_IGNORED_PACKAGES as Tn, FILE_LINT_CACHE_FILENAME as Tt, resolveOxlintToolchainVersions as U, MAX_GLOB_PATTERN_LENGTH_CHARS as Ut, resolveOxlintBinary as V, MAINTAINABILITY_PLUGIN as Vt, resolveOxlintWorkerRuntime as W, MILLISECONDS_PER_SECOND as Wt, spawnOxlintWorkerProcess as X, OXLINT_OUTPUT_MAX_BYTES as Xt, setChildProcessRef as Y, OXLINT_OOM_RESCUE_BUDGET_MS as Yt, takePrespawnedOxlintWorker as Z, OXLINT_SPAWN_TIMEOUT_MS as Zt, SCAN_PREAMBLE_SKIP_FLAGS as _, SOURCE_FILE_PATTERN as _n, DIAGNOSTIC_CATEGORY_BUCKETS as _t, CACHE_DISABLED_VALUES as a, REACT_ROUTER_CAPABILITY_THRESHOLDS as an, AXIOM_METRICS_DATASET_HEADER as at, SCAN_RESULT_CACHE_MAX_HASHED_FILE_SIZE_BYTES as b, SPAWN_ARGS_MAX_LENGTH_CHARS_POSIX as bn, DOCS_URL as bt, HEAD_SHA_GIT_ARGUMENTS as c, ROOT_CAUSE_GROUPABLE_RULE_KEYS as cn, CANONICAL_DISCORD_URL as ct, METRIC_DISTRIBUTION_BOUNDARIES as d, SHARE_BASE_URL as dn, COMPILER_CLEANUP_BUCKET as dt, PROJECT_ANALYSIS_WORKER_MAX_OLD_SPACE_MB as en, ABORT_EXIT_CODES as et, MINIMUM_VTE_VERSION_FOR_HYPERLINKS as f, SIDECAR_LINT_CACHE_FILENAME as fn, COMPILER_CLEANUP_RULE_KEYS as ft, RUN_GIT_MAX_BUFFER_BYTES as g, SOCKET_PACKAGE_PAGE_BASE as gn, DEFAULT_BRANCH_CANDIDATES as gt, REPOSITORY_ROOT_GIT_ARGUMENTS as h, SOCKET_FREE_USER_AGENT as hn, CONFIG_SCHEMA_URL as ht, BASELINE_FILES_TEMP_DIR_PREFIX as i, REACT_BLOG_RSC_ADVISORY_URL as in, AXIOM_DEFAULT_DOMAIN as it, buildOxlintChildEnv as j, TELEMETRY_EXPORT_INTERVAL_MS as jn, GIT_CHECK_ATTR_MAX_BUFFER_BYTES as jt, WORKTREE_STATUS_GIT_ARGUMENTS as k, TAILWIND_POSTCSS7_COMPAT_ALIAS as kn, GITHUB_ACTIONS_SETUP_URL as kt, INTERNAL_ERROR_JSON_FALLBACK as l, SCANNED_DOT_DIRECTORIES as ln, CANONICAL_GITHUB_URL as lt, REACT_DOCTOR_CONFIG_PROJECT_NAME as m, SOCKET_FREE_PURL_API_BASE as mn, CONFIG_FINGERPRINT_FILENAMES as mt, AXIOM_METRICS_DATASET as n, PROJECT_ANALYSIS_WORKER_TIMEOUT_CEILING_MS as nn, APP_ONLY_RULE_KEYS as nt, CI_TRUST_COMPANIES as o, REACT_SERVER_DOM_PACKAGES as on, AXIOM_METRICS_PATH as ot, NANOSECONDS_PER_MILLISECOND as p, SKILL_NAME as pn, CONFIG_CACHE_TTL_MS as pt, resolveScanConcurrency as q, OXLINT_IGNORED_DECLARATION_DIAGNOSTIC_CODES as qt, AXIOM_TRACES_DATASET as r, PROJECT_ANALYSIS_WORKER_TIMEOUT_MS as rn, AXIOM_DATASET_HEADER as rt, GH_DEFAULT_BRANCH_PROBE_TIMEOUT_MS as s, RECOMMENDED_PNPM_MINIMUM_RELEASE_AGE_MINUTES as sn, AXIOM_TRACES_PATH as st, AXIOM_INGEST_TOKEN as t, PROJECT_ANALYSIS_WORKER_MEMORY_BUDGET_BYTES as tn, ADOPTABLE_LINT_CONFIG_FILENAMES as tt, METRIC as u, SCORE_API_URL as un, CI_URL as ut, SCAN_RESULT_CACHE_FILENAME as v, SPAWN_ARGS_MAX_LENGTH_CHARS as vn, DISABLE_DIRECTIVE_BACKUP_DIRECTORY_SEGMENTS as vt, STAGED_FILES_TEMP_DIR_PREFIX as w, SUPPLY_CHAIN_CATEGORY as wn, FETCH_TIMEOUT_MS as wt, SENTRY_DSN as x, STAGED_FILES_PROJECT_CONFIG_FILENAMES as xn, DUPLICATE_JSX_WORKER_IDLE_TIMEOUT_MS as xt, SCAN_RESULT_CACHE_GIT_ARGUMENTS as y, SPAWN_ARGS_MAX_LENGTH_CHARS_DARWIN as yn, DOCS_RULES_BASE_URL as yt, resolveConfiguredScanConcurrency as z, MAINTAINABILITY_CATEGORY as zt };
1033
1033
 
1034
- //# sourceMappingURL=constants-rmkaA7iw.js.map
1035
- //# debugId=6c91479d-198c-5c9d-beae-b13bc66cd3eb
1034
+ //# sourceMappingURL=constants-DHn5rUeg.js.map
1035
+ //# debugId=a2fb00c2-593b-5d58-b7fe-378efd853ad4
@@ -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]="9b091cd8-aa52-5ecd-860c-cc10828b3031")}catch(e){}}();
3
- import { t as inspectAction } from "./inspect-td2f87RL.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]="83a8bc3e-1085-52f6-a537-0f56645b2d97")}catch(e){}}();
3
+ import { t as inspectAction } from "./inspect-BEMrqB0D.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-CdjV6tS8.js.map
14
- //# debugId=9b091cd8-aa52-5ecd-860c-cc10828b3031
13
+ //# sourceMappingURL=design-u2afuNir.js.map
14
+ //# debugId=83a8bc3e-1085-52f6-a537-0f56645b2d97
@@ -1,9 +1,9 @@
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]="246859f5-ba3e-5775-b015-8b646fef2c42")}catch(e){}}();
3
- import { d as isJsonModeActive, m as writeJsonCancellationReport } from "./record-metric-DlQ2Xkco.js";
4
- import { n as shutdownTelemetry, r as flushSentry } from "./telemetry-runtime-DRB6SHxI.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]="27c928c9-834e-5ee8-a1f2-96ce00f66c2a")}catch(e){}}();
3
+ import { d as isJsonModeActive, m as writeJsonCancellationReport } from "./record-metric-BNXhF2A-.js";
4
+ import { n as shutdownTelemetry, r as flushSentry } from "./telemetry-runtime-CUn1--rM.js";
5
5
  import { t as activeScanAbortRegistry } from "./active-scan-abort-registry-CCTgal0O.js";
6
- import { n as buildFooterLinkLines, t as buildSectionDivider } from "./build-section-divider-DdDfVhIU.js";
6
+ import { n as buildFooterLinkLines, t as buildSectionDivider } from "./build-section-divider-BpE5NDDX.js";
7
7
  //#region src/cli/utils/active-tui-renderer.ts
8
8
  let activeTuiRenderer = null;
9
9
  const registerActiveTuiRenderer = (renderer) => {
@@ -50,5 +50,5 @@ const exitGracefully = () => {
50
50
  //#endregion
51
51
  export { registerActiveTuiRenderer as n, exitGracefully as t };
52
52
 
53
- //# sourceMappingURL=exit-gracefully-DYAZMdvL.js.map
54
- //# debugId=246859f5-ba3e-5775-b015-8b646fef2c42
53
+ //# sourceMappingURL=exit-gracefully-DlI5QxjC.js.map
54
+ //# debugId=27c928c9-834e-5ee8-a1f2-96ce00f66c2a
@@ -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]="4c828977-8cbf-52d6-8458-e9cd6f03146d")}catch(e){}}();
3
- import { ct as CANONICAL_DISCORD_URL, lt as CANONICAL_GITHUB_URL, u as METRIC } from "./constants-rmkaA7iw.js";
4
- import { Mt as isReactDoctorError, _ as VERSION, fn as gen, in as error, kt as highlighter, t as recordCount, vt as formatErrorChain, xn as runSync, yt as formatReactDoctorError, zn as isErrnoException } from "./record-metric-DlQ2Xkco.js";
5
- import { c as isNpmCacheCorruptionError, l as formatEnvironmentError, s as formatNpmCacheCorruptionError, u as isEnvironmentError } from "./telemetry-runtime-DRB6SHxI.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]="520efd75-abbb-56aa-9e53-1b5845707ee0")}catch(e){}}();
3
+ import { ct as CANONICAL_DISCORD_URL, lt as CANONICAL_GITHUB_URL, u as METRIC } from "./constants-DHn5rUeg.js";
4
+ import { At as highlighter, Cn as runSync, Nt as isReactDoctorError, Vn as isErrnoException, _ as VERSION, mn as gen, on as error, t as recordCount, vt as formatErrorChain, yt as formatReactDoctorError } from "./record-metric-BNXhF2A-.js";
5
+ import { c as isNpmCacheCorruptionError, l as formatEnvironmentError, s as formatNpmCacheCorruptionError, u as isEnvironmentError } from "./telemetry-runtime-CUn1--rM.js";
6
6
  //#region src/cli/utils/handle-error.ts
7
7
  const OTLP_ENDPOINT_ENVIRONMENT_VARIABLE = "REACT_DOCTOR_OTLP_ENDPOINT";
8
8
  const OTLP_AUTH_HEADER_ENVIRONMENT_VARIABLE = "REACT_DOCTOR_OTLP_AUTH_HEADER";
@@ -111,5 +111,5 @@ const handleUserError = (error$1, options = {}) => {
111
111
  //#endregion
112
112
  export { handleUserError as n, handleError as t };
113
113
 
114
- //# sourceMappingURL=handle-error-rZIxgzIJ.js.map
115
- //# debugId=4c828977-8cbf-52d6-8458-e9cd6f03146d
114
+ //# sourceMappingURL=handle-error-ChH7NTTt.js.map
115
+ //# debugId=520efd75-abbb-56aa-9e53-1b5845707ee0
package/dist/index.d.ts CHANGED
@@ -341,7 +341,7 @@ interface Pipeable {
341
341
  */
342
342
  declare const Class$1: new () => Pipeable;
343
343
  //#endregion
344
- //#region ../core/dist/resolve-scan-concurrency-CVKviZpM.d.ts
344
+ //#region ../core/dist/resolve-scan-concurrency-DJ7pmvUB.d.ts
345
345
  /**
346
346
  * A secondary source location attached to a diagnostic (oxlint's
347
347
  * non-primary labels). Editors render these as
@@ -1202,6 +1202,7 @@ interface DiagnoseProjectsResult {
1202
1202
  //#endregion
1203
1203
  //#region src/types/inspect.d.ts
1204
1204
  interface InspectResult {
1205
+ sourceFilterConfigHash?: string;
1205
1206
  diagnostics: Diagnostic[];
1206
1207
  score: ScoreResult | null;
1207
1208
  skippedChecks: string[];
@@ -1279,6 +1280,7 @@ interface InspectResult {
1279
1280
  fixedCount: number; /** Total findings at base (over the same files), for context. */
1280
1281
  baseTotalCount: number; /** Pre-existing findings matched after moving to a different file. */
1281
1282
  crossFileMatchCount?: number;
1283
+ ruleCountMatchCount?: number;
1282
1284
  };
1283
1285
  }
1284
1286
  /**
@@ -1376,6 +1378,7 @@ interface JsonReportDiagnosticV3 extends Diagnostic {
1376
1378
  tags: string[];
1377
1379
  }
1378
1380
  interface JsonReportProjectEntryV3 {
1381
+ sourceFilterConfigHash?: string;
1379
1382
  directory: string;
1380
1383
  packageRoot: string;
1381
1384
  framework: ProjectInfo["framework"];
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]="6735a811-0ec5-5fae-8667-944f26e109f7")}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]="d2b0583c-877f-57cf-8b0a-65519428807c")}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 fs$1$2 from "node:fs";
@@ -26,7 +26,7 @@ import { PassThrough } from "node:stream";
26
26
  import { convertToTSX } from "@astrojs/compiler/sync";
27
27
  import { STATUS_CODES } from "node:http";
28
28
  import { gzipSync } from "node:zlib";
29
- //#region ../core/dist/constants-BnAIbT84.js
29
+ //#region ../core/dist/constants-E-ghW6VY.js
30
30
  const HTML_FILE_PATTERN = /\.html$/i;
31
31
  const SOURCE_FILE_PATTERN = /\.(?:astro|tsx?|jsx?|mts|mjs|[hH][tT][mM][lL])$/;
32
32
  const GENERATED_BUNDLE_FILE_PATTERN = /\.(iife|umd|global|min)\.m?js$/i;
@@ -438,7 +438,7 @@ const isPlainObject = (value) => {
438
438
  //#region ../core/dist/react-compiler-detection-worker-protocol-Dp5LlrE8.js
439
439
  const isReactCompilerDetectionReply = (value) => typeof value === "object" && value !== null && "id" in value && typeof value.id === "number" && "hasReactCompiler" in value && (typeof value.hasReactCompiler === "boolean" || value.hasReactCompiler === null);
440
440
  //#endregion
441
- //#region ../core/dist/react-compiler-detection-client-D6Lj1rf0.js
441
+ //#region ../core/dist/react-compiler-detection-client-fc698QTY.js
442
442
  const pendingOutputsByRequestKey = /* @__PURE__ */ new Map();
443
443
  const toRequestKey = (request) => [
444
444
  request.directory,
@@ -2708,7 +2708,7 @@ var require_picomatch$1 = /* @__PURE__ */ __commonJSMin(((exports, module) => {
2708
2708
  module.exports = picomatch;
2709
2709
  }));
2710
2710
  //#endregion
2711
- //#region ../core/dist/collect-unplugin-auto-import-global-scopes-CPWjtqPC.js
2711
+ //#region ../core/dist/collect-unplugin-auto-import-global-scopes-D2Skzhl1.js
2712
2712
  var import_picomatch = /* @__PURE__ */ __toESM((/* @__PURE__ */ __commonJSMin(((exports, module) => {
2713
2713
  const pico = require_picomatch$1();
2714
2714
  const utils = require_utils();
@@ -3158,7 +3158,7 @@ const collectUnpluginAutoImportGlobalScopes = ({ rootDirectory, candidateFiles }
3158
3158
  return scopes.some((scope) => scope.names.length > 0) ? scopes : [];
3159
3159
  };
3160
3160
  //#endregion
3161
- //#region ../core/dist/detect-duplicate-jsx-subtrees-BcxRL5QB.js
3161
+ //#region ../core/dist/detect-duplicate-jsx-subtrees-CzQouU4i.js
3162
3162
  const yieldToEventLoop = () => new Promise((resolve) => {
3163
3163
  setImmediate(resolve);
3164
3164
  });
@@ -3715,7 +3715,7 @@ const detectDuplicateJsxSubtreesCooperative = async (sourceReader, options = {})
3715
3715
  });
3716
3716
  };
3717
3717
  //#endregion
3718
- //#region ../core/dist/detect-react-compiler-D6vOhKBX.js
3718
+ //#region ../core/dist/detect-react-compiler-DIKiMJ1N.js
3719
3719
  const NEXT_CONFIG_FILENAMES = [
3720
3720
  "next.config.js",
3721
3721
  "next.config.mjs",
@@ -25323,6 +25323,7 @@ var JsonReportProjectEntry = class extends Class("JsonReportProjectEntry")({
25323
25323
  var JsonReportProjectEntryV3 = class extends Class("JsonReportProjectEntryV3")({
25324
25324
  directory: String$1,
25325
25325
  packageRoot: String$1,
25326
+ sourceFilterConfigHash: optional(String$1),
25326
25327
  framework: Framework,
25327
25328
  project: Unknown,
25328
25329
  diagnostics: ArraySchema(JsonReportDiagnosticV3),
@@ -78843,6 +78844,7 @@ const buildJsonReport = (input) => {
78843
78844
  return {
78844
78845
  directory,
78845
78846
  packageRoot: result.project.rootDirectory,
78847
+ ...result.sourceFilterConfigHash ? { sourceFilterConfigHash: result.sourceFilterConfigHash } : {},
78846
78848
  framework: result.project.framework,
78847
78849
  project: result.project,
78848
78850
  diagnostics: result.diagnostics.map((diagnostic) => toJsonReportDiagnostic(diagnostic, result.project.rootDirectory, input.directory)),
@@ -79312,4 +79314,4 @@ const toJsonReport = (result, options) => buildJsonReport({
79312
79314
  export { AmbiguousProjectError, NoReactDependencyError, NotADirectoryError, PackageJsonNotFoundError, ProjectNotFoundError, ReactDoctorError, buildJsonReport, buildJsonReportError, clearCaches, defineConfig, diagnose, filterSourceFiles, getDiffInfo, hasReactRuntime, isProjectDiscoveryError, isReactDoctorError, summarizeDiagnostics, toJsonReport };
79313
79315
 
79314
79316
  //# sourceMappingURL=index.js.map
79315
- //# debugId=6735a811-0ec5-5fae-8667-944f26e109f7
79317
+ //# debugId=d2b0583c-877f-57cf-8b0a-65519428807c
@@ -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]="34204fba-bf29-5b91-a92d-65f341d56d81")}catch(e){}}();
3
- import { N as discardPrefetchedGitCommands, T as STAGED_SNAPSHOT_ADDITIONAL_CONFIG_FILENAMES, lt as CANONICAL_GITHUB_URL, u as METRIC, w as STAGED_FILES_TEMP_DIR_PREFIX, xn as STAGED_FILES_PROJECT_CONFIG_FILENAMES } from "./constants-rmkaA7iw.js";
4
- import { $t as toRelativePath, Bt as mapWithConcurrency, Ct as getDiffInfo, D as isCodingAgentEnvironment, Dn as provide, Dt as hasSupportedFrameworkOrLibrary, E as isCiOrCodingAgentEnvironment, In as messageFromUnknown, K as StagedFiles, Kt as resolveScanTarget, Rt as listWorkspacePackages, S as isDebugFlagEnabled, Ut as remainingDeadlineBudgetMs, Vn as isPlainObject, Z as buildJsonReport, _ as VERSION, _n as provide$1, bn as runPromise, bt as getBaselineDiffPlan, dt as detectAiTrainingEnvironment, f as setJsonReportDirectory, fn as gen, ft as discoverSupportedSubprojects, g as writeJsonReport, gt as findLegacyConfig, h as writeJsonErrorReport, j as Git, kt as highlighter, ln as JsonReport, n as recordDistribution, p as setJsonReportMode, t as recordCount, u as enableJsonMode, un as decodeUnknownSync, xt as getChangedLineRanges, y as CliInputError, zn as isErrnoException } from "./record-metric-DlQ2Xkco.js";
5
- import { n as shutdownTelemetry, o as isExpectedUserError, r as flushSentry } from "./telemetry-runtime-DRB6SHxI.js";
6
- import { n as handleUserError, t as handleError } from "./handle-error-rZIxgzIJ.js";
7
- import { t as reportErrorToSentry } from "./report-error-CsS16tjk.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]="3eab3015-e4e7-5cb6-9d53-01ecf229f6a2")}catch(e){}}();
3
+ import { N as discardPrefetchedGitCommands, T as STAGED_SNAPSHOT_ADDITIONAL_CONFIG_FILENAMES, lt as CANONICAL_GITHUB_URL, u as METRIC, w as STAGED_FILES_TEMP_DIR_PREFIX, xn as STAGED_FILES_PROJECT_CONFIG_FILENAMES } from "./constants-DHn5rUeg.js";
4
+ import { At as highlighter, Ct as getDiffInfo, D as isCodingAgentEnvironment, E as isCiOrCodingAgentEnvironment, Gt as remainingDeadlineBudgetMs, Jt as resolveScanTarget, K as StagedFiles, Ot as hasSupportedFrameworkOrLibrary, Rn as messageFromUnknown, S as isDebugFlagEnabled, Sn as runPromise, Un as isPlainObject, Vn as isErrnoException, Vt as mapWithConcurrency, Z as buildJsonReport, _ as VERSION, bt as getBaselineDiffPlan, dn as JsonReport, dt as detectAiTrainingEnvironment, f as setJsonReportDirectory, fn as decodeUnknownSync, ft as discoverSupportedSubprojects, g as writeJsonReport, gt as findLegacyConfig, h as writeJsonErrorReport, j as Git, kn as provide, mn as gen, n as recordDistribution, p as setJsonReportMode, t as recordCount, tn as toRelativePath, u as enableJsonMode, xt as getChangedLineRanges, y as CliInputError, yn as provide$1, zt as listWorkspacePackages } from "./record-metric-BNXhF2A-.js";
5
+ import { n as shutdownTelemetry, o as isExpectedUserError, r as flushSentry } from "./telemetry-runtime-CUn1--rM.js";
6
+ import { n as handleUserError, t as handleError } from "./handle-error-ChH7NTTt.js";
7
+ import { t as reportErrorToSentry } from "./report-error-BaQdqDfo.js";
8
8
  import { t as toForwardSlashes } from "./path-format-By20mo8A.js";
9
- import { N as cliLogger, c as spinner, i as hasDoctorScript, j as runGitRaw, k as runGit, n as findNearestPackageDirectory, o as isSpinnerSilent, s as setSpinnerSilent } from "./install-doctor-script-DutA3AmF.js";
10
- import { a as readReactDoctorWorkflow, c as workflowUsesV1Action, i as isReactDoctorWorkflowInstalled, l as prompts, s as upgradeWorkflowActionToV2 } from "./install-github-workflow-CrCUq-fk.js";
11
- import { c as openWorkflowPullRequest, i as warnDeprecatedDiff, l as stageWorkflowFile, r as resolveScope, s as resolveBlockingLevel, t as finalizeScope } from "./resolve-scope-Dydx4htr.js";
12
- import { t as shouldSkipPrompts } from "./should-skip-prompts-D86BK2WZ.js";
13
- import { A as createInvocationInspect, C as detectLaunchableAgents, D as buildHandoffPayload, E as launchCliAgent, M as resolveMergeBaseRef, N as printHeadlessReport, O as collectProjectSourceFiles, R as printDiagnosticsDump, S as setUpGitHubActions, T as copyToClipboard, U as buildEmptyReportMessage, V as filterDiagnosticsByCategories, W as resolveInvocationOxlintConcurrency, _ 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-ASw8KS4V.js";
14
- import { a as recordGate, g as loadAgentInstall, 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-DL4pJV2h.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-AjM8eNr6.js";
16
- import { t as readObjectFile } from "./read-object-file-FXP4EgJe.js";
9
+ import { N as cliLogger, c as spinner, i as hasDoctorScript, j as runGitRaw, k as runGit, n as findNearestPackageDirectory, o as isSpinnerSilent, s as setSpinnerSilent } from "./install-doctor-script-D5XbyGON.js";
10
+ import { a as readReactDoctorWorkflow, c as workflowUsesV1Action, i as isReactDoctorWorkflowInstalled, l as prompts, s as upgradeWorkflowActionToV2 } from "./install-github-workflow-bsR3MAJ4.js";
11
+ import { c as openWorkflowPullRequest, i as warnDeprecatedDiff, l as stageWorkflowFile, r as resolveScope, s as resolveBlockingLevel, t as finalizeScope } from "./resolve-scope-_R9av4PA.js";
12
+ import { t as shouldSkipPrompts } from "./should-skip-prompts-CGTEgq2F.js";
13
+ import { A as createInvocationInspect, C as detectLaunchableAgents, D as buildHandoffPayload, E as launchCliAgent, M as resolveMergeBaseRef, N as printHeadlessReport, O as collectProjectSourceFiles, R as printDiagnosticsDump, S as setUpGitHubActions, T as copyToClipboard, U as buildEmptyReportMessage, V as filterDiagnosticsByCategories, W as resolveInvocationOxlintConcurrency, _ 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-DobEL_kS.js";
14
+ import { a as recordGate, g as loadAgentInstall, 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-keduRDKN.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-CEZd9boZ.js";
16
+ import { t as readObjectFile } from "./read-object-file-BmbbCthv.js";
17
17
  import * as fs$1 from "node:fs";
18
18
  import fs from "node:fs";
19
19
  import * as path$1 from "node:path";
@@ -24,6 +24,7 @@ const readBaselineReport = (file) => {
24
24
  try {
25
25
  const report = decodeUnknownSync(JsonReport)(JSON.parse(fs.readFileSync(file, "utf-8")));
26
26
  if (!report.ok || report.mode === "baseline" || "baselineDegraded" in report && report.baselineDegraded || report.projects.length === 0 || report.projects.some((project) => project.skippedChecks.length > 0 || project.diagnostics.some((diagnostic) => diagnostic.fingerprint === void 0)) || report.schemaVersion === 3 && (report.skippedProjects?.length || report.projects.some((project) => !project.complete)) || report.diagnostics.some((diagnostic) => diagnostic.fingerprint === void 0)) throw new Error("Use a complete, non-comparison --json report from the current version, with diagnostic fingerprints.");
27
+ if (report.schemaVersion !== 3 || report.projects.some((project) => !project.sourceFilterConfigHash)) throw new Error("Regenerate the base --json report with the current version to record its source-dependent filter settings.");
27
28
  return report;
28
29
  } catch (error) {
29
30
  throw new CliInputError(`Cannot read baseline report "${file}": ${error instanceof Error ? error.message : String(error)}`);
@@ -1133,6 +1134,7 @@ const isProjectSupplyChainEnabled = ({ flags, projectConfig }) => flags.supplyCh
1133
1134
  const buildProjectInspectOptions = ({ context, projectScan, projectScanPlan, ownsWorkspaceDeadCode }) => {
1134
1135
  const scanDirectory = projectScan.directory;
1135
1136
  const savedBaseline = context.savedBaseline;
1137
+ const baselineProject = savedBaseline?.projects.find((project) => path$1.resolve(context.resolvedDirectory, path$1.relative(savedBaseline.directory, project.directory)) === scanDirectory);
1136
1138
  const baselinePaths = projectScanPlan.includePaths ? new Set([...projectScanPlan.includePaths, ...projectScanPlan.projectBaselineBaseFiles ?? []]) : null;
1137
1139
  return {
1138
1140
  ...context.scanOptions,
@@ -1148,19 +1150,17 @@ const buildProjectInspectOptions = ({ context, projectScan, projectScanPlan, own
1148
1150
  retainExcludedProjectDeadCodeDiagnostics: ownsWorkspaceDeadCode,
1149
1151
  baselineReport: savedBaseline && context.flags.baseline ? {
1150
1152
  file: context.flags.baseline,
1151
- diagnostics: savedBaseline.projects.flatMap((project) => {
1152
- const projectRelativePath = path$1.relative(savedBaseline.directory, project.directory);
1153
- if (path$1.resolve(context.resolvedDirectory, projectRelativePath) !== scanDirectory) return [];
1154
- return project.diagnostics.flatMap((diagnostic) => {
1155
- const filePath = path$1.relative(project.directory, path$1.resolve(project.directory, diagnostic.filePath)).replace(/\\/g, "/");
1156
- if (baselinePaths && !baselinePaths.has(filePath)) return [];
1157
- return [{
1158
- ...diagnostic,
1159
- relatedLocations: diagnostic.relatedLocations ? [...diagnostic.relatedLocations] : void 0,
1160
- filePath
1161
- }];
1162
- });
1163
- }),
1153
+ sourceFilterConfigHash: baselineProject?.sourceFilterConfigHash,
1154
+ sourceRevision: savedBaseline.sourceRevision,
1155
+ diagnostics: baselineProject ? baselineProject.diagnostics.flatMap((diagnostic) => {
1156
+ const filePath = path$1.relative(baselineProject.directory, path$1.resolve(baselineProject.directory, diagnostic.filePath)).replace(/\\/g, "/");
1157
+ if (baselinePaths && !baselinePaths.has(filePath)) return [];
1158
+ return [{
1159
+ ...diagnostic,
1160
+ relatedLocations: diagnostic.relatedLocations ? [...diagnostic.relatedLocations] : void 0,
1161
+ filePath
1162
+ }];
1163
+ }) : [],
1164
1164
  renamedFiles: Object.fromEntries(Object.entries(context.baselineDiffPlan?.renamedFiles ?? {}).map(([basePath, headPath]) => [path$1.relative(scanDirectory, path$1.resolve(context.resolvedDirectory, basePath)).replace(/\\/g, "/"), path$1.relative(scanDirectory, path$1.resolve(context.resolvedDirectory, headPath)).replace(/\\/g, "/")]))
1165
1165
  } : void 0,
1166
1166
  baseline: context.baselineRef !== null && projectScanPlan.projectBaselineBaseFiles !== null && projectScanPlan.projectBaselineHeadFiles !== null ? {
@@ -1520,5 +1520,5 @@ const inspectAction = async (directory, flags, invocationCommand = "inspect", se
1520
1520
  //#endregion
1521
1521
  export { warnDeprecatedFailOn as n, runProjectMigrations as r, inspectAction as t };
1522
1522
 
1523
- //# sourceMappingURL=inspect-td2f87RL.js.map
1524
- //# debugId=34204fba-bf29-5b91-a92d-65f341d56d81
1523
+ //# sourceMappingURL=inspect-BEMrqB0D.js.map
1524
+ //# debugId=3eab3015-e4e7-5cb6-9d53-01ecf229f6a2
@@ -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]="629e0b97-7b65-5c0d-88aa-1320c5b251dc")}catch(e){}}();
3
- import { B as resolveGitCommand, g as RUN_GIT_MAX_BUFFER_BYTES } from "./constants-rmkaA7iw.js";
4
- import { an as info$1, b as isNonInteractiveEnvironment, in as error$1, kt as highlighter, on as log, sn as warn, xn as runSync } from "./record-metric-DlQ2Xkco.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]="7e49005b-4f76-5132-a220-62400776f228")}catch(e){}}();
3
+ import { B as resolveGitCommand, g as RUN_GIT_MAX_BUFFER_BYTES } from "./constants-DHn5rUeg.js";
4
+ import { At as highlighter, Cn as runSync, b as isNonInteractiveEnvironment, cn as log, ln as warn, on as error$1, sn as info$1 } from "./record-metric-BNXhF2A-.js";
5
5
  import { a as chalk, i as stripAnsi, t as eastAsianWidth } from "./get-east-asian-width-DRPy7dqz.js";
6
6
  import * as fs$1 from "node:fs";
7
7
  import * as path$1 from "node:path";
@@ -2814,5 +2814,5 @@ const installReactDoctorScriptStep = (projectRoot) => {
2814
2814
  //#endregion
2815
2815
  export { runGitAsync as A, isRecord as C, readPackageJson as D, packageHasRecordKey as E, writeJsonFile as M, cliLogger as N, 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, runGitRaw 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 };
2816
2816
 
2817
- //# sourceMappingURL=install-doctor-script-DutA3AmF.js.map
2818
- //# debugId=629e0b97-7b65-5c0d-88aa-1320c5b251dc
2817
+ //# sourceMappingURL=install-doctor-script-D5XbyGON.js.map
2818
+ //# debugId=7e49005b-4f76-5132-a220-62400776f228