core-js 3.47.0 → 3.49.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +2 -1
- package/README.md +2 -2
- package/actual/map/get-or-insert-computed.js +2 -3
- package/actual/map/get-or-insert.js +2 -3
- package/actual/map/group-by.js +2 -0
- package/actual/weak-map/get-or-insert-computed.js +2 -3
- package/actual/weak-map/get-or-insert.js +2 -3
- package/configurator.js +1 -1
- package/es/index.js +4 -0
- package/es/map/get-or-insert-computed.js +6 -0
- package/es/map/get-or-insert.js +6 -0
- package/es/map/group-by.js +2 -0
- package/es/map/index.js +2 -0
- package/es/object/define-properties.js +2 -2
- package/es/object/define-property.js +2 -2
- package/es/object/get-own-property-descriptor.js +2 -2
- package/es/promise/try.js +2 -2
- package/es/weak-map/get-or-insert-computed.js +6 -0
- package/es/weak-map/get-or-insert.js +6 -0
- package/es/weak-map/index.js +2 -0
- package/full/index.js +4 -0
- package/internals/advance-string-index.js +1 -1
- package/internals/array-buffer-transfer.js +4 -1
- package/internals/array-buffer-view-core.js +1 -1
- package/internals/array-buffer.js +1 -2
- package/internals/array-from-async.js +5 -7
- package/internals/array-from.js +9 -3
- package/internals/array-iteration.js +11 -13
- package/internals/array-unique-by.js +3 -3
- package/internals/async-from-sync-iterator.js +28 -4
- package/internals/async-iterator-close.js +11 -3
- package/internals/async-iterator-create-proxy.js +47 -20
- package/internals/async-iterator-iteration.js +11 -6
- package/internals/async-iterator-map.js +20 -18
- package/internals/does-not-exceed-safe-integer.js +1 -1
- package/internals/environment-is-ios.js +1 -2
- package/internals/flatten-into-array.js +2 -1
- package/internals/function-bind-native.js +1 -1
- package/internals/function-name.js +1 -1
- package/internals/iterate.js +8 -3
- package/internals/iterator-create-proxy.js +4 -1
- package/internals/iterator-window.js +2 -2
- package/internals/iterator-zip.js +4 -3
- package/internals/native-raw-json.js +2 -2
- package/internals/numeric-range-iterator.js +9 -4
- package/internals/regexp-exec.js +20 -13
- package/internals/set-difference.js +1 -1
- package/internals/set-is-disjoint-from.js +1 -1
- package/internals/set-is-superset-of.js +1 -1
- package/internals/shared-store.js +3 -3
- package/internals/string-pad.js +2 -1
- package/internals/string-parse.js +1 -1
- package/internals/string-repeat.js +2 -1
- package/internals/to-uint8-clamped.js +11 -3
- package/internals/typed-array-constructor.js +1 -2
- package/internals/typed-array-from.js +3 -1
- package/internals/uint8-from-hex.js +10 -10
- package/modules/es.array.concat.js +2 -1
- package/modules/es.array.flat-map.js +1 -1
- package/modules/es.array.flat.js +2 -1
- package/modules/es.array.from-async.js +1 -1
- package/modules/es.array.includes.js +7 -1
- package/modules/es.array.of.js +2 -1
- package/modules/es.array.slice.js +2 -1
- package/modules/es.array.sort.js +3 -1
- package/modules/es.array.splice.js +1 -1
- package/modules/es.array.to-reversed.js +8 -2
- package/modules/es.array.to-spliced.js +4 -3
- package/modules/es.array.with.js +13 -2
- package/modules/es.data-view.get-float16.js +1 -1
- package/modules/es.data-view.set-float16.js +2 -1
- package/modules/es.date.set-year.js +4 -1
- package/modules/es.error.is-error.js +1 -1
- package/modules/es.escape.js +1 -1
- package/modules/es.iterator.concat.js +4 -3
- package/modules/es.iterator.flat-map.js +15 -1
- package/modules/es.iterator.take.js +7 -2
- package/modules/es.iterator.to-array.js +5 -3
- package/modules/es.json.parse.js +13 -1
- package/modules/es.json.stringify.js +6 -3
- package/modules/es.map.get-or-insert-computed.js +24 -0
- package/modules/es.map.get-or-insert.js +18 -0
- package/modules/es.math.asinh.js +4 -1
- package/modules/es.math.atanh.js +2 -2
- package/modules/es.math.sum-precise.js +3 -3
- package/modules/es.number.to-exponential.js +15 -6
- package/modules/es.reflect.construct.js +1 -1
- package/modules/es.reflect.define-property.js +10 -0
- package/modules/es.reflect.delete-property.js +5 -2
- package/modules/es.reflect.get.js +9 -7
- package/modules/es.reflect.set.js +14 -9
- package/modules/es.regexp.constructor.js +18 -7
- package/modules/es.string.ends-with.js +1 -1
- package/modules/es.string.from-code-point.js +2 -2
- package/modules/es.string.match-all.js +1 -1
- package/modules/es.string.match.js +2 -2
- package/modules/es.string.replace.js +9 -8
- package/modules/es.string.split.js +7 -5
- package/modules/es.string.starts-with.js +1 -1
- package/modules/es.string.substr.js +5 -7
- package/modules/es.symbol.constructor.js +3 -2
- package/modules/es.symbol.description.js +9 -0
- package/modules/es.typed-array.map.js +3 -4
- package/modules/es.typed-array.sort.js +3 -3
- package/modules/es.typed-array.to-reversed.js +7 -2
- package/modules/es.typed-array.with.js +11 -3
- package/modules/es.uint8-array.from-base64.js +1 -1
- package/modules/es.uint8-array.from-hex.js +1 -1
- package/modules/es.uint8-array.set-from-base64.js +1 -1
- package/modules/es.uint8-array.set-from-hex.js +15 -2
- package/modules/es.uint8-array.to-base64.js +1 -1
- package/modules/es.uint8-array.to-hex.js +6 -4
- package/modules/es.weak-map.get-or-insert-computed.js +36 -0
- package/modules/es.weak-map.get-or-insert.js +18 -0
- package/modules/esnext.array.is-template-object.js +1 -1
- package/modules/esnext.async-iterator.reduce.js +2 -2
- package/modules/esnext.async-iterator.take.js +4 -2
- package/modules/esnext.bigint.range.js +1 -1
- package/modules/esnext.iterator.range.js +1 -1
- package/modules/esnext.iterator.zip-keyed.js +3 -2
- package/modules/esnext.iterator.zip.js +4 -3
- package/modules/esnext.map.get-or-insert-computed.js +2 -24
- package/modules/esnext.map.get-or-insert.js +2 -18
- package/modules/esnext.number.from-string.js +30 -3
- package/modules/esnext.number.range.js +1 -1
- package/modules/esnext.observable.from.js +5 -2
- package/modules/esnext.string.dedent.js +1 -1
- package/modules/esnext.weak-map.get-or-insert-computed.js +2 -35
- package/modules/esnext.weak-map.get-or-insert.js +2 -18
- package/modules/web.atob.js +15 -6
- package/modules/web.btoa.js +10 -3
- package/modules/web.structured-clone.js +2 -2
- package/modules/web.url-search-params.constructor.js +25 -10
- package/modules/web.url-search-params.delete.js +6 -9
- package/modules/web.url.constructor.js +55 -26
- package/modules/web.url.parse.js +1 -1
- package/package.json +5 -1
- package/stable/index.js +4 -0
- package/stable/map/get-or-insert-computed.js +4 -0
- package/stable/map/get-or-insert.js +4 -0
- package/stable/weak-map/get-or-insert-computed.js +4 -0
- package/stable/weak-map/get-or-insert.js +4 -0
- package/stage/3.js +0 -1
- package/stage/4.js +1 -0
- package/internals/array-to-reversed.js +0 -12
- package/internals/array-with.js +0 -18
package/LICENSE
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
Copyright (c)
|
|
1
|
+
Copyright (c) 2013–2025 Denis Pushkarev (zloirock.ru)
|
|
2
|
+
Copyright (c) 2025–2026 CoreJS Company (core-js.io)
|
|
2
3
|
|
|
3
4
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
4
5
|
of this software and associated documentation files (the "Software"), to deal
|
package/README.md
CHANGED
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
**I highly recommend reading this: [So, what's next?](https://github.com/zloirock/core-js/blob/master/docs/2023-02-14-so-whats-next.md)**
|
|
10
10
|
---
|
|
11
11
|
|
|
12
|
-
>
|
|
12
|
+
> [`core-js`](https://core-js.io) is a modular standard library for JavaScript. Includes polyfills for ECMAScript up to 2026: [promises](https://core-js.io/docs/features/ecmascript/promise), [symbols](https://core-js.io/docs/features/ecmascript/symbol), [collections](https://core-js.io/docs/features/ecmascript/collections), [iterators](https://core-js.io/docs/features/ecmascript/iterator), [typed arrays](https://core-js.io/docs/features/ecmascript/typed-arrays), many other features, ECMAScript proposals, some cross-platform WHATWG / W3C features and proposals like [`URL`](https://core-js.io/docs/features/web-standards/url-and-urlsearchparams). You can load only required features or use it without global namespace pollution.
|
|
13
13
|
|
|
14
14
|
## Raising funds
|
|
15
15
|
|
|
@@ -92,4 +92,4 @@ Iterator.concat([1, 2], function * (i) { while (true) yield i++; }(3))
|
|
|
92
92
|
structuredClone(new Set([1, 2, 3])); // => new Set([1, 2, 3])
|
|
93
93
|
```
|
|
94
94
|
|
|
95
|
-
**It's a global version (first 2 examples), for more info see [`core-js` documentation](https://
|
|
95
|
+
**It's a global version (first 2 examples), for more info see [`core-js` documentation](https://core-js.io).**
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
'use strict';
|
|
2
|
-
require('../../
|
|
2
|
+
var parent = require('../../stable/map/get-or-insert-computed');
|
|
3
3
|
require('../../modules/esnext.map.get-or-insert-computed');
|
|
4
|
-
var entryUnbind = require('../../internals/entry-unbind');
|
|
5
4
|
|
|
6
|
-
module.exports =
|
|
5
|
+
module.exports = parent;
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
'use strict';
|
|
2
|
-
require('../../
|
|
2
|
+
var parent = require('../../stable/map/get-or-insert');
|
|
3
3
|
require('../../modules/esnext.map.get-or-insert');
|
|
4
|
-
var entryUnbind = require('../../internals/entry-unbind');
|
|
5
4
|
|
|
6
|
-
module.exports =
|
|
5
|
+
module.exports = parent;
|
package/actual/map/group-by.js
CHANGED
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
'use strict';
|
|
2
|
-
require('../../
|
|
2
|
+
var parent = require('../../stable/weak-map/get-or-insert-computed');
|
|
3
3
|
require('../../modules/esnext.weak-map.get-or-insert-computed');
|
|
4
|
-
var entryUnbind = require('../../internals/entry-unbind');
|
|
5
4
|
|
|
6
|
-
module.exports =
|
|
5
|
+
module.exports = parent;
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
'use strict';
|
|
2
|
-
require('../../
|
|
2
|
+
var parent = require('../../stable/weak-map/get-or-insert');
|
|
3
3
|
require('../../modules/esnext.weak-map.get-or-insert');
|
|
4
|
-
var entryUnbind = require('../../internals/entry-unbind');
|
|
5
4
|
|
|
6
|
-
module.exports =
|
|
5
|
+
module.exports = parent;
|
package/configurator.js
CHANGED
|
@@ -14,7 +14,7 @@ var setAggressivenessLevel = function (object, constant) {
|
|
|
14
14
|
};
|
|
15
15
|
|
|
16
16
|
module.exports = function (options) {
|
|
17
|
-
if (typeof options == 'object') {
|
|
17
|
+
if (options && typeof options == 'object') {
|
|
18
18
|
setAggressivenessLevel(options.useNative, isForced.NATIVE);
|
|
19
19
|
setAggressivenessLevel(options.usePolyfill, isForced.POLYFILL);
|
|
20
20
|
setAggressivenessLevel(options.useFeatureDetection, null);
|
package/es/index.js
CHANGED
|
@@ -105,6 +105,8 @@ require('../modules/es.json.stringify');
|
|
|
105
105
|
require('../modules/es.json.to-string-tag');
|
|
106
106
|
require('../modules/es.map');
|
|
107
107
|
require('../modules/es.map.group-by');
|
|
108
|
+
require('../modules/es.map.get-or-insert');
|
|
109
|
+
require('../modules/es.map.get-or-insert-computed');
|
|
108
110
|
require('../modules/es.math.acosh');
|
|
109
111
|
require('../modules/es.math.asinh');
|
|
110
112
|
require('../modules/es.math.atanh');
|
|
@@ -291,6 +293,8 @@ require('../modules/es.uint8-array.to-base64');
|
|
|
291
293
|
require('../modules/es.uint8-array.to-hex');
|
|
292
294
|
require('../modules/es.unescape');
|
|
293
295
|
require('../modules/es.weak-map');
|
|
296
|
+
require('../modules/es.weak-map.get-or-insert');
|
|
297
|
+
require('../modules/es.weak-map.get-or-insert-computed');
|
|
294
298
|
require('../modules/es.weak-set');
|
|
295
299
|
|
|
296
300
|
module.exports = require('../internals/path');
|
package/es/map/group-by.js
CHANGED
|
@@ -2,6 +2,8 @@
|
|
|
2
2
|
require('../../modules/es.object.to-string');
|
|
3
3
|
require('../../modules/es.map');
|
|
4
4
|
require('../../modules/es.map.group-by');
|
|
5
|
+
require('../../modules/es.map.get-or-insert');
|
|
6
|
+
require('../../modules/es.map.get-or-insert-computed');
|
|
5
7
|
var path = require('../../internals/path');
|
|
6
8
|
|
|
7
9
|
module.exports = path.Map.groupBy;
|
package/es/map/index.js
CHANGED
|
@@ -2,6 +2,8 @@
|
|
|
2
2
|
require('../../modules/es.array.iterator');
|
|
3
3
|
require('../../modules/es.map');
|
|
4
4
|
require('../../modules/es.map.group-by');
|
|
5
|
+
require('../../modules/es.map.get-or-insert');
|
|
6
|
+
require('../../modules/es.map.get-or-insert-computed');
|
|
5
7
|
require('../../modules/es.object.to-string');
|
|
6
8
|
require('../../modules/es.string.iterator');
|
|
7
9
|
var path = require('../../internals/path');
|
|
@@ -4,8 +4,8 @@ var path = require('../../internals/path');
|
|
|
4
4
|
|
|
5
5
|
var Object = path.Object;
|
|
6
6
|
|
|
7
|
-
var defineProperties = module.exports = function defineProperties(T, D) {
|
|
7
|
+
var $defineProperties = module.exports = function defineProperties(T, D) {
|
|
8
8
|
return Object.defineProperties(T, D);
|
|
9
9
|
};
|
|
10
10
|
|
|
11
|
-
if (Object.defineProperties.sham) defineProperties.sham = true;
|
|
11
|
+
if (Object.defineProperties.sham) $defineProperties.sham = true;
|
|
@@ -4,8 +4,8 @@ var path = require('../../internals/path');
|
|
|
4
4
|
|
|
5
5
|
var Object = path.Object;
|
|
6
6
|
|
|
7
|
-
var defineProperty = module.exports = function defineProperty(it, key, desc) {
|
|
7
|
+
var $defineProperty = module.exports = function defineProperty(it, key, desc) {
|
|
8
8
|
return Object.defineProperty(it, key, desc);
|
|
9
9
|
};
|
|
10
10
|
|
|
11
|
-
if (Object.defineProperty.sham) defineProperty.sham = true;
|
|
11
|
+
if (Object.defineProperty.sham) $defineProperty.sham = true;
|
|
@@ -4,8 +4,8 @@ var path = require('../../internals/path');
|
|
|
4
4
|
|
|
5
5
|
var Object = path.Object;
|
|
6
6
|
|
|
7
|
-
var getOwnPropertyDescriptor = module.exports = function getOwnPropertyDescriptor(it, key) {
|
|
7
|
+
var $getOwnPropertyDescriptor = module.exports = function getOwnPropertyDescriptor(it, key) {
|
|
8
8
|
return Object.getOwnPropertyDescriptor(it, key);
|
|
9
9
|
};
|
|
10
10
|
|
|
11
|
-
if (Object.getOwnPropertyDescriptor.sham) getOwnPropertyDescriptor.sham = true;
|
|
11
|
+
if (Object.getOwnPropertyDescriptor.sham) $getOwnPropertyDescriptor.sham = true;
|
package/es/promise/try.js
CHANGED
|
@@ -10,6 +10,6 @@ var Promise = path.Promise;
|
|
|
10
10
|
var $try = Promise['try'];
|
|
11
11
|
|
|
12
12
|
// eslint-disable-next-line no-unused-vars -- required for arity
|
|
13
|
-
module.exports =
|
|
13
|
+
module.exports = { 'try': function (callbackfn /* , ...args */) {
|
|
14
14
|
return apply($try, isCallable(this) ? this : Promise, arguments);
|
|
15
|
-
} }
|
|
15
|
+
} }['try'];
|
package/es/weak-map/index.js
CHANGED
|
@@ -2,6 +2,8 @@
|
|
|
2
2
|
require('../../modules/es.array.iterator');
|
|
3
3
|
require('../../modules/es.object.to-string');
|
|
4
4
|
require('../../modules/es.weak-map');
|
|
5
|
+
require('../../modules/es.weak-map.get-or-insert');
|
|
6
|
+
require('../../modules/es.weak-map.get-or-insert-computed');
|
|
5
7
|
var path = require('../../internals/path');
|
|
6
8
|
|
|
7
9
|
module.exports = path.WeakMap;
|
package/full/index.js
CHANGED
|
@@ -105,6 +105,8 @@ require('../modules/es.json.stringify');
|
|
|
105
105
|
require('../modules/es.json.to-string-tag');
|
|
106
106
|
require('../modules/es.map');
|
|
107
107
|
require('../modules/es.map.group-by');
|
|
108
|
+
require('../modules/es.map.get-or-insert');
|
|
109
|
+
require('../modules/es.map.get-or-insert-computed');
|
|
108
110
|
require('../modules/es.math.acosh');
|
|
109
111
|
require('../modules/es.math.asinh');
|
|
110
112
|
require('../modules/es.math.atanh');
|
|
@@ -291,6 +293,8 @@ require('../modules/es.uint8-array.to-base64');
|
|
|
291
293
|
require('../modules/es.uint8-array.to-hex');
|
|
292
294
|
require('../modules/es.unescape');
|
|
293
295
|
require('../modules/es.weak-map');
|
|
296
|
+
require('../modules/es.weak-map.get-or-insert');
|
|
297
|
+
require('../modules/es.weak-map.get-or-insert-computed');
|
|
294
298
|
require('../modules/es.weak-set');
|
|
295
299
|
require('../modules/esnext.aggregate-error');
|
|
296
300
|
require('../modules/esnext.suppressed-error.constructor');
|
|
@@ -4,5 +4,5 @@ var charAt = require('../internals/string-multibyte').charAt;
|
|
|
4
4
|
// `AdvanceStringIndex` abstract operation
|
|
5
5
|
// https://tc39.es/ecma262/#sec-advancestringindex
|
|
6
6
|
module.exports = function (S, index, unicode) {
|
|
7
|
-
return index + (unicode ? charAt(S, index).length : 1);
|
|
7
|
+
return index + (unicode ? charAt(S, index).length || 1 : 1);
|
|
8
8
|
};
|
|
@@ -11,6 +11,7 @@ var PROPER_STRUCTURED_CLONE_TRANSFER = require('../internals/structured-clone-pr
|
|
|
11
11
|
var structuredClone = globalThis.structuredClone;
|
|
12
12
|
var ArrayBuffer = globalThis.ArrayBuffer;
|
|
13
13
|
var DataView = globalThis.DataView;
|
|
14
|
+
var max = Math.max;
|
|
14
15
|
var min = Math.min;
|
|
15
16
|
var ArrayBufferPrototype = ArrayBuffer.prototype;
|
|
16
17
|
var DataViewPrototype = DataView.prototype;
|
|
@@ -33,7 +34,9 @@ module.exports = (PROPER_STRUCTURED_CLONE_TRANSFER || detachTransferable) && fun
|
|
|
33
34
|
if (byteLength >= newByteLength && (!preserveResizability || fixedLength)) {
|
|
34
35
|
newBuffer = slice(arrayBuffer, 0, newByteLength);
|
|
35
36
|
} else {
|
|
36
|
-
var options = preserveResizability && !fixedLength && maxByteLength
|
|
37
|
+
var options = preserveResizability && !fixedLength && maxByteLength
|
|
38
|
+
? { maxByteLength: max(newByteLength, maxByteLength(arrayBuffer)) }
|
|
39
|
+
: undefined;
|
|
37
40
|
newBuffer = new ArrayBuffer(newByteLength, options);
|
|
38
41
|
var a = new DataView(arrayBuffer);
|
|
39
42
|
var b = new DataView(newBuffer);
|
|
@@ -174,7 +174,7 @@ if (DESCRIPTORS && !hasOwn(TypedArrayPrototype, TO_STRING_TAG)) {
|
|
|
174
174
|
}
|
|
175
175
|
});
|
|
176
176
|
for (NAME in TypedArrayConstructorsList) if (globalThis[NAME]) {
|
|
177
|
-
createNonEnumerableProperty(globalThis[NAME], TYPED_ARRAY_TAG, NAME);
|
|
177
|
+
createNonEnumerableProperty(globalThis[NAME].prototype, TYPED_ARRAY_TAG, NAME);
|
|
178
178
|
}
|
|
179
179
|
}
|
|
180
180
|
|
|
@@ -10,7 +10,6 @@ var defineBuiltIns = require('../internals/define-built-ins');
|
|
|
10
10
|
var fails = require('../internals/fails');
|
|
11
11
|
var anInstance = require('../internals/an-instance');
|
|
12
12
|
var toIntegerOrInfinity = require('../internals/to-integer-or-infinity');
|
|
13
|
-
var toLength = require('../internals/to-length');
|
|
14
13
|
var toIndex = require('../internals/to-index');
|
|
15
14
|
var fround = require('../internals/math-fround');
|
|
16
15
|
var IEEE754 = require('../internals/ieee754');
|
|
@@ -126,7 +125,7 @@ if (!NATIVE_ARRAY_BUFFER) {
|
|
|
126
125
|
var bufferLength = bufferState.byteLength;
|
|
127
126
|
var offset = toIntegerOrInfinity(byteOffset);
|
|
128
127
|
if (offset < 0 || offset > bufferLength) throw new RangeError('Wrong offset');
|
|
129
|
-
byteLength = byteLength === undefined ? bufferLength - offset :
|
|
128
|
+
byteLength = byteLength === undefined ? bufferLength - offset : toIndex(byteLength);
|
|
130
129
|
if (offset + byteLength > bufferLength) throw new RangeError(WRONG_LENGTH);
|
|
131
130
|
setInternalState(this, {
|
|
132
131
|
type: DATA_VIEW,
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
var bind = require('../internals/function-bind-context');
|
|
3
3
|
var uncurryThis = require('../internals/function-uncurry-this');
|
|
4
|
-
var toObject = require('../internals/to-object');
|
|
5
4
|
var isConstructor = require('../internals/is-constructor');
|
|
6
5
|
var getAsyncIterator = require('../internals/get-async-iterator');
|
|
7
6
|
var getIterator = require('../internals/get-iterator');
|
|
@@ -32,20 +31,19 @@ SafeArrayIterator.prototype.next = function () {
|
|
|
32
31
|
|
|
33
32
|
// `Array.fromAsync` method implementation
|
|
34
33
|
// https://github.com/tc39/proposal-array-from-async
|
|
35
|
-
module.exports = function fromAsync(
|
|
34
|
+
module.exports = function fromAsync(items /* , mapfn = undefined, thisArg = undefined */) {
|
|
36
35
|
var C = this;
|
|
37
36
|
var argumentsLength = arguments.length;
|
|
38
37
|
var mapfn = argumentsLength > 1 ? arguments[1] : undefined;
|
|
39
38
|
var thisArg = argumentsLength > 2 ? arguments[2] : undefined;
|
|
40
39
|
return new (getBuiltIn('Promise'))(function (resolve) {
|
|
41
|
-
var O = toObject(asyncItems);
|
|
42
40
|
if (mapfn !== undefined) mapfn = bind(mapfn, thisArg);
|
|
43
|
-
var usingAsyncIterator = getMethod(
|
|
44
|
-
var usingSyncIterator = usingAsyncIterator ? undefined : getIteratorMethod(
|
|
41
|
+
var usingAsyncIterator = getMethod(items, ASYNC_ITERATOR);
|
|
42
|
+
var usingSyncIterator = usingAsyncIterator ? undefined : getIteratorMethod(items) || safeArrayIterator;
|
|
45
43
|
var A = isConstructor(C) ? new C() : [];
|
|
46
44
|
var iterator = usingAsyncIterator
|
|
47
|
-
? getAsyncIterator(
|
|
48
|
-
: new AsyncFromSyncIterator(getIteratorDirect(getIterator(
|
|
45
|
+
? getAsyncIterator(items, usingAsyncIterator)
|
|
46
|
+
: new AsyncFromSyncIterator(getIteratorDirect(getIterator(items, usingSyncIterator)));
|
|
49
47
|
resolve(toArray(iterator, mapfn, A));
|
|
50
48
|
});
|
|
51
49
|
};
|
package/internals/array-from.js
CHANGED
|
@@ -7,20 +7,22 @@ var isArrayIteratorMethod = require('../internals/is-array-iterator-method');
|
|
|
7
7
|
var isConstructor = require('../internals/is-constructor');
|
|
8
8
|
var lengthOfArrayLike = require('../internals/length-of-array-like');
|
|
9
9
|
var createProperty = require('../internals/create-property');
|
|
10
|
+
var setArrayLength = require('../internals/array-set-length');
|
|
10
11
|
var getIterator = require('../internals/get-iterator');
|
|
11
12
|
var getIteratorMethod = require('../internals/get-iterator-method');
|
|
13
|
+
var iteratorClose = require('../internals/iterator-close');
|
|
12
14
|
|
|
13
15
|
var $Array = Array;
|
|
14
16
|
|
|
15
17
|
// `Array.from` method implementation
|
|
16
18
|
// https://tc39.es/ecma262/#sec-array.from
|
|
17
19
|
module.exports = function from(arrayLike /* , mapfn = undefined, thisArg = undefined */) {
|
|
18
|
-
var O = toObject(arrayLike);
|
|
19
20
|
var IS_CONSTRUCTOR = isConstructor(this);
|
|
20
21
|
var argumentsLength = arguments.length;
|
|
21
22
|
var mapfn = argumentsLength > 1 ? arguments[1] : undefined;
|
|
22
23
|
var mapping = mapfn !== undefined;
|
|
23
24
|
if (mapping) mapfn = bind(mapfn, argumentsLength > 2 ? arguments[2] : undefined);
|
|
25
|
+
var O = toObject(arrayLike);
|
|
24
26
|
var iteratorMethod = getIteratorMethod(O);
|
|
25
27
|
var index = 0;
|
|
26
28
|
var length, result, step, iterator, next, value;
|
|
@@ -31,7 +33,11 @@ module.exports = function from(arrayLike /* , mapfn = undefined, thisArg = undef
|
|
|
31
33
|
next = iterator.next;
|
|
32
34
|
for (;!(step = call(next, iterator)).done; index++) {
|
|
33
35
|
value = mapping ? callWithSafeIterationClosing(iterator, mapfn, [step.value, index], true) : step.value;
|
|
34
|
-
|
|
36
|
+
try {
|
|
37
|
+
createProperty(result, index, value);
|
|
38
|
+
} catch (error) {
|
|
39
|
+
iteratorClose(iterator, 'throw', error);
|
|
40
|
+
}
|
|
35
41
|
}
|
|
36
42
|
} else {
|
|
37
43
|
length = lengthOfArrayLike(O);
|
|
@@ -41,6 +47,6 @@ module.exports = function from(arrayLike /* , mapfn = undefined, thisArg = undef
|
|
|
41
47
|
createProperty(result, index, value);
|
|
42
48
|
}
|
|
43
49
|
}
|
|
44
|
-
result
|
|
50
|
+
setArrayLength(result, index);
|
|
45
51
|
return result;
|
|
46
52
|
};
|
|
@@ -1,12 +1,10 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
var bind = require('../internals/function-bind-context');
|
|
3
|
-
var uncurryThis = require('../internals/function-uncurry-this');
|
|
4
3
|
var IndexedObject = require('../internals/indexed-object');
|
|
5
4
|
var toObject = require('../internals/to-object');
|
|
6
5
|
var lengthOfArrayLike = require('../internals/length-of-array-like');
|
|
7
6
|
var arraySpeciesCreate = require('../internals/array-species-create');
|
|
8
|
-
|
|
9
|
-
var push = uncurryThis([].push);
|
|
7
|
+
var createProperty = require('../internals/create-property');
|
|
10
8
|
|
|
11
9
|
// `Array.prototype.{ forEach, map, filter, some, every, find, findIndex, filterReject }` methods implementation
|
|
12
10
|
var createMethod = function (TYPE) {
|
|
@@ -17,28 +15,28 @@ var createMethod = function (TYPE) {
|
|
|
17
15
|
var IS_FIND_INDEX = TYPE === 6;
|
|
18
16
|
var IS_FILTER_REJECT = TYPE === 7;
|
|
19
17
|
var NO_HOLES = TYPE === 5 || IS_FIND_INDEX;
|
|
20
|
-
return function ($this, callbackfn, that
|
|
18
|
+
return function ($this, callbackfn, that) {
|
|
21
19
|
var O = toObject($this);
|
|
22
20
|
var self = IndexedObject(O);
|
|
23
21
|
var length = lengthOfArrayLike(self);
|
|
24
22
|
var boundFunction = bind(callbackfn, that);
|
|
25
23
|
var index = 0;
|
|
26
|
-
var
|
|
27
|
-
var target = IS_MAP ?
|
|
24
|
+
var resIndex = 0;
|
|
25
|
+
var target = IS_MAP ? arraySpeciesCreate($this, length) : IS_FILTER || IS_FILTER_REJECT ? arraySpeciesCreate($this, 0) : undefined;
|
|
28
26
|
var value, result;
|
|
29
27
|
for (;length > index; index++) if (NO_HOLES || index in self) {
|
|
30
28
|
value = self[index];
|
|
31
29
|
result = boundFunction(value, index, O);
|
|
32
30
|
if (TYPE) {
|
|
33
|
-
if (IS_MAP) target
|
|
31
|
+
if (IS_MAP) createProperty(target, index, result); // map
|
|
34
32
|
else if (result) switch (TYPE) {
|
|
35
|
-
case 3: return true;
|
|
36
|
-
case 5: return value;
|
|
37
|
-
case 6: return index;
|
|
38
|
-
case 2:
|
|
33
|
+
case 3: return true; // some
|
|
34
|
+
case 5: return value; // find
|
|
35
|
+
case 6: return index; // findIndex
|
|
36
|
+
case 2: createProperty(target, resIndex++, value); // filter
|
|
39
37
|
} else switch (TYPE) {
|
|
40
|
-
case 4: return false;
|
|
41
|
-
case 7:
|
|
38
|
+
case 4: return false; // every
|
|
39
|
+
case 7: createProperty(target, resIndex++, value); // filterReject
|
|
42
40
|
}
|
|
43
41
|
}
|
|
44
42
|
}
|
|
@@ -1,16 +1,15 @@
|
|
|
1
1
|
'use strict';
|
|
2
|
-
var uncurryThis = require('../internals/function-uncurry-this');
|
|
3
2
|
var aCallable = require('../internals/a-callable');
|
|
4
3
|
var isNullOrUndefined = require('../internals/is-null-or-undefined');
|
|
5
4
|
var lengthOfArrayLike = require('../internals/length-of-array-like');
|
|
6
5
|
var toObject = require('../internals/to-object');
|
|
6
|
+
var createProperty = require('../internals/create-property');
|
|
7
7
|
var MapHelpers = require('../internals/map-helpers');
|
|
8
8
|
var iterate = require('../internals/map-iterate');
|
|
9
9
|
|
|
10
10
|
var Map = MapHelpers.Map;
|
|
11
11
|
var mapHas = MapHelpers.has;
|
|
12
12
|
var mapSet = MapHelpers.set;
|
|
13
|
-
var push = uncurryThis([].push);
|
|
14
13
|
|
|
15
14
|
// `Array.prototype.uniqueBy` method
|
|
16
15
|
// https://github.com/tc39/proposal-array-unique
|
|
@@ -28,8 +27,9 @@ module.exports = function uniqueBy(resolver) {
|
|
|
28
27
|
key = resolverFunction(item);
|
|
29
28
|
if (!mapHas(map, key)) mapSet(map, key, item);
|
|
30
29
|
}
|
|
30
|
+
index = 0;
|
|
31
31
|
iterate(map, function (value) {
|
|
32
|
-
|
|
32
|
+
createProperty(result, index++, value);
|
|
33
33
|
});
|
|
34
34
|
return result;
|
|
35
35
|
};
|
|
@@ -41,19 +41,43 @@ var AsyncFromSyncIterator = function AsyncIterator(iteratorRecord) {
|
|
|
41
41
|
AsyncFromSyncIterator.prototype = defineBuiltIns(create(AsyncIteratorPrototype), {
|
|
42
42
|
next: function next() {
|
|
43
43
|
var state = getInternalState(this);
|
|
44
|
+
var hasValue = arguments.length > 0;
|
|
45
|
+
var value = hasValue ? arguments[0] : undefined;
|
|
44
46
|
return new Promise(function (resolve, reject) {
|
|
45
|
-
var result = anObject(call(state.next, state.iterator));
|
|
47
|
+
var result = anObject(hasValue ? call(state.next, state.iterator, value) : call(state.next, state.iterator));
|
|
46
48
|
asyncFromSyncIteratorContinuation(result, resolve, reject, state.iterator, true);
|
|
47
49
|
});
|
|
48
50
|
},
|
|
49
51
|
'return': function () {
|
|
50
|
-
var
|
|
52
|
+
var state = getInternalState(this);
|
|
53
|
+
var iterator = state.iterator;
|
|
54
|
+
var hasValue = arguments.length > 0;
|
|
55
|
+
var value = hasValue ? arguments[0] : undefined;
|
|
51
56
|
return new Promise(function (resolve, reject) {
|
|
52
57
|
var $return = getMethod(iterator, 'return');
|
|
53
|
-
if ($return === undefined) return resolve(createIterResultObject(
|
|
54
|
-
var result = anObject(call($return, iterator));
|
|
58
|
+
if ($return === undefined) return resolve(createIterResultObject(value, true));
|
|
59
|
+
var result = anObject(hasValue ? call($return, iterator, value) : call($return, iterator));
|
|
55
60
|
asyncFromSyncIteratorContinuation(result, resolve, reject, iterator);
|
|
56
61
|
});
|
|
62
|
+
},
|
|
63
|
+
'throw': function () {
|
|
64
|
+
var state = getInternalState(this);
|
|
65
|
+
var iterator = state.iterator;
|
|
66
|
+
var hasValue = arguments.length > 0;
|
|
67
|
+
var value = hasValue ? arguments[0] : undefined;
|
|
68
|
+
return new Promise(function (resolve, reject) {
|
|
69
|
+
var $throw = getMethod(iterator, 'throw');
|
|
70
|
+
if ($throw === undefined) {
|
|
71
|
+
try {
|
|
72
|
+
iteratorClose(iterator, 'normal');
|
|
73
|
+
} catch (error) {
|
|
74
|
+
return reject(error);
|
|
75
|
+
}
|
|
76
|
+
return reject(new TypeError('The iterator does not provide a throw method'));
|
|
77
|
+
}
|
|
78
|
+
var result = anObject(hasValue ? call($throw, iterator, value) : call($throw, iterator));
|
|
79
|
+
asyncFromSyncIteratorContinuation(result, resolve, reject, iterator, true);
|
|
80
|
+
});
|
|
57
81
|
}
|
|
58
82
|
});
|
|
59
83
|
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
var call = require('../internals/function-call');
|
|
3
|
+
var anObject = require('../internals/an-object');
|
|
3
4
|
var getBuiltIn = require('../internals/get-built-in');
|
|
4
5
|
var getMethod = require('../internals/get-method');
|
|
5
6
|
|
|
@@ -7,13 +8,20 @@ module.exports = function (iterator, method, argument, reject) {
|
|
|
7
8
|
try {
|
|
8
9
|
var returnMethod = getMethod(iterator, 'return');
|
|
9
10
|
if (returnMethod) {
|
|
10
|
-
return getBuiltIn('Promise').resolve(call(returnMethod, iterator)).then(function () {
|
|
11
|
+
return getBuiltIn('Promise').resolve(call(returnMethod, iterator)).then(function (result) {
|
|
12
|
+
try {
|
|
13
|
+
if (method !== reject) anObject(result);
|
|
14
|
+
} catch (error3) {
|
|
15
|
+
reject(error3);
|
|
16
|
+
return;
|
|
17
|
+
}
|
|
11
18
|
method(argument);
|
|
12
19
|
}, function (error) {
|
|
13
|
-
reject(error);
|
|
20
|
+
method === reject ? method(argument) : reject(error);
|
|
14
21
|
});
|
|
15
22
|
}
|
|
16
23
|
} catch (error2) {
|
|
17
|
-
|
|
24
|
+
// the original error (`argument`) takes priority over `return()` errors
|
|
25
|
+
return method === reject ? reject(argument) : reject(error2);
|
|
18
26
|
} method(argument);
|
|
19
27
|
};
|
|
@@ -11,7 +11,6 @@ var getBuiltIn = require('../internals/get-built-in');
|
|
|
11
11
|
var getMethod = require('../internals/get-method');
|
|
12
12
|
var AsyncIteratorPrototype = require('../internals/async-iterator-prototype');
|
|
13
13
|
var createIterResultObject = require('../internals/create-iter-result-object');
|
|
14
|
-
var iteratorClose = require('../internals/iterator-close');
|
|
15
14
|
|
|
16
15
|
var Promise = getBuiltIn('Promise');
|
|
17
16
|
|
|
@@ -56,27 +55,55 @@ var createAsyncIteratorProxyPrototype = function (IS_ITERATOR) {
|
|
|
56
55
|
if (stateCompletion.exit) return state;
|
|
57
56
|
state.done = true;
|
|
58
57
|
var iterator = state.iterator;
|
|
58
|
+
var inner = state.inner;
|
|
59
59
|
var returnMethod, result;
|
|
60
|
-
var
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
}
|
|
64
|
-
|
|
60
|
+
var closeOuterIterator = function () {
|
|
61
|
+
var completion = perform(function () {
|
|
62
|
+
return getMethod(iterator, 'return');
|
|
63
|
+
});
|
|
64
|
+
returnMethod = result = completion.value;
|
|
65
|
+
if (completion.error) return Promise.reject(result);
|
|
66
|
+
if (returnMethod === undefined) return Promise.resolve(createIterResultObject(undefined, true));
|
|
67
|
+
completion = perform(function () {
|
|
68
|
+
return call(returnMethod, iterator);
|
|
69
|
+
});
|
|
70
|
+
result = completion.value;
|
|
71
|
+
if (completion.error) return Promise.reject(result);
|
|
72
|
+
return IS_ITERATOR ? Promise.resolve(result) : Promise.resolve(result).then(function (resolved) {
|
|
73
|
+
anObject(resolved);
|
|
74
|
+
return createIterResultObject(undefined, true);
|
|
75
|
+
});
|
|
76
|
+
};
|
|
77
|
+
|
|
78
|
+
var closeAndReject = function (error) {
|
|
79
|
+
return closeOuterIterator().then(function () {
|
|
80
|
+
throw error;
|
|
81
|
+
}, function () {
|
|
82
|
+
throw error;
|
|
83
|
+
});
|
|
84
|
+
};
|
|
85
|
+
|
|
86
|
+
if (inner) {
|
|
87
|
+
var innerIterator = inner.iterator;
|
|
88
|
+
var innerReturn;
|
|
89
|
+
var completion = perform(function () {
|
|
90
|
+
innerReturn = getMethod(innerIterator, 'return');
|
|
91
|
+
if (innerReturn) return call(innerReturn, innerIterator);
|
|
92
|
+
});
|
|
93
|
+
if (completion.error) return closeAndReject(completion.value);
|
|
94
|
+
if (innerReturn) {
|
|
95
|
+
return Promise.resolve(completion.value).then(function (innerResult) {
|
|
96
|
+
try {
|
|
97
|
+
anObject(innerResult);
|
|
98
|
+
} catch (error) {
|
|
99
|
+
return closeAndReject(error);
|
|
100
|
+
}
|
|
101
|
+
return closeOuterIterator();
|
|
102
|
+
}, closeAndReject);
|
|
65
103
|
}
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
if (completion.error) return Promise.reject(result);
|
|
70
|
-
if (returnMethod === undefined) return Promise.resolve(createIterResultObject(undefined, true));
|
|
71
|
-
completion = perform(function () {
|
|
72
|
-
return call(returnMethod, iterator);
|
|
73
|
-
});
|
|
74
|
-
result = completion.value;
|
|
75
|
-
if (completion.error) return Promise.reject(result);
|
|
76
|
-
return IS_ITERATOR ? Promise.resolve(result) : Promise.resolve(result).then(function (resolved) {
|
|
77
|
-
anObject(resolved);
|
|
78
|
-
return createIterResultObject(undefined, true);
|
|
79
|
-
});
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
return closeOuterIterator();
|
|
80
107
|
}
|
|
81
108
|
});
|
|
82
109
|
};
|