tooljs-tool
Version:
Composible Tooling for JavaScript
49 lines (40 loc) • 708 B
JavaScript
/**
* 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;
};