UNPKG

tooljs-tool

Version:

Composible Tooling for JavaScript

49 lines (40 loc) 708 B
/** * Execute all middleware and nested tools. * * @api public */ exports.exec = function(done){ var middleware = this.constructor.middleware; var self = this; var i = 0; function next() { var fn = middleware[i++]; if (!fn) return done(); self.run(fn, next); } next(); }; /** * Run a single middleware. * * TODO: refactor. */ exports.run = function(fn, next){ if (fn.isTool) { // assuming it's a `Tool` constructor. var Tool = fn; var opts = this.opts[Tool.id]; var tool = new Tool(opts, this); tool.exec(next); } else { fn.call(this, next); } }; /** * Handle errors. * * @api public */ exports.error = function(err){ throw err; };