1 | 'use strict';
|
2 | var arrayWith = require('../internals/array-with');
|
3 | var ArrayBufferViewCore = require('../internals/array-buffer-view-core');
|
4 | var isBigIntArray = require('../internals/is-big-int-array');
|
5 | var toIntegerOrInfinity = require('../internals/to-integer-or-infinity');
|
6 | var toBigInt = require('../internals/to-big-int');
|
7 |
|
8 | var aTypedArray = ArrayBufferViewCore.aTypedArray;
|
9 | var getTypedArrayConstructor = ArrayBufferViewCore.getTypedArrayConstructor;
|
10 | var exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;
|
11 |
|
12 | var PROPER_ORDER = !!function () {
|
13 | try {
|
14 |
|
15 | new Int8Array(1)['with'](2, { valueOf: function () { throw 8; } });
|
16 | } catch (error) {
|
17 |
|
18 |
|
19 | return error === 8;
|
20 | }
|
21 | }();
|
22 |
|
23 |
|
24 |
|
25 | exportTypedArrayMethod('with', { 'with': function (index, value) {
|
26 | var O = aTypedArray(this);
|
27 | var relativeIndex = toIntegerOrInfinity(index);
|
28 | var actualValue = isBigIntArray(O) ? toBigInt(value) : +value;
|
29 | return arrayWith(O, getTypedArrayConstructor(O), relativeIndex, actualValue);
|
30 | } }['with'], !PROPER_ORDER);
|