[DEBUG] More descriptive event reporting

This patch improves DEBUG reporting so that circular event
arguments are shown with some information.
This commit is contained in:
Andrey Lushnikov 2017-07-29 13:02:56 -07:00
parent 0f3a0dcbfc
commit adf35952fc

View File

@ -158,18 +158,23 @@ class Helper {
* @return {string} * @return {string}
*/ */
function stringifyArgument(arg) { function stringifyArgument(arg) {
if (typeof arg !== 'function') { if (Helper.isString(arg) || Helper.isNumber(arg) || !arg)
try { return JSON.stringify(arg);
return JSON.stringify(arg); if (typeof arg === 'function') {
} catch (e) { let text = arg.toString().split('\n').map(line => line.trim()).join('');
// The object was recursive if (text.length > 20)
return arg.toString(); text = text.substring(0, 20) + '…';
} return `"${text}"`;
} }
let text = arg.toString().split('\n').map(line => line.trim()).join(''); const state = {};
if (text.length > 20) const keys = Object.keys(arg);
text = text.substring(0, 20) + '…'; for (let key of keys) {
return `"${text}"`; const value = arg[key];
if (Helper.isString(value) || Helper.isNumber(value))
state[key] = JSON.stringify(value);
}
const name = arg.constructor.name === 'Object' ? '' : arg.constructor.name;
return name + JSON.stringify(state);
} }
} }