react-doctor 0.9.12-dev.990daaf → 0.9.12-dev.9f7d26f

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 (33) hide show
  1. package/dist/{build-section-divider-CfzvcH0u.js → build-section-divider-ho4tkWUX.js} +7 -7
  2. package/dist/{ci-DnL7yq_D.js → ci-Gp_DmzbV.js} +12 -12
  3. package/dist/cli.js +24 -24
  4. package/dist/{design-B8ccHPdQ.js → design-DFtEnUE4.js} +4 -4
  5. package/dist/{exit-gracefully-D5DYlWuv.js → exit-gracefully-D-fqCehG.js} +6 -6
  6. package/dist/{handle-error-CCFAqzO1.js → handle-error-WbesgRpD.js} +5 -5
  7. package/dist/index.js +48 -71
  8. package/dist/{inspect-DLPW57Dl.js → inspect-DS-8JQ7-.js} +16 -16
  9. package/dist/{install-0x4O-d3G.js → install--VBoTn6t.js} +9 -9
  10. package/dist/{install-doctor-script-DgkdRcgO.js → install-doctor-script-ChGM4QXN.js} +4 -4
  11. package/dist/{install-github-workflow-CMGYT8Sl.js → install-github-workflow-W9k2a3Ln.js} +9 -5
  12. package/dist/{install-react-doctor-D1RpT9Xm.js → install-react-doctor-Bu9OMiav.js} +8 -8
  13. package/dist/{jsx-runtime-BvjCY6VX.js → jsx-runtime-BLZlYxX9.js} +5 -5
  14. package/dist/{print-branded-header-YxgbRW5d.js → print-branded-header-CGlRc6ub.js} +4 -4
  15. package/dist/{prompt-runtime-scan-url-Dd_bj35X.js → prompt-runtime-scan-url-y1gsTi9R.js} +5 -5
  16. package/dist/{read-object-file-D7yYdwqv.js → read-object-file-8GV0gq_t.js} +4 -4
  17. package/dist/{record-metric-DIPLeNab.js → record-metric-BYDiYM_b.js} +51 -73
  18. package/dist/{report-error-DJZR8Tq1.js → report-error-C4MUPAvk.js} +5 -5
  19. package/dist/{report-workflow-result-Rb94RG5z.js → report-workflow-result-BmM8X3fj.js} +5 -5
  20. package/dist/{resolve-scope-D-STb1gT.js → resolve-scope-DmNrMvxi.js} +6 -6
  21. package/dist/{rules-CzdeF9zf.js → rules-DNQKzUXv.js} +6 -6
  22. package/dist/{run-scan-app-eHaynbf9.js → run-scan-app-C0kxQ1fE.js} +15 -14
  23. package/dist/{runtime-scan-Bb0HT5UF.js → runtime-scan-D_r84DrL.js} +9 -9
  24. package/dist/{sanitize-runtime-url-Dt3Vt--J.js → sanitize-runtime-url-DYlUQwKR.js} +4 -4
  25. package/dist/{scan-CjjO1QrG.js → scan-CRyEeC82.js} +9 -9
  26. package/dist/{should-fail-scan-gate-CXek96Ux.js → should-fail-scan-gate-gkN0JbKk.js} +11 -11
  27. package/dist/{should-skip-prompts-CvrObON2.js → should-skip-prompts-Da6drkx_.js} +4 -4
  28. package/dist/{should-use-tui-C9VEED7D.js → should-use-tui-DDV9EXki.js} +4 -4
  29. package/dist/{telemetry-runtime-DZaIMuWS.js → telemetry-runtime-DcXXRI22.js} +4 -4
  30. package/dist/{version-uIjOAva3.js → version-D4fL3PrW.js} +4 -4
  31. package/dist/{why-DoZufIJb.js → why-quSmktoh.js} +4 -4
  32. package/dist/{with-run-span-BknYWuxL.js → with-run-span-YnjkCzXg.js} +5 -5
  33. package/package.json +2 -2
@@ -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]="b7118a38-b64b-5720-bad0-04dbeac14534")}catch(e){}}();
3
- import { C as CI_TRUST_COMPANIES, Kt as highlighter, T as METRIC, br as isErrnoException, cr as GITHUB_ACTIONS_SETUP_URL, gr as SKILL_NAME, t as recordCount, z as CliInputError } from "./record-metric-DIPLeNab.js";
4
- import { C as isRecord, D as readPackageJson, E as packageHasRecordKey, M as cliLogger, O as resolveGitPath, S as getPackageJsonPath, T as packageHasNestedRecordKey, _ as REACT_DOCTOR_COMMAND, a as installReactDoctorScriptStep, b as VITE_PLUS_HOOKS_PATH, c as spinner, d as HUSKY_HOOKS_PATH, f as LEFTHOOK_CONFIG_FILES, g as PRE_COMMIT_CONFIG_FILE, h as OVERCOMMIT_CONFIG_FILE, j as writeJsonFile, k as runGit, l as HOOK_FILE_NAME, m as NON_BLOCKING_REACT_DOCTOR_COMMAND, n as findNearestPackageDirectory, p as LEGACY_HOOK_RUNNER_RELATIVE_PATH, r as hasDoctorDependency, t as DOCTOR_PACKAGE_NAME, u as HOOK_RELATIVE_PATH, w as packageHasDependency, x as ensureTrailingNewline } from "./install-doctor-script-DgkdRcgO.js";
5
- import { a as readReactDoctorWorkflow, c as workflowUsesV1Action, d as detectDefaultBranch, l as prompts, n as getReactDoctorWorkflowPath, o as upgradeReactDoctorWorkflowInPlace, r as installReactDoctorWorkflow } from "./install-github-workflow-CMGYT8Sl.js";
6
- import { t as shouldSkipPrompts } from "./should-skip-prompts-CvrObON2.js";
7
- import { a as recordGate, c as ACTION_UPGRADE_EVENT, d as INSTALL_AGENTS_PREFERENCE_ID, h as detectAvailableAgents, i as readPreference, l as CI_PITCH_EVENT, m as computeDefaultSelectedAgents, n as openUrl, r as isGatePending, s as writePreference, t as reportWorkflowResult } from "./report-workflow-result-Rb94RG5z.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]="03801b3f-b898-5268-a3ca-5a9015f910b2")}catch(e){}}();
3
+ import { C as CI_TRUST_COMPANIES, Kt as highlighter, T as METRIC, br as isErrnoException, cr as GITHUB_ACTIONS_SETUP_URL, gr as SKILL_NAME, t as recordCount, z as CliInputError } from "./record-metric-BYDiYM_b.js";
4
+ import { C as isRecord, D as readPackageJson, E as packageHasRecordKey, M as cliLogger, O as resolveGitPath, S as getPackageJsonPath, T as packageHasNestedRecordKey, _ as REACT_DOCTOR_COMMAND, a as installReactDoctorScriptStep, b as VITE_PLUS_HOOKS_PATH, c as spinner, d as HUSKY_HOOKS_PATH, f as LEFTHOOK_CONFIG_FILES, g as PRE_COMMIT_CONFIG_FILE, h as OVERCOMMIT_CONFIG_FILE, j as writeJsonFile, k as runGit, l as HOOK_FILE_NAME, m as NON_BLOCKING_REACT_DOCTOR_COMMAND, n as findNearestPackageDirectory, p as LEGACY_HOOK_RUNNER_RELATIVE_PATH, r as hasDoctorDependency, t as DOCTOR_PACKAGE_NAME, u as HOOK_RELATIVE_PATH, w as packageHasDependency, x as ensureTrailingNewline } from "./install-doctor-script-ChGM4QXN.js";
5
+ import { a as readReactDoctorWorkflow, c as workflowUsesV1Action, d as detectDefaultBranch, l as prompts, n as getReactDoctorWorkflowPath, o as upgradeReactDoctorWorkflowInPlace, r as installReactDoctorWorkflow } from "./install-github-workflow-W9k2a3Ln.js";
6
+ import { t as shouldSkipPrompts } from "./should-skip-prompts-Da6drkx_.js";
7
+ import { a as recordGate, c as ACTION_UPGRADE_EVENT, d as INSTALL_AGENTS_PREFERENCE_ID, h as detectAvailableAgents, i as readPreference, l as CI_PITCH_EVENT, m as computeDefaultSelectedAgents, n as openUrl, r as isGatePending, s as writePreference, t as reportWorkflowResult } from "./report-workflow-result-BmM8X3fj.js";
8
8
  import { execFile } from "node:child_process";
