diff --git a/lib/helper.js b/lib/helper.js index 8e49885e..1fcb9dbf 100644 --- a/lib/helper.js +++ b/lib/helper.js @@ -158,18 +158,23 @@ class Helper { * @return {string} */ function stringifyArgument(arg) { - if (typeof arg !== 'function') { - try { - return JSON.stringify(arg); - } catch (e) { - // The object was recursive - return arg.toString(); - } + if (Helper.isString(arg) || Helper.isNumber(arg) || !arg) + return JSON.stringify(arg); + if (typeof arg === 'function') { + let text = arg.toString().split('\n').map(line => line.trim()).join(''); + if (text.length > 20) + text = text.substring(0, 20) + '…'; + return `"${text}"`; } - let text = arg.toString().split('\n').map(line => line.trim()).join(''); - if (text.length > 20) - text = text.substring(0, 20) + '…'; - return `"${text}"`; + const state = {}; + const keys = Object.keys(arg); + for (let key of keys) { + 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); } }