core-js 3.47.0 → 3.49.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +2 -1
- package/README.md +2 -2
- package/actual/map/get-or-insert-computed.js +2 -3
- package/actual/map/get-or-insert.js +2 -3
- package/actual/map/group-by.js +2 -0
- package/actual/weak-map/get-or-insert-computed.js +2 -3
- package/actual/weak-map/get-or-insert.js +2 -3
- package/configurator.js +1 -1
- package/es/index.js +4 -0
- package/es/map/get-or-insert-computed.js +6 -0
- package/es/map/get-or-insert.js +6 -0
- package/es/map/group-by.js +2 -0
- package/es/map/index.js +2 -0
- package/es/object/define-properties.js +2 -2
- package/es/object/define-property.js +2 -2
- package/es/object/get-own-property-descriptor.js +2 -2
- package/es/promise/try.js +2 -2
- package/es/weak-map/get-or-insert-computed.js +6 -0
- package/es/weak-map/get-or-insert.js +6 -0
- package/es/weak-map/index.js +2 -0
- package/full/index.js +4 -0
- package/internals/advance-string-index.js +1 -1
- package/internals/array-buffer-transfer.js +4 -1
- package/internals/array-buffer-view-core.js +1 -1
- package/internals/array-buffer.js +1 -2
- package/internals/array-from-async.js +5 -7
- package/internals/array-from.js +9 -3
- package/internals/array-iteration.js +11 -13
- package/internals/array-unique-by.js +3 -3
- package/internals/async-from-sync-iterator.js +28 -4
- package/internals/async-iterator-close.js +11 -3
- package/internals/async-iterator-create-proxy.js +47 -20
- package/internals/async-iterator-iteration.js +11 -6
- package/internals/async-iterator-map.js +20 -18
- package/internals/does-not-exceed-safe-integer.js +1 -1
- package/internals/environment-is-ios.js +1 -2
- package/internals/flatten-into-array.js +2 -1
- package/internals/function-bind-native.js +1 -1
- package/internals/function-name.js +1 -1
- package/internals/iterate.js +8 -3
- package/internals/iterator-create-proxy.js +4 -1
- package/internals/iterator-window.js +2 -2
- package/internals/iterator-zip.js +4 -3
- package/internals/native-raw-json.js +2 -2
- package/internals/numeric-range-iterator.js +9 -4
- package/internals/regexp-exec.js +20 -13
- package/internals/set-difference.js +1 -1
- package/internals/set-is-disjoint-from.js +1 -1
- package/internals/set-is-superset-of.js +1 -1
- package/internals/shared-store.js +3 -3
- package/internals/string-pad.js +2 -1
- package/internals/string-parse.js +1 -1
- package/internals/string-repeat.js +2 -1
- package/internals/to-uint8-clamped.js +11 -3
- package/internals/typed-array-constructor.js +1 -2
- package/internals/typed-array-from.js +3 -1
- package/internals/uint8-from-hex.js +10 -10
- package/modules/es.array.concat.js +2 -1
- package/modules/es.array.flat-map.js +1 -1
- package/modules/es.array.flat.js +2 -1
- package/modules/es.array.from-async.js +1 -1
- package/modules/es.array.includes.js +7 -1
- package/modules/es.array.of.js +2 -1
- package/modules/es.array.slice.js +2 -1
- package/modules/es.array.sort.js +3 -1
- package/modules/es.array.splice.js +1 -1
- package/modules/es.array.to-reversed.js +8 -2
- package/modules/es.array.to-spliced.js +4 -3
- package/modules/es.array.with.js +13 -2
- package/modules/es.data-view.get-float16.js +1 -1
- package/modules/es.data-view.set-float16.js +2 -1
- package/modules/es.date.set-year.js +4 -1
- package/modules/es.error.is-error.js +1 -1
- package/modules/es.escape.js +1 -1
- package/modules/es.iterator.concat.js +4 -3
- package/modules/es.iterator.flat-map.js +15 -1
- package/modules/es.iterator.take.js +7 -2
- package/modules/es.iterator.to-array.js +5 -3
- package/modules/es.json.parse.js +13 -1
- package/modules/es.json.stringify.js +6 -3
- package/modules/es.map.get-or-insert-computed.js +24 -0
- package/modules/es.map.get-or-insert.js +18 -0
- package/modules/es.math.asinh.js +4 -1
- package/modules/es.math.atanh.js +2 -2
- package/modules/es.math.sum-precise.js +3 -3
- package/modules/es.number.to-exponential.js +15 -6
- package/modules/es.reflect.construct.js +1 -1
- package/modules/es.reflect.define-property.js +10 -0
- package/modules/es.reflect.delete-property.js +5 -2
- package/modules/es.reflect.get.js +9 -7
- package/modules/es.reflect.set.js +14 -9
- package/modules/es.regexp.constructor.js +18 -7
- package/modules/es.string.ends-with.js +1 -1
- package/modules/es.string.from-code-point.js +2 -2
- package/modules/es.string.match-all.js +1 -1
- package/modules/es.string.match.js +2 -2
- package/modules/es.string.replace.js +9 -8
- package/modules/es.string.split.js +7 -5
- package/modules/es.string.starts-with.js +1 -1
- package/modules/es.string.substr.js +5 -7
- package/modules/es.symbol.constructor.js +3 -2
- package/modules/es.symbol.description.js +9 -0
- package/modules/es.typed-array.map.js +3 -4
- package/modules/es.typed-array.sort.js +3 -3
- package/modules/es.typed-array.to-reversed.js +7 -2
- package/modules/es.typed-array.with.js +11 -3
- package/modules/es.uint8-array.from-base64.js +1 -1
- package/modules/es.uint8-array.from-hex.js +1 -1
- package/modules/es.uint8-array.set-from-base64.js +1 -1
- package/modules/es.uint8-array.set-from-hex.js +15 -2
- package/modules/es.uint8-array.to-base64.js +1 -1
- package/modules/es.uint8-array.to-hex.js +6 -4
- package/modules/es.weak-map.get-or-insert-computed.js +36 -0
- package/modules/es.weak-map.get-or-insert.js +18 -0
- package/modules/esnext.array.is-template-object.js +1 -1
- package/modules/esnext.async-iterator.reduce.js +2 -2
- package/modules/esnext.async-iterator.take.js +4 -2
- package/modules/esnext.bigint.range.js +1 -1
- package/modules/esnext.iterator.range.js +1 -1
- package/modules/esnext.iterator.zip-keyed.js +3 -2
- package/modules/esnext.iterator.zip.js +4 -3
- package/modules/esnext.map.get-or-insert-computed.js +2 -24
- package/modules/esnext.map.get-or-insert.js +2 -18
- package/modules/esnext.number.from-string.js +30 -3
- package/modules/esnext.number.range.js +1 -1
- package/modules/esnext.observable.from.js +5 -2
- package/modules/esnext.string.dedent.js +1 -1
- package/modules/esnext.weak-map.get-or-insert-computed.js +2 -35
- package/modules/esnext.weak-map.get-or-insert.js +2 -18
- package/modules/web.atob.js +15 -6
- package/modules/web.btoa.js +10 -3
- package/modules/web.structured-clone.js +2 -2
- package/modules/web.url-search-params.constructor.js +25 -10
- package/modules/web.url-search-params.delete.js +6 -9
- package/modules/web.url.constructor.js +55 -26
- package/modules/web.url.parse.js +1 -1
- package/package.json +5 -1
- package/stable/index.js +4 -0
- package/stable/map/get-or-insert-computed.js +4 -0
- package/stable/map/get-or-insert.js +4 -0
- package/stable/weak-map/get-or-insert-computed.js +4 -0
- package/stable/weak-map/get-or-insert.js +4 -0
- package/stage/3.js +0 -1
- package/stage/4.js +1 -0
- package/internals/array-to-reversed.js +0 -12
- package/internals/array-with.js +0 -18
|
@@ -9,32 +9,35 @@ var definePropertyModule = require('../internals/object-define-property');
|
|
|
9
9
|
var getOwnPropertyDescriptorModule = require('../internals/object-get-own-property-descriptor');
|
|
10
10
|
var getPrototypeOf = require('../internals/object-get-prototype-of');
|
|
11
11
|
var createPropertyDescriptor = require('../internals/create-property-descriptor');
|
|
12
|
+
var toPropertyKey = require('../internals/to-property-key');
|
|
12
13
|
|
|
13
14
|
// `Reflect.set` method
|
|
14
15
|
// https://tc39.es/ecma262/#sec-reflect.set
|
|
15
|
-
function
|
|
16
|
-
var receiver = arguments.length < 4 ? target : arguments[3];
|
|
16
|
+
var $set = function (target, propertyKey, V, receiver) {
|
|
17
17
|
var ownDescriptor = getOwnPropertyDescriptorModule.f(anObject(target), propertyKey);
|
|
18
18
|
var existingDescriptor, prototype, setter;
|
|
19
19
|
if (!ownDescriptor) {
|
|
20
20
|
if (isObject(prototype = getPrototypeOf(target))) {
|
|
21
|
-
return set(prototype, propertyKey, V, receiver);
|
|
21
|
+
return $set(prototype, propertyKey, V, receiver);
|
|
22
22
|
}
|
|
23
23
|
ownDescriptor = createPropertyDescriptor(0);
|
|
24
24
|
}
|
|
25
25
|
if (isDataDescriptor(ownDescriptor)) {
|
|
26
26
|
if (ownDescriptor.writable === false || !isObject(receiver)) return false;
|
|
27
27
|
if (existingDescriptor = getOwnPropertyDescriptorModule.f(receiver, propertyKey)) {
|
|
28
|
-
if (existingDescriptor
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
28
|
+
if (!isDataDescriptor(existingDescriptor) || existingDescriptor.writable === false) return false;
|
|
29
|
+
definePropertyModule.f(receiver, propertyKey, { value: V });
|
|
30
|
+
} else try {
|
|
31
|
+
definePropertyModule.f(receiver, propertyKey, createPropertyDescriptor(0, V));
|
|
32
|
+
} catch (error) {
|
|
33
|
+
return false;
|
|
34
|
+
}
|
|
32
35
|
} else {
|
|
33
36
|
setter = ownDescriptor.set;
|
|
34
37
|
if (setter === undefined) return false;
|
|
35
38
|
call(setter, receiver, V);
|
|
36
39
|
} return true;
|
|
37
|
-
}
|
|
40
|
+
};
|
|
38
41
|
|
|
39
42
|
// MS Edge 17-18 Reflect.set allows setting the property to object
|
|
40
43
|
// with non-writable property on the prototype
|
|
@@ -46,5 +49,7 @@ var MS_EDGE_BUG = fails(function () {
|
|
|
46
49
|
});
|
|
47
50
|
|
|
48
51
|
$({ target: 'Reflect', stat: true, forced: MS_EDGE_BUG }, {
|
|
49
|
-
set: set
|
|
52
|
+
set: function set(target, propertyKey, V /* , receiver */) {
|
|
53
|
+
return $set(anObject(target), toPropertyKey(propertyKey), V, arguments.length < 4 ? target : arguments[3]);
|
|
54
|
+
}
|
|
50
55
|
});
|
|
@@ -56,7 +56,7 @@ var handleDotAll = function (string) {
|
|
|
56
56
|
var result = '';
|
|
57
57
|
var brackets = false;
|
|
58
58
|
var chr;
|
|
59
|
-
for (; index
|
|
59
|
+
for (; index < length; index++) {
|
|
60
60
|
chr = charAt(string, index);
|
|
61
61
|
if (chr === '\\') {
|
|
62
62
|
result += chr + charAt(string, ++index);
|
|
@@ -85,10 +85,15 @@ var handleNCG = function (string) {
|
|
|
85
85
|
var groupid = 0;
|
|
86
86
|
var groupname = '';
|
|
87
87
|
var chr;
|
|
88
|
-
for (; index
|
|
88
|
+
for (; index < length; index++) {
|
|
89
89
|
chr = charAt(string, index);
|
|
90
90
|
if (chr === '\\') {
|
|
91
91
|
chr += charAt(string, ++index);
|
|
92
|
+
// use `\x5c` for escaped backslash to avoid corruption by `\k<name>` to `\N` replacement below
|
|
93
|
+
if (!ncg && charAt(chr, 1) === '\\') {
|
|
94
|
+
result += '\\x5c';
|
|
95
|
+
continue;
|
|
96
|
+
}
|
|
92
97
|
} else if (chr === ']') {
|
|
93
98
|
brackets = false;
|
|
94
99
|
} else if (!brackets) switch (true) {
|
|
@@ -97,15 +102,13 @@ var handleNCG = function (string) {
|
|
|
97
102
|
break;
|
|
98
103
|
case chr === '(':
|
|
99
104
|
result += chr;
|
|
100
|
-
// ignore non-capturing groups
|
|
101
|
-
if (stringSlice(string, index + 1, index + 3) === '?:') {
|
|
102
|
-
continue;
|
|
103
|
-
}
|
|
104
105
|
if (exec(IS_NCG, stringSlice(string, index + 1))) {
|
|
105
106
|
index += 2;
|
|
106
107
|
ncg = true;
|
|
108
|
+
groupid++;
|
|
109
|
+
} else if (charAt(string, index + 1) !== '?') {
|
|
110
|
+
groupid++;
|
|
107
111
|
}
|
|
108
|
-
groupid++;
|
|
109
112
|
continue;
|
|
110
113
|
case chr === '>' && ncg:
|
|
111
114
|
if (groupname === '' || hasOwn(names, groupname)) {
|
|
@@ -119,6 +122,14 @@ var handleNCG = function (string) {
|
|
|
119
122
|
}
|
|
120
123
|
if (ncg) groupname += chr;
|
|
121
124
|
else result += chr;
|
|
125
|
+
}
|
|
126
|
+
// convert `\k<name>` backreferences to numbered backreferences
|
|
127
|
+
for (var ni = 0; ni < named.length; ni++) {
|
|
128
|
+
var backref = '\\k<' + named[ni][0] + '>';
|
|
129
|
+
var numRef = '\\' + named[ni][1];
|
|
130
|
+
while (stringIndexOf(result, backref) > -1) {
|
|
131
|
+
result = replace(result, backref, numRef);
|
|
132
|
+
}
|
|
122
133
|
} return [result, named];
|
|
123
134
|
};
|
|
124
135
|
|
|
@@ -25,10 +25,10 @@ $({ target: 'String', proto: true, forced: !MDN_POLYFILL_BUG && !CORRECT_IS_REGE
|
|
|
25
25
|
endsWith: function endsWith(searchString /* , endPosition = @length */) {
|
|
26
26
|
var that = toString(requireObjectCoercible(this));
|
|
27
27
|
notARegExp(searchString);
|
|
28
|
+
var search = toString(searchString);
|
|
28
29
|
var endPosition = arguments.length > 1 ? arguments[1] : undefined;
|
|
29
30
|
var len = that.length;
|
|
30
31
|
var end = endPosition === undefined ? len : min(toLength(endPosition), len);
|
|
31
|
-
var search = toString(searchString);
|
|
32
32
|
return slice(that, end - search.length, end) === search;
|
|
33
33
|
}
|
|
34
34
|
});
|
|
@@ -22,9 +22,9 @@ $({ target: 'String', stat: true, arity: 1, forced: INCORRECT_LENGTH }, {
|
|
|
22
22
|
var i = 0;
|
|
23
23
|
var code;
|
|
24
24
|
while (length > i) {
|
|
25
|
-
code = +arguments[i
|
|
25
|
+
code = +arguments[i];
|
|
26
26
|
if (toAbsoluteIndex(code, 0x10FFFF) !== code) throw new $RangeError(code + ' is not a valid code point');
|
|
27
|
-
elements[i] = code < 0x10000
|
|
27
|
+
elements[i++] = code < 0x10000
|
|
28
28
|
? fromCharCode(code)
|
|
29
29
|
: fromCharCode(((code -= 0x10000) >> 10) + 0xD800, code % 0x400 + 0xDC00);
|
|
30
30
|
} return join(elements, '');
|
|
@@ -72,7 +72,7 @@ var $matchAll = function (string) {
|
|
|
72
72
|
var matcher, $global, fullUnicode;
|
|
73
73
|
matcher = new C(C === RegExp ? R.source : R, flags);
|
|
74
74
|
$global = !!~stringIndexOf(flags, 'g');
|
|
75
|
-
fullUnicode = !!~stringIndexOf(flags, 'u');
|
|
75
|
+
fullUnicode = !!~stringIndexOf(flags, 'u') || !!~stringIndexOf(flags, 'v');
|
|
76
76
|
matcher.lastIndex = toLength(R.lastIndex);
|
|
77
77
|
return new $RegExpStringIterator(matcher, S, $global, fullUnicode);
|
|
78
78
|
};
|
|
@@ -35,9 +35,9 @@ fixRegExpWellKnownSymbolLogic('match', function (MATCH, nativeMatch, maybeCallNa
|
|
|
35
35
|
|
|
36
36
|
var flags = toString(getRegExpFlags(rx));
|
|
37
37
|
|
|
38
|
-
if (stringIndexOf(flags, 'g')
|
|
38
|
+
if (!~stringIndexOf(flags, 'g')) return regExpExec(rx, S);
|
|
39
39
|
|
|
40
|
-
var fullUnicode = stringIndexOf(flags, 'u')
|
|
40
|
+
var fullUnicode = !!~stringIndexOf(flags, 'u') || !!~stringIndexOf(flags, 'v');
|
|
41
41
|
rx.lastIndex = 0;
|
|
42
42
|
var A = [];
|
|
43
43
|
var n = 0;
|
|
@@ -76,23 +76,24 @@ fixRegExpWellKnownSymbolLogic('replace', function (_, nativeReplace, maybeCallNa
|
|
|
76
76
|
var rx = anObject(this);
|
|
77
77
|
var S = toString(string);
|
|
78
78
|
|
|
79
|
+
var functionalReplace = isCallable(replaceValue);
|
|
80
|
+
if (!functionalReplace) replaceValue = toString(replaceValue);
|
|
81
|
+
var flags = toString(getRegExpFlags(rx));
|
|
82
|
+
|
|
79
83
|
if (
|
|
80
84
|
typeof replaceValue == 'string' &&
|
|
81
|
-
stringIndexOf(replaceValue, UNSAFE_SUBSTITUTE)
|
|
82
|
-
stringIndexOf(replaceValue, '$<')
|
|
85
|
+
!~stringIndexOf(replaceValue, UNSAFE_SUBSTITUTE) &&
|
|
86
|
+
!~stringIndexOf(replaceValue, '$<') &&
|
|
87
|
+
!~stringIndexOf(flags, 'y')
|
|
83
88
|
) {
|
|
84
89
|
var res = maybeCallNative(nativeReplace, rx, S, replaceValue);
|
|
85
90
|
if (res.done) return res.value;
|
|
86
91
|
}
|
|
87
92
|
|
|
88
|
-
var
|
|
89
|
-
if (!functionalReplace) replaceValue = toString(replaceValue);
|
|
90
|
-
|
|
91
|
-
var flags = toString(getRegExpFlags(rx));
|
|
92
|
-
var global = stringIndexOf(flags, 'g') !== -1;
|
|
93
|
+
var global = !!~stringIndexOf(flags, 'g');
|
|
93
94
|
var fullUnicode;
|
|
94
95
|
if (global) {
|
|
95
|
-
fullUnicode = stringIndexOf(flags, 'u')
|
|
96
|
+
fullUnicode = !!~stringIndexOf(flags, 'u') || !!~stringIndexOf(flags, 'v');
|
|
96
97
|
rx.lastIndex = 0;
|
|
97
98
|
}
|
|
98
99
|
|
|
@@ -10,6 +10,7 @@ var advanceStringIndex = require('../internals/advance-string-index');
|
|
|
10
10
|
var toLength = require('../internals/to-length');
|
|
11
11
|
var toString = require('../internals/to-string');
|
|
12
12
|
var getMethod = require('../internals/get-method');
|
|
13
|
+
var getRegExpFlags = require('../internals/regexp-get-flags');
|
|
13
14
|
var regExpExec = require('../internals/regexp-exec-abstract');
|
|
14
15
|
var stickyHelpers = require('../internals/regexp-sticky-helpers');
|
|
15
16
|
var fails = require('../internals/fails');
|
|
@@ -19,6 +20,7 @@ var MAX_UINT32 = 0xFFFFFFFF;
|
|
|
19
20
|
var min = Math.min;
|
|
20
21
|
var push = uncurryThis([].push);
|
|
21
22
|
var stringSlice = uncurryThis(''.slice);
|
|
23
|
+
var stringIndexOf = uncurryThis(''.indexOf);
|
|
22
24
|
|
|
23
25
|
// Chrome 51 has a buggy "split" implementation when RegExp#exec !== nativeExec
|
|
24
26
|
// Weex JS has frozen built-in prototypes, so use try / catch wrapper
|
|
@@ -71,11 +73,11 @@ fixRegExpWellKnownSymbolLogic('split', function (SPLIT, nativeSplit, maybeCallNa
|
|
|
71
73
|
}
|
|
72
74
|
|
|
73
75
|
var C = speciesConstructor(rx, RegExp);
|
|
74
|
-
var
|
|
75
|
-
var
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
76
|
+
var flags = toString(getRegExpFlags(rx));
|
|
77
|
+
var unicodeMatching = !!~stringIndexOf(flags, 'u') || !!~stringIndexOf(flags, 'v');
|
|
78
|
+
if (UNSUPPORTED_Y) {
|
|
79
|
+
if (!~stringIndexOf(flags, 'g')) flags += 'g';
|
|
80
|
+
} else if (!~stringIndexOf(flags, 'y')) flags += 'y';
|
|
79
81
|
// ^(? + rx + ) is needed, in combination with some S slicing, to
|
|
80
82
|
// simulate the 'y' flag.
|
|
81
83
|
var splitter = new C(UNSUPPORTED_Y ? '^(?:' + rx.source + ')' : rx, flags);
|
|
@@ -25,8 +25,8 @@ $({ target: 'String', proto: true, forced: !MDN_POLYFILL_BUG && !CORRECT_IS_REGE
|
|
|
25
25
|
startsWith: function startsWith(searchString /* , position = 0 */) {
|
|
26
26
|
var that = toString(requireObjectCoercible(this));
|
|
27
27
|
notARegExp(searchString);
|
|
28
|
-
var index = toLength(min(arguments.length > 1 ? arguments[1] : undefined, that.length));
|
|
29
28
|
var search = toString(searchString);
|
|
29
|
+
var index = toLength(min(arguments.length > 1 ? arguments[1] : undefined, that.length));
|
|
30
30
|
return stringSlice(that, index, index + search.length) === search;
|
|
31
31
|
}
|
|
32
32
|
});
|
|
@@ -19,12 +19,10 @@ $({ target: 'String', proto: true, forced: FORCED }, {
|
|
|
19
19
|
var that = toString(requireObjectCoercible(this));
|
|
20
20
|
var size = that.length;
|
|
21
21
|
var intStart = toIntegerOrInfinity(start);
|
|
22
|
-
var
|
|
23
|
-
|
|
24
|
-
if (
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
intEnd = min(intStart + intLength, size);
|
|
28
|
-
return intStart >= intEnd ? '' : stringSlice(that, intStart, intEnd);
|
|
22
|
+
var finalStart = intStart < 0 ? max(size + intStart, 0) : min(intStart, size);
|
|
23
|
+
var intLength = length === undefined ? size : toIntegerOrInfinity(length);
|
|
24
|
+
if (intLength <= 0) return '';
|
|
25
|
+
var intEnd = min(finalStart + intLength, size);
|
|
26
|
+
return finalStart >= intEnd ? '' : stringSlice(that, finalStart, intEnd);
|
|
29
27
|
}
|
|
30
28
|
});
|
|
@@ -70,7 +70,7 @@ var fallbackDefineProperty = function (O, P, Attributes) {
|
|
|
70
70
|
nativeDefineProperty(O, P, Attributes);
|
|
71
71
|
if (ObjectPrototypeDescriptor && O !== ObjectPrototype) {
|
|
72
72
|
nativeDefineProperty(ObjectPrototype, P, ObjectPrototypeDescriptor);
|
|
73
|
-
}
|
|
73
|
+
} return O;
|
|
74
74
|
};
|
|
75
75
|
|
|
76
76
|
var setSymbolDescriptor = DESCRIPTORS && fails(function () {
|
|
@@ -96,7 +96,8 @@ var $defineProperty = function defineProperty(O, P, Attributes) {
|
|
|
96
96
|
var key = toPropertyKey(P);
|
|
97
97
|
anObject(Attributes);
|
|
98
98
|
if (hasOwn(AllSymbols, key)) {
|
|
99
|
-
|
|
99
|
+
// first definition - default non-enumerable; redefinition - preserve existing state
|
|
100
|
+
if (!('enumerable' in Attributes) ? !hasOwn(O, key) || (hasOwn(O, HIDDEN) && O[HIDDEN][key]) : !Attributes.enumerable) {
|
|
100
101
|
if (!hasOwn(O, HIDDEN)) nativeDefineProperty(O, HIDDEN, createPropertyDescriptor(1, nativeObjectCreate(null)));
|
|
101
102
|
O[HIDDEN][key] = true;
|
|
102
103
|
} else {
|
|
@@ -4,6 +4,7 @@
|
|
|
4
4
|
var $ = require('../internals/export');
|
|
5
5
|
var DESCRIPTORS = require('../internals/descriptors');
|
|
6
6
|
var globalThis = require('../internals/global-this');
|
|
7
|
+
var call = require('../internals/function-call');
|
|
7
8
|
var uncurryThis = require('../internals/function-uncurry-this');
|
|
8
9
|
var hasOwn = require('../internals/has-own-property');
|
|
9
10
|
var isCallable = require('../internals/is-callable');
|
|
@@ -33,6 +34,14 @@ if (DESCRIPTORS && isCallable(NativeSymbol) && (!('description' in SymbolPrototy
|
|
|
33
34
|
};
|
|
34
35
|
|
|
35
36
|
copyConstructorProperties(SymbolWrapper, NativeSymbol);
|
|
37
|
+
// wrap Symbol.for for correct handling of empty string descriptions
|
|
38
|
+
var nativeFor = SymbolWrapper['for'];
|
|
39
|
+
SymbolWrapper['for'] = { 'for': function (key) {
|
|
40
|
+
var stringKey = toString(key);
|
|
41
|
+
var symbol = call(nativeFor, this, stringKey);
|
|
42
|
+
if (stringKey === '') EmptyStringDescriptionStore[symbol] = true;
|
|
43
|
+
return symbol;
|
|
44
|
+
} }['for'];
|
|
36
45
|
SymbolWrapper.prototype = SymbolPrototype;
|
|
37
46
|
SymbolPrototype.constructor = SymbolWrapper;
|
|
38
47
|
|
|
@@ -1,15 +1,14 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
var ArrayBufferViewCore = require('../internals/array-buffer-view-core');
|
|
3
3
|
var $map = require('../internals/array-iteration').map;
|
|
4
|
+
var fromSameTypeAndList = require('../internals/typed-array-from-same-type-and-list');
|
|
4
5
|
|
|
5
6
|
var aTypedArray = ArrayBufferViewCore.aTypedArray;
|
|
6
|
-
var getTypedArrayConstructor = ArrayBufferViewCore.getTypedArrayConstructor;
|
|
7
7
|
var exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;
|
|
8
8
|
|
|
9
9
|
// `%TypedArray%.prototype.map` method
|
|
10
10
|
// https://tc39.es/ecma262/#sec-%typedarray%.prototype.map
|
|
11
11
|
exportTypedArrayMethod('map', function map(mapfn /* , thisArg */) {
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
});
|
|
12
|
+
var list = $map(aTypedArray(this), mapfn, arguments.length > 1 ? arguments[1] : undefined);
|
|
13
|
+
return fromSameTypeAndList(this, list);
|
|
15
14
|
});
|
|
@@ -52,11 +52,11 @@ var getSortCompare = function (comparefn) {
|
|
|
52
52
|
return function (x, y) {
|
|
53
53
|
if (comparefn !== undefined) return +comparefn(x, y) || 0;
|
|
54
54
|
// eslint-disable-next-line no-self-compare -- NaN check
|
|
55
|
-
if (y !== y) return -1;
|
|
55
|
+
if (y !== y) return x !== x ? 0 : -1;
|
|
56
56
|
// eslint-disable-next-line no-self-compare -- NaN check
|
|
57
57
|
if (x !== x) return 1;
|
|
58
|
-
if (x === 0 && y === 0) return 1 / x > 0
|
|
59
|
-
return x > y;
|
|
58
|
+
if (x === 0 && y === 0) return 1 / x > 0 ? (1 / y > 0 ? 0 : 1) : (1 / y > 0 ? -1 : 0);
|
|
59
|
+
return x > y ? 1 : x < y ? -1 : 0;
|
|
60
60
|
};
|
|
61
61
|
};
|
|
62
62
|
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
'use strict';
|
|
2
|
-
var
|
|
2
|
+
var lengthOfArrayLike = require('../internals/length-of-array-like');
|
|
3
3
|
var ArrayBufferViewCore = require('../internals/array-buffer-view-core');
|
|
4
4
|
|
|
5
5
|
var aTypedArray = ArrayBufferViewCore.aTypedArray;
|
|
@@ -9,5 +9,10 @@ var getTypedArrayConstructor = ArrayBufferViewCore.getTypedArrayConstructor;
|
|
|
9
9
|
// `%TypedArray%.prototype.toReversed` method
|
|
10
10
|
// https://tc39.es/ecma262/#sec-%typedarray%.prototype.toreversed
|
|
11
11
|
exportTypedArrayMethod('toReversed', function toReversed() {
|
|
12
|
-
|
|
12
|
+
var O = aTypedArray(this);
|
|
13
|
+
var len = lengthOfArrayLike(O);
|
|
14
|
+
var A = new (getTypedArrayConstructor(O))(len);
|
|
15
|
+
var k = 0;
|
|
16
|
+
for (; k < len; k++) A[k] = O[len - k - 1];
|
|
17
|
+
return A;
|
|
13
18
|
});
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
'use strict';
|
|
2
|
-
var arrayWith = require('../internals/array-with');
|
|
3
2
|
var ArrayBufferViewCore = require('../internals/array-buffer-view-core');
|
|
4
3
|
var isBigIntArray = require('../internals/is-big-int-array');
|
|
4
|
+
var lengthOfArrayLike = require('../internals/length-of-array-like');
|
|
5
5
|
var toIntegerOrInfinity = require('../internals/to-integer-or-infinity');
|
|
6
6
|
var toBigInt = require('../internals/to-big-int');
|
|
7
7
|
|
|
@@ -9,6 +9,8 @@ var aTypedArray = ArrayBufferViewCore.aTypedArray;
|
|
|
9
9
|
var getTypedArrayConstructor = ArrayBufferViewCore.getTypedArrayConstructor;
|
|
10
10
|
var exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;
|
|
11
11
|
|
|
12
|
+
var $RangeError = RangeError;
|
|
13
|
+
|
|
12
14
|
var PROPER_ORDER = function () {
|
|
13
15
|
try {
|
|
14
16
|
// eslint-disable-next-line no-throw-literal, es/no-typed-arrays, es/no-array-prototype-with -- required for testing
|
|
@@ -34,7 +36,13 @@ var THROW_ON_NEGATIVE_FRACTIONAL_INDEX = PROPER_ORDER && function () {
|
|
|
34
36
|
// https://tc39.es/ecma262/#sec-%typedarray%.prototype.with
|
|
35
37
|
exportTypedArrayMethod('with', { 'with': function (index, value) {
|
|
36
38
|
var O = aTypedArray(this);
|
|
39
|
+
var len = lengthOfArrayLike(O);
|
|
37
40
|
var relativeIndex = toIntegerOrInfinity(index);
|
|
38
|
-
var
|
|
39
|
-
|
|
41
|
+
var actualIndex = relativeIndex < 0 ? len + relativeIndex : relativeIndex;
|
|
42
|
+
var numericValue = isBigIntArray(O) ? toBigInt(value) : +value;
|
|
43
|
+
if (actualIndex >= len || actualIndex < 0) throw new $RangeError('Incorrect index');
|
|
44
|
+
var A = new (getTypedArrayConstructor(O))(len);
|
|
45
|
+
var k = 0;
|
|
46
|
+
for (; k < len; k++) A[k] = k === actualIndex ? numericValue : O[k];
|
|
47
|
+
return A;
|
|
40
48
|
} }['with'], !PROPER_ORDER || THROW_ON_NEGATIVE_FRACTIONAL_INDEX);
|
|
@@ -20,7 +20,7 @@ var INCORRECT_BEHAVIOR_OR_DOESNT_EXISTS = !Uint8Array || !Uint8Array.fromBase64
|
|
|
20
20
|
}();
|
|
21
21
|
|
|
22
22
|
// `Uint8Array.fromBase64` method
|
|
23
|
-
// https://
|
|
23
|
+
// https://tc39.es/ecma262/#sec-uint8array.frombase64
|
|
24
24
|
if (Uint8Array) $({ target: 'Uint8Array', stat: true, forced: INCORRECT_BEHAVIOR_OR_DOESNT_EXISTS }, {
|
|
25
25
|
fromBase64: function fromBase64(string /* , options */) {
|
|
26
26
|
var result = $fromBase64(string, arguments.length > 1 ? arguments[1] : undefined, null, 0x1FFFFFFFFFFFFF);
|
|
@@ -5,7 +5,7 @@ var aString = require('../internals/a-string');
|
|
|
5
5
|
var $fromHex = require('../internals/uint8-from-hex');
|
|
6
6
|
|
|
7
7
|
// `Uint8Array.fromHex` method
|
|
8
|
-
// https://
|
|
8
|
+
// https://tc39.es/ecma262/#sec-uint8array.fromhex
|
|
9
9
|
if (globalThis.Uint8Array) $({ target: 'Uint8Array', stat: true }, {
|
|
10
10
|
fromHex: function fromHex(string) {
|
|
11
11
|
return $fromHex(aString(string)).bytes;
|
|
@@ -25,7 +25,7 @@ var INCORRECT_BEHAVIOR_OR_DOESNT_EXISTS = !Uint8Array || !Uint8Array.prototype.s
|
|
|
25
25
|
}();
|
|
26
26
|
|
|
27
27
|
// `Uint8Array.prototype.setFromBase64` method
|
|
28
|
-
// https://
|
|
28
|
+
// https://tc39.es/ecma262/#sec-uint8array.prototype.setfrombase64
|
|
29
29
|
if (Uint8Array) $({ target: 'Uint8Array', proto: true, forced: INCORRECT_BEHAVIOR_OR_DOESNT_EXISTS }, {
|
|
30
30
|
setFromBase64: function setFromBase64(string /* , options */) {
|
|
31
31
|
anUint8Array(this);
|
|
@@ -6,9 +6,22 @@ var anUint8Array = require('../internals/an-uint8-array');
|
|
|
6
6
|
var notDetached = require('../internals/array-buffer-not-detached');
|
|
7
7
|
var $fromHex = require('../internals/uint8-from-hex');
|
|
8
8
|
|
|
9
|
+
// Should not throw an error on length-tracking views over ResizableArrayBuffer
|
|
10
|
+
// https://issues.chromium.org/issues/454630441
|
|
11
|
+
function throwsOnLengthTrackingView() {
|
|
12
|
+
try {
|
|
13
|
+
// eslint-disable-next-line es/no-resizable-and-growable-arraybuffers -- required for testing
|
|
14
|
+
var rab = new ArrayBuffer(16, { maxByteLength: 1024 });
|
|
15
|
+
// eslint-disable-next-line es/no-uint8array-prototype-setfromhex, es/no-typed-arrays -- required for testing
|
|
16
|
+
new Uint8Array(rab).setFromHex('cafed00d');
|
|
17
|
+
} catch (error) {
|
|
18
|
+
return true;
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
|
|
9
22
|
// `Uint8Array.prototype.setFromHex` method
|
|
10
|
-
// https://
|
|
11
|
-
if (globalThis.Uint8Array) $({ target: 'Uint8Array', proto: true }, {
|
|
23
|
+
// https://tc39.es/ecma262/#sec-uint8array.prototype.setfromhex
|
|
24
|
+
if (globalThis.Uint8Array) $({ target: 'Uint8Array', proto: true, forced: throwsOnLengthTrackingView() }, {
|
|
12
25
|
setFromHex: function setFromHex(string) {
|
|
13
26
|
anUint8Array(this);
|
|
14
27
|
aString(string);
|
|
@@ -25,7 +25,7 @@ var INCORRECT_BEHAVIOR_OR_DOESNT_EXISTS = !Uint8Array || !Uint8Array.prototype.t
|
|
|
25
25
|
}();
|
|
26
26
|
|
|
27
27
|
// `Uint8Array.prototype.toBase64` method
|
|
28
|
-
// https://
|
|
28
|
+
// https://tc39.es/ecma262/#sec-uint8array.prototype.tobase64
|
|
29
29
|
if (Uint8Array) $({ target: 'Uint8Array', proto: true, forced: INCORRECT_BEHAVIOR_OR_DOESNT_EXISTS }, {
|
|
30
30
|
toBase64: function toBase64(/* options */) {
|
|
31
31
|
var array = anUint8Array(this);
|
|
@@ -6,6 +6,8 @@ var anUint8Array = require('../internals/an-uint8-array');
|
|
|
6
6
|
var notDetached = require('../internals/array-buffer-not-detached');
|
|
7
7
|
|
|
8
8
|
var numberToString = uncurryThis(1.1.toString);
|
|
9
|
+
var join = uncurryThis([].join);
|
|
10
|
+
var $Array = Array;
|
|
9
11
|
|
|
10
12
|
var Uint8Array = globalThis.Uint8Array;
|
|
11
13
|
|
|
@@ -19,16 +21,16 @@ var INCORRECT_BEHAVIOR_OR_DOESNT_EXISTS = !Uint8Array || !Uint8Array.prototype.t
|
|
|
19
21
|
})();
|
|
20
22
|
|
|
21
23
|
// `Uint8Array.prototype.toHex` method
|
|
22
|
-
// https://
|
|
24
|
+
// https://tc39.es/ecma262/#sec-uint8array.prototype.tohex
|
|
23
25
|
if (Uint8Array) $({ target: 'Uint8Array', proto: true, forced: INCORRECT_BEHAVIOR_OR_DOESNT_EXISTS }, {
|
|
24
26
|
toHex: function toHex() {
|
|
25
27
|
anUint8Array(this);
|
|
26
28
|
notDetached(this.buffer);
|
|
27
|
-
var result =
|
|
29
|
+
var result = $Array(this.length);
|
|
28
30
|
for (var i = 0, length = this.length; i < length; i++) {
|
|
29
31
|
var hex = numberToString(this[i], 16);
|
|
30
|
-
result
|
|
32
|
+
result[i] = hex.length === 1 ? '0' + hex : hex;
|
|
31
33
|
}
|
|
32
|
-
return result;
|
|
34
|
+
return join(result, '');
|
|
33
35
|
}
|
|
34
36
|
});
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
var $ = require('../internals/export');
|
|
3
|
+
var aCallable = require('../internals/a-callable');
|
|
4
|
+
var aWeakMap = require('../internals/a-weak-map');
|
|
5
|
+
var aWeakKey = require('../internals/a-weak-key');
|
|
6
|
+
var WeakMapHelpers = require('../internals/weak-map-helpers');
|
|
7
|
+
var IS_PURE = require('../internals/is-pure');
|
|
8
|
+
|
|
9
|
+
var get = WeakMapHelpers.get;
|
|
10
|
+
var has = WeakMapHelpers.has;
|
|
11
|
+
var set = WeakMapHelpers.set;
|
|
12
|
+
|
|
13
|
+
var FORCED = IS_PURE || !function () {
|
|
14
|
+
try {
|
|
15
|
+
// eslint-disable-next-line es/no-weak-map, no-throw-literal -- testing
|
|
16
|
+
if (WeakMap.prototype.getOrInsertComputed) new WeakMap().getOrInsertComputed(1, function () { throw 1; });
|
|
17
|
+
} catch (error) {
|
|
18
|
+
// FF144 Nightly - Beta 3 bug
|
|
19
|
+
// https://bugzilla.mozilla.org/show_bug.cgi?id=1988369
|
|
20
|
+
return error instanceof TypeError;
|
|
21
|
+
}
|
|
22
|
+
}();
|
|
23
|
+
|
|
24
|
+
// `WeakMap.prototype.getOrInsertComputed` method
|
|
25
|
+
// https://tc39.es/ecma262/#sec-weakmap.prototype.getorinsertcomputed
|
|
26
|
+
$({ target: 'WeakMap', proto: true, real: true, forced: FORCED }, {
|
|
27
|
+
getOrInsertComputed: function getOrInsertComputed(key, callbackfn) {
|
|
28
|
+
if (!IS_PURE) aWeakMap(this);
|
|
29
|
+
aWeakKey(key);
|
|
30
|
+
aCallable(callbackfn);
|
|
31
|
+
if (has(this, key)) return get(this, key);
|
|
32
|
+
var value = callbackfn(key);
|
|
33
|
+
set(this, key, value);
|
|
34
|
+
return value;
|
|
35
|
+
}
|
|
36
|
+
});
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
var $ = require('../internals/export');
|
|
3
|
+
var WeakMapHelpers = require('../internals/weak-map-helpers');
|
|
4
|
+
var IS_PURE = require('../internals/is-pure');
|
|
5
|
+
|
|
6
|
+
var get = WeakMapHelpers.get;
|
|
7
|
+
var has = WeakMapHelpers.has;
|
|
8
|
+
var set = WeakMapHelpers.set;
|
|
9
|
+
|
|
10
|
+
// `WeakMap.prototype.getOrInsert` method
|
|
11
|
+
// https://tc39.es/ecma262/#sec-weakmap.prototype.getorinsert
|
|
12
|
+
$({ target: 'WeakMap', proto: true, real: true, forced: IS_PURE }, {
|
|
13
|
+
getOrInsert: function getOrInsert(key, value) {
|
|
14
|
+
if (has(this, key)) return get(this, key);
|
|
15
|
+
set(this, key, value);
|
|
16
|
+
return value;
|
|
17
|
+
}
|
|
18
|
+
});
|
|
@@ -24,6 +24,6 @@ $({ target: 'Array', stat: true, sham: true, forced: true }, {
|
|
|
24
24
|
isTemplateObject: function isTemplateObject(value) {
|
|
25
25
|
if (!isFrozenStringArray(value, true)) return false;
|
|
26
26
|
var raw = value.raw;
|
|
27
|
-
return raw.length === value.length
|
|
27
|
+
return isFrozenStringArray(raw, false) && raw.length === value.length;
|
|
28
28
|
}
|
|
29
29
|
});
|
|
@@ -40,9 +40,10 @@ $({ target: 'AsyncIterator', proto: true, real: true, forced: true }, {
|
|
|
40
40
|
if (noInitial) {
|
|
41
41
|
noInitial = false;
|
|
42
42
|
accumulator = value;
|
|
43
|
+
counter++;
|
|
43
44
|
loop();
|
|
44
45
|
} else try {
|
|
45
|
-
var result = reducer(accumulator, value, counter);
|
|
46
|
+
var result = reducer(accumulator, value, counter++);
|
|
46
47
|
|
|
47
48
|
var handler = function ($result) {
|
|
48
49
|
accumulator = $result;
|
|
@@ -53,7 +54,6 @@ $({ target: 'AsyncIterator', proto: true, real: true, forced: true }, {
|
|
|
53
54
|
else handler(result);
|
|
54
55
|
} catch (error3) { ifAbruptCloseAsyncIterator(error3); }
|
|
55
56
|
}
|
|
56
|
-
counter++;
|
|
57
57
|
} catch (error2) { reject(error2); }
|
|
58
58
|
}, reject);
|
|
59
59
|
} catch (error) { reject(error); }
|
|
@@ -3,6 +3,7 @@ var $ = require('../internals/export');
|
|
|
3
3
|
var call = require('../internals/function-call');
|
|
4
4
|
var anObject = require('../internals/an-object');
|
|
5
5
|
var getIteratorDirect = require('../internals/get-iterator-direct');
|
|
6
|
+
var getMethod = require('../internals/get-method');
|
|
6
7
|
var notANaN = require('../internals/not-a-nan');
|
|
7
8
|
var toPositiveInteger = require('../internals/to-positive-integer');
|
|
8
9
|
var createAsyncIteratorProxy = require('../internals/async-iterator-create-proxy');
|
|
@@ -16,9 +17,10 @@ var AsyncIteratorProxy = createAsyncIteratorProxy(function (Promise) {
|
|
|
16
17
|
if (!state.remaining--) {
|
|
17
18
|
var resultDone = createIterResultObject(undefined, true);
|
|
18
19
|
state.done = true;
|
|
19
|
-
returnMethod = iterator
|
|
20
|
+
returnMethod = getMethod(iterator, 'return');
|
|
20
21
|
if (returnMethod !== undefined) {
|
|
21
|
-
return Promise.resolve(call(returnMethod, iterator
|
|
22
|
+
return Promise.resolve(call(returnMethod, iterator)).then(function (result) {
|
|
23
|
+
anObject(result);
|
|
22
24
|
return resultDone;
|
|
23
25
|
});
|
|
24
26
|
}
|
|
@@ -4,7 +4,7 @@ var $ = require('../internals/export');
|
|
|
4
4
|
var NumericRangeIterator = require('../internals/numeric-range-iterator');
|
|
5
5
|
|
|
6
6
|
// `BigInt.range` method
|
|
7
|
-
// https://github.com/tc39/proposal-
|
|
7
|
+
// https://github.com/tc39/proposal-iterator.range
|
|
8
8
|
// TODO: Remove from `core-js@4`
|
|
9
9
|
if (typeof BigInt == 'function') {
|
|
10
10
|
$({ target: 'BigInt', stat: true, forced: true }, {
|
|
@@ -6,7 +6,7 @@ var NumericRangeIterator = require('../internals/numeric-range-iterator');
|
|
|
6
6
|
var $TypeError = TypeError;
|
|
7
7
|
|
|
8
8
|
// `Iterator.range` method
|
|
9
|
-
// https://github.com/tc39/proposal-
|
|
9
|
+
// https://github.com/tc39/proposal-iterator.range
|
|
10
10
|
$({ target: 'Iterator', stat: true, forced: true }, {
|
|
11
11
|
range: function range(start, end, option) {
|
|
12
12
|
if (typeof start == 'number') return new NumericRangeIterator(start, end, option, 'number', 0, 1);
|