foresthouse 1.0.0 → 1.0.1-dev.1

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-Fqrly1Yw.mjs";
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-BPPq-E6H.mjs";
3
3
  import { createRequire } from "node:module";
4
4
  import fs from "node:fs";
5
5
  import path from "node:path";
@@ -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;;;iBCGK,mBAAA,CACd,SAAA,UACA,OAAA,GAAS,cAAA,GACR,eAAA;;;UCZc,kBAAA;EAAA,SACN,QAAA;EAAA,SACA,IAAA;EAAA,SACA,MAAA;AAAA;;;UCDM,eAAA;EAAA,SACN,MAAA;EAAA,SACA,aAAA;EAAA,SACA,QAAA,EAAU,kBAAA;AAAA;;;KCLT,eAAA;;;KCAA,kBAAA;;;UCEK,cAAA;EAAA,SACN,IAAA,EAAM,kBAAA;EAAA,SACN,MAAA;EAAA,SACA,aAAA;AAAA;;;UCFM,cAAA;EAAA,SACN,EAAA;EAAA,SACA,IAAA;EAAA,SACA,IAAA,EAAM,eAAA;EAAA,SACN,QAAA;EAAA,SACA,WAAA;EAAA,SACA,MAAA,WAAiB,cAAA;AAAA;;;UCNX,eAAA;EAAA,SACN,GAAA;EAAA,SACA,OAAA;EAAA,SACA,QAAA;EAAA,SACA,KAAA,EAAO,WAAA,SAAoB,cAAA;EAAA,SAC3B,OAAA,WAAkB,eAAA;AAAA;;;iBCgBb,iBAAA,CACd,SAAA,8BACA,OAAA,GAAS,cAAA,GACR,eAAA;;;KCzBS,gBAAA,WAA2B,eAAA;;;iBCKvB,oBAAA,CACd,KAAA,EAAO,eAAA,EACP,MAAA,GAAQ,gBAAA,GACP,eAAA;AAAA,iBAOa,kBAAA,CACd,KAAA,EAAO,eAAA,EACP,MAAA,GAAQ,gBAAA;AAAA,iBAsCM,iBAAA,CACd,IAAA,EAAM,cAAA,EACN,KAAA,EAAO,eAAA,EACP,MAAA,GAAQ,gBAAA,GACP,cAAA;;;KC7DS,SAAA;;;UCEK,uBAAA;EAAA,SACN,KAAA,GAAQ,SAAA;AAAA;;;iBCOH,0BAAA,CACd,KAAA,EAAO,sBAAA,EACP,QAAA,GAAU,uBAAA;AAAA,iBAyBI,8BAAA,CACd,KAAA,EAAO,0BAAA,EACP,OAAA,GAAS,uBAAA;;;UCrCM,gBAAA;EAAA,SACN,GAAA;EAAA,SACA,gBAAA;EAAA,SACA,UAAA;EAAA,SACA,KAAA,GAAQ,SAAA;AAAA;;;iBCAH,mBAAA,CACd,KAAA,EAAO,eAAA,EACP,OAAA,GAAS,gBAAA;;;UCLM,qBAAA;EAAA,SACN,GAAA;EAAA,SACA,MAAA,GAAS,gBAAA;EAAA,SACT,KAAA,GAAQ,SAAA;AAAA;;;iBCaH,mBAAA,CACd,KAAA,EAAO,eAAA,EACP,OAAA,GAAS,qBAAA;;;iBCdK,8BAAA,CACd,KAAA,EAAO,sBAAA;AAAA,iBAKO,kCAAA,CACd,KAAA,EAAO,0BAAA;;;iBCVO,uBAAA,CACd,KAAA,EAAO,eAAA,EACP,OAAA;EAAA,SACW,UAAA;AAAA;;;iBC8BG,4BAAA,CACd,KAAA,EAAO,eAAA,EACP,OAAA;EAAA,SACW,MAAA,GAAS,gBAAA;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-Fqrly1Yw.mjs";
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-BPPq-E6H.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(entryPath, options) {
1070
- return new DependencyGraphBuilder(entryPath, options).build();
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(entryPath, options) {
1079
- this.entryPath = entryPath;
1078
+ constructor(entryConfigs, options) {
1079
+ this.entryConfigs = entryConfigs;
1080
1080
  this.options = options;
1081
- const entryConfig = {
1082
- compilerOptions: options.entryCompilerOptions,
1083
- ...options.entryConfigPath === void 0 ? {} : { path: options.entryConfigPath }
1084
- };
1085
- this.configCache.set(path.dirname(this.entryPath), entryConfig);
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.visitFile(this.entryPath);
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
- ...this.options.entryConfigPath === void 0 ? {} : { entryConfigPath: this.options.entryConfigPath }
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
- return new ImportAnalyzer(entryFile, options).analyze();
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
+ };
1177
1186
  }
1178
- var ImportAnalyzer = class extends BaseAnalyzer {
1187
+ function analyzeDependenciesForEntries(entryFiles, options = {}) {
1188
+ return new MultiEntryImportAnalyzer(entryFiles, options).analyze();
1189
+ }
1190
+ var MultiEntryImportAnalyzer = class extends BaseAnalyzer {
1179
1191
  cwd;
1180
- entryPath;
1181
- constructor(entryFile, options) {
1182
- super(entryFile, options);
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.entryPath = resolveExistingPath(this.cwd, entryFile);
1198
+ this.entryPaths = [...new Set(entryFiles)].map((entryFile) => resolveExistingPath(this.cwd, entryFile));
1185
1199
  }
1186
1200
  doAnalyze() {
1187
- const { compilerOptions, path: configPath } = loadCompilerOptions(path.dirname(this.entryPath), this.options.configPath);
1188
- const nodes = buildDependencyGraph(this.entryPath, {
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: this.entryPath,
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
@@ -1834,9 +1874,7 @@ var ReactAnalyzer = class extends BaseAnalyzer {
1834
1874
  this.entryFiles = entryFiles;
1835
1875
  }
1836
1876
  doAnalyze() {
1837
- const dependencyGraphs = this.entryFiles.map((entryFile) => analyzeDependencies(entryFile, this.options));
1838
- const dependencyGraph = mergeDependencyGraphs(dependencyGraphs);
1839
- const entryIds = dependencyGraphs.map((graph) => graph.entryId);
1877
+ const dependencyGraph = analyzeDependenciesForEntries(this.entryFiles, this.options);
1840
1878
  const fileAnalyses = this.collectFileAnalyses(dependencyGraph);
1841
1879
  const nodes = this.createNodes(fileAnalyses);
1842
1880
  this.attachUsages(fileAnalyses, nodes);
@@ -1844,7 +1882,7 @@ var ReactAnalyzer = class extends BaseAnalyzer {
1844
1882
  return {
1845
1883
  cwd: dependencyGraph.cwd,
1846
1884
  entryId: dependencyGraph.entryId,
1847
- entryIds,
1885
+ entryIds: dependencyGraph.entryIds,
1848
1886
  nodes,
1849
1887
  entries
1850
1888
  };
@@ -1939,21 +1977,6 @@ function normalizeEntryFiles(entryFile) {
1939
1977
  if (dedupedEntryFiles.length === 0) throw new Error("At least one React entry file is required.");
1940
1978
  return dedupedEntryFiles;
1941
1979
  }
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
1980
  //#endregion
1958
1981
  //#region src/analyzers/react/queries.ts
1959
1982
  function getReactUsageEntries(graph, filter = "all") {
@@ -2497,4 +2520,4 @@ function formatReactNodeFilePath(filePath, kind, cwd) {
2497
2520
  //#endregion
2498
2521
  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
2522
 
2500
- //# sourceMappingURL=react-Fqrly1Yw.mjs.map
2523
+ //# sourceMappingURL=react-BPPq-E6H.mjs.map