core-js 3.44.0 → 3.45.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (73) hide show
  1. package/README.md +8 -8
  2. package/actual/iterator/concat.js +21 -0
  3. package/actual/iterator/index.js +1 -0
  4. package/actual/map/get-or-insert-computed.js +6 -0
  5. package/actual/map/get-or-insert.js +6 -0
  6. package/actual/map/index.js +2 -0
  7. package/actual/math/index.js +0 -1
  8. package/actual/math/sum-precise.js +2 -3
  9. package/actual/typed-array/from-base64.js +3 -0
  10. package/actual/typed-array/from-hex.js +3 -0
  11. package/actual/typed-array/index.js +1 -1
  12. package/actual/typed-array/set-from-base64.js +3 -0
  13. package/actual/typed-array/set-from-hex.js +3 -0
  14. package/actual/typed-array/to-base64.js +3 -0
  15. package/actual/typed-array/to-hex.js +3 -0
  16. package/actual/weak-map/get-or-insert-computed.js +6 -0
  17. package/actual/weak-map/get-or-insert.js +6 -0
  18. package/actual/weak-map/index.js +2 -0
  19. package/es/index.js +7 -0
  20. package/es/math/index.js +2 -0
  21. package/es/math/sum-precise.js +6 -0
  22. package/es/typed-array/from-base64.js +2 -0
  23. package/es/typed-array/from-hex.js +2 -0
  24. package/es/typed-array/methods.js +6 -0
  25. package/es/typed-array/set-from-base64.js +2 -0
  26. package/es/typed-array/set-from-hex.js +2 -0
  27. package/es/typed-array/to-base64.js +2 -0
  28. package/es/typed-array/to-hex.js +2 -0
  29. package/full/index.js +7 -0
  30. package/full/iterator/concat.js +3 -19
  31. package/full/iterator/from.js +1 -0
  32. package/full/iterator/index.js +0 -1
  33. package/full/iterator/range.js +1 -0
  34. package/full/iterator/zip-keyed.js +1 -0
  35. package/full/iterator/zip.js +1 -0
  36. package/full/map/get-or-insert-computed.js +2 -4
  37. package/full/map/get-or-insert.js +2 -4
  38. package/full/weak-map/get-or-insert-computed.js +2 -4
  39. package/full/weak-map/get-or-insert.js +2 -4
  40. package/internals/shared-store.js +2 -2
  41. package/internals/uint8-from-base64.js +6 -5
  42. package/modules/es.math.sum-precise.js +151 -0
  43. package/modules/es.uint8-array.from-base64.js +29 -0
  44. package/modules/es.uint8-array.from-hex.js +13 -0
  45. package/modules/es.uint8-array.set-from-base64.js +37 -0
  46. package/modules/es.uint8-array.set-from-hex.js +19 -0
  47. package/modules/es.uint8-array.to-base64.js +60 -0
  48. package/modules/es.uint8-array.to-hex.js +34 -0
  49. package/modules/esnext.iterator.concat.js +1 -1
  50. package/modules/esnext.map.get-or-insert-computed.js +2 -1
  51. package/modules/esnext.map.get-or-insert.js +2 -1
  52. package/modules/esnext.math.sum-precise.js +2 -150
  53. package/modules/esnext.uint8-array.from-base64.js +2 -23
  54. package/modules/esnext.uint8-array.from-hex.js +2 -12
  55. package/modules/esnext.uint8-array.set-from-base64.js +2 -31
  56. package/modules/esnext.uint8-array.set-from-hex.js +2 -18
  57. package/modules/esnext.uint8-array.to-base64.js +2 -59
  58. package/modules/esnext.uint8-array.to-hex.js +2 -33
  59. package/modules/esnext.weak-map.get-or-insert-computed.js +2 -1
  60. package/modules/esnext.weak-map.get-or-insert.js +2 -1
  61. package/package.json +4 -1
  62. package/stable/index.js +7 -0
  63. package/stable/math/sum-precise.js +4 -0
  64. package/stable/typed-array/from-base64.js +4 -0
  65. package/stable/typed-array/from-hex.js +4 -0
  66. package/stable/typed-array/set-from-base64.js +4 -0
  67. package/stable/typed-array/set-from-hex.js +4 -0
  68. package/stable/typed-array/to-base64.js +4 -0
  69. package/stable/typed-array/to-hex.js +4 -0
  70. package/stage/2.7.js +1 -2
  71. package/stage/2.js +0 -1
  72. package/stage/3.js +2 -2
  73. package/stage/4.js +2 -0
