core-js 3.18.1 → 3.19.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (361) hide show
  1. package/configurator.js +7 -3
  2. package/es/date/to-primitive.js +2 -3
  3. package/es/date/to-string.js +2 -4
  4. package/es/instance/at.js +6 -5
  5. package/es/instance/bind.js +3 -2
  6. package/es/instance/code-point-at.js +4 -3
  7. package/es/instance/concat.js +3 -2
  8. package/es/instance/copy-within.js +3 -2
  9. package/es/instance/ends-with.js +4 -3
  10. package/es/instance/entries.js +3 -2
  11. package/es/instance/every.js +3 -2
  12. package/es/instance/fill.js +3 -2
  13. package/es/instance/filter.js +3 -2
  14. package/es/instance/find-index.js +3 -2
  15. package/es/instance/find.js +3 -2
  16. package/es/instance/flags.js +2 -1
  17. package/es/instance/flat-map.js +3 -2
  18. package/es/instance/flat.js +3 -2
  19. package/es/instance/for-each.js +3 -2
  20. package/es/instance/includes.js +6 -5
  21. package/es/instance/index-of.js +3 -2
  22. package/es/instance/keys.js +3 -2
  23. package/es/instance/last-index-of.js +3 -2
  24. package/es/instance/map.js +3 -2
  25. package/es/instance/match-all.js +4 -3
  26. package/es/instance/pad-end.js +4 -3
  27. package/es/instance/pad-start.js +4 -3
  28. package/es/instance/reduce-right.js +3 -2
  29. package/es/instance/reduce.js +3 -2
  30. package/es/instance/repeat.js +4 -3
  31. package/es/instance/replace-all.js +4 -3
  32. package/es/instance/reverse.js +3 -2
  33. package/es/instance/slice.js +3 -2
  34. package/es/instance/some.js +3 -2
  35. package/es/instance/sort.js +3 -2
  36. package/es/instance/splice.js +3 -2
  37. package/es/instance/starts-with.js +4 -3
  38. package/es/instance/trim-end.js +4 -3
  39. package/es/instance/trim-left.js +4 -3
  40. package/es/instance/trim-right.js +4 -3
  41. package/es/instance/trim-start.js +4 -3
  42. package/es/instance/trim.js +4 -3
  43. package/es/instance/values.js +3 -2
  44. package/es/json/stringify.js +4 -3
  45. package/es/promise/all-settled.js +2 -1
  46. package/es/promise/any.js +2 -1
  47. package/es/regexp/flags.js +3 -4
  48. package/es/regexp/match.js +2 -1
  49. package/es/regexp/replace.js +2 -1
  50. package/es/regexp/search.js +2 -1
  51. package/es/regexp/split.js +2 -1
  52. package/es/regexp/test.js +2 -3
  53. package/es/regexp/to-string.js +2 -3
  54. package/es/string/iterator.js +2 -5
  55. package/features/instance/at.js +6 -5
  56. package/features/instance/code-points.js +4 -3
  57. package/features/instance/filter-out.js +3 -2
  58. package/features/instance/filter-reject.js +3 -2
  59. package/features/instance/find-last-index.js +3 -2
  60. package/features/instance/find-last.js +3 -2
  61. package/features/instance/group-by.js +3 -2
  62. package/features/instance/unique-by.js +3 -2
  63. package/features/map/from.js +3 -2
  64. package/features/map/group-by.js +2 -1
  65. package/features/map/key-by.js +2 -1
  66. package/features/map/of.js +3 -2
  67. package/features/promise/try.js +2 -1
  68. package/features/set/from.js +3 -2
  69. package/features/set/of.js +3 -2
  70. package/features/typed-array/methods.js +2 -0
  71. package/features/weak-map/from.js +3 -2
  72. package/features/weak-map/of.js +3 -2
  73. package/features/weak-set/from.js +3 -2
  74. package/features/weak-set/of.js +3 -2
  75. package/internals/a-callable.js +3 -0
  76. package/internals/a-constructor.js +3 -0
  77. package/internals/a-possible-prototype.js +5 -1
  78. package/internals/an-instance.js +8 -3
  79. package/internals/an-object.js +4 -0
  80. package/internals/array-buffer-native.js +1 -1
  81. package/internals/array-buffer-non-extensible.js +10 -0
  82. package/internals/array-buffer-view-core.js +11 -10
  83. package/internals/array-buffer.js +31 -18
  84. package/internals/array-copy-within.js +2 -2
  85. package/internals/array-fill.js +2 -2
  86. package/internals/array-from-async.js +14 -9
  87. package/internals/array-from.js +8 -4
  88. package/internals/array-group-by.js +8 -5
  89. package/internals/array-includes.js +2 -2
  90. package/internals/array-iteration-from-last.js +3 -3
  91. package/internals/array-iteration.js +7 -6
  92. package/internals/array-last-index-of.js +6 -5
  93. package/internals/array-reduce.js +5 -2
  94. package/internals/array-slice.js +3 -0
  95. package/internals/array-sort.js +10 -11
  96. package/internals/array-species-constructor.js +2 -0
  97. package/internals/array-unique-by.js +15 -11
  98. package/internals/async-from-sync-iterator.js +4 -3
  99. package/internals/async-iterator-create-proxy.js +4 -3
  100. package/internals/async-iterator-iteration.js +5 -2
  101. package/internals/classof-raw.js +5 -2
  102. package/internals/classof.js +3 -0
  103. package/internals/clear-error-stack.js +20 -0
  104. package/internals/collection-add-all.js +3 -2
  105. package/internals/collection-delete-all.js +3 -2
  106. package/internals/collection-from.js +7 -4
  107. package/internals/collection-of.js +3 -4
  108. package/internals/collection-strong.js +11 -9
  109. package/internals/collection-weak.js +13 -9
  110. package/internals/collection.js +8 -7
  111. package/internals/composite-key.js +9 -2
  112. package/internals/copy-constructor-properties.js +2 -2
  113. package/internals/create-html.js +3 -1
  114. package/internals/date-to-iso-string.js +23 -13
  115. package/internals/date-to-primitive.js +3 -0
  116. package/internals/define-iterator.js +2 -1
  117. package/internals/define-well-known-symbol.js +2 -2
  118. package/internals/engine-v8-version.js +10 -4
  119. package/internals/entry-unbind.js +3 -5
  120. package/internals/error-stack-installable.js +10 -0
  121. package/internals/export.js +1 -1
  122. package/internals/fix-regexp-well-known-symbol-logic.js +5 -3
  123. package/internals/flatten-into-array.js +8 -4
  124. package/internals/function-apply.js +9 -0
  125. package/internals/function-bind-context.js +5 -17
  126. package/internals/function-bind.js +15 -9
  127. package/internals/function-call.js +5 -0
  128. package/internals/function-name.js +2 -2
  129. package/internals/function-uncurry-this.js +12 -0
  130. package/internals/get-async-iterator.js +2 -1
  131. package/internals/get-iterator.js +7 -2
  132. package/internals/get-map-iterator.js +3 -1
  133. package/internals/get-set-iterator.js +3 -1
  134. package/internals/get-substitution.js +10 -7
  135. package/internals/has-own-property.js +10 -0
  136. package/internals/host-report-errors.js +1 -1
  137. package/internals/ieee754.js +4 -1
  138. package/internals/indexed-object.js +5 -2
  139. package/internals/inspect-source.js +3 -2
  140. package/internals/install-error-cause.js +1 -1
  141. package/internals/internal-metadata.js +8 -11
  142. package/internals/internal-state.js +13 -11
  143. package/internals/is-callable.js +1 -1
  144. package/internals/is-constructor.js +6 -4
  145. package/internals/is-data-descriptor.js +2 -2
  146. package/internals/is-integral-number.js +10 -0
  147. package/internals/is-iterable.js +4 -2
  148. package/internals/is-object.js +1 -1
  149. package/internals/is-symbol.js +6 -2
  150. package/internals/iterate.js +16 -8
  151. package/internals/iterator-close.js +2 -1
  152. package/internals/iterator-create-proxy.js +4 -3
  153. package/internals/length-of-array-like.js +7 -0
  154. package/internals/map-emplace.js +8 -3
  155. package/internals/map-upsert.js +12 -4
  156. package/internals/math-scale.js +9 -12
  157. package/internals/microtask.js +6 -4
  158. package/internals/normalize-string-argument.js +5 -0
  159. package/internals/not-a-regexp.js +3 -0
  160. package/internals/number-parse-float.js +8 -6
  161. package/internals/number-parse-int.js +4 -2
  162. package/internals/numeric-range-iterator.js +4 -0
  163. package/internals/object-assign.js +5 -2
  164. package/internals/object-define-properties.js +3 -1
  165. package/internals/object-define-property.js +2 -0
  166. package/internals/object-get-own-property-descriptor.js +3 -2
  167. package/internals/object-get-own-property-names-external.js +4 -4
  168. package/internals/object-get-prototype-of.js +4 -3
  169. package/internals/object-is-extensible.js +16 -0
  170. package/internals/object-is-prototype-of.js +3 -0
  171. package/internals/object-iterator.js +2 -2
  172. package/internals/object-keys-internal.js +7 -4
  173. package/internals/object-set-prototype-of.js +4 -3
  174. package/internals/object-to-array.js +7 -3
  175. package/internals/ordinary-to-primitive.js +7 -3
  176. package/internals/own-keys.js +4 -1
  177. package/internals/redefine.js +2 -2
  178. package/internals/reflect-metadata.js +9 -3
  179. package/internals/regexp-exec-abstract.js +6 -2
  180. package/internals/regexp-exec.js +19 -14
  181. package/internals/require-object-coercible.js +4 -0
  182. package/internals/set-global.js +4 -2
  183. package/internals/set-to-string-tag.js +2 -2
  184. package/internals/shared.js +1 -1
  185. package/internals/string-multibyte.js +15 -7
  186. package/internals/string-pad.js +7 -4
  187. package/internals/string-punycode-to-ascii.js +26 -14
  188. package/internals/string-repeat.js +5 -2
  189. package/internals/string-trim.js +4 -2
  190. package/internals/task.js +11 -11
  191. package/internals/this-number-value.js +2 -4
  192. package/internals/to-absolute-index.js +2 -2
  193. package/internals/to-index.js +5 -2
  194. package/internals/to-integer-or-infinity.js +10 -0
  195. package/internals/to-length.js +2 -2
  196. package/internals/to-object.js +3 -0
  197. package/internals/to-offset.js +3 -0
  198. package/internals/to-positive-integer.js +5 -2
  199. package/internals/to-primitive.js +4 -1
  200. package/internals/to-property-key.js +1 -1
  201. package/internals/to-string.js +3 -0
  202. package/internals/try-to-string.js +4 -0
  203. package/internals/typed-array-constructor.js +18 -14
  204. package/internals/typed-array-from.js +6 -5
  205. package/internals/uid.js +4 -1
  206. package/internals/well-known-symbol.js +8 -4
  207. package/modules/es.aggregate-error.js +29 -12
  208. package/modules/es.array-buffer.slice.js +8 -4
  209. package/modules/es.array.at.js +4 -4
  210. package/modules/es.array.concat.js +4 -2
  211. package/modules/es.array.flat-map.js +2 -2
  212. package/modules/es.array.flat.js +4 -4
  213. package/modules/es.array.index-of.js +7 -5
  214. package/modules/es.array.join.js +3 -2
  215. package/modules/es.array.of.js +3 -1
  216. package/modules/es.array.reduce.js +2 -1
  217. package/modules/es.array.reverse.js +3 -2
  218. package/modules/es.array.slice.js +6 -4
  219. package/modules/es.array.sort.js +9 -6
  220. package/modules/es.array.splice.js +6 -4
  221. package/modules/es.date.get-year.js +3 -2
  222. package/modules/es.date.now.js +6 -1
  223. package/modules/es.date.set-year.js +8 -6
  224. package/modules/es.date.to-primitive.js +2 -1
  225. package/modules/es.date.to-string.js +5 -4
  226. package/modules/es.escape.js +12 -5
  227. package/modules/es.function.has-instance.js +3 -2
  228. package/modules/es.function.name.js +4 -2
  229. package/modules/es.json.stringify.js +18 -7
  230. package/modules/es.map.js +1 -1
  231. package/modules/es.number.constructor.js +25 -19
  232. package/modules/es.number.is-integer.js +2 -2
  233. package/modules/es.number.is-safe-integer.js +2 -2
  234. package/modules/es.number.to-fixed.js +21 -15
  235. package/modules/es.number.to-precision.js +6 -5
  236. package/modules/es.object.has-own.js +1 -1
  237. package/modules/es.object.is-extensible.js +4 -10
  238. package/modules/es.object.is-frozen.js +6 -2
  239. package/modules/es.object.is-sealed.js +6 -2
  240. package/modules/es.promise.all-settled.js +2 -2
  241. package/modules/es.promise.any.js +5 -4
  242. package/modules/es.promise.js +22 -18
  243. package/modules/es.reflect.apply.js +4 -10
  244. package/modules/es.reflect.construct.js +10 -5
  245. package/modules/es.reflect.get.js +2 -1
  246. package/modules/es.reflect.is-extensible.js +2 -4
  247. package/modules/es.reflect.set.js +2 -1
  248. package/modules/es.regexp.constructor.js +25 -16
  249. package/modules/es.regexp.dot-all.js +5 -1
  250. package/modules/es.regexp.flags.js +4 -2
  251. package/modules/es.regexp.sticky.js +5 -1
  252. package/modules/es.regexp.test.js +7 -3
  253. package/modules/es.regexp.to-string.js +8 -5
  254. package/modules/es.set.js +1 -1
  255. package/modules/es.string.at-alternative.js +7 -5
  256. package/modules/es.string.ends-with.js +7 -5
  257. package/modules/es.string.from-code-point.js +7 -4
  258. package/modules/es.string.includes.js +8 -2
  259. package/modules/es.string.match-all.js +25 -19
  260. package/modules/es.string.match.js +2 -1
  261. package/modules/es.string.raw.js +9 -8
  262. package/modules/es.string.replace-all.js +19 -13
  263. package/modules/es.string.replace.js +21 -14
  264. package/modules/es.string.search.js +2 -1
  265. package/modules/es.string.split.js +23 -16
  266. package/modules/es.string.starts-with.js +6 -4
  267. package/modules/es.string.substr.js +6 -5
  268. package/modules/es.symbol.description.js +22 -14
  269. package/modules/es.symbol.js +47 -33
  270. package/modules/es.typed-array.at.js +4 -4
  271. package/modules/es.typed-array.copy-within.js +4 -2
  272. package/modules/es.typed-array.fill.js +9 -2
  273. package/modules/es.typed-array.iterator.js +7 -6
  274. package/modules/es.typed-array.join.js +3 -3
  275. package/modules/es.typed-array.last-index-of.js +3 -2
  276. package/modules/es.typed-array.reduce-right.js +2 -1
  277. package/modules/es.typed-array.reduce.js +2 -1
  278. package/modules/es.typed-array.set.js +4 -2
  279. package/modules/es.typed-array.slice.js +2 -2
  280. package/modules/es.typed-array.sort.js +13 -28
  281. package/modules/es.typed-array.to-locale-string.js +7 -2
  282. package/modules/es.typed-array.to-string.js +3 -2
  283. package/modules/es.unescape.js +14 -9
  284. package/modules/es.weak-map.js +15 -15
  285. package/modules/esnext.array.is-template-object.js +1 -1
  286. package/modules/esnext.array.last-index.js +2 -2
  287. package/modules/esnext.array.last-item.js +3 -3
  288. package/modules/esnext.async-iterator.as-indexed-pairs.js +2 -1
  289. package/modules/esnext.async-iterator.constructor.js +4 -4
  290. package/modules/esnext.async-iterator.drop.js +2 -1
  291. package/modules/esnext.async-iterator.filter.js +2 -1
  292. package/modules/esnext.async-iterator.flat-map.js +3 -2
  293. package/modules/esnext.async-iterator.from.js +4 -4
  294. package/modules/esnext.async-iterator.map.js +2 -1
  295. package/modules/esnext.async-iterator.reduce.js +4 -1
  296. package/modules/esnext.async-iterator.take.js +4 -2
  297. package/modules/esnext.composite-key.js +5 -1
  298. package/modules/esnext.composite-symbol.js +3 -2
  299. package/modules/esnext.iterator.as-indexed-pairs.js +2 -1
  300. package/modules/esnext.iterator.constructor.js +4 -4
  301. package/modules/esnext.iterator.drop.js +4 -2
  302. package/modules/esnext.iterator.filter.js +2 -1
  303. package/modules/esnext.iterator.flat-map.js +7 -3
  304. package/modules/esnext.iterator.from.js +4 -4
  305. package/modules/esnext.iterator.map.js +2 -1
  306. package/modules/esnext.iterator.reduce.js +3 -0
  307. package/modules/esnext.iterator.take.js +2 -1
  308. package/modules/esnext.map.delete-all.js +2 -4
  309. package/modules/esnext.map.emplace.js +2 -2
  310. package/modules/esnext.map.every.js +1 -1
  311. package/modules/esnext.map.filter.js +5 -4
  312. package/modules/esnext.map.find-key.js +1 -1
  313. package/modules/esnext.map.find.js +1 -1
  314. package/modules/esnext.map.group-by.js +6 -2
  315. package/modules/esnext.map.includes.js +1 -1
  316. package/modules/esnext.map.key-by.js +2 -1
  317. package/modules/esnext.map.map-keys.js +5 -4
  318. package/modules/esnext.map.map-values.js +5 -4
  319. package/modules/esnext.map.reduce.js +3 -0
  320. package/modules/esnext.map.some.js +1 -1
  321. package/modules/esnext.map.update-or-insert.js +2 -2
  322. package/modules/esnext.map.update.js +11 -4
  323. package/modules/esnext.map.upsert.js +2 -2
  324. package/modules/esnext.math.seeded-prng.js +3 -1
  325. package/modules/esnext.number.from-string.js +14 -5
  326. package/modules/esnext.observable.js +14 -9
  327. package/modules/esnext.reflect.get-metadata-keys.js +5 -10
  328. package/modules/esnext.set.add-all.js +2 -4
  329. package/modules/esnext.set.delete-all.js +2 -4
  330. package/modules/esnext.set.difference.js +3 -2
  331. package/modules/esnext.set.every.js +1 -1
  332. package/modules/esnext.set.filter.js +4 -3
  333. package/modules/esnext.set.find.js +1 -1
  334. package/modules/esnext.set.intersection.js +3 -2
  335. package/modules/esnext.set.is-disjoint-from.js +3 -2
  336. package/modules/esnext.set.is-subset-of.js +3 -2
  337. package/modules/esnext.set.is-superset-of.js +3 -2
  338. package/modules/esnext.set.join.js +9 -4
  339. package/modules/esnext.set.map.js +5 -4
  340. package/modules/esnext.set.reduce.js +3 -0
  341. package/modules/esnext.set.some.js +1 -1
  342. package/modules/esnext.set.symmetric-difference.js +3 -2
  343. package/modules/esnext.typed-array.from-async.js +9 -3
  344. package/modules/esnext.typed-array.unique-by.js +4 -2
  345. package/modules/esnext.weak-map.delete-all.js +2 -4
  346. package/modules/esnext.weak-map.emplace.js +2 -2
  347. package/modules/esnext.weak-map.upsert.js +2 -2
  348. package/modules/esnext.weak-set.add-all.js +2 -4
  349. package/modules/esnext.weak-set.delete-all.js +2 -4
  350. package/modules/web.timers.js +5 -4
  351. package/modules/web.url-search-params.js +63 -54
  352. package/modules/web.url.js +110 -96
  353. package/modules/web.url.to-json.js +2 -1
  354. package/package.json +2 -2
  355. package/stable/instance/entries.js +6 -4
  356. package/stable/instance/for-each.js +6 -4
  357. package/stable/instance/keys.js +6 -4
  358. package/stable/instance/values.js +6 -4
  359. package/internals/has.js +0 -7
  360. package/internals/is-integer.js +0 -9
  361. package/internals/to-integer.js +0 -8
