golos-lib-js
Version:
Golos-js the JavaScript library with API for GOLOS blockchain
53 lines (52 loc) • 1.5 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.nodeify = nodeify;
exports.promisify = promisify;
exports.promisifyAll = promisifyAll;
class PromiseError {
constructor(error) {
this.cause = error;
this.message = error.message;
this.name = error.name || 'Error';
if (error.payload) this.payload = error.payload;
this.stack = error.stack;
}
}
function promisify(fn) {
return function () {
for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
args[_key] = arguments[_key];
}
return new Promise((resolve, reject) => {
fn.call(this, ...args, (err, res) => {
if (err) reject(err);else resolve(res);
});
});
};
}
function promisifyAll(obj) {
let suffix = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'Async';
let keys = Object.getOwnPropertyNames(obj);
let ret = new Set();
for (let key of keys) {
if (key === 'constructor') continue;
var desc = Object.getOwnPropertyDescriptor(obj, key);
if (desc != null && desc.get == null && desc.set == null) {
ret.add(key);
}
}
for (let key of ret) {
obj[key + suffix] = promisify(obj[key]);
}
}
function nodeify(promise, callback) {
const isCallback = typeof callback === 'function';
return promise.then(res => {
if (isCallback) callback(null, res);
return res;
}).catch(err => {
if (isCallback) callback(err, null);else throw err;
});
}