/** * A safe stringify that removes circular references * ref: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Errors/Cyclic_object_value */ export function stringify(obj: any) { const seen = new WeakSet() return JSON.stringify(obj, (_, value) => { if (typeof value === "object" && value !== null) { if (seen.has(value)) { return } seen.add(value) } return value }) }