core-js-pure 3.47.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 (124) hide show
  1. package/LICENSE +2 -1
  2. package/README.md +2 -2
  3. package/actual/map/get-or-insert-computed.js +2 -3
  4. package/actual/map/get-or-insert.js +2 -3
  5. package/actual/map/group-by.js +2 -0
  6. package/actual/weak-map/get-or-insert-computed.js +2 -3
  7. package/actual/weak-map/get-or-insert.js +2 -3
  8. package/configurator.js +1 -1
  9. package/es/index.js +4 -0
  10. package/es/map/get-or-insert-computed.js +6 -0
  11. package/es/map/get-or-insert.js +6 -0
  12. package/es/map/group-by.js +2 -0
  13. package/es/map/index.js +2 -0
  14. package/es/object/define-properties.js +2 -2
  15. package/es/object/define-property.js +2 -2
  16. package/es/object/get-own-property-descriptor.js +2 -2
  17. package/es/promise/try.js +2 -2
  18. package/es/weak-map/get-or-insert-computed.js +6 -0
  19. package/es/weak-map/get-or-insert.js +6 -0
  20. package/es/weak-map/index.js +2 -0
  21. package/full/index.js +4 -0
  22. package/internals/a-weak-map.js +1 -1
  23. package/internals/advance-string-index.js +1 -1
  24. package/internals/array-from-async.js +5 -7
  25. package/internals/array-from.js +9 -3
  26. package/internals/array-iteration.js +11 -13
  27. package/internals/array-unique-by.js +3 -3
  28. package/internals/async-from-sync-iterator.js +28 -4
  29. package/internals/async-iterator-close.js +11 -3
  30. package/internals/async-iterator-create-proxy.js +47 -20
  31. package/internals/async-iterator-iteration.js +11 -6
  32. package/internals/async-iterator-map.js +20 -18
  33. package/internals/collection.js +7 -3
  34. package/internals/does-not-exceed-safe-integer.js +1 -1
  35. package/internals/environment-is-ios.js +1 -2
  36. package/internals/flatten-into-array.js +2 -1
  37. package/internals/function-bind-native.js +1 -1
  38. package/internals/function-name.js +1 -1
  39. package/internals/iterate.js +8 -3
  40. package/internals/iterator-create-proxy.js +4 -1
  41. package/internals/iterator-window.js +2 -2
  42. package/internals/iterator-zip.js +4 -3
  43. package/internals/native-raw-json.js +2 -2
  44. package/internals/numeric-range-iterator.js +9 -4
  45. package/internals/set-difference.js +1 -1
  46. package/internals/set-is-disjoint-from.js +1 -1
  47. package/internals/set-is-superset-of.js +1 -1
  48. package/internals/shared-store.js +3 -3
  49. package/internals/string-pad.js +2 -1
  50. package/internals/string-parse.js +1 -1
  51. package/internals/string-repeat.js +2 -1
  52. package/internals/to-uint8-clamped.js +11 -3
  53. package/internals/uint8-from-hex.js +10 -10
  54. package/modules/es.array.concat.js +2 -1
  55. package/modules/es.array.flat-map.js +1 -1
  56. package/modules/es.array.flat.js +2 -1
  57. package/modules/es.array.from-async.js +1 -1
  58. package/modules/es.array.includes.js +7 -1
  59. package/modules/es.array.of.js +2 -1
  60. package/modules/es.array.slice.js +2 -1
  61. package/modules/es.array.sort.js +3 -1
  62. package/modules/es.array.splice.js +1 -1
  63. package/modules/es.array.to-reversed.js +8 -2
  64. package/modules/es.array.to-spliced.js +4 -3
  65. package/modules/es.array.with.js +13 -2
  66. package/modules/es.date.set-year.js +4 -1
  67. package/modules/es.error.is-error.js +1 -1
  68. package/modules/es.escape.js +1 -1
  69. package/modules/es.iterator.concat.js +4 -3
  70. package/modules/es.iterator.flat-map.js +15 -1
  71. package/modules/es.iterator.take.js +7 -2
  72. package/modules/es.iterator.to-array.js +5 -3
  73. package/modules/es.json.parse.js +13 -1
  74. package/modules/es.json.stringify.js +6 -3
  75. package/modules/es.map.get-or-insert-computed.js +24 -0
  76. package/modules/es.map.get-or-insert.js +18 -0
  77. package/modules/es.math.asinh.js +4 -1
  78. package/modules/es.math.atanh.js +2 -2
  79. package/modules/es.math.sum-precise.js +3 -3
  80. package/modules/es.number.to-exponential.js +15 -6
  81. package/modules/es.reflect.construct.js +1 -1
  82. package/modules/es.reflect.define-property.js +10 -0
  83. package/modules/es.reflect.delete-property.js +5 -2
  84. package/modules/es.reflect.get.js +9 -7
  85. package/modules/es.reflect.set.js +14 -9
  86. package/modules/es.string.ends-with.js +1 -1
  87. package/modules/es.string.from-code-point.js +2 -2
  88. package/modules/es.string.match-all.js +1 -1
  89. package/modules/es.string.starts-with.js +1 -1
  90. package/modules/es.string.substr.js +5 -7
  91. package/modules/es.symbol.constructor.js +3 -2
  92. package/modules/es.weak-map.get-or-insert-computed.js +36 -0
  93. package/modules/es.weak-map.get-or-insert.js +18 -0
  94. package/modules/esnext.array.is-template-object.js +1 -1
  95. package/modules/esnext.async-iterator.reduce.js +2 -2
  96. package/modules/esnext.async-iterator.take.js +4 -2
  97. package/modules/esnext.bigint.range.js +1 -1
  98. package/modules/esnext.iterator.range.js +1 -1
  99. package/modules/esnext.iterator.zip-keyed.js +3 -2
  100. package/modules/esnext.iterator.zip.js +4 -3
  101. package/modules/esnext.map.get-or-insert-computed.js +2 -24
  102. package/modules/esnext.map.get-or-insert.js +2 -18
  103. package/modules/esnext.number.from-string.js +30 -3
  104. package/modules/esnext.number.range.js +1 -1
  105. package/modules/esnext.observable.from.js +5 -2
  106. package/modules/esnext.string.dedent.js +1 -1
  107. package/modules/esnext.weak-map.get-or-insert-computed.js +2 -35
  108. package/modules/esnext.weak-map.get-or-insert.js +2 -18
  109. package/modules/web.atob.js +15 -6
  110. package/modules/web.btoa.js +10 -3
  111. package/modules/web.structured-clone.js +2 -2
  112. package/modules/web.url-search-params.constructor.js +25 -10
  113. package/modules/web.url.constructor.js +55 -26
  114. package/modules/web.url.parse.js +1 -1
  115. package/package.json +5 -1
  116. package/stable/index.js +4 -0
  117. package/stable/map/get-or-insert-computed.js +4 -0
  118. package/stable/map/get-or-insert.js +4 -0
  119. package/stable/weak-map/get-or-insert-computed.js +4 -0
  120. package/stable/weak-map/get-or-insert.js +4 -0
  121. package/stage/3.js +0 -1
  122. package/stage/4.js +1 -0
  123. package/internals/array-to-reversed.js +0 -12
  124. package/internals/array-with.js +0 -18
