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,10 +1,10 @@
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]="11af106d-169b-5022-be6a-f7f67fb8e76e")}catch(e){}}();
3
- import { T as METRIC, fn as resolveScanTarget, t as recordCount } from "./record-metric-B6T_Ej33.js";
4
- import { i as warnDeprecatedDiff } from "./resolve-scope-CTlLl7e6.js";
5
- import { a as validateModeFlags, r as validateFilePathSelectionFlags, y as resolveCliInspectOptions } from "./should-fail-scan-gate-CfG_ppAV.js";
6
- import { n as warnDeprecatedFailOn, r as runProjectMigrations, t as inspectAction } from "./inspect-Dq5krKWG.js";
7
- import { n as shouldUseTui, r as resolveTuiEnvironment } from "./should-use-tui-B-lCjXVG.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]="725bd346-66ff-5711-9ce0-e2016da3a02f")}catch(e){}}();
3
+ import { T as METRIC, fn as resolveScanTarget, t as recordCount } from "./record-metric-CFTeG4Ha.js";
4
+ import { i as warnDeprecatedDiff } from "./resolve-scope-B-trcJ7X.js";
5
+ import { a as validateModeFlags, r as validateFilePathSelectionFlags, v as resolveCliInspectOptions } from "./should-fail-scan-gate-DE7RleKZ.js";
6
+ import { n as warnDeprecatedFailOn, r as runProjectMigrations, t as inspectAction } from "./inspect-CuGcOcRw.js";
7
+ import { n as shouldUseTui, r as resolveTuiEnvironment } from "./should-use-tui-dVbYKSDM.js";
8
8
  import path from "node:path";
9
9
  //#region src/cli/commands/scan.ts
