Sha256: cf396932887bf0c9bc548297aef403aa843c099d6873d20fe850f4018b6b9808
Contents?: true
Size: 1.25 KB
Versions: 2
Compression:
Stored size: 1.25 KB
Contents
'use strict'; var pify = module.exports = function (fn, P, opts) { if (typeof P !== 'function') { opts = P; P = Promise; } opts = opts || {}; if (typeof fn !== 'function') { return P.reject(new TypeError('Expected a function')); } return function () { var that = this; var args = [].slice.call(arguments); return new P(function (resolve, reject) { args.push(function (err, result) { if (err) { reject(err); } else if (opts.multiArgs) { resolve([].slice.call(arguments, 1)); } else { resolve(result); } }); fn.apply(that, args); }); }; }; pify.all = function (obj, P, opts) { if (typeof P !== 'function') { opts = P; P = Promise; } opts = opts || {}; var filter = function (key) { if (opts.include) { return opts.include.indexOf(key) !== -1; } if (opts.exclude) { return opts.exclude.indexOf(key) === -1; } return true; }; var ret = (typeof obj === 'function') ? function () { if (opts.excludeMain) { return obj.apply(this, arguments); } return pify(obj, P, opts).apply(this, arguments); } : {}; return Object.keys(obj).reduce(function (ret, key) { var x = obj[key]; ret[key] = (typeof x === 'function') && filter(key) ? pify(x, P, opts) : x; return ret; }, ret); };
Version data entries
2 entries across 2 versions & 1 rubygems