Skip to content

Commit

Permalink
Merge pull request #13658 from Snuffleupagus/cloneValue
Browse files Browse the repository at this point in the history
Don't attempt to structure clone unsupported types with workers disabled
  • Loading branch information
timvandermeij authored Jul 3, 2021
2 parents 227d0b0 + bdf6f73 commit f9d506c
Showing 1 changed file with 11 additions and 9 deletions.
20 changes: 11 additions & 9 deletions src/display/api.js
Original file line number Diff line number Diff line change
Expand Up @@ -1805,6 +1805,16 @@ class LoopbackPort {
function cloneValue(value) {
// Trying to perform a structured clone close to the spec, including
// transfers.
if (
typeof value === "function" ||
typeof value === "symbol" ||
value instanceof URL
) {
throw new Error(
`LoopbackPort.postMessage - cannot clone: ${value?.toString()}`
);
}

if (typeof value !== "object" || value === null) {
return value;
}
Expand Down Expand Up @@ -1843,9 +1853,6 @@ class LoopbackPort {
}
return result;
}
if (value instanceof URL) {
throw new Error(`LoopbackPort.postMessage - cannot clone: ${value}`);
}
result = Array.isArray(value) ? [] : Object.create(null);
cloned.set(value, result); // Adding to cache now for cyclic references.
// Cloning all value and object properties, however ignoring properties
Expand All @@ -1859,12 +1866,7 @@ class LoopbackPort {
if (typeof desc.value === "undefined") {
continue;
}
if (typeof desc.value === "function") {
if (value.hasOwnProperty?.(i)) {
throw new Error(
`LoopbackPort.postMessage - cannot clone: ${value[i]}`
);
}
if (typeof desc.value === "function" && !value.hasOwnProperty?.(i)) {
continue;
}
result[i] = cloneValue(desc.value);
Expand Down

0 comments on commit f9d506c

Please sign in to comment.