core-js 3.48.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/README.md +2 -2
- package/configurator.js +1 -1
- 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/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 +7 -2
- 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 +7 -4
- 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/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/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 +2 -2
- 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.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.sort.js +3 -1
- 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.take.js +7 -2
- 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 +3 -4
- package/modules/es.map.get-or-insert.js +2 -3
- 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 +16 -5
- 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.sort.js +3 -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 +1 -1
- 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 +2 -2
- package/modules/es.weak-map.get-or-insert.js +2 -3
- 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.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/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/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).**
|
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);
|
|
@@ -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'];
|
|
@@ -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
|
@@ -10,18 +10,19 @@ var createProperty = require('../internals/create-property');
|
|
|
10
10
|
var setArrayLength = require('../internals/array-set-length');
|
|
11
11
|
var getIterator = require('../internals/get-iterator');
|
|
12
12
|
var getIteratorMethod = require('../internals/get-iterator-method');
|
|
13
|
+
var iteratorClose = require('../internals/iterator-close');
|
|
13
14
|
|
|
14
15
|
var $Array = Array;
|
|
15
16
|
|
|
16
17
|
// `Array.from` method implementation
|
|
17
18
|
// https://tc39.es/ecma262/#sec-array.from
|
|
18
19
|
module.exports = function from(arrayLike /* , mapfn = undefined, thisArg = undefined */) {
|
|
19
|
-
var O = toObject(arrayLike);
|
|
20
20
|
var IS_CONSTRUCTOR = isConstructor(this);
|
|
21
21
|
var argumentsLength = arguments.length;
|
|
22
22
|
var mapfn = argumentsLength > 1 ? arguments[1] : undefined;
|
|
23
23
|
var mapping = mapfn !== undefined;
|
|
24
24
|
if (mapping) mapfn = bind(mapfn, argumentsLength > 2 ? arguments[2] : undefined);
|
|
25
|
+
var O = toObject(arrayLike);
|
|
25
26
|
var iteratorMethod = getIteratorMethod(O);
|
|
26
27
|
var index = 0;
|
|
27
28
|
var length, result, step, iterator, next, value;
|
|
@@ -32,7 +33,11 @@ module.exports = function from(arrayLike /* , mapfn = undefined, thisArg = undef
|
|
|
32
33
|
next = iterator.next;
|
|
33
34
|
for (;!(step = call(next, iterator)).done; index++) {
|
|
34
35
|
value = mapping ? callWithSafeIterationClosing(iterator, mapfn, [step.value, index], true) : step.value;
|
|
35
|
-
|
|
36
|
+
try {
|
|
37
|
+
createProperty(result, index, value);
|
|
38
|
+
} catch (error) {
|
|
39
|
+
iteratorClose(iterator, 'throw', error);
|
|
40
|
+
}
|
|
36
41
|
}
|
|
37
42
|
} else {
|
|
38
43
|
length = lengthOfArrayLike(O);
|
|
@@ -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
|
};
|
|
@@ -34,9 +34,11 @@ var createMethod = function (TYPE) {
|
|
|
34
34
|
|
|
35
35
|
var loop = function () {
|
|
36
36
|
try {
|
|
37
|
-
|
|
37
|
+
try {
|
|
38
38
|
doesNotExceedSafeInteger(counter);
|
|
39
|
-
} catch (error5) {
|
|
39
|
+
} catch (error5) {
|
|
40
|
+
return ifAbruptCloseAsyncIterator(error5);
|
|
41
|
+
}
|
|
40
42
|
Promise.resolve(anObject(call(next, iterator))).then(function (step) {
|
|
41
43
|
try {
|
|
42
44
|
if (anObject(step).done) {
|
|
@@ -48,7 +50,8 @@ var createMethod = function (TYPE) {
|
|
|
48
50
|
var value = step.value;
|
|
49
51
|
try {
|
|
50
52
|
if (MAPPING) {
|
|
51
|
-
var
|
|
53
|
+
var index = counter++;
|
|
54
|
+
var result = fn(value, index);
|
|
52
55
|
|
|
53
56
|
var handler = function ($result) {
|
|
54
57
|
if (IS_FOR_EACH) {
|
|
@@ -57,7 +60,7 @@ var createMethod = function (TYPE) {
|
|
|
57
60
|
$result ? loop() : closeAsyncIteration(iterator, resolve, false, reject);
|
|
58
61
|
} else if (IS_TO_ARRAY) {
|
|
59
62
|
try {
|
|
60
|
-
createProperty(target,
|
|
63
|
+
createProperty(target, index, $result);
|
|
61
64
|
loop();
|
|
62
65
|
} catch (error4) { ifAbruptCloseAsyncIterator(error4); }
|
|
63
66
|
} else {
|
|
@@ -23,26 +23,28 @@ var AsyncIteratorProxy = createAsyncIteratorProxy(function (Promise) {
|
|
|
23
23
|
closeAsyncIteration(iterator, doneAndReject, error, doneAndReject);
|
|
24
24
|
};
|
|
25
25
|
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
26
|
+
try {
|
|
27
|
+
Promise.resolve(anObject(call(state.next, iterator))).then(function (step) {
|
|
28
|
+
try {
|
|
29
|
+
if (anObject(step).done) {
|
|
30
|
+
state.done = true;
|
|
31
|
+
resolve(createIterResultObject(undefined, true));
|
|
32
|
+
} else {
|
|
33
|
+
var value = step.value;
|
|
34
|
+
try {
|
|
35
|
+
var result = mapper(value, state.counter++);
|
|
35
36
|
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
37
|
+
var handler = function (mapped) {
|
|
38
|
+
resolve(createIterResultObject(mapped, false));
|
|
39
|
+
};
|
|
39
40
|
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
41
|
+
if (isObject(result)) Promise.resolve(result).then(handler, ifAbruptCloseAsyncIterator);
|
|
42
|
+
else handler(result);
|
|
43
|
+
} catch (error2) { ifAbruptCloseAsyncIterator(error2); }
|
|
44
|
+
}
|
|
45
|
+
} catch (error) { doneAndReject(error); }
|
|
46
|
+
}, doneAndReject);
|
|
47
|
+
} catch (error) { doneAndReject(error); }
|
|
46
48
|
});
|
|
47
49
|
});
|
|
48
50
|
|
|
@@ -3,6 +3,6 @@ var $TypeError = TypeError;
|
|
|
3
3
|
var MAX_SAFE_INTEGER = 0x1FFFFFFFFFFFFF; // 2 ** 53 - 1 == 9007199254740991
|
|
4
4
|
|
|
5
5
|
module.exports = function (it) {
|
|
6
|
-
if (it > MAX_SAFE_INTEGER) throw $TypeError('Maximum allowed index exceeded');
|
|
6
|
+
if (it > MAX_SAFE_INTEGER) throw new $TypeError('Maximum allowed index exceeded');
|
|
7
7
|
return it;
|
|
8
8
|
};
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
var userAgent = require('../internals/environment-user-agent');
|
|
3
3
|
|
|
4
|
-
|
|
5
|
-
module.exports = /(?:ipad|iphone|ipod).*applewebkit/i.test(userAgent);
|
|
4
|
+
module.exports = /ipad|iphone|ipod/i.test(userAgent) && /applewebkit/i.test(userAgent);
|
|
@@ -3,7 +3,7 @@ var fails = require('../internals/fails');
|
|
|
3
3
|
|
|
4
4
|
module.exports = !fails(function () {
|
|
5
5
|
// eslint-disable-next-line es/no-function-prototype-bind -- safe
|
|
6
|
-
var test =
|
|
6
|
+
var test = function () { /* empty */ }.bind();
|
|
7
7
|
// eslint-disable-next-line no-prototype-builtins -- safe
|
|
8
8
|
return typeof test != 'function' || test.hasOwnProperty('prototype');
|
|
9
9
|
});
|
|
@@ -8,7 +8,7 @@ var getDescriptor = DESCRIPTORS && Object.getOwnPropertyDescriptor;
|
|
|
8
8
|
|
|
9
9
|
var EXISTS = hasOwn(FunctionPrototype, 'name');
|
|
10
10
|
// additional protection from minified / mangled / dropped function names
|
|
11
|
-
var PROPER = EXISTS &&
|
|
11
|
+
var PROPER = EXISTS && function something() { /* empty */ }.name === 'something';
|
|
12
12
|
var CONFIGURABLE = EXISTS && (!DESCRIPTORS || (DESCRIPTORS && getDescriptor(FunctionPrototype, 'name').configurable));
|
|
13
13
|
|
|
14
14
|
module.exports = {
|
package/internals/iterate.js
CHANGED
|
@@ -29,7 +29,9 @@ module.exports = function (iterable, unboundFunction, options) {
|
|
|
29
29
|
var iterator, iterFn, index, length, result, next, step;
|
|
30
30
|
|
|
31
31
|
var stop = function (condition) {
|
|
32
|
-
|
|
32
|
+
var $iterator = iterator;
|
|
33
|
+
iterator = undefined;
|
|
34
|
+
if ($iterator) iteratorClose($iterator, 'normal');
|
|
33
35
|
return new Result(true, condition);
|
|
34
36
|
};
|
|
35
37
|
|
|
@@ -59,10 +61,13 @@ module.exports = function (iterable, unboundFunction, options) {
|
|
|
59
61
|
|
|
60
62
|
next = IS_RECORD ? iterable.next : iterator.next;
|
|
61
63
|
while (!(step = call(next, iterator)).done) {
|
|
64
|
+
// `IteratorValue` errors should propagate without closing the iterator
|
|
65
|
+
var value = step.value;
|
|
62
66
|
try {
|
|
63
|
-
result = callFn(
|
|
67
|
+
result = callFn(value);
|
|
64
68
|
} catch (error) {
|
|
65
|
-
iteratorClose(iterator, 'throw', error);
|
|
69
|
+
if (iterator) iteratorClose(iterator, 'throw', error);
|
|
70
|
+
else throw error;
|
|
66
71
|
}
|
|
67
72
|
if (typeof result == 'object' && result && isPrototypeOf(ResultPrototype, result)) return result;
|
|
68
73
|
} return new Result(false);
|
|
@@ -40,11 +40,13 @@ var createIteratorProxyPrototype = function (IS_ITERATOR) {
|
|
|
40
40
|
'return': function () {
|
|
41
41
|
var state = getInternalState(this);
|
|
42
42
|
var iterator = state.iterator;
|
|
43
|
+
var done = state.done;
|
|
43
44
|
state.done = true;
|
|
44
45
|
if (IS_ITERATOR) {
|
|
45
46
|
var returnMethod = getMethod(iterator, 'return');
|
|
46
47
|
return returnMethod ? call(returnMethod, iterator) : createIterResultObject(undefined, true);
|
|
47
48
|
}
|
|
49
|
+
if (done) return createIterResultObject(undefined, true);
|
|
48
50
|
if (state.inner) try {
|
|
49
51
|
iteratorClose(state.inner.iterator, NORMAL);
|
|
50
52
|
} catch (error) {
|
|
@@ -53,7 +55,8 @@ var createIteratorProxyPrototype = function (IS_ITERATOR) {
|
|
|
53
55
|
if (state.openIters) try {
|
|
54
56
|
iteratorCloseAll(state.openIters, NORMAL);
|
|
55
57
|
} catch (error) {
|
|
56
|
-
return iteratorClose(iterator, THROW, error);
|
|
58
|
+
if (iterator) return iteratorClose(iterator, THROW, error);
|
|
59
|
+
throw error;
|
|
57
60
|
}
|
|
58
61
|
if (iterator) iteratorClose(iterator, NORMAL);
|
|
59
62
|
return createIterResultObject(undefined, true);
|
|
@@ -23,12 +23,12 @@ var IteratorProxy = createIteratorProxy(function () {
|
|
|
23
23
|
while (true) {
|
|
24
24
|
result = anObject(call(next, iterator));
|
|
25
25
|
done = this.done = !!result.done;
|
|
26
|
-
if (allowPartial && done && buffer.length && buffer.length < windowSize) return createIterResultObject(buffer, false);
|
|
26
|
+
if (allowPartial && done && buffer.length && buffer.length < windowSize) return createIterResultObject(slice(buffer, 0), false);
|
|
27
27
|
if (done) return createIterResultObject(undefined, true);
|
|
28
28
|
|
|
29
29
|
if (buffer.length === windowSize) this.buffer = buffer = slice(buffer, 1);
|
|
30
30
|
push(buffer, result.value);
|
|
31
|
-
if (buffer.length === windowSize) return createIterResultObject(buffer, false);
|
|
31
|
+
if (buffer.length === windowSize) return createIterResultObject(slice(buffer, 0), false);
|
|
32
32
|
}
|
|
33
33
|
}, false, true);
|
|
34
34
|
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
var call = require('../internals/function-call');
|
|
3
3
|
var uncurryThis = require('../internals/function-uncurry-this');
|
|
4
|
+
var anObject = require('../internals/an-object');
|
|
4
5
|
var createIteratorProxy = require('../internals/iterator-create-proxy');
|
|
5
6
|
var iteratorCloseAll = require('../internals/iterator-close-all');
|
|
6
7
|
|
|
@@ -31,7 +32,7 @@ var IteratorProxy = createIteratorProxy(function () {
|
|
|
31
32
|
result = padding[i];
|
|
32
33
|
} else {
|
|
33
34
|
try {
|
|
34
|
-
result = call(iter.next, iter.iterator);
|
|
35
|
+
result = anObject(call(iter.next, iter.iterator));
|
|
35
36
|
done = result.done;
|
|
36
37
|
result = result.value;
|
|
37
38
|
} catch (error) {
|
|
@@ -54,12 +55,12 @@ var IteratorProxy = createIteratorProxy(function () {
|
|
|
54
55
|
for (var k = 1; k < iterCount; k++) {
|
|
55
56
|
// eslint-disable-next-line max-depth -- specification case
|
|
56
57
|
try {
|
|
57
|
-
open = call(iters[k].next, iters[k].iterator);
|
|
58
|
+
open = anObject(call(iters[k].next, iters[k].iterator));
|
|
58
59
|
openDone = open.done;
|
|
59
60
|
open = open.value;
|
|
60
61
|
} catch (error) {
|
|
61
62
|
openIters[k] = undefined;
|
|
62
|
-
return iteratorCloseAll(openIters, THROW,
|
|
63
|
+
return iteratorCloseAll(openIters, THROW, error);
|
|
63
64
|
}
|
|
64
65
|
// eslint-disable-next-line max-depth -- specification case
|
|
65
66
|
if (openDone) {
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
'use strict';
|
|
2
|
+
// https://github.com/tc39/proposal-iterator.range
|
|
2
3
|
var InternalStateModule = require('../internals/internal-state');
|
|
3
4
|
var createIteratorConstructor = require('../internals/iterator-create-constructor');
|
|
4
5
|
var createIterResultObject = require('../internals/create-iter-result-object');
|
|
@@ -17,6 +18,10 @@ var $RangeError = RangeError;
|
|
|
17
18
|
var $TypeError = TypeError;
|
|
18
19
|
|
|
19
20
|
var $RangeIterator = createIteratorConstructor(function NumericRangeIterator(start, end, option, type, zero, one) {
|
|
21
|
+
// eslint-disable-next-line no-self-compare -- NaN check
|
|
22
|
+
if (start !== start || end !== end) {
|
|
23
|
+
throw new $RangeError(INCORRECT_RANGE);
|
|
24
|
+
}
|
|
20
25
|
// TODO: Drop the first `typeof` check after removing legacy methods in `core-js@4`
|
|
21
26
|
if (typeof start != type || (end !== Infinity && end !== -Infinity && typeof end != type)) {
|
|
22
27
|
throw new $TypeError(INCORRECT_RANGE);
|
|
@@ -27,7 +32,7 @@ var $RangeIterator = createIteratorConstructor(function NumericRangeIterator(sta
|
|
|
27
32
|
var ifIncrease = end > start;
|
|
28
33
|
var inclusiveEnd = false;
|
|
29
34
|
var step;
|
|
30
|
-
if (option
|
|
35
|
+
if (isNullOrUndefined(option)) {
|
|
31
36
|
step = undefined;
|
|
32
37
|
} else if (isObject(option)) {
|
|
33
38
|
step = option.step;
|
|
@@ -43,11 +48,11 @@ var $RangeIterator = createIteratorConstructor(function NumericRangeIterator(sta
|
|
|
43
48
|
if (typeof step != type) {
|
|
44
49
|
throw new $TypeError(INCORRECT_RANGE);
|
|
45
50
|
}
|
|
46
|
-
|
|
51
|
+
// eslint-disable-next-line no-self-compare -- NaN check
|
|
52
|
+
if (step !== step || step === Infinity || step === -Infinity || (step === zero && start !== end)) {
|
|
47
53
|
throw new $RangeError(INCORRECT_RANGE);
|
|
48
54
|
}
|
|
49
|
-
|
|
50
|
-
var hitsEnd = start !== start || end !== end || step !== step || (end > start) !== (step > zero);
|
|
55
|
+
var hitsEnd = end > start !== step > zero;
|
|
51
56
|
setInternalState(this, {
|
|
52
57
|
type: NUMERIC_RANGE_ITERATOR,
|
|
53
58
|
start: start,
|