function removeCircular()

in src/logger/index.ts [34:61]


function removeCircular(obj: any, refs: any[] = []): any {
  if (typeof obj !== 'object' || !obj) {
    return obj;
  }
  // If the object defines its own toJSON, prefer that.
  if (obj.toJSON) {
    return obj.toJSON();
  }
  if (refs.includes(obj)) {
    return '[Circular]';
  } else {
    refs.push(obj);
  }
  let returnObj: any;
  if (Array.isArray(obj)) {
    returnObj = new Array(obj.length);
  } else {
    returnObj = {};
  }
  for (const k in obj) {
    if (refs.includes(obj[k])) {
      returnObj[k] = '[Circular]';
    } else {
      returnObj[k] = removeCircular(obj[k], refs);
    }
  }
  return returnObj;
}