UNPKG

@yolkai/nx-workspace

Version:

Extensible Dev Tools for Monorepos

46 lines (45 loc) 1.56 kB
"use strict"; 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;