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.
Files changed (146) hide show
  1. package/LICENSE +2 -1
  2. package/README.md +2 -2
  3. package/actual/map/get-or-insert-computed.js +2 -3
  4. package/actual/map/get-or-insert.js +2 -3
  5. package/actual/map/group-by.js +2 -0
  6. package/actual/weak-map/get-or-insert-computed.js +2 -3
  7. package/actual/weak-map/get-or-insert.js +2 -3
  8. package/configurator.js +1 -1
  9. package/es/index.js +4 -0
  10. package/es/map/get-or-insert-computed.js +6 -0
  11. package/es/map/get-or-insert.js +6 -0
  12. package/es/map/group-by.js +2 -0
  13. package/es/map/index.js +2 -0
  14. package/es/object/define-properties.js +2 -2
  15. package/es/object/define-property.js +2 -2
  16. package/es/object/get-own-property-descriptor.js +2 -2
  17. package/es/promise/try.js +2 -2
  18. package/es/weak-map/get-or-insert-computed.js +6 -0
  19. package/es/weak-map/get-or-insert.js +6 -0
  20. package/es/weak-map/index.js +2 -0
  21. package/full/index.js +4 -0
  22. package/internals/advance-string-index.js +1 -1
  23. package/internals/array-buffer-transfer.js +4 -1
  24. package/internals/array-buffer-view-core.js +1 -1
  25. package/internals/array-buffer.js +1 -2
  26. package/internals/array-from-async.js +5 -7
  27. package/internals/array-from.js +9 -3
  28. package/internals/array-iteration.js +11 -13
  29. package/internals/array-unique-by.js +3 -3
  30. package/internals/async-from-sync-iterator.js +28 -4
  31. package/internals/async-iterator-close.js +11 -3
  32. package/internals/async-iterator-create-proxy.js +47 -20
  33. package/internals/async-iterator-iteration.js +11 -6
  34. package/internals/async-iterator-map.js +20 -18
  35. package/internals/does-not-exceed-safe-integer.js +1 -1
  36. package/internals/environment-is-ios.js +1 -2
  37. package/internals/flatten-into-array.js +2 -1
  38. package/internals/function-bind-native.js +1 -1
  39. package/internals/function-name.js +1 -1
  40. package/internals/iterate.js +8 -3
  41. package/internals/iterator-create-proxy.js +4 -1
  42. package/internals/iterator-window.js +2 -2
  43. package/internals/iterator-zip.js +4 -3
  44. package/internals/native-raw-json.js +2 -2
  45. package/internals/numeric-range-iterator.js +9 -4
  46. package/internals/regexp-exec.js +20 -13
  47. package/internals/set-difference.js +1 -1
  48. package/internals/set-is-disjoint-from.js +1 -1
  49. package/internals/set-is-superset-of.js +1 -1
  50. package/internals/shared-store.js +3 -3
  51. package/internals/string-pad.js +2 -1
  52. package/internals/string-parse.js +1 -1
  53. package/internals/string-repeat.js +2 -1
  54. package/internals/to-uint8-clamped.js +11 -3
  55. package/internals/typed-array-constructor.js +1 -2
  56. package/internals/typed-array-from.js +3 -1
  57. package/internals/uint8-from-hex.js +10 -10
  58. package/modules/es.array.concat.js +2 -1
  59. package/modules/es.array.flat-map.js +1 -1
  60. package/modules/es.array.flat.js +2 -1
  61. package/modules/es.array.from-async.js +1 -1
  62. package/modules/es.array.includes.js +7 -1
  63. package/modules/es.array.of.js +2 -1
  64. package/modules/es.array.slice.js +2 -1
  65. package/modules/es.array.sort.js +3 -1
  66. package/modules/es.array.splice.js +1 -1
  67. package/modules/es.array.to-reversed.js +8 -2
  68. package/modules/es.array.to-spliced.js +4 -3
  69. package/modules/es.array.with.js +13 -2
  70. package/modules/es.data-view.get-float16.js +1 -1
  71. package/modules/es.data-view.set-float16.js +2 -1
  72. package/modules/es.date.set-year.js +4 -1
  73. package/modules/es.error.is-error.js +1 -1
  74. package/modules/es.escape.js +1 -1
  75. package/modules/es.iterator.concat.js +4 -3
  76. package/modules/es.iterator.flat-map.js +15 -1
  77. package/modules/es.iterator.take.js +7 -2
  78. package/modules/es.iterator.to-array.js +5 -3
  79. package/modules/es.json.parse.js +13 -1
  80. package/modules/es.json.stringify.js +6 -3
  81. package/modules/es.map.get-or-insert-computed.js +24 -0
  82. package/modules/es.map.get-or-insert.js +18 -0
  83. package/modules/es.math.asinh.js +4 -1
  84. package/modules/es.math.atanh.js +2 -2
  85. package/modules/es.math.sum-precise.js +3 -3
  86. package/modules/es.number.to-exponential.js +15 -6
  87. package/modules/es.reflect.construct.js +1 -1
  88. package/modules/es.reflect.define-property.js +10 -0
  89. package/modules/es.reflect.delete-property.js +5 -2
  90. package/modules/es.reflect.get.js +9 -7
  91. package/modules/es.reflect.set.js +14 -9
  92. package/modules/es.regexp.constructor.js +18 -7
  93. package/modules/es.string.ends-with.js +1 -1
  94. package/modules/es.string.from-code-point.js +2 -2
  95. package/modules/es.string.match-all.js +1 -1
  96. package/modules/es.string.match.js +2 -2
  97. package/modules/es.string.replace.js +9 -8
  98. package/modules/es.string.split.js +7 -5
  99. package/modules/es.string.starts-with.js +1 -1
  100. package/modules/es.string.substr.js +5 -7
  101. package/modules/es.symbol.constructor.js +3 -2
  102. package/modules/es.symbol.description.js +9 -0
  103. package/modules/es.typed-array.map.js +3 -4
  104. package/modules/es.typed-array.sort.js +3 -3
  105. package/modules/es.typed-array.to-reversed.js +7 -2
  106. package/modules/es.typed-array.with.js +11 -3
  107. package/modules/es.uint8-array.from-base64.js +1 -1
  108. package/modules/es.uint8-array.from-hex.js +1 -1
  109. package/modules/es.uint8-array.set-from-base64.js +1 -1
  110. package/modules/es.uint8-array.set-from-hex.js +15 -2
  111. package/modules/es.uint8-array.to-base64.js +1 -1
  112. package/modules/es.uint8-array.to-hex.js +6 -4
  113. package/modules/es.weak-map.get-or-insert-computed.js +36 -0
  114. package/modules/es.weak-map.get-or-insert.js +18 -0
  115. package/modules/esnext.array.is-template-object.js +1 -1
  116. package/modules/esnext.async-iterator.reduce.js +2 -2
  117. package/modules/esnext.async-iterator.take.js +4 -2
  118. package/modules/esnext.bigint.range.js +1 -1
  119. package/modules/esnext.iterator.range.js +1 -1
  120. package/modules/esnext.iterator.zip-keyed.js +3 -2
  121. package/modules/esnext.iterator.zip.js +4 -3
  122. package/modules/esnext.map.get-or-insert-computed.js +2 -24
  123. package/modules/esnext.map.get-or-insert.js +2 -18
  124. package/modules/esnext.number.from-string.js +30 -3
  125. package/modules/esnext.number.range.js +1 -1
  126. package/modules/esnext.observable.from.js +5 -2
  127. package/modules/esnext.string.dedent.js +1 -1
  128. package/modules/esnext.weak-map.get-or-insert-computed.js +2 -35
  129. package/modules/esnext.weak-map.get-or-insert.js +2 -18
  130. package/modules/web.atob.js +15 -6
  131. package/modules/web.btoa.js +10 -3
  132. package/modules/web.structured-clone.js +2 -2
  133. package/modules/web.url-search-params.constructor.js +25 -10
  134. package/modules/web.url-search-params.delete.js +6 -9
  135. package/modules/web.url.constructor.js +55 -26
  136. package/modules/web.url.parse.js +1 -1
  137. package/package.json +5 -1
  138. package/stable/index.js +4 -0
  139. package/stable/map/get-or-insert-computed.js +4 -0
  140. package/stable/map/get-or-insert.js +4 -0
  141. package/stable/weak-map/get-or-insert-computed.js +4 -0
  142. package/stable/weak-map/get-or-insert.js +4 -0
  143. package/stage/3.js +0 -1
  144. package/stage/4.js +1 -0
  145. package/internals/array-to-reversed.js +0 -12
  146. 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 set(target, propertyKey, V /* , receiver */) {
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.get || existingDescriptor.set || existingDescriptor.writable === false) return false;
29
- existingDescriptor.value = V;
30
- definePropertyModule.f(receiver, propertyKey, existingDescriptor);
31
- } else definePropertyModule.f(receiver, propertyKey, createPropertyDescriptor(0, V));
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 <= length; 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 <= length; 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') === -1) return regExpExec(rx, S);
38
+ if (!~stringIndexOf(flags, 'g')) return regExpExec(rx, S);
39
39
 