@@ -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
 
@@ -1,17 +1,19 @@
1
1
  var DESCRIPTORS = require('../internals/descriptors');
2
2
  var global = require('../internals/global');
3
+ var uncurryThis = require('../internals/function-uncurry-this');
3
4
  var isForced = require('../internals/is-forced');
4
5
  var inheritIfRequired = require('../internals/inherit-if-required');
5
6
  var createNonEnumerableProperty = require('../internals/create-non-enumerable-property');
6
7
  var defineProperty = require('../internals/object-define-property').f;
7
8
  var getOwnPropertyNames = require('../internals/object-get-own-property-names').f;
9
+ var isPrototypeOf = require('../internals/object-is-prototype-of');
8
10
  var isRegExp = require('../internals/is-regexp');
9
11
  var toString = require('../internals/to-string');
10
- var getFlags = require('../internals/regexp-flags');
12
+ var regExpFlags = require('../internals/regexp-flags');
11
13
  var stickyHelpers = require('../internals/regexp-sticky-helpers');
12
14
  var redefine = require('../internals/redefine');
13
15
  var fails = require('../internals/fails');
14
- var has = require('../internals/has');
16
+ var hasOwn = require('../internals/has-own-property');
15
17
  var enforceInternalState = require('../internals/internal-state').enforce;
