core-js 3.22.2 → 3.22.5

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 (66) hide show
  1. package/internals/array-buffer-view-core.js +4 -4
  2. package/internals/array-buffer.js +3 -3
  3. package/internals/async-from-sync-iterator.js +2 -2
  4. package/internals/async-iterator-create-proxy.js +2 -2
  5. package/internals/async-iterator-prototype.js +2 -2
  6. package/internals/collection-strong.js +3 -3
  7. package/internals/collection-weak.js +3 -3
  8. package/internals/collection.js +3 -3
  9. package/internals/define-built-in-accessor.js +8 -0
  10. package/internals/define-built-in.js +25 -0
  11. package/internals/define-built-ins.js +6 -0
  12. package/internals/define-iterator.js +4 -4
  13. package/internals/export.js +2 -3
  14. package/internals/fix-regexp-well-known-symbol-logic.js +3 -3
  15. package/internals/iterator-create-proxy.js +2 -2
  16. package/internals/iterators-core.js +2 -2
  17. package/internals/make-built-in.js +47 -0
  18. package/internals/shared.js +2 -2
  19. package/internals/symbol-define-to-primitive.js +3 -3
  20. package/internals/typed-array-constructor.js +3 -3
  21. package/modules/es.aggregate-error.cause.js +1 -1
  22. package/modules/es.aggregate-error.constructor.js +1 -1
  23. package/modules/es.array-buffer.constructor.js +1 -1
  24. package/modules/es.array.concat.js +1 -1
  25. package/modules/es.array.includes.js +7 -1
  26. package/modules/es.data-view.constructor.js +1 -1
  27. package/modules/es.date.to-json.js +1 -1
  28. package/modules/es.date.to-primitive.js +2 -2
  29. package/modules/es.date.to-string.js +2 -2
  30. package/modules/es.error.cause.js +2 -2
  31. package/modules/es.error.to-string.js +2 -2
  32. package/modules/es.function.has-instance.js +3 -2
  33. package/modules/es.json.stringify.js +1 -1
  34. package/modules/es.math.hypot.js +1 -1
  35. package/modules/es.number.constructor.js +2 -2
  36. package/modules/es.object.assign.js +1 -1
  37. package/modules/es.object.to-string.js +2 -2
  38. package/modules/es.promise.catch.js +2 -2
  39. package/modules/es.promise.constructor.js +17 -21
  40. package/modules/es.promise.finally.js +2 -2
  41. package/modules/es.regexp.constructor.js +2 -2
  42. package/modules/es.regexp.dot-all.js +3 -3
  43. package/modules/es.regexp.flags.js +2 -2
  44. package/modules/es.regexp.sticky.js +3 -3
  45. package/modules/es.regexp.to-string.js +2 -2
  46. package/modules/es.string.from-code-point.js +1 -1
  47. package/modules/es.string.match-all.js +2 -2
  48. package/modules/es.symbol.constructor.js +5 -5
  49. package/modules/es.symbol.description.js +1 -1
  50. package/modules/es.weak-map.constructor.js +2 -2
  51. package/modules/esnext.array.last-index.js +2 -2
  52. package/modules/esnext.array.last-item.js +2 -2
  53. package/modules/esnext.array.to-spliced.js +1 -1
  54. package/modules/esnext.async-iterator.constructor.js +1 -1
  55. package/modules/esnext.iterator.constructor.js +1 -1
  56. package/modules/esnext.map.merge.js +1 -1
  57. package/modules/esnext.observable.constructor.js +12 -12
  58. package/modules/esnext.typed-array.to-spliced.js +1 -1
  59. package/modules/web.dom-exception.constructor.js +10 -10
  60. package/modules/web.dom-exception.stack.js +1 -1
  61. package/modules/web.structured-clone.js +21 -9
  62. package/modules/web.url-search-params.constructor.js +7 -7
  63. package/modules/web.url.constructor.js +43 -45
  64. package/package.json +2 -3
  65. package/internals/redefine-all.js +0 -6
  66. package/internals/redefine.js +0 -46
@@ -11,7 +11,7 @@ var BUGGY = !!$hypot && $hypot(Infinity, NaN) !== Infinity;
11
11
 
12
12
  // `Math.hypot` method
13
13
  // https://tc39.es/ecma262/#sec-math.hypot
