Press n or j to go to the next uncovered block, b, p or k for the previous block.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 | 23x 23x 23x 23x 23x 23x 23x 23x 23x 23x 23x 23x 23x 23x 23x 23x 23x 23x 23x 23x 23x 23x 1242x 1242x 1242x 1242x 1242x 41x 41x 41x 41x 6x 6x 6x 6x 6x 32x 32x 1242x 1242x 23x 4035x 4035x 4035x 4035x 4035x 42x 42x 42x 42x 4035x 4035x 4035x 4035x 23x 23x 23x 23x 23x 23x 23x 23x 23x 23x | 'use strict'; const { Error, ObjectDefineProperties, ObjectGetOwnPropertyDescriptors, ObjectGetPrototypeOf, ObjectSetPrototypeOf, ObjectValues, ReflectConstruct, StringPrototypeSplit, } = primordials; const { messaging_deserialize_symbol, messaging_transfer_symbol, messaging_clone_symbol, messaging_transfer_list_symbol } = internalBinding('symbols'); const { JSTransferable, setDeserializerCreateObjectFunction } = internalBinding('messaging'); function setup() { // Register the handler that will be used when deserializing JS-based objects // from .postMessage() calls. The format of `deserializeInfo` is generally // 'module:Constructor', e.g. 'internal/fs/promises:FileHandle'. setDeserializerCreateObjectFunction((deserializeInfo) => { const { 0: module, 1: ctor } = StringPrototypeSplit(deserializeInfo, ':'); const 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); const properties = ObjectGetOwnPropertyDescriptors(obj); const propertiesValues = ObjectValues(properties); for (let i = 0; i < propertiesValues.length; i++) { // We want to use null-prototype objects to not rely on globally mutable // %Object.prototype%. ObjectSetPrototypeOf(propertiesValues[i], null); } ObjectDefineProperties(inst, properties); 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, }; |