All files validators.js

18.18% Statements 6/33
100% Branches 1/1
0% Functions 0/3
18.18% Lines 6/33

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 341x 1x             1x 1x             1x 1x                                
import { makeNodesHash, makeOutgoingEdges, uniqueNodes } from "./helpers.js";
export const validateEdges = (nodes, edges) => {
    const nodesHash = makeNodesHash(nodes);
    edges.forEach(function (edge) {
        if (!nodesHash.has(edge[0]) || !nodesHash.has(edge[1])) {
            throw new Error("Unknown node. There is an unknown node in the supplied edges.");
        }
    });
};
export const validateArgs = (opts) => {
    if (!opts) {
        throw new Error("No parameter provided");
    }
    if (!opts.edges) {
        throw new Error("Missing edges in opts");
    }
};
export function validateDag({ edges, nodes = uniqueNodes(edges), outgoing = makeOutgoingEdges(edges), }) {
    const visited = new Set();
    const finished = new Set();
    const dfs = (node) => {
        if (finished.has(node)) {
            return;
        }
        if (visited.has(node)) {
            throw new Error("Cyclic dependency, node was:" + node);
        }
        visited.add(node);
        outgoing.get(node).forEach((node) => dfs(node));
        finished.add(node);
    };
    nodes.forEach((node) => dfs(node));
}