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,9 +1,12 @@
1
+ var global = require('../internals/global');
1
2
  var TO_STRING_TAG_SUPPORT = require('../internals/to-string-tag-support');
2
3
  var isCallable = require('../internals/is-callable');
3
4
  var classofRaw = require('../internals/classof-raw');
4
5
  var wellKnownSymbol = require('../internals/well-known-symbol');
5
6
 
6
7
  var TO_STRING_TAG = wellKnownSymbol('toStringTag');
8
+ var Object = global.Object;
9
+
7
10
  // ES3 wrong here
8
11
  var CORRECT_ARGUMENTS = classofRaw(function () { return arguments; }()) == 'Arguments';
9
12
 
@@ -0,0 +1,20 @@
1
+ var uncurryThis = require('../internals/function-uncurry-this');
2
+ var arraySlice = require('../internals/array-slice');
3
+
4
+ var replace = uncurryThis(''.replace);
5
+ var split = uncurryThis(''.split);
6
+ var join = uncurryThis([].join);
7
+
8
+ var TEST = (function (arg) { return String(Error(arg).stack); })('zxcasd');
9
+ var V8_OR_CHAKRA_STACK_ENTRY = /\n\s*at [^:]*:[^\n]*/;
10
+ var IS_V8_OR_CHAKRA_STACK = V8_OR_CHAKRA_STACK_ENTRY.test(TEST);
11
+ var IS_FIREFOX_OR_SAFARI_STACK = /@[^\n]*\n/.test(TEST) && !/zxcasd/.test(TEST);
12
+
13
+ module.exports = function (stack, dropEntries) {
14
+ if (typeof stack != 'string') return stack;
15
+ if (IS_V8_OR_CHAKRA_STACK) {
16
+ while (dropEntries--) stack = replace(stack, V8_OR_CHAKRA_STACK_ENTRY, '');
17
+ } else if (IS_FIREFOX_OR_SAFARI_STACK) {
18
+ return join(arraySlice(split(stack, '\n'), dropEntries), '\n');
19
+ } return stack;
20
+ };
@@ -1,13 +1,14 @@
1
1
  'use strict';
2
+ var call = require('../internals/function-call');
2
3
  var aCallable = require('../internals/a-callable');
3
4
  var anObject = require('../internals/an-object');
4
5
 
5
6
  // https://github.com/tc39/collection-methods
