UNPKG

dep-resolver

Version:
36 lines (25 loc) 1.45 kB
# dep-resolver [![npm](http://img.shields.io/npm/v/dep-resolver.svg)](https://npmjs.org/package/dep-resolver) [![npm](http://img.shields.io/npm/dm/dep-resolver.svg)](https://npmjs.org/package/dep-resolver) A modified version of Kahn's algorithm for topological sorting to resolve dependencies of asynchronous tasks. # Description The goal of this package is to resolve dependencies of asynchronous tasks described with a Directed Acyclic Graph. Tasks are defined with functions that return promises and we are aiming to find an ordering of the tasks with the least overall wait time possible. # Usage ## Define task nodes The following defines a new node named `title` with a `function` to run with respect to task dependencies. Provided functions are expected to return a promise when finished. addNode(title, function) Example: const Promise= require("bluebird"); const depResolver= require("dep-resolver"); const a= depResolver.addNode("a", function (){ return Promise.delay(5000)}); const b= depResolver.addNode("b", function (){ return Promise.delay(3000)}); const c= depResolver.addNode("c", function (){ return Promise.delay(2000)}); ## Define task dependencies a.dependsOn(b); b.dependsOn(c); ## Topological ordering of dependencies depResolver.sortAll() .then((sorted)=>{ console.log("sorted nodes:", _.map(sorted, "title")); }); # Licence MIT