react-doctor 0.9.15-dev.3242a81 → 0.9.15-dev.8ed70df

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 (37) hide show
  1. package/README.md +25 -0
  2. package/dist/{build-section-divider-B-Bbahk_.js → build-section-divider-BSEx7sis.js} +4 -4
  3. package/dist/{ci-D_GhoEkY.js → ci-D4R9kdc2.js} +12 -12
  4. package/dist/cli.js +27 -26
  5. package/dist/constants-DJ3RtEMu.js +2 -2
  6. package/dist/{design-B8EMFKlN.js → design-T850ewH9.js} +4 -4
  7. package/dist/{exit-gracefully-BTVhlyoR.js → exit-gracefully-DkeS8hHp.js} +6 -6
  8. package/dist/{handle-error-JId9eFQ_.js → handle-error-RLjKeLDA.js} +5 -5
  9. package/dist/index.d.ts +13 -8
  10. package/dist/index.js +29 -6
  11. package/dist/{inspect-ClJlUcd6.js → inspect-DuT3v6KA.js} +88 -29
  12. package/dist/{install-bAES9fz_.js → install-BeahaWiL.js} +9 -9
  13. package/dist/{install-doctor-script-ByhqWGm4.js → install-doctor-script-B84ViKF6.js} +4 -4
  14. package/dist/{install-github-workflow-CMVYSVGv.js → install-github-workflow-BunRUQaF.js} +4 -4
  15. package/dist/{install-react-doctor-D7cj-Foc.js → install-react-doctor-C5W2i12g.js} +8 -8
  16. package/dist/{jsx-runtime-BSGXwXUT.js → jsx-runtime-DBWv4kid.js} +5 -5
  17. package/dist/{print-branded-header-ToEzN9wS.js → print-branded-header-BNKQT5ZQ.js} +4 -4
  18. package/dist/{prompt-runtime-scan-url-B-N-pmnA.js → prompt-runtime-scan-url-Bly4Vulj.js} +5 -5
  19. package/dist/{read-object-file-BwnK2YRI.js → read-object-file-B-BZ7uYW.js} +4 -4
  20. package/dist/{record-metric-DUV0U_Gf.js → record-metric-Do1JAZVB.js} +51 -23
  21. package/dist/{report-error-Df6kpdn5.js → report-error-DL7M0AGh.js} +5 -5
  22. package/dist/{report-workflow-result-CDjrtaab.js → report-workflow-result-BSLZylKS.js} +5 -5
  23. package/dist/{resolve-scope-BQLYQkzz.js → resolve-scope-_R2u_rWR.js} +6 -6
  24. package/dist/{rules-BvI82y2z.js → rules-DD_Jp7ZA.js} +6 -6
  25. package/dist/{run-scan-app-DUzpuqlt.js → run-scan-app-B2_HYqlM.js} +10 -10
  26. package/dist/{runtime-scan-CxErJEVf.js → runtime-scan-HiSmF8di.js} +9 -9
  27. package/dist/{sanitize-runtime-url-BjEqBgwG.js → sanitize-runtime-url-c0or2L2V.js} +4 -4
  28. package/dist/{scan-Cuyc4IC8.js → scan-B4oVxvqa.js} +9 -9
  29. package/dist/{should-fail-scan-gate-Du7mOvEl.js → should-fail-scan-gate-Bjr43-87.js} +75 -62
  30. package/dist/{should-skip-prompts-DaKPFC6p.js → should-skip-prompts-DKwyzEkM.js} +4 -4
  31. package/dist/{should-use-tui-DZ2iTCn1.js → should-use-tui-DO7NdqR8.js} +4 -4
  32. package/dist/skills/react-doctor/SKILL.md +4 -0
  33. package/dist/{telemetry-runtime-o4N789Mp.js → telemetry-runtime-D3teullu.js} +6 -6
  34. package/dist/{version-CtgKUicn.js → version-Kj44qNuh.js} +4 -4
  35. package/dist/{why-BDgcBrL3.js → why-BV74fXYk.js} +4 -4
  36. package/dist/{with-run-span-Bgitvg5D.js → with-run-span-y8D-ZUGk.js} +5 -5
  37. package/package.json +2 -2
@@ -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]="4db67294-a42e-5d88-a648-8ca48d9bd40f")}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]="afbcb2f9-589c-5253-807a-6101bbaec04a")}catch(e){}}();
3
3
  import { i as __toESM, r as __require, t as __commonJSMin } from "./chunk-ChKA3wi6.js";
4
4
  import { $ as warmReactCompilerDetection, $t as OXLINT_WORKER_JOB_END_MARKER, A as buildGitSourceListingRequest, An as TARGET_BLANK_BROWSER_SUPPORT, At as GITHUB_VIEWER_PERMISSION_TIMEOUT_MS, B as resolveGitCommand, Bt as MAINTAINABILITY_DUPLICATE_JSX_RULE, Cn as SUPPLY_CHAIN_CACHE_TTL_MS, Ct as ES_TARGET_YEAR_BY_NAME, Dn as SUPPLY_CHAIN_PLUGIN, Dt as GENERATED_BUNDLE_FILE_PATTERN, En as SUPPLY_CHAIN_OVERLAP_TIMEOUT_MS, Et as FILE_LINT_CACHE_MAX_FILE_COUNT, F as lowerChildProcessPriority, Fn as VERCEL_NEXTJS_SECURITY_RELEASE_URL, Ft as HTML_FILE_PATTERN, G as resolvePluginPath, Gt as MINIFIED_SNIFF_BYTES, H as resolveOxlintThreadCount, It as IGNORED_DIRECTORIES, J as resolveTsConfigRelativePath, K as resolveReactDoctorCacheDir, Kt as OCCURRENCE_MATCHED_CATEGORIES, Lt as JSX_DUPLICATION_SOURCE_FILE_PATTERN, M as buildOxlintWorkerSpawnSpec, Mn as TELEMETRY_SHUTDOWN_TIMEOUT_MS, Mt as GIT_LS_FILES_MAX_BUFFER_BYTES, Nn as TSCONFIG_FILENAMES, Nt as GIT_SHOW_MAX_BUFFER_BYTES, On as SUPPLY_CHAIN_RULE, Ot as GENERATED_SOURCE_DIRECTORY_PATTERN, P as killUnadoptedOxlintWorkers, Pn as TYPESCRIPT_DECLARATION_FILE_PATTERN, Pt as GIT_SOURCE_LISTING_ARGUMENTS, Q as takeReactCompilerDetection, Qt as OXLINT_SPLIT_TOTAL_BUDGET_MS, R as readSystemConcurrencyFacts, Sn as SUPPLY_CHAIN_CACHE_SUBDIR, Tn as SUPPLY_CHAIN_IGNORED_PACKAGES, Tt as FILE_LINT_CACHE_FILENAME, U as resolveOxlintToolchainVersions, Ut as MAX_GLOB_PATTERN_LENGTH_CHARS, V as resolveOxlintBinary, Vt as MAINTAINABILITY_PLUGIN, W as resolveOxlintWorkerRuntime, Wt as MILLISECONDS_PER_SECOND, X as spawnOxlintWorkerProcess, Xt as OXLINT_OUTPUT_MAX_BYTES, Y as setChildProcessRef, Yt as OXLINT_OOM_RESCUE_BUDGET_MS, Z as takePrespawnedOxlintWorker, Zt as OXLINT_SPAWN_TIMEOUT_MS, _n as SOURCE_FILE_PATTERN, _t as DIAGNOSTIC_CATEGORY_BUCKETS, an as REACT_ROUTER_CAPABILITY_THRESHOLDS, at as AXIOM_METRICS_DATASET_HEADER, bn as SPAWN_ARGS_MAX_LENGTH_CHARS_POSIX, cn as ROOT_CAUSE_GROUPABLE_RULE_KEYS, d as METRIC_DISTRIBUTION_BOUNDARIES, dt as COMPILER_CLEANUP_BUCKET, en as PROJECT_ANALYSIS_WORKER_MAX_OLD_SPACE_MB, et as ABORT_EXIT_CODES, fn as SIDECAR_LINT_CACHE_FILENAME, ft as COMPILER_CLEANUP_RULE_KEYS, gn as SOCKET_PACKAGE_PAGE_BASE, gt as DEFAULT_BRANCH_CANDIDATES, hn as SOCKET_FREE_USER_AGENT, in as REACT_BLOG_RSC_ADVISORY_URL, j as buildOxlintChildEnv, jn as TELEMETRY_EXPORT_INTERVAL_MS, jt as GIT_CHECK_ATTR_MAX_BUFFER_BYTES, kn as TAILWIND_POSTCSS7_COMPAT_ALIAS, l as INTERNAL_ERROR_JSON_FALLBACK, ln as SCANNED_DOT_DIRECTORIES, mn as SOCKET_FREE_PURL_API_BASE, mt as CONFIG_FINGERPRINT_FILENAMES, nn as PROJECT_ANALYSIS_WORKER_TIMEOUT_CEILING_MS, nt as APP_ONLY_RULE_KEYS, on as REACT_SERVER_DOM_PACKAGES, ot as AXIOM_METRICS_PATH, pt as CONFIG_CACHE_TTL_MS, q as resolveScanConcurrency, qt as OXLINT_IGNORED_DECLARATION_DIAGNOSTIC_CODES, rn as PROJECT_ANALYSIS_WORKER_TIMEOUT_MS, rt as AXIOM_DATASET_HEADER, sn as RECOMMENDED_PNPM_MINIMUM_RELEASE_AGE_MINUTES, st as AXIOM_TRACES_PATH, tn as PROJECT_ANALYSIS_WORKER_MEMORY_BUDGET_BYTES, tt as ADOPTABLE_LINT_CONFIG_FILENAMES, un as SCORE_API_URL, vn as SPAWN_ARGS_MAX_LENGTH_CHARS, vt as DISABLE_DIRECTIVE_BACKUP_DIRECTORY_SEGMENTS, wn as SUPPLY_CHAIN_CATEGORY, wt as FETCH_TIMEOUT_MS, xn as STAGED_FILES_PROJECT_CONFIG_FILENAMES, xt as DUPLICATE_JSX_WORKER_IDLE_TIMEOUT_MS, yn as SPAWN_ARGS_MAX_LENGTH_CHARS_DARWIN, yt as DOCS_RULES_BASE_URL, z as resolveConfiguredScanConcurrency, zt as MAINTAINABILITY_CATEGORY } from "./constants-DJ3RtEMu.js";
