core-js 3.46.0 → 3.48.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/actual/iterator/concat.js +2 -18
- package/actual/iterator/index.js +3 -0
- package/actual/iterator/zip-keyed.js +24 -0
- package/actual/iterator/zip.js +22 -0
- package/actual/json/index.js +0 -3
- package/actual/json/is-raw-json.js +2 -2
- package/actual/json/parse.js +2 -3
- package/actual/json/raw-json.js +3 -4
- 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/es/index.js +8 -0
- package/es/iterator/concat.js +21 -0
- package/es/iterator/index.js +1 -0
- package/es/json/index.js +6 -0
- package/es/json/is-raw-json.js +5 -0
- package/es/json/parse.js +6 -0
- package/es/json/raw-json.js +7 -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/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 +8 -0
- package/full/iterator/index.js +1 -3
- package/full/iterator/zip-keyed.js +2 -22
- package/full/iterator/zip.js +2 -20
- package/internals/array-from.js +2 -1
- package/internals/array-iteration.js +11 -13
- package/internals/array-unique-by.js +3 -3
- package/internals/async-iterator-iteration.js +5 -3
- package/internals/check-correctness-of-iteration.js +2 -0
- package/internals/fix-regexp-well-known-symbol-logic.js +6 -4
- package/internals/flatten-into-array.js +2 -1
- package/internals/internal-metadata.js +1 -0
- package/internals/native-raw-json.js +2 -2
- package/internals/set-method-accept-set-like.js +1 -3
- package/internals/shared-store.js +3 -3
- package/internals/to-string-tag-support.js +1 -1
- package/modules/es.array.concat.js +2 -1
- package/modules/es.array.flat-map.js +1 -1
- package/modules/es.array.flat.js +1 -1
- package/modules/es.array.of.js +2 -1
- package/modules/es.array.slice.js +2 -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.error.cause.js +2 -0
- package/modules/es.iterator.concat.js +56 -0
- package/modules/es.iterator.flat-map.js +15 -1
- package/modules/es.iterator.to-array.js +5 -3
- package/modules/es.json.is-raw-json.js +11 -0
- package/modules/es.json.parse.js +251 -0
- package/modules/es.json.raw-json.js +39 -0
- package/modules/es.json.stringify.js +78 -19
- package/modules/es.map.get-or-insert-computed.js +25 -0
- package/modules/es.map.get-or-insert.js +19 -0
- package/modules/es.regexp.constructor.js +2 -2
- package/modules/es.typed-array.map.js +3 -4
- package/modules/es.typed-array.to-reversed.js +7 -2
- package/modules/es.typed-array.with.js +11 -3
- package/modules/es.uint8-array.set-from-hex.js +14 -1
- package/modules/es.weak-map.get-or-insert-computed.js +36 -0
- package/modules/es.weak-map.get-or-insert.js +19 -0
- package/modules/esnext.iterator.concat.js +2 -55
- package/modules/esnext.iterator.zip-keyed.js +1 -1
- package/modules/esnext.iterator.zip.js +1 -1
- package/modules/esnext.json.is-raw-json.js +2 -10
- package/modules/esnext.json.parse.js +2 -250
- package/modules/esnext.json.raw-json.js +2 -85
- package/modules/esnext.map.get-or-insert-computed.js +2 -24
- package/modules/esnext.map.get-or-insert.js +2 -18
- 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.url-search-params.constructor.js +1 -1
- package/package.json +2 -1
- package/stable/index.js +8 -0
- package/stable/iterator/concat.js +5 -0
- package/stable/json/is-raw-json.js +4 -0
- package/stable/json/parse.js +4 -0
- package/stable/json/raw-json.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/2.7.js +0 -1
- package/stage/3.js +1 -3
- package/stage/4.js +3 -0
- package/internals/array-to-reversed.js +0 -12
- package/internals/array-with.js +0 -18
- package/internals/get-json-replacer-function.js +0 -30
|
@@ -17,6 +17,7 @@ module.exports = function (KEY, exec, FORCED, SHAM) {
|
|
|
17
17
|
var DELEGATES_TO_SYMBOL = !fails(function () {
|
|
18
18
|
// String methods call symbol-named RegExp methods
|
|
19
19
|
var O = {};
|
|
20
|
+
// eslint-disable-next-line unicorn/no-immediate-mutation -- ES3 syntax limitation
|
|
20
21
|
O[SYMBOL] = function () { return 7; };
|
|
21
22
|
return ''[KEY](O) !== 7;
|
|
22
23
|
});
|
|
@@ -30,12 +31,13 @@ module.exports = function (KEY, exec, FORCED, SHAM) {
|
|
|
30
31
|
// We can't use real regex here since it causes deoptimization
|
|
31
32
|
// and serious performance degradation in V8
|
|
32
33
|
// https://github.com/zloirock/core-js/issues/306
|
|
33
|
-
re = {};
|
|
34
34
|
// RegExp[@@split] doesn't call the regex's exec method, but first creates
|
|
35
35
|
// a new one. We need to return the patched regex when creating the new one.
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
36
|
+
var constructor = {};
|
|
37
|
+
// eslint-disable-next-line unicorn/no-immediate-mutation -- ES3 syntax limitation
|
|
38
|
+
constructor[SPECIES] = function () { return re; };
|
|
39
|
+
re = { constructor: constructor, flags: '' };
|
|
40
|
+
// eslint-disable-next-line unicorn/no-immediate-mutation -- ES3 syntax limitation
|
|
39
41
|
re[SYMBOL] = /./[SYMBOL];
|
|
40
42
|
}
|
|
41
43
|
|
|
@@ -3,6 +3,7 @@ var isArray = require('../internals/is-array');
|
|
|
3
3
|
var lengthOfArrayLike = require('../internals/length-of-array-like');
|
|
4
4
|
var doesNotExceedSafeInteger = require('../internals/does-not-exceed-safe-integer');
|
|
5
5
|
var bind = require('../internals/function-bind-context');
|
|
6
|
+
var createProperty = require('../internals/create-property');
|
|
6
7
|
|
|
7
8
|
// `FlattenIntoArray` abstract operation
|
|
8
9
|
// https://tc39.es/ecma262/#sec-flattenintoarray
|
|
@@ -21,7 +22,7 @@ var flattenIntoArray = function (target, original, source, sourceLen, start, dep
|
|
|
21
22
|
targetIndex = flattenIntoArray(target, original, element, elementLen, targetIndex, depth - 1) - 1;
|
|
22
23
|
} else {
|
|
23
24
|
doesNotExceedSafeInteger(targetIndex + 1);
|
|
24
|
-
target
|
|
25
|
+
createProperty(target, targetIndex, element);
|
|
25
26
|
}
|
|
26
27
|
|
|
27
28
|
targetIndex++;
|
|
@@ -60,6 +60,7 @@ var enable = function () {
|
|
|
60
60
|
var getOwnPropertyNames = getOwnPropertyNamesModule.f;
|
|
61
61
|
var splice = uncurryThis([].splice);
|
|
62
62
|
var test = {};
|
|
63
|
+
// eslint-disable-next-line unicorn/no-immediate-mutation -- ES3 syntax limitation
|
|
63
64
|
test[METADATA] = 1;
|
|
64
65
|
|
|
65
66
|
// prevent exposing of metadata key
|
|
@@ -4,8 +4,8 @@ var fails = require('../internals/fails');
|
|
|
4
4
|
|
|
5
5
|
module.exports = !fails(function () {
|
|
6
6
|
var unsafeInt = '9007199254740993';
|
|
7
|
-
// eslint-disable-next-line es/no-
|
|
7
|
+
// eslint-disable-next-line es/no-json-rawjson -- feature detection
|
|
8
8
|
var raw = JSON.rawJSON(unsafeInt);
|
|
9
|
-
// eslint-disable-next-line es/no-
|
|
9
|
+
// eslint-disable-next-line es/no-json-israwjson -- feature detection
|
|
10
10
|
return !JSON.isRawJSON(raw) || JSON.stringify(raw) !== unsafeInt;
|
|
11
11
|
});
|
|
@@ -48,9 +48,7 @@ module.exports = function (name, callback) {
|
|
|
48
48
|
new Set()[name](createSetLikeWithInfinitySize(-Infinity));
|
|
49
49
|
return false;
|
|
50
50
|
} catch (error) {
|
|
51
|
-
var set = new Set();
|
|
52
|
-
set.add(1);
|
|
53
|
-
set.add(2);
|
|
51
|
+
var set = new Set([1, 2]);
|
|
54
52
|
return callback(set[name](createSetLikeWithInfinitySize(Infinity)));
|
|
55
53
|
}
|
|
56
54
|
}
|
|
@@ -7,9 +7,9 @@ var SHARED = '__core-js_shared__';
|
|
|
7
7
|
var store = module.exports = globalThis[SHARED] || defineGlobalProperty(SHARED, {});
|
|
8
8
|
|
|
9
9
|
(store.versions || (store.versions = [])).push({
|
|
10
|
-
version: '3.
|
|
10
|
+
version: '3.48.0',
|
|
11
11
|
mode: IS_PURE ? 'pure' : 'global',
|
|
12
|
-
copyright: '©
|
|
13
|
-
license: 'https://github.com/zloirock/core-js/blob/v3.
|
|
12
|
+
copyright: '© 2013–2025 Denis Pushkarev (zloirock.ru), 2025–2026 CoreJS Company (core-js.io). All rights reserved.',
|
|
13
|
+
license: 'https://github.com/zloirock/core-js/blob/v3.48.0/LICENSE',
|
|
14
14
|
source: 'https://github.com/zloirock/core-js'
|
|
15
15
|
});
|
|
@@ -3,7 +3,7 @@ var wellKnownSymbol = require('../internals/well-known-symbol');
|
|
|
3
3
|
|
|
4
4
|
var TO_STRING_TAG = wellKnownSymbol('toStringTag');
|
|
5
5
|
var test = {};
|
|
6
|
-
|
|
6
|
+
// eslint-disable-next-line unicorn/no-immediate-mutation -- ES3 syntax limitation
|
|
7
7
|
test[TO_STRING_TAG] = 'z';
|
|
8
8
|
|
|
9
9
|
module.exports = String(test) === '[object z]';
|
|
@@ -7,6 +7,7 @@ var toObject = require('../internals/to-object');
|
|
|
7
7
|
var lengthOfArrayLike = require('../internals/length-of-array-like');
|
|
8
8
|
var doesNotExceedSafeInteger = require('../internals/does-not-exceed-safe-integer');
|
|
9
9
|
var createProperty = require('../internals/create-property');
|
|
10
|
+
var setArrayLength = require('../internals/array-set-length');
|
|
10
11
|
var arraySpeciesCreate = require('../internals/array-species-create');
|
|
11
12
|
var arrayMethodHasSpeciesSupport = require('../internals/array-method-has-species-support');
|
|
12
13
|
var wellKnownSymbol = require('../internals/well-known-symbol');
|
|
@@ -52,7 +53,7 @@ $({ target: 'Array', proto: true, arity: 1, forced: FORCED }, {
|
|
|
52
53
|
createProperty(A, n++, E);
|
|
53
54
|
}
|
|
54
55
|
}
|
|
55
|
-
A
|
|
56
|
+
setArrayLength(A, n);
|
|
56
57
|
return A;
|
|
57
58
|
}
|
|
58
59
|
});
|
|
@@ -15,7 +15,7 @@ $({ target: 'Array', proto: true }, {
|
|
|
15
15
|
var A;
|
|
16
16
|
aCallable(callbackfn);
|
|
17
17
|
A = arraySpeciesCreate(O, 0);
|
|
18
|
-
|
|
18
|
+
flattenIntoArray(A, O, O, sourceLen, 0, 1, callbackfn, arguments.length > 1 ? arguments[1] : undefined);
|
|
19
19
|
return A;
|
|
20
20
|
}
|
|
21
21
|
});
|
package/modules/es.array.flat.js
CHANGED
|
@@ -14,7 +14,7 @@ $({ target: 'Array', proto: true }, {
|
|
|
14
14
|
var O = toObject(this);
|
|
15
15
|
var sourceLen = lengthOfArrayLike(O);
|
|
16
16
|
var A = arraySpeciesCreate(O, 0);
|
|
17
|
-
|
|
17
|
+
flattenIntoArray(A, O, O, sourceLen, 0, depthArg === undefined ? 1 : toIntegerOrInfinity(depthArg));
|
|
18
18
|
return A;
|
|
19
19
|
}
|
|
20
20
|
});
|
package/modules/es.array.of.js
CHANGED
|
@@ -3,6 +3,7 @@ var $ = require('../internals/export');
|
|
|
3
3
|
var fails = require('../internals/fails');
|
|
4
4
|
var isConstructor = require('../internals/is-constructor');
|
|
5
5
|
var createProperty = require('../internals/create-property');
|
|
6
|
+
var setArrayLength = require('../internals/array-set-length');
|
|
6
7
|
|
|
7
8
|
var $Array = Array;
|
|
8
9
|
|
|
@@ -21,7 +22,7 @@ $({ target: 'Array', stat: true, forced: ISNT_GENERIC }, {
|
|
|
21
22
|
var argumentsLength = arguments.length;
|
|
22
23
|
var result = new (isConstructor(this) ? this : $Array)(argumentsLength);
|
|
23
24
|
while (argumentsLength > index) createProperty(result, index, arguments[index++]);
|
|
24
|
-
result
|
|
25
|
+
setArrayLength(result, argumentsLength);
|
|
25
26
|
return result;
|
|
26
27
|
}
|
|
27
28
|
});
|
|
@@ -7,6 +7,7 @@ var toAbsoluteIndex = require('../internals/to-absolute-index');
|
|
|
7
7
|
var lengthOfArrayLike = require('../internals/length-of-array-like');
|
|
8
8
|
var toIndexedObject = require('../internals/to-indexed-object');
|
|
9
9
|
var createProperty = require('../internals/create-property');
|
|
10
|
+
var setArrayLength = require('../internals/array-set-length');
|
|
10
11
|
var wellKnownSymbol = require('../internals/well-known-symbol');
|
|
11
12
|
var arrayMethodHasSpeciesSupport = require('../internals/array-method-has-species-support');
|
|
12
13
|
var nativeSlice = require('../internals/array-slice');
|
|
@@ -43,7 +44,7 @@ $({ target: 'Array', proto: true, forced: !HAS_SPECIES_SUPPORT }, {
|
|
|
43
44
|
}
|
|
44
45
|
result = new (Constructor === undefined ? $Array : Constructor)(max(fin - k, 0));
|
|
45
46
|
for (n = 0; k < fin; k++, n++) if (k in O) createProperty(result, n, O[k]);
|
|
46
|
-
result
|
|
47
|
+
setArrayLength(result, n);
|
|
47
48
|
return result;
|
|
48
49
|
}
|
|
49
50
|
});
|
|
@@ -41,7 +41,7 @@ $({ target: 'Array', proto: true, forced: !HAS_SPECIES_SUPPORT }, {
|
|
|
41
41
|
from = actualStart + k;
|
|
42
42
|
if (from in O) createProperty(A, k, O[from]);
|
|
43
43
|
}
|
|
44
|
-
A
|
|
44
|
+
setArrayLength(A, actualDeleteCount);
|
|
45
45
|
if (insertCount < actualDeleteCount) {
|
|
46
46
|
for (k = actualStart; k < len - actualDeleteCount; k++) {
|
|
47
47
|
from = k + actualDeleteCount;
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
var $ = require('../internals/export');
|
|
3
|
-
var
|
|
3
|
+
var lengthOfArrayLike = require('../internals/length-of-array-like');
|
|
4
4
|
var toIndexedObject = require('../internals/to-indexed-object');
|
|
5
|
+
var createProperty = require('../internals/create-property');
|
|
5
6
|
var addToUnscopables = require('../internals/add-to-unscopables');
|
|
6
7
|
|
|
7
8
|
var $Array = Array;
|
|
@@ -10,7 +11,12 @@ var $Array = Array;
|
|
|
10
11
|
// https://tc39.es/ecma262/#sec-array.prototype.toreversed
|
|
11
12
|
$({ target: 'Array', proto: true }, {
|
|
12
13
|
toReversed: function toReversed() {
|
|
13
|
-
|
|
14
|
+
var O = toIndexedObject(this);
|
|
15
|
+
var len = lengthOfArrayLike(O);
|
|
16
|
+
var A = new $Array(len);
|
|
17
|
+
var k = 0;
|
|
18
|
+
for (; k < len; k++) createProperty(A, k, O[len - k - 1]);
|
|
19
|
+
return A;
|
|
14
20
|
}
|
|
15
21
|
});
|
|
16
22
|
|
|
@@ -6,6 +6,7 @@ var lengthOfArrayLike = require('../internals/length-of-array-like');
|
|
|
6
6
|
var toAbsoluteIndex = require('../internals/to-absolute-index');
|
|
7
7
|
var toIndexedObject = require('../internals/to-indexed-object');
|
|
8
8
|
var toIntegerOrInfinity = require('../internals/to-integer-or-infinity');
|
|
9
|
+
var createProperty = require('../internals/create-property');
|
|
9
10
|
|
|
10
11
|
var $Array = Array;
|
|
11
12
|
var max = Math.max;
|
|
@@ -33,9 +34,9 @@ $({ target: 'Array', proto: true }, {
|
|
|
33
34
|
newLen = doesNotExceedSafeInteger(len + insertCount - actualDeleteCount);
|
|
34
35
|
A = $Array(newLen);
|
|
35
36
|
|
|
36
|
-
for (; k < actualStart; k++) A
|
|
37
|
-
for (; k < actualStart + insertCount; k++) A
|
|
38
|
-
for (; k < newLen; k++) A
|
|
37
|
+
for (; k < actualStart; k++) createProperty(A, k, O[k]);
|
|
38
|
+
for (; k < actualStart + insertCount; k++) createProperty(A, k, arguments[k - actualStart + 2]);
|
|
39
|
+
for (; k < newLen; k++) createProperty(A, k, O[k + actualDeleteCount - insertCount]);
|
|
39
40
|
|
|
40
41
|
return A;
|
|
41
42
|
}
|
package/modules/es.array.with.js
CHANGED
|
@@ -1,9 +1,12 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
var $ = require('../internals/export');
|
|
3
|
-
var
|
|
3
|
+
var lengthOfArrayLike = require('../internals/length-of-array-like');
|
|
4
|
+
var toIntegerOrInfinity = require('../internals/to-integer-or-infinity');
|
|
4
5
|
var toIndexedObject = require('../internals/to-indexed-object');
|
|
6
|
+
var createProperty = require('../internals/create-property');
|
|
5
7
|
|
|
6
8
|
var $Array = Array;
|
|
9
|
+
var $RangeError = RangeError;
|
|
7
10
|
|
|
8
11
|
// Firefox bug
|
|
9
12
|
var INCORRECT_EXCEPTION_ON_COERCION_FAIL = (function () {
|
|
@@ -19,6 +22,14 @@ var INCORRECT_EXCEPTION_ON_COERCION_FAIL = (function () {
|
|
|
19
22
|
// https://tc39.es/ecma262/#sec-array.prototype.with
|
|
20
23
|
$({ target: 'Array', proto: true, forced: INCORRECT_EXCEPTION_ON_COERCION_FAIL }, {
|
|
21
24
|
'with': function (index, value) {
|
|
22
|
-
|
|
25
|
+
var O = toIndexedObject(this);
|
|
26
|
+
var len = lengthOfArrayLike(O);
|
|
27
|
+
var relativeIndex = toIntegerOrInfinity(index);
|
|
28
|
+
var actualIndex = relativeIndex < 0 ? len + relativeIndex : relativeIndex;
|
|
29
|
+
if (actualIndex >= len || actualIndex < 0) throw new $RangeError('Incorrect index');
|
|
30
|
+
var A = new $Array(len);
|
|
31
|
+
var k = 0;
|
|
32
|
+
for (; k < len; k++) createProperty(A, k, k === actualIndex ? value : O[k]);
|
|
33
|
+
return A;
|
|
23
34
|
}
|
|
24
35
|
});
|
|
@@ -13,6 +13,7 @@ var FORCED = new Error('e', { cause: 7 }).cause !== 7;
|
|
|
13
13
|
|
|
14
14
|
var exportGlobalErrorCauseWrapper = function (ERROR_NAME, wrapper) {
|
|
15
15
|
var O = {};
|
|
16
|
+
// eslint-disable-next-line unicorn/no-immediate-mutation -- ES3 syntax limitation
|
|
16
17
|
O[ERROR_NAME] = wrapErrorConstructorWithCause(ERROR_NAME, wrapper, FORCED);
|
|
17
18
|
$({ global: true, constructor: true, arity: 1, forced: FORCED }, O);
|
|
18
19
|
};
|
|
@@ -20,6 +21,7 @@ var exportGlobalErrorCauseWrapper = function (ERROR_NAME, wrapper) {
|
|
|
20
21
|
var exportWebAssemblyErrorCauseWrapper = function (ERROR_NAME, wrapper) {
|
|
21
22
|
if (WebAssembly && WebAssembly[ERROR_NAME]) {
|
|
22
23
|
var O = {};
|
|
24
|
+
// eslint-disable-next-line unicorn/no-immediate-mutation -- ES3 syntax limitation
|
|
23
25
|
O[ERROR_NAME] = wrapErrorConstructorWithCause(WEB_ASSEMBLY + '.' + ERROR_NAME, wrapper, FORCED);
|
|
24
26
|
$({ target: WEB_ASSEMBLY, stat: true, constructor: true, arity: 1, forced: FORCED }, O);
|
|
25
27
|
}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
var $ = require('../internals/export');
|
|
3
|
+
var call = require('../internals/function-call');
|
|
4
|
+
var aCallable = require('../internals/a-callable');
|
|
5
|
+
var anObject = require('../internals/an-object');
|
|
6
|
+
var getIteratorMethod = require('../internals/get-iterator-method');
|
|
7
|
+
var createIteratorProxy = require('../internals/iterator-create-proxy');
|
|
8
|
+
|
|
9
|
+
var $Array = Array;
|
|
10
|
+
|
|
11
|
+
var IteratorProxy = createIteratorProxy(function () {
|
|
12
|
+
while (true) {
|
|
13
|
+
var iterator = this.iterator;
|
|
14
|
+
if (!iterator) {
|
|
15
|
+
var iterableIndex = this.nextIterableIndex++;
|
|
16
|
+
var iterables = this.iterables;
|
|
17
|
+
if (iterableIndex >= iterables.length) {
|
|
18
|
+
this.done = true;
|
|
19
|
+
return;
|
|
20
|
+
}
|
|
21
|
+
var entry = iterables[iterableIndex];
|
|
22
|
+
this.iterables[iterableIndex] = null;
|
|
23
|
+
iterator = this.iterator = call(entry.method, entry.iterable);
|
|
24
|
+
this.next = iterator.next;
|
|
25
|
+
}
|
|
26
|
+
var result = anObject(call(this.next, iterator));
|
|
27
|
+
if (result.done) {
|
|
28
|
+
this.iterator = null;
|
|
29
|
+
this.next = null;
|
|
30
|
+
continue;
|
|
31
|
+
}
|
|
32
|
+
return result.value;
|
|
33
|
+
}
|
|
34
|
+
});
|
|
35
|
+
|
|
36
|
+
// `Iterator.concat` method
|
|
37
|
+
// https://github.com/tc39/proposal-iterator-sequencing
|
|
38
|
+
$({ target: 'Iterator', stat: true }, {
|
|
39
|
+
concat: function concat() {
|
|
40
|
+
var length = arguments.length;
|
|
41
|
+
var iterables = $Array(length);
|
|
42
|
+
for (var index = 0; index < length; index++) {
|
|
43
|
+
var item = anObject(arguments[index]);
|
|
44
|
+
iterables[index] = {
|
|
45
|
+
iterable: item,
|
|
46
|
+
method: aCallable(getIteratorMethod(item))
|
|
47
|
+
};
|
|
48
|
+
}
|
|
49
|
+
return new IteratorProxy({
|
|
50
|
+
iterables: iterables,
|
|
51
|
+
nextIterableIndex: 0,
|
|
52
|
+
iterator: null,
|
|
53
|
+
next: null
|
|
54
|
+
});
|
|
55
|
+
}
|
|
56
|
+
});
|
|
@@ -11,12 +11,26 @@ var IS_PURE = require('../internals/is-pure');
|
|
|
11
11
|
var iteratorHelperThrowsOnInvalidIterator = require('../internals/iterator-helper-throws-on-invalid-iterator');
|
|
12
12
|
var iteratorHelperWithoutClosingOnEarlyError = require('../internals/iterator-helper-without-closing-on-early-error');
|
|
13
13
|
|
|
14
|
+
// Should not throw an error for an iterator without `return` method. Fixed in Safari 26.2
|
|
15
|
+
// https://bugs.webkit.org/show_bug.cgi?id=297532
|
|
16
|
+
function throwsOnIteratorWithoutReturn() {
|
|
17
|
+
try {
|
|
18
|
+
// eslint-disable-next-line es/no-map, es/no-iterator, es/no-iterator-prototype-flatmap -- required for testing
|
|
19
|
+
var it = Iterator.prototype.flatMap.call(new Map([[4, 5]]).entries(), function (v) { return v; });
|
|
20
|
+
it.next();
|
|
21
|
+
it['return']();
|
|
22
|
+
} catch (error) {
|
|
23
|
+
return true;
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
|
|
14
27
|
var FLAT_MAP_WITHOUT_THROWING_ON_INVALID_ITERATOR = !IS_PURE
|
|
15
28
|
&& !iteratorHelperThrowsOnInvalidIterator('flatMap', function () { /* empty */ });
|
|
16
29
|
var flatMapWithoutClosingOnEarlyError = !IS_PURE && !FLAT_MAP_WITHOUT_THROWING_ON_INVALID_ITERATOR
|
|
17
30
|
&& iteratorHelperWithoutClosingOnEarlyError('flatMap', TypeError);
|
|
18
31
|
|
|
19
|
-
var FORCED = IS_PURE || FLAT_MAP_WITHOUT_THROWING_ON_INVALID_ITERATOR || flatMapWithoutClosingOnEarlyError
|
|
32
|
+
var FORCED = IS_PURE || FLAT_MAP_WITHOUT_THROWING_ON_INVALID_ITERATOR || flatMapWithoutClosingOnEarlyError
|
|
33
|
+
|| throwsOnIteratorWithoutReturn();
|
|
20
34
|
|
|
21
35
|
var IteratorProxy = createIteratorProxy(function () {
|
|
22
36
|
var iterator = this.iterator;
|
|
@@ -1,17 +1,19 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
var $ = require('../internals/export');
|
|
3
3
|
var anObject = require('../internals/an-object');
|
|
4
|
+
var createProperty = require('../internals/create-property');
|
|
4
5
|
var iterate = require('../internals/iterate');
|
|
5
6
|
var getIteratorDirect = require('../internals/get-iterator-direct');
|
|
6
7
|
|
|
7
|
-
var push = [].push;
|
|
8
|
-
|
|
9
8
|
// `Iterator.prototype.toArray` method
|
|
10
9
|
// https://tc39.es/ecma262/#sec-iterator.prototype.toarray
|
|
11
10
|
$({ target: 'Iterator', proto: true, real: true }, {
|
|
12
11
|
toArray: function toArray() {
|
|
13
12
|
var result = [];
|
|
14
|
-
|
|
13
|
+
var index = 0;
|
|
14
|
+
iterate(getIteratorDirect(anObject(this)), function (element) {
|
|
15
|
+
createProperty(result, index++, element);
|
|
16
|
+
}, { IS_RECORD: true });
|
|
15
17
|
return result;
|
|
16
18
|
}
|
|
17
19
|
});
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
var $ = require('../internals/export');
|
|
3
|
+
var NATIVE_RAW_JSON = require('../internals/native-raw-json');
|
|
4
|
+
var isRawJSON = require('../internals/is-raw-json');
|
|
5
|
+
|
|
6
|
+
// `JSON.isRawJSON` method
|
|
7
|
+
// https://tc39.es/proposal-json-parse-with-source/#sec-json.israwjson
|
|
8
|
+
// https://github.com/tc39/proposal-json-parse-with-source
|
|
9
|
+
$({ target: 'JSON', stat: true, forced: !NATIVE_RAW_JSON }, {
|
|
10
|
+
isRawJSON: isRawJSON
|
|
11
|
+
});
|
|
@@ -0,0 +1,251 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
var $ = require('../internals/export');
|
|
3
|
+
var DESCRIPTORS = require('../internals/descriptors');
|
|
4
|
+
var globalThis = require('../internals/global-this');
|
|
5
|
+
var getBuiltIn = require('../internals/get-built-in');
|
|
6
|
+
var uncurryThis = require('../internals/function-uncurry-this');
|
|
7
|
+
var call = require('../internals/function-call');
|
|
8
|
+
var isCallable = require('../internals/is-callable');
|
|
9
|
+
var isObject = require('../internals/is-object');
|
|
10
|
+
var isArray = require('../internals/is-array');
|
|
11
|
+
var hasOwn = require('../internals/has-own-property');
|
|
12
|
+
var toString = require('../internals/to-string');
|
|
13
|
+
var lengthOfArrayLike = require('../internals/length-of-array-like');
|
|
14
|
+
var createProperty = require('../internals/create-property');
|
|
15
|
+
var fails = require('../internals/fails');
|
|
16
|
+
var parseJSONString = require('../internals/parse-json-string');
|
|
17
|
+
var NATIVE_SYMBOL = require('../internals/symbol-constructor-detection');
|
|
18
|
+
|
|
19
|
+
var JSON = globalThis.JSON;
|
|
20
|
+
var Number = globalThis.Number;
|
|
21
|
+
var SyntaxError = globalThis.SyntaxError;
|
|
22
|
+
var nativeParse = JSON && JSON.parse;
|
|
23
|
+
var enumerableOwnProperties = getBuiltIn('Object', 'keys');
|
|
24
|
+
// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe
|
|
25
|
+
var getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;
|
|
26
|
+
var at = uncurryThis(''.charAt);
|
|
27
|
+
var slice = uncurryThis(''.slice);
|
|
28
|
+
var exec = uncurryThis(/./.exec);
|
|
29
|
+
var push = uncurryThis([].push);
|
|
30
|
+
|
|
31
|
+
var IS_DIGIT = /^\d$/;
|
|
32
|
+
var IS_NON_ZERO_DIGIT = /^[1-9]$/;
|
|
33
|
+
var IS_NUMBER_START = /^[\d-]$/;
|
|
34
|
+
var IS_WHITESPACE = /^[\t\n\r ]$/;
|
|
35
|
+
|
|
36
|
+
var PRIMITIVE = 0;
|
|
37
|
+
var OBJECT = 1;
|
|
38
|
+
|
|
39
|
+
var $parse = function (source, reviver) {
|
|
40
|
+
source = toString(source);
|
|
41
|
+
var context = new Context(source, 0, '');
|
|
42
|
+
var root = context.parse();
|
|
43
|
+
var value = root.value;
|
|
44
|
+
var endIndex = context.skip(IS_WHITESPACE, root.end);
|
|
45
|
+
if (endIndex < source.length) {
|
|
46
|
+
throw new SyntaxError('Unexpected extra character: "' + at(source, endIndex) + '" after the parsed data at: ' + endIndex);
|
|
47
|
+
}
|
|
48
|
+
return isCallable(reviver) ? internalize({ '': value }, '', reviver, root) : value;
|
|
49
|
+
};
|
|
50
|
+
|
|
51
|
+
var internalize = function (holder, name, reviver, node) {
|
|
52
|
+
var val = holder[name];
|
|
53
|
+
var unmodified = node && val === node.value;
|
|
54
|
+
var context = unmodified && typeof node.source == 'string' ? { source: node.source } : {};
|
|
55
|
+
var elementRecordsLen, keys, len, i, P;
|
|
56
|
+
if (isObject(val)) {
|
|
57
|
+
var nodeIsArray = isArray(val);
|
|
58
|
+
var nodes = unmodified ? node.nodes : nodeIsArray ? [] : {};
|
|
59
|
+
if (nodeIsArray) {
|
|
60
|
+
elementRecordsLen = nodes.length;
|
|
61
|
+
len = lengthOfArrayLike(val);
|
|
62
|
+
for (i = 0; i < len; i++) {
|
|
63
|
+
internalizeProperty(val, i, internalize(val, '' + i, reviver, i < elementRecordsLen ? nodes[i] : undefined));
|
|
64
|
+
}
|
|
65
|
+
} else {
|
|
66
|
+
keys = enumerableOwnProperties(val);
|
|
67
|
+
len = lengthOfArrayLike(keys);
|
|
68
|
+
for (i = 0; i < len; i++) {
|
|
69
|
+
P = keys[i];
|
|
70
|
+
internalizeProperty(val, P, internalize(val, P, reviver, hasOwn(nodes, P) ? nodes[P] : undefined));
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
return call(reviver, holder, name, val, context);
|
|
75
|
+
};
|
|
76
|
+
|
|
77
|
+
var internalizeProperty = function (object, key, value) {
|
|
78
|
+
if (DESCRIPTORS) {
|
|
79
|
+
var descriptor = getOwnPropertyDescriptor(object, key);
|
|
80
|
+
if (descriptor && !descriptor.configurable) return;
|
|
81
|
+
}
|
|
82
|
+
if (value === undefined) delete object[key];
|
|
83
|
+
else createProperty(object, key, value);
|
|
84
|
+
};
|
|
85
|
+
|
|
86
|
+
var Node = function (value, end, source, nodes) {
|
|
87
|
+
this.value = value;
|
|
88
|
+
this.end = end;
|
|
89
|
+
this.source = source;
|
|
90
|
+
this.nodes = nodes;
|
|
91
|
+
};
|
|
92
|
+
|
|
93
|
+
var Context = function (source, index) {
|
|
94
|
+
this.source = source;
|
|
95
|
+
this.index = index;
|
|
96
|
+
};
|
|
97
|
+
|
|
98
|
+
// https://www.json.org/json-en.html
|
|
99
|
+
Context.prototype = {
|
|
100
|
+
fork: function (nextIndex) {
|
|
101
|
+
return new Context(this.source, nextIndex);
|
|
102
|
+
},
|
|
103
|
+
parse: function () {
|
|
104
|
+
var source = this.source;
|
|
105
|
+
var i = this.skip(IS_WHITESPACE, this.index);
|
|
106
|
+
var fork = this.fork(i);
|
|
107
|
+
var chr = at(source, i);
|
|
108
|
+
if (exec(IS_NUMBER_START, chr)) return fork.number();
|
|
109
|
+
switch (chr) {
|
|
110
|
+
case '{':
|
|
111
|
+
return fork.object();
|
|
112
|
+
case '[':
|
|
113
|
+
return fork.array();
|
|
114
|
+
case '"':
|
|
115
|
+
return fork.string();
|
|
116
|
+
case 't':
|
|
117
|
+
return fork.keyword(true);
|
|
118
|
+
case 'f':
|
|
119
|
+
return fork.keyword(false);
|
|
120
|
+
case 'n':
|
|
121
|
+
return fork.keyword(null);
|
|
122
|
+
} throw new SyntaxError('Unexpected character: "' + chr + '" at: ' + i);
|
|
123
|
+
},
|
|
124
|
+
node: function (type, value, start, end, nodes) {
|
|
125
|
+
return new Node(value, end, type ? null : slice(this.source, start, end), nodes);
|
|
126
|
+
},
|
|
127
|
+
object: function () {
|
|
128
|
+
var source = this.source;
|
|
129
|
+
var i = this.index + 1;
|
|
130
|
+
var expectKeypair = false;
|
|
131
|
+
var object = {};
|
|
132
|
+
var nodes = {};
|
|
133
|
+
while (i < source.length) {
|
|
134
|
+
i = this.until(['"', '}'], i);
|
|
135
|
+
if (at(source, i) === '}' && !expectKeypair) {
|
|
136
|
+
i++;
|
|
137
|
+
break;
|
|
138
|
+
}
|
|
139
|
+
// Parsing the key
|
|
140
|
+
var result = this.fork(i).string();
|
|
141
|
+
var key = result.value;
|
|
142
|
+
i = result.end;
|
|
143
|
+
i = this.until([':'], i) + 1;
|
|
144
|
+
// Parsing value
|
|
145
|
+
i = this.skip(IS_WHITESPACE, i);
|
|
146
|
+
result = this.fork(i).parse();
|
|
147
|
+
createProperty(nodes, key, result);
|
|
148
|
+
createProperty(object, key, result.value);
|
|
149
|
+
i = this.until([',', '}'], result.end);
|
|
150
|
+
var chr = at(source, i);
|
|
151
|
+
if (chr === ',') {
|
|
152
|
+
expectKeypair = true;
|
|
153
|
+
i++;
|
|
154
|
+
} else if (chr === '}') {
|
|
155
|
+
i++;
|
|
156
|
+
break;
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
return this.node(OBJECT, object, this.index, i, nodes);
|
|
160
|
+
},
|
|
161
|
+
array: function () {
|
|
162
|
+
var source = this.source;
|
|
163
|
+
var i = this.index + 1;
|
|
164
|
+
var expectElement = false;
|
|
165
|
+
var array = [];
|
|
166
|
+
var nodes = [];
|
|
167
|
+
while (i < source.length) {
|
|
168
|
+
i = this.skip(IS_WHITESPACE, i);
|
|
169
|
+
if (at(source, i) === ']' && !expectElement) {
|
|
170
|
+
i++;
|
|
171
|
+
break;
|
|
172
|
+
}
|
|
173
|
+
var result = this.fork(i).parse();
|
|
174
|
+
push(nodes, result);
|
|
175
|
+
push(array, result.value);
|
|
176
|
+
i = this.until([',', ']'], result.end);
|
|
177
|
+
if (at(source, i) === ',') {
|
|
178
|
+
expectElement = true;
|
|
179
|
+
i++;
|
|
180
|
+
} else if (at(source, i) === ']') {
|
|
181
|
+
i++;
|
|
182
|
+
break;
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
return this.node(OBJECT, array, this.index, i, nodes);
|
|
186
|
+
},
|
|
187
|
+
string: function () {
|
|
188
|
+
var index = this.index;
|
|
189
|
+
var parsed = parseJSONString(this.source, this.index + 1);
|
|
190
|
+
return this.node(PRIMITIVE, parsed.value, index, parsed.end);
|
|
191
|
+
},
|
|
192
|
+
number: function () {
|
|
193
|
+
var source = this.source;
|
|
194
|
+
var startIndex = this.index;
|
|
195
|
+
var i = startIndex;
|
|
196
|
+
if (at(source, i) === '-') i++;
|
|
197
|
+
if (at(source, i) === '0') i++;
|
|
198
|
+
else if (exec(IS_NON_ZERO_DIGIT, at(source, i))) i = this.skip(IS_DIGIT, i + 1);
|
|
199
|
+
else throw new SyntaxError('Failed to parse number at: ' + i);
|
|
200
|
+
if (at(source, i) === '.') i = this.skip(IS_DIGIT, i + 1);
|
|
201
|
+
if (at(source, i) === 'e' || at(source, i) === 'E') {
|
|
202
|
+
i++;
|
|
203
|
+
if (at(source, i) === '+' || at(source, i) === '-') i++;
|
|
204
|
+
var exponentStartIndex = i;
|
|
205
|
+
i = this.skip(IS_DIGIT, i);
|
|
206
|
+
if (exponentStartIndex === i) throw new SyntaxError("Failed to parse number's exponent value at: " + i);
|
|
207
|
+
}
|
|
208
|
+
return this.node(PRIMITIVE, Number(slice(source, startIndex, i)), startIndex, i);
|
|
209
|
+
},
|
|
210
|
+
keyword: function (value) {
|
|
211
|
+
var keyword = '' + value;
|
|
212
|
+
var index = this.index;
|
|
213
|
+
var endIndex = index + keyword.length;
|
|
214
|
+
if (slice(this.source, index, endIndex) !== keyword) throw new SyntaxError('Failed to parse value at: ' + index);
|
|
215
|
+
return this.node(PRIMITIVE, value, index, endIndex);
|
|
216
|
+
},
|
|
217
|
+
skip: function (regex, i) {
|
|
218
|
+
var source = this.source;
|
|
219
|
+
for (; i < source.length; i++) if (!exec(regex, at(source, i))) break;
|
|
220
|
+
return i;
|
|
221
|
+
},
|
|
222
|
+
until: function (array, i) {
|
|
223
|
+
i = this.skip(IS_WHITESPACE, i);
|
|
224
|
+
var chr = at(this.source, i);
|
|
225
|
+
for (var j = 0; j < array.length; j++) if (array[j] === chr) return i;
|
|
226
|
+
throw new SyntaxError('Unexpected character: "' + chr + '" at: ' + i);
|
|
227
|
+
}
|
|
228
|
+
};
|
|
229
|
+
|
|
230
|
+
var NO_SOURCE_SUPPORT = fails(function () {
|
|
231
|
+
var unsafeInt = '9007199254740993';
|
|
232
|
+
var source;
|
|
233
|
+
nativeParse(unsafeInt, function (key, value, context) {
|
|
234
|
+
source = context.source;
|
|
235
|
+
});
|
|
236
|
+
return source !== unsafeInt;
|
|
237
|
+
});
|
|
238
|
+
|
|
239
|
+
var PROPER_BASE_PARSE = NATIVE_SYMBOL && !fails(function () {
|
|
240
|
+
// Safari 9 bug
|
|
241
|
+
return 1 / nativeParse('-0 \t') !== -Infinity;
|
|
242
|
+
});
|
|
243
|
+
|
|
244
|
+
// `JSON.parse` method
|
|
245
|
+
// https://tc39.es/ecma262/#sec-json.parse
|
|
246
|
+
// https://github.com/tc39/proposal-json-parse-with-source
|
|
247
|
+
$({ target: 'JSON', stat: true, forced: NO_SOURCE_SUPPORT }, {
|
|
248
|
+
parse: function parse(text, reviver) {
|
|
249
|
+
return PROPER_BASE_PARSE && !isCallable(reviver) ? nativeParse(text) : $parse(text, reviver);
|
|
250
|
+
}
|
|
251
|
+
});
|