function loop()

in packages/logger-sls/src/helper/flatten-object.ts [61:82]


  function loop(currentObj: Record<string, unknown>, parentPaths: string[]): void {
    const depthFull = depth > 0 && parentPaths.length + 1 >= depth;
    
    _forEach(currentObj, (v: unknown, k: string) => {
      const key = [...parentPaths, k].join('.');
      const prefixedKey = prefix ? `${prefix}.${key}` : key;
      
      // 可以忽略不重要的信息
      if (ignore && shouldIgnore(ignore, key, k, v)) {
        return;
      }
      
      // 深度满了,或者不是对象,或者空对象(或数组),则不继续 loop
      if (depthFull || !_isPlainObject(v) || _isEmpty(v)) {
        result[prefixedKey] = v;
        
        return;
      }
      
      loop(v as Record<string, unknown>, [...parentPaths, k]);
    });
  }