core-js-pure 3.18.2 → 3.19.2

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 (293) hide show
  1. package/es/date/to-primitive.js +2 -3
  2. package/es/date/to-string.js +2 -4
  3. package/es/instance/at.js +6 -5
  4. package/es/instance/bind.js +3 -2
  5. package/es/instance/code-point-at.js +4 -3
  6. package/es/instance/concat.js +3 -2
  7. package/es/instance/copy-within.js +3 -2
  8. package/es/instance/ends-with.js +4 -3
  9. package/es/instance/entries.js +3 -2
  10. package/es/instance/every.js +3 -2
  11. package/es/instance/fill.js +3 -2
  12. package/es/instance/filter.js +3 -2
  13. package/es/instance/find-index.js +3 -2
  14. package/es/instance/find.js +3 -2
  15. package/es/instance/flags.js +2 -1
  16. package/es/instance/flat-map.js +3 -2
  17. package/es/instance/flat.js +3 -2
  18. package/es/instance/for-each.js +3 -2
  19. package/es/instance/includes.js +6 -5
  20. package/es/instance/index-of.js +3 -2
  21. package/es/instance/keys.js +3 -2
  22. package/es/instance/last-index-of.js +3 -2
  23. package/es/instance/map.js +3 -2
  24. package/es/instance/match-all.js +4 -3
  25. package/es/instance/pad-end.js +4 -3
  26. package/es/instance/pad-start.js +4 -3
  27. package/es/instance/reduce-right.js +3 -2
  28. package/es/instance/reduce.js +3 -2
  29. package/es/instance/repeat.js +4 -3
  30. package/es/instance/replace-all.js +4 -3
  31. package/es/instance/reverse.js +3 -2
  32. package/es/instance/slice.js +3 -2
  33. package/es/instance/some.js +3 -2
  34. package/es/instance/sort.js +3 -2
  35. package/es/instance/splice.js +3 -2
  36. package/es/instance/starts-with.js +4 -3
  37. package/es/instance/trim-end.js +4 -3
  38. package/es/instance/trim-left.js +4 -3
  39. package/es/instance/trim-right.js +4 -3
  40. package/es/instance/trim-start.js +4 -3
  41. package/es/instance/trim.js +4 -3
  42. package/es/instance/values.js +3 -2
  43. package/es/json/stringify.js +4 -3
  44. package/es/promise/all-settled.js +2 -1
  45. package/es/promise/any.js +2 -1
  46. package/es/regexp/flags.js +3 -4
  47. package/es/regexp/match.js +2 -1
  48. package/es/regexp/replace.js +2 -1
  49. package/es/regexp/search.js +2 -1
  50. package/es/regexp/split.js +2 -1
  51. package/es/regexp/test.js +2 -3
  52. package/es/regexp/to-string.js +2 -3
  53. package/es/string/iterator.js +2 -5
  54. package/features/instance/at.js +6 -5
  55. package/features/instance/code-points.js +4 -3
  56. package/features/instance/filter-out.js +3 -2
  57. package/features/instance/filter-reject.js +3 -2
  58. package/features/instance/find-last-index.js +3 -2
  59. package/features/instance/find-last.js +3 -2
  60. package/features/instance/group-by.js +3 -2
  61. package/features/instance/unique-by.js +3 -2
  62. package/features/map/from.js +3 -2
  63. package/features/map/group-by.js +2 -1
  64. package/features/map/key-by.js +2 -1
  65. package/features/map/of.js +3 -2
  66. package/features/promise/try.js +2 -1
  67. package/features/set/from.js +3 -2
  68. package/features/set/of.js +3 -2
  69. package/features/weak-map/from.js +3 -2
  70. package/features/weak-map/of.js +3 -2
  71. package/features/weak-set/from.js +3 -2
  72. package/features/weak-set/of.js +3 -2
  73. package/internals/a-callable.js +3 -0
  74. package/internals/a-constructor.js +3 -0
  75. package/internals/a-possible-prototype.js +5 -1
  76. package/internals/an-instance.js +8 -3
  77. package/internals/an-object.js +4 -0
  78. package/internals/array-buffer-native.js +1 -1
  79. package/internals/array-buffer-non-extensible.js +10 -0
  80. package/internals/array-from-async.js +1 -1
  81. package/internals/array-from.js +6 -2
  82. package/internals/array-group-by.js +6 -3
  83. package/internals/array-iteration-from-last.js +1 -1
  84. package/internals/array-iteration.js +5 -4
  85. package/internals/array-last-index-of.js +2 -1
  86. package/internals/array-reduce.js +3 -0
  87. package/internals/array-slice-simple.js +17 -0
  88. package/internals/array-slice.js +3 -0
  89. package/internals/array-sort.js +10 -11
  90. package/internals/array-species-constructor.js +2 -0
  91. package/internals/array-unique-by.js +13 -9
  92. package/internals/async-from-sync-iterator.js +4 -3
  93. package/internals/async-iterator-create-proxy.js +4 -3
  94. package/internals/async-iterator-iteration.js +5 -2
  95. package/internals/classof-raw.js +5 -2
  96. package/internals/classof.js +3 -0
  97. package/internals/clear-error-stack.js +20 -0
  98. package/internals/collection-add-all.js +3 -2
  99. package/internals/collection-delete-all.js +3 -2
  100. package/internals/collection-from.js +7 -4
  101. package/internals/collection-of.js +3 -4
  102. package/internals/collection-strong.js +11 -9
  103. package/internals/collection-weak.js +10 -6
  104. package/internals/collection.js +5 -3
  105. package/internals/composite-key.js +9 -2
  106. package/internals/create-html.js +3 -1
  107. package/internals/date-to-iso-string.js +23 -13
  108. package/internals/date-to-primitive.js +3 -0
  109. package/internals/define-iterator.js +2 -1
  110. package/internals/engine-v8-version.js +10 -4
  111. package/internals/error-stack-installable.js +10 -0
  112. package/internals/export.js +6 -4
  113. package/internals/flatten-into-array.js +4 -1
  114. package/internals/function-apply.js +9 -0
  115. package/internals/function-bind-context.js +5 -17
  116. package/internals/function-bind.js +15 -9
  117. package/internals/function-call.js +5 -0
  118. package/internals/function-uncurry-this.js +12 -0
  119. package/internals/get-async-iterator.js +2 -1
  120. package/internals/get-iterator.js +7 -2
  121. package/internals/get-substitution.js +10 -7
  122. package/internals/has-own-property.js +3 -2
  123. package/internals/host-report-errors.js +1 -1
  124. package/internals/ieee754.js +24 -6
  125. package/internals/indexed-object.js +5 -2
  126. package/internals/inspect-source.js +3 -2
  127. package/internals/install-error-cause.js +1 -1
  128. package/internals/internal-metadata.js +4 -7
  129. package/internals/internal-state.js +9 -7
  130. package/internals/is-callable.js +1 -1
  131. package/internals/is-constructor.js +6 -4
  132. package/internals/is-iterable.js +4 -2
  133. package/internals/is-object.js +1 -1
  134. package/internals/is-symbol.js +6 -2
  135. package/internals/iterate.js +14 -6
  136. package/internals/iterator-close.js +2 -1
  137. package/internals/iterator-create-proxy.js +4 -3
  138. package/internals/map-emplace.js +8 -3
  139. package/internals/map-upsert.js +12 -4
  140. package/internals/math-scale.js +9 -12
  141. package/internals/microtask.js +6 -4
  142. package/internals/normalize-string-argument.js +5 -0
  143. package/internals/not-a-regexp.js +3 -0
  144. package/internals/number-parse-float.js +8 -6
  145. package/internals/number-parse-int.js +4 -2
  146. package/internals/numeric-range-iterator.js +4 -0
  147. package/internals/object-assign.js +5 -2
  148. package/internals/object-define-properties.js +3 -1
  149. package/internals/object-define-property.js +2 -0
  150. package/internals/object-get-own-property-descriptor.js +2 -1
  151. package/internals/object-get-own-property-names-external.js +4 -4
  152. package/internals/object-get-prototype-of.js +2 -1
  153. package/internals/object-is-extensible.js +16 -0
  154. package/internals/object-is-prototype-of.js +3 -0
  155. package/internals/object-keys-internal.js +5 -2
  156. package/internals/object-set-prototype-of.js +4 -3
  157. package/internals/object-to-array.js +7 -3
  158. package/internals/ordinary-to-primitive.js +7 -3
  159. package/internals/own-keys.js +4 -1
  160. package/internals/reflect-metadata.js +9 -3
  161. package/internals/regexp-exec-abstract.js +6 -2
  162. package/internals/require-object-coercible.js +4 -0
  163. package/internals/set-global.js +4 -2
  164. package/internals/shared.js +1 -1
  165. package/internals/string-multibyte.js +13 -4
  166. package/internals/string-pad.js +6 -3
  167. package/internals/string-punycode-to-ascii.js +34 -20
  168. package/internals/string-repeat.js +3 -0
  169. package/internals/string-trim.js +4 -2
  170. package/internals/task.js +11 -11
  171. package/internals/this-number-value.js +2 -4
  172. package/internals/to-index.js +3 -0
  173. package/internals/to-object.js +3 -0
  174. package/internals/to-positive-integer.js +3 -0
  175. package/internals/to-primitive.js +4 -1
  176. package/internals/to-property-key.js +1 -1
  177. package/internals/to-string.js +3 -0
  178. package/internals/try-to-string.js +4 -0
  179. package/internals/uid.js +4 -1
  180. package/internals/well-known-symbol.js +5 -1
  181. package/modules/es.aggregate-error.js +27 -11
  182. package/modules/es.array.concat.js +2 -0
  183. package/modules/es.array.index-of.js +7 -5
  184. package/modules/es.array.join.js +3 -2
  185. package/modules/es.array.of.js +3 -1
  186. package/modules/es.array.reduce.js +2 -1
  187. package/modules/es.array.reverse.js +3 -2
  188. package/modules/es.array.slice.js +4 -2
  189. package/modules/es.array.sort.js +7 -4
  190. package/modules/es.array.splice.js +2 -0
  191. package/modules/es.date.get-year.js +3 -2
  192. package/modules/es.date.now.js +6 -1
  193. package/modules/es.date.set-year.js +6 -4
  194. package/modules/es.date.to-json.js +3 -2
  195. package/modules/es.escape.js +12 -5
  196. package/modules/es.function.has-instance.js +3 -2
  197. package/modules/es.json.stringify.js +18 -7
  198. package/modules/es.map.js +1 -1
  199. package/modules/es.number.to-fixed.js +19 -13
  200. package/modules/es.number.to-precision.js +6 -5
  201. package/modules/es.object.is-extensible.js +4 -10
  202. package/modules/es.object.is-frozen.js +6 -2
  203. package/modules/es.object.is-sealed.js +6 -2
  204. package/modules/es.promise.all-settled.js +2 -2
  205. package/modules/es.promise.any.js +5 -4
  206. package/modules/es.promise.js +22 -18
  207. package/modules/es.reflect.apply.js +4 -10
  208. package/modules/es.reflect.construct.js +10 -5
  209. package/modules/es.reflect.get.js +2 -1
  210. package/modules/es.reflect.is-extensible.js +2 -4
  211. package/modules/es.reflect.set.js +2 -1
  212. package/modules/es.set.js +1 -1
  213. package/modules/es.string.at-alternative.js +4 -1
  214. package/modules/es.string.ends-with.js +6 -4
  215. package/modules/es.string.from-code-point.js +7 -4
  216. package/modules/es.string.includes.js +8 -2
  217. package/modules/es.string.match-all.js +25 -19
  218. package/modules/es.string.raw.js +6 -6
  219. package/modules/es.string.replace-all.js +19 -13
  220. package/modules/es.string.starts-with.js +6 -4
  221. package/modules/es.string.substr.js +3 -2
  222. package/modules/es.symbol.js +34 -21
  223. package/modules/es.unescape.js +14 -9
  224. package/modules/es.weak-map.js +15 -15
  225. package/modules/esnext.array.is-template-object.js +1 -1
  226. package/modules/esnext.async-iterator.as-indexed-pairs.js +2 -1
  227. package/modules/esnext.async-iterator.constructor.js +1 -1
  228. package/modules/esnext.async-iterator.drop.js +2 -1
  229. package/modules/esnext.async-iterator.filter.js +2 -1
  230. package/modules/esnext.async-iterator.flat-map.js +3 -2
  231. package/modules/esnext.async-iterator.from.js +4 -4
  232. package/modules/esnext.async-iterator.map.js +2 -1
  233. package/modules/esnext.async-iterator.reduce.js +4 -1
  234. package/modules/esnext.async-iterator.take.js +4 -2
  235. package/modules/esnext.composite-key.js +5 -1
  236. package/modules/esnext.composite-symbol.js +3 -2
  237. package/modules/esnext.iterator.as-indexed-pairs.js +2 -1
  238. package/modules/esnext.iterator.constructor.js +1 -1
  239. package/modules/esnext.iterator.drop.js +4 -2
  240. package/modules/esnext.iterator.filter.js +2 -1
  241. package/modules/esnext.iterator.flat-map.js +7 -3
  242. package/modules/esnext.iterator.from.js +4 -4
  243. package/modules/esnext.iterator.map.js +2 -1
  244. package/modules/esnext.iterator.reduce.js +3 -0
  245. package/modules/esnext.iterator.take.js +2 -1
  246. package/modules/esnext.map.delete-all.js +2 -4
  247. package/modules/esnext.map.emplace.js +2 -2
  248. package/modules/esnext.map.every.js +1 -1
  249. package/modules/esnext.map.filter.js +5 -4
  250. package/modules/esnext.map.find-key.js +1 -1
  251. package/modules/esnext.map.find.js +1 -1
  252. package/modules/esnext.map.group-by.js +6 -2
  253. package/modules/esnext.map.includes.js +1 -1
  254. package/modules/esnext.map.key-by.js +2 -1
  255. package/modules/esnext.map.map-keys.js +5 -4
  256. package/modules/esnext.map.map-values.js +5 -4
  257. package/modules/esnext.map.reduce.js +3 -0
  258. package/modules/esnext.map.some.js +1 -1
  259. package/modules/esnext.map.update-or-insert.js +2 -2
  260. package/modules/esnext.map.update.js +11 -4
  261. package/modules/esnext.map.upsert.js +2 -2
  262. package/modules/esnext.math.seeded-prng.js +3 -1
  263. package/modules/esnext.number.from-string.js +12 -3
  264. package/modules/esnext.observable.js +14 -9
  265. package/modules/esnext.reflect.get-metadata-keys.js +5 -10
  266. package/modules/esnext.set.add-all.js +2 -4
  267. package/modules/esnext.set.delete-all.js +2 -4
  268. package/modules/esnext.set.difference.js +3 -2
  269. package/modules/esnext.set.every.js +1 -1
  270. package/modules/esnext.set.filter.js +4 -3
  271. package/modules/esnext.set.find.js +1 -1
  272. package/modules/esnext.set.intersection.js +3 -2
  273. package/modules/esnext.set.is-disjoint-from.js +3 -2
  274. package/modules/esnext.set.is-subset-of.js +3 -2
  275. package/modules/esnext.set.is-superset-of.js +3 -2
  276. package/modules/esnext.set.join.js +9 -4
  277. package/modules/esnext.set.map.js +5 -4
  278. package/modules/esnext.set.reduce.js +3 -0
  279. package/modules/esnext.set.some.js +1 -1
  280. package/modules/esnext.set.symmetric-difference.js +3 -2
  281. package/modules/esnext.weak-map.delete-all.js +2 -4
  282. package/modules/esnext.weak-map.emplace.js +2 -2
  283. package/modules/esnext.weak-map.upsert.js +2 -2
  284. package/modules/esnext.weak-set.add-all.js +2 -4
  285. package/modules/esnext.weak-set.delete-all.js +2 -4
  286. package/modules/web.timers.js +5 -4
  287. package/modules/web.url-search-params.js +122 -104
  288. package/modules/web.url.js +664 -628
  289. package/package.json +2 -2
  290. package/stable/instance/entries.js +6 -4
  291. package/stable/instance/for-each.js +6 -4
  292. package/stable/instance/keys.js +6 -4
  293. package/stable/instance/values.js +6 -4
