UNPKG

zapier-platform-cli

Version:

The CLI for apps in the Zapier Developer Platform.

57 lines (50 loc) 1.5 kB
'use strict'; var _ = require('lodash'); /* Turn node style async methods with callbacks into methods that return promises. Poor man's version of Bluebird's promisify module. If we start using Bluebird, ditch this module. */ var promisify = function promisify(fn, context) { return function () { for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) { args[_key] = arguments[_key]; } return new Promise(function (resolve, reject) { var cb = function cb(err, result) { if (err) { reject(err); } resolve(result); }; fn.apply(context, args.concat(cb)); }); }; }; var promisifyAll = function promisifyAll(object, context) { return _.reduce(object, function (result, method, name) { if (!name.match(/Sync$/)) { result[name + 'Async'] = promisify(method, context); } result[name] = method; return result; }, {}); }; /* Promisify white list of method names for an object. Object is passed as context (this) when calling. Useful for AWS, where some of the methods are dynamic properties not reachable in an each loop. */ var promisifySome = function promisifySome(object, methods) { _.each(methods, function (name) { if (!name.match(/Sync$/)) { object[name + 'Async'] = promisify(object[name], object); } }); return object; }; module.exports = { promisify: promisify, promisifyAll: promisifyAll, promisifySome: promisifySome };