onst Ctor = require(module)[ctor]; if (typeof Ctor !== 'function' || typeof Ctor.prototype[messaging_deserialize_symbol] !== 'function') { // Not one of the official errors because one should not be able to get // here without messing with Node.js internals. // eslint-disable-next-line no-restricted-syntax throw new Error(`Unknown deserialize spec ${deserializeInfo}`); } return new Ctor(); }); } function makeTransferable(obj) { const inst = ReflectConstruct(JSTransferable, [], obj.constructor); ObjectDefineProperties(inst, ObjectGetOwnPropertyDescriptors(obj)); ObjectSetPrototypeOf(inst, ObjectGetPrototypeOf(obj)); return inst; } module.exports = { makeTransferable, setup, JSTransferable, kClone: messaging_clone_symbol, kDeserialize: messaging_deserialize_symbol, kTransfer: messaging_transfer_symbol, kTransferList: messaging_transfer_list_symbol, };