trezor-link
Version:
Trezor Link for browser
40 lines (37 loc) • 1.14 kB
Flow
/* @flow weak */
export function debugInOut(target, name, descriptor) {
const original = descriptor.value;
descriptor.value = function () {
const debug = this.debug || (name === `init` && arguments[0]);
const objName = this.name;
const argsArr = Array.prototype.slice.call(arguments);
if (debug) {
console.log(`[trezor-link] Calling ${objName}.${name}(`, ...(argsArr.map(f => {
if (typeof f === `string`) {
if (f.length > 1000) {
return `${f.substring(0, 1000)}...`;
}
}
return f;
})), `)`);
}
// assuming that the function is a promise
const resP = original.apply(this, arguments);
return resP.then(function (res) {
if (debug) {
if (res == null) {
console.log(`[trezor-link] Done ${objName}.${name}`);
} else {
console.log(`[trezor-link] Done ${objName}.${name}, result `, res);
}
}
return res;
}, function (err) {
if (debug) {
console.error(`[trezor-link] Error in ${objName}.${name}`, err);
}
throw err;
});
};
return descriptor;
}