|
import { inspectProperty, inspectList } from './helpers' |
|
|
|
export default function inspectObject(object, options) { |
|
const properties = Object.getOwnPropertyNames(object) |
|
const symbols = Object.getOwnPropertySymbols ? Object.getOwnPropertySymbols(object) : [] |
|
if (properties.length === 0 && symbols.length === 0) { |
|
return '{}' |
|
} |
|
options.truncate -= 4 |
|
options.seen = options.seen || [] |
|
if (options.seen.indexOf(object) >= 0) { |
|
return '[Circular]' |
|
} |
|
options.seen.push(object) |
|
const propertyContents = inspectList( |
|
properties.map(key => [key, object[key]]), |
|
options, |
|
inspectProperty |
|
) |
|
const symbolContents = inspectList( |
|
symbols.map(key => [key, object[key]]), |
|
options, |
|
inspectProperty |
|
) |
|
options.seen.pop() |
|
let sep = '' |
|
if (propertyContents && symbolContents) { |
|
sep = ', ' |
|
} |
|
return `{ ${propertyContents}${sep}${symbolContents} }` |
|
} |
|
|