core-js 3.48.0 → 3.49.0

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 (101) hide show
  1. package/README.md +2 -2
  2. package/configurator.js +1 -1
  3. package/es/object/define-properties.js +2 -2
  4. package/es/object/define-property.js +2 -2
  5. package/es/object/get-own-property-descriptor.js +2 -2
  6. package/es/promise/try.js +2 -2
  7. package/internals/advance-string-index.js +1 -1
  8. package/internals/array-buffer-transfer.js +4 -1
  9. package/internals/array-buffer-view-core.js +1 -1
  10. package/internals/array-buffer.js +1 -2
  11. package/internals/array-from-async.js +5 -7
  12. package/internals/array-from.js +7 -2
  13. package/internals/async-from-sync-iterator.js +28 -4
  14. package/internals/async-iterator-close.js +11 -3
  15. package/internals/async-iterator-create-proxy.js +47 -20
  16. package/internals/async-iterator-iteration.js +7 -4
  17. package/internals/async-iterator-map.js +20 -18
  18. package/internals/does-not-exceed-safe-integer.js +1 -1
  19. package/internals/environment-is-ios.js +1 -2
  20. package/internals/function-bind-native.js +1 -1
  21. package/internals/function-name.js +1 -1
  22. package/internals/iterate.js +8 -3
  23. package/internals/iterator-create-proxy.js +4 -1
  24. package/internals/iterator-window.js +2 -2
  25. package/internals/iterator-zip.js +4 -3
  26. package/internals/numeric-range-iterator.js +9 -4
  27. package/internals/regexp-exec.js +20 -13
  28. package/internals/set-difference.js +1 -1
  29. package/internals/set-is-disjoint-from.js +1 -1
  30. package/internals/set-is-superset-of.js +1 -1
  31. package/internals/shared-store.js +2 -2
  32. package/internals/string-pad.js +2 -1
  33. package/internals/string-parse.js +1 -1
  34. package/internals/string-repeat.js +2 -1
  35. package/internals/to-uint8-clamped.js +11 -3
  36. package/internals/typed-array-constructor.js +1 -2
  37. package/internals/typed-array-from.js +3 -1
  38. package/internals/uint8-from-hex.js +10 -10
  39. package/modules/es.array.flat.js +2 -1
  40. package/modules/es.array.from-async.js +1 -1
  41. package/modules/es.array.includes.js +7 -1
  42. package/modules/es.array.sort.js +3 -1
  43. package/modules/es.data-view.get-float16.js +1 -1
  44. package/modules/es.data-view.set-float16.js +2 -1
  45. package/modules/es.date.set-year.js +4 -1
  46. package/modules/es.error.is-error.js +1 -1
  47. package/modules/es.escape.js +1 -1
  48. package/modules/es.iterator.concat.js +4 -3
  49. package/modules/es.iterator.take.js +7 -2
  50. package/modules/es.json.parse.js +13 -1
  51. package/modules/es.json.stringify.js +6 -3
  52. package/modules/es.map.get-or-insert-computed.js +3 -4
  53. package/modules/es.map.get-or-insert.js +2 -3
  54. package/modules/es.math.asinh.js +4 -1
  55. package/modules/es.math.atanh.js +2 -2
  56. package/modules/es.math.sum-precise.js +3 -3
  57. package/modules/es.number.to-exponential.js +15 -6
  58. package/modules/es.reflect.construct.js +1 -1
  59. package/modules/es.reflect.define-property.js +10 -0
  60. package/modules/es.reflect.delete-property.js +5 -2
  61. package/modules/es.reflect.get.js +9 -7
  62. package/modules/es.reflect.set.js +14 -9
  63. package/modules/es.regexp.constructor.js +16 -5
  64. package/modules/es.string.ends-with.js +1 -1
  65. package/modules/es.string.from-code-point.js +2 -2
  66. package/modules/es.string.match-all.js +1 -1
  67. package/modules/es.string.match.js +2 -2
  68. package/modules/es.string.replace.js +9 -8
  69. package/modules/es.string.split.js +7 -5
  70. package/modules/es.string.starts-with.js +1 -1
  71. package/modules/es.string.substr.js +5 -7
  72. package/modules/es.symbol.constructor.js +3 -2
  73. package/modules/es.symbol.description.js +9 -0
  74. package/modules/es.typed-array.sort.js +3 -3
  75. package/modules/es.uint8-array.from-base64.js +1 -1
  76. package/modules/es.uint8-array.from-hex.js +1 -1
  77. package/modules/es.uint8-array.set-from-base64.js +1 -1
  78. package/modules/es.uint8-array.set-from-hex.js +1 -1
  79. package/modules/es.uint8-array.to-base64.js +1 -1
  80. package/modules/es.uint8-array.to-hex.js +6 -4
  81. package/modules/es.weak-map.get-or-insert-computed.js +2 -2
  82. package/modules/es.weak-map.get-or-insert.js +2 -3
  83. package/modules/esnext.array.is-template-object.js +1 -1
  84. package/modules/esnext.async-iterator.reduce.js +2 -2
  85. package/modules/esnext.async-iterator.take.js +4 -2
  86. package/modules/esnext.bigint.range.js +1 -1
  87. package/modules/esnext.iterator.range.js +1 -1
  88. package/modules/esnext.iterator.zip-keyed.js +3 -2
  89. package/modules/esnext.iterator.zip.js +4 -3
  90. package/modules/esnext.number.from-string.js +30 -3
  91. package/modules/esnext.number.range.js +1 -1
  92. package/modules/esnext.observable.from.js +5 -2
  93. package/modules/esnext.string.dedent.js +1 -1
  94. package/modules/web.atob.js +15 -6
  95. package/modules/web.btoa.js +10 -3
  96. package/modules/web.structured-clone.js +2 -2
  97. package/modules/web.url-search-params.constructor.js +25 -10
  98. package/modules/web.url-search-params.delete.js +6 -9
  99. package/modules/web.url.constructor.js +55 -26
  100. package/modules/web.url.parse.js +1 -1
  101. package/package.json +5 -1
