(obj: unknown)
| 299 | const seen = new Set(); |
| 300 | |
| 301 | function traverse(obj: unknown) { |
| 302 | if (obj && typeof obj === "object" && !seen.has(obj)) { |
| 303 | seen.add(obj); |
| 304 | |
| 305 | if (obj instanceof ArrayBuffer) { |
| 306 | buffers.push(obj); |
| 307 | } else if (ArrayBuffer.isView(obj)) { |
| 308 | // Handles TypedArrays and DataView |
| 309 | buffers.push(obj.buffer as ArrayBuffer); |
| 310 | } else if (Array.isArray(obj)) { |
| 311 | obj.forEach(traverse); |
| 312 | } else { |
| 313 | Object.values(obj).forEach(traverse); |
| 314 | } |
| 315 | } |
| 316 | } |
| 317 | |
| 318 | traverse(ctx); |
| 319 | return buffers; |