core-js 3.23.4 → 3.24.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 (46) hide show
  1. package/actual/typed-array/index.js +1 -0
  2. package/actual/typed-array/methods.js +1 -0
  3. package/actual/typed-array/to-spliced.js +1 -0
  4. package/features/async-iterator/indexed.js +1 -0
  5. package/features/iterator/indexed.js +1 -0
  6. package/full/async-iterator/index.js +2 -0
  7. package/full/async-iterator/indexed.js +8 -0
  8. package/full/index.js +2 -0
  9. package/full/iterator/index.js +2 -0
  10. package/full/iterator/indexed.js +8 -0
  11. package/full/typed-array/to-spliced.js +1 -0
  12. package/internals/async-from-sync-iterator.js +6 -18
  13. package/internals/async-iterator-close.js +18 -0
  14. package/internals/async-iterator-create-proxy.js +95 -44
  15. package/internals/async-iterator-indexed.js +28 -0
  16. package/internals/async-iterator-iteration.js +30 -39
  17. package/internals/async-iterator-wrap.js +6 -0
  18. package/internals/engine-is-browser.js +6 -1
  19. package/internals/iterator-create-proxy.js +51 -30
  20. package/internals/iterator-indexed.js +18 -0
  21. package/internals/not-a-nan.js +7 -0
  22. package/internals/promise-constructor-detection.js +12 -11
  23. package/internals/shared.js +2 -2
  24. package/modules/esnext.async-iterator.as-indexed-pairs.js +4 -24
  25. package/modules/esnext.async-iterator.drop.js +13 -9
  26. package/modules/esnext.async-iterator.filter.js +22 -9
  27. package/modules/esnext.async-iterator.flat-map.js +28 -14
  28. package/modules/esnext.async-iterator.from.js +3 -9
  29. package/modules/esnext.async-iterator.indexed.js +7 -0
  30. package/modules/esnext.async-iterator.map.js +28 -9
  31. package/modules/esnext.async-iterator.reduce.js +9 -4
  32. package/modules/esnext.async-iterator.take.js +23 -12
  33. package/modules/esnext.iterator.as-indexed-pairs.js +4 -17
  34. package/modules/esnext.iterator.drop.js +4 -4
  35. package/modules/esnext.iterator.filter.js +3 -3
  36. package/modules/esnext.iterator.flat-map.js +9 -11
  37. package/modules/esnext.iterator.from.js +3 -6
  38. package/modules/esnext.iterator.indexed.js +7 -0
  39. package/modules/esnext.iterator.map.js +3 -3
  40. package/modules/esnext.iterator.take.js +5 -4
  41. package/modules/esnext.iterator.to-async.js +3 -1
  42. package/modules/esnext.typed-array.to-spliced.js +1 -0
  43. package/modules/web.structured-clone.js +1 -1
  44. package/package.json +1 -1
  45. package/proposals/change-array-by-copy.js +1 -0
  46. package/proposals/iterator-helpers.js +4 -0
@@ -4,9 +4,9 @@ var store = require('../internals/shared-store');
4
4
  (module.exports = function (key, value) {
5
5
  return store[key] || (store[key] = value !== undefined ? value : {});
6
6
  })('versions', []).push({
7
- version: '3.23.4',
7
+ version: '3.24.1',
8
8
  mode: IS_PURE ? 'pure' : 'global',
9
9
  copyright: '© 2014-2022 Denis Pushkarev (zloirock.ru)',
10
- license: 'https://github.com/zloirock/core-js/blob/v3.23.4/LICENSE',
10
+ license: 'https://github.com/zloirock/core-js/blob/v3.24.1/LICENSE',
11
11
  source: 'https://github.com/zloirock/core-js'
12
12
  });
@@ -1,28 +1,8 @@
1
- 'use strict';
1
+ // TODO: Remove from `core-js@4`
2
2
  // https://github.com/tc39/proposal-iterator-helpers
3
3
  var $ = require('../internals/export');
4
- var apply = require('../internals/function-apply');
5
- var anObject = require('../internals/an-object');
6
- var getIteratorDirect = require('../internals/get-iterator-direct');
7
- var createAsyncIteratorProxy = require('../internals/async-iterator-create-proxy');
4
+ var indexed = require('../internals/async-iterator-indexed');
8
5
 