@@ -1,25 +1,19 @@
1
1
  var $ = require('../internals/export');
2
- var getBuiltIn = require('../internals/get-built-in');
2
+ var functionApply = require('../internals/function-apply');
3
3
  var aCallable = require('../internals/a-callable');
4
4
  var anObject = require('../internals/an-object');
5
5
  var fails = require('../internals/fails');
6
6
 
7
- var nativeApply = getBuiltIn('Reflect', 'apply');
8
- var functionApply = Function.apply;
9
-
10
7
  // MS Edge argumentsList argument is optional
11
8
  var OPTIONAL_ARGUMENTS_LIST = !fails(function () {
12
- nativeApply(function () { /* empty */ });
9
+ // eslint-disable-next-line es/no-reflect -- required for testing
10
+ Reflect.apply(function () { /* empty */ });
13
11
  });
14
12
 
15
13
  // `Reflect.apply` method
16
14
  // https://tc39.es/ecma262/#sec-reflect.apply
17
15
  $({ target: 'Reflect', stat: true, forced: OPTIONAL_ARGUMENTS_LIST }, {
18
16
  apply: function apply(target, thisArgument, argumentsList) {
19
- aCallable(target);
20
- anObject(argumentsList);
21
- return nativeApply
22
- ? nativeApply(target, thisArgument, argumentsList)
23
- : functionApply.call(target, thisArgument, argumentsList);
17
+ return functionApply(aCallable(target), thisArgument, anObject(argumentsList));
24
18
  }
25
19
  });