9
9
  import * as path$1 from "node:path";
10
10
  import * as fs$1 from "node:fs";
@@ -1152,5 +1152,5 @@ const runInstallReactDoctor = async (options = {}) => {
1152
1152
  //#endregion
1153
1153
  export { askUpgradeActionVersion as a, recordCiPromptDecision as c, installReactDoctorAgentHooks as i, hasHandledActionUpgrade as l, runInstallReactDoctor as n, askAddToGitHubActions as o, findAgentsWithOutdatedReactDoctorHooks as r, hasHandledCiPrompt as s, getSkillSourceDirectory as t, recordActionUpgradeDecision as u };
1154
1154
 
1155
- //# sourceMappingURL=install-react-doctor-D1RpT9Xm.js.map
1156
- //# debugId=b7118a38-b64b-5720-bad0-04dbeac14534
1155
+ //# sourceMappingURL=install-react-doctor-Bu9OMiav.js.map
1156
+ //# debugId=03801b3f-b898-5268-a3ca-5a9015f910b2
@@ -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]="c905b5d6-18fa-56d8-a027-65e903a79a3b")}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]="484d6e86-ff4b-5212-89bb-6048839ec81f")}catch(e){}}();
3
3
  import { i as __toESM, r as __require, t as __commonJSMin } from "./chunk-ChKA3wi6.js";
4
- import { T as METRIC, t as recordCount } from "./record-metric-DIPLeNab.js";
5
- import { n as registerActiveTuiRenderer, t as exitGracefully } from "./exit-gracefully-D5DYlWuv.js";
4
+ import { T as METRIC, t as recordCount } from "./record-metric-BYDiYM_b.js";
5
+ import { n as registerActiveTuiRenderer, t as exitGracefully } from "./exit-gracefully-D-fqCehG.js";
6
6
  import { a as chalk, i as stripAnsi, n as isFullWidth$1, r as isWide$1 } from "./get-east-asian-width-Cglw13G7.js";
7
7
  import { EventEmitter } from "node:events";
8
8
  import { execFileSync } from "node:child_process";
@@ -25869,5 +25869,5 @@ var require_jsx_runtime = /* @__PURE__ */ __commonJSMin(((exports, module) => {
25869
25869
  //#endregion
25870
25870
  export { useExitOnCtrlC as a, Spinner as c, useInput as d, Transform as f, Box as h, import_react as i, useStdout as l, Text as m, registerMountedTuiRenderer as n, terminalSymbols as o, render as p, useStdoutDimensions as r, isPrintableInput as s, require_jsx_runtime as t, useApp as u };
25871
25871
 
25872
- //# sourceMappingURL=jsx-runtime-BvjCY6VX.js.map
25873
- //# debugId=c905b5d6-18fa-56d8-a027-65e903a79a3b
25872
+ //# sourceMappingURL=jsx-runtime-BLZlYxX9.js.map
25873
+ //# debugId=484d6e86-ff4b-5212-89bb-6048839ec81f
@@ -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]="3d916820-7a44-5686-bbf7-be962aa47a43")}catch(e){}}();
3
- import { An as gen, Kt as highlighter, Tn as log, _ as VERSION } from "./record-metric-DIPLeNab.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]="08760fe6-64ff-526c-9330-f2a4f2b3b649")}catch(e){}}();
3
+ import { An as gen, Kt as highlighter, Tn as log, _ as VERSION } from "./record-metric-BYDiYM_b.js";
4
4
  //#region src/cli/utils/print-branded-header.ts
