core-js-pure 3.16.2 → 3.17.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 (82) hide show
  1. package/es/array/at.js +4 -0
  2. package/es/array/index.js +1 -0
  3. package/es/array/virtual/at.js +4 -0
  4. package/es/array/virtual/index.js +1 -0
  5. package/es/index.js +4 -0
  6. package/es/instance/at.js +13 -0
  7. package/es/object/has-own.js +4 -0
  8. package/es/object/index.js +1 -0
  9. package/es/string/at.js +4 -0
  10. package/es/string/index.js +1 -0
  11. package/es/string/virtual/at.js +4 -0
  12. package/es/string/virtual/index.js +1 -0
  13. package/es/typed-array/at.js +1 -0
  14. package/es/typed-array/methods.js +1 -0
  15. package/features/array/at.js +4 -2
  16. package/features/array/index.js +1 -0
  17. package/features/array/virtual/at.js +4 -2
  18. package/features/array/virtual/index.js +1 -0
  19. package/features/bigint/index.js +1 -0
  20. package/features/bigint/range.js +1 -0
  21. package/features/index.js +4 -0
  22. package/features/number/index.js +1 -0
  23. package/features/object/has-own.js +4 -2
  24. package/features/object/index.js +1 -0
  25. package/features/string/at.js +3 -2
  26. package/features/string/virtual/at.js +2 -0
  27. package/features/string/virtual/index.js +1 -2
  28. package/features/typed-array/at.js +5 -0
  29. package/features/typed-array/index.js +1 -0
  30. package/features/typed-array/methods.js +1 -0
  31. package/internals/array-from.js +2 -1
  32. package/internals/async-from-sync-iterator.js +60 -0
  33. package/internals/async-iterator-create-proxy.js +34 -25
  34. package/internals/call-with-safe-iteration-closing.js +1 -2
  35. package/internals/export.js +3 -3
  36. package/internals/get-async-iterator.js +15 -0
  37. package/internals/get-iterator.js +2 -2
  38. package/internals/get-method.js +7 -0
  39. package/internals/is-data-descriptor.js +5 -0
  40. package/internals/iterate.js +4 -4
  41. package/internals/iterator-close.js +17 -4
  42. package/internals/iterator-create-proxy.js +20 -17
  43. package/internals/shared.js +1 -1
  44. package/modules/es.array.at.js +20 -0
  45. package/modules/es.object.has-own.js +8 -0
  46. package/modules/es.reflect.get.js +4 -5
  47. package/modules/es.reflect.set.js +8 -6
  48. package/modules/es.string.at-alternative.js +23 -0
  49. package/modules/es.typed-array.at.js +1 -0
  50. package/modules/esnext.array.at.js +2 -20
  51. package/modules/esnext.async-iterator.as-indexed-pairs.js +2 -2
  52. package/modules/esnext.async-iterator.drop.js +2 -2
  53. package/modules/esnext.async-iterator.filter.js +2 -2
  54. package/modules/esnext.async-iterator.flat-map.js +7 -10
  55. package/modules/esnext.async-iterator.from.js +20 -11
  56. package/modules/esnext.async-iterator.map.js +2 -2
  57. package/modules/esnext.async-iterator.take.js +2 -2
  58. package/modules/esnext.iterator.as-indexed-pairs.js +2 -2
  59. package/modules/esnext.iterator.drop.js +2 -2
  60. package/modules/esnext.iterator.filter.js +2 -2
  61. package/modules/esnext.iterator.flat-map.js +3 -4
  62. package/modules/esnext.iterator.from.js +4 -4
  63. package/modules/esnext.iterator.map.js +2 -2
  64. package/modules/esnext.iterator.take.js +3 -3
  65. package/modules/esnext.object.has-own.js +2 -8
  66. package/modules/esnext.observable.js +1 -4
  67. package/modules/esnext.string.at-alternative.js +2 -24
  68. package/modules/web.url-search-params.js +1 -1
  69. package/modules/web.url.js +15 -15
  70. package/package.json +2 -2
  71. package/postinstall.js +0 -1
  72. package/proposals/accessible-object-hasownproperty.js +1 -0
  73. package/proposals/relative-indexing-method.js +2 -2
  74. package/stable/array/at.js +3 -0
  75. package/stable/array/virtual/at.js +3 -0
  76. package/stable/index.js +4 -0
  77. package/stable/instance/at.js +3 -0
  78. package/stable/object/has-own.js +3 -0
  79. package/stable/string/at.js +3 -0
  80. package/stable/string/virtual/at.js +3 -0
  81. package/stable/typed-array/at.js +3 -0
  82. package/internals/get-async-iterator-method.js +0 -9
