Comparing version 3.0.0 to 3.0.1
53
index.js
@@ -5,33 +5,12 @@ var is = require('./is') | ||
var params = require('./params') | ||
var Promise = require('pinkie-promise') | ||
var caco = require('caco') | ||
function wrapGenerator (gen) { | ||
return function (ctx, callback) { | ||
function step (err, res) { | ||
// generator step | ||
try { | ||
var state = err ? iter.throw(err) : iter.next(res) | ||
if (state.done) { | ||
// generator done, callback middleware | ||
callback(null, state.value) | ||
} else if (state.value && is.function(state.value.then)) { | ||
// thenable | ||
state.value.then(function (res) { | ||
step(null, res) | ||
}, function (err) { | ||
step(err || true) | ||
}) | ||
} | ||
} catch (err) { | ||
// catch err, break generator | ||
callback(err) | ||
} | ||
} | ||
function next (err, res) { | ||
process.nextTick(function () { | ||
step(err, res) | ||
}) | ||
} | ||
var iter = gen.call(this, ctx, next) | ||
step() | ||
function wrapFn (gen) { | ||
if (!is.function(gen)) throw new Error('Middleware must be a function') | ||
if (!is.generator(gen)) return gen | ||
// wrap generator with caco | ||
var fn = caco(gen) | ||
return function (ctx, next) { | ||
fn.apply(this, arguments) | ||
} | ||
@@ -74,5 +53,3 @@ } | ||
if (is.function(args[i])) { | ||
this._hooks[name].push( | ||
is.generator(args[i]) ? wrapGenerator(args[i]) : args[i] | ||
) | ||
this._hooks[name].push(wrapFn(args[i])) | ||
} else if (is.array(args[i])) { | ||
@@ -107,11 +84,5 @@ // use('a', [fn1, fn2, fn3]) | ||
var invoke = args.pop() | ||
if (!is.function(invoke)) invoke = null | ||
else if (is.generator(invoke)) invoke = wrapGenerator(invoke) | ||
var invoke = is.function(args[args.length - 1]) ? wrapFn(args.pop()) : null | ||
var pre = args.map(wrapFn) | ||
var pre = args.map(function (fn) { | ||
if (!is.function(fn)) throw new Error('Middleware must be a function') | ||
return is.generator(fn) ? wrapGenerator(fn) : fn | ||
}) | ||
// define scope method | ||
@@ -118,0 +89,0 @@ this[name] = function () { |
{ | ||
"name": "ginga", | ||
"version": "3.0.0", | ||
"version": "3.0.1", | ||
"description": "Middleware framework for async functions using callback, promise or generator", | ||
@@ -14,13 +14,7 @@ "scripts": { | ||
}, | ||
"keywords": [ | ||
"api", | ||
"util", | ||
"hooks", | ||
"middleware" | ||
], | ||
"author": "Adrian C Shum <adrian@cshum.com>", | ||
"license": "MIT", | ||
"dependencies": { | ||
"is-generator-function": "^1.0.3", | ||
"pinkie-promise": "^2.0.0" | ||
"caco": "^1.0.0", | ||
"is-generator-function": "^1.0.3" | ||
}, | ||
@@ -27,0 +21,0 @@ "devDependencies": { |
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
15
21265
530
+ Addedcaco@^1.0.0
+ Addedcaco@1.2.0(transitive)
- Removedpinkie-promise@^2.0.0
- Removedpinkie@2.0.4(transitive)
- Removedpinkie-promise@2.0.1(transitive)