MCPcopy Index your code
hub / github.com/changesets/changesets / getDependentsGraph

Function getDependentsGraph

packages/get-dependents-graph/src/index.ts:4–54  ·  view source on GitHub ↗
(
  packages: Packages,
  opts?: {
    ignoreDevDependencies?: boolean;
    bumpVersionsWithWorkspaceProtocolOnly?: boolean;
  }
)

Source from the content-addressed store, hash-verified

2import getDependencyGraph from "./get-dependency-graph";
3
4export function getDependentsGraph(
5 packages: Packages,
6 opts?: {
7 ignoreDevDependencies?: boolean;
8 bumpVersionsWithWorkspaceProtocolOnly?: boolean;
9 }
10) {
11 const graph: Map<string, { pkg: Package; dependents: string[] }> = new Map();
12
13 const { graph: dependencyGraph } = getDependencyGraph(packages, opts);
14
15 const dependentsLookup: {
16 [key: string]: { pkg: Package; dependents: Array<string> };
17 } = {
18 [packages.root.packageJson.name]: {
19 pkg: packages.root,
20 dependents: [],
21 },
22 };
23
24 packages.packages.forEach((pkg) => {
25 dependentsLookup[pkg.packageJson.name] = {
26 pkg,
27 dependents: [],
28 };
29 });
30
31 packages.packages.forEach((pkg) => {
32 const dependent = pkg.packageJson.name;
33 const valFromDependencyGraph = dependencyGraph.get(dependent);
34 if (valFromDependencyGraph) {
35 const dependencies = valFromDependencyGraph.dependencies;
36
37 dependencies.forEach((dependency) => {
38 dependentsLookup[dependency].dependents.push(dependent);
39 });
40 }
41 });
42
43 Object.keys(dependentsLookup).forEach((key) => {
44 graph.set(key, dependentsLookup[key]);
45 });
46
47 const simplifiedDependentsGraph: Map<string, string[]> = new Map();
48
49 graph.forEach((pkgInfo, pkgName) => {
50 simplifiedDependentsGraph.set(pkgName, pkgInfo.dependents);
51 });
52
53 return simplifiedDependentsGraph;
54}

Callers 3

runFunction · 0.90
assembleReleasePlanFunction · 0.90
parseFunction · 0.90

Calls 1

getDependencyGraphFunction · 0.85

Tested by

no test coverage detected