export function traverse()

in packages/rulesets/src/native/utilities/ref-helper.ts [55:83]


export function traverse(
  obj: unknown,
  path: string[],
  visited: Set<any>,
  options: any,
  visitor: (obj: any, path: string[], additionalInfo: any) => boolean
): void {
  if (!obj) {
    return
  }
  if (visited.has(obj)) {
    return
  }
  visited.add(obj)

  if (visitor(obj, path, options) === false) {
    return
  }

  if (Array.isArray(obj)) {
    for (const [index, item] of obj.entries()) {
      traverse(item, [...path, index.toString()], visited, options, visitor)
    }
  } else if (typeof obj === "object") {
    for (const [key, item] of Object.entries(obj)) {
      traverse(item, [...path, key], visited, options, visitor)
    }
  }
}