core-js 3.48.0 → 3.50.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/actual/iterator/chunks.js +8 -0
- package/actual/iterator/concat.js +4 -0
- package/actual/iterator/from.js +4 -0
- package/actual/iterator/includes.js +8 -0
- package/actual/iterator/index.js +4 -1
- package/actual/iterator/join.js +8 -0
- package/actual/iterator/windows.js +8 -0
- package/actual/iterator/zip-keyed.js +6 -21
- package/actual/iterator/zip.js +6 -19
- package/actual/promise/all-keyed.js +16 -0
- package/actual/promise/all-settled-keyed.js +16 -0
- package/actual/promise/index.js +4 -0
- package/configurator.js +1 -1
- package/es/index.js +2 -0
- package/es/iterator/index.js +4 -0
- package/es/iterator/zip-keyed.js +24 -0
- package/es/iterator/zip.js +22 -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/features/iterator/includes.js +2 -0
- package/features/iterator/join.js +2 -0
- package/features/promise/all-keyed.js +2 -0
- package/features/promise/all-settled-keyed.js +2 -0
- package/full/index.js +6 -0
- package/full/iterator/chunks.js +2 -6
- package/full/iterator/concat.js +0 -2
- package/full/iterator/from.js +0 -2
- package/full/iterator/includes.js +4 -0
- package/full/iterator/index.js +0 -2
- package/full/iterator/join.js +4 -0
- package/full/iterator/range.js +3 -1
- package/full/iterator/windows.js +2 -6
- package/full/iterator/zip-keyed.js +0 -2
- package/full/iterator/zip.js +0 -2
- package/full/promise/all-keyed.js +4 -0
- package/full/promise/all-settled-keyed.js +4 -0
- package/internals/add-disposable-resource.js +1 -1
- 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-fill.js +2 -1
- package/internals/array-from-async.js +7 -9
- package/internals/array-from.js +15 -4
- package/internals/async-from-sync-iterator.js +28 -4
- package/internals/async-iterator-close.js +11 -3
- package/internals/async-iterator-create-proxy.js +61 -22
- 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/error-stack-clear.js +1 -1
- package/internals/function-bind-native.js +1 -1
- package/internals/function-name.js +1 -1
- package/internals/get-async-iterator-flattenable.js +1 -1
- package/internals/get-async-iterator.js +1 -1
- package/internals/get-internal-iterator.js +1 -0
- package/internals/get-iterator-flattenable.js +1 -1
- package/internals/get-iterator-internal.js +14 -0
- package/internals/get-iterator-method-internal.js +14 -0
- package/internals/get-iterator-method.js +4 -7
- package/internals/get-iterator-record.js +1 -1
- package/internals/get-iterator.js +4 -5
- package/internals/is-iterable.js +4 -10
- package/internals/iterate.js +10 -5
- package/internals/iterator-chunk-size-validation.js +17 -0
- package/internals/iterator-cleanup-state.js +6 -0
- package/internals/iterator-create-proxy.js +14 -5
- package/internals/iterator-window.js +4 -6
- package/internals/iterator-zip.js +4 -3
- package/internals/iterators.js +1 -1
- package/internals/math-log1p.js +3 -1
- 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/shared.js +3 -1
- 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 +5 -3
- package/internals/uint8-from-base64.js +4 -2
- package/internals/uint8-from-hex.js +10 -10
- package/internals/url-percent-coding.js +171 -0
- 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.date.to-json.js +1 -1
- package/modules/es.error.is-error.js +1 -1
- package/modules/es.escape.js +10 -8
- package/modules/es.iterator.concat.js +5 -4
- package/modules/es.iterator.drop.js +16 -1
- package/modules/es.iterator.flat-map.js +12 -14
- package/modules/es.iterator.take.js +22 -2
- package/modules/es.iterator.zip-keyed.js +70 -0
- package/modules/es.iterator.zip.js +92 -0
- package/modules/es.json.parse.js +14 -2
- package/modules/es.json.stringify.js +157 -38
- package/modules/es.map.get-or-insert-computed.js +3 -4
- package/modules/es.map.get-or-insert.js +2 -3
- package/modules/es.map.group-by.js +2 -0
- package/modules/es.math.asinh.js +6 -1
- package/modules/es.math.atanh.js +2 -2
- package/modules/es.math.cbrt.js +3 -1
- package/modules/es.math.sum-precise.js +3 -3
- package/modules/es.number.to-exponential.js +15 -6
- package/modules/es.object.group-by.js +2 -0
- package/modules/es.object.proto.js +2 -1
- package/modules/es.promise.try.js +16 -8
- 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 +5 -3
- package/modules/es.string.replace.js +9 -8
- package/modules/es.string.search.js +3 -1
- 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 +23 -6
- 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.chunks.js +6 -8
- package/modules/esnext.iterator.includes.js +44 -0
- package/modules/esnext.iterator.join.js +31 -0
- package/modules/esnext.iterator.range.js +1 -1
- package/modules/esnext.iterator.windows.js +2 -1
- package/modules/esnext.iterator.zip-keyed.js +2 -70
- package/modules/esnext.iterator.zip.js +2 -90
- package/modules/esnext.number.from-string.js +30 -3
- package/modules/esnext.number.range.js +1 -1
- package/modules/esnext.observable.from.js +6 -3
- package/modules/esnext.promise.all-keyed.js +57 -0
- package/modules/esnext.promise.all-settled-keyed.js +60 -0
- 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 +13 -130
- package/modules/web.url-search-params.delete.js +6 -9
- package/modules/web.url.constructor.js +154 -39
- package/modules/web.url.parse.js +1 -1
- package/modules/web.url.to-json.js +4 -1
- package/package.json +8 -1
- package/proposals/await-dictionary.js +4 -0
- package/proposals/iterator-includes.js +3 -0
- package/proposals/iterator-join.js +3 -0
- package/stable/index.js +2 -0
- package/stable/iterator/zip-keyed.js +5 -0
- package/stable/iterator/zip.js +5 -0
- package/stage/3.js +4 -0
|
@@ -16,7 +16,7 @@ var INCORRECT_CONSTRUCTURING = !nativeFromAsync || fails(function () {
|
|
|
16
16
|
});
|
|
17
17
|
|
|
18
18
|
// `Array.fromAsync` method
|
|
19
|
-
// https://
|
|
19
|
+
// https://tc39.es/ecma262/#sec-array.fromasync
|
|
20
20
|
$({ target: 'Array', stat: true, forced: INCORRECT_CONSTRUCTURING }, {
|
|
21
21
|
fromAsync: fromAsync
|
|
22
22
|
});
|
|
@@ -10,9 +10,15 @@ var BROKEN_ON_SPARSE = fails(function () {
|
|
|
10
10
|
return !Array(1).includes();
|
|
11
11
|
});
|
|
12
12
|
|
|
13
|
+
// Safari 26.4- bug
|
|
14
|
+
var BROKEN_ON_SPARSE_WITH_FROM_INDEX = fails(function () {
|
|
15
|
+
// eslint-disable-next-line no-sparse-arrays, es/no-array-prototype-includes -- detection
|
|
16
|
+
return [, 1].includes(undefined, 1);
|
|
17
|
+
});
|
|
18
|
+
|
|
13
19
|
// `Array.prototype.includes` method
|
|
14
20
|
// https://tc39.es/ecma262/#sec-array.prototype.includes
|
|
15
|
-
$({ target: 'Array', proto: true, forced: BROKEN_ON_SPARSE }, {
|
|
21
|
+
$({ target: 'Array', proto: true, forced: BROKEN_ON_SPARSE || BROKEN_ON_SPARSE_WITH_FROM_INDEX }, {
|
|
16
22
|
includes: function includes(el /* , fromIndex = 0 */) {
|
|
17
23
|
return $includes(this, el, arguments.length > 1 ? arguments[1] : undefined);
|
|
18
24
|
}
|
package/modules/es.array.sort.js
CHANGED
|
@@ -71,7 +71,9 @@ var getSortCompare = function (comparefn) {
|
|
|
71
71
|
if (y === undefined) return -1;
|
|
72
72
|
if (x === undefined) return 1;
|
|
73
73
|
if (comparefn !== undefined) return +comparefn(x, y) || 0;
|
|
74
|
-
|
|
74
|
+
var xString = toString(x);
|
|
75
|
+
var yString = toString(y);
|
|
76
|
+
return xString === yString ? 0 : xString > yString ? 1 : -1;
|
|
75
77
|
};
|
|
76
78
|
};
|
|
77
79
|
|
|
@@ -13,7 +13,7 @@ var unpackFloat16 = function (bytes) {
|
|
|
13
13
|
var sign = bytes >>> 15;
|
|
14
14
|
var exponent = bytes >>> 10 & EXP_MASK16;
|
|
15
15
|
var significand = bytes & SIGNIFICAND_MASK16;
|
|
16
|
-
if (exponent === EXP_MASK16) return significand === 0 ?
|
|
16
|
+
if (exponent === EXP_MASK16) return significand === 0 ? sign === 0 ? Infinity : -Infinity : NaN;
|
|
17
17
|
if (exponent === 0) return significand * (sign === 0 ? MIN_SUBNORMAL16 : -MIN_SUBNORMAL16);
|
|
18
18
|
return pow(2, exponent - 15) * (sign === 0 ? 1 + significand * SIGNIFICAND_DENOM16 : -1 - significand * SIGNIFICAND_DENOM16);
|
|
19
19
|
};
|
|
@@ -7,6 +7,7 @@ var toIndex = require('../internals/to-index');
|
|
|
7
7
|
var log2 = require('../internals/math-log2');
|
|
8
8
|
var roundTiesToEven = require('../internals/math-round-ties-to-even');
|
|
9
9
|
|
|
10
|
+
var floor = Math.floor;
|
|
10
11
|
var pow = Math.pow;
|
|
11
12
|
|
|
12
13
|
var MIN_INFINITY16 = 65520; // (2 - 2 ** -11) * 2 ** 15
|
|
@@ -25,7 +26,7 @@ var packFloat16 = function (value) {
|
|
|
25
26
|
if (value < MIN_NORMAL16) return neg << 15 | roundTiesToEven(value * REC_MIN_SUBNORMAL16); // subnormal
|
|
26
27
|
|
|
27
28
|
// normal
|
|
28
|
-
var exponent = log2(value)
|
|
29
|
+
var exponent = floor(log2(value));
|
|
29
30
|
if (exponent === -15) {
|
|
30
31
|
// we round from a value between 2 ** -15 * (1 + 1022/1024) (the largest subnormal) and 2 ** -14 * (1 + 0/1024) (the smallest normal)
|
|
31
32
|
// to the latter (former impossible because of the subnormal check above)
|
|
@@ -13,7 +13,10 @@ $({ target: 'Date', proto: true }, {
|
|
|
13
13
|
setYear: function setYear(year) {
|
|
14
14
|
// validate
|
|
15
15
|
thisTimeValue(this);
|
|
16
|
-
var
|
|
16
|
+
var y = +year;
|
|
17
|
+
// eslint-disable-next-line no-self-compare -- NaN check
|
|
18
|
+
if (y !== y) return setFullYear(this, y);
|
|
19
|
+
var yi = toIntegerOrInfinity(y);
|
|
17
20
|
var yyyy = yi >= 0 && yi <= 99 ? yi + 1900 : yi;
|
|
18
21
|
return setFullYear(this, yyyy);
|
|
19
22
|
}
|
|
@@ -11,7 +11,7 @@ var FORCED = fails(function () {
|
|
|
11
11
|
|
|
12
12
|
// `Date.prototype.toJSON` method
|
|
13
13
|
// https://tc39.es/ecma262/#sec-date.prototype.tojson
|
|
14
|
-
$({ target: 'Date', proto: true,
|
|
14
|
+
$({ target: 'Date', proto: true, forced: FORCED }, {
|
|
15
15
|
// eslint-disable-next-line no-unused-vars -- required for `.length`
|
|
16
16
|
toJSON: function toJSON(key) {
|
|
17
17
|
var O = toObject(this);
|
|
@@ -8,7 +8,7 @@ var fails = require('../internals/fails');
|
|
|
8
8
|
var ERROR = 'Error';
|
|
9
9
|
var DOM_EXCEPTION = 'DOMException';
|
|
10
10
|
// eslint-disable-next-line es/no-object-setprototypeof, no-proto -- safe
|
|
11
|
-
var PROTOTYPE_SETTING_AVAILABLE = Object.setPrototypeOf ||
|
|
11
|
+
var PROTOTYPE_SETTING_AVAILABLE = Object.setPrototypeOf || {}.__proto__;
|
|
12
12
|
|
|
13
13
|
var DOMException = getBuiltIn(DOM_EXCEPTION);
|
|
14
14
|
var $Error = Error;
|
package/modules/es.escape.js
CHANGED
|
@@ -8,6 +8,8 @@ var charCodeAt = uncurryThis(''.charCodeAt);
|
|
|
8
8
|
var exec = uncurryThis(/./.exec);
|
|
9
9
|
var numberToString = uncurryThis(1.1.toString);
|
|
10
10
|
var toUpperCase = uncurryThis(''.toUpperCase);
|
|
11
|
+
var join = uncurryThis([].join);
|
|
12
|
+
var $Array = Array;
|
|
11
13
|
|
|
12
14
|
var raw = /[\w*+\-./@]/;
|
|
13
15
|
|
|
@@ -22,22 +24,22 @@ var hex = function (code, length) {
|
|
|
22
24
|
$({ global: true }, {
|
|
23
25
|
escape: function escape(string) {
|
|
24
26
|
var str = toString(string);
|
|
25
|
-
var result = '';
|
|
26
27
|
var length = str.length;
|
|
27
|
-
var
|
|
28
|
+
var result = $Array(length);
|
|
29
|
+
var index;
|
|
28
30
|
var chr, code;
|
|
29
|
-
|
|
30
|
-
chr = charAt(str, index
|
|
31
|
+
for (index = 0; index < length; index++) {
|
|
32
|
+
chr = charAt(str, index);
|
|
31
33
|
if (exec(raw, chr)) {
|
|
32
|
-
result
|
|
34
|
+
result[index] = chr;
|
|
33
35
|
} else {
|
|
34
36
|
code = charCodeAt(chr, 0);
|
|
35
37
|
if (code < 256) {
|
|
36
|
-
result
|
|
38
|
+
result[index] = '%' + toUpperCase(hex(code, 2));
|
|
37
39
|
} else {
|
|
38
|
-
result
|
|
40
|
+
result[index] = '%u' + toUpperCase(hex(code, 4));
|
|
39
41
|
}
|
|
40
42
|
}
|
|
41
|
-
} return result;
|
|
43
|
+
} return join(result, '');
|
|
42
44
|
}
|
|
43
45
|
});
|
|
@@ -3,8 +3,9 @@ var $ = require('../internals/export');
|
|
|
3
3
|
var call = require('../internals/function-call');
|
|
4
4
|
var aCallable = require('../internals/a-callable');
|
|
5
5
|
var anObject = require('../internals/an-object');
|
|
6
|
-
var getIteratorMethod = require('../internals/get-iterator-method');
|
|
6
|
+
var getIteratorMethod = require('../internals/get-iterator-method-internal');
|
|
7
7
|
var createIteratorProxy = require('../internals/iterator-create-proxy');
|
|
8
|
+
var IS_PURE = require('../internals/is-pure');
|
|
8
9
|
|
|
9
10
|
var $Array = Array;
|
|
10
11
|
|
|
@@ -20,7 +21,7 @@ var IteratorProxy = createIteratorProxy(function () {
|
|
|
20
21
|
}
|
|
21
22
|
var entry = iterables[iterableIndex];
|
|
22
23
|
this.iterables[iterableIndex] = null;
|
|
23
|
-
iterator = this.iterator = call(entry.method, entry.iterable);
|
|
24
|
+
iterator = this.iterator = anObject(call(entry.method, entry.iterable));
|
|
24
25
|
this.next = iterator.next;
|
|
25
26
|
}
|
|
26
27
|
var result = anObject(call(this.next, iterator));
|
|
@@ -34,8 +35,8 @@ var IteratorProxy = createIteratorProxy(function () {
|
|
|
34
35
|
});
|
|
35
36
|
|
|
36
37
|
// `Iterator.concat` method
|
|
37
|
-
// https://
|
|
38
|
-
$({ target: 'Iterator', stat: true }, {
|
|
38
|
+
// https://tc39.es/ecma262/#sec-iterator.concat
|
|
39
|
+
$({ target: 'Iterator', stat: true, forced: IS_PURE }, {
|
|
39
40
|
concat: function concat() {
|
|
40
41
|
var length = arguments.length;
|
|
41
42
|
var iterables = $Array(length);
|
|
@@ -11,11 +11,23 @@ var iteratorHelperThrowsOnInvalidIterator = require('../internals/iterator-helpe
|
|
|
11
11
|
var iteratorHelperWithoutClosingOnEarlyError = require('../internals/iterator-helper-without-closing-on-early-error');
|
|
12
12
|
var IS_PURE = require('../internals/is-pure');
|
|
13
13
|
|
|
14
|
+
var $RangeError = RangeError;
|
|
15
|
+
var $Infinity = Infinity;
|
|
16
|
+
|
|
14
17
|
var DROP_WITHOUT_THROWING_ON_INVALID_ITERATOR = !IS_PURE && !iteratorHelperThrowsOnInvalidIterator('drop', 0);
|
|
15
18
|
var dropWithoutClosingOnEarlyError = !IS_PURE && !DROP_WITHOUT_THROWING_ON_INVALID_ITERATOR
|
|
16
19
|
&& iteratorHelperWithoutClosingOnEarlyError('drop', RangeError);
|
|
17
20
|
|
|
18
|
-
var FORCED = IS_PURE || DROP_WITHOUT_THROWING_ON_INVALID_ITERATOR || dropWithoutClosingOnEarlyError
|
|
21
|
+
var FORCED = IS_PURE || DROP_WITHOUT_THROWING_ON_INVALID_ITERATOR || dropWithoutClosingOnEarlyError || !function () {
|
|
22
|
+
try {
|
|
23
|
+
// eslint-disable-next-line es/no-iterator, es/no-iterator-prototype-drop -- detection
|
|
24
|
+
Iterator.prototype.drop.call({
|
|
25
|
+
next: function () { return { done: true }; }
|
|
26
|
+
}, 0x20000000000000);
|
|
27
|
+
} catch (error) {
|
|
28
|
+
return error instanceof $RangeError;
|
|
29
|
+
}
|
|
30
|
+
}();
|
|
19
31
|
|
|
20
32
|
var IteratorProxy = createIteratorProxy(function () {
|
|
21
33
|
var iterator = this.iterator;
|
|
@@ -40,6 +52,9 @@ $({ target: 'Iterator', proto: true, real: true, forced: FORCED }, {
|
|
|
40
52
|
var remaining;
|
|
41
53
|
try {
|
|
42
54
|
remaining = toPositiveInteger(notANaN(+limit));
|
|
55
|
+
if (remaining > 0x1FFFFFFFFFFFFF && remaining !== $Infinity) {
|
|
56
|
+
throw new $RangeError('The argument should be a safe integer');
|
|
57
|
+
}
|
|
43
58
|
} catch (error) {
|
|
44
59
|
iteratorClose(this, 'throw', error);
|
|
45
60
|
}
|
|
@@ -7,30 +7,28 @@ var getIteratorDirect = require('../internals/get-iterator-direct');
|
|
|
7
7
|
var getIteratorFlattenable = require('../internals/get-iterator-flattenable');
|
|
8
8
|
var createIteratorProxy = require('../internals/iterator-create-proxy');
|
|
9
9
|
var iteratorClose = require('../internals/iterator-close');
|
|
10
|
+
var fails = require('../internals/fails');
|
|
10
11
|
var IS_PURE = require('../internals/is-pure');
|
|
11
12
|
var iteratorHelperThrowsOnInvalidIterator = require('../internals/iterator-helper-throws-on-invalid-iterator');
|
|
12
13
|
var iteratorHelperWithoutClosingOnEarlyError = require('../internals/iterator-helper-without-closing-on-early-error');
|
|
13
14
|
|
|
14
15
|
// Should not throw an error for an iterator without `return` method. Fixed in Safari 26.2
|
|
15
16
|
// https://bugs.webkit.org/show_bug.cgi?id=297532
|
|
16
|
-
function
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
} catch (error) {
|
|
23
|
-
return true;
|
|
24
|
-
}
|
|
25
|
-
}
|
|
17
|
+
var THROWS_ON_ITERATOR_WITHOUT_RETURN = !IS_PURE && fails(function () {
|
|
18
|
+
// eslint-disable-next-line es/no-array-prototype-values, es/no-iterator-prototype-flatmap, es/no-iterator-prototype-find -- testing
|
|
19
|
+
return [1].values()
|
|
20
|
+
.flatMap(function () { return [1]; })
|
|
21
|
+
.find(function () { return true; }) !== 1;
|
|
22
|
+
});
|
|
26
23
|
|
|
27
|
-
var FLAT_MAP_WITHOUT_THROWING_ON_INVALID_ITERATOR = !IS_PURE
|
|
24
|
+
var FLAT_MAP_WITHOUT_THROWING_ON_INVALID_ITERATOR = !IS_PURE && !THROWS_ON_ITERATOR_WITHOUT_RETURN
|
|
28
25
|
&& !iteratorHelperThrowsOnInvalidIterator('flatMap', function () { /* empty */ });
|
|
29
|
-
|
|
26
|
+
|
|
27
|
+
var flatMapWithoutClosingOnEarlyError = !IS_PURE && !THROWS_ON_ITERATOR_WITHOUT_RETURN && !FLAT_MAP_WITHOUT_THROWING_ON_INVALID_ITERATOR
|
|
30
28
|
&& iteratorHelperWithoutClosingOnEarlyError('flatMap', TypeError);
|
|
31
29
|
|
|
32
|
-
var FORCED = IS_PURE ||
|
|
33
|
-
||
|
|
30
|
+
var FORCED = IS_PURE || THROWS_ON_ITERATOR_WITHOUT_RETURN || FLAT_MAP_WITHOUT_THROWING_ON_INVALID_ITERATOR
|
|
31
|
+
|| flatMapWithoutClosingOnEarlyError;
|
|
34
32
|
|
|
35
33
|
var IteratorProxy = createIteratorProxy(function () {
|
|
36
34
|
var iterator = this.iterator;
|
|
@@ -7,10 +7,27 @@ var notANaN = require('../internals/not-a-nan');
|
|
|
7
7
|
var toPositiveInteger = require('../internals/to-positive-integer');
|
|
8
8
|
var createIteratorProxy = require('../internals/iterator-create-proxy');
|
|
9
9
|
var iteratorClose = require('../internals/iterator-close');
|
|
10
|
+
var iteratorHelperThrowsOnInvalidIterator = require('../internals/iterator-helper-throws-on-invalid-iterator');
|
|
10
11
|
var iteratorHelperWithoutClosingOnEarlyError = require('../internals/iterator-helper-without-closing-on-early-error');
|
|
11
12
|
var IS_PURE = require('../internals/is-pure');
|
|
12
13
|
|
|
13
|
-
var
|
|
14
|
+
var $RangeError = RangeError;
|
|
15
|
+
var $Infinity = Infinity;
|
|
16
|
+
|
|
17
|
+
var TAKE_WITHOUT_THROWING_ON_INVALID_ITERATOR = !IS_PURE && !iteratorHelperThrowsOnInvalidIterator('take', 1);
|
|
18
|
+
var takeWithoutClosingOnEarlyError = !IS_PURE && !TAKE_WITHOUT_THROWING_ON_INVALID_ITERATOR
|
|
19
|
+
&& iteratorHelperWithoutClosingOnEarlyError('take', RangeError);
|
|
20
|
+
|
|
21
|
+
var FORCED = IS_PURE || TAKE_WITHOUT_THROWING_ON_INVALID_ITERATOR || takeWithoutClosingOnEarlyError || !function () {
|
|
22
|
+
try {
|
|
23
|
+
// eslint-disable-next-line es/no-iterator, es/no-iterator-prototype-take -- detection
|
|
24
|
+
Iterator.prototype.take.call({
|
|
25
|
+
next: function () { return { done: true }; }
|
|
26
|
+
}, 0x20000000000000);
|
|
27
|
+
} catch (error) {
|
|
28
|
+
return error instanceof $RangeError;
|
|
29
|
+
}
|
|
30
|
+
}();
|
|
14
31
|
|
|
15
32
|
var IteratorProxy = createIteratorProxy(function () {
|
|
16
33
|
var iterator = this.iterator;
|
|
@@ -25,12 +42,15 @@ var IteratorProxy = createIteratorProxy(function () {
|
|
|
25
42
|
|
|
26
43
|
// `Iterator.prototype.take` method
|
|
27
44
|
// https://tc39.es/ecma262/#sec-iterator.prototype.take
|
|
28
|
-
$({ target: 'Iterator', proto: true, real: true, forced:
|
|
45
|
+
$({ target: 'Iterator', proto: true, real: true, forced: FORCED }, {
|
|
29
46
|
take: function take(limit) {
|
|
30
47
|
anObject(this);
|
|
31
48
|
var remaining;
|
|
32
49
|
try {
|
|
33
50
|
remaining = toPositiveInteger(notANaN(+limit));
|
|
51
|
+
if (remaining > 0x1FFFFFFFFFFFFF && remaining !== $Infinity) {
|
|
52
|
+
throw new $RangeError('The argument should be a safe integer');
|
|
53
|
+
}
|
|
34
54
|
} catch (error) {
|
|
35
55
|
iteratorClose(this, 'throw', error);
|
|
36
56
|
}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
var $ = require('../internals/export');
|
|
3
|
+
var anObject = require('../internals/an-object');
|
|
4
|
+
var anObjectOrUndefined = require('../internals/an-object-or-undefined');
|
|
5
|
+
var createProperty = require('../internals/create-property');
|
|
6
|
+
var call = require('../internals/function-call');
|
|
7
|
+
var uncurryThis = require('../internals/function-uncurry-this');
|
|
8
|
+
var getBuiltIn = require('../internals/get-built-in');
|
|
9
|
+
var propertyIsEnumerableModule = require('../internals/object-property-is-enumerable');
|
|
10
|
+
var getIteratorFlattenable = require('../internals/get-iterator-flattenable');
|
|
11
|
+
var getModeOption = require('../internals/get-mode-option');
|
|
12
|
+
var iteratorCloseAll = require('../internals/iterator-close-all');
|
|
13
|
+
var iteratorZip = require('../internals/iterator-zip');
|
|
14
|
+
var IS_PURE = require('../internals/is-pure');
|
|
15
|
+
|
|
16
|
+
var push = uncurryThis([].push);
|
|
17
|
+
var THROW = 'throw';
|
|
18
|
+
|
|
19
|
+
// `Iterator.zipKeyed` method
|
|
20
|
+
// https://github.com/tc39/proposal-joint-iteration
|
|
21
|
+
$({ target: 'Iterator', stat: true, forced: IS_PURE }, {
|
|
22
|
+
zipKeyed: function zipKeyed(iterables /* , options */) {
|
|
23
|
+
anObject(iterables);
|
|
24
|
+
var options = arguments.length > 1 ? anObjectOrUndefined(arguments[1]) : undefined;
|
|
25
|
+
var mode = getModeOption(options);
|
|
26
|
+
var paddingOption = mode === 'longest' ? anObjectOrUndefined(options && options.padding) : undefined;
|
|
27
|
+
|
|
28
|
+
var iters = [];
|
|
29
|
+
var padding = [];
|
|
30
|
+
var allKeys = getBuiltIn('Reflect', 'ownKeys')(iterables);
|
|
31
|
+
var keys = [];
|
|
32
|
+
var propertyIsEnumerable = propertyIsEnumerableModule.f;
|
|
33
|
+
var i, key, value;
|
|
34
|
+
for (i = 0; i < allKeys.length; i++) try {
|
|
35
|
+
key = allKeys[i];
|
|
36
|
+
if (!call(propertyIsEnumerable, iterables, key)) continue;
|
|
37
|
+
value = iterables[key];
|
|
38
|
+
if (value !== undefined) {
|
|
39
|
+
push(keys, key);
|
|
40
|
+
push(iters, getIteratorFlattenable(value, false));
|
|
41
|
+
}
|
|
42
|
+
} catch (error) {
|
|
43
|
+
return iteratorCloseAll(iters, THROW, error);
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
var iterCount = iters.length;
|
|
47
|
+
if (mode === 'longest') {
|
|
48
|
+
if (paddingOption === undefined) {
|
|
49
|
+
for (i = 0; i < iterCount; i++) push(padding, undefined);
|
|
50
|
+
} else {
|
|
51
|
+
for (i = 0; i < keys.length; i++) {
|
|
52
|
+
try {
|
|
53
|
+
value = paddingOption[keys[i]];
|
|
54
|
+
} catch (error) {
|
|
55
|
+
return iteratorCloseAll(iters, THROW, error);
|
|
56
|
+
}
|
|
57
|
+
push(padding, value);
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
return iteratorZip(iters, mode, padding, function (results) {
|
|
63
|
+
var obj = getBuiltIn('Object', 'create')(null);
|
|
64
|
+
for (var j = 0; j < iterCount; j++) {
|
|
65
|
+
createProperty(obj, keys[j], results[j]);
|
|
66
|
+
}
|
|
67
|
+
return obj;
|
|
68
|
+
});
|
|
69
|
+
}
|
|
70
|
+
});
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
var $ = require('../internals/export');
|
|
3
|
+
var anObject = require('../internals/an-object');
|
|
4
|
+
var anObjectOrUndefined = require('../internals/an-object-or-undefined');
|
|
5
|
+
var call = require('../internals/function-call');
|
|
6
|
+
var uncurryThis = require('../internals/function-uncurry-this');
|
|
7
|
+
var getIteratorRecord = require('../internals/get-iterator-record');
|
|
8
|
+
var getIteratorFlattenable = require('../internals/get-iterator-flattenable');
|
|
9
|
+
var getModeOption = require('../internals/get-mode-option');
|
|
10
|
+
var iteratorClose = require('../internals/iterator-close');
|
|
11
|
+
var iteratorCloseAll = require('../internals/iterator-close-all');
|
|
12
|
+
var iteratorZip = require('../internals/iterator-zip');
|
|
13
|
+
var IS_PURE = require('../internals/is-pure');
|
|
14
|
+
|
|
15
|
+
var concat = uncurryThis([].concat);
|
|
16
|
+
var push = uncurryThis([].push);
|
|
17
|
+
var THROW = 'throw';
|
|
18
|
+
|
|
19
|
+
// `Iterator.zip` method
|
|
20
|
+
// https://github.com/tc39/proposal-joint-iteration
|
|
21
|
+
$({ target: 'Iterator', stat: true, forced: IS_PURE }, {
|
|
22
|
+
zip: function zip(iterables /* , options */) {
|
|
23
|
+
anObject(iterables);
|
|
24
|
+
var options = arguments.length > 1 ? anObjectOrUndefined(arguments[1]) : undefined;
|
|
25
|
+
var mode = getModeOption(options);
|
|
26
|
+
var paddingOption = mode === 'longest' ? anObjectOrUndefined(options && options.padding) : undefined;
|
|
27
|
+
|
|
28
|
+
var iters = [];
|
|
29
|
+
var padding = [];
|
|
30
|
+
var inputIter = getIteratorRecord(iterables);
|
|
31
|
+
var iter, done, next;
|
|
32
|
+
while (!done) {
|
|
33
|
+
try {
|
|
34
|
+
next = anObject(call(inputIter.next, inputIter.iterator));
|
|
35
|
+
done = next.done;
|
|
36
|
+
} catch (error) {
|
|
37
|
+
return iteratorCloseAll(iters, THROW, error);
|
|
38
|
+
}
|
|
39
|
+
if (!done) {
|
|
40
|
+
try {
|
|
41
|
+
iter = getIteratorFlattenable(next.value, false);
|
|
42
|
+
} catch (error) {
|
|
43
|
+
return iteratorCloseAll(concat([inputIter], iters), THROW, error);
|
|
44
|
+
}
|
|
45
|
+
push(iters, iter);
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
var iterCount = iters.length;
|
|
50
|
+
var i, paddingDone, paddingIter;
|
|
51
|
+
if (mode === 'longest') {
|
|
52
|
+
if (paddingOption === undefined) {
|
|
53
|
+
for (i = 0; i < iterCount; i++) push(padding, undefined);
|
|
54
|
+
} else {
|
|
55
|
+
try {
|
|
56
|
+
paddingIter = getIteratorRecord(paddingOption);
|
|
57
|
+
} catch (error) {
|
|
58
|
+
return iteratorCloseAll(iters, THROW, error);
|
|
59
|
+
}
|
|
60
|
+
var usingIterator = true;
|
|
61
|
+
for (i = 0; i < iterCount; i++) {
|
|
62
|
+
if (usingIterator) {
|
|
63
|
+
try {
|
|
64
|
+
next = anObject(call(paddingIter.next, paddingIter.iterator));
|
|
65
|
+
paddingDone = next.done;
|
|
66
|
+
next = next.value;
|
|
67
|
+
} catch (error) {
|
|
68
|
+
return iteratorCloseAll(iters, THROW, error);
|
|
69
|
+
}
|
|
70
|
+
if (paddingDone) {
|
|
71
|
+
usingIterator = false;
|
|
72
|
+
} else {
|
|
73
|
+
push(padding, next);
|
|
74
|
+
}
|
|
75
|
+
} else {
|
|
76
|
+
push(padding, undefined);
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
if (usingIterator) {
|
|
81
|
+
try {
|
|
82
|
+
iteratorClose(paddingIter.iterator, 'normal');
|
|
83
|
+
} catch (error) {
|
|
84
|
+
return iteratorCloseAll(iters, THROW, error);
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
return iteratorZip(iters, mode, padding);
|
|
91
|
+
}
|
|
92
|
+
});
|
package/modules/es.json.parse.js
CHANGED
|
@@ -38,7 +38,7 @@ var OBJECT = 1;
|
|
|
38
38
|
|
|
39
39
|
var $parse = function (source, reviver) {
|
|
40
40
|
source = toString(source);
|
|
41
|
-
var context = new Context(source, 0
|
|
41
|
+
var context = new Context(source, 0);
|
|
42
42
|
var root = context.parse();
|
|
43
43
|
var value = root.value;
|
|
44
44
|
var endIndex = context.skip(IS_WHITESPACE, root.end);
|
|
@@ -130,10 +130,12 @@ Context.prototype = {
|
|
|
130
130
|
var expectKeypair = false;
|
|
131
131
|
var object = {};
|
|
132
132
|
var nodes = {};
|
|
133
|
+
var closed = false;
|
|
133
134
|
while (i < source.length) {
|
|
134
135
|
i = this.until(['"', '}'], i);
|
|
135
136
|
if (at(source, i) === '}' && !expectKeypair) {
|
|
136
137
|
i++;
|
|
138
|
+
closed = true;
|
|
137
139
|
break;
|
|
138
140
|
}
|
|
139
141
|
// Parsing the key
|
|
@@ -153,9 +155,11 @@ Context.prototype = {
|
|
|
153
155
|
i++;
|
|
154
156
|
} else if (chr === '}') {
|
|
155
157
|
i++;
|
|
158
|
+
closed = true;
|
|
156
159
|
break;
|
|
157
160
|
}
|
|
158
161
|
}
|
|
162
|
+
if (!closed) throw new SyntaxError('Unterminated object at: ' + i);
|
|
159
163
|
return this.node(OBJECT, object, this.index, i, nodes);
|
|
160
164
|
},
|
|
161
165
|
array: function () {
|
|
@@ -164,10 +168,12 @@ Context.prototype = {
|
|
|
164
168
|
var expectElement = false;
|
|
165
169
|
var array = [];
|
|
166
170
|
var nodes = [];
|
|
171
|
+
var closed = false;
|
|
167
172
|
while (i < source.length) {
|
|
168
173
|
i = this.skip(IS_WHITESPACE, i);
|
|
169
174
|
if (at(source, i) === ']' && !expectElement) {
|
|
170
175
|
i++;
|
|
176
|
+
closed = true;
|
|
171
177
|
break;
|
|
172
178
|
}
|
|
173
179
|
var result = this.fork(i).parse();
|
|
@@ -179,9 +185,11 @@ Context.prototype = {
|
|
|
179
185
|
i++;
|
|
180
186
|
} else if (at(source, i) === ']') {
|
|
181
187
|
i++;
|
|
188
|
+
closed = true;
|
|
182
189
|
break;
|
|
183
190
|
}
|
|
184
191
|
}
|
|
192
|
+
if (!closed) throw new SyntaxError('Unterminated array at: ' + i);
|
|
185
193
|
return this.node(OBJECT, array, this.index, i, nodes);
|
|
186
194
|
},
|
|
187
195
|
string: function () {
|
|
@@ -197,7 +205,11 @@ Context.prototype = {
|
|
|
197
205
|
if (at(source, i) === '0') i++;
|
|
198
206
|
else if (exec(IS_NON_ZERO_DIGIT, at(source, i))) i = this.skip(IS_DIGIT, i + 1);
|
|
199
207
|
else throw new SyntaxError('Failed to parse number at: ' + i);
|
|
200
|
-
if (at(source, i) === '.')
|
|
208
|
+
if (at(source, i) === '.') {
|
|
209
|
+
var fractionStartIndex = i + 1;
|
|
210
|
+
i = this.skip(IS_DIGIT, fractionStartIndex);
|
|
211
|
+
if (fractionStartIndex === i) throw new SyntaxError("Failed to parse number's fraction at: " + i);
|
|
212
|
+
}
|
|
201
213
|
if (at(source, i) === 'e' || at(source, i) === 'E') {
|
|
202
214
|
i++;
|
|
203
215
|
if (at(source, i) === '+' || at(source, i) === '-') i++;
|