Sync rebuild of `value` with each collected ref swapped for its replacement (by identity).
(value: unknown, replacements: Map<object, unknown>)
| 108 | |
| 109 | /** Sync rebuild of `value` with each collected ref swapped for its replacement (by identity). */ |
| 110 | function substituteRefs(value: unknown, replacements: Map<object, unknown>): unknown { |
| 111 | if (isLargeValueRef(value) || isLargeArrayManifest(value)) { |
| 112 | return replacements.has(value as object) ? replacements.get(value as object) : value |
| 113 | } |
| 114 | if (value === null || typeof value !== 'object') return value |
| 115 | if (Array.isArray(value)) { |
| 116 | return value.map((item) => substituteRefs(item, replacements)) |
| 117 | } |
| 118 | const out: Record<string, unknown> = {} |
| 119 | for (const [key, v] of Object.entries(value)) { |
| 120 | out[key] = substituteRefs(v, replacements) |
| 121 | } |
| 122 | return out |
| 123 | } |
| 124 | |
| 125 | async function replaceRef(ref: object, options: RedactLargeValueRefsOptions): Promise<unknown> { |
| 126 | return isLargeValueRef(ref) |
no test coverage detected