package/es/array/at.js ADDED
@@ -0,0 +1,4 @@
1
+ require('../../modules/es.array.at');
2
+ var entryUnbind = require('../../internals/entry-unbind');
3
+
4
+ module.exports = entryUnbind('Array', 'at');
package/es/array/index.js CHANGED
@@ -1,6 +1,7 @@
1
1
  require('../../modules/es.array.from');
2
2
  require('../../modules/es.array.is-array');
3
3
  require('../../modules/es.array.of');
4
+ require('../../modules/es.array.at');
4
5
  require('../../modules/es.array.concat');
5
6
  require('../../modules/es.array.copy-within');
6
7
  require('../../modules/es.array.every');
@@ -0,0 +1,4 @@
1
+ require('../../../modules/es.array.at');
2
+ var entryVirtual = require('../../../internals/entry-virtual');
3
+
4
+ module.exports = entryVirtual('Array').at;
@@ -1,3 +1,4 @@
1
+ require('../../../modules/es.array.at');
1
2
  require('../../../modules/es.array.concat');
2
3
  require('../../../modules/es.array.copy-within');
3
4
  require('../../../modules/es.array.every');
package/es/index.js CHANGED
@@ -14,6 +14,7 @@ require('../modules/es.symbol.to-primitive');
14
14
  require('../modules/es.symbol.to-string-tag');
15
15
  require('../modules/es.symbol.unscopables');
16
16
  require('../modules/es.aggregate-error');
17
+ require('../modules/es.array.at');
17
18
  require('../modules/es.array.concat');
18
19
  require('../modules/es.array.copy-within');
19
20
  require('../modules/es.array.every');
@@ -106,6 +107,7 @@ require('../modules/es.object.get-own-property-descriptor');
106
107
  require('../modules/es.object.get-own-property-descriptors');
107
108
  require('../modules/es.object.get-own-property-names');
108
109
  require('../modules/es.object.get-prototype-of');
110
+ require('../modules/es.object.has-own');
109
111
  require('../modules/es.object.is');
110
112
  require('../modules/es.object.is-extensible');
111
113
  require('../modules/es.object.is-frozen');
@@ -146,6 +148,7 @@ require('../modules/es.regexp.sticky');
146
148
  require('../modules/es.regexp.test');
147
149
  require('../modules/es.regexp.to-string');
148
150
  require('../modules/es.set');
151
+ require('../modules/es.string.at-alternative');
149
152
  require('../modules/es.string.code-point-at');
150
153
  require('../modules/es.string.ends-with');
151
154
  require('../modules/es.string.from-code-point');
@@ -188,6 +191,7 @@ require('../modules/es.typed-array.uint8-array');
188
191
  require('../modules/es.typed-array.uint8-clamped-array');
189
192
  require('../modules/es.typed-array.uint16-array');
190
193
  require('../modules/es.typed-array.uint32-array');
194
+ require('../modules/es.typed-array.at');
191
195
  require('../modules/es.typed-array.copy-within');
192
196
  require('../modules/es.typed-array.every');
193
197
  require('../modules/es.typed-array.fill');
