UNPKG

@onesy/utils

Version:
40 lines (39 loc) 1.26 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); const is_1 = __importDefault(require("./is")); const optionsDefault = { onError: 'reject', }; const promisify = (method, options_ = {}) => async (...args) => { const options = Object.assign(Object.assign({}, optionsDefault), options_); if ((0, is_1.default)('promise', method)) return method; let resolve; let reject; const promise = new Promise((resolve_, reject_) => { resolve = resolve_; reject = reject_; }); const resolveMethod = (...args_) => { const error = args_.find(item => (0, is_1.default)('error', item)); const response = args_.length <= 1 ? args_[0] : args_; if (error && options.onError === 'reject') return reject(error); return resolve(response); }; if ((0, is_1.default)('function', method)) { try { await method(...args, resolveMethod); } catch (error) { return reject(error); } } else resolve(); return promise; }; exports.default = promisify;