9
- var AsyncIteratorProxy = createAsyncIteratorProxy(function (Promise, args) {
10
- var state = this;
11
- var iterator = state.iterator;
12
-
13
- return Promise.resolve(anObject(apply(state.next, iterator, args))).then(function (step) {
14
- if (anObject(step).done) {
15
- state.done = true;
16
- return { done: true, value: undefined };
17
- }
18
- return { done: false, value: [state.index++, step.value] };
19
- });
20
- });
21
-
22
- $({ target: 'AsyncIterator', proto: true, real: true, forced: true }, {
23
- asIndexedPairs: function asIndexedPairs() {
24
- return new AsyncIteratorProxy(getIteratorDirect(this), {
25
- index: 0
26
- });
27
- }
6
+ $({ target: 'AsyncIterator', name: 'indexed', proto: true, real: true, forced: true }, {
7
+ asIndexedPairs: indexed
28
8
  });
@@ -1,21 +1,25 @@
1
1
  'use strict';
2
2
  // https://github.com/tc39/proposal-iterator-helpers
3
3
  var $ = require('../internals/export');
4
- var apply = require('../internals/function-apply');
4
+ var call = require('../internals/function-call');
5
5
  var anObject = require('../internals/an-object');
6
6
  var getIteratorDirect = require('../internals/get-iterator-direct');
7
+ var notANaN = require('../internals/not-a-nan');
7
8
  var toPositiveInteger = require('../internals/to-positive-integer');
8
9
  var createAsyncIteratorProxy = require('../internals/async-iterator-create-proxy');
9
10
 
10
- var AsyncIteratorProxy = createAsyncIteratorProxy(function (Promise, args) {
11
+ var AsyncIteratorProxy = createAsyncIteratorProxy(function (Promise) {
11
12
  var state = this;
12
13
 
13
14
  return new Promise(function (resolve, reject) {
15
+ var doneAndReject = function (error) {
16
+ state.done = true;
17
+ reject(error);
18
+ };
19
+
14
20
  var loop = function () {
15
21
  try {
16
- Promise.resolve(
17
- anObject(apply(state.next, state.iterator, state.remaining ? [] : args))
18
- ).then(function (step) {
22
+ Promise.resolve(anObject(call(state.next, state.iterator))).then(function (step) {
19
23
  try {
20
24
  if (anObject(step).done) {
21
25
  state.done = true;
@@ -24,9 +28,9 @@ var AsyncIteratorProxy = createAsyncIteratorProxy(function (Promise, args) {
24
28
  state.remaining--;
25
29
  loop();
26
30
  } else resolve({ done: false, value: step.value });
27
- } catch (err) { reject(err); }
28
- }, reject);
29
- } catch (error) { reject(error); }
31
+ } catch (err) { doneAndReject(err); }
32
+ }, doneAndReject);
33
+ } catch (error) { doneAndReject(error); }
30
34
  };
31
35
 
32
36
  loop();
@@ -36,7 +40,7 @@ var AsyncIteratorProxy = createAsyncIteratorProxy(function (Promise, args) {
36
40
  $({ target: 'AsyncIterator', proto: true, real: true, forced: true }, {
37
41
  drop: function drop(limit) {
38
42
  return new AsyncIteratorProxy(getIteratorDirect(this), {
39
- remaining: toPositiveInteger(limit)
43
+ remaining: toPositiveInteger(notANaN(+limit))
40
44
  });
41
45
  }
42
46
  });
@@ -1,33 +1,46 @@
1
1
  'use strict';
2
2
  // https://github.com/tc39/proposal-iterator-helpers
3
3
  var $ = require('../internals/export');
4
- var apply = require('../internals/function-apply');
4
+ var call = require('../internals/function-call');
5
5
  var aCallable = require('../internals/a-callable');
6
6
  var anObject = require('../internals/an-object');
7
7
  var getIteratorDirect = require('../internals/get-iterator-direct');
8
8
  var createAsyncIteratorProxy = require('../internals/async-iterator-create-proxy');
9
+ var closeAsyncIteration = require('../internals/async-iterator-close');
9
10
 
10
- var AsyncIteratorProxy = createAsyncIteratorProxy(function (Promise, args) {
11
+ var AsyncIteratorProxy = createAsyncIteratorProxy(function (Promise) {
11
12
  var state = this;
13
+ var iterator = state.iterator;
12
14
  var filterer = state.filterer;
13
15
 
14
16
  return new Promise(function (resolve, reject) {
17
+ var doneAndReject = function (error) {
18
+ state.done = true;
19
+ reject(error);
20
+ };
21
+
22
+ var ifAbruptCloseAsyncIterator = function (error) {
23
+ closeAsyncIteration(iterator, doneAndReject, error, doneAndReject);
24
+ };
25
+
15
26
  var loop = function () {
16
27
  try {
17
- Promise.resolve(anObject(apply(state.next, state.iterator, args))).then(function (step) {
28
+ Promise.resolve(anObject(call(state.next, iterator))).then(function (step) {
18
29
  try {
19
30
  if (anObject(step).done) {
20
31
  state.done = true;
21
32
  resolve({ done: true, value: undefined });
22
33
  } else {
23
34
  var value = step.value;
24
- Promise.resolve(filterer(value)).then(function (selected) {
25
- selected ? resolve({ done: false, value: value }) : loop();
26
- }, reject);
35
+ try {
36
+ Promise.resolve(filterer(value)).then(function (selected) {
37
+ selected ? resolve({ done: false, value: value }) : loop();
38
+ }, ifAbruptCloseAsyncIterator);
39
+ } catch (error3) { ifAbruptCloseAsyncIterator(error3); }
27
40
  }
28
- } catch (err) { reject(err); }
29
- }, reject);
30
- } catch (error) { reject(error); }
41
+ } catch (error2) { doneAndReject(error2); }
42
+ }, doneAndReject);
43
+ } catch (error) { doneAndReject(error); }
31
44
  };
32
45
 
33
46
  loop();
@@ -7,32 +7,46 @@ var anObject = require('../internals/an-object');
7
7
  var getIteratorDirect = require('../internals/get-iterator-direct');
8
8
  var createAsyncIteratorProxy = require('../internals/async-iterator-create-proxy');
9
9
  var getAsyncIterator = require('../internals/get-async-iterator');
10
+ var closeAsyncIteration = require('../internals/async-iterator-close');
10
11
 
11
12
  var AsyncIteratorProxy = createAsyncIteratorProxy(function (Promise) {
12
13
  var state = this;
14
+ var iterator = state.iterator;
13
15
  var mapper = state.mapper;
14
16
  var innerIterator;
15
17
 
16
18
  return new Promise(function (resolve, reject) {
19
+ var doneAndReject = function (error) {
20
+ state.done = true;
21
+ reject(error);
22
+ };
23
+
24
+ var ifAbruptCloseAsyncIterator = function (error) {
25
+ closeAsyncIteration(iterator, doneAndReject, error, doneAndReject);
26
+ };
27
+
17
28
  var outerLoop = function () {
18
29
  try {
19
- Promise.resolve(anObject(call(state.next, state.iterator))).then(function (step) {
30
+ Promise.resolve(anObject(call(state.next, iterator))).then(function (step) {
20
31
  try {
21
32
  if (anObject(step).done) {
22
33
  state.done = true;
23
34
  resolve({ done: true, value: undefined });
24
35
  } else {
25
- Promise.resolve(mapper(step.value)).then(function (mapped) {
26
- try {
27
- state.innerIterator = innerIterator = getAsyncIterator(mapped);
28
- state.innerNext = aCallable(innerIterator.next);
29
- return innerLoop();
30
- } catch (error2) { reject(error2); }
31
- }, reject);
36
+ var value = step.value;
37
+ try {
38
+ Promise.resolve(mapper(value)).then(function (mapped) {
39
+ try {
40
+ state.innerIterator = innerIterator = getAsyncIterator(mapped);
41
+ state.innerNext = aCallable(innerIterator.next);
42
+ innerLoop();
43
+ } catch (error4) { ifAbruptCloseAsyncIterator(error4); }
44
+ }, ifAbruptCloseAsyncIterator);
45
+ } catch (error3) { ifAbruptCloseAsyncIterator(error3); }
32
46
  }
33
- } catch (error1) { reject(error1); }
34
- }, reject);
35
- } catch (error) { reject(error); }
47
+ } catch (error2) { doneAndReject(error2); }
48
+ }, doneAndReject);
49
+ } catch (error) { doneAndReject(error); }
36
50
  };
37
51
 
38
52
  var innerLoop = function () {
@@ -44,9 +58,9 @@ var AsyncIteratorProxy = createAsyncIteratorProxy(function (Promise) {
44
58
  state.innerIterator = state.innerNext = null;
45
59
  outerLoop();
46
60
  } else resolve({ done: false, value: result.value });
47
- } catch (error1) { reject(error1); }
48
- }, reject);
49
- } catch (error) { reject(error); }
61
+ } catch (error1) { ifAbruptCloseAsyncIterator(error1); }
62
+ }, ifAbruptCloseAsyncIterator);
63
+ } catch (error) { ifAbruptCloseAsyncIterator(error); }
50
64
  } else outerLoop();
51
65
  };
52
66
 
@@ -1,11 +1,8 @@
1
1
  // https://github.com/tc39/proposal-iterator-helpers
2
2
  var $ = require('../internals/export');
3
- var apply = require('../internals/function-apply');
4
- var anObject = require('../internals/an-object');
5
3
  var toObject = require('../internals/to-object');
6
4
  var isPrototypeOf = require('../internals/object-is-prototype-of');
7
5
  var AsyncIteratorPrototype = require('../internals/async-iterator-prototype');
8
- var createAsyncIteratorProxy = require('../internals/async-iterator-create-proxy');
9
6
  var getAsyncIterator = require('../internals/get-async-iterator');
10
7
  var getIterator = require('../internals/get-iterator');
11
8
  var getIteratorDirect = require('../internals/get-iterator-direct');
@@ -13,13 +10,10 @@ var getIteratorMethod = require('../internals/get-iterator-method');
13
10
  var getMethod = require('../internals/get-method');
14
11
  var wellKnownSymbol = require('../internals/well-known-symbol');
15
12
  var AsyncFromSyncIterator = require('../internals/async-from-sync-iterator');
13
+ var WrapAsyncIterator = require('../internals/async-iterator-wrap');
16
14
 
17
15
  var ASYNC_ITERATOR = wellKnownSymbol('asyncIterator');
18
16
 
19
- var AsyncIteratorProxy = createAsyncIteratorProxy(function (Promise, args) {
20
- return anObject(apply(this.next, this.iterator, args));
21
- }, true);
22
-
23
17
  $({ target: 'AsyncIterator', stat: true, forced: true }, {
24
18
  from: function from(O) {
25
19
  var object = toObject(O);
@@ -31,8 +25,8 @@ $({ target: 'AsyncIterator', stat: true, forced: true }, {
31
25
  }
32
26
  if (iterator === undefined) {
33
27
  usingIterator = getIteratorMethod(object);
34
- if (usingIterator) return new AsyncFromSyncIterator(getIterator(object, usingIterator));
28
+ if (usingIterator) iterator = new AsyncFromSyncIterator(getIterator(object, usingIterator));
35
29
  }
36
- return new AsyncIteratorProxy(getIteratorDirect(iterator !== undefined ? iterator : object));
30
+ return new WrapAsyncIterator(getIteratorDirect(iterator !== undefined ? iterator : object));
37
31
  }
38
32
  });
@@ -0,0 +1,7 @@
1
+ // https://github.com/tc39/proposal-iterator-helpers
2
+ var $ = require('../internals/export');
3
+ var indexed = require('../internals/async-iterator-indexed');
4
+
5
+ $({ target: 'AsyncIterator', proto: true, real: true, forced: true }, {
6
+ indexed: indexed
7
+ });
@@ -1,24 +1,43 @@
1
1
  'use strict';
2
2
  // https://github.com/tc39/proposal-iterator-helpers
3
3
  var $ = require('../internals/export');
4
- var apply = require('../internals/function-apply');
4
+ var call = require('../internals/function-call');
5
5
  var aCallable = require('../internals/a-callable');
6
6
  var anObject = require('../internals/an-object');
7
7
  var getIteratorDirect = require('../internals/get-iterator-direct');
8
8
  var createAsyncIteratorProxy = require('../internals/async-iterator-create-proxy');
9
+ var closeAsyncIteration = require('../internals/async-iterator-close');
9
10
 
10
- var AsyncIteratorProxy = createAsyncIteratorProxy(function (Promise, args) {
11
+ var AsyncIteratorProxy = createAsyncIteratorProxy(function (Promise) {
11
12
  var state = this;
13
+ var iterator = state.iterator;
12
14
  var mapper = state.mapper;
13
15
 
14
- return Promise.resolve(anObject(apply(state.next, state.iterator, args))).then(function (step) {
15
- if (anObject(step).done) {
16
+ return new Promise(function (resolve, reject) {
17
+ var doneAndReject = function (error) {
16
18
  state.done = true;
17
- return { done: true, value: undefined };
18
- }
19
- return Promise.resolve(mapper(step.value)).then(function (value) {
20
- return { done: false, value: value };
21
- });
19
+ reject(error);
20
+ };
21
+
22
+ var ifAbruptCloseAsyncIterator = function (error) {
23
+ closeAsyncIteration(iterator, doneAndReject, error, doneAndReject);
24
+ };
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({ done: true, value: undefined });
31
+ } else {
32
+ var value = step.value;
33
+ try {
34
+ Promise.resolve(mapper(value)).then(function (mapped) {
35
+ resolve({ done: false, value: mapped });
36
+ }, ifAbruptCloseAsyncIterator);
37
+ } catch (error2) { ifAbruptCloseAsyncIterator(error2); }
38
+ }
39
+ } catch (error) { doneAndReject(error); }
40
+ }, doneAndReject);
22
41
  });
23
42
  });
24
43
 
@@ -6,6 +6,7 @@ var aCallable = require('../internals/a-callable');
6
6
  var anObject = require('../internals/an-object');
7
7
  var getBuiltIn = require('../internals/get-built-in');
8
8
  var getIteratorDirect = require('../internals/get-iterator-direct');
9
+ var closeAsyncIteration = require('../internals/async-iterator-close');
9
10
 
10
11
  var Promise = getBuiltIn('Promise');
11
12
  var $TypeError = TypeError;
@@ -20,6 +21,10 @@ $({ target: 'AsyncIterator', proto: true, real: true, forced: true }, {
20
21
  aCallable(reducer);
21
22
 
22
23
  return new Promise(function (resolve, reject) {
24
+ var ifAbruptCloseAsyncIterator = function (error) {
25
+ closeAsyncIteration(iterator, reject, error, reject);
26
+ };
27
+
23
28
  var loop = function () {
24
29
  try {
25
30
  Promise.resolve(anObject(call(next, iterator))).then(function (step) {
@@ -32,14 +37,14 @@ $({ target: 'AsyncIterator', proto: true, real: true, forced: true }, {
32
37
  noInitial = false;
33
38
  accumulator = value;
34
39
  loop();
35
- } else {
40
+ } else try {
36
41
  Promise.resolve(reducer(accumulator, value)).then(function (result) {
37
42
  accumulator = result;
38
43
  loop();
39
- }, reject);
40
- }
44
+ }, ifAbruptCloseAsyncIterator);
45
+ } catch (error3) { ifAbruptCloseAsyncIterator(error3); }
41
46
  }
42
- } catch (err) { reject(err); }
47
+ } catch (error2) { reject(error2); }
43
48
  }, reject);
44
49
  } catch (error) { reject(error); }
45
50
  };
@@ -1,32 +1,43 @@
1
1
  'use strict';
2
2
  // https://github.com/tc39/proposal-iterator-helpers
3
3
  var $ = require('../internals/export');
4
- var apply = require('../internals/function-apply');
5
4
  var call = require('../internals/function-call');
5
+ var anObject = require('../internals/an-object');
6
6
  var getIteratorDirect = require('../internals/get-iterator-direct');
7
+ var notANaN = require('../internals/not-a-nan');
7
8
  var toPositiveInteger = require('../internals/to-positive-integer');
8
9
  var createAsyncIteratorProxy = require('../internals/async-iterator-create-proxy');
9
10
 
10
- var AsyncIteratorProxy = createAsyncIteratorProxy(function (Promise, args) {
11
- var iterator = this.iterator;
12
- var returnMethod, result;
13
- if (!this.remaining--) {
14
- result = { done: true, value: undefined };
15
- this.done = true;
11
+ var AsyncIteratorProxy = createAsyncIteratorProxy(function (Promise) {
12
+ var state = this;
13
+ var iterator = state.iterator;
14
+ var returnMethod;
15
+
16
+ if (!state.remaining--) {
17
+ var resultDone = { done: true, value: undefined };
18
+ state.done = true;
16
19
  returnMethod = iterator['return'];
17
20
  if (returnMethod !== undefined) {
18
- return Promise.resolve(call(returnMethod, iterator)).then(function () {
19
- return result;
21
+ return Promise.resolve(call(returnMethod, iterator, undefined)).then(function () {
22
+ return resultDone;
20
23
  });
21
24
  }
22
- return result;
23
- } return apply(this.next, iterator, args);
25
+ return resultDone;
26
+ } return Promise.resolve(call(state.next, iterator)).then(function (step) {
27
+ if (anObject(step).done) {
28
+ state.done = true;
29
+ return { done: true, value: undefined };
30
+ } return { done: false, value: step.value };
31
+ }).then(null, function (error) {
32
+ state.done = true;
33
+ throw error;
34
+ });
24
35
  });
25
36
 
26
37
  $({ target: 'AsyncIterator', proto: true, real: true, forced: true }, {
27
38
  take: function take(limit) {
28
39
  return new AsyncIteratorProxy(getIteratorDirect(this), {
29
- remaining: toPositiveInteger(limit)
40
+ remaining: toPositiveInteger(notANaN(+limit))
30
41
  });
31
42
  }
32
43
  });
@@ -1,21 +1,8 @@
1
- 'use strict';
1
+ // TODO: Remove from `core-js@4`
2
2
  // https://github.com/tc39/proposal-iterator-helpers
3
3
  var $ = require('../internals/export');
4
- var apply = require('../internals/function-apply');
5
- var anObject = require('../internals/an-object');
6
- var getIteratorDirect = require('../internals/get-iterator-direct');
7
- var createIteratorProxy = require('../internals/iterator-create-proxy');
4
+ var indexed = require('../internals/iterator-indexed');
8
5
 
9
- var IteratorProxy = createIteratorProxy(function (args) {
10
- var result = anObject(apply(this.next, this.iterator, args));
11
- var done = this.done = !!result.done;
12
- if (!done) return [this.index++, result.value];
13
- });
14
-
15
- $({ target: 'Iterator', proto: true, real: true, forced: true }, {
16
- asIndexedPairs: function asIndexedPairs() {
17
- return new IteratorProxy(getIteratorDirect(this), {
18
- index: 0
19
- });
20
- }
6
+ $({ target: 'Iterator', name: 'indexed', proto: true, real: true, forced: true }, {
7
+ asIndexedPairs: indexed
21
8
  });
@@ -1,14 +1,14 @@
1
1
  'use strict';
2
2
  // https://github.com/tc39/proposal-iterator-helpers
3
3
  var $ = require('../internals/export');
4
- var apply = require('../internals/function-apply');
5
4
  var call = require('../internals/function-call');
6
5
  var anObject = require('../internals/an-object');
7
6
  var getIteratorDirect = require('../internals/get-iterator-direct');
7
+ var notANaN = require('../internals/not-a-nan');
8
8
  var toPositiveInteger = require('../internals/to-positive-integer');
9
9
  var createIteratorProxy = require('../internals/iterator-create-proxy');
10
10
 
11
- var IteratorProxy = createIteratorProxy(function (args) {
11
+ var IteratorProxy = createIteratorProxy(function () {
12
12
  var iterator = this.iterator;
13
13
  var next = this.next;
14
14
  var result, done;
@@ -18,7 +18,7 @@ var IteratorProxy = createIteratorProxy(function (args) {
18
18
  done = this.done = !!result.done;
19
19
  if (done) return;
20
20
  }
21
- result = anObject(apply(next, iterator, args));
21
+ result = anObject(call(next, iterator));
22
22
  done = this.done = !!result.done;
23
23
  if (!done) return result.value;
24
24
  });
@@ -26,7 +26,7 @@ var IteratorProxy = createIteratorProxy(function (args) {
26
26
  $({ target: 'Iterator', proto: true, real: true, forced: true }, {
27
27
  drop: function drop(limit) {
28
28
  return new IteratorProxy(getIteratorDirect(this), {
29
- remaining: toPositiveInteger(limit)
29
+ remaining: toPositiveInteger(notANaN(+limit))
30
30
  });
31
31
  }
32
32
  });
@@ -1,20 +1,20 @@
1
1
  'use strict';
2
2
  // https://github.com/tc39/proposal-iterator-helpers
3
3
  var $ = require('../internals/export');
4
- var apply = require('../internals/function-apply');
4
+ var call = require('../internals/function-call');
5
5
  var aCallable = require('../internals/a-callable');
6
6
  var anObject = require('../internals/an-object');
7
7
  var getIteratorDirect = require('../internals/get-iterator-direct');
8
8
  var createIteratorProxy = require('../internals/iterator-create-proxy');
9
9
  var callWithSafeIterationClosing = require('../internals/call-with-safe-iteration-closing');
10
10
 
11
- var IteratorProxy = createIteratorProxy(function (args) {
11
+ var IteratorProxy = createIteratorProxy(function () {
12
12
  var iterator = this.iterator;
13
13
  var filterer = this.filterer;
14
14
  var next = this.next;
15
15
  var result, done, value;
16
16
  while (true) {
17
- result = anObject(apply(next, iterator, args));
17
+ result = anObject(call(next, iterator));
18
18
  done = this.done = !!result.done;
19
19
  if (done) return;
20
20
  value = result.value;
@@ -17,17 +17,17 @@ var IteratorProxy = createIteratorProxy(function () {
17
17
  var result, mapped, iteratorMethod, innerIterator;
18
18
 
19
19
  while (true) {
20
- try {
21
- if (innerIterator = this.innerIterator) {
22
- result = anObject(call(this.innerNext, innerIterator));
23
- if (!result.done) return result.value;
24
- this.innerIterator = this.innerNext = null;
25
- }
20
+ if (innerIterator = this.innerIterator) try {
21
+ result = anObject(call(this.innerNext, innerIterator));
22
+ if (!result.done) return result.value;
23
+ this.innerIterator = this.innerNext = null;
24
+ } catch (error) { iteratorClose(iterator, 'throw', error); }
26
25
 
27
- result = anObject(call(this.next, iterator));
26
+ result = anObject(call(this.next, iterator));
28
27
 
29
- if (this.done = !!result.done) return;
28
+ if (this.done = !!result.done) return;
30
29
 
30
+ try {
31
31
  mapped = mapper(result.value);
32
32
  iteratorMethod = getIteratorMethod(mapped);
33
33
 
@@ -37,9 +37,7 @@ var IteratorProxy = createIteratorProxy(function () {
37
37
 
38
38
  this.innerIterator = innerIterator = anObject(call(iteratorMethod, mapped));
39
39
  this.innerNext = aCallable(innerIterator.next);
40
- } catch (error) {
41
- iteratorClose(iterator, 'throw', error);
42
- }
40
+ } catch (error) { iteratorClose(iterator, 'throw', error); }
43
41
  }
44
42
  });
45
43
 
@@ -1,7 +1,6 @@
1
1
  // https://github.com/tc39/proposal-iterator-helpers
2
2
  var $ = require('../internals/export');
3
- var apply = require('../internals/function-apply');
4
- var anObject = require('../internals/an-object');
3
+ var call = require('../internals/function-call');
5
4
  var toObject = require('../internals/to-object');
6
5
  var isPrototypeOf = require('../internals/object-is-prototype-of');
7
6
  var IteratorPrototype = require('../internals/iterators-core').IteratorPrototype;
@@ -10,10 +9,8 @@ var getIterator = require('../internals/get-iterator');
10
9
  var getIteratorDirect = require('../internals/get-iterator-direct');
11
10
  var getIteratorMethod = require('../internals/get-iterator-method');
12
11
 
13
- var IteratorProxy = createIteratorProxy(function (args) {
14
- var result = anObject(apply(this.next, this.iterator, args));
15
- var done = this.done = !!result.done;
16
- if (!done) return result.value;
12
+ var IteratorProxy = createIteratorProxy(function () {
13
+ return call(this.next, this.iterator);
17
14
  }, true);
18
15
 
19
16
  $({ target: 'Iterator', stat: true, forced: true }, {
@@ -0,0 +1,7 @@
1
+ // https://github.com/tc39/proposal-iterator-helpers
2
+ var $ = require('../internals/export');
3
+ var indexed = require('../internals/iterator-indexed');
4
+
5
+ $({ target: 'Iterator', proto: true, real: true, forced: true }, {
6
+ indexed: indexed
7
+ });
@@ -1,16 +1,16 @@
1
1
  'use strict';
2
2
  // https://github.com/tc39/proposal-iterator-helpers
3
3
  var $ = require('../internals/export');
4
- var apply = require('../internals/function-apply');
4
+ var call = require('../internals/function-call');
5
5
  var aCallable = require('../internals/a-callable');
6
6
  var anObject = require('../internals/an-object');
7
7
  var getIteratorDirect = require('../internals/get-iterator-direct');
8
8
  var createIteratorProxy = require('../internals/iterator-create-proxy');
9
9
  var callWithSafeIterationClosing = require('../internals/call-with-safe-iteration-closing');
10
10
 
11
- var IteratorProxy = createIteratorProxy(function (args) {
11
+ var IteratorProxy = createIteratorProxy(function () {
12
12
  var iterator = this.iterator;
13
- var result = anObject(apply(this.next, iterator, args));
13
+ var result = anObject(call(this.next, iterator));
14
14
  var done = this.done = !!result.done;
15
15
  if (!done) return callWithSafeIterationClosing(iterator, this.mapper, result.value);
16
16
  });
@@ -1,20 +1,21 @@
1
1
  'use strict';
2
2
  // https://github.com/tc39/proposal-iterator-helpers
3
3
  var $ = require('../internals/export');
4
- var apply = require('../internals/function-apply');
4
+ var call = require('../internals/function-call');
5
5
  var anObject = require('../internals/an-object');
6
6
  var getIteratorDirect = require('../internals/get-iterator-direct');
7
+ var notANaN = require('../internals/not-a-nan');
7
8
  var toPositiveInteger = require('../internals/to-positive-integer');
8
9
  var createIteratorProxy = require('../internals/iterator-create-proxy');
9
10
  var iteratorClose = require('../internals/iterator-close');
10
11
 
11
- var IteratorProxy = createIteratorProxy(function (args) {
12
+ var IteratorProxy = createIteratorProxy(function () {
12
13
  var iterator = this.iterator;
13
14
  if (!this.remaining--) {
14
15
  this.done = true;
15
16
  return iteratorClose(iterator, 'normal', undefined);
16
17
  }
17
- var result = anObject(apply(this.next, iterator, args));
18
+ var result = anObject(call(this.next, iterator));
18
19
  var done = this.done = !!result.done;
19
20
  if (!done) return result.value;
20
21
  });
@@ -22,7 +23,7 @@ var IteratorProxy = createIteratorProxy(function (args) {
22
23
  $({ target: 'Iterator', proto: true, real: true, forced: true }, {
23
24
  take: function take(limit) {
24
25
  return new IteratorProxy(getIteratorDirect(this), {
25
- remaining: toPositiveInteger(limit)
26
+ remaining: toPositiveInteger(notANaN(+limit))
26
27
  });
27
28
  }
28
29
  });
@@ -2,9 +2,11 @@
2
2
  // https://github.com/tc39/proposal-iterator-helpers
3
3
  var $ = require('../internals/export');
4
4
  var AsyncFromSyncIterator = require('../internals/async-from-sync-iterator');
5
+ var WrapAsyncIterator = require('../internals/async-iterator-wrap');
6
+ var getIteratorDirect = require('../internals/get-iterator-direct');
5
7
 
6
8
  $({ target: 'Iterator', proto: true, real: true, forced: true }, {
7
9
  toAsync: function toAsync() {
8
- return new AsyncFromSyncIterator(this);
10
+ return new WrapAsyncIterator(getIteratorDirect(new AsyncFromSyncIterator(this)));
9
11
  }
10
12
  });