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.
- package/actual/typed-array/index.js +1 -0
- package/actual/typed-array/methods.js +1 -0
- package/actual/typed-array/to-spliced.js +1 -0
- package/features/async-iterator/indexed.js +1 -0
- package/features/iterator/indexed.js +1 -0
- package/full/async-iterator/index.js +2 -0
- package/full/async-iterator/indexed.js +8 -0
- package/full/index.js +2 -0
- package/full/iterator/index.js +2 -0
- package/full/iterator/indexed.js +8 -0
- package/full/typed-array/to-spliced.js +1 -0
- package/internals/async-from-sync-iterator.js +6 -18
- package/internals/async-iterator-close.js +18 -0
- package/internals/async-iterator-create-proxy.js +95 -44
- package/internals/async-iterator-indexed.js +28 -0
- package/internals/async-iterator-iteration.js +30 -39
- package/internals/async-iterator-wrap.js +6 -0
- package/internals/engine-is-browser.js +6 -1
- package/internals/iterator-create-proxy.js +51 -30
- package/internals/iterator-indexed.js +18 -0
- package/internals/not-a-nan.js +7 -0
- package/internals/promise-constructor-detection.js +12 -11
- package/internals/shared.js +2 -2
- package/modules/esnext.async-iterator.as-indexed-pairs.js +4 -24
- package/modules/esnext.async-iterator.drop.js +13 -9
- package/modules/esnext.async-iterator.filter.js +22 -9
- package/modules/esnext.async-iterator.flat-map.js +28 -14
- package/modules/esnext.async-iterator.from.js +3 -9
- package/modules/esnext.async-iterator.indexed.js +7 -0
- package/modules/esnext.async-iterator.map.js +28 -9
- package/modules/esnext.async-iterator.reduce.js +9 -4
- package/modules/esnext.async-iterator.take.js +23 -12
- package/modules/esnext.iterator.as-indexed-pairs.js +4 -17
- package/modules/esnext.iterator.drop.js +4 -4
- package/modules/esnext.iterator.filter.js +3 -3
- package/modules/esnext.iterator.flat-map.js +9 -11
- package/modules/esnext.iterator.from.js +3 -6
- package/modules/esnext.iterator.indexed.js +7 -0
- package/modules/esnext.iterator.map.js +3 -3
- package/modules/esnext.iterator.take.js +5 -4
- package/modules/esnext.iterator.to-async.js +3 -1
- package/modules/esnext.typed-array.to-spliced.js +1 -0
- package/modules/web.structured-clone.js +1 -1
- package/package.json +1 -1
- package/proposals/change-array-by-copy.js +1 -0
- package/proposals/iterator-helpers.js +4 -0
|
@@ -3,6 +3,7 @@ require('../../modules/esnext.typed-array.find-last');
|
|
|
3
3
|
require('../../modules/esnext.typed-array.find-last-index');
|
|
4
4
|
require('../../modules/esnext.typed-array.to-reversed');
|
|
5
5
|
require('../../modules/esnext.typed-array.to-sorted');
|
|
6
|
+
// TODO: Remove from `core-js@4`
|
|
6
7
|
require('../../modules/esnext.typed-array.to-spliced');
|
|
7
8
|
require('../../modules/esnext.typed-array.with');
|
|
8
9
|
|
|
@@ -3,6 +3,7 @@ require('../../modules/esnext.typed-array.find-last');
|
|
|
3
3
|
require('../../modules/esnext.typed-array.find-last-index');
|
|
4
4
|
require('../../modules/esnext.typed-array.to-reversed');
|
|
5
5
|
require('../../modules/esnext.typed-array.to-sorted');
|
|
6
|
+
// TODO: Remove from `core-js@4`
|
|
6
7
|
require('../../modules/esnext.typed-array.to-spliced');
|
|
7
8
|
require('../../modules/esnext.typed-array.with');
|
|
8
9
|
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
module.exports = require('../../full/async-iterator/indexed');
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
module.exports = require('../../full/iterator/indexed');
|
|
@@ -3,6 +3,7 @@ require('../../modules/es.object.to-string');
|
|
|
3
3
|
require('../../modules/es.promise');
|
|
4
4
|
require('../../modules/es.string.iterator');
|
|
5
5
|
require('../../modules/esnext.async-iterator.constructor');
|
|
6
|
+
// TODO: Remove from `core-js@4`
|
|
6
7
|
require('../../modules/esnext.async-iterator.as-indexed-pairs');
|
|
7
8
|
require('../../modules/esnext.async-iterator.drop');
|
|
8
9
|
require('../../modules/esnext.async-iterator.every');
|
|
@@ -11,6 +12,7 @@ require('../../modules/esnext.async-iterator.find');
|
|
|
11
12
|
require('../../modules/esnext.async-iterator.flat-map');
|
|
12
13
|
require('../../modules/esnext.async-iterator.for-each');
|
|
13
14
|
require('../../modules/esnext.async-iterator.from');
|
|
15
|
+
require('../../modules/esnext.async-iterator.indexed');
|
|
14
16
|
require('../../modules/esnext.async-iterator.map');
|
|
15
17
|
require('../../modules/esnext.async-iterator.reduce');
|
|
16
18
|
require('../../modules/esnext.async-iterator.some');
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
require('../../modules/es.object.to-string');
|
|
2
|
+
require('../../modules/es.promise');
|
|
3
|
+
require('../../modules/esnext.async-iterator.constructor');
|
|
4
|
+
require('../../modules/esnext.async-iterator.indexed');
|
|
5
|
+
|
|
6
|
+
var entryUnbind = require('../../internals/entry-unbind');
|
|
7
|
+
|
|
8
|
+
module.exports = entryUnbind('AsyncIterator', 'indexed');
|
package/full/index.js
CHANGED
|
@@ -258,6 +258,7 @@ require('../modules/esnext.async-iterator.find');
|
|
|
258
258
|
require('../modules/esnext.async-iterator.flat-map');
|
|
259
259
|
require('../modules/esnext.async-iterator.for-each');
|
|
260
260
|
require('../modules/esnext.async-iterator.from');
|
|
261
|
+
require('../modules/esnext.async-iterator.indexed');
|
|
261
262
|
require('../modules/esnext.async-iterator.map');
|
|
262
263
|
require('../modules/esnext.async-iterator.reduce');
|
|
263
264
|
require('../modules/esnext.async-iterator.some');
|
|
@@ -279,6 +280,7 @@ require('../modules/esnext.iterator.find');
|
|
|
279
280
|
require('../modules/esnext.iterator.flat-map');
|
|
280
281
|
require('../modules/esnext.iterator.for-each');
|
|
281
282
|
require('../modules/esnext.iterator.from');
|
|
283
|
+
require('../modules/esnext.iterator.indexed');
|
|
282
284
|
require('../modules/esnext.iterator.map');
|
|
283
285
|
require('../modules/esnext.iterator.reduce');
|
|
284
286
|
require('../modules/esnext.iterator.some');
|
package/full/iterator/index.js
CHANGED
|
@@ -3,6 +3,7 @@ require('../../modules/es.object.to-string');
|
|
|
3
3
|
require('../../modules/es.promise');
|
|
4
4
|
require('../../modules/es.string.iterator');
|
|
5
5
|
require('../../modules/esnext.iterator.constructor');
|
|
6
|
+
// TODO: Remove from `core-js@4`
|
|
6
7
|
require('../../modules/esnext.iterator.as-indexed-pairs');
|
|
7
8
|
require('../../modules/esnext.iterator.drop');
|
|
8
9
|
require('../../modules/esnext.iterator.every');
|
|
@@ -11,6 +12,7 @@ require('../../modules/esnext.iterator.find');
|
|
|
11
12
|
require('../../modules/esnext.iterator.flat-map');
|
|
12
13
|
require('../../modules/esnext.iterator.for-each');
|
|
13
14
|
require('../../modules/esnext.iterator.from');
|
|
15
|
+
require('../../modules/esnext.iterator.indexed');
|
|
14
16
|
require('../../modules/esnext.iterator.map');
|
|
15
17
|
require('../../modules/esnext.iterator.reduce');
|
|
16
18
|
require('../../modules/esnext.iterator.some');
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
require('../../modules/es.object.to-string');
|
|
2
|
+
require('../../modules/esnext.iterator.constructor');
|
|
3
|
+
require('../../modules/esnext.iterator.indexed');
|
|
4
|
+
|
|
5
|
+
var entryUnbind = require('../../internals/entry-unbind');
|
|
6
|
+
|
|
7
|
+
module.exports = entryUnbind('Iterator', 'indexed');
|
|
8
|
+
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
'use strict';
|
|
2
|
-
var
|
|
2
|
+
var call = require('../internals/function-call');
|
|
3
3
|
var anObject = require('../internals/an-object');
|
|
4
4
|
var create = require('../internals/object-create');
|
|
5
5
|
var getMethod = require('../internals/get-method');
|
|
@@ -30,31 +30,19 @@ var AsyncFromSyncIterator = function AsyncIterator(iterator) {
|
|
|
30
30
|
};
|
|
31
31
|
|
|
32
32
|
AsyncFromSyncIterator.prototype = defineBuiltIns(create(AsyncIteratorPrototype), {
|
|
33
|
-
next: function next(
|
|
33
|
+
next: function next() {
|
|
34
34
|
var state = getInternalState(this);
|
|
35
|
-
var hasArg = !!arguments.length;
|
|
36
35
|
return new Promise(function (resolve, reject) {
|
|
37
|
-
var result = anObject(
|
|
36
|
+
var result = anObject(call(state.next, state.iterator));
|
|
38
37
|
asyncFromSyncIteratorContinuation(result, resolve, reject);
|
|
39
38
|
});
|
|
40
39
|
},
|
|
41
|
-
'return': function (
|
|
40
|
+
'return': function () {
|
|
42
41
|
var iterator = getInternalState(this).iterator;
|
|
43
|
-
var hasArg = !!arguments.length;
|
|
44
42
|
return new Promise(function (resolve, reject) {
|
|
45
43
|
var $return = getMethod(iterator, 'return');
|
|
46
|
-
if ($return === undefined) return resolve({ done: true, value:
|
|
47
|
-
var result = anObject(
|
|
48
|
-
asyncFromSyncIteratorContinuation(result, resolve, reject);
|
|
49
|
-
});
|
|
50
|
-
},
|
|
51
|
-
'throw': function (arg) {
|
|
52
|
-
var iterator = getInternalState(this).iterator;
|
|
53
|
-
var hasArg = !!arguments.length;
|
|
54
|
-
return new Promise(function (resolve, reject) {
|
|
55
|
-
var $throw = getMethod(iterator, 'throw');
|
|
56
|
-
if ($throw === undefined) return reject(arg);
|
|
57
|
-
var result = anObject(apply($throw, iterator, hasArg ? [arg] : []));
|
|
44
|
+
if ($return === undefined) return resolve({ done: true, value: undefined });
|
|
45
|
+
var result = anObject(call($return, iterator));
|
|
58
46
|
asyncFromSyncIteratorContinuation(result, resolve, reject);
|
|
59
47
|
});
|
|
60
48
|
}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
var call = require('../internals/function-call');
|
|
2
|
+
var getBuiltIn = require('../internals/get-built-in');
|
|
3
|
+
var getMethod = require('../internals/get-method');
|
|
4
|
+
|
|
5
|
+
module.exports = function (iterator, method, argument, reject) {
|
|
6
|
+
try {
|
|
7
|
+
var returnMethod = getMethod(iterator, 'return');
|
|
8
|
+
if (returnMethod) {
|
|
9
|
+
return getBuiltIn('Promise').resolve(call(returnMethod, iterator)).then(function () {
|
|
10
|
+
method(argument);
|
|
11
|
+
}, function (error) {
|
|
12
|
+
reject(error);
|
|
13
|
+
});
|
|
14
|
+
}
|
|
15
|
+
} catch (error2) {
|
|
16
|
+
return reject(error2);
|
|
17
|
+
} method(argument);
|
|
18
|
+
};
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
var call = require('../internals/function-call');
|
|
3
|
+
var perform = require('../internals/perform');
|
|
3
4
|
var anObject = require('../internals/an-object');
|
|
4
5
|
var create = require('../internals/object-create');
|
|
5
6
|
var createNonEnumerableProperty = require('../internals/create-non-enumerable-property');
|
|
@@ -9,68 +10,118 @@ var InternalStateModule = require('../internals/internal-state');
|
|
|
9
10
|
var getBuiltIn = require('../internals/get-built-in');
|
|
10
11
|
var getMethod = require('../internals/get-method');
|
|
11
12
|
var AsyncIteratorPrototype = require('../internals/async-iterator-prototype');
|
|
13
|
+
var iteratorClose = require('../internals/iterator-close');
|
|
12
14
|
|
|
13
15
|
var Promise = getBuiltIn('Promise');
|
|
14
16
|
|
|
15
|
-
var
|
|
17
|
+
var ASYNC_ITERATOR_HELPER = 'AsyncIteratorHelper';
|
|
18
|
+
var WRAP_FOR_VALID_ASYNC_ITERATOR = 'WrapForValidAsyncIterator';
|
|
16
19
|
var setInternalState = InternalStateModule.set;
|
|
17
|
-
var getInternalState = InternalStateModule.getterFor(ASYNC_ITERATOR_PROXY);
|
|
18
20
|
|
|
19
21
|
var TO_STRING_TAG = wellKnownSymbol('toStringTag');
|
|
20
22
|
|
|
23
|
+
var createAsyncIteratorProxyPrototype = function (IS_ITERATOR) {
|
|
24
|
+
var IS_GENERATOR = !IS_ITERATOR;
|
|
25
|
+
var ASYNC_ITERATOR_PROXY = IS_ITERATOR ? WRAP_FOR_VALID_ASYNC_ITERATOR : ASYNC_ITERATOR_HELPER;
|
|
26
|
+
|
|
27
|
+
var getInternalState = InternalStateModule.getterFor(ASYNC_ITERATOR_PROXY);
|
|
28
|
+
|
|
29
|
+
var getStateOrEarlyExit = function (that) {
|
|
30
|
+
var stateCompletion = perform(function () {
|
|
31
|
+
return getInternalState(that);
|
|
32
|
+
});
|
|
33
|
+
|
|
34
|
+
var stateError = stateCompletion.error;
|
|
35
|
+
var state = stateCompletion.value;
|
|
36
|
+
|
|
37
|
+
if (stateError || (IS_GENERATOR && state.done)) {
|
|
38
|
+
return { exit: true, value: stateError ? Promise.reject(state) : Promise.resolve({ done: true, value: undefined }) };
|
|
39
|
+
} return { exit: false, value: state };
|
|
40
|
+
};
|
|
41
|
+
|
|
42
|
+
var enqueue = function (state, handler) {
|
|
43
|
+
var task = function () {
|
|
44
|
+
var promise = handler();
|
|
45
|
+
if (IS_GENERATOR) {
|
|
46
|
+
state.awaiting = promise;
|
|
47
|
+
var clean = function () {
|
|
48
|
+
if (state.awaiting === promise) state.awaiting = null;
|
|
49
|
+
};
|
|
50
|
+
promise.then(clean, clean);
|
|
51
|
+
} return promise;
|
|
52
|
+
};
|
|
53
|
+
|
|
54
|
+
return state.awaiting ? state.awaiting = state.awaiting.then(task, task) : task();
|
|
55
|
+
};
|
|
56
|
+
|
|
57
|
+
var AsyncIteratorProxyPrototype = defineBuiltIns(create(AsyncIteratorPrototype), {
|
|
58
|
+
next: function next() {
|
|
59
|
+
var stateCompletion = getStateOrEarlyExit(this);
|
|
60
|
+
var exit = stateCompletion.exit;
|
|
61
|
+
var state = stateCompletion.value;
|
|
62
|
+
|
|
63
|
+
return exit ? state : enqueue(state, function () {
|
|
64
|
+
var handlerCompletion = perform(function () {
|
|
65
|
+
return anObject(state.nextHandler(Promise));
|
|
66
|
+
});
|
|
67
|
+
var handlerError = handlerCompletion.error;
|
|
68
|
+
var value = handlerCompletion.value;
|
|
69
|
+
if (handlerError) state.done = true;
|
|
70
|
+
return handlerError ? Promise.reject(value) : Promise.resolve(value);
|
|
71
|
+
});
|
|
72
|
+
},
|
|
73
|
+
'return': function () {
|
|
74
|
+
var stateCompletion = getStateOrEarlyExit(this);
|
|
75
|
+
var exit = stateCompletion.exit;
|
|
76
|
+
var state = stateCompletion.value;
|
|
77
|
+
|
|
78
|
+
return exit ? state : enqueue(state, function () {
|
|
79
|
+
return new Promise(function (resolve, reject) {
|
|
80
|
+
var iterator = state.iterator;
|
|
81
|
+
var innerIterator = state.innerIterator;
|
|
82
|
+
state.done = true;
|
|
83
|
+
if (innerIterator) try {
|
|
84
|
+
iteratorClose(innerIterator, 'return');
|
|
85
|
+
} catch (error) {
|
|
86
|
+
return iteratorClose(iterator, 'throw', error);
|
|
87
|
+
}
|
|
88
|
+
var $$return = getMethod(iterator, 'return');
|
|
89
|
+
if ($$return === undefined) return resolve({ done: true, value: undefined });
|
|
90
|
+
Promise.resolve(call($$return, iterator)).then(function (result) {
|
|
91
|
+
anObject(result);
|
|
92
|
+
resolve({ done: true, value: undefined });
|
|
93
|
+
}, reject);
|
|
94
|
+
});
|
|
95
|
+
});
|
|
96
|
+
}
|
|
97
|
+
});
|
|
98
|
+
|
|
99
|
+
if (IS_GENERATOR) {
|
|
100
|
+
createNonEnumerableProperty(AsyncIteratorProxyPrototype, TO_STRING_TAG, 'Async Iterator Helper');
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
return AsyncIteratorProxyPrototype;
|
|
104
|
+
};
|
|
105
|
+
|
|
106
|
+
var AsyncIteratorHelperPrototype = createAsyncIteratorProxyPrototype(false);
|
|
107
|
+
var WrapForValidAsyncIteratorPrototype = createAsyncIteratorProxyPrototype(true);
|
|
108
|
+
|
|
21
109
|
module.exports = function (nextHandler, IS_ITERATOR) {
|
|
110
|
+
var ASYNC_ITERATOR_PROXY = IS_ITERATOR ? WRAP_FOR_VALID_ASYNC_ITERATOR : ASYNC_ITERATOR_HELPER;
|
|
111
|
+
|
|
22
112
|
var AsyncIteratorProxy = function AsyncIterator(record, state) {
|
|
23
113
|
if (state) {
|
|
24
114
|
state.iterator = record.iterator;
|
|
25
115
|
state.next = record.next;
|
|
26
116
|
} else state = record;
|
|
27
117
|
state.type = ASYNC_ITERATOR_PROXY;
|
|
118
|
+
state.nextHandler = nextHandler;
|
|
28
119
|
state.done = false;
|
|
29
|
-
state.
|
|
120
|
+
state.awaiting = null;
|
|
30
121
|
setInternalState(this, state);
|
|
31
122
|
};
|
|
32
123
|
|
|
33
|
-
AsyncIteratorProxy.prototype =
|
|
34
|
-
next: function next(arg) {
|
|
35
|
-
var that = this;
|
|
36
|
-
var hasArgument = !!arguments.length;
|
|
37
|
-
return new Promise(function (resolve) {
|
|
38
|
-
var state = getInternalState(that);
|
|
39
|
-
var args = hasArgument ? [state.ignoreArgument ? undefined : arg] : IS_ITERATOR ? [] : [undefined];
|
|
40
|
-
state.ignoreArgument = false;
|
|
41
|
-
resolve(state.done ? { done: true, value: undefined } : anObject(call(nextHandler, state, Promise, args)));
|
|
42
|
-
});
|
|
43
|
-
},
|
|
44
|
-
'return': function (value) {
|
|
45
|
-
var that = this;
|
|
46
|
-
return new Promise(function (resolve, reject) {
|
|
47
|
-
var state = getInternalState(that);
|
|
48
|
-
var iterator = state.iterator;
|
|
49
|
-
state.done = true;
|
|
50
|
-
var $$return = getMethod(iterator, 'return');
|
|
51
|
-
if ($$return === undefined) return resolve({ done: true, value: value });
|
|
52
|
-
Promise.resolve(call($$return, iterator, value)).then(function (result) {
|
|
53
|
-
anObject(result);
|
|
54
|
-
resolve({ done: true, value: value });
|
|
55
|
-
}, reject);
|
|
56
|
-
});
|
|
57
|
-
},
|
|
58
|
-
'throw': function (value) {
|
|
59
|
-
var that = this;
|
|
60
|
-
return new Promise(function (resolve, reject) {
|
|
61
|
-
var state = getInternalState(that);
|
|
62
|
-
var iterator = state.iterator;
|
|
63
|
-
state.done = true;
|
|
64
|
-
var $$throw = getMethod(iterator, 'throw');
|
|
65
|
-
if ($$throw === undefined) return reject(value);
|
|
66
|
-
resolve(call($$throw, iterator, value));
|
|
67
|
-
});
|
|
68
|
-
}
|
|
69
|
-
});
|
|
70
|
-
|
|
71
|
-
if (!IS_ITERATOR) {
|
|
72
|
-
createNonEnumerableProperty(AsyncIteratorProxy.prototype, TO_STRING_TAG, 'Generator');
|
|
73
|
-
}
|
|
124
|
+
AsyncIteratorProxy.prototype = IS_ITERATOR ? WrapForValidAsyncIteratorPrototype : AsyncIteratorHelperPrototype;
|
|
74
125
|
|
|
75
126
|
return AsyncIteratorProxy;
|
|
76
127
|
};
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
// https://github.com/tc39/proposal-iterator-helpers
|
|
3
|
+
var call = require('../internals/function-call');
|
|
4
|
+
var anObject = require('../internals/an-object');
|
|
5
|
+
var getIteratorDirect = require('../internals/get-iterator-direct');
|
|
6
|
+
var createAsyncIteratorProxy = require('../internals/async-iterator-create-proxy');
|
|
7
|
+
|
|
8
|
+
var AsyncIteratorProxy = createAsyncIteratorProxy(function (Promise) {
|
|
9
|
+
var state = this;
|
|
10
|
+
var iterator = state.iterator;
|
|
11
|
+
|
|
12
|
+
return Promise.resolve(anObject(call(state.next, iterator))).then(function (step) {
|
|
13
|
+
if (anObject(step).done) {
|
|
14
|
+
state.done = true;
|
|
15
|
+
return { done: true, value: undefined };
|
|
16
|
+
}
|
|
17
|
+
return { done: false, value: [state.index++, step.value] };
|
|
18
|
+
}).then(null, function (error) {
|
|
19
|
+
state.done = true;
|
|
20
|
+
throw error;
|
|
21
|
+
});
|
|
22
|
+
});
|
|
23
|
+
|
|
24
|
+
module.exports = function indexed() {
|
|
25
|
+
return new AsyncIteratorProxy(getIteratorDirect(this), {
|
|
26
|
+
index: 0
|
|
27
|
+
});
|
|
28
|
+
};
|
|
@@ -7,7 +7,7 @@ var anObject = require('../internals/an-object');
|
|
|
7
7
|
var doesNotExceedSafeInteger = require('../internals/does-not-exceed-safe-integer');
|
|
8
8
|
var getBuiltIn = require('../internals/get-built-in');
|
|
9
9
|
var getIteratorDirect = require('../internals/get-iterator-direct');
|
|
10
|
-
var
|
|
10
|
+
var closeAsyncIteration = require('../internals/async-iterator-close');
|
|
11
11
|
|
|
12
12
|
var createMethod = function (TYPE) {
|
|
13
13
|
var IS_TO_ARRAY = TYPE == 0;
|
|
@@ -24,28 +24,15 @@ var createMethod = function (TYPE) {
|
|
|
24
24
|
if (MAPPING || !IS_TO_ARRAY) aCallable(fn);
|
|
25
25
|
|
|
26
26
|
return new Promise(function (resolve, reject) {
|
|
27
|
-
var
|
|
28
|
-
|
|
29
|
-
var returnMethod = getMethod(iterator, 'return');
|
|
30
|
-
if (returnMethod) {
|
|
31
|
-
return Promise.resolve(call(returnMethod, iterator)).then(function () {
|
|
32
|
-
method(argument);
|
|
33
|
-
}, function (error) {
|
|
34
|
-
reject(error);
|
|
35
|
-
});
|
|
36
|
-
}
|
|
37
|
-
} catch (error2) {
|
|
38
|
-
return reject(error2);
|
|
39
|
-
} method(argument);
|
|
40
|
-
};
|
|
41
|
-
|
|
42
|
-
var onError = function (error) {
|
|
43
|
-
closeIteration(reject, error);
|
|
27
|
+
var ifAbruptCloseAsyncIterator = function (error) {
|
|
28
|
+
closeAsyncIteration(iterator, reject, error, reject);
|
|
44
29
|
};
|
|
45
30
|
|
|
46
31
|
var loop = function () {
|
|
47
32
|
try {
|
|
48
|
-
if (IS_TO_ARRAY && MAPPING)
|
|
33
|
+
if (IS_TO_ARRAY && MAPPING) try {
|
|
34
|
+
doesNotExceedSafeInteger(index);
|
|
35
|
+
} catch (error5) { ifAbruptCloseAsyncIterator(error5); }
|
|
49
36
|
Promise.resolve(anObject(call(next, iterator))).then(function (step) {
|
|
50
37
|
try {
|
|
51
38
|
if (anObject(step).done) {
|
|
@@ -55,27 +42,31 @@ var createMethod = function (TYPE) {
|
|
|
55
42
|
} else resolve(IS_SOME ? false : IS_EVERY || undefined);
|
|
56
43
|
} else {
|
|
57
44
|
var value = step.value;
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
45
|
+
try {
|
|
46
|
+
if (MAPPING) {
|
|
47
|
+
Promise.resolve(IS_TO_ARRAY ? fn(value, index) : fn(value)).then(function (result) {
|
|
48
|
+
if (IS_FOR_EACH) {
|
|
49
|
+
loop();
|
|
50
|
+
} else if (IS_EVERY) {
|
|
51
|
+
result ? loop() : closeAsyncIteration(iterator, resolve, false, reject);
|
|
52
|
+
} else if (IS_TO_ARRAY) {
|
|
53
|
+
try {
|
|
54
|
+
target[index++] = result;
|
|
55
|
+
loop();
|
|
56
|
+
} catch (error4) { ifAbruptCloseAsyncIterator(error4); }
|
|
57
|
+
} else {
|
|
58
|
+
result ? closeAsyncIteration(iterator, resolve, IS_SOME || value, reject) : loop();
|
|
59
|
+
}
|
|
60
|
+
}, ifAbruptCloseAsyncIterator);
|
|
61
|
+
} else {
|
|
62
|
+
target[index++] = value;
|
|
63
|
+
loop();
|
|
64
|
+
}
|
|
65
|
+
} catch (error3) { ifAbruptCloseAsyncIterator(error3); }
|
|
75
66
|
}
|
|
76
|
-
} catch (
|
|
77
|
-
},
|
|
78
|
-
} catch (
|
|
67
|
+
} catch (error2) { reject(error2); }
|
|
68
|
+
}, reject);
|
|
69
|
+
} catch (error) { reject(error); }
|
|
79
70
|
};
|
|
80
71
|
|
|
81
72
|
loop();
|
|
@@ -1 +1,6 @@
|
|
|
1
|
-
|
|
1
|
+
var IS_DENO = require('../internals/engine-is-deno');
|
|
2
|
+
var IS_NODE = require('../internals/engine-is-node');
|
|
3
|
+
|
|
4
|
+
module.exports = !IS_DENO && !IS_NODE
|
|
5
|
+
&& typeof window == 'object'
|
|
6
|
+
&& typeof document == 'object';
|
|
@@ -8,53 +8,74 @@ var wellKnownSymbol = require('../internals/well-known-symbol');
|
|
|
8
8
|
var InternalStateModule = require('../internals/internal-state');
|
|
9
9
|
var getMethod = require('../internals/get-method');
|
|
10
10
|
var IteratorPrototype = require('../internals/iterators-core').IteratorPrototype;
|
|
11
|
+
var iteratorClose = require('../internals/iterator-close');
|
|
11
12
|
|
|
12
|
-
var
|
|
13
|
+
var ITERATOR_HELPER = 'IteratorHelper';
|
|
14
|
+
var WRAP_FOR_VALID_ITERATOR = 'WrapForValidIterator';
|
|
13
15
|
var setInternalState = InternalStateModule.set;
|
|
14
|
-
var getInternalState = InternalStateModule.getterFor(ITERATOR_PROXY);
|
|
15
16
|
|
|
16
17
|
var TO_STRING_TAG = wellKnownSymbol('toStringTag');
|
|
17
18
|
|
|
18
|
-
|
|
19
|
-
var
|
|
20
|
-
if (state) {
|
|
21
|
-
state.iterator = record.iterator;
|
|
22
|
-
state.next = record.next;
|
|
23
|
-
} else state = record;
|
|
24
|
-
state.type = ITERATOR_PROXY;
|
|
25
|
-
state.done = false;
|
|
26
|
-
state.ignoreArg = !IS_ITERATOR;
|
|
27
|
-
setInternalState(this, state);
|
|
28
|
-
};
|
|
19
|
+
var createIteratorProxyPrototype = function (IS_ITERATOR) {
|
|
20
|
+
var ITERATOR_PROXY = IS_ITERATOR ? WRAP_FOR_VALID_ITERATOR : ITERATOR_HELPER;
|
|
29
21
|
|
|
30
|
-
|
|
31
|
-
|
|
22
|
+
var getInternalState = InternalStateModule.getterFor(ITERATOR_PROXY);
|
|
23
|
+
|
|
24
|
+
var IteratorProxyPrototype = defineBuiltIns(create(IteratorPrototype), {
|
|
25
|
+
next: function next() {
|
|
32
26
|
var state = getInternalState(this);
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
27
|
+
// for simplification:
|
|
28
|
+
// for `%WrapForValidIteratorPrototype%.next` our `nextHandler` returns `IterResultObject`
|
|
29
|
+
// for `%IteratorHelperPrototype%.next` - just a value
|
|
30
|
+
if (IS_ITERATOR) return state.nextHandler();
|
|
31
|
+
try {
|
|
32
|
+
var result = state.done ? undefined : state.nextHandler();
|
|
33
|
+
return { done: state.done, value: result };
|
|
34
|
+
} catch (error) {
|
|
35
|
+
state.done = true;
|
|
36
|
+
throw error;
|
|
37
|
+
}
|
|
37
38
|
},
|
|
38
|
-
'return': function (
|
|
39
|
+
'return': function () {
|
|
39
40
|
var state = getInternalState(this);
|
|
40
41
|
var iterator = state.iterator;
|
|
42
|
+
var innerIterator = state.innerIterator;
|
|
41
43
|
state.done = true;
|
|
44
|
+
if (innerIterator) try {
|
|
45
|
+
iteratorClose(innerIterator, 'return');
|
|
46
|
+
} catch (error) {
|
|
47
|
+
return iteratorClose(iterator, 'throw', error);
|
|
48
|
+
}
|
|
42
49
|
var $$return = getMethod(iterator, 'return');
|
|
43
|
-
return { done: true, value: $$return ? anObject(call($$return, iterator
|
|
44
|
-
},
|
|
45
|
-
'throw': function (value) {
|
|
46
|
-
var state = getInternalState(this);
|
|
47
|
-
var iterator = state.iterator;
|
|
48
|
-
state.done = true;
|
|
49
|
-
var $$throw = getMethod(iterator, 'throw');
|
|
50
|
-
if ($$throw) return call($$throw, iterator, value);
|
|
51
|
-
throw value;
|
|
50
|
+
return { done: true, value: $$return ? anObject(call($$return, iterator)).value : undefined };
|
|
52
51
|
}
|
|
53
52
|
});
|
|
54
53
|
|
|
55
54
|
if (!IS_ITERATOR) {
|
|
56
|
-
createNonEnumerableProperty(
|
|
55
|
+
createNonEnumerableProperty(IteratorProxyPrototype, TO_STRING_TAG, 'Iterator Helper');
|
|
57
56
|
}
|
|
58
57
|
|
|
58
|
+
return IteratorProxyPrototype;
|
|
59
|
+
};
|
|
60
|
+
|
|
61
|
+
var IteratorHelperPrototype = createIteratorProxyPrototype(false);
|
|
62
|
+
var WrapForValidIteratorPrototype = createIteratorProxyPrototype(true);
|
|
63
|
+
|
|
64
|
+
module.exports = function (nextHandler, IS_ITERATOR) {
|
|
65
|
+
var ITERATOR_PROXY = IS_ITERATOR ? WRAP_FOR_VALID_ITERATOR : ITERATOR_HELPER;
|
|
66
|
+
|
|
67
|
+
var IteratorProxy = function Iterator(record, state) {
|
|
68
|
+
if (state) {
|
|
69
|
+
state.iterator = record.iterator;
|
|
70
|
+
state.next = record.next;
|
|
71
|
+
} else state = record;
|
|
72
|
+
state.type = ITERATOR_PROXY;
|
|
73
|
+
state.nextHandler = nextHandler;
|
|
74
|
+
state.done = false;
|
|
75
|
+
setInternalState(this, state);
|
|
76
|
+
};
|
|
77
|
+
|
|
78
|
+
IteratorProxy.prototype = IS_ITERATOR ? WrapForValidIteratorPrototype : IteratorHelperPrototype;
|
|
79
|
+
|
|
59
80
|
return IteratorProxy;
|
|
60
81
|
};
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
// https://github.com/tc39/proposal-iterator-helpers
|
|
3
|
+
var call = require('../internals/function-call');
|
|
4
|
+
var anObject = require('../internals/an-object');
|
|
5
|
+
var getIteratorDirect = require('../internals/get-iterator-direct');
|
|
6
|
+
var createIteratorProxy = require('../internals/iterator-create-proxy');
|
|
7
|
+
|
|
8
|
+
var IteratorProxy = createIteratorProxy(function () {
|
|
9
|
+
var result = anObject(call(this.next, this.iterator));
|
|
10
|
+
var done = this.done = !!result.done;
|
|
11
|
+
if (!done) return [this.index++, result.value];
|
|
12
|
+
});
|
|
13
|
+
|
|
14
|
+
module.exports = function indexed() {
|
|
15
|
+
return new IteratorProxy(getIteratorDirect(this), {
|
|
16
|
+
index: 0
|
|
17
|
+
});
|
|
18
|
+
};
|
|
@@ -5,6 +5,7 @@ var isForced = require('../internals/is-forced');
|
|
|
5
5
|
var inspectSource = require('../internals/inspect-source');
|
|
6
6
|
var wellKnownSymbol = require('../internals/well-known-symbol');
|
|
7
7
|
var IS_BROWSER = require('../internals/engine-is-browser');
|
|
8
|
+
var IS_DENO = require('../internals/engine-is-deno');
|
|
8
9
|
var IS_PURE = require('../internals/is-pure');
|
|
9
10
|
var V8_VERSION = require('../internals/engine-v8-version');
|
|
10
11
|
|
|
@@ -25,18 +26,18 @@ var FORCED_PROMISE_CONSTRUCTOR = isForced('Promise', function () {
|
|
|
25
26
|
// We can't use @@species feature detection in V8 since it causes
|
|
26
27
|
// deoptimization and performance degradation
|
|
27
28
|
// https://github.com/zloirock/core-js/issues/679
|
|
28
|
-
if (V8_VERSION
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
29
|
+
if (!V8_VERSION || V8_VERSION < 51 || !/native code/.test(PROMISE_CONSTRUCTOR_SOURCE)) {
|
|
30
|
+
// Detect correctness of subclassing with @@species support
|
|
31
|
+
var promise = new NativePromiseConstructor(function (resolve) { resolve(1); });
|
|
32
|
+
var FakePromise = function (exec) {
|
|
33
|
+
exec(function () { /* empty */ }, function () { /* empty */ });
|
|
34
|
+
};
|
|
35
|
+
var constructor = promise.constructor = {};
|
|
36
|
+
constructor[SPECIES] = FakePromise;
|
|
37
|
+
SUBCLASSING = promise.then(function () { /* empty */ }) instanceof FakePromise;
|
|
38
|
+
if (!SUBCLASSING) return true;
|
|
38
39
|
// Unhandled rejections tracking support, NodeJS Promise without it fails @@species test
|
|
39
|
-
return !GLOBAL_CORE_JS_PROMISE && IS_BROWSER && !NATIVE_PROMISE_REJECTION_EVENT;
|
|
40
|
+
} return !GLOBAL_CORE_JS_PROMISE && (IS_BROWSER || IS_DENO) && !NATIVE_PROMISE_REJECTION_EVENT;
|
|
40
41
|
});
|
|
41
42
|
|
|
42
43
|
module.exports = {
|