10
10
  const runScanCommand = async (input) => {
@@ -28,7 +28,7 @@ const runScanCommand = async (input) => {
28
28
  warnDeprecatedFailOn(input.flags, scanTarget.userConfig);
29
29
  warnDeprecatedDiff(input.flags, scanTarget.userConfig);
30
30
  recordCount(METRIC.cliInvoked, 1, { command: input.invocationCommand });
31
- const { runScanApp } = await import("./run-scan-app-D3huvmXJ.js");
31
+ const { runScanApp } = await import("./run-scan-app-BfeaRuV4.js");
32
32
  const { shouldFail } = await runScanApp({
33
33
  directory: input.directory,
34
34
  scanTarget,
@@ -43,5 +43,5 @@ const runScanCommand = async (input) => {
43
43
  //#endregion
44
44
  export { runScanCommand };
45
45
 
46
- //# sourceMappingURL=scan-C7sCm7wi.js.map
47
- //# debugId=11af106d-169b-5022-be6a-f7f67fb8e76e
46
+ //# sourceMappingURL=scan-CrgcC-Rk.js.map
47
+ //# debugId=725bd346-66ff-5711-9ce0-e2016da3a02f
@@ -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]="159aa887-619a-5d42-9d32-79fce37783d6")}catch(e){}}();
3
- import { $ as Linter, A as SCAN_RESULT_CACHE_FILENAME, An as gen, At as discoverSupportedSubprojects, B as isNonInteractiveEnvironment, Bn as sync, Cn as error, Ct as collectSourceFileCountsByDirectory, Dn as Diagnostic, Dt as createNodeReadFileLinesSync, En as warn, Et as countOptInProjectRuleSelections, Fn as provide, G as isCiEnvironment, Gt as hashFileContents, Ht as groupBy, In as provideContext, J as Config, Jt as isPathInsideDirectory, K as isCiOrCodingAgentEnvironment, Kn as succeed, Kt as highlighter, Ln as provideService, Mn as map, Mt as filterPathsOutsideDirectories, Nn as orElseSucceed, Nt as filterSourceFiles, On as decodeUnknownSync, Ot as createOxlintSpawnSlots, Pn as promise, Q as LintPartialFailures, Qt as isScanComplete, Rn as runPromise, S as BASELINE_FILES_TEMP_DIR_PREFIX, Sn as Console, T as METRIC, Tn as log, Tt as computeDiagnosticDelta, U as ACTION_INPUT_ENVIRONMENT_VARIABLES, Ut as hasPublishedFixRecipe, Vn as try_, W as detectRunnerOs, Wn as mergeAll, X as Git, Xt as isReactDoctorError, Y as Files, Zn as ParentSpan, _ as VERSION, _n as shouldUseMaintainabilityLayer, _t as buildRuleSeverityControls, an as materializeSourceTree, ar as DIAGNOSTIC_CATEGORY_BUCKETS, at as Progress, bt as canonicalizeUserRuleKey, cn as resolveGithubActionsScoreMetadata, ct as Score, d as isJsonModeActive, dn as resolveScanConcurrency, dr as JSX_FILE_PATTERN, dt as SupplyChain, en as listSourceFiles, et as Maintainability, fn as resolveScanTarget, fr as MAINTAINABILITY_SOURCE_FILE_PATTERN, gt as buildRuleDocsUrl, hr as SHARE_BASE_URL, in as mapWithConcurrency, it as PerFileLintCacheEnabled, jt as filterDiagnosticsForSurface, l as getRunId, ln as resolveLintBatchOrdering, lr as GIT_SHOW_MAX_BUFFER_BYTES, lt as SidecarLintCacheEnabled, mn as runInspect, mr as OXLINT_NODE_REQUIREMENT, mt as atomicWriteJson, n as recordDistribution, nn as listWorkspacePackages, nt as OxlintConcurrency, on as mergeReactDoctorConfigs, ot as Project, pn as restoreLegacyThrow, pr as MILLISECONDS_PER_SECOND, qt as isMonorepoRoot, r as toSpanAttributes, rt as OxlintSpawnSlots, sn as remainingDeadlineBudgetMs, sr as ENTERPRISE_CONTACT_URL, st as Reporter, t as recordCount, tn as listSourceFilesCooperative, tr as CI_URL, tt as NodeResolver, un as resolveReactDoctorCacheDir, ur as HTML_FILE_PATTERN, v as makeNoopConsole, vn as summarizeDiagnostics, vt as buildSkippedChecks, wt as computeConfigFingerprint, xn as yieldToEventLoop, xr as isFile, xt as classifyFileContext, yr as isDirectory, yt as calculateScore, z as CliInputError, zn as runSync, zt as getDiagnosticRuleIdentity } from "./record-metric-B6T_Ej33.js";
4
- import { t as getTelemetryContext } from "./telemetry-runtime-BF83aBFL.js";
5
- import { n as buildFooterLinkLines, 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]="62d7b76e-01bc-5b25-8eaf-dcc2c99f2ee6")}catch(e){}}();
3
+ import { $ as Linter, A as SCAN_RESULT_CACHE_FILENAME, An as gen, At as discoverSupportedSubprojects, B as isNonInteractiveEnvironment, Bn as sync, Cn as error, Ct as collectSourceFileCountsByDirectory, Dn as Diagnostic, Dt as createNodeReadFileLinesSync, En as warn, Et as countOptInProjectRuleSelections, Fn as provide, G as isCiEnvironment, Gt as hashFileContents, Ht as groupBy, In as provideContext, J as Config, Jt as isPathInsideDirectory, K as isCiOrCodingAgentEnvironment, Kn as succeed, Kt as highlighter, Ln as provideService, Mn as map, Mt as filterPathsOutsideDirectories, Nn as orElseSucceed, Nt as filterSourceFiles, On as decodeUnknownSync, Ot as createOxlintSpawnSlots, Pn as promise, Q as LintPartialFailures, Qt as isScanComplete, Rn as runPromise, S as BASELINE_FILES_TEMP_DIR_PREFIX, Sn as Console, T as METRIC, Tn as log, Tt as computeDiagnosticDelta, U as ACTION_INPUT_ENVIRONMENT_VARIABLES, Ut as hasPublishedFixRecipe, Vn as try_, W as detectRunnerOs, Wn as mergeAll, X as Git, Xt as isReactDoctorError, Y as Files, Zn as ParentSpan, _ as VERSION, _n as shouldUseMaintainabilityLayer, _t as buildRuleSeverityControls, an as materializeSourceTree, ar as DIAGNOSTIC_CATEGORY_BUCKETS, at as Progress, bt as canonicalizeUserRuleKey, cn as resolveGithubActionsScoreMetadata, ct as Score, d as isJsonModeActive, dn as resolveScanConcurrency, dr as JSX_DUPLICATION_SOURCE_FILE_PATTERN, dt as SupplyChain, en as listSourceFiles, et as Maintainability, fn as resolveScanTarget, fr as JSX_FILE_PATTERN, gt as buildRuleDocsUrl, hr as SHARE_BASE_URL, in as mapWithConcurrency, it as PerFileLintCacheEnabled, jt as filterDiagnosticsForSurface, l as getRunId, ln as resolveLintBatchOrdering, lr as GIT_SHOW_MAX_BUFFER_BYTES, lt as SidecarLintCacheEnabled, mn as runInspect, mr as OXLINT_NODE_REQUIREMENT, mt as atomicWriteJson, n as recordDistribution, nn as listWorkspacePackages, nt as OxlintConcurrency, on as mergeReactDoctorConfigs, ot as Project, pn as restoreLegacyThrow, pr as MILLISECONDS_PER_SECOND, qt as isMonorepoRoot, r as toSpanAttributes, rt as OxlintSpawnSlots, sn as remainingDeadlineBudgetMs, sr as ENTERPRISE_CONTACT_URL, st as Reporter, t as recordCount, tn as listSourceFilesCooperative, tr as CI_URL, tt as NodeResolver, un as resolveReactDoctorCacheDir, ur as HTML_FILE_PATTERN, v as makeNoopConsole, vn as summarizeDiagnostics, vt as buildSkippedChecks, wt as computeConfigFingerprint, xn as yieldToEventLoop, xr as isFile, xt as classifyFileContext, yr as isDirectory, yt as calculateScore, z as CliInputError, zn as runSync, zt as getDiagnosticRuleIdentity } from "./record-metric-CFTeG4Ha.js";
4
+ import { t as getTelemetryContext } from "./telemetry-runtime-D2l_bu0o.js";
5
+ import { n as buildFooterLinkLines, 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
  import { t as toForwardSlashes } from "./path-format-DnHpmJwG.js";
8
- import { C as isRecord, M as cliLogger, S as getPackageJsonPath, a as installReactDoctorScriptStep, c as spinner, k as runGit, n as findNearestPackageDirectory, o as isSpinnerSilent, s as setSpinnerSilent } from "./install-doctor-script-CaTIms0r.js";
9
- import { d as detectDefaultBranch, l as prompts, r as installReactDoctorWorkflow, u as isCommandAvailable } from "./install-github-workflow-DjPgXVqg.js";
10
- import { a as isValidBlockingLevel, c as openWorkflowPullRequest, l as stageWorkflowFile, o as pickBlockingLevel } from "./resolve-scope-CTlLl7e6.js";
11
- import { n as resetSentryRunState, r as withRunSpan, t as recordSentryProjectContext } from "./with-run-span-CdsXSJgE.js";
12
- import { h as detectAvailableAgents, t as reportWorkflowResult } from "./report-workflow-result-5PueDIAr.js";
8
+ import { C as isRecord, M as cliLogger, S as getPackageJsonPath, a as installReactDoctorScriptStep, c as spinner, k as runGit, n as findNearestPackageDirectory, o as isSpinnerSilent, s as setSpinnerSilent } from "./install-doctor-script-Deldi_8f.js";
9
+ import { d as detectDefaultBranch, l as prompts, r as installReactDoctorWorkflow, u as isCommandAvailable } from "./install-github-workflow-DSe3lec2.js";
10
+ import { a as isValidBlockingLevel, c as openWorkflowPullRequest, l as stageWorkflowFile, o as pickBlockingLevel } from "./resolve-scope-B-trcJ7X.js";
11
+ import { n as resetSentryRunState, r as withRunSpan, t as recordSentryProjectContext } from "./with-run-span-BC-NFEo9.js";
12
+ import { h as detectAvailableAgents, t as reportWorkflowResult } from "./report-workflow-result-CjDXDNp9.js";
13
13
  import { createRequire } from "node:module";
14
14
  import { spawn } from "node:child_process";
15
15
  import * as path$1 from "node:path";
@@ -1966,10 +1966,8 @@ const isMaterializableGitSource = (content) => !content.includes("\0") && !conte
1966
1966
  * `tempDirectory`, mirroring the project layout plus head's config files so
1967
1967
  * both sides lint under the same rules. Git rename heuristics are disabled by
1968
1968
  * the diff planner, so an old path is retained as a base deletion while its
1969
- * new path is a head addition. Missing head-only additions are expected, and a
1970
- * base-only deletion that cannot be read has nothing at head to compare
1971
- * against; only a missing path that the plan says exists on both sides makes
1972
- * `isComplete` false.
1969
+ * new path is a head addition. Missing head-only additions are expected;
1970
+ * missing paths that the plan says must exist at base make `isComplete` false.
1973
1971
  */
1974
1972
  const materializeBaselineFiles = (input) => runPromise(gen(function* () {
1975
1973
  const git = yield* Git;
@@ -1994,12 +1992,11 @@ const materializeBaselineFiles = (input) => runPromise(gen(function* () {
1994
1992
  }).pipe(map((content) => content !== null && isMaterializableGitSource(content) ? content : null))
1995
1993
  });
1996
1994
  const materializedFiles = new Set(tree.materializedFiles);
1997
- const headFileSet = new Set(headFiles);
1998
1995
  return {
1999
1996
  ...tree,
2000
1997
  baseFiles,
2001
1998
  headFiles,
2002
- isComplete: baseFiles.every((filePath) => materializedFiles.has(filePath) || !headFileSet.has(filePath)),
1999
+ isComplete: baseFiles.every((filePath) => materializedFiles.has(filePath)),
2003
2000
  untrackedFiles
2004
2001
  };
2005
2002
  }).pipe(provide(Git.layerNode)));