package/LICENSE CHANGED
@@ -1,4 +1,5 @@
1
- Copyright (c) 2014-2025 Denis Pushkarev, 2025 CoreJS Company
1
+ Copyright (c) 2013–2025 Denis Pushkarev (zloirock.ru)
2
+ Copyright (c) 2025–2026 CoreJS Company (core-js.io)
2
3
 
3
4
  Permission is hereby granted, free of charge, to any person obtaining a copy
4
5
  of this software and associated documentation files (the "Software"), to deal
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 version without global namespace pollution (the third example), for more info see [`core-js` documentation](https://github.com/zloirock/core-js/blob/master/README.md)**.
95
+ **It's a version without global namespace pollution (the third example), for more info see [`core-js` documentation](https://core-js.io)**.
@@ -1,6 +1,5 @@
1
1
  'use strict';
2
- require('../../modules/es.map');
2
+ var parent = require('../../stable/map/get-or-insert-computed');
3
3
  require('../../modules/esnext.map.get-or-insert-computed');
4
- var entryUnbind = require('../../internals/entry-unbind');
5
4
 
6
- module.exports = entryUnbind('Map', 'getOrInsertComputed');
5
+ module.exports = parent;
@@ -1,6 +1,5 @@
1
1
  'use strict';
2
- require('../../modules/es.map');
2
+ var parent = require('../../stable/map/get-or-insert');
3
3
  require('../../modules/esnext.map.get-or-insert');
4
- var entryUnbind = require('../../internals/entry-unbind');
5
4
 
6
- module.exports = entryUnbind('Map', 'getOrInsert');
5
+ module.exports = parent;
@@ -1,5 +1,7 @@
1
1
  'use strict';
2
2
  var parent = require('../../stable/map/group-by');
3
3
  require('../../modules/esnext.map.group-by');
4
+ require('../../modules/esnext.map.get-or-insert');
5
+ require('../../modules/esnext.map.get-or-insert-computed');
4
6
 
5
7
  module.exports = parent;
@@ -1,6 +1,5 @@
1
1
  'use strict';
2
- require('../../modules/es.weak-map');
2
+ var parent = require('../../stable/weak-map/get-or-insert-computed');
3
3
  require('../../modules/esnext.weak-map.get-or-insert-computed');
4
- var entryUnbind = require('../../internals/entry-unbind');
5
4
 
6
- module.exports = entryUnbind('WeakMap', 'getOrInsertComputed');
5
+ module.exports = parent;
@@ -1,6 +1,5 @@
1
1
  'use strict';
2
- require('../../modules/es.weak-map');
2
+ var parent = require('../../stable/weak-map/get-or-insert');
3
3
  require('../../modules/esnext.weak-map.get-or-insert');
4
- var entryUnbind = require('../../internals/entry-unbind');
5
4
 
6
- module.exports = entryUnbind('WeakMap', 'getOrInsert');
5
+ module.exports = parent;
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);
package/es/index.js CHANGED
@@ -105,6 +105,8 @@ require('../modules/es.json.stringify');
105
105
  require('../modules/es.json.to-string-tag');