5
5
  /**
6
6
  * Single branded line every command prints first when not in JSON
@@ -18,5 +18,5 @@ const printBrandedHeader = gen(function* () {
18
18
  //#endregion
19
19
  export { printBrandedHeader as t };
20
20
 
21
- //# sourceMappingURL=print-branded-header-YxgbRW5d.js.map
22
- //# debugId=3d916820-7a44-5686-bbf7-be962aa47a43
21
+ //# sourceMappingURL=print-branded-header-CGlRc6ub.js.map
22
+ //# debugId=08760fe6-64ff-526c-9330-f2a4f2b3b649
@@ -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]="60aa194e-32c2-5d42-b3ce-1ce03e3fe037")}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]="3344b152-cbc1-55ec-8526-6fc2d8d3a92e")}catch(e){}}();
3
3
  import { t as unrefStdin } from "./unref-stdin-BKT_s38a.js";
4
- import { a as RUNTIME_SCAN_LOCAL_DEV_PORTS, t as sanitizeRuntimeUrl, u as RUNTIME_SCAN_MAX_STRING_LENGTH } from "./sanitize-runtime-url-Dt3Vt--J.js";
5
- import { a as useExitOnCtrlC, c as Spinner, d as useInput, h as Box, i as import_react, m as Text, n as registerMountedTuiRenderer, o as terminalSymbols, p as render, r as useStdoutDimensions, s as isPrintableInput, t as require_jsx_runtime } from "./jsx-runtime-BvjCY6VX.js";
4
+ import { a as RUNTIME_SCAN_LOCAL_DEV_PORTS, t as sanitizeRuntimeUrl, u as RUNTIME_SCAN_MAX_STRING_LENGTH } from "./sanitize-runtime-url-DYlUQwKR.js";
5
+ import { a as useExitOnCtrlC, c as Spinner, d as useInput, h as Box, i as import_react, m as Text, n as registerMountedTuiRenderer, o as terminalSymbols, p as render, r as useStdoutDimensions, s as isPrintableInput, t as require_jsx_runtime } from "./jsx-runtime-BLZlYxX9.js";
6
6
  import * as http from "node:http";
7
7
  //#region src/cli/runtime-scan/detect-local-runtime-urls.ts
8
8
  const LOCAL_HTTP_HOSTS = ["127.0.0.1", "::1"];
@@ -236,5 +236,5 @@ const promptRuntimeScanUrl = () => new Promise((resolve) => {
236
236
  //#endregion
237
237
  export { promptRuntimeScanUrl };
238
238
 
239
- //# sourceMappingURL=prompt-runtime-scan-url-Dd_bj35X.js.map
240
- //# debugId=60aa194e-32c2-5d42-b3ce-1ce03e3fe037
239
+ //# sourceMappingURL=prompt-runtime-scan-url-y1gsTi9R.js.map
240
+ //# debugId=3344b152-cbc1-55ec-8526-6fc2d8d3a92e
@@ -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]="2f155ce4-d672-52d5-9d70-c7edd24a5493")}catch(e){}}();
3
- import { Sr as isPlainObject } from "./record-metric-DIPLeNab.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]="77df95ff-9ac6-5e8b-ae98-7a5c84eb5a0d")}catch(e){}}();
3
+ import { Sr as isPlainObject } from "./record-metric-BYDiYM_b.js";
4
4
  import * as fs$1 from "node:fs";
5
5
  import { parseJSON5 } from "confbox";
6
6
  //#region src/cli/utils/read-object-file.ts
@@ -20,5 +20,5 @@ const readObjectFile = (filePath) => {
20
20
  //#endregion
21
21
  export { readObjectFile as t };
22
22
 
23
- //# sourceMappingURL=read-object-file-D7yYdwqv.js.map
24
- //# debugId=2f155ce4-d672-52d5-9d70-c7edd24a5493
23
+ //# sourceMappingURL=read-object-file-8GV0gq_t.js.map
24
+ //# debugId=77df95ff-9ac6-5e8b-ae98-7a5c84eb5a0d
@@ -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]="6a38f08e-4076-5481-99de-0cfbca19f06d")}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]="25889804-ea20-5e95-ac29-3a09dfcbb7bd")}catch(e){}}();
3
3
  import { i as __toESM, r as __require, t as __commonJSMin } from "./chunk-ChKA3wi6.js";
4
4
  import { n as require_picomatch, t as require_semver } from "./semver-DFtnEmN-.js";
5
5
  import { createRequire } from "node:module";
@@ -20,7 +20,7 @@ import { fileURLToPath } from "node:url";
20
20
  import * as OS from "node:os";
21
21
  import os from "node:os";
22
22
  import { createJiti } from "jiti";
23
- import { parseJSON5 } from "confbox";
23
+ import { parseJSON5, parseJSONC } from "confbox";
24
24
  import * as fs$1 from "node:fs/promises";
25
25
  import { PassThrough } from "node:stream";
26
26
  import { convertToTSX } from "@astrojs/compiler/sync";
@@ -71508,59 +71508,11 @@ const isLocalPathExtend = (entry) => {
71508
71508
  for (const prefix of EXTENDS_LOCAL_PATH_PREFIXES) if (entry.startsWith(prefix)) return true;
71509
71509
  return false;
71510
71510
  };
71511
- const stripJsoncComments = (raw) => {
71512
- let result = "";
71513
- let cursor = 0;
71514
- let inString = false;
71515
- let stringQuote = "";
71516
- while (cursor < raw.length) {
71517
- const character = raw[cursor];
71518
- const nextCharacter = raw[cursor + 1];
71519
- if (inString) {
71520
- result += character;
71521
- if (character === "\\" && cursor + 1 < raw.length) {
71522
- result += nextCharacter;
71523
- cursor += 2;
71524
- continue;
71525
- }
71526
- if (character === stringQuote) inString = false;
71527
- cursor += 1;
71528
- continue;
71529
- }
71530
- if (character === "\"" || character === "'") {
71531
- inString = true;
71532
- stringQuote = character;
71533
- result += character;
71534
- cursor += 1;
71535
- continue;
71536
- }
71537
- if (character === "/" && nextCharacter === "/") {
71538
- const lineEndIndex = raw.indexOf("\n", cursor);
71539
- cursor = lineEndIndex === -1 ? raw.length : lineEndIndex;
71540
- continue;
71541
- }
71542
- if (character === "/" && nextCharacter === "*") {
71543
- const blockEndIndex = raw.indexOf("*/", cursor + 2);
71544
- cursor = blockEndIndex === -1 ? raw.length : blockEndIndex + 2;
71545
- continue;
71546
- }
71547
- result += character;
71548
- cursor += 1;
71549
- }
71550
- return result;
71551
- };
71552
- const parseJsonOrJsonc = (raw) => {
71553
- try {
71554
- return JSON.parse(raw);
71555
- } catch {
71556
- return JSON.parse(stripJsoncComments(raw));
71557
- }
71558
- };
71559
71511
  const canOxlintExtendConfig = (configPath) => {
71560
71512
  if (!configPath.endsWith(".eslintrc.json")) return true;
71561
71513
  let parsed;
71562
71514
  try {
71563
- parsed = parseJsonOrJsonc(fs$1$3.readFileSync(configPath, "utf-8"));
71515
+ parsed = parseJSONC(fs$1$3.readFileSync(configPath, "utf-8"), { allowTrailingComma: true });
71564
71516
  } catch {
71565
71517
  return true;
71566
71518
  }
@@ -71669,6 +71621,25 @@ const detectUserLintConfigPaths = (rootDirectory) => {
71669
71621
  }
71670
71622
  return [];
71671
71623
  };
71624
+ const readAdoptedLintConfigSettings = (configPaths) => {
71625
+ const mergedSettings = /* @__PURE__ */ new Map();
71626
+ for (const configPath of configPaths) {
71627
+ let parsed;
71628
+ try {
71629
+ parsed = parseJSONC(fs$1$3.readFileSync(configPath, "utf-8"), { allowTrailingComma: true });
71630
+ } catch {
71631
+ continue;
71632
+ }
71633
+ if (!isPlainObject(parsed)) continue;
71634
+ const settings = parsed.settings;
71635
+ if (!isPlainObject(settings)) continue;
71636
+ for (const [pluginName, pluginSettings] of Object.entries(settings)) {
71637
+ if (pluginName === "react-doctor") continue;
71638
+ mergedSettings.set(pluginName, pluginSettings);
71639
+ }
71640
+ }
71641
+ return Object.fromEntries(mergedSettings);
71642
+ };
71672
71643
  const DISABLE_DIRECTIVE_PATTERN = /(eslint|oxlint)-disable/;
71673
71644
  const getBackupRootDirectory = (rootDirectory) => path$1$1.join(rootDirectory, ...DISABLE_DIRECTIVE_BACKUP_DIRECTORY_SEGMENTS);
71674
71645
  const getBackupPath = (rootDirectory, absolutePath) => {
@@ -72065,7 +72036,7 @@ const buildUserPluginRules = (userPlugin, severityControls) => {
72065
72036
  }
72066
72037
  return enabled;
72067
72038
  };