@@ -0,0 +1,13 @@
1
+ var arrayAt = require('../array/virtual/at');
2
+ var stringAt = require('../string/virtual/at');
3
+
4
+ var ArrayPrototype = Array.prototype;
5
+ var StringPrototype = String.prototype;
6
+
7
+ module.exports = function (it) {
8
+ var own = it.at;
9
+ if (it === ArrayPrototype || (it instanceof Array && own === ArrayPrototype.at)) return arrayAt;
10
+ if (typeof it === 'string' || it === StringPrototype || (it instanceof String && own === StringPrototype.at)) {
11
+ return stringAt;
12
+ } return own;
13
+ };
@@ -0,0 +1,4 @@
1
+ require('../../modules/es.object.has-own');
2
+ var path = require('../../internals/path');
3
+
4
+ module.exports = path.Object.hasOwn;
@@ -10,6 +10,7 @@ require('../../modules/es.object.get-own-property-descriptor');
10
10
  require('../../modules/es.object.get-own-property-descriptors');
11
11
  require('../../modules/es.object.get-own-property-names');
12
12
  require('../../modules/es.object.get-prototype-of');
13
+ require('../../modules/es.object.has-own');
13
14
  require('../../modules/es.object.is');
14
15
  require('../../modules/es.object.is-extensible');
15
16
  require('../../modules/es.object.is-frozen');
@@ -0,0 +1,4 @@
1
+ require('../../modules/es.string.at-alternative');
2
+ var entryUnbind = require('../../internals/entry-unbind');
3
+
4
+ module.exports = entryUnbind('String', 'at');
@@ -3,6 +3,7 @@ require('../../modules/es.regexp.exec');
3
3
  require('../../modules/es.string.from-code-point');
4
4
  require('../../modules/es.string.raw');
5
5
  require('../../modules/es.string.code-point-at');
6
+ require('../../modules/es.string.at-alternative');
6
7
  require('../../modules/es.string.ends-with');
7
8
  require('../../modules/es.string.includes');
8
9
  require('../../modules/es.string.match');
@@ -0,0 +1,4 @@
1
+ require('../../../modules/es.string.at-alternative');
2
+ var entryVirtual = require('../../../internals/entry-virtual');
3
+
4
+ module.exports = entryVirtual('String').at;
@@ -1,5 +1,6 @@
1
1
  require('../../../modules/es.object.to-string');
2
2
  require('../../../modules/es.regexp.exec');
3
+ require('../../../modules/es.string.at-alternative');
3
4
  require('../../../modules/es.string.code-point-at');
4
5
  require('../../../modules/es.string.ends-with');
5
6
  require('../../../modules/es.string.includes');
@@ -0,0 +1 @@
1
+ require('../../modules/es.typed-array.at');
@@ -2,6 +2,7 @@ require('../../modules/es.object.to-string');
2
2
  require('../../modules/es.string.iterator');
3
3
  require('../../modules/es.typed-array.from');
4
4
  require('../../modules/es.typed-array.of');
5
+ require('../../modules/es.typed-array.at');
5
6
  require('../../modules/es.typed-array.copy-within');
6
7
  require('../../modules/es.typed-array.every');
7
8
  require('../../modules/es.typed-array.fill');
@@ -1,4 +1,6 @@
1
+ var parent = require('../../stable/array/at');
2
+
3
+ // TODO: Remove from `core-js@4`
1
4
  require('../../modules/esnext.array.at');
2
- var entryUnbind = require('../../internals/entry-unbind');
3
5
 
4
- module.exports = entryUnbind('Array', 'at');
6
+ module.exports = parent;
@@ -1,5 +1,6 @@
1
1
  var parent = require('../../stable/array');
2
2
  require('../../modules/es.map');
3
+ // TODO: Remove from `core-js@4`
3
4
  require('../../modules/esnext.array.at');
4
5
  // TODO: Remove from `core-js@4`
5
6
  require('../../modules/esnext.array.filter-out');
@@ -1,4 +1,6 @@
1
+ var parent = require('../../../stable/array/virtual/at');
2
+
3
+ // TODO: Remove from `core-js@4`
1
4
  require('../../../modules/esnext.array.at');
2
- var entryVirtual = require('../../../internals/entry-virtual');
3
5
 
