(obj: object, fn: () => T)
| 506 | const visitedObjects = new WeakSet<object>() |
| 507 | |
| 508 | function withVisitedTracking<T>(obj: object, fn: () => T): T { |
| 509 | if (visitedObjects.has(obj)) { |
| 510 | return string("[Circular]") as T |
| 511 | } |
| 512 | visitedObjects.add(obj) |
| 513 | const result = fn() |
| 514 | visitedObjects.delete(obj) |
| 515 | return result |
| 516 | } |