72068
- const createOxlintConfig = ({ pluginPath, project, customRulesOnly = false, extendsPaths = [], ignoredTags = /* @__PURE__ */ new Set(), includedTags = /* @__PURE__ */ new Set(), includeTagDefaults = false, runtimeGlobals, unpluginAutoImportGlobalScopes, serverAuthFunctionNames, projectIndexModuleSources, severityControls, userPlugins = [], disableReactHooksJsPlugin = false, ruleSelection, sidecarRuleIdFilter }) => {
72039
+ const createOxlintConfig = ({ pluginPath, project, customRulesOnly = false, extendsPaths = [], ignoredTags = /* @__PURE__ */ new Set(), includedTags = /* @__PURE__ */ new Set(), includeTagDefaults = false, runtimeGlobals, unpluginAutoImportGlobalScopes, serverAuthFunctionNames, projectIndexModuleSources, severityControls, adoptedSettings = {}, userPlugins = [], disableReactHooksJsPlugin = false, ruleSelection, sidecarRuleIdFilter }) => {
72069
72040
  const hasIncludedTags = includedTags.size > 0;
72070
72041
  const reactHooksJsPlugin = disableReactHooksJsPlugin || ruleSelection === "sidecar" || hasIncludedTags ? null : resolveReactHooksJsPlugin(project.hasReactCompiler || project.hasReactCompilerLintPlugin === true, customRulesOnly);
72071
72042
  const reactCompilerRules = reactHooksJsPlugin ? applyRuleSeverityControls(filterRulesToAvailable(REACT_COMPILER_RULES, "react-hooks-js", reactHooksJsPlugin.availableRuleNames), severityControls) : {};
@@ -72120,23 +72091,26 @@ const createOxlintConfig = ({ pluginPath, project, customRulesOnly = false, exte
72120
72091
  },
72121
72092
  plugins: [],
72122
72093
  jsPlugins: [...jsPlugins, pluginPath],
72123
- settings: { "react-doctor": {
72124
- portedRuleMode: "curated",
72125
- framework: project.framework,
72126
- rootDirectory: settingsRootDirectory,
72127
- capabilities: [...capabilities].sort(),
72128
- ...runtimeGlobals && runtimeGlobals.length > 0 ? { runtimeGlobals: [...runtimeGlobals] } : {},
72129
- ...unpluginAutoImportGlobalScopes && unpluginAutoImportGlobalScopes.length > 0 ? {
72130
- unpluginAutoImportRootDirectories: [...new Set([settingsRootDirectory, project.rootDirectory])],
72131
- unpluginAutoImportGlobalScopes: unpluginAutoImportGlobalScopes.map((scope) => ({
72132
- directory: scope.directory,
72133
- names: [...scope.names]
72134
- }))
72135
- } : {},
72136
- ...project.shopifyFlashListMajorVersion !== null ? { shopifyFlashListMajorVersion: project.shopifyFlashListMajorVersion } : {},
72137
- ...serverAuthFunctionNames && serverAuthFunctionNames.length > 0 ? { serverAuthFunctionNames: [...serverAuthFunctionNames] } : {},
72138
- ...projectIndexModuleSources !== void 0 ? { projectIndexModuleSources: [...projectIndexModuleSources] } : {}
72139
- } },
72094
+ settings: {
72095
+ ...adoptedSettings,
72096
+ "react-doctor": {
72097
+ portedRuleMode: "curated",
72098
+ framework: project.framework,
72099
+ rootDirectory: settingsRootDirectory,
72100
+ capabilities: [...capabilities].sort(),
72101
+ ...runtimeGlobals && runtimeGlobals.length > 0 ? { runtimeGlobals: [...runtimeGlobals] } : {},
72102
+ ...unpluginAutoImportGlobalScopes && unpluginAutoImportGlobalScopes.length > 0 ? {
72103
+ unpluginAutoImportRootDirectories: [...new Set([settingsRootDirectory, project.rootDirectory])],
72104
+ unpluginAutoImportGlobalScopes: unpluginAutoImportGlobalScopes.map((scope) => ({
72105
+ directory: scope.directory,
72106
+ names: [...scope.names]
72107
+ }))
72108
+ } : {},
72109
+ ...project.shopifyFlashListMajorVersion !== null ? { shopifyFlashListMajorVersion: project.shopifyFlashListMajorVersion } : {},
72110
+ ...serverAuthFunctionNames && serverAuthFunctionNames.length > 0 ? { serverAuthFunctionNames: [...serverAuthFunctionNames] } : {},
72111
+ ...projectIndexModuleSources !== void 0 ? { projectIndexModuleSources: [...projectIndexModuleSources] } : {}
72112
+ }
72113
+ },
72140
72114
  rules: {
72141
72115
  ...reactCompilerRules,
72142
72116
  ...enabledReactDoctorRules,
@@ -74245,7 +74219,9 @@ const runOxlint = async (options) => {
74245
74219
  return [];
74246
74220
  }
74247
74221
  const pluginPath = resolvePluginPath();
74248
- const extendsPaths = (adoptExistingLintConfig && !customRulesOnly ? detectUserLintConfigPaths(rootDirectory) : []).filter(canOxlintExtendConfig);
74222
+ const detectedConfigPaths = adoptExistingLintConfig && !customRulesOnly ? detectUserLintConfigPaths(rootDirectory) : [];
74223
+ const extendsPaths = detectedConfigPaths.filter(canOxlintExtendConfig);
74224
+ const adoptedSettings = detectedConfigPaths.length > 0 ? readAdoptedLintConfigSettings(detectedConfigPaths) : {};
74249
74225
  const userPlugins = includedTags.size > 0 ? [] : resolveUserPlugins(userConfig?.plugins, configSourceDirectory);
74250
74226
  const restoreDisableDirectives = await neutralizeDisableDirectives(rootDirectory, includePaths ?? options.precomputedSourceFiles?.map((sourceFile) => sourceFile.path), { recoverOnly: respectInlineDisables });
74251
74227
  const configDirectory = fs$1$3.mkdtempSync(path$1$1.join(os.tmpdir(), "react-doctor-oxlintrc-"));
@@ -74307,6 +74283,7 @@ const runOxlint = async (options) => {
74307
74283
  serverAuthFunctionNames,
74308
74284
  projectIndexModuleSources,
74309
74285
  severityControls,
74286
+ adoptedSettings,
74310
74287
  userPlugins,
74311
74288
  disableReactHooksJsPlugin: overrides.disableReactHooksJsPlugin,
74312
74289
  ruleSelection: overrides.ruleSelection,
@@ -76718,6 +76695,7 @@ const METRIC = {
76718
76695
  tuiIssueStreamShown: "tui.issue_stream_shown",
76719
76696
  tuiProjectPathContextShown: "tui.project_path_context_shown",
76720
76697
  tuiProjectSelectShown: "tui.project_select_shown",
76698
+ tuiCiRecommendationShown: "tui.ci_recommendation_shown",
76721
76699
  tuiReportActionSelected: "tui.report_action_selected",
76722
76700
  tuiCancelled: "tui.cancelled",
76723
76701
  tuiScanInlineShown: "tui.scan_inline_shown",
@@ -76766,7 +76744,7 @@ const makeNoopConsole = () => ({
76766
76744
  });
76767
76745
  //#endregion
76768
76746
  //#region src/cli/utils/version.ts
76769
- const VERSION = "0.9.12-dev.990daaf";
76747
+ const VERSION = "0.9.12-dev.9f7d26f";
76770
76748
  //#endregion
76771
76749
  //#region src/cli/utils/json-mode.ts
76772
76750
  let context = null;
@@ -77110,5 +77088,5 @@ const recordDistribution = (name, value, options = {}) => {
77110
77088
  //#endregion
77111
77089
  export { Linter as $, CANONICAL_DISCORD_URL as $n, layerObservability as $t, SCAN_RESULT_CACHE_FILENAME as A, gen as An, discoverSupportedSubprojects as At, isNonInteractiveEnvironment as B, sync as Bn, getDiffInfo as Bt, CI_TRUST_COMPANIES as C, error as Cn, messageFromUnknown as Cr, collectSourceFileCountsByDirectory as Ct, NANOSECONDS_PER_MILLISECOND as D, Diagnostic as Dn, createNodeReadFileLinesSync as Dt, MINIMUM_VTE_VERSION_FOR_HYPERLINKS as E, warn$1 as En, countOptInProjectRuleSelections as Et, STAGED_FILES_TEMP_DIR_PREFIX as F, provide as Fn, formatErrorChain as Ft, isCiEnvironment as G, provide$2 as Gn, hashFileContents as Gt, isDebugFlagEnabled as H, void_ as Hn, groupBy as Ht, STAGED_SNAPSHOT_ADDITIONAL_CONFIG_FILENAMES as I, provideContext as In, formatReactDoctorError as It, Config as J, makeUnsafe$5 as Jn, isPathInsideDirectory as Jt, isCiOrCodingAgentEnvironment as K, succeed$3 as Kn, highlighter as Kt, TUI_REPORT_COMPACT_MAX_ROWS as L, provideService as Ln, getBaselineDiffPlan as Lt, SENTRY_DSN as M, map$3 as Mn, filterPathsOutsideDirectories as Mt, SENTRY_FLUSH_TIMEOUT_MS as N, orElseSucceed as Nn, filterSourceFiles as Nt, REACT_DOCTOR_CONFIG_PROJECT_NAME as O, decodeUnknownSync as On, createOxlintSpawnSlots as Ot, SENTRY_RELEASE_PREFIX as P, promise as Pn, findLegacyConfig as Pt, LintPartialFailures as Q, AXIOM_DEFAULT_DOMAIN as Qn, isScanComplete as Qt, TUI_REPORT_DETAIL_WIDTH_FRACTION as R, runPromise as Rn, getChangedLineRanges as Rt, BASELINE_FILES_TEMP_DIR_PREFIX as S, Console as Sn, isPlainObject as Sr, clearConfigCache as St, METRIC as T, log as Tn, computeDiagnosticDelta as Tt, ACTION_INPUT_ENVIRONMENT_VARIABLES as U, buildWithScope as Un, hasPublishedFixRecipe as Ut, isGitHookEnvironment as V, try_ as Vn, getEquivalentRuleKeys as Vt, detectRunnerOs as W, mergeAll$1 as Wn, hasSupportedFrameworkOrLibrary as Wt, Git as X, void_$1 as Xn, isReactDoctorError as Xt, Files as Y, fail$5 as Yn, isProjectDiscoveryError as Yt, LEGACY_CONFIG_FILENAME as Z, ParentSpan as Zn, isSameRuleKey as Zt, VERSION as _, shouldUseMaintainabilityLayer as _n, STAGED_FILES_PROJECT_CONFIG_FILENAMES as _r, buildRuleSeverityControls as _t, isEnvFlagEnabled as a, materializeSourceTree as an, DIAGNOSTIC_CATEGORY_BUCKETS as ar, Progress as at, AXIOM_METRICS_DATASET as b, validateConfigTypes as bn, isErrnoException as br, canonicalizeUserRuleKey as bt, setSentryProjectInfo as c, resolveGithubActionsScoreMetadata as cn, GITHUB_ACTIONS_SETUP_URL as cr, Score as ct, isJsonModeActive as d, resolveScanConcurrency as dn, JSX_DUPLICATION_SOURCE_FILE_PATTERN as dr, SupplyChain as dt, listSourceFiles as en, CANONICAL_GITHUB_URL as er, Maintainability as et, setJsonReportDirectory as f, resolveScanTarget as fn, JSX_FILE_PATTERN as fr, anonymizeInPlace as ft, writeJsonReport as g, setColorEnabled as gn, SKILL_NAME as gr, buildRuleDocsUrl as gt, writeJsonErrorReport as h, scrubSensitivePaths as hn, SHARE_BASE_URL as hr, buildJsonReport as ht, isTelemetryEnabled as i, mapWithConcurrency as in, CONFIG_SCHEMA_URL as ir, PerFileLintCacheEnabled as it, SCAN_RESULT_CACHE_MAX_HASHED_FILE_SIZE_BYTES as j, makeSpan$1 as jn, filterDiagnosticsForSurface as jt, RUN_GIT_MAX_BUFFER_BYTES as k, make$30 as kn, detectAiTrainingEnvironment as kt, getRunId as l, resolveLintBatchOrdering as ln, GIT_SHOW_MAX_BUFFER_BYTES as lr, SidecarLintCacheEnabled as lt, writeJsonCancellationReport as m, runInspect as mn, OXLINT_NODE_REQUIREMENT as mr, atomicWriteJson as mt, recordDistribution as n, listWorkspacePackages as nn, COMPILER_CLEANUP_BUCKET as nr, OxlintConcurrency as nt, buildSentryScope as o, mergeReactDoctorConfigs as on, DOCS_URL as or, Project as ot, setJsonReportMode as p, restoreLegacyThrow as pn, MILLISECONDS_PER_SECOND as pr, anonymizeText as pt, isCodingAgentEnvironment as q, close as qn, isMonorepoRoot as qt, toSpanAttributes as r, loadConfigWithSource as rn, COMPILER_CLEANUP_RULE_KEYS as rr, OxlintSpawnSlots as rt, buildSentryProjectContext as s, remainingDeadlineBudgetMs as sn, ENTERPRISE_CONTACT_URL as sr, Reporter as st, recordCount as t, listSourceFilesCooperative as tn, CI_URL as tr, NodeResolver as tt, enableJsonMode as u, resolveReactDoctorCacheDir as un, HTML_FILE_PATTERN as ur, StagedFiles as ut, makeNoopConsole as v, summarizeDiagnostics as vn, getCategoryImpact as vr, buildSkippedChecks as vt, GH_DEFAULT_BRANCH_PROBE_TIMEOUT_MS as w, info as wn, toCanonicalPath as wr, computeConfigFingerprint as wt, AXIOM_TRACES_DATASET as x, yieldToEventLoop as xn, isFile as xr, classifyFileContext as xt, AXIOM_INGEST_TOKEN as y, toRelativePath as yn, isDirectory as yr, calculateScore as yt, CliInputError as z, runSync as zn, getDiagnosticRuleIdentity as zt };
77112
77090
 
77113
- //# sourceMappingURL=record-metric-DIPLeNab.js.map
77114
- //# debugId=6a38f08e-4076-5481-99de-0cfbca19f06d
77091
+ //# sourceMappingURL=record-metric-BYDiYM_b.js.map
77092
+ //# debugId=25889804-ea20-5e95-ac29-3a09dfcbb7bd
@@ -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]="a37163ea-3a16-558e-b381-8e4b30025399")}catch(e){}}();
3
- import { N as SENTRY_FLUSH_TIMEOUT_MS, T as METRIC, Xt as isReactDoctorError, l as getRunId, o as buildSentryScope, t as recordCount } from "./record-metric-DIPLeNab.js";
4
- import { n as shutdownTelemetry, r as isExpectedUserError } from "./telemetry-runtime-DZaIMuWS.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]="c1f07130-9cff-5399-8de7-fcf4038d4748")}catch(e){}}();
3
+ import { N as SENTRY_FLUSH_TIMEOUT_MS, T as METRIC, Xt as isReactDoctorError, l as getRunId, o as buildSentryScope, t as recordCount } from "./record-metric-BYDiYM_b.js";
4
+ import { n as shutdownTelemetry, r as isExpectedUserError } from "./telemetry-runtime-DcXXRI22.js";
5
5
  import { r as recordRunTraceId, t as getActiveRunTrace } from "./active-run-trace-dlIZeEvb.js";
6
6
  import * as Sentry from "@sentry/node";
7
7
  //#region src/cli/utils/report-error.ts
@@ -60,5 +60,5 @@ const reportErrorToSentry = async (error) => {
60
60
  //#endregion
61
61
  export { reportErrorToSentry as t };
62
62
 
63
- //# sourceMappingURL=report-error-DJZR8Tq1.js.map
64
- //# debugId=a37163ea-3a16-558e-b381-8e4b30025399
63
+ //# sourceMappingURL=report-error-C4MUPAvk.js.map
64
+ //# debugId=c1f07130-9cff-5399-8de7-fcf4038d4748
@@ -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]="4b426619-1761-5293-961b-c8e2fabb71df")}catch(e){}}();
3
- import { O as REACT_DOCTOR_CONFIG_PROJECT_NAME, T as METRIC, t as recordCount } from "./record-metric-DIPLeNab.js";
4
- import { u as isCommandAvailable } from "./install-github-workflow-CMGYT8Sl.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]="debcfb26-65d8-52ff-a033-70ba1ce23cff")}catch(e){}}();
3
+ import { O as REACT_DOCTOR_CONFIG_PROJECT_NAME, T as METRIC, t as recordCount } from "./record-metric-BYDiYM_b.js";
4
+ import { u as isCommandAvailable } from "./install-github-workflow-W9k2a3Ln.js";
5
5
  import { spawn } from "node:child_process";
