react-doctor 0.9.15-dev.3242a81 → 0.9.15-dev.8ed70df
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +25 -0
- package/dist/{build-section-divider-B-Bbahk_.js → build-section-divider-BSEx7sis.js} +4 -4
- package/dist/{ci-D_GhoEkY.js → ci-D4R9kdc2.js} +12 -12
- package/dist/cli.js +27 -26
- package/dist/constants-DJ3RtEMu.js +2 -2
- package/dist/{design-B8EMFKlN.js → design-T850ewH9.js} +4 -4
- package/dist/{exit-gracefully-BTVhlyoR.js → exit-gracefully-DkeS8hHp.js} +6 -6
- package/dist/{handle-error-JId9eFQ_.js → handle-error-RLjKeLDA.js} +5 -5
- package/dist/index.d.ts +13 -8
- package/dist/index.js +29 -6
- package/dist/{inspect-ClJlUcd6.js → inspect-DuT3v6KA.js} +88 -29
- package/dist/{install-bAES9fz_.js → install-BeahaWiL.js} +9 -9
- package/dist/{install-doctor-script-ByhqWGm4.js → install-doctor-script-B84ViKF6.js} +4 -4
- package/dist/{install-github-workflow-CMVYSVGv.js → install-github-workflow-BunRUQaF.js} +4 -4
- package/dist/{install-react-doctor-D7cj-Foc.js → install-react-doctor-C5W2i12g.js} +8 -8
- package/dist/{jsx-runtime-BSGXwXUT.js → jsx-runtime-DBWv4kid.js} +5 -5
- package/dist/{print-branded-header-ToEzN9wS.js → print-branded-header-BNKQT5ZQ.js} +4 -4
- package/dist/{prompt-runtime-scan-url-B-N-pmnA.js → prompt-runtime-scan-url-Bly4Vulj.js} +5 -5
- package/dist/{read-object-file-BwnK2YRI.js → read-object-file-B-BZ7uYW.js} +4 -4
- package/dist/{record-metric-DUV0U_Gf.js → record-metric-Do1JAZVB.js} +51 -23
- package/dist/{report-error-Df6kpdn5.js → report-error-DL7M0AGh.js} +5 -5
- package/dist/{report-workflow-result-CDjrtaab.js → report-workflow-result-BSLZylKS.js} +5 -5
- package/dist/{resolve-scope-BQLYQkzz.js → resolve-scope-_R2u_rWR.js} +6 -6
- package/dist/{rules-BvI82y2z.js → rules-DD_Jp7ZA.js} +6 -6
- package/dist/{run-scan-app-DUzpuqlt.js → run-scan-app-B2_HYqlM.js} +10 -10
- package/dist/{runtime-scan-CxErJEVf.js → runtime-scan-HiSmF8di.js} +9 -9
- package/dist/{sanitize-runtime-url-BjEqBgwG.js → sanitize-runtime-url-c0or2L2V.js} +4 -4
- package/dist/{scan-Cuyc4IC8.js → scan-B4oVxvqa.js} +9 -9
- package/dist/{should-fail-scan-gate-Du7mOvEl.js → should-fail-scan-gate-Bjr43-87.js} +75 -62
- package/dist/{should-skip-prompts-DaKPFC6p.js → should-skip-prompts-DKwyzEkM.js} +4 -4
- package/dist/{should-use-tui-DZ2iTCn1.js → should-use-tui-DO7NdqR8.js} +4 -4
- package/dist/skills/react-doctor/SKILL.md +4 -0
- package/dist/{telemetry-runtime-o4N789Mp.js → telemetry-runtime-D3teullu.js} +6 -6
- package/dist/{version-CtgKUicn.js → version-Kj44qNuh.js} +4 -4
- package/dist/{why-BDgcBrL3.js → why-BV74fXYk.js} +4 -4
- package/dist/{with-run-span-Bgitvg5D.js → with-run-span-y8D-ZUGk.js} +5 -5
- package/package.json +2 -2
|
@@ -1,18 +1,18 @@
|
|
|
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]="
|
|
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]="93c39db1-e810-5852-8880-ad0dee772a41")}catch(e){}}();
|
|
3
3
|
import { E as TRACKED_FILE_FLAGS_GIT_ARGUMENTS, Ft as HTML_FILE_PATTERN, Ht as MAINTAINABILITY_SOURCE_FILE_PATTERN, Jt as OXLINT_NODE_REQUIREMENT, K as resolveReactDoctorCacheDir, Nt as GIT_SHOW_MAX_BUFFER_BYTES, Rt as JSX_FILE_PATTERN, St as ENTERPRISE_CONTACT_URL, Wt as MILLISECONDS_PER_SECOND, _t as DIAGNOSTIC_CATEGORY_BUCKETS, c as HEAD_SHA_GIT_ARGUMENTS, dn as SHARE_BASE_URL, h as REPOSITORY_ROOT_GIT_ARGUMENTS, i as BASELINE_FILES_TEMP_DIR_PREFIX, k as WORKTREE_STATUS_GIT_ARGUMENTS, q as resolveScanConcurrency, u as METRIC, ut as CI_URL, v as SCAN_RESULT_CACHE_FILENAME } from "./constants-DJ3RtEMu.js";
|
|
4
4
|
import { t as isCacheGloballyDisabled } from "./is-cache-globally-disabled-De19063F.js";
|
|
5
|
-
import { $ as
|
|
6
|
-
import { t as getTelemetryContext } from "./telemetry-runtime-
|
|
5
|
+
import { $ as buildRuleSeverityControls, A as Files, At as isPathInsideDirectory, B as PerFileLintCacheEnabled, Bn as isFile, Bt as mapWithConcurrency, C as ACTION_INPUT_ENVIRONMENT_VARIABLES, Cn as try_, E as isCiOrCodingAgentEnvironment, En as mergeAll, Et as hasPublishedFixRecipe, F as Linter, Fn as yieldToEventLoop, G as SidecarLintCacheEnabled, Gt as resolveLintBatchOrdering, H as Project, Ht as mergeReactDoctorConfigs, I as Maintainability, It as listSourceFiles, Jt as runInspect, Kt as resolveScanTarget, L as NodeResolver, Lt as listSourceFilesCooperative, M as InvocationCaches, Mt as isReactDoctorError, Nn as ParentSpan, O as Config, On as succeed, Ot as hashFileContents, P as LintPartialFailures, Pn as isMonorepoRoot, Pt as isScanComplete, Q as buildRuleDocsUrl, Qt as summarizeDiagnostics, R as OxlintConcurrency, Rn as isDirectory, Rt as listWorkspacePackages, Sn as sync, St as getDiagnosticRuleIdentity, T as isCiEnvironment, Tt as groupBy, U as Reporter, Ut as remainingDeadlineBudgetMs, V as Progress, Vt as materializeSourceTree, W as Score, Wt as resolveGithubActionsScoreMetadata, X as atomicWriteJson, Zt as shouldUseMaintainabilityLayer, _ as VERSION, _n as provide, _t as fingerprintDiagnosticEvidence, at as collectSourceFilesByDirectory, b as isNonInteractiveEnvironment, bn as runPromise, cn as Diagnostic, ct as countOptInProjectRuleSelections, d as isJsonModeActive, et as buildSkippedChecks, fn as gen, ft as discoverSupportedSubprojects, gn as promise, hn as orElseSucceed, ht as filterSourceFiles, in as error, j as Git, k as DIAGNOSTIC_DELTA_IDENTITY, kt as highlighter, l as getRunId, lt as createInvocationCaches, mn as map, mt as filterPathsOutsideDirectories, n as recordDistribution, nn as warmOxlintWorkerPool, nt as canonicalizeUserRuleKey, on as log, ot as computeConfigFingerprint, pt as filterDiagnosticsForSurface, q as SupplyChain, qt as restoreLegacyThrow, r as toSpanAttributes, rn as Console, rt as classifyFileContext, sn as warn, st as computeDiagnosticDelta, t as recordCount, tn as warmDuplicateJsxWorker, tt as calculateScore, un as decodeUnknownSync, ut as createOxlintSpawnSlots, v as makeNoopConsole, vn as provideContext, w as detectRunnerOs, xn as runSync, y as CliInputError, yn as provideService, z as OxlintSpawnSlots } from "./record-metric-Do1JAZVB.js";
|
|
6
|
+
import { t as getTelemetryContext } from "./telemetry-runtime-D3teullu.js";
|
|
7
7
|
import { t as activeScanAbortRegistry } from "./active-scan-abort-registry-CCTgal0O.js";
|
|
8
|
-
import { n as buildFooterLinkLines, t as buildSectionDivider } from "./build-section-divider-
|
|
8
|
+
import { n as buildFooterLinkLines, t as buildSectionDivider } from "./build-section-divider-BSEx7sis.js";
|
|
9
9
|
import { t as toForwardSlashes } from "./path-format-By20mo8A.js";
|
|
10
10
|
import { t as typescriptBinding } from "./_react-doctor_require-typescript-DXQDYeWK.js";
|
|
11
|
-
import { A as runGitAsync, C as isRecord, N as cliLogger, S as getPackageJsonPath, a as installReactDoctorScriptStep, c as spinner, n as findNearestPackageDirectory, o as isSpinnerSilent, s as setSpinnerSilent } from "./install-doctor-script-
|
|
12
|
-
import { d as detectDefaultBranch, l as prompts, r as installReactDoctorWorkflow, u as isCommandAvailable } from "./install-github-workflow-
|
|
13
|
-
import { a as isValidBlockingLevel, c as openWorkflowPullRequest, l as stageWorkflowFile, o as pickBlockingLevel } from "./resolve-scope-
|
|
14
|
-
import { n as resetSentryRunState, r as withRunSpan, t as recordSentryProjectContext } from "./with-run-span-
|
|
15
|
-
import { h as detectAvailableAgents, t as reportWorkflowResult } from "./report-workflow-result-
|
|
11
|
+
import { A as runGitAsync, C as isRecord, N as cliLogger, S as getPackageJsonPath, a as installReactDoctorScriptStep, c as spinner, n as findNearestPackageDirectory, o as isSpinnerSilent, s as setSpinnerSilent } from "./install-doctor-script-B84ViKF6.js";
|
|
12
|
+
import { d as detectDefaultBranch, l as prompts, r as installReactDoctorWorkflow, u as isCommandAvailable } from "./install-github-workflow-BunRUQaF.js";
|
|
13
|
+
import { a as isValidBlockingLevel, c as openWorkflowPullRequest, l as stageWorkflowFile, o as pickBlockingLevel } from "./resolve-scope-_R2u_rWR.js";
|
|
14
|
+
import { n as resetSentryRunState, r as withRunSpan, t as recordSentryProjectContext } from "./with-run-span-y8D-ZUGk.js";
|
|
15
|
+
import { h as detectAvailableAgents, t as reportWorkflowResult } from "./report-workflow-result-BSLZylKS.js";
|
|
16
16
|
import { createRequire } from "node:module";
|
|
17
17
|
import * as fs$2 from "node:fs";
|
|
18
18
|
import fs, { mkdtempSync, rmSync } from "node:fs";
|
|
@@ -511,6 +511,7 @@ const buildOutcomeAttributes = (input) => {
|
|
|
511
511
|
fixed: result.baselineDelta.fixedCount,
|
|
512
512
|
baseTotal: result.baselineDelta.baseTotalCount,
|
|
513
513
|
crossFileMatches: result.baselineDelta.crossFileMatchCount,
|
|
514
|
+
source: result.baselineDelta.source ?? "base",
|
|
514
515
|
degraded: false
|
|
515
516
|
}));
|
|
516
517
|
else if (input.gateExempt) attributes["baseline.degraded"] = true;
|
|
@@ -721,6 +722,7 @@ const resolveInspectOptions = (inputOptions, userConfig) => {
|
|
|
721
722
|
concurrentScan: inputOptions.concurrentScan ?? false,
|
|
722
723
|
concurrency: inputOptions.concurrency,
|
|
723
724
|
maxDurationMs: inputOptions.maxDurationMs ?? null,
|
|
725
|
+
baselineReport: inputOptions.baselineReport ?? null,
|
|
724
726
|
baseline: inputOptions.baseline ?? null,
|
|
725
727
|
changedLineRanges: inputOptions.changedLineRanges ?? null,
|
|
726
728
|
supplyChainManifestChanged: inputOptions.supplyChainManifestChanged ?? false,
|
|
@@ -1089,7 +1091,7 @@ const resolveWorkerTelemetry = (resolvedWorkerCount, pinnedConcurrency) => {
|
|
|
1089
1091
|
//#region src/cli/utils/render-and-record-scan.ts
|
|
1090
1092
|
const silentConsole$2 = makeNoopConsole();
|
|
1091
1093
|
const deriveScope = (options) => {
|
|
1092
|
-
if (options.baseline) return "changed";
|
|
1094
|
+
if (options.baseline || options.baselineReport) return "changed";
|
|
1093
1095
|
if (options.changedLineRanges !== null) return "lines";
|
|
1094
1096
|
return options.includePaths.length > 0 ? "files" : "full";
|
|
1095
1097
|
};
|
|
@@ -1516,7 +1518,11 @@ const createDiagnosticEvidenceReader = (rootDirectory, options = {}) => {
|
|
|
1516
1518
|
const sourceLines = record.sourceText.split(/\r?\n/);
|
|
1517
1519
|
const startLineIndex = Math.max(0, diagnostic.line - 1);
|
|
1518
1520
|
const endLineIndex = Math.max(startLineIndex, (diagnostic.endLine ?? diagnostic.line) - 1);
|
|
1519
|
-
const evidence = sourceLines.slice(startLineIndex, endLineIndex + 1).
|
|
1521
|
+
const evidence = diagnostic.offset !== void 0 && diagnostic.length !== void 0 && diagnostic.length > 0 ? Buffer.from(record.sourceText).subarray(diagnostic.offset, diagnostic.offset + diagnostic.length).toString("utf-8") : sourceLines.slice(startLineIndex, endLineIndex + 1).map((line, index, lines) => {
|
|
1522
|
+
const start = index === 0 ? Math.max(0, diagnostic.column - 1) : 0;
|
|
1523
|
+
const end = index === lines.length - 1 && diagnostic.endColumn !== void 0 ? diagnostic.endColumn - 1 : void 0;
|
|
1524
|
+
return line.slice(start, end);
|
|
1525
|
+
}).join("\n");
|
|
1520
1526
|
if (!options.resolveForwardedHandlers) return evidence;
|
|
1521
1527
|
const propNames = new Set(evidence.match(/\bon[A-Z]\w*\b/g) ?? []);
|
|
1522
1528
|
if (propNames.size === 0) return evidence;
|
|
@@ -1526,23 +1532,16 @@ const createDiagnosticEvidenceReader = (rootDirectory, options = {}) => {
|
|
|
1526
1532
|
};
|
|
1527
1533
|
};
|
|
1528
1534
|
//#endregion
|
|
1529
|
-
//#region src/cli/utils/
|
|
1530
|
-
|
|
1531
|
-
|
|
1532
|
-
|
|
1533
|
-
|
|
1534
|
-
|
|
1535
|
-
|
|
1536
|
-
|
|
1537
|
-
|
|
1538
|
-
|
|
1539
|
-
const fileLinesCache = /* @__PURE__ */ new Map();
|
|
1540
|
-
return (filePath, line) => {
|
|
1541
|
-
if (!fileLinesCache.has(filePath)) fileLinesCache.set(filePath, readFileLines(filePath));
|
|
1542
|
-
const lines = fileLinesCache.get(filePath) ?? null;
|
|
1543
|
-
if (lines === null || line < 1 || line > lines.length) return null;
|
|
1544
|
-
return lines[line - 1] ?? null;
|
|
1545
|
-
};
|
|
1535
|
+
//#region src/cli/utils/with-diagnostic-fingerprints.ts
|
|
1536
|
+
const withDiagnosticFingerprints = (directory, diagnostics) => {
|
|
1537
|
+
const readEvidence = createDiagnosticEvidenceReader(directory);
|
|
1538
|
+
return diagnostics.map((diagnostic) => {
|
|
1539
|
+
const explicitIdentity = Reflect.get(diagnostic, DIAGNOSTIC_DELTA_IDENTITY);
|
|
1540
|
+
return {
|
|
1541
|
+
...diagnostic,
|
|
1542
|
+
fingerprint: typeof explicitIdentity === "string" ? `identity:${fingerprintDiagnosticEvidence(explicitIdentity)}` : fingerprintDiagnosticEvidence(readEvidence(diagnostic) ?? "")
|
|
1543
|
+
};
|
|
1544
|
+
});
|
|
1546
1545
|
};
|
|
1547
1546
|
//#endregion
|
|
1548
1547
|
//#region src/cli/utils/is-materializable-git-source.ts
|
|
@@ -1550,16 +1549,6 @@ const GIT_LFS_POINTER_HEADER = "version https://git-lfs.github.com/spec/v1";
|
|
|
1550
1549
|
const isMaterializableGitSource = (content) => !content.includes("\0") && !content.startsWith(GIT_LFS_POINTER_HEADER);
|
|
1551
1550
|
//#endregion
|
|
1552
1551
|
//#region src/cli/utils/materialize-baseline-files.ts
|
|
1553
|
-
/**
|
|
1554
|
-
* Materializes the base side of the `ref` → worktree diff into
|
|
1555
|
-
* `tempDirectory`, mirroring the project layout plus head's config files so
|
|
1556
|
-
* both sides lint under the same rules. Git rename heuristics are disabled by
|
|
1557
|
-
* the diff planner, so an old path is retained as a base deletion while its
|
|
1558
|
-
* new path is a head addition. Missing head-only additions are expected, and a
|
|
1559
|
-
* base-only deletion that cannot be read has nothing at head to compare
|
|
1560
|
-
* against; only a missing path that the plan says exists on both sides makes
|
|
1561
|
-
* `isComplete` false.
|
|
1562
|
-
*/
|
|
1563
1552
|
const materializeBaselineFiles = (input) => runPromise(gen(function* () {
|
|
1564
1553
|
const git = yield* Git;
|
|
1565
1554
|
const diffPlan = yield* git.baselineDiffPlan({
|
|
@@ -1586,9 +1575,10 @@ const materializeBaselineFiles = (input) => runPromise(gen(function* () {
|
|
|
1586
1575
|
const headFileSet = new Set(headFiles);
|
|
1587
1576
|
return {
|
|
1588
1577
|
...tree,
|
|
1578
|
+
renamedFiles: diffPlan?.renamedFiles,
|
|
1589
1579
|
baseFiles,
|
|
1590
1580
|
headFiles,
|
|
1591
|
-
isComplete: baseFiles.every((filePath) => materializedFiles.has(filePath) || !headFileSet.has(filePath)),
|
|
1581
|
+
isComplete: baseFiles.every((filePath) => materializedFiles.has(filePath) || !headFileSet.has(diffPlan?.renamedFiles?.[filePath] ?? filePath)),
|
|
1592
1582
|
untrackedFiles
|
|
1593
1583
|
};
|
|
1594
1584
|
}).pipe(provide(Git.layerNode)));
|
|
@@ -1613,7 +1603,7 @@ const resolveMergeBaseRef = async (directory, ref) => {
|
|
|
1613
1603
|
//#region src/cli/utils/has-unlinted-surviving-base-file.ts
|
|
1614
1604
|
const hasUnlintedSurvivingBaseFile = (input) => {
|
|
1615
1605
|
const analyzedBaseFiles = new Set(input.analyzedBaseFiles.map(toForwardSlashes));
|
|
1616
|
-
return filterSourceFiles(input.baseLintPaths.map(toForwardSlashes)).some((filePath) => input.headFiles.has(filePath) && !analyzedBaseFiles.has(filePath));
|
|
1606
|
+
return filterSourceFiles(input.baseLintPaths.map(toForwardSlashes)).some((filePath) => input.headFiles.has(input.renamedFiles?.[filePath] ?? filePath) && !analyzedBaseFiles.has(filePath));
|
|
1617
1607
|
};
|
|
1618
1608
|
//#endregion
|
|
1619
1609
|
//#region src/cli/utils/run-baseline-comparison.ts
|
|
@@ -1745,7 +1735,8 @@ const runBaselineComparison = async (input) => {
|
|
|
1745
1735
|
if (countIncompleteLintFiles(baseOutput.lintPartialFailures) > 0 && hasUnlintedSurvivingBaseFile({
|
|
1746
1736
|
baseLintPaths: materializedLintPaths,
|
|
1747
1737
|
headFiles: expectedHeadFiles,
|
|
1748
|
-
analyzedBaseFiles: baseOutput.analyzedFiles
|
|
1738
|
+
analyzedBaseFiles: baseOutput.analyzedFiles,
|
|
1739
|
+
renamedFiles: snapshot.renamedFiles
|
|
1749
1740
|
})) return null;
|
|
1750
1741
|
const hasUnscannedUntrackedSourceFiles = filterSourceFiles(filterPathsOutsideDirectories({
|
|
1751
1742
|
rootDirectory: input.directory,
|
|
@@ -1754,16 +1745,17 @@ const runBaselineComparison = async (input) => {
|
|
|
1754
1745
|
}).map(toForwardSlashes)).some((filePath) => !analyzedHeadFiles.has(filePath));
|
|
1755
1746
|
const diagnosticDelta = computeDiagnosticDelta({
|
|
1756
1747
|
headDiagnostics: input.headDiagnostics,
|
|
1757
|
-
|
|
1758
|
-
|
|
1759
|
-
|
|
1760
|
-
|
|
1761
|
-
readBaseEvidence: createDiagnosticEvidenceReader(snapshot.tempDirectory)
|
|
1748
|
+
renamedFiles: snapshot.renamedFiles ?? {},
|
|
1749
|
+
baseDiagnostics: withDiagnosticFingerprints(snapshot.tempDirectory, baseOutput.diagnostics),
|
|
1750
|
+
readHeadLine: () => null,
|
|
1751
|
+
readBaseLine: () => null
|
|
1762
1752
|
});
|
|
1763
1753
|
return {
|
|
1764
1754
|
displayDiagnostics: diagnosticDelta.newDiagnostics,
|
|
1765
1755
|
baselineDelta: {
|
|
1766
1756
|
baseRef: input.baselineRef,
|
|
1757
|
+
source: "base",
|
|
1758
|
+
matchedCount: baseOutput.diagnostics.length - diagnosticDelta.fixedCount,
|
|
1767
1759
|
fixedCount: hasUnscannedUntrackedSourceFiles ? 0 : diagnosticDelta.fixedCount,
|
|
1768
1760
|
baseTotalCount: baseOutput.diagnostics.length,
|
|
1769
1761
|
crossFileMatchCount: diagnosticDelta.crossFileMatchCount
|
|
@@ -2056,12 +2048,12 @@ const resolveCacheFilePath = (projectDirectory) => path.join(resolveReactDoctorC
|
|
|
2056
2048
|
const readPersistedCache = (cacheFilePath) => {
|
|
2057
2049
|
try {
|
|
2058
2050
|
const parsed = JSON.parse(fs.readFileSync(cacheFilePath, "utf8"));
|
|
2059
|
-
if (!isRecord(parsed) || parsed.version !==
|
|
2060
|
-
version:
|
|
2051
|
+
if (!isRecord(parsed) || parsed.version !== 8) return {
|
|
2052
|
+
version: 8,
|
|
2061
2053
|
entries: []
|
|
2062
2054
|
};
|
|
2063
2055
|
if (!Array.isArray(parsed.entries)) return {
|
|
2064
|
-
version:
|
|
2056
|
+
version: 8,
|
|
2065
2057
|
entries: []
|
|
2066
2058
|
};
|
|
2067
2059
|
const entries = [];
|
|
@@ -2076,12 +2068,12 @@ const readPersistedCache = (cacheFilePath) => {
|
|
|
2076
2068
|
});
|
|
2077
2069
|
}
|
|
2078
2070
|
return {
|
|
2079
|
-
version:
|
|
2071
|
+
version: 8,
|
|
2080
2072
|
entries
|
|
2081
2073
|
};
|
|
2082
2074
|
} catch {
|
|
2083
2075
|
return {
|
|
2084
|
-
version:
|
|
2076
|
+
version: 8,
|
|
2085
2077
|
entries: []
|
|
2086
2078
|
};
|
|
2087
2079
|
}
|
|
@@ -2125,14 +2117,14 @@ const resolveScanResultToolchainFingerprint = (nodeBinaryPath) => {
|
|
|
2125
2117
|
return fingerprints;
|
|
2126
2118
|
};
|
|
2127
2119
|
const buildScanResultCacheKey = async (input) => {
|
|
2128
|
-
if (isCacheGloballyDisabled()) return null;
|
|
2120
|
+
if (isCacheGloballyDisabled() || input.options.baselineReport) return null;
|
|
2129
2121
|
const isTrustworthyPromise = isGitIdentityTrustworthy(input.projectDirectory);
|
|
2130
2122
|
const repositoryIdentityPromise = resolveRepositoryCacheIdentity(input.projectDirectory, input.invocationState, runGitAsync(input.projectDirectory, REPOSITORY_ROOT_GIT_ARGUMENTS));
|
|
2131
2123
|
const [isTrustworthy, repositoryIdentity] = await Promise.all([isTrustworthyPromise, repositoryIdentityPromise]);
|
|
2132
2124
|
if (!isTrustworthy || repositoryIdentity === null) return null;
|
|
2133
2125
|
if (stringifyStableJson(input.userConfig) === null) return null;
|
|
2134
2126
|
const cacheKeyJson = stringifyStableJson({
|
|
2135
|
-
schemaVersion:
|
|
2127
|
+
schemaVersion: 8,
|
|
2136
2128
|
projectIdentity: resolveProjectIdentity(input.projectDirectory),
|
|
2137
2129
|
headSha: repositoryIdentity.headSha,
|
|
2138
2130
|
worktreeFingerprint: repositoryIdentity.worktreeFingerprint,
|
|
@@ -2180,7 +2172,7 @@ const createScanResultCache = (projectDirectory) => {
|
|
|
2180
2172
|
for (const entry of readPersistedCache(cacheFilePath).entries) mergedEntries.set(entry.key, entry);
|
|
2181
2173
|
for (const entry of entries.values()) mergedEntries.set(entry.key, entry);
|
|
2182
2174
|
atomicWriteJson(cacheFilePath, {
|
|
2183
|
-
version:
|
|
2175
|
+
version: 8,
|
|
2184
2176
|
entries: [...mergedEntries.values()].sort((firstEntry, secondEntry) => secondEntry.createdAtMs - firstEntry.createdAtMs).slice(0, 20)
|
|
2185
2177
|
});
|
|
2186
2178
|
};
|
|
@@ -2224,7 +2216,7 @@ const createScanResultCacheLifecycle = async (input) => {
|
|
|
2224
2216
|
recordSentryProjectContext(cachedPayload.project, input.rootSpan, { concurrentScan: input.options.concurrentScan });
|
|
2225
2217
|
recordCount(METRIC.projectDetected, 1);
|
|
2226
2218
|
const isDiffMode = input.options.includePaths.length > 0;
|
|
2227
|
-
const baselineDegraded = Boolean(input.options.baseline) && isDiffMode && cachedPayload.baselineDelta === void 0;
|
|
2219
|
+
const baselineDegraded = (Boolean(input.options.baselineReport) || Boolean(input.options.baseline) && isDiffMode) && cachedPayload.baselineDelta === void 0;
|
|
2228
2220
|
return renderAndRecordScan({
|
|
2229
2221
|
payload: cachedPayload,
|
|
2230
2222
|
options: input.options,
|
|
@@ -2395,16 +2387,36 @@ const runInspectWithRuntime = async (directory, options, userConfig, hasConfigOv
|
|
|
2395
2387
|
const lintFailureReason = lintBindingMissing ? `oxlint native binding not found for Node ${process.version}; expected one matching ${OXLINT_NODE_REQUIREMENT}` : output.lintFailureReason;
|
|
2396
2388
|
if (!options.scoreOnly && !options.uiLayers && !lintBindingMissing && output.didLintFail && lintFailureReason !== null) if (output.lintFailureReasonKind === "native-binding-missing") runSync(log(highlighter.gray(` Upgrade to Node ${OXLINT_NODE_REQUIREMENT} or run: npx -p oxlint@latest react-doctor@latest`)));
|
|
2397
2389
|
else runSync(error(highlighter.error(lintFailureReason)));
|
|
2398
|
-
|
|
2390
|
+
const headDiagnostics = withDiagnosticFingerprints(directory, output.diagnostics);
|
|
2391
|
+
let inspectDiagnostics = headDiagnostics;
|
|
2399
2392
|
let baselineDelta;
|
|
2400
|
-
if (options.
|
|
2393
|
+
if (options.baselineReport && !didLintFail && !output.didDeadCodeFail && countIncompleteLintFiles(output.lintPartialFailures) === 0) {
|
|
2394
|
+
const baseDiagnostics = options.baselineReport.diagnostics;
|
|
2395
|
+
const delta = computeDiagnosticDelta({
|
|
2396
|
+
headDiagnostics,
|
|
2397
|
+
baseDiagnostics,
|
|
2398
|
+
renamedFiles: options.baselineReport.renamedFiles ?? {},
|
|
2399
|
+
readHeadLine: () => null,
|
|
2400
|
+
readBaseLine: () => null
|
|
2401
|
+
});
|
|
2402
|
+
inspectDiagnostics = delta.newDiagnostics;
|
|
2403
|
+
baselineDelta = {
|
|
2404
|
+
baseRef: options.baselineReport.file,
|
|
2405
|
+
source: "baseline",
|
|
2406
|
+
baselineFile: options.baselineReport.file,
|
|
2407
|
+
matchedCount: baseDiagnostics.length - delta.fixedCount,
|
|
2408
|
+
baseTotalCount: baseDiagnostics.length,
|
|
2409
|
+
fixedCount: delta.fixedCount,
|
|
2410
|
+
crossFileMatchCount: delta.crossFileMatchCount
|
|
2411
|
+
};
|
|
2412
|
+
} else if (options.baseline && isDiffMode && !didLintFail && !output.didDeadCodeFail && countIncompleteLintFiles(output.lintPartialFailures) === 0) {
|
|
2401
2413
|
const comparison = await runBaselineComparison({
|
|
2402
2414
|
directory,
|
|
2403
2415
|
options,
|
|
2404
2416
|
userConfig,
|
|
2405
2417
|
configSourceDirectory,
|
|
2406
2418
|
headProjectInfo: output.project,
|
|
2407
|
-
headDiagnostics
|
|
2419
|
+
headDiagnostics,
|
|
2408
2420
|
resolvedNodeBinaryPath,
|
|
2409
2421
|
baselineRef: options.baseline.ref,
|
|
2410
2422
|
baseFiles: options.baseline.baseFiles,
|
|
@@ -2419,10 +2431,10 @@ const runInspectWithRuntime = async (directory, options, userConfig, hasConfigOv
|
|
|
2419
2431
|
}
|
|
2420
2432
|
} else if (options.changedLineRanges !== null && isDiffMode) inspectDiagnostics = filterDiagnosticsByChangedLines({
|
|
2421
2433
|
directory,
|
|
2422
|
-
diagnostics:
|
|
2434
|
+
diagnostics: headDiagnostics,
|
|
2423
2435
|
changedLineRanges: options.changedLineRanges
|
|
2424
2436
|
});
|
|
2425
|
-
const baselineDegraded = Boolean(options.baseline) && isDiffMode && baselineDelta === void 0;
|
|
2437
|
+
const baselineDegraded = (Boolean(options.baselineReport) || Boolean(options.baseline) && isDiffMode) && baselineDelta === void 0;
|
|
2426
2438
|
const score = didLintFail ? null : output.score;
|
|
2427
2439
|
const payload = {
|
|
2428
2440
|
diagnostics: inspectDiagnostics,
|
|
@@ -3046,6 +3058,7 @@ const validateFilePathSelectionFlags = (flags) => {
|
|
|
3046
3058
|
if (flags.base !== void 0) throw new CliInputError("Cannot combine file path arguments with --base. The selected files do not need a Git base.");
|
|
3047
3059
|
};
|
|
3048
3060
|
const validateModeFlags = (flags) => {
|
|
3061
|
+
if (flags.baseline && (flags.staged || flags.scope === "lines" || flags.scope === "files")) throw new CliInputError("--baseline requires a full or changed scan; it cannot be combined with --staged.");
|
|
3049
3062
|
if (usedScope(flags) && usedDiffAlias(flags)) throw new CliInputError("Cannot combine --scope and --diff; --diff is the deprecated alias.");
|
|
3050
3063
|
if (flags.staged && usedDiffAlias(flags)) throw new CliInputError("Cannot combine --staged and --diff; pick one mode.");
|
|
3051
3064
|
if (flags.staged && (flags.scope === "full" || flags.scope === "changed")) throw new CliInputError(`Cannot combine --staged with --scope ${flags.scope}; use --scope files or --scope lines, or drop --scope.`);
|
|
@@ -3071,5 +3084,5 @@ const shouldFailScanGate = (input) => {
|
|
|
3071
3084
|
//#endregion
|
|
3072
3085
|
export { createInvocationInspect as A, hasIncompleteScoreAnalysis as B, detectLaunchableAgents as C, buildHandoffPayload as D, launchCliAgent as E, formatSkippedCheckLabel as F, hasLintHardFailure as G, buildNoScoreMessage as H, formatElapsedTime as I, formatFixRecipeLine as J, buildRulePriorityMap as K, printFooter as L, resolveMergeBaseRef as M, printHeadlessReport as N, collectProjectSourceFiles as O, pluralize as P, printDiagnosticsDump as R, setUpGitHubActions as S, copyToClipboard as T, buildEmptyReportMessage as U, filterDiagnosticsByCategories as V, resolveInvocationOxlintConcurrency as W, formatLearnMoreLine as Y, retryMissingProjectScores as _, validateModeFlags as a, filterScansForSurface as b, partitionProjectScanOutcomes as c, buildCodeFrame as d, resolveProjectScan as f, resolveProjectRelativeDirectory as g, resolveProjectSourceFilePaths as h, validateIncludeUntrackedScope as i, inspect as j, deduplicateProjectScans as k, discoverWorkspacePackages as l, resolveProjectDiffIncludePaths as m, formatSkippedProjectsMessage as n, resolveExcludedProjectDirectories as o, resolveProjectChangedLineRanges as p, buildSortedRuleGroups as q, validateFilePathSelectionFlags as r, projectManifestChanged as s, shouldFailScanGate as t, selectProjects as u, resolveWorkspaceDeadCodeOwner as v, CLI_AGENT_BINARIES as w, countUniqueScannedFiles as x, resolveCliInspectOptions as y, formatDiagnosticSite as z };
|
|
3073
3086
|
|
|
3074
|
-
//# sourceMappingURL=should-fail-scan-gate-
|
|
3075
|
-
//# debugId=
|
|
3087
|
+
//# sourceMappingURL=should-fail-scan-gate-Bjr43-87.js.map
|
|
3088
|
+
//# debugId=93c39db1-e810-5852-8880-ad0dee772a41
|
|
@@ -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]="
|
|
3
|
-
import { b as isNonInteractiveEnvironment } from "./record-metric-
|
|
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]="a1c762f4-09d6-5163-a7af-b5f42cc7fd1f")}catch(e){}}();
|
|
3
|
+
import { b as isNonInteractiveEnvironment } from "./record-metric-Do1JAZVB.js";
|
|
4
4
|
//#region src/cli/utils/should-skip-prompts.ts
|
|
5
5
|
const shouldSkipPrompts = (input = {}) => Boolean(input.yes) || Boolean(input.json) || isNonInteractiveEnvironment() || !process.stdin.isTTY;
|
|
6
6
|
//#endregion
|
|
7
7
|
export { shouldSkipPrompts as t };
|
|
8
8
|
|
|
9
|
-
//# sourceMappingURL=should-skip-prompts-
|
|
10
|
-
//# debugId=
|
|
9
|
+
//# sourceMappingURL=should-skip-prompts-DKwyzEkM.js.map
|
|
10
|
+
//# debugId=a1c762f4-09d6-5163-a7af-b5f42cc7fd1f
|
|
@@ -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 { b as isNonInteractiveEnvironment } from "./record-metric-
|
|
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]="cd63faec-0fc8-54a4-a321-2f11048e332d")}catch(e){}}();
|
|
3
|
+
import { b as isNonInteractiveEnvironment } from "./record-metric-Do1JAZVB.js";
|
|
4
4
|
//#region src/cli/utils/resolve-tui-environment.ts
|
|
5
5
|
const resolveTuiEnvironment = (outputIsTty = process.stdout.isTTY === true) => ({
|
|
6
6
|
isNonInteractiveEnvironment: isNonInteractiveEnvironment(),
|
|
@@ -21,5 +21,5 @@ const shouldUseTui = (input) => {
|
|
|
21
21
|
//#endregion
|
|
22
22
|
export { shouldUseTui as n, resolveTuiEnvironment as r, isTuiEnvironmentSupported as t };
|
|
23
23
|
|
|
24
|
-
//# sourceMappingURL=should-use-tui-
|
|
25
|
-
//# debugId=
|
|
24
|
+
//# sourceMappingURL=should-use-tui-DO7NdqR8.js.map
|
|
25
|
+
//# debugId=cd63faec-0fc8-54a4-a321-2f11048e332d
|
|
@@ -60,3 +60,7 @@ npx react-doctor@latest --verbose --scope changed
|
|
|
60
60
|
| `--scope lines` | Only report issues on the changed lines |
|
|
61
61
|
| `--score` | Output only the numeric score |
|
|
62
62
|
| `design` | Run only the focused UI design diagnostics |
|
|
63
|
+
|
|
64
|
+
### Reuse a base scan
|
|
65
|
+
|
|
66
|
+
Save a complete `--json` scan, then pass `--baseline base-report.json` to report only new findings. This also works with `--scope changed`. Use the same version and rules for both scans. Matches use the rule, file path with Git renames, message, and normalized flagged source. Each base finding can match once; line and column shifts do not make it new. Older reports without fingerprints must be regenerated.
|
|
@@ -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]="
|
|
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]="e9138331-ba00-5487-b1f1-01bf85703d32")}catch(e){}}();
|
|
3
3
|
import { S as SENTRY_FLUSH_TIMEOUT_MS } from "./constants-DJ3RtEMu.js";
|
|
4
|
-
import { An as
|
|
4
|
+
import { An as makeUnsafe, Ft as layerObservability, In as messageFromUnknown, J as anonymizeInPlace, Mn as void_, Mt as isReactDoctorError, Tn as buildWithScope, Y as anonymizeText, Yt as scrubSensitivePaths, _ as VERSION, a as isEnvFlagEnabled, bn as runPromise, dn as make, i as isTelemetryEnabled, jt as isProjectDiscoveryError, kn as close, o as buildSentryScope, xn as runSync, y as CliInputError, zn as isErrnoException } from "./record-metric-Do1JAZVB.js";
|
|
5
5
|
//#region src/cli/utils/is-environment-error.ts
|
|
6
6
|
const ENVIRONMENT_ERROR_CODES = new Set([
|
|
7
7
|
"EACCES",
|
|
@@ -212,13 +212,13 @@ const isDevVersion = (version) => version === "0.0.0" || version.includes("-");
|
|
|
212
212
|
* uploads source-map artifacts under, so stack frames symbolicate. Honors the
|
|
213
213
|
* standard `SENTRY_RELEASE` override.
|
|
214
214
|
*/
|
|
215
|
-
const resolveSentryRelease = () => process.env.SENTRY_RELEASE || `react-doctor@0.9.15-dev.
|
|
215
|
+
const resolveSentryRelease = () => process.env.SENTRY_RELEASE || `react-doctor@0.9.15-dev.8ed70df`;
|
|
216
216
|
/**
|
|
217
217
|
* Deployment environment shown in Sentry's environment filter. Defaults to
|
|
218
218
|
* `production` for tagged releases and `development` for dev/unbuilt versions,
|
|
219
219
|
* overridable via the standard `SENTRY_ENVIRONMENT` env var.
|
|
220
220
|
*/
|
|
221
|
-
const resolveSentryEnvironment = () => process.env.SENTRY_ENVIRONMENT || (isDevVersion("0.9.15-dev.
|
|
221
|
+
const resolveSentryEnvironment = () => process.env.SENTRY_ENVIRONMENT || (isDevVersion("0.9.15-dev.8ed70df") ? "development" : "production");
|
|
222
222
|
//#endregion
|
|
223
223
|
//#region src/instrument.ts
|
|
224
224
|
let sentryPromise = null;
|
|
@@ -396,5 +396,5 @@ const shutdownTelemetry = async () => {
|
|
|
396
396
|
//#endregion
|
|
397
397
|
export { initializeSentry as a, isNpmCacheCorruptionError as c, getSentry as i, formatEnvironmentError as l, shutdownTelemetry as n, isExpectedUserError as o, flushSentry as r, formatNpmCacheCorruptionError as s, getTelemetryContext as t, isEnvironmentError as u };
|
|
398
398
|
|
|
399
|
-
//# sourceMappingURL=telemetry-runtime-
|
|
400
|
-
//# debugId=
|
|
399
|
+
//# sourceMappingURL=telemetry-runtime-D3teullu.js.map
|
|
400
|
+
//# debugId=e9138331-ba00-5487-b1f1-01bf85703d32
|
|
@@ -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]="
|
|
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]="ae2c8f8c-82a3-552f-8125-ff661638d6a2")}catch(e){}}();
|
|
3
3
|
import { u as METRIC } from "./constants-DJ3RtEMu.js";
|
|
4
|
-
import { _ as VERSION, t as recordCount } from "./record-metric-
|
|
4
|
+
import { _ as VERSION, t as recordCount } from "./record-metric-Do1JAZVB.js";
|
|
5
5
|
//#region src/cli/commands/version.ts
|
|
6
6
|
/**
|
|
7
7
|
* oclif-style version line. 12-factor CLI Apps (#3, "What version am I
|
|
@@ -18,5 +18,5 @@ const versionAction = () => {
|
|
|
18
18
|
//#endregion
|
|
19
19
|
export { versionAction };
|
|
20
20
|
|
|
21
|
-
//# sourceMappingURL=version-
|
|
22
|
-
//# debugId=
|
|
21
|
+
//# sourceMappingURL=version-Kj44qNuh.js.map
|
|
22
|
+
//# debugId=ae2c8f8c-82a3-552f-8125-ff661638d6a2
|
|
@@ -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]="558ccca9-960f-507d-abf5-64368cbf0899")}catch(e){}}();
|
|
3
|
+
import { t as inspectAction } from "./inspect-DuT3v6KA.js";
|
|
4
4
|
//#region src/cli/commands/why.ts
|
|
5
5
|
/**
|
|
6
6
|
* `why <file:line>` — explains why a rule fired (or why a suppression didn't
|
|
@@ -17,5 +17,5 @@ const whyAction = async (location, options) => {
|
|
|
17
17
|
//#endregion
|
|
18
18
|
export { whyAction };
|
|
19
19
|
|
|
20
|
-
//# sourceMappingURL=why-
|
|
21
|
-
//# debugId=
|
|
20
|
+
//# sourceMappingURL=why-BV74fXYk.js.map
|
|
21
|
+
//# debugId=558ccca9-960f-507d-abf5-64368cbf0899
|
|
@@ -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]="
|
|
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]="19cd77b1-a7ef-5d7f-8e2e-924be42e2271")}catch(e){}}();
|
|
3
3
|
import { p as NANOSECONDS_PER_MILLISECOND } from "./constants-DJ3RtEMu.js";
|
|
4
|
-
import {
|
|
5
|
-
import { t as getTelemetryContext } from "./telemetry-runtime-
|
|
4
|
+
import { Mn as void_, c as setSentryProjectInfo, jn as fail, o as buildSentryScope, pn as makeSpan, r as toSpanAttributes, s as buildSentryProjectContext, vn as provideContext, xn as runSync } from "./record-metric-Do1JAZVB.js";
|
|
5
|
+
import { t as getTelemetryContext } from "./telemetry-runtime-D3teullu.js";
|
|
6
6
|
import { i as setActiveRunTrace, r as recordRunTraceId } from "./active-run-trace-Dewycxda.js";
|
|
7
7
|
//#region src/cli/utils/with-run-span.ts
|
|
8
8
|
/**
|
|
@@ -107,5 +107,5 @@ const recordSentryProjectContext = (projectInfo, rootSpan, options = {}) => {
|
|
|
107
107
|
//#endregion
|
|
108
108
|
export { resetSentryRunState as n, withRunSpan as r, recordSentryProjectContext as t };
|
|
109
109
|
|
|
110
|
-
//# sourceMappingURL=with-run-span-
|
|
111
|
-
//# debugId=
|
|
110
|
+
//# sourceMappingURL=with-run-span-y8D-ZUGk.js.map
|
|
111
|
+
//# debugId=19cd77b1-a7ef-5d7f-8e2e-924be42e2271
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "react-doctor",
|
|
3
|
-
"version": "0.9.15-dev.
|
|
3
|
+
"version": "0.9.15-dev.8ed70df",
|
|
4
4
|
"description": "Your agent writes bad React. This catches it",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"accessibility",
|
|
@@ -70,7 +70,7 @@
|
|
|
70
70
|
"typescript": ">=5.0.4 <6",
|
|
71
71
|
"yaml": "^2.9.0",
|
|
72
72
|
"yoga-layout": "~3.2.1",
|
|
73
|
-
"oxlint-plugin-react-doctor": "0.9.15-dev.
|
|
73
|
+
"oxlint-plugin-react-doctor": "0.9.15-dev.8ed70df"
|
|
74
74
|
},
|
|
75
75
|
"devDependencies": {
|
|
76
76
|
"@types/babel__code-frame": "^7.27.0",
|