core-js 3.20.3 → 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 (140) hide show
  1. package/actual/atob.js +3 -0
  2. package/actual/btoa.js +3 -0
  3. package/features/atob.js +3 -0
  4. package/features/btoa.js +3 -0
  5. package/features/index.js +2 -0
  6. package/internals/base64-map.js +9 -0
  7. package/internals/shared.js +2 -2
  8. package/internals/task.js +5 -2
  9. package/modules/esnext.array.filter-out.js +1 -1
  10. package/modules/esnext.array.filter-reject.js +1 -1
  11. package/modules/esnext.array.from-async.js +1 -1
  12. package/modules/esnext.array.is-template-object.js +1 -1
  13. package/modules/esnext.array.last-index.js +1 -1
  14. package/modules/esnext.array.last-item.js +1 -1
  15. package/modules/esnext.array.to-reversed.js +1 -1
  16. package/modules/esnext.array.to-sorted.js +1 -1
  17. package/modules/esnext.array.to-spliced.js +1 -1
  18. package/modules/esnext.array.unique-by.js +1 -1
  19. package/modules/esnext.array.with.js +1 -1
  20. package/modules/esnext.async-iterator.as-indexed-pairs.js +1 -1
  21. package/modules/esnext.async-iterator.drop.js +1 -1
  22. package/modules/esnext.async-iterator.every.js +1 -1
  23. package/modules/esnext.async-iterator.filter.js +1 -1
  24. package/modules/esnext.async-iterator.find.js +1 -1
  25. package/modules/esnext.async-iterator.flat-map.js +1 -1
  26. package/modules/esnext.async-iterator.for-each.js +1 -1
  27. package/modules/esnext.async-iterator.from.js +1 -1
  28. package/modules/esnext.async-iterator.map.js +1 -1
  29. package/modules/esnext.async-iterator.reduce.js +1 -1
  30. package/modules/esnext.async-iterator.some.js +1 -1
  31. package/modules/esnext.async-iterator.take.js +1 -1
  32. package/modules/esnext.async-iterator.to-array.js +1 -1
  33. package/modules/esnext.bigint.range.js +1 -1
  34. package/modules/esnext.composite-key.js +1 -1
  35. package/modules/esnext.composite-symbol.js +1 -1
  36. package/modules/esnext.function.is-callable.js +1 -1
  37. package/modules/esnext.function.is-constructor.js +1 -1
  38. package/modules/esnext.function.un-this.js +1 -1
  39. package/modules/esnext.iterator.as-indexed-pairs.js +1 -1
  40. package/modules/esnext.iterator.drop.js +1 -1
  41. package/modules/esnext.iterator.every.js +1 -1
  42. package/modules/esnext.iterator.filter.js +1 -1
  43. package/modules/esnext.iterator.find.js +1 -1
  44. package/modules/esnext.iterator.flat-map.js +1 -1
  45. package/modules/esnext.iterator.for-each.js +1 -1
  46. package/modules/esnext.iterator.from.js +1 -1
  47. package/modules/esnext.iterator.map.js +1 -1
  48. package/modules/esnext.iterator.reduce.js +1 -1
  49. package/modules/esnext.iterator.some.js +1 -1
  50. package/modules/esnext.iterator.take.js +1 -1
  51. package/modules/esnext.iterator.to-array.js +1 -1
  52. package/modules/esnext.iterator.to-async.js +1 -1
  53. package/modules/esnext.map.delete-all.js +1 -2
  54. package/modules/esnext.map.emplace.js +1 -2
  55. package/modules/esnext.map.every.js +1 -2
  56. package/modules/esnext.map.filter.js +1 -2
  57. package/modules/esnext.map.find-key.js +1 -2
  58. package/modules/esnext.map.find.js +1 -2
  59. package/modules/esnext.map.from.js +1 -1
  60. package/modules/esnext.map.group-by.js +1 -1
  61. package/modules/esnext.map.includes.js +1 -2
  62. package/modules/esnext.map.key-by.js +1 -1
  63. package/modules/esnext.map.key-of.js +1 -2
  64. package/modules/esnext.map.map-keys.js +1 -2
  65. package/modules/esnext.map.map-values.js +1 -2
  66. package/modules/esnext.map.merge.js +1 -2
  67. package/modules/esnext.map.of.js +1 -1
  68. package/modules/esnext.map.reduce.js +1 -2
  69. package/modules/esnext.map.some.js +1 -2
  70. package/modules/esnext.map.update-or-insert.js +1 -2
  71. package/modules/esnext.map.update.js +1 -2
  72. package/modules/esnext.map.upsert.js +1 -2
  73. package/modules/esnext.math.clamp.js +1 -1
  74. package/modules/esnext.math.deg-per-rad.js +1 -1
  75. package/modules/esnext.math.degrees.js +1 -1
  76. package/modules/esnext.math.fscale.js +1 -1
  77. package/modules/esnext.math.iaddh.js +1 -1
  78. package/modules/esnext.math.imulh.js +1 -1
  79. package/modules/esnext.math.isubh.js +1 -1
  80. package/modules/esnext.math.rad-per-deg.js +1 -1
  81. package/modules/esnext.math.radians.js +1 -1
  82. package/modules/esnext.math.scale.js +1 -1
  83. package/modules/esnext.math.signbit.js +1 -1
  84. package/modules/esnext.math.umulh.js +1 -1
  85. package/modules/esnext.number.from-string.js +1 -1
  86. package/modules/esnext.number.range.js +1 -1
  87. package/modules/esnext.object.iterate-entries.js +1 -1
  88. package/modules/esnext.object.iterate-keys.js +1 -1
  89. package/modules/esnext.object.iterate-values.js +1 -1
  90. package/modules/esnext.observable.js +9 -1
  91. package/modules/esnext.promise.try.js +1 -1
  92. package/modules/esnext.set.add-all.js +1 -2
  93. package/modules/esnext.set.delete-all.js +1 -2
  94. package/modules/esnext.set.difference.js +1 -2
  95. package/modules/esnext.set.every.js +1 -2
  96. package/modules/esnext.set.filter.js +1 -2
  97. package/modules/esnext.set.find.js +1 -2
  98. package/modules/esnext.set.from.js +1 -1
  99. package/modules/esnext.set.intersection.js +1 -2
  100. package/modules/esnext.set.is-disjoint-from.js +1 -2
  101. package/modules/esnext.set.is-subset-of.js +1 -2
  102. package/modules/esnext.set.is-superset-of.js +1 -2
  103. package/modules/esnext.set.join.js +1 -2
  104. package/modules/esnext.set.map.js +1 -2
  105. package/modules/esnext.set.of.js +1 -1
  106. package/modules/esnext.set.reduce.js +1 -2
  107. package/modules/esnext.set.some.js +1 -2
  108. package/modules/esnext.set.symmetric-difference.js +1 -2
  109. package/modules/esnext.set.union.js +1 -2
  110. package/modules/esnext.string.at.js +1 -6
  111. package/modules/esnext.string.code-points.js +1 -1
  112. package/modules/esnext.string.cooked.js +1 -1
  113. package/modules/esnext.typed-array.filter-out.js +1 -1
  114. package/modules/esnext.typed-array.filter-reject.js +1 -1
  115. package/modules/esnext.typed-array.from-async.js +1 -2
  116. package/modules/esnext.typed-array.group-by.js +1 -1
  117. package/modules/esnext.typed-array.to-reversed.js +1 -1
  118. package/modules/esnext.typed-array.to-sorted.js +1 -1
  119. package/modules/esnext.typed-array.to-spliced.js +1 -1
  120. package/modules/esnext.typed-array.unique-by.js +1 -1
  121. package/modules/esnext.typed-array.with.js +1 -1
  122. package/modules/esnext.weak-map.delete-all.js +1 -2
  123. package/modules/esnext.weak-map.emplace.js +1 -2
  124. package/modules/esnext.weak-map.from.js +1 -1
  125. package/modules/esnext.weak-map.of.js +1 -1
  126. package/modules/esnext.weak-map.upsert.js +1 -2
  127. package/modules/esnext.weak-set.add-all.js +1 -2
  128. package/modules/esnext.weak-set.delete-all.js +1 -2
  129. package/modules/esnext.weak-set.from.js +1 -1
  130. package/modules/esnext.weak-set.of.js +1 -1
  131. package/modules/web.atob.js +52 -0
  132. package/modules/web.btoa.js +37 -0
  133. package/modules/web.queue-microtask.js +4 -0
  134. package/modules/web.timers.js +5 -3
  135. package/modules/web.url.js +2 -1
  136. package/package.json +2 -2
  137. package/stable/atob.js +9 -0
  138. package/stable/btoa.js +9 -0
  139. package/stable/index.js +2 -0
  140. package/web/index.js +2 -0