6
6
  import * as path$1 from "node:path";
7
7
  import process$1 from "node:process";
@@ -275,5 +275,5 @@ const reportWorkflowResult = (workflowSpinner, result, projectRoot) => {
275
275
  //#endregion
276
276
  export { recordGate as a, ACTION_UPGRADE_EVENT as c, INSTALL_AGENTS_PREFERENCE_ID as d, ONBOARDING_EVENT as f, 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 };
277
277
 
278
- //# sourceMappingURL=report-workflow-result-Rb94RG5z.js.map
279
- //# debugId=4b426619-1761-5293-961b-c8e2fabb71df
278
+ //# sourceMappingURL=report-workflow-result-BmM8X3fj.js.map
279
+ //# debugId=debcfb26-65d8-52ff-a033-70ba1ce23cff
@@ -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]="ccf7b5ef-ee0c-572e-98c7-7d0ce92f2b0b")}catch(e){}}();
3
- import { Jt as isPathInsideDirectory, Nt as filterSourceFiles, wr as toCanonicalPath } from "./record-metric-DIPLeNab.js";
4
- import { M as cliLogger } from "./install-doctor-script-DgkdRcgO.js";
5
- import { d as detectDefaultBranch, f as runCommand, l as prompts, u as isCommandAvailable } from "./install-github-workflow-CMGYT8Sl.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]="5e4bbd1c-7180-5514-921e-b8e37d549ba6")}catch(e){}}();
3
+ import { Jt as isPathInsideDirectory, Nt as filterSourceFiles, wr as toCanonicalPath } from "./record-metric-BYDiYM_b.js";
4
+ import { M as cliLogger } from "./install-doctor-script-ChGM4QXN.js";
5
+ import { d as detectDefaultBranch, f as runCommand, l as prompts, u as isCommandAvailable } from "./install-github-workflow-W9k2a3Ln.js";
6
6
  import * as path$1 from "node:path";