5
5
  import { n as require_picomatch, t as require_semver } from "./semver-BZIuy1gP.js";
@@ -23221,6 +23221,7 @@ var Diagnostic = class extends Class("Diagnostic")({
23221
23221
  endLine: optional(Number$1),
23222
23222
  endColumn: optional(Number$1),
23223
23223
  category: String$1,
23224
+ fingerprint: optional(String$1),
23224
23225
  matchByOccurrence: optional(Boolean$1),
23225
23226
  fileContext: optional(Literals(["test", "story"])),
23226
23227
  suppressionHint: optional(String$1),
@@ -23246,6 +23247,7 @@ var JsonReportDiagnosticV3 = class extends Class("JsonReportDiagnosticV3")({
23246
23247
  endLine: optional(Number$1),
23247
23248
  endColumn: optional(Number$1),
23248
23249
  category: String$1,
23250
+ fingerprint: optional(String$1),
23249
23251
  matchByOccurrence: optional(Boolean$1),
23250
23252
  fileContext: optional(Literals(["test", "story"])),
23251
23253
  suppressionHint: optional(String$1),
@@ -23359,6 +23361,9 @@ var JsonReportV1 = class extends Class("JsonReportV1")({
23359
23361
  }) {};
23360
23362
  var JsonReportBaseline = class extends Class("JsonReportBaseline")({
23361
23363
  baseRef: String$1,
23364
+ source: optional(Literals(["base", "baseline"])),
23365
+ baselineFile: optional(String$1),
23366
+ matchedCount: optional(Number$1),
23362
23367
  newCount: Number$1,
23363
23368
  fixedCount: Number$1,
23364
23369
  baseTotalCount: Number$1
@@ -23388,6 +23393,7 @@ var JsonReportV2 = class extends Class("JsonReportV2")({
23388
23393
  }) {};
23389
23394
  var JsonReportV3 = class extends Class("JsonReportV3")({
23390
23395
  schemaVersion: Literal(3),
23396
+ sourceRevision: optional(String$1),
23391
23397
  version: String$1,
23392
23398
  ok: Boolean$1,
23393
23399
  directory: String$1,
@@ -23403,7 +23409,7 @@ var JsonReportV3 = class extends Class("JsonReportV3")({
23403
23409
  elapsedMilliseconds: Number$1,
23404
23410
  error: NullOr(JsonReportError)
23405
23411
  }) {};
23406
- Union([
23412
+ const JsonReport = Union([
23407
23413
  JsonReportV1,
23408
23414
  JsonReportV2,
23409
23415
  JsonReportV3
@@ -70375,20 +70381,21 @@ const checkProjectAnalysis = async (options) => {
70375
70381
  assertCompleteProjectAnalysis(result);
70376
70382
  return buildDiagnostics(rootDirectory, result, options.enabledRuleIds);
70377
70383
  };
70384
+ const fingerprintDiagnosticEvidence = (evidence) => createHash("sha256").update(evidence.replace(/\s+/g, " ").trim()).digest("hex");
70378
70385
  const DIAGNOSTIC_DELTA_IDENTITY = Symbol.for("react-doctor/diagnostic-delta-identity");
70379
- const fingerprintText = (text) => createHash("sha256").update(text).digest("hex");
70380
- const normalizeEvidence = (evidence) => evidence.replace(/\s+/g, " ").trim();
70381
70386
  const getDiagnosticMatchKeys = (diagnostic, evidence) => {
70382
70387
  const ruleKey = `${diagnostic.plugin}/${diagnostic.rule}`;
70383
- const messageFingerprint = fingerprintText(`${diagnostic.title ?? ""}\0${diagnostic.message}`);
70384
- const normalizedEvidence = evidence === null ? "" : normalizeEvidence(evidence);
70388
+ const messageFingerprint = fingerprintDiagnosticEvidence(`${diagnostic.title ?? ""}\0${diagnostic.message}`);
70389
+ const evidenceFingerprint = diagnostic.fingerprint ?? (evidence?.trim() ? fingerprintDiagnosticEvidence(evidence) : null);
70385
70390
  const explicitIdentity = Reflect.get(diagnostic, DIAGNOSTIC_DELTA_IDENTITY);
70386
- const explicitIdentityKey = typeof explicitIdentity === "string" ? `identity\0${ruleKey}\0${fingerprintText(explicitIdentity)}` : null;
70387
- const stableEvidenceKey = explicitIdentityKey ?? (normalizedEvidence.length > 0 ? `evidence\0${ruleKey}\0${messageFingerprint}\0${fingerprintText(normalizedEvidence)}` : null);
70391
+ let explicitIdentityKey = null;
70392
+ if (typeof explicitIdentity === "string") explicitIdentityKey = `identity\0${ruleKey}\0${fingerprintDiagnosticEvidence(explicitIdentity)}`;
70393
+ else if (diagnostic.fingerprint?.startsWith("identity:")) explicitIdentityKey = `identity\0${ruleKey}\0${diagnostic.fingerprint.slice(9)}`;
70394
+ const stableEvidenceKey = explicitIdentityKey ?? (evidenceFingerprint !== null ? `evidence\0${ruleKey}\0${messageFingerprint}\0${evidenceFingerprint}` : null);
70388
70395
  return {
70389
70396
  stableEvidenceKey,
70390
70397
  sameFileStableEvidenceKey: stableEvidenceKey === null ? null : `${diagnostic.filePath}\0${stableEvidenceKey}`,
70391
- sameFileFallbackKey: explicitIdentityKey === null && (diagnostic.matchByOccurrence || normalizedEvidence.length === 0) ? `fallback\0${diagnostic.filePath}\0${ruleKey}\0${messageFingerprint}` : null
70398
+ sameFileFallbackKey: explicitIdentityKey === null && diagnostic.fingerprint === void 0 && (diagnostic.matchByOccurrence || evidenceFingerprint === null) ? `fallback\0${diagnostic.filePath}\0${ruleKey}\0${messageFingerprint}` : null
70392
70399
  };
70393
70400
  };
70394
70401
  const addDiagnosticIndex = (buckets, key, diagnosticIndex) => {
@@ -70403,9 +70410,12 @@ const takeMatchingDiagnosticIndex = (buckets, key, matchedDiagnosticIndexes) =>
70403
70410
  return null;
70404
70411
  };
70405
70412
  const readDiagnosticEvidence = (diagnostic, readEvidence, readLine) => readEvidence?.(diagnostic) ?? readLine(diagnostic.filePath, diagnostic.line);
70406
- const buildMatchCandidates = (diagnostics, readEvidence, readLine) => diagnostics.map((diagnostic, diagnosticIndex) => ({
70413
+ const buildMatchCandidates = (diagnostics, readEvidence, readLine, renamedFiles = {}) => diagnostics.map((diagnostic, diagnosticIndex) => ({
70407
70414
  diagnosticIndex,
70408
- ...getDiagnosticMatchKeys(diagnostic, readDiagnosticEvidence(diagnostic, readEvidence, readLine))
70415
+ ...getDiagnosticMatchKeys({
70416
+ ...diagnostic,
70417
+ filePath: renamedFiles[diagnostic.filePath] ?? diagnostic.filePath
70418
+ }, readDiagnosticEvidence(diagnostic, readEvidence, readLine))
70409
70419
  }));
70410
70420
  /**
70411
70421
  * Diffs a head scan against a base scan using a multiset of construct-level
@@ -70421,7 +70431,7 @@ const buildMatchCandidates = (diagnostics, readEvidence, readLine) => diagnostic
70421
70431
  * files without proof.
70422
70432
  */
70423
70433
  const computeDiagnosticDelta = (input) => {
70424
- const baseCandidates = buildMatchCandidates(input.baseDiagnostics, input.readBaseEvidence, input.readBaseLine);
70434
+ const baseCandidates = buildMatchCandidates(input.baseDiagnostics, input.readBaseEvidence, input.readBaseLine, input.renamedFiles);
70425
70435
  const headCandidates = buildMatchCandidates(input.headDiagnostics, input.readHeadEvidence, input.readHeadLine);
70426
70436
  const baseByStableEvidence = /* @__PURE__ */ new Map();
70427
70437
  const baseBySameFileStableEvidence = /* @__PURE__ */ new Map();
@@ -70445,10 +70455,11 @@ const computeDiagnosticDelta = (input) => {
70445
70455
  };
70446
70456
  matchCandidates(baseBySameFileStableEvidence, (candidate) => candidate.sameFileStableEvidenceKey);
70447
70457
  matchCandidates(baseBySameFileFallback, (candidate) => candidate.sameFileFallbackKey);
70448
- let crossFileMatchCount = 0;
70449
- matchCandidates(baseByStableEvidence, (candidate) => candidate.stableEvidenceKey, (head, base) => {
70450
- if (input.headDiagnostics[head]?.filePath !== input.baseDiagnostics[base]?.filePath) crossFileMatchCount += 1;
70458
+ let unrestrictedCrossFileMatchCount = 0;
70459
+ if (input.renamedFiles === void 0) matchCandidates(baseByStableEvidence, (candidate) => candidate.stableEvidenceKey, (headIndex, baseIndex) => {
70460
+ if (input.headDiagnostics[headIndex].filePath !== input.baseDiagnostics[baseIndex].filePath) unrestrictedCrossFileMatchCount += 1;
70451
70461
  });
70462
+ const crossFileMatchCount = [...matchedBaseDiagnosticIndexes].filter((diagnosticIndex) => Boolean(input.renamedFiles?.[input.baseDiagnostics[diagnosticIndex].filePath])).length + unrestrictedCrossFileMatchCount;
70452
70463
  return {
70453
70464
  newDiagnostics: input.headDiagnostics.filter((_diagnostic, diagnosticIndex) => !matchedHeadDiagnosticIndexes.has(diagnosticIndex)),
70454
70465
  fixedCount: input.baseDiagnostics.length - matchedBaseDiagnosticIndexes.size,
@@ -70827,12 +70838,22 @@ const parseGithubViewerPermission = (stdout) => {
70827
70838
  const splitNullSeparated = (value) => value.split("\0").filter((entry) => entry.length > 0);
70828
70839
  const parseBaselineDiffPlan = (value) => {
70829
70840
  const entries = splitNullSeparated(value);
70841
+ const renamedFiles = {};
70830
70842
  const baseFiles = /* @__PURE__ */ new Set();
70831
70843
  const headFiles = /* @__PURE__ */ new Set();
70832
70844
  for (let entryIndex = 0; entryIndex < entries.length; entryIndex += 2) {
70833
70845
  const status = entries[entryIndex];
70834
70846
  const filePath = entries[entryIndex + 1];
70835
- if (status === void 0 || filePath === void 0 || status.length !== 1) return null;
70847
+ if (status === void 0 || filePath === void 0) return null;
70848
+ if (/^R\d+$/.test(status)) {
70849
+ const headPath = entries[entryIndex + 2];
70850
+ if (headPath === void 0) return null;
70851
+ baseFiles.add(filePath);
70852
+ headFiles.add(headPath);
70853
+ renamedFiles[filePath] = headPath;
70854
+ entryIndex += 1;
70855
+ continue;
70856
+ }
70836
70857
  if (status === "A") {
70837
70858
  headFiles.add(filePath);
70838
70859
  continue;
@@ -70851,7 +70872,8 @@ const parseBaselineDiffPlan = (value) => {
70851
70872
  return {
70852
70873
  baseFiles: [...baseFiles],
70853
70874
  headFiles: [...headFiles],
70854
- untrackedFiles: []
70875
+ untrackedFiles: [],
70876
+ ...Object.keys(renamedFiles).length > 0 ? { renamedFiles } : {}
70855
70877
  };
70856
70878
  };
70857
70879
  const UNTRACKED_FILE_LAST_LINE = Number.MAX_SAFE_INTEGER;
@@ -71082,7 +71104,7 @@ var Git = class Git extends Service()("react-doctor/Git") {
71082
71104
  "diff",
71083
71105
  "--no-ext-diff",
71084
71106
  "--no-textconv",
71085
- "--no-renames",
71107
+ "--find-renames",
71086
71108
  "-z",
71087
71109
  "--name-status",
71088
71110
  "--relative",
@@ -71099,6 +71121,7 @@ var Git = class Git extends Service()("react-doctor/Git") {
71099
71121
  ]);
71100
71122
  if (untracked.status !== 0) return null;
71101
71123
  return {
71124
+ ...plan,
71102
71125
  baseFiles: plan.baseFiles,
71103
71126
  headFiles: plan.headFiles,
71104
71127
  untrackedFiles: splitNullSeparated(untracked.stdout)
@@ -75839,9 +75862,10 @@ const runInspect = (input, hooks = {}) => gen(function* () {
75839
75862
  return filteredDiagnostic === null ? none() : some(filteredDiagnostic);
75840
75863
  })));
75841
75864
  const applyPerElementPipeline = (rawStream) => filterPerElementPipeline(rawStream).pipe(tap((diagnostic) => reporterService.emit(diagnostic)));
75865
+ const pnpmHardeningSeverity = resolveRuleSeverityOverride({ ruleKey: "react-doctor/require-pnpm-hardening" }, buildRuleSeverityControls(resolvedConfig.config));
75842
75866
  const envCollected = yield* runCollect(applyPerElementPipeline(fromIterable$1(isDiffMode ? [] : [
75843
75867
  ...checkReducedMotion(scanDirectory),
75844
- ...checkPnpmHardening(scanDirectory),
75868
+ ...pnpmHardeningSeverity === "warn" || pnpmHardeningSeverity === "error" ? checkPnpmHardening(scanDirectory) : [],
75845
75869
  ...checkReactServerComponentsAdvisory(scanDirectory, project, invocationCaches?.workspaceProbes ?? null),
75846
75870
  ...checkExpoProject(scanDirectory, project),
75847
75871
  ...checkReactNativeProject(scanDirectory, project)
@@ -76485,9 +76509,13 @@ const buildJsonReport = (input) => {
76485
76509
  };
76486
76510
  return {
76487
76511
  schemaVersion: 3,
76512
+ ...input.sourceRevision ? { sourceRevision: input.sourceRevision } : {},
76488
76513
  mode: input.baseline !== void 0 ? "baseline" : input.baselineDegraded && input.mode === "baseline" ? "diff" : input.mode,
76489
76514
  ...input.baseline ? { baseline: {
76490
76515
  baseRef: input.baseline.baseRef,
76516
+ source: input.baseline.source ?? "base",
76517
+ baselineFile: input.baseline.baselineFile,
76518
+ matchedCount: input.baseline.matchedCount ?? input.baseline.baseTotalCount - input.baseline.fixedCount,
76491
76519
  newCount: summary.totalDiagnosticCount,
76492
76520
  fixedCount: input.baseline.fixedCount,
76493
76521
  baseTotalCount: input.baseline.baseTotalCount
@@ -76992,7 +77020,7 @@ const makeNoopConsole = () => ({
76992
77020
  });
76993
77021
  //#endregion
76994
77022
  //#region src/cli/utils/version.ts
76995
- const VERSION = "0.9.15-dev.3242a81";
77023
+ const VERSION = "0.9.15-dev.8ed70df";
76996
77024
  //#endregion
76997
77025
  //#region src/cli/utils/json-mode.ts
76998
77026
  let context = null;
@@ -77334,7 +77362,7 @@ const recordDistribution = (name, value, options = {}) => {
77334
77362
  } catch {}
77335
77363
  };
77336
77364
  //#endregion
77337
- export { buildSkippedChecks as $, validateConfigTypes as $t, Git as A, void_$1 as An, isProjectDiscoveryError as At, Progress as B, materializeSourceTree as Bt, ACTION_INPUT_ENVIRONMENT_VARIABLES as C, buildWithScope as Cn, getEquivalentRuleKeys as Ct, isCodingAgentEnvironment as D, close as Dn, hashFileContents as Dt, isCiOrCodingAgentEnvironment as E, succeed$3 as En, hasSupportedFrameworkOrLibrary as Et, Maintainability as F, toCanonicalPath as Fn, listSourceFiles as Ft, StagedFiles as G, resolveScanTarget as Gt, Reporter as H, remainingDeadlineBudgetMs as Ht, NodeResolver as I, isDirectory as In, listSourceFilesCooperative as It, anonymizeText as J, scrubSensitivePaths as Jt, SupplyChain as K, restoreLegacyThrow as Kt, OxlintConcurrency as L, isErrnoException as Ln, listWorkspacePackages as Lt, LEGACY_CONFIG_FILENAME as M, isMonorepoRoot as Mn, isSameRuleKey as Mt, LintPartialFailures as N, yieldToEventLoop as Nn, isScanComplete as Nt, Config as O, makeUnsafe$5 as On, highlighter as Ot, Linter as P, messageFromUnknown as Pn, layerObservability as Pt, buildRuleSeverityControls as Q, toRelativePath as Qt, OxlintSpawnSlots as R, isFile as Rn, loadConfigWithSource as Rt, isDebugFlagEnabled as S, void_ as Sn, getDiffInfo as St, isCiEnvironment as T, provide$2 as Tn, hasPublishedFixRecipe as Tt, Score as U, resolveGithubActionsScoreMetadata as Ut, Project as V, mergeReactDoctorConfigs as Vt, SidecarLintCacheEnabled as W, resolveLintBatchOrdering as Wt, buildJsonReport as X, shouldUseMaintainabilityLayer as Xt, atomicWriteJson as Y, setColorEnabled as Yt, buildRuleDocsUrl as Z, summarizeDiagnostics as Zt, VERSION as _, provideService as _n, formatErrorChain as _t, isEnvFlagEnabled as a, log as an, computeConfigFingerprint as at, isNonInteractiveEnvironment as b, sync as bn, getChangedLineRanges as bt, setSentryProjectInfo as c, decodeUnknownSync as cn, createInvocationCaches as ct, isJsonModeActive as d, makeSpan$1 as dn, detectAiTrainingEnvironment as dt, warmDuplicateJsxWorker as en, calculateScore as et, setJsonReportDirectory as f, map$3 as fn, discoverSupportedSubprojects as ft, writeJsonReport as g, provideContext as gn, findLegacyConfig as gt, writeJsonErrorReport as h, provide as hn, filterSourceFiles as ht, isTelemetryEnabled as i, info as in, collectSourceFilesByDirectory as it, InvocationCaches as j, ParentSpan as jn, isReactDoctorError as jt, Files as k, fail$5 as kn, isPathInsideDirectory as kt, getRunId as l, make$30 as ln, createNodeReadFileLinesSync as lt, writeJsonCancellationReport as m, promise as mn, filterPathsOutsideDirectories as mt, recordDistribution as n, Console as nn, classifyFileContext as nt, buildSentryScope as o, warn$1 as on, computeDiagnosticDelta as ot, setJsonReportMode as p, orElseSucceed as pn, filterDiagnosticsForSurface as pt, anonymizeInPlace as q, runInspect as qt, toSpanAttributes as r, error as rn, clearConfigCache as rt, buildSentryProjectContext as s, Diagnostic as sn, countOptInProjectRuleSelections as st, recordCount as t, warmOxlintWorkerPool as tn, canonicalizeUserRuleKey as tt, enableJsonMode as u, gen as un, createOxlintSpawnSlots as ut, makeNoopConsole as v, runPromise as vn, formatReactDoctorError as vt, detectRunnerOs as w, mergeAll$1 as wn, groupBy as wt, isGitHookEnvironment as x, try_ as xn, getDiagnosticRuleIdentity as xt, CliInputError as y, runSync as yn, getBaselineDiffPlan as yt, PerFileLintCacheEnabled as z, isPlainObject as zn, mapWithConcurrency as zt };
77365
+ export { buildRuleSeverityControls as $, toRelativePath as $t, Files as A, makeUnsafe$5 as An, isPathInsideDirectory as At, PerFileLintCacheEnabled as B, isFile as Bn, mapWithConcurrency as Bt, ACTION_INPUT_ENVIRONMENT_VARIABLES as C, try_ as Cn, getDiffInfo as Ct, isCodingAgentEnvironment as D, provide$2 as Dn, hasSupportedFrameworkOrLibrary as Dt, isCiOrCodingAgentEnvironment as E, mergeAll$1 as En, hasPublishedFixRecipe as Et, Linter as F, yieldToEventLoop as Fn, layerObservability as Ft, SidecarLintCacheEnabled as G, resolveLintBatchOrdering as Gt, Project as H, mergeReactDoctorConfigs as Ht, Maintainability as I, messageFromUnknown as In, listSourceFiles as It, anonymizeInPlace as J, runInspect as Jt, StagedFiles as K, resolveScanTarget as Kt, NodeResolver as L, toCanonicalPath as Ln, listSourceFilesCooperative as Lt, InvocationCaches as M, void_$1 as Mn, isReactDoctorError as Mt, LEGACY_CONFIG_FILENAME as N, ParentSpan as Nn, isSameRuleKey as Nt, Config as O, succeed$3 as On, hashFileContents as Ot, LintPartialFailures as P, isMonorepoRoot as Pn, isScanComplete as Pt, buildRuleDocsUrl as Q, summarizeDiagnostics as Qt, OxlintConcurrency as R, isDirectory as Rn, listWorkspacePackages as Rt, isDebugFlagEnabled as S, sync as Sn, getDiagnosticRuleIdentity as St, isCiEnvironment as T, buildWithScope as Tn, groupBy as Tt, Reporter as U, remainingDeadlineBudgetMs as Ut, Progress as V, isPlainObject as Vn, materializeSourceTree as Vt, Score as W, resolveGithubActionsScoreMetadata as Wt, atomicWriteJson as X, setColorEnabled as Xt, anonymizeText as Y, scrubSensitivePaths as Yt, buildJsonReport as Z, shouldUseMaintainabilityLayer as Zt, VERSION as _, provide as _n, fingerprintDiagnosticEvidence as _t, isEnvFlagEnabled as a, info as an, collectSourceFilesByDirectory as at, isNonInteractiveEnvironment as b, runPromise as bn, getBaselineDiffPlan as bt, setSentryProjectInfo as c, Diagnostic as cn, countOptInProjectRuleSelections as ct, isJsonModeActive as d, make$30 as dn, detectAiTrainingEnvironment as dt, validateConfigTypes as en, buildSkippedChecks as et, setJsonReportDirectory as f, gen as fn, discoverSupportedSubprojects as ft, writeJsonReport as g, promise as gn, findLegacyConfig as gt, writeJsonErrorReport as h, orElseSucceed as hn, filterSourceFiles as ht, isTelemetryEnabled as i, error as in, clearConfigCache as it, Git as j, fail$5 as jn, isProjectDiscoveryError as jt, DIAGNOSTIC_DELTA_IDENTITY as k, close as kn, highlighter as kt, getRunId as l, JsonReport as ln, createInvocationCaches as lt, writeJsonCancellationReport as m, map$3 as mn, filterPathsOutsideDirectories as mt, recordDistribution as n, warmOxlintWorkerPool as nn, canonicalizeUserRuleKey as nt, buildSentryScope as o, log as on, computeConfigFingerprint as ot, setJsonReportMode as p, makeSpan$1 as pn, filterDiagnosticsForSurface as pt, SupplyChain as q, restoreLegacyThrow as qt, toSpanAttributes as r, Console as rn, classifyFileContext as rt, buildSentryProjectContext as s, warn$1 as sn, computeDiagnosticDelta as st, recordCount as t, warmDuplicateJsxWorker as tn, calculateScore as tt, enableJsonMode as u, decodeUnknownSync as un, createOxlintSpawnSlots as ut, makeNoopConsole as v, provideContext as vn, formatErrorChain as vt, detectRunnerOs as w, void_ as wn, getEquivalentRuleKeys as wt, isGitHookEnvironment as x, runSync as xn, getChangedLineRanges as xt, CliInputError as y, provideService as yn, formatReactDoctorError as yt, OxlintSpawnSlots as z, isErrnoException as zn, loadConfigWithSource as zt };
77338
77366
 
77339
- //# sourceMappingURL=record-metric-DUV0U_Gf.js.map
77340
- //# debugId=4db67294-a42e-5d88-a648-8ca48d9bd40f
77367
+ //# sourceMappingURL=record-metric-Do1JAZVB.js.map
77368
+ //# debugId=afbcb2f9-589c-5253-807a-6101bbaec04a
@@ -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]="b1c3f24b-78d4-569a-99f2-c9c8ad8b84ed")}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]="b9a997f1-66b6-5e4c-9c19-15b7047bae02")}catch(e){}}();
3
3
  import { S as SENTRY_FLUSH_TIMEOUT_MS, u as METRIC } from "./constants-DJ3RtEMu.js";
4
- import { jt as isReactDoctorError, l as getRunId, o as buildSentryScope, t as recordCount } from "./record-metric-DUV0U_Gf.js";
5
- import { i as getSentry, n as shutdownTelemetry, o as isExpectedUserError } from "./telemetry-runtime-o4N789Mp.js";
4
+ import { Mt as isReactDoctorError, l as getRunId, o as buildSentryScope, t as recordCount } from "./record-metric-Do1JAZVB.js";
5
+ import { i as getSentry, n as shutdownTelemetry, o as isExpectedUserError } from "./telemetry-runtime-D3teullu.js";
6
6
  import { r as recordRunTraceId, t as getActiveRunTrace } from "./active-run-trace-Dewycxda.js";
7
7
  //#region src/cli/utils/report-error.ts
8
8
  /**
@@ -61,5 +61,5 @@ const reportErrorToSentry = async (error) => {
61
61
  //#endregion
62
62
  export { reportErrorToSentry as t };
63
63
 
64
- //# sourceMappingURL=report-error-Df6kpdn5.js.map
65
- //# debugId=b1c3f24b-78d4-569a-99f2-c9c8ad8b84ed
64
+ //# sourceMappingURL=report-error-DL7M0AGh.js.map
65
+ //# debugId=b9a997f1-66b6-5e4c-9c19-15b7047bae02
@@ -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]="23cf45bd-01db-520c-abce-e79dcdc44e3a")}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]="8c2c212d-057c-594a-92df-ac6bc3b93bfb")}catch(e){}}();
3
3
  import { m as REACT_DOCTOR_CONFIG_PROJECT_NAME, u as METRIC } from "./constants-DJ3RtEMu.js";
4
- import { t as recordCount } from "./record-metric-DUV0U_Gf.js";
5
- import { u as isCommandAvailable } from "./install-github-workflow-CMVYSVGv.js";
4
+ import { t as recordCount } from "./record-metric-Do1JAZVB.js";
5
+ import { u as isCommandAvailable } from "./install-github-workflow-BunRUQaF.js";
6
6
  import { createRequire } from "node:module";
7
7
  import * as path$1 from "node:path";
8
8
  import { spawn } from "node:child_process";
@@ -288,5 +288,5 @@ const reportWorkflowResult = (workflowSpinner, result, projectRoot) => {
288
288
  //#endregion
289
289
  export { recordGate as a, ACTION_UPGRADE_EVENT as c, INSTALL_AGENTS_PREFERENCE_ID as d, ONBOARDING_EVENT as f, loadAgentInstall as g, detectAvailableAgents as h, readPreference as i, CI_PITCH_EVENT as l, computeDefaultSelectedAgents as m, openUrl as n, runMigrations as o, SETUP_HINT_EVENT as p, isGatePending as r, writePreference as s, reportWorkflowResult as t, HANDOFF_TARGET_PREFERENCE_ID as u };
290
290
 
291
- //# sourceMappingURL=report-workflow-result-CDjrtaab.js.map
292
- //# debugId=23cf45bd-01db-520c-abce-e79dcdc44e3a
291
+ //# sourceMappingURL=report-workflow-result-BSLZylKS.js.map
292
+ //# debugId=8c2c212d-057c-594a-92df-ac6bc3b93bfb
@@ -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]="03be2cfa-67e5-5f40-9677-936b833ab6a7")}catch(e){}}();
3
- import { Fn as toCanonicalPath, ht as filterSourceFiles, kt as isPathInsideDirectory } from "./record-metric-DUV0U_Gf.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]="9dae889a-87a7-5b00-ba6b-d4ef62eee379")}catch(e){}}();
3
+ import { At as isPathInsideDirectory, Ln as toCanonicalPath, ht as filterSourceFiles } from "./record-metric-Do1JAZVB.js";
4
4
  import { t as toForwardSlashes } from "./path-format-By20mo8A.js";
5
- import { N as cliLogger } from "./install-doctor-script-ByhqWGm4.js";
6
- import { d as detectDefaultBranch, f as runCommand, l as prompts, u as isCommandAvailable } from "./install-github-workflow-CMVYSVGv.js";
5
+ import { N as cliLogger } from "./install-doctor-script-B84ViKF6.js";
6
+ import { d as detectDefaultBranch, f as runCommand, l as prompts, u as isCommandAvailable } from "./install-github-workflow-BunRUQaF.js";
7
7
  import * as path$1 from "node:path";
8
8
  //#region src/cli/utils/open-workflow-pull-request.ts
9
9
  const NEW_BRANCH_PREFIX = "react-doctor/add-github-actions";
@@ -333,5 +333,5 @@ const finalizeScope = async ({ requested, diffInfo, skipPrompts, isQuiet }) => {
333
333
  //#endregion
334
334
  export { isValidBlockingLevel as a, openWorkflowPullRequest as c, warnDeprecatedDiff as i, stageWorkflowFile as l, isScopeValue as n, pickBlockingLevel as o, resolveScope as r, resolveBlockingLevel as s, finalizeScope as t };
335
335
 
336
- //# sourceMappingURL=resolve-scope-BQLYQkzz.js.map
337
- //# debugId=03be2cfa-67e5-5f40-9677-936b833ab6a7
336
+ //# sourceMappingURL=resolve-scope-_R2u_rWR.js.map
337
+ //# debugId=9dae889a-87a7-5b00-ba6b-d4ef62eee379
@@ -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]="58e8e62b-da5b-5863-8de4-9b8e0d16285e")}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]="6c474e91-d7a7-5afe-96e3-c75a81e38fe7")}catch(e){}}();
3
3
  import { dt as COMPILER_CLEANUP_BUCKET, ft as COMPILER_CLEANUP_RULE_KEYS, u as METRIC } from "./constants-DJ3RtEMu.js";
4
- import { $t as validateConfigTypes, Ct as getEquivalentRuleKeys, Mt as isSameRuleKey, Ot as highlighter, Rt as loadConfigWithSource, Z as buildRuleDocsUrl, rt as clearConfigCache, t as recordCount, zn as isPlainObject } from "./record-metric-DUV0U_Gf.js";
5
- import { N as cliLogger, n as findNearestPackageDirectory } from "./install-doctor-script-ByhqWGm4.js";
6
- import { t as readObjectFile } from "./read-object-file-BwnK2YRI.js";
4
+ import { Nt as isSameRuleKey, Q as buildRuleDocsUrl, Vn as isPlainObject, en as validateConfigTypes, it as clearConfigCache, kt as highlighter, t as recordCount, wt as getEquivalentRuleKeys, zt as loadConfigWithSource } from "./record-metric-Do1JAZVB.js";
5
+ import { N as cliLogger, n as findNearestPackageDirectory } from "./install-doctor-script-B84ViKF6.js";
6
+ import { t as readObjectFile } from "./read-object-file-B-BZ7uYW.js";
7
7
  import * as fs$1 from "node:fs";
8
8
  import * as path$1 from "node:path";
9
9
  import { REACT_DOCTOR_RULES } from "oxlint-plugin-react-doctor/core";
@@ -578,5 +578,5 @@ const rulesUnignoreTagAction = async (tag, options) => {
578
578
  //#endregion
579
579
  export { rulesCategoryAction, rulesDisableAction, rulesEnableAction, rulesExplainAction, rulesIgnoreTagAction, rulesListAction, rulesSetAction, rulesUnignoreTagAction };
580
580
 
581
- //# sourceMappingURL=rules-BvI82y2z.js.map
582
- //# debugId=58e8e62b-da5b-5863-8de4-9b8e0d16285e
581
+ //# sourceMappingURL=rules-DD_Jp7ZA.js.map
582
+ //# debugId=6c474e91-d7a7-5afe-96e3-c75a81e38fe7
@@ -1,14 +1,14 @@
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]="c5e19177-3f20-5a98-8e56-e1a4469556e8")}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]="40650bd0-f581-5aba-9ab3-873aa697ed44")}catch(e){}}();
3
3
  import { D as TUI_REPORT_COMPACT_MAX_ROWS, In as getCategoryImpact, O as TUI_REPORT_DETAIL_WIDTH_FRACTION, _t as DIAGNOSTIC_CATEGORY_BUCKETS, kt as GITHUB_ACTIONS_SETUP_URL, o as CI_TRUST_COMPANIES, u as METRIC } from "./constants-DJ3RtEMu.js";
4
- import { B as Progress, En as succeed, Gt as resolveScanTarget, H as Reporter, Ht as remainingDeadlineBudgetMs, Nn as yieldToEventLoop, Ot as highlighter, Sn as void_, St as getDiffInfo, T as isCiEnvironment, Tt as hasPublishedFixRecipe, Z as buildRuleDocsUrl, bn as sync, bt as getChangedLineRanges, et as calculateScore, n as recordDistribution, t as recordCount, vn as runPromise, x as isGitHookEnvironment, yt as getBaselineDiffPlan, zt as mapWithConcurrency } from "./record-metric-DUV0U_Gf.js";
4
+ import { Bt as mapWithConcurrency, Ct as getDiffInfo, Et as hasPublishedFixRecipe, Fn as yieldToEventLoop, Kt as resolveScanTarget, On as succeed, Q as buildRuleDocsUrl, Sn as sync, T as isCiEnvironment, U as Reporter, Ut as remainingDeadlineBudgetMs, V as Progress, bn as runPromise, bt as getBaselineDiffPlan, kt as highlighter, n as recordDistribution, t as recordCount, tt as calculateScore, wn as void_, x as isGitHookEnvironment, xt as getChangedLineRanges } from "./record-metric-Do1JAZVB.js";
5
5
  import { t as toForwardSlashes } from "./path-format-By20mo8A.js";
6
- import { N as cliLogger, n as findNearestPackageDirectory } from "./install-doctor-script-ByhqWGm4.js";
7
- import { i as isReactDoctorWorkflowInstalled } from "./install-github-workflow-CMVYSVGv.js";
8
- import { r as resolveScope, s as resolveBlockingLevel, t as finalizeScope } from "./resolve-scope-BQLYQkzz.js";
9
- import { A as createInvocationInspect, B as hasIncompleteScoreAnalysis, C as detectLaunchableAgents, D as buildHandoffPayload, E as launchCliAgent, F as formatSkippedCheckLabel, G as hasLintHardFailure, H as buildNoScoreMessage, I as formatElapsedTime, J as formatFixRecipeLine, K as buildRulePriorityMap, L as printFooter, M as resolveMergeBaseRef, O as collectProjectSourceFiles, P as pluralize, R as printDiagnosticsDump, S as setUpGitHubActions, T as copyToClipboard, U as buildEmptyReportMessage, V as filterDiagnosticsByCategories, Y as formatLearnMoreLine, _ as retryMissingProjectScores, b as filterScansForSurface, c as partitionProjectScanOutcomes, d as buildCodeFrame, f as resolveProjectScan, h as resolveProjectSourceFilePaths, i as validateIncludeUntrackedScope, k as deduplicateProjectScans, l as discoverWorkspacePackages, m as resolveProjectDiffIncludePaths, n as formatSkippedProjectsMessage, o as resolveExcludedProjectDirectories, p as resolveProjectChangedLineRanges, q as buildSortedRuleGroups, s as projectManifestChanged, t as shouldFailScanGate, u as selectProjects, v as resolveWorkspaceDeadCodeOwner, w as CLI_AGENT_BINARIES, x as countUniqueScannedFiles, y as resolveCliInspectOptions, z as formatDiagnosticSite } from "./should-fail-scan-gate-Du7mOvEl.js";
10
- import { a as recordGate, f as ONBOARDING_EVENT, n as openUrl, r as isGatePending } from "./report-workflow-result-CDjrtaab.js";
11
- import { a as useExitOnCtrlC, c as Spinner, d as useInput, f as Transform, h as Box, i as import_react, l as useStdout, m as Text, n as registerMountedTuiRenderer, o as terminalSymbols, p as render, r as useStdoutDimensions, s as isPrintableInput, t as require_jsx_runtime, u as useApp } from "./jsx-runtime-BSGXwXUT.js";
6
+ import { N as cliLogger, n as findNearestPackageDirectory } from "./install-doctor-script-B84ViKF6.js";
7
+ import { i as isReactDoctorWorkflowInstalled } from "./install-github-workflow-BunRUQaF.js";
8
+ import { r as resolveScope, s as resolveBlockingLevel, t as finalizeScope } from "./resolve-scope-_R2u_rWR.js";
9
+ import { A as createInvocationInspect, B as hasIncompleteScoreAnalysis, C as detectLaunchableAgents, D as buildHandoffPayload, E as launchCliAgent, F as formatSkippedCheckLabel, G as hasLintHardFailure, H as buildNoScoreMessage, I as formatElapsedTime, J as formatFixRecipeLine, K as buildRulePriorityMap, L as printFooter, M as resolveMergeBaseRef, O as collectProjectSourceFiles, P as pluralize, R as printDiagnosticsDump, S as setUpGitHubActions, T as copyToClipboard, U as buildEmptyReportMessage, V as filterDiagnosticsByCategories, Y as formatLearnMoreLine, _ as retryMissingProjectScores, b as filterScansForSurface, c as partitionProjectScanOutcomes, d as buildCodeFrame, f as resolveProjectScan, h as resolveProjectSourceFilePaths, i as validateIncludeUntrackedScope, k as deduplicateProjectScans, l as discoverWorkspacePackages, m as resolveProjectDiffIncludePaths, n as formatSkippedProjectsMessage, o as resolveExcludedProjectDirectories, p as resolveProjectChangedLineRanges, q as buildSortedRuleGroups, s as projectManifestChanged, t as shouldFailScanGate, u as selectProjects, v as resolveWorkspaceDeadCodeOwner, w as CLI_AGENT_BINARIES, x as countUniqueScannedFiles, y as resolveCliInspectOptions, z as formatDiagnosticSite } from "./should-fail-scan-gate-Bjr43-87.js";
10
+ import { a as recordGate, f as ONBOARDING_EVENT, n as openUrl, r as isGatePending } from "./report-workflow-result-BSLZylKS.js";
11
+ import { a as useExitOnCtrlC, c as Spinner, d as useInput, f as Transform, h as Box, i as import_react, l as useStdout, m as Text, n as registerMountedTuiRenderer, o as terminalSymbols, p as render, r as useStdoutDimensions, s as isPrintableInput, t as require_jsx_runtime, u as useApp } from "./jsx-runtime-DBWv4kid.js";
12
12
  import path from "node:path";
13
13
  import { performance } from "node:perf_hooks";
14
14
  import isUnicodeSupported from "is-unicode-supported";
@@ -2514,5 +2514,5 @@ const runScanApp = async (input) => {
2514
2514
  //#endregion
2515
2515
  export { runScanApp };
2516
2516
 
2517
- //# sourceMappingURL=run-scan-app-DUzpuqlt.js.map
2518
- //# debugId=c5e19177-3f20-5a98-8e56-e1a4469556e8
2517
+ //# sourceMappingURL=run-scan-app-B2_HYqlM.js.map
2518
+ //# debugId=40650bd0-f581-5aba-9ab3-873aa697ed44
@@ -1,12 +1,12 @@
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]="7baaf2fc-0a93-555b-bcae-b53e1a129135")}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]="1f0e3863-17e3-5a55-8715-62b9fbf19ceb")}catch(e){}}();
3
3
  import { u as METRIC } from "./constants-DJ3RtEMu.js";
4
- import { Ot as highlighter, t as recordCount, u as enableJsonMode, y as CliInputError } from "./record-metric-DUV0U_Gf.js";
4
+ import { kt as highlighter, t as recordCount, u as enableJsonMode, y as CliInputError } from "./record-metric-Do1JAZVB.js";
5
5
  import { t as activeScanAbortRegistry } from "./active-scan-abort-registry-CCTgal0O.js";
6
- import { t as reportErrorToSentry } from "./report-error-Df6kpdn5.js";
7
- import { n as resetSentryRunState, r as withRunSpan } from "./with-run-span-Bgitvg5D.js";
8
- import { _ as RUNTIME_SCAN_SNAPSHOT_TIMEOUT_MS, b as RUNTIME_SCAN_TRACING_COMPLETE_TIMEOUT_MS, f as RUNTIME_SCAN_PROBE_RELATIVE_PATH, g as RUNTIME_SCAN_SAFE_CDP_PAGE_URLS, h as RUNTIME_SCAN_PROBE_SNAPSHOT_TOKEN_PLACEHOLDER, l as RUNTIME_SCAN_MAX_SNAPSHOT_PAYLOAD_BYTES, m as RUNTIME_SCAN_PROBE_SNAPSHOT_BINDING_NAME_PLACEHOLDER, n as RUNTIME_SCAN_BROWSER_WIDTH_PX, o as RUNTIME_SCAN_MAX_COMPONENT_EVENTS, p as RUNTIME_SCAN_PROBE_SNAPSHOT_ATTRIBUTE_NAME_PLACEHOLDER, r as RUNTIME_SCAN_CONTROL_CHARACTERS_PATTERN, s as RUNTIME_SCAN_MAX_RECORDING_DURATION_MS, t as sanitizeRuntimeUrl, v as RUNTIME_SCAN_TRACE_CATEGORIES, y as RUNTIME_SCAN_TRACE_FILE_EXTENSION } from "./sanitize-runtime-url-BjEqBgwG.js";
9
- import { r as resolveTuiEnvironment, t as isTuiEnvironmentSupported } from "./should-use-tui-DZ2iTCn1.js";
6
+ import { t as reportErrorToSentry } from "./report-error-DL7M0AGh.js";
7
+ import { n as resetSentryRunState, r as withRunSpan } from "./with-run-span-y8D-ZUGk.js";
8
+ import { _ as RUNTIME_SCAN_SNAPSHOT_TIMEOUT_MS, b as RUNTIME_SCAN_TRACING_COMPLETE_TIMEOUT_MS, f as RUNTIME_SCAN_PROBE_RELATIVE_PATH, g as RUNTIME_SCAN_SAFE_CDP_PAGE_URLS, h as RUNTIME_SCAN_PROBE_SNAPSHOT_TOKEN_PLACEHOLDER, l as RUNTIME_SCAN_MAX_SNAPSHOT_PAYLOAD_BYTES, m as RUNTIME_SCAN_PROBE_SNAPSHOT_BINDING_NAME_PLACEHOLDER, n as RUNTIME_SCAN_BROWSER_WIDTH_PX, o as RUNTIME_SCAN_MAX_COMPONENT_EVENTS, p as RUNTIME_SCAN_PROBE_SNAPSHOT_ATTRIBUTE_NAME_PLACEHOLDER, r as RUNTIME_SCAN_CONTROL_CHARACTERS_PATTERN, s as RUNTIME_SCAN_MAX_RECORDING_DURATION_MS, t as sanitizeRuntimeUrl, v as RUNTIME_SCAN_TRACE_CATEGORIES, y as RUNTIME_SCAN_TRACE_FILE_EXTENSION } from "./sanitize-runtime-url-c0or2L2V.js";
9
+ import { r as resolveTuiEnvironment, t as isTuiEnvironmentSupported } from "./should-use-tui-DO7NdqR8.js";
10
10
  import * as fs$1 from "node:fs";
11
11
  import * as path$1 from "node:path";
12
12
  import * as os$1 from "node:os";
@@ -720,7 +720,7 @@ const resolveRuntimeScanUrl = async (url) => {
720
720
  if (url !== void 0) return url;
721
721
  if (!isTuiEnvironmentSupported(resolveTuiEnvironment(process.stderr.isTTY === true))) throw new CliInputError("A URL is required outside an interactive terminal. Run `react-doctor scan <url>`.");
722
722
  recordCount(METRIC.runtimeScanUrlPromptShown);
723
- const { promptRuntimeScanUrl } = await import("./prompt-runtime-scan-url-B-N-pmnA.js");
723
+ const { promptRuntimeScanUrl } = await import("./prompt-runtime-scan-url-Bly4Vulj.js");
724
724
  return promptRuntimeScanUrl();
725
725
  };
726
726
  const runtimeScanAction = async (url, flags) => {
@@ -767,5 +767,5 @@ const runtimeScanAction = async (url, flags) => {
767
767
  //#endregion
768
768
  export { runtimeScanAction };
769
769
 
770
- //# sourceMappingURL=runtime-scan-CxErJEVf.js.map
771
- //# debugId=7baaf2fc-0a93-555b-bcae-b53e1a129135
770
+ //# sourceMappingURL=runtime-scan-HiSmF8di.js.map
771
+ //# debugId=1f0e3863-17e3-5a55-8715-62b9fbf19ceb
@@ -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]="5be10ee2-cdd5-52a7-a01e-4bbaf59a8e5b")}catch(e){}}();
3
- import { y as CliInputError } from "./record-metric-DUV0U_Gf.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]="fc595a05-2b22-51d4-a745-8c11df1b3ae8")}catch(e){}}();
3
+ import { y as CliInputError } from "./record-metric-Do1JAZVB.js";
4
4
  //#region src/cli/runtime-scan/constants.ts
5
5
  const RUNTIME_SCAN_MAX_COMPONENT_EVENTS = 2e3;
6
6
  const RUNTIME_SCAN_MAX_SNAPSHOT_PAYLOAD_BYTES = 5 * 1024 * 1024;
@@ -72,5 +72,5 @@ const sanitizeRuntimeUrl = (rawUrl) => {
72
72
  //#endregion
73
73
  export { RUNTIME_SCAN_SNAPSHOT_TIMEOUT_MS as _, RUNTIME_SCAN_LOCAL_DEV_PORTS as a, RUNTIME_SCAN_TRACING_COMPLETE_TIMEOUT_MS as b, RUNTIME_SCAN_MAX_SNAPSHOT_BYTES as c, RUNTIME_SCAN_MAX_TRACE_BYTES as d, RUNTIME_SCAN_PROBE_RELATIVE_PATH as f, RUNTIME_SCAN_SAFE_CDP_PAGE_URLS as g, RUNTIME_SCAN_PROBE_SNAPSHOT_TOKEN_PLACEHOLDER as h, RUNTIME_SCAN_LAYOUT_THRASH_RATIO as i, RUNTIME_SCAN_MAX_SNAPSHOT_PAYLOAD_BYTES as l, RUNTIME_SCAN_PROBE_SNAPSHOT_BINDING_NAME_PLACEHOLDER as m, RUNTIME_SCAN_BROWSER_WIDTH_PX as n, RUNTIME_SCAN_MAX_COMPONENT_EVENTS as o, RUNTIME_SCAN_PROBE_SNAPSHOT_ATTRIBUTE_NAME_PLACEHOLDER as p, RUNTIME_SCAN_CONTROL_CHARACTERS_PATTERN as r, RUNTIME_SCAN_MAX_RECORDING_DURATION_MS as s, sanitizeRuntimeUrl as t, RUNTIME_SCAN_MAX_STRING_LENGTH as u, RUNTIME_SCAN_TRACE_CATEGORIES as v, RUNTIME_SCAN_TRACE_FILE_EXTENSION as y };
74
74
 
75
- //# sourceMappingURL=sanitize-runtime-url-BjEqBgwG.js.map
76
- //# debugId=5be10ee2-cdd5-52a7-a01e-4bbaf59a8e5b
75
+ //# sourceMappingURL=sanitize-runtime-url-c0or2L2V.js.map
76
+ //# debugId=fc595a05-2b22-51d4-a745-8c11df1b3ae8
@@ -1,11 +1,11 @@
1
1
 
2
- !function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="c7cd3edc-68f9-5393-af49-abdc6f9bcb04")}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]="020c80da-7e84-52ae-9baf-869e7c269145")}catch(e){}}();
3
3
  import { u as METRIC } from "./constants-DJ3RtEMu.js";
4
- import { Gt as resolveScanTarget, t as recordCount } from "./record-metric-DUV0U_Gf.js";
5
- import { i as warnDeprecatedDiff } from "./resolve-scope-BQLYQkzz.js";
6
- import { a as validateModeFlags, r as validateFilePathSelectionFlags, y as resolveCliInspectOptions } from "./should-fail-scan-gate-Du7mOvEl.js";
7
- import { n as warnDeprecatedFailOn, r as runProjectMigrations, t as inspectAction } from "./inspect-ClJlUcd6.js";
8
- import { n as shouldUseTui, r as resolveTuiEnvironment } from "./should-use-tui-DZ2iTCn1.js";
4
+ import { Kt as resolveScanTarget, t as recordCount } from "./record-metric-Do1JAZVB.js";
5
+ import { i as warnDeprecatedDiff } from "./resolve-scope-_R2u_rWR.js";
6
+ import { n as warnDeprecatedFailOn, r as runProjectMigrations, t as inspectAction } from "./inspect-DuT3v6KA.js";
7
+ import { a as validateModeFlags, r as validateFilePathSelectionFlags, y as resolveCliInspectOptions } from "./should-fail-scan-gate-Bjr43-87.js";
8
+ import { n as shouldUseTui, r as resolveTuiEnvironment } from "./should-use-tui-DO7NdqR8.js";
9
9
  import path from "node:path";
10
10
  //#region src/cli/commands/scan.ts
11
11
  const runScanCommand = async (input) => {
@@ -29,7 +29,7 @@ const runScanCommand = async (input) => {
29
29
  warnDeprecatedFailOn(input.flags, scanTarget.userConfig);
30
30
  warnDeprecatedDiff(input.flags, scanTarget.userConfig);
31
31
  recordCount(METRIC.cliInvoked, 1, { command: input.invocationCommand });
32
- const { runScanApp } = await import("./run-scan-app-DUzpuqlt.js");
32
+ const { runScanApp } = await import("./run-scan-app-B2_HYqlM.js");
33
33
  const { shouldFail } = await runScanApp({
34
34
  directory: input.directory,
35
35
  scanTarget,
@@ -44,5 +44,5 @@ const runScanCommand = async (input) => {
44
44
  //#endregion
45
45
  export { runScanCommand };
46
46
 
47
- //# sourceMappingURL=scan-Cuyc4IC8.js.map
48
- //# debugId=c7cd3edc-68f9-5393-af49-abdc6f9bcb04
47
+ //# sourceMappingURL=scan-B4oVxvqa.js.map
48
+ //# debugId=020c80da-7e84-52ae-9baf-869e7c269145