@yolkai/nx-workspace
Version:
46 lines (45 loc) • 1.56 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
class ProjectGraphBuilder {
constructor(g) {
this.nodes = {};
this.dependencies = {};
if (g) {
Object.values(g.nodes).forEach(n => this.addNode(n));
Object.values(g.dependencies).forEach(ds => {
ds.forEach(d => this.addDependency(d.type, d.source, d.target));
});
}
}
addNode(node) {
this.nodes[node.name] = node;
}
addDependency(type, sourceProjectName, targetProjectName) {
if (sourceProjectName === targetProjectName) {
return;
}
if (!this.nodes[sourceProjectName]) {
throw new Error(`Source project does not exist: ${sourceProjectName}`);
}
if (!this.nodes[targetProjectName]) {
throw new Error(`Target project does not exist: ${targetProjectName}`);
}
this.dependencies[sourceProjectName] =
this.dependencies[sourceProjectName] || {};
this.dependencies[sourceProjectName][`${sourceProjectName} -> ${targetProjectName}`] = {
type,
source: sourceProjectName,
target: targetProjectName
};
}
build() {
return {
nodes: this.nodes,
dependencies: Object.keys(this.dependencies).reduce((acc, k) => {
acc[k] = Object.values(this.dependencies[k]);
return acc;
}, {})
};
}
}
exports.ProjectGraphBuilder = ProjectGraphBuilder;