summaryrefslogtreecommitdiff
path: root/node_modules/pify/index.js
diff options
context:
space:
mode:
Diffstat (limited to 'node_modules/pify/index.js')
-rw-r--r--node_modules/pify/index.js102
1 files changed, 51 insertions, 51 deletions
diff --git a/node_modules/pify/index.js b/node_modules/pify/index.js
index df56221d..7c720ebe 100644
--- a/node_modules/pify/index.js
+++ b/node_modules/pify/index.js
@@ -1,68 +1,68 @@
'use strict';
-const processFn = (fn, options) => function (...args) {
- const P = options.promiseModule;
-
- return new P((resolve, reject) => {
- if (options.multiArgs) {
- args.push((...result) => {
- if (options.errorFirst) {
- if (result[0]) {
- reject(result);
- } else {
- result.shift();
- resolve(result);
+var processFn = function (fn, P, opts) {
+ return function () {
+ var that = this;
+ var args = new Array(arguments.length);
+
+ for (var i = 0; i < arguments.length; i++) {
+ args[i] = arguments[i];
+ }
+
+ return new P(function (resolve, reject) {
+ args.push(function (err, result) {
+ if (err) {
+ reject(err);
+ } else if (opts.multiArgs) {
+ var results = new Array(arguments.length - 1);
+
+ for (var i = 1; i < arguments.length; i++) {
+ results[i - 1] = arguments[i];
}
+
+ resolve(results);
} else {
resolve(result);
}
});
- } else if (options.errorFirst) {
- args.push((error, result) => {
- if (error) {
- reject(error);
- } else {
- resolve(result);
- }
- });
- } else {
- args.push(resolve);
- }
- fn.apply(this, args);
- });
+ fn.apply(that, args);
+ });
+ };
};
-module.exports = (input, options) => {
- options = Object.assign({
- exclude: [/.+(Sync|Stream)$/],
- errorFirst: true,
- promiseModule: Promise
- }, options);
-
- const objType = typeof input;
- if (!(input !== null && (objType === 'object' || objType === 'function'))) {
- throw new TypeError(`Expected \`input\` to be a \`Function\` or \`Object\`, got \`${input === null ? 'null' : objType}\``);
+var pify = module.exports = function (obj, P, opts) {
+ if (typeof P !== 'function') {
+ opts = P;
+ P = Promise;
}
- const filter = key => {
- const match = pattern => typeof pattern === 'string' ? key === pattern : pattern.test(key);
- return options.include ? options.include.some(match) : !options.exclude.some(match);
- };
+ opts = opts || {};
+ opts.exclude = opts.exclude || [/.+Sync$/];
- let ret;
- if (objType === 'function') {
- ret = function (...args) {
- return options.excludeMain ? input(...args) : processFn(input, options).apply(this, args);
+ var filter = function (key) {
+ var match = function (pattern) {
+ return typeof pattern === 'string' ? key === pattern : pattern.test(key);
};
- } else {
- ret = Object.create(Object.getPrototypeOf(input));
- }
- for (const key in input) { // eslint-disable-line guard-for-in
- const property = input[key];
- ret[key] = typeof property === 'function' && filter(key) ? processFn(property, options) : property;
- }
+ return opts.include ? opts.include.some(match) : !opts.exclude.some(match);
+ };
- return ret;
+ var ret = typeof obj === 'function' ? function () {
+ if (opts.excludeMain) {
+ return obj.apply(this, arguments);
+ }
+
+ return processFn(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) ? processFn(x, P, opts) : x;
+
+ return ret;
+ }, ret);
};
+
+pify.all = pify;