16
18
  var setSpecies = require('../internals/set-species');
17
19
  var wellKnownSymbol = require('../internals/well-known-symbol');
@@ -21,6 +23,13 @@ var UNSUPPORTED_NCG = require('../internals/regexp-unsupported-ncg');
21
23
  var MATCH = wellKnownSymbol('match');
22
24
  var NativeRegExp = global.RegExp;
23
25
  var RegExpPrototype = NativeRegExp.prototype;
26
+ var SyntaxError = global.SyntaxError;
27
+ var getFlags = uncurryThis(regExpFlags);
28
+ var exec = uncurryThis(RegExpPrototype.exec);
29
+ var charAt = uncurryThis(''.charAt);
30
+ var replace = uncurryThis(''.replace);
31
+ var stringIndexOf = uncurryThis(''.indexOf);
32
+ var stringSlice = uncurryThis(''.slice);
24
33
  // TODO: Use only propper RegExpIdentifierName
25
34
  var IS_NCG = /^\?<[^\s\d!#%&*+<=>@^][^\s!#%&*+<=>@^]*>/;
26
35
  var re1 = /a/g;
@@ -45,9 +54,9 @@ var handleDotAll = function (string) {
45
54
  var brackets = false;
46
55
  var chr;
47
56
  for (; index <= length; index++) {
48
- chr = string.charAt(index);
57
+ chr = charAt(string, index);
49
58
  if (chr === '\\') {
50
- result += chr + string.charAt(++index);
59
+ result += chr + charAt(string, ++index);
51
60
  continue;
52
61
  }
53
62
  if (!brackets && chr === '.') {
@@ -74,9 +83,9 @@ var handleNCG = function (string) {
74
83
  var groupname = '';
75
84
  var chr;
76
85
  for (; index <= length; index++) {
77
- chr = string.charAt(index);
86
+ chr = charAt(string, index);
78
87
  if (chr === '\\') {
79
- chr = chr + string.charAt(++index);
88
+ chr = chr + charAt(string, ++index);
80
89
  } else if (chr === ']') {
81
90
  brackets = false;
82
91
  } else if (!brackets) switch (true) {
@@ -84,7 +93,7 @@ var handleNCG = function (string) {
84
93
  brackets = true;
85
94
  break;
86
95
  case chr === '(':
87
- if (IS_NCG.test(string.slice(index + 1))) {
96
+ if (exec(IS_NCG, stringSlice(string, index + 1))) {
88
97
  index += 2;
89
98
  ncg = true;
90
99
  }
@@ -92,11 +101,11 @@ var handleNCG = function (string) {
92
101
  groupid++;
93
102
  continue;
94
103
  case chr === '>' && ncg:
95
- if (groupname === '' || has(names, groupname)) {
104
+ if (groupname === '' || hasOwn(names, groupname)) {
96
105
  throw new SyntaxError('Invalid capture group name');
97
106
  }
98
107
  names[groupname] = true;
99
- named.push([groupname, groupid]);
108
+ named[named.length] = [groupname, groupid];
100
109
  ncg = false;
101
110
  groupname = '';
102
111
  continue;
@@ -110,7 +119,7 @@ var handleNCG = function (string) {
110
119
  // https://tc39.es/ecma262/#sec-regexp-constructor
111
120
  if (isForced('RegExp', BASE_FORCED)) {
112
121
  var RegExpWrapper = function RegExp(pattern, flags) {
113
- var thisIsRegExp = this instanceof RegExpWrapper;
122
+ var thisIsRegExp = isPrototypeOf(RegExpPrototype, this);
114
123
  var patternIsRegExp = isRegExp(pattern);
115
124
  var flagsAreUndefined = flags === undefined;
116
125
  var groups = [];
@@ -121,9 +130,9 @@ if (isForced('RegExp', BASE_FORCED)) {
121
130
  return pattern;
122
131
  }
123
132
 
124
- if (patternIsRegExp || pattern instanceof RegExpWrapper) {
133
+ if (patternIsRegExp || isPrototypeOf(RegExpPrototype, pattern)) {
125
134
  pattern = pattern.source;
126
- if (flagsAreUndefined) flags = 'flags' in rawPattern ? rawPattern.flags : getFlags.call(rawPattern);
135
+ if (flagsAreUndefined) flags = 'flags' in rawPattern ? rawPattern.flags : getFlags(rawPattern);
127
136
  }
128
137
 
129
138
  pattern = pattern === undefined ? '' : toString(pattern);
@@ -131,15 +140,15 @@ if (isForced('RegExp', BASE_FORCED)) {
131
140
  rawPattern = pattern;
132
141
 
133
142
  if (UNSUPPORTED_DOT_ALL && 'dotAll' in re1) {
134
- dotAll = !!flags && flags.indexOf('s') > -1;
135
- if (dotAll) flags = flags.replace(/s/g, '');
143
+ dotAll = !!flags && stringIndexOf(flags, 's') > -1;
144
+ if (dotAll) flags = replace(flags, /s/g, '');
136
145
  }
137
146
 
138
147
  rawFlags = flags;
139
148
 
140
149
  if (UNSUPPORTED_Y && 'sticky' in re1) {
141
- sticky = !!flags && flags.indexOf('y') > -1;
142
- if (sticky) flags = flags.replace(/y/g, '');
150
+ sticky = !!flags && stringIndexOf(flags, 'y') > -1;
151
+ if (sticky) flags = replace(flags, /y/g, '');
143
152
  }
144
153
 
145
154
  if (UNSUPPORTED_NCG) {
@@ -1,8 +1,12 @@
1
+ var global = require('../internals/global');
1
2
  var DESCRIPTORS = require('../internals/descriptors');
2
3
  var UNSUPPORTED_DOT_ALL = require('../internals/regexp-unsupported-dot-all');
4
+ var classof = require('../internals/classof-raw');
3
5
  var defineProperty = require('../internals/object-define-property').f;
4
6
  var getInternalState = require('../internals/internal-state').get;
7
+
5
8
  var RegExpPrototype = RegExp.prototype;
9
+ var TypeError = global.TypeError;
6
10
 
7
11
  // `RegExp.prototype.dotAll` getter
8
12
  // https://tc39.es/ecma262/#sec-get-regexp.prototype.dotall
@@ -13,7 +17,7 @@ if (DESCRIPTORS && UNSUPPORTED_DOT_ALL) {
13
17
  if (this === RegExpPrototype) return undefined;
14
18
  // We can't use InternalStateModule.getterFor because
15
19
  // we don't add metadata for regexps created by a literal.
16
- if (this instanceof RegExp) {
20
+ if (classof(this) === 'RegExp') {
17
21
  return !!getInternalState(this).dotAll;
18
22
  }
19
23
  throw TypeError('Incompatible receiver, RegExp required');
@@ -3,14 +3,16 @@ var objectDefinePropertyModule = require('../internals/object-define-property');
3
3
  var regExpFlags = require('../internals/regexp-flags');
4
4
  var fails = require('../internals/fails');
5
5
 
6
+ var RegExpPrototype = RegExp.prototype;
7
+
6
8
  var FORCED = DESCRIPTORS && fails(function () {
7
9
  // eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe
8
- return Object.getOwnPropertyDescriptor(RegExp.prototype, 'flags').get.call({ dotAll: true, sticky: true }) !== 'sy';
10
+ return Object.getOwnPropertyDescriptor(RegExpPrototype, 'flags').get.call({ dotAll: true, sticky: true }) !== 'sy';
9
11
  });
10
12
 
11
13
  // `RegExp.prototype.flags` getter
12
14
  // https://tc39.es/ecma262/#sec-get-regexp.prototype.flags
13
- if (FORCED) objectDefinePropertyModule.f(RegExp.prototype, 'flags', {
15
+ if (FORCED) objectDefinePropertyModule.f(RegExpPrototype, 'flags', {
14
16
  configurable: true,
15
17
  get: regExpFlags
16
18
  });
@@ -1,8 +1,12 @@
1
+ var global = require('../internals/global');
1
2
  var DESCRIPTORS = require('../internals/descriptors');
2
3
  var UNSUPPORTED_Y = require('../internals/regexp-sticky-helpers').UNSUPPORTED_Y;
4
+ var classof = require('../internals/classof-raw');
3
5
  var defineProperty = require('../internals/object-define-property').f;
4
6
  var getInternalState = require('../internals/internal-state').get;
7
+
5
8
  var RegExpPrototype = RegExp.prototype;
9
+ var TypeError = global.TypeError;
6
10
 
7
11
  // `RegExp.prototype.sticky` getter
8
12
  // https://tc39.es/ecma262/#sec-get-regexp.prototype.sticky
@@ -13,7 +17,7 @@ if (DESCRIPTORS && UNSUPPORTED_Y) {
13
17
  if (this === RegExpPrototype) return undefined;
14
18
  // We can't use InternalStateModule.getterFor because
15
19
  // we don't add metadata for regexps created by a literal.
16
- if (this instanceof RegExp) {
20
+ if (classof(this) === 'RegExp') {
17
21
  return !!getInternalState(this).sticky;
18
22
  }
19
23
  throw TypeError('Incompatible receiver, RegExp required');
@@ -2,6 +2,9 @@
2
2
  // TODO: Remove from `core-js@4` since it's moved to entry points
3
3
  require('../modules/es.regexp.exec');
4
4
  var $ = require('../internals/export');
5
+ var global = require('../internals/global');
6
+ var call = require('../internals/function-call');
7
+ var uncurryThis = require('../internals/function-uncurry-this');
5
8
  var isCallable = require('../internals/is-callable');
6
9
  var isObject = require('../internals/is-object');
7
10
 
@@ -15,15 +18,16 @@ var DELEGATES_TO_EXEC = function () {
15
18
  return re.test('abc') === true && execCalled;
16
19
  }();
17
20
 
18
- var nativeTest = /./.test;
21
+ var Error = global.Error;
22
+ var un$Test = uncurryThis(/./.test);
19
23
 
20
24
  // `RegExp.prototype.test` method
21
25
  // https://tc39.es/ecma262/#sec-regexp.prototype.test
22
26
  $({ target: 'RegExp', proto: true, forced: !DELEGATES_TO_EXEC }, {
23
27
  test: function (str) {
24
28
  var exec = this.exec;
25
- if (!isCallable(exec)) return nativeTest.call(this, str);
26
- var result = exec.call(this, str);
29
+ if (!isCallable(exec)) return un$Test(this, str);
30
+ var result = call(exec, this, str);
27
31
  if (result !== null && !isObject(result)) {
28
32
  throw new Error('RegExp exec method returned something other than an Object or null');
29
33
  }
@@ -1,18 +1,21 @@
1
1
  'use strict';
2
+ var uncurryThis = require('../internals/function-uncurry-this');
2
3
  var PROPER_FUNCTION_NAME = require('../internals/function-name').PROPER;
3
4
  var redefine = require('../internals/redefine');
4
5
  var anObject = require('../internals/an-object');
6
+ var isPrototypeOf = require('../internals/object-is-prototype-of');
5
7
  var $toString = require('../internals/to-string');
6
8
  var fails = require('../internals/fails');
7
- var flags = require('../internals/regexp-flags');
9
+ var regExpFlags = require('../internals/regexp-flags');
8
10
 
9
11
  var TO_STRING = 'toString';
10
12
  var RegExpPrototype = RegExp.prototype;
11
- var nativeToString = RegExpPrototype[TO_STRING];
13
+ var n$ToString = RegExpPrototype[TO_STRING];
14
+ var getFlags = uncurryThis(regExpFlags);
12
15
 
13
- var NOT_GENERIC = fails(function () { return nativeToString.call({ source: 'a', flags: 'b' }) != '/a/b'; });
16
+ var NOT_GENERIC = fails(function () { return n$ToString.call({ source: 'a', flags: 'b' }) != '/a/b'; });
14
17
  // FF44- RegExp#toString has a wrong name
15
- var INCORRECT_NAME = PROPER_FUNCTION_NAME && nativeToString.name != TO_STRING;
18
+ var INCORRECT_NAME = PROPER_FUNCTION_NAME && n$ToString.name != TO_STRING;
16
19
 
17
20
  // `RegExp.prototype.toString` method
18
21
  // https://tc39.es/ecma262/#sec-regexp.prototype.tostring
@@ -21,7 +24,7 @@ if (NOT_GENERIC || INCORRECT_NAME) {
21
24
  var R = anObject(this);
22
25
  var p = $toString(R.source);
23
26
  var rf = R.flags;
24
- var f = $toString(rf === undefined && R instanceof RegExp && !('flags' in RegExpPrototype) ? flags.call(R) : rf);
27
+ var f = $toString(rf === undefined && isPrototypeOf(RegExpPrototype, R) && !('flags' in RegExpPrototype) ? getFlags(R) : rf);
25
28
  return '/' + p + '/' + f;
26
29
  }, { unsafe: true });
27
30
  }
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,11 +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
- var toInteger = require('../internals/to-integer');
5
- var toLength = require('../internals/to-length');
5
+ var toIntegerOrInfinity = require('../internals/to-integer-or-infinity');
6
6
  var toString = require('../internals/to-string');
7
7
  var fails = require('../internals/fails');
8
8
 
9
+ var charAt = uncurryThis(''.charAt);
10
+
9
11
  var FORCED = fails(function () {
10
12
  return '𠮷'.at(0) !== '\uD842';
11
13
  });
@@ -15,9 +17,9 @@ var FORCED = fails(function () {
15
17
  $({ target: 'String', proto: true, forced: FORCED }, {
16
18
  at: function at(index) {
17
19
  var S = toString(requireObjectCoercible(this));
18
- var len = toLength(S.length);
19
- var relativeIndex = toInteger(index);
20
+ var len = S.length;
21
+ var relativeIndex = toIntegerOrInfinity(index);
20
22
  var k = relativeIndex >= 0 ? relativeIndex : len + relativeIndex;
21
- return (k < 0 || k >= len) ? undefined : S.charAt(k);
23
+ return (k < 0 || k >= len) ? undefined : charAt(S, k);
22
24
  }
23
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');
@@ -26,11 +28,11 @@ $({ target: 'String', proto: true, forced: !MDN_POLYFILL_BUG && !CORRECT_IS_REGE
26
28
  var that = toString(requireObjectCoercible(this));
27
29
  notARegExp(searchString);
28
30
  var endPosition = arguments.length > 1 ? arguments[1] : undefined;
29
- var len = toLength(that.length);
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,4 +1,5 @@
1
1
  'use strict';
2
+ var call = require('../internals/function-call');
2
3
  var fixRegExpWellKnownSymbolLogic = require('../internals/fix-regexp-well-known-symbol-logic');
3
4
  var anObject = require('../internals/an-object');
4
5
  var toLength = require('../internals/to-length');
@@ -16,7 +17,7 @@ fixRegExpWellKnownSymbolLogic('match', function (MATCH, nativeMatch, maybeCallNa
16
17
  function match(regexp) {
17
18
  var O = requireObjectCoercible(this);
18
19
  var matcher = regexp == undefined ? undefined : getMethod(regexp, MATCH);
19
- return matcher ? matcher.call(regexp, O) : new RegExp(regexp)[MATCH](toString(O));
20
+ return matcher ? call(matcher, regexp, O) : new RegExp(regexp)[MATCH](toString(O));
20
21
  },
21
22
  // `RegExp.prototype[@@match]` method
22
23
  // https://tc39.es/ecma262/#sec-regexp.prototype-@@match
@@ -1,25 +1,26 @@
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
- var toLength = require('../internals/to-length');
5
5
  var toString = require('../internals/to-string');
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
13
13
  $({ target: 'String', stat: true }, {
14
14
  raw: function raw(template) {
15
15
  var rawTemplate = toIndexedObject(toObject(template).raw);
16
- var literalSegments = toLength(rawTemplate.length);
16
+ var literalSegments = lengthOfArrayLike(rawTemplate);
17
17
  var argumentsLength = arguments.length;
18
18
  var elements = [];
19
19
  var i = 0;
20
20
  while (literalSegments > i) {
21
- push.call(elements, toString(rawTemplate[i++]));
22
- if (i < argumentsLength) push.call(elements, toString(arguments[i]));
23
- } return join.call(elements, '');
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
  });