@onesy/utils
Version:
40 lines (39 loc) • 1.26 kB
JavaScript
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;
;