@@ -1,13 +1,16 @@
1
1
  var $ = require('../internals/export');
2
2
  var getBuiltIn = require('../internals/get-built-in');
3
+ var apply = require('../internals/function-apply');
4
+ var bind = require('../internals/function-bind');
3
5
  var aConstructor = require('../internals/a-constructor');
4
6
  var anObject = require('../internals/an-object');
5
7
  var isObject = require('../internals/is-object');
6
8
  var create = require('../internals/object-create');
7
- var bind = require('../internals/function-bind');
8
9
  var fails = require('../internals/fails');
9
10
 
10
11
  var nativeConstruct = getBuiltIn('Reflect', 'construct');
12
+ var ObjectPrototype = Object.prototype;
13
+ var push = [].push;
11
14
 
12
15
  // `Reflect.construct` method
13
16
  // https://tc39.es/ecma262/#sec-reflect.construct
@@ -17,9 +20,11 @@ var NEW_TARGET_BUG = fails(function () {
17
20
  function F() { /* empty */ }
18
21
  return !(nativeConstruct(function () { /* empty */ }, [], F) instanceof F);
19
22
  });
23
+
20
24
  var ARGS_BUG = !fails(function () {
21
25
  nativeConstruct(function () { /* empty */ });
22
26
  });
27
+
23
28
  var FORCED = NEW_TARGET_BUG || ARGS_BUG;