@@ -0,0 +1,151 @@
1
+ 'use strict';
2
+ // based on Shewchuk's algorithm for exactly floating point addition
3
+ // adapted from https://github.com/tc39/proposal-math-sum/blob/3513d58323a1ae25560e8700aa5294500c6c9287/polyfill/polyfill.mjs
4
+ var $ = require('../internals/export');
5
+ var uncurryThis = require('../internals/function-uncurry-this');
6
+ var iterate = require('../internals/iterate');
7
+
8
+ var $RangeError = RangeError;
9
+ var $TypeError = TypeError;
10
+ var $Infinity = Infinity;
11
+ var $NaN = NaN;
12
+ var abs = Math.abs;
13
+ var pow = Math.pow;
14
+ var push = uncurryThis([].push);
15
+
16
+ var POW_2_1023 = pow(2, 1023);
17
+ var MAX_SAFE_INTEGER = pow(2, 53) - 1; // 2 ** 53 - 1 === 9007199254740992
18
+ var MAX_DOUBLE = Number.MAX_VALUE; // 2 ** 1024 - 2 ** (1023 - 52) === 1.79769313486231570815e+308
19
+ var MAX_ULP = pow(2, 971); // 2 ** (1023 - 52) === 1.99584030953471981166e+292
20
+
21
+ var NOT_A_NUMBER = {};
22
+ var MINUS_INFINITY = {};
23
+ var PLUS_INFINITY = {};
24
+ var MINUS_ZERO = {};
25
+ var FINITE = {};
26
+
27
+ // prerequisite: abs(x) >= abs(y)
28
+ var twosum = function (x, y) {
29
+ var hi = x + y;
30
+ var lo = y - (hi - x);
31
+ return { hi: hi, lo: lo };
32
+ };
33
+
34
+ // `Math.sumPrecise` method
35
+ // https://github.com/tc39/proposal-math-sum
36
+ $({ target: 'Math', stat: true }, {
37
+ // eslint-disable-next-line max-statements -- ok
38
+ sumPrecise: function sumPrecise(items) {
39
+ var numbers = [];
40
+ var count = 0;
41
+ var state = MINUS_ZERO;
42
+
43
+ iterate(items, function (n) {
44
+ if (++count >= MAX_SAFE_INTEGER) throw new $RangeError('Maximum allowed index exceeded');
45
+ if (typeof n != 'number') throw new $TypeError('Value is not a number');
46
+ if (state !== NOT_A_NUMBER) {
47
+ // eslint-disable-next-line no-self-compare -- NaN check
48
+ if (n !== n) state = NOT_A_NUMBER;
49
+ else if (n === $Infinity) state = state === MINUS_INFINITY ? NOT_A_NUMBER : PLUS_INFINITY;
50
+ else if (n === -$Infinity) state = state === PLUS_INFINITY ? NOT_A_NUMBER : MINUS_INFINITY;
51
+ else if ((n !== 0 || (1 / n) === $Infinity) && (state === MINUS_ZERO || state === FINITE)) {
52
+ state = FINITE;
53
+ push(numbers, n);
54
+ }
55
+ }
56
+ });
57
+
58
+ switch (state) {
59
+ case NOT_A_NUMBER: return $NaN;
60
+ case MINUS_INFINITY: return -$Infinity;
61
+ case PLUS_INFINITY: return $Infinity;
62
+ case MINUS_ZERO: return -0;
63
+ }
64
+
65
+ var partials = [];
66
+ var overflow = 0; // conceptually 2 ** 1024 times this value; the final partial is biased by this amount
67
+ var x, y, sum, hi, lo, tmp;
68
+
69
+ for (var i = 0; i < numbers.length; i++) {
70
+ x = numbers[i];
71
+ var actuallyUsedPartials = 0;
72
+ for (var j = 0; j < partials.length; j++) {
73
+ y = partials[j];
74
+ if (abs(x) < abs(y)) {
75
+ tmp = x;
76
+ x = y;
77
+ y = tmp;
78
+ }
79
+ sum = twosum(x, y);
80
+ hi = sum.hi;
81
+ lo = sum.lo;
82
+ if (abs(hi) === $Infinity) {
83
+ var sign = hi === $Infinity ? 1 : -1;
84
+ overflow += sign;
85
+
86
+ x = (x - (sign * POW_2_1023)) - (sign * POW_2_1023);
87
+ if (abs(x) < abs(y)) {
88
+ tmp = x;
89
+ x = y;
90
+ y = tmp;
91
+ }
92
+ sum = twosum(x, y);
93
+ hi = sum.hi;
94
+ lo = sum.lo;
95
+ }
96
+ if (lo !== 0) partials[actuallyUsedPartials++] = lo;
97
+ x = hi;
98
+ }
99
+ partials.length = actuallyUsedPartials;
100
+ if (x !== 0) push(partials, x);
101
+ }
102
+
103
+ // compute the exact sum of partials, stopping once we lose precision
104
+ var n = partials.length - 1;
105
+ hi = 0;
106
+ lo = 0;
107
+
108
+ if (overflow !== 0) {
109
+ var next = n >= 0 ? partials[n] : 0;
110
+ n--;
111
+ if (abs(overflow) > 1 || (overflow > 0 && next > 0) || (overflow < 0 && next < 0)) {
112
+ return overflow > 0 ? $Infinity : -$Infinity;
113
+ }
114
+ // here we actually have to do the arithmetic
115
+ // drop a factor of 2 so we can do it without overflow
116
+ // assert(abs(overflow) === 1)
117
+ sum = twosum(overflow * POW_2_1023, next / 2);
118
+ hi = sum.hi;
119
+ lo = sum.lo;
120
+ lo *= 2;
121
+ if (abs(2 * hi) === $Infinity) {
122
+ // rounding to the maximum value
123
+ if (hi > 0) {
124
+ return (hi === POW_2_1023 && lo === -(MAX_ULP / 2) && n >= 0 && partials[n] < 0) ? MAX_DOUBLE : $Infinity;
125
+ } return (hi === -POW_2_1023 && lo === (MAX_ULP / 2) && n >= 0 && partials[n] > 0) ? -MAX_DOUBLE : -$Infinity;
126
+ }
127
+
128
+ if (lo !== 0) {
129
+ partials[++n] = lo;
130
+ lo = 0;
131
+ }
132
+
133
+ hi *= 2;
134
+ }
135
+
136
+ while (n >= 0) {
137
+ sum = twosum(hi, partials[n--]);
138
+ hi = sum.hi;
139
+ lo = sum.lo;
140
+ if (lo !== 0) break;
141
+ }
142
+
143
+ if (n >= 0 && ((lo < 0 && partials[n] < 0) || (lo > 0 && partials[n] > 0))) {
144
+ y = lo * 2;
145
+ x = hi + y;
146
+ if (y === x - hi) hi = x;
147
+ }
148
+
149
+ return hi;
150
+ }
151
+ });
@@ -0,0 +1,29 @@
1
+ 'use strict';
2
+ var $ = require('../internals/export');
3
+ var globalThis = require('../internals/global-this');
4
+ var arrayFromConstructorAndList = require('../internals/array-from-constructor-and-list');
5
+ var $fromBase64 = require('../internals/uint8-from-base64');
6
+
7
+ var Uint8Array = globalThis.Uint8Array;
8
+
9
+ var INCORRECT_BEHAVIOR_OR_DOESNT_EXISTS = !Uint8Array || !Uint8Array.fromBase64 || !function () {
10
+ // Webkit not throw an error on odd length string
11
+ try {
12
+ Uint8Array.fromBase64('a');
13
+ return;
14
+ } catch (error) { /* empty */ }
15
+ try {
16
+ Uint8Array.fromBase64('', null);
17
+ } catch (error) {
18
+ return true;
19
+ }
20
+ }();
21
+
22
+ // `Uint8Array.fromBase64` method
23
+ // https://github.com/tc39/proposal-arraybuffer-base64
24
+ if (Uint8Array) $({ target: 'Uint8Array', stat: true, forced: INCORRECT_BEHAVIOR_OR_DOESNT_EXISTS }, {
25
+ fromBase64: function fromBase64(string /* , options */) {
26
+ var result = $fromBase64(string, arguments.length > 1 ? arguments[1] : undefined, null, 0x1FFFFFFFFFFFFF);
27
+ return arrayFromConstructorAndList(Uint8Array, result.bytes);
28
+ }
29
+ });
@@ -0,0 +1,13 @@
1
+ 'use strict';
2
+ var $ = require('../internals/export');
3
+ var globalThis = require('../internals/global-this');
4
+ var aString = require('../internals/a-string');
5
+ var $fromHex = require('../internals/uint8-from-hex');
6
+
7
+ // `Uint8Array.fromHex` method
8
+ // https://github.com/tc39/proposal-arraybuffer-base64
9
+ if (globalThis.Uint8Array) $({ target: 'Uint8Array', stat: true }, {
10
+ fromHex: function fromHex(string) {
11
+ return $fromHex(aString(string)).bytes;
12
+ }
13
+ });
@@ -0,0 +1,37 @@
1
+ 'use strict';
2
+ var $ = require('../internals/export');
3
+ var globalThis = require('../internals/global-this');
4
+ var $fromBase64 = require('../internals/uint8-from-base64');
5
+ var anUint8Array = require('../internals/an-uint8-array');
6
+
7
+ var Uint8Array = globalThis.Uint8Array;
8
+
9
+ var INCORRECT_BEHAVIOR_OR_DOESNT_EXISTS = !Uint8Array || !Uint8Array.prototype.setFromBase64 || !function () {
10
+ var target = new Uint8Array([255, 255, 255, 255, 255]);
11
+ try {
12
+ target.setFromBase64('', null);
13
+ return;
14
+ } catch (error) { /* empty */ }
15
+ // Webkit not throw an error on odd length string
16
+ try {
17
+ target.setFromBase64('a');
18
+ return;
19
+ } catch (error) { /* empty */ }
20
+ try {
21
+ target.setFromBase64('MjYyZg===');
22
+ } catch (error) {
23
+ return target[0] === 50 && target[1] === 54 && target[2] === 50 && target[3] === 255 && target[4] === 255;
24
+ }
25
+ }();
26
+
27
+ // `Uint8Array.prototype.setFromBase64` method
28
+ // https://github.com/tc39/proposal-arraybuffer-base64
29
+ if (Uint8Array) $({ target: 'Uint8Array', proto: true, forced: INCORRECT_BEHAVIOR_OR_DOESNT_EXISTS }, {
30
+ setFromBase64: function setFromBase64(string /* , options */) {
31
+ anUint8Array(this);
32
+
33
+ var result = $fromBase64(string, arguments.length > 1 ? arguments[1] : undefined, this, this.length);
34
+
35
+ return { read: result.read, written: result.written };
36
+ }
37
+ });
@@ -0,0 +1,19 @@
1
+ 'use strict';
2
+ var $ = require('../internals/export');
3
+ var globalThis = require('../internals/global-this');
4
+ var aString = require('../internals/a-string');
5
+ var anUint8Array = require('../internals/an-uint8-array');
6
+ var notDetached = require('../internals/array-buffer-not-detached');
7
+ var $fromHex = require('../internals/uint8-from-hex');
8
+
9
+ // `Uint8Array.prototype.setFromHex` method
10
+ // https://github.com/tc39/proposal-arraybuffer-base64
11
+ if (globalThis.Uint8Array) $({ target: 'Uint8Array', proto: true }, {
12
+ setFromHex: function setFromHex(string) {
13
+ anUint8Array(this);
14
+ aString(string);
15
+ notDetached(this.buffer);
16
+ var read = $fromHex(string, this).read;
17
+ return { read: read, written: read / 2 };
18
+ }
19
+ });
@@ -0,0 +1,60 @@
1
+ 'use strict';
2
+ var $ = require('../internals/export');
3
+ var globalThis = require('../internals/global-this');
4
+ var uncurryThis = require('../internals/function-uncurry-this');
5
+ var anObjectOrUndefined = require('../internals/an-object-or-undefined');
6
+ var anUint8Array = require('../internals/an-uint8-array');
7
+ var notDetached = require('../internals/array-buffer-not-detached');
8
+ var base64Map = require('../internals/base64-map');
9
+ var getAlphabetOption = require('../internals/get-alphabet-option');
10
+
11
+ var base64Alphabet = base64Map.i2c;
12
+ var base64UrlAlphabet = base64Map.i2cUrl;
13
+
14
+ var charAt = uncurryThis(''.charAt);
15
+
16
+ var Uint8Array = globalThis.Uint8Array;
17
+
18
+ var INCORRECT_BEHAVIOR_OR_DOESNT_EXISTS = !Uint8Array || !Uint8Array.prototype.toBase64 || !function () {
19
+ try {
20
+ var target = new Uint8Array();
21
+ target.toBase64(null);
22
+ } catch (error) {
23
+ return true;
24
+ }
25
+ }();
26
+
27
+ // `Uint8Array.prototype.toBase64` method
28
+ // https://github.com/tc39/proposal-arraybuffer-base64
29
+ if (Uint8Array) $({ target: 'Uint8Array', proto: true, forced: INCORRECT_BEHAVIOR_OR_DOESNT_EXISTS }, {
30
+ toBase64: function toBase64(/* options */) {
31
+ var array = anUint8Array(this);
32
+ var options = arguments.length ? anObjectOrUndefined(arguments[0]) : undefined;
33
+ var alphabet = getAlphabetOption(options) === 'base64' ? base64Alphabet : base64UrlAlphabet;
34
+ var omitPadding = !!options && !!options.omitPadding;
35
+ notDetached(this.buffer);
36
+
37
+ var result = '';
38
+ var i = 0;
39
+ var length = array.length;
40
+ var triplet;
41
+
42
+ var at = function (shift) {
43
+ return charAt(alphabet, (triplet >> (6 * shift)) & 63);
44
+ };
45
+
46
+ for (; i + 2 < length; i += 3) {
47
+ triplet = (array[i] << 16) + (array[i + 1] << 8) + array[i + 2];
48
+ result += at(3) + at(2) + at(1) + at(0);
49
+ }
50
+ if (i + 2 === length) {
51
+ triplet = (array[i] << 16) + (array[i + 1] << 8);
52
+ result += at(3) + at(2) + at(1) + (omitPadding ? '' : '=');
53
+ } else if (i + 1 === length) {
54
+ triplet = array[i] << 16;
55
+ result += at(3) + at(2) + (omitPadding ? '' : '==');
56
+ }
57
+
58
+ return result;
59
+ }
60
+ });
@@ -0,0 +1,34 @@
1
+ 'use strict';
2
+ var $ = require('../internals/export');
3
+ var globalThis = require('../internals/global-this');
4
+ var uncurryThis = require('../internals/function-uncurry-this');
5
+ var anUint8Array = require('../internals/an-uint8-array');
6
+ var notDetached = require('../internals/array-buffer-not-detached');
7
+
8
+ var numberToString = uncurryThis(1.1.toString);
9
+
10
+ var Uint8Array = globalThis.Uint8Array;
11
+
12
+ var INCORRECT_BEHAVIOR_OR_DOESNT_EXISTS = !Uint8Array || !Uint8Array.prototype.toHex || !(function () {
13
+ try {
14
+ var target = new Uint8Array([255, 255, 255, 255, 255, 255, 255, 255]);
15
+ return target.toHex() === 'ffffffffffffffff';
16
+ } catch (error) {
17
+ return false;
18
+ }
19
+ })();
20
+
21
+ // `Uint8Array.prototype.toHex` method
22
+ // https://github.com/tc39/proposal-arraybuffer-base64
23
+ if (Uint8Array) $({ target: 'Uint8Array', proto: true, forced: INCORRECT_BEHAVIOR_OR_DOESNT_EXISTS }, {
24
+ toHex: function toHex() {
25
+ anUint8Array(this);
26
+ notDetached(this.buffer);
27
+ var result = '';
28
+ for (var i = 0, length = this.length; i < length; i++) {
29
+ var hex = numberToString(this[i], 16);
30
+ result += hex.length === 1 ? '0' + hex : hex;
31
+ }
32
+ return result;
33
+ }
34
+ });
@@ -35,7 +35,7 @@ var IteratorProxy = createIteratorProxy(function () {
35
35
 
36
36
  // `Iterator.concat` method
37
37
  // https://github.com/tc39/proposal-iterator-sequencing
38
- $({ target: 'Iterator', stat: true, forced: true }, {
38
+ $({ target: 'Iterator', stat: true }, {
39
39
  concat: function concat() {
40
40
  var length = arguments.length;
41
41
  var iterables = $Array(length);
@@ -3,6 +3,7 @@ var $ = require('../internals/export');
3
3
  var aCallable = require('../internals/a-callable');
4
4
  var aMap = require('../internals/a-map');
5
5
  var MapHelpers = require('../internals/map-helpers');
6
+ var IS_PURE = require('../internals/is-pure');
6
7
 
7
8
  var get = MapHelpers.get;
8
9
  var has = MapHelpers.has;
@@ -10,7 +11,7 @@ var set = MapHelpers.set;
10
11
 
11
12
  // `Map.prototype.getOrInsertComputed` method
12
13
  // https://github.com/tc39/proposal-upsert
13
- $({ target: 'Map', proto: true, real: true, forced: true }, {
14
+ $({ target: 'Map', proto: true, real: true, forced: IS_PURE }, {
14
15
  getOrInsertComputed: function getOrInsertComputed(key, callbackfn) {
15
16
  aMap(this);
16
17
  aCallable(callbackfn);
@@ -2,6 +2,7 @@
2
2
  var $ = require('../internals/export');
3
3
  var aMap = require('../internals/a-map');
4
4
  var MapHelpers = require('../internals/map-helpers');
5
+ var IS_PURE = require('../internals/is-pure');
5
6
 
6
7
  var get = MapHelpers.get;
7
8
  var has = MapHelpers.has;
@@ -9,7 +10,7 @@ var set = MapHelpers.set;
9
10
 
10
11
  // `Map.prototype.getOrInsert` method
11
12
  // https://github.com/tc39/proposal-upsert
12
- $({ target: 'Map', proto: true, real: true, forced: true }, {
13
+ $({ target: 'Map', proto: true, real: true, forced: IS_PURE }, {
13
14
  getOrInsert: function getOrInsert(key, value) {
14
15
  if (has(aMap(this), key)) return get(this, key);
15
16
  set(this, key, value);
@@ -1,151 +1,3 @@
1
1
  'use strict';
2
- // based on Shewchuk's algorithm for exactly floating point addition
3
- // adapted from https://github.com/tc39/proposal-math-sum/blob/3513d58323a1ae25560e8700aa5294500c6c9287/polyfill/polyfill.mjs
4
- var $ = require('../internals/export');
5
- var uncurryThis = require('../internals/function-uncurry-this');
6
- var iterate = require('../internals/iterate');
7
-
8
- var $RangeError = RangeError;
9
- var $TypeError = TypeError;
10
- var $Infinity = Infinity;
11
- var $NaN = NaN;
12
- var abs = Math.abs;
13
- var pow = Math.pow;
14
- var push = uncurryThis([].push);
15
-
16
- var POW_2_1023 = pow(2, 1023);
17
- var MAX_SAFE_INTEGER = pow(2, 53) - 1; // 2 ** 53 - 1 === 9007199254740992
18
- var MAX_DOUBLE = Number.MAX_VALUE; // 2 ** 1024 - 2 ** (1023 - 52) === 1.79769313486231570815e+308
19
- var MAX_ULP = pow(2, 971); // 2 ** (1023 - 52) === 1.99584030953471981166e+292
20
-
21
- var NOT_A_NUMBER = {};
22
- var MINUS_INFINITY = {};
23
- var PLUS_INFINITY = {};
24
- var MINUS_ZERO = {};
25
- var FINITE = {};
26
-
27
- // prerequisite: abs(x) >= abs(y)
28
- var twosum = function (x, y) {
29
- var hi = x + y;
30
- var lo = y - (hi - x);
31
- return { hi: hi, lo: lo };
32
- };
33
-
34
- // `Math.sumPrecise` method
35
- // https://github.com/tc39/proposal-math-sum
36
- $({ target: 'Math', stat: true }, {
37
- // eslint-disable-next-line max-statements -- ok
38
- sumPrecise: function sumPrecise(items) {
39
- var numbers = [];
40
- var count = 0;
41
- var state = MINUS_ZERO;
42
-
43
- iterate(items, function (n) {
44
- if (++count >= MAX_SAFE_INTEGER) throw new $RangeError('Maximum allowed index exceeded');
45
- if (typeof n != 'number') throw new $TypeError('Value is not a number');
46
- if (state !== NOT_A_NUMBER) {
47
- // eslint-disable-next-line no-self-compare -- NaN check
48
- if (n !== n) state = NOT_A_NUMBER;
49
- else if (n === $Infinity) state = state === MINUS_INFINITY ? NOT_A_NUMBER : PLUS_INFINITY;
50
- else if (n === -$Infinity) state = state === PLUS_INFINITY ? NOT_A_NUMBER : MINUS_INFINITY;
51
- else if ((n !== 0 || (1 / n) === $Infinity) && (state === MINUS_ZERO || state === FINITE)) {
52
- state = FINITE;
53
- push(numbers, n);
54
- }
55
- }
56
- });
57
-
58
- switch (state) {
59
- case NOT_A_NUMBER: return $NaN;
60
- case MINUS_INFINITY: return -$Infinity;
61
- case PLUS_INFINITY: return $Infinity;
62
- case MINUS_ZERO: return -0;
63
- }
64
-
65
- var partials = [];
66
- var overflow = 0; // conceptually 2 ** 1024 times this value; the final partial is biased by this amount
67
- var x, y, sum, hi, lo, tmp;
68
-
69
- for (var i = 0; i < numbers.length; i++) {
70
- x = numbers[i];
71
- var actuallyUsedPartials = 0;
72
- for (var j = 0; j < partials.length; j++) {
73
- y = partials[j];
74
- if (abs(x) < abs(y)) {
75
- tmp = x;
76
- x = y;
77
- y = tmp;
78
- }
79
- sum = twosum(x, y);
80
- hi = sum.hi;
81
- lo = sum.lo;
82
- if (abs(hi) === $Infinity) {
83
- var sign = hi === $Infinity ? 1 : -1;
84
- overflow += sign;
85
-
86
- x = (x - (sign * POW_2_1023)) - (sign * POW_2_1023);
87
- if (abs(x) < abs(y)) {
88
- tmp = x;
89
- x = y;
90
- y = tmp;
91
- }
92
- sum = twosum(x, y);
93
- hi = sum.hi;
94
- lo = sum.lo;
95
- }
96
- if (lo !== 0) partials[actuallyUsedPartials++] = lo;
97
- x = hi;
98
- }
99
- partials.length = actuallyUsedPartials;
100
- if (x !== 0) push(partials, x);
101
- }
102
-
103
- // compute the exact sum of partials, stopping once we lose precision
104
- var n = partials.length - 1;
105
- hi = 0;
106
- lo = 0;
107
-
108
- if (overflow !== 0) {
109
- var next = n >= 0 ? partials[n] : 0;
110
- n--;
111
- if (abs(overflow) > 1 || (overflow > 0 && next > 0) || (overflow < 0 && next < 0)) {
112
- return overflow > 0 ? $Infinity : -$Infinity;
113
- }
114
- // here we actually have to do the arithmetic
115
- // drop a factor of 2 so we can do it without overflow
116
- // assert(abs(overflow) === 1)
117
- sum = twosum(overflow * POW_2_1023, next / 2);
118
- hi = sum.hi;
119
- lo = sum.lo;
120
- lo *= 2;
121
- if (abs(2 * hi) === $Infinity) {
122
- // rounding to the maximum value
123
- if (hi > 0) {
124
- return (hi === POW_2_1023 && lo === -(MAX_ULP / 2) && n >= 0 && partials[n] < 0) ? MAX_DOUBLE : $Infinity;
125
- } return (hi === -POW_2_1023 && lo === (MAX_ULP / 2) && n >= 0 && partials[n] > 0) ? -MAX_DOUBLE : -$Infinity;
126
- }
127
-
128
- if (lo !== 0) {
129
- partials[++n] = lo;
130
- lo = 0;
131
- }
132
-
133
- hi *= 2;
134
- }
135
-
136
- while (n >= 0) {
137
- sum = twosum(hi, partials[n--]);
138
- hi = sum.hi;
139
- lo = sum.lo;
140
- if (lo !== 0) break;
141
- }
142
-
143
- if (n >= 0 && ((lo < 0 && partials[n] < 0) || (lo > 0 && partials[n] > 0))) {
144
- y = lo * 2;
145
- x = hi + y;
146
- if (y === x - hi) hi = x;
147
- }
148
-
149
- return hi;
150
- }
151
- });
2
+ // TODO: Remove from `core-js@4`
3
+ require('../modules/es.math.sum-precise');
@@ -1,24 +1,3 @@
1
1
  'use strict';
2
- var $ = require('../internals/export');
3
- var globalThis = require('../internals/global-this');
4
- var arrayFromConstructorAndList = require('../internals/array-from-constructor-and-list');
5
- var $fromBase64 = require('../internals/uint8-from-base64');
6
-
7
- var Uint8Array = globalThis.Uint8Array;
8
-
9
- var INCORRECT_BEHAVIOR_OR_DOESNT_EXISTS = !Uint8Array || !Uint8Array.fromBase64 || !function () {
10
- try {
11
- Uint8Array.fromBase64('', null);
12
- } catch (error) {
13
- return true;
14
- }
15
- }();
16
-
17
- // `Uint8Array.fromBase64` method
18
- // https://github.com/tc39/proposal-arraybuffer-base64
19
- if (Uint8Array) $({ target: 'Uint8Array', stat: true, forced: INCORRECT_BEHAVIOR_OR_DOESNT_EXISTS }, {
20
- fromBase64: function fromBase64(string /* , options */) {
21
- var result = $fromBase64(string, arguments.length > 1 ? arguments[1] : undefined, null, 0x1FFFFFFFFFFFFF);
22
- return arrayFromConstructorAndList(Uint8Array, result.bytes);
23
- }
24
- });
2
+ // TODO: Remove from `core-js@4`
3
+ require('../modules/es.uint8-array.from-base64');
@@ -1,13 +1,3 @@
1
1
  'use strict';
2
- var $ = require('../internals/export');
3
- var globalThis = require('../internals/global-this');
4
- var aString = require('../internals/a-string');
5
- var $fromHex = require('../internals/uint8-from-hex');
6
-
7
- // `Uint8Array.fromHex` method
8
- // https://github.com/tc39/proposal-arraybuffer-base64
9
- if (globalThis.Uint8Array) $({ target: 'Uint8Array', stat: true }, {
10
- fromHex: function fromHex(string) {
11
- return $fromHex(aString(string)).bytes;
12
- }
13
- });
2
+ // TODO: Remove from `core-js@4`
3
+ require('../modules/es.uint8-array.from-hex');
@@ -1,32 +1,3 @@
1
1
  'use strict';
2
- var $ = require('../internals/export');
3
- var globalThis = require('../internals/global-this');
4
- var $fromBase64 = require('../internals/uint8-from-base64');
5
- var anUint8Array = require('../internals/an-uint8-array');
6
-
7
- var Uint8Array = globalThis.Uint8Array;
8
-
9
- var INCORRECT_BEHAVIOR_OR_DOESNT_EXISTS = !Uint8Array || !Uint8Array.prototype.setFromBase64 || !function () {
10
- var target = new Uint8Array([255, 255, 255, 255, 255]);
11
- try {
12
- target.setFromBase64('', null);
13
- return;
14
- } catch (error) { /* empty */ }
15
- try {
16
- target.setFromBase64('MjYyZg===');
17
- } catch (error) {
18
- return target[0] === 50 && target[1] === 54 && target[2] === 50 && target[3] === 255 && target[4] === 255;
19
- }
20
- }();
21
-
22
- // `Uint8Array.prototype.setFromBase64` method
23
- // https://github.com/tc39/proposal-arraybuffer-base64
24
- if (Uint8Array) $({ target: 'Uint8Array', proto: true, forced: INCORRECT_BEHAVIOR_OR_DOESNT_EXISTS }, {
25
- setFromBase64: function setFromBase64(string /* , options */) {
26
- anUint8Array(this);
27
-
28
- var result = $fromBase64(string, arguments.length > 1 ? arguments[1] : undefined, this, this.length);
29
-
30
- return { read: result.read, written: result.written };
31
- }
32
- });
2
+ // TODO: Remove from `core-js@4`
3
+ require('../modules/es.uint8-array.set-from-base64');
@@ -1,19 +1,3 @@
1
1
  'use strict';
2
- var $ = require('../internals/export');
3
- var globalThis = require('../internals/global-this');
4
- var aString = require('../internals/a-string');
5
- var anUint8Array = require('../internals/an-uint8-array');
6
- var notDetached = require('../internals/array-buffer-not-detached');
7
- var $fromHex = require('../internals/uint8-from-hex');
8
-
9
- // `Uint8Array.prototype.setFromHex` method
10
- // https://github.com/tc39/proposal-arraybuffer-base64
11
- if (globalThis.Uint8Array) $({ target: 'Uint8Array', proto: true }, {
12
- setFromHex: function setFromHex(string) {
13
- anUint8Array(this);
14
- aString(string);
15
- notDetached(this.buffer);
16
- var read = $fromHex(string, this).read;
17
- return { read: read, written: read / 2 };
18
- }
19
- });
2
+ // TODO: Remove from `core-js@4`
3
+ require('../modules/es.uint8-array.set-from-hex');