Skip to content

Commit

Permalink
use real structuredClone when available
Browse files Browse the repository at this point in the history
  • Loading branch information
WebReflection committed Oct 30, 2021
1 parent 51717e8 commit 4bacb50
Show file tree
Hide file tree
Showing 3 changed files with 8 additions and 2 deletions.
4 changes: 3 additions & 1 deletion cjs/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,9 @@ const dflt = {transfer: []};
* This is currently not supported, all values are always cloned.
* @returns {Record[]}
*/
Object.defineProperty(exports, '__esModule', {value: true}).default = (any, options = dflt) => deserialize(serialize(any, options));
Object.defineProperty(exports, '__esModule', {value: true}).default = typeof structuredClone === "function" ?
structuredClone :
(any, options = dflt) => deserialize(serialize(any, options));

exports.deserialize = deserialize;
exports.serialize = serialize;
4 changes: 3 additions & 1 deletion esm/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,8 @@ const dflt = {transfer: []};
* This is currently not supported, all values are always cloned.
* @returns {Record[]}
*/
export default (any, options = dflt) => deserialize(serialize(any, options));
export default typeof structuredClone === "function" ?
structuredClone :
(any, options = dflt) => deserialize(serialize(any, options));

export {deserialize, serialize};
2 changes: 2 additions & 0 deletions test/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,8 @@ test();
delete require.cache[require.resolve('../cjs')];
delete require.cache[require.resolve('../cjs/deserialize.js')];
globalThis.self = globalThis;
if (!globalThis.structuredClone)
globalThis.structuredClone = any => deserialize(serialize(any));
require('../cjs');

({serialize, deserialize, default: structuredClone} = require('../cjs'));
Expand Down

0 comments on commit 4bacb50

Please sign in to comment.