@@ -2021,12 +2018,6 @@ const resolveMergeBaseRef = async (directory, ref) => {
2021
2018
  }
2022
2019
  };
2023
2020
  //#endregion
2024
- //#region src/cli/utils/has-unlinted-surviving-base-file.ts
2025
- const hasUnlintedSurvivingBaseFile = (input) => {
2026
- const analyzedBaseFiles = new Set(input.analyzedBaseFiles.map(toForwardSlashes));
2027
- return filterSourceFiles(input.baseLintPaths.map(toForwardSlashes)).some((filePath) => input.headFiles.has(filePath) && !analyzedBaseFiles.has(filePath));
2028
- };
2029
- //#endregion
2030
2021
  //#region src/cli/utils/run-baseline-comparison.ts
2031
2022
  const silentConsole$1 = makeNoopConsole();
2032
2023
  const countIncompleteLintFiles = (lintPartialFailures) => countDroppedLintFiles(lintPartialFailures) + countDeadlineSkippedFiles(lintPartialFailures);
@@ -2052,7 +2043,7 @@ const runBaselineComparison = async (input) => {
2052
2043
  const baselineListingSignal = baselineDeadlineSignal === void 0 ? input.oxlintRuntime.abortSignal : input.oxlintRuntime.abortSignal === void 0 ? baselineDeadlineSignal : AbortSignal.any([input.oxlintRuntime.abortSignal, baselineDeadlineSignal]);
2053
2044
  let maintainabilitySourceFiles = [];
2054
2045
  if (input.options.deadCode) try {
2055
- maintainabilitySourceFiles = (await listSourceFilesCooperative(input.directory, baselineListingSignal)).filter((filePath) => MAINTAINABILITY_SOURCE_FILE_PATTERN.test(filePath) && classifyFileContext(filePath) === "production");
2046
+ maintainabilitySourceFiles = (await listSourceFilesCooperative(input.directory, baselineListingSignal)).filter((filePath) => JSX_DUPLICATION_SOURCE_FILE_PATTERN.test(filePath) && classifyFileContext(filePath) === "production");
2056
2047
  } catch (error) {
2057
2048
  if (baselineDeadlineSignal?.aborted) return null;
2058
2049
  throw error;
@@ -2152,12 +2143,7 @@ const runBaselineComparison = async (input) => {
2152
2143
  excludedProjectDirectories: baselineExcludedProjectDirectories,
2153
2144
  retainExcludedProjectDeadCodeDiagnostics: input.options.retainExcludedProjectDeadCodeDiagnostics
2154
2145
  }, {}).pipe(provide(runtimeLayers), provideService(PerFileLintCacheEnabled, false), provideService(SidecarLintCacheEnabled, false), provideService(Console, silentConsole$1))), { signal: input.oxlintRuntime.abortSignal });
