You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
22 lines
924 B
22 lines
924 B
import { inspectList, inspectProperty } from './helpers.js'; |
|
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.includes(object)) { |
|
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} }`; |
|
}
|
|
|