core-js 3.20.0 → 3.21.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 (174) hide show
  1. package/LICENSE +1 -1
  2. package/README.md +2 -2
  3. package/actual/array/group-by-to-map.js +1 -0
  4. package/actual/array/index.js +1 -0
  5. package/actual/array/virtual/group-by-to-map.js +1 -0
  6. package/actual/array/virtual/index.js +1 -0
  7. package/actual/atob.js +3 -0
  8. package/actual/btoa.js +3 -0
  9. package/features/atob.js +3 -0
  10. package/features/btoa.js +3 -0
  11. package/features/index.js +2 -0
  12. package/internals/array-buffer-view-core.js +9 -4
  13. package/internals/base64-map.js +9 -0
  14. package/internals/function-apply.js +3 -2
  15. package/internals/function-bind-context.js +2 -1
  16. package/internals/function-bind-native.js +7 -0
  17. package/internals/function-bind.js +2 -1
  18. package/internals/function-call.js +3 -1
  19. package/internals/function-uncurry-this.js +5 -3
  20. package/internals/ie8-dom-define.js +2 -2
  21. package/internals/native-url.js +1 -0
  22. package/internals/numeric-range-iterator.js +1 -1
  23. package/internals/object-create.js +2 -2
  24. package/internals/object-define-properties.js +2 -1
  25. package/internals/object-define-property.js +22 -1
  26. package/internals/queue.js +23 -0
  27. package/internals/shared.js +4 -2
  28. package/internals/task.js +5 -2
  29. package/internals/v8-prototype-define-bug.js +12 -0
  30. package/internals/validate-arguments-length.js +8 -0
  31. package/modules/es.function.bind.js +1 -1
  32. package/modules/es.object.define-properties.js +3 -2
  33. package/modules/es.object.define-property.js +4 -3
  34. package/modules/es.promise.finally.js +1 -0
  35. package/modules/es.promise.js +47 -43
  36. package/modules/es.symbol.js +2 -0
  37. package/modules/es.typed-array.set.js +20 -5
  38. package/modules/es.weak-map.js +5 -5
  39. package/modules/esnext.array.filter-out.js +1 -1
  40. package/modules/esnext.array.filter-reject.js +1 -1
  41. package/modules/esnext.array.from-async.js +1 -1
  42. package/modules/esnext.array.is-template-object.js +1 -1
  43. package/modules/esnext.array.last-index.js +1 -1
  44. package/modules/esnext.array.last-item.js +1 -1
  45. package/modules/esnext.array.to-reversed.js +1 -1
  46. package/modules/esnext.array.to-sorted.js +1 -1
  47. package/modules/esnext.array.to-spliced.js +1 -1
  48. package/modules/esnext.array.unique-by.js +1 -1
  49. package/modules/esnext.array.with.js +1 -1
  50. package/modules/esnext.async-iterator.as-indexed-pairs.js +1 -1
  51. package/modules/esnext.async-iterator.drop.js +1 -1
  52. package/modules/esnext.async-iterator.every.js +1 -1
  53. package/modules/esnext.async-iterator.filter.js +1 -1
  54. package/modules/esnext.async-iterator.find.js +1 -1
  55. package/modules/esnext.async-iterator.flat-map.js +1 -1
  56. package/modules/esnext.async-iterator.for-each.js +1 -1
  57. package/modules/esnext.async-iterator.from.js +1 -1
  58. package/modules/esnext.async-iterator.map.js +1 -1
  59. package/modules/esnext.async-iterator.reduce.js +1 -1
  60. package/modules/esnext.async-iterator.some.js +1 -1
  61. package/modules/esnext.async-iterator.take.js +1 -1
  62. package/modules/esnext.async-iterator.to-array.js +1 -1
  63. package/modules/esnext.bigint.range.js +1 -1
  64. package/modules/esnext.composite-key.js +1 -1
  65. package/modules/esnext.composite-symbol.js +1 -1
  66. package/modules/esnext.function.is-callable.js +1 -1
  67. package/modules/esnext.function.is-constructor.js +1 -1
  68. package/modules/esnext.function.un-this.js +1 -1
  69. package/modules/esnext.iterator.as-indexed-pairs.js +1 -1
  70. package/modules/esnext.iterator.drop.js +1 -1
  71. package/modules/esnext.iterator.every.js +1 -1
  72. package/modules/esnext.iterator.filter.js +1 -1
  73. package/modules/esnext.iterator.find.js +1 -1
  74. package/modules/esnext.iterator.flat-map.js +1 -1
  75. package/modules/esnext.iterator.for-each.js +1 -1
  76. package/modules/esnext.iterator.from.js +1 -1
  77. package/modules/esnext.iterator.map.js +1 -1
  78. package/modules/esnext.iterator.reduce.js +1 -1
  79. package/modules/esnext.iterator.some.js +1 -1
  80. package/modules/esnext.iterator.take.js +1 -1
  81. package/modules/esnext.iterator.to-array.js +1 -1
  82. package/modules/esnext.iterator.to-async.js +1 -1
  83. package/modules/esnext.map.delete-all.js +1 -2
  84. package/modules/esnext.map.emplace.js +1 -2
  85. package/modules/esnext.map.every.js +1 -2
  86. package/modules/esnext.map.filter.js +1 -2
  87. package/modules/esnext.map.find-key.js +1 -2
  88. package/modules/esnext.map.find.js +1 -2
  89. package/modules/esnext.map.from.js +1 -1
  90. package/modules/esnext.map.group-by.js +1 -1
  91. package/modules/esnext.map.includes.js +1 -2
  92. package/modules/esnext.map.key-by.js +1 -1
  93. package/modules/esnext.map.key-of.js +1 -2
  94. package/modules/esnext.map.map-keys.js +1 -2
  95. package/modules/esnext.map.map-values.js +1 -2
  96. package/modules/esnext.map.merge.js +2 -3
  97. package/modules/esnext.map.of.js +1 -1
  98. package/modules/esnext.map.reduce.js +1 -2
  99. package/modules/esnext.map.some.js +1 -2
  100. package/modules/esnext.map.update-or-insert.js +1 -2
  101. package/modules/esnext.map.update.js +1 -2
  102. package/modules/esnext.map.upsert.js +1 -2
  103. package/modules/esnext.math.clamp.js +1 -1
  104. package/modules/esnext.math.deg-per-rad.js +1 -1
  105. package/modules/esnext.math.degrees.js +1 -1
  106. package/modules/esnext.math.fscale.js +1 -1
  107. package/modules/esnext.math.iaddh.js +1 -1
  108. package/modules/esnext.math.imulh.js +1 -1
  109. package/modules/esnext.math.isubh.js +1 -1
  110. package/modules/esnext.math.rad-per-deg.js +1 -1
  111. package/modules/esnext.math.radians.js +1 -1
  112. package/modules/esnext.math.scale.js +1 -1
  113. package/modules/esnext.math.signbit.js +1 -1
  114. package/modules/esnext.math.umulh.js +1 -1
  115. package/modules/esnext.number.from-string.js +1 -1
  116. package/modules/esnext.number.range.js +1 -1
  117. package/modules/esnext.object.iterate-entries.js +1 -1
  118. package/modules/esnext.object.iterate-keys.js +1 -1
  119. package/modules/esnext.object.iterate-values.js +1 -1
  120. package/modules/esnext.observable.js +9 -1
  121. package/modules/esnext.promise.try.js +1 -1
  122. package/modules/esnext.set.add-all.js +1 -2
  123. package/modules/esnext.set.delete-all.js +1 -2
  124. package/modules/esnext.set.difference.js +1 -2
  125. package/modules/esnext.set.every.js +1 -2
  126. package/modules/esnext.set.filter.js +1 -2
  127. package/modules/esnext.set.find.js +1 -2
  128. package/modules/esnext.set.from.js +1 -1
  129. package/modules/esnext.set.intersection.js +1 -2
  130. package/modules/esnext.set.is-disjoint-from.js +1 -2
  131. package/modules/esnext.set.is-subset-of.js +1 -2
  132. package/modules/esnext.set.is-superset-of.js +1 -2
  133. package/modules/esnext.set.join.js +1 -2
  134. package/modules/esnext.set.map.js +1 -2
  135. package/modules/esnext.set.of.js +1 -1
  136. package/modules/esnext.set.reduce.js +1 -2
  137. package/modules/esnext.set.some.js +1 -2
  138. package/modules/esnext.set.symmetric-difference.js +1 -2
  139. package/modules/esnext.set.union.js +1 -2
  140. package/modules/esnext.string.at.js +1 -6
  141. package/modules/esnext.string.code-points.js +1 -1
  142. package/modules/esnext.string.cooked.js +1 -1
  143. package/modules/esnext.typed-array.filter-out.js +1 -1
  144. package/modules/esnext.typed-array.filter-reject.js +1 -1
  145. package/modules/esnext.typed-array.from-async.js +1 -2
  146. package/modules/esnext.typed-array.group-by.js +1 -1
  147. package/modules/esnext.typed-array.to-reversed.js +1 -1
  148. package/modules/esnext.typed-array.to-sorted.js +1 -1
  149. package/modules/esnext.typed-array.to-spliced.js +1 -1
  150. package/modules/esnext.typed-array.unique-by.js +1 -1
  151. package/modules/esnext.typed-array.with.js +1 -1
  152. package/modules/esnext.weak-map.delete-all.js +1 -2
  153. package/modules/esnext.weak-map.emplace.js +1 -2
  154. package/modules/esnext.weak-map.from.js +1 -1
  155. package/modules/esnext.weak-map.of.js +1 -1
  156. package/modules/esnext.weak-map.upsert.js +1 -2
  157. package/modules/esnext.weak-set.add-all.js +1 -2
  158. package/modules/esnext.weak-set.delete-all.js +1 -2
  159. package/modules/esnext.weak-set.from.js +1 -1
  160. package/modules/esnext.weak-set.of.js +1 -1
  161. package/modules/web.atob.js +52 -0
  162. package/modules/web.btoa.js +37 -0
  163. package/modules/web.dom-exception.constructor.js +1 -1
  164. package/modules/web.queue-microtask.js +4 -0
  165. package/modules/web.structured-clone.js +5 -4
  166. package/modules/web.timers.js +5 -3
  167. package/modules/web.url-search-params.js +1 -4
  168. package/modules/web.url.js +3 -2
  169. package/package.json +2 -2
  170. package/postinstall.js +1 -1
  171. package/stable/atob.js +9 -0
  172. package/stable/btoa.js +9 -0
  173. package/stable/index.js +2 -0
  174. package/web/index.js +2 -0