package/README.md CHANGED
@@ -9,7 +9,7 @@
9
9
  **I highly recommend reading this: [So, what's next?](https://github.com/zloirock/core-js/blob/master/docs/2023-02-14-so-whats-next.md)**
10
10
  ---
11
11
 
12
- > Modular standard library for JavaScript. Includes polyfills for [ECMAScript up to 2025](https://github.com/zloirock/core-js#ecmascript): [promises](https://github.com/zloirock/core-js#ecmascript-promise), [symbols](https://github.com/zloirock/core-js#ecmascript-symbol), [collections](https://github.com/zloirock/core-js#ecmascript-collections), iterators, [typed arrays](https://github.com/zloirock/core-js#ecmascript-typed-arrays), many other features, [ECMAScript proposals](https://github.com/zloirock/core-js#ecmascript-proposals), [some cross-platform WHATWG / W3C features and proposals](#web-standards) like [`URL`](https://github.com/zloirock/core-js#url-and-urlsearchparams). You can load only required features or use it without global namespace pollution.
12
+ > [`core-js`](https://core-js.io) is a modular standard library for JavaScript. Includes polyfills for ECMAScript up to 2026: [promises](https://core-js.io/docs/features/ecmascript/promise), [symbols](https://core-js.io/docs/features/ecmascript/symbol), [collections](https://core-js.io/docs/features/ecmascript/collections), [iterators](https://core-js.io/docs/features/ecmascript/iterator), [typed arrays](https://core-js.io/docs/features/ecmascript/typed-arrays), many other features, ECMAScript proposals, some cross-platform WHATWG / W3C features and proposals like [`URL`](https://core-js.io/docs/features/web-standards/url-and-urlsearchparams). You can load only required features or use it without global namespace pollution.
13
13
 
14
14
  ## Raising funds
15
15
 
@@ -92,4 +92,4 @@ Iterator.concat([1, 2], function * (i) { while (true) yield i++; }(3))
92
92
  structuredClone(new Set([1, 2, 3])); // => new Set([1, 2, 3])
93
93
  ```
94
94
 
95
- **It's a global version (first 2 examples), for more info see [`core-js` documentation](https://github.com/zloirock/core-js/blob/master/README.md).**
95
+ **It's a global version (first 2 examples), for more info see [`core-js` documentation](https://core-js.io).**
package/configurator.js CHANGED
@@ -14,7 +14,7 @@ var setAggressivenessLevel = function (object, constant) {
14
14
  };
15
15
 
16
16
  module.exports = function (options) {
17
- if (typeof options == 'object') {
17
+ if (options && typeof options == 'object') {
18
18
  setAggressivenessLevel(options.useNative, isForced.NATIVE);
19
19
  setAggressivenessLevel(options.usePolyfill, isForced.POLYFILL);
20
20
  setAggressivenessLevel(options.useFeatureDetection, null);
@@ -4,8 +4,8 @@ var path = require('../../internals/path');
4
4
 
5
5
  var Object = path.Object;
6
6
 
7
- var defineProperties = module.exports = function defineProperties(T, D) {
7
+ var $defineProperties = module.exports = function defineProperties(T, D) {
8
8
  return Object.defineProperties(T, D);
9
9
  };
10
10
 
11
- if (Object.defineProperties.sham) defineProperties.sham = true;
11
+ if (Object.defineProperties.sham) $defineProperties.sham = true;
@@ -4,8 +4,8 @@ var path = require('../../internals/path');
4
4
 
5
5
  var Object = path.Object;
6
6
 
7
- var defineProperty = module.exports = function defineProperty(it, key, desc) {
7
+ var $defineProperty = module.exports = function defineProperty(it, key, desc) {
8
8
  return Object.defineProperty(it, key, desc);
9
9
  };
10
10
 
11
- if (Object.defineProperty.sham) defineProperty.sham = true;
11
+ if (Object.defineProperty.sham) $defineProperty.sham = true;
@@ -4,8 +4,8 @@ var path = require('../../internals/path');
4
4
 
5
5
  var Object = path.Object;
6
6
 
7
- var getOwnPropertyDescriptor = module.exports = function getOwnPropertyDescriptor(it, key) {
7
+ var $getOwnPropertyDescriptor = module.exports = function getOwnPropertyDescriptor(it, key) {
8
8
  return Object.getOwnPropertyDescriptor(it, key);
9
9
  };
10
10
 
11
- if (Object.getOwnPropertyDescriptor.sham) getOwnPropertyDescriptor.sham = true;
11
+ if (Object.getOwnPropertyDescriptor.sham) $getOwnPropertyDescriptor.sham = true;
package/es/promise/try.js CHANGED
@@ -10,6 +10,6 @@ var Promise = path.Promise;
10
10
  var $try = Promise['try'];
11
11
 
12
12
  // eslint-disable-next-line no-unused-vars -- required for arity
13
- module.exports = ({ 'try': function (callbackfn /* , ...args */) {
13
+ module.exports = { 'try': function (callbackfn /* , ...args */) {
14
14
  return apply($try, isCallable(this) ? this : Promise, arguments);
15
- } })['try'];
15
+ } }['try'];
@@ -4,5 +4,5 @@ var charAt = require('../internals/string-multibyte').charAt;
4
4
  // `AdvanceStringIndex` abstract operation
5
5
  // https://tc39.es/ecma262/#sec-advancestringindex
6
6
  module.exports = function (S, index, unicode) {
7
- return index + (unicode ? charAt(S, index).length : 1);
7
+ return index + (unicode ? charAt(S, index).length || 1 : 1);
8
8
  };
@@ -11,6 +11,7 @@ var PROPER_STRUCTURED_CLONE_TRANSFER = require('../internals/structured-clone-pr
11
11
  var structuredClone = globalThis.structuredClone;
12
12
  var ArrayBuffer = globalThis.ArrayBuffer;
13
13
  var DataView = globalThis.DataView;
14
+ var max = Math.max;
14
15
  var min = Math.min;
15
16
  var ArrayBufferPrototype = ArrayBuffer.prototype;
16
17
  var DataViewPrototype = DataView.prototype;
@@ -33,7 +34,9 @@ module.exports = (PROPER_STRUCTURED_CLONE_TRANSFER || detachTransferable) && fun
33
34
  if (byteLength >= newByteLength && (!preserveResizability || fixedLength)) {
34
35
  newBuffer = slice(arrayBuffer, 0, newByteLength);
35
36
  } else {
36
- var options = preserveResizability && !fixedLength && maxByteLength ? { maxByteLength: maxByteLength(arrayBuffer) } : undefined;
37
+ var options = preserveResizability && !fixedLength && maxByteLength
38
+ ? { maxByteLength: max(newByteLength, maxByteLength(arrayBuffer)) }
39
+ : undefined;
37
40
  newBuffer = new ArrayBuffer(newByteLength, options);
38
41
  var a = new DataView(arrayBuffer);
39
42
  var b = new DataView(newBuffer);
@@ -174,7 +174,7 @@ if (DESCRIPTORS && !hasOwn(TypedArrayPrototype, TO_STRING_TAG)) {
174
174
  }
175
175
  });
176
176
  for (NAME in TypedArrayConstructorsList) if (globalThis[NAME]) {
177
- createNonEnumerableProperty(globalThis[NAME], TYPED_ARRAY_TAG, NAME);
177
+ createNonEnumerableProperty(globalThis[NAME].prototype, TYPED_ARRAY_TAG, NAME);
178
178
  }
179
179
  }
180
180
 
@@ -10,7 +10,6 @@ var defineBuiltIns = require('../internals/define-built-ins');
10
10
  var fails = require('../internals/fails');
11
11
  var anInstance = require('../internals/an-instance');
12
12
  var toIntegerOrInfinity = require('../internals/to-integer-or-infinity');
13
- var toLength = require('../internals/to-length');
14
13
  var toIndex = require('../internals/to-index');
15
14
  var fround = require('../internals/math-fround');
16
15
  var IEEE754 = require('../internals/ieee754');
@@ -126,7 +125,7 @@ if (!NATIVE_ARRAY_BUFFER) {
126
125
  var bufferLength = bufferState.byteLength;
127
126
  var offset = toIntegerOrInfinity(byteOffset);
128
127
  if (offset < 0 || offset > bufferLength) throw new RangeError('Wrong offset');
129
- byteLength = byteLength === undefined ? bufferLength - offset : toLength(byteLength);
128
+ byteLength = byteLength === undefined ? bufferLength - offset : toIndex(byteLength);
130
129
  if (offset + byteLength > bufferLength) throw new RangeError(WRONG_LENGTH);
131
130
  setInternalState(this, {
132
131
  type: DATA_VIEW,
@@ -1,7 +1,6 @@
1
1
  'use strict';
2
2
  var bind = require('../internals/function-bind-context');
3
3
  var uncurryThis = require('../internals/function-uncurry-this');
4
- var toObject = require('../internals/to-object');
5
4
  var isConstructor = require('../internals/is-constructor');
6
5
  var getAsyncIterator = require('../internals/get-async-iterator');
7
6
  var getIterator = require('../internals/get-iterator');
@@ -32,20 +31,19 @@ SafeArrayIterator.prototype.next = function () {
32
31
 
33
32
  // `Array.fromAsync` method implementation
34
33
  // https://github.com/tc39/proposal-array-from-async
35
- module.exports = function fromAsync(asyncItems /* , mapfn = undefined, thisArg = undefined */) {
34
+ module.exports = function fromAsync(items /* , mapfn = undefined, thisArg = undefined */) {
36
35
  var C = this;
37
36
  var argumentsLength = arguments.length;
38
37
  var mapfn = argumentsLength > 1 ? arguments[1] : undefined;
39
38
  var thisArg = argumentsLength > 2 ? arguments[2] : undefined;
40
39
  return new (getBuiltIn('Promise'))(function (resolve) {
41
- var O = toObject(asyncItems);
42
40
  if (mapfn !== undefined) mapfn = bind(mapfn, thisArg);
43
- var usingAsyncIterator = getMethod(O, ASYNC_ITERATOR);
44
- var usingSyncIterator = usingAsyncIterator ? undefined : getIteratorMethod(O) || safeArrayIterator;
41
+ var usingAsyncIterator = getMethod(items, ASYNC_ITERATOR);
42
+ var usingSyncIterator = usingAsyncIterator ? undefined : getIteratorMethod(items) || safeArrayIterator;
45
43
  var A = isConstructor(C) ? new C() : [];
46
44
  var iterator = usingAsyncIterator
47
- ? getAsyncIterator(O, usingAsyncIterator)
48
- : new AsyncFromSyncIterator(getIteratorDirect(getIterator(O, usingSyncIterator)));
45
+ ? getAsyncIterator(items, usingAsyncIterator)
46
+ : new AsyncFromSyncIterator(getIteratorDirect(getIterator(items, usingSyncIterator)));
49
47
  resolve(toArray(iterator, mapfn, A));
50
48
  });
51
49
  };
@@ -10,18 +10,19 @@ var createProperty = require('../internals/create-property');
10
10
  var setArrayLength = require('../internals/array-set-length');
11
11
  var getIterator = require('../internals/get-iterator');
12
12
  var getIteratorMethod = require('../internals/get-iterator-method');
13
+ var iteratorClose = require('../internals/iterator-close');
13
14
 
14
15
  var $Array = Array;
15
16
 
16
17
  // `Array.from` method implementation
17
18
  // https://tc39.es/ecma262/#sec-array.from
18
19
  module.exports = function from(arrayLike /* , mapfn = undefined, thisArg = undefined */) {
19
- var O = toObject(arrayLike);
20
20
  var IS_CONSTRUCTOR = isConstructor(this);
21
21
  var argumentsLength = arguments.length;
22
22
  var mapfn = argumentsLength > 1 ? arguments[1] : undefined;
23
23
  var mapping = mapfn !== undefined;
24
24
  if (mapping) mapfn = bind(mapfn, argumentsLength > 2 ? arguments[2] : undefined);
25
+ var O = toObject(arrayLike);
25
26
  var iteratorMethod = getIteratorMethod(O);
26
27
  var index = 0;
27
28
  var length, result, step, iterator, next, value;
@@ -32,7 +33,11 @@ module.exports = function from(arrayLike /* , mapfn = undefined, thisArg = undef
32
33
  next = iterator.next;
33
34
  for (;!(step = call(next, iterator)).done; index++) {
34
35
  value = mapping ? callWithSafeIterationClosing(iterator, mapfn, [step.value, index], true) : step.value;
35
- createProperty(result, index, value);
36
+ try {
37
+ createProperty(result, index, value);
38
+ } catch (error) {
39
+ iteratorClose(iterator, 'throw', error);
40
+ }
36
41
  }
37
42
  } else {
38
43
  length = lengthOfArrayLike(O);
@@ -41,19 +41,43 @@ var AsyncFromSyncIterator = function AsyncIterator(iteratorRecord) {
41
41
  AsyncFromSyncIterator.prototype = defineBuiltIns(create(AsyncIteratorPrototype), {
42
42
  next: function next() {
43
43
  var state = getInternalState(this);
44
+ var hasValue = arguments.length > 0;
45
+ var value = hasValue ? arguments[0] : undefined;
44
46
  return new Promise(function (resolve, reject) {
45
- var result = anObject(call(state.next, state.iterator));
47
+ var result = anObject(hasValue ? call(state.next, state.iterator, value) : call(state.next, state.iterator));
46
48
  asyncFromSyncIteratorContinuation(result, resolve, reject, state.iterator, true);
47
49
  });
48
50
  },
49
51
  'return': function () {
50
- var iterator = getInternalState(this).iterator;
52
+ var state = getInternalState(this);
53
+ var iterator = state.iterator;
54
+ var hasValue = arguments.length > 0;
55
+ var value = hasValue ? arguments[0] : undefined;
51
56
  return new Promise(function (resolve, reject) {
52
57
  var $return = getMethod(iterator, 'return');
53
- if ($return === undefined) return resolve(createIterResultObject(undefined, true));
54
- var result = anObject(call($return, iterator));
58
+ if ($return === undefined) return resolve(createIterResultObject(value, true));
59
+ var result = anObject(hasValue ? call($return, iterator, value) : call($return, iterator));
55
60
  asyncFromSyncIteratorContinuation(result, resolve, reject, iterator);
56
61
  });
62
+ },
63
+ 'throw': function () {
64
+ var state = getInternalState(this);
65
+ var iterator = state.iterator;
66
+ var hasValue = arguments.length > 0;
67
+ var value = hasValue ? arguments[0] : undefined;
68
+ return new Promise(function (resolve, reject) {
69
+ var $throw = getMethod(iterator, 'throw');
70
+ if ($throw === undefined) {
71
+ try {
72
+ iteratorClose(iterator, 'normal');
73
+ } catch (error) {
74
+ return reject(error);
75
+ }
76
+ return reject(new TypeError('The iterator does not provide a throw method'));
77
+ }
78
+ var result = anObject(hasValue ? call($throw, iterator, value) : call($throw, iterator));
79
+ asyncFromSyncIteratorContinuation(result, resolve, reject, iterator, true);
80
+ });
57
81
  }
58
82
  });
59
83
 
@@ -1,5 +1,6 @@
1
1
  'use strict';
2
2
  var call = require('../internals/function-call');
3
+ var anObject = require('../internals/an-object');
3
4
  var getBuiltIn = require('../internals/get-built-in');
4
5
  var getMethod = require('../internals/get-method');
5
6
 
@@ -7,13 +8,20 @@ module.exports = function (iterator, method, argument, reject) {
7
8
  try {
8
9
  var returnMethod = getMethod(iterator, 'return');
9
10
  if (returnMethod) {
10
- return getBuiltIn('Promise').resolve(call(returnMethod, iterator)).then(function () {
11
+ return getBuiltIn('Promise').resolve(call(returnMethod, iterator)).then(function (result) {
12
+ try {
13
+ if (method !== reject) anObject(result);
14
+ } catch (error3) {
15
+ reject(error3);
16
+ return;
17
+ }
11
18
  method(argument);
12
19
  }, function (error) {
13
- reject(error);
20
+ method === reject ? method(argument) : reject(error);
14
21
  });
15
22
  }
16
23
  } catch (error2) {
17
- return reject(error2);
24
+ // the original error (`argument`) takes priority over `return()` errors
25
+ return method === reject ? reject(argument) : reject(error2);
18
26
  } method(argument);
19
27
  };
@@ -11,7 +11,6 @@ var getBuiltIn = require('../internals/get-built-in');
11
11
  var getMethod = require('../internals/get-method');
12
12
  var AsyncIteratorPrototype = require('../internals/async-iterator-prototype');
13
13
  var createIterResultObject = require('../internals/create-iter-result-object');
14
- var iteratorClose = require('../internals/iterator-close');
15
14
 
16
15
  var Promise = getBuiltIn('Promise');
17
16
 
@@ -56,27 +55,55 @@ var createAsyncIteratorProxyPrototype = function (IS_ITERATOR) {
56
55
  if (stateCompletion.exit) return state;
57
56
  state.done = true;
58
57
  var iterator = state.iterator;
58
+ var inner = state.inner;
59
59
  var returnMethod, result;
60
- var completion = perform(function () {
61
- if (state.inner) try {
62
- iteratorClose(state.inner.iterator, 'normal');
63
- } catch (error) {
64
- return iteratorClose(iterator, 'throw', error);
60
+ var closeOuterIterator = function () {
61
+ var completion = perform(function () {
62
+ return getMethod(iterator, 'return');
63
+ });
64
+ returnMethod = result = completion.value;
65
+ if (completion.error) return Promise.reject(result);
66
+ if (returnMethod === undefined) return Promise.resolve(createIterResultObject(undefined, true));
67
+ completion = perform(function () {
68
+ return call(returnMethod, iterator);
69
+ });
70
+ result = completion.value;
71
+ if (completion.error) return Promise.reject(result);
72
+ return IS_ITERATOR ? Promise.resolve(result) : Promise.resolve(result).then(function (resolved) {
73
+ anObject(resolved);
74
+ return createIterResultObject(undefined, true);
75
+ });
76
+ };
77
+
78
+ var closeAndReject = function (error) {
79
+ return closeOuterIterator().then(function () {
80
+ throw error;
81
+ }, function () {
82
+ throw error;
83
+ });
84
+ };
85
+
86
+ if (inner) {
87
+ var innerIterator = inner.iterator;
88
+ var innerReturn;
89
+ var completion = perform(function () {
90
+ innerReturn = getMethod(innerIterator, 'return');
91
+ if (innerReturn) return call(innerReturn, innerIterator);
92
+ });
93
+ if (completion.error) return closeAndReject(completion.value);
94
+ if (innerReturn) {
95
+ return Promise.resolve(completion.value).then(function (innerResult) {
96
+ try {
97
+ anObject(innerResult);
98
+ } catch (error) {
99
+ return closeAndReject(error);
100
+ }
101
+ return closeOuterIterator();
102
+ }, closeAndReject);
65
103
  }
66
- return getMethod(iterator, 'return');
67
- });
68
- returnMethod = result = completion.value;
69
- if (completion.error) return Promise.reject(result);
70
- if (returnMethod === undefined) return Promise.resolve(createIterResultObject(undefined, true));
71
- completion = perform(function () {
72
- return call(returnMethod, iterator);
73
- });
74
- result = completion.value;
75
- if (completion.error) return Promise.reject(result);
76
- return IS_ITERATOR ? Promise.resolve(result) : Promise.resolve(result).then(function (resolved) {
77
- anObject(resolved);
78
- return createIterResultObject(undefined, true);
79
- });
104
+ }
105
+
106
+ return closeOuterIterator();
80
107
  }
81
108
  });
82
109
  };
@@ -34,9 +34,11 @@ var createMethod = function (TYPE) {
34
34
 
35
35
  var loop = function () {
36
36
  try {
37
- if (MAPPING) try {
37
+ try {
38
38
  doesNotExceedSafeInteger(counter);
39
- } catch (error5) { ifAbruptCloseAsyncIterator(error5); }
39
+ } catch (error5) {
40
+ return ifAbruptCloseAsyncIterator(error5);
41
+ }
40
42
  Promise.resolve(anObject(call(next, iterator))).then(function (step) {
41
43
  try {
42
44
  if (anObject(step).done) {
@@ -48,7 +50,8 @@ var createMethod = function (TYPE) {
48
50
  var value = step.value;
49
51
  try {
50
52
  if (MAPPING) {
51
- var result = fn(value, counter);
53
+ var index = counter++;
54
+ var result = fn(value, index);
52
55
 
53
56
  var handler = function ($result) {
54
57
  if (IS_FOR_EACH) {
@@ -57,7 +60,7 @@ var createMethod = function (TYPE) {
57
60
  $result ? loop() : closeAsyncIteration(iterator, resolve, false, reject);
58
61
  } else if (IS_TO_ARRAY) {
59
62
  try {
60
- createProperty(target, counter++, $result);
63
+ createProperty(target, index, $result);
61
64
  loop();
62
65
  } catch (error4) { ifAbruptCloseAsyncIterator(error4); }
63
66
  } else {
@@ -23,26 +23,28 @@ var AsyncIteratorProxy = createAsyncIteratorProxy(function (Promise) {
23
23
  closeAsyncIteration(iterator, doneAndReject, error, doneAndReject);
24
24
  };
25
25
 
26
- Promise.resolve(anObject(call(state.next, iterator))).then(function (step) {
27
- try {
28
- if (anObject(step).done) {
29
- state.done = true;
30
- resolve(createIterResultObject(undefined, true));
31
- } else {
32
- var value = step.value;
33
- try {
34
- var result = mapper(value, state.counter++);
26
+ try {
27
+ Promise.resolve(anObject(call(state.next, iterator))).then(function (step) {
28
+ try {
29
+ if (anObject(step).done) {
30
+ state.done = true;
31
+ resolve(createIterResultObject(undefined, true));
32
+ } else {
33
+ var value = step.value;
34
+ try {
35
+ var result = mapper(value, state.counter++);
35
36
 
36
- var handler = function (mapped) {
37
- resolve(createIterResultObject(mapped, false));
38
- };
37
+ var handler = function (mapped) {
38
+ resolve(createIterResultObject(mapped, false));
39
+ };
39
40
 
40
- if (isObject(result)) Promise.resolve(result).then(handler, ifAbruptCloseAsyncIterator);
41
- else handler(result);
42
- } catch (error2) { ifAbruptCloseAsyncIterator(error2); }
43
- }
44
- } catch (error) { doneAndReject(error); }
45
- }, doneAndReject);
41
+ if (isObject(result)) Promise.resolve(result).then(handler, ifAbruptCloseAsyncIterator);
42
+ else handler(result);
43
+ } catch (error2) { ifAbruptCloseAsyncIterator(error2); }
44
+ }
45
+ } catch (error) { doneAndReject(error); }
46
+ }, doneAndReject);
47
+ } catch (error) { doneAndReject(error); }
46
48
  });
47
49
  });
48
50
 
@@ -3,6 +3,6 @@ var $TypeError = TypeError;
3
3
  var MAX_SAFE_INTEGER = 0x1FFFFFFFFFFFFF; // 2 ** 53 - 1 == 9007199254740991
4
4
 
5
5
  module.exports = function (it) {
6
- if (it > MAX_SAFE_INTEGER) throw $TypeError('Maximum allowed index exceeded');
6
+ if (it > MAX_SAFE_INTEGER) throw new $TypeError('Maximum allowed index exceeded');
7
7
  return it;
8
8
  };
@@ -1,5 +1,4 @@
1
1
  'use strict';
2
2
  var userAgent = require('../internals/environment-user-agent');
3
3
 
4
- // eslint-disable-next-line redos/no-vulnerable -- safe
5
- module.exports = /(?:ipad|iphone|ipod).*applewebkit/i.test(userAgent);
4
+ module.exports = /ipad|iphone|ipod/i.test(userAgent) && /applewebkit/i.test(userAgent);
@@ -3,7 +3,7 @@ var fails = require('../internals/fails');
3
3
 
4
4
  module.exports = !fails(function () {
5
5
  // eslint-disable-next-line es/no-function-prototype-bind -- safe
6
- var test = (function () { /* empty */ }).bind();
6
+ var test = function () { /* empty */ }.bind();
7
7
  // eslint-disable-next-line no-prototype-builtins -- safe
8
8
  return typeof test != 'function' || test.hasOwnProperty('prototype');
9
9
  });
@@ -8,7 +8,7 @@ var getDescriptor = DESCRIPTORS && Object.getOwnPropertyDescriptor;
8
8
 
9
9
  var EXISTS = hasOwn(FunctionPrototype, 'name');
10
10
  // additional protection from minified / mangled / dropped function names
11
- var PROPER = EXISTS && (function something() { /* empty */ }).name === 'something';
11
+ var PROPER = EXISTS && function something() { /* empty */ }.name === 'something';
12
12
  var CONFIGURABLE = EXISTS && (!DESCRIPTORS || (DESCRIPTORS && getDescriptor(FunctionPrototype, 'name').configurable));
13
13
 
14
14
  module.exports = {
@@ -29,7 +29,9 @@ module.exports = function (iterable, unboundFunction, options) {
29
29
  var iterator, iterFn, index, length, result, next, step;
30
30
 
31
31
  var stop = function (condition) {
32
- if (iterator) iteratorClose(iterator, 'normal');
32
+ var $iterator = iterator;
33
+ iterator = undefined;
34
+ if ($iterator) iteratorClose($iterator, 'normal');
33
35
  return new Result(true, condition);
34
36
  };
35
37
 
@@ -59,10 +61,13 @@ module.exports = function (iterable, unboundFunction, options) {
59
61
 
60
62
  next = IS_RECORD ? iterable.next : iterator.next;
61
63
  while (!(step = call(next, iterator)).done) {
64
+ // `IteratorValue` errors should propagate without closing the iterator
65
+ var value = step.value;
62
66
  try {
63
- result = callFn(step.value);
67
+ result = callFn(value);
64
68
  } catch (error) {
65
- iteratorClose(iterator, 'throw', error);
69
+ if (iterator) iteratorClose(iterator, 'throw', error);
70
+ else throw error;
66
71
  }
67
72
  if (typeof result == 'object' && result && isPrototypeOf(ResultPrototype, result)) return result;
68
73
  } return new Result(false);
@@ -40,11 +40,13 @@ var createIteratorProxyPrototype = function (IS_ITERATOR) {
40
40
  'return': function () {
41
41
  var state = getInternalState(this);
42
42
  var iterator = state.iterator;
43
+ var done = state.done;
43
44
  state.done = true;
44
45
  if (IS_ITERATOR) {
45
46
  var returnMethod = getMethod(iterator, 'return');
46
47
  return returnMethod ? call(returnMethod, iterator) : createIterResultObject(undefined, true);
47
48
  }
49
+ if (done) return createIterResultObject(undefined, true);
48
50
  if (state.inner) try {
49
51
  iteratorClose(state.inner.iterator, NORMAL);
50
52
  } catch (error) {
@@ -53,7 +55,8 @@ var createIteratorProxyPrototype = function (IS_ITERATOR) {
53
55
  if (state.openIters) try {
54
56
  iteratorCloseAll(state.openIters, NORMAL);
55
57
  } catch (error) {
56
- return iteratorClose(iterator, THROW, error);
58
+ if (iterator) return iteratorClose(iterator, THROW, error);
59
+ throw error;
57
60
  }
58
61
  if (iterator) iteratorClose(iterator, NORMAL);
59
62
  return createIterResultObject(undefined, true);
@@ -23,12 +23,12 @@ var IteratorProxy = createIteratorProxy(function () {
23
23
  while (true) {
24
24
  result = anObject(call(next, iterator));
25
25
  done = this.done = !!result.done;
26
- if (allowPartial && done && buffer.length && buffer.length < windowSize) return createIterResultObject(buffer, false);
26
+ if (allowPartial && done && buffer.length && buffer.length < windowSize) return createIterResultObject(slice(buffer, 0), false);
27
27
  if (done) return createIterResultObject(undefined, true);
28
28
 
29
29
  if (buffer.length === windowSize) this.buffer = buffer = slice(buffer, 1);
30
30
  push(buffer, result.value);
31
- if (buffer.length === windowSize) return createIterResultObject(buffer, false);
31
+ if (buffer.length === windowSize) return createIterResultObject(slice(buffer, 0), false);
32
32
  }
33
33
  }, false, true);
34
34
 
@@ -1,6 +1,7 @@
1
1
  'use strict';
2
2
  var call = require('../internals/function-call');
3
3
  var uncurryThis = require('../internals/function-uncurry-this');
4
+ var anObject = require('../internals/an-object');
4
5
  var createIteratorProxy = require('../internals/iterator-create-proxy');
5
6
  var iteratorCloseAll = require('../internals/iterator-close-all');
6
7
 
@@ -31,7 +32,7 @@ var IteratorProxy = createIteratorProxy(function () {
31
32
  result = padding[i];
32
33
  } else {
33
34
  try {
34
- result = call(iter.next, iter.iterator);
35
+ result = anObject(call(iter.next, iter.iterator));
35
36
  done = result.done;
36
37
  result = result.value;
37
38
  } catch (error) {
@@ -54,12 +55,12 @@ var IteratorProxy = createIteratorProxy(function () {
54
55
  for (var k = 1; k < iterCount; k++) {
55
56
  // eslint-disable-next-line max-depth -- specification case
56
57
  try {
57
- open = call(iters[k].next, iters[k].iterator);
58
+ open = anObject(call(iters[k].next, iters[k].iterator));
58
59
  openDone = open.done;
59
60
  open = open.value;
60
61
  } catch (error) {
61
62
  openIters[k] = undefined;
62
- return iteratorCloseAll(openIters, THROW, open);
63
+ return iteratorCloseAll(openIters, THROW, error);
63
64
  }
64
65
  // eslint-disable-next-line max-depth -- specification case
65
66
  if (openDone) {
@@ -1,4 +1,5 @@
1
1
  'use strict';
2
+ // https://github.com/tc39/proposal-iterator.range
2
3
  var InternalStateModule = require('../internals/internal-state');
3
4
  var createIteratorConstructor = require('../internals/iterator-create-constructor');
4
5
  var createIterResultObject = require('../internals/create-iter-result-object');
@@ -17,6 +18,10 @@ var $RangeError = RangeError;
17
18
  var $TypeError = TypeError;
18
19
 
19
20
  var $RangeIterator = createIteratorConstructor(function NumericRangeIterator(start, end, option, type, zero, one) {
21
+ // eslint-disable-next-line no-self-compare -- NaN check
22
+ if (start !== start || end !== end) {
23
+ throw new $RangeError(INCORRECT_RANGE);
24
+ }
20
25
  // TODO: Drop the first `typeof` check after removing legacy methods in `core-js@4`
21
26
  if (typeof start != type || (end !== Infinity && end !== -Infinity && typeof end != type)) {
22
27
  throw new $TypeError(INCORRECT_RANGE);
@@ -27,7 +32,7 @@ var $RangeIterator = createIteratorConstructor(function NumericRangeIterator(sta
27
32
  var ifIncrease = end > start;
28
33
  var inclusiveEnd = false;
29
34
  var step;
30
- if (option === undefined) {
35
+ if (isNullOrUndefined(option)) {
31
36
  step = undefined;
32
37
  } else if (isObject(option)) {
33
38
  step = option.step;
@@ -43,11 +48,11 @@ var $RangeIterator = createIteratorConstructor(function NumericRangeIterator(sta
43
48
  if (typeof step != type) {
44
49
  throw new $TypeError(INCORRECT_RANGE);
45
50
  }
46
- if (step === Infinity || step === -Infinity || (step === zero && start !== end)) {
51
+ // eslint-disable-next-line no-self-compare -- NaN check
52
+ if (step !== step || step === Infinity || step === -Infinity || (step === zero && start !== end)) {
47
53
  throw new $RangeError(INCORRECT_RANGE);
48
54
  }
49
- // eslint-disable-next-line no-self-compare -- NaN check
50
- var hitsEnd = start !== start || end !== end || step !== step || (end > start) !== (step > zero);
55
+ var hitsEnd = end > start !== step > zero;
51
56
  setInternalState(this, {
52
57
  type: NUMERIC_RANGE_ITERATOR,
53
58
  start: start,