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)
}
}
}