File size: 897 Bytes
369fac9
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
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} }` : ''}`
}