From c3bc369a54628423e721e9053897863172f5fdac Mon Sep 17 00:00:00 2001 From: Patrik Oldsberg Date: Sat, 5 Mar 2022 11:39:05 +0100 Subject: [PATCH] cli: add dependents to PackageGraph nodes Signed-off-by: Patrik Oldsberg --- .../cli/src/lib/monorepo/PackageGraph.test.ts | 21 +++++++++++++ packages/cli/src/lib/monorepo/PackageGraph.ts | 30 +++++++++++++++++++ 2 files changed, 51 insertions(+) diff --git a/packages/cli/src/lib/monorepo/PackageGraph.test.ts b/packages/cli/src/lib/monorepo/PackageGraph.test.ts index 06427a7313..feb1709bf7 100644 --- a/packages/cli/src/lib/monorepo/PackageGraph.test.ts +++ b/packages/cli/src/lib/monorepo/PackageGraph.test.ts @@ -87,6 +87,11 @@ describe('PackageGraph', () => { localDependencies: new Map([['b', b]]), localDevDependencies: new Map([['c', c]]), localOptionalDependencies: new Map(), + allLocalDependents: new Map(), + publishedLocalDependents: new Map(), + localDependents: new Map(), + localDevDependents: new Map(), + localOptionalDependents: new Map(), }); expect(b).toMatchObject({ name: 'b', @@ -96,6 +101,11 @@ describe('PackageGraph', () => { localDependencies: new Map(), localDevDependencies: new Map([['c', c]]), localOptionalDependencies: new Map(), + allLocalDependents: new Map([['a', a]]), + publishedLocalDependents: new Map([['a', a]]), + localDependents: new Map([['a', a]]), + localDevDependents: new Map(), + localOptionalDependents: new Map(), }); expect(c).toMatchObject({ name: 'c', @@ -105,6 +115,17 @@ describe('PackageGraph', () => { localDependencies: new Map(), localDevDependencies: new Map(), localOptionalDependencies: new Map(), + allLocalDependents: new Map([ + ['a', a], + ['b', b], + ]), + publishedLocalDependents: new Map(), + localDependents: new Map(), + localDevDependents: new Map([ + ['a', a], + ['b', b], + ]), + localOptionalDependents: new Map(), }); }); diff --git a/packages/cli/src/lib/monorepo/PackageGraph.ts b/packages/cli/src/lib/monorepo/PackageGraph.ts index 4bbb9eac67..c65f5c003c 100644 --- a/packages/cli/src/lib/monorepo/PackageGraph.ts +++ b/packages/cli/src/lib/monorepo/PackageGraph.ts @@ -47,6 +47,7 @@ export type PackageGraphNode = { dir: string; /** The package data of the package itself */ packageJson: ExtendedPackageJSON; + /** All direct local dependencies of the package */ allLocalDependencies: Map; /** All direct local dependencies that will be present in the published package */ @@ -57,6 +58,17 @@ export type PackageGraphNode = { localDevDependencies: Map; /** Local optionalDependencies */ localOptionalDependencies: Map; + + /** All direct incoming local dependencies of the package */ + allLocalDependents: Map; + /** All direct incoming local dependencies that will be present in the published package */ + publishedLocalDependents: Map; + /** Incoming local dependencies */ + localDependents: Map; + /** Incoming local devDependencies */ + localDevDependents: Map; + /** Incoming local optionalDependencies */ + localOptionalDependents: Map; }; export class PackageGraph extends Map { @@ -82,11 +94,18 @@ export class PackageGraph extends Map { name, dir: pkg.dir, packageJson: pkg.packageJson as ExtendedPackageJSON, + allLocalDependencies: new Map(), publishedLocalDependencies: new Map(), localDependencies: new Map(), localDevDependencies: new Map(), localOptionalDependencies: new Map(), + + allLocalDependents: new Map(), + publishedLocalDependents: new Map(), + localDependents: new Map(), + localDevDependents: new Map(), + localOptionalDependents: new Map(), }); } @@ -98,6 +117,10 @@ export class PackageGraph extends Map { node.allLocalDependencies.set(depName, depPkg); node.publishedLocalDependencies.set(depName, depPkg); node.localDependencies.set(depName, depPkg); + + depPkg.allLocalDependents.set(node.name, node); + depPkg.publishedLocalDependents.set(node.name, node); + depPkg.localDependents.set(node.name, node); } } for (const depName of Object.keys( @@ -107,6 +130,9 @@ export class PackageGraph extends Map { if (depPkg) { node.allLocalDependencies.set(depName, depPkg); node.localDevDependencies.set(depName, depPkg); + + depPkg.allLocalDependents.set(node.name, node); + depPkg.localDevDependents.set(node.name, node); } } for (const depName of Object.keys( @@ -117,6 +143,10 @@ export class PackageGraph extends Map { node.allLocalDependencies.set(depName, depPkg); node.publishedLocalDependencies.set(depName, depPkg); node.localOptionalDependencies.set(depName, depPkg); + + depPkg.allLocalDependents.set(node.name, node); + depPkg.publishedLocalDependents.set(node.name, node); + depPkg.localOptionalDependents.set(node.name, node); } } }