7
7
  //#region src/cli/utils/path-format.ts
8
8
  const toForwardSlashes = (filePath) => filePath.replaceAll("\\", "/");
@@ -335,5 +335,5 @@ const finalizeScope = async ({ requested, diffInfo, skipPrompts, isQuiet }) => {
335
335
  //#endregion
336
336
  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, toForwardSlashes as u };
337
337
 
338
- //# sourceMappingURL=resolve-scope-D-STb1gT.js.map
339
- //# debugId=ccf7b5ef-ee0c-572e-98c7-7d0ce92f2b0b
338
+ //# sourceMappingURL=resolve-scope-DmNrMvxi.js.map
339
+ //# debugId=5e4bbd1c-7180-5514-921e-b8e37d549ba6
@@ -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]="83807c4f-6f67-5af3-b6fb-a865b9983aba")}catch(e){}}();
3
- import { Kt as highlighter, Sr as isPlainObject, St as clearConfigCache, T as METRIC, Vt as getEquivalentRuleKeys, Zt as isSameRuleKey, bn as validateConfigTypes, gt as buildRuleDocsUrl, nr as COMPILER_CLEANUP_BUCKET, rn as loadConfigWithSource, rr as COMPILER_CLEANUP_RULE_KEYS, t as recordCount } from "./record-metric-DIPLeNab.js";
4
- import { M as cliLogger, n as findNearestPackageDirectory } from "./install-doctor-script-DgkdRcgO.js";
5
- import { t as readObjectFile } from "./read-object-file-D7yYdwqv.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]="2978c28f-ca65-5f02-89c0-0b188ed3c76f")}catch(e){}}();
3
+ import { Kt as highlighter, Sr as isPlainObject, St as clearConfigCache, T as METRIC, Vt as getEquivalentRuleKeys, Zt as isSameRuleKey, bn as validateConfigTypes, gt as buildRuleDocsUrl, nr as COMPILER_CLEANUP_BUCKET, rn as loadConfigWithSource, rr as COMPILER_CLEANUP_RULE_KEYS, t as recordCount } from "./record-metric-BYDiYM_b.js";
4
+ import { M as cliLogger, n as findNearestPackageDirectory } from "./install-doctor-script-ChGM4QXN.js";
5
+ import { t as readObjectFile } from "./read-object-file-8GV0gq_t.js";
6
6
  import * as path$1 from "node:path";
7
7
  import * as fs$1 from "node:fs";
8
8
  import { REACT_DOCTOR_RULES } from "oxlint-plugin-react-doctor/core";
