putil-waterfall
Advanced tools
Comparing version 1.2.1 to 2.0.0
@@ -10,2 +10,10 @@ /* putil-waterfall | ||
const promisify = require('putil-promisify'); | ||
/** | ||
* | ||
* @param {Array<Function>} funcs | ||
* @param {Function} [callback] | ||
* @return {Promise|null} | ||
*/ | ||
function waterfall(funcs, callback) { | ||
@@ -16,7 +24,8 @@ | ||
if (!callback) | ||
return promisify.fromCallback((cb) => waterfall(funcs, cb)); | ||
if (!Array.isArray(funcs)) | ||
throw new Error('Invalid argument. Array of functions are required as first argument'); | ||
callback = callback || function() {}; | ||
if (!funcs.length) | ||
@@ -26,7 +35,6 @@ return callback(); | ||
let index = -1; | ||
const next = function(error) { | ||
const next = (error, ...args) => { | ||
if (error) | ||
return callback(error); | ||
const args = Array.prototype.slice.call(arguments, 1); | ||
index++; | ||
@@ -36,7 +44,4 @@ const fn = funcs[index]; | ||
try { | ||
const o = fn.apply(fn, [function() { | ||
const args = arguments; | ||
setImmediate(function() { | ||
next.apply(null, args); | ||
}); | ||
const o = fn.apply(fn, [(...args) => { | ||
setImmediate(() => next.apply(null, args)); | ||
}].concat(args)); | ||
@@ -46,11 +51,11 @@ // If promise | ||
typeof o.then === 'function' && typeof o.catch === 'function') { | ||
o.catch(function(e) { | ||
callback.apply(callback, [e].concat(args)); | ||
o.catch(e => { | ||
callback.call(null, e, ...args); | ||
}); | ||
} | ||
} catch (e) { | ||
callback.apply(callback, [e].concat(args)); | ||
callback.call(null, e, ...args); | ||
} | ||
} else | ||
callback.apply(callback, [undefined].concat(args)); | ||
callback.call(null, undefined, ...args); | ||
}; | ||
@@ -61,12 +66,22 @@ | ||
waterfall.every = function(funcArray, fn, callback) { | ||
/** | ||
* | ||
* @param {Array<*>} values | ||
* @param {Function} fn | ||
* @param {Function} [callback] | ||
* @return {Promise|null} | ||
*/ | ||
waterfall.every = function(values, fn, callback) { | ||
if (!Array.isArray(values)) | ||
throw new Error('Invalid argument. Array value are required as first argument'); | ||
if (callback && typeof callback !== 'function') | ||
throw new Error('Invalid callback argument'); | ||
if (!Array.isArray(funcArray)) | ||
throw new Error('Invalid argument. Array value are required as first argument'); | ||
if (!callback) | ||
return promisify.fromCallback((cb) => waterfall.every(values, fn, cb)); | ||
callback = callback || function() {}; | ||
const arr = funcArray.slice(0); | ||
const arr = values.slice(0); | ||
let index = -1; | ||
@@ -73,0 +88,0 @@ const next = function(error, value) { |
{ | ||
"name": "putil-waterfall", | ||
"description": "Simple, fast async waterfall NodeJs module for JavaScript", | ||
"version": "1.2.1", | ||
"version": "2.0.0", | ||
"author": "Panates Ltd.", | ||
@@ -20,7 +20,8 @@ "contributors": [ | ||
], | ||
"dependencies": {}, | ||
"dependencies": { | ||
"putil-promisify": "^1.2.0" | ||
}, | ||
"devDependencies": { | ||
"babel-eslint": "^8.2.2", | ||
"bluebird": "^3.5.1", | ||
"eslint": "^5.1.0", | ||
"babel-eslint": "^9.0.0", | ||
"eslint": "^5.4.0", | ||
"eslint-config-google": "^0.9.1", | ||
@@ -31,3 +32,3 @@ "istanbul": "^0.4.5", | ||
"engines": { | ||
"node": ">= 4.0" | ||
"node": ">= 6.0" | ||
}, | ||
@@ -34,0 +35,0 @@ "directories": { |
8669
5
93
1
+ Addedputil-promisify@^1.2.0
+ Addedputil-promisify@1.10.1(transitive)