2155
- if (baseOutput.didLintFail || baseOutput.didDeadCodeFail) return null;
2156
- if (countIncompleteLintFiles(baseOutput.lintPartialFailures) > 0 && hasUnlintedSurvivingBaseFile({
2157
- baseLintPaths: materializedLintPaths,
2158
- headFiles: expectedHeadFiles,
2159
- analyzedBaseFiles: baseOutput.analyzedFiles
2160
- })) return null;
2146
+ if (baseOutput.didLintFail || baseOutput.didDeadCodeFail || countIncompleteLintFiles(baseOutput.lintPartialFailures) > 0) return null;
2161
2147
  const hasUnscannedUntrackedSourceFiles = filterSourceFiles(filterPathsOutsideDirectories({
2162
2148
  rootDirectory: input.directory,
2163
2149
  relativePaths: snapshot.untrackedFiles,
@@ -2979,17 +2965,6 @@ const projectManifestChanged = (rootDirectory, projectDirectory, diffInfo) => {
2979
2965
  return diffInfo.changedFiles.some((filePath) => toForwardSlashes(filePath) === manifestPath);
2980
2966
  };
2981
2967
  //#endregion
2982
- //#region src/cli/utils/resolve-excluded-project-directories.ts
2983
- const resolveExcludedProjectDirectories = (scanDirectory, projectDirectories) => {
2984
- const excludedDirectories = /* @__PURE__ */ new Map();
2985
- for (const projectDirectory of projectDirectories) {
2986
- if (!isPathInsideDirectory(projectDirectory, scanDirectory)) continue;
2987
- const resolvedDirectory = path$1.resolve(projectDirectory);
2988
- if (!excludedDirectories.has(resolvedDirectory)) excludedDirectories.set(resolvedDirectory, projectDirectory);
2989
- }
2990
- return [...excludedDirectories.values()];
2991
- };
2992
- //#endregion
2993
2968
  //#region src/cli/utils/validate-mode-flags.ts
2994
2969
  const usedDiffAlias = (flags) => flags.diff !== void 0 && flags.diff !== false && flags.diff !== "false" && flags.diff !== "";
2995
2970
  const usedScope = (flags) => typeof flags.scope === "string" && flags.scope.length > 0;
@@ -3027,7 +3002,7 @@ const shouldFailScanGate = (input) => {
3027
3002
  return shouldBlockCi(filterScansForSurface(input.scans, "ciFailure"), input.blockingLevel);
3028
3003
  };
3029
3004
  //#endregion
3030
- export { createInvocationInspect as A, hasIncompleteScoreAnalysis as B, detectLaunchableAgents as C, buildHandoffPayload as D, launchCliAgent as E, formatSkippedCheckLabel as F, buildRulePriorityMap as G, buildNoScoreMessage as H, formatElapsedTime as I, formatLearnMoreLine as J, buildSortedRuleGroups as K, printFooter as L, resolveMergeBaseRef as M, printHeadlessReport as N, collectProjectSourceFileCounts as O, pluralize as P, printDiagnosticsDump as R, setUpGitHubActions as S, copyToClipboard as T, buildEmptyReportMessage as U, filterDiagnosticsByCategories as V, hasLintHardFailure as W, retryMissingProjectScores as _, validateModeFlags as a, filterScansForSurface as b, partitionProjectScanOutcomes as c, buildCodeFrame as d, resolveProjectScan as f, resolveProjectRelativeDirectory as g, resolveProjectSourceFilePaths as h, validateIncludeUntrackedScope as i, inspect as j, deduplicateProjectScans as k, discoverWorkspacePackages as l, resolveProjectDiffIncludePaths as m, formatSkippedProjectsMessage as n, resolveExcludedProjectDirectories as o, resolveProjectChangedLineRanges as p, formatFixRecipeLine as q, validateFilePathSelectionFlags as r, projectManifestChanged as s, shouldFailScanGate as t, selectProjects as u, resolveWorkspaceDeadCodeOwner as v, CLI_AGENT_BINARIES as w, countUniqueScannedFiles as x, resolveCliInspectOptions as y, formatDiagnosticSite as z };
3005
+ export { inspect as A, filterDiagnosticsByCategories as B, CLI_AGENT_BINARIES as C, collectProjectSourceFileCounts as D, buildHandoffPayload as E, formatElapsedTime as F, buildSortedRuleGroups as G, buildEmptyReportMessage as H, printFooter as I, formatFixRecipeLine as K, printDiagnosticsDump as L, printHeadlessReport as M, pluralize as N, deduplicateProjectScans as O, formatSkippedCheckLabel as P, formatDiagnosticSite as R, detectLaunchableAgents as S, launchCliAgent as T, hasLintHardFailure as U, buildNoScoreMessage as V, buildRulePriorityMap as W, resolveWorkspaceDeadCodeOwner as _, validateModeFlags as a, countUniqueScannedFiles as b, discoverWorkspacePackages as c, resolveProjectScan as d, resolveProjectChangedLineRanges as f, retryMissingProjectScores as g, resolveProjectRelativeDirectory as h, validateIncludeUntrackedScope as i, resolveMergeBaseRef as j, createInvocationInspect as k, selectProjects as l, resolveProjectSourceFilePaths as m, formatSkippedProjectsMessage as n, projectManifestChanged as o, resolveProjectDiffIncludePaths as p, formatLearnMoreLine as q, validateFilePathSelectionFlags as r, partitionProjectScanOutcomes as s, shouldFailScanGate as t, buildCodeFrame as u, resolveCliInspectOptions as v, copyToClipboard as w, setUpGitHubActions as x, filterScansForSurface as y, hasIncompleteScoreAnalysis as z };
3031
3006
 
3032
- //# sourceMappingURL=should-fail-scan-gate-CfG_ppAV.js.map
3033
- //# debugId=159aa887-619a-5d42-9d32-79fce37783d6
3007
+ //# sourceMappingURL=should-fail-scan-gate-DE7RleKZ.js.map
3008
+ //# debugId=62d7b76e-01bc-5b25-8eaf-dcc2c99f2ee6
@@ -1,10 +1,10 @@
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]="82a072bc-1267-5b0f-b69c-f997e7622281")}catch(e){}}();
3
- import { B as isNonInteractiveEnvironment } 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]="a679d30f-c927-55db-baf7-95e26da0f12b")}catch(e){}}();
3
+ import { B as isNonInteractiveEnvironment } from "./record-metric-CFTeG4Ha.js";
4
4
  //#region src/cli/utils/should-skip-prompts.ts
