index.js 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. 'use strict';
  2. Object.defineProperty(exports, "__esModule", {
  3. value: true
  4. });
  5. function promisify(callback) {
  6. var throwError = arguments.length <= 1 || arguments[1] === undefined ? true : arguments[1];
  7. return function promisified() {
  8. var _this = this;
  9. for (var _len = arguments.length, parameters = Array(_len), _key = 0; _key < _len; _key++) {
  10. parameters[_key] = arguments[_key];
  11. }
  12. var promise = new Promise(function (resolve, reject) {
  13. parameters.push(function (error, data) {
  14. if (error) {
  15. reject(error);
  16. } else resolve(data);
  17. });
  18. callback.apply(_this, parameters);
  19. });
  20. if (!throwError) {
  21. promise = promise.then(function (result) {
  22. return typeof result === 'undefined' ? true : result;
  23. }).catch(function () {
  24. return false;
  25. });
  26. }
  27. return promise;
  28. };
  29. }
  30. function promisifyAll(object) {
  31. var throwError = arguments.length <= 1 || arguments[1] === undefined ? true : arguments[1];
  32. var duplicate = Object.assign({}, object);
  33. for (var item in duplicate) {
  34. if (!{}.hasOwnProperty.call(duplicate, item) || typeof duplicate[item] !== 'function') {
  35. continue;
  36. }
  37. duplicate[item + 'Async'] = promisify(duplicate[item], throwError);
  38. }
  39. return duplicate;
  40. }
  41. exports.default = promisify;
  42. exports.promisify = promisify;
  43. exports.promisifyAll = promisifyAll;