@@ -577,5 +577,5 @@ const rulesUnignoreTagAction = async (tag, options) => {
577
577
  //#endregion
578
578
  export { rulesCategoryAction, rulesDisableAction, rulesEnableAction, rulesExplainAction, rulesIgnoreTagAction, rulesListAction, rulesSetAction, rulesUnignoreTagAction };
579
579
 
580
- //# sourceMappingURL=rules-CzdeF9zf.js.map
581
- //# debugId=83807c4f-6f67-5af3-b6fb-a865b9983aba
580
+ //# sourceMappingURL=rules-DNQKzUXv.js.map
581
+ //# debugId=2978c28f-ca65-5f02-89c0-0b188ed3c76f
@@ -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]="c8c24b15-3780-5c27-8a1c-d5af61497035")}catch(e){}}();
3
- import { Bn as sync, Bt as getDiffInfo, C as CI_TRUST_COMPANIES, G as isCiEnvironment, Hn as void_, Jt as isPathInsideDirectory, Kn as succeed, Kt as highlighter, L as TUI_REPORT_COMPACT_MAX_ROWS, Lt as getBaselineDiffPlan, R as TUI_REPORT_DETAIL_WIDTH_FRACTION, Rn as runPromise, Rt as getChangedLineRanges, T as METRIC, Ut as hasPublishedFixRecipe, V as isGitHookEnvironment, ar as DIAGNOSTIC_CATEGORY_BUCKETS, at as Progress, cr as GITHUB_ACTIONS_SETUP_URL, fn as resolveScanTarget, gt as buildRuleDocsUrl, in as mapWithConcurrency, n as recordDistribution, sn as remainingDeadlineBudgetMs, st as Reporter, t as recordCount, vr as getCategoryImpact, xn as yieldToEventLoop, yt as calculateScore } from "./record-metric-DIPLeNab.js";
4
- import { M as cliLogger, n as findNearestPackageDirectory } from "./install-doctor-script-DgkdRcgO.js";
5
- import { i as isReactDoctorWorkflowInstalled } from "./install-github-workflow-CMGYT8Sl.js";
6
- import { r as resolveScope, s as resolveBlockingLevel, t as finalizeScope, u as toForwardSlashes } from "./resolve-scope-D-STb1gT.js";
7
- import { A as resolveMergeBaseRef, B as buildNoScoreMessage, C as copyToClipboard, D as deduplicateProjectScans, E as collectProjectSourceFileCounts, F as printFooter, G as formatFixRecipeLine, H as hasLintHardFailure, I as printDiagnosticsDump, K as formatLearnMoreLine, L as formatDiagnosticSite, M as pluralize, N as formatSkippedCheckLabel, O as createInvocationInspect, P as formatElapsedTime, R as hasIncompleteScoreAnalysis, S as CLI_AGENT_BINARIES, T as buildHandoffPayload, U as buildRulePriorityMap, V as buildEmptyReportMessage, W as buildSortedRuleGroups, _ as resolveCliInspectOptions, a as projectManifestChanged, b as setUpGitHubActions, c as selectProjects, d as resolveProjectChangedLineRanges, f as resolveProjectDiffIncludePaths, g as resolveWorkspaceDeadCodeOwner, h as retryMissingProjectScores, l as buildCodeFrame, n as formatSkippedProjectsMessage, o as partitionProjectScanOutcomes, p as resolveProjectSourceFilePaths, r as validateIncludeUntrackedScope, s as discoverWorkspacePackages, t as shouldFailScanGate, u as resolveProjectScan, v as filterScansForSurface, w as launchCliAgent, x as detectLaunchableAgents, y as countUniqueScannedFiles, z as filterDiagnosticsByCategories } from "./should-fail-scan-gate-CXek96Ux.js";
8
- import { a as recordGate, f as ONBOARDING_EVENT, n as openUrl, r as isGatePending } from "./report-workflow-result-Rb94RG5z.js";
9
- 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-BvjCY6VX.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]="adedc16f-0e59-5603-843a-5a4c060e1146")}catch(e){}}();
3
+ import { Bn as sync, Bt as getDiffInfo, C as CI_TRUST_COMPANIES, G as isCiEnvironment, Hn as void_, Jt as isPathInsideDirectory, Kn as succeed, Kt as highlighter, L as TUI_REPORT_COMPACT_MAX_ROWS, Lt as getBaselineDiffPlan, R as TUI_REPORT_DETAIL_WIDTH_FRACTION, Rn as runPromise, Rt as getChangedLineRanges, T as METRIC, Ut as hasPublishedFixRecipe, V as isGitHookEnvironment, ar as DIAGNOSTIC_CATEGORY_BUCKETS, at as Progress, cr as GITHUB_ACTIONS_SETUP_URL, fn as resolveScanTarget, gt as buildRuleDocsUrl, in as mapWithConcurrency, n as recordDistribution, sn as remainingDeadlineBudgetMs, st as Reporter, t as recordCount, vr as getCategoryImpact, xn as yieldToEventLoop, yt as calculateScore } from "./record-metric-BYDiYM_b.js";
4
+ import { M as cliLogger, n as findNearestPackageDirectory } from "./install-doctor-script-ChGM4QXN.js";
5
+ import { i as isReactDoctorWorkflowInstalled } from "./install-github-workflow-W9k2a3Ln.js";
6
+ import { r as resolveScope, s as resolveBlockingLevel, t as finalizeScope, u as toForwardSlashes } from "./resolve-scope-DmNrMvxi.js";
7
+ import { A as resolveMergeBaseRef, B as buildNoScoreMessage, C as copyToClipboard, D as deduplicateProjectScans, E as collectProjectSourceFileCounts, F as printFooter, G as formatFixRecipeLine, H as hasLintHardFailure, I as printDiagnosticsDump, K as formatLearnMoreLine, L as formatDiagnosticSite, M as pluralize, N as formatSkippedCheckLabel, O as createInvocationInspect, P as formatElapsedTime, R as hasIncompleteScoreAnalysis, S as CLI_AGENT_BINARIES, T as buildHandoffPayload, U as buildRulePriorityMap, V as buildEmptyReportMessage, W as buildSortedRuleGroups, _ as resolveCliInspectOptions, a as projectManifestChanged, b as setUpGitHubActions, c as selectProjects, d as resolveProjectChangedLineRanges, f as resolveProjectDiffIncludePaths, g as resolveWorkspaceDeadCodeOwner, h as retryMissingProjectScores, l as buildCodeFrame, n as formatSkippedProjectsMessage, o as partitionProjectScanOutcomes, p as resolveProjectSourceFilePaths, r as validateIncludeUntrackedScope, s as discoverWorkspacePackages, t as shouldFailScanGate, u as resolveProjectScan, v as filterScansForSurface, w as launchCliAgent, x as detectLaunchableAgents, y as countUniqueScannedFiles, z as filterDiagnosticsByCategories } from "./should-fail-scan-gate-gkN0JbKk.js";
8
+ import { a as recordGate, f as ONBOARDING_EVENT, n as openUrl, r as isGatePending } from "./report-workflow-result-BmM8X3fj.js";
9
+ 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-BLZlYxX9.js";
10
10
  import path from "node:path";
11
11
  import { performance } from "node:perf_hooks";
12
12
  import isUnicodeSupported from "is-unicode-supported";
@@ -2042,14 +2042,14 @@ const qualifyDiagnosticPaths = (diagnostics, rootDirectory, projectDirectory) =>
2042
2042
  filePath: toForwardSlashes(path.join(prefix, diagnostic.filePath))
2043
2043
  });
2044
2044
  };