5
5
  const shouldSkipPrompts = (input = {}) => Boolean(input.yes) || Boolean(input.json) || isNonInteractiveEnvironment() || !process.stdin.isTTY;
6
6
  //#endregion
7
7
  export { shouldSkipPrompts as t };
8
8
 
9
- //# sourceMappingURL=should-skip-prompts-BuNtAVEs.js.map
10
- //# debugId=82a072bc-1267-5b0f-b69c-f997e7622281
9
+ //# sourceMappingURL=should-skip-prompts-BmYznvDr.js.map
10
+ //# debugId=a679d30f-c927-55db-baf7-95e26da0f12b
@@ -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]="0e5a5f1f-ac58-5ea9-8205-f8d5913b3bc6")}catch(e){}}();
3
- import { B as isNonInteractiveEnvironment } 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]="ab82c6b9-8969-507d-b3de-30d197c5270c")}catch(e){}}();
3
+ import { B as isNonInteractiveEnvironment } from "./record-metric-CFTeG4Ha.js";
4
4
  //#region src/cli/utils/resolve-tui-environment.ts
5
5
  const resolveTuiEnvironment = (outputIsTty = process.stdout.isTTY === true) => ({
6
6
  isNonInteractiveEnvironment: isNonInteractiveEnvironment(),
@@ -21,5 +21,5 @@ const shouldUseTui = (input) => {
21
21
  //#endregion
22
22
  export { shouldUseTui as n, resolveTuiEnvironment as r, isTuiEnvironmentSupported as t };
23
23
 
24
- //# sourceMappingURL=should-use-tui-B-lCjXVG.js.map
25
- //# debugId=0e5a5f1f-ac58-5ea9-8205-f8d5913b3bc6
24
+ //# sourceMappingURL=should-use-tui-dVbYKSDM.js.map
25
+ //# debugId=ab82c6b9-8969-507d-b3de-30d197c5270c
@@ -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]="f658c385-8ef1-58af-8f8f-a72607a16be2")}catch(e){}}();
3
- import { $t as layerObservability, Cr as messageFromUnknown, Jn as makeUnsafe, Rn as runPromise, Un as buildWithScope, Xn as void_, Xt as isReactDoctorError, Yt as isProjectDiscoveryError, _ as VERSION, br as isErrnoException, i as isTelemetryEnabled, kn as make, qn as close, z as CliInputError, 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]="86eba1a7-c5fb-589f-b7db-a8317f884be8")}catch(e){}}();
3
+ import { $t as layerObservability, Cr as messageFromUnknown, Jn as makeUnsafe, Rn as runPromise, Un as buildWithScope, Xn as void_, Xt as isReactDoctorError, Yt as isProjectDiscoveryError, _ as VERSION, br as isErrnoException, i as isTelemetryEnabled, kn as make, qn as close, z as CliInputError, zn as runSync } from "./record-metric-CFTeG4Ha.js";
4
4
  //#region src/cli/utils/is-environment-error.ts