24
29
 
25
30
  $({ target: 'Reflect', stat: true, forced: FORCED, sham: FORCED }, {
@@ -39,13 +44,13 @@ $({ target: 'Reflect', stat: true, forced: FORCED, sham: FORCED }, {
39
44
  }
40
45
  // w/o altered newTarget, lot of arguments case
41
46
  var $args = [null];
42
- $args.push.apply($args, args);
43
- return new (bind.apply(Target, $args))();
47
+ apply(push, $args, args);
48
+ return new (apply(bind, Target, $args))();
44
49
  }
45
50
  // with altered newTarget, not support built-in constructors
46
51
  var proto = newTarget.prototype;
47
- var instance = create(isObject(proto) ? proto : Object.prototype);
48
- var result = Function.apply.call(Target, instance, args);
52
+ var instance = create(isObject(proto) ? proto : ObjectPrototype);
53
+ var result = apply(Target, instance, args);
49
54
  return isObject(result) ? result : instance;
50
55
  }
51
56
  });
@@ -1,4 +1,5 @@
1
1
  var $ = require('../internals/export');
2
+ var call = require('../internals/function-call');
2
3
  var isObject = require('../internals/is-object');
3
4
  var anObject = require('../internals/an-object');
4
5
  var isDataDescriptor = require('../internals/is-data-descriptor');
@@ -14,7 +15,7 @@ function get(target, propertyKey /* , receiver */) {
14
15
  descriptor = getOwnPropertyDescriptorModule.f(target, propertyKey);
15
16
  if (descriptor) return isDataDescriptor(descriptor)
16
17
  ? descriptor.value
17
- : descriptor.get === undefined ? undefined : descriptor.get.call(receiver);
18
+ : descriptor.get === undefined ? undefined : call(descriptor.get, receiver);
18
19
  if (isObject(prototype = getPrototypeOf(target))) return get(prototype, propertyKey, receiver);
19
20
  }
20
21
 
@@ -1,14 +1,12 @@
1
1
  var $ = require('../internals/export');
2
2
  var anObject = require('../internals/an-object');
