react-doctor 0.9.16-dev.675ad3c → 0.9.16-dev.ef1be22
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 +3 -3
- package/dist/{build-section-divider-GGc5L4y8.js → build-section-divider-B0MdVO19.js} +4 -4
- package/dist/{ci-goW_v2Ve.js → ci-SiOo5RzD.js} +12 -12
- package/dist/cli.js +23 -23
- package/dist/{design-B3pxgFA5.js → design-Dty0_JnG.js} +4 -4
- package/dist/{exit-gracefully-bRfDFHze.js → exit-gracefully-BqUKaxLV.js} +6 -6
- package/dist/{handle-error-Ck9Seh9W.js → handle-error-jBnelA-d.js} +5 -5
- package/dist/index.d.ts +4 -1
- package/dist/index.js +4 -2
- package/dist/{inspect-YXgF21wV.js → inspect-ZsJdCoBa.js} +28 -28
- package/dist/{install-0L3mbX-S.js → install-CvyHP8Sz.js} +9 -9
- package/dist/{install-doctor-script-CEUwgvU0.js → install-doctor-script-YdsysHJ8.js} +4 -4
- package/dist/{install-github-workflow-CycJz6SE.js → install-github-workflow-zVARf-aa.js} +4 -4
- package/dist/{install-react-doctor-DbcNvWTJ.js → install-react-doctor-Btq_1UZH.js} +8 -8
- package/dist/{jsx-runtime-DU2HJf59.js → jsx-runtime-BC_XnKBD.js} +5 -5
- package/dist/{print-branded-header-DRPpY-_W.js → print-branded-header-C9VkuYyR.js} +4 -4
- package/dist/{prompt-runtime-scan-url-C7lbI0Ot.js → prompt-runtime-scan-url-DBB5q70w.js} +5 -5
- package/dist/{read-object-file-UVbDgg-K.js → read-object-file-BMfspuEc.js} +4 -4
- package/dist/{record-metric-koJj2V6F.js → record-metric-COaAD5VE.js} +153 -79
- package/dist/{report-error-tFFDhXC-.js → report-error-CSpZGdCu.js} +5 -5
- package/dist/{report-workflow-result-Ci3V-6OF.js → report-workflow-result-D0Tev_E8.js} +5 -5
- package/dist/{resolve-scope-CAqqCs6E.js → resolve-scope-BDtWzgKS.js} +6 -6
- package/dist/{rules-BiT3n2J8.js → rules-3T0sQG3z.js} +6 -6
- package/dist/{run-scan-app-Ca8_Fmtd.js → run-scan-app-Ch62x8JM.js} +10 -10
- package/dist/{runtime-scan-EGp8irIP.js → runtime-scan-fl7GqT-4.js} +9 -9
- package/dist/{sanitize-runtime-url-CiT2FV1M.js → sanitize-runtime-url-CxW5-DlL.js} +4 -4
- package/dist/{scan-8mlB3o30.js → scan-ChjHrC7N.js} +9 -9
- package/dist/{should-fail-scan-gate-CKT7Y6lq.js → should-fail-scan-gate-0HPfGaTS.js} +102 -16
- package/dist/{should-skip-prompts-OHfi1uxr.js → should-skip-prompts-Db09UIvm.js} +4 -4
- package/dist/{should-use-tui-Dt7R7qSa.js → should-use-tui-CO0fiHNd.js} +4 -4
- package/dist/skills/react-doctor/SKILL.md +1 -1
- package/dist/{telemetry-runtime-DhCwCPKP.js → telemetry-runtime-CEcDvXxW.js} +6 -6
- package/dist/{version-C4YtgcDq.js → version-CP66Metq.js} +4 -4
- package/dist/{why-CBJBIHgr.js → why-CyIuJZHz.js} +4 -4
- package/dist/{with-run-span-DUsmYNga.js → with-run-span-aYNrYjQY.js} +5 -5
- package/package.json +4 -4
|
@@ -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]="ebe51e50-b37f-5c04-9e41-d92a0b09e483")}catch(e){}}();
|
|
3
|
+
import { At as highlighter, _ as VERSION, cn as log, mn as gen } from "./record-metric-COaAD5VE.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-
|
|
22
|
-
//# debugId=
|
|
21
|
+
//# sourceMappingURL=print-branded-header-C9VkuYyR.js.map
|
|
22
|
+
//# debugId=ebe51e50-b37f-5c04-9e41-d92a0b09e483
|
|
@@ -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]="644aca34-9ae2-5dbe-9c2f-757da6cbc050")}catch(e){}}();
|
|
3
3
|
import { t as unrefStdin } from "./unref-stdin-D-NZBFpg.js";
|
|
4
|
-
import { a as RUNTIME_SCAN_LOCAL_DEV_PORTS, t as sanitizeRuntimeUrl, u as RUNTIME_SCAN_MAX_STRING_LENGTH } from "./sanitize-runtime-url-
|
|
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-
|
|
4
|
+
import { a as RUNTIME_SCAN_LOCAL_DEV_PORTS, t as sanitizeRuntimeUrl, u as RUNTIME_SCAN_MAX_STRING_LENGTH } from "./sanitize-runtime-url-CxW5-DlL.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-BC_XnKBD.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-
|
|
240
|
-
//# debugId=
|
|
239
|
+
//# sourceMappingURL=prompt-runtime-scan-url-DBB5q70w.js.map
|
|
240
|
+
//# debugId=644aca34-9ae2-5dbe-9c2f-757da6cbc050
|
|
@@ -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]="936d0f94-ea3d-5763-bffc-1abccc17afcb")}catch(e){}}();
|
|
3
|
+
import { Un as isPlainObject } from "./record-metric-COaAD5VE.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-
|
|
24
|
-
//# debugId=
|
|
23
|
+
//# sourceMappingURL=read-object-file-BMfspuEc.js.map
|
|
24
|
+
//# debugId=936d0f94-ea3d-5763-bffc-1abccc17afcb
|
|
@@ -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]="
|
|
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]="aff777bc-568b-5ed2-907a-0c9741a672c9")}catch(e){}}();
|
|
3
3
|
import { i as __toESM, r as __require, t as __commonJSMin } from "./chunk-ChKA3wi6.js";
|
|
4
4
|
import { $ as warmReactCompilerDetection, $t as OXLINT_WORKER_JOB_END_MARKER, A as buildGitSourceListingRequest, An as TARGET_BLANK_BROWSER_SUPPORT, At as GITHUB_VIEWER_PERMISSION_TIMEOUT_MS, B as resolveGitCommand, Bt as MAINTAINABILITY_DUPLICATE_JSX_RULE, Cn as SUPPLY_CHAIN_CACHE_TTL_MS, Ct as ES_TARGET_YEAR_BY_NAME, Dn as SUPPLY_CHAIN_PLUGIN, Dt as GENERATED_BUNDLE_FILE_PATTERN, En as SUPPLY_CHAIN_OVERLAP_TIMEOUT_MS, Et as FILE_LINT_CACHE_MAX_FILE_COUNT, F as lowerChildProcessPriority, Fn as VERCEL_NEXTJS_SECURITY_RELEASE_URL, Ft as HTML_FILE_PATTERN, G as resolvePluginPath, Gt as MINIFIED_SNIFF_BYTES, H as resolveOxlintThreadCount, It as IGNORED_DIRECTORIES, J as resolveTsConfigRelativePath, K as resolveReactDoctorCacheDir, Kt as OCCURRENCE_MATCHED_CATEGORIES, Lt as JSX_DUPLICATION_SOURCE_FILE_PATTERN, M as buildOxlintWorkerSpawnSpec, Mn as TELEMETRY_SHUTDOWN_TIMEOUT_MS, Mt as GIT_LS_FILES_MAX_BUFFER_BYTES, Nn as TSCONFIG_FILENAMES, Nt as GIT_SHOW_MAX_BUFFER_BYTES, On as SUPPLY_CHAIN_RULE, Ot as GENERATED_SOURCE_DIRECTORY_PATTERN, P as killUnadoptedOxlintWorkers, Pn as TYPESCRIPT_DECLARATION_FILE_PATTERN, Pt as GIT_SOURCE_LISTING_ARGUMENTS, Q as takeReactCompilerDetection, Qt as OXLINT_SPLIT_TOTAL_BUDGET_MS, R as readSystemConcurrencyFacts, Sn as SUPPLY_CHAIN_CACHE_SUBDIR, Tn as SUPPLY_CHAIN_IGNORED_PACKAGES, Tt as FILE_LINT_CACHE_FILENAME, U as resolveOxlintToolchainVersions, Ut as MAX_GLOB_PATTERN_LENGTH_CHARS, V as resolveOxlintBinary, Vt as MAINTAINABILITY_PLUGIN, W as resolveOxlintWorkerRuntime, Wt as MILLISECONDS_PER_SECOND, X as spawnOxlintWorkerProcess, Xt as OXLINT_OUTPUT_MAX_BYTES, Y as setChildProcessRef, Yt as OXLINT_OOM_RESCUE_BUDGET_MS, Z as takePrespawnedOxlintWorker, Zt as OXLINT_SPAWN_TIMEOUT_MS, _n as SOURCE_FILE_PATTERN, _t as DIAGNOSTIC_CATEGORY_BUCKETS, an as REACT_ROUTER_CAPABILITY_THRESHOLDS, at as AXIOM_METRICS_DATASET_HEADER, bn as SPAWN_ARGS_MAX_LENGTH_CHARS_POSIX, cn as ROOT_CAUSE_GROUPABLE_RULE_KEYS, d as METRIC_DISTRIBUTION_BOUNDARIES, dt as COMPILER_CLEANUP_BUCKET, en as PROJECT_ANALYSIS_WORKER_MAX_OLD_SPACE_MB, et as ABORT_EXIT_CODES, fn as SIDECAR_LINT_CACHE_FILENAME, ft as COMPILER_CLEANUP_RULE_KEYS, gn as SOCKET_PACKAGE_PAGE_BASE, gt as DEFAULT_BRANCH_CANDIDATES, hn as SOCKET_FREE_USER_AGENT, in as REACT_BLOG_RSC_ADVISORY_URL, j as buildOxlintChildEnv, jn as TELEMETRY_EXPORT_INTERVAL_MS, jt as GIT_CHECK_ATTR_MAX_BUFFER_BYTES, kn as TAILWIND_POSTCSS7_COMPAT_ALIAS, l as INTERNAL_ERROR_JSON_FALLBACK, ln as SCANNED_DOT_DIRECTORIES, mn as SOCKET_FREE_PURL_API_BASE, mt as CONFIG_FINGERPRINT_FILENAMES, nn as PROJECT_ANALYSIS_WORKER_TIMEOUT_CEILING_MS, nt as APP_ONLY_RULE_KEYS, on as REACT_SERVER_DOM_PACKAGES, ot as AXIOM_METRICS_PATH, pt as CONFIG_CACHE_TTL_MS, q as resolveScanConcurrency, qt as OXLINT_IGNORED_DECLARATION_DIAGNOSTIC_CODES, rn as PROJECT_ANALYSIS_WORKER_TIMEOUT_MS, rt as AXIOM_DATASET_HEADER, sn as RECOMMENDED_PNPM_MINIMUM_RELEASE_AGE_MINUTES, st as AXIOM_TRACES_PATH, tn as PROJECT_ANALYSIS_WORKER_MEMORY_BUDGET_BYTES, tt as ADOPTABLE_LINT_CONFIG_FILENAMES, un as SCORE_API_URL, vn as SPAWN_ARGS_MAX_LENGTH_CHARS, vt as DISABLE_DIRECTIVE_BACKUP_DIRECTORY_SEGMENTS, wn as SUPPLY_CHAIN_CATEGORY, wt as FETCH_TIMEOUT_MS, xn as STAGED_FILES_PROJECT_CONFIG_FILENAMES, xt as DUPLICATE_JSX_WORKER_IDLE_TIMEOUT_MS, yn as SPAWN_ARGS_MAX_LENGTH_CHARS_DARWIN, yt as DOCS_RULES_BASE_URL, z as resolveConfiguredScanConcurrency, zt as MAINTAINABILITY_CATEGORY } from "./constants-rmkaA7iw.js";
|
|
5
5
|
import { n as require_picomatch, t as require_semver } from "./semver-BZIuy1gP.js";
|
|
@@ -23309,6 +23309,7 @@ var JsonReportProjectEntry = class extends Class("JsonReportProjectEntry")({
|
|
|
23309
23309
|
var JsonReportProjectEntryV3 = class extends Class("JsonReportProjectEntryV3")({
|
|
23310
23310
|
directory: String$1,
|
|
23311
23311
|
packageRoot: String$1,
|
|
23312
|
+
sourceFilterConfigHash: optional(String$1),
|
|
23312
23313
|
framework: Framework,
|
|
23313
23314
|
project: Unknown,
|
|
23314
23315
|
diagnostics: ArraySchema(JsonReportDiagnosticV3),
|
|
@@ -70383,87 +70384,118 @@ const checkProjectAnalysis = async (options) => {
|
|
|
70383
70384
|
};
|
|
70384
70385
|
const fingerprintDiagnosticEvidence = (evidence) => createHash("sha256").update(evidence.replace(/\s+/g, " ").trim()).digest("hex");
|
|
70385
70386
|
const DIAGNOSTIC_DELTA_IDENTITY = Symbol.for("react-doctor/diagnostic-delta-identity");
|
|
70386
|
-
const
|
|
70387
|
-
const
|
|
70388
|
-
const messageFingerprint = fingerprintDiagnosticEvidence(`${diagnostic.title ?? ""}\0${diagnostic.message}`);
|
|
70389
|
-
const evidenceFingerprint = diagnostic.fingerprint ?? (evidence?.trim() ? fingerprintDiagnosticEvidence(evidence) : null);
|
|
70387
|
+
const buildMatchCandidates = (diagnostics, indexes, readEvidence, readLine, mapLine) => indexes.map((diagnosticIndex) => {
|
|
70388
|
+
const diagnostic = diagnostics[diagnosticIndex];
|
|
70390
70389
|
const explicitIdentity = Reflect.get(diagnostic, DIAGNOSTIC_DELTA_IDENTITY);
|
|
70391
|
-
let
|
|
70392
|
-
if (typeof explicitIdentity === "string")
|
|
70393
|
-
else if (
|
|
70394
|
-
|
|
70390
|
+
let fingerprint = diagnostic.fingerprint ?? null;
|
|
70391
|
+
if (typeof explicitIdentity === "string") fingerprint = `identity:${fingerprintDiagnosticEvidence(explicitIdentity)}`;
|
|
70392
|
+
else if (fingerprint === null) {
|
|
70393
|
+
const evidence = readEvidence?.(diagnostic) ?? readLine(diagnostic.filePath, diagnostic.line);
|
|
70394
|
+
if (evidence?.trim()) fingerprint = fingerprintDiagnosticEvidence(evidence);
|
|
70395
|
+
}
|
|
70396
|
+
const message = `${diagnostic.title ?? ""}\0${diagnostic.message}`;
|
|
70395
70397
|
return {
|
|
70396
|
-
|
|
70397
|
-
|
|
70398
|
-
|
|
70398
|
+
diagnosticIndex,
|
|
70399
|
+
fingerprint,
|
|
70400
|
+
message,
|
|
70401
|
+
messageWords: new Set(message.toLowerCase().match(/\w+/g) ?? []),
|
|
70402
|
+
line: mapLine(diagnostic)
|
|
70403
|
+
};
|
|
70404
|
+
});
|
|
70405
|
+
const compareMatchRanks = (left, right) => right.messageSimilarity - left.messageSimilarity || left.lineDistance - right.lineDistance;
|
|
70406
|
+
const rankDiagnosticMatch = (head, base) => {
|
|
70407
|
+
let sharedWordCount = 0;
|
|
70408
|
+
for (const word of head.messageWords) if (base.messageWords.has(word)) sharedWordCount += 1;
|
|
70409
|
+
const unionWordCount = head.messageWords.size + base.messageWords.size - sharedWordCount;
|
|
70410
|
+
return {
|
|
70411
|
+
messageSimilarity: head.message === base.message ? 1 : sharedWordCount / Math.max(1, unionWordCount),
|
|
70412
|
+
lineDistance: Math.abs(head.line - base.line)
|
|
70399
70413
|
};
|
|
70400
70414
|
};
|
|
70401
|
-
const addDiagnosticIndex = (buckets, key, diagnosticIndex) => {
|
|
70402
|
-
if (key === null) return;
|
|
70403
|
-
const diagnosticIndexes = buckets.get(key) ?? [];
|
|
70404
|
-
diagnosticIndexes.push(diagnosticIndex);
|
|
70405
|
-
buckets.set(key, diagnosticIndexes);
|
|
70406
|
-
};
|
|
70407
|
-
const takeMatchingDiagnosticIndex = (buckets, key, matchedDiagnosticIndexes) => {
|
|
70408
|
-
if (key === null) return null;
|
|
70409
|
-
for (const diagnosticIndex of buckets.get(key) ?? []) if (!matchedDiagnosticIndexes.has(diagnosticIndex)) return diagnosticIndex;
|
|
70410
|
-
return null;
|
|
70411
|
-
};
|
|
70412
|
-
const readDiagnosticEvidence = (diagnostic, readEvidence, readLine) => readEvidence?.(diagnostic) ?? readLine(diagnostic.filePath, diagnostic.line);
|
|
70413
|
-
const buildMatchCandidates = (diagnostics, readEvidence, readLine, renamedFiles = {}) => diagnostics.map((diagnostic, diagnosticIndex) => ({
|
|
70414
|
-
diagnosticIndex,
|
|
70415
|
-
...getDiagnosticMatchKeys({
|
|
70416
|
-
...diagnostic,
|
|
70417
|
-
filePath: renamedFiles[diagnostic.filePath] ?? diagnostic.filePath
|
|
70418
|
-
}, readDiagnosticEvidence(diagnostic, readEvidence, readLine))
|
|
70419
|
-
}));
|
|
70420
|
-
/**
|
|
70421
|
-
* Diffs a head scan against a base scan using a multiset of construct-level
|
|
70422
|
-
* evidence. Detector-provided identities take precedence when source text is
|
|
70423
|
-
* intentionally normalized. Otherwise, stable identities combine plugin/rule,
|
|
70424
|
-
* the diagnostic message, and normalized diagnosed source, so unchanged
|
|
70425
|
-
* findings can move across files while changed constructs or messages remain
|
|
70426
|
-
* new. Cardinality is retained for identical findings. Diagnostics explicitly marked
|
|
70427
|
-
* `matchByOccurrence` may fall back to same-file plugin/rule/message matching
|
|
70428
|
-
* after same-file strict evidence matching. Cross-file evidence matching runs
|
|
70429
|
-
* last so a copy cannot consume a reformatted local occurrence. Unreadable
|
|
70430
|
-
* evidence uses the same conservative fallback rather than matching across
|
|
70431
|
-
* files without proof.
|
|
70432
|
-
*/
|
|
70433
70415
|
const computeDiagnosticDelta = (input) => {
|
|
70434
|
-
const
|
|
70435
|
-
const
|
|
70436
|
-
|
|
70437
|
-
|
|
70438
|
-
|
|
70439
|
-
|
|
70440
|
-
|
|
70441
|
-
|
|
70442
|
-
|
|
70443
|
-
}
|
|
70444
|
-
const matchedHeadDiagnosticIndexes = /* @__PURE__ */ new Set();
|
|
70445
|
-
const matchedBaseDiagnosticIndexes = /* @__PURE__ */ new Set();
|
|
70446
|
-
const matchCandidates = (baseBuckets, getKey, onMatch) => {
|
|
70447
|
-
for (const candidate of headCandidates) {
|
|
70448
|
-
if (matchedHeadDiagnosticIndexes.has(candidate.diagnosticIndex)) continue;
|
|
70449
|
-
const baseDiagnosticIndex = takeMatchingDiagnosticIndex(baseBuckets, getKey(candidate), matchedBaseDiagnosticIndexes);
|
|
70450
|
-
if (baseDiagnosticIndex === null) continue;
|
|
70451
|
-
matchedHeadDiagnosticIndexes.add(candidate.diagnosticIndex);
|
|
70452
|
-
matchedBaseDiagnosticIndexes.add(baseDiagnosticIndex);
|
|
70453
|
-
onMatch?.(candidate.diagnosticIndex, baseDiagnosticIndex);
|
|
70454
|
-
}
|
|
70455
|
-
};
|
|
70456
|
-
matchCandidates(baseBySameFileStableEvidence, (candidate) => candidate.sameFileStableEvidenceKey);
|
|
70457
|
-
matchCandidates(baseBySameFileFallback, (candidate) => candidate.sameFileFallbackKey);
|
|
70458
|
-
let unrestrictedCrossFileMatchCount = 0;
|
|
70459
|
-
if (input.renamedFiles === void 0) matchCandidates(baseByStableEvidence, (candidate) => candidate.stableEvidenceKey, (headIndex, baseIndex) => {
|
|
70460
|
-
if (input.headDiagnostics[headIndex].filePath !== input.baseDiagnostics[baseIndex].filePath) unrestrictedCrossFileMatchCount += 1;
|
|
70416
|
+
const groups = /* @__PURE__ */ new Map();
|
|
70417
|
+
for (const isBase of [true, false]) (isBase ? input.baseDiagnostics : input.headDiagnostics).forEach((diagnostic, diagnosticIndex) => {
|
|
70418
|
+
const groupKey = `${isBase ? input.renamedFiles?.[diagnostic.filePath] ?? diagnostic.filePath : diagnostic.filePath}\0${diagnostic.plugin}/${diagnostic.rule}`;
|
|
70419
|
+
const group = groups.get(groupKey) ?? {
|
|
70420
|
+
headIndexes: [],
|
|
70421
|
+
baseIndexes: []
|
|
70422
|
+
};
|
|
70423
|
+
(isBase ? group.baseIndexes : group.headIndexes).push(diagnosticIndex);
|
|
70424
|
+
groups.set(groupKey, group);
|
|
70461
70425
|
});
|
|
70462
|
-
const
|
|
70426
|
+
const newIndexes = /* @__PURE__ */ new Set();
|
|
70427
|
+
let fixedCount = 0;
|
|
70428
|
+
let crossFileMatchCount = 0;
|
|
70429
|
+
let ruleCountMatchCount = 0;
|
|
70430
|
+
for (const group of groups.values()) {
|
|
70431
|
+
const matchedCount = Math.min(group.headIndexes.length, group.baseIndexes.length);
|
|
70432
|
+
fixedCount += group.baseIndexes.length - matchedCount;
|
|
70433
|
+
crossFileMatchCount += Math.min(matchedCount, group.baseIndexes.filter((diagnosticIndex) => Boolean(input.renamedFiles?.[input.baseDiagnostics[diagnosticIndex].filePath])).length);
|
|
70434
|
+
if (group.headIndexes.length <= group.baseIndexes.length) {
|
|
70435
|
+
ruleCountMatchCount += matchedCount;
|
|
70436
|
+
continue;
|
|
70437
|
+
}
|
|
70438
|
+
if (group.baseIndexes.length === 0) {
|
|
70439
|
+
for (const diagnosticIndex of group.headIndexes) newIndexes.add(diagnosticIndex);
|
|
70440
|
+
continue;
|
|
70441
|
+
}
|
|
70442
|
+
const headCandidates = buildMatchCandidates(input.headDiagnostics, group.headIndexes, input.readHeadEvidence, input.readHeadLine, (diagnostic) => diagnostic.line);
|
|
70443
|
+
const baseCandidates = buildMatchCandidates(input.baseDiagnostics, group.baseIndexes, input.readBaseEvidence, input.readBaseLine, (diagnostic) => input.mapBaseLine?.(input.renamedFiles?.[diagnostic.filePath] ?? diagnostic.filePath, diagnostic.line) ?? diagnostic.line).sort((left, right) => left.line - right.line);
|
|
70444
|
+
const unmatchedHeads = new Map(headCandidates.map((candidate) => [candidate.diagnosticIndex, candidate]));
|
|
70445
|
+
const unmatchedBases = new Set(baseCandidates);
|
|
70446
|
+
for (const matchKind of [
|
|
70447
|
+
"exact",
|
|
70448
|
+
"fingerprint",
|
|
70449
|
+
"message"
|
|
70450
|
+
]) {
|
|
70451
|
+
const headBuckets = /* @__PURE__ */ new Map();
|
|
70452
|
+
const keyFor = (candidate) => {
|
|
70453
|
+
if (matchKind === "message") return candidate.message;
|
|
70454
|
+
if (matchKind === "fingerprint") return candidate.fingerprint;
|
|
70455
|
+
if (candidate.fingerprint === null) return null;
|
|
70456
|
+
return JSON.stringify([candidate.fingerprint, candidate.message]);
|
|
70457
|
+
};
|
|
70458
|
+
for (const head of unmatchedHeads.values()) {
|
|
70459
|
+
const key = keyFor(head);
|
|
70460
|
+
if (key === null) continue;
|
|
70461
|
+
const bucket = headBuckets.get(key) ?? [];
|
|
70462
|
+
bucket.push(head);
|
|
70463
|
+
headBuckets.set(key, bucket);
|
|
70464
|
+
}
|
|
70465
|
+
for (const base of unmatchedBases) {
|
|
70466
|
+
const key = keyFor(base);
|
|
70467
|
+
const bucket = key === null ? void 0 : headBuckets.get(key);
|
|
70468
|
+
if (!bucket?.length) continue;
|
|
70469
|
+
let closestIndex = 0;
|
|
70470
|
+
for (let index = 1; index < bucket.length; index += 1) if (Math.abs(bucket[index].line - base.line) < Math.abs(bucket[closestIndex].line - base.line)) closestIndex = index;
|
|
70471
|
+
const [head] = bucket.splice(closestIndex, 1);
|
|
70472
|
+
unmatchedHeads.delete(head.diagnosticIndex);
|
|
70473
|
+
unmatchedBases.delete(base);
|
|
70474
|
+
if (matchKind !== "exact") ruleCountMatchCount += 1;
|
|
70475
|
+
}
|
|
70476
|
+
}
|
|
70477
|
+
for (const base of unmatchedBases) {
|
|
70478
|
+
let bestHead;
|
|
70479
|
+
let bestRank;
|
|
70480
|
+
for (const head of unmatchedHeads.values()) {
|
|
70481
|
+
const rank = rankDiagnosticMatch(head, base);
|
|
70482
|
+
if (!bestRank || compareMatchRanks(rank, bestRank) < 0) {
|
|
70483
|
+
bestHead = head;
|
|
70484
|
+
bestRank = rank;
|
|
70485
|
+
}
|
|
70486
|
+
}
|
|
70487
|
+
if (bestHead) {
|
|
70488
|
+
unmatchedHeads.delete(bestHead.diagnosticIndex);
|
|
70489
|
+
ruleCountMatchCount += 1;
|
|
70490
|
+
}
|
|
70491
|
+
}
|
|
70492
|
+
for (const diagnosticIndex of unmatchedHeads.keys()) newIndexes.add(diagnosticIndex);
|
|
70493
|
+
}
|
|
70463
70494
|
return {
|
|
70464
|
-
newDiagnostics: input.headDiagnostics.filter((_diagnostic,
|
|
70465
|
-
fixedCount
|
|
70466
|
-
crossFileMatchCount
|
|
70495
|
+
newDiagnostics: input.headDiagnostics.filter((_diagnostic, index) => newIndexes.has(index)),
|
|
70496
|
+
fixedCount,
|
|
70497
|
+
crossFileMatchCount,
|
|
70498
|
+
ruleCountMatchCount
|
|
70467
70499
|
};
|
|
70468
70500
|
};
|
|
70469
70501
|
const isDuplicateJsxWorkerReply = (value) => typeof value === "object" && value !== null && "id" in value && typeof value.id === "number" && "ok" in value && typeof value.ok === "boolean";
|
|
@@ -76481,6 +76513,7 @@ const buildJsonReport = (input) => {
|
|
|
76481
76513
|
return {
|
|
76482
76514
|
directory,
|
|
76483
76515
|
packageRoot: result.project.rootDirectory,
|
|
76516
|
+
...result.sourceFilterConfigHash ? { sourceFilterConfigHash: result.sourceFilterConfigHash } : {},
|
|
76484
76517
|
framework: result.project.framework,
|
|
76485
76518
|
project: result.project,
|
|
76486
76519
|
diagnostics: result.diagnostics.map((diagnostic) => toJsonReportDiagnostic(diagnostic, result.project.rootDirectory, input.directory)),
|
|
@@ -76612,6 +76645,47 @@ const getChangedLineRanges = (input) => runPromise(gen(function* () {
|
|
|
76612
76645
|
}));
|
|
76613
76646
|
}).pipe(provide(Git.layerNode)));
|
|
76614
76647
|
/**
|
|
76648
|
+
* Array-shaped wrapper over `buildDiagnosticPipeline` for legacy
|
|
76649
|
+
* callers and tests. Production code uses the streaming pipeline
|
|
76650
|
+
* inside `runInspect`; this thin shim runs the same per-element
|
|
76651
|
+
* closure over an in-memory diagnostic array.
|
|
76652
|
+
*/
|
|
76653
|
+
const mergeAndFilterDiagnostics = (mergedDiagnostics, directory, userConfig, readFileLinesSync, options = {}) => {
|
|
76654
|
+
const pipeline = buildDiagnosticPipeline({
|
|
76655
|
+
rootDirectory: directory,
|
|
76656
|
+
userConfig,
|
|
76657
|
+
readFileLinesSync,
|
|
76658
|
+
respectInlineDisables: options.respectInlineDisables ?? true,
|
|
76659
|
+
showWarnings: options.warnings ?? userConfig?.warnings ?? true
|
|
76660
|
+
});
|
|
76661
|
+
const result = [];
|
|
76662
|
+
for (const diagnostic of mergedDiagnostics) {
|
|
76663
|
+
const filtered = pipeline.apply(diagnostic);
|
|
76664
|
+
if (filtered !== null) result.push(filtered);
|
|
76665
|
+
}
|
|
76666
|
+
return dedupeRelatedDiagnostics(result);
|
|
76667
|
+
};
|
|
76668
|
+
const lookupOwnRule = (rule) => Object.hasOwn(REACT_DOCTOR_RULE_REGISTRY, rule) ? REACT_DOCTOR_RULE_REGISTRY[rule] : void 0;
|
|
76669
|
+
/**
|
|
76670
|
+
* Returns presentation metadata for `<plugin>/<rule>`, or `null` when the
|
|
76671
|
+
* rule is not part of the bundled react-doctor plugin (e.g. an adopted
|
|
76672
|
+
* `eslint` / `unicorn` rule folded in via the user's lint config — those
|
|
76673
|
+
* carry their own help/url on the diagnostic instead).
|
|
76674
|
+
*/
|
|
76675
|
+
const getRuleMetadata = (plugin, rule) => {
|
|
76676
|
+
if (plugin !== "react-doctor") return null;
|
|
76677
|
+
const definition = lookupOwnRule(rule);
|
|
76678
|
+
if (!definition) return null;
|
|
76679
|
+
return {
|
|
76680
|
+
id: rule,
|
|
76681
|
+
plugin,
|
|
76682
|
+
category: definition.category ?? null,
|
|
76683
|
+
recommendation: definition.recommendation ?? null,
|
|
76684
|
+
tags: definition.tags ?? [],
|
|
76685
|
+
defaultEnabled: definition.defaultEnabled ?? true
|
|
76686
|
+
};
|
|
76687
|
+
};
|
|
76688
|
+
/**
|
|
76615
76689
|
* Canonical URL for a rule's documentation page — its reviewer-tested fix
|
|
76616
76690
|
* recipe rendered for humans — served at
|
|
76617
76691
|
* `https://react.doctor/docs/rules/<plugin>/<rule>`. The CLI links here
|
|
@@ -77020,7 +77094,7 @@ const makeNoopConsole = () => ({
|
|
|
77020
77094
|
});
|
|
77021
77095
|
//#endregion
|
|
77022
77096
|
//#region src/cli/utils/version.ts
|
|
77023
|
-
const VERSION = "0.9.16-dev.
|
|
77097
|
+
const VERSION = "0.9.16-dev.ef1be22";
|
|
77024
77098
|
//#endregion
|
|
77025
77099
|
//#region src/cli/utils/json-mode.ts
|
|
77026
77100
|
let context = null;
|
|
@@ -77362,7 +77436,7 @@ const recordDistribution = (name, value, options = {}) => {
|
|
|
77362
77436
|
} catch {}
|
|
77363
77437
|
};
|
|
77364
77438
|
//#endregion
|
|
77365
|
-
export { buildRuleSeverityControls as $,
|
|
77439
|
+
export { buildRuleSeverityControls as $, shouldUseMaintainabilityLayer as $t, Files as A, succeed$3 as An, highlighter as At, PerFileLintCacheEnabled as B, isDirectory as Bn, loadConfigWithSource as Bt, ACTION_INPUT_ENVIRONMENT_VARIABLES as C, runSync as Cn, getDiffInfo as Ct, isCodingAgentEnvironment as D, buildWithScope as Dn, hasPublishedFixRecipe as Dt, isCiOrCodingAgentEnvironment as E, void_ as En, groupBy as Et, Linter as F, ParentSpan as Fn, isScanComplete as Ft, SidecarLintCacheEnabled as G, remainingDeadlineBudgetMs as Gt, Project as H, isFile as Hn, materializeSourceTree as Ht, Maintainability as I, isMonorepoRoot as In, layerObservability as It, anonymizeInPlace as J, resolveScanTarget as Jt, StagedFiles as K, resolveGithubActionsScoreMetadata as Kt, NodeResolver as L, yieldToEventLoop as Ln, listSourceFiles as Lt, InvocationCaches as M, makeUnsafe$5 as Mn, isProjectDiscoveryError as Mt, LEGACY_CONFIG_FILENAME as N, fail$5 as Nn, isReactDoctorError as Nt, Config as O, mergeAll$1 as On, hasSupportedFrameworkOrLibrary as Ot, LintPartialFailures as P, void_$1 as Pn, isSameRuleKey as Pt, buildRuleDocsUrl as Q, setColorEnabled as Qt, OxlintConcurrency as R, messageFromUnknown as Rn, listSourceFilesCooperative as Rt, isDebugFlagEnabled as S, runPromise as Sn, getDiagnosticRuleIdentity as St, isCiEnvironment as T, try_ as Tn, getRuleMetadata as Tt, Reporter as U, isPlainObject as Un, mergeAndFilterDiagnostics as Ut, Progress as V, isErrnoException as Vn, mapWithConcurrency as Vt, Score as W, mergeReactDoctorConfigs as Wt, atomicWriteJson as X, runInspect as Xt, anonymizeText as Y, restoreLegacyThrow as Yt, buildJsonReport as Z, scrubSensitivePaths as Zt, VERSION as _, orElseSucceed as _n, fingerprintDiagnosticEvidence as _t, isEnvFlagEnabled as a, Console as an, collectSourceFilesByDirectory as at, isNonInteractiveEnvironment as b, provideContext as bn, getBaselineDiffPlan as bt, setSentryProjectInfo as c, log as cn, countOptInProjectRuleSelections as ct, isJsonModeActive as d, JsonReport as dn, detectAiTrainingEnvironment as dt, summarizeDiagnostics as en, buildSkippedChecks as et, setJsonReportDirectory as f, decodeUnknownSync as fn, discoverSupportedSubprojects as ft, writeJsonReport as g, map$3 as gn, findLegacyConfig as gt, writeJsonErrorReport as h, makeSpan$1 as hn, filterSourceFiles as ht, isTelemetryEnabled as i, warmOxlintWorkerPool as in, clearConfigCache as it, Git as j, close as jn, isPathInsideDirectory as jt, DIAGNOSTIC_DELTA_IDENTITY as k, provide$2 as kn, hashFileContents as kt, getRunId as l, warn$1 as ln, createInvocationCaches as lt, writeJsonCancellationReport as m, gen as mn, filterPathsOutsideDirectories as mt, recordDistribution as n, validateConfigTypes as nn, canonicalizeUserRuleKey as nt, buildSentryScope as o, error as on, computeConfigFingerprint as ot, setJsonReportMode as p, make$30 as pn, filterDiagnosticsForSurface as pt, SupplyChain as q, resolveLintBatchOrdering as qt, toSpanAttributes as r, warmDuplicateJsxWorker as rn, classifyFileContext as rt, buildSentryProjectContext as s, info as sn, computeDiagnosticDelta as st, recordCount as t, toRelativePath as tn, calculateScore as tt, enableJsonMode as u, Diagnostic as un, createOxlintSpawnSlots as ut, makeNoopConsole as v, promise as vn, formatErrorChain as vt, detectRunnerOs as w, sync as wn, getEquivalentRuleKeys as wt, isGitHookEnvironment as x, provideService as xn, getChangedLineRanges as xt, CliInputError as y, provide as yn, formatReactDoctorError as yt, OxlintSpawnSlots as z, toCanonicalPath as zn, listWorkspacePackages as zt };
|
|
77366
77440
|
|
|
77367
|
-
//# sourceMappingURL=record-metric-
|
|
77368
|
-
//# debugId=
|
|
77441
|
+
//# sourceMappingURL=record-metric-COaAD5VE.js.map
|
|
77442
|
+
//# debugId=aff777bc-568b-5ed2-907a-0c9741a672c9
|
|
@@ -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]="68a8c494-cb6d-5e71-84d1-8c9ae599f79f")}catch(e){}}();
|
|
3
3
|
import { S as SENTRY_FLUSH_TIMEOUT_MS, u as METRIC } from "./constants-rmkaA7iw.js";
|
|
4
|
-
import {
|
|
5
|
-
import { i as getSentry, n as shutdownTelemetry, o as isExpectedUserError } from "./telemetry-runtime-
|
|
4
|
+
import { Nt as isReactDoctorError, l as getRunId, o as buildSentryScope, t as recordCount } from "./record-metric-COaAD5VE.js";
|
|
5
|
+
import { i as getSentry, n as shutdownTelemetry, o as isExpectedUserError } from "./telemetry-runtime-CEcDvXxW.js";
|
|
6
6
|
import { r as recordRunTraceId, t as getActiveRunTrace } from "./active-run-trace-Dewycxda.js";
|
|
7
7
|
//#region src/cli/utils/report-error.ts
|
|
8
8
|
/**
|
|
@@ -61,5 +61,5 @@ const reportErrorToSentry = async (error) => {
|
|
|
61
61
|
//#endregion
|
|
62
62
|
export { reportErrorToSentry as t };
|
|
63
63
|
|
|
64
|
-
//# sourceMappingURL=report-error-
|
|
65
|
-
//# debugId=
|
|
64
|
+
//# sourceMappingURL=report-error-CSpZGdCu.js.map
|
|
65
|
+
//# debugId=68a8c494-cb6d-5e71-84d1-8c9ae599f79f
|
|
@@ -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]="514698d1-f878-5197-871b-37d50419d529")}catch(e){}}();
|
|
3
3
|
import { m as REACT_DOCTOR_CONFIG_PROJECT_NAME, u as METRIC } from "./constants-rmkaA7iw.js";
|
|
4
|
-
import { t as recordCount } from "./record-metric-
|
|
5
|
-
import { u as isCommandAvailable } from "./install-github-workflow-
|
|
4
|
+
import { t as recordCount } from "./record-metric-COaAD5VE.js";
|
|
5
|
+
import { u as isCommandAvailable } from "./install-github-workflow-zVARf-aa.js";
|
|
6
6
|
import { createRequire } from "node:module";
|
|
7
7
|
import * as path$1 from "node:path";
|
|
8
8
|
import { spawn } from "node:child_process";
|
|
@@ -288,5 +288,5 @@ const reportWorkflowResult = (workflowSpinner, result, projectRoot) => {
|
|
|
288
288
|
//#endregion
|
|
289
289
|
export { recordGate as a, ACTION_UPGRADE_EVENT as c, INSTALL_AGENTS_PREFERENCE_ID as d, ONBOARDING_EVENT as f, loadAgentInstall as g, detectAvailableAgents as h, readPreference as i, CI_PITCH_EVENT as l, computeDefaultSelectedAgents as m, openUrl as n, runMigrations as o, SETUP_HINT_EVENT as p, isGatePending as r, writePreference as s, reportWorkflowResult as t, HANDOFF_TARGET_PREFERENCE_ID as u };
|
|
290
290
|
|
|
291
|
-
//# sourceMappingURL=report-workflow-result-
|
|
292
|
-
//# debugId=
|
|
291
|
+
//# sourceMappingURL=report-workflow-result-D0Tev_E8.js.map
|
|
292
|
+
//# debugId=514698d1-f878-5197-871b-37d50419d529
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
|
|
2
|
-
!function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="
|
|
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]="1fe73294-bee5-5549-9160-fff88efa23f3")}catch(e){}}();
|
|
3
|
+
import { ht as filterSourceFiles, jt as isPathInsideDirectory, zn as toCanonicalPath } from "./record-metric-COaAD5VE.js";
|
|
4
4
|
import { t as toForwardSlashes } from "./path-format-By20mo8A.js";
|
|
5
|
-
import { N as cliLogger } from "./install-doctor-script-
|
|
6
|
-
import { d as detectDefaultBranch, f as runCommand, l as prompts, u as isCommandAvailable } from "./install-github-workflow-
|
|
5
|
+
import { N as cliLogger } from "./install-doctor-script-YdsysHJ8.js";
|
|
6
|
+
import { d as detectDefaultBranch, f as runCommand, l as prompts, u as isCommandAvailable } from "./install-github-workflow-zVARf-aa.js";
|
|
7
7
|
import * as path$1 from "node:path";
|
|
8
8
|
//#region src/cli/utils/open-workflow-pull-request.ts
|
|
9
9
|
const NEW_BRANCH_PREFIX = "react-doctor/add-github-actions";
|
|
@@ -333,5 +333,5 @@ const finalizeScope = async ({ requested, diffInfo, skipPrompts, isQuiet }) => {
|
|
|
333
333
|
//#endregion
|
|
334
334
|
export { isValidBlockingLevel as a, openWorkflowPullRequest as c, warnDeprecatedDiff as i, stageWorkflowFile as l, isScopeValue as n, pickBlockingLevel as o, resolveScope as r, resolveBlockingLevel as s, finalizeScope as t };
|
|
335
335
|
|
|
336
|
-
//# sourceMappingURL=resolve-scope-
|
|
337
|
-
//# debugId=
|
|
336
|
+
//# sourceMappingURL=resolve-scope-BDtWzgKS.js.map
|
|
337
|
+
//# debugId=1fe73294-bee5-5549-9160-fff88efa23f3
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
|
|
2
|
-
!function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="
|
|
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]="c585c8d7-6e7f-5269-badc-3e214ed90e33")}catch(e){}}();
|
|
3
3
|
import { dt as COMPILER_CLEANUP_BUCKET, ft as COMPILER_CLEANUP_RULE_KEYS, u as METRIC } from "./constants-rmkaA7iw.js";
|
|
4
|
-
import {
|
|
5
|
-
import { N as cliLogger, n as findNearestPackageDirectory } from "./install-doctor-script-
|
|
6
|
-
import { t as readObjectFile } from "./read-object-file-
|
|
4
|
+
import { At as highlighter, Bt as loadConfigWithSource, Pt as isSameRuleKey, Q as buildRuleDocsUrl, Un as isPlainObject, it as clearConfigCache, nn as validateConfigTypes, t as recordCount, wt as getEquivalentRuleKeys } from "./record-metric-COaAD5VE.js";
|
|
5
|
+
import { N as cliLogger, n as findNearestPackageDirectory } from "./install-doctor-script-YdsysHJ8.js";
|
|
6
|
+
import { t as readObjectFile } from "./read-object-file-BMfspuEc.js";
|
|
7
7
|
import * as fs$1 from "node:fs";
|
|
8
8
|
import * as path$1 from "node:path";
|
|
9
9
|
import { REACT_DOCTOR_RULES } from "oxlint-plugin-react-doctor/core";
|
|
@@ -578,5 +578,5 @@ const rulesUnignoreTagAction = async (tag, options) => {
|
|
|
578
578
|
//#endregion
|
|
579
579
|
export { rulesCategoryAction, rulesDisableAction, rulesEnableAction, rulesExplainAction, rulesIgnoreTagAction, rulesListAction, rulesSetAction, rulesUnignoreTagAction };
|
|
580
580
|
|
|
581
|
-
//# sourceMappingURL=rules-
|
|
582
|
-
//# debugId=
|
|
581
|
+
//# sourceMappingURL=rules-3T0sQG3z.js.map
|
|
582
|
+
//# debugId=c585c8d7-6e7f-5269-badc-3e214ed90e33
|
|
@@ -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]="
|
|
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]="2fef2b18-257e-5a72-9829-1023eaf45d4a")}catch(e){}}();
|
|
3
3
|
import { D as TUI_REPORT_COMPACT_MAX_ROWS, In as getCategoryImpact, O as TUI_REPORT_DETAIL_WIDTH_FRACTION, _t as DIAGNOSTIC_CATEGORY_BUCKETS, kt as GITHUB_ACTIONS_SETUP_URL, o as CI_TRUST_COMPANIES, u as METRIC } from "./constants-rmkaA7iw.js";
|
|
4
|
-
import {
|
|
4
|
+
import { An as succeed, At as highlighter, Ct as getDiffInfo, Dt as hasPublishedFixRecipe, En as void_, Gt as remainingDeadlineBudgetMs, Jt as resolveScanTarget, Ln as yieldToEventLoop, Q as buildRuleDocsUrl, Sn as runPromise, T as isCiEnvironment, U as Reporter, V as Progress, Vt as mapWithConcurrency, bt as getBaselineDiffPlan, n as recordDistribution, t as recordCount, tt as calculateScore, wn as sync, x as isGitHookEnvironment, xt as getChangedLineRanges } from "./record-metric-COaAD5VE.js";
|
|
5
5
|
import { t as toForwardSlashes } from "./path-format-By20mo8A.js";
|
|
6
|
-
import { N as cliLogger, n as findNearestPackageDirectory } from "./install-doctor-script-
|
|
7
|
-
import { i as isReactDoctorWorkflowInstalled } from "./install-github-workflow-
|
|
8
|
-
import { r as resolveScope, s as resolveBlockingLevel, t as finalizeScope } from "./resolve-scope-
|
|
9
|
-
import { A as createInvocationInspect, B as hasIncompleteScoreAnalysis, C as detectLaunchableAgents, D as buildHandoffPayload, E as launchCliAgent, F as formatSkippedCheckLabel, G as hasLintHardFailure, H as buildNoScoreMessage, I as formatElapsedTime, J as formatFixRecipeLine, K as buildRulePriorityMap, L as printFooter, M as resolveMergeBaseRef, O as collectProjectSourceFiles, P as pluralize, R as printDiagnosticsDump, S as setUpGitHubActions, T as copyToClipboard, U as buildEmptyReportMessage, V as filterDiagnosticsByCategories, Y as formatLearnMoreLine, _ as retryMissingProjectScores, b as filterScansForSurface, c as partitionProjectScanOutcomes, d as buildCodeFrame, f as resolveProjectScan, h as resolveProjectSourceFilePaths, i as validateIncludeUntrackedScope, k as deduplicateProjectScans, l as discoverWorkspacePackages, m as resolveProjectDiffIncludePaths, n as formatSkippedProjectsMessage, o as resolveExcludedProjectDirectories, p as resolveProjectChangedLineRanges, q as buildSortedRuleGroups, s as projectManifestChanged, t as shouldFailScanGate, u as selectProjects, v as resolveWorkspaceDeadCodeOwner, w as CLI_AGENT_BINARIES, x as countUniqueScannedFiles, y as resolveCliInspectOptions, z as formatDiagnosticSite } from "./should-fail-scan-gate-
|
|
10
|
-
import { a as recordGate, f as ONBOARDING_EVENT, n as openUrl, r as isGatePending } from "./report-workflow-result-
|
|
11
|
-
import { a as useExitOnCtrlC, c as Spinner, d as useInput, f as Transform, h as Box, i as import_react, l as useStdout, m as Text, n as registerMountedTuiRenderer, o as terminalSymbols, p as render, r as useStdoutDimensions, s as isPrintableInput, t as require_jsx_runtime, u as useApp } from "./jsx-runtime-
|
|
6
|
+
import { N as cliLogger, n as findNearestPackageDirectory } from "./install-doctor-script-YdsysHJ8.js";
|
|
7
|
+
import { i as isReactDoctorWorkflowInstalled } from "./install-github-workflow-zVARf-aa.js";
|
|
8
|
+
import { r as resolveScope, s as resolveBlockingLevel, t as finalizeScope } from "./resolve-scope-BDtWzgKS.js";
|
|
9
|
+
import { A as createInvocationInspect, B as hasIncompleteScoreAnalysis, C as detectLaunchableAgents, D as buildHandoffPayload, E as launchCliAgent, F as formatSkippedCheckLabel, G as hasLintHardFailure, H as buildNoScoreMessage, I as formatElapsedTime, J as formatFixRecipeLine, K as buildRulePriorityMap, L as printFooter, M as resolveMergeBaseRef, O as collectProjectSourceFiles, P as pluralize, R as printDiagnosticsDump, S as setUpGitHubActions, T as copyToClipboard, U as buildEmptyReportMessage, V as filterDiagnosticsByCategories, Y as formatLearnMoreLine, _ as retryMissingProjectScores, b as filterScansForSurface, c as partitionProjectScanOutcomes, d as buildCodeFrame, f as resolveProjectScan, h as resolveProjectSourceFilePaths, i as validateIncludeUntrackedScope, k as deduplicateProjectScans, l as discoverWorkspacePackages, m as resolveProjectDiffIncludePaths, n as formatSkippedProjectsMessage, o as resolveExcludedProjectDirectories, p as resolveProjectChangedLineRanges, q as buildSortedRuleGroups, s as projectManifestChanged, t as shouldFailScanGate, u as selectProjects, v as resolveWorkspaceDeadCodeOwner, w as CLI_AGENT_BINARIES, x as countUniqueScannedFiles, y as resolveCliInspectOptions, z as formatDiagnosticSite } from "./should-fail-scan-gate-0HPfGaTS.js";
|
|
10
|
+
import { a as recordGate, f as ONBOARDING_EVENT, n as openUrl, r as isGatePending } from "./report-workflow-result-D0Tev_E8.js";
|
|
11
|
+
import { a as useExitOnCtrlC, c as Spinner, d as useInput, f as Transform, h as Box, i as import_react, l as useStdout, m as Text, n as registerMountedTuiRenderer, o as terminalSymbols, p as render, r as useStdoutDimensions, s as isPrintableInput, t as require_jsx_runtime, u as useApp } from "./jsx-runtime-BC_XnKBD.js";
|
|
12
12
|
import path from "node:path";
|
|
13
13
|
import { performance } from "node:perf_hooks";
|
|
14
14
|
import isUnicodeSupported from "is-unicode-supported";
|
|
@@ -2514,5 +2514,5 @@ const runScanApp = async (input) => {
|
|
|
2514
2514
|
//#endregion
|
|
2515
2515
|
export { runScanApp };
|
|
2516
2516
|
|
|
2517
|
-
//# sourceMappingURL=run-scan-app-
|
|
2518
|
-
//# debugId=
|
|
2517
|
+
//# sourceMappingURL=run-scan-app-Ch62x8JM.js.map
|
|
2518
|
+
//# debugId=2fef2b18-257e-5a72-9829-1023eaf45d4a
|
|
@@ -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]="
|
|
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]="6b9e810e-bf02-58f9-a742-13c0fceab364")}catch(e){}}();
|
|
3
3
|
import { u as METRIC } from "./constants-rmkaA7iw.js";
|
|
4
|
-
import {
|
|
4
|
+
import { At as highlighter, t as recordCount, u as enableJsonMode, y as CliInputError } from "./record-metric-COaAD5VE.js";
|
|
5
5
|
import { t as activeScanAbortRegistry } from "./active-scan-abort-registry-CCTgal0O.js";
|
|
6
|
-
import { t as reportErrorToSentry } from "./report-error-
|
|
7
|
-
import { n as resetSentryRunState, r as withRunSpan } from "./with-run-span-
|
|
8
|
-
import { _ as RUNTIME_SCAN_SNAPSHOT_TIMEOUT_MS, b as RUNTIME_SCAN_TRACING_COMPLETE_TIMEOUT_MS, f as RUNTIME_SCAN_PROBE_RELATIVE_PATH, g as RUNTIME_SCAN_SAFE_CDP_PAGE_URLS, h as RUNTIME_SCAN_PROBE_SNAPSHOT_TOKEN_PLACEHOLDER, l as RUNTIME_SCAN_MAX_SNAPSHOT_PAYLOAD_BYTES, m as RUNTIME_SCAN_PROBE_SNAPSHOT_BINDING_NAME_PLACEHOLDER, n as RUNTIME_SCAN_BROWSER_WIDTH_PX, o as RUNTIME_SCAN_MAX_COMPONENT_EVENTS, p as RUNTIME_SCAN_PROBE_SNAPSHOT_ATTRIBUTE_NAME_PLACEHOLDER, r as RUNTIME_SCAN_CONTROL_CHARACTERS_PATTERN, s as RUNTIME_SCAN_MAX_RECORDING_DURATION_MS, t as sanitizeRuntimeUrl, v as RUNTIME_SCAN_TRACE_CATEGORIES, y as RUNTIME_SCAN_TRACE_FILE_EXTENSION } from "./sanitize-runtime-url-
|
|
9
|
-
import { r as resolveTuiEnvironment, t as isTuiEnvironmentSupported } from "./should-use-tui-
|
|
6
|
+
import { t as reportErrorToSentry } from "./report-error-CSpZGdCu.js";
|
|
7
|
+
import { n as resetSentryRunState, r as withRunSpan } from "./with-run-span-aYNrYjQY.js";
|
|
8
|
+
import { _ as RUNTIME_SCAN_SNAPSHOT_TIMEOUT_MS, b as RUNTIME_SCAN_TRACING_COMPLETE_TIMEOUT_MS, f as RUNTIME_SCAN_PROBE_RELATIVE_PATH, g as RUNTIME_SCAN_SAFE_CDP_PAGE_URLS, h as RUNTIME_SCAN_PROBE_SNAPSHOT_TOKEN_PLACEHOLDER, l as RUNTIME_SCAN_MAX_SNAPSHOT_PAYLOAD_BYTES, m as RUNTIME_SCAN_PROBE_SNAPSHOT_BINDING_NAME_PLACEHOLDER, n as RUNTIME_SCAN_BROWSER_WIDTH_PX, o as RUNTIME_SCAN_MAX_COMPONENT_EVENTS, p as RUNTIME_SCAN_PROBE_SNAPSHOT_ATTRIBUTE_NAME_PLACEHOLDER, r as RUNTIME_SCAN_CONTROL_CHARACTERS_PATTERN, s as RUNTIME_SCAN_MAX_RECORDING_DURATION_MS, t as sanitizeRuntimeUrl, v as RUNTIME_SCAN_TRACE_CATEGORIES, y as RUNTIME_SCAN_TRACE_FILE_EXTENSION } from "./sanitize-runtime-url-CxW5-DlL.js";
|
|
9
|
+
import { r as resolveTuiEnvironment, t as isTuiEnvironmentSupported } from "./should-use-tui-CO0fiHNd.js";
|
|
10
10
|
import * as fs$1 from "node:fs";
|
|
11
11
|
import * as path$1 from "node:path";
|
|
12
12
|
import * as os$1 from "node:os";
|
|
@@ -720,7 +720,7 @@ const resolveRuntimeScanUrl = async (url) => {
|
|
|
720
720
|
if (url !== void 0) return url;
|
|
721
721
|
if (!isTuiEnvironmentSupported(resolveTuiEnvironment(process.stderr.isTTY === true))) throw new CliInputError("A URL is required outside an interactive terminal. Run `react-doctor scan <url>`.");
|
|
722
722
|
recordCount(METRIC.runtimeScanUrlPromptShown);
|
|
723
|
-
const { promptRuntimeScanUrl } = await import("./prompt-runtime-scan-url-
|
|
723
|
+
const { promptRuntimeScanUrl } = await import("./prompt-runtime-scan-url-DBB5q70w.js");
|
|
724
724
|
return promptRuntimeScanUrl();
|
|
725
725
|
};
|
|
726
726
|
const runtimeScanAction = async (url, flags) => {
|
|
@@ -767,5 +767,5 @@ const runtimeScanAction = async (url, flags) => {
|
|
|
767
767
|
//#endregion
|
|
768
768
|
export { runtimeScanAction };
|
|
769
769
|
|
|
770
|
-
//# sourceMappingURL=runtime-scan-
|
|
771
|
-
//# debugId=
|
|
770
|
+
//# sourceMappingURL=runtime-scan-fl7GqT-4.js.map
|
|
771
|
+
//# debugId=6b9e810e-bf02-58f9-a742-13c0fceab364
|
|
@@ -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 { y as CliInputError } 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]="f7eb03bb-f4a0-527a-8845-a2334cd60090")}catch(e){}}();
|
|
3
|
+
import { y as CliInputError } from "./record-metric-COaAD5VE.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-
|
|
76
|
-
//# debugId=
|
|
75
|
+
//# sourceMappingURL=sanitize-runtime-url-CxW5-DlL.js.map
|
|
76
|
+
//# debugId=f7eb03bb-f4a0-527a-8845-a2334cd60090
|
|
@@ -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]="
|
|
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]="5b6d2f40-9e04-5272-b9ef-e580b7591900")}catch(e){}}();
|
|
3
3
|
import { u as METRIC } from "./constants-rmkaA7iw.js";
|
|
4
|
-
import {
|
|
5
|
-
import { i as warnDeprecatedDiff } from "./resolve-scope-
|
|
6
|
-
import { n as warnDeprecatedFailOn, r as runProjectMigrations, t as inspectAction } from "./inspect-
|
|
7
|
-
import { a as validateModeFlags, r as validateFilePathSelectionFlags, y as resolveCliInspectOptions } from "./should-fail-scan-gate-
|
|
8
|
-
import { n as shouldUseTui, r as resolveTuiEnvironment } from "./should-use-tui-
|
|
4
|
+
import { Jt as resolveScanTarget, t as recordCount } from "./record-metric-COaAD5VE.js";
|
|
5
|
+
import { i as warnDeprecatedDiff } from "./resolve-scope-BDtWzgKS.js";
|
|
6
|
+
import { n as warnDeprecatedFailOn, r as runProjectMigrations, t as inspectAction } from "./inspect-ZsJdCoBa.js";
|
|
7
|
+
import { a as validateModeFlags, r as validateFilePathSelectionFlags, y as resolveCliInspectOptions } from "./should-fail-scan-gate-0HPfGaTS.js";
|
|
8
|
+
import { n as shouldUseTui, r as resolveTuiEnvironment } from "./should-use-tui-CO0fiHNd.js";
|
|
9
9
|
import path from "node:path";
|
|
10
10
|
//#region src/cli/commands/scan.ts
|
|
11
11
|
const runScanCommand = async (input) => {
|
|
@@ -29,7 +29,7 @@ const runScanCommand = async (input) => {
|
|
|
29
29
|
warnDeprecatedFailOn(input.flags, scanTarget.userConfig);
|
|
30
30
|
warnDeprecatedDiff(input.flags, scanTarget.userConfig);
|
|
31
31
|
recordCount(METRIC.cliInvoked, 1, { command: input.invocationCommand });
|
|
32
|
-
const { runScanApp } = await import("./run-scan-app-
|
|
32
|
+
const { runScanApp } = await import("./run-scan-app-Ch62x8JM.js");
|
|
33
33
|
const { shouldFail } = await runScanApp({
|
|
34
34
|
directory: input.directory,
|
|
35
35
|
scanTarget,
|
|
@@ -44,5 +44,5 @@ const runScanCommand = async (input) => {
|
|
|
44
44
|
//#endregion
|
|
45
45
|
export { runScanCommand };
|
|
46
46
|
|
|
47
|
-
//# sourceMappingURL=scan-
|
|
48
|
-
//# debugId=
|
|
47
|
+
//# sourceMappingURL=scan-ChjHrC7N.js.map
|
|
48
|
+
//# debugId=5b6d2f40-9e04-5272-b9ef-e580b7591900
|