| 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} }` : ''}` | |
| } | |