UNPKG

@yolkai/nx-workspace

Version:

Extensible Dev Tools for Monorepos

48 lines (47 loc) 1.61 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const project_graph_builder_1 = require("./project-graph-builder"); const reverseMemo = new Map(); function reverse(graph) { let result = reverseMemo.get(graph); if (!result) { const builder = new project_graph_builder_1.ProjectGraphBuilder(); Object.values(graph.nodes).forEach(n => { builder.addNode(n); }); Object.values(graph.dependencies).forEach(byProject => { byProject.forEach(dep => { builder.addDependency(dep.type, dep.target, dep.source); }); }); result = builder.build(); reverseMemo.set(graph, result); reverseMemo.set(result, graph); } return result; } exports.reverse = reverse; function withDeps(original, subsetNodes) { const builder = new project_graph_builder_1.ProjectGraphBuilder(); Object.values(subsetNodes).forEach(recur); return builder.build(); // --------------------------------------------------------------------------- function recur(node) { const ds = original.dependencies[node.name]; // 1. Recursively add all source nodes if (ds) { ds.forEach(n => { recur(original.nodes[n.target]); }); } // 2. Add current node builder.addNode(node); // 3. Add all source dependencies if (ds) { ds.forEach(n => { builder.addDependency(n.type, n.source, n.target); }); } } } exports.withDeps = withDeps;