@yolkai/nx-workspace
Version:
48 lines (47 loc) • 1.61 kB
JavaScript
;
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;