3
-
4
- // eslint-disable-next-line es/no-object-isextensible -- safe
5
- var objectIsExtensible = Object.isExtensible;
3
+ var $isExtensible = require('../internals/object-is-extensible');
6
4
 
7
5
  // `Reflect.isExtensible` method
8
6
  // https://tc39.es/ecma262/#sec-reflect.isextensible
9
7
  $({ target: 'Reflect', stat: true }, {
10
8
  isExtensible: function isExtensible(target) {
11
9
  anObject(target);
12
- return objectIsExtensible ? objectIsExtensible(target) : true;
10
+ return $isExtensible(target);
13
11
  }
14
12
  });
@@ -1,4 +1,5 @@
1
1
  var $ = require('../internals/export');
2
+ var call = require('../internals/function-call');
2
3
  var anObject = require('../internals/an-object');
3
4
  var isObject = require('../internals/is-object');
4
5
  var isDataDescriptor = require('../internals/is-data-descriptor');
@@ -30,7 +31,7 @@ function set(target, propertyKey, V /* , receiver */) {
30
31
  } else {
31
32
  setter = ownDescriptor.set;
32
33
  if (setter === undefined) return false;
33
- setter.call(receiver, V);
34
+ call(setter, receiver, V);
34
35
  } return true;
35
36
  }
36
37
 
package/modules/es.set.js CHANGED
@@ -4,6 +4,6 @@ var collectionStrong = require('../internals/collection-strong');
4
4
 
5
5
  // `Set` constructor
6
6
  // https://tc39.es/ecma262/#sec-set-objects
7
- module.exports = collection('Set', function (init) {
7
+ collection('Set', function (init) {
8
8
  return function Set() { return init(this, arguments.length ? arguments[0] : undefined); };
9
9
  }, collectionStrong);
@@ -1,10 +1,13 @@
1
1
  'use strict';
2
2
  var $ = require('../internals/export');
3
+ var uncurryThis = require('../internals/function-uncurry-this');
3
4
  var requireObjectCoercible = require('../internals/require-object-coercible');
4
5
  var toIntegerOrInfinity = require('../internals/to-integer-or-infinity');
5
6
  var toString = require('../internals/to-string');
6
7
  var fails = require('../internals/fails');
7
8
 
9
+ var charAt = uncurryThis(''.charAt);
10
+
8
11
  var FORCED = fails(function () {
9
12
  return '𠮷'.at(0) !== '\uD842';
10
13
  });
@@ -17,6 +20,6 @@ $({ target: 'String', proto: true, forced: FORCED }, {
17
20
  var len = S.length;
18
21
  var relativeIndex = toIntegerOrInfinity(index);
19
22
  var k = relativeIndex >= 0 ? relativeIndex : len + relativeIndex;
20
- return (k < 0 || k >= len) ? undefined : S.charAt(k);
23
+ return (k < 0 || k >= len) ? undefined : charAt(S, k);
21
24
  }
22
25
  });
@@ -1,5 +1,6 @@
1
1
  'use strict';
2
2
  var $ = require('../internals/export');
3
+ var uncurryThis = require('../internals/function-uncurry-this');
3
4
  var getOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;
4
5
  var toLength = require('../internals/to-length');
5
6
  var toString = require('../internals/to-string');
@@ -9,7 +10,8 @@ var correctIsRegExpLogic = require('../internals/correct-is-regexp-logic');
9
10
  var IS_PURE = require('../internals/is-pure');
10
11
 
11
12
  // eslint-disable-next-line es/no-string-prototype-endswith -- safe
12
- var $endsWith = ''.endsWith;
13
+ var un$EndsWith = uncurryThis(''.endsWith);
14
+ var slice = uncurryThis(''.slice);
13
15
  var min = Math.min;
14
16
 
15
17
  var CORRECT_IS_REGEXP_LOGIC = correctIsRegExpLogic('endsWith');
@@ -29,8 +31,8 @@ $({ target: 'String', proto: true, forced: !MDN_POLYFILL_BUG && !CORRECT_IS_REGE
29
31
  var len = that.length;
30
32
  var end = endPosition === undefined ? len : min(toLength(endPosition), len);
31
33
  var search = toString(searchString);
32
- return $endsWith
33
- ? $endsWith.call(that, search, end)
34
- : that.slice(end - search.length, end) === search;
34
+ return un$EndsWith
35
+ ? un$EndsWith(that, search, end)
36
+ : slice(that, end - search.length, end) === search;
35
37
  }
36
38
  });
@@ -1,9 +1,13 @@
1
1
  var $ = require('../internals/export');
2
+ var global = require('../internals/global');
3
+ var uncurryThis = require('../internals/function-uncurry-this');
2
4
  var toAbsoluteIndex = require('../internals/to-absolute-index');
3
5
 
6
+ var RangeError = global.RangeError;
4
7
  var fromCharCode = String.fromCharCode;
5
8
  // eslint-disable-next-line es/no-string-fromcodepoint -- required for testing
6
9
  var $fromCodePoint = String.fromCodePoint;
10
+ var join = uncurryThis([].join);
7
11
 
8
12
  // length should be 1, old FF problem
9
13
  var INCORRECT_LENGTH = !!$fromCodePoint && $fromCodePoint.length != 1;
@@ -20,10 +24,9 @@ $({ target: 'String', stat: true, forced: INCORRECT_LENGTH }, {
20
24
  while (length > i) {
21
25
  code = +arguments[i++];
22
26
  if (toAbsoluteIndex(code, 0x10FFFF) !== code) throw RangeError(code + ' is not a valid code point');
23
- elements.push(code < 0x10000
27
+ elements[i] = code < 0x10000
24
28
  ? fromCharCode(code)
25
- : fromCharCode(((code -= 0x10000) >> 10) + 0xD800, code % 0x400 + 0xDC00)
26
- );
27
- } return elements.join('');
29
+ : fromCharCode(((code -= 0x10000) >> 10) + 0xD800, code % 0x400 + 0xDC00);
30
+ } return join(elements, '');
28
31
  }
29
32
  });
@@ -1,15 +1,21 @@
1
1
  'use strict';
2
2
  var $ = require('../internals/export');
3
+ var uncurryThis = require('../internals/function-uncurry-this');
3
4
  var notARegExp = require('../internals/not-a-regexp');
4
5
  var requireObjectCoercible = require('../internals/require-object-coercible');
5
6
  var toString = require('../internals/to-string');
6
7
  var correctIsRegExpLogic = require('../internals/correct-is-regexp-logic');
7
8
 
9
+ var stringIndexOf = uncurryThis(''.indexOf);
10
+
8
11
  // `String.prototype.includes` method
9
12
  // https://tc39.es/ecma262/#sec-string.prototype.includes
10
13
  $({ target: 'String', proto: true, forced: !correctIsRegExpLogic('includes') }, {
11
14
  includes: function includes(searchString /* , position = 0 */) {
12
- return !!~toString(requireObjectCoercible(this))
13
- .indexOf(toString(notARegExp(searchString)), arguments.length > 1 ? arguments[1] : undefined);
15
+ return !!~stringIndexOf(
16
+ toString(requireObjectCoercible(this)),
17
+ toString(notARegExp(searchString)),
18
+ arguments.length > 1 ? arguments[1] : undefined
19
+ );
14
20
  }
15
21
  });
@@ -1,14 +1,18 @@
1
1
  'use strict';
2
2
  /* eslint-disable es/no-string-prototype-matchall -- safe */
3
3
  var $ = require('../internals/export');
4
+ var global = require('../internals/global');
5
+ var call = require('../internals/function-call');
6
+ var uncurryThis = require('../internals/function-uncurry-this');
4
7
  var createIteratorConstructor = require('../internals/create-iterator-constructor');
5
8
  var requireObjectCoercible = require('../internals/require-object-coercible');
6
9
  var toLength = require('../internals/to-length');
7
10
  var toString = require('../internals/to-string');
8
11
  var anObject = require('../internals/an-object');
9
12
  var classof = require('../internals/classof-raw');
13
+ var isPrototypeOf = require('../internals/object-is-prototype-of');
10
14
  var isRegExp = require('../internals/is-regexp');
11
- var getRegExpFlags = require('../internals/regexp-flags');
15
+ var regExpFlags = require('../internals/regexp-flags');
12
16
  var getMethod = require('../internals/get-method');
13
17
  var redefine = require('../internals/redefine');
14
18
  var fails = require('../internals/fails');
@@ -25,19 +29,21 @@ var REGEXP_STRING_ITERATOR = REGEXP_STRING + ' Iterator';
25
29
  var setInternalState = InternalStateModule.set;
26
30
  var getInternalState = InternalStateModule.getterFor(REGEXP_STRING_ITERATOR);
27
31
  var RegExpPrototype = RegExp.prototype;
28
- var nativeMatchAll = ''.matchAll;
32
+ var TypeError = global.TypeError;
33
+ var getFlags = uncurryThis(regExpFlags);
34
+ var stringIndexOf = uncurryThis(''.indexOf);
35
+ var un$MatchAll = uncurryThis(''.matchAll);
29
36
 
30
- var WORKS_WITH_NON_GLOBAL_REGEX = !!nativeMatchAll && !fails(function () {
31
- 'a'.matchAll(/./);
37
+ var WORKS_WITH_NON_GLOBAL_REGEX = !!un$MatchAll && !fails(function () {
38
+ un$MatchAll('a', /./);
32
39
  });
33
40
 
34
- // eslint-disable-next-line max-len -- ignore
35
- var $RegExpStringIterator = createIteratorConstructor(function RegExpStringIterator(regexp, string, global, fullUnicode) {
41
+ var $RegExpStringIterator = createIteratorConstructor(function RegExpStringIterator(regexp, string, $global, fullUnicode) {
36
42
  setInternalState(this, {
37
43
  type: REGEXP_STRING_ITERATOR,
38
44
  regexp: regexp,
39
45
  string: string,
40
- global: global,
46
+ global: $global,
41
47
  unicode: fullUnicode,
42
48
  done: false
43
49
  });
@@ -59,18 +65,18 @@ var $RegExpStringIterator = createIteratorConstructor(function RegExpStringItera
59
65
  var $matchAll = function (string) {
60
66
  var R = anObject(this);
61
67
  var S = toString(string);
62
- var C, flagsValue, flags, matcher, global, fullUnicode;
68
+ var C, flagsValue, flags, matcher, $global, fullUnicode;
63
69
  C = speciesConstructor(R, RegExp);
64
70
  flagsValue = R.flags;
65
- if (flagsValue === undefined && R instanceof RegExp && !('flags' in RegExpPrototype)) {
66
- flagsValue = getRegExpFlags.call(R);
71
+ if (flagsValue === undefined && isPrototypeOf(RegExpPrototype, R) && !('flags' in RegExpPrototype)) {
72
+ flagsValue = getFlags(R);
67
73
  }
68
74
  flags = flagsValue === undefined ? '' : toString(flagsValue);
69
75
  matcher = new C(C === RegExp ? R.source : R, flags);
70
- global = !!~flags.indexOf('g');
71
- fullUnicode = !!~flags.indexOf('u');
76
+ $global = !!~stringIndexOf(flags, 'g');
77
+ fullUnicode = !!~stringIndexOf(flags, 'u');
72
78
  matcher.lastIndex = toLength(R.lastIndex);
73
- return new $RegExpStringIterator(matcher, S, global, fullUnicode);
79
+ return new $RegExpStringIterator(matcher, S, $global, fullUnicode);
74
80
  };
75
81
 
76
82
  // `String.prototype.matchAll` method
@@ -83,18 +89,18 @@ $({ target: 'String', proto: true, forced: WORKS_WITH_NON_GLOBAL_REGEX }, {
83
89
  if (isRegExp(regexp)) {
84
90
  flags = toString(requireObjectCoercible('flags' in RegExpPrototype
85
91
  ? regexp.flags
86
- : getRegExpFlags.call(regexp)
92
+ : getFlags(regexp)
87
93
  ));
88
- if (!~flags.indexOf('g')) throw TypeError('`.matchAll` does not allow non-global regexes');
94
+ if (!~stringIndexOf(flags, 'g')) throw TypeError('`.matchAll` does not allow non-global regexes');
89
95
  }
90
- if (WORKS_WITH_NON_GLOBAL_REGEX) return nativeMatchAll.apply(O, arguments);
96
+ if (WORKS_WITH_NON_GLOBAL_REGEX) return un$MatchAll(O, regexp);
91
97
  matcher = getMethod(regexp, MATCH_ALL);
92
98
  if (matcher === undefined && IS_PURE && classof(regexp) == 'RegExp') matcher = $matchAll;
93
- if (matcher) return matcher.call(regexp, O);
94
- } else if (WORKS_WITH_NON_GLOBAL_REGEX) return nativeMatchAll.apply(O, arguments);
99
+ if (matcher) return call(matcher, regexp, O);
100
+ } else if (WORKS_WITH_NON_GLOBAL_REGEX) return un$MatchAll(O, regexp);
95
101
  S = toString(O);
96
102
  rx = new RegExp(regexp, 'g');
97
- return IS_PURE ? $matchAll.call(rx, S) : rx[MATCH_ALL](S);
103
+ return IS_PURE ? call($matchAll, rx, S) : rx[MATCH_ALL](S);
98
104
  }
99
105
  });
100
106
 
@@ -1,12 +1,12 @@
1
1
  var $ = require('../internals/export');
2
+ var uncurryThis = require('../internals/function-uncurry-this');
2
3
  var toIndexedObject = require('../internals/to-indexed-object');
3
4
  var toObject = require('../internals/to-object');
4
5
  var toString = require('../internals/to-string');
5
6
  var lengthOfArrayLike = require('../internals/length-of-array-like');
6
7
 
7
- var ArrayPrototype = Array.prototype;
8
- var push = ArrayPrototype.push;
9
- var join = ArrayPrototype.join;
8
+ var push = uncurryThis([].push);
9
+ var join = uncurryThis([].join);
10
10
 
11
11
  // `String.raw` method
12
12
  // https://tc39.es/ecma262/#sec-string.raw
@@ -18,9 +18,9 @@ $({ target: 'String', stat: true }, {
18
18
  var elements = [];
19
19
  var i = 0;
20
20
  while (literalSegments > i) {
21
- push.call(elements, toString(rawTemplate[i++]));
22
- if (i === literalSegments) return join.call(elements, '');
23
- if (i < argumentsLength) push.call(elements, toString(arguments[i]));
21
+ push(elements, toString(rawTemplate[i++]));
22
+ if (i === literalSegments) return join(elements, '');
23
+ if (i < argumentsLength) push(elements, toString(arguments[i]));
24
24
  }
25
25
  }
26
26
  });
@@ -1,23 +1,31 @@
1
1
  'use strict';
2
2
  var $ = require('../internals/export');
3
+ var global = require('../internals/global');
4
+ var call = require('../internals/function-call');
5
+ var uncurryThis = require('../internals/function-uncurry-this');
3
6
  var requireObjectCoercible = require('../internals/require-object-coercible');
4
7
  var isCallable = require('../internals/is-callable');
5
8
  var isRegExp = require('../internals/is-regexp');
6
9
  var toString = require('../internals/to-string');
7
10
  var getMethod = require('../internals/get-method');
8
- var getRegExpFlags = require('../internals/regexp-flags');
11
+ var regExpFlags = require('../internals/regexp-flags');
9
12
  var getSubstitution = require('../internals/get-substitution');
10
13
  var wellKnownSymbol = require('../internals/well-known-symbol');
11
14
  var IS_PURE = require('../internals/is-pure');
12
15
 
13
16
  var REPLACE = wellKnownSymbol('replace');
14
17
  var RegExpPrototype = RegExp.prototype;
18
+ var TypeError = global.TypeError;
19
+ var getFlags = uncurryThis(regExpFlags);
20
+ var indexOf = uncurryThis(''.indexOf);
21
+ var replace = uncurryThis(''.replace);
22
+ var stringSlice = uncurryThis(''.slice);
15
23
  var max = Math.max;
16
24
 
17
25
  var stringIndexOf = function (string, searchValue, fromIndex) {
18
26
  if (fromIndex > string.length) return -1;
19
27
  if (searchValue === '') return fromIndex;
20
- return string.indexOf(searchValue, fromIndex);
28
+ return indexOf(string, searchValue, fromIndex);
21
29
  };
22
30
 
23
31
  // `String.prototype.replaceAll` method
@@ -34,15 +42,15 @@ $({ target: 'String', proto: true }, {
34
42
  if (IS_REG_EXP) {
35
43
  flags = toString(requireObjectCoercible('flags' in RegExpPrototype
36
44
  ? searchValue.flags
37
- : getRegExpFlags.call(searchValue)
45
+ : getFlags(searchValue)
38
46
  ));
39
- if (!~flags.indexOf('g')) throw TypeError('`.replaceAll` does not allow non-global regexes');
47
+ if (!~indexOf(flags, 'g')) throw TypeError('`.replaceAll` does not allow non-global regexes');
40
48
  }
41
49
  replacer = getMethod(searchValue, REPLACE);
42
50
  if (replacer) {
43
- return replacer.call(searchValue, O, replaceValue);
51
+ return call(replacer, searchValue, O, replaceValue);
44
52
  } else if (IS_PURE && IS_REG_EXP) {
45
- return toString(O).replace(searchValue, replaceValue);
53
+ return replace(toString(O), searchValue, replaceValue);
46
54
  }
47
55
  }
48
56
  string = toString(O);
@@ -53,17 +61,15 @@ $({ target: 'String', proto: true }, {
53
61
  advanceBy = max(1, searchLength);
54
62
  position = stringIndexOf(string, searchString, 0);
55
63
  while (position !== -1) {
56
- if (functionalReplace) {
57
- replacement = toString(replaceValue(searchString, position, string));
58
- } else {
59
- replacement = getSubstitution(searchString, string, position, [], undefined, replaceValue);
60
- }
61
- result += string.slice(endOfLastMatch, position) + replacement;
64
+ replacement = functionalReplace
65
+ ? toString(replaceValue(searchString, position, string))
66
+ : getSubstitution(searchString, string, position, [], undefined, replaceValue);
67
+ result += stringSlice(string, endOfLastMatch, position) + replacement;
62
68
  endOfLastMatch = position + searchLength;
63
69
  position = stringIndexOf(string, searchString, position + advanceBy);
64
70
  }
65
71
  if (endOfLastMatch < string.length) {
66
- result += string.slice(endOfLastMatch);
72
+ result += stringSlice(string, endOfLastMatch);
67
73
  }
68
74
  return result;
69
75
  }
@@ -1,5 +1,6 @@
1
1
  'use strict';
2
2
  var $ = require('../internals/export');
3
+ var uncurryThis = require('../internals/function-uncurry-this');
3
4
  var getOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;
4
5
  var toLength = require('../internals/to-length');
5
6
  var toString = require('../internals/to-string');
@@ -9,7 +10,8 @@ var correctIsRegExpLogic = require('../internals/correct-is-regexp-logic');
9
10
  var IS_PURE = require('../internals/is-pure');
10
11
 
11
12
  // eslint-disable-next-line es/no-string-prototype-startswith -- safe
12
- var $startsWith = ''.startsWith;
13
+ var un$StartsWith = uncurryThis(''.startsWith);
14
+ var stringSlice = uncurryThis(''.slice);
13
15
  var min = Math.min;
14
16
 
15
17
  var CORRECT_IS_REGEXP_LOGIC = correctIsRegExpLogic('startsWith');
@@ -27,8 +29,8 @@ $({ target: 'String', proto: true, forced: !MDN_POLYFILL_BUG && !CORRECT_IS_REGE
27
29
  notARegExp(searchString);
28
30
  var index = toLength(min(arguments.length > 1 ? arguments[1] : undefined, that.length));
29
31
  var search = toString(searchString);
30
- return $startsWith
31
- ? $startsWith.call(that, search, index)
32
- : that.slice(index, index + search.length) === search;
32
+ return un$StartsWith
33
+ ? un$StartsWith(that, search, index)
34
+ : stringSlice(that, index, index + search.length) === search;
33
35
  }
34
36
  });
@@ -1,10 +1,11 @@
1
1
  'use strict';
2
2
  var $ = require('../internals/export');
3
+ var uncurryThis = require('../internals/function-uncurry-this');
3
4
  var requireObjectCoercible = require('../internals/require-object-coercible');
4
5
  var toIntegerOrInfinity = require('../internals/to-integer-or-infinity');
5
6
  var toString = require('../internals/to-string');
6
7
 
7
- var slice = ''.slice;
8
+ var stringSlice = uncurryThis(''.slice);
8
9
  var max = Math.max;
9
10
  var min = Math.min;
10
11
 
@@ -24,6 +25,6 @@ $({ target: 'String', proto: true, forced: FORCED }, {
24
25
  intLength = length === undefined ? size : toIntegerOrInfinity(length);
25
26
  if (intLength <= 0 || intLength === Infinity) return '';
26
27
  intEnd = min(intStart + intLength, size);
27
- return intStart >= intEnd ? '' : slice.call(that, intStart, intEnd);
28
+ return intStart >= intEnd ? '' : stringSlice(that, intStart, intEnd);
28
29
  }
29
30
  });