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