error.js 897 B

12345678910111213141516171819202122232425262728293031323334
  1. import { truncate, inspectList, inspectProperty } from './helpers'
  2. const errorKeys = [
  3. 'stack',
  4. 'line',
  5. 'column',
  6. 'name',
  7. 'message',
  8. 'fileName',
  9. 'lineNumber',
  10. 'columnNumber',
  11. 'number',
  12. 'description',
  13. ]
  14. export default function inspectObject(error, options) {
  15. const properties = Object.getOwnPropertyNames(error).filter(key => errorKeys.indexOf(key) === -1)
  16. const name = error.name
  17. options.truncate -= name.length
  18. let message = ''
  19. if (typeof error.message === 'string') {
  20. message = truncate(error.message, options.truncate)
  21. } else {
  22. properties.unshift('message')
  23. }
  24. message = message ? `: ${message}` : ''
  25. options.truncate -= message.length + 5
  26. const propertyContents = inspectList(
  27. properties.map(key => [key, error[key]]),
  28. options,
  29. inspectProperty
  30. )
  31. return `${name}${message}${propertyContents ? ` { ${propertyContents} }` : ''}`
  32. }