structured-clone-proper-transfer.js 813 B

1234567891011121314151617
  1. var global = require('../internals/global');
  2. var fails = require('../internals/fails');
  3. var V8 = require('../internals/engine-v8-version');
  4. var IS_BROWSER = require('../internals/engine-is-browser');
  5. var IS_DENO = require('../internals/engine-is-deno');
  6. var IS_NODE = require('../internals/engine-is-node');
  7. var structuredClone = global.structuredClone;
  8. module.exports = !!structuredClone && !fails(function () {
  9. // prevent V8 ArrayBufferDetaching protector cell invalidation and performance degradation
  10. // https://github.com/zloirock/core-js/issues/679
  11. if ((IS_DENO && V8 > 92) || (IS_NODE && V8 > 94) || (IS_BROWSER && V8 > 97)) return false;
  12. var buffer = new ArrayBuffer(8);
  13. var clone = structuredClone(buffer, { transfer: [buffer] });
  14. return buffer.byteLength != 0 || clone.byteLength != 8;
  15. });