Sign Up for Free

RunKit +

Try any Node.js package right in your browser

This is a playground to test code. It runs a full Node.js environment and already has all of npm’s 1,000,000+ packages pre-installed, including middleware-resolver with all npm packages installed. Try it out:

var Resolver = require("./resolver.js"); var util = require('util'); var context = { bla: "BLAAA" }; var runs = 10000; /* Job format A jobs list is an array of job descriptors The value for each key is a job requirements specification: `requires` - Jobs required to be finished before this one can run. `optional` - Jobs that, if present, should be run before this one. `before` - Jobs that, if present, will only run after this job completes (reverse dependency) `notif` - Don't run if task is completed. Implies optional dependency `task` - `function (done, next)` to execute. In the function body `done("name", "aux event"); next();` */ var testJobs = [ { name: "task1", task: function (done, next) { done("task1", "test"); next(); } }, { name: "task2", requires: [ "task6" ], task: function (done, next) { done("task2"); next(); } }, { name: "task3", requires: [ "task1", "task2" ], task: function (done, next) { done("task3"); next(); } }, { name: "task4", requires: [ "task3" ], task: function (done, next) { done("task4"); next(); } }, { name: "task5", requires: [ "task11" ], task: function (done, next) { done("task5"); next(); } }, { name: "task6", requires: [ "task1" ], task: function (done, next) { done("task6"); next(); } }, { name: "task7", requires: [ "task6" ], optional: [ "task1" ], task: function (done, next) { done("task7"); next(); } }, { name: "task8", before: "task2", task: function (done, next) { done("task8"); next(); } }, { name: "task9", requires: "task1", notif: "task8", task: function (done, next) { done("task9"); next(); } } ]; var start = new Date(); var stack = new Resolver(testJobs); var initTime = new Date() - start; if (process.argv[2] === 'debug') { stack.debug = true; } start = new Date(); for (var i = 0; i < runs; i++) { stack.run(context); } var runTime = new Date() - start; console.log("Initialization time: " + initTime + " ms, execution performance: " + (1000 * runs/runTime).toFixed(0) + " runs/second"); // console.log(util.inspect(testJobs, { colors: true, depth: 12 })); // console.log(util.inspect(stack.jobs, { colors: true, depth: 12, showHidden: true }));

This service is provided by RunKit and is not affiliated with npm, Inc or the package authors.

middleware-resolver v2.0.0

Dependency / event based middleware resolver and running library.

RunKit is a free, in-browser JavaScript dev environment for prototyping Node.js code, with every npm package installed. Sign up to share your code.
Sign Up for Free