foresthouse 1.0.0 → 1.0.1-dev.2
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/cli.mjs
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import { a as printReactUsageTree, c as printPackageDependencyTree, f as analyzeReactUsage, g as analyzePackageDependencies, h as analyzePackageDependencyDiff, i as graphToSerializablePackageTree, m as isSourceCodeFile, n as graphToSerializableTree, o as printDependencyTree, p as analyzeDependencies, r as diffGraphToSerializablePackageTree, s as printPackageDependencyDiffTree, t as graphToSerializableReactTree } from "./react-
|
|
2
|
+
import { a as printReactUsageTree, c as printPackageDependencyTree, f as analyzeReactUsage, g as analyzePackageDependencies, h as analyzePackageDependencyDiff, i as graphToSerializablePackageTree, m as isSourceCodeFile, n as graphToSerializableTree, o as printDependencyTree, p as analyzeDependencies, r as diffGraphToSerializablePackageTree, s as printPackageDependencyDiffTree, t as graphToSerializableReactTree } from "./react-DxWukhfX.mjs";
|
|
3
3
|
import { createRequire } from "node:module";
|
|
4
4
|
import fs from "node:fs";
|
|
5
5
|
import path from "node:path";
|
package/dist/index.d.mts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.mts","names":[],"sources":["../src/types/package-dependency-change-kind.ts","../src/types/package-dependency-diff-dependency.ts","../src/types/package-dependency-diff-node.ts","../src/types/package-dependency-diff-graph.ts","../src/analyzers/deps/diff.ts","../src/types/package-manifest-dependency.ts","../src/types/package-dependency-node.ts","../src/types/package-dependency-graph.ts","../src/analyzers/deps/index.ts","../src/types/analyze-options.ts","../src/types/dependency-kind.ts","../src/types/reference-kind.ts","../src/types/dependency-edge.ts","../src/types/source-module-node.ts","../src/types/dependency-graph.ts","../src/analyzers/import/index.ts","../src/types/react-usage-location.ts","../src/types/react-usage-entry.ts","../src/types/react-symbol-kind.ts","../src/types/react-usage-edge-kind.ts","../src/types/react-usage-edge.ts","../src/types/react-usage-node.ts","../src/types/react-usage-graph.ts","../src/analyzers/react/index.ts","../src/types/react-usage-filter.ts","../src/analyzers/react/queries.ts","../src/types/color-mode.ts","../src/types/print-package-tree-options.ts","../src/output/ascii/deps.ts","../src/types/print-tree-options.ts","../src/output/ascii/import.ts","../src/types/print-react-tree-options.ts","../src/output/ascii/react.ts","../src/output/json/deps.ts","../src/output/json/import.ts","../src/output/json/react.ts"],"mappings":";KAAY,2BAAA;;;UCGK,0BAAA;EAAA,SACN,MAAA;EAAA,SACA,SAAA;EAAA,SACA,eAAA;EAAA,SACA,WAAA;AAAA;AAAA,UAGD,mCAAA;EAAA,SACC,IAAA;EAAA,SACA,MAAA,EAAQ,2BAAA;EAAA,SACR,MAAA,GAAS,0BAAA;EAAA,SACT,KAAA,GAAQ,0BAAA;AAAA;AAAA,UAGF,6BAAA,SACP,mCAAA;EAAA,SACC,IAAA;EAAA,SACA,gBAAA;EAAA,SACA,sBAAA;EAAA,SACA,kBAAA;AAAA;AAAA,UAGM,8BAAA,SACP,mCAAA;EAAA,SACC,IAAA;EAAA,SACA,IAAA,EAAM,yBAAA;AAAA;AAAA,KAGL,+BAAA,GACR,6BAAA,GACA,8BAAA;;;UC9Ba,yBAAA;EAAA,SACN,IAAA;EAAA,SACA,KAAA;EAAA,SACA,WAAA;EAAA,SACA,IAAA;EAAA,SACA,MAAA,EAAQ,2BAAA;EAAA,SACR,iBAAA;EAAA,SACA,gBAAA;EAAA,SACA,YAAA,WAAuB,+BAAA;AAAA;;;UCTjB,0BAAA;EAAA,SACN,cAAA;EAAA,SACA,IAAA,EAAM,yBAAA;AAAA;;;iBCwDD,4BAAA,CACd,SAAA,UACA,IAAA,WACC,0BAAA;;;UC/Dc,iCAAA;EAAA,SACN,IAAA;EAAA,SACA,IAAA;EAAA,SACA,SAAA;AAAA;AAAA,UAGM,kCAAA;EAAA,SACN,IAAA;EAAA,SACA,IAAA;EAAA,SACA,SAAA;EAAA,SACA,MAAA;AAAA;AAAA,KAGC,yBAAA,GACR,iCAAA,GACA,kCAAA;;;UCba,qBAAA;EAAA,SACN,UAAA;EAAA,SACA,WAAA;EAAA,SACA,YAAA,WAAuB,yBAAA;AAAA;;;UCHjB,sBAAA;EAAA,SACN,cAAA;EAAA,SACA,MAAA;EAAA,SACA,KAAA,EAAO,WAAA,SAAoB,qBAAA;AAAA;;;iBC0BtB,0BAAA,CACd,SAAA,WACC,sBAAA;;;UCjCc,cAAA;EAAA,SACN,GAAA;EAAA,SACA,UAAA;EAAA,SACA,gBAAA;EAAA,SACA,WAAA;EAAA,SACA,eAAA;AAAA;;;KCLC,cAAA;;;KCAA,aAAA;;;UCGK,cAAA;EAAA,SACN,SAAA;EAAA,SACA,aAAA,EAAe,aAAA;EAAA,SACf,UAAA;EAAA,SACA,MAAA;EAAA,SACA,IAAA,EAAM,cAAA;EAAA,SACN,MAAA;EAAA,SACA,QAAA;AAAA;;;UCRM,gBAAA;EAAA,SACN,EAAA;EAAA,SACA,YAAA,WAAuB,cAAA;AAAA;;;UCFjB,eAAA;EAAA,SACN,GAAA;EAAA,SACA,OAAA;EAAA,SACA,KAAA,EAAO,WAAA,SAAoB,gBAAA;EAAA,SAC3B,UAAA;AAAA;;;
|
|
1
|
+
{"version":3,"file":"index.d.mts","names":[],"sources":["../src/types/package-dependency-change-kind.ts","../src/types/package-dependency-diff-dependency.ts","../src/types/package-dependency-diff-node.ts","../src/types/package-dependency-diff-graph.ts","../src/analyzers/deps/diff.ts","../src/types/package-manifest-dependency.ts","../src/types/package-dependency-node.ts","../src/types/package-dependency-graph.ts","../src/analyzers/deps/index.ts","../src/types/analyze-options.ts","../src/types/dependency-kind.ts","../src/types/reference-kind.ts","../src/types/dependency-edge.ts","../src/types/source-module-node.ts","../src/types/dependency-graph.ts","../src/analyzers/import/index.ts","../src/types/react-usage-location.ts","../src/types/react-usage-entry.ts","../src/types/react-symbol-kind.ts","../src/types/react-usage-edge-kind.ts","../src/types/react-usage-edge.ts","../src/types/react-usage-node.ts","../src/types/react-usage-graph.ts","../src/analyzers/react/index.ts","../src/types/react-usage-filter.ts","../src/analyzers/react/queries.ts","../src/types/color-mode.ts","../src/types/print-package-tree-options.ts","../src/output/ascii/deps.ts","../src/types/print-tree-options.ts","../src/output/ascii/import.ts","../src/types/print-react-tree-options.ts","../src/output/ascii/react.ts","../src/output/json/deps.ts","../src/output/json/import.ts","../src/output/json/react.ts"],"mappings":"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"}
|
package/dist/index.mjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { a as printReactUsageTree, c as printPackageDependencyTree, d as getReactUsageRoots, f as analyzeReactUsage, g as analyzePackageDependencies, h as analyzePackageDependencyDiff, i as graphToSerializablePackageTree, l as getFilteredUsages, n as graphToSerializableTree, o as printDependencyTree, p as analyzeDependencies, r as diffGraphToSerializablePackageTree, s as printPackageDependencyDiffTree, t as graphToSerializableReactTree, u as getReactUsageEntries } from "./react-
|
|
1
|
+
import { a as printReactUsageTree, c as printPackageDependencyTree, d as getReactUsageRoots, f as analyzeReactUsage, g as analyzePackageDependencies, h as analyzePackageDependencyDiff, i as graphToSerializablePackageTree, l as getFilteredUsages, n as graphToSerializableTree, o as printDependencyTree, p as analyzeDependencies, r as diffGraphToSerializablePackageTree, s as printPackageDependencyDiffTree, t as graphToSerializableReactTree, u as getReactUsageEntries } from "./react-DxWukhfX.mjs";
|
|
2
2
|
export { analyzeDependencies, analyzePackageDependencies, analyzePackageDependencyDiff, analyzeReactUsage, diffGraphToSerializablePackageTree, getFilteredUsages, getReactUsageEntries, getReactUsageRoots, graphToSerializablePackageTree, graphToSerializableReactTree, graphToSerializableTree, printDependencyTree, printPackageDependencyDiffTree, printPackageDependencyTree, printReactUsageTree };
|
|
@@ -1066,8 +1066,8 @@ function isInsideNodeModules(filePath) {
|
|
|
1066
1066
|
}
|
|
1067
1067
|
//#endregion
|
|
1068
1068
|
//#region src/analyzers/import/graph.ts
|
|
1069
|
-
function buildDependencyGraph(
|
|
1070
|
-
return new DependencyGraphBuilder(
|
|
1069
|
+
function buildDependencyGraph(entryConfigs, options) {
|
|
1070
|
+
return new DependencyGraphBuilder(entryConfigs, options).build();
|
|
1071
1071
|
}
|
|
1072
1072
|
var DependencyGraphBuilder = class {
|
|
1073
1073
|
nodes = /* @__PURE__ */ new Map();
|
|
@@ -1075,20 +1075,23 @@ var DependencyGraphBuilder = class {
|
|
|
1075
1075
|
programCache = /* @__PURE__ */ new Map();
|
|
1076
1076
|
checkerCache = /* @__PURE__ */ new Map();
|
|
1077
1077
|
resolverCache = /* @__PURE__ */ new Map();
|
|
1078
|
-
constructor(
|
|
1079
|
-
this.
|
|
1078
|
+
constructor(entryConfigs, options) {
|
|
1079
|
+
this.entryConfigs = entryConfigs;
|
|
1080
1080
|
this.options = options;
|
|
1081
|
-
|
|
1082
|
-
|
|
1083
|
-
|
|
1084
|
-
|
|
1085
|
-
|
|
1081
|
+
entryConfigs.forEach((entryConfig) => {
|
|
1082
|
+
this.configCache.set(path.dirname(entryConfig.entryPath), {
|
|
1083
|
+
compilerOptions: entryConfig.compilerOptions,
|
|
1084
|
+
...entryConfig.configPath === void 0 ? {} : { path: entryConfig.configPath }
|
|
1085
|
+
});
|
|
1086
|
+
});
|
|
1086
1087
|
}
|
|
1087
1088
|
build() {
|
|
1088
|
-
this.
|
|
1089
|
+
this.entryConfigs.forEach((entryConfig) => {
|
|
1090
|
+
this.visitFile(entryConfig.entryPath, entryConfig.configPath);
|
|
1091
|
+
});
|
|
1089
1092
|
return this.nodes;
|
|
1090
1093
|
}
|
|
1091
|
-
visitFile(filePath) {
|
|
1094
|
+
visitFile(filePath, entryConfigPath) {
|
|
1092
1095
|
const normalizedPath = normalizeFilePath(filePath);
|
|
1093
1096
|
if (this.nodes.has(normalizedPath)) return;
|
|
1094
1097
|
const config = this.getConfigForFile(normalizedPath);
|
|
@@ -1100,13 +1103,13 @@ var DependencyGraphBuilder = class {
|
|
|
1100
1103
|
projectOnly: this.options.projectOnly,
|
|
1101
1104
|
getConfigForFile: (targetPath) => this.getConfigForFile(targetPath),
|
|
1102
1105
|
getResolverForFile: (targetPath) => this.getResolverForFile(targetPath),
|
|
1103
|
-
...
|
|
1106
|
+
...entryConfigPath === void 0 ? {} : { entryConfigPath }
|
|
1104
1107
|
}));
|
|
1105
1108
|
this.nodes.set(normalizedPath, {
|
|
1106
1109
|
id: normalizedPath,
|
|
1107
1110
|
dependencies
|
|
1108
1111
|
});
|
|
1109
|
-
for (const dependency of dependencies) if (dependency.kind === "source") this.visitFile(dependency.target);
|
|
1112
|
+
for (const dependency of dependencies) if (dependency.kind === "source") this.visitFile(dependency.target, entryConfigPath);
|
|
1110
1113
|
}
|
|
1111
1114
|
getConfigForFile(filePath) {
|
|
1112
1115
|
const directory = path.dirname(filePath);
|
|
@@ -1173,32 +1176,69 @@ var DependencyGraphBuilder = class {
|
|
|
1173
1176
|
//#endregion
|
|
1174
1177
|
//#region src/analyzers/import/index.ts
|
|
1175
1178
|
function analyzeDependencies(entryFile, options = {}) {
|
|
1176
|
-
|
|
1179
|
+
const graph = analyzeDependenciesForEntries([entryFile], options);
|
|
1180
|
+
return {
|
|
1181
|
+
cwd: graph.cwd,
|
|
1182
|
+
entryId: graph.entryId,
|
|
1183
|
+
nodes: graph.nodes,
|
|
1184
|
+
...graph.configPath === void 0 ? {} : { configPath: graph.configPath }
|
|
1185
|
+
};
|
|
1186
|
+
}
|
|
1187
|
+
function analyzeDependenciesForEntries(entryFiles, options = {}) {
|
|
1188
|
+
return new MultiEntryImportAnalyzer(entryFiles, options).analyze();
|
|
1177
1189
|
}
|
|
1178
|
-
var
|
|
1190
|
+
var MultiEntryImportAnalyzer = class extends BaseAnalyzer {
|
|
1179
1191
|
cwd;
|
|
1180
|
-
|
|
1181
|
-
constructor(
|
|
1182
|
-
|
|
1192
|
+
entryPaths;
|
|
1193
|
+
constructor(entryFiles, options) {
|
|
1194
|
+
const [firstEntryFile] = entryFiles;
|
|
1195
|
+
if (firstEntryFile === void 0) throw new Error("At least one entry file is required.");
|
|
1196
|
+
super(firstEntryFile, options);
|
|
1183
1197
|
this.cwd = path.resolve(options.cwd ?? process.cwd());
|
|
1184
|
-
this.
|
|
1198
|
+
this.entryPaths = [...new Set(entryFiles)].map((entryFile) => resolveExistingPath(this.cwd, entryFile));
|
|
1185
1199
|
}
|
|
1186
1200
|
doAnalyze() {
|
|
1187
|
-
const
|
|
1188
|
-
const nodes = buildDependencyGraph(
|
|
1201
|
+
const entryConfigs = this.resolveEntryConfigs();
|
|
1202
|
+
const nodes = buildDependencyGraph(entryConfigs, {
|
|
1189
1203
|
cwd: this.cwd,
|
|
1190
|
-
entryCompilerOptions: compilerOptions,
|
|
1191
1204
|
expandWorkspaces: this.options.expandWorkspaces ?? true,
|
|
1192
|
-
projectOnly: this.options.projectOnly ?? false
|
|
1193
|
-
...configPath === void 0 ? {} : { entryConfigPath: configPath }
|
|
1205
|
+
projectOnly: this.options.projectOnly ?? false
|
|
1194
1206
|
});
|
|
1207
|
+
const uniqueConfigPaths = [...new Set(entryConfigs.map((entry) => entry.configPath))];
|
|
1208
|
+
const configPath = uniqueConfigPaths.length === 1 ? uniqueConfigPaths[0] : void 0;
|
|
1209
|
+
const [firstEntryPath] = this.entryPaths;
|
|
1210
|
+
if (firstEntryPath === void 0) throw new Error("At least one entry file is required.");
|
|
1195
1211
|
return {
|
|
1196
1212
|
cwd: this.cwd,
|
|
1197
|
-
entryId:
|
|
1213
|
+
entryId: firstEntryPath,
|
|
1214
|
+
entryIds: this.entryPaths,
|
|
1198
1215
|
nodes,
|
|
1199
1216
|
...configPath === void 0 ? {} : { configPath }
|
|
1200
1217
|
};
|
|
1201
1218
|
}
|
|
1219
|
+
resolveEntryConfigs() {
|
|
1220
|
+
const configCache = /* @__PURE__ */ new Map();
|
|
1221
|
+
return this.entryPaths.map((entryPath) => {
|
|
1222
|
+
const directory = path.dirname(entryPath);
|
|
1223
|
+
const cached = configCache.get(directory);
|
|
1224
|
+
if (cached !== void 0) return {
|
|
1225
|
+
entryPath,
|
|
1226
|
+
compilerOptions: cached.compilerOptions,
|
|
1227
|
+
...cached.configPath === void 0 ? {} : { configPath: cached.configPath }
|
|
1228
|
+
};
|
|
1229
|
+
const loaded = loadCompilerOptions(directory, this.options.configPath);
|
|
1230
|
+
const resolved = {
|
|
1231
|
+
compilerOptions: loaded.compilerOptions,
|
|
1232
|
+
...loaded.path === void 0 ? {} : { configPath: loaded.path }
|
|
1233
|
+
};
|
|
1234
|
+
configCache.set(directory, resolved);
|
|
1235
|
+
return {
|
|
1236
|
+
entryPath,
|
|
1237
|
+
compilerOptions: resolved.compilerOptions,
|
|
1238
|
+
...resolved.configPath === void 0 ? {} : { configPath: resolved.configPath }
|
|
1239
|
+
};
|
|
1240
|
+
});
|
|
1241
|
+
}
|
|
1202
1242
|
};
|
|
1203
1243
|
//#endregion
|
|
1204
1244
|
//#region src/analyzers/react/bindings.ts
|
|
@@ -1459,6 +1499,7 @@ function unwrapExpression(expression) {
|
|
|
1459
1499
|
}
|
|
1460
1500
|
//#endregion
|
|
1461
1501
|
//#region src/analyzers/react/entries.ts
|
|
1502
|
+
const lineStartOffsetsCache = /* @__PURE__ */ new Map();
|
|
1462
1503
|
function collectEntryUsages(program, filePath, sourceText, includeBuiltins) {
|
|
1463
1504
|
const entries = /* @__PURE__ */ new Map();
|
|
1464
1505
|
program.body.forEach((statement) => {
|
|
@@ -1525,24 +1566,43 @@ function createReactUsageLocation(filePath, sourceText, offset) {
|
|
|
1525
1566
|
};
|
|
1526
1567
|
}
|
|
1527
1568
|
function offsetToLineAndColumn(sourceText, offset) {
|
|
1528
|
-
|
|
1529
|
-
|
|
1530
|
-
|
|
1531
|
-
|
|
1532
|
-
line += 1;
|
|
1533
|
-
column = 1;
|
|
1534
|
-
continue;
|
|
1535
|
-
}
|
|
1536
|
-
column += 1;
|
|
1537
|
-
}
|
|
1569
|
+
const lineStartOffsets = getLineStartOffsets(sourceText);
|
|
1570
|
+
const boundedOffset = Math.max(0, Math.min(offset, sourceText.length));
|
|
1571
|
+
const lineIndex = findLineIndex(lineStartOffsets, boundedOffset);
|
|
1572
|
+
const lineStartOffset = lineStartOffsets[lineIndex] ?? 0;
|
|
1538
1573
|
return {
|
|
1539
|
-
line,
|
|
1540
|
-
column
|
|
1574
|
+
line: lineIndex + 1,
|
|
1575
|
+
column: boundedOffset - lineStartOffset + 1
|
|
1541
1576
|
};
|
|
1542
1577
|
}
|
|
1543
1578
|
function comparePendingReactUsageEntries(left, right) {
|
|
1544
1579
|
return left.location.filePath.localeCompare(right.location.filePath) || left.location.line - right.location.line || left.location.column - right.location.column || left.kind.localeCompare(right.kind) || left.referenceName.localeCompare(right.referenceName);
|
|
1545
1580
|
}
|
|
1581
|
+
function getLineStartOffsets(sourceText) {
|
|
1582
|
+
const cached = lineStartOffsetsCache.get(sourceText);
|
|
1583
|
+
if (cached !== void 0) return cached;
|
|
1584
|
+
const lineStartOffsets = [0];
|
|
1585
|
+
for (let index = 0; index < sourceText.length; index += 1) if (sourceText[index] === "\n") lineStartOffsets.push(index + 1);
|
|
1586
|
+
lineStartOffsetsCache.set(sourceText, lineStartOffsets);
|
|
1587
|
+
return lineStartOffsets;
|
|
1588
|
+
}
|
|
1589
|
+
function findLineIndex(lineStartOffsets, offset) {
|
|
1590
|
+
let lowerBound = 0;
|
|
1591
|
+
let upperBound = lineStartOffsets.length - 1;
|
|
1592
|
+
while (lowerBound <= upperBound) {
|
|
1593
|
+
const middleIndex = Math.floor((lowerBound + upperBound) / 2);
|
|
1594
|
+
const middleOffset = lineStartOffsets[middleIndex];
|
|
1595
|
+
const nextOffset = lineStartOffsets[middleIndex + 1];
|
|
1596
|
+
if (middleOffset === void 0) return 0;
|
|
1597
|
+
if (offset < middleOffset) {
|
|
1598
|
+
upperBound = middleIndex - 1;
|
|
1599
|
+
continue;
|
|
1600
|
+
}
|
|
1601
|
+
if (nextOffset === void 0 || offset < nextOffset) return middleIndex;
|
|
1602
|
+
lowerBound = middleIndex + 1;
|
|
1603
|
+
}
|
|
1604
|
+
return Math.max(0, lineStartOffsets.length - 1);
|
|
1605
|
+
}
|
|
1546
1606
|
//#endregion
|
|
1547
1607
|
//#region src/analyzers/react/symbols.ts
|
|
1548
1608
|
function collectTopLevelReactSymbols(statement, filePath, symbolsByName) {
|
|
@@ -1834,9 +1894,7 @@ var ReactAnalyzer = class extends BaseAnalyzer {
|
|
|
1834
1894
|
this.entryFiles = entryFiles;
|
|
1835
1895
|
}
|
|
1836
1896
|
doAnalyze() {
|
|
1837
|
-
const
|
|
1838
|
-
const dependencyGraph = mergeDependencyGraphs(dependencyGraphs);
|
|
1839
|
-
const entryIds = dependencyGraphs.map((graph) => graph.entryId);
|
|
1897
|
+
const dependencyGraph = analyzeDependenciesForEntries(this.entryFiles, this.options);
|
|
1840
1898
|
const fileAnalyses = this.collectFileAnalyses(dependencyGraph);
|
|
1841
1899
|
const nodes = this.createNodes(fileAnalyses);
|
|
1842
1900
|
this.attachUsages(fileAnalyses, nodes);
|
|
@@ -1844,7 +1902,7 @@ var ReactAnalyzer = class extends BaseAnalyzer {
|
|
|
1844
1902
|
return {
|
|
1845
1903
|
cwd: dependencyGraph.cwd,
|
|
1846
1904
|
entryId: dependencyGraph.entryId,
|
|
1847
|
-
entryIds,
|
|
1905
|
+
entryIds: dependencyGraph.entryIds,
|
|
1848
1906
|
nodes,
|
|
1849
1907
|
entries
|
|
1850
1908
|
};
|
|
@@ -1939,21 +1997,6 @@ function normalizeEntryFiles(entryFile) {
|
|
|
1939
1997
|
if (dedupedEntryFiles.length === 0) throw new Error("At least one React entry file is required.");
|
|
1940
1998
|
return dedupedEntryFiles;
|
|
1941
1999
|
}
|
|
1942
|
-
function mergeDependencyGraphs(graphs) {
|
|
1943
|
-
const firstGraph = graphs[0];
|
|
1944
|
-
if (firstGraph === void 0) throw new Error("At least one dependency graph is required.");
|
|
1945
|
-
const nodes = /* @__PURE__ */ new Map();
|
|
1946
|
-
for (const graph of graphs) for (const [nodeId, node] of graph.nodes) if (!nodes.has(nodeId)) nodes.set(nodeId, node);
|
|
1947
|
-
const uniqueConfigPaths = [...new Set(graphs.map((graph) => graph.configPath))];
|
|
1948
|
-
const configPath = uniqueConfigPaths.length === 1 ? uniqueConfigPaths[0] : void 0;
|
|
1949
|
-
return {
|
|
1950
|
-
cwd: firstGraph.cwd,
|
|
1951
|
-
entryId: firstGraph.entryId,
|
|
1952
|
-
entryIds: graphs.map((graph) => graph.entryId),
|
|
1953
|
-
nodes,
|
|
1954
|
-
...configPath === void 0 ? {} : { configPath }
|
|
1955
|
-
};
|
|
1956
|
-
}
|
|
1957
2000
|
//#endregion
|
|
1958
2001
|
//#region src/analyzers/react/queries.ts
|
|
1959
2002
|
function getReactUsageEntries(graph, filter = "all") {
|
|
@@ -2497,4 +2540,4 @@ function formatReactNodeFilePath(filePath, kind, cwd) {
|
|
|
2497
2540
|
//#endregion
|
|
2498
2541
|
export { printReactUsageTree as a, printPackageDependencyTree as c, getReactUsageRoots as d, analyzeReactUsage as f, analyzePackageDependencies as g, analyzePackageDependencyDiff as h, graphToSerializablePackageTree as i, getFilteredUsages as l, isSourceCodeFile as m, graphToSerializableTree as n, printDependencyTree as o, analyzeDependencies as p, diffGraphToSerializablePackageTree as r, printPackageDependencyDiffTree as s, graphToSerializableReactTree as t, getReactUsageEntries as u };
|
|
2499
2542
|
|
|
2500
|
-
//# sourceMappingURL=react-
|
|
2543
|
+
//# sourceMappingURL=react-DxWukhfX.mjs.map
|