@@ -1,6 +1,5 @@
1
1
  'use strict';
2
2
  var $ = require('../internals/export');
3
- var IS_PURE = require('../internals/is-pure');
4
3
  var anObject = require('../internals/an-object');
5
4
  var bind = require('../internals/function-bind-context');
6
5
  var getSetIterator = require('../internals/get-set-iterator');
@@ -8,7 +7,7 @@ var iterate = require('../internals/iterate');
8
7
 
9
8
  // `Set.prototype.some` method
10
9
  // https://github.com/tc39/proposal-collection-methods
11
- $({ target: 'Set', proto: true, real: true, forced: IS_PURE }, {
10
+ $({ target: 'Set', proto: true, real: true, forced: true }, {
12
11
  some: function some(callbackfn /* , thisArg */) {
13
12
  var set = anObject(this);
14
13
  var iterator = getSetIterator(set);
@@ -1,5 +1,4 @@
1
1
  'use strict';
2
- var IS_PURE = require('../internals/is-pure');
3
2
  var $ = require('../internals/export');
4
3
  var getBuiltIn = require('../internals/get-built-in');
5
4
  var call = require('../internals/function-call');
@@ -10,7 +9,7 @@ var iterate = require('../internals/iterate');
10
9
 
11
10
  // `Set.prototype.symmetricDifference` method
12
11
  // https://github.com/tc39/proposal-set-methods
13
- $({ target: 'Set', proto: true, real: true, forced: IS_PURE }, {
12
+ $({ target: 'Set', proto: true, real: true, forced: true }, {
14
13
  symmetricDifference: function symmetricDifference(iterable) {
15
14
  var set = anObject(this);
16
15
  var newSet = new (speciesConstructor(set, getBuiltIn('Set')))(set);
@@ -1,6 +1,5 @@
1
1
  'use strict';
2
2
  var $ = require('../internals/export');
3
- var IS_PURE = require('../internals/is-pure');
4
3
  var getBuiltIn = require('../internals/get-built-in');
5
4
  var aCallable = require('../internals/a-callable');
6
5
  var anObject = require('../internals/an-object');
@@ -9,7 +8,7 @@ var iterate = require('../internals/iterate');
9
8
 
10
9
  // `Set.prototype.union` method
11
10
  // https://github.com/tc39/proposal-set-methods
12
- $({ target: 'Set', proto: true, real: true, forced: IS_PURE }, {
11
+ $({ target: 'Set', proto: true, real: true, forced: true }, {
13
12
  union: function union(iterable) {
14
13
  var set = anObject(this);
15
14
  var newSet = new (speciesConstructor(set, getBuiltIn('Set')))(set);
@@ -1,18 +1,13 @@
1
1
  'use strict';
2
2
  var $ = require('../internals/export');
3
3
  var charAt = require('../internals/string-multibyte').charAt;
4
- var fails = require('../internals/fails');
5
4
  var requireObjectCoercible = require('../internals/require-object-coercible');
6
5
  var toIntegerOrInfinity = require('../internals/to-integer-or-infinity');
7
6
  var toString = require('../internals/to-string');
8
7
 
9
- var FORCED = fails(function () {
10
- return '𠮷'.at(-2) !== '𠮷';
11
- });
12
-
13
8
  // `String.prototype.at` method
14
9
  // https://github.com/mathiasbynens/String.prototype.at
15
- $({ target: 'String', proto: true, forced: FORCED }, {
10
+ $({ target: 'String', proto: true, forced: true }, {
16
11
  at: function at(index) {
17
12
  var S = toString(requireObjectCoercible(this));
18
13
  var len = S.length;
@@ -32,7 +32,7 @@ var $StringIterator = createIteratorConstructor(function StringIterator(string)
32
32
 
33
33
  // `String.prototype.codePoints` method
34
34
  // https://github.com/tc39/proposal-string-prototype-codepoints
35
- $({ target: 'String', proto: true }, {
35
+ $({ target: 'String', proto: true, forced: true }, {
36
36
  codePoints: function codePoints() {
37
37
  return new $StringIterator(toString(requireObjectCoercible(this)));
38
38
  }
@@ -12,7 +12,7 @@ var join = uncurryThis(ArrayPrototype.join);
12
12
 
13
13
  // `String.cooked` method
14
14
  // https://github.com/tc39/proposal-string-cooked
15
- $({ target: 'String', stat: true }, {
15
+ $({ target: 'String', stat: true, forced: true }, {
16
16
  cooked: function cooked(template /* , ...substitutions */) {
17
17
  var cookedTemplate = toIndexedObject(template);
18
18
  var literalSegments = lengthOfArrayLike(cookedTemplate);
@@ -12,4 +12,4 @@ var exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;
12
12
  exportTypedArrayMethod('filterOut', function filterOut(callbackfn /* , thisArg */) {
13
13
  var list = $filterReject(aTypedArray(this), callbackfn, arguments.length > 1 ? arguments[1] : undefined);
14
14
  return fromSpeciesAndList(this, list);
15
- });
15
+ }, true);
@@ -11,4 +11,4 @@ var exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;
11
11
  exportTypedArrayMethod('filterReject', function filterReject(callbackfn /* , thisArg */) {
12
12
  var list = $filterReject(aTypedArray(this), callbackfn, arguments.length > 1 ? arguments[1] : undefined);
13
13
  return fromSpeciesAndList(this, list);
14
- });
14
+ }, true);
@@ -3,7 +3,6 @@
3
3
  var getBuiltIn = require('../internals/get-built-in');
4
4
  var aConstructor = require('../internals/a-constructor');
5
5
  var arrayFromAsync = require('../internals/array-from-async');
6
- var TYPED_ARRAYS_CONSTRUCTORS_REQUIRES_WRAPPERS = require('../internals/typed-array-constructors-require-wrappers');
7
6
  var ArrayBufferViewCore = require('../internals/array-buffer-view-core');
8
7
  var arrayFromConstructorAndList = require('../internals/array-from-constructor-and-list');
9
8
 
@@ -23,4 +22,4 @@ exportTypedArrayStaticMethod('fromAsync', function fromAsync(asyncItems /* , map
23
22
  }).then(function (list) {
24
23
  return arrayFromConstructorAndList(aTypedArrayConstructor(C), list);
25
24
  });
26
- }, TYPED_ARRAYS_CONSTRUCTORS_REQUIRES_WRAPPERS);
25
+ }, true);
@@ -12,4 +12,4 @@ var exportTypedArrayMethod = ArrayBufferViewCore.exportTypedArrayMethod;
12
12
  exportTypedArrayMethod('groupBy', function groupBy(callbackfn /* , thisArg */) {
13
13
  var thisArg = arguments.length > 1 ? arguments[1] : undefined;
14
14
  return $groupBy(aTypedArray(this), callbackfn, thisArg, typedArraySpeciesConstructor);
15
- });
15
+ }, true);
@@ -10,4 +10,4 @@ var TYPED_ARRAY_CONSTRUCTOR = ArrayBufferViewCore.TYPED_ARRAY_CONSTRUCTOR;
10
10
  // https://tc39.es/proposal-change-array-by-copy/#sec-%typedarray%.prototype.toReversed
11
11
  exportTypedArrayMethod('toReversed', function toReversed() {
12
12
  return arrayToReversed(aTypedArray(this), this[TYPED_ARRAY_CONSTRUCTOR]);
13
- });
13
+ }, true);
@@ -16,4 +16,4 @@ exportTypedArrayMethod('toSorted', function toSorted(compareFn) {
16
16
  var O = aTypedArray(this);
17
17
  var A = arrayFromConstructorAndList(O[TYPED_ARRAY_CONSTRUCTOR], O);
18
18
  return sort(A, compareFn);
19
- });
19
+ }, true);
@@ -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
+ }, true);
@@ -12,4 +12,4 @@ var arrayUniqueBy = uncurryThis($arrayUniqueBy);
12
12
  // https://github.com/tc39/proposal-array-unique
13
13
  exportTypedArrayMethod('uniqueBy', function uniqueBy(resolver) {
14
14
  return fromSpeciesAndList(this, arrayUniqueBy(aTypedArray(this), resolver));
15
- });
15
+ }, true);
@@ -10,4 +10,4 @@ var TYPED_ARRAY_CONSTRUCTOR = ArrayBufferViewCore.TYPED_ARRAY_CONSTRUCTOR;
10
10
  // https://tc39.es/proposal-change-array-by-copy/#sec-%typedarray%.prototype.with
11
11
  exportTypedArrayMethod('with', { 'with': function (index, value) {
12
12
  return arrayWith(aTypedArray(this), this[TYPED_ARRAY_CONSTRUCTOR], index, value);
13
- } }['with']);
13
+ } }['with'], true);
@@ -1,10 +1,9 @@
1
1
  'use strict';
2
2
  var $ = require('../internals/export');
3
- var IS_PURE = require('../internals/is-pure');
4
3
  var deleteAll = require('../internals/collection-delete-all');
5
4
 
6
5
  // `WeakMap.prototype.deleteAll` method
7
6
  // https://github.com/tc39/proposal-collection-methods
8
- $({ target: 'WeakMap', proto: true, real: true, forced: IS_PURE }, {
7
+ $({ target: 'WeakMap', proto: true, real: true, forced: true }, {
9
8
  deleteAll: deleteAll
10
9
  });
@@ -1,10 +1,9 @@
1
1
  'use strict';
2
2
  var $ = require('../internals/export');
3
- var IS_PURE = require('../internals/is-pure');
4
3
  var emplace = require('../internals/map-emplace');
5
4
 
6
5
  // `WeakMap.prototype.emplace` method
7
6
  // https://github.com/tc39/proposal-upsert
8
- $({ target: 'WeakMap', proto: true, real: true, forced: IS_PURE }, {
7
+ $({ target: 'WeakMap', proto: true, real: true, forced: true }, {
9
8
  emplace: emplace
10
9
  });
@@ -3,6 +3,6 @@ var from = require('../internals/collection-from');
3
3
 
4
4
  // `WeakMap.from` method
5
5
  // https://tc39.github.io/proposal-setmap-offrom/#sec-weakmap.from
6
- $({ target: 'WeakMap', stat: true }, {
6
+ $({ target: 'WeakMap', stat: true, forced: true }, {
7
7
  from: from
8
8
  });
@@ -3,6 +3,6 @@ var of = require('../internals/collection-of');
3
3
 
4
4
  // `WeakMap.of` method
5
5
  // https://tc39.github.io/proposal-setmap-offrom/#sec-weakmap.of
6
- $({ target: 'WeakMap', stat: true }, {
6
+ $({ target: 'WeakMap', stat: true, forced: true }, {
7
7
  of: of
8
8
  });
@@ -1,11 +1,10 @@
1
1
  'use strict';
2
2
  // TODO: remove from `core-js@4`
3
3
  var $ = require('../internals/export');
4
- var IS_PURE = require('../internals/is-pure');
5
4
  var upsert = require('../internals/map-upsert');
6
5
 
7
6
  // `WeakMap.prototype.upsert` method (replaced by `WeakMap.prototype.emplace`)
8
7
  // https://github.com/tc39/proposal-upsert
9
- $({ target: 'WeakMap', proto: true, real: true, forced: IS_PURE }, {
8
+ $({ target: 'WeakMap', proto: true, real: true, forced: true }, {
10
9
  upsert: upsert
11
10
  });
@@ -1,10 +1,9 @@
1
1
  'use strict';
2
2
  var $ = require('../internals/export');
3
- var IS_PURE = require('../internals/is-pure');
4
3
  var addAll = require('../internals/collection-add-all');
5
4
 
6
5
  // `WeakSet.prototype.addAll` method
7
6
  // https://github.com/tc39/proposal-collection-methods
8
- $({ target: 'WeakSet', proto: true, real: true, forced: IS_PURE }, {
7
+ $({ target: 'WeakSet', proto: true, real: true, forced: true }, {
9
8
  addAll: addAll
10
9
  });
@@ -1,10 +1,9 @@
1
1
  'use strict';
2
2
  var $ = require('../internals/export');
3
- var IS_PURE = require('../internals/is-pure');
4
3
  var deleteAll = require('../internals/collection-delete-all');
5
4
 
6
5
  // `WeakSet.prototype.deleteAll` method
7
6
  // https://github.com/tc39/proposal-collection-methods
8
- $({ target: 'WeakSet', proto: true, real: true, forced: IS_PURE }, {
7
+ $({ target: 'WeakSet', proto: true, real: true, forced: true }, {
9
8
  deleteAll: deleteAll
10
9
  });
@@ -3,6 +3,6 @@ var from = require('../internals/collection-from');
3
3
 
4
4
  // `WeakSet.from` method
5
5
  // https://tc39.github.io/proposal-setmap-offrom/#sec-weakset.from
6
- $({ target: 'WeakSet', stat: true }, {
6
+ $({ target: 'WeakSet', stat: true, forced: true }, {
7
7
  from: from
8
8
  });
@@ -3,6 +3,6 @@ var of = require('../internals/collection-of');
3
3
 
4
4
  // `WeakSet.of` method
5
5
  // https://tc39.github.io/proposal-setmap-offrom/#sec-weakset.of
6
- $({ target: 'WeakSet', stat: true }, {
6
+ $({ target: 'WeakSet', stat: true, forced: true }, {
7
7
  of: of
8
8
  });
@@ -0,0 +1,52 @@
1
+ var $ = require('../internals/export');
2
+ var getBuiltIn = require('../internals/get-built-in');
3
+ var uncurryThis = require('../internals/function-uncurry-this');
4
+ var fails = require('../internals/fails');
5
+ var toString = require('../internals/to-string');
6
+ var hasOwn = require('../internals/has-own-property');
7
+ var validateArgumentsLength = require('../internals/validate-arguments-length');
8
+ var ctoi = require('../internals/base64-map').ctoi;
9
+
10
+ var disallowed = /[^\d+/a-z]/i;
11
+ var whitespaces = /[\t\n\f\r ]+/g;
12
+ var finalEq = /[=]+$/;
13
+
14
+ var $atob = getBuiltIn('atob');
15
+ var fromCharCode = String.fromCharCode;
16
+ var charAt = uncurryThis(''.charAt);
17
+ var replace = uncurryThis(''.replace);
18
+ var exec = uncurryThis(disallowed.exec);
19
+
20
+ var NO_SPACES_IGNORE = fails(function () {
21
+ return atob(' ') !== '';
22
+ });
23
+
24
+ var NO_ARG_RECEIVING_CHECK = !NO_SPACES_IGNORE && !fails(function () {
25
+ $atob();
26
+ });
27
+
28
+ // `atob` method
29
+ // https://html.spec.whatwg.org/multipage/webappapis.html#dom-atob
30
+ $({ global: true, enumerable: true, forced: NO_SPACES_IGNORE || NO_ARG_RECEIVING_CHECK }, {
31
+ atob: function atob(data) {
32
+ validateArgumentsLength(arguments.length, 1);
33
+ if (NO_ARG_RECEIVING_CHECK) return $atob(data);
34
+ var string = replace(toString(data), whitespaces, '');
35
+ var output = '';
36
+ var position = 0;
37
+ var bc = 0;
38
+ var chr, bs;
39
+ if (string.length % 4 == 0) {
40
+ string = replace(string, finalEq, '');
41
+ }
42
+ if (string.length % 4 == 1 || exec(disallowed, string)) {
43
+ throw new (getBuiltIn('DOMException'))('The string is not correctly encoded', 'InvalidCharacterError');
44
+ }
45
+ while (chr = charAt(string, position++)) {
46
+ if (hasOwn(ctoi, chr)) {
47
+ bs = bc % 4 ? bs * 64 + ctoi[chr] : ctoi[chr];
48
+ if (bc++ % 4) output += fromCharCode(255 & bs >> (-2 * bc & 6));
49
+ }
50
+ } return output;
51
+ }
52
+ });
@@ -0,0 +1,37 @@
1
+ var $ = require('../internals/export');
2
+ var getBuiltIn = require('../internals/get-built-in');
3
+ var uncurryThis = require('../internals/function-uncurry-this');
4
+ var fails = require('../internals/fails');
5
+ var toString = require('../internals/to-string');
6
+ var validateArgumentsLength = require('../internals/validate-arguments-length');
7
+ var itoc = require('../internals/base64-map').itoc;
8
+
9
+ var $btoa = getBuiltIn('btoa');
10
+ var charAt = uncurryThis(''.charAt);
11
+ var charCodeAt = uncurryThis(''.charCodeAt);
12
+
13
+ var NO_ARG_RECEIVING_CHECK = !!$btoa && !fails(function () {
14
+ $btoa();
15
+ });
16
+
17
+ // `btoa` method
18
+ // https://html.spec.whatwg.org/multipage/webappapis.html#dom-btoa
19
+ $({ global: true, enumerable: true, forced: NO_ARG_RECEIVING_CHECK }, {
20
+ btoa: function btoa(data) {
21
+ validateArgumentsLength(arguments.length, 1);
22
+ if (NO_ARG_RECEIVING_CHECK) return $btoa(data);
23
+ var string = toString(data);
24
+ var output = '';
25
+ var position = 0;
26
+ var map = itoc;
27
+ var block, charCode;
28
+ while (charAt(string, position) || (map = '=', position % 1)) {
29
+ charCode = charCodeAt(string, position += 3 / 4);
30
+ if (charCode > 0xFF) {
31
+ throw new (getBuiltIn('DOMException'))('The string contains characters outside of the Latin1 range', 'InvalidCharacterError');
32
+ }
33
+ block = block << 8 | charCode;
34
+ output += charAt(map, 63 & block >> 8 - position % 1 * 8);
35
+ } return output;
36
+ }
37
+ });
@@ -1,6 +1,8 @@
1
1
  var $ = require('../internals/export');
2
2
  var global = require('../internals/global');
3
3
  var microtask = require('../internals/microtask');
4
+ var aCallable = require('../internals/a-callable');
5
+ var validateArgumentsLength = require('../internals/validate-arguments-length');
4
6
  var IS_NODE = require('../internals/engine-is-node');
5
7
 
6
8
  var process = global.process;
@@ -9,6 +11,8 @@ var process = global.process;
9
11
  // https://html.spec.whatwg.org/multipage/timers-and-user-prompts.html#dom-queuemicrotask
10
12
  $({ global: true, enumerable: true, noTargetGet: true }, {
11
13
  queueMicrotask: function queueMicrotask(fn) {
14
+ validateArgumentsLength(arguments.length, 1);
15
+ aCallable(fn);
12
16
  var domain = IS_NODE && process.domain;
13
17
  microtask(domain ? domain.bind(fn) : fn);
14
18
  }
@@ -4,17 +4,19 @@ var apply = require('../internals/function-apply');
4
4
  var isCallable = require('../internals/is-callable');
5
5
  var userAgent = require('../internals/engine-user-agent');
6
6
  var arraySlice = require('../internals/array-slice');
7
+ var validateArgumentsLength = require('../internals/validate-arguments-length');
7
8
 
8
9
  var MSIE = /MSIE .\./.test(userAgent); // <- dirty ie9- check
9
10
  var Function = global.Function;
10
11
 
11
12
  var wrap = function (scheduler) {
12
13
  return function (handler, timeout /* , ...arguments */) {
13
- var boundArgs = arguments.length > 2;
14
+ var boundArgs = validateArgumentsLength(arguments.length, 1) > 2;
15
+ var fn = isCallable(handler) ? handler : Function(handler);
14
16
  var args = boundArgs ? arraySlice(arguments, 2) : undefined;
15
17
  return scheduler(boundArgs ? function () {
16
- apply(isCallable(handler) ? handler : Function(handler), this, args);
17
- } : handler, timeout);
18
+ apply(fn, this, args);
19
+ } : fn, timeout);
18
20
  };
19
21
  };
20
22
 
@@ -18,6 +18,7 @@ var codeAt = require('../internals/string-multibyte').codeAt;
18
18
  var toASCII = require('../internals/string-punycode-to-ascii');
19
19
  var $toString = require('../internals/to-string');
20
20
  var setToStringTag = require('../internals/set-to-string-tag');
21
+ var validateArgumentsLength = require('../internals/validate-arguments-length');
21
22
  var URLSearchParamsModule = require('../modules/web.url-search-params');
22
23
  var InternalStateModule = require('../internals/internal-state');
23
24
 
@@ -939,7 +940,7 @@ URLState.prototype = {
939
940
  // https://url.spec.whatwg.org/#url-class
940
941
  var URLConstructor = function URL(url /* , base */) {
941
942
  var that = anInstance(this, URLPrototype);
942
- var base = arguments.length > 1 ? arguments[1] : undefined;
943
+ var base = validateArgumentsLength(arguments.length, 1) > 1 ? arguments[1] : undefined;
943
944
  var state = setInternalState(that, new URLState(url, false, base));
944
945
  if (!DESCRIPTORS) {
945
946
  that.href = state.serialize();
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "core-js",
3
3
  "description": "Standard library",
4
- "version": "3.20.3",
4
+ "version": "3.21.0",
5
5
  "repository": {
6
6
  "type": "git",
7
7
  "url": "https://github.com/zloirock/core-js.git"
@@ -54,5 +54,5 @@
54
54
  "scripts": {
55
55
  "postinstall": "node -e \"try{require('./postinstall')}catch(e){}\""
56
56
  },
57
- "gitHead": "4bcdaf8646f4e60bab9ac182b06803ebd230568c"
57
+ "gitHead": "32492dc5f55ea9bbd21b8fa8145cedd36d68c160"
58
58
  }
package/stable/atob.js ADDED
@@ -0,0 +1,9 @@
1
+ require('../modules/es.error.to-string');
2
+ require('../modules/es.object.to-string');
3
+ require('../modules/web.atob');
4
+ require('../modules/web.dom-exception.constructor');
5
+ require('../modules/web.dom-exception.stack');
6
+ require('../modules/web.dom-exception.to-string-tag');
7
+ var path = require('../internals/path');
8
+
9
+ module.exports = path.atob;
package/stable/btoa.js ADDED
@@ -0,0 +1,9 @@
1
+ require('../modules/es.error.to-string');
2
+ require('../modules/es.object.to-string');
3
+ require('../modules/web.btoa');
4
+ require('../modules/web.dom-exception.constructor');
5
+ require('../modules/web.dom-exception.stack');
6
+ require('../modules/web.dom-exception.to-string-tag');
7
+ var path = require('../internals/path');
8
+
9
+ module.exports = path.btoa;
package/stable/index.js CHANGED
@@ -224,6 +224,8 @@ require('../modules/es.typed-array.to-string');
224
224
  require('../modules/es.unescape');
225
225
  require('../modules/es.weak-map');
226
226
  require('../modules/es.weak-set');
227
+ require('../modules/web.atob');
228
+ require('../modules/web.btoa');
227
229
  require('../modules/web.dom-collections.for-each');
228
230
  require('../modules/web.dom-collections.iterator');
229
231
  require('../modules/web.dom-exception.constructor');
package/web/index.js CHANGED
@@ -1,3 +1,5 @@
1
+ require('../modules/web.atob');
2
+ require('../modules/web.btoa');
1
3
  require('../modules/web.dom-collections.for-each');
2
4
  require('../modules/web.dom-collections.iterator');
3
5
  require('../modules/web.dom-exception.constructor');