UNPKG

dag-iterator

Version:

utility tool to traverse DAG graphs in JavaScript

1 lines 1.85 kB
!function(e){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=e();else if("function"==typeof define&&define.amd)define([],e);else{("undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this).dagIterator=e()}}(function(){function e(e,n,r,a){return t(e,n,r,{traversalMode:o.DFS,untilNode:a})}function t(e,t,r,a){function u(e,t){void 0===t&&(t=!1);var n=p[e]||[];return!1===t?n:n.filter(i)}function i(e){return!c.hasOwnProperty(e)}function f(e){return l[e].data}if(0!==e.length&&0!==t.length){var d=[],c={},l=e.reduce(function(e,t){var n=t.name,r=t;return e[n]=e.hasOwnProperty(n)?[].concat(e[n],r):r,e},{}),s=n(t.map(function(e){return[e.src,e.dst]})),p=n(t.map(function(e){return[e.dst,e.src]}));Array.prototype.push.apply(d,e.filter(function(e){return s.hasOwnProperty(e.name)&&!p.hasOwnProperty(e.name)}).map(function(e){return e.name}));for(var v=0;d.length;){var y=function(e,t){return a.traversalMode===o.DFS?e.pop():e.shift()}(d),h=u(y);c[y]=h.reduce(function(e,t){return Math.max(e,c[t]+1)},0);var m=f(y),w=h.map(f);if(r.call(null,m,w,v++,c[y]),a.untilNode&&y==a.untilNode)break;(function(e,t){void 0===t&&(t=!1);var n=s[y]||[];return!1===t?n:n.filter(i)})(0,!0).forEach(function(e){0===u(e,!0).length&&d.push(e)})}}}function n(e){return e.reduce(function(e,t){var n=t[0],r=t[1];return e[n]=e.hasOwnProperty(n)?[].concat(e[n],r):[r],e},{})}var r={};Object.defineProperty(r,"__esModule",{value:!0});var o;!function(e){e[e.DFS=0]="DFS",e[e.BFS=1]="BFS"}(o=r.TraversalMode||(r.TraversalMode={})),r.iterateDfs=e,r.iterateBfs=function(e,n,r,a){return t(e,n,r,{traversalMode:o.BFS,untilNode:a})},r.iterate=function(t,n,r,o){return e(t,n,r,o)};var a={};return Object.defineProperty(a,"__esModule",{value:!0}),a.iterate=r.iterate,a.iterateDfs=r.iterateDfs,a.iterateBfs=r.iterateBfs,a});