react-doctor 0.9.12-dev.a163de9 → 0.9.12-dev.ac87f7d
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/dist/{build-section-divider-DwhI0l-P.js → build-section-divider-BpENvzwG.js} +7 -7
- package/dist/{ci-BM5Bztiz.js → ci-BhOBG3T0.js} +12 -12
- package/dist/cli.js +28 -27
- package/dist/{design-BJm8XW5q.js → design-Bq6di1tM.js} +4 -4
- package/dist/{exit-gracefully-cFX-xHhy.js → exit-gracefully-CYfF0GCJ.js} +6 -6
- package/dist/{handle-error-DBoxwa4Y.js → handle-error-CU-FMRyI.js} +17 -12
- package/dist/index.js +175 -89
- package/dist/{inspect-Cj9X2Cuj.js → inspect-B9H_IT4O.js} +16 -16
- package/dist/{install-DJE5tJBN.js → install-DoihOMNC.js} +9 -9
- package/dist/{install-doctor-script-Bwy0GRjB.js → install-doctor-script-GGnj8tcj.js} +4 -4
- package/dist/{install-github-workflow-CQL9QH8Q.js → install-github-workflow-DWmRP55H.js} +9 -5
- package/dist/{install-react-doctor-BC0tbnqe.js → install-react-doctor-Gzbw8Ue9.js} +8 -8
- package/dist/{jsx-runtime-BGIkB563.js → jsx-runtime-CMY_Q08d.js} +5 -5
- package/dist/{print-branded-header-B5xE0DP1.js → print-branded-header-CqvClso3.js} +4 -4
- package/dist/project-analysis-worker.js +53 -52
- package/dist/{prompt-runtime-scan-url-G27i97Bd.js → prompt-runtime-scan-url-3SOiiFcU.js} +5 -5
- package/dist/{read-object-file-p5HY4kEb.js → read-object-file-NSp2cOs9.js} +4 -4
- package/dist/{record-metric-B0l334ac.js → record-metric-DVm5sVu2.js} +171 -84
- package/dist/{report-error-CxbHpLL8.js → report-error-JXHy8xn6.js} +5 -5
- package/dist/{report-workflow-result-Dtn4MVZ_.js → report-workflow-result-CPMR84K_.js} +5 -5
- package/dist/{resolve-scope-DFSO5zB7.js → resolve-scope-CWo3o4bf.js} +6 -6
- package/dist/{rules-DEUYP2QZ.js → rules-B4Dq5c0s.js} +6 -6
- package/dist/{run-scan-app-0v4YCLNw.js → run-scan-app-DiVEX1yA.js} +15 -14
- package/dist/{runtime-scan-CrdGMGtp.js → runtime-scan-WErSEFfG.js} +9 -9
- package/dist/{sanitize-runtime-url-DMNbP5D7.js → sanitize-runtime-url-BB5x484j.js} +4 -4
- package/dist/{scan-BjmlwnGK.js → scan-58Yq0rYJ.js} +9 -9
- package/dist/{should-fail-scan-gate-DFrfU9H8.js → should-fail-scan-gate-BCCblBL_.js} +11 -11
- package/dist/{should-skip-prompts-jB7AIlXO.js → should-skip-prompts-DzzBAamD.js} +4 -4
- package/dist/{should-use-tui-DwO2FSvM.js → should-use-tui-DVrQvWL6.js} +4 -4
- package/dist/{telemetry-runtime-EpReAdpc.js → telemetry-runtime-B45Ns9aS.js} +55 -7
- package/dist/{version-LTrxsytD.js → version-Cad39N0q.js} +4 -4
- package/dist/{why-i7UomrTB.js → why-DIEM7rdZ.js} +4 -4
- package/dist/{with-run-span-tKhCINUb.js → with-run-span-B9ScJJx3.js} +5 -5
- package/package.json +2 -2
package/dist/index.js
CHANGED
|
@@ -1,14 +1,15 @@
|
|
|
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]="a1e2a7e6-0206-5651-a0a6-bfbbbcae5a42")}catch(e){}}();
|
|
3
3
|
import { i as __toESM, r as __require, t as __commonJSMin } from "./chunk-ChKA3wi6.js";
|
|
4
4
|
import { createRequire } from "node:module";
|
|
5
5
|
import * as path$1$1 from "node:path";
|
|
6
|
-
import path from "node:path";
|
|
6
|
+
import path, { join, posix } from "node:path";
|
|
7
7
|
import * as fs$1$3 from "node:fs";
|
|
8
|
-
import fs from "node:fs";
|
|
8
|
+
import fs, { existsSync } from "node:fs";
|
|
9
9
|
import * as NodeChildProcess from "node:child_process";
|
|
10
10
|
import { execFile, execFileSync, spawn, spawnSync } from "node:child_process";
|
|
11
11
|
import ts from "typescript";
|
|
12
|
+
import { parseSync } from "oxc-parser";
|
|
12
13
|
import { ALL_REACT_DOCTOR_RULE_KEYS, CROSS_FILE_DEPENDENCY_COLLECTORS, CROSS_FILE_RULE_IDS, FRAMEWORK_SPECIFIC_RULE_KEYS, FRAMEWORK_TOKENS, MOTION_LIBRARY_PACKAGES, REACT_COMPILER_RULES, REACT_DOCTOR_OPT_IN_PROJECT_RULE_IDS, REACT_DOCTOR_PROJECT_RULES, REACT_DOCTOR_RULES, REACT_DOCTOR_RULE_REGISTRY, REACT_DOCTOR_SCAN_RULES, classifySecurityScanFile, collectCrossFileDependencyProbes, resetManifestCaches, shouldReadSecurityScanContent } from "oxlint-plugin-react-doctor/core";
|
|
13
14
|
import * as Crypto from "node:crypto";
|
|
14
15
|
import crypto, { createHash, randomUUID } from "node:crypto";
|
|
@@ -18,7 +19,7 @@ import { fileURLToPath } from "node:url";
|
|
|
18
19
|
import * as OS from "node:os";
|
|
19
20
|
import os from "node:os";
|
|
20
21
|
import { createJiti } from "jiti";
|
|
21
|
-
import { parseJSON5 } from "confbox";
|
|
22
|
+
import { parseJSON5, parseJSONC } from "confbox";
|
|
22
23
|
import * as fs$1 from "node:fs/promises";
|
|
23
24
|
import { PassThrough } from "node:stream";
|
|
24
25
|
import { convertToTSX } from "@astrojs/compiler/sync";
|
|
@@ -1883,7 +1884,7 @@ var require_picomatch$1 = /* @__PURE__ */ __commonJSMin(((exports, module) => {
|
|
|
1883
1884
|
module.exports = picomatch;
|
|
1884
1885
|
}));
|
|
1885
1886
|
//#endregion
|
|
1886
|
-
//#region ../core/dist/collect-unplugin-auto-import-global-scopes-
|
|
1887
|
+
//#region ../core/dist/collect-unplugin-auto-import-global-scopes-hOS9iAJg.js
|
|
1887
1888
|
var import_picomatch = /* @__PURE__ */ __toESM((/* @__PURE__ */ __commonJSMin(((exports, module) => {
|
|
1888
1889
|
const pico = require_picomatch$1();
|
|
1889
1890
|
const utils = require_utils();
|
|
@@ -2397,6 +2398,74 @@ const compileGlobPatternsLenient = (patterns, onInvalid) => {
|
|
|
2397
2398
|
}
|
|
2398
2399
|
return compiled;
|
|
2399
2400
|
};
|
|
2401
|
+
const isOxcAstNode = (value) => Boolean(value) && typeof value === "object" && typeof value.type === "string";
|
|
2402
|
+
const getStaticModuleSpecifier = (value) => {
|
|
2403
|
+
if (!isOxcAstNode(value)) return void 0;
|
|
2404
|
+
if (typeof value.value === "string") return value.value;
|
|
2405
|
+
if (value.type === "TemplateLiteral" && Array.isArray(value.expressions) && value.expressions.length === 0 && Array.isArray(value.quasis) && isOxcAstNode(value.quasis[0]) && value.quasis[0].value && typeof value.quasis[0].value === "object" && "cooked" in value.quasis[0].value && typeof value.quasis[0].value.cooked === "string") return value.quasis[0].value.cooked;
|
|
2406
|
+
};
|
|
2407
|
+
const collectStaticModuleSpecifiers = (sourceText, options = {}) => {
|
|
2408
|
+
const { filePath = "module.tsx", includeTypeOnly = true } = options;
|
|
2409
|
+
const parsedModule = parseSync(filePath, sourceText, { sourceType: "unambiguous" });
|
|
2410
|
+
const moduleSpecifiers = /* @__PURE__ */ new Set();
|
|
2411
|
+
const addSpecifier = (value) => {
|
|
2412
|
+
const moduleSpecifier = getStaticModuleSpecifier(value);
|
|
2413
|
+
if (moduleSpecifier) moduleSpecifiers.add(moduleSpecifier);
|
|
2414
|
+
};
|
|
2415
|
+
const visitNode = (value) => {
|
|
2416
|
+
if (Array.isArray(value)) {
|
|
2417
|
+
for (const child of value) visitNode(child);
|
|
2418
|
+
return;
|
|
2419
|
+
}
|
|
2420
|
+
if (!isOxcAstNode(value)) return;
|
|
2421
|
+
if (value.type === "ImportDeclaration") {
|
|
2422
|
+
const specifiers = Array.isArray(value.specifiers) ? value.specifiers : [];
|
|
2423
|
+
const hasRuntimeSpecifier = specifiers.some((specifier) => !isOxcAstNode(specifier) || specifier.importKind !== "type");
|
|
2424
|
+
if (includeTypeOnly || value.importKind !== "type" && (specifiers.length === 0 || hasRuntimeSpecifier)) addSpecifier(value.source);
|
|
2425
|
+
} else if (value.type === "ExportNamedDeclaration") {
|
|
2426
|
+
const specifiers = Array.isArray(value.specifiers) ? value.specifiers : [];
|
|
2427
|
+
const hasRuntimeSpecifier = specifiers.some((specifier) => !isOxcAstNode(specifier) || specifier.exportKind !== "type");
|
|
2428
|
+
if (includeTypeOnly || value.exportKind !== "type" && (specifiers.length === 0 || hasRuntimeSpecifier)) addSpecifier(value.source);
|
|
2429
|
+
} else if (value.type === "ExportAllDeclaration" || value.type === "ImportExpression") {
|
|
2430
|
+
if (includeTypeOnly || value.exportKind !== "type") addSpecifier(value.source);
|
|
2431
|
+
} else if (value.type === "TSImportType") {
|
|
2432
|
+
if (includeTypeOnly) addSpecifier(value.source);
|
|
2433
|
+
} else if (value.type === "TSExternalModuleReference") addSpecifier(value.expression);
|
|
2434
|
+
else if (value.type === "CallExpression" && isOxcAstNode(value.callee) && value.callee.type === "Identifier" && value.callee.name === "require" && Array.isArray(value.arguments) && value.arguments.length > 0) addSpecifier(value.arguments[0]);
|
|
2435
|
+
for (const child of Object.values(value)) visitNode(child);
|
|
2436
|
+
};
|
|
2437
|
+
visitNode(parsedModule.program);
|
|
2438
|
+
return moduleSpecifiers;
|
|
2439
|
+
};
|
|
2440
|
+
const toPosixPath = (filePath) => filePath.replace(/\\/g, "/");
|
|
2441
|
+
const isPathInsideDirectoryOrEqual = (candidatePath, directoryPath) => {
|
|
2442
|
+
const normalizedCandidatePath = posix.normalize(toPosixPath(candidatePath));
|
|
2443
|
+
const normalizedDirectoryPath = posix.normalize(toPosixPath(directoryPath));
|
|
2444
|
+
const relativePath = posix.relative(normalizedDirectoryPath, normalizedCandidatePath);
|
|
2445
|
+
return relativePath === "" || relativePath !== ".." && !relativePath.startsWith("../") && !posix.isAbsolute(relativePath);
|
|
2446
|
+
};
|
|
2447
|
+
const RESOLVABLE_EXTENSIONS = [
|
|
2448
|
+
".ts",
|
|
2449
|
+
".tsx",
|
|
2450
|
+
".js",
|
|
2451
|
+
".jsx",
|
|
2452
|
+
".mjs",
|
|
2453
|
+
".mts",
|
|
2454
|
+
".cjs",
|
|
2455
|
+
".cts",
|
|
2456
|
+
".es6"
|
|
2457
|
+
];
|
|
2458
|
+
const resolveEntryWithExtensions = (basePath) => {
|
|
2459
|
+
if (existsSync(basePath)) return basePath;
|
|
2460
|
+
for (const extension of RESOLVABLE_EXTENSIONS) {
|
|
2461
|
+
const withExtension = basePath + extension;
|
|
2462
|
+
if (existsSync(withExtension)) return withExtension;
|
|
2463
|
+
}
|
|
2464
|
+
for (const extension of RESOLVABLE_EXTENSIONS) {
|
|
2465
|
+
const indexCandidate = join(basePath, `index${extension}`);
|
|
2466
|
+
if (existsSync(indexCandidate)) return indexCandidate;
|
|
2467
|
+
}
|
|
2468
|
+
};
|
|
2400
2469
|
/**
|
|
2401
2470
|
* Resolves a path to its canonical, symlink-free form, falling back to
|
|
2402
2471
|
* the input when it cannot be realpath'd (broken symlink, permission
|
|
@@ -53517,7 +53586,7 @@ const await_ = fiberAwait;
|
|
|
53517
53586
|
* @category combinators
|
|
53518
53587
|
* @since 2.0.0
|
|
53519
53588
|
*/
|
|
53520
|
-
const join = fiberJoin;
|
|
53589
|
+
const join$1 = fiberJoin;
|
|
53521
53590
|
/**
|
|
53522
53591
|
* Interrupts a fiber, causing it to stop executing and clean up any
|
|
53523
53592
|
* acquired resources.
|
|
@@ -55514,7 +55583,7 @@ const mapEffectConcurrent = (self, f, options) => fromTransformBracket(fnUntrace
|
|
|
55514
55583
|
const fiber = runFork(f(value, i++));
|
|
55515
55584
|
trackFiber(fiber);
|
|
55516
55585
|
fiber.addObserver(onExit);
|
|
55517
|
-
return offer(effects, join(fiber));
|
|
55586
|
+
return offer(effects, join$1(fiber));
|
|
55518
55587
|
}), forever({ disableYield: true }), catchCause$1((cause) => offer(effects, failCause$3(cause)).pipe(andThen(failCause$1(effects, cause)))), forkIn(forkedScope));
|
|
55519
55588
|
}
|
|
55520
55589
|
return take(queue);
|
|
@@ -55840,9 +55909,9 @@ const mergeAll = /* @__PURE__ */ dual(2, (channels, { bufferSize = 16, concurren
|
|
|
55840
55909
|
if (semaphore) if (fibers.size < concurrencyN) yield* semaphore.take(1);
|
|
55841
55910
|
else {
|
|
55842
55911
|
pullFiber = yield* forkChild(pull);
|
|
55843
|
-
yield* raceFirst(semaphore.take(1), andThen(join(pullFiber), never));
|
|
55912
|
+
yield* raceFirst(semaphore.take(1), andThen(join$1(pullFiber), never));
|
|
55844
55913
|
}
|
|
55845
|
-
const channel = pullFiber === void 0 ? yield* pull : yield* join(pullFiber);
|
|
55914
|
+
const channel = pullFiber === void 0 ? yield* pull : yield* join$1(pullFiber);
|
|
55846
55915
|
const childScope = forkUnsafe(forkedScope);
|
|
55847
55916
|
const childPull = yield* toTransform(channel)(upstream, childScope);
|
|
55848
55917
|
while (fibers.size >= concurrencyN) {
|
|
@@ -69759,18 +69828,58 @@ const METRO_CONFIG_FILE_NAMES = [
|
|
|
69759
69828
|
const EXPO_METRO_CONFIG_EXTEND_SIGNALS = [
|
|
69760
69829
|
"expo/metro-config",
|
|
69761
69830
|
"@sentry/react-native/metro",
|
|
69762
|
-
"getSentryExpoConfig"
|
|
69831
|
+
"getSentryExpoConfig",
|
|
69832
|
+
"posthog-react-native/metro",
|
|
69833
|
+
"getPostHogExpoConfig"
|
|
69763
69834
|
];
|
|
69835
|
+
const resolveLocalMetroConfigModule = (moduleSpecifier, importingFilePath, rootDirectory) => {
|
|
69836
|
+
if (!moduleSpecifier.startsWith(".")) return void 0;
|
|
69837
|
+
const importedPath = path$1$1.resolve(path$1$1.dirname(importingFilePath), moduleSpecifier);
|
|
69838
|
+
const candidateBasePaths = [
|
|
69839
|
+
importedPath,
|
|
69840
|
+
importedPath.replace(/\.[cm]?js$/, ""),
|
|
69841
|
+
path$1$1.join(importedPath, "index")
|
|
69842
|
+
];
|
|
69843
|
+
for (const candidateBasePath of candidateBasePaths) {
|
|
69844
|
+
const resolvedPath = resolveEntryWithExtensions(candidateBasePath);
|
|
69845
|
+
if (resolvedPath !== void 0 && isFile(resolvedPath) && isPathInsideDirectoryOrEqual(resolvedPath, rootDirectory)) return resolvedPath;
|
|
69846
|
+
}
|
|
69847
|
+
};
|
|
69848
|
+
const hasExpoMetroConfigSignal = (metroConfigPath, rootDirectory) => {
|
|
69849
|
+
const pendingFilePaths = [metroConfigPath];
|
|
69850
|
+
const visitedFilePaths = /* @__PURE__ */ new Set();
|
|
69851
|
+
while (pendingFilePaths.length > 0) {
|
|
69852
|
+
const currentFilePath = pendingFilePaths.pop();
|
|
69853
|
+
if (currentFilePath === void 0 || visitedFilePaths.has(currentFilePath)) continue;
|
|
69854
|
+
if (visitedFilePaths.size >= 100) return true;
|
|
69855
|
+
visitedFilePaths.add(currentFilePath);
|
|
69856
|
+
let contents;
|
|
69857
|
+
try {
|
|
69858
|
+
contents = fs$1$3.readFileSync(currentFilePath, "utf-8");
|
|
69859
|
+
} catch {
|
|
69860
|
+
return true;
|
|
69861
|
+
}
|
|
69862
|
+
if (EXPO_METRO_CONFIG_EXTEND_SIGNALS.some((signal) => contents.includes(signal))) return true;
|
|
69863
|
+
let moduleSpecifiers;
|
|
69864
|
+
try {
|
|
69865
|
+
moduleSpecifiers = collectStaticModuleSpecifiers(contents, {
|
|
69866
|
+
filePath: currentFilePath,
|
|
69867
|
+
includeTypeOnly: false
|
|
69868
|
+
});
|
|
69869
|
+
} catch {
|
|
69870
|
+
continue;
|
|
69871
|
+
}
|
|
69872
|
+
for (const moduleSpecifier of moduleSpecifiers) {
|
|
69873
|
+
const localModulePath = resolveLocalMetroConfigModule(moduleSpecifier, currentFilePath, rootDirectory);
|
|
69874
|
+
if (localModulePath !== void 0 && !visitedFilePaths.has(localModulePath)) pendingFilePaths.push(localModulePath);
|
|
69875
|
+
}
|
|
69876
|
+
}
|
|
69877
|
+
return false;
|
|
69878
|
+
};
|
|
69764
69879
|
const checkExpoMetroConfig = (context) => {
|
|
69765
69880
|
const metroConfigPath = METRO_CONFIG_FILE_NAMES.map((fileName) => path$1$1.join(context.rootDirectory, fileName)).find((candidatePath) => isFile(candidatePath));
|
|
69766
69881
|
if (metroConfigPath === void 0) return [];
|
|
69767
|
-
|
|
69768
|
-
try {
|
|
69769
|
-
contents = fs$1$3.readFileSync(metroConfigPath, "utf-8");
|
|
69770
|
-
} catch {
|
|
69771
|
-
return [];
|
|
69772
|
-
}
|
|
69773
|
-
if (EXPO_METRO_CONFIG_EXTEND_SIGNALS.some((signal) => contents.includes(signal))) return [];
|
|
69882
|
+
if (hasExpoMetroConfigSignal(metroConfigPath, context.rootDirectory)) return [];
|
|
69774
69883
|
return [buildExpoDiagnostic({
|
|
69775
69884
|
rule: "expo-metro-config",
|
|
69776
69885
|
filePath: path$1$1.basename(metroConfigPath),
|
|
@@ -73025,59 +73134,11 @@ const isLocalPathExtend = (entry) => {
|
|
|
73025
73134
|
for (const prefix of EXTENDS_LOCAL_PATH_PREFIXES) if (entry.startsWith(prefix)) return true;
|
|
73026
73135
|
return false;
|
|
73027
73136
|
};
|
|
73028
|
-
const stripJsoncComments = (raw) => {
|
|
73029
|
-
let result = "";
|
|
73030
|
-
let cursor = 0;
|
|
73031
|
-
let inString = false;
|
|
73032
|
-
let stringQuote = "";
|
|
73033
|
-
while (cursor < raw.length) {
|
|
73034
|
-
const character = raw[cursor];
|
|
73035
|
-
const nextCharacter = raw[cursor + 1];
|
|
73036
|
-
if (inString) {
|
|
73037
|
-
result += character;
|
|
73038
|
-
if (character === "\\" && cursor + 1 < raw.length) {
|
|
73039
|
-
result += nextCharacter;
|
|
73040
|
-
cursor += 2;
|
|
73041
|
-
continue;
|
|
73042
|
-
}
|
|
73043
|
-
if (character === stringQuote) inString = false;
|
|
73044
|
-
cursor += 1;
|
|
73045
|
-
continue;
|
|
73046
|
-
}
|
|
73047
|
-
if (character === "\"" || character === "'") {
|
|
73048
|
-
inString = true;
|
|
73049
|
-
stringQuote = character;
|
|
73050
|
-
result += character;
|
|
73051
|
-
cursor += 1;
|
|
73052
|
-
continue;
|
|
73053
|
-
}
|
|
73054
|
-
if (character === "/" && nextCharacter === "/") {
|
|
73055
|
-
const lineEndIndex = raw.indexOf("\n", cursor);
|
|
73056
|
-
cursor = lineEndIndex === -1 ? raw.length : lineEndIndex;
|
|
73057
|
-
continue;
|
|
73058
|
-
}
|
|
73059
|
-
if (character === "/" && nextCharacter === "*") {
|
|
73060
|
-
const blockEndIndex = raw.indexOf("*/", cursor + 2);
|
|
73061
|
-
cursor = blockEndIndex === -1 ? raw.length : blockEndIndex + 2;
|
|
73062
|
-
continue;
|
|
73063
|
-
}
|
|
73064
|
-
result += character;
|
|
73065
|
-
cursor += 1;
|
|
73066
|
-
}
|
|
73067
|
-
return result;
|
|
73068
|
-
};
|
|
73069
|
-
const parseJsonOrJsonc = (raw) => {
|
|
73070
|
-
try {
|
|
73071
|
-
return JSON.parse(raw);
|
|
73072
|
-
} catch {
|
|
73073
|
-
return JSON.parse(stripJsoncComments(raw));
|
|
73074
|
-
}
|
|
73075
|
-
};
|
|
73076
73137
|
const canOxlintExtendConfig = (configPath) => {
|
|
73077
73138
|
if (!configPath.endsWith(".eslintrc.json")) return true;
|
|
73078
73139
|
let parsed;
|
|
73079
73140
|
try {
|
|
73080
|
-
parsed =
|
|
73141
|
+
parsed = parseJSONC(fs$1$3.readFileSync(configPath, "utf-8"), { allowTrailingComma: true });
|
|
73081
73142
|
} catch {
|
|
73082
73143
|
return true;
|
|
73083
73144
|
}
|
|
@@ -73189,6 +73250,25 @@ const detectUserLintConfigPaths = (rootDirectory) => {
|
|
|
73189
73250
|
}
|
|
73190
73251
|
return [];
|
|
73191
73252
|
};
|
|
73253
|
+
const readAdoptedLintConfigSettings = (configPaths) => {
|
|
73254
|
+
const mergedSettings = /* @__PURE__ */ new Map();
|
|
73255
|
+
for (const configPath of configPaths) {
|
|
73256
|
+
let parsed;
|
|
73257
|
+
try {
|
|
73258
|
+
parsed = parseJSONC(fs$1$3.readFileSync(configPath, "utf-8"), { allowTrailingComma: true });
|
|
73259
|
+
} catch {
|
|
73260
|
+
continue;
|
|
73261
|
+
}
|
|
73262
|
+
if (!isPlainObject(parsed)) continue;
|
|
73263
|
+
const settings = parsed.settings;
|
|
73264
|
+
if (!isPlainObject(settings)) continue;
|
|
73265
|
+
for (const [pluginName, pluginSettings] of Object.entries(settings)) {
|
|
73266
|
+
if (pluginName === "react-doctor") continue;
|
|
73267
|
+
mergedSettings.set(pluginName, pluginSettings);
|
|
73268
|
+
}
|
|
73269
|
+
}
|
|
73270
|
+
return Object.fromEntries(mergedSettings);
|
|
73271
|
+
};
|
|
73192
73272
|
const DISABLE_DIRECTIVE_PATTERN = /(eslint|oxlint)-disable/;
|
|
73193
73273
|
const getBackupRootDirectory = (rootDirectory) => path$1$1.join(rootDirectory, ...DISABLE_DIRECTIVE_BACKUP_DIRECTORY_SEGMENTS);
|
|
73194
73274
|
const getBackupPath = (rootDirectory, absolutePath) => {
|
|
@@ -73585,7 +73665,7 @@ const buildUserPluginRules = (userPlugin, severityControls) => {
|
|
|
73585
73665
|
}
|
|
73586
73666
|
return enabled;
|
|
73587
73667
|
};
|
|
73588
|
-
const createOxlintConfig = ({ pluginPath, project, customRulesOnly = false, extendsPaths = [], ignoredTags = /* @__PURE__ */ new Set(), includedTags = /* @__PURE__ */ new Set(), includeTagDefaults = false, runtimeGlobals, unpluginAutoImportGlobalScopes, serverAuthFunctionNames, projectIndexModuleSources, severityControls, userPlugins = [], disableReactHooksJsPlugin = false, ruleSelection, sidecarRuleIdFilter }) => {
|
|
73668
|
+
const createOxlintConfig = ({ pluginPath, project, customRulesOnly = false, extendsPaths = [], ignoredTags = /* @__PURE__ */ new Set(), includedTags = /* @__PURE__ */ new Set(), includeTagDefaults = false, runtimeGlobals, unpluginAutoImportGlobalScopes, serverAuthFunctionNames, projectIndexModuleSources, severityControls, adoptedSettings = {}, userPlugins = [], disableReactHooksJsPlugin = false, ruleSelection, sidecarRuleIdFilter }) => {
|
|
73589
73669
|
const hasIncludedTags = includedTags.size > 0;
|
|
73590
73670
|
const reactHooksJsPlugin = disableReactHooksJsPlugin || ruleSelection === "sidecar" || hasIncludedTags ? null : resolveReactHooksJsPlugin(project.hasReactCompiler || project.hasReactCompilerLintPlugin === true, customRulesOnly);
|
|
73591
73671
|
const reactCompilerRules = reactHooksJsPlugin ? applyRuleSeverityControls(filterRulesToAvailable(REACT_COMPILER_RULES, "react-hooks-js", reactHooksJsPlugin.availableRuleNames), severityControls) : {};
|
|
@@ -73640,23 +73720,26 @@ const createOxlintConfig = ({ pluginPath, project, customRulesOnly = false, exte
|
|
|
73640
73720
|
},
|
|
73641
73721
|
plugins: [],
|
|
73642
73722
|
jsPlugins: [...jsPlugins, pluginPath],
|
|
73643
|
-
settings: {
|
|
73644
|
-
|
|
73645
|
-
|
|
73646
|
-
|
|
73647
|
-
|
|
73648
|
-
|
|
73649
|
-
|
|
73650
|
-
|
|
73651
|
-
unpluginAutoImportGlobalScopes
|
|
73652
|
-
|
|
73653
|
-
|
|
73654
|
-
|
|
73655
|
-
|
|
73656
|
-
|
|
73657
|
-
|
|
73658
|
-
|
|
73659
|
-
|
|
73723
|
+
settings: {
|
|
73724
|
+
...adoptedSettings,
|
|
73725
|
+
"react-doctor": {
|
|
73726
|
+
portedRuleMode: "curated",
|
|
73727
|
+
framework: project.framework,
|
|
73728
|
+
rootDirectory: settingsRootDirectory,
|
|
73729
|
+
capabilities: [...capabilities].sort(),
|
|
73730
|
+
...runtimeGlobals && runtimeGlobals.length > 0 ? { runtimeGlobals: [...runtimeGlobals] } : {},
|
|
73731
|
+
...unpluginAutoImportGlobalScopes && unpluginAutoImportGlobalScopes.length > 0 ? {
|
|
73732
|
+
unpluginAutoImportRootDirectories: [...new Set([settingsRootDirectory, project.rootDirectory])],
|
|
73733
|
+
unpluginAutoImportGlobalScopes: unpluginAutoImportGlobalScopes.map((scope) => ({
|
|
73734
|
+
directory: scope.directory,
|
|
73735
|
+
names: [...scope.names]
|
|
73736
|
+
}))
|
|
73737
|
+
} : {},
|
|
73738
|
+
...project.shopifyFlashListMajorVersion !== null ? { shopifyFlashListMajorVersion: project.shopifyFlashListMajorVersion } : {},
|
|
73739
|
+
...serverAuthFunctionNames && serverAuthFunctionNames.length > 0 ? { serverAuthFunctionNames: [...serverAuthFunctionNames] } : {},
|
|
73740
|
+
...projectIndexModuleSources !== void 0 ? { projectIndexModuleSources: [...projectIndexModuleSources] } : {}
|
|
73741
|
+
}
|
|
73742
|
+
},
|
|
73660
73743
|
rules: {
|
|
73661
73744
|
...reactCompilerRules,
|
|
73662
73745
|
...enabledReactDoctorRules,
|
|
@@ -75765,7 +75848,9 @@ const runOxlint = async (options) => {
|
|
|
75765
75848
|
return [];
|
|
75766
75849
|
}
|
|
75767
75850
|
const pluginPath = resolvePluginPath();
|
|
75768
|
-
const
|
|
75851
|
+
const detectedConfigPaths = adoptExistingLintConfig && !customRulesOnly ? detectUserLintConfigPaths(rootDirectory) : [];
|
|
75852
|
+
const extendsPaths = detectedConfigPaths.filter(canOxlintExtendConfig);
|
|
75853
|
+
const adoptedSettings = detectedConfigPaths.length > 0 ? readAdoptedLintConfigSettings(detectedConfigPaths) : {};
|
|
75769
75854
|
const userPlugins = includedTags.size > 0 ? [] : resolveUserPlugins(userConfig?.plugins, configSourceDirectory);
|
|
75770
75855
|
const restoreDisableDirectives = await neutralizeDisableDirectives(rootDirectory, includePaths ?? options.precomputedSourceFiles?.map((sourceFile) => sourceFile.path), { recoverOnly: respectInlineDisables });
|
|
75771
75856
|
const configDirectory = fs$1$3.mkdtempSync(path$1$1.join(os.tmpdir(), "react-doctor-oxlintrc-"));
|
|
@@ -75827,6 +75912,7 @@ const runOxlint = async (options) => {
|
|
|
75827
75912
|
serverAuthFunctionNames,
|
|
75828
75913
|
projectIndexModuleSources,
|
|
75829
75914
|
severityControls,
|
|
75915
|
+
adoptedSettings,
|
|
75830
75916
|
userPlugins,
|
|
75831
75917
|
disableReactHooksJsPlugin: overrides.disableReactHooksJsPlugin,
|
|
75832
75918
|
ruleSelection: overrides.ruleSelection,
|
|
@@ -77209,9 +77295,9 @@ const runInspect = (input, hooks = {}) => gen(function* () {
|
|
|
77209
77295
|
if (!lintFailureState.didFail) if (maintainabilityFailureState.didFail) yield* scanProgress.fail(MAINTAINABILITY_FAIL_TEXT);
|
|
77210
77296
|
else if (input.suppressScanSummary) yield* scanProgress.stop();
|
|
77211
77297
|
else yield* scanProgress.succeed(`Scanned ${scannedFilesLabel} in ${scanElapsedSeconds}s${workerCountSuffix}`);
|
|
77212
|
-
const supplyChainResult = yield* join(supplyChainFiber);
|
|
77298
|
+
const supplyChainResult = yield* join$1(supplyChainFiber);
|
|
77213
77299
|
const supplyChainCollected = supplyChainResult.diagnostics;
|
|
77214
|
-
const securityScanCollected = yield* join(securityScanFiber);
|
|
77300
|
+
const securityScanCollected = yield* join$1(securityScanFiber);
|
|
77215
77301
|
yield* reporterService.finalize;
|
|
77216
77302
|
const finalDiagnostics = sortDiagnosticsStable(assignFixGroups([
|
|
77217
77303
|
...envCollected,
|
|
@@ -77220,7 +77306,7 @@ const runInspect = (input, hooks = {}) => gen(function* () {
|
|
|
77220
77306
|
...lintCollected,
|
|
77221
77307
|
...maintainabilityCollected
|
|
77222
77308
|
]));
|
|
77223
|
-
const githubViewerPermission = yield* join(githubViewerPermissionFiber);
|
|
77309
|
+
const githubViewerPermission = yield* join$1(githubViewerPermissionFiber);
|
|
77224
77310
|
const scoreMetadata = {
|
|
77225
77311
|
...repo !== null ? { repo } : {},
|
|
77226
77312
|
...sha !== null ? { sha } : {},
|
|
@@ -78070,4 +78156,4 @@ const toJsonReport = (result, options) => buildJsonReport({
|
|
|
78070
78156
|
export { AmbiguousProjectError, NoReactDependencyError, NotADirectoryError, PackageJsonNotFoundError, ProjectNotFoundError, ReactDoctorError, buildJsonReport, buildJsonReportError, clearCaches, defineConfig, diagnose, filterSourceFiles, getDiffInfo, hasReactRuntime, isProjectDiscoveryError, isReactDoctorError, summarizeDiagnostics, toJsonReport };
|
|
78071
78157
|
|
|
78072
78158
|
//# sourceMappingURL=index.js.map
|
|
78073
|
-
//# debugId=
|
|
78159
|
+
//# debugId=a1e2a7e6-0206-5651-a0a6-bfbbbcae5a42
|
|
@@ -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]="
|
|
3
|
-
import { An as gen, At as discoverSupportedSubprojects, Bt as getDiffInfo, Cr as messageFromUnknown, F as STAGED_FILES_TEMP_DIR_PREFIX, Fn as provide$1, Gn as provide, H as isDebugFlagEnabled, I as STAGED_SNAPSHOT_ADDITIONAL_CONFIG_FILENAMES, Jt as isPathInsideDirectory, K as isCiOrCodingAgentEnvironment, Kt as highlighter, Lt as getBaselineDiffPlan, Pt as findLegacyConfig, Rn as runPromise, Rt as getChangedLineRanges, Sr as isPlainObject, T as METRIC, Wt as hasSupportedFrameworkOrLibrary, X as Git, _ as VERSION, _r as STAGED_FILES_PROJECT_CONFIG_FILENAMES, br as isErrnoException, er as CANONICAL_GITHUB_URL, f as setJsonReportDirectory, fn as resolveScanTarget, g as writeJsonReport, h as writeJsonErrorReport, ht as buildJsonReport, in as mapWithConcurrency, kt as detectAiTrainingEnvironment, n as recordDistribution, nn as listWorkspacePackages, p as setJsonReportMode, q as isCodingAgentEnvironment, sn as remainingDeadlineBudgetMs, t as recordCount, u as enableJsonMode, ut as StagedFiles, yn as toRelativePath, z as CliInputError } from "./record-metric-
|
|
4
|
-
import { n as shutdownTelemetry, r as isExpectedUserError } from "./telemetry-runtime-
|
|
5
|
-
import { r as flushSentry } from "./build-section-divider-
|
|
6
|
-
import { n as handleUserError, t as handleError } from "./handle-error-
|
|
7
|
-
import { t as reportErrorToSentry } from "./report-error-
|
|
8
|
-
import { A as runGitRaw, M as cliLogger, c as spinner, i as hasDoctorScript, n as findNearestPackageDirectory, o as isSpinnerSilent, s as setSpinnerSilent } from "./install-doctor-script-
|
|
9
|
-
import { a as readReactDoctorWorkflow, c as workflowUsesV1Action, i as isReactDoctorWorkflowInstalled, l as prompts, s as upgradeWorkflowActionToV2 } from "./install-github-workflow-
|
|
10
|
-
import { c as openWorkflowPullRequest, i as warnDeprecatedDiff, l as stageWorkflowFile, r as resolveScope, s as resolveBlockingLevel, t as finalizeScope, u as toForwardSlashes } from "./resolve-scope-
|
|
11
|
-
import { t as shouldSkipPrompts } from "./should-skip-prompts-
|
|
12
|
-
import { A as resolveMergeBaseRef, C as copyToClipboard, D as deduplicateProjectScans, E as collectProjectSourceFileCounts, I as printDiagnosticsDump, O as createInvocationInspect, S as CLI_AGENT_BINARIES, T as buildHandoffPayload, V as buildEmptyReportMessage, _ as resolveCliInspectOptions, a as projectManifestChanged, b as setUpGitHubActions, c as selectProjects, d as resolveProjectChangedLineRanges, f as resolveProjectDiffIncludePaths, g as resolveWorkspaceDeadCodeOwner, h as retryMissingProjectScores, i as validateModeFlags, j as printHeadlessReport, k as inspect, l as buildCodeFrame, m as resolveProjectRelativeDirectory, n as formatSkippedProjectsMessage, o as partitionProjectScanOutcomes, p as resolveProjectSourceFilePaths, r as validateIncludeUntrackedScope, t as shouldFailScanGate, u as resolveProjectScan, v as filterScansForSurface, w as launchCliAgent, x as detectLaunchableAgents, y as countUniqueScannedFiles, z as filterDiagnosticsByCategories } from "./should-fail-scan-gate-
|
|
13
|
-
import { a as recordGate, i as readPreference, o as runMigrations, p as SETUP_HINT_EVENT, r as isGatePending, s as writePreference, u as HANDOFF_TARGET_PREFERENCE_ID } from "./report-workflow-result-
|
|
14
|
-
import { a as askUpgradeActionVersion, c as recordCiPromptDecision, i as installReactDoctorAgentHooks, l as hasHandledActionUpgrade, o as askAddToGitHubActions, r as findAgentsWithOutdatedReactDoctorHooks, s as hasHandledCiPrompt, t as getSkillSourceDirectory, u as recordActionUpgradeDecision } from "./install-react-doctor-
|
|
15
|
-
import { t as readObjectFile } from "./read-object-file-
|
|
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]="851d0a45-c27e-5720-9c52-0962eb25857e")}catch(e){}}();
|
|
3
|
+
import { An as gen, At as discoverSupportedSubprojects, Bt as getDiffInfo, Cr as messageFromUnknown, F as STAGED_FILES_TEMP_DIR_PREFIX, Fn as provide$1, Gn as provide, H as isDebugFlagEnabled, I as STAGED_SNAPSHOT_ADDITIONAL_CONFIG_FILENAMES, Jt as isPathInsideDirectory, K as isCiOrCodingAgentEnvironment, Kt as highlighter, Lt as getBaselineDiffPlan, Pt as findLegacyConfig, Rn as runPromise, Rt as getChangedLineRanges, Sr as isPlainObject, T as METRIC, Wt as hasSupportedFrameworkOrLibrary, X as Git, _ as VERSION, _r as STAGED_FILES_PROJECT_CONFIG_FILENAMES, br as isErrnoException, er as CANONICAL_GITHUB_URL, f as setJsonReportDirectory, fn as resolveScanTarget, g as writeJsonReport, h as writeJsonErrorReport, ht as buildJsonReport, in as mapWithConcurrency, kt as detectAiTrainingEnvironment, n as recordDistribution, nn as listWorkspacePackages, p as setJsonReportMode, q as isCodingAgentEnvironment, sn as remainingDeadlineBudgetMs, t as recordCount, u as enableJsonMode, ut as StagedFiles, yn as toRelativePath, z as CliInputError } from "./record-metric-DVm5sVu2.js";
|
|
4
|
+
import { n as shutdownTelemetry, r as isExpectedUserError } from "./telemetry-runtime-B45Ns9aS.js";
|
|
5
|
+
import { r as flushSentry } from "./build-section-divider-BpENvzwG.js";
|
|
6
|
+
import { n as handleUserError, t as handleError } from "./handle-error-CU-FMRyI.js";
|
|
7
|
+
import { t as reportErrorToSentry } from "./report-error-JXHy8xn6.js";
|
|
8
|
+
import { A as runGitRaw, M as cliLogger, c as spinner, i as hasDoctorScript, n as findNearestPackageDirectory, o as isSpinnerSilent, s as setSpinnerSilent } from "./install-doctor-script-GGnj8tcj.js";
|
|
9
|
+
import { a as readReactDoctorWorkflow, c as workflowUsesV1Action, i as isReactDoctorWorkflowInstalled, l as prompts, s as upgradeWorkflowActionToV2 } from "./install-github-workflow-DWmRP55H.js";
|
|
10
|
+
import { c as openWorkflowPullRequest, i as warnDeprecatedDiff, l as stageWorkflowFile, r as resolveScope, s as resolveBlockingLevel, t as finalizeScope, u as toForwardSlashes } from "./resolve-scope-CWo3o4bf.js";
|
|
11
|
+
import { t as shouldSkipPrompts } from "./should-skip-prompts-DzzBAamD.js";
|
|
12
|
+
import { A as resolveMergeBaseRef, C as copyToClipboard, D as deduplicateProjectScans, E as collectProjectSourceFileCounts, I as printDiagnosticsDump, O as createInvocationInspect, S as CLI_AGENT_BINARIES, T as buildHandoffPayload, V as buildEmptyReportMessage, _ as resolveCliInspectOptions, a as projectManifestChanged, b as setUpGitHubActions, c as selectProjects, d as resolveProjectChangedLineRanges, f as resolveProjectDiffIncludePaths, g as resolveWorkspaceDeadCodeOwner, h as retryMissingProjectScores, i as validateModeFlags, j as printHeadlessReport, k as inspect, l as buildCodeFrame, m as resolveProjectRelativeDirectory, n as formatSkippedProjectsMessage, o as partitionProjectScanOutcomes, p as resolveProjectSourceFilePaths, r as validateIncludeUntrackedScope, t as shouldFailScanGate, u as resolveProjectScan, v as filterScansForSurface, w as launchCliAgent, x as detectLaunchableAgents, y as countUniqueScannedFiles, z as filterDiagnosticsByCategories } from "./should-fail-scan-gate-BCCblBL_.js";
|
|
13
|
+
import { a as recordGate, i as readPreference, o as runMigrations, p as SETUP_HINT_EVENT, r as isGatePending, s as writePreference, u as HANDOFF_TARGET_PREFERENCE_ID } from "./report-workflow-result-CPMR84K_.js";
|
|
14
|
+
import { a as askUpgradeActionVersion, c as recordCiPromptDecision, i as installReactDoctorAgentHooks, l as hasHandledActionUpgrade, o as askAddToGitHubActions, r as findAgentsWithOutdatedReactDoctorHooks, s as hasHandledCiPrompt, t as getSkillSourceDirectory, u as recordActionUpgradeDecision } from "./install-react-doctor-Gzbw8Ue9.js";
|
|
15
|
+
import { t as readObjectFile } from "./read-object-file-NSp2cOs9.js";
|
|
16
16
|
import * as path$1 from "node:path";
|
|
17
17
|
import * as fs$1 from "node:fs";
|
|
18
18
|
import { tmpdir } from "node:os";
|
|
@@ -1441,5 +1441,5 @@ const inspectAction = async (directory, flags, invocationCommand = "inspect") =>
|
|
|
1441
1441
|
//#endregion
|
|
1442
1442
|
export { warnDeprecatedFailOn as n, runProjectMigrations as r, inspectAction as t };
|
|
1443
1443
|
|
|
1444
|
-
//# sourceMappingURL=inspect-
|
|
1445
|
-
//# debugId=
|
|
1444
|
+
//# sourceMappingURL=inspect-B9H_IT4O.js.map
|
|
1445
|
+
//# debugId=851d0a45-c27e-5720-9c52-0962eb25857e
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
|
|
2
|
-
!function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="
|
|
3
|
-
import { T as METRIC, t as recordCount, zn as runSync } from "./record-metric-
|
|
4
|
-
import { r as isExpectedUserError } from "./telemetry-runtime-
|
|
5
|
-
import { n as handleUserError, t as handleError } from "./handle-error-
|
|
6
|
-
import { t as reportErrorToSentry } from "./report-error-
|
|
7
|
-
import { t as printBrandedHeader } from "./print-branded-header-
|
|
8
|
-
import { n as runInstallReactDoctor } from "./install-react-doctor-
|
|
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]="16ceba29-ce2f-5e40-abce-0e926f60a615")}catch(e){}}();
|
|
3
|
+
import { T as METRIC, t as recordCount, zn as runSync } from "./record-metric-DVm5sVu2.js";
|
|
4
|
+
import { r as isExpectedUserError } from "./telemetry-runtime-B45Ns9aS.js";
|
|
5
|
+
import { n as handleUserError, t as handleError } from "./handle-error-CU-FMRyI.js";
|
|
6
|
+
import { t as reportErrorToSentry } from "./report-error-JXHy8xn6.js";
|
|
7
|
+
import { t as printBrandedHeader } from "./print-branded-header-CqvClso3.js";
|
|
8
|
+
import { n as runInstallReactDoctor } from "./install-react-doctor-Gzbw8Ue9.js";
|
|
9
9
|
//#region src/cli/commands/install.ts
|
|
10
10
|
const installAction = async (options, command) => {
|
|
11
11
|
recordCount(METRIC.cliInvoked, 1, { command: "install" });
|
|
@@ -29,5 +29,5 @@ const installAction = async (options, command) => {
|
|
|
29
29
|
//#endregion
|
|
30
30
|
export { installAction };
|
|
31
31
|
|
|
32
|
-
//# sourceMappingURL=install-
|
|
33
|
-
//# debugId=
|
|
32
|
+
//# sourceMappingURL=install-DoihOMNC.js.map
|
|
33
|
+
//# debugId=16ceba29-ce2f-5e40-abce-0e926f60a615
|
|
@@ -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, Cn as error$1, En as warn, Kt as highlighter, Tn as log, k as RUN_GIT_MAX_BUFFER_BYTES, wn as info$1, zn as runSync } 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]="9ec6d8a3-1259-5495-a20d-f1406222381c")}catch(e){}}();
|
|
3
|
+
import { B as isNonInteractiveEnvironment, Cn as error$1, En as warn, Kt as highlighter, Tn as log, k as RUN_GIT_MAX_BUFFER_BYTES, wn as info$1, zn as runSync } from "./record-metric-DVm5sVu2.js";
|
|
4
4
|
import { a as chalk, i as stripAnsi, t as eastAsianWidth } from "./get-east-asian-width-Cglw13G7.js";
|
|
5
5
|
import { execFileSync } from "node:child_process";
|
|
6
6
|
import * as path$1 from "node:path";
|
|
@@ -2805,5 +2805,5 @@ const installReactDoctorScriptStep = (projectRoot) => {
|
|
|
2805
2805
|
//#endregion
|
|
2806
2806
|
export { runGitRaw as A, isRecord as C, readPackageJson as D, packageHasRecordKey as E, cliLogger as M, resolveGitPath as O, getPackageJsonPath as S, packageHasNestedRecordKey as T, REACT_DOCTOR_COMMAND as _, installReactDoctorScriptStep as a, VITE_PLUS_HOOKS_PATH as b, spinner as c, HUSKY_HOOKS_PATH as d, LEFTHOOK_CONFIG_FILES as f, PRE_COMMIT_CONFIG_FILE as g, OVERCOMMIT_CONFIG_FILE as h, hasDoctorScript as i, writeJsonFile as j, runGit as k, HOOK_FILE_NAME as l, NON_BLOCKING_REACT_DOCTOR_COMMAND as m, findNearestPackageDirectory as n, isSpinnerSilent as o, LEGACY_HOOK_RUNNER_RELATIVE_PATH as p, hasDoctorDependency as r, setSpinnerSilent as s, DOCTOR_PACKAGE_NAME as t, HOOK_RELATIVE_PATH as u, SIMPLE_GIT_HOOKS_CONFIG_FILE as v, packageHasDependency as w, ensureTrailingNewline as x, SIMPLE_GIT_HOOKS_PACKAGE_JSON_KEY as y };
|
|
2807
2807
|
|
|
2808
|
-
//# sourceMappingURL=install-doctor-script-
|
|
2809
|
-
//# debugId=
|
|
2808
|
+
//# sourceMappingURL=install-doctor-script-GGnj8tcj.js.map
|
|
2809
|
+
//# debugId=9ec6d8a3-1259-5495-a20d-f1406222381c
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
|
|
2
|
-
!function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="
|
|
3
|
-
import { w as GH_DEFAULT_BRANCH_PROBE_TIMEOUT_MS } 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]="2321b299-e81e-5389-8a00-23f2186ac60b")}catch(e){}}();
|
|
3
|
+
import { w as GH_DEFAULT_BRANCH_PROBE_TIMEOUT_MS } from "./record-metric-DVm5sVu2.js";
|
|
4
4
|
import { t as unrefStdin } from "./unref-stdin-BKT_s38a.js";
|
|
5
|
-
import { M as cliLogger } from "./install-doctor-script-
|
|
5
|
+
import { M as cliLogger } from "./install-doctor-script-GGnj8tcj.js";
|
|
6
6
|
import { createRequire } from "node:module";
|
|
7
7
|
import { execFile } from "node:child_process";
|
|
8
8
|
import * as path$1 from "node:path";
|
|
@@ -183,6 +183,10 @@ jobs:
|
|
|
183
183
|
# the gate: uncomment the block below and set blocking to "error" (fail
|
|
184
184
|
# on new error-severity findings) or "warning" (fail on any finding).
|
|
185
185
|
# Full reference: https://www.react.doctor/ci
|
|
186
|
+
#
|
|
187
|
+
# Security: @v2 is a floating major tag that may move. For supply-chain-
|
|
188
|
+
# hardened CI, pin to a full commit SHA with a version comment instead:
|
|
189
|
+
# uses: millionco/react-doctor@<sha> # v2.x.x
|
|
186
190
|
# with:
|
|
187
191
|
# blocking: error # Gate level: "none" (advisory, the default) | "warning" | "error"
|
|
188
192
|
# scope: full # On PRs, scan the whole project instead of just changed files
|
|
@@ -263,5 +267,5 @@ const upgradeReactDoctorWorkflowInPlace = (projectRoot) => {
|
|
|
263
267
|
//#endregion
|
|
264
268
|
export { readReactDoctorWorkflow as a, workflowUsesV1Action as c, detectDefaultBranch as d, runCommand as f, isReactDoctorWorkflowInstalled as i, prompts as l, getReactDoctorWorkflowPath as n, upgradeReactDoctorWorkflowInPlace as o, installReactDoctorWorkflow as r, upgradeWorkflowActionToV2 as s, buildWorkflowContent as t, isCommandAvailable as u };
|
|
265
269
|
|
|
266
|
-
//# sourceMappingURL=install-github-workflow-
|
|
267
|
-
//# debugId=
|
|
270
|
+
//# sourceMappingURL=install-github-workflow-DWmRP55H.js.map
|
|
271
|
+
//# debugId=2321b299-e81e-5389-8a00-23f2186ac60b
|
|
@@ -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 { C as CI_TRUST_COMPANIES, Kt as highlighter, T as METRIC, br as isErrnoException, cr as GITHUB_ACTIONS_SETUP_URL, gr as SKILL_NAME, t as recordCount, z as CliInputError } from "./record-metric-
|
|
4
|
-
import { C as isRecord, D as readPackageJson, E as packageHasRecordKey, M as cliLogger, O as resolveGitPath, S as getPackageJsonPath, T as packageHasNestedRecordKey, _ as REACT_DOCTOR_COMMAND, a as installReactDoctorScriptStep, b as VITE_PLUS_HOOKS_PATH, c as spinner, d as HUSKY_HOOKS_PATH, f as LEFTHOOK_CONFIG_FILES, g as PRE_COMMIT_CONFIG_FILE, h as OVERCOMMIT_CONFIG_FILE, j as writeJsonFile, k as runGit, l as HOOK_FILE_NAME, m as NON_BLOCKING_REACT_DOCTOR_COMMAND, n as findNearestPackageDirectory, p as LEGACY_HOOK_RUNNER_RELATIVE_PATH, r as hasDoctorDependency, t as DOCTOR_PACKAGE_NAME, u as HOOK_RELATIVE_PATH, w as packageHasDependency, x as ensureTrailingNewline } from "./install-doctor-script-
|
|
5
|
-
import { a as readReactDoctorWorkflow, c as workflowUsesV1Action, d as detectDefaultBranch, l as prompts, n as getReactDoctorWorkflowPath, o as upgradeReactDoctorWorkflowInPlace, r as installReactDoctorWorkflow } from "./install-github-workflow-
|
|
6
|
-
import { t as shouldSkipPrompts } from "./should-skip-prompts-
|
|
7
|
-
import { a as recordGate, c as ACTION_UPGRADE_EVENT, d as INSTALL_AGENTS_PREFERENCE_ID, h as detectAvailableAgents, i as readPreference, l as CI_PITCH_EVENT, m as computeDefaultSelectedAgents, n as openUrl, r as isGatePending, s as writePreference, t as reportWorkflowResult } from "./report-workflow-result-
|
|
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]="d10fcb26-7863-5064-b250-129024d098f4")}catch(e){}}();
|
|
3
|
+
import { C as CI_TRUST_COMPANIES, Kt as highlighter, T as METRIC, br as isErrnoException, cr as GITHUB_ACTIONS_SETUP_URL, gr as SKILL_NAME, t as recordCount, z as CliInputError } from "./record-metric-DVm5sVu2.js";
|
|
4
|
+
import { C as isRecord, D as readPackageJson, E as packageHasRecordKey, M as cliLogger, O as resolveGitPath, S as getPackageJsonPath, T as packageHasNestedRecordKey, _ as REACT_DOCTOR_COMMAND, a as installReactDoctorScriptStep, b as VITE_PLUS_HOOKS_PATH, c as spinner, d as HUSKY_HOOKS_PATH, f as LEFTHOOK_CONFIG_FILES, g as PRE_COMMIT_CONFIG_FILE, h as OVERCOMMIT_CONFIG_FILE, j as writeJsonFile, k as runGit, l as HOOK_FILE_NAME, m as NON_BLOCKING_REACT_DOCTOR_COMMAND, n as findNearestPackageDirectory, p as LEGACY_HOOK_RUNNER_RELATIVE_PATH, r as hasDoctorDependency, t as DOCTOR_PACKAGE_NAME, u as HOOK_RELATIVE_PATH, w as packageHasDependency, x as ensureTrailingNewline } from "./install-doctor-script-GGnj8tcj.js";
|
|
5
|
+
import { a as readReactDoctorWorkflow, c as workflowUsesV1Action, d as detectDefaultBranch, l as prompts, n as getReactDoctorWorkflowPath, o as upgradeReactDoctorWorkflowInPlace, r as installReactDoctorWorkflow } from "./install-github-workflow-DWmRP55H.js";
|
|
6
|
+
import { t as shouldSkipPrompts } from "./should-skip-prompts-DzzBAamD.js";
|
|
7
|
+
import { a as recordGate, c as ACTION_UPGRADE_EVENT, d as INSTALL_AGENTS_PREFERENCE_ID, h as detectAvailableAgents, i as readPreference, l as CI_PITCH_EVENT, m as computeDefaultSelectedAgents, n as openUrl, r as isGatePending, s as writePreference, t as reportWorkflowResult } from "./report-workflow-result-CPMR84K_.js";
|
|
8
8
|
import { execFile } from "node:child_process";
|
|
9
9
|
import * as path$1 from "node:path";
|
|
10
10
|
import * as fs$1 from "node:fs";
|
|
@@ -1152,5 +1152,5 @@ const runInstallReactDoctor = async (options = {}) => {
|
|
|
1152
1152
|
//#endregion
|
|
1153
1153
|
export { askUpgradeActionVersion as a, recordCiPromptDecision as c, installReactDoctorAgentHooks as i, hasHandledActionUpgrade as l, runInstallReactDoctor as n, askAddToGitHubActions as o, findAgentsWithOutdatedReactDoctorHooks as r, hasHandledCiPrompt as s, getSkillSourceDirectory as t, recordActionUpgradeDecision as u };
|
|
1154
1154
|
|
|
1155
|
-
//# sourceMappingURL=install-react-doctor-
|
|
1156
|
-
//# debugId=
|
|
1155
|
+
//# sourceMappingURL=install-react-doctor-Gzbw8Ue9.js.map
|
|
1156
|
+
//# debugId=d10fcb26-7863-5064-b250-129024d098f4
|
|
@@ -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]="5d3d04ba-da83-5956-9f4e-b1e4e4852bb4")}catch(e){}}();
|
|
3
3
|
import { i as __toESM, r as __require, t as __commonJSMin } from "./chunk-ChKA3wi6.js";
|
|
4
|
-
import { T as METRIC, t as recordCount } from "./record-metric-
|
|
5
|
-
import { n as registerActiveTuiRenderer, t as exitGracefully } from "./exit-gracefully-
|
|
4
|
+
import { T as METRIC, t as recordCount } from "./record-metric-DVm5sVu2.js";
|
|
5
|
+
import { n as registerActiveTuiRenderer, t as exitGracefully } from "./exit-gracefully-CYfF0GCJ.js";
|
|
6
6
|
import { a as chalk, i as stripAnsi, n as isFullWidth$1, r as isWide$1 } from "./get-east-asian-width-Cglw13G7.js";
|
|
7
7
|
import { EventEmitter } from "node:events";
|
|
8
8
|
import { execFileSync } from "node:child_process";
|
|
@@ -25869,5 +25869,5 @@ var require_jsx_runtime = /* @__PURE__ */ __commonJSMin(((exports, module) => {
|
|
|
25869
25869
|
//#endregion
|
|
25870
25870
|
export { useExitOnCtrlC as a, Spinner as c, useInput as d, Transform as f, Box as h, import_react as i, useStdout as l, Text as m, registerMountedTuiRenderer as n, terminalSymbols as o, render as p, useStdoutDimensions as r, isPrintableInput as s, require_jsx_runtime as t, useApp as u };
|
|
25871
25871
|
|
|
25872
|
-
//# sourceMappingURL=jsx-runtime-
|
|
25873
|
-
//# debugId=
|
|
25872
|
+
//# sourceMappingURL=jsx-runtime-CMY_Q08d.js.map
|
|
25873
|
+
//# debugId=5d3d04ba-da83-5956-9f4e-b1e4e4852bb4
|
|
@@ -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 { An as gen, Kt as highlighter, Tn as log, _ as VERSION } 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]="3a20c47d-31d4-5de1-b873-cfec76544a06")}catch(e){}}();
|
|
3
|
+
import { An as gen, Kt as highlighter, Tn as log, _ as VERSION } from "./record-metric-DVm5sVu2.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-CqvClso3.js.map
|
|
22
|
+
//# debugId=3a20c47d-31d4-5de1-b873-cfec76544a06
|