package/LICENSE CHANGED
@@ -1,4 +1,4 @@
1
- Copyright (c) 2014-2021 Denis Pushkarev
1
+ Copyright (c) 2014-2022 Denis Pushkarev
2
2
 
3
3
  Permission is hereby granted, free of charge, to any person obtaining a copy
4
4
  of this software and associated documentation files (the "Software"), to deal
package/README.md CHANGED
@@ -1,4 +1,4 @@
1
- ![logo](https://user-images.githubusercontent.com/2213682/140570622-ea744c11-632e-4d9a-ba0a-70c390a1fdff.png)
1
+ ![logo](https://user-images.githubusercontent.com/2213682/146607186-8e13ddef-26a4-4ebf-befd-5aac9d77c090.png)
2
2
 
3
3
  [![Open Collective](https://opencollective.com/core-js/all/badge.svg?label=open%20collective)](https://opencollective.com/core-js) [![version](https://img.shields.io/npm/v/core-js.svg)](https://www.npmjs.com/package/core-js) [![core-js downloads](https://img.shields.io/npm/dm/core-js.svg?label=npm%20i%20core-js)](https://npm-stat.com/charts.html?package=core-js&package=core-js-pure&package=core-js-compat&from=2014-11-18) [![core-js-pure downloads](https://img.shields.io/npm/dm/core-js-pure.svg?label=npm%20i%20core-js-pure)](https://npm-stat.com/charts.html?package=core-js&package=core-js-pure&package=core-js-compat&from=2014-11-18) [![tests](https://github.com/zloirock/core-js/workflows/tests/badge.svg)](https://github.com/zloirock/core-js/actions) [![eslint](https://github.com/zloirock/core-js/workflows/eslint/badge.svg)](https://github.com/zloirock/core-js/actions)
4
4
 
@@ -24,7 +24,7 @@
24
24
 
25
25
  [*Example of usage*](https://is.gd/XD4mRe):
26
26
  ```js
27
- import 'core-js'; // <- at the top of your entry point
27
+ import 'core-js/actual'; // <- at the top of your entry point
28
28
 
29
29
  Array.from(new Set([1, 2, 3, 2, 1])); // => [1, 2, 3]
30
30
  [1, 2, 3, 4, 5].groupBy(it => it % 2); // => { 1: [1, 3, 5], 0: [2, 4] }
@@ -1,4 +1,5 @@
1
1
  require('../../modules/es.map');
2
+ require('../../modules/es.object.to-string');
2
3
  require('../../modules/esnext.array.group-by-to-map');
3
4
  var entryUnbind = require('../../internals/entry-unbind');
4
5
 
@@ -1,5 +1,6 @@
1
1
  var parent = require('../../stable/array');
2
2
  require('../../modules/es.map');
3
+ require('../../modules/es.object.to-string');
3
4
  require('../../modules/esnext.array.find-last');
4
5
  require('../../modules/esnext.array.find-last-index');
5
6
  require('../../modules/esnext.array.group-by');
@@ -1,4 +1,5 @@
1
1
  require('../../../modules/es.map');
2
+ require('../../../modules/es.object.to-string');
2
3
  require('../../../modules/esnext.array.group-by-to-map');
3
4
  var entryVirtual = require('../../../internals/entry-virtual');
4
5
 
@@ -1,5 +1,6 @@
1
1
  var parent = require('../../../stable/array/virtual');
2
2
  require('../../../modules/es.map');
3
+ require('../../../modules/es.object.to-string');
3
4
  require('../../../modules/esnext.array.find-last');
4
5
  require('../../../modules/esnext.array.find-last-index');
5
6
  require('../../../modules/esnext.array.group-by');
package/actual/atob.js ADDED
@@ -0,0 +1,3 @@
1
+ var parent = require('../stable/atob');
2
+
3
+ module.exports = parent;
package/actual/btoa.js ADDED
@@ -0,0 +1,3 @@
1
+ var parent = require('../stable/btoa');
2
+
3
+ module.exports = parent;
@@ -0,0 +1,3 @@
1
+ var parent = require('../actual/atob');
2
+
3
+ module.exports = parent;
@@ -0,0 +1,3 @@
1
+ var parent = require('../actual/btoa');
2
+
3
+ module.exports = parent;
package/features/index.js CHANGED
@@ -380,6 +380,8 @@ require('../modules/esnext.weak-set.add-all');
380
380
  require('../modules/esnext.weak-set.delete-all');
381
381
  require('../modules/esnext.weak-set.from');
382
382
  require('../modules/esnext.weak-set.of');
383
+ require('../modules/web.atob');
384
+ require('../modules/web.btoa');
383
385
  require('../modules/web.dom-collections.for-each');
384
386
  require('../modules/web.dom-collections.iterator');
385
387
  require('../modules/web.dom-exception.constructor');
@@ -30,7 +30,7 @@ var TYPED_ARRAY_TAG = uid('TYPED_ARRAY_TAG');
30
30
  var TYPED_ARRAY_CONSTRUCTOR = uid('TYPED_ARRAY_CONSTRUCTOR');
31
31
  // Fixing native typed arrays in Opera Presto crashes the browser, see #595
32
32
  var NATIVE_ARRAY_BUFFER_VIEWS = NATIVE_ARRAY_BUFFER && !!setPrototypeOf && classof(global.opera) !== 'Opera';
33
- var TYPED_ARRAY_TAG_REQIRED = false;
33
+ var TYPED_ARRAY_TAG_REQUIRED = false;
34
34
  var NAME, Constructor, Prototype;
35
35
 
36
36
  var TypedArrayConstructorsList = {
@@ -81,7 +81,12 @@ var exportTypedArrayMethod = function (KEY, property, forced, options) {
81
81
  var TypedArrayConstructor = global[ARRAY];
82
82
  if (TypedArrayConstructor && hasOwn(TypedArrayConstructor.prototype, KEY)) try {
83
83
  delete TypedArrayConstructor.prototype[KEY];
84
- } catch (error) { /* empty */ }
84
+ } catch (error) {
85
+ // old WebKit bug - some methods are non-configurable
86
+ try {
87
+ TypedArrayConstructor.prototype[KEY] = property;
88
+ } catch (error2) { /* empty */ }
89
+ }
85
90
  }
86
91
  if (!TypedArrayPrototype[KEY] || forced) {
87
92
  redefine(TypedArrayPrototype, KEY, forced ? property
@@ -151,7 +156,7 @@ if (NATIVE_ARRAY_BUFFER_VIEWS && getPrototypeOf(Uint8ClampedArrayPrototype) !==
151
156
  }
152
157
 
153
158
  if (DESCRIPTORS && !hasOwn(TypedArrayPrototype, TO_STRING_TAG)) {
154
- TYPED_ARRAY_TAG_REQIRED = true;
159
+ TYPED_ARRAY_TAG_REQUIRED = true;
155
160
  defineProperty(TypedArrayPrototype, TO_STRING_TAG, { get: function () {
156
161
  return isObject(this) ? this[TYPED_ARRAY_TAG] : undefined;
157
162
  } });
@@ -163,7 +168,7 @@ if (DESCRIPTORS && !hasOwn(TypedArrayPrototype, TO_STRING_TAG)) {
163
168
  module.exports = {
164
169
  NATIVE_ARRAY_BUFFER_VIEWS: NATIVE_ARRAY_BUFFER_VIEWS,
165
170
  TYPED_ARRAY_CONSTRUCTOR: TYPED_ARRAY_CONSTRUCTOR,
166
- TYPED_ARRAY_TAG: TYPED_ARRAY_TAG_REQIRED && TYPED_ARRAY_TAG,
171
+ TYPED_ARRAY_TAG: TYPED_ARRAY_TAG_REQUIRED && TYPED_ARRAY_TAG,
167
172
  aTypedArray: aTypedArray,
168
173
  aTypedArrayConstructor: aTypedArrayConstructor,
169
174
  exportTypedArrayMethod: exportTypedArrayMethod,
@@ -0,0 +1,9 @@
1
+ var itoc = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';
2
+ var ctoi = {};
3
+
4
+ for (var index = 0; index < 66; index++) ctoi[itoc.charAt(index)] = index;
5
+
6
+ module.exports = {
7
+ itoc: itoc,
8
+ ctoi: ctoi
9
+ };
@@ -1,9 +1,10 @@
1
+ var NATIVE_BIND = require('../internals/function-bind-native');
2
+
1
3
  var FunctionPrototype = Function.prototype;
2
4
  var apply = FunctionPrototype.apply;
3
- var bind = FunctionPrototype.bind;
4
5
  var call = FunctionPrototype.call;
5
6
 
6
7
  // eslint-disable-next-line es/no-reflect -- safe
7
- module.exports = typeof Reflect == 'object' && Reflect.apply || (bind ? call.bind(apply) : function () {
8
+ module.exports = typeof Reflect == 'object' && Reflect.apply || (NATIVE_BIND ? call.bind(apply) : function () {
8
9
  return call.apply(apply, arguments);
9
10
  });
@@ -1,12 +1,13 @@
1
1
  var uncurryThis = require('../internals/function-uncurry-this');
2
2
  var aCallable = require('../internals/a-callable');
3
+ var NATIVE_BIND = require('../internals/function-bind-native');
3
4
 
4
5
  var bind = uncurryThis(uncurryThis.bind);
5
6
 
6
7
  // optional / simple context binding
7
8
  module.exports = function (fn, that) {
8
9
  aCallable(fn);
9
- return that === undefined ? fn : bind ? bind(fn, that) : function (/* ...args */) {
10
+ return that === undefined ? fn : NATIVE_BIND ? bind(fn, that) : function (/* ...args */) {
10
11
  return fn.apply(that, arguments);
11
12
  };
12
13
  };
@@ -0,0 +1,7 @@
1
+ var fails = require('../internals/fails');
2
+
3
+ module.exports = !fails(function () {
4
+ var test = (function () { /* empty */ }).bind();
5
+ // eslint-disable-next-line no-prototype-builtins -- safe
6
+ return typeof test != 'function' || test.hasOwnProperty('prototype');
7
+ });
@@ -5,6 +5,7 @@ var aCallable = require('../internals/a-callable');
5
5
  var isObject = require('../internals/is-object');
6
6
  var hasOwn = require('../internals/has-own-property');
7
7
  var arraySlice = require('../internals/array-slice');
8
+ var NATIVE_BIND = require('../internals/function-bind-native');
8
9
 
9
10
  var Function = global.Function;
10
11
  var concat = uncurryThis([].concat);
@@ -20,7 +21,7 @@ var construct = function (C, argsLength, args) {
20
21
 
21
22
  // `Function.prototype.bind` method implementation
22
23
  // https://tc39.es/ecma262/#sec-function.prototype.bind
23
- module.exports = Function.bind || function bind(that /* , ...args */) {
24
+ module.exports = NATIVE_BIND ? Function.bind : function bind(that /* , ...args */) {
24
25
  var F = aCallable(this);
25
26
  var Prototype = F.prototype;
26
27
  var partArgs = arraySlice(arguments, 1);
@@ -1,5 +1,7 @@
1
+ var NATIVE_BIND = require('../internals/function-bind-native');
2
+
1
3
  var call = Function.prototype.call;
2
4
 
3
- module.exports = call.bind ? call.bind(call) : function () {
5
+ module.exports = NATIVE_BIND ? call.bind(call) : function () {
4
6
  return call.apply(call, arguments);
5
7
  };
@@ -1,10 +1,12 @@
1
+ var NATIVE_BIND = require('../internals/function-bind-native');
2
+
1
3
  var FunctionPrototype = Function.prototype;
2
4
  var bind = FunctionPrototype.bind;
3
5
  var call = FunctionPrototype.call;
4
- var callBind = bind && bind.bind(call);
6
+ var uncurryThis = NATIVE_BIND && bind.bind(call, call);
5
7
 
6
- module.exports = bind ? function (fn) {
7
- return fn && callBind(call, fn);
8
+ module.exports = NATIVE_BIND ? function (fn) {
9
+ return fn && uncurryThis(fn);
8
10
  } : function (fn) {
9
11
  return fn && function () {
10
12
  return call.apply(fn, arguments);
@@ -2,9 +2,9 @@ var DESCRIPTORS = require('../internals/descriptors');
2
2
  var fails = require('../internals/fails');
3
3
  var createElement = require('../internals/document-create-element');
4
4
 
5
- // Thank's IE8 for his funny defineProperty
5
+ // Thanks to IE8 for its funny defineProperty
6
6
  module.exports = !DESCRIPTORS && !fails(function () {
7
- // eslint-disable-next-line es/no-object-defineproperty -- requied for testing
7
+ // eslint-disable-next-line es/no-object-defineproperty -- required for testing
8
8
  return Object.defineProperty(createElement('div'), 'a', {
9
9
  get: function () { return 7; }
10
10
  }).a != 7;
@@ -5,6 +5,7 @@ var IS_PURE = require('../internals/is-pure');
5
5
  var ITERATOR = wellKnownSymbol('iterator');
6
6
 
7
7
  module.exports = !fails(function () {
8
+ // eslint-disable-next-line unicorn/relative-url-style -- required for testing
8
9
  var url = new URL('b?a=1&b=2&c=3', 'http://a');
9
10
  var searchParams = url.searchParams;
10
11
  var result = '';
@@ -3,7 +3,7 @@ var global = require('../internals/global');
3
3
  var InternalStateModule = require('../internals/internal-state');
4
4
  var createIteratorConstructor = require('../internals/create-iterator-constructor');
5
5
  var isObject = require('../internals/is-object');
6
- var defineProperties = require('../internals/object-define-properties');
6
+ var defineProperties = require('../internals/object-define-properties').f;
7
7
  var DESCRIPTORS = require('../internals/descriptors');
8
8
 
9
9
  var INCORRECT_RANGE = 'Incorrect Number.range arguments';
@@ -1,6 +1,6 @@
1
1
  /* global ActiveXObject -- old IE, WSH */
2
2
  var anObject = require('../internals/an-object');
3
- var defineProperties = require('../internals/object-define-properties');
3
+ var definePropertiesModule = require('../internals/object-define-properties');
4
4
  var enumBugKeys = require('../internals/enum-bug-keys');
5
5
  var hiddenKeys = require('../internals/hidden-keys');
6
6
  var html = require('../internals/html');
@@ -78,5 +78,5 @@ module.exports = Object.create || function create(O, Properties) {
78
78
  // add "__proto__" for Object.getPrototypeOf polyfill
79
79
  result[IE_PROTO] = O;
80
80
  } else result = NullProtoObject();
81
- return Properties === undefined ? result : defineProperties(result, Properties);
81
+ return Properties === undefined ? result : definePropertiesModule.f(result, Properties);
82
82
  };
@@ -1,4 +1,5 @@
1
1
  var DESCRIPTORS = require('../internals/descriptors');
2
+ var V8_PROTOTYPE_DEFINE_BUG = require('../internals/v8-prototype-define-bug');
2
3
  var definePropertyModule = require('../internals/object-define-property');
3
4
  var anObject = require('../internals/an-object');
4
5
  var toIndexedObject = require('../internals/to-indexed-object');
@@ -7,7 +8,7 @@ var objectKeys = require('../internals/object-keys');
7
8
  // `Object.defineProperties` method
8
9
  // https://tc39.es/ecma262/#sec-object.defineproperties
9
10
  // eslint-disable-next-line es/no-object-defineproperties -- safe
10
- module.exports = DESCRIPTORS ? Object.defineProperties : function defineProperties(O, Properties) {
11
+ exports.f = DESCRIPTORS && !V8_PROTOTYPE_DEFINE_BUG ? Object.defineProperties : function defineProperties(O, Properties) {
11
12
  anObject(O);
12
13
  var props = toIndexedObject(Properties);
13
14
  var keys = objectKeys(Properties);
@@ -1,16 +1,37 @@
1
1
  var global = require('../internals/global');
2
2
  var DESCRIPTORS = require('../internals/descriptors');
3
3
  var IE8_DOM_DEFINE = require('../internals/ie8-dom-define');
4
+ var V8_PROTOTYPE_DEFINE_BUG = require('../internals/v8-prototype-define-bug');
4
5
  var anObject = require('../internals/an-object');
5
6
  var toPropertyKey = require('../internals/to-property-key');
6
7
 
7
8
  var TypeError = global.TypeError;
8
9
  // eslint-disable-next-line es/no-object-defineproperty -- safe
9
10
  var $defineProperty = Object.defineProperty;
11
+ // eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe
12
+ var $getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;
13
+ var ENUMERABLE = 'enumerable';
14
+ var CONFIGURABLE = 'configurable';
15
+ var WRITABLE = 'writable';
10
16
 
11
17
  // `Object.defineProperty` method
12
18
  // https://tc39.es/ecma262/#sec-object.defineproperty
13
- exports.f = DESCRIPTORS ? $defineProperty : function defineProperty(O, P, Attributes) {
19
+ exports.f = DESCRIPTORS ? V8_PROTOTYPE_DEFINE_BUG ? function defineProperty(O, P, Attributes) {
20
+ anObject(O);
21
+ P = toPropertyKey(P);
22
+ anObject(Attributes);
23
+ if (typeof O === 'function' && P === 'prototype' && 'value' in Attributes && WRITABLE in Attributes && !Attributes[WRITABLE]) {
24
+ var current = $getOwnPropertyDescriptor(O, P);
25
+ if (current && current[WRITABLE]) {
26
+ O[P] = Attributes.value;
27
+ Attributes = {
28
+ configurable: CONFIGURABLE in Attributes ? Attributes[CONFIGURABLE] : current[CONFIGURABLE],
29
+ enumerable: ENUMERABLE in Attributes ? Attributes[ENUMERABLE] : current[ENUMERABLE],
30
+ writable: false
31
+ };
32
+ }
33
+ } return $defineProperty(O, P, Attributes);
34
+ } : $defineProperty : function defineProperty(O, P, Attributes) {
14
35
  anObject(O);
15
36
  P = toPropertyKey(P);
16
37
  anObject(Attributes);
@@ -0,0 +1,23 @@
1
+ var Queue = function () {
2
+ this.head = null;
3
+ this.tail = null;
4
+ };
5
+
6
+ Queue.prototype = {
7
+ add: function (item) {
8
+ var entry = { item: item, next: null };
9
+ if (this.head) this.tail.next = entry;
10
+ else this.head = entry;
11
+ this.tail = entry;
12
+ },
13
+ get: function () {
14
+ var entry = this.head;
15
+ if (entry) {
16
+ this.head = entry.next;
17
+ if (this.tail === entry) this.tail = null;
18
+ return entry.item;
19
+ }
20
+ }
21
+ };
22
+
23
+ module.exports = Queue;
@@ -4,7 +4,9 @@ var store = require('../internals/shared-store');
4
4
  (module.exports = function (key, value) {
5
5
  return store[key] || (store[key] = value !== undefined ? value : {});
6
6
  })('versions', []).push({
7
- version: '3.20.0',
7
+ version: '3.21.0',
8
8
  mode: IS_PURE ? 'pure' : 'global',
9
- copyright: '© 2021 Denis Pushkarev (zloirock.ru)'
9
+ copyright: '© 2014-2022 Denis Pushkarev (zloirock.ru)',
10
+ license: 'https://github.com/zloirock/core-js/blob/v3.21.0/LICENSE',
11
+ source: 'https://github.com/zloirock/core-js'
10
12
  });
package/internals/task.js CHANGED
@@ -7,6 +7,7 @@ var fails = require('../internals/fails');
7
7
  var html = require('../internals/html');
8
8
  var arraySlice = require('../internals/array-slice');
9
9
  var createElement = require('../internals/document-create-element');
10
+ var validateArgumentsLength = require('../internals/validate-arguments-length');
10
11
  var IS_IOS = require('../internals/engine-is-ios');
11
12
  var IS_NODE = require('../internals/engine-is-node');
12
13
 
@@ -52,10 +53,12 @@ var post = function (id) {
52
53
 
53
54
  // Node.js 0.9+ & IE10+ has setImmediate, otherwise:
54
55
  if (!set || !clear) {
55
- set = function setImmediate(fn) {
56
+ set = function setImmediate(handler) {
57
+ validateArgumentsLength(arguments.length, 1);
58
+ var fn = isCallable(handler) ? handler : Function(handler);
56
59
  var args = arraySlice(arguments, 1);
57
60
  queue[++counter] = function () {
58
- apply(isCallable(fn) ? fn : Function(fn), undefined, args);
61
+ apply(fn, undefined, args);
59
62
  };
60
63
  defer(counter);
61
64
  return counter;
@@ -0,0 +1,12 @@
1
+ var DESCRIPTORS = require('../internals/descriptors');
2
+ var fails = require('../internals/fails');
3
+
4
+ // V8 ~ Chrome 36-
5
+ // https://bugs.chromium.org/p/v8/issues/detail?id=3334
6
+ module.exports = DESCRIPTORS && fails(function () {
7
+ // eslint-disable-next-line es/no-object-defineproperty -- required for testing
8
+ return Object.defineProperty(function () { /* empty */ }, 'prototype', {
9
+ value: 42,
10
+ writable: false
11
+ }).prototype != 42;
12
+ });
@@ -0,0 +1,8 @@
1
+ var global = require('../internals/global');
2
+
3
+ var TypeError = global.TypeError;
4
+
5
+ module.exports = function (passed, required) {
6
+ if (passed < required) throw TypeError('Not enough arguments');
7
+ return passed;
8
+ };
@@ -3,6 +3,6 @@ var bind = require('../internals/function-bind');
3
3
 
4
4
  // `Function.prototype.bind` method
5
5
  // https://tc39.es/ecma262/#sec-function.prototype.bind
6
- $({ target: 'Function', proto: true }, {
6
+ $({ target: 'Function', proto: true, forced: Function.bind !== bind }, {
7
7
  bind: bind
8
8
  });
@@ -1,9 +1,10 @@
1
1
  var $ = require('../internals/export');
2
2
  var DESCRIPTORS = require('../internals/descriptors');
3
- var defineProperties = require('../internals/object-define-properties');
3
+ var defineProperties = require('../internals/object-define-properties').f;
4
4
 
5
5
  // `Object.defineProperties` method
6
6
  // https://tc39.es/ecma262/#sec-object.defineproperties
7
- $({ target: 'Object', stat: true, forced: !DESCRIPTORS, sham: !DESCRIPTORS }, {
7
+ // eslint-disable-next-line es/no-object-defineproperties -- safe
8
+ $({ target: 'Object', stat: true, forced: Object.defineProperties !== defineProperties, sham: !DESCRIPTORS }, {
8
9
  defineProperties: defineProperties
9
10
  });
@@ -1,9 +1,10 @@
1
1
  var $ = require('../internals/export');
2
2
  var DESCRIPTORS = require('../internals/descriptors');
3
- var objectDefinePropertyModile = require('../internals/object-define-property');
3
+ var defineProperty = require('../internals/object-define-property').f;
4
4
 
5
5
  // `Object.defineProperty` method
6
6
  // https://tc39.es/ecma262/#sec-object.defineproperty
7
- $({ target: 'Object', stat: true, forced: !DESCRIPTORS, sham: !DESCRIPTORS }, {
8
- defineProperty: objectDefinePropertyModile.f
7
+ // eslint-disable-next-line es/no-object-defineproperty -- safe
8
+ $({ target: 'Object', stat: true, forced: Object.defineProperty !== defineProperty, sham: !DESCRIPTORS }, {
9
+ defineProperty: defineProperty
9
10
  });
@@ -11,6 +11,7 @@ var redefine = require('../internals/redefine');
11
11
 
12
12
  // Safari bug https://bugs.webkit.org/show_bug.cgi?id=200829
13
13
  var NON_GENERIC = !!NativePromise && fails(function () {
14
+ // eslint-disable-next-line unicorn/no-thenable -- required for testing
14
15
  NativePromise.prototype['finally'].call({ then: function () { /* empty */ } }, function () { /* empty */ });
15
16
  });
16
17
 
@@ -24,6 +24,7 @@ var promiseResolve = require('../internals/promise-resolve');
24
24
  var hostReportErrors = require('../internals/host-report-errors');
25
25
  var newPromiseCapabilityModule = require('../internals/new-promise-capability');
26
26
  var perform = require('../internals/perform');
27
+ var Queue = require('../internals/queue');
27
28
  var InternalStateModule = require('../internals/internal-state');
28
29
  var isForced = require('../internals/is-forced');
29
30
  var wellKnownSymbol = require('../internals/well-known-symbol');
@@ -95,49 +96,50 @@ var isThenable = function (it) {
95
96
  return isObject(it) && isCallable(then = it.then) ? then : false;
96
97
  };
97
98
 
99
+ var callReaction = function (reaction, state) {
100
+ var value = state.value;
101
+ var ok = state.state == FULFILLED;
102
+ var handler = ok ? reaction.ok : reaction.fail;
103
+ var resolve = reaction.resolve;
104
+ var reject = reaction.reject;
105
+ var domain = reaction.domain;
106
+ var result, then, exited;
107
+ try {
108
+ if (handler) {
109
+ if (!ok) {
110
+ if (state.rejection === UNHANDLED) onHandleUnhandled(state);
111
+ state.rejection = HANDLED;
112
+ }
113
+ if (handler === true) result = value;
114
+ else {
115
+ if (domain) domain.enter();
116
+ result = handler(value); // can throw
117
+ if (domain) {
118
+ domain.exit();
119
+ exited = true;
120
+ }
121
+ }
122
+ if (result === reaction.promise) {
123
+ reject(TypeError('Promise-chain cycle'));
124
+ } else if (then = isThenable(result)) {
125
+ call(then, result, resolve, reject);
126
+ } else resolve(result);
127
+ } else reject(value);
128
+ } catch (error) {
129
+ if (domain && !exited) domain.exit();
130
+ reject(error);
131
+ }
132
+ };
133
+
98
134
  var notify = function (state, isReject) {
99
135
  if (state.notified) return;
100
136
  state.notified = true;
101
- var chain = state.reactions;
102
137
  microtask(function () {
103
- var value = state.value;
104
- var ok = state.state == FULFILLED;
105
- var index = 0;
106
- // variable length - can't use forEach
107
- while (chain.length > index) {
108
- var reaction = chain[index++];
109
- var handler = ok ? reaction.ok : reaction.fail;
110
- var resolve = reaction.resolve;
111
- var reject = reaction.reject;
112
- var domain = reaction.domain;
113
- var result, then, exited;
114
- try {
115
- if (handler) {
116
- if (!ok) {
117
- if (state.rejection === UNHANDLED) onHandleUnhandled(state);
118
- state.rejection = HANDLED;
119
- }
120
- if (handler === true) result = value;
121
- else {
122
- if (domain) domain.enter();
123
- result = handler(value); // can throw
124
- if (domain) {
125
- domain.exit();
126
- exited = true;
127
- }
128
- }
129
- if (result === reaction.promise) {
130
- reject(TypeError('Promise-chain cycle'));
131
- } else if (then = isThenable(result)) {
132
- call(then, result, resolve, reject);
133
- } else resolve(result);
134
- } else reject(value);
135
- } catch (error) {
136
- if (domain && !exited) domain.exit();
137
- reject(error);
138
- }
138
+ var reactions = state.reactions;
139
+ var reaction;
140
+ while (reaction = reactions.get()) {
141
+ callReaction(reaction, state);
139
142
  }
140
- state.reactions = [];
141
143
  state.notified = false;
142
144
  if (isReject && !state.rejection) onUnhandled(state);
143
145
  });
@@ -254,7 +256,7 @@ if (FORCED) {
254
256
  done: false,
255
257
  notified: false,
256
258
  parent: false,
257
- reactions: [],
259
+ reactions: new Queue(),
258
260
  rejection: false,
259
261
  state: PENDING,
260
262
  value: undefined
@@ -263,16 +265,18 @@ if (FORCED) {
263
265
  Internal.prototype = redefineAll(PromisePrototype, {
264
266
  // `Promise.prototype.then` method
265
267
  // https://tc39.es/ecma262/#sec-promise.prototype.then
268
+ // eslint-disable-next-line unicorn/no-thenable -- safe
266
269
  then: function then(onFulfilled, onRejected) {
267
270
  var state = getInternalPromiseState(this);
268
- var reactions = state.reactions;
269
271
  var reaction = newPromiseCapability(speciesConstructor(this, PromiseConstructor));
272
+ state.parent = true;
270
273
  reaction.ok = isCallable(onFulfilled) ? onFulfilled : true;
271
274
  reaction.fail = isCallable(onRejected) && onRejected;
272
275
  reaction.domain = IS_NODE ? process.domain : undefined;
273
- state.parent = true;
274
- reactions[reactions.length] = reaction;
275
- if (state.state != PENDING) notify(state, false);
276
+ if (state.state == PENDING) state.reactions.add(reaction);
277
+ else microtask(function () {
278
+ callReaction(reaction, state);
279
+ });
276
280
  return reaction.promise;
277
281
  },
278
282
  // `Promise.prototype.catch` method
@@ -28,6 +28,7 @@ var getOwnPropertyNamesExternal = require('../internals/object-get-own-property-
28
28
  var getOwnPropertySymbolsModule = require('../internals/object-get-own-property-symbols');
29
29
  var getOwnPropertyDescriptorModule = require('../internals/object-get-own-property-descriptor');
30
30
  var definePropertyModule = require('../internals/object-define-property');
31
+ var definePropertiesModule = require('../internals/object-define-properties');
31
32
  var propertyIsEnumerableModule = require('../internals/object-property-is-enumerable');
32
33
  var arraySlice = require('../internals/array-slice');
33
34
  var redefine = require('../internals/redefine');
@@ -194,6 +195,7 @@ if (!NATIVE_SYMBOL) {
194
195
 
195
196
  propertyIsEnumerableModule.f = $propertyIsEnumerable;
196
197
  definePropertyModule.f = $defineProperty;
198
+ definePropertiesModule.f = $defineProperties;
197
199
  getOwnPropertyDescriptorModule.f = $getOwnPropertyDescriptor;
198
200
  getOwnPropertyNamesModule.f = getOwnPropertyNamesExternal.f = $getOwnPropertyNames;
199
201
  getOwnPropertySymbolsModule.f = $getOwnPropertySymbols;