CoolFace
Apppublic

Umama-at-Bluchip/Quick-UI

sourceHugging Faceupdated 2y agoView on Hugging Face
0likes
implementation.js85 linesDownload Raw Back to arraybuffer.prototype.slice
1'use strict';2 3var GetIntrinsic = require('get-intrinsic');4 5var $ArrayBuffer = GetIntrinsic('%ArrayBuffer%', true);6var $Uint8Array = GetIntrinsic('%Uint8Array%', true);7 8var IsDetachedBuffer = require('es-abstract/2023/IsDetachedBuffer');9var IsSharedArrayBuffer = require('es-abstract/2023/IsSharedArrayBuffer');10var max = require('es-abstract/2023/max');11var min = require('es-abstract/2023/min');12var SpeciesConstructor = require('es-abstract/2023/SpeciesConstructor');13var ToIntegerOrInfinity = require('es-abstract/2023/ToIntegerOrInfinity');14 15var arrayBufferByteLength = require('array-buffer-byte-length');16var isArrayBuffer = require('is-array-buffer');17var $TypeError = require('es-errors/type');18 19module.exports = function slice(start, end) {20	var O = this; // step 121 22	if (!isArrayBuffer(O) || IsSharedArrayBuffer(O) || IsDetachedBuffer(O)) {23		throw new $TypeError('receiver must be a non-detached, non-shared ArrayBuffer'); // steps 2-424	}25 26	var len = arrayBufferByteLength(O); // step 527 28	var relativeStart = ToIntegerOrInfinity(start); // step 629 30	var first;31	if (relativeStart === -Infinity) {32		first = 0; // step 733	} else if (relativeStart < 0) {34		first = max(len + relativeStart, 0); // step 835	} else {36		first = min(relativeStart, len); // step 937	}38 39	var relativeEnd = typeof end === 'undefined' ? len : ToIntegerOrInfinity(end); // step 1040 41	var final;42	if (relativeEnd === -Infinity) {43		final = 0; // step 1144	} else if (relativeEnd < 0) {45		final = max(len + relativeEnd, 0); // step 1246	} else {47		final = min(relativeEnd, len); // step 1348	}49 50	var newLen = max(final - first, 0); // step 1451 52	var Ctor = SpeciesConstructor(O, $ArrayBuffer); // step 1553 54	var new$ = new Ctor(newLen); // step 1655 56	if (!isArrayBuffer(new$) || IsSharedArrayBuffer(new$) || IsDetachedBuffer(new$)) {57		throw new $TypeError('Species constructor must produce a non-detached, non-shared Array Buffer'); // steps 17-1958	}59 60	if (new$ === O) {61		throw new $TypeError('new ArrayBuffer should not have been the same as the receiver'); // step 2062	}63 64	if (arrayBufferByteLength(new$) < newLen) {65		throw new $TypeError('new ArrayBuffer\'s byteLength must be at least the requested length'); // step 2166	}67 68	if (IsDetachedBuffer(O)) {69		throw new $TypeError('receiver became an detached ArrayBuffer'); // step 2370	}71 72	/*73	24. Let fromBuf be O.[[ArrayBufferData]].74	25. Let toBuf be new.[[ArrayBufferData]].75	26. Perform CopyDataBlockBytes(toBuf, 0, fromBuf, first, newLen).76	*/77	var sourceArr = new $Uint8Array(O);78	var destArr = new $Uint8Array(new$);79	for (var i = start, ii = 0; i < end; i++, ii++) {80		destArr[ii] = sourceArr[i];81	}82 83	return new$; // step 2784};85