core-js 3.6.0 → 3.6.4

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 (144) hide show
  1. package/LICENSE +1 -1
  2. package/es/regexp/test.js +1 -0
  3. package/es/string/index.js +1 -0
  4. package/es/string/match.js +1 -0
  5. package/es/string/replace.js +1 -0
  6. package/es/string/search.js +1 -0
  7. package/es/string/split.js +1 -0
  8. package/es/symbol/async-iterator.js +1 -1
  9. package/es/symbol/has-instance.js +1 -1
  10. package/es/symbol/is-concat-spreadable.js +1 -1
  11. package/es/symbol/iterator.js +1 -1
  12. package/es/symbol/match-all.js +1 -1
  13. package/es/symbol/match.js +1 -1
  14. package/es/symbol/replace.js +1 -1
  15. package/es/symbol/search.js +1 -1
  16. package/es/symbol/species.js +1 -1
  17. package/es/symbol/split.js +1 -1
  18. package/es/symbol/to-primitive.js +1 -1
  19. package/es/symbol/to-string-tag.js +1 -1
  20. package/es/symbol/unscopables.js +1 -1
  21. package/features/symbol/async-dispose.js +1 -1
  22. package/features/symbol/dispose.js +1 -1
  23. package/features/symbol/observable.js +1 -1
  24. package/features/symbol/pattern-match.js +1 -1
  25. package/features/symbol/replace-all.js +1 -1
  26. package/internals/array-buffer-native.js +1 -0
  27. package/internals/array-buffer-view-core.js +1 -9
  28. package/internals/array-buffer.js +13 -3
  29. package/internals/array-for-each.js +6 -2
  30. package/internals/array-from.js +7 -8
  31. package/internals/array-iteration.js +1 -1
  32. package/internals/array-last-index-of.js +7 -3
  33. package/internals/array-method-has-species-support.js +1 -1
  34. package/internals/{sloppy-array-method.js → array-method-is-strict.js} +1 -1
  35. package/internals/array-method-uses-to-length.js +27 -0
  36. package/internals/{create-async-iterator-proxy.js → async-iterator-create-proxy.js} +0 -0
  37. package/internals/collection-from.js +1 -1
  38. package/internals/collection-strong.js +1 -1
  39. package/internals/define-well-known-symbol.js +1 -1
  40. package/internals/descriptors.js +1 -1
  41. package/internals/{is-ios.js → engine-is-ios.js} +1 -1
  42. package/internals/{user-agent.js → engine-user-agent.js} +0 -0
  43. package/internals/{v8-version.js → engine-v8-version.js} +1 -1
  44. package/internals/entry-unbind.js +1 -1
  45. package/internals/fix-regexp-well-known-symbol-logic.js +20 -2
  46. package/internals/flatten-into-array.js +1 -1
  47. package/internals/{bind-context.js → function-bind-context.js} +0 -0
  48. package/internals/iterate.js +1 -1
  49. package/internals/{create-iterator-proxy.js → iterator-create-proxy.js} +0 -0
  50. package/internals/microtask.js +1 -1
  51. package/internals/{parse-float.js → number-parse-float.js} +4 -4
  52. package/internals/{parse-int.js → number-parse-int.js} +4 -4
  53. package/internals/{forced-object-prototype-accessors-methods.js → object-prototype-accessors-forced.js} +0 -0
  54. package/internals/shared.js +2 -2
  55. package/internals/{forced-string-html-method.js → string-html-forced.js} +0 -0
  56. package/internals/{webkit-string-pad-bug.js → string-pad-webkit-bug.js} +1 -1
  57. package/internals/{punycode-to-ascii.js → string-punycode-to-ascii.js} +0 -0
  58. package/internals/{forced-string-trim-method.js → string-trim-forced.js} +0 -0
  59. package/internals/task.js +2 -2
  60. package/internals/typed-array-constructor.js +1 -1
  61. package/internals/{typed-arrays-constructors-requires-wrappers.js → typed-array-constructors-require-wrappers.js} +0 -0
  62. package/internals/typed-array-from.js +1 -1
  63. package/internals/use-symbol-as-uid.js +1 -1
  64. package/internals/{wrapped-well-known-symbol.js → well-known-symbol-wrapped.js} +0 -0
  65. package/internals/well-known-symbol.js +1 -1
  66. package/modules/es.array.concat.js +1 -1
  67. package/modules/es.array.every.js +6 -2
  68. package/modules/es.array.filter.js +2 -4
  69. package/modules/es.array.find-index.js +4 -1
  70. package/modules/es.array.find.js +4 -1
  71. package/modules/es.array.includes.js +4 -1
  72. package/modules/es.array.index-of.js +5 -3
  73. package/modules/es.array.join.js +3 -3
  74. package/modules/es.array.map.js +2 -4
  75. package/modules/es.array.reduce-right.js +7 -2
  76. package/modules/es.array.reduce.js +6 -2
  77. package/modules/es.array.slice.js +6 -2
  78. package/modules/es.array.some.js +6 -2
  79. package/modules/es.array.sort.js +3 -3
  80. package/modules/es.array.splice.js +5 -1
  81. package/modules/es.data-view.js +1 -1
  82. package/modules/es.number.parse-float.js +1 -1
  83. package/modules/es.number.parse-int.js +1 -1
  84. package/modules/es.object.define-getter.js +1 -1
  85. package/modules/es.object.define-setter.js +1 -1
  86. package/modules/es.object.lookup-getter.js +1 -1
  87. package/modules/es.object.lookup-setter.js +1 -1
  88. package/modules/es.parse-float.js +1 -1
  89. package/modules/es.parse-int.js +1 -1
  90. package/modules/es.promise.js +1 -1
  91. package/modules/es.regexp.test.js +2 -0
  92. package/modules/es.string.anchor.js +1 -1
  93. package/modules/es.string.big.js +1 -1
  94. package/modules/es.string.blink.js +1 -1
  95. package/modules/es.string.bold.js +1 -1
  96. package/modules/es.string.fixed.js +1 -1
  97. package/modules/es.string.fontcolor.js +1 -1
  98. package/modules/es.string.fontsize.js +1 -1
  99. package/modules/es.string.italics.js +1 -1
  100. package/modules/es.string.link.js +1 -1
  101. package/modules/es.string.pad-end.js +1 -1
  102. package/modules/es.string.pad-start.js +1 -1
  103. package/modules/es.string.replace.js +8 -1
  104. package/modules/es.string.small.js +1 -1
  105. package/modules/es.string.strike.js +1 -1
  106. package/modules/es.string.sub.js +1 -1
  107. package/modules/es.string.sup.js +1 -1
  108. package/modules/es.string.trim-end.js +1 -1
  109. package/modules/es.string.trim-start.js +1 -1
  110. package/modules/es.string.trim.js +1 -1
  111. package/modules/es.symbol.js +10 -8
  112. package/modules/es.typed-array.from.js +1 -1
  113. package/modules/es.typed-array.of.js +1 -1
  114. package/modules/esnext.async-iterator.as-indexed-pairs.js +1 -1
  115. package/modules/esnext.async-iterator.drop.js +1 -1
  116. package/modules/esnext.async-iterator.filter.js +1 -1
  117. package/modules/esnext.async-iterator.flat-map.js +1 -1
  118. package/modules/esnext.async-iterator.from.js +1 -1
  119. package/modules/esnext.async-iterator.map.js +1 -1
  120. package/modules/esnext.async-iterator.take.js +1 -1
  121. package/modules/esnext.iterator.as-indexed-pairs.js +1 -1
  122. package/modules/esnext.iterator.drop.js +1 -1
  123. package/modules/esnext.iterator.filter.js +1 -1
  124. package/modules/esnext.iterator.flat-map.js +1 -1
  125. package/modules/esnext.iterator.from.js +1 -1
  126. package/modules/esnext.iterator.map.js +1 -1
  127. package/modules/esnext.iterator.take.js +1 -1
  128. package/modules/esnext.map.every.js +1 -1
  129. package/modules/esnext.map.filter.js +1 -1
  130. package/modules/esnext.map.find-key.js +1 -1
  131. package/modules/esnext.map.find.js +1 -1
  132. package/modules/esnext.map.map-keys.js +1 -1
  133. package/modules/esnext.map.map-values.js +1 -1
  134. package/modules/esnext.map.some.js +1 -1
  135. package/modules/esnext.number.from-string.js +1 -1
  136. package/modules/esnext.set.every.js +1 -1
  137. package/modules/esnext.set.filter.js +1 -1
  138. package/modules/esnext.set.find.js +1 -1
  139. package/modules/esnext.set.map.js +1 -1
  140. package/modules/esnext.set.some.js +1 -1
  141. package/modules/web.timers.js +1 -1
  142. package/modules/web.url-search-params.js +1 -1
  143. package/modules/web.url.js +1 -1
  144. package/package.json +1 -1