4
- module.exports = entryVirtual('Array').at;
6
+ module.exports = parent;
@@ -1,5 +1,6 @@
1
1
  var parent = require('../../../stable/array/virtual');
2
2
  require('../../../modules/es.map');
3
+ // TODO: Remove from `core-js@4`
3
4
  require('../../../modules/esnext.array.at');
4
5
  // TODO: Remove from `core-js@4`
5
6
  require('../../../modules/esnext.array.filter-out');
@@ -1,3 +1,4 @@
1
+ require('../../modules/es.object.to-string');
1
2
  require('../../modules/esnext.bigint.range');
2
3
  var BigInt = require('../../internals/path').BigInt;
3
4
 
@@ -1,3 +1,4 @@
1
+ require('../../modules/es.object.to-string');
1
2
  require('../../modules/esnext.bigint.range');
2
3
  var BigInt = require('../../internals/path').BigInt;
3
4
 
package/features/index.js CHANGED
@@ -14,6 +14,7 @@ require('../modules/es.symbol.to-primitive');
14
14
  require('../modules/es.symbol.to-string-tag');
15
15
  require('../modules/es.symbol.unscopables');
16
16
  require('../modules/es.aggregate-error');
17
+ require('../modules/es.array.at');
17
18
  require('../modules/es.array.concat');
18
19
  require('../modules/es.array.copy-within');
19
20
  require('../modules/es.array.every');
@@ -106,6 +107,7 @@ require('../modules/es.object.get-own-property-descriptor');
106
107
  require('../modules/es.object.get-own-property-descriptors');
107
108
  require('../modules/es.object.get-own-property-names');
108
109
  require('../modules/es.object.get-prototype-of');
110
+ require('../modules/es.object.has-own');
109
111
  require('../modules/es.object.is');
110
112
  require('../modules/es.object.is-extensible');
111
113
  require('../modules/es.object.is-frozen');
@@ -146,6 +148,7 @@ require('../modules/es.regexp.sticky');
146
148
  require('../modules/es.regexp.test');
147
149
  require('../modules/es.regexp.to-string');
148
150
  require('../modules/es.set');
151
+ require('../modules/es.string.at-alternative');
149
152
  require('../modules/es.string.code-point-at');
150
153
  require('../modules/es.string.ends-with');
151
154
  require('../modules/es.string.from-code-point');
@@ -188,6 +191,7 @@ require('../modules/es.typed-array.uint8-array');
188
191
  require('../modules/es.typed-array.uint8-clamped-array');
189
192
  require('../modules/es.typed-array.uint16-array');
190
193
  require('../modules/es.typed-array.uint32-array');
194
+ require('../modules/es.typed-array.at');
191
195
  require('../modules/es.typed-array.copy-within');
192
196
  require('../modules/es.typed-array.every');
193
197
  require('../modules/es.typed-array.fill');
@@ -2,5 +2,6 @@ var parent = require('../../stable/number');
2
2
 
3
3
  module.exports = parent;
4
4
 
5
+ require('../../modules/es.object.to-string');
5
6
  require('../../modules/esnext.number.from-string');
6
7
  require('../../modules/esnext.number.range');
@@ -1,4 +1,6 @@
1
+ var parent = require('../../stable/object/has-own');
2
+
3
+ // TODO: Remove from `core-js@4`
1
4
  require('../../modules/esnext.object.has-own');
2
- var path = require('../../internals/path');
3
5
 
4
- module.exports = path.Object.hasOwn;
6
+ module.exports = parent;
@@ -1,4 +1,5 @@
1
1
  var parent = require('../../stable/object');
2
+ // TODO: Remove from `core-js@4`
2
3
  require('../../modules/esnext.object.has-own');
3
4
  require('../../modules/esnext.object.iterate-entries');
4
5
  require('../../modules/esnext.object.iterate-keys');
@@ -1,4 +1,5 @@
1
+ require('../../stable/string/at');
2
+ // TODO: Remove from `core-js@4`
1
3
  require('../../modules/esnext.string.at');
