core-js 3.23.5 → 3.25.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.
- package/README.md +1 -1
- package/actual/object/proto.js +3 -0
- 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/es/index.js +1 -0
- package/es/object/index.js +1 -0
- package/es/object/proto.js +1 -0
- package/features/async-iterator/indexed.js +1 -0
- package/features/iterator/indexed.js +1 -0
- package/features/object/proto.js +1 -0
- package/full/async-iterator/index.js +2 -0
- package/full/async-iterator/indexed.js +8 -0
- package/full/index.js +3 -0
- package/full/iterator/index.js +2 -0
- package/full/iterator/indexed.js +8 -0
- package/full/object/proto.js +3 -0
- package/full/typed-array/to-spliced.js +1 -0
- package/internals/{array-buffer-native.js → array-buffer-basic-detection.js} +0 -0
- package/internals/array-buffer-view-core.js +1 -1
- package/internals/array-buffer.js +3 -3
- package/internals/array-set-length.js +27 -0
- package/internals/array-unique-by.js +2 -1
- package/internals/async-from-sync-iterator.js +7 -19
- package/internals/async-iterator-close.js +18 -0
- package/internals/async-iterator-create-proxy.js +103 -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/collection-from.js +2 -1
- package/internals/collection-strong.js +3 -2
- package/internals/collection-weak.js +3 -2
- package/internals/collection.js +2 -1
- package/internals/date-to-iso-string.js +7 -6
- package/internals/engine-is-browser.js +6 -1
- package/internals/{clear-error-stack.js → error-stack-clear.js} +0 -0
- package/internals/get-iterator-method.js +2 -1
- package/internals/get-method.js +2 -1
- package/internals/internal-state.js +3 -3
- package/internals/is-iterable.js +2 -0
- package/internals/is-null-or-undefined.js +5 -0
- package/internals/is-object.js +8 -1
- package/internals/{create-iterator-constructor.js → iterator-create-constructor.js} +0 -0
- package/internals/iterator-create-proxy.js +56 -32
- package/internals/{define-iterator.js → iterator-define.js} +1 -1
- package/internals/iterator-indexed.js +18 -0
- package/internals/iterators-core.js +2 -1
- package/internals/new-promise-capability.js +3 -1
- package/internals/not-a-nan.js +7 -0
- package/internals/number-parse-float.js +5 -5
- package/internals/numeric-range-iterator.js +8 -7
- package/internals/object-iterator.js +1 -1
- package/internals/promise-constructor-detection.js +12 -11
- package/internals/require-object-coercible.js +3 -1
- package/internals/shared.js +2 -2
- package/internals/species-constructor.js +2 -1
- package/internals/{native-symbol.js → symbol-constructor-detection.js} +0 -0
- package/internals/{native-symbol-registry.js → symbol-registry-detection.js} +1 -1
- package/internals/{native-url.js → url-constructor-detection.js} +0 -0
- package/internals/use-symbol-as-uid.js +1 -1
- package/internals/weak-map-basic-detection.js +6 -0
- package/internals/{define-well-known-symbol.js → well-known-symbol-define.js} +0 -0
- package/internals/well-known-symbol.js +1 -1
- package/internals/wrap-error-constructor-with-cause.js +1 -1
- package/modules/es.aggregate-error.cause.js +1 -0
- package/modules/es.aggregate-error.constructor.js +2 -2
- package/modules/es.array-buffer.slice.js +3 -3
- package/modules/es.array.index-of.js +5 -5
- package/modules/es.array.iterator.js +1 -1
- package/modules/es.array.join.js +2 -2
- package/modules/es.array.push.js +2 -1
- package/modules/es.array.reverse.js +2 -2
- package/modules/es.array.slice.js +2 -2
- package/modules/es.array.sort.js +3 -3
- package/modules/es.array.splice.js +2 -1
- package/modules/es.array.unshift.js +2 -1
- package/modules/es.data-view.constructor.js +1 -1
- package/modules/es.date.now.js +2 -2
- package/modules/es.date.set-year.js +2 -2
- package/modules/es.date.to-string.js +4 -4
- package/modules/es.json.stringify.js +1 -1
- package/modules/es.number.to-exponential.js +11 -11
- package/modules/es.number.to-fixed.js +6 -6
- package/modules/es.number.to-precision.js +5 -5
- package/modules/es.object.get-own-property-symbols.js +1 -1
- package/modules/es.object.proto.js +29 -0
- package/modules/es.regexp.test.js +12 -12
- package/modules/es.regexp.to-string.js +3 -3
- package/modules/es.string.ends-with.js +3 -3
- package/modules/es.string.iterator.js +1 -1
- package/modules/es.string.match-all.js +8 -7
- package/modules/es.string.match.js +2 -1
- package/modules/es.string.replace-all.js +2 -1
- package/modules/es.string.replace.js +2 -1
- package/modules/es.string.search.js +2 -1
- package/modules/es.string.split.js +3 -2
- package/modules/es.string.starts-with.js +3 -3
- package/modules/es.symbol.async-iterator.js +1 -1
- package/modules/es.symbol.constructor.js +2 -2
- package/modules/es.symbol.description.js +4 -4
- package/modules/es.symbol.for.js +1 -1
- package/modules/es.symbol.has-instance.js +1 -1
- package/modules/es.symbol.is-concat-spreadable.js +1 -1
- package/modules/es.symbol.iterator.js +1 -1
- package/modules/es.symbol.key-for.js +1 -1
- package/modules/es.symbol.match-all.js +1 -1
- package/modules/es.symbol.match.js +1 -1
- package/modules/es.symbol.replace.js +1 -1
- package/modules/es.symbol.search.js +1 -1
- package/modules/es.symbol.species.js +1 -1
- package/modules/es.symbol.split.js +1 -1
- package/modules/es.symbol.to-primitive.js +1 -1
- package/modules/es.symbol.to-string-tag.js +1 -1
- package/modules/es.symbol.unscopables.js +1 -1
- package/modules/es.typed-array.sort.js +7 -7
- package/modules/es.weak-map.constructor.js +1 -1
- package/modules/esnext.array.is-template-object.js +1 -1
- package/modules/esnext.async-iterator.as-indexed-pairs.js +4 -24
- package/modules/esnext.async-iterator.drop.js +15 -11
- package/modules/esnext.async-iterator.filter.js +23 -10
- package/modules/esnext.async-iterator.flat-map.js +30 -16
- 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.math.seeded-prng.js +1 -1
- package/modules/esnext.observable.constructor.js +4 -3
- package/modules/esnext.string.code-points.js +1 -1
- package/modules/esnext.symbol.async-dispose.js +1 -1
- package/modules/esnext.symbol.dispose.js +1 -1
- package/modules/esnext.symbol.matcher.js +1 -1
- package/modules/esnext.symbol.metadata-key.js +1 -1
- package/modules/esnext.symbol.metadata.js +1 -1
- package/modules/esnext.symbol.observable.js +1 -1
- package/modules/esnext.symbol.pattern-match.js +1 -1
- package/modules/esnext.symbol.replace-all.js +1 -1
- package/modules/esnext.typed-array.to-spliced.js +1 -0
- package/modules/web.dom-exception.constructor.js +1 -1
- package/modules/web.dom-exception.stack.js +1 -1
- package/modules/web.structured-clone.js +26 -14
- package/modules/web.url-search-params.constructor.js +2 -2
- package/modules/web.url.constructor.js +1 -1
- package/package.json +1 -1
- package/proposals/change-array-by-copy.js +1 -0
- package/proposals/iterator-helpers.js +4 -0
- package/stable/index.js +1 -0
- package/stable/object/proto.js +3 -0
- package/internals/native-weak-map.js +0 -7
package/README.md
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
[](https://opencollective.com/core-js) [](https://www.npmjs.com/package/core-js) [](https://npm-stat.com/charts.html?package=core-js&package=core-js-pure&package=core-js-compat&from=2014-11-18) [](https://npm-stat.com/charts.html?package=core-js&package=core-js-pure&package=core-js-compat&from=2014-11-18) [](https://github.com/zloirock/core-js/actions) [](https://github.com/zloirock/core-js/actions)
|
|
4
4
|
|
|
5
|
-
> Modular standard library for JavaScript. Includes polyfills for [ECMAScript up to
|
|
5
|
+
> Modular standard library for JavaScript. Includes polyfills for [ECMAScript up to 2023](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.
|
|
6
6
|
|
|
7
7
|
## As advertising: the author is looking for a good job -)
|
|
8
8
|
|
|
@@ -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
|
|
package/es/index.js
CHANGED
|
@@ -124,6 +124,7 @@ require('../modules/es.object.keys');
|
|
|
124
124
|
require('../modules/es.object.lookup-getter');
|
|
125
125
|
require('../modules/es.object.lookup-setter');
|
|
126
126
|
require('../modules/es.object.prevent-extensions');
|
|
127
|
+
require('../modules/es.object.proto');
|
|
127
128
|
require('../modules/es.object.seal');
|
|
128
129
|
require('../modules/es.object.set-prototype-of');
|
|
129
130
|
require('../modules/es.object.to-string');
|
package/es/object/index.js
CHANGED
|
@@ -17,6 +17,7 @@ require('../../modules/es.object.is-frozen');
|
|
|
17
17
|
require('../../modules/es.object.is-sealed');
|
|
18
18
|
require('../../modules/es.object.keys');
|
|
19
19
|
require('../../modules/es.object.prevent-extensions');
|
|
20
|
+
require('../../modules/es.object.proto');
|
|
20
21
|
require('../../modules/es.object.seal');
|
|
21
22
|
require('../../modules/es.object.set-prototype-of');
|
|
22
23
|
require('../../modules/es.object.values');
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
require('../../modules/es.object.proto');
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
module.exports = require('../../full/async-iterator/indexed');
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
module.exports = require('../../full/iterator/indexed');
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
module.exports = require('../../full/object/proto');
|
|
@@ -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
|
@@ -124,6 +124,7 @@ require('../modules/es.object.keys');
|
|
|
124
124
|
require('../modules/es.object.lookup-getter');
|
|
125
125
|
require('../modules/es.object.lookup-setter');
|
|
126
126
|
require('../modules/es.object.prevent-extensions');
|
|
127
|
+
require('../modules/es.object.proto');
|
|
127
128
|
require('../modules/es.object.seal');
|
|
128
129
|
require('../modules/es.object.set-prototype-of');
|
|
129
130
|
require('../modules/es.object.to-string');
|
|
@@ -258,6 +259,7 @@ require('../modules/esnext.async-iterator.find');
|
|
|
258
259
|
require('../modules/esnext.async-iterator.flat-map');
|
|
259
260
|
require('../modules/esnext.async-iterator.for-each');
|
|
260
261
|
require('../modules/esnext.async-iterator.from');
|
|
262
|
+
require('../modules/esnext.async-iterator.indexed');
|
|
261
263
|
require('../modules/esnext.async-iterator.map');
|
|
262
264
|
require('../modules/esnext.async-iterator.reduce');
|
|
263
265
|
require('../modules/esnext.async-iterator.some');
|
|
@@ -279,6 +281,7 @@ require('../modules/esnext.iterator.find');
|
|
|
279
281
|
require('../modules/esnext.iterator.flat-map');
|
|
280
282
|
require('../modules/esnext.iterator.for-each');
|
|
281
283
|
require('../modules/esnext.iterator.from');
|
|
284
|
+
require('../modules/esnext.iterator.indexed');
|
|
282
285
|
require('../modules/esnext.iterator.map');
|
|
283
286
|
require('../modules/esnext.iterator.reduce');
|
|
284
287
|
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
|
+
|
|
File without changes
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
'use strict';
|
|
2
|
-
var NATIVE_ARRAY_BUFFER = require('../internals/array-buffer-
|
|
2
|
+
var NATIVE_ARRAY_BUFFER = require('../internals/array-buffer-basic-detection');
|
|
3
3
|
var DESCRIPTORS = require('../internals/descriptors');
|
|
4
4
|
var global = require('../internals/global');
|
|
5
5
|
var isCallable = require('../internals/is-callable');
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
var global = require('../internals/global');
|
|
3
3
|
var uncurryThis = require('../internals/function-uncurry-this');
|
|
4
4
|
var DESCRIPTORS = require('../internals/descriptors');
|
|
5
|
-
var NATIVE_ARRAY_BUFFER = require('../internals/array-buffer-
|
|
5
|
+
var NATIVE_ARRAY_BUFFER = require('../internals/array-buffer-basic-detection');
|
|
6
6
|
var FunctionName = require('../internals/function-name');
|
|
7
7
|
var createNonEnumerableProperty = require('../internals/create-non-enumerable-property');
|
|
8
8
|
var defineBuiltIns = require('../internals/define-built-ins');
|
|
@@ -197,9 +197,9 @@ if (!NATIVE_ARRAY_BUFFER) {
|
|
|
197
197
|
new NativeArrayBuffer();
|
|
198
198
|
new NativeArrayBuffer(1.5);
|
|
199
199
|
new NativeArrayBuffer(NaN);
|
|
200
|
-
return INCORRECT_ARRAY_BUFFER_NAME && !CONFIGURABLE_FUNCTION_NAME;
|
|
200
|
+
return NativeArrayBuffer.length != 1 || INCORRECT_ARRAY_BUFFER_NAME && !CONFIGURABLE_FUNCTION_NAME;
|
|
201
201
|
})) {
|
|
202
|
-
|
|
202
|
+
/* eslint-enable no-new -- required for testing */
|
|
203
203
|
$ArrayBuffer = function ArrayBuffer(length) {
|
|
204
204
|
anInstance(this, ArrayBufferPrototype);
|
|
205
205
|
return new NativeArrayBuffer(toIndex(length));
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
var DESCRIPTORS = require('../internals/descriptors');
|
|
3
|
+
var isArray = require('../internals/is-array');
|
|
4
|
+
|
|
5
|
+
var $TypeError = TypeError;
|
|
6
|
+
// eslint-disable-next-line es-x/no-object-getownpropertydescriptor -- safe
|
|
7
|
+
var getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;
|
|
8
|
+
|
|
9
|
+
// Safari < 13 does not throw an error in this case
|
|
10
|
+
var SILENT_ON_NON_WRITABLE_LENGTH_SET = DESCRIPTORS && !function () {
|
|
11
|
+
// makes no sense without proper strict mode support
|
|
12
|
+
if (this !== undefined) return true;
|
|
13
|
+
try {
|
|
14
|
+
// eslint-disable-next-line es-x/no-object-defineproperty -- safe
|
|
15
|
+
Object.defineProperty([], 'length', { writable: false }).length = 1;
|
|
16
|
+
} catch (error) {
|
|
17
|
+
return error instanceof TypeError;
|
|
18
|
+
}
|
|
19
|
+
}();
|
|
20
|
+
|
|
21
|
+
module.exports = SILENT_ON_NON_WRITABLE_LENGTH_SET ? function (O, length) {
|
|
22
|
+
if (isArray(O) && !getOwnPropertyDescriptor(O, 'length').writable) {
|
|
23
|
+
throw $TypeError('Cannot set read only .length');
|
|
24
|
+
} return O.length = length;
|
|
25
|
+
} : function (O, length) {
|
|
26
|
+
return O.length = length;
|
|
27
|
+
};
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
var getBuiltIn = require('../internals/get-built-in');
|
|
3
3
|
var uncurryThis = require('../internals/function-uncurry-this');
|
|
4
4
|
var aCallable = require('../internals/a-callable');
|
|
5
|
+
var isNullOrUndefined = require('../internals/is-null-or-undefined');
|
|
5
6
|
var lengthOfArrayLike = require('../internals/length-of-array-like');
|
|
6
7
|
var toObject = require('../internals/to-object');
|
|
7
8
|
var arraySpeciesCreate = require('../internals/array-species-create');
|
|
@@ -20,7 +21,7 @@ module.exports = function uniqueBy(resolver) {
|
|
|
20
21
|
var length = lengthOfArrayLike(that);
|
|
21
22
|
var result = arraySpeciesCreate(that, 0);
|
|
22
23
|
var map = new Map();
|
|
23
|
-
var resolverFunction = resolver
|
|
24
|
+
var resolverFunction = !isNullOrUndefined(resolver) ? aCallable(resolver) : function (value) {
|
|
24
25
|
return value;
|
|
25
26
|
};
|
|
26
27
|
var index, item, key;
|
|
@@ -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');
|
|
@@ -17,7 +17,7 @@ var getInternalState = InternalStateModule.getterFor(ASYNC_FROM_SYNC_ITERATOR);
|
|
|
17
17
|
var asyncFromSyncIteratorContinuation = function (result, resolve, reject) {
|
|
18
18
|
var done = result.done;
|
|
19
19
|
Promise.resolve(result.value).then(function (value) {
|
|
20
|
-
resolve({
|
|
20
|
+
resolve({ value: value, done: done });
|
|
21
21
|
}, reject);
|
|
22
22
|
};
|
|
23
23
|
|
|
@@ -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({
|
|
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({ value: undefined, done: true });
|
|
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,126 @@ 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
|
|
|
21
|
-
|
|
22
|
-
var
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
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({ value: undefined, done: true }) };
|
|
39
|
+
} return { exit: false, value: state };
|
|
31
40
|
};
|
|
32
41
|
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
var
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
var
|
|
39
|
-
|
|
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);
|
|
42
71
|
});
|
|
43
72
|
},
|
|
44
|
-
'return': function (
|
|
45
|
-
var
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
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 () {
|
|
49
79
|
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
80
|
var iterator = state.iterator;
|
|
63
|
-
|
|
64
|
-
var
|
|
65
|
-
|
|
66
|
-
|
|
81
|
+
var innerIterator = state.innerIterator;
|
|
82
|
+
var returnMethod, result;
|
|
83
|
+
var completion = perform(function () {
|
|
84
|
+
if (innerIterator) try {
|
|
85
|
+
iteratorClose(innerIterator, 'return');
|
|
86
|
+
} catch (error) {
|
|
87
|
+
return iteratorClose(iterator, 'throw', error);
|
|
88
|
+
}
|
|
89
|
+
return getMethod(iterator, 'return');
|
|
90
|
+
});
|
|
91
|
+
returnMethod = result = completion.value;
|
|
92
|
+
if (completion.error) return Promise.reject(result);
|
|
93
|
+
if (returnMethod === undefined) return Promise.resolve({ value: undefined, done: true });
|
|
94
|
+
completion = perform(function () {
|
|
95
|
+
return call(returnMethod, iterator);
|
|
96
|
+
});
|
|
97
|
+
result = completion.value;
|
|
98
|
+
if (completion.error) return Promise.reject(result);
|
|
99
|
+
return IS_ITERATOR ? Promise.resolve(result) : Promise.resolve(result).then(function (resolved) {
|
|
100
|
+
anObject(resolved);
|
|
101
|
+
return { value: undefined, done: true };
|
|
102
|
+
});
|
|
67
103
|
});
|
|
68
104
|
}
|
|
69
105
|
});
|
|
70
106
|
|
|
71
|
-
if (
|
|
72
|
-
createNonEnumerableProperty(
|
|
107
|
+
if (IS_GENERATOR) {
|
|
108
|
+
createNonEnumerableProperty(AsyncIteratorProxyPrototype, TO_STRING_TAG, 'Async Iterator Helper');
|
|
73
109
|
}
|
|
74
110
|
|
|
111
|
+
return AsyncIteratorProxyPrototype;
|
|
112
|
+
};
|
|
113
|
+
|
|
114
|
+
var AsyncIteratorHelperPrototype = createAsyncIteratorProxyPrototype(false);
|
|
115
|
+
var WrapForValidAsyncIteratorPrototype = createAsyncIteratorProxyPrototype(true);
|
|
116
|
+
|
|
117
|
+
module.exports = function (nextHandler, IS_ITERATOR) {
|
|
118
|
+
var ASYNC_ITERATOR_PROXY = IS_ITERATOR ? WRAP_FOR_VALID_ASYNC_ITERATOR : ASYNC_ITERATOR_HELPER;
|
|
119
|
+
|
|
120
|
+
var AsyncIteratorProxy = function AsyncIterator(record, state) {
|
|
121
|
+
if (state) {
|
|
122
|
+
state.iterator = record.iterator;
|
|
123
|
+
state.next = record.next;
|
|
124
|
+
} else state = record;
|
|
125
|
+
state.type = ASYNC_ITERATOR_PROXY;
|
|
126
|
+
state.nextHandler = nextHandler;
|
|
127
|
+
state.done = false;
|
|
128
|
+
state.awaiting = null;
|
|
129
|
+
setInternalState(this, state);
|
|
130
|
+
};
|
|
131
|
+
|
|
132
|
+
AsyncIteratorProxy.prototype = IS_ITERATOR ? WrapForValidAsyncIteratorPrototype : AsyncIteratorHelperPrototype;
|
|
133
|
+
|
|
75
134
|
return AsyncIteratorProxy;
|
|
76
135
|
};
|
|
@@ -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 { value: undefined, done: true };
|
|
16
|
+
}
|
|
17
|
+
return { value: [state.index++, step.value], done: false };
|
|
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();
|
|
@@ -4,6 +4,7 @@ var bind = require('../internals/function-bind-context');
|
|
|
4
4
|
var call = require('../internals/function-call');
|
|
5
5
|
var aCallable = require('../internals/a-callable');
|
|
6
6
|
var aConstructor = require('../internals/a-constructor');
|
|
7
|
+
var isNullOrUndefined = require('../internals/is-null-or-undefined');
|
|
7
8
|
var iterate = require('../internals/iterate');
|
|
8
9
|
|
|
9
10
|
var push = [].push;
|
|
@@ -15,7 +16,7 @@ module.exports = function from(source /* , mapFn, thisArg */) {
|
|
|
15
16
|
aConstructor(this);
|
|
16
17
|
mapping = mapFn !== undefined;
|
|
17
18
|
if (mapping) aCallable(mapFn);
|
|
18
|
-
if (source
|
|
19
|
+
if (isNullOrUndefined(source)) return new this();
|
|
19
20
|
array = [];
|
|
20
21
|
if (mapping) {
|
|
21
22
|
n = 0;
|