import { truncate, inspectList, inspectProperty } from './helpers' const errorKeys = [ 'stack', 'line', 'column', 'name', 'message', 'fileName', 'lineNumber', 'columnNumber', 'number', 'description', ] export default function inspectObject(error, options) { const properties = Object.getOwnPropertyNames(error).filter(key => errorKeys.indexOf(key) === -1) const name = error.name options.truncate -= name.length let message = '' if (typeof error.message === 'string') { message = truncate(error.message, options.truncate) } else { properties.unshift('message') } message = message ? `: ${message}` : '' options.truncate -= message.length + 5 const propertyContents = inspectList( properties.map(key => [key, error[key]]), options, inspectProperty ) return `${name}${message}${propertyContents ? ` { ${propertyContents} }` : ''}` }