2045
- const resolveScanPresentation = (input, projectScans) => {
2045
+ const resolveScanPresentation = (input, projectScans, rootDirectory) => {
2046
2046
  const isScoreDisabled = input.options?.noScore === true || projectScans.some((projectScan) => projectScan.config?.noScore === true);
2047
2047
  return {
2048
2048
  isOffline: isCiEnvironment() || input.share === false || isShareOptedOut(projectScans, input.options?.noScore),
2049
2049
  initialProgress: projectScans.length > 1 ? "Indexing workspace files…" : "Scanning project…",
2050
2050
  noScoreMessage: buildNoScoreMessage({ isScoreDisabled }),
2051
2051
  outputDirectory: input.options?.outputDirectory,
2052
- shouldRecommendCi: projectScans.length > 1 || projectScans.some((projectScan) => isCiUnconfigured(projectScan.directory)),
2052
+ shouldRecommendCi: isCiUnconfigured(rootDirectory),
2053
2053
  verbose: input.options?.verbose === true
2054
2054
  };
2055
2055
  };
@@ -2224,6 +2224,7 @@ const runMountedScan = async (rootDirectory, presentation, blockingLevel, execut
2224
2224
  const completedScan = await executeScan(context);
2225
2225
  mountedRenderer.dispose();
2226
2226
  mountedRenderer = mountRenderer("report");
2227
+ if (presentation.shouldRecommendCi) recordCount(METRIC.tuiCiRecommendationShown);
2227
2228
  await mountedRenderer.instance.waitUntilExit();
2228
2229
  mountedRenderer.dispose();
2229
2230
  if (presentation.outputDirectory !== void 0 || presentation.verbose) await runPromise(printDiagnosticsDump([...completedScan.diagnostics], presentation.outputDirectory, presentation.verbose));
@@ -2260,7 +2261,7 @@ const runSingleProjectScan = async (rootScanTarget, projectDirectory, input, sco
2260
2261
  process.stdout.write("No changed source files in the selected project.\n");
2261
2262
  return { shouldFail: false };
2262
2263
  }
2263
- const presentation = resolveScanPresentation(input, [projectScan]);
2264
+ const presentation = resolveScanPresentation(input, [projectScan], rootScanTarget.resolvedDirectory);
2264
2265
  return runMountedScan(projectScan.directory, presentation, blockingLevel, async (context) => {
2265
2266
  const result = await inspectProject(projectScan.directory, {
2266
2267
  ...resolveTuiInspectOptions(input, projectScan.config),
@@ -2342,7 +2343,7 @@ const runMultiProjectScan = async (rootScanTarget, directories, input, scopePlan
2342
2343
  isRootDeadCodeEnabled: input.options?.deadCode ?? rootProjectScan?.config?.deadCode ?? true
2343
2344
  });
2344
2345
  if (workspaceDeadCodeOwner !== null) recordCount(METRIC.scanWorkspaceMaintainabilityShared, 1, { projectCount: discoveredProjectScans.length });
2345
- return runMountedScan(rootDirectory, resolveScanPresentation(input, projectScans.map(({ projectScan }) => projectScan)), blockingLevel, async (context) => {
2346
+ return runMountedScan(rootDirectory, resolveScanPresentation(input, projectScans.map(({ projectScan }) => projectScan), rootDirectory), blockingLevel, async (context) => {
2346
2347
  const startTime = performance.now();
2347
2348
  let finishedCount = 0;
2348
2349
  recordDistribution(METRIC.scanFeedbackDelay, performance.now() - feedbackStartTime, {
@@ -2505,5 +2506,5 @@ const runScanApp = async (input) => {
2505
2506
  //#endregion
2506
2507
  export { runScanApp };
2507
2508
 
2508
- //# sourceMappingURL=run-scan-app-eHaynbf9.js.map
2509
- //# debugId=c8c24b15-3780-5c27-8a1c-d5af61497035
2509
+ //# sourceMappingURL=run-scan-app-C0kxQ1fE.js.map
2510
+ //# debugId=adedc16f-0e59-5603-843a-5a4c060e1146
@@ -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]="7de7cc7e-93ba-5c76-a45c-1450639ffdc4")}catch(e){}}();
3
- import { Kt as highlighter, T as METRIC, t as recordCount, u as enableJsonMode, z as CliInputError } from "./record-metric-DIPLeNab.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]="60942988-b6f4-5700-9764-190812716de1")}catch(e){}}();
3
+ import { Kt as highlighter, T as METRIC, t as recordCount, u as enableJsonMode, z as CliInputError } from "./record-metric-BYDiYM_b.js";
4
4
  import { t as activeScanAbortRegistry } from "./active-scan-abort-registry-DwG6tSPy.js";
5
- import { t as reportErrorToSentry } from "./report-error-DJZR8Tq1.js";
6
- import { n as resetSentryRunState, r as withRunSpan } from "./with-run-span-BknYWuxL.js";
7
- 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-Dt3Vt--J.js";
8
- import { r as resolveTuiEnvironment, t as isTuiEnvironmentSupported } from "./should-use-tui-C9VEED7D.js";
5
+ import { t as reportErrorToSentry } from "./report-error-C4MUPAvk.js";
6
+ import { n as resetSentryRunState, r as withRunSpan } from "./with-run-span-YnjkCzXg.js";
7
+ 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-DYlUQwKR.js";
8
+ import { r as resolveTuiEnvironment, t as isTuiEnvironmentSupported } from "./should-use-tui-DDV9EXki.js";
9
9
  import * as path$1 from "node:path";
10
10
  import * as fs$1 from "node:fs";
11
11
  import { randomUUID } from "node:crypto";
@@ -719,7 +719,7 @@ const resolveRuntimeScanUrl = async (url) => {
719
719
  if (url !== void 0) return url;
720
720
  if (!isTuiEnvironmentSupported(resolveTuiEnvironment(process.stderr.isTTY === true))) throw new CliInputError("A URL is required outside an interactive terminal. Run `react-doctor scan <url>`.");
721
721
  recordCount(METRIC.runtimeScanUrlPromptShown);
722
- const { promptRuntimeScanUrl } = await import("./prompt-runtime-scan-url-Dd_bj35X.js");
722
+ const { promptRuntimeScanUrl } = await import("./prompt-runtime-scan-url-y1gsTi9R.js");
723
723
  return promptRuntimeScanUrl();
724
724
  };
725
725
  const runtimeScanAction = async (url, flags) => {
@@ -766,5 +766,5 @@ const runtimeScanAction = async (url, flags) => {
766
766
  //#endregion
767
767
  export { runtimeScanAction };
768
768
 
769
- //# sourceMappingURL=runtime-scan-Bb0HT5UF.js.map
770
- //# debugId=7de7cc7e-93ba-5c76-a45c-1450639ffdc4
769
+ //# sourceMappingURL=runtime-scan-D_r84DrL.js.map
770
+ //# debugId=60942988-b6f4-5700-9764-190812716de1
@@ -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]="4f01f607-c891-568d-bbbf-bbd43cfdd212")}catch(e){}}();
3
- import { z as CliInputError } from "./record-metric-DIPLeNab.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]="387d0afa-144a-5ee4-a57a-6f9c7b85884b")}catch(e){}}();
3
+ import { z as CliInputError } from "./record-metric-BYDiYM_b.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-Dt3Vt--J.js.map
76
- //# debugId=4f01f607-c891-568d-bbbf-bbd43cfdd212
75
+ //# sourceMappingURL=sanitize-runtime-url-DYlUQwKR.js.map
76
+ //# debugId=387d0afa-144a-5ee4-a57a-6f9c7b85884b
@@ -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]="926f3b44-10b2-5818-9582-172211c9bb76")}catch(e){}}();
3
- import { T as METRIC, fn as resolveScanTarget, t as recordCount } from "./record-metric-DIPLeNab.js";
4
- import { i as warnDeprecatedDiff } from "./resolve-scope-D-STb1gT.js";
5
- import { _ as resolveCliInspectOptions, i as validateModeFlags } from "./should-fail-scan-gate-CXek96Ux.js";
6
- import { n as warnDeprecatedFailOn, r as runProjectMigrations, t as inspectAction } from "./inspect-DLPW57Dl.js";
7
- import { n as shouldUseTui, r as resolveTuiEnvironment } from "./should-use-tui-C9VEED7D.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]="555509ad-e1fa-57fa-a475-6611d4321c4f")}catch(e){}}();
3
+ import { T as METRIC, fn as resolveScanTarget, t as recordCount } from "./record-metric-BYDiYM_b.js";
4
+ import { i as warnDeprecatedDiff } from "./resolve-scope-DmNrMvxi.js";
5
+ import { _ as resolveCliInspectOptions, i as validateModeFlags } from "./should-fail-scan-gate-gkN0JbKk.js";
6
+ import { n as warnDeprecatedFailOn, r as runProjectMigrations, t as inspectAction } from "./inspect-DS-8JQ7-.js";
7
+ import { n as shouldUseTui, r as resolveTuiEnvironment } from "./should-use-tui-DDV9EXki.js";
8
8
  import path from "node:path";
9
9
  //#region src/cli/commands/scan.ts
10
10
  const runScanCommand = async (input) => {
@@ -22,7 +22,7 @@ const runScanCommand = async (input) => {
22
22
  warnDeprecatedFailOn(input.flags, scanTarget.userConfig);
23
23
  warnDeprecatedDiff(input.flags, scanTarget.userConfig);
24
24
  recordCount(METRIC.cliInvoked, 1, { command: input.invocationCommand });
25
- const { runScanApp } = await import("./run-scan-app-eHaynbf9.js");
25
+ const { runScanApp } = await import("./run-scan-app-C0kxQ1fE.js");
26
26
  const { shouldFail } = await runScanApp({
27
27
  directory: input.directory,
28
28
  scanTarget,
@@ -37,5 +37,5 @@ const runScanCommand = async (input) => {
37
37
  //#endregion
38
38
  export { runScanCommand };
39
39
 
40
- //# sourceMappingURL=scan-CjjO1QrG.js.map
41
- //# debugId=926f3b44-10b2-5818-9582-172211c9bb76
40
+ //# sourceMappingURL=scan-CRyEeC82.js.map
41
+ //# debugId=555509ad-e1fa-57fa-a475-6611d4321c4f