40
- var fullUnicode = stringIndexOf(flags, 'u') !== -1;
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) === -1 &&
82
- stringIndexOf(replaceValue, '$<') === -1
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 functionalReplace = isCallable(replaceValue);
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') !== -1;
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 unicodeMatching = rx.unicode;
75
- var flags = (rx.ignoreCase ? 'i' : '') +
76
- (rx.multiline ? 'm' : '') +
77
- (rx.unicode ? 'u' : '') +
78
- (UNSUPPORTED_Y ? 'g' : 'y');
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 intLength, intEnd;
23
- if (intStart === Infinity) intStart = 0;
24
- if (intStart < 0) intStart = max(size + intStart, 0);
25
- intLength = length === undefined ? size : toIntegerOrInfinity(length);
26
- if (intLength <= 0 || intLength === Infinity) return '';
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
- if (!Attributes.enumerable) {
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
- return $map(aTypedArray(this), mapfn, arguments.length > 1 ? arguments[1] : undefined, function (O, length) {
13
- return new (getTypedArrayConstructor(O))(length);
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 && 1 / y < 0 ? 1 : -1;
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 arrayToReversed = require('../internals/array-to-reversed');
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
- return arrayToReversed(aTypedArray(this), getTypedArrayConstructor(this));
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 actualValue = isBigIntArray(O) ? toBigInt(value) : +value;
39
- return arrayWith(O, getTypedArrayConstructor(O), relativeIndex, actualValue);
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://github.com/tc39/proposal-arraybuffer-base64
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://github.com/tc39/proposal-arraybuffer-base64
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://github.com/tc39/proposal-arraybuffer-base64
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://github.com/tc39/proposal-arraybuffer-base64
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://github.com/tc39/proposal-arraybuffer-base64
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://github.com/tc39/proposal-arraybuffer-base64
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 += hex.length === 1 ? '0' + hex : hex;
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 && isFrozenStringArray(raw, false);
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['return'];
20
+ returnMethod = getMethod(iterator, 'return');
20
21
  if (returnMethod !== undefined) {
21
- return Promise.resolve(call(returnMethod, iterator, undefined)).then(function () {
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-Number.range
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-Number.range
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);