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 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 | 1x 1x 1x 19x 19x 148080x 4x 4x 4x 4x 19x 19x 1x 1x 13x 13x 13x 13x 1x 1x 12x 13x 1x 1x 13x 1x 1x 8x 8x 8x 8x 8x 8x 8x 8x 8x 8x 8x 8x 98x 32x 32x 98x 5x 5x 61x 61x 61x 98x 8x 8x | import { makeNodesHash, makeOutgoingEdges, uniqueNodes } from "./helpers.js";
export const validateEdges = (nodes: unknown[], edges: unknown[][]) => {
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: {
edges: unknown[][];
nodes?: unknown[];
}) => {
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),
}: {
edges: unknown[][];
nodes?: unknown[];
outgoing?: Map<any, any>;
}) {
const visited = new Set();
const finished = new Set();
const dfs = (node: unknown) => {
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: any) => dfs(node));
finished.add(node);
};
nodes.forEach((node) => dfs(node));
}
|