UNPKG

dagre-d3-es

Version:

<p align="center"> <a href="https://www.npmjs.com/dagre-d3-es"><img src="https://img.shields.io/npm/v/dagre-d3-es.svg?logo=npm&logoColor=fff&label=NPM+package&color=limegreen" alt="dagre-d3-es on npm" /></a>&nbsp; <a href="https://www.npmjs.com/dagre-

37 lines (27 loc) 791 B
import * as _ from 'lodash-es'; export { topsort, CycleException }; topsort.CycleException = CycleException; function topsort(g) { var visited = {}; var stack = {}; var results = []; function visit(node) { if (Object.prototype.hasOwnProperty.call(stack, node)) { throw new CycleException(); } if (!Object.prototype.hasOwnProperty.call(visited, node)) { stack[node] = true; visited[node] = true; _.each(g.predecessors(node), visit); delete stack[node]; results.push(node); } } _.each(g.sinks(), visit); if (_.size(visited) !== g.nodeCount()) { throw new CycleException(); } return results; } function CycleException() {} CycleException.prototype = new Error(); // must be an instance of Error to pass testing