source: frontend/node_modules/core-js/internals/array-buffer-transfer.js

Last change on this file was 9af201e, checked in by MBK <marija.karapandzova@…>, 12 days ago

Fix frontend appearance

  • Property mode set to 100644
File size: 2.4 KB
Line 
1'use strict';
2var globalThis = require('../internals/global-this');
3var uncurryThis = require('../internals/function-uncurry-this');
4var uncurryThisAccessor = require('../internals/function-uncurry-this-accessor');
5var toIndex = require('../internals/to-index');
6var notDetached = require('../internals/array-buffer-not-detached');
7var arrayBufferByteLength = require('../internals/array-buffer-byte-length');
8var detachTransferable = require('../internals/detach-transferable');
9var PROPER_STRUCTURED_CLONE_TRANSFER = require('../internals/structured-clone-proper-transfer');
10
11var structuredClone = globalThis.structuredClone;
12var ArrayBuffer = globalThis.ArrayBuffer;
13var DataView = globalThis.DataView;
14var max = Math.max;
15var min = Math.min;
16var ArrayBufferPrototype = ArrayBuffer.prototype;
17var DataViewPrototype = DataView.prototype;
18var slice = uncurryThis(ArrayBufferPrototype.slice);
19var isResizable = uncurryThisAccessor(ArrayBufferPrototype, 'resizable', 'get');
20var maxByteLength = uncurryThisAccessor(ArrayBufferPrototype, 'maxByteLength', 'get');
21var getInt8 = uncurryThis(DataViewPrototype.getInt8);
22var setInt8 = uncurryThis(DataViewPrototype.setInt8);
23
24module.exports = (PROPER_STRUCTURED_CLONE_TRANSFER || detachTransferable) && function (arrayBuffer, newLength, preserveResizability) {
25 var byteLength = arrayBufferByteLength(arrayBuffer);
26 var newByteLength = newLength === undefined ? byteLength : toIndex(newLength);
27 var fixedLength = !isResizable || !isResizable(arrayBuffer);
28 var newBuffer;
29 notDetached(arrayBuffer);
30 if (PROPER_STRUCTURED_CLONE_TRANSFER) {
31 arrayBuffer = structuredClone(arrayBuffer, { transfer: [arrayBuffer] });
32 if (byteLength === newByteLength && (preserveResizability || fixedLength)) return arrayBuffer;
33 }
34 if (byteLength >= newByteLength && (!preserveResizability || fixedLength)) {
35 newBuffer = slice(arrayBuffer, 0, newByteLength);
36 } else {
37 var options = preserveResizability && !fixedLength && maxByteLength
38 ? { maxByteLength: max(newByteLength, maxByteLength(arrayBuffer)) }
39 : undefined;
40 newBuffer = new ArrayBuffer(newByteLength, options);
41 var a = new DataView(arrayBuffer);
42 var b = new DataView(newBuffer);
43 var copyLength = min(newByteLength, byteLength);
44 for (var i = 0; i < copyLength; i++) setInt8(b, i, getInt8(a, i));
45 }
46 if (!PROPER_STRUCTURED_CLONE_TRANSFER) detachTransferable(arrayBuffer);
47 return newBuffer;
48};
Note: See TracBrowser for help on using the repository browser.