securityos/node_modules/comlink/structured-clone-table.md

3.4 KiB
Raw Permalink Blame History

Behavior of Structured Clone

Structured clone is JavaScripts algorithm to create “deep copies” of values. It is used for postMessage() and therefore is used extensively under the hood with Comlink. By default, every function parameter and function return value is structured cloned. Here is a table of how the structured clone algorithm handles different kinds of values. Or to phrase it differently: If you pass a value from the left side as a parameter into a proxyd function, the actual function code will get what is listed on the right side.

Input Output Notes
[1,2,3] [1,2,3] Full copy
{a: 1, b: 2} {a: 1, b: 2} Full copy
{a: 1, b() { return 2; } {a: 1} Full copy, functions omitted
new MyClass() {...} Just the properties
Map Map Map is structured cloneable
Set Set Set is structured cloneable
ArrayBuffer ArrayBuffer ArrayBuffer is structured cloneable
Uint32Array Uint32Array Uint32Array and all the other typed arrays are structured cloneable
Event
Any DOM element
MessagePort Only transferable, not structured cloneable
Request
Response
ReadableStream Streams are planned to be transferable, but not structured cloneable