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.
23 lines
924 B
23 lines
924 B
1 month ago
|
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} }`;
|
||
|
}
|