Spaces:
Sleeping
Sleeping
| ; | |
| Object.defineProperty(exports, "__esModule", { | |
| value: true | |
| }); | |
| exports.default = awaitify; | |
| // conditionally promisify a function. | |
| // only return a promise if a callback is omitted | |
| function awaitify(asyncFn, arity) { | |
| if (!arity) arity = asyncFn.length; | |
| if (!arity) throw new Error('arity is undefined'); | |
| function awaitable(...args) { | |
| if (typeof args[arity - 1] === 'function') { | |
| return asyncFn.apply(this, args); | |
| } | |
| return new Promise((resolve, reject) => { | |
| args[arity - 1] = (err, ...cbArgs) => { | |
| if (err) return reject(err); | |
| resolve(cbArgs.length > 1 ? cbArgs : cbArgs[0]); | |
| }; | |
| asyncFn.apply(this, args); | |
| }); | |
| } | |
| return awaitable; | |
| } | |
| module.exports = exports.default; |