2
- var entryUnbind = require('../../internals/entry-unbind');
3
4
 
4
- module.exports = entryUnbind('String', 'at');
5
+ module.exports = require('../../internals/entry-unbind')('String', 'at');
@@ -1,3 +1,5 @@
1
+ require('../../../stable/string/virtual/at');
2
+ // TODO: Remove from `core-js@4`
1
3
  require('../../../modules/esnext.string.at');
2
4
  var entryVirtual = require('../../../internals/entry-virtual');
3
5
 
@@ -1,7 +1,6 @@
1
1
  var parent = require('../../../stable/string/virtual');
2
+ // TODO: remove from `core-js@4`
2
3
  require('../../../modules/esnext.string.at');
3
- // TODO: disabled by default because of the conflict with another proposal
4
- // require('../../../modules/esnext.string.at-alternative');
5
4
  require('../../../modules/esnext.string.code-points');
6
5
  // TODO: remove from `core-js@4`
7
6
  require('../../../modules/esnext.string.match-all');
@@ -1 +1,6 @@
1
+ var parent = require('../../stable/typed-array/every');
2
+
3
+ // TODO: Remove from `core-js@4`
1
4
  require('../../modules/esnext.typed-array.at');
5
+
6
+ module.exports = parent;
@@ -1,5 +1,6 @@
1
1
  var parent = require('../../stable/typed-array');
2
2
  require('../../modules/es.map');
3
+ // TODO: Remove from `core-js@4`
3
4
  require('../../modules/esnext.typed-array.at');
4
5
  // TODO: Remove from `core-js@4`
5
6
  require('../../modules/esnext.typed-array.filter-out');
@@ -1,5 +1,6 @@
1
1
  var parent = require('../../stable/typed-array/methods');
2
2
  require('../../modules/es.map');
3
+ // TODO: Remove from `core-js@4`
3
4
  require('../../modules/esnext.typed-array.at');
4
5
  // TODO: Remove from `core-js@4`
5
6
  require('../../modules/esnext.typed-array.filter-out');
