react-doctor 0.9.12-dev.8c2f03a → 0.9.12-dev.905607f
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 +27 -0
- package/dist/active-run-trace-dlIZeEvb.js +18 -0
- package/dist/active-scan-abort-registry-DwG6tSPy.js +28 -0
- package/dist/{build-section-divider-DuozMmwU.js → build-section-divider-D5ATBfDJ.js} +8 -22
- package/dist/{ci-Bwd2LJZC.js → ci-DIlnBiUj.js} +12 -11
- package/dist/cli.js +77 -25
- package/dist/{design-Q4Umr_4T.js → design-C-uq3ow5.js} +4 -4
- package/dist/{devtools-D8NTVj81.js → devtools-BiC-AP3B.js} +3 -3
- package/dist/{exit-gracefully-vUI1H1zC.js → exit-gracefully-C64GRTOn.js} +15 -9
- package/dist/get-east-asian-width-Cglw13G7.js +444 -0
- package/dist/{report-error-CAp5cil9.js → handle-error-Cfcnsjyi.js} +6 -61
- package/dist/index.d.ts +34 -2
- package/dist/index.js +187 -44
- package/dist/{inspect-RxIsB8bi.js → inspect-BLX566wA.js} +21 -19
- package/dist/{install-CI0nvC_v.js → install-Dz8zcUxD.js} +9 -8
- package/dist/{install-doctor-script-BAmTZygh.js → install-doctor-script-CjxGMzIH.js} +6 -441
- package/dist/{install-github-workflow-Dg2sosDx.js → install-github-workflow-eYmQoXdI.js} +6 -6
- package/dist/{install-react-doctor-CIJcnTik.js → install-react-doctor-OIDTrbHz.js} +47 -45
- package/dist/{run-scan-app-CeNk17wq.js → jsx-runtime-BdBmuS_a.js} +280 -2769
- package/dist/{print-branded-header-kwnSGrfR.js → print-branded-header-BksixHcc.js} +4 -4
- package/dist/prompt-runtime-scan-url-CXJMNnAo.js +240 -0
- package/dist/{read-object-file-m5uVvcBp.js → read-object-file-BhV9TFsy.js} +4 -4
- package/dist/{record-metric-DospZkfP.js → record-metric-CdX-TQ5W.js} +241 -77
- package/dist/report-error-DsFo2sAk.js +64 -0
- package/dist/{report-workflow-result-D0GvvJtT.js → report-workflow-result-BSSkdwvd.js} +5 -5
- package/dist/{resolve-scope-eXawiGEH.js → resolve-scope-DRnGmF8O.js} +6 -6
- package/dist/{rules-C_xYDSz8.js → rules-C2g4a0X3.js} +6 -6
- package/dist/run-scan-app-Ch6yrLY9.js +2508 -0
- package/dist/runtime-scan/browser-probe.iife.js +855 -0
- package/dist/runtime-scan-Crfe35Ke.js +770 -0
- package/dist/sanitize-runtime-url-Dwa_-IKX.js +76 -0
- package/dist/{scan-DIwsgV6M.js → scan-DJnhifws.js} +10 -22
- package/dist/{should-fail-scan-gate-BWTNIU5h.js → should-fail-scan-gate-D4ZKKeXI.js} +23 -114
- package/dist/{should-skip-prompts-oK3MwWyB.js → should-skip-prompts-Cfocoh7G.js} +4 -4
- package/dist/should-use-tui-COX1uZWn.js +25 -0
- package/dist/skills/improve-threejs/SKILL.md +102 -0
- package/dist/skills/performance/SKILL.md +113 -0
- package/dist/skills/react-doctor/SKILL.md +6 -0
- package/dist/{unref-stdin-BGZVK4sJ.js → telemetry-runtime-C_D70xUE.js} +5 -23
- package/dist/unref-stdin-BKT_s38a.js +12 -0
- package/dist/{version-9-2T2YQf.js → version-BAhd6Zvv.js} +4 -4
- package/dist/{why-BOiuB_qy.js → why-MQHWHpeA.js} +4 -4
- package/dist/with-run-span-DmpUrF70.js +110 -0
- package/package.json +6 -4
|
@@ -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]="6a0ba47c-464a-51ea-81ff-c472b6fa548a")}catch(e){}}();
|
|
3
3
|
import { i as __toESM$1, r as __require, t as __commonJSMin$1 } from "./chunk-ChKA3wi6.js";
|
|
4
4
|
import { n as require_picomatch, t as require_semver } from "./semver-DFtnEmN-.js";
|
|
5
5
|
import { createRequire } from "node:module";
|
|
@@ -62323,7 +62323,7 @@ var ProjectNotFoundError = class extends Error {
|
|
|
62323
62323
|
kind;
|
|
62324
62324
|
constructor(directory, options) {
|
|
62325
62325
|
const kind = options?.kind ?? "no-project";
|
|
62326
|
-
super(kind === "missing-path" ? `Scan target "${directory}" does not exist. Check the path and try again.` : `No React project found in ${directory}. Expected a package.json at the directory root or a nested package.json with a React dependency.`, options);
|
|
62326
|
+
super(kind === "missing-path" ? `Scan target "${directory}" does not exist. Check the path and try again.` : `No React or Three.js project found in ${directory}. Expected a package.json at the directory root or a nested package.json with a React or Three.js dependency.`, options);
|
|
62327
62327
|
this.directory = directory;
|
|
62328
62328
|
this.kind = kind;
|
|
62329
62329
|
}
|
|
@@ -62357,7 +62357,7 @@ var AmbiguousProjectError = class extends Error {
|
|
|
62357
62357
|
directory;
|
|
62358
62358
|
candidates;
|
|
62359
62359
|
constructor(directory, candidates, options) {
|
|
62360
|
-
super(`Multiple React projects found under ${directory} (${candidates.length} candidates): ${candidates.join(", ")}. Re-run diagnose() with one of those subdirectories, or iterate them yourself.`, options);
|
|
62360
|
+
super(`Multiple React or Three.js projects found under ${directory} (${candidates.length} candidates): ${candidates.join(", ")}. Re-run diagnose() with one of those subdirectories, or iterate them yourself.`, options);
|
|
62361
62361
|
this.directory = directory;
|
|
62362
62362
|
this.candidates = candidates;
|
|
62363
62363
|
}
|
|
@@ -63691,15 +63691,29 @@ const detectPreES2023Target = (directory) => {
|
|
|
63691
63691
|
}
|
|
63692
63692
|
return false;
|
|
63693
63693
|
};
|
|
63694
|
+
const SHADCN_CONFIG_FILE_NAME = "components.json";
|
|
63695
|
+
const detectShadcnUi = (directory) => {
|
|
63696
|
+
if (isFile(path$1$1.join(directory, SHADCN_CONFIG_FILE_NAME))) return true;
|
|
63697
|
+
if (isProjectBoundary(directory)) return false;
|
|
63698
|
+
let ancestorDirectory = path$1$1.dirname(directory);
|
|
63699
|
+
while (ancestorDirectory !== path$1$1.dirname(ancestorDirectory)) {
|
|
63700
|
+
if (isFile(path$1$1.join(ancestorDirectory, SHADCN_CONFIG_FILE_NAME))) return true;
|
|
63701
|
+
if (isProjectBoundary(ancestorDirectory)) return false;
|
|
63702
|
+
ancestorDirectory = path$1$1.dirname(ancestorDirectory);
|
|
63703
|
+
}
|
|
63704
|
+
return false;
|
|
63705
|
+
};
|
|
63694
63706
|
const FRAMEWORK_PACKAGES = {
|
|
63695
63707
|
next: "nextjs",
|
|
63696
63708
|
"@tanstack/react-start": "tanstack-start",
|
|
63697
63709
|
"@remix-run/react": "remix",
|
|
63698
63710
|
gatsby: "gatsby",
|
|
63699
63711
|
astro: "astro",
|
|
63712
|
+
"@astrojs/react": "astro",
|
|
63700
63713
|
vite: "vite",
|
|
63701
63714
|
"react-scripts": "cra",
|
|
63702
63715
|
expo: "expo",
|
|
63716
|
+
"expo-router": "expo",
|
|
63703
63717
|
"react-native": "react-native"
|
|
63704
63718
|
};
|
|
63705
63719
|
const detectFramework = (dependencies) => {
|
|
@@ -64191,20 +64205,39 @@ const getDependencyDeclaration = ({ packageJson, packageName, sections }) => {
|
|
|
64191
64205
|
version: null
|
|
64192
64206
|
};
|
|
64193
64207
|
};
|
|
64194
|
-
const
|
|
64208
|
+
const REACT_PROJECT_DEPENDENCY_NAMES = new Set([
|
|
64195
64209
|
"react",
|
|
64210
|
+
"react-dom",
|
|
64196
64211
|
"react-native",
|
|
64197
64212
|
"next",
|
|
64198
|
-
"preact"
|
|
64213
|
+
"preact",
|
|
64214
|
+
"expo",
|
|
64215
|
+
"expo-router",
|
|
64216
|
+
"gatsby",
|
|
64217
|
+
"@remix-run/react",
|
|
64218
|
+
"@tanstack/react-start",
|
|
64219
|
+
"react-scripts",
|
|
64220
|
+
"@astrojs/react"
|
|
64199
64221
|
]);
|
|
64222
|
+
const REACT_THREE_FIBER_DEPENDENCY_NAMES = ["@react-three/fiber", "react-three-fiber"];
|
|
64223
|
+
const REACT_THREE_FIBER_ECOSYSTEM_DEPENDENCY_NAMES = [
|
|
64224
|
+
...REACT_THREE_FIBER_DEPENDENCY_NAMES,
|
|
64225
|
+
"@react-three/drei",
|
|
64226
|
+
"@react-three/rapier",
|
|
64227
|
+
"@react-three/postprocessing",
|
|
64228
|
+
"@react-three/xr",
|
|
64229
|
+
"@react-three/cannon"
|
|
64230
|
+
];
|
|
64231
|
+
const THREE_DEPENDENCY_NAMES = ["three", ...REACT_THREE_FIBER_ECOSYSTEM_DEPENDENCY_NAMES];
|
|
64200
64232
|
const hasReactDependency = (packageJson) => {
|
|
64201
64233
|
const allDependencies = {
|
|
64202
64234
|
...packageJson.peerDependencies,
|
|
64203
64235
|
...packageJson.dependencies,
|
|
64204
64236
|
...packageJson.devDependencies
|
|
64205
64237
|
};
|
|
64206
|
-
return Object.keys(allDependencies).some((packageName) =>
|
|
64238
|
+
return Object.keys(allDependencies).some((packageName) => REACT_PROJECT_DEPENDENCY_NAMES.has(packageName));
|
|
64207
64239
|
};
|
|
64240
|
+
const hasSupportedProjectDependency = (packageJson) => hasReactDependency(packageJson) || getDependencySpec(packageJson, "remotion") !== null || THREE_DEPENDENCY_NAMES.some((packageName) => getDependencySpec(packageJson, packageName) !== null);
|
|
64208
64241
|
const getPreactVersion = (packageJson) => getDependencySpec(packageJson, "preact");
|
|
64209
64242
|
const resolveCatalogBackedDependencyVersion = ({ rootDirectory, rootPackageJson, packageName, sourceDirectory = rootDirectory, sourcePackageJson = rootPackageJson, version }) => {
|
|
64210
64243
|
if (version === null || !isCatalogReference(version)) return version;
|
|
@@ -64395,7 +64428,7 @@ const listWorkspacePackages = (rootDirectory) => {
|
|
|
64395
64428
|
seenDirectories.add(workspacePackage.directory);
|
|
64396
64429
|
packages.push(workspacePackage);
|
|
64397
64430
|
};
|
|
64398
|
-
if (
|
|
64431
|
+
if (hasSupportedProjectDependency(packageJson)) pushIfNew({
|
|
64399
64432
|
name: packageJson.name ?? path$1$1.basename(rootDirectory),
|
|
64400
64433
|
directory: rootDirectory
|
|
64401
64434
|
});
|
|
@@ -64403,7 +64436,7 @@ const listWorkspacePackages = (rootDirectory) => {
|
|
|
64403
64436
|
const directories = resolveWorkspaceDirectories(rootDirectory, pattern);
|
|
64404
64437
|
for (const workspaceDirectory of directories) {
|
|
64405
64438
|
const workspacePackageJson = readPackageJson(path$1$1.join(workspaceDirectory, "package.json"));
|
|
64406
|
-
if (!
|
|
64439
|
+
if (!hasSupportedProjectDependency(workspacePackageJson)) continue;
|
|
64407
64440
|
pushIfNew({
|
|
64408
64441
|
name: workspacePackageJson.name ?? path$1$1.basename(workspaceDirectory),
|
|
64409
64442
|
directory: workspaceDirectory
|
|
@@ -64435,6 +64468,29 @@ const getTanStackQueryVersion = (packageJson) => {
|
|
|
64435
64468
|
packageNames: TANSTACK_REACT_QUERY_PACKAGES
|
|
64436
64469
|
});
|
|
64437
64470
|
};
|
|
64471
|
+
const hasAnyDependency = (packageJson, packageNames) => {
|
|
64472
|
+
const allDependencies = {
|
|
64473
|
+
...packageJson.peerDependencies,
|
|
64474
|
+
...packageJson.dependencies,
|
|
64475
|
+
...packageJson.devDependencies,
|
|
64476
|
+
...packageJson.optionalDependencies
|
|
64477
|
+
};
|
|
64478
|
+
return packageNames.some((packageName) => allDependencies[packageName] !== void 0);
|
|
64479
|
+
};
|
|
64480
|
+
const BASE_UI_PACKAGES = ["@base-ui-components/react", "@base-ui/react"];
|
|
64481
|
+
const hasBaseUiDependency = (packageJson) => hasAnyDependency(packageJson, BASE_UI_PACKAGES);
|
|
64482
|
+
const RADIX_UNIFIED_PACKAGE = "radix-ui";
|
|
64483
|
+
const RADIX_PRIMITIVE_PACKAGE_PREFIX = "@radix-ui/react-";
|
|
64484
|
+
const RADIX_NON_PRIMITIVE_PACKAGES = new Set(["@radix-ui/react-icons"]);
|
|
64485
|
+
const hasRadixUiDependency = (packageJson) => {
|
|
64486
|
+
const allDependencies = {
|
|
64487
|
+
...packageJson.peerDependencies,
|
|
64488
|
+
...packageJson.dependencies,
|
|
64489
|
+
...packageJson.devDependencies,
|
|
64490
|
+
...packageJson.optionalDependencies
|
|
64491
|
+
};
|
|
64492
|
+
return Object.keys(allDependencies).some((packageName) => packageName === RADIX_UNIFIED_PACKAGE || packageName.startsWith(RADIX_PRIMITIVE_PACKAGE_PREFIX) && !RADIX_NON_PRIMITIVE_PACKAGES.has(packageName));
|
|
64493
|
+
};
|
|
64438
64494
|
const STYLED_COMPONENTS_PACKAGES = ["styled-components"];
|
|
64439
64495
|
const getStyledComponentsVersion = (packageJson) => {
|
|
64440
64496
|
return getPreferredDependencyVersion({
|
|
@@ -64465,12 +64521,15 @@ const hasI18nDependency = (packageJson) => {
|
|
|
64465
64521
|
};
|
|
64466
64522
|
return I18N_PACKAGES.some((packageName) => allDependencies[packageName] !== void 0);
|
|
64467
64523
|
};
|
|
64524
|
+
const REACT_ARIA_COMPONENT_PACKAGES = ["react-aria-components"];
|
|
64525
|
+
const TANSTACK_TABLE_PACKAGES = ["@tanstack/react-table"];
|
|
64526
|
+
const TANSTACK_VIRTUAL_PACKAGES = ["@tanstack/react-virtual"];
|
|
64527
|
+
const TANSTACK_FORM_PACKAGES = ["@tanstack/react-form"];
|
|
64468
64528
|
const REANIMATED_DEPENDENCY_NAME = "react-native-reanimated";
|
|
64469
64529
|
const MOBX_REACT_PACKAGE_NAME = "mobx-react";
|
|
64470
64530
|
const MOBX_REACT_LITE_PACKAGE_NAME = "mobx-react-lite";
|
|
64471
64531
|
const MOBX_STATE_TREE_PACKAGE_NAME = "mobx-state-tree";
|
|
64472
64532
|
const MOBX_REACT_OBSERVER_PACKAGE_NAME = "mobx-react-observer";
|
|
64473
|
-
const REACT_THREE_FIBER_DEPENDENCY_NAMES = ["@react-three/fiber", "react-three-fiber"];
|
|
64474
64533
|
const REACT_THREE_FIBER_SECTIONS = [
|
|
64475
64534
|
"dependencies",
|
|
64476
64535
|
"peerDependencies",
|
|
@@ -64483,8 +64542,6 @@ const THREE_DEPENDENCY_SECTIONS = [
|
|
|
64483
64542
|
"optionalDependencies",
|
|
64484
64543
|
"devDependencies"
|
|
64485
64544
|
];
|
|
64486
|
-
const REACT_THREE_FIBER_ECOSYSTEM_DEPENDENCY_NAMES = [...REACT_THREE_FIBER_DEPENDENCY_NAMES, "@react-three/drei"];
|
|
64487
|
-
const THREE_DEPENDENCY_NAMES = [...REACT_THREE_FIBER_ECOSYSTEM_DEPENDENCY_NAMES, "three"];
|
|
64488
64545
|
const REACT_ROUTER_DEPENDENCY_NAMES = [
|
|
64489
64546
|
"@react-router/dev",
|
|
64490
64547
|
"react-router-dom",
|
|
@@ -64658,6 +64715,13 @@ const evaluateManifestFacts = (facts, packageJson, directory, rootDirectory, roo
|
|
|
64658
64715
|
});
|
|
64659
64716
|
if (styledComponentsVersion && shouldReplaceStyledComponentsVersion(facts.styledComponentsVersion, styledComponentsVersion)) facts.styledComponentsVersion = styledComponentsVersion;
|
|
64660
64717
|
facts.hasI18nLibrary = facts.hasI18nLibrary || hasI18nDependency(packageJson);
|
|
64718
|
+
facts.hasShadcnUi = facts.hasShadcnUi || detectShadcnUi(directory);
|
|
64719
|
+
facts.hasRadixUi = facts.hasRadixUi || hasRadixUiDependency(packageJson);
|
|
64720
|
+
facts.hasBaseUi = facts.hasBaseUi || hasBaseUiDependency(packageJson);
|
|
64721
|
+
facts.hasReactAriaComponents = facts.hasReactAriaComponents || hasAnyDependency(packageJson, REACT_ARIA_COMPONENT_PACKAGES);
|
|
64722
|
+
facts.hasTanstackTable = facts.hasTanstackTable || hasAnyDependency(packageJson, TANSTACK_TABLE_PACKAGES);
|
|
64723
|
+
facts.hasTanstackVirtual = facts.hasTanstackVirtual || hasAnyDependency(packageJson, TANSTACK_VIRTUAL_PACKAGES);
|
|
64724
|
+
facts.hasTanstackForm = facts.hasTanstackForm || hasAnyDependency(packageJson, TANSTACK_FORM_PACKAGES);
|
|
64661
64725
|
for (const packageName of REACT_THREE_FIBER_DEPENDENCY_NAMES) {
|
|
64662
64726
|
const version = resolveCatalogBackedDependencyVersion({
|
|
64663
64727
|
rootDirectory,
|
|
@@ -64760,6 +64824,13 @@ const collectWorkspaceFacts = (rootDirectory, rootPackageJson, { collectReactGro
|
|
|
64760
64824
|
tanstackQueryVersion: null,
|
|
64761
64825
|
styledComponentsVersion: null,
|
|
64762
64826
|
hasI18nLibrary: false,
|
|
64827
|
+
hasShadcnUi: false,
|
|
64828
|
+
hasRadixUi: false,
|
|
64829
|
+
hasBaseUi: false,
|
|
64830
|
+
hasReactAriaComponents: false,
|
|
64831
|
+
hasTanstackTable: false,
|
|
64832
|
+
hasTanstackVirtual: false,
|
|
64833
|
+
hasTanstackForm: false,
|
|
64763
64834
|
hasReactNativeAwarePackage: false,
|
|
64764
64835
|
hasReanimatedAwarePackage: false,
|
|
64765
64836
|
hasSsrDependency: false,
|
|
@@ -64985,13 +65056,13 @@ const detectTargetBlankOpenerProtection = (directory, packageJson) => {
|
|
|
64985
65056
|
if (browserslistRequirement === "noreferrer" || electronRequirement === "noreferrer") return "noreferrer";
|
|
64986
65057
|
if (browserslistRequirement === "noopener" || electronRequirement === "noopener") return "noopener";
|
|
64987
65058
|
};
|
|
64988
|
-
const
|
|
65059
|
+
const toSupportedWorkspacePackages = (directories) => {
|
|
64989
65060
|
const packages = [];
|
|
64990
65061
|
for (const directory of directories) {
|
|
64991
65062
|
const packageJsonPath = path$1$1.join(directory, "package.json");
|
|
64992
65063
|
if (!isFile(packageJsonPath)) continue;
|
|
64993
65064
|
const packageJson = readPackageJson(packageJsonPath);
|
|
64994
|
-
if (!
|
|
65065
|
+
if (!hasSupportedProjectDependency(packageJson)) continue;
|
|
64995
65066
|
const name = packageJson.name ?? path$1$1.basename(directory);
|
|
64996
65067
|
packages.push({
|
|
64997
65068
|
name,
|
|
@@ -65004,7 +65075,7 @@ const listManifestWorkspacePackages = (rootDirectory) => {
|
|
|
65004
65075
|
if (isFile(path$1$1.join(rootDirectory, "package.json"))) return listWorkspacePackages(rootDirectory);
|
|
65005
65076
|
const patterns = parsePnpmWorkspacePatterns(rootDirectory);
|
|
65006
65077
|
const nxPatterns = patterns.length > 0 ? [] : getNxWorkspaceDirectories(rootDirectory);
|
|
65007
|
-
return
|
|
65078
|
+
return toSupportedWorkspacePackages((patterns.length > 0 ? patterns : nxPatterns).flatMap((pattern) => resolveWorkspaceDirectories(rootDirectory, pattern)));
|
|
65008
65079
|
};
|
|
65009
65080
|
const NON_PROJECT_DIRECTORIES = new Set([
|
|
65010
65081
|
"AppData",
|
|
@@ -65012,7 +65083,7 @@ const NON_PROJECT_DIRECTORIES = new Set([
|
|
|
65012
65083
|
"Library"
|
|
65013
65084
|
]);
|
|
65014
65085
|
const MAX_SCAN_DEPTH = 6;
|
|
65015
|
-
const
|
|
65086
|
+
const discoverSupportedSubprojectsByFilesystem = (rootDirectory) => {
|
|
65016
65087
|
const packages = [];
|
|
65017
65088
|
const pendingDirectories = [{
|
|
65018
65089
|
directory: rootDirectory,
|
|
@@ -65025,7 +65096,7 @@ const discoverReactSubprojectsByFilesystem = (rootDirectory) => {
|
|
|
65025
65096
|
const packageJsonPath = path$1$1.join(currentDirectory, "package.json");
|
|
65026
65097
|
if (isFile(packageJsonPath)) {
|
|
65027
65098
|
const packageJson = readPackageJson(packageJsonPath);
|
|
65028
|
-
if (
|
|
65099
|
+
if (hasSupportedProjectDependency(packageJson)) {
|
|
65029
65100
|
const name = packageJson.name ?? path$1$1.basename(currentDirectory);
|
|
65030
65101
|
packages.push({
|
|
65031
65102
|
name,
|
|
@@ -65045,11 +65116,11 @@ const discoverReactSubprojectsByFilesystem = (rootDirectory) => {
|
|
|
65045
65116
|
}
|
|
65046
65117
|
return packages;
|
|
65047
65118
|
};
|
|
65048
|
-
const
|
|
65119
|
+
const discoverSupportedSubprojects = (rootDirectory) => {
|
|
65049
65120
|
if (!isDirectory(rootDirectory)) return [];
|
|
65050
65121
|
const manifestPackages = listManifestWorkspacePackages(rootDirectory);
|
|
65051
65122
|
if (manifestPackages.length > 0) return manifestPackages;
|
|
65052
|
-
return
|
|
65123
|
+
return discoverSupportedSubprojectsByFilesystem(rootDirectory);
|
|
65053
65124
|
};
|
|
65054
65125
|
const cachedProjectInfos = /* @__PURE__ */ new Map();
|
|
65055
65126
|
/**
|
|
@@ -65104,6 +65175,12 @@ const discoverProjectWithoutPackageJson = (directory, options) => {
|
|
|
65104
65175
|
remotionVersion: null,
|
|
65105
65176
|
remotionMajorVersion: null,
|
|
65106
65177
|
hasI18nLibrary: false,
|
|
65178
|
+
hasRadixUi: false,
|
|
65179
|
+
hasBaseUi: false,
|
|
65180
|
+
hasReactAriaComponents: false,
|
|
65181
|
+
hasTanstackTable: false,
|
|
65182
|
+
hasTanstackVirtual: false,
|
|
65183
|
+
hasTanstackForm: false,
|
|
65107
65184
|
tanstackQueryVersion: null,
|
|
65108
65185
|
styledComponentsVersion: null,
|
|
65109
65186
|
hasThree: false,
|
|
@@ -65125,6 +65202,7 @@ const discoverProjectWithoutPackageJson = (directory, options) => {
|
|
|
65125
65202
|
shopifyFlashListMajorVersion: null,
|
|
65126
65203
|
hasReanimated: false,
|
|
65127
65204
|
reanimatedVersion: null,
|
|
65205
|
+
hasShadcnUi: detectShadcnUi(directory),
|
|
65128
65206
|
isPreES2023Target: hasOwnTsConfig && detectPreES2023Target(directory),
|
|
65129
65207
|
isStaticExport: false,
|
|
65130
65208
|
sourceFileCount
|
|
@@ -65287,6 +65365,12 @@ const discoverProject = (directory, options = {}) => {
|
|
|
65287
65365
|
hasReactCompilerLintPlugin: detectReactCompilerLintPlugin(directory, packageJson),
|
|
65288
65366
|
hasTanStackQuery: tanstackQueryVersion !== null,
|
|
65289
65367
|
hasI18nLibrary: workspaceFacts.hasI18nLibrary,
|
|
65368
|
+
hasRadixUi: workspaceFacts.hasRadixUi,
|
|
65369
|
+
hasBaseUi: workspaceFacts.hasBaseUi,
|
|
65370
|
+
hasReactAriaComponents: workspaceFacts.hasReactAriaComponents,
|
|
65371
|
+
hasTanstackTable: workspaceFacts.hasTanstackTable,
|
|
65372
|
+
hasTanstackVirtual: workspaceFacts.hasTanstackVirtual,
|
|
65373
|
+
hasTanstackForm: workspaceFacts.hasTanstackForm,
|
|
65290
65374
|
tanstackQueryVersion,
|
|
65291
65375
|
styledComponentsVersion: workspaceFacts.styledComponentsVersion,
|
|
65292
65376
|
valtioVersion,
|
|
@@ -65313,6 +65397,7 @@ const discoverProject = (directory, options = {}) => {
|
|
|
65313
65397
|
shopifyFlashListMajorVersion: shopifyFlashListVersion === null ? null : getLowestDependencyMajor(shopifyFlashListVersion),
|
|
65314
65398
|
hasReanimated,
|
|
65315
65399
|
reanimatedVersion,
|
|
65400
|
+
hasShadcnUi: workspaceFacts.hasShadcnUi,
|
|
65316
65401
|
isPreES2023Target,
|
|
65317
65402
|
isStaticExport: framework === "nextjs" && detectNextjsStaticExport(workspaceFacts.next.sourceDirectory ?? directory),
|
|
65318
65403
|
sourceFileCount
|
|
@@ -65320,16 +65405,31 @@ const discoverProject = (directory, options = {}) => {
|
|
|
65320
65405
|
cachedProjectInfos.set(directory, projectInfo);
|
|
65321
65406
|
return projectInfo;
|
|
65322
65407
|
};
|
|
65408
|
+
const REACT_COMPATIBLE_FRAMEWORKS = new Set([
|
|
65409
|
+
"nextjs",
|
|
65410
|
+
"tanstack-start",
|
|
65411
|
+
"cra",
|
|
65412
|
+
"remix",
|
|
65413
|
+
"gatsby",
|
|
65414
|
+
"expo",
|
|
65415
|
+
"react-native",
|
|
65416
|
+
"preact"
|
|
65417
|
+
]);
|
|
65323
65418
|
/**
|
|
65324
|
-
*
|
|
65419
|
+
* Whether project discovery resolved a React-compatible runtime directly or
|
|
65420
|
+
* through a framework whose runtime is necessarily React-compatible.
|
|
65421
|
+
*/
|
|
65422
|
+
const hasReactRuntime = (project) => project.reactVersion !== null || project.preactVersion !== null || REACT_COMPATIBLE_FRAMEWORKS.has(project.framework);
|
|
65423
|
+
/**
|
|
65424
|
+
* A project is worth scanning when it has a supported runtime (the runtime-
|
|
65325
65425
|
* specific rules apply) OR it simply has source files to lint. The
|
|
65326
65426
|
* second arm is what lets a plain TypeScript/JavaScript codebase — no
|
|
65327
65427
|
* React dependency at all — run the framework-agnostic rules
|
|
65328
65428
|
* (security, architecture, zod, bundle-size, …) instead of hard-failing
|
|
65329
|
-
* with "No React dependency". Only a directory with neither
|
|
65330
|
-
* single source file has nothing to analyze.
|
|
65429
|
+
* with "No React dependency". Only a directory with neither a supported
|
|
65430
|
+
* runtime nor a single source file has nothing to analyze.
|
|
65331
65431
|
*/
|
|
65332
|
-
const isAnalyzableProject = (project) => project.
|
|
65432
|
+
const isAnalyzableProject = (project) => hasReactRuntime(project) || project.hasThree === true || project.hasRemotion === true || project.sourceFileCount > 0;
|
|
65333
65433
|
const LEGACY_RULE_KEY_TO_NATIVE_RULE_KEY = {
|
|
65334
65434
|
"deslop/circular-dependency": "react-doctor/circular-dependency",
|
|
65335
65435
|
"deslop/unused-dependency": "react-doctor/unused-dependency",
|
|
@@ -67503,11 +67603,11 @@ const resolveConfigRootDir = (config, configSourceDirectory) => {
|
|
|
67503
67603
|
};
|
|
67504
67604
|
const resolveDiagnoseTarget = (directory, options = {}) => {
|
|
67505
67605
|
if (isFile(path$1$1.join(directory, "package.json"))) return directory;
|
|
67506
|
-
const
|
|
67507
|
-
if (
|
|
67508
|
-
if (
|
|
67606
|
+
const subprojects = discoverSupportedSubprojects(directory);
|
|
67607
|
+
if (subprojects.length === 0) return null;
|
|
67608
|
+
if (subprojects.length === 1) return subprojects[0].directory;
|
|
67509
67609
|
if (options.allowAmbiguous === true) return null;
|
|
67510
|
-
throw new AmbiguousProjectError(directory,
|
|
67610
|
+
throw new AmbiguousProjectError(directory, subprojects.map((subproject) => path$1$1.relative(directory, subproject.directory)).toSorted());
|
|
67511
67611
|
};
|
|
67512
67612
|
/**
|
|
67513
67613
|
* The canonical entry-point translation shared by every public shell
|
|
@@ -69242,21 +69342,6 @@ function* collectSecurityScanFiles(rootDirectory, excludedDirectories = /* @__PU
|
|
|
69242
69342
|
}
|
|
69243
69343
|
}
|
|
69244
69344
|
}
|
|
69245
|
-
const REACT_COMPATIBLE_FRAMEWORKS = new Set([
|
|
69246
|
-
"nextjs",
|
|
69247
|
-
"tanstack-start",
|
|
69248
|
-
"cra",
|
|
69249
|
-
"remix",
|
|
69250
|
-
"gatsby",
|
|
69251
|
-
"expo",
|
|
69252
|
-
"react-native",
|
|
69253
|
-
"preact"
|
|
69254
|
-
]);
|
|
69255
|
-
/**
|
|
69256
|
-
* Whether project discovery resolved a React-compatible runtime directly or
|
|
69257
|
-
* through a framework whose runtime is necessarily React-compatible.
|
|
69258
|
-
*/
|
|
69259
|
-
const hasReactRuntime = (project) => project.reactVersion !== null || project.preactVersion !== null || REACT_COMPATIBLE_FRAMEWORKS.has(project.framework);
|
|
69260
69345
|
const CLIENT_ONLY_FRAMEWORKS = new Set([
|
|
69261
69346
|
"vite",
|
|
69262
69347
|
"cra",
|
|
@@ -69317,6 +69402,13 @@ const buildCapabilities = (project) => {
|
|
|
69317
69402
|
minor: 0
|
|
69318
69403
|
})) capabilities.add("tailwind:4");
|
|
69319
69404
|
}
|
|
69405
|
+
if (project.hasShadcnUi === true) capabilities.add("shadcn");
|
|
69406
|
+
if (project.hasRadixUi === true) capabilities.add("radix-ui");
|
|
69407
|
+
if (project.hasBaseUi === true) capabilities.add("base-ui");
|
|
69408
|
+
if (project.hasReactAriaComponents === true) capabilities.add("react-aria");
|
|
69409
|
+
if (project.hasTanstackTable === true) capabilities.add("tanstack-table");
|
|
69410
|
+
if (project.hasTanstackVirtual === true) capabilities.add("tanstack-virtual");
|
|
69411
|
+
if (project.hasTanstackForm === true) capabilities.add("tanstack-form");
|
|
69320
69412
|
if (project.zodVersion !== null) capabilities.add("zod");
|
|
69321
69413
|
if (project.zodMajorVersion !== null && project.zodMajorVersion >= 4) capabilities.add("zod:4");
|
|
69322
69414
|
if (project.mobxVersion !== void 0 && project.mobxVersion !== null || project.hasMobxReact === true || project.hasMobxReactLite === true || project.hasMobxStateTree === true || project.hasMobxReactObserver === true) capabilities.add("mobx");
|
|
@@ -72876,7 +72968,7 @@ const buildRelatedLocations = (labels, filePath, sourceBuffer) => {
|
|
|
72876
72968
|
const isOxlintSpan = (value) => isRecord(value) && typeof value.offset === "number" && typeof value.length === "number" && typeof value.line === "number" && typeof value.column === "number";
|
|
72877
72969
|
const isOxlintLabel = (value) => isRecord(value) && isOxlintSpan(value.span);
|
|
72878
72970
|
const isMappableOxlintDiagnostic = (value) => isRecord(value) && typeof value.code === "string" && value.code.length > 0 && typeof value.filename === "string" && value.filename.length > 0 && (value.severity === "warning" || value.severity === "error") && Array.isArray(value.labels) && value.labels.every(isOxlintLabel);
|
|
72879
|
-
const isEngineFailureDiagnostic = (value) => !isRecord(value) || typeof value.filename !== "string" || value.filename.length === 0;
|
|
72971
|
+
const isEngineFailureDiagnostic = (value) => !isRecord(value) || typeof value.filename !== "string" || value.filename.length === 0 || typeof value.message === "string" && value.message.startsWith("Error running JS plugin.") && (typeof value.code !== "string" || value.code.length === 0) && Array.isArray(value.labels) && value.labels.length === 0;
|
|
72880
72972
|
const isOxlintOutput = (value) => isRecord(value) && Array.isArray(value.diagnostics);
|
|
72881
72973
|
/**
|
|
72882
72974
|
* Parses one oxlint subprocess's stdout into a flat `Diagnostic[]`.
|
|
@@ -73006,6 +73098,46 @@ const buildProfiledNodeArguments = (input) => [
|
|
|
73006
73098
|
...input.heapProfileDirectory ? ["--heap-prof", `--heap-prof-dir=${input.heapProfileDirectory}`] : [],
|
|
73007
73099
|
...input.argumentsList
|
|
73008
73100
|
];
|
|
73101
|
+
const buildOxlintTimingArguments = (argumentsList) => {
|
|
73102
|
+
const timingArguments = [...argumentsList];
|
|
73103
|
+
const formatFlagIndex = timingArguments.indexOf("--format");
|
|
73104
|
+
if (formatFlagIndex === -1 || formatFlagIndex + 1 >= timingArguments.length) throw new Error("Oxlint timing arguments require a --format value");
|
|
73105
|
+
timingArguments[formatFlagIndex + 1] = "default";
|
|
73106
|
+
timingArguments.push("--debug", "timings", "--quiet");
|
|
73107
|
+
return timingArguments;
|
|
73108
|
+
};
|
|
73109
|
+
const captureOxlintRuleTimings = (input) => new Promise((resolve, reject) => {
|
|
73110
|
+
const timingEnvironment = { ...input.environment };
|
|
73111
|
+
timingEnvironment.REACT_DOCTOR_RULE_TIMINGS_DIR = void 0;
|
|
73112
|
+
const timingChild = spawn(input.nodeBinaryPath, buildOxlintTimingArguments(input.argumentsList), {
|
|
73113
|
+
cwd: input.rootDirectory,
|
|
73114
|
+
env: timingEnvironment,
|
|
73115
|
+
stdio: [
|
|
73116
|
+
"ignore",
|
|
73117
|
+
"pipe",
|
|
73118
|
+
"pipe"
|
|
73119
|
+
]
|
|
73120
|
+
});
|
|
73121
|
+
const stdoutBuffers = [];
|
|
73122
|
+
const stderrBuffers = [];
|
|
73123
|
+
timingChild.stdout.on("data", (buffer) => stdoutBuffers.push(buffer));
|
|
73124
|
+
timingChild.stderr.on("data", (buffer) => stderrBuffers.push(buffer));
|
|
73125
|
+
timingChild.on("error", reject);
|
|
73126
|
+
timingChild.on("close", (_code, signal) => {
|
|
73127
|
+
if (signal) {
|
|
73128
|
+
reject(/* @__PURE__ */ new Error(`Oxlint timing pass was killed by ${signal}`));
|
|
73129
|
+
return;
|
|
73130
|
+
}
|
|
73131
|
+
const timingOutput = `${Buffer.concat(stdoutBuffers).toString("utf8")}\n${Buffer.concat(stderrBuffers).toString("utf8")}`;
|
|
73132
|
+
if (!timingOutput.includes("Rule timings:")) {
|
|
73133
|
+
resolve();
|
|
73134
|
+
return;
|
|
73135
|
+
}
|
|
73136
|
+
fs$1$3.mkdirSync(input.timingDirectory, { recursive: true });
|
|
73137
|
+
fs$1$3.writeFileSync(path$1$1.join(input.timingDirectory, `oxlint-${timingChild.pid ?? process.pid}.timings.txt`), timingOutput);
|
|
73138
|
+
resolve();
|
|
73139
|
+
});
|
|
73140
|
+
});
|
|
73009
73141
|
const lowerChildProcessPriority = (processId) => {
|
|
73010
73142
|
if (processId === void 0) return;
|
|
73011
73143
|
try {
|
|
@@ -73127,7 +73259,18 @@ const spawnOxlint = (args, rootDirectory, nodeBinaryPath, spawnTimeoutMs = OXLIN
|
|
|
73127
73259
|
return;
|
|
73128
73260
|
}
|
|
73129
73261
|
}
|
|
73130
|
-
|
|
73262
|
+
const timingDirectory = SANITIZED_ENV.REACT_DOCTOR_OXLINT_TIMINGS_DIR;
|
|
73263
|
+
if (timingDirectory === void 0) {
|
|
73264
|
+
resolve(output);
|
|
73265
|
+
return;
|
|
73266
|
+
}
|
|
73267
|
+
captureOxlintRuleTimings({
|
|
73268
|
+
argumentsList: args,
|
|
73269
|
+
environment: SANITIZED_ENV,
|
|
73270
|
+
nodeBinaryPath,
|
|
73271
|
+
rootDirectory,
|
|
73272
|
+
timingDirectory
|
|
73273
|
+
}).then(() => resolve(output), reject);
|
|
73131
73274
|
});
|
|
73132
73275
|
});
|
|
73133
73276
|
const PARALLELISM_EXHAUSTION_ERROR_CODES = new Set([
|
|
@@ -76397,6 +76540,7 @@ const METRIC = {
|
|
|
76397
76540
|
ciConfigured: "ci.configured",
|
|
76398
76541
|
rulesChanged: "rules.changed",
|
|
76399
76542
|
rulesQueried: "rules.queried",
|
|
76543
|
+
runtimeScanUrlPromptShown: "runtime_scan.url_prompt_shown",
|
|
76400
76544
|
tuiCompactReportShown: "tui.compact_report_shown",
|
|
76401
76545
|
tuiFindingNavigated: "tui.finding_navigated",
|
|
76402
76546
|
tuiIssueStreamShown: "tui.issue_stream_shown",
|
|
@@ -76450,7 +76594,7 @@ const makeNoopConsole = () => ({
|
|
|
76450
76594
|
});
|
|
76451
76595
|
//#endregion
|
|
76452
76596
|
//#region src/cli/utils/version.ts
|
|
76453
|
-
const VERSION = "0.9.12-dev.
|
|
76597
|
+
const VERSION = "0.9.12-dev.905607f";
|
|
76454
76598
|
//#endregion
|
|
76455
76599
|
//#region src/cli/utils/json-mode.ts
|
|
76456
76600
|
let context = null;
|
|
@@ -76488,13 +76632,14 @@ const installSilentConsole = () => {
|
|
|
76488
76632
|
"trace"
|
|
76489
76633
|
]) target[key] = source[key];
|
|
76490
76634
|
};
|
|
76491
|
-
const enableJsonMode = ({ compact, directory, outputFile }) => {
|
|
76635
|
+
const enableJsonMode = ({ compact, directory, outputFile, writeCancellationError }) => {
|
|
76492
76636
|
context = {
|
|
76493
76637
|
compact,
|
|
76494
76638
|
directory,
|
|
76495
76639
|
startTime: performance$1.now(),
|
|
76496
76640
|
mode: "full",
|
|
76497
|
-
outputFile: null
|
|
76641
|
+
outputFile: null,
|
|
76642
|
+
writeCancellationError
|
|
76498
76643
|
};
|
|
76499
76644
|
installSilentConsole();
|
|
76500
76645
|
if (outputFile) {
|
|
@@ -76533,6 +76678,13 @@ const writeJsonErrorReport = (error, sentryEventId) => {
|
|
|
76533
76678
|
process.stdout.write(INTERNAL_ERROR_JSON_FALLBACK);
|
|
76534
76679
|
}
|
|
76535
76680
|
};
|
|
76681
|
+
const writeJsonCancellationReport = () => {
|
|
76682
|
+
if (context?.writeCancellationError !== void 0) {
|
|
76683
|
+
context.writeCancellationError();
|
|
76684
|
+
return;
|
|
76685
|
+
}
|
|
76686
|
+
writeJsonErrorReport(/* @__PURE__ */ new Error("Scan cancelled by user (SIGINT/SIGTERM)"));
|
|
76687
|
+
};
|
|
76536
76688
|
//#endregion
|
|
76537
76689
|
//#region src/cli/utils/run-id.ts
|
|
76538
76690
|
let cachedRunId;
|
|
@@ -76541,10 +76693,14 @@ const getRunId = () => {
|
|
|
76541
76693
|
return cachedRunId;
|
|
76542
76694
|
};
|
|
76543
76695
|
//#endregion
|
|
76696
|
+
//#region src/cli/utils/scrub-run-arguments.ts
|
|
76697
|
+
const scrubRunArguments = (argumentsList) => anonymizeText(argumentsList.map((argument) => argument.replace(/^((?:--[^=]+=)?)(?:https?|wss?):\/\/.+$/i, "$1<url>")).join(" "));
|
|
76698
|
+
//#endregion
|
|
76544
76699
|
//#region src/cli/utils/build-run-context.ts
|
|
76545
76700
|
const ROOT_SUBCOMMANDS = new Set([
|
|
76546
76701
|
"design",
|
|
76547
76702
|
"install",
|
|
76703
|
+
"scan",
|
|
76548
76704
|
"setup"
|
|
76549
76705
|
]);
|
|
76550
76706
|
const detectInvokedVia = () => {
|
|
@@ -76585,7 +76741,7 @@ const buildRunContext = () => {
|
|
|
76585
76741
|
runId: getRunId(),
|
|
76586
76742
|
origin: detectOrigin(),
|
|
76587
76743
|
command: detectCommand(userArguments),
|
|
76588
|
-
argv:
|
|
76744
|
+
argv: scrubRunArguments(userArguments),
|
|
76589
76745
|
cwd: scrubSensitivePaths(process.cwd()),
|
|
76590
76746
|
node: process.version,
|
|
76591
76747
|
nodeMajor: detectNodeMajor(),
|
|
@@ -76615,33 +76771,41 @@ const buildRunContext = () => {
|
|
|
76615
76771
|
* omits `projectName` and `rootDirectory`, the two identifying fields, so the
|
|
76616
76772
|
* project can't be tied back to a specific company/repo.
|
|
76617
76773
|
*/
|
|
76618
|
-
const buildSentryProjectContext = (projectInfo) =>
|
|
76619
|
-
|
|
76620
|
-
|
|
76621
|
-
|
|
76622
|
-
|
|
76623
|
-
|
|
76624
|
-
|
|
76625
|
-
|
|
76626
|
-
|
|
76627
|
-
|
|
76628
|
-
|
|
76629
|
-
|
|
76630
|
-
|
|
76631
|
-
|
|
76632
|
-
|
|
76633
|
-
|
|
76634
|
-
|
|
76635
|
-
|
|
76636
|
-
|
|
76637
|
-
|
|
76638
|
-
|
|
76639
|
-
|
|
76640
|
-
|
|
76641
|
-
|
|
76642
|
-
|
|
76643
|
-
|
|
76644
|
-
|
|
76774
|
+
const buildSentryProjectContext = (projectInfo) => {
|
|
76775
|
+
const capabilities = buildCapabilities(projectInfo);
|
|
76776
|
+
const supportedRuntimes = [];
|
|
76777
|
+
if (capabilities.has("react")) supportedRuntimes.push("react");
|
|
76778
|
+
if (capabilities.has("three")) supportedRuntimes.push("three");
|
|
76779
|
+
if (capabilities.has("remotion")) supportedRuntimes.push("remotion");
|
|
76780
|
+
return {
|
|
76781
|
+
tags: {
|
|
76782
|
+
"project.framework": projectInfo.framework,
|
|
76783
|
+
"project.runtime": supportedRuntimes.join("+") || "unknown",
|
|
76784
|
+
"project.reactMajor": projectInfo.reactMajorVersion,
|
|
76785
|
+
"project.typescript": projectInfo.hasTypeScript,
|
|
76786
|
+
"project.reactCompiler": projectInfo.hasReactCompiler,
|
|
76787
|
+
"project.expo": projectInfo.expoVersion !== null,
|
|
76788
|
+
"project.reactNative": projectInfo.hasReactNativeWorkspace
|
|
76789
|
+
},
|
|
76790
|
+
context: {
|
|
76791
|
+
framework: projectInfo.framework,
|
|
76792
|
+
reactVersion: projectInfo.reactVersion,
|
|
76793
|
+
reactMajorVersion: projectInfo.reactMajorVersion,
|
|
76794
|
+
hasTypeScript: projectInfo.hasTypeScript,
|
|
76795
|
+
hasReactCompiler: projectInfo.hasReactCompiler,
|
|
76796
|
+
tanstackQueryVersion: projectInfo.tanstackQueryVersion,
|
|
76797
|
+
mobxVersion: projectInfo.mobxVersion,
|
|
76798
|
+
styledComponentsVersion: projectInfo.styledComponentsVersion,
|
|
76799
|
+
tailwindVersion: projectInfo.tailwindVersion,
|
|
76800
|
+
zodVersion: projectInfo.zodVersion,
|
|
76801
|
+
preactVersion: projectInfo.preactVersion,
|
|
76802
|
+
hasReactNativeWorkspace: projectInfo.hasReactNativeWorkspace,
|
|
76803
|
+
expoVersion: projectInfo.expoVersion,
|
|
76804
|
+
hasReanimated: projectInfo.hasReanimated,
|
|
76805
|
+
sourceFileCount: projectInfo.sourceFileCount
|
|
76806
|
+
}
|
|
76807
|
+
};
|
|
76808
|
+
};
|
|
76645
76809
|
let currentProjectInfo = null;
|
|
76646
76810
|
const setSentryProjectInfo = (projectInfo) => {
|
|
76647
76811
|
currentProjectInfo = projectInfo;
|
|
@@ -76772,7 +76936,7 @@ const recordDistribution = (name, value, options = {}) => {
|
|
|
76772
76936
|
} catch {}
|
|
76773
76937
|
};
|
|
76774
76938
|
//#endregion
|
|
76775
|
-
export {
|
|
76939
|
+
export { Linter as $, CANONICAL_DISCORD_URL as $n, layerObservability as $t, SCAN_RESULT_CACHE_FILENAME as A, gen as An, discoverSupportedSubprojects as At, isNonInteractiveEnvironment as B, sync as Bn, getDiffInfo as Bt, CI_TRUST_COMPANIES as C, error as Cn, messageFromUnknown as Cr, collectSourceFileCountsByDirectory as Ct, NANOSECONDS_PER_MILLISECOND as D, Diagnostic as Dn, createNodeReadFileLinesSync as Dt, MINIMUM_VTE_VERSION_FOR_HYPERLINKS as E, warn$1 as En, countOptInProjectRuleSelections as Et, STAGED_FILES_TEMP_DIR_PREFIX as F, provide as Fn, formatErrorChain as Ft, isCiEnvironment as G, provide$2 as Gn, hashFileContents as Gt, isDebugFlagEnabled as H, void_ as Hn, groupBy as Ht, STAGED_SNAPSHOT_ADDITIONAL_CONFIG_FILENAMES as I, provideContext as In, formatReactDoctorError as It, Config as J, makeUnsafe$5 as Jn, isPathInsideDirectory as Jt, isCiOrCodingAgentEnvironment as K, succeed$3 as Kn, highlighter as Kt, TUI_REPORT_COMPACT_MAX_ROWS as L, provideService as Ln, getBaselineDiffPlan as Lt, SENTRY_DSN as M, map$3 as Mn, filterPathsOutsideDirectories as Mt, SENTRY_FLUSH_TIMEOUT_MS as N, orElseSucceed as Nn, filterSourceFiles as Nt, REACT_DOCTOR_CONFIG_PROJECT_NAME as O, decodeUnknownSync as On, createOxlintSpawnSlots as Ot, SENTRY_RELEASE_PREFIX as P, promise as Pn, findLegacyConfig as Pt, LintPartialFailures as Q, AXIOM_DEFAULT_DOMAIN as Qn, isScanComplete as Qt, TUI_REPORT_DETAIL_WIDTH_FRACTION as R, runPromise as Rn, getChangedLineRanges as Rt, BASELINE_FILES_TEMP_DIR_PREFIX as S, Console as Sn, isPlainObject as Sr, clearConfigCache as St, METRIC as T, log as Tn, computeDiagnosticDelta as Tt, ACTION_INPUT_ENVIRONMENT_VARIABLES as U, buildWithScope as Un, hasPublishedFixRecipe as Ut, isGitHookEnvironment as V, try_ as Vn, getEquivalentRuleKeys as Vt, detectRunnerOs as W, mergeAll$1 as Wn, hasSupportedFrameworkOrLibrary as Wt, Git as X, void_$1 as Xn, isReactDoctorError as Xt, Files as Y, fail$5 as Yn, isProjectDiscoveryError as Yt, LEGACY_CONFIG_FILENAME as Z, ParentSpan as Zn, isSameRuleKey as Zt, VERSION as _, shouldUseMaintainabilityLayer as _n, STAGED_FILES_PROJECT_CONFIG_FILENAMES as _r, buildRuleSeverityControls as _t, isEnvFlagEnabled as a, materializeSourceTree as an, DIAGNOSTIC_CATEGORY_BUCKETS as ar, Progress as at, AXIOM_METRICS_DATASET as b, validateConfigTypes as bn, isErrnoException as br, canonicalizeUserRuleKey as bt, setSentryProjectInfo as c, resolveGithubActionsScoreMetadata as cn, GITHUB_ACTIONS_SETUP_URL as cr, Score as ct, isJsonModeActive as d, resolveScanConcurrency as dn, JSX_DUPLICATION_SOURCE_FILE_PATTERN as dr, SupplyChain as dt, listSourceFiles as en, CANONICAL_GITHUB_URL as er, Maintainability as et, setJsonReportDirectory as f, resolveScanTarget as fn, JSX_FILE_PATTERN as fr, anonymizeInPlace as ft, writeJsonReport as g, setColorEnabled as gn, SKILL_NAME as gr, buildRuleDocsUrl as gt, writeJsonErrorReport as h, scrubSensitivePaths as hn, SHARE_BASE_URL as hr, buildJsonReport as ht, isTelemetryEnabled as i, mapWithConcurrency as in, CONFIG_SCHEMA_URL as ir, PerFileLintCacheEnabled as it, SCAN_RESULT_CACHE_MAX_HASHED_FILE_SIZE_BYTES as j, makeSpan$1 as jn, filterDiagnosticsForSurface as jt, RUN_GIT_MAX_BUFFER_BYTES as k, make$30 as kn, detectAiTrainingEnvironment as kt, getRunId as l, resolveLintBatchOrdering as ln, GIT_SHOW_MAX_BUFFER_BYTES as lr, SidecarLintCacheEnabled as lt, writeJsonCancellationReport as m, runInspect as mn, OXLINT_NODE_REQUIREMENT as mr, atomicWriteJson as mt, recordDistribution as n, listWorkspacePackages as nn, COMPILER_CLEANUP_BUCKET as nr, OxlintConcurrency as nt, buildSentryScope as o, mergeReactDoctorConfigs as on, DOCS_URL as or, Project as ot, setJsonReportMode as p, restoreLegacyThrow as pn, MILLISECONDS_PER_SECOND as pr, anonymizeText as pt, isCodingAgentEnvironment as q, close as qn, isMonorepoRoot as qt, toSpanAttributes as r, loadConfigWithSource as rn, COMPILER_CLEANUP_RULE_KEYS as rr, OxlintSpawnSlots as rt, buildSentryProjectContext as s, remainingDeadlineBudgetMs as sn, ENTERPRISE_CONTACT_URL as sr, Reporter as st, recordCount as t, listSourceFilesCooperative as tn, CI_URL as tr, NodeResolver as tt, enableJsonMode as u, resolveReactDoctorCacheDir as un, HTML_FILE_PATTERN as ur, StagedFiles as ut, makeNoopConsole as v, summarizeDiagnostics as vn, getCategoryImpact as vr, buildSkippedChecks as vt, GH_DEFAULT_BRANCH_PROBE_TIMEOUT_MS as w, info as wn, toCanonicalPath as wr, computeConfigFingerprint as wt, AXIOM_TRACES_DATASET as x, yieldToEventLoop as xn, isFile as xr, classifyFileContext as xt, AXIOM_INGEST_TOKEN as y, toRelativePath as yn, isDirectory as yr, calculateScore as yt, CliInputError as z, runSync as zn, getDiagnosticRuleIdentity as zt };
|
|
76776
76940
|
|
|
76777
|
-
//# sourceMappingURL=record-metric-
|
|
76778
|
-
//# debugId=
|
|
76941
|
+
//# sourceMappingURL=record-metric-CdX-TQ5W.js.map
|
|
76942
|
+
//# debugId=6a0ba47c-464a-51ea-81ff-c472b6fa548a
|