106
106
  require('../modules/es.map');
107
107
  require('../modules/es.map.group-by');
108
+ require('../modules/es.map.get-or-insert');
109
+ require('../modules/es.map.get-or-insert-computed');
108
110
  require('../modules/es.math.acosh');
109
111
  require('../modules/es.math.asinh');
110
112
  require('../modules/es.math.atanh');
@@ -291,6 +293,8 @@ require('../modules/es.uint8-array.to-base64');
291
293
  require('../modules/es.uint8-array.to-hex');
292
294
  require('../modules/es.unescape');
293
295
  require('../modules/es.weak-map');
296
+ require('../modules/es.weak-map.get-or-insert');
297
+ require('../modules/es.weak-map.get-or-insert-computed');
294
298
  require('../modules/es.weak-set');
295
299
 
296
300
  module.exports = require('../internals/path');
@@ -0,0 +1,6 @@
1
+ 'use strict';
2
+ require('../../modules/es.map');
3
+ require('../../modules/es.map.get-or-insert-computed');
4
+ var entryUnbind = require('../../internals/entry-unbind');
5
+
6
+ module.exports = entryUnbind('Map', 'getOrInsertComputed');
@@ -0,0 +1,6 @@
1
+ 'use strict';
2
+ require('../../modules/es.map');
3
+ require('../../modules/es.map.get-or-insert');
4
+ var entryUnbind = require('../../internals/entry-unbind');
5
+
6
+ module.exports = entryUnbind('Map', 'getOrInsert');
@@ -2,6 +2,8 @@
2
2
  require('../../modules/es.object.to-string');
3
3
  require('../../modules/es.map');
4
4
  require('../../modules/es.map.group-by');
5
+ require('../../modules/es.map.get-or-insert');
6
+ require('../../modules/es.map.get-or-insert-computed');
5
7
  var path = require('../../internals/path');
6
8
 
7
9
  module.exports = path.Map.groupBy;
package/es/map/index.js CHANGED
@@ -2,6 +2,8 @@
2
2
  require('../../modules/es.array.iterator');
3
3
  require('../../modules/es.map');
4
4
  require('../../modules/es.map.group-by');
5
+ require('../../modules/es.map.get-or-insert');
6
+ require('../../modules/es.map.get-or-insert-computed');
5
7
  require('../../modules/es.object.to-string');
6
8
  require('../../modules/es.string.iterator');
7
9
  var path = require('../../internals/path');
@@ -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'];
@@ -0,0 +1,6 @@
1
+ 'use strict';
2
+ require('../../modules/es.weak-map');
3
+ require('../../modules/es.weak-map.get-or-insert-computed');
4
+ var entryUnbind = require('../../internals/entry-unbind');
5
+
6
+ module.exports = entryUnbind('WeakMap', 'getOrInsertComputed');
@@ -0,0 +1,6 @@
1
+ 'use strict';
2
+ require('../../modules/es.weak-map');
3
+ require('../../modules/es.weak-map.get-or-insert');
4
+ var entryUnbind = require('../../internals/entry-unbind');
5
+
6
+ module.exports = entryUnbind('WeakMap', 'getOrInsert');
@@ -2,6 +2,8 @@
2
2
  require('../../modules/es.array.iterator');
3
3
  require('../../modules/es.object.to-string');
4
4
  require('../../modules/es.weak-map');
5
+ require('../../modules/es.weak-map.get-or-insert');
6
+ require('../../modules/es.weak-map.get-or-insert-computed');
5
7
  var path = require('../../internals/path');
6
8
 
7
9
  module.exports = path.WeakMap;
package/full/index.js CHANGED
@@ -105,6 +105,8 @@ require('../modules/es.json.stringify');
105
105
  require('../modules/es.json.to-string-tag');
106
106
  require('../modules/es.map');
107
107
  require('../modules/es.map.group-by');
108
+ require('../modules/es.map.get-or-insert');
109
+ require('../modules/es.map.get-or-insert-computed');
108
110
  require('../modules/es.math.acosh');
109
111
  require('../modules/es.math.asinh');
110
112
  require('../modules/es.math.atanh');
@@ -291,6 +293,8 @@ require('../modules/es.uint8-array.to-base64');
291
293
  require('../modules/es.uint8-array.to-hex');
292
294
  require('../modules/es.unescape');
293
295
  require('../modules/es.weak-map');
296
+ require('../modules/es.weak-map.get-or-insert');
297
+ require('../modules/es.weak-map.get-or-insert-computed');
294
298
  require('../modules/es.weak-set');
295
299
  require('../modules/esnext.aggregate-error');
296
300
  require('../modules/esnext.suppressed-error.constructor');
@@ -5,6 +5,6 @@ var $TypeError = TypeError;
5
5
 
6
6
  // Perform ? RequireInternalSlot(M, [[WeakMapData]])
7
7
  module.exports = function (it) {
8
- if (typeof it == 'object' && 'has' in it && 'get' in it && 'set' in it && 'delete') return it;
8
+ if (typeof it == 'object' && 'has' in it && 'get' in it && 'set' in it && 'delete' in it) return it;
9
9
  throw new $TypeError(tryToString(it) + ' is not a weakmap');
10
10
  };
@@ -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
  };
@@ -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
  };
@@ -7,20 +7,22 @@ var isArrayIteratorMethod = require('../internals/is-array-iterator-method');
7
7
  var isConstructor = require('../internals/is-constructor');
8
8
  var lengthOfArrayLike = require('../internals/length-of-array-like');
9
9
  var createProperty = require('../internals/create-property');
10
+ var setArrayLength = require('../internals/array-set-length');
10
11
  var getIterator = require('../internals/get-iterator');
11
12
  var getIteratorMethod = require('../internals/get-iterator-method');
13
+ var iteratorClose = require('../internals/iterator-close');
12
14
 
13
15
  var $Array = Array;
14
16
 
15
17
  // `Array.from` method implementation
16
18
  // https://tc39.es/ecma262/#sec-array.from
17
19
  module.exports = function from(arrayLike /* , mapfn = undefined, thisArg = undefined */) {
18
- var O = toObject(arrayLike);
19
20
  var IS_CONSTRUCTOR = isConstructor(this);
20
21
  var argumentsLength = arguments.length;
21
22
  var mapfn = argumentsLength > 1 ? arguments[1] : undefined;
22
23
  var mapping = mapfn !== undefined;
23
24
  if (mapping) mapfn = bind(mapfn, argumentsLength > 2 ? arguments[2] : undefined);
25
+ var O = toObject(arrayLike);
24
26
  var iteratorMethod = getIteratorMethod(O);
25
27
  var index = 0;
26
28
  var length, result, step, iterator, next, value;
@@ -31,7 +33,11 @@ module.exports = function from(arrayLike /* , mapfn = undefined, thisArg = undef
31
33
  next = iterator.next;
32
34
  for (;!(step = call(next, iterator)).done; index++) {
33
35
  value = mapping ? callWithSafeIterationClosing(iterator, mapfn, [step.value, index], true) : step.value;
34
- createProperty(result, index, value);
36
+ try {
37
+ createProperty(result, index, value);
38
+ } catch (error) {
39
+ iteratorClose(iterator, 'throw', error);
40
+ }
35
41
  }
36
42
  } else {
37
43
  length = lengthOfArrayLike(O);
@@ -41,6 +47,6 @@ module.exports = function from(arrayLike /* , mapfn = undefined, thisArg = undef
41
47
  createProperty(result, index, value);
42
48
  }
43
49
  }
44
- result.length = index;
50
+ setArrayLength(result, index);
45
51
  return result;
46
52
  };
@@ -1,12 +1,10 @@
1
1
  'use strict';
2
2
  var bind = require('../internals/function-bind-context');
3
- var uncurryThis = require('../internals/function-uncurry-this');
4
3
  var IndexedObject = require('../internals/indexed-object');
5
4
  var toObject = require('../internals/to-object');
6
5
  var lengthOfArrayLike = require('../internals/length-of-array-like');
7
6
  var arraySpeciesCreate = require('../internals/array-species-create');
8
-
9
- var push = uncurryThis([].push);
7
+ var createProperty = require('../internals/create-property');
10
8
 
11
9
  // `Array.prototype.{ forEach, map, filter, some, every, find, findIndex, filterReject }` methods implementation
12
10
  var createMethod = function (TYPE) {
@@ -17,28 +15,28 @@ var createMethod = function (TYPE) {
17
15
  var IS_FIND_INDEX = TYPE === 6;
18
16
  var IS_FILTER_REJECT = TYPE === 7;
19
17
  var NO_HOLES = TYPE === 5 || IS_FIND_INDEX;
20
- return function ($this, callbackfn, that, specificCreate) {
18
+ return function ($this, callbackfn, that) {
21
19
  var O = toObject($this);
22
20
  var self = IndexedObject(O);
23
21
  var length = lengthOfArrayLike(self);
24
22
  var boundFunction = bind(callbackfn, that);
25
23
  var index = 0;
26
- var create = specificCreate || arraySpeciesCreate;
27
- var target = IS_MAP ? create($this, length) : IS_FILTER || IS_FILTER_REJECT ? create($this, 0) : undefined;
24
+ var resIndex = 0;
25
+ var target = IS_MAP ? arraySpeciesCreate($this, length) : IS_FILTER || IS_FILTER_REJECT ? arraySpeciesCreate($this, 0) : undefined;
28
26
  var value, result;
29
27
  for (;length > index; index++) if (NO_HOLES || index in self) {
30
28
  value = self[index];
31
29
  result = boundFunction(value, index, O);
32
30
  if (TYPE) {
33
- if (IS_MAP) target[index] = result; // map
31
+ if (IS_MAP) createProperty(target, index, result); // map
34
32
  else if (result) switch (TYPE) {
35
- case 3: return true; // some
36
- case 5: return value; // find
37
- case 6: return index; // findIndex
38
- case 2: push(target, value); // filter
33
+ case 3: return true; // some
34
+ case 5: return value; // find
35
+ case 6: return index; // findIndex
36
+ case 2: createProperty(target, resIndex++, value); // filter
39
37
  } else switch (TYPE) {
40
- case 4: return false; // every
41
- case 7: push(target, value); // filterReject
38
+ case 4: return false; // every
39
+ case 7: createProperty(target, resIndex++, value); // filterReject
42
40
  }
43
41
  }
44
42
  }
@@ -1,16 +1,15 @@
1
1
  'use strict';
2
- var uncurryThis = require('../internals/function-uncurry-this');
3
2
  var aCallable = require('../internals/a-callable');
4
3
  var isNullOrUndefined = require('../internals/is-null-or-undefined');
5
4
  var lengthOfArrayLike = require('../internals/length-of-array-like');
6
5
  var toObject = require('../internals/to-object');
6
+ var createProperty = require('../internals/create-property');
7
7
  var MapHelpers = require('../internals/map-helpers');
8
8
  var iterate = require('../internals/map-iterate');
9
9
 
10
10
  var Map = MapHelpers.Map;
11
11
  var mapHas = MapHelpers.has;
12
12
  var mapSet = MapHelpers.set;
13
- var push = uncurryThis([].push);
14
13
 
15
14
  // `Array.prototype.uniqueBy` method
16
15
  // https://github.com/tc39/proposal-array-unique
@@ -28,8 +27,9 @@ module.exports = function uniqueBy(resolver) {
28
27
  key = resolverFunction(item);
29
28
  if (!mapHas(map, key)) mapSet(map, key, item);
30
29
  }
30
+ index = 0;
31
31
  iterate(map, function (value) {
32
- push(result, value);
32
+ createProperty(result, index++, value);
33
33
  });
34
34
  return result;
35
35
  };
@@ -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
  };
@@ -7,6 +7,8 @@ var anObject = require('../internals/an-object');
7
7
  var isObject = require('../internals/is-object');
8
8
  var doesNotExceedSafeInteger = require('../internals/does-not-exceed-safe-integer');
9
9
  var getBuiltIn = require('../internals/get-built-in');
10
+ var createProperty = require('../internals/create-property');
11
+ var setArrayLength = require('../internals/array-set-length');
10
12
  var getIteratorDirect = require('../internals/get-iterator-direct');
11
13
  var closeAsyncIteration = require('../internals/async-iterator-close');
12
14
 
@@ -32,21 +34,24 @@ var createMethod = function (TYPE) {
32
34
 
33
35
  var loop = function () {
34
36
  try {
35
- if (MAPPING) try {
37
+ try {
36
38
  doesNotExceedSafeInteger(counter);
37
- } catch (error5) { ifAbruptCloseAsyncIterator(error5); }
39
+ } catch (error5) {
40
+ return ifAbruptCloseAsyncIterator(error5);
41
+ }
38
42
  Promise.resolve(anObject(call(next, iterator))).then(function (step) {
39
43
  try {
40
44
  if (anObject(step).done) {
41
45
  if (IS_TO_ARRAY) {
42
- target.length = counter;
46
+ setArrayLength(target, counter);
43
47
  resolve(target);
44
48
  } else resolve(IS_SOME ? false : IS_EVERY || undefined);
45
49
  } else {
46
50
  var value = step.value;
47
51
  try {
48
52
  if (MAPPING) {
49
- var result = fn(value, counter);
53
+ var index = counter++;
54
+ var result = fn(value, index);
50
55
 
51
56
  var handler = function ($result) {
52
57
  if (IS_FOR_EACH) {
@@ -55,7 +60,7 @@ var createMethod = function (TYPE) {
55
60
  $result ? loop() : closeAsyncIteration(iterator, resolve, false, reject);
56
61
  } else if (IS_TO_ARRAY) {
57
62
  try {
58
- target[counter++] = $result;
63
+ createProperty(target, index, $result);
59
64
  loop();
60
65
  } catch (error4) { ifAbruptCloseAsyncIterator(error4); }
61
66
  } else {
@@ -66,7 +71,7 @@ var createMethod = function (TYPE) {
66
71
  if (isObject(result)) Promise.resolve(result).then(handler, ifAbruptCloseAsyncIterator);
67
72
  else handler(result);
68
73
  } else {
69
- target[counter++] = value;
74
+ createProperty(target, counter++, value);
70
75
  loop();
71
76
  }
72
77
  } catch (error3) { ifAbruptCloseAsyncIterator(error3); }