core-js 3.20.1 → 3.21.1

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 (170) hide show
  1. package/LICENSE +1 -1
  2. package/actual/atob.js +3 -0
  3. package/actual/btoa.js +3 -0
  4. package/features/atob.js +3 -0
  5. package/features/btoa.js +3 -0
  6. package/features/index.js +2 -0
  7. package/internals/array-buffer-view-core.js +6 -1
  8. package/internals/array-method-is-strict.js +2 -2
  9. package/internals/base64-map.js +9 -0
  10. package/internals/function-apply.js +3 -2
  11. package/internals/function-bind-context.js +2 -1
  12. package/internals/function-bind-native.js +7 -0
  13. package/internals/function-bind.js +2 -1
  14. package/internals/function-call.js +3 -1
  15. package/internals/function-uncurry-this.js +5 -3
  16. package/internals/ie8-dom-define.js +1 -1
  17. package/internals/native-url.js +1 -0
  18. package/internals/numeric-range-iterator.js +1 -1
  19. package/internals/object-create.js +2 -2
  20. package/internals/object-define-properties.js +2 -1
  21. package/internals/object-define-property.js +22 -1
  22. package/internals/shared.js +4 -2
  23. package/internals/task.js +5 -2
  24. package/internals/v8-prototype-define-bug.js +12 -0
  25. package/internals/validate-arguments-length.js +8 -0
  26. package/modules/es.function.bind.js +1 -1
  27. package/modules/es.object.define-properties.js +3 -2
  28. package/modules/es.object.define-property.js +4 -3
  29. package/modules/es.promise.finally.js +1 -0
  30. package/modules/es.promise.js +1 -0
  31. package/modules/es.symbol.js +2 -0
  32. package/modules/es.typed-array.set.js +20 -5
  33. package/modules/esnext.array.filter-out.js +1 -1
  34. package/modules/esnext.array.filter-reject.js +1 -1
  35. package/modules/esnext.array.from-async.js +1 -1
  36. package/modules/esnext.array.group-by-to-map.js +3 -1
  37. package/modules/esnext.array.group-by.js +3 -1
  38. package/modules/esnext.array.is-template-object.js +1 -1
  39. package/modules/esnext.array.last-index.js +1 -1
  40. package/modules/esnext.array.last-item.js +1 -1
  41. package/modules/esnext.array.to-reversed.js +1 -1
  42. package/modules/esnext.array.to-sorted.js +1 -1
  43. package/modules/esnext.array.to-spliced.js +1 -1
  44. package/modules/esnext.array.unique-by.js +1 -1
  45. package/modules/esnext.array.with.js +1 -1
  46. package/modules/esnext.async-iterator.as-indexed-pairs.js +1 -1
  47. package/modules/esnext.async-iterator.drop.js +1 -1
  48. package/modules/esnext.async-iterator.every.js +1 -1
  49. package/modules/esnext.async-iterator.filter.js +1 -1
  50. package/modules/esnext.async-iterator.find.js +1 -1
  51. package/modules/esnext.async-iterator.flat-map.js +1 -1
  52. package/modules/esnext.async-iterator.for-each.js +1 -1
  53. package/modules/esnext.async-iterator.from.js +1 -1
  54. package/modules/esnext.async-iterator.map.js +1 -1
  55. package/modules/esnext.async-iterator.reduce.js +1 -1
  56. package/modules/esnext.async-iterator.some.js +1 -1
  57. package/modules/esnext.async-iterator.take.js +1 -1
  58. package/modules/esnext.async-iterator.to-array.js +1 -1
  59. package/modules/esnext.bigint.range.js +1 -1
  60. package/modules/esnext.composite-key.js +1 -1
  61. package/modules/esnext.composite-symbol.js +1 -1
  62. package/modules/esnext.function.is-callable.js +1 -1
  63. package/modules/esnext.function.is-constructor.js +1 -1
  64. package/modules/esnext.function.un-this.js +1 -1
  65. package/modules/esnext.iterator.as-indexed-pairs.js +1 -1
  66. package/modules/esnext.iterator.drop.js +1 -1
  67. package/modules/esnext.iterator.every.js +1 -1
  68. package/modules/esnext.iterator.filter.js +1 -1
  69. package/modules/esnext.iterator.find.js +1 -1
  70. package/modules/esnext.iterator.flat-map.js +1 -1
  71. package/modules/esnext.iterator.for-each.js +1 -1
  72. package/modules/esnext.iterator.from.js +1 -1
  73. package/modules/esnext.iterator.map.js +1 -1
  74. package/modules/esnext.iterator.reduce.js +1 -1
  75. package/modules/esnext.iterator.some.js +1 -1
  76. package/modules/esnext.iterator.take.js +1 -1
  77. package/modules/esnext.iterator.to-array.js +1 -1
  78. package/modules/esnext.iterator.to-async.js +1 -1
  79. package/modules/esnext.map.delete-all.js +1 -2
  80. package/modules/esnext.map.emplace.js +1 -2
  81. package/modules/esnext.map.every.js +1 -2
  82. package/modules/esnext.map.filter.js +1 -2
  83. package/modules/esnext.map.find-key.js +1 -2
  84. package/modules/esnext.map.find.js +1 -2
  85. package/modules/esnext.map.from.js +1 -1
  86. package/modules/esnext.map.group-by.js +1 -1
  87. package/modules/esnext.map.includes.js +1 -2
  88. package/modules/esnext.map.key-by.js +1 -1
  89. package/modules/esnext.map.key-of.js +1 -2
  90. package/modules/esnext.map.map-keys.js +1 -2
  91. package/modules/esnext.map.map-values.js +1 -2
  92. package/modules/esnext.map.merge.js +1 -2
  93. package/modules/esnext.map.of.js +1 -1
  94. package/modules/esnext.map.reduce.js +1 -2
  95. package/modules/esnext.map.some.js +1 -2
  96. package/modules/esnext.map.update-or-insert.js +1 -2
  97. package/modules/esnext.map.update.js +1 -2
  98. package/modules/esnext.map.upsert.js +1 -2
  99. package/modules/esnext.math.clamp.js +1 -1
  100. package/modules/esnext.math.deg-per-rad.js +1 -1
  101. package/modules/esnext.math.degrees.js +1 -1
  102. package/modules/esnext.math.fscale.js +1 -1
  103. package/modules/esnext.math.iaddh.js +1 -1
  104. package/modules/esnext.math.imulh.js +1 -1
  105. package/modules/esnext.math.isubh.js +1 -1
  106. package/modules/esnext.math.rad-per-deg.js +1 -1
  107. package/modules/esnext.math.radians.js +1 -1
  108. package/modules/esnext.math.scale.js +1 -1
  109. package/modules/esnext.math.signbit.js +1 -1
  110. package/modules/esnext.math.umulh.js +1 -1
  111. package/modules/esnext.number.from-string.js +1 -1
  112. package/modules/esnext.number.range.js +1 -1
  113. package/modules/esnext.object.iterate-entries.js +1 -1
  114. package/modules/esnext.object.iterate-keys.js +1 -1
  115. package/modules/esnext.object.iterate-values.js +1 -1
  116. package/modules/esnext.observable.js +9 -1
  117. package/modules/esnext.promise.try.js +1 -1
  118. package/modules/esnext.set.add-all.js +1 -2
  119. package/modules/esnext.set.delete-all.js +1 -2
  120. package/modules/esnext.set.difference.js +1 -2
  121. package/modules/esnext.set.every.js +1 -2
  122. package/modules/esnext.set.filter.js +1 -2
  123. package/modules/esnext.set.find.js +1 -2
  124. package/modules/esnext.set.from.js +1 -1
  125. package/modules/esnext.set.intersection.js +1 -2
  126. package/modules/esnext.set.is-disjoint-from.js +1 -2
  127. package/modules/esnext.set.is-subset-of.js +1 -2
  128. package/modules/esnext.set.is-superset-of.js +1 -2
  129. package/modules/esnext.set.join.js +1 -2
  130. package/modules/esnext.set.map.js +1 -2
  131. package/modules/esnext.set.of.js +1 -1
  132. package/modules/esnext.set.reduce.js +1 -2
  133. package/modules/esnext.set.some.js +1 -2
  134. package/modules/esnext.set.symmetric-difference.js +1 -2
  135. package/modules/esnext.set.union.js +1 -2
  136. package/modules/esnext.string.at.js +1 -6
  137. package/modules/esnext.string.code-points.js +1 -1
  138. package/modules/esnext.string.cooked.js +1 -1
  139. package/modules/esnext.typed-array.filter-out.js +1 -1
  140. package/modules/esnext.typed-array.filter-reject.js +1 -1
  141. package/modules/esnext.typed-array.from-async.js +1 -2
  142. package/modules/esnext.typed-array.group-by.js +1 -1
  143. package/modules/esnext.typed-array.to-reversed.js +1 -1
  144. package/modules/esnext.typed-array.to-sorted.js +1 -1
  145. package/modules/esnext.typed-array.to-spliced.js +1 -1
  146. package/modules/esnext.typed-array.unique-by.js +1 -1
  147. package/modules/esnext.typed-array.with.js +1 -1
  148. package/modules/esnext.weak-map.delete-all.js +1 -2
  149. package/modules/esnext.weak-map.emplace.js +1 -2
  150. package/modules/esnext.weak-map.from.js +1 -1
  151. package/modules/esnext.weak-map.of.js +1 -1
  152. package/modules/esnext.weak-map.upsert.js +1 -2
  153. package/modules/esnext.weak-set.add-all.js +1 -2
  154. package/modules/esnext.weak-set.delete-all.js +1 -2
  155. package/modules/esnext.weak-set.from.js +1 -1
  156. package/modules/esnext.weak-set.of.js +1 -1
  157. package/modules/web.atob.js +52 -0
  158. package/modules/web.btoa.js +37 -0
  159. package/modules/web.dom-exception.constructor.js +1 -1
  160. package/modules/web.queue-microtask.js +4 -0
  161. package/modules/web.structured-clone.js +2 -1
  162. package/modules/web.timers.js +5 -3
  163. package/modules/web.url-search-params.js +1 -4
  164. package/modules/web.url.js +3 -2
  165. package/package.json +2 -2
  166. package/postinstall.js +1 -1
  167. package/stable/atob.js +9 -0
  168. package/stable/btoa.js +9 -0
  169. package/stable/index.js +2 -0
  170. 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/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');