5
5
  const ENVIRONMENT_ERROR_CODES = new Set([
6
6
  "EACCES",
@@ -247,5 +247,5 @@ const shutdownTelemetry = async () => {
247
247
  //#endregion
248
248
  export { isNpmCacheCorruptionError as a, formatNpmCacheCorruptionError as i, shutdownTelemetry as n, formatEnvironmentError as o, isExpectedUserError as r, isEnvironmentError as s, getTelemetryContext as t };
249
249
 
250
- //# sourceMappingURL=telemetry-runtime-BF83aBFL.js.map
251
- //# debugId=f658c385-8ef1-58af-8f8f-a72607a16be2
250
+ //# sourceMappingURL=telemetry-runtime-D2l_bu0o.js.map
251
+ //# debugId=86eba1a7-c5fb-589f-b7db-a8317f884be8
@@ -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]="c82a3ace-63f2-583f-bb13-d8f22e52b61f")}catch(e){}}();
3
- import { T as METRIC, _ as VERSION, t as recordCount } 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]="61784370-a8f7-58b8-8652-4f81b4b2ef73")}catch(e){}}();
3
+ import { T as METRIC, _ as VERSION, t as recordCount } from "./record-metric-CFTeG4Ha.js";
4
4
  //#region src/cli/commands/version.ts
