cli: add dependents to PackageGraph nodes

Signed-off-by: Patrik Oldsberg <poldsberg@gmail.com>
This commit is contained in:
Patrik Oldsberg
2022-03-05 11:39:05 +01:00
parent 02c84c0e9d
commit c3bc369a54
2 changed files with 51 additions and 0 deletions
@@ -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(),
});
});
@@ -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<string, PackageGraphNode>;
/** All direct local dependencies that will be present in the published package */
@@ -57,6 +58,17 @@ export type PackageGraphNode = {
localDevDependencies: Map<string, PackageGraphNode>;
/** Local optionalDependencies */
localOptionalDependencies: Map<string, PackageGraphNode>;
/** All direct incoming local dependencies of the package */
allLocalDependents: Map<string, PackageGraphNode>;
/** All direct incoming local dependencies that will be present in the published package */
publishedLocalDependents: Map<string, PackageGraphNode>;
/** Incoming local dependencies */
localDependents: Map<string, PackageGraphNode>;
/** Incoming local devDependencies */
localDevDependents: Map<string, PackageGraphNode>;
/** Incoming local optionalDependencies */
localOptionalDependents: Map<string, PackageGraphNode>;
};
export class PackageGraph extends Map<string, PackageGraphNode> {
@@ -82,11 +94,18 @@ export class PackageGraph extends Map<string, PackageGraphNode> {
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<string, PackageGraphNode> {
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<string, PackageGraphNode> {
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<string, PackageGraphNode> {
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);
}
}
}