14
- $({ target: 'Math', stat: true, forced: BUGGY }, {
14
+ $({ target: 'Math', stat: true, arity: 2, forced: BUGGY }, {
15
15
  // eslint-disable-next-line no-unused-vars -- required for `.length`
16
16
  hypot: function hypot(value1, value2) {
17
17
  var sum = 0;
@@ -3,7 +3,7 @@ var DESCRIPTORS = require('../internals/descriptors');
3
3
  var global = require('../internals/global');
4
4
  var uncurryThis = require('../internals/function-uncurry-this');
5
5
  var isForced = require('../internals/is-forced');
6
- var redefine = require('../internals/redefine');
6
+ var defineBuiltIn = require('../internals/define-built-in');
7
7
  var hasOwn = require('../internals/has-own-property');
8
8
  var inheritIfRequired = require('../internals/inherit-if-required');
9
9
  var isPrototypeOf = require('../internals/object-is-prototype-of');
@@ -84,5 +84,5 @@ if (isForced(NUMBER, !NativeNumber(' 0o1') || !NativeNumber('0b1') || NativeNumb
84
84
  }
85
85
  NumberWrapper.prototype = NumberPrototype;
86
86
  NumberPrototype.constructor = NumberWrapper;
87
- redefine(global, NUMBER, NumberWrapper);
87
+ defineBuiltIn(global, NUMBER, NumberWrapper, { constructor: true });
88
88
  }
@@ -4,6 +4,6 @@ var assign = require('../internals/object-assign');
4
4
  // `Object.assign` method
5
5
  // https://tc39.es/ecma262/#sec-object.assign
6
6
  // eslint-disable-next-line es-x/no-object-assign -- required for testing
7
- $({ target: 'Object', stat: true, forced: Object.assign !== assign }, {
7
+ $({ target: 'Object', stat: true, arity: 2, forced: Object.assign !== assign }, {
8
8
  assign: assign
9
9
  });
@@ -1,9 +1,9 @@
1
1
  var TO_STRING_TAG_SUPPORT = require('../internals/to-string-tag-support');
2
- var redefine = require('../internals/redefine');
2
+ var defineBuiltIn = require('../internals/define-built-in');
3
3
  var toString = require('../internals/object-to-string');
4
4
 
5
5
  // `Object.prototype.toString` method
6
6
  // https://tc39.es/ecma262/#sec-object.prototype.tostring
7
7
  if (!TO_STRING_TAG_SUPPORT) {
8
- redefine(Object.prototype, 'toString', toString, { unsafe: true });
8
+ defineBuiltIn(Object.prototype, 'toString', toString, { unsafe: true });
9
9
  }
@@ -5,7 +5,7 @@ var FORCED_PROMISE_CONSTRUCTOR = require('../internals/promise-constructor-detec
5
5
  var NativePromiseConstructor = require('../internals/promise-native-constructor');
6
6
  var getBuiltIn = require('../internals/get-built-in');
7
7
  var isCallable = require('../internals/is-callable');
8
- var redefine = require('../internals/redefine');
8
+ var defineBuiltIn = require('../internals/define-built-in');
9
9
 
10
10
  var NativePromisePrototype = NativePromiseConstructor && NativePromiseConstructor.prototype;
11
11
 
@@ -21,6 +21,6 @@ $({ target: 'Promise', proto: true, forced: FORCED_PROMISE_CONSTRUCTOR, real: tr
21
21
  if (!IS_PURE && isCallable(NativePromiseConstructor)) {
22
22
  var method = getBuiltIn('Promise').prototype['catch'];
23
23
  if (NativePromisePrototype['catch'] !== method) {
24
- redefine(NativePromisePrototype, 'catch', method, { unsafe: true });
24
+ defineBuiltIn(NativePromisePrototype, 'catch', method, { unsafe: true });
25
25
  }
26
26
  }
@@ -4,8 +4,7 @@ var IS_PURE = require('../internals/is-pure');
4
4
  var IS_NODE = require('../internals/engine-is-node');
5
5
  var global = require('../internals/global');
6
6
  var call = require('../internals/function-call');
7
- var redefine = require('../internals/redefine');
8
- var redefineAll = require('../internals/redefine-all');
7
+ var defineBuiltIn = require('../internals/define-built-in');
9
8
  var setPrototypeOf = require('../internals/object-set-prototype-of');
10
9
  var setToStringTag = require('../internals/set-to-string-tag');
11
10
  var setSpecies = require('../internals/set-species');
@@ -225,23 +224,20 @@ if (FORCED_PROMISE_CONSTRUCTOR) {
225
224
  });
226
225
  };
227
226
 
228
- Internal.prototype = redefineAll(PromisePrototype, {
229
- // `Promise.prototype.then` method
230
- // https://tc39.es/ecma262/#sec-promise.prototype.then
231
- // eslint-disable-next-line unicorn/no-thenable -- safe
232
- then: function then(onFulfilled, onRejected) {
233
- var state = getInternalPromiseState(this);
234
- var reaction = newPromiseCapability(speciesConstructor(this, PromiseConstructor));
235
- state.parent = true;
236
- reaction.ok = isCallable(onFulfilled) ? onFulfilled : true;
237
- reaction.fail = isCallable(onRejected) && onRejected;
238
- reaction.domain = IS_NODE ? process.domain : undefined;
239
- if (state.state == PENDING) state.reactions.add(reaction);
240
- else microtask(function () {
241
- callReaction(reaction, state);
242
- });
243
- return reaction.promise;
244
- }
227
+ // `Promise.prototype.then` method
228
+ // https://tc39.es/ecma262/#sec-promise.prototype.then
229
+ Internal.prototype = defineBuiltIn(PromisePrototype, 'then', function then(onFulfilled, onRejected) {
230
+ var state = getInternalPromiseState(this);
231
+ var reaction = newPromiseCapability(speciesConstructor(this, PromiseConstructor));
232
+ state.parent = true;
233
+ reaction.ok = isCallable(onFulfilled) ? onFulfilled : true;
234
+ reaction.fail = isCallable(onRejected) && onRejected;
235
+ reaction.domain = IS_NODE ? process.domain : undefined;
236
+ if (state.state == PENDING) state.reactions.add(reaction);
237
+ else microtask(function () {
238
+ callReaction(reaction, state);
239
+ });
240
+ return reaction.promise;
245
241
  });
246
242
 
247
243
  OwnPromiseCapability = function () {
@@ -263,7 +259,7 @@ if (FORCED_PROMISE_CONSTRUCTOR) {
263
259
 
264
260
  if (!NATIVE_PROMISE_SUBCLASSING) {
265
261
  // make `Promise#then` return a polyfilled `Promise` for native promise-based APIs
266
- redefine(NativePromisePrototype, 'then', function then(onFulfilled, onRejected) {
262
+ defineBuiltIn(NativePromisePrototype, 'then', function then(onFulfilled, onRejected) {
267
263
  var that = this;
268
264
  return new PromiseConstructor(function (resolve, reject) {
269
265
  call(nativeThen, that, resolve, reject);
@@ -284,7 +280,7 @@ if (FORCED_PROMISE_CONSTRUCTOR) {
284
280
  }
285
281
  }
286
282
 
287
- $({ global: true, wrap: true, forced: FORCED_PROMISE_CONSTRUCTOR }, {
283
+ $({ global: true, constructor: true, wrap: true, forced: FORCED_PROMISE_CONSTRUCTOR }, {
288
284
  Promise: PromiseConstructor
289
285
  });
290
286
 
@@ -7,7 +7,7 @@ var getBuiltIn = require('../internals/get-built-in');
7
7
  var isCallable = require('../internals/is-callable');
8
8
  var speciesConstructor = require('../internals/species-constructor');
9
9
  var promiseResolve = require('../internals/promise-resolve');
10
- var redefine = require('../internals/redefine');
10
+ var defineBuiltIn = require('../internals/define-built-in');
11
11
 
12
12
  var NativePromisePrototype = NativePromiseConstructor && NativePromiseConstructor.prototype;
13
13
 
@@ -38,6 +38,6 @@ $({ target: 'Promise', proto: true, real: true, forced: NON_GENERIC }, {
38
38
  if (!IS_PURE && isCallable(NativePromiseConstructor)) {
39
39
  var method = getBuiltIn('Promise').prototype['finally'];
40
40
  if (NativePromisePrototype['finally'] !== method) {
41
- redefine(NativePromisePrototype, 'finally', method, { unsafe: true });
41
+ defineBuiltIn(NativePromisePrototype, 'finally', method, { unsafe: true });
42
42
  }
43
43
  }
@@ -11,7 +11,7 @@ var toString = require('../internals/to-string');
11
11
  var getRegExpFlags = require('../internals/regexp-get-flags');
12
12
  var stickyHelpers = require('../internals/regexp-sticky-helpers');
13
13
  var proxyAccessor = require('../internals/proxy-accessor');
14
- var redefine = require('../internals/redefine');
14
+ var defineBuiltIn = require('../internals/define-built-in');
15
15
  var fails = require('../internals/fails');
16
16
  var hasOwn = require('../internals/has-own-property');
17
17
  var enforceInternalState = require('../internals/internal-state').enforce;
@@ -183,7 +183,7 @@ if (isForced('RegExp', BASE_FORCED)) {
183
183
 
184
184
  RegExpPrototype.constructor = RegExpWrapper;
185
185
  RegExpWrapper.prototype = RegExpPrototype;
186
- redefine(global, 'RegExp', RegExpWrapper);
186
+ defineBuiltIn(global, 'RegExp', RegExpWrapper, { constructor: true });
187
187
  }
188
188
 
189
189
  // https://tc39.es/ecma262/#sec-get-regexp-@@species
@@ -2,7 +2,7 @@ var global = require('../internals/global');
2
2
  var DESCRIPTORS = require('../internals/descriptors');
3
3
  var UNSUPPORTED_DOT_ALL = require('../internals/regexp-unsupported-dot-all');
4
4
  var classof = require('../internals/classof-raw');
5
- var defineProperty = require('../internals/object-define-property').f;
5
+ var defineBuiltInAccessor = require('../internals/define-built-in-accessor');
6
6
  var getInternalState = require('../internals/internal-state').get;
7
7
 
8
8
  var RegExpPrototype = RegExp.prototype;
@@ -11,9 +11,9 @@ var TypeError = global.TypeError;
11
11
  // `RegExp.prototype.dotAll` getter
12
12
  // https://tc39.es/ecma262/#sec-get-regexp.prototype.dotall
13
13
  if (DESCRIPTORS && UNSUPPORTED_DOT_ALL) {
14
- defineProperty(RegExpPrototype, 'dotAll', {
14
+ defineBuiltInAccessor(RegExpPrototype, 'dotAll', {
15
15
  configurable: true,
16
- get: function () {
16
+ get: function dotAll() {
17
17
  if (this === RegExpPrototype) return undefined;
18
18
  // We can't use InternalStateModule.getterFor because
19
19
  // we don't add metadata for regexps created by a literal.
@@ -1,5 +1,5 @@
1
1
  var DESCRIPTORS = require('../internals/descriptors');
2
- var objectDefinePropertyModule = require('../internals/object-define-property');
2
+ var defineBuiltInAccessor = require('../internals/define-built-in-accessor');
3
3
  var regExpFlags = require('../internals/regexp-flags');
4
4
  var fails = require('../internals/fails');
5
5
 
@@ -12,7 +12,7 @@ var FORCED = DESCRIPTORS && fails(function () {
12
12
 
13
13
  // `RegExp.prototype.flags` getter
14
14
  // https://tc39.es/ecma262/#sec-get-regexp.prototype.flags
15
- if (FORCED) objectDefinePropertyModule.f(RegExpPrototype, 'flags', {
15
+ if (FORCED) defineBuiltInAccessor(RegExpPrototype, 'flags', {
16
16
  configurable: true,
17
17
  get: regExpFlags
18
18
  });
@@ -2,7 +2,7 @@ var global = require('../internals/global');
2
2
  var DESCRIPTORS = require('../internals/descriptors');
3
3
  var MISSED_STICKY = require('../internals/regexp-sticky-helpers').MISSED_STICKY;
4
4
  var classof = require('../internals/classof-raw');
5
- var defineProperty = require('../internals/object-define-property').f;
5
+ var defineBuiltInAccessor = require('../internals/define-built-in-accessor');
6
6
  var getInternalState = require('../internals/internal-state').get;
7
7
 
8
8
  var RegExpPrototype = RegExp.prototype;
@@ -11,9 +11,9 @@ var TypeError = global.TypeError;
11
11
  // `RegExp.prototype.sticky` getter
12
12
  // https://tc39.es/ecma262/#sec-get-regexp.prototype.sticky
13
13
  if (DESCRIPTORS && MISSED_STICKY) {
14
- defineProperty(RegExpPrototype, 'sticky', {
14
+ defineBuiltInAccessor(RegExpPrototype, 'sticky', {
15
15
  configurable: true,
16
- get: function () {
16
+ get: function sticky() {
17
17
  if (this === RegExpPrototype) return undefined;
18
18
  // We can't use InternalStateModule.getterFor because
19
19
  // we don't add metadata for regexps created by a literal.
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
  var PROPER_FUNCTION_NAME = require('../internals/function-name').PROPER;
3
- var redefine = require('../internals/redefine');
3
+ var defineBuiltIn = require('../internals/define-built-in');
4
4
  var anObject = require('../internals/an-object');
5
5
  var $toString = require('../internals/to-string');
6
6
  var fails = require('../internals/fails');
@@ -17,7 +17,7 @@ var INCORRECT_NAME = PROPER_FUNCTION_NAME && n$ToString.name != TO_STRING;
17
17
  // `RegExp.prototype.toString` method
18
18
  // https://tc39.es/ecma262/#sec-regexp.prototype.tostring
19
19
  if (NOT_GENERIC || INCORRECT_NAME) {
20
- redefine(RegExp.prototype, TO_STRING, function toString() {
20
+ defineBuiltIn(RegExp.prototype, TO_STRING, function toString() {
21
21
  var R = anObject(this);
22
22
  var pattern = $toString(R.source);
23
23
  var flags = $toString(getRegExpFlags(R));
@@ -14,7 +14,7 @@ var INCORRECT_LENGTH = !!$fromCodePoint && $fromCodePoint.length != 1;
14
14
 
15
15
  // `String.fromCodePoint` method
16
16
  // https://tc39.es/ecma262/#sec-string.fromcodepoint
17
- $({ target: 'String', stat: true, forced: INCORRECT_LENGTH }, {
17
+ $({ target: 'String', stat: true, arity: 1, forced: INCORRECT_LENGTH }, {
18
18
  // eslint-disable-next-line no-unused-vars -- required for `.length`
19
19
  fromCodePoint: function fromCodePoint(x) {
20
20
  var elements = [];
@@ -13,7 +13,7 @@ var classof = require('../internals/classof-raw');
13
13
  var isRegExp = require('../internals/is-regexp');
14
14
  var getRegExpFlags = require('../internals/regexp-get-flags');
15
15
  var getMethod = require('../internals/get-method');
16
- var redefine = require('../internals/redefine');
16
+ var defineBuiltIn = require('../internals/define-built-in');
17
17
  var fails = require('../internals/fails');
18
18
  var wellKnownSymbol = require('../internals/well-known-symbol');
19
19
  var speciesConstructor = require('../internals/species-constructor');
@@ -95,4 +95,4 @@ $({ target: 'String', proto: true, forced: WORKS_WITH_NON_GLOBAL_REGEX }, {
95
95
  }
96
96
  });
97
97
 
98
- IS_PURE || MATCH_ALL in RegExpPrototype || redefine(RegExpPrototype, MATCH_ALL, $matchAll);
98
+ IS_PURE || MATCH_ALL in RegExpPrototype || defineBuiltIn(RegExpPrototype, MATCH_ALL, $matchAll);
@@ -23,7 +23,7 @@ var getOwnPropertyDescriptorModule = require('../internals/object-get-own-proper
23
23
  var definePropertyModule = require('../internals/object-define-property');
24
24
  var definePropertiesModule = require('../internals/object-define-properties');
25
25
  var propertyIsEnumerableModule = require('../internals/object-property-is-enumerable');
26
- var redefine = require('../internals/redefine');
26
+ var defineBuiltIn = require('../internals/define-built-in');
27
27
  var shared = require('../internals/shared');
28
28
  var sharedKey = require('../internals/shared-key');
29
29
  var hiddenKeys = require('../internals/hidden-keys');
@@ -174,11 +174,11 @@ if (!NATIVE_SYMBOL) {
174
174
 
175
175
  SymbolPrototype = $Symbol[PROTOTYPE];
176
176
 
177
- redefine(SymbolPrototype, 'toString', function toString() {
177
+ defineBuiltIn(SymbolPrototype, 'toString', function toString() {
178
178
  return getInternalState(this).tag;
179
179
  });
180
180
 
181
- redefine($Symbol, 'withoutSetter', function (description) {
181
+ defineBuiltIn($Symbol, 'withoutSetter', function (description) {
182
182
  return wrap(uid(description), description);
183
183
  });
184
184
 
@@ -202,12 +202,12 @@ if (!NATIVE_SYMBOL) {
202
202
  }
203
203
  });
204
204
  if (!IS_PURE) {
205
- redefine(ObjectPrototype, 'propertyIsEnumerable', $propertyIsEnumerable, { unsafe: true });
205
+ defineBuiltIn(ObjectPrototype, 'propertyIsEnumerable', $propertyIsEnumerable, { unsafe: true });
206
206
  }
207
207
  }
208
208
  }
209
209
 
210
- $({ global: true, wrap: true, forced: !NATIVE_SYMBOL, sham: !NATIVE_SYMBOL }, {
210
+ $({ global: true, constructor: true, wrap: true, forced: !NATIVE_SYMBOL, sham: !NATIVE_SYMBOL }, {
211
211
  Symbol: $Symbol
212
212
  });
213
213
 
@@ -53,7 +53,7 @@ if (DESCRIPTORS && isCallable(NativeSymbol) && (!('description' in SymbolPrototy
53
53
  }
54
54
  });
55
55
 
56
- $({ global: true, forced: true }, {
56
+ $({ global: true, constructor: true, forced: true }, {
57
57
  Symbol: SymbolWrapper
58
58
  });
59
59
  }
@@ -1,7 +1,7 @@
1
1
  'use strict';
2
2
  var global = require('../internals/global');
3
3
  var uncurryThis = require('../internals/function-uncurry-this');
4
- var redefineAll = require('../internals/redefine-all');
4
+ var defineBuiltIns = require('../internals/define-built-ins');
5
5
  var InternalMetadataModule = require('../internals/internal-metadata');
6
6
  var collection = require('../internals/collection');
7
7
  var collectionWeak = require('../internals/collection-weak');
@@ -34,7 +34,7 @@ if (NATIVE_WEAK_MAP && IS_IE11) {
34
34
  var nativeHas = uncurryThis(WeakMapPrototype.has);
35
35
  var nativeGet = uncurryThis(WeakMapPrototype.get);
36
36
  var nativeSet = uncurryThis(WeakMapPrototype.set);
37
- redefineAll(WeakMapPrototype, {
37
+ defineBuiltIns(WeakMapPrototype, {
38
38
  'delete': function (key) {
39
39
  if (isObject(key) && !isExtensible(key)) {
40
40
  var state = enforceInternalState(this);
@@ -4,12 +4,12 @@ var DESCRIPTORS = require('../internals/descriptors');
4
4
  var addToUnscopables = require('../internals/add-to-unscopables');
5
5
  var toObject = require('../internals/to-object');
6
6
  var lengthOfArrayLike = require('../internals/length-of-array-like');
7
- var defineProperty = require('../internals/object-define-property').f;
7
+ var defineBuiltInAccessor = require('../internals/define-built-in-accessor');
8
8
 
9
9
  // `Array.prototype.lastIndex` getter
10
10
  // https://github.com/keithamus/proposal-array-last
11
11
  if (DESCRIPTORS) {
12
- defineProperty(Array.prototype, 'lastIndex', {
12
+ defineBuiltInAccessor(Array.prototype, 'lastIndex', {
13
13
  configurable: true,
14
14
  get: function lastIndex() {
15
15
  var O = toObject(this);
@@ -4,12 +4,12 @@ var DESCRIPTORS = require('../internals/descriptors');
4
4
  var addToUnscopables = require('../internals/add-to-unscopables');
5
5
  var toObject = require('../internals/to-object');
6
6
  var lengthOfArrayLike = require('../internals/length-of-array-like');
7
- var defineProperty = require('../internals/object-define-property').f;
7
+ var defineBuiltInAccessor = require('../internals/define-built-in-accessor');
8
8
 
9
9
  // `Array.prototype.lastIndex` accessor
10
10
  // https://github.com/keithamus/proposal-array-last
11
11
  if (DESCRIPTORS) {
12
- defineProperty(Array.prototype, 'lastItem', {
12
+ defineBuiltInAccessor(Array.prototype, 'lastItem', {
13
13
  configurable: true,
14
14
  get: function lastItem() {
15
15
  var O = toObject(this);
@@ -10,7 +10,7 @@ var Array = global.Array;
10
10
 
11
11
  // `Array.prototype.toSpliced` method
12
12
  // https://tc39.es/proposal-change-array-by-copy/#sec-array.prototype.toSpliced
13
- $({ target: 'Array', proto: true }, {
13
+ $({ target: 'Array', proto: true, arity: 2 }, {
14
14
  // eslint-disable-next-line no-unused-vars -- required for .length
15
15
  toSpliced: function toSpliced(start, deleteCount /* , ...items */) {
16
16
  return arrayToSpliced(toIndexedObject(this), Array, arraySlice(arguments));
@@ -24,6 +24,6 @@ if (IS_PURE || !hasOwn(AsyncIteratorPrototype, 'constructor') || AsyncIteratorPr
24
24
  createNonEnumerableProperty(AsyncIteratorPrototype, 'constructor', AsyncIteratorConstructor);
25
25
  }
26
26
 
27
- $({ global: true, forced: IS_PURE }, {
27
+ $({ global: true, constructor: true, forced: IS_PURE }, {
28
28
  AsyncIterator: AsyncIteratorConstructor
29
29
  });
@@ -36,6 +36,6 @@ if (FORCED || !hasOwn(IteratorPrototype, 'constructor') || IteratorPrototype.con
36
36
 
37
37
  IteratorConstructor.prototype = IteratorPrototype;
38
38
 
39
- $({ global: true, forced: FORCED }, {
39
+ $({ global: true, constructor: true, forced: FORCED }, {
40
40
  Iterator: IteratorConstructor
41
41
  });
@@ -6,7 +6,7 @@ var iterate = require('../internals/iterate');
6
6
 
7
7
  // `Map.prototype.merge` method
8
8
  // https://github.com/tc39/proposal-collection-methods
9
- $({ target: 'Map', proto: true, real: true, forced: true }, {
9
+ $({ target: 'Map', proto: true, real: true, arity: 1, forced: true }, {
10
10
  // eslint-disable-next-line no-unused-vars -- required for `.length`
11
11
  merge: function merge(iterable /* ...iterables */) {
12
12
  var map = anObject(this);
@@ -10,9 +10,9 @@ var anObject = require('../internals/an-object');
10
10
  var isObject = require('../internals/is-object');
11
11
  var anInstance = require('../internals/an-instance');
12
12
  var getMethod = require('../internals/get-method');
13
- var defineProperty = require('../internals/object-define-property').f;
14
- var redefine = require('../internals/redefine');
15
- var redefineAll = require('../internals/redefine-all');
13
+ var defineBuiltIn = require('../internals/define-built-in');
14
+ var defineBuiltIns = require('../internals/define-built-ins');
15
+ var defineBuiltInAccessor = require('../internals/define-built-in-accessor');
16
16
  var hostReportErrors = require('../internals/host-report-errors');
17
17
  var wellKnownSymbol = require('../internals/well-known-symbol');
18
18
  var InternalStateModule = require('../internals/internal-state');
@@ -83,7 +83,7 @@ var Subscription = function (observer, subscriber) {
83
83
  } if (subscriptionState.isClosed()) subscriptionState.clean();
84
84
  };
85
85
 
86
- Subscription.prototype = redefineAll({}, {
86
+ Subscription.prototype = defineBuiltIns({}, {
87
87
  unsubscribe: function unsubscribe() {
88
88
  var subscriptionState = getSubscriptionInternalState(this);
89
89
  if (!subscriptionState.isClosed()) {
@@ -93,9 +93,9 @@ Subscription.prototype = redefineAll({}, {
93
93
  }
94
94
  });
95
95
 
96
- if (DESCRIPTORS) defineProperty(Subscription.prototype, 'closed', {
96
+ if (DESCRIPTORS) defineBuiltInAccessor(Subscription.prototype, 'closed', {
97
97
  configurable: true,
98
- get: function () {
98
+ get: function closed() {
99
99
  return getSubscriptionInternalState(this).isClosed();
100
100
  }
101
101
  });
@@ -108,7 +108,7 @@ var SubscriptionObserver = function (subscriptionState) {
108
108
  if (!DESCRIPTORS) this.closed = false;
109
109
  };
110
110
 
111
- SubscriptionObserver.prototype = redefineAll({}, {
111
+ SubscriptionObserver.prototype = defineBuiltIns({}, {
112
112
  next: function next(value) {
113
113
  var subscriptionState = getSubscriptionObserverInternalState(this).subscriptionState;
114
114
  if (!subscriptionState.isClosed()) {
@@ -150,9 +150,9 @@ SubscriptionObserver.prototype = redefineAll({}, {
150
150
  }
151
151
  });
152
152
 
153
- if (DESCRIPTORS) defineProperty(SubscriptionObserver.prototype, 'closed', {
153
+ if (DESCRIPTORS) defineBuiltInAccessor(SubscriptionObserver.prototype, 'closed', {
154
154
  configurable: true,
155
- get: function () {
155
+ get: function closed() {
156
156
  return getSubscriptionObserverInternalState(this).subscriptionState.isClosed();
157
157
  }
158
158
  });
@@ -167,7 +167,7 @@ var $Observable = function Observable(subscriber) {
167
167
 
168
168
  var ObservablePrototype = $Observable.prototype;
169
169
 
170
- redefineAll(ObservablePrototype, {
170
+ defineBuiltIns(ObservablePrototype, {
171
171
  subscribe: function subscribe(observer) {
172
172
  var length = arguments.length;
173
173
  return new Subscription(isCallable(observer) ? {
@@ -178,9 +178,9 @@ redefineAll(ObservablePrototype, {
178
178
  }
179
179
  });
180
180
 
181
- redefine(ObservablePrototype, $$OBSERVABLE, function () { return this; });
181
+ defineBuiltIn(ObservablePrototype, $$OBSERVABLE, function () { return this; });
182
182
 
183
- $({ global: true, forced: OBSERVABLE_FORCED }, {
183
+ $({ global: true, constructor: true, forced: OBSERVABLE_FORCED }, {
184
184
  Observable: $Observable
185
185
  });
186
186
 
@@ -12,4 +12,4 @@ var TYPED_ARRAY_CONSTRUCTOR = ArrayBufferViewCore.TYPED_ARRAY_CONSTRUCTOR;
12
12
  // eslint-disable-next-line no-unused-vars -- required for .length
13
13
  exportTypedArrayMethod('toSpliced', function toSpliced(start, deleteCount /* , ...items */) {
14
14
  return arrayToSpliced(aTypedArray(this), this[TYPED_ARRAY_CONSTRUCTOR], arraySlice(arguments));
15
- });
15
+ }, { arity: 2 });
@@ -6,8 +6,8 @@ var fails = require('../internals/fails');
6
6
  var create = require('../internals/object-create');
7
7
  var createPropertyDescriptor = require('../internals/create-property-descriptor');
8
8
  var defineProperty = require('../internals/object-define-property').f;
9
- var defineProperties = require('../internals/object-define-properties').f;
10
- var redefine = require('../internals/redefine');
9
+ var defineBuiltIn = require('../internals/define-built-in');
10
+ var defineBuiltInAccessor = require('../internals/define-built-in-accessor');
11
11
  var hasOwn = require('../internals/has-own-property');
12
12
  var anInstance = require('../internals/an-instance');
13
13
  var anObject = require('../internals/an-object');
@@ -79,11 +79,11 @@ var getterFor = function (key) {
79
79
  });
80
80
  };
81
81
 
82
- if (DESCRIPTORS) defineProperties(DOMExceptionPrototype, {
83
- name: getterFor('name'),
84
- message: getterFor('message'),
85
- code: getterFor('code')
86
- });
82
+ if (DESCRIPTORS) {
83
+ defineBuiltInAccessor(DOMExceptionPrototype, 'code', getterFor('code'));
84
+ defineBuiltInAccessor(DOMExceptionPrototype, 'message', getterFor('message'));
85
+ defineBuiltInAccessor(DOMExceptionPrototype, 'name', getterFor('name'));
86
+ }
87
87
 
88
88
  defineProperty(DOMExceptionPrototype, 'constructor', createPropertyDescriptor(1, $DOMException));
89
89
 
@@ -111,7 +111,7 @@ var FORCED_CONSTRUCTOR = IS_PURE ? INCORRECT_TO_STRING || INCORRECT_CODE || MISS
111
111
 
112
112
  // `DOMException` constructor
113
113
  // https://webidl.spec.whatwg.org/#idl-DOMException
114
- $({ global: true, forced: FORCED_CONSTRUCTOR }, {
114
+ $({ global: true, constructor: true, forced: FORCED_CONSTRUCTOR }, {
115
115
  DOMException: FORCED_CONSTRUCTOR ? $DOMException : NativeDOMException
116
116
  });
117
117
 
@@ -119,11 +119,11 @@ var PolyfilledDOMException = getBuiltIn(DOM_EXCEPTION);
119
119
  var PolyfilledDOMExceptionPrototype = PolyfilledDOMException.prototype;
120
120
 
121
121
  if (INCORRECT_TO_STRING && (IS_PURE || NativeDOMException === PolyfilledDOMException)) {
122
- redefine(PolyfilledDOMExceptionPrototype, 'toString', errorToString);
122
+ defineBuiltIn(PolyfilledDOMExceptionPrototype, 'toString', errorToString);
123
123
  }
124
124
 
125
125
  if (INCORRECT_CODE && DESCRIPTORS && NativeDOMException === PolyfilledDOMException) {
126
- defineProperty(PolyfilledDOMExceptionPrototype, 'code', createGetterDescriptor(function () {
126
+ defineBuiltInAccessor(PolyfilledDOMExceptionPrototype, 'code', createGetterDescriptor(function () {
127
127
  return codeFor(anObject(this).name);
128
128
  }));
129
129
  }
@@ -36,7 +36,7 @@ var FORCED_CONSTRUCTOR = ERROR_HAS_STACK && !DOM_EXCEPTION_HAS_STACK;
36
36
 
37
37
  // `DOMException` constructor patch for `.stack` where it's required
38
38
  // https://webidl.spec.whatwg.org/#es-DOMException-specialness
39
- $({ global: true, forced: IS_PURE || FORCED_CONSTRUCTOR }, { // TODO: fix export logic
39
+ $({ global: true, constructor: true, forced: IS_PURE || FORCED_CONSTRUCTOR }, { // TODO: fix export logic
40
40
  DOMException: FORCED_CONSTRUCTOR ? $DOMException : NativeDOMException
41
41
  });
42
42
 
@@ -61,30 +61,42 @@ var checkBasicSemantic = function (structuredCloneImplementation) {
61
61
  }) && structuredCloneImplementation;
62
62
  };
63
63
 
64
+ var checkErrorsCloning = function (structuredCloneImplementation) {
65
+ return !fails(function () {
66
+ var error = new Error();
67
+ var test = structuredCloneImplementation({ a: error, b: error });
68
+ return !(test && test.a === test.b && test.a instanceof Error);
69
+ });
70
+ };
71
+
64
72
  // https://github.com/whatwg/html/pull/5749
65
- var checkNewErrorsSemantic = function (structuredCloneImplementation) {
73
+ var checkNewErrorsCloningSemantic = function (structuredCloneImplementation) {
66
74
  return !fails(function () {
67
75
  var test = structuredCloneImplementation(new global.AggregateError([1], PERFORMANCE_MARK, { cause: 3 }));
68
76
  return test.name != 'AggregateError' || test.errors[0] != 1 || test.message != PERFORMANCE_MARK || test.cause != 3;
69
- }) && structuredCloneImplementation;
77
+ });
70
78
  };
71
79
 
72
- // FF94+, Safari TP134+, Chrome Canary 98+, NodeJS 17.0+, Deno 1.13+
73
- // current FF and Safari implementations can't clone errors
80
+ // FF94+, Safari 15.4+, Chrome 98+, NodeJS 17.0+, Deno 1.13+
81
+ // FF and Safari implementations can't clone errors
74
82
  // https://bugzilla.mozilla.org/show_bug.cgi?id=1556604
83
+ // Chrome <103 returns `null` if cloned object contains multiple references to one error
84
+ // https://bugs.chromium.org/p/v8/issues/detail?id=12542
75
85
  // no one of current implementations supports new (html/5749) error cloning semantic
76
86
  var nativeStructuredClone = global.structuredClone;
77
87
 
78
- var FORCED_REPLACEMENT = IS_PURE || !checkNewErrorsSemantic(nativeStructuredClone);
88
+ var FORCED_REPLACEMENT = IS_PURE || !checkErrorsCloning(nativeStructuredClone) || !checkNewErrorsCloningSemantic(nativeStructuredClone);
79
89
 
80
90
  // Chrome 82+, Safari 14.1+, Deno 1.11+
81
91
  // Chrome 78-81 implementation swaps `.name` and `.message` of cloned `DOMException`
92
+ // Chrome returns `null` if cloned object contains multiple references to one error
82
93
  // Safari 14.1 implementation doesn't clone some `RegExp` flags, so requires a workaround
83
- // current Safari implementation can't clone errors
94
+ // Safari implementation can't clone errors
84
95
  // Deno 1.2-1.10 implementations too naive
85
- // NodeJS 16.0+ does not have `PerformanceMark` constructor, structured cloning implementation
86
- // from `performance.mark` is too naive and can't clone, for example, `RegExp` or some boxed primitives
87
- // https://github.com/nodejs/node/issues/40840
96
+ // NodeJS 16.0+ does not have `PerformanceMark` constructor
97
+ // NodeJS <17.2 structured cloning implementation from `performance.mark` is too naive
98
+ // and can't clone, for example, `RegExp` or some boxed primitives
99
+ // https://github.com/nodejs/node/issues/40840
88
100
  // no one of current implementations supports new (html/5749) error cloning semantic
89
101
  var structuredCloneFromMark = !nativeStructuredClone && checkBasicSemantic(function (value) {
90
102
  return new PerformanceMark(PERFORMANCE_MARK, { detail: value }).detail;