6
- module.exports = function (/* ...elements */) {
7
+ module.exports = function addAll(/* ...elements */) {
7
8
  var set = anObject(this);
8
9
  var adder = aCallable(set.add);
9
10
  for (var k = 0, len = arguments.length; k < len; k++) {
10
- adder.call(set, arguments[k]);
11
+ call(adder, set, arguments[k]);
11
12
  }
12
13
  return set;
13
14
  };
@@ -1,15 +1,16 @@
1
1
  'use strict';
2
+ var call = require('../internals/function-call');
2
3
  var aCallable = require('../internals/a-callable');
3
4
  var anObject = require('../internals/an-object');
4
5
 
5
6
  // https://github.com/tc39/collection-methods
6
- module.exports = function (/* ...elements */) {
7
+ module.exports = function deleteAll(/* ...elements */) {
7
8
  var collection = anObject(this);
8
9
  var remover = aCallable(collection['delete']);
9
10
  var allDeleted = true;
10
11
  var wasDeleted;
11
12
  for (var k = 0, len = arguments.length; k < len; k++) {
12
- wasDeleted = remover.call(collection, arguments[k]);
13
+ wasDeleted = call(remover, collection, arguments[k]);
13
14
  allDeleted = allDeleted && wasDeleted;
14
15
  }
15
16
  return !!allDeleted;
@@ -1,10 +1,13 @@
1
1
  'use strict';
2
2
  // https://tc39.github.io/proposal-setmap-offrom/
3
+ var bind = require('../internals/function-bind-context');
4
+ var call = require('../internals/function-call');
3
5
  var aCallable = require('../internals/a-callable');
4
6
  var aConstructor = require('../internals/a-constructor');
5
- var bind = require('../internals/function-bind-context');
6
7
  var iterate = require('../internals/iterate');
7
8
 
9
+ var push = [].push;
10
+
8
11
  module.exports = function from(source /* , mapFn, thisArg */) {
9
12
  var length = arguments.length;
10
13
  var mapFn = length > 1 ? arguments[1] : undefined;
@@ -16,12 +19,12 @@ module.exports = function from(source /* , mapFn, thisArg */) {
16
19
  array = [];
17
20
  if (mapping) {
18
21
  n = 0;
19
- boundFunction = bind(mapFn, length > 2 ? arguments[2] : undefined, 2);
22
+ boundFunction = bind(mapFn, length > 2 ? arguments[2] : undefined);
20
23
  iterate(source, function (nextItem) {
21
- array.push(boundFunction(nextItem, n++));
24
+ call(push, array, boundFunction(nextItem, n++));
22
25
  });
23
26
  } else {
24
- iterate(source, array.push, { that: array });
27
+ iterate(source, push, { that: array });
25
28
  }
26
29
  return new this(array);
27
30
  };
@@ -1,8 +1,7 @@
1
1
  'use strict';
2
+ var arraySlice = require('../internals/array-slice');
3
+
2
4
  // https://tc39.github.io/proposal-setmap-offrom/
3
5
  module.exports = function of() {
4
- var length = arguments.length;
5
- var A = new Array(length);
6
- while (length--) A[length] = arguments[length];
7
- return new this(A);
6
+ return new this(arraySlice(arguments));
8
7
  };
@@ -16,8 +16,8 @@ var internalStateGetterFor = InternalStateModule.getterFor;
16
16
 
17
17
  module.exports = {
18
18
  getConstructor: function (wrapper, CONSTRUCTOR_NAME, IS_MAP, ADDER) {
19
- var C = wrapper(function (that, iterable) {
20
- anInstance(that, C, CONSTRUCTOR_NAME);
19
+ var Constructor = wrapper(function (that, iterable) {
20
+ anInstance(that, Prototype);
21
21
  setInternalState(that, {
22
22
  type: CONSTRUCTOR_NAME,
23
23
  index: create(null),
@@ -29,6 +29,8 @@ module.exports = {
29
29
  if (iterable != undefined) iterate(iterable, that[ADDER], { that: that, AS_ENTRIES: IS_MAP });
30
30
  });
31
31
 
32
+ var Prototype = Constructor.prototype;
33
+
32
34
  var getInternalState = internalStateGetterFor(CONSTRUCTOR_NAME);
33
35
 
34
36
  var define = function (that, key, value) {
@@ -69,7 +71,7 @@ module.exports = {
69
71
  }
70
72
  };
71
73
 
72
- redefineAll(C.prototype, {
74
+ redefineAll(Prototype, {
73
75
  // `{ Map, Set }.prototype.clear()` methods
74
76
  // https://tc39.es/ecma262/#sec-map.prototype.clear
75
77
  // https://tc39.es/ecma262/#sec-set.prototype.clear
@@ -113,7 +115,7 @@ module.exports = {
113
115
  // https://tc39.es/ecma262/#sec-set.prototype.foreach
114
116
  forEach: function forEach(callbackfn /* , that = undefined */) {
115
117
  var state = getInternalState(this);
116
- var boundFunction = bind(callbackfn, arguments.length > 1 ? arguments[1] : undefined, 3);
118
+ var boundFunction = bind(callbackfn, arguments.length > 1 ? arguments[1] : undefined);
117
119
  var entry;
118
120
  while (entry = entry ? entry.next : state.first) {
119
121
  boundFunction(entry.value, entry.key, this);
@@ -129,7 +131,7 @@ module.exports = {
129
131
  }
130
132
  });
131
133
 
132
- redefineAll(C.prototype, IS_MAP ? {
134
+ redefineAll(Prototype, IS_MAP ? {
133
135
  // `Map.prototype.get(key)` method
134
136
  // https://tc39.es/ecma262/#sec-map.prototype.get
135
137
  get: function get(key) {
@@ -148,14 +150,14 @@ module.exports = {
148
150
  return define(this, value = value === 0 ? 0 : value, value);
149
151
  }
150
152
  });
151
- if (DESCRIPTORS) defineProperty(C.prototype, 'size', {
153
+ if (DESCRIPTORS) defineProperty(Prototype, 'size', {
152
154
  get: function () {
153
155
  return getInternalState(this).size;
154
156
  }
155
157
  });
156
- return C;
158
+ return Constructor;
157
159
  },
158
- setStrong: function (C, CONSTRUCTOR_NAME, IS_MAP) {
160
+ setStrong: function (Constructor, CONSTRUCTOR_NAME, IS_MAP) {
159
161
  var ITERATOR_NAME = CONSTRUCTOR_NAME + ' Iterator';
160
162
  var getInternalCollectionState = internalStateGetterFor(CONSTRUCTOR_NAME);
161
163
  var getInternalIteratorState = internalStateGetterFor(ITERATOR_NAME);
@@ -168,7 +170,7 @@ module.exports = {
168
170
  // https://tc39.es/ecma262/#sec-set.prototype.keys
169
171
  // https://tc39.es/ecma262/#sec-set.prototype.values
170
172
  // https://tc39.es/ecma262/#sec-set.prototype-@@iterator
171
- defineIterator(C, CONSTRUCTOR_NAME, function (iterated, kind) {
173
+ defineIterator(Constructor, CONSTRUCTOR_NAME, function (iterated, kind) {
172
174
  setInternalState(this, {
173
175
  type: ITERATOR_NAME,
174
176
  target: iterated,
@@ -1,4 +1,5 @@
1
1
  'use strict';
2
+ var uncurryThis = require('../internals/function-uncurry-this');
2
3
  var redefineAll = require('../internals/redefine-all');
3
4
  var getWeakData = require('../internals/internal-metadata').getWeakData;
4
5
  var anObject = require('../internals/an-object');
@@ -6,13 +7,14 @@ var isObject = require('../internals/is-object');
6
7
  var anInstance = require('../internals/an-instance');
7
8
  var iterate = require('../internals/iterate');
8
9
  var ArrayIterationModule = require('../internals/array-iteration');
9
- var $has = require('../internals/has');
10
+ var hasOwn = require('../internals/has-own-property');
10
11
  var InternalStateModule = require('../internals/internal-state');
11
12
 
12
13
  var setInternalState = InternalStateModule.set;
13
14
  var internalStateGetterFor = InternalStateModule.getterFor;
14
15
  var find = ArrayIterationModule.find;
15
16
  var findIndex = ArrayIterationModule.findIndex;
17
+ var splice = uncurryThis([].splice);
16
18
  var id = 0;
17
19
 
18
20
  // fallback for uncaught frozen keys
@@ -47,15 +49,15 @@ UncaughtFrozenStore.prototype = {
47
49
  var index = findIndex(this.entries, function (it) {
48
50
  return it[0] === key;
49
51
  });
50
- if (~index) this.entries.splice(index, 1);
52
+ if (~index) splice(this.entries, index, 1);
51
53
  return !!~index;
52
54
  }
53
55
  };
54
56
 
55
57
  module.exports = {
56
58
  getConstructor: function (wrapper, CONSTRUCTOR_NAME, IS_MAP, ADDER) {
57
- var C = wrapper(function (that, iterable) {
58
- anInstance(that, C, CONSTRUCTOR_NAME);
59
+ var Constructor = wrapper(function (that, iterable) {
60
+ anInstance(that, Prototype);
59
61
  setInternalState(that, {
60
62
  type: CONSTRUCTOR_NAME,
61
63
  id: id++,
@@ -64,6 +66,8 @@ module.exports = {
64
66
  if (iterable != undefined) iterate(iterable, that[ADDER], { that: that, AS_ENTRIES: IS_MAP });
65
67
  });
66
68
 
69
+ var Prototype = Constructor.prototype;
70
+
67
71
  var getInternalState = internalStateGetterFor(CONSTRUCTOR_NAME);
68
72
 
69
73
  var define = function (that, key, value) {
@@ -74,7 +78,7 @@ module.exports = {
74
78
  return that;
75
79
  };
76
80
 
77
- redefineAll(C.prototype, {
81
+ redefineAll(Prototype, {
78
82
  // `{ WeakMap, WeakSet }.prototype.delete(key)` methods
79
83
  // https://tc39.es/ecma262/#sec-weakmap.prototype.delete
80
84
  // https://tc39.es/ecma262/#sec-weakset.prototype.delete
@@ -83,7 +87,7 @@ module.exports = {
83
87
  if (!isObject(key)) return false;
84
88
  var data = getWeakData(key);
85
89
  if (data === true) return uncaughtFrozenStore(state)['delete'](key);
86
- return data && $has(data, state.id) && delete data[state.id];
90
+ return data && hasOwn(data, state.id) && delete data[state.id];
87
91
  },
88
92
  // `{ WeakMap, WeakSet }.prototype.has(key)` methods
89
93
  // https://tc39.es/ecma262/#sec-weakmap.prototype.has
@@ -93,11 +97,11 @@ module.exports = {
93
97
  if (!isObject(key)) return false;
94
98
  var data = getWeakData(key);
95
99
  if (data === true) return uncaughtFrozenStore(state).has(key);
96
- return data && $has(data, state.id);
100
+ return data && hasOwn(data, state.id);
97
101
  }
98
102
  });
99
103
 
100
- redefineAll(C.prototype, IS_MAP ? {
104
+ redefineAll(Prototype, IS_MAP ? {
101
105
  // `WeakMap.prototype.get(key)` method
102
106
  // https://tc39.es/ecma262/#sec-weakmap.prototype.get
103
107
  get: function get(key) {
@@ -121,6 +125,6 @@ module.exports = {
121
125
  }
122
126
  });
123
127
 
124
- return C;
128
+ return Constructor;
125
129
  }
126
130
  };
@@ -1,6 +1,7 @@
1
1
  'use strict';
2
2
  var $ = require('../internals/export');
3
3
  var global = require('../internals/global');
4
+ var uncurryThis = require('../internals/function-uncurry-this');
4
5
  var isForced = require('../internals/is-forced');
5
6
  var redefine = require('../internals/redefine');
6
7
  var InternalMetadataModule = require('../internals/internal-metadata');
@@ -23,19 +24,19 @@ module.exports = function (CONSTRUCTOR_NAME, wrapper, common) {
23
24
  var exported = {};
24
25
 
25
26
  var fixMethod = function (KEY) {
26
- var nativeMethod = NativePrototype[KEY];
27
+ var uncurriedNativeMethod = uncurryThis(NativePrototype[KEY]);
27
28
  redefine(NativePrototype, KEY,
28
29
  KEY == 'add' ? function add(value) {
29
- nativeMethod.call(this, value === 0 ? 0 : value);
30
+ uncurriedNativeMethod(this, value === 0 ? 0 : value);
30
31
  return this;
31
32
  } : KEY == 'delete' ? function (key) {
32
- return IS_WEAK && !isObject(key) ? false : nativeMethod.call(this, key === 0 ? 0 : key);
33
+ return IS_WEAK && !isObject(key) ? false : uncurriedNativeMethod(this, key === 0 ? 0 : key);
33
34
  } : KEY == 'get' ? function get(key) {
34
- return IS_WEAK && !isObject(key) ? undefined : nativeMethod.call(this, key === 0 ? 0 : key);
35
+ return IS_WEAK && !isObject(key) ? undefined : uncurriedNativeMethod(this, key === 0 ? 0 : key);
35
36
  } : KEY == 'has' ? function has(key) {
36
- return IS_WEAK && !isObject(key) ? false : nativeMethod.call(this, key === 0 ? 0 : key);
37
+ return IS_WEAK && !isObject(key) ? false : uncurriedNativeMethod(this, key === 0 ? 0 : key);
37
38
  } : function set(key, value) {
38
- nativeMethod.call(this, key === 0 ? 0 : key, value);
39
+ uncurriedNativeMethod(this, key === 0 ? 0 : key, value);
39
40
  return this;
40
41
  }
41
42
  );
@@ -72,7 +73,7 @@ module.exports = function (CONSTRUCTOR_NAME, wrapper, common) {
72
73
 
73
74
  if (!ACCEPT_ITERABLES) {
74
75
  Constructor = wrapper(function (dummy, iterable) {
75
- anInstance(dummy, Constructor, CONSTRUCTOR_NAME);
76
+ anInstance(dummy, NativePrototype);
76
77
  var that = inheritIfRequired(new NativeConstructor(), dummy, Constructor);
77
78
  if (iterable != undefined) iterate(iterable, that[ADDER], { that: that, AS_ENTRIES: IS_MAP });
78
79
  return that;
@@ -1,9 +1,16 @@
1
1
  // TODO: in core-js@4, move /modules/ dependencies to public entries for better optimization by tools like `preset-env`
2
- var Map = require('../modules/es.map');
3
- var WeakMap = require('../modules/es.weak-map');
2
+ require('../modules/es.map');
3
+ require('../modules/es.weak-map');
4
+ var global = require('../internals/global');
5
+ var getBuiltIn = require('../internals/get-built-in');
4
6
  var create = require('../internals/object-create');
5
7
  var isObject = require('../internals/is-object');
6
8
 
9
+ var Object = global.Object;
10
+ var TypeError = global.TypeError;
11
+ var Map = getBuiltIn('Map');
12
+ var WeakMap = getBuiltIn('WeakMap');
13
+
7
14
  var Node = function () {
8
15
  // keys
9
16
  this.object = null;
@@ -1,4 +1,4 @@
1
- var has = require('../internals/has');
1
+ var hasOwn = require('../internals/has-own-property');
2
2
  var ownKeys = require('../internals/own-keys');
3
3
  var getOwnPropertyDescriptorModule = require('../internals/object-get-own-property-descriptor');
4
4
  var definePropertyModule = require('../internals/object-define-property');
@@ -9,6 +9,6 @@ module.exports = function (target, source) {
9
9
  var getOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f;
10
10
  for (var i = 0; i < keys.length; i++) {
11
11
  var key = keys[i];
12
- if (!has(target, key)) defineProperty(target, key, getOwnPropertyDescriptor(source, key));
12
+ if (!hasOwn(target, key)) defineProperty(target, key, getOwnPropertyDescriptor(source, key));
13
13
  }
14
14
  };
@@ -1,13 +1,15 @@
1
+ var uncurryThis = require('../internals/function-uncurry-this');
1
2
  var requireObjectCoercible = require('../internals/require-object-coercible');
2
3
  var toString = require('../internals/to-string');
3
4
 
4
5
  var quot = /"/g;
6
+ var replace = uncurryThis(''.replace);
5
7
 
6
8
  // `CreateHTML` abstract operation
7
9
  // https://tc39.es/ecma262/#sec-createhtml
8
10
  module.exports = function (string, tag, attribute, value) {
9
11
  var S = toString(requireObjectCoercible(string));
10
12
  var p1 = '<' + tag;
11
- if (attribute !== '') p1 += ' ' + attribute + '="' + toString(value).replace(quot, '&quot;') + '"';
13
+ if (attribute !== '') p1 += ' ' + attribute + '="' + replace(toString(value), quot, '&quot;') + '"';
12
14
  return p1 + '>' + S + '</' + tag + '>';
13
15
  };
@@ -1,31 +1,41 @@
1
1
  'use strict';
2
+ var global = require('../internals/global');
3
+ var uncurryThis = require('../internals/function-uncurry-this');
2
4
  var fails = require('../internals/fails');
3
5
  var padStart = require('../internals/string-pad').start;
4
6
 
7
+ var RangeError = global.RangeError;
5
8
  var abs = Math.abs;
6
9
  var DatePrototype = Date.prototype;
7
- var getTime = DatePrototype.getTime;
8
- var nativeDateToISOString = DatePrototype.toISOString;
10
+ var n$DateToISOString = DatePrototype.toISOString;
11
+ var getTime = uncurryThis(DatePrototype.getTime);
12
+ var getUTCDate = uncurryThis(DatePrototype.getUTCDate);
13
+ var getUTCFullYear = uncurryThis(DatePrototype.getUTCFullYear);
14
+ var getUTCHours = uncurryThis(DatePrototype.getUTCHours);
15
+ var getUTCMilliseconds = uncurryThis(DatePrototype.getUTCMilliseconds);
16
+ var getUTCMinutes = uncurryThis(DatePrototype.getUTCMinutes);
17
+ var getUTCMonth = uncurryThis(DatePrototype.getUTCMonth);
18
+ var getUTCSeconds = uncurryThis(DatePrototype.getUTCSeconds);
9
19
 
10
20
  // `Date.prototype.toISOString` method implementation
11
21
  // https://tc39.es/ecma262/#sec-date.prototype.toisostring
12
22
  // PhantomJS / old WebKit fails here:
13
23
  module.exports = (fails(function () {
14
- return nativeDateToISOString.call(new Date(-5e13 - 1)) != '0385-07-25T07:06:39.999Z';
24
+ return n$DateToISOString.call(new Date(-5e13 - 1)) != '0385-07-25T07:06:39.999Z';
15
25
  }) || !fails(function () {
16
- nativeDateToISOString.call(new Date(NaN));
26
+ n$DateToISOString.call(new Date(NaN));
17
27
  })) ? function toISOString() {
18
- if (!isFinite(getTime.call(this))) throw RangeError('Invalid time value');
28
+ if (!isFinite(getTime(this))) throw RangeError('Invalid time value');
19
29
  var date = this;
20
- var year = date.getUTCFullYear();
21
- var milliseconds = date.getUTCMilliseconds();
30
+ var year = getUTCFullYear(date);
31
+ var milliseconds = getUTCMilliseconds(date);
22
32
  var sign = year < 0 ? '-' : year > 9999 ? '+' : '';
23
33
  return sign + padStart(abs(year), sign ? 6 : 4, 0) +
24
- '-' + padStart(date.getUTCMonth() + 1, 2, 0) +
25
- '-' + padStart(date.getUTCDate(), 2, 0) +
26
- 'T' + padStart(date.getUTCHours(), 2, 0) +
27
- ':' + padStart(date.getUTCMinutes(), 2, 0) +
28
- ':' + padStart(date.getUTCSeconds(), 2, 0) +
34
+ '-' + padStart(getUTCMonth(date) + 1, 2, 0) +
35
+ '-' + padStart(getUTCDate(date), 2, 0) +
36
+ 'T' + padStart(getUTCHours(date), 2, 0) +
37
+ ':' + padStart(getUTCMinutes(date), 2, 0) +
38
+ ':' + padStart(getUTCSeconds(date), 2, 0) +
29
39
  '.' + padStart(milliseconds, 3, 0) +
30
40
  'Z';
31
- } : nativeDateToISOString;
41
+ } : n$DateToISOString;
@@ -1,7 +1,10 @@
1
1
  'use strict';
2
+ var global = require('../internals/global');
2
3
  var anObject = require('../internals/an-object');
3
4
  var ordinaryToPrimitive = require('../internals/ordinary-to-primitive');
4
5
 
6
+ var TypeError = global.TypeError;
7
+
5
8
  // `Date.prototype[@@toPrimitive](hint)` method implementation
6
9
  // https://tc39.es/ecma262/#sec-date.prototype-@@toprimitive
7
10
  module.exports = function (hint) {
@@ -1,5 +1,6 @@
1
1
  'use strict';
2
2
  var $ = require('../internals/export');
3
+ var call = require('../internals/function-call');
3
4
  var IS_PURE = require('../internals/is-pure');
4
5
  var FunctionName = require('../internals/function-name');
5
6
  var isCallable = require('../internals/is-callable');
@@ -70,7 +71,7 @@ module.exports = function (Iterable, NAME, IteratorConstructor, next, DEFAULT, I
70
71
  createNonEnumerableProperty(IterablePrototype, 'name', VALUES);
71
72
  } else {
72
73
  INCORRECT_VALUES_NAME = true;
73
- defaultIterator = function values() { return nativeIterator.call(this); };
74
+ defaultIterator = function values() { return call(nativeIterator, this); };
74
75
  }
75
76
  }
76
77
 
@@ -1,11 +1,11 @@
1
1
  var path = require('../internals/path');
2
- var has = require('../internals/has');
2
+ var hasOwn = require('../internals/has-own-property');
3
3
  var wrappedWellKnownSymbolModule = require('../internals/well-known-symbol-wrapped');
4
4
  var defineProperty = require('../internals/object-define-property').f;
5
5
 
6
6
  module.exports = function (NAME) {
7
7
  var Symbol = path.Symbol || (path.Symbol = {});
8
- if (!has(Symbol, NAME)) defineProperty(Symbol, NAME, {
8
+ if (!hasOwn(Symbol, NAME)) defineProperty(Symbol, NAME, {
9
9
  value: wrappedWellKnownSymbolModule.f(NAME)
10
10
  });
11
11
  };
@@ -9,13 +9,19 @@ var match, version;
9
9
 
10
10
  if (v8) {
11
11
  match = v8.split('.');
12
- version = match[0] < 4 ? 1 : match[0] + match[1];
13
- } else if (userAgent) {
12
+ // in old Chrome, versions of V8 isn't V8 = Chrome / 10
13
+ // but their correct versions are not interesting for us
14
+ version = match[0] > 0 && match[0] < 4 ? 1 : +(match[0] + match[1]);
15
+ }
16
+
17
+ // BrowserFS NodeJS `process` polyfill incorrectly set `.v8` to `0.0`
18
+ // so check `userAgent` even if `.v8` exists, but 0
19
+ if (!version && userAgent) {
14
20
  match = userAgent.match(/Edge\/(\d+)/);
15
21
  if (!match || match[1] >= 74) {
16
22
  match = userAgent.match(/Chrome\/(\d+)/);
17
- if (match) version = match[1];
23
+ if (match) version = +match[1];
18
24
  }
19
25
  }
20
26
 
21
- module.exports = version && +version;
27
+ module.exports = version;
@@ -1,8 +1,6 @@
1
1
  var global = require('../internals/global');
2
- var bind = require('../internals/function-bind-context');
2
+ var uncurryThis = require('../internals/function-uncurry-this');
3
3
 
4
- var call = Function.call;
5
-
6
- module.exports = function (CONSTRUCTOR, METHOD, length) {
7
- return bind(call, global[CONSTRUCTOR].prototype[METHOD], length);
4
+ module.exports = function (CONSTRUCTOR, METHOD) {
5
+ return uncurryThis(global[CONSTRUCTOR].prototype[METHOD]);
8
6
  };
@@ -0,0 +1,10 @@
1
+ var fails = require('../internals/fails');
2
+ var createPropertyDescriptor = require('../internals/create-property-descriptor');
3
+
4
+ module.exports = !fails(function () {
5
+ var error = Error('a');
6
+ if (!('stack' in error)) return true;
7
+ // eslint-disable-next-line es/no-object-defineproperty -- safe
8
+ Object.defineProperty(error, 'stack', createPropertyDescriptor(1, 7));
9
+ return error.stack !== 7;
10
+ });
@@ -42,7 +42,7 @@ module.exports = function (options, source) {
42
42
  FORCED = isForced(GLOBAL ? key : TARGET + (STATIC ? '.' : '#') + key, options.forced);
43
43
  // contained in target
44
44
  if (!FORCED && targetProperty !== undefined) {
45
- if (typeof sourceProperty === typeof targetProperty) continue;
45
+ if (typeof sourceProperty == typeof targetProperty) continue;
46
46
  copyConstructorProperties(sourceProperty, targetProperty);
47
47
  }
48
48
  // add a flag to not completely full polyfills
@@ -1,6 +1,7 @@
1
1
  'use strict';
2
2
  // TODO: Remove from `core-js@4` since it's moved to entry points
3
3
  require('../modules/es.regexp.exec');
4
+ var uncurryThis = require('../internals/function-uncurry-this');
4
5
  var redefine = require('../internals/redefine');
5
6
  var regexpExec = require('../internals/regexp-exec');
6
7
  var fails = require('../internals/fails');
@@ -49,17 +50,18 @@ module.exports = function (KEY, exec, FORCED, SHAM) {
49
50
  !DELEGATES_TO_EXEC ||
50
51
  FORCED
51
52
  ) {
52
- var nativeRegExpMethod = /./[SYMBOL];
53
+ var uncurriedNativeRegExpMethod = uncurryThis(/./[SYMBOL]);
53
54
  var methods = exec(SYMBOL, ''[KEY], function (nativeMethod, regexp, str, arg2, forceStringMethod) {
55
+ var uncurriedNativeMethod = uncurryThis(nativeMethod);
54
56
  var $exec = regexp.exec;
55
57
  if ($exec === regexpExec || $exec === RegExpPrototype.exec) {
56
58
  if (DELEGATES_TO_SYMBOL && !forceStringMethod) {
57
59
  // The native String method already delegates to @@method (this
58
60
  // polyfilled function), leasing to infinite recursion.
59
61
  // We avoid it by directly calling the native @@method method.
60
- return { done: true, value: nativeRegExpMethod.call(regexp, str, arg2) };
62
+ return { done: true, value: uncurriedNativeRegExpMethod(regexp, str, arg2) };
61
63
  }
62
- return { done: true, value: nativeMethod.call(str, regexp, arg2) };
64
+ return { done: true, value: uncurriedNativeMethod(str, regexp, arg2) };
63
65
  }
64
66
  return { done: false };
65
67
  });
@@ -1,22 +1,26 @@
1
1
  'use strict';
2
+ var global = require('../internals/global');
2
3
  var isArray = require('../internals/is-array');
3
- var toLength = require('../internals/to-length');
4
+ var lengthOfArrayLike = require('../internals/length-of-array-like');
4
5
  var bind = require('../internals/function-bind-context');
5
6
 
7
+ var TypeError = global.TypeError;
8
+
6
9
  // `FlattenIntoArray` abstract operation
7
10
  // https://tc39.github.io/proposal-flatMap/#sec-FlattenIntoArray
8
11
  var flattenIntoArray = function (target, original, source, sourceLen, start, depth, mapper, thisArg) {
9
12
  var targetIndex = start;
10
13
  var sourceIndex = 0;
11
- var mapFn = mapper ? bind(mapper, thisArg, 3) : false;
12
- var element;
14
+ var mapFn = mapper ? bind(mapper, thisArg) : false;
15
+ var element, elementLen;
13
16
 
14
17
  while (sourceIndex < sourceLen) {
15
18
  if (sourceIndex in source) {
16
19
  element = mapFn ? mapFn(source[sourceIndex], sourceIndex, original) : source[sourceIndex];
17
20
 
18
21
  if (depth > 0 && isArray(element)) {
19
- targetIndex = flattenIntoArray(target, original, element, toLength(element.length), targetIndex, depth - 1) - 1;
22
+ elementLen = lengthOfArrayLike(element);
23
+ targetIndex = flattenIntoArray(target, original, element, elementLen, targetIndex, depth - 1) - 1;
20
24
  } else {
21
25
  if (targetIndex >= 0x1FFFFFFFFFFFFF) throw TypeError('Exceed the acceptable array length');
22
26
  target[targetIndex] = element;
@@ -0,0 +1,9 @@
1
+ var FunctionPrototype = Function.prototype;
2
+ var apply = FunctionPrototype.apply;
3
+ var bind = FunctionPrototype.bind;
4
+ var call = FunctionPrototype.call;
5
+
6
+ // eslint-disable-next-line es/no-reflect -- safe
7
+ module.exports = typeof Reflect == 'object' && Reflect.apply || (bind ? call.bind(apply) : function () {
8
+ return call.apply(apply, arguments);
9
+ });
@@ -1,24 +1,12 @@
1
+ var uncurryThis = require('../internals/function-uncurry-this');
1
2
  var aCallable = require('../internals/a-callable');
2
3
 
4
+ var bind = uncurryThis(uncurryThis.bind);
5
+
3
6
  // optional / simple context binding
4
- module.exports = function (fn, that, length) {
7
+ module.exports = function (fn, that) {
5
8
  aCallable(fn);
6
- if (that === undefined) return fn;
7
- switch (length) {
8
- case 0: return function () {
9
- return fn.call(that);
10
- };
11
- case 1: return function (a) {
12
- return fn.call(that, a);
13
- };
14
- case 2: return function (a, b) {
15
- return fn.call(that, a, b);
16
- };
17
- case 3: return function (a, b, c) {
18
- return fn.call(that, a, b, c);
19
- };
20
- }
21
- return function (/* ...args */) {
9
+ return that === undefined ? fn : bind ? bind(fn, that) : function (/* ...args */) {
22
10
  return fn.apply(that, arguments);
23
11
  };
24
12
  };