@@ -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
@@ -4,7 +4,7 @@ var fails = require('../internals/fails');
4
4
  module.exports = function (METHOD_NAME, argument) {
5
5
  var method = [][METHOD_NAME];
6
6
  return !!method && fails(function () {
7
- // eslint-disable-next-line no-useless-call,no-throw-literal -- required for testing
8
- method.call(null, argument || function () { throw 1; }, 1);
7
+ // eslint-disable-next-line no-useless-call -- required for testing
8
+ method.call(null, argument || function () { return 1; }, 1);
9
9
  });
10
10
  };
@@ -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,7 +2,7 @@ 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
7
  // eslint-disable-next-line es/no-object-defineproperty -- required for testing
8
8
  return Object.defineProperty(createElement('div'), 'a', {
@@ -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);
@@ -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.1',
7
+ version: '3.21.1',
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.1/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 objectDefinePropertyModule = 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: objectDefinePropertyModule.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
 
@@ -265,6 +265,7 @@ if (FORCED) {
265
265
  Internal.prototype = redefineAll(PromisePrototype, {
266
266
  // `Promise.prototype.then` method
267
267
  // https://tc39.es/ecma262/#sec-promise.prototype.then
268
+ // eslint-disable-next-line unicorn/no-thenable -- safe
268
269
  then: function then(onFulfilled, onRejected) {
269
270
  var state = getInternalPromiseState(this);
270
271
  var reaction = newPromiseCapability(speciesConstructor(this, PromiseConstructor));
@@ -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;
@@ -1,18 +1,32 @@
1
1
  'use strict';
2
2
  var global = require('../internals/global');
3
+ var call = require('../internals/function-call');
3
4
  var ArrayBufferViewCore = require('../internals/array-buffer-view-core');
4
5
  var lengthOfArrayLike = require('../internals/length-of-array-like');
5
6
  var toOffset = require('../internals/to-offset');
6
- var toObject = require('../internals/to-object');
7
+ var toIndexedObject = require('../internals/to-object');
7
8
  var fails = require('../internals/fails');
8
9
 
9
10
  var RangeError = global.RangeError;
11
+ var Int8Array = global.Int8Array;
12
+ var Int8ArrayPrototype = Int8Array && Int8Array.prototype;
13
+ var $set = Int8ArrayPrototype && Int8ArrayPrototype.set;
10
14
  var aTypedArray = ArrayBufferViewCore.aTypedArray;
11
15
  var exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;
12
16
 
13
- var FORCED = fails(function () {
17
+ var WORKS_WITH_OBJECTS_AND_GEERIC_ON_TYPED_ARRAYS = !fails(function () {
14
18
  // eslint-disable-next-line es/no-typed-arrays -- required for testing
15
- new Int8Array(1).set({});
19
+ var array = new Uint8ClampedArray(2);
20
+ call($set, array, { length: 1, 0: 3 }, 1);
21
+ return array[1] !== 3;
22
+ });
23
+
24
+ // https://bugs.chromium.org/p/v8/issues/detail?id=11294 and other
25
+ var TO_OBJECT_BUG = WORKS_WITH_OBJECTS_AND_GEERIC_ON_TYPED_ARRAYS && ArrayBufferViewCore.NATIVE_ARRAY_BUFFER_VIEWS && fails(function () {
26
+ var array = new Int8Array(2);
27
+ array.set(1);
28
+ array.set('2', 1);
29
+ return array[0] !== 0 || array[1] !== 2;
16
30
  });
17
31
 
18
32
  // `%TypedArray%.prototype.set` method
@@ -20,10 +34,11 @@ var FORCED = fails(function () {
20
34
  exportTypedArrayMethod('set', function set(arrayLike /* , offset */) {
21
35
  aTypedArray(this);
22
36
  var offset = toOffset(arguments.length > 1 ? arguments[1] : undefined, 1);
37
+ var src = toIndexedObject(arrayLike);
38
+ if (WORKS_WITH_OBJECTS_AND_GEERIC_ON_TYPED_ARRAYS) return call($set, this, src, offset);
23
39
  var length = this.length;
24
- var src = toObject(arrayLike);
25
40
  var len = lengthOfArrayLike(src);
26
41
  var index = 0;
27
42
  if (len + offset > length) throw RangeError('Wrong length');
28
43
  while (index < len) this[offset + index] = src[index++];
29
- }, FORCED);
44
+ }, !WORKS_WITH_OBJECTS_AND_GEERIC_ON_TYPED_ARRAYS || TO_OBJECT_BUG);
@@ -6,7 +6,7 @@ var addToUnscopables = require('../internals/add-to-unscopables');
6
6
 
7
7
  // `Array.prototype.filterOut` method
8
8
  // https://github.com/tc39/proposal-array-filtering
9
- $({ target: 'Array', proto: true }, {
9
+ $({ target: 'Array', proto: true, forced: true }, {
10
10
  filterOut: function filterOut(callbackfn /* , thisArg */) {
11
11
  return $filterReject(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);
12
12
  }
@@ -5,7 +5,7 @@ var addToUnscopables = require('../internals/add-to-unscopables');
5
5
 
6
6
  // `Array.prototype.filterReject` method
7
7
  // https://github.com/tc39/proposal-array-filtering
8
- $({ target: 'Array', proto: true }, {
8
+ $({ target: 'Array', proto: true, forced: true }, {
9
9
  filterReject: function filterReject(callbackfn /* , thisArg */) {
10
10
  return $filterReject(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);
11
11
  }
@@ -3,6 +3,6 @@ var fromAsync = require('../internals/array-from-async');
3
3
 
4
4
  // `Array.fromAsync` method
5
5
  // https://github.com/tc39/proposal-array-from-async
6
- $({ target: 'Array', stat: true }, {
6
+ $({ target: 'Array', stat: true, forced: true }, {
7
7
  fromAsync: fromAsync
8
8
  });
@@ -6,6 +6,7 @@ var uncurryThis = require('../internals/function-uncurry-this');
6
6
  var IndexedObject = require('../internals/indexed-object');
7
7
  var toObject = require('../internals/to-object');
8
8
  var lengthOfArrayLike = require('../internals/length-of-array-like');
9
+ var arrayMethodIsStrict = require('../internals/array-method-is-strict');
9
10
  var addToUnscopables = require('../internals/add-to-unscopables');
10
11
 
11
12
  var Map = getBuiltIn('Map');
@@ -17,7 +18,8 @@ var push = uncurryThis([].push);
17
18
 
18
19
  // `Array.prototype.groupByToMap` method
19
20
  // https://github.com/tc39/proposal-array-grouping
20
- $({ target: 'Array', proto: true }, {
21
+ // https://bugs.webkit.org/show_bug.cgi?id=236541
22
+ $({ target: 'Array', proto: true, forced: !arrayMethodIsStrict('groupByToMap') }, {
21
23
  groupByToMap: function groupByToMap(callbackfn /* , thisArg */) {
22
24
  var O = toObject(this);
23
25
  var self = IndexedObject(O);
@@ -1,11 +1,13 @@
1
1
  'use strict';
2
2
  var $ = require('../internals/export');
3
3
  var $groupBy = require('../internals/array-group-by');
4
+ var arrayMethodIsStrict = require('../internals/array-method-is-strict');
4
5
  var addToUnscopables = require('../internals/add-to-unscopables');
5
6
 
6
7
  // `Array.prototype.groupBy` method
7
8
  // https://github.com/tc39/proposal-array-grouping
8
- $({ target: 'Array', proto: true }, {
9
+ // https://bugs.webkit.org/show_bug.cgi?id=236541
10
+ $({ target: 'Array', proto: true, forced: !arrayMethodIsStrict('groupBy') }, {
9
11
  groupBy: function groupBy(callbackfn /* , thisArg */) {
10
12
  var thisArg = arguments.length > 1 ? arguments[1] : undefined;
11
13
  return $groupBy(this, callbackfn, thisArg);
@@ -19,7 +19,7 @@ var isFrozenStringArray = function (array, allowUndefined) {
19
19
 
20
20
  // `Array.isTemplateObject` method
21
21
  // https://github.com/tc39/proposal-array-is-template-object
22
- $({ target: 'Array', stat: true }, {
22
+ $({ target: 'Array', stat: true, sham: true, forced: true }, {
23
23
  isTemplateObject: function isTemplateObject(value) {
24
24
  if (!isFrozenStringArray(value, true)) return false;
25
25
  var raw = value.raw;
@@ -7,7 +7,7 @@ var defineProperty = require('../internals/object-define-property').f;
7
7
 
8
8
  // `Array.prototype.lastIndex` getter
9
9
  // https://github.com/keithamus/proposal-array-last
10
- if (DESCRIPTORS && !('lastIndex' in [])) {
10
+ if (DESCRIPTORS) {
11
11
  defineProperty(Array.prototype, 'lastIndex', {
12
12
  configurable: true,
13
13
  get: function lastIndex() {
@@ -7,7 +7,7 @@ var defineProperty = require('../internals/object-define-property').f;
7
7
 
8
8
  // `Array.prototype.lastIndex` accessor
9
9
  // https://github.com/keithamus/proposal-array-last
10
- if (DESCRIPTORS && !('lastItem' in [])) {
10
+ if (DESCRIPTORS) {
11
11
  defineProperty(Array.prototype, 'lastItem', {
12
12
  configurable: true,
13
13
  get: function lastItem() {
@@ -9,7 +9,7 @@ var Array = global.Array;
9
9
 
10
10
  // `Array.prototype.toReversed` method
11
11
  // https://tc39.es/proposal-change-array-by-copy/#sec-array.prototype.toReversed
12
- $({ target: 'Array', proto: true }, {
12
+ $({ target: 'Array', proto: true, forced: true }, {
13
13
  toReversed: function toReversed() {
14
14
  return arrayToReversed(toIndexedObject(this), Array);
15
15
  }
@@ -13,7 +13,7 @@ var sort = uncurryThis(getVirtual('Array').sort);
13
13
 
14
14
  // `Array.prototype.toSorted` method
15
15
  // https://tc39.es/proposal-change-array-by-copy/#sec-array.prototype.toSorted
16
- $({ target: 'Array', proto: true }, {
16
+ $({ target: 'Array', proto: true, forced: true }, {
17
17
  toSorted: function toSorted(compareFn) {
18
18
  if (compareFn !== undefined) aCallable(compareFn);
19
19
  var O = toIndexedObject(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, forced: true }, {
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));
@@ -5,7 +5,7 @@ var uniqueBy = require('../internals/array-unique-by');
5
5
 
6
6
  // `Array.prototype.uniqueBy` method
7
7
  // https://github.com/tc39/proposal-array-unique
8
- $({ target: 'Array', proto: true }, {
8
+ $({ target: 'Array', proto: true, forced: true }, {
9
9
  uniqueBy: uniqueBy
10
10
  });
11
11
 
@@ -8,7 +8,7 @@ var Array = global.Array;
8
8
 
9
9
  // `Array.prototype.with` method
10
10
  // https://tc39.es/proposal-change-array-by-copy/#sec-array.prototype.with
11
- $({ target: 'Array', proto: true }, {
11
+ $({ target: 'Array', proto: true, forced: true }, {
12
12
  'with': function (index, value) {
13
13
  return arrayWith(toIndexedObject(this), Array, index, value);
14
14
  }
@@ -18,7 +18,7 @@ var AsyncIteratorProxy = createAsyncIteratorProxy(function (Promise, args) {
18
18
  });
19
19
  });
20
20
 
21
- $({ target: 'AsyncIterator', proto: true, real: true }, {
21
+ $({ target: 'AsyncIterator', proto: true, real: true, forced: true }, {
22
22
  asIndexedPairs: function asIndexedPairs() {
23
23
  return new AsyncIteratorProxy({
24
24
  iterator: anObject(this),
@@ -32,7 +32,7 @@ var AsyncIteratorProxy = createAsyncIteratorProxy(function (Promise, args) {
32
32
  });
33
33
  });
34
34
 
35
- $({ target: 'AsyncIterator', proto: true, real: true }, {
35
+ $({ target: 'AsyncIterator', proto: true, real: true, forced: true }, {
36
36
  drop: function drop(limit) {
37
37
  return new AsyncIteratorProxy({
38
38
  iterator: anObject(this),
@@ -3,7 +3,7 @@
3
3
  var $ = require('../internals/export');
4
4
  var $every = require('../internals/async-iterator-iteration').every;
5
5
 
6
- $({ target: 'AsyncIterator', proto: true, real: true }, {
6
+ $({ target: 'AsyncIterator', proto: true, real: true, forced: true }, {
7
7
  every: function every(fn) {
8
8
  return $every(this, fn);
9
9
  }