2025-04-02 06:50:39 -04:00

33 lines
783 B
JavaScript

'use strict';
exports.fromCallback = function (fn) {
return Object.defineProperty(
function (...args) {
if (typeof args[args.length - 1] === 'function') fn.apply(this, args);
else {
return new Promise((resolve, reject) => {
args.push((err, res) => (err != null ? reject(err) : resolve(res)));
fn.apply(this, args);
});
}
},
'name',
{ value: fn.name }
);
};
exports.fromPromise = function (fn) {
return Object.defineProperty(
function (...args) {
const cb = args[args.length - 1];
if (typeof cb !== 'function') return fn.apply(this, args);
else {
args.pop();
fn.apply(this, args).then((r) => cb(null, r), cb);
}
},
'name',
{ value: fn.name }
);
};