From 27dd78601669a92d0200ad197adcf0919fdc9e46 Mon Sep 17 00:00:00 2001 From: Anonymous <65428781+00ff0000red@users.noreply.github.com> Date: Sat, 21 Nov 2020 08:29:18 -0800 Subject: fix: "cloneValue" should return a Set when given a Set (#7972) --- op_crates/fetch/11_streams.js | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) (limited to 'op_crates') diff --git a/op_crates/fetch/11_streams.js b/op_crates/fetch/11_streams.js index 549bc9922..c3fa6cb6f 100644 --- a/op_crates/fetch/11_streams.js +++ b/op_crates/fetch/11_streams.js @@ -81,13 +81,14 @@ if (value instanceof Map) { const clonedMap = new Map(); objectCloneMemo.set(value, clonedMap); - value.forEach((v, k) => clonedMap.set(k, cloneValue(v))); + value.forEach((v, k) => { + clonedMap.set(cloneValue(k), cloneValue(v)); + }); return clonedMap; } if (value instanceof Set) { - const clonedSet = new Map(); + const clonedSet = new Set([...value].map(cloneValue)); objectCloneMemo.set(value, clonedSet); - value.forEach((v, k) => clonedSet.set(k, cloneValue(v))); return clonedSet; } @@ -97,6 +98,7 @@ for (const key of sourceKeys) { clonedObj[key] = cloneValue(value[key]); } + Reflect.setPrototypeOf(clonedObj, Reflect.getPrototypeOf(value)); return clonedObj; } case "symbol": -- cgit v1.2.3