@@ -1,5 +1,5 @@
1
1
  // https://github.com/zloirock/core-js/issues/280
2
- var userAgent = require('../internals/user-agent');
2
+ var userAgent = require('../internals/engine-user-agent');
3
3
 
4
4
  // eslint-disable-next-line unicorn/no-unsafe-regex
5
5
  module.exports = /Version\/10\.\d+(\.\d+)?( Mobile\/\w+)? Safari\//.test(userAgent);
package/internals/task.js CHANGED
@@ -1,10 +1,10 @@
1
1
  var global = require('../internals/global');
2
2
  var fails = require('../internals/fails');
3
3
  var classof = require('../internals/classof-raw');
4
- var bind = require('../internals/bind-context');
4
+ var bind = require('../internals/function-bind-context');
5
5
  var html = require('../internals/html');
6
6
  var createElement = require('../internals/document-create-element');
7
- var IS_IOS = require('../internals/is-ios');
7
+ var IS_IOS = require('../internals/engine-is-ios');
8
8
 
9
9
  var location = global.location;
10
10
  var set = global.setImmediate;
@@ -2,7 +2,7 @@
2
2
  var $ = require('../internals/export');
3
3
  var global = require('../internals/global');
4
4
  var DESCRIPTORS = require('../internals/descriptors');
5
- var TYPED_ARRAYS_CONSTRUCTORS_REQUIRES_WRAPPERS = require('../internals/typed-arrays-constructors-requires-wrappers');
5
+ var TYPED_ARRAYS_CONSTRUCTORS_REQUIRES_WRAPPERS = require('../internals/typed-array-constructors-require-wrappers');
6
6
  var ArrayBufferViewCore = require('../internals/array-buffer-view-core');