5
5
  /**
6
6
  * oclif-style version line. 12-factor CLI Apps (#3, "What version am I
@@ -17,5 +17,5 @@ const versionAction = () => {
17
17
  //#endregion
18
18
  export { versionAction };
19
19
 
20
- //# sourceMappingURL=version-C27gr4Qj.js.map
21
- //# debugId=c82a3ace-63f2-583f-bb13-d8f22e52b61f
20
+ //# sourceMappingURL=version-CB3K7ucz.js.map
21
+ //# debugId=61784370-a8f7-58b8-8652-4f81b4b2ef73
@@ -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]="2153fea8-7916-5747-9a20-62730c7c2d54")}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]="158b4d76-b245-5472-9083-692b51326ba7")}catch(e){}}();
3
+ import { t as inspectAction } from "./inspect-CuGcOcRw.js";
4
4
  //#region src/cli/commands/why.ts
5
5
  /**
6
6
  * `why <file:line>` — explains why a rule fired (or why a suppression didn't
@@ -17,5 +17,5 @@ const whyAction = async (location, options) => {
17
17
  //#endregion
18
18
  export { whyAction };
19
19
 
20
- //# sourceMappingURL=why-CYRkZ2VY.js.map
21
- //# debugId=2153fea8-7916-5747-9a20-62730c7c2d54
20
+ //# sourceMappingURL=why-CCN3R7xM.js.map
21
+ //# debugId=158b4d76-b245-5472-9083-692b51326ba7
@@ -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]="4354cbc4-7bd8-5c31-abea-8943b6196d6e")}catch(e){}}();
3
- import { D as NANOSECONDS_PER_MILLISECOND, In as provideContext, Xn as void_, Yn as fail, c as setSentryProjectInfo, jn as makeSpan, o as buildSentryScope, r as toSpanAttributes, s as buildSentryProjectContext, zn as runSync } from "./record-metric-B6T_Ej33.js";
4
- import { t as getTelemetryContext } 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]="f6e909bb-7efb-5e6f-89ed-1bbde95fd0f9")}catch(e){}}();
3
+ import { D as NANOSECONDS_PER_MILLISECOND, In as provideContext, Xn as void_, Yn as fail, c as setSentryProjectInfo, jn as makeSpan, o as buildSentryScope, r as toSpanAttributes, s as buildSentryProjectContext, zn as runSync } from "./record-metric-CFTeG4Ha.js";
4
+ import { t as getTelemetryContext } from "./telemetry-runtime-D2l_bu0o.js";
5
5
  import { i as setActiveRunTrace, r as recordRunTraceId } from "./active-run-trace-dlIZeEvb.js";
6
6
  //#region src/cli/utils/with-run-span.ts
7
7
  /**
@@ -106,5 +106,5 @@ const recordSentryProjectContext = (projectInfo, rootSpan, options = {}) => {
106
106
  //#endregion
107
107
  export { resetSentryRunState as n, withRunSpan as r, recordSentryProjectContext as t };
108
108
 
109
- //# sourceMappingURL=with-run-span-CdsXSJgE.js.map
110
- //# debugId=4354cbc4-7bd8-5c31-abea-8943b6196d6e
109
+ //# sourceMappingURL=with-run-span-BC-NFEo9.js.map
110
+ //# debugId=f6e909bb-7efb-5e6f-89ed-1bbde95fd0f9
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "react-doctor",
3
- "version": "0.9.13-dev.1239043",
3
+ "version": "0.9.13-dev.2e3f6eb",
4
4
  "description": "Your agent writes bad React. This catches it",
5
5
  "keywords": [
6
6
  "accessibility",
@@ -60,15 +60,15 @@
60
60
  "is-unicode-supported": "^2.1.0",
61
61
  "jiti": "^2.7.0",
62
62
  "magicast": "^0.5.3",
63
- "oxc-parser": "^0.148.0",
63
+ "oxc-parser": "^0.146.0",
64
64
  "oxc-resolver": "^11.24.2",
65
- "oxlint": ">=1.81.0 <1.82.0",
65
+ "oxlint": ">=1.79.0 <1.80.0",
66
66
  "playwright-core": "^1.62.1",
67
67
  "prompts": "^2.4.2",
68
68
  "typescript": ">=5.0.4 <6",
69
69
  "yaml": "^2.9.0",
70
70
  "yoga-layout": "~3.2.1",
71
- "oxlint-plugin-react-doctor": "0.9.13-dev.1239043"
71
+ "oxlint-plugin-react-doctor": "0.9.13-dev.2e3f6eb"
72
72
  },
73
73
  "devDependencies": {
74
74
  "@types/babel__code-frame": "^7.27.0",