react-doctor 0.9.12-dev.a2b460d → 0.9.12-dev.f7efb7d
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.
- package/README.md +1 -1
- package/bin/react-doctor.js +1 -9
- package/dist/{build-section-divider-Vz879zXD.js → build-section-divider-LBEprrSw.js} +9 -10
- package/dist/{ci-BVYrYekU.js → ci-B80oWpS1.js} +12 -12
- package/dist/cli.js +30 -31
- package/dist/{design-D-TYN_tr.js → design-Doxh3Oua.js} +4 -4
- package/dist/{devtools-DPRVRu3S.js → devtools-D8NTVj81.js} +4 -4
- package/dist/{exit-gracefully-Cjv5kC_l.js → exit-gracefully-Z8iBwlMI.js} +6 -6
- package/dist/index.d.ts +21 -42
- package/dist/index.js +54685 -54554
- package/dist/{inspect-kkvDHKDE.js → inspect-qNFSJB8s.js} +21 -20
- package/dist/{install-ZeYvD9Rw.js → install-CxK6oNgV.js} +8 -8
- package/dist/{install-doctor-script-D58Hr1dM.js → install-doctor-script-rddKhKYf.js} +4 -4
- package/dist/{install-github-workflow-DkMicv8E.js → install-github-workflow-telZkaCp.js} +6 -6
- package/dist/{install-react-doctor-CjgE52al.js → install-react-doctor-DoKoYt2g.js} +47 -45
- package/dist/{print-branded-header-D4QYSu-h.js → print-branded-header-514lsPsP.js} +4 -4
- package/dist/project-analysis-worker.d.ts +1 -0
- package/dist/project-analysis-worker.js +51900 -0
- package/dist/{read-object-file-OFRlvCAL.js → read-object-file-0FXK_1Lr.js} +4 -4
- package/dist/{record-metric-CMe2d1Xv.js → record-metric-DFQYh2Mf.js} +2602 -5677
- package/dist/{report-error-1l7v6_dE.js → report-error-Bg7eABmv.js} +5 -5
- package/dist/{report-workflow-result-EagkH_v9.js → report-workflow-result-Dd3jJHJr.js} +5 -5
- package/dist/{resolve-scope-CMNrOdDf.js → resolve-scope-CsMf2eUG.js} +6 -6
- package/dist/{rules-CzR1qUru.js → rules-Bmw6adjU.js} +6 -6
- package/dist/{run-scan-app-Ciq22jzp.js → run-scan-app-CwcrBTC4.js} +137 -121
- package/dist/{scan-D4m5r4Rs.js → scan-D7bmiqv1.js} +8 -8
- package/dist/semver-DFtnEmN-.js +3219 -0
- package/dist/{should-fail-scan-gate-lMTlhEhE.js → should-fail-scan-gate-Cd68GDY-.js} +151 -83
- package/dist/{should-skip-prompts-mXKZBNCz.js → should-skip-prompts-oFD5z_9E.js} +4 -4
- package/dist/{unref-stdin-Cxhw67r6.js → unref-stdin-C5xln9RW.js} +6 -12
- package/dist/{version-CnvVY2VD.js → version-Bg3OKWjm.js} +4 -4
- package/dist/{why-BktDEhhH.js → why-DPksh2dy.js} +4 -4
- package/package.json +5 -9
- package/dist/chunk-q7NCDQ7-.js +0 -28
- package/dist/lsp.js +0 -81145
package/README.md
CHANGED
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
|
|
10
10
|
Your agent writes bad React, this catches it.
|
|
11
11
|
|
|
12
|
-
React Doctor deterministically scans your codebase and finds issues across state
|
|
12
|
+
React Doctor deterministically scans your codebase and finds issues across state and effects, performance, architecture, security, accessibility, and maintainability. It highlights overly complex React functions and repeated JSX trees that are good candidates for composition.
|
|
13
13
|
|
|
14
14
|
Works across React frameworks and React-enabled sites - Next.js, Vite, Astro, TanStack, React Native, Expo, you name it.
|
|
15
15
|
|
package/bin/react-doctor.js
CHANGED
|
@@ -10,12 +10,4 @@ if (module.enableCompileCache && !process.env.NODE_DISABLE_COMPILE_CACHE) {
|
|
|
10
10
|
}
|
|
11
11
|
}
|
|
12
12
|
|
|
13
|
-
|
|
14
|
-
// commander / prompts / ora layer, which would touch process.stdin before the
|
|
15
|
-
// LSP connection attaches and break the stdio transport.
|
|
16
|
-
if (process.argv[2] === "experimental-lsp") {
|
|
17
|
-
const { startLanguageServer } = await import("../dist/lsp.js");
|
|
18
|
-
startLanguageServer();
|
|
19
|
-
} else {
|
|
20
|
-
await import("../dist/cli.js");
|
|
21
|
-
}
|
|
13
|
+
await import("../dist/cli.js");
|
|
@@ -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]="
|
|
3
|
-
import {
|
|
4
|
-
import { c as isExpectedUserError } from "./unref-stdin-
|
|
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]="6f8961a6-7626-5d07-a0a4-acbfebe329f7")}catch(e){}}();
|
|
3
|
+
import { $n as CANONICAL_GITHUB_URL, Gt as highlighter, M as SENTRY_FLUSH_TIMEOUT_MS, a as isEnvFlagEnabled, ar as DOCS_URL, dt as anonymizeInPlace, ft as anonymizeText, i as isTelemetryEnabled, mn as scrubSensitivePaths, o as buildSentryScope } from "./record-metric-DFQYh2Mf.js";
|
|
4
|
+
import { c as isExpectedUserError } from "./unref-stdin-C5xln9RW.js";
|
|
5
5
|
import * as Sentry from "@sentry/node";
|
|
6
6
|
//#region src/cli/utils/scrub-sentry-event.ts
|
|
7
7
|
/**
|
|
@@ -55,9 +55,8 @@ const scrubSentryEvent = (event) => {
|
|
|
55
55
|
/**
|
|
56
56
|
* Shared Sentry configuration resolution — release, environment, and tracing
|
|
57
57
|
* sample rate — derived from `VERSION` and the standard `SENTRY_*` env
|
|
58
|
-
* overrides. Lives apart from `instrument.ts`
|
|
59
|
-
*
|
|
60
|
-
* release/environment values without the LSP pulling in CLI run-context code.
|
|
58
|
+
* overrides. Lives apart from `instrument.ts` so this resolution remains
|
|
59
|
+
* independently testable.
|
|
61
60
|
*/
|
|
62
61
|
/**
|
|
63
62
|
* A version is a "dev" build when it's the unbuilt placeholder (`0.0.0`) or
|
|
@@ -71,13 +70,13 @@ const isDevVersion = (version) => version === "0.0.0" || version.includes("-");
|
|
|
71
70
|
* uploads source-map artifacts under, so stack frames symbolicate. Honors the
|
|
72
71
|
* standard `SENTRY_RELEASE` override.
|
|
73
72
|
*/
|
|
74
|
-
const resolveSentryRelease = () => process.env.SENTRY_RELEASE || `react-doctor@0.9.12-dev.
|
|
73
|
+
const resolveSentryRelease = () => process.env.SENTRY_RELEASE || `react-doctor@0.9.12-dev.f7efb7d`;
|
|
75
74
|
/**
|
|
76
75
|
* Deployment environment shown in Sentry's environment filter. Defaults to
|
|
77
76
|
* `production` for tagged releases and `development` for dev/unbuilt versions,
|
|
78
77
|
* overridable via the standard `SENTRY_ENVIRONMENT` env var.
|
|
79
78
|
*/
|
|
80
|
-
const resolveSentryEnvironment = () => process.env.SENTRY_ENVIRONMENT || (isDevVersion("0.9.12-dev.
|
|
79
|
+
const resolveSentryEnvironment = () => process.env.SENTRY_ENVIRONMENT || (isDevVersion("0.9.12-dev.f7efb7d") ? "development" : "production");
|
|
81
80
|
//#endregion
|
|
82
81
|
//#region src/instrument.ts
|
|
83
82
|
let isInitialized = false;
|
|
@@ -227,5 +226,5 @@ const buildSectionDivider = () => highlighter.dim(`${DIVIDER_INDENT}${"─".repe
|
|
|
227
226
|
//#endregion
|
|
228
227
|
export { initializeSentry as a, flushSentry as i, buildFooterLinkLines as n, activeScanAbortRegistry as r, buildSectionDivider as t };
|
|
229
228
|
|
|
230
|
-
//# sourceMappingURL=build-section-divider-
|
|
231
|
-
//# debugId=
|
|
229
|
+
//# sourceMappingURL=build-section-divider-LBEprrSw.js.map
|
|
230
|
+
//# debugId=6f8961a6-7626-5d07-a0a4-acbfebe329f7
|
|
@@ -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]="
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import { c as isExpectedUserError } from "./unref-stdin-
|
|
6
|
-
import { n as handleError, r as handleUserError, t as reportErrorToSentry } from "./report-error-
|
|
7
|
-
import { L as cliLogger, c as spinner, n as findNearestPackageDirectory } from "./install-doctor-script-
|
|
8
|
-
import { a as readReactDoctorWorkflow, d as detectDefaultBranch, f as runCommand, l as prompts, n as getReactDoctorWorkflowPath, s as upgradeWorkflowActionToV2, t as buildWorkflowContent } from "./install-github-workflow-
|
|
9
|
-
import { a as isValidBlockingLevel, c as openWorkflowPullRequest, l as stageWorkflowFile, n as isScopeValue } from "./resolve-scope-
|
|
10
|
-
import { t as shouldSkipPrompts } from "./should-skip-prompts-
|
|
11
|
-
import { t as printBrandedHeader } from "./print-branded-header-
|
|
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]="5b6ba07b-84e2-5eef-a7cb-81e5f8f467e5")}catch(e){}}();
|
|
3
|
+
import { i as __toESM, r as __require, t as __commonJSMin } from "./chunk-ChKA3wi6.js";
|
|
4
|
+
import { Gt as highlighter, Rn as runSync, er as CI_URL, sr as GITHUB_ACTIONS_SETUP_URL, t as recordCount, w as METRIC } from "./record-metric-DFQYh2Mf.js";
|
|
5
|
+
import { c as isExpectedUserError } from "./unref-stdin-C5xln9RW.js";
|
|
6
|
+
import { n as handleError, r as handleUserError, t as reportErrorToSentry } from "./report-error-Bg7eABmv.js";
|
|
7
|
+
import { L as cliLogger, c as spinner, n as findNearestPackageDirectory } from "./install-doctor-script-rddKhKYf.js";
|
|
8
|
+
import { a as readReactDoctorWorkflow, d as detectDefaultBranch, f as runCommand, l as prompts, n as getReactDoctorWorkflowPath, s as upgradeWorkflowActionToV2, t as buildWorkflowContent } from "./install-github-workflow-telZkaCp.js";
|
|
9
|
+
import { a as isValidBlockingLevel, c as openWorkflowPullRequest, l as stageWorkflowFile, n as isScopeValue } from "./resolve-scope-CsMf2eUG.js";
|
|
10
|
+
import { t as shouldSkipPrompts } from "./should-skip-prompts-oFD5z_9E.js";
|
|
11
|
+
import { t as printBrandedHeader } from "./print-branded-header-514lsPsP.js";
|
|
12
12
|
import * as path$1 from "node:path";
|
|
13
13
|
import * as fs$1 from "node:fs";
|
|
14
14
|
//#region src/cli/utils/ci/ci-provider.ts
|
|
@@ -7497,5 +7497,5 @@ const ciConfigAction = (options) => runCiCommand("config", runCiConfig, options)
|
|
|
7497
7497
|
//#endregion
|
|
7498
7498
|
export { ciConfigAction, ciInstallAction, ciUpgradeAction };
|
|
7499
7499
|
|
|
7500
|
-
//# sourceMappingURL=ci-
|
|
7501
|
-
//# debugId=
|
|
7500
|
+
//# sourceMappingURL=ci-B80oWpS1.js.map
|
|
7501
|
+
//# debugId=5b6ba07b-84e2-5eef-a7cb-81e5f8f467e5
|
package/dist/cli.js
CHANGED
|
@@ -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]="
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import { c as isExpectedUserError, r as getLastRunTraceId, s as shutdownTelemetry, t as unrefStdin } from "./unref-stdin-
|
|
6
|
-
import { a as initializeSentry, i as flushSentry } from "./build-section-divider-
|
|
7
|
-
import { t as exitGracefully } from "./exit-gracefully-
|
|
8
|
-
import { n as handleError, r as handleUserError, t as reportErrorToSentry } from "./report-error-
|
|
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]="03462e9a-cc61-5815-b641-9bce568efeb2")}catch(e){}}();
|
|
3
|
+
import { i as __toESM, r as __require, t as __commonJSMin } from "./chunk-ChKA3wi6.js";
|
|
4
|
+
import { $n as CANONICAL_GITHUB_URL, Gt as highlighter, R as CliInputError, V as isDebugFlagEnabled, d as isJsonModeActive, er as CI_URL, g as VERSION, hn as setColorEnabled, i as isTelemetryEnabled, m as writeJsonErrorReport } from "./record-metric-DFQYh2Mf.js";
|
|
5
|
+
import { c as isExpectedUserError, r as getLastRunTraceId, s as shutdownTelemetry, t as unrefStdin } from "./unref-stdin-C5xln9RW.js";
|
|
6
|
+
import { a as initializeSentry, i as flushSentry } from "./build-section-divider-LBEprrSw.js";
|
|
7
|
+
import { t as exitGracefully } from "./exit-gracefully-Z8iBwlMI.js";
|
|
8
|
+
import { n as handleError, r as handleUserError, t as reportErrorToSentry } from "./report-error-Bg7eABmv.js";
|
|
9
9
|
import { execFileSync } from "node:child_process";
|
|
10
10
|
//#region ../../node_modules/.pnpm/commander@14.0.3/node_modules/commander/lib/error.js
|
|
11
11
|
var require_error = /* @__PURE__ */ __commonJSMin(((exports) => {
|
|
@@ -3456,10 +3456,10 @@ ${formatExampleLines([
|
|
|
3456
3456
|
|
|
3457
3457
|
${highlighter.dim("Scope:")}
|
|
3458
3458
|
Runs every rule tagged ${highlighter.info("design")}; all design rules stay opt-in during a general health scan.
|
|
3459
|
-
|
|
3459
|
+
Whole-project maintainability, supply-chain, external lint-config, custom-plugin, and health-score passes are skipped.
|
|
3460
3460
|
Standard scan flags such as ${highlighter.info("--scope")}, ${highlighter.info("--project")}, ${highlighter.info("--verbose")}, and ${highlighter.info("--json")} still work.
|
|
3461
3461
|
`;
|
|
3462
|
-
const MAX_DURATION_OPTION_DESCRIPTION = "scan time budget for the whole run, shared across workspace projects: past it, queued projects, remaining lint batches, and
|
|
3462
|
+
const MAX_DURATION_OPTION_DESCRIPTION = "scan time budget for the whole run, shared across workspace projects: past it, queued projects, remaining lint batches, and maintainability analysis are skipped and partial results are reported (skipped files and projects are listed in the JSON report)";
|
|
3463
3463
|
const renderCiHelpEpilog = () => `
|
|
3464
3464
|
${highlighter.dim("Examples:")}
|
|
3465
3465
|
${formatExampleLines([
|
|
@@ -3479,9 +3479,9 @@ ${highlighter.dim("Learn more:")}
|
|
|
3479
3479
|
${highlighter.info(CI_URL)}
|
|
3480
3480
|
`;
|
|
3481
3481
|
const collectCategoryOption = (value, previousValues) => [...previousValues ?? [], value];
|
|
3482
|
-
const program = new Command().name("react-doctor").description("Diagnose React codebase health").version(VERSION, "-v, --version", "display the version number").argument("[directory]", "project directory to scan", ".").option("--lint", "enable linting").option("--no-lint", "skip linting").
|
|
3482
|
+
const program = new Command().name("react-doctor").description("Diagnose React codebase health").version(VERSION, "-v, --version", "display the version number").argument("[directory]", "project directory to scan", ".").option("--lint", "enable linting").option("--no-lint", "skip linting").addOption(new Option("--dead-code").hideHelp()).addOption(new Option("--no-dead-code").hideHelp()).option("--supply-chain", "enable the dependency supply-chain scan (default)").option("--no-supply-chain", "skip the dependency supply-chain scan (Socket.dev dependency health checks)").option("--verbose", "show every rule and per-file details (default shows top 3 rules)").option("--debug", "force a Sentry trace and print its id at the end (paste it into a bug report)").option("--output-dir <dir>", "directory for the full diagnostics dump (default: a temp folder)").option("--score", "output only the score").option("--json", "output a single structured JSON report (suppresses other output)").option("--json-compact", "with --json, emit compact JSON (no indentation)").option("--json-out <path>", "with --json, write the report to a file instead of stdout").option("--no-cache", "disable all scan caches for this run").option("-y, --yes", "skip prompts, scan all workspace projects").option("--no-parallel", "lint serially with one worker (default: parallel across CPU cores; set the worker count with REACT_DOCTOR_PARALLEL)").option("--project <name>", "select projects: workspace names or directory paths (comma-separated for multiple); overrides the `projects` config field").option("--scope <value>", "how much supported JS/TS and inline HTML script source to scan/report: full (default), files, changed (only new issues vs base), or lines (issues whose source spans touch changed lines)").option("--base <ref>", "base git ref for files/changed/lines scope (auto-detected when omitted)").option("--include-untracked", "with --scope files/changed/lines, also scan ordinary untracked files (respects .gitignore)").addOption(new Option("--diff [base]", "[deprecated] alias for --scope changed (pass `false` to force a full scan)").hideHelp()).addOption(new Option("--changed-files-from <file>", "scan source files listed in a newline-delimited changed-files file").hideHelp()).option("--no-score", "skip the score API, the share URL, and crash reporting").addOption(new Option("--category <category>", "only show diagnostics in a category (repeatable; e.g. Security)").argParser(collectCategoryOption)).option("--no-telemetry", "alias for --no-score (skip the score API, share URL, and crash reporting)").option("--staged", "scan only staged (git index) files for pre-commit hooks (honors --project and config `projects`; exits 0 when nothing is staged)").option("--max-duration <seconds>", MAX_DURATION_OPTION_DESCRIPTION).option("--blocking <level>", "severity that fails CI: error (default), warning, or none (advisory)").addOption(new Option("--fail-on <level>", "[deprecated] alias for --blocking <level>").hideHelp()).option("--no-respect-inline-disables", "audit mode: neutralize inline lint suppressions before scanning").option("--warnings", "show warning-severity diagnostics (default)").option("--no-warnings", "hide warning-severity diagnostics (errors only)").option("--color", "force colored output").option("--no-color", "disable colored output (also honors NO_COLOR)").addHelpText("after", renderRootHelpEpilog);
|
|
3483
3483
|
program.action(async (directory = ".", flags) => {
|
|
3484
|
-
const { runScanCommand } = await import("./scan-
|
|
3484
|
+
const { runScanCommand } = await import("./scan-D7bmiqv1.js");
|
|
3485
3485
|
return runScanCommand({
|
|
3486
3486
|
directory,
|
|
3487
3487
|
flags,
|
|
@@ -3489,72 +3489,71 @@ program.action(async (directory = ".", flags) => {
|
|
|
3489
3489
|
});
|
|
3490
3490
|
});
|
|
3491
3491
|
program.command("design [directory]").description("Run only the focused UI design diagnostics").addHelpText("after", renderDesignHelpEpilog).action(async (directory, _options, command) => {
|
|
3492
|
-
const { designAction } = await import("./design-
|
|
3492
|
+
const { designAction } = await import("./design-Doxh3Oua.js");
|
|
3493
3493
|
return designAction(directory ?? ".", command.optsWithGlobals());
|
|
3494
3494
|
});
|
|
3495
3495
|
program.command("why <location>").description("Explain why a rule fired (or why a suppression didn't apply) at a file:line").option("--project <name>", "select projects: workspace names or directory paths (comma-separated for multiple)").option("-c, --cwd <cwd>", "working directory", process.cwd()).option("--color", "force colored output").option("--no-color", "disable colored output (also honors NO_COLOR)").action(async (location, options) => {
|
|
3496
|
-
const { whyAction } = await import("./why-
|
|
3496
|
+
const { whyAction } = await import("./why-DPksh2dy.js");
|
|
3497
3497
|
return whyAction(location, options);
|
|
3498
3498
|
});
|
|
3499
|
-
program.command("install").alias("setup").description("Install the react-doctor skill into your coding agents and optional git hook").option("-y, --yes", "skip prompts, install for all detected agents").option("--dry-run", "show what would be installed without writing files").option("--agent-hooks", "install
|
|
3500
|
-
const { installAction } = await import("./install-
|
|
3499
|
+
program.command("install").alias("setup").description("Install the react-doctor skill into your coding agents and optional git hook").option("-y, --yes", "skip prompts, install for all detected agents").option("--dry-run", "show what would be installed without writing files").option("--agent-hooks", "install end-of-turn agent hooks for Claude Code and Cursor").option("-c, --cwd <cwd>", "working directory", process.cwd()).option("--color", "force colored output").option("--no-color", "disable colored output (also honors NO_COLOR)").addHelpText("after", renderInstallHelpEpilog).action(async (options, command) => {
|
|
3500
|
+
const { installAction } = await import("./install-CxK6oNgV.js");
|
|
3501
3501
|
return installAction(options, command);
|
|
3502
3502
|
});
|
|
3503
3503
|
const providerOption = ["--provider <name>", "ci provider: github-actions or gitlab-ci (auto-detected by default)"];
|
|
3504
3504
|
const prOption = ["--pr", "open a pull request with the change instead of writing it to the working tree"];
|
|
3505
3505
|
const ci = program.command("ci").description("Set up, upgrade, and configure React Doctor in your CI");
|
|
3506
3506
|
ci.command("install").description("Add a CI workflow that scans every pull request").option(...providerOption).option(...prOption).option("--blocking <level>", "gate level: none (advisory, default), warning, or error").option("--scope <value>", "what a pull-request scan reports: changed (default), files, lines, full").option("--comment", "post a summary comment on each pull request").option("--no-comment", "don't post a summary comment").option("--review-comments", "add inline review comments on changed lines").option("--no-review-comments", "don't add inline review comments").option("--commit-status", "report a commit status with the health score").option("--no-commit-status", "don't report a commit status").option("-y, --yes", "skip prompts; use the defaults").option("-c, --cwd <cwd>", "working directory", process.cwd()).option("--color", "force colored output").option("--no-color", "disable colored output (also honors NO_COLOR)").addHelpText("after", renderCiHelpEpilog).action(async (_options, command) => {
|
|
3507
|
-
const { ciInstallAction } = await import("./ci-
|
|
3507
|
+
const { ciInstallAction } = await import("./ci-B80oWpS1.js");
|
|
3508
3508
|
return ciInstallAction(command.optsWithGlobals());
|
|
3509
3509
|
});
|
|
3510
3510
|
ci.command("config").description("Change the gate, scan scope, and pull-request reporting").option(...providerOption).option("--blocking <level>", "gate level: none (advisory), warning, or error").option("--scope <value>", "what a pull-request scan reports: changed, files, lines, or full").option("--comment", "post a summary comment on each pull request").option("--no-comment", "don't post a summary comment").option("--review-comments", "add inline review comments on changed lines").option("--no-review-comments", "don't add inline review comments").option("--commit-status", "report a commit status with the health score").option("--no-commit-status", "don't report a commit status").option("-y, --yes", "skip prompts; print the current settings").option("-c, --cwd <cwd>", "working directory", process.cwd()).option("--color", "force colored output").option("--no-color", "disable colored output (also honors NO_COLOR)").action(async (_options, command) => {
|
|
3511
|
-
const { ciConfigAction } = await import("./ci-
|
|
3511
|
+
const { ciConfigAction } = await import("./ci-B80oWpS1.js");
|
|
3512
3512
|
return ciConfigAction(command.optsWithGlobals());
|
|
3513
3513
|
});
|
|
3514
3514
|
ci.command("upgrade").description("Upgrade the CI workflow to the action's current major").option(...providerOption).option(...prOption).option("-y, --yes", "skip prompts").option("-c, --cwd <cwd>", "working directory", process.cwd()).option("--color", "force colored output").option("--no-color", "disable colored output (also honors NO_COLOR)").action(async (_options, command) => {
|
|
3515
|
-
const { ciUpgradeAction } = await import("./ci-
|
|
3515
|
+
const { ciUpgradeAction } = await import("./ci-B80oWpS1.js");
|
|
3516
3516
|
return ciUpgradeAction(command.optsWithGlobals());
|
|
3517
3517
|
});
|
|
3518
3518
|
program.command("version").description("show the version with Node and platform info").option("--color", "force colored output").option("--no-color", "disable colored output (also honors NO_COLOR)").action(async () => {
|
|
3519
|
-
const { versionAction } = await import("./version-
|
|
3519
|
+
const { versionAction } = await import("./version-Bg3OKWjm.js");
|
|
3520
3520
|
return versionAction();
|
|
3521
3521
|
});
|
|
3522
3522
|
const rules = program.command("rules").description("List, explain, and configure which React Doctor rules run");
|
|
3523
3523
|
rules.command("list").description("List rules and the severity they run at under your config").option("--category <name>", "only show rules in a category (e.g. Performance)").option("--tag <name>", "only show rules with a tag (e.g. design, test-noise)").option("--framework <name>", "only show rules for a framework (e.g. global, nextjs)").option("--configured", "only show rules your config has changed from the default").option("--json", "output a structured JSON array").option("-c, --cwd <cwd>", "working directory", process.cwd()).action(async (_options, command) => {
|
|
3524
|
-
const { rulesListAction } = await import("./rules-
|
|
3524
|
+
const { rulesListAction } = await import("./rules-Bmw6adjU.js");
|
|
3525
3525
|
return rulesListAction(command.optsWithGlobals());
|
|
3526
3526
|
});
|
|
3527
3527
|
rules.command("explain <rule>").description("Explain why a rule matters, its current severity, and how to configure it").option("--json", "output a structured JSON object").option("-c, --cwd <cwd>", "working directory", process.cwd()).action(async (rule, _options, command) => {
|
|
3528
|
-
const { rulesExplainAction } = await import("./rules-
|
|
3528
|
+
const { rulesExplainAction } = await import("./rules-Bmw6adjU.js");
|
|
3529
3529
|
return rulesExplainAction(rule, command.optsWithGlobals());
|
|
3530
3530
|
});
|
|
3531
3531
|
rules.command("set <rule> <severity>").description("Set a rule's severity: off, warn, or error").option("-c, --cwd <cwd>", "working directory", process.cwd()).action(async (rule, severity, _options, command) => {
|
|
3532
|
-
const { rulesSetAction } = await import("./rules-
|
|
3532
|
+
const { rulesSetAction } = await import("./rules-Bmw6adjU.js");
|
|
3533
3533
|
return rulesSetAction(rule, severity, command.optsWithGlobals());
|
|
3534
3534
|
});
|
|
3535
3535
|
rules.command("enable <rule>").description("Enable a rule at its recommended severity (or pass --severity)").option("--severity <level>", "severity to enable at: warn or error").option("-c, --cwd <cwd>", "working directory", process.cwd()).action(async (rule, _options, command) => {
|
|
3536
|
-
const { rulesEnableAction } = await import("./rules-
|
|
3536
|
+
const { rulesEnableAction } = await import("./rules-Bmw6adjU.js");
|
|
3537
3537
|
return rulesEnableAction(rule, command.optsWithGlobals());
|
|
3538
3538
|
});
|
|
3539
3539
|
rules.command("disable <rule>").description("Disable a rule so it never runs").option("-c, --cwd <cwd>", "working directory", process.cwd()).action(async (rule, _options, command) => {
|
|
3540
|
-
const { rulesDisableAction } = await import("./rules-
|
|
3540
|
+
const { rulesDisableAction } = await import("./rules-Bmw6adjU.js");
|
|
3541
3541
|
return rulesDisableAction(rule, command.optsWithGlobals());
|
|
3542
3542
|
});
|
|
3543
3543
|
rules.command("category <category> <severity>").description("Set the severity for a whole category (off, warn, error)").option("-c, --cwd <cwd>", "working directory", process.cwd()).action(async (category, severity, _options, command) => {
|
|
3544
|
-
const { rulesCategoryAction } = await import("./rules-
|
|
3544
|
+
const { rulesCategoryAction } = await import("./rules-Bmw6adjU.js");
|
|
3545
3545
|
return rulesCategoryAction(category, severity, command.optsWithGlobals());
|
|
3546
3546
|
});
|
|
3547
3547
|
rules.command("ignore-tag <tag>").description("Skip a whole rule family by tag before linting (e.g. design)").option("-c, --cwd <cwd>", "working directory", process.cwd()).action(async (tag, _options, command) => {
|
|
3548
|
-
const { rulesIgnoreTagAction } = await import("./rules-
|
|
3548
|
+
const { rulesIgnoreTagAction } = await import("./rules-Bmw6adjU.js");
|
|
3549
3549
|
return rulesIgnoreTagAction(tag, command.optsWithGlobals());
|
|
3550
3550
|
});
|
|
3551
3551
|
rules.command("unignore-tag <tag>").description("Stop ignoring a tag previously skipped via ignore-tag").option("-c, --cwd <cwd>", "working directory", process.cwd()).action(async (tag, _options, command) => {
|
|
3552
|
-
const { rulesUnignoreTagAction } = await import("./rules-
|
|
3552
|
+
const { rulesUnignoreTagAction } = await import("./rules-Bmw6adjU.js");
|
|
3553
3553
|
return rulesUnignoreTagAction(tag, command.optsWithGlobals());
|
|
3554
3554
|
});
|
|
3555
|
-
program.command("experimental-
|
|
3556
|
-
|
|
3557
|
-
const { runScanCommand } = await import("./scan-D4m5r4Rs.js");
|
|
3555
|
+
program.command("experimental-tui [directory]", { hidden: true }).description("[experimental] interactive, scrollable scan report").option("--blocking <level>", "severity that fails CI: error (default), warning, or none (advisory)").option("--color", "force colored output").option("--no-color", "disable colored output (also honors NO_COLOR)").addOption(new Option("--no-dead-code").hideHelp()).option("--no-supply-chain", "skip the dependency supply-chain scan").option("--score", "only print the numeric score (for scripts and CI)").option("--no-score", "skip the score API, the share URL, and crash reporting").option("--no-cache", "disable all scan caches for this run").option("--max-duration <seconds>", MAX_DURATION_OPTION_DESCRIPTION).option("-p, --project <names>", "scan specific workspace projects (comma-separated, or *)").option("-y, --yes", "skip the project prompt and scan every discovered project").action(async (directory = ".", _localOptions, command) => {
|
|
3556
|
+
const { runScanCommand } = await import("./scan-D7bmiqv1.js");
|
|
3558
3557
|
return runScanCommand({
|
|
3559
3558
|
directory,
|
|
3560
3559
|
flags: command.optsWithGlobals(),
|
|
@@ -3593,4 +3592,4 @@ Promise.resolve().then(() => assertNoRemovedFlags(process.argv)).then(() => prog
|
|
|
3593
3592
|
export {};
|
|
3594
3593
|
|
|
3595
3594
|
//# sourceMappingURL=cli.js.map
|
|
3596
|
-
//# debugId=
|
|
3595
|
+
//# debugId=03462e9a-cc61-5815-b641-9bce568efeb2
|
|
@@ -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]="
|
|
3
|
-
import { t as inspectAction } from "./inspect-
|
|
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]="57e0fb68-4680-5c11-92ad-72cb11bf8b4b")}catch(e){}}();
|
|
3
|
+
import { t as inspectAction } from "./inspect-qNFSJB8s.js";
|
|
4
4
|
//#region src/cli/commands/design.ts
|
|
5
5
|
const designAction = async (directory, flags) => inspectAction(directory, {
|
|
6
6
|
...flags,
|
|
@@ -10,5 +10,5 @@ const designAction = async (directory, flags) => inspectAction(directory, {
|
|
|
10
10
|
//#endregion
|
|
11
11
|
export { designAction };
|
|
12
12
|
|
|
13
|
-
//# sourceMappingURL=design-
|
|
14
|
-
//# debugId=
|
|
13
|
+
//# sourceMappingURL=design-Doxh3Oua.js.map
|
|
14
|
+
//# debugId=57e0fb68-4680-5c11-92ad-72cb11bf8b4b
|
|
@@ -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]="
|
|
3
|
-
import {
|
|
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]="9bd200c1-4571-57fb-8b9f-f59503d08d1d")}catch(e){}}();
|
|
3
|
+
import { i as __toESM, r as __require, t as __commonJSMin } from "./chunk-ChKA3wi6.js";
|
|
4
4
|
//#region ../../node_modules/.pnpm/ws@8.20.0/node_modules/ws/lib/constants.js
|
|
5
5
|
var require_constants = /* @__PURE__ */ __commonJSMin(((exports, module) => {
|
|
6
6
|
const BINARY_TYPES = [
|
|
@@ -16999,5 +16999,5 @@ if (await isDevToolsReachable()) {
|
|
|
16999
16999
|
//#endregion
|
|
17000
17000
|
export {};
|
|
17001
17001
|
|
|
17002
|
-
//# sourceMappingURL=devtools-
|
|
17003
|
-
//# debugId=
|
|
17002
|
+
//# sourceMappingURL=devtools-D8NTVj81.js.map
|
|
17003
|
+
//# debugId=9bd200c1-4571-57fb-8b9f-f59503d08d1d
|
|
@@ -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]="
|
|
3
|
-
import { d as isJsonModeActive, m as writeJsonErrorReport } from "./record-metric-
|
|
4
|
-
import { s as shutdownTelemetry } from "./unref-stdin-
|
|
5
|
-
import { i as flushSentry, n as buildFooterLinkLines, r as activeScanAbortRegistry, t as buildSectionDivider } from "./build-section-divider-
|
|
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]="128c0b08-c070-5a15-99dd-4d7cef422d88")}catch(e){}}();
|
|
3
|
+
import { d as isJsonModeActive, m as writeJsonErrorReport } from "./record-metric-DFQYh2Mf.js";
|
|
4
|
+
import { s as shutdownTelemetry } from "./unref-stdin-C5xln9RW.js";
|
|
5
|
+
import { i as flushSentry, n as buildFooterLinkLines, r as activeScanAbortRegistry, t as buildSectionDivider } from "./build-section-divider-LBEprrSw.js";
|
|
6
6
|
//#region src/cli/utils/active-tui-renderer.ts
|
|
7
7
|
let activeTuiRenderer = null;
|
|
8
8
|
const registerActiveTuiRenderer = (renderer) => {
|
|
@@ -44,5 +44,5 @@ const exitGracefully = () => {
|
|
|
44
44
|
//#endregion
|
|
45
45
|
export { registerActiveTuiRenderer as n, exitGracefully as t };
|
|
46
46
|
|
|
47
|
-
//# sourceMappingURL=exit-gracefully-
|
|
48
|
-
//# debugId=
|
|
47
|
+
//# sourceMappingURL=exit-gracefully-Z8iBwlMI.js.map
|
|
48
|
+
//# debugId=128c0b08-c070-5a15-99dd-4d7cef422d88
|
package/dist/index.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { FrameworkToken } from "oxlint-plugin-react-doctor/core";
|
|
2
1
|
import fs from "node:fs";
|
|
2
|
+
import { FrameworkToken } from "oxlint-plugin-react-doctor/core";
|
|
3
3
|
|
|
4
4
|
//#region ../../node_modules/.pnpm/effect@4.0.0-beta.102/node_modules/effect/dist/Types.d.ts
|
|
5
5
|
/**
|
|
@@ -9636,10 +9636,9 @@ interface Diagnostic {
|
|
|
9636
9636
|
column: number;
|
|
9637
9637
|
/**
|
|
9638
9638
|
* UTF-8 byte offset of the diagnostic's primary span start, straight
|
|
9639
|
-
* from oxlint's label span. Optional because environment /
|
|
9640
|
-
* diagnostics carry no source span.
|
|
9641
|
-
* precise range
|
|
9642
|
-
* ignore it.
|
|
9639
|
+
* from oxlint's label span. Optional because environment / maintainability
|
|
9640
|
+
* diagnostics carry no source span. Consumers can use it to recover a
|
|
9641
|
+
* precise range or ignore it.
|
|
9643
9642
|
*/
|
|
9644
9643
|
offset?: number;
|
|
9645
9644
|
/** UTF-8 byte length of the primary span (pairs with `offset`). */
|
|
@@ -9697,8 +9696,8 @@ type BlockingLevel = "error" | "warning" | "none";
|
|
|
9697
9696
|
* CLI `--scope` flag, the GitHub Action `scope` input, and this config field
|
|
9698
9697
|
* all share. Ordered widest to narrowest:
|
|
9699
9698
|
*
|
|
9700
|
-
* - `"full"` — whole project, every issue (the default).
|
|
9701
|
-
*
|
|
9699
|
+
* - `"full"` — whole project, every issue (the default). Environment and
|
|
9700
|
+
* supply-chain checks run only at this scope.
|
|
9702
9701
|
* - `"files"` — only the files changed vs the base, with ALL issues in them
|
|
9703
9702
|
* (no compare-to-main). What `--staged` and an uncommitted `--diff` do today.
|
|
9704
9703
|
* - `"changed"` — only issues the change INTRODUCED vs the base (the baseline
|
|
@@ -9836,8 +9835,7 @@ interface SupplyChainConfig {
|
|
|
9836
9835
|
/**
|
|
9837
9836
|
* Whether to run the Socket supply-chain score check. Default: `true`.
|
|
9838
9837
|
* Set to `false` to opt out — the check performs one network request per
|
|
9839
|
-
* direct dependency. It is always skipped in `--diff` / `--staged` mode
|
|
9840
|
-
* and in editor scans regardless of this setting.
|
|
9838
|
+
* direct dependency. It is always skipped in `--diff` / `--staged` mode.
|
|
9841
9839
|
*/
|
|
9842
9840
|
enabled?: boolean;
|
|
9843
9841
|
/**
|
|
@@ -9871,11 +9869,8 @@ interface ReactDoctorConfig {
|
|
|
9871
9869
|
*/
|
|
9872
9870
|
supplyChain?: SupplyChainConfig;
|
|
9873
9871
|
/**
|
|
9874
|
-
*
|
|
9875
|
-
*
|
|
9876
|
-
* circular imports under the "Maintainability" category. Default: `true`.
|
|
9877
|
-
* Always skipped in `--diff` / `--staged` modes because reachability
|
|
9878
|
-
* is a whole-project property.
|
|
9872
|
+
* Compatibility switch for React maintainability analysis. Default: `true`.
|
|
9873
|
+
* @deprecated React maintainability checks are part of React Doctor.
|
|
9879
9874
|
*/
|
|
9880
9875
|
deadCode?: boolean;
|
|
9881
9876
|
verbose?: boolean;
|
|
@@ -10332,7 +10327,7 @@ interface ScoreResult {
|
|
|
10332
10327
|
//#region src/types/diagnose.d.ts
|
|
10333
10328
|
interface DiagnoseOptions {
|
|
10334
10329
|
lint?: boolean;
|
|
10335
|
-
/**
|
|
10330
|
+
/** @deprecated Compatibility alias for React maintainability analysis. */
|
|
10336
10331
|
deadCode?: boolean;
|
|
10337
10332
|
verbose?: boolean;
|
|
10338
10333
|
/** Restrict linting to supported JS/TS files and inline scripts in HTML files. */
|
|
@@ -10352,11 +10347,7 @@ interface DiagnoseOptions {
|
|
|
10352
10347
|
interface DiagnoseResult {
|
|
10353
10348
|
diagnostics: Diagnostic[];
|
|
10354
10349
|
score: ScoreResult | null;
|
|
10355
|
-
/**
|
|
10356
|
-
* Checks that did not run to completion (e.g. `"dead-code"` when the
|
|
10357
|
-
* `deslop-js` native binding crashed). Empty when everything ran.
|
|
10358
|
-
* Mirrors `InspectResult.skippedChecks`.
|
|
10359
|
-
*/
|
|
10350
|
+
/** Checks that did not run to completion. Mirrors `InspectResult.skippedChecks`. */
|
|
10360
10351
|
skippedChecks: string[];
|
|
10361
10352
|
/** See `InspectResult.skippedCheckReasons`. */
|
|
10362
10353
|
skippedCheckReasons?: Record<string, string>;
|
|
@@ -10380,7 +10371,7 @@ interface DiagnoseResult {
|
|
|
10380
10371
|
}
|
|
10381
10372
|
/**
|
|
10382
10373
|
* A single project to scan as part of a `diagnose({ projects })` batch.
|
|
10383
|
-
* Scan options (`
|
|
10374
|
+
* Scan options (`lint`, etc.) are flat on the entry and
|
|
10384
10375
|
* layer on top of the global defaults — omitted fields fall through.
|
|
10385
10376
|
*/
|
|
10386
10377
|
interface ProjectDefinition extends DiagnoseOptions {
|
|
@@ -10497,23 +10488,11 @@ interface InspectResult {
|
|
|
10497
10488
|
*/
|
|
10498
10489
|
lintSidecarReplayedFileCount?: number | null;
|
|
10499
10490
|
lintSidecarTotalFileCount?: number | null;
|
|
10500
|
-
/**
|
|
10501
|
-
* Dead-code result cache outcome: `true` when the pass replayed a cached
|
|
10502
|
-
* result (the analysis never ran), `false` on a fresh analysis. Absent when
|
|
10503
|
-
* the pass never consulted the cache — dead-code skipped, the cache
|
|
10504
|
-
* disabled, or a whole-repo cache replay where no analysis ran. The CLI
|
|
10505
|
-
* projects it onto the Sentry wide event as `deadCode.cacheHit`.
|
|
10506
|
-
*/
|
|
10491
|
+
/** @deprecated Retained for report compatibility. */
|
|
10507
10492
|
deadCodeCacheHit?: boolean | null;
|
|
10508
|
-
/**
|
|
10509
|
-
* deslop's incremental summary-cache outcome for the dead-code analysis:
|
|
10510
|
-
* collected files served from cached parse summaries vs freshly parsed.
|
|
10511
|
-
* Both absent whenever no analysis consulted the incremental store — a
|
|
10512
|
-
* whole-result cache hit, the cache disabled, or dead-code skipped. The CLI
|
|
10513
|
-
* projects them onto the Sentry wide event as `deadCode.summaryCacheHits` /
|
|
10514
|
-
* `deadCode.summaryCacheMisses`.
|
|
10515
|
-
*/
|
|
10493
|
+
/** @deprecated Retained for report compatibility. */
|
|
10516
10494
|
deadCodeSummaryCacheHits?: number | null;
|
|
10495
|
+
/** @deprecated Retained for report compatibility. */
|
|
10517
10496
|
deadCodeSummaryCacheMisses?: number | null;
|
|
10518
10497
|
/**
|
|
10519
10498
|
* Present only for a baseline run (`InspectOptions.baseline` set). The
|
|
@@ -10531,7 +10510,7 @@ interface InspectResult {
|
|
|
10531
10510
|
* Options accepted by `inspect()`. Mixes two concern groups; ordered
|
|
10532
10511
|
* here in the source to make the split visible to future readers:
|
|
10533
10512
|
*
|
|
10534
|
-
* - **Engine inputs** (`lint`, `
|
|
10513
|
+
* - **Engine inputs** (`lint`, `includePaths`,
|
|
10535
10514
|
* `configOverride`, `respectInlineDisables`) — flow into
|
|
10536
10515
|
* `runInspect`'s `InspectInput` and shape what the engine
|
|
10537
10516
|
* actually does.
|
|
@@ -10738,8 +10717,8 @@ type JsonReport = JsonReportV1$1 | JsonReportV2$1 | JsonReportV3$1; //#endregion
|
|
|
10738
10717
|
* Distinguishes the two situations that both surface as "no project here", so
|
|
10739
10718
|
* the rendered message matches reality:
|
|
10740
10719
|
*
|
|
10741
|
-
* - `no-project` (default): the path exists but has no
|
|
10742
|
-
* `package.json` at the root and no discoverable nested React subproject.
|
|
10720
|
+
* - `no-project` (default): the path exists but has no supported project — no
|
|
10721
|
+
* `package.json` at the root and no discoverable nested React or Three.js subproject.
|
|
10743
10722
|
* - `missing-path`: the resolved scan target does not exist on disk at all
|
|
10744
10723
|
* (a typo, a stale temp path, a monorepo subdir that isn't present). The
|
|
10745
10724
|
* generic "expected a package.json" guidance is misleading here, so point
|
|
@@ -10844,10 +10823,10 @@ declare const ProjectDiscoveryFailed_base: Class<ProjectDiscoveryFailed, TaggedS
|
|
|
10844
10823
|
declare class ProjectDiscoveryFailed extends ProjectDiscoveryFailed_base {
|
|
10845
10824
|
get message(): string;
|
|
10846
10825
|
}
|
|
10847
|
-
declare const
|
|
10826
|
+
declare const MaintainabilityAnalysisFailed_base: Class<MaintainabilityAnalysisFailed, TaggedStruct<"MaintainabilityAnalysisFailed", {
|
|
10848
10827
|
readonly cause: Unknown;
|
|
10849
10828
|
}>, YieldableError>;
|
|
10850
|
-
declare class
|
|
10829
|
+
declare class MaintainabilityAnalysisFailed extends MaintainabilityAnalysisFailed_base {
|
|
10851
10830
|
get message(): string;
|
|
10852
10831
|
}
|
|
10853
10832
|
declare const GitInvocationFailed_base: Class<GitInvocationFailed, TaggedStruct<"GitInvocationFailed", {
|
|
@@ -10871,7 +10850,7 @@ declare class GitBaseBranchInvalid extends GitBaseBranchInvalid_base {
|
|
|
10871
10850
|
get message(): string;
|
|
10872
10851
|
}
|
|
10873
10852
|
declare const ReactDoctorError_base: Class<ReactDoctorError, TaggedStruct<"ReactDoctorError", {
|
|
10874
|
-
readonly reason: Union<readonly [typeof OxlintUnavailable, typeof OxlintBatchExceeded, typeof ScanDeadlineExceeded, typeof OxlintSpawnFailed, typeof OxlintOutputUnparseable, typeof ConfigParseFailed, typeof ProjectNotFound, typeof NoReactDependency, typeof AmbiguousProject, typeof ProjectDiscoveryFailed, typeof
|
|
10853
|
+
readonly reason: Union<readonly [typeof OxlintUnavailable, typeof OxlintBatchExceeded, typeof ScanDeadlineExceeded, typeof OxlintSpawnFailed, typeof OxlintOutputUnparseable, typeof ConfigParseFailed, typeof ProjectNotFound, typeof NoReactDependency, typeof AmbiguousProject, typeof ProjectDiscoveryFailed, typeof MaintainabilityAnalysisFailed, typeof GitInvocationFailed, typeof GitBaseBranchMissing, typeof GitBaseBranchInvalid]>;
|
|
10875
10854
|
}>, YieldableError>;
|
|
10876
10855
|
declare class ReactDoctorError extends ReactDoctorError_base {
|
|
10877
10856
|
get message(): string;
|