7
7
  var ArrayBufferModule = require('../internals/array-buffer');
8
8
  var anInstance = require('../internals/an-instance');
@@ -2,7 +2,7 @@ var toObject = require('../internals/to-object');
2
2
  var toLength = require('../internals/to-length');
3
3
  var getIteratorMethod = require('../internals/get-iterator-method');
4
4
  var isArrayIteratorMethod = require('../internals/is-array-iterator-method');
5
- var bind = require('../internals/bind-context');
5
+ var bind = require('../internals/function-bind-context');
6
6
  var aTypedArrayConstructor = require('../internals/array-buffer-view-core').aTypedArrayConstructor;
7
7
 
8
8
  module.exports = function from(source /* , mapfn, thisArg */) {
@@ -4,4 +4,4 @@ module.exports = NATIVE_SYMBOL
4
4
  // eslint-disable-next-line no-undef
5
5
  && !Symbol.sham
6
6
  // eslint-disable-next-line no-undef
7
- && typeof Symbol() == 'symbol';
7
+ && typeof Symbol.iterator == 'symbol';
@@ -7,7 +7,7 @@ var USE_SYMBOL_AS_UID = require('../internals/use-symbol-as-uid');
7
7
 
8
8
  var WellKnownSymbolsStore = shared('wks');
9
9
  var Symbol = global.Symbol;
10
- var createWellKnownSymbol = USE_SYMBOL_AS_UID ? Symbol : uid;
10
+ var createWellKnownSymbol = USE_SYMBOL_AS_UID ? Symbol : Symbol && Symbol.withoutSetter || uid;
11
11
 
12
12
  module.exports = function (name) {
13
13
  if (!has(WellKnownSymbolsStore, name)) {
@@ -9,7 +9,7 @@ var createProperty = require('../internals/create-property');
9
9
  var arraySpeciesCreate = require('../internals/array-species-create');
10
10
  var arrayMethodHasSpeciesSupport = require('../internals/array-method-has-species-support');
11
11
  var wellKnownSymbol = require('../internals/well-known-symbol');
12
- var V8_VERSION = require('../internals/v8-version');
12
+ var V8_VERSION = require('../internals/engine-v8-version');
13
13
 
14
14
  var IS_CONCAT_SPREADABLE = wellKnownSymbol('isConcatSpreadable');
15
15
  var MAX_SAFE_INTEGER = 0x1FFFFFFFFFFFFF;
@@ -1,11 +1,15 @@
1
1
  'use strict';
2
2
  var $ = require('../internals/export');
3
3
  var $every = require('../internals/array-iteration').every;
4
- var sloppyArrayMethod = require('../internals/sloppy-array-method');
4
+ var arrayMethodIsStrict = require('../internals/array-method-is-strict');
5
+ var arrayMethodUsesToLength = require('../internals/array-method-uses-to-length');
6
+
7
+ var STRICT_METHOD = arrayMethodIsStrict('every');
8
+ var USES_TO_LENGTH = arrayMethodUsesToLength('every');
5
9
 
6
10
  // `Array.prototype.every` method
7
11
  // https://tc39.github.io/ecma262/#sec-array.prototype.every
8
- $({ target: 'Array', proto: true, forced: sloppyArrayMethod('every') }, {
12
+ $({ target: 'Array', proto: true, forced: !STRICT_METHOD || !USES_TO_LENGTH }, {
9
13
  every: function every(callbackfn /* , thisArg */) {
10
14
  return $every(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);
11
15
  }
@@ -1,14 +1,12 @@
1
1
  'use strict';
2
2
  var $ = require('../internals/export');
3
3
  var $filter = require('../internals/array-iteration').filter;
4
- var fails = require('../internals/fails');
5
4
  var arrayMethodHasSpeciesSupport = require('../internals/array-method-has-species-support');
5
+ var arrayMethodUsesToLength = require('../internals/array-method-uses-to-length');
6
6
 
7
7
  var HAS_SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('filter');
8
8
  // Edge 14- issue
9
- var USES_TO_LENGTH = HAS_SPECIES_SUPPORT && !fails(function () {
10
- [].filter.call({ length: -1, 0: 1 }, function (it) { throw it; });
11
- });
9
+ var USES_TO_LENGTH = arrayMethodUsesToLength('filter');
12
10
 
13
11
  // `Array.prototype.filter` method
14
12
  // https://tc39.github.io/ecma262/#sec-array.prototype.filter
@@ -2,16 +2,19 @@
2
2
  var $ = require('../internals/export');
3
3
  var $findIndex = require('../internals/array-iteration').findIndex;
4
4
  var addToUnscopables = require('../internals/add-to-unscopables');
5
+ var arrayMethodUsesToLength = require('../internals/array-method-uses-to-length');
5
6
 
6
7
  var FIND_INDEX = 'findIndex';
7
8
  var SKIPS_HOLES = true;
8
9
 
10
+ var USES_TO_LENGTH = arrayMethodUsesToLength(FIND_INDEX);
11
+
9
12
  // Shouldn't skip holes
10
13
  if (FIND_INDEX in []) Array(1)[FIND_INDEX](function () { SKIPS_HOLES = false; });
11
14
 
12
15
  // `Array.prototype.findIndex` method
13
16
  // https://tc39.github.io/ecma262/#sec-array.prototype.findindex
14
- $({ target: 'Array', proto: true, forced: SKIPS_HOLES }, {
17
+ $({ target: 'Array', proto: true, forced: SKIPS_HOLES || !USES_TO_LENGTH }, {
15
18
  findIndex: function findIndex(callbackfn /* , that = undefined */) {
16
19
  return $findIndex(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);
17
20
  }
@@ -2,16 +2,19 @@
2
2
  var $ = require('../internals/export');
3
3
  var $find = require('../internals/array-iteration').find;
4
4
  var addToUnscopables = require('../internals/add-to-unscopables');
5
+ var arrayMethodUsesToLength = require('../internals/array-method-uses-to-length');
5
6
 
6
7
  var FIND = 'find';
7
8
  var SKIPS_HOLES = true;
8
9
 
10
+ var USES_TO_LENGTH = arrayMethodUsesToLength(FIND);
11
+
9
12
  // Shouldn't skip holes
10
13
  if (FIND in []) Array(1)[FIND](function () { SKIPS_HOLES = false; });
11
14
 
12
15
  // `Array.prototype.find` method
13
16
  // https://tc39.github.io/ecma262/#sec-array.prototype.find
14
- $({ target: 'Array', proto: true, forced: SKIPS_HOLES }, {
17
+ $({ target: 'Array', proto: true, forced: SKIPS_HOLES || !USES_TO_LENGTH }, {
15
18
  find: function find(callbackfn /* , that = undefined */) {
16
19
  return $find(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);
17
20
  }
@@ -2,10 +2,13 @@
2
2
  var $ = require('../internals/export');
3
3
  var $includes = require('../internals/array-includes').includes;
4
4
  var addToUnscopables = require('../internals/add-to-unscopables');
5
+ var arrayMethodUsesToLength = require('../internals/array-method-uses-to-length');
6
+
7
+ var USES_TO_LENGTH = arrayMethodUsesToLength('indexOf', { ACCESSORS: true, 1: 0 });
5
8
 
6
9
  // `Array.prototype.includes` method
7
10
  // https://tc39.github.io/ecma262/#sec-array.prototype.includes
8
- $({ target: 'Array', proto: true }, {
11
+ $({ target: 'Array', proto: true, forced: !USES_TO_LENGTH }, {
9
12
  includes: function includes(el /* , fromIndex = 0 */) {
10
13
  return $includes(this, el, arguments.length > 1 ? arguments[1] : undefined);
11
14
  }
@@ -1,16 +1,18 @@
1
1
  'use strict';
2
2
  var $ = require('../internals/export');
3
3
  var $indexOf = require('../internals/array-includes').indexOf;
4
- var sloppyArrayMethod = require('../internals/sloppy-array-method');
4
+ var arrayMethodIsStrict = require('../internals/array-method-is-strict');
5
+ var arrayMethodUsesToLength = require('../internals/array-method-uses-to-length');
5
6
 
6
7
  var nativeIndexOf = [].indexOf;
7
8
 
8
9
  var NEGATIVE_ZERO = !!nativeIndexOf && 1 / [1].indexOf(1, -0) < 0;
9
- var SLOPPY_METHOD = sloppyArrayMethod('indexOf');
10
+ var STRICT_METHOD = arrayMethodIsStrict('indexOf');
11
+ var USES_TO_LENGTH = arrayMethodUsesToLength('indexOf', { ACCESSORS: true, 1: 0 });
10
12
 
11
13
  // `Array.prototype.indexOf` method
12
14
  // https://tc39.github.io/ecma262/#sec-array.prototype.indexof
13
- $({ target: 'Array', proto: true, forced: NEGATIVE_ZERO || SLOPPY_METHOD }, {
15
+ $({ target: 'Array', proto: true, forced: NEGATIVE_ZERO || !STRICT_METHOD || !USES_TO_LENGTH }, {
14
16
  indexOf: function indexOf(searchElement /* , fromIndex = 0 */) {
15
17
  return NEGATIVE_ZERO
16
18
  // convert -0 to +0
@@ -2,16 +2,16 @@
2
2
  var $ = require('../internals/export');
3
3
  var IndexedObject = require('../internals/indexed-object');
4
4
  var toIndexedObject = require('../internals/to-indexed-object');
5
- var sloppyArrayMethod = require('../internals/sloppy-array-method');
5
+ var arrayMethodIsStrict = require('../internals/array-method-is-strict');
6
6
 
7
7
  var nativeJoin = [].join;
8
8
 
9
9
  var ES3_STRINGS = IndexedObject != Object;
10
- var SLOPPY_METHOD = sloppyArrayMethod('join', ',');
10
+ var STRICT_METHOD = arrayMethodIsStrict('join', ',');
11
11
 
12
12
  // `Array.prototype.join` method
13
13
  // https://tc39.github.io/ecma262/#sec-array.prototype.join
14
- $({ target: 'Array', proto: true, forced: ES3_STRINGS || SLOPPY_METHOD }, {
14
+ $({ target: 'Array', proto: true, forced: ES3_STRINGS || !STRICT_METHOD }, {
15
15
  join: function join(separator) {
16
16
  return nativeJoin.call(toIndexedObject(this), separator === undefined ? ',' : separator);
17
17
  }
@@ -1,14 +1,12 @@
1
1
  'use strict';
2
2
  var $ = require('../internals/export');
3
3
  var $map = require('../internals/array-iteration').map;
4
- var fails = require('../internals/fails');
5
4
  var arrayMethodHasSpeciesSupport = require('../internals/array-method-has-species-support');
5
+ var arrayMethodUsesToLength = require('../internals/array-method-uses-to-length');
6
6
 
7
7
  var HAS_SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('map');
8
8
  // FF49- issue
9
- var USES_TO_LENGTH = HAS_SPECIES_SUPPORT && !fails(function () {
10
- [].map.call({ length: -1, 0: 1 }, function (it) { throw it; });
11
- });
9
+ var USES_TO_LENGTH = arrayMethodUsesToLength('map');
12
10
 
13
11
  // `Array.prototype.map` method
14
12
  // https://tc39.github.io/ecma262/#sec-array.prototype.map
@@ -1,11 +1,16 @@
1
1
  'use strict';
2
2
  var $ = require('../internals/export');
3
3
  var $reduceRight = require('../internals/array-reduce').right;
4
- var sloppyArrayMethod = require('../internals/sloppy-array-method');
4
+ var arrayMethodIsStrict = require('../internals/array-method-is-strict');
5
+ var arrayMethodUsesToLength = require('../internals/array-method-uses-to-length');
6
+
7
+ var STRICT_METHOD = arrayMethodIsStrict('reduceRight');
8
+ // For preventing possible almost infinite loop in non-standard implementations, test the forward version of the method
9
+ var USES_TO_LENGTH = arrayMethodUsesToLength('reduce', { 1: 0 });
5
10
 
6
11
  // `Array.prototype.reduceRight` method
7
12
  // https://tc39.github.io/ecma262/#sec-array.prototype.reduceright
8
- $({ target: 'Array', proto: true, forced: sloppyArrayMethod('reduceRight') }, {
13
+ $({ target: 'Array', proto: true, forced: !STRICT_METHOD || !USES_TO_LENGTH }, {
9
14
  reduceRight: function reduceRight(callbackfn /* , initialValue */) {
10
15
  return $reduceRight(this, callbackfn, arguments.length, arguments.length > 1 ? arguments[1] : undefined);
11
16
  }
@@ -1,11 +1,15 @@
1
1
  'use strict';
2
2
  var $ = require('../internals/export');
3
3
  var $reduce = require('../internals/array-reduce').left;
4
- var sloppyArrayMethod = require('../internals/sloppy-array-method');
4
+ var arrayMethodIsStrict = require('../internals/array-method-is-strict');
5
+ var arrayMethodUsesToLength = require('../internals/array-method-uses-to-length');
6
+
7
+ var STRICT_METHOD = arrayMethodIsStrict('reduce');
8
+ var USES_TO_LENGTH = arrayMethodUsesToLength('reduce', { 1: 0 });
5
9
 
6
10
  // `Array.prototype.reduce` method
7
11
  // https://tc39.github.io/ecma262/#sec-array.prototype.reduce
8
- $({ target: 'Array', proto: true, forced: sloppyArrayMethod('reduce') }, {
12
+ $({ target: 'Array', proto: true, forced: !STRICT_METHOD || !USES_TO_LENGTH }, {
9
13
  reduce: function reduce(callbackfn /* , initialValue */) {
10
14
  return $reduce(this, callbackfn, arguments.length, arguments.length > 1 ? arguments[1] : undefined);
11
15
  }
@@ -6,8 +6,12 @@ var toAbsoluteIndex = require('../internals/to-absolute-index');
6
6
  var toLength = require('../internals/to-length');
7
7
  var toIndexedObject = require('../internals/to-indexed-object');
8
8
  var createProperty = require('../internals/create-property');
9
- var arrayMethodHasSpeciesSupport = require('../internals/array-method-has-species-support');
10
9
  var wellKnownSymbol = require('../internals/well-known-symbol');
10
+ var arrayMethodHasSpeciesSupport = require('../internals/array-method-has-species-support');
11
+ var arrayMethodUsesToLength = require('../internals/array-method-uses-to-length');
12
+
13
+ var HAS_SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('slice');
14
+ var USES_TO_LENGTH = arrayMethodUsesToLength('slice', { ACCESSORS: true, 0: 0, 1: 2 });
11
15
 
12
16
  var SPECIES = wellKnownSymbol('species');
13
17
  var nativeSlice = [].slice;
@@ -16,7 +20,7 @@ var max = Math.max;
16
20
  // `Array.prototype.slice` method
17
21
  // https://tc39.github.io/ecma262/#sec-array.prototype.slice
18
22
  // fallback for not array-like ES3 strings and DOM objects
19
- $({ target: 'Array', proto: true, forced: !arrayMethodHasSpeciesSupport('slice') }, {
23
+ $({ target: 'Array', proto: true, forced: !HAS_SPECIES_SUPPORT || !USES_TO_LENGTH }, {
20
24
  slice: function slice(start, end) {
21
25
  var O = toIndexedObject(this);
22
26
  var length = toLength(O.length);
@@ -1,11 +1,15 @@
1
1
  'use strict';
2
2
  var $ = require('../internals/export');
3
3
  var $some = require('../internals/array-iteration').some;
4
- var sloppyArrayMethod = require('../internals/sloppy-array-method');
4
+ var arrayMethodIsStrict = require('../internals/array-method-is-strict');
5
+ var arrayMethodUsesToLength = require('../internals/array-method-uses-to-length');
6
+
7
+ var STRICT_METHOD = arrayMethodIsStrict('some');
8
+ var USES_TO_LENGTH = arrayMethodUsesToLength('some');
5
9
 
6
10
  // `Array.prototype.some` method
7
11
  // https://tc39.github.io/ecma262/#sec-array.prototype.some
8
- $({ target: 'Array', proto: true, forced: sloppyArrayMethod('some') }, {
12
+ $({ target: 'Array', proto: true, forced: !STRICT_METHOD || !USES_TO_LENGTH }, {
9
13
  some: function some(callbackfn /* , thisArg */) {
10
14
  return $some(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);
11
15
  }
@@ -3,7 +3,7 @@ var $ = require('../internals/export');
3
3
  var aFunction = require('../internals/a-function');
4
4
  var toObject = require('../internals/to-object');
5
5
  var fails = require('../internals/fails');
6
- var sloppyArrayMethod = require('../internals/sloppy-array-method');
6
+ var arrayMethodIsStrict = require('../internals/array-method-is-strict');
7
7
 
8
8
  var test = [];
9
9
  var nativeSort = test.sort;
@@ -17,9 +17,9 @@ var FAILS_ON_NULL = fails(function () {
17
17
  test.sort(null);
18
18
  });
19
19
  // Old WebKit
20
- var SLOPPY_METHOD = sloppyArrayMethod('sort');
20
+ var STRICT_METHOD = arrayMethodIsStrict('sort');
21
21
 
22
- var FORCED = FAILS_ON_UNDEFINED || !FAILS_ON_NULL || SLOPPY_METHOD;
22
+ var FORCED = FAILS_ON_UNDEFINED || !FAILS_ON_NULL || !STRICT_METHOD;
23
23
 
24
24
  // `Array.prototype.sort` method
25
25
  // https://tc39.github.io/ecma262/#sec-array.prototype.sort
@@ -7,6 +7,10 @@ var toObject = require('../internals/to-object');
7
7
  var arraySpeciesCreate = require('../internals/array-species-create');
8
8
  var createProperty = require('../internals/create-property');
9
9
  var arrayMethodHasSpeciesSupport = require('../internals/array-method-has-species-support');
10
+ var arrayMethodUsesToLength = require('../internals/array-method-uses-to-length');
11
+
12
+ var HAS_SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('splice');
13
+ var USES_TO_LENGTH = arrayMethodUsesToLength('splice', { ACCESSORS: true, 0: 0, 1: 2 });
10
14
 
11
15
  var max = Math.max;
12
16
  var min = Math.min;
@@ -16,7 +20,7 @@ var MAXIMUM_ALLOWED_LENGTH_EXCEEDED = 'Maximum allowed length exceeded';
16
20
  // `Array.prototype.splice` method
17
21
  // https://tc39.github.io/ecma262/#sec-array.prototype.splice
18
22
  // with adding support of @@species
19
- $({ target: 'Array', proto: true, forced: !arrayMethodHasSpeciesSupport('splice') }, {
23
+ $({ target: 'Array', proto: true, forced: !HAS_SPECIES_SUPPORT || !USES_TO_LENGTH }, {
20
24
  splice: function splice(start, deleteCount /* , ...items */) {
21
25
  var O = toObject(this);
22
26
  var len = toLength(O.length);
@@ -1,6 +1,6 @@
1
1
  var $ = require('../internals/export');
2
2
  var ArrayBufferModule = require('../internals/array-buffer');
3
- var NATIVE_ARRAY_BUFFER = require('../internals/array-buffer-view-core').NATIVE_ARRAY_BUFFER;
3
+ var NATIVE_ARRAY_BUFFER = require('../internals/array-buffer-native');
4
4
 
5
5
  // `DataView` constructor
6
6
  // https://tc39.github.io/ecma262/#sec-dataview-constructor
@@ -1,5 +1,5 @@
1
1
  var $ = require('../internals/export');
2
- var parseFloat = require('../internals/parse-float');
2
+ var parseFloat = require('../internals/number-parse-float');
3
3
 
4
4
  // `Number.parseFloat` method
5
5
  // https://tc39.github.io/ecma262/#sec-number.parseFloat
@@ -1,5 +1,5 @@
1
1
  var $ = require('../internals/export');
2
- var parseInt = require('../internals/parse-int');
2
+ var parseInt = require('../internals/number-parse-int');
3
3
 
4
4
  // `Number.parseInt` method
5
5
  // https://tc39.github.io/ecma262/#sec-number.parseint
@@ -1,7 +1,7 @@
1
1
  'use strict';
2
2
  var $ = require('../internals/export');
3
3
  var DESCRIPTORS = require('../internals/descriptors');
4
- var FORCED = require('../internals/forced-object-prototype-accessors-methods');
4
+ var FORCED = require('../internals/object-prototype-accessors-forced');
5
5
  var toObject = require('../internals/to-object');
6
6
  var aFunction = require('../internals/a-function');
7
7
  var definePropertyModule = require('../internals/object-define-property');
@@ -1,7 +1,7 @@
1
1
  'use strict';
2
2
  var $ = require('../internals/export');
3
3
  var DESCRIPTORS = require('../internals/descriptors');
4
- var FORCED = require('../internals/forced-object-prototype-accessors-methods');
4
+ var FORCED = require('../internals/object-prototype-accessors-forced');
5
5
  var toObject = require('../internals/to-object');
6
6
  var aFunction = require('../internals/a-function');
7
7
  var definePropertyModule = require('../internals/object-define-property');
@@ -1,7 +1,7 @@
1
1
  'use strict';
2
2
  var $ = require('../internals/export');
3
3
  var DESCRIPTORS = require('../internals/descriptors');
4
- var FORCED = require('../internals/forced-object-prototype-accessors-methods');
4
+ var FORCED = require('../internals/object-prototype-accessors-forced');
5
5
  var toObject = require('../internals/to-object');
6
6
  var toPrimitive = require('../internals/to-primitive');
7
7
  var getPrototypeOf = require('../internals/object-get-prototype-of');
@@ -1,7 +1,7 @@
1
1
  'use strict';
2
2
  var $ = require('../internals/export');
3
3
  var DESCRIPTORS = require('../internals/descriptors');
4
- var FORCED = require('../internals/forced-object-prototype-accessors-methods');
4
+ var FORCED = require('../internals/object-prototype-accessors-forced');
5
5
  var toObject = require('../internals/to-object');
6
6
  var toPrimitive = require('../internals/to-primitive');
7
7
  var getPrototypeOf = require('../internals/object-get-prototype-of');
@@ -1,5 +1,5 @@
1
1
  var $ = require('../internals/export');
2
- var parseFloatImplementation = require('../internals/parse-float');
2
+ var parseFloatImplementation = require('../internals/number-parse-float');
3
3
 
4
4
  // `parseFloat` method
5
5
  // https://tc39.github.io/ecma262/#sec-parsefloat-string
@@ -1,5 +1,5 @@
1
1
  var $ = require('../internals/export');
2
- var parseIntImplementation = require('../internals/parse-int');
2
+ var parseIntImplementation = require('../internals/number-parse-int');
3
3
 
4
4
  // `parseInt` method
5
5
  // https://tc39.github.io/ecma262/#sec-parseint-string-radix
@@ -25,7 +25,7 @@ var perform = require('../internals/perform');
25
25
  var InternalStateModule = require('../internals/internal-state');
26
26
  var isForced = require('../internals/is-forced');
27
27
  var wellKnownSymbol = require('../internals/well-known-symbol');
28
- var V8_VERSION = require('../internals/v8-version');
28
+ var V8_VERSION = require('../internals/engine-v8-version');
29
29
 
30
30
  var SPECIES = wellKnownSymbol('species');
31
31
  var PROMISE = 'Promise';
@@ -1,4 +1,6 @@
1
1
  'use strict';
2
+ // TODO: Remove from `core-js@4` since it's moved to entry points
3
+ require('../modules/es.regexp.exec');
2
4
  var $ = require('../internals/export');
3
5
  var isObject = require('../internals/is-object');
4
6
 
@@ -1,7 +1,7 @@
1
1
  'use strict';
2
2
  var $ = require('../internals/export');
3
3
  var createHTML = require('../internals/create-html');
4
- var forcedStringHTMLMethod = require('../internals/forced-string-html-method');
4
+ var forcedStringHTMLMethod = require('../internals/string-html-forced');
5
5
 
6
6
  // `String.prototype.anchor` method
7
7
  // https://tc39.github.io/ecma262/#sec-string.prototype.anchor
@@ -1,7 +1,7 @@
1
1
  'use strict';
2
2
  var $ = require('../internals/export');
3
3
  var createHTML = require('../internals/create-html');
4
- var forcedStringHTMLMethod = require('../internals/forced-string-html-method');
4
+ var forcedStringHTMLMethod = require('../internals/string-html-forced');
5
5
 
6
6
  // `String.prototype.big` method
7
7
  // https://tc39.github.io/ecma262/#sec-string.prototype.big
@@ -1,7 +1,7 @@
1
1
  'use strict';
2
2
  var $ = require('../internals/export');
3
3
  var createHTML = require('../internals/create-html');
4
- var forcedStringHTMLMethod = require('../internals/forced-string-html-method');
4
+ var forcedStringHTMLMethod = require('../internals/string-html-forced');
5
5
 
6
6
  // `String.prototype.blink` method
7
7
  // https://tc39.github.io/ecma262/#sec-string.prototype.blink
@@ -1,7 +1,7 @@
1
1
  'use strict';
2
2
  var $ = require('../internals/export');
3
3
  var createHTML = require('../internals/create-html');
4
- var forcedStringHTMLMethod = require('../internals/forced-string-html-method');
4
+ var forcedStringHTMLMethod = require('../internals/string-html-forced');
5
5
 
6
6
  // `String.prototype.bold` method
7
7
  // https://tc39.github.io/ecma262/#sec-string.prototype.bold
@@ -1,7 +1,7 @@
1
1
  'use strict';
2
2
  var $ = require('../internals/export');
3
3
  var createHTML = require('../internals/create-html');
4
- var forcedStringHTMLMethod = require('../internals/forced-string-html-method');
4
+ var forcedStringHTMLMethod = require('../internals/string-html-forced');
5
5
 
6
6
  // `String.prototype.fixed` method
7
7
  // https://tc39.github.io/ecma262/#sec-string.prototype.fixed
@@ -1,7 +1,7 @@
1
1
  'use strict';
2
2
  var $ = require('../internals/export');
3
3
  var createHTML = require('../internals/create-html');
4
- var forcedStringHTMLMethod = require('../internals/forced-string-html-method');
4
+ var forcedStringHTMLMethod = require('../internals/string-html-forced');
5
5
 
6
6
  // `String.prototype.fontcolor` method
7
7
  // https://tc39.github.io/ecma262/#sec-string.prototype.fontcolor
@@ -1,7 +1,7 @@
1
1
  'use strict';
2
2
  var $ = require('../internals/export');
3
3
  var createHTML = require('../internals/create-html');
4
- var forcedStringHTMLMethod = require('../internals/forced-string-html-method');
4
+ var forcedStringHTMLMethod = require('../internals/string-html-forced');
5
5
 
6
6
  // `String.prototype.fontsize` method
7
7
  // https://tc39.github.io/ecma262/#sec-string.prototype.fontsize
@@ -1,7 +1,7 @@
1
1
  'use strict';
2
2
  var $ = require('../internals/export');
3
3
  var createHTML = require('../internals/create-html');
4
- var forcedStringHTMLMethod = require('../internals/forced-string-html-method');
4
+ var forcedStringHTMLMethod = require('../internals/string-html-forced');
5
5
 
6
6
  // `String.prototype.italics` method
7
7
  // https://tc39.github.io/ecma262/#sec-string.prototype.italics
@@ -1,7 +1,7 @@
1
1
  'use strict';
2
2
  var $ = require('../internals/export');
3
3
  var createHTML = require('../internals/create-html');
4
- var forcedStringHTMLMethod = require('../internals/forced-string-html-method');
4
+ var forcedStringHTMLMethod = require('../internals/string-html-forced');
5
5
 
6
6
  // `String.prototype.link` method
7
7
  // https://tc39.github.io/ecma262/#sec-string.prototype.link
@@ -1,7 +1,7 @@
1
1
  'use strict';
2
2
  var $ = require('../internals/export');
3
3
  var $padEnd = require('../internals/string-pad').end;
4
- var WEBKIT_BUG = require('../internals/webkit-string-pad-bug');
4
+ var WEBKIT_BUG = require('../internals/string-pad-webkit-bug');
5
5
 
6
6
  // `String.prototype.padEnd` method
7
7
  // https://tc39.github.io/ecma262/#sec-string.prototype.padend
@@ -1,7 +1,7 @@
1
1
  'use strict';
2
2
  var $ = require('../internals/export');
3
3
  var $padStart = require('../internals/string-pad').start;
4
- var WEBKIT_BUG = require('../internals/webkit-string-pad-bug');
4
+ var WEBKIT_BUG = require('../internals/string-pad-webkit-bug');
5
5
 
6
6
  // `String.prototype.padStart` method
7
7
  // https://tc39.github.io/ecma262/#sec-string.prototype.padstart
@@ -20,6 +20,10 @@ var maybeToString = function (it) {
20
20
 
21
21
  // @@replace logic
22
22
  fixRegExpWellKnownSymbolLogic('replace', 2, function (REPLACE, nativeReplace, maybeCallNative, reason) {
23
+ var REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE = reason.REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE;
24
+ var REPLACE_KEEPS_$0 = reason.REPLACE_KEEPS_$0;
25
+ var UNSAFE_SUBSTITUTE = REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE ? '$' : '$0';
26
+
23
27
  return [
24
28
  // `String.prototype.replace` method
25
29
  // https://tc39.github.io/ecma262/#sec-string.prototype.replace
@@ -33,7 +37,10 @@ fixRegExpWellKnownSymbolLogic('replace', 2, function (REPLACE, nativeReplace, ma
33
37
  // `RegExp.prototype[@@replace]` method
34
38
  // https://tc39.github.io/ecma262/#sec-regexp.prototype-@@replace
35
39
  function (regexp, replaceValue) {
36
- if (reason.REPLACE_KEEPS_$0 || (typeof replaceValue === 'string' && replaceValue.indexOf('$0') === -1)) {
40
+ if (
41
+ (!REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE && REPLACE_KEEPS_$0) ||
42
+ (typeof replaceValue === 'string' && replaceValue.indexOf(UNSAFE_SUBSTITUTE) === -1)
43
+ ) {
37
44
  var res = maybeCallNative(nativeReplace, regexp, this, replaceValue);
38
45
  if (res.done) return res.value;
39
46
  }
@@ -1,7 +1,7 @@
1
1
  'use strict';
2
2
  var $ = require('../internals/export');
3
3
  var createHTML = require('../internals/create-html');
4
- var forcedStringHTMLMethod = require('../internals/forced-string-html-method');
4
+ var forcedStringHTMLMethod = require('../internals/string-html-forced');
5
5
 
6
6
  // `String.prototype.small` method
7
7
  // https://tc39.github.io/ecma262/#sec-string.prototype.small