@@ -5,6 +5,7 @@ var callWithSafeIterationClosing = require('../internals/call-with-safe-iteratio
5
5
  var isArrayIteratorMethod = require('../internals/is-array-iterator-method');
6
6
  var toLength = require('../internals/to-length');
7
7
  var createProperty = require('../internals/create-property');
8
+ var getIterator = require('../internals/get-iterator');
8
9
  var getIteratorMethod = require('../internals/get-iterator-method');
9
10
 
10
11
  // `Array.from` method implementation
@@ -21,7 +22,7 @@ module.exports = function from(arrayLike /* , mapfn = undefined, thisArg = undef
21
22
  if (mapping) mapfn = bind(mapfn, argumentsLength > 2 ? arguments[2] : undefined, 2);
22
23
  // if the target is not iterable or it's an array with the default iterator - use a simple case
23
24
  if (iteratorMethod != undefined && !(C == Array && isArrayIteratorMethod(iteratorMethod))) {
24
- iterator = iteratorMethod.call(O);
25
+ iterator = getIterator(O, iteratorMethod);
25
26
  next = iterator.next;
26
27
  result = new C();
27
28
  for (;!(step = next.call(iterator)).done; index++) {
@@ -0,0 +1,60 @@
1
+ 'use strict';
2
+ var path = require('../internals/path');
3
+ var anObject = require('../internals/an-object');
4
+ var create = require('../internals/object-create');
5
+ var getMethod = require('../internals/get-method');
6
+ var redefineAll = require('../internals/redefine-all');
7
+ var InternalStateModule = require('../internals/internal-state');
8
+ var getBuiltIn = require('../internals/get-built-in');
9
+
10
+ var Promise = getBuiltIn('Promise');
11
+
12
+ var setInternalState = InternalStateModule.set;
13
+ var getInternalState = InternalStateModule.get;
14
+
15
+ var asyncFromSyncIteratorContinuation = function (result, resolve, reject) {
16
+ var done = result.done;
17
+ Promise.resolve(result.value).then(function (value) {
18
+ resolve({ done: done, value: value });
19
+ }, reject);
20
+ };
21
+
22
+ var AsyncFromSyncIterator = function AsyncIterator(iterator) {
23
+ setInternalState(this, {
24
+ iterator: anObject(iterator),
25
+ next: iterator.next
26
+ });
27
+ };
28
+
29
+ AsyncFromSyncIterator.prototype = redefineAll(create(path.AsyncIterator.prototype), {
30
+ next: function next(arg) {
31
+ var state = getInternalState(this);
32
+ var hasArg = !!arguments.length;
33
+ return new Promise(function (resolve, reject) {
34
+ var result = anObject(state.next.apply(state.iterator, hasArg ? [arg] : []));
35
+ asyncFromSyncIteratorContinuation(result, resolve, reject);
36
+ });
37
+ },
38
+ 'return': function (arg) {
39
+ var iterator = getInternalState(this).iterator;
40
+ var hasArg = !!arguments.length;
41
+ return new Promise(function (resolve, reject) {
42
+ var $return = getMethod(iterator['return']);
43
+ if ($return === undefined) return resolve({ done: true, value: arg });
44
+ var result = anObject($return.apply(iterator, hasArg ? [arg] : []));
45
+ asyncFromSyncIteratorContinuation(result, resolve, reject);
46
+ });
47
+ },
48
+ 'throw': function (arg) {
49
+ var iterator = getInternalState(this).iterator;
50
+ var hasArg = !!arguments.length;
51
+ return new Promise(function (resolve, reject) {
52
+ var $throw = getMethod(iterator['throw']);
53
+ if ($throw === undefined) return reject(arg);
54
+ var result = anObject($throw.apply(iterator, hasArg ? [arg] : []));
55
+ asyncFromSyncIteratorContinuation(result, resolve, reject);
56
+ });
57
+ }
58
+ });
59
+
60
+ module.exports = AsyncFromSyncIterator;
@@ -16,41 +16,50 @@ var getInternalState = InternalStateModule.get;
16
16
 
17
17
  var TO_STRING_TAG = wellKnownSymbol('toStringTag');
18
18
 
19
- var $return = function (value) {
20
- var iterator = getInternalState(this).iterator;
21
- var $$return = iterator['return'];
22
- return $$return === undefined
23
- ? Promise.resolve({ done: true, value: value })
24
- : anObject($$return.call(iterator, value));
25
- };
26
-
27
- var $throw = function (value) {
28
- var iterator = getInternalState(this).iterator;
29
- var $$throw = iterator['throw'];
30
- return $$throw === undefined
31
- ? Promise.reject(value)
32
- : $$throw.call(iterator, value);
33
- };
34
-
35
19
  module.exports = function (nextHandler, IS_ITERATOR) {
36
20
  var AsyncIteratorProxy = function AsyncIterator(state) {
37
21
  state.next = aFunction(state.iterator.next);
38
22
  state.done = false;
23
+ state.ignoreArgument = !IS_ITERATOR;
39
24
  setInternalState(this, state);
40
25
  };
41
26
 
42
27
  AsyncIteratorProxy.prototype = redefineAll(create(path.AsyncIterator.prototype), {
43
28
  next: function next(arg) {
44
- var state = getInternalState(this);
45
- if (state.done) return Promise.resolve({ done: true, value: undefined });
46
- try {
47
- return Promise.resolve(anObject(nextHandler.call(state, arg, Promise)));
48
- } catch (error) {
49
- return Promise.reject(error);
50
- }
29
+ var that = this;
30
+ var hasArgument = !!arguments.length;
31
+ return new Promise(function (resolve) {
32
+ var state = getInternalState(that);
33
+ var args = hasArgument ? [state.ignoreArgument ? undefined : arg] : IS_ITERATOR ? [] : [undefined];
34
+ state.ignoreArgument = false;
35
+ resolve(state.done ? { done: true, value: undefined } : anObject(nextHandler.call(state, Promise, args)));
36
+ });
37
+ },
38
+ 'return': function (value) {
39
+ var that = this;
40
+ return new Promise(function (resolve, reject) {
41
+ var state = getInternalState(that);
42
+ var iterator = state.iterator;
43
+ iterator.done = true;
44
+ var $$return = iterator['return'];
45
+ if ($$return === undefined) return resolve({ done: true, value: value });
46
+ Promise.resolve($$return.call(iterator, value)).then(function (result) {
47
+ anObject(result);
48
+ resolve({ done: true, value: value });
49
+ }, reject);
50
+ });
51
51
  },
52
- 'return': $return,
53
- 'throw': $throw
52
+ 'throw': function (value) {
53
+ var that = this;
54
+ return new Promise(function (resolve, reject) {
55
+ var state = getInternalState(that);
56
+ var iterator = state.iterator;
57
+ iterator.done = true;
58
+ var $$throw = iterator['throw'];
59
+ if ($$throw === undefined) return reject(value);
60
+ resolve($$throw.call(iterator, value));
61
+ });
62
+ }
54
63
  });
55
64
 
56
65
  if (!IS_ITERATOR) {
@@ -6,7 +6,6 @@ module.exports = function (iterator, fn, value, ENTRIES) {
6
6
  try {
7
7
  return ENTRIES ? fn(anObject(value)[0], value[1]) : fn(value);
8
8
  } catch (error) {
9
- iteratorClose(iterator);
10
- throw error;
9
+ iteratorClose(iterator, 'throw', error);
11
10
  }
12
11
  };
@@ -43,7 +43,7 @@ module.exports = function (options, source) {
43
43
 
44
44
  var nativeSource = GLOBAL ? global : STATIC ? global[TARGET] : (global[TARGET] || {}).prototype;
45
45
 
46
- var target = GLOBAL ? path : path[TARGET] || (path[TARGET] = {});
46
+ var target = GLOBAL ? path : path[TARGET] || createNonEnumerableProperty(path, TARGET, {})[TARGET];
47
47
  var targetPrototype = target.prototype;
48
48
 
49
49
  var FORCED, USE_NATIVE, VIRTUAL_PROTOTYPE;
@@ -80,7 +80,7 @@ module.exports = function (options, source) {
80
80
  createNonEnumerableProperty(resultProperty, 'sham', true);
81
81
  }
82
82
 
83
- target[key] = resultProperty;
83
+ createNonEnumerableProperty(target, key, resultProperty);
84
84
 
85
85
  if (PROTO) {
86
86
  VIRTUAL_PROTOTYPE = TARGET + 'Prototype';
@@ -88,7 +88,7 @@ module.exports = function (options, source) {
88
88
  createNonEnumerableProperty(path, VIRTUAL_PROTOTYPE, {});
89
89
  }
90
90
  // export virtual prototype methods
91
- path[VIRTUAL_PROTOTYPE][key] = sourceProperty;
91
+ createNonEnumerableProperty(path[VIRTUAL_PROTOTYPE], key, sourceProperty);
92
92
  // export real prototype methods
93
93
  if (options.real && targetPrototype && !targetPrototype[key]) {
94
94
  createNonEnumerableProperty(targetPrototype, key, sourceProperty);
@@ -0,0 +1,15 @@
1
+ var AsyncFromSyncIterator = require('../internals/async-from-sync-iterator');
2
+ var aFunction = require('../internals/a-function');
3
+ var anObject = require('../internals/an-object');
4
+ var getIterator = require('../internals/get-iterator');
5
+ var getMethod = require('../internals/get-method');
6
+ var wellKnownSymbol = require('../internals/well-known-symbol');
7
+
8
+ var ASYNC_ITERATOR = wellKnownSymbol('asyncIterator');
9
+
10
+ module.exports = function (it, usingIterator) {
11
+ var method = arguments.length < 2 ? getMethod(it[ASYNC_ITERATOR]) : usingIterator;
12
+ if (method === undefined) {
13
+ return new AsyncFromSyncIterator(getIterator(it));
14
+ } return anObject(aFunction(method).call(it));
15
+ };
@@ -1,8 +1,8 @@
1
1
  var anObject = require('../internals/an-object');
2
2
  var getIteratorMethod = require('../internals/get-iterator-method');
3
3
 
4
- module.exports = function (it) {
5
- var iteratorMethod = getIteratorMethod(it);
4
+ module.exports = function (it, usingIterator) {
5
+ var iteratorMethod = arguments.length < 2 ? getIteratorMethod(it) : usingIterator;
6
6
  if (typeof iteratorMethod != 'function') {
7
7
  throw TypeError(String(it) + ' is not iterable');
8
8
  } return anObject(iteratorMethod.call(it));
@@ -0,0 +1,7 @@
1
+ var aFunction = require('../internals/a-function');
2
+
3
+ // `GetMethod` abstract operation
4
+ // https://tc39.es/ecma262/#sec-getmethod
5
+ module.exports = function (fn) {
6
+ return fn == null ? undefined : aFunction(fn);
7
+ };
@@ -0,0 +1,5 @@
1
+ var has = require('../internals/has');
2
+
3
+ module.exports = function (descriptor) {
4
+ return descriptor !== undefined && (has(descriptor, 'value') || has(descriptor, 'writable'));
5
+ };
@@ -2,6 +2,7 @@ var anObject = require('../internals/an-object');
2
2
  var isArrayIteratorMethod = require('../internals/is-array-iterator-method');
3
3
  var toLength = require('../internals/to-length');
4
4
  var bind = require('../internals/function-bind-context');
5
+ var getIterator = require('../internals/get-iterator');
5
6
  var getIteratorMethod = require('../internals/get-iterator-method');
6
7
  var iteratorClose = require('../internals/iterator-close');
7
8
 
@@ -19,7 +20,7 @@ module.exports = function (iterable, unboundFunction, options) {
19
20
  var iterator, iterFn, index, length, result, next, step;
20
21
 
21
22
  var stop = function (condition) {
22
- if (iterator) iteratorClose(iterator);
23
+ if (iterator) iteratorClose(iterator, 'normal', condition);
23
24
  return new Result(true, condition);
24
25
  };
25
26
 
@@ -42,7 +43,7 @@ module.exports = function (iterable, unboundFunction, options) {
42
43
  if (result && result instanceof Result) return result;
43
44
  } return new Result(false);
44
45
  }
45
- iterator = iterFn.call(iterable);
46
+ iterator = getIterator(iterable, iterFn);
46
47
  }
47
48
 
48
49
  next = iterator.next;
@@ -50,8 +51,7 @@ module.exports = function (iterable, unboundFunction, options) {
50
51
  try {
51
52
  result = callFn(step.value);
52
53
  } catch (error) {
53
- iteratorClose(iterator);
54
- throw error;
54
+ iteratorClose(iterator, 'throw', error);
55
55
  }
56
56
  if (typeof result == 'object' && result && result instanceof Result) return result;
57
57
  } return new Result(false);
@@ -1,8 +1,21 @@
1
1
  var anObject = require('../internals/an-object');
2
2
 
3
- module.exports = function (iterator) {
4
- var returnMethod = iterator['return'];
5
- if (returnMethod !== undefined) {
6
- return anObject(returnMethod.call(iterator)).value;
3
+ module.exports = function (iterator, kind, value) {
4
+ var innerResult, innerError;
5
+ anObject(iterator);
6
+ try {
7
+ innerResult = iterator['return'];
8
+ if (innerResult === undefined) {
9
+ if (kind === 'throw') throw value;
10
+ return value;
11
+ }
12
+ innerResult = innerResult.call(iterator);
13
+ } catch (error) {
14
+ innerError = true;
15
+ innerResult = error;
7
16
  }
17
+ if (kind === 'throw') throw value;
18
+ if (innerError) throw innerResult;
19
+ anObject(innerResult);
20
+ return value;
8
21
  };