23 lines
924 B
JavaScript
23 lines
924 B
JavaScript
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} }`;
|
|
}
|