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,17 +1,27 @@
1
1
  var $ = require('../internals/export');
2
+ var global = require('../internals/global');
2
3
  var getBuiltIn = require('../internals/get-built-in');
4
+ var apply = require('../internals/function-apply');
5
+ var uncurryThis = require('../internals/function-uncurry-this');
3
6
  var fails = require('../internals/fails');
4
7
 
8
+ var Array = global.Array;
5
9
  var $stringify = getBuiltIn('JSON', 'stringify');
6
- var re = /[\uD800-\uDFFF]/g;
10
+ var exec = uncurryThis(/./.exec);
11
+ var charAt = uncurryThis(''.charAt);
12
+ var charCodeAt = uncurryThis(''.charCodeAt);
13
+ var replace = uncurryThis(''.replace);
14
+ var numberToString = uncurryThis(1.0.toString);
15
+
16
+ var tester = /[\uD800-\uDFFF]/g;
7
17
  var low = /^[\uD800-\uDBFF]$/;
8
18
  var hi = /^[\uDC00-\uDFFF]$/;
9
19
 
10
20
  var fix = function (match, offset, string) {
11
- var prev = string.charAt(offset - 1);
12
- var next = string.charAt(offset + 1);
13
- if ((low.test(match) && !hi.test(next)) || (hi.test(match) && !low.test(prev))) {
14
- return '\\u' + match.charCodeAt(0).toString(16);
21
+ var prev = charAt(string, offset - 1);
22
+ var next = charAt(string, offset + 1);
23
+ if ((exec(low, match) && !exec(hi, next)) || (exec(hi, match) && !exec(low, prev))) {
24
+ return '\\u' + numberToString(charCodeAt(match, 0), 16);
15
25
  } return match;
16
26
  };
17
27
 
@@ -27,8 +37,9 @@ if ($stringify) {
27
37
  $({ target: 'JSON', stat: true, forced: FORCED }, {
28
38
  // eslint-disable-next-line no-unused-vars -- required for `.length`
29
39
  stringify: function stringify(it, replacer, space) {
30
- var result = $stringify.apply(null, arguments);
31
- return typeof result == 'string' ? result.replace(re, fix) : result;
40
+ for (var i = 0, l = arguments.length, args = Array(l); i < l; i++) args[i] = arguments[i];
41
+ var result = apply($stringify, null, args);
42
+ return typeof result == 'string' ? replace(result, tester, fix) : result;
32
43
  }
33
44
  });
34
45
  }
package/modules/es.map.js CHANGED
@@ -4,6 +4,6 @@ var collectionStrong = require('../internals/collection-strong');
4
4
 
5
5
  // `Map` constructor
6
6
  // https://tc39.es/ecma262/#sec-map-objects
7
- module.exports = collection('Map', function (init) {
7
+ collection('Map', function (init) {
8
8
  return function Map() { return init(this, arguments.length ? arguments[0] : undefined); };
9
9
  }, collectionStrong);
@@ -1,49 +1,57 @@
1
1
  'use strict';
2
2
  var DESCRIPTORS = require('../internals/descriptors');
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
- var has = require('../internals/has');
7
- var classof = require('../internals/classof-raw');
7
+ var hasOwn = require('../internals/has-own-property');
8
8
  var inheritIfRequired = require('../internals/inherit-if-required');
9
+ var isPrototypeOf = require('../internals/object-is-prototype-of');
9
10
  var isSymbol = require('../internals/is-symbol');
10
11
  var toPrimitive = require('../internals/to-primitive');
11
12
  var fails = require('../internals/fails');
12
- var create = require('../internals/object-create');
13
13
  var getOwnPropertyNames = require('../internals/object-get-own-property-names').f;
14
14
  var getOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;
15
15
  var defineProperty = require('../internals/object-define-property').f;
16
+ var thisNumberValue = require('../internals/this-number-value');
16
17
  var trim = require('../internals/string-trim').trim;
17
18
 
18
19
  var NUMBER = 'Number';
19
20
  var NativeNumber = global[NUMBER];
20
21
  var NumberPrototype = NativeNumber.prototype;
22
+ var TypeError = global.TypeError;
23
+ var arraySlice = uncurryThis(''.slice);
24
+ var charCodeAt = uncurryThis(''.charCodeAt);
21
25
 
22
- // Opera ~12 has broken Object#toString
23
- var BROKEN_CLASSOF = classof(create(NumberPrototype)) == NUMBER;
26
+ // `ToNumeric` abstract operation
27
+ // https://tc39.es/ecma262/#sec-tonumeric
28
+ var toNumeric = function (value) {
29
+ var primValue = toPrimitive(value, 'number');
30
+ return typeof primValue == 'bigint' ? primValue : toNumber(primValue);
31
+ };
24
32
 
25
33
  // `ToNumber` abstract operation
26
34
  // https://tc39.es/ecma262/#sec-tonumber
27
35
  var toNumber = function (argument) {
28
- if (isSymbol(argument)) throw TypeError('Cannot convert a Symbol value to a number');
29
36
  var it = toPrimitive(argument, 'number');
30
37
  var first, third, radix, maxCode, digits, length, index, code;
38
+ if (isSymbol(it)) throw TypeError('Cannot convert a Symbol value to a number');
31
39
  if (typeof it == 'string' && it.length > 2) {
32
40
  it = trim(it);
33
- first = it.charCodeAt(0);
41
+ first = charCodeAt(it, 0);
34
42
  if (first === 43 || first === 45) {
35
- third = it.charCodeAt(2);
43
+ third = charCodeAt(it, 2);
36
44
  if (third === 88 || third === 120) return NaN; // Number('+0x1') should be NaN, old V8 fix
37
45
  } else if (first === 48) {
38
- switch (it.charCodeAt(1)) {
46
+ switch (charCodeAt(it, 1)) {
39
47
  case 66: case 98: radix = 2; maxCode = 49; break; // fast equal of /^0b[01]+$/i
40
48
  case 79: case 111: radix = 8; maxCode = 55; break; // fast equal of /^0o[0-7]+$/i
41
49
  default: return +it;
42
50
  }
43
- digits = it.slice(2);
51
+ digits = arraySlice(it, 2);
44
52
  length = digits.length;
45
53
  for (index = 0; index < length; index++) {
46
- code = digits.charCodeAt(index);
54
+ code = charCodeAt(digits, index);
47
55
  // parseInt parses a string to a first unavailable symbol
48
56
  // but ToNumber should return NaN if a string contains unavailable symbols
49
57
  if (code < 48 || code > maxCode) return NaN;
@@ -56,23 +64,21 @@ var toNumber = function (argument) {
56
64
  // https://tc39.es/ecma262/#sec-number-constructor
57
65
  if (isForced(NUMBER, !NativeNumber(' 0o1') || !NativeNumber('0b1') || NativeNumber('+0x1'))) {
58
66
  var NumberWrapper = function Number(value) {
59
- var it = arguments.length < 1 ? 0 : value;
67
+ var n = arguments.length < 1 ? 0 : NativeNumber(toNumeric(value));
60
68
  var dummy = this;
61
- return dummy instanceof NumberWrapper
62
- // check on 1..constructor(foo) case
63
- && (BROKEN_CLASSOF ? fails(function () { NumberPrototype.valueOf.call(dummy); }) : classof(dummy) != NUMBER)
64
- ? inheritIfRequired(new NativeNumber(toNumber(it)), dummy, NumberWrapper) : toNumber(it);
69
+ // check on 1..constructor(foo) case
70
+ return isPrototypeOf(NumberPrototype, dummy) && fails(function () { thisNumberValue(dummy); })
71
+ ? inheritIfRequired(Object(n), dummy, NumberWrapper) : n;
65
72
  };
66
73
  for (var keys = DESCRIPTORS ? getOwnPropertyNames(NativeNumber) : (
67
74
  // ES3:
68
75
  'MAX_VALUE,MIN_VALUE,NaN,NEGATIVE_INFINITY,POSITIVE_INFINITY,' +
69
76
  // ES2015 (in case, if modules with ES2015 Number statics required before):
70
- 'EPSILON,isFinite,isInteger,isNaN,isSafeInteger,MAX_SAFE_INTEGER,' +
71
- 'MIN_SAFE_INTEGER,parseFloat,parseInt,isInteger,' +
77
+ 'EPSILON,MAX_SAFE_INTEGER,MIN_SAFE_INTEGER,isFinite,isInteger,isNaN,isSafeInteger,parseFloat,parseInt,' +
72
78
  // ESNext
73
79
  'fromString,range'
74
80
  ).split(','), j = 0, key; keys.length > j; j++) {
75
- if (has(NativeNumber, key = keys[j]) && !has(NumberWrapper, key)) {
81
+ if (hasOwn(NativeNumber, key = keys[j]) && !hasOwn(NumberWrapper, key)) {
76
82
  defineProperty(NumberWrapper, key, getOwnPropertyDescriptor(NativeNumber, key));
77
83
  }
78
84
  }
@@ -1,8 +1,8 @@
1
1
  var $ = require('../internals/export');
2
- var isInteger = require('../internals/is-integer');
2
+ var isIntegralNumber = require('../internals/is-integral-number');
3
3
 
4
4
  // `Number.isInteger` method
5
5
  // https://tc39.es/ecma262/#sec-number.isinteger
6
6
  $({ target: 'Number', stat: true }, {
7
- isInteger: isInteger
7
+ isInteger: isIntegralNumber
8
8
  });
@@ -1,5 +1,5 @@
1
1
  var $ = require('../internals/export');
2
- var isInteger = require('../internals/is-integer');
2
+ var isIntegralNumber = require('../internals/is-integral-number');
3
3
 
4
4
  var abs = Math.abs;
5
5
 
@@ -7,6 +7,6 @@ var abs = Math.abs;
7
7
  // https://tc39.es/ecma262/#sec-number.issafeinteger
8
8
  $({ target: 'Number', stat: true }, {
9
9
  isSafeInteger: function isSafeInteger(number) {
10
- return isInteger(number) && abs(number) <= 0x1FFFFFFFFFFFFF;
10
+ return isIntegralNumber(number) && abs(number) <= 0x1FFFFFFFFFFFFF;
11
11
  }
12
12
  });
@@ -1,12 +1,18 @@
1
1
  'use strict';
2
2
  var $ = require('../internals/export');
3
- var toInteger = require('../internals/to-integer');
3
+ var global = require('../internals/global');
4
+ var uncurryThis = require('../internals/function-uncurry-this');
5
+ var toIntegerOrInfinity = require('../internals/to-integer-or-infinity');
4
6
  var thisNumberValue = require('../internals/this-number-value');
5
- var repeat = require('../internals/string-repeat');
7
+ var $repeat = require('../internals/string-repeat');
6
8
  var fails = require('../internals/fails');
7
9
 
8
- var nativeToFixed = 1.0.toFixed;
10
+ var RangeError = global.RangeError;
11
+ var String = global.String;
9
12
  var floor = Math.floor;
13
+ var repeat = uncurryThis($repeat);
14
+ var stringSlice = uncurryThis(''.slice);
15
+ var un$ToFixed = uncurryThis(1.0.toFixed);
10
16
 
11
17
  var pow = function (x, n, acc) {
12
18
  return n === 0 ? acc : n % 2 === 1 ? pow(x, n - 1, acc * x) : pow(x * x, n / 2, acc);
@@ -51,19 +57,19 @@ var dataToString = function (data) {
51
57
  while (--index >= 0) {
52
58
  if (s !== '' || index === 0 || data[index] !== 0) {
53
59
  var t = String(data[index]);
54
- s = s === '' ? t : s + repeat.call('0', 7 - t.length) + t;
60
+ s = s === '' ? t : s + repeat('0', 7 - t.length) + t;
55
61
  }
56
62
  } return s;
57
63
  };
58
64
 
59
- var FORCED = nativeToFixed && (
60
- 0.00008.toFixed(3) !== '0.000' ||
61
- 0.9.toFixed(0) !== '1' ||
62
- 1.255.toFixed(2) !== '1.25' ||
63
- 1000000000000000128.0.toFixed(0) !== '1000000000000000128'
64
- ) || !fails(function () {
65
+ var FORCED = fails(function () {
66
+ return un$ToFixed(0.00008, 3) !== '0.000' ||
67
+ un$ToFixed(0.9, 0) !== '1' ||
68
+ un$ToFixed(1.255, 2) !== '1.25' ||
69
+ un$ToFixed(1000000000000000128.0, 0) !== '1000000000000000128';
70
+ }) || !fails(function () {
65
71
  // V8 ~ Android 4.3-
66
- nativeToFixed.call({});
72
+ un$ToFixed({});
67
73
  });
68
74
 
69
75
  // `Number.prototype.toFixed` method
@@ -71,7 +77,7 @@ var FORCED = nativeToFixed && (
71
77
  $({ target: 'Number', proto: true, forced: FORCED }, {
72
78
  toFixed: function toFixed(fractionDigits) {
73
79
  var number = thisNumberValue(this);
74
- var fractDigits = toInteger(fractionDigits);
80
+ var fractDigits = toIntegerOrInfinity(fractionDigits);
75
81
  var data = [0, 0, 0, 0, 0, 0];
76
82
  var sign = '';
77
83
  var result = '0';
@@ -110,14 +116,14 @@ $({ target: 'Number', proto: true, forced: FORCED }, {
110
116
  } else {
111
117
  multiply(data, 0, z);
112
118
  multiply(data, 1 << -e, 0);
113
- result = dataToString(data) + repeat.call('0', fractDigits);
119
+ result = dataToString(data) + repeat('0', fractDigits);
114
120
  }
115
121
  }
116
122
  if (fractDigits > 0) {
117
123
  k = result.length;
118
124
  result = sign + (k <= fractDigits
119
- ? '0.' + repeat.call('0', fractDigits - k) + result
120
- : result.slice(0, k - fractDigits) + '.' + result.slice(k - fractDigits));
125
+ ? '0.' + repeat('0', fractDigits - k) + result
126
+ : stringSlice(result, 0, k - fractDigits) + '.' + stringSlice(result, k - fractDigits));
121
127
  } else {
122
128
  result = sign + result;
123
129
  } return result;
@@ -1,16 +1,17 @@
1
1
  'use strict';
2
2
  var $ = require('../internals/export');
3
+ var uncurryThis = require('../internals/function-uncurry-this');
3
4
  var fails = require('../internals/fails');
4
5
  var thisNumberValue = require('../internals/this-number-value');
5
6
 
6
- var nativeToPrecision = 1.0.toPrecision;
7
+ var un$ToPrecision = uncurryThis(1.0.toPrecision);
7
8
 
8
9
  var FORCED = fails(function () {
9
10
  // IE7-
10
- return nativeToPrecision.call(1, undefined) !== '1';
11
+ return un$ToPrecision(1, undefined) !== '1';
11
12
  }) || !fails(function () {
12
13
  // V8 ~ Android 4.3-
13
- nativeToPrecision.call({});
14
+ un$ToPrecision({});
14
15
  });
15
16
 
16
17
  // `Number.prototype.toPrecision` method
@@ -18,7 +19,7 @@ var FORCED = fails(function () {
18
19
  $({ target: 'Number', proto: true, forced: FORCED }, {
19
20
  toPrecision: function toPrecision(precision) {
20
21
  return precision === undefined
21
- ? nativeToPrecision.call(thisNumberValue(this))
22
- : nativeToPrecision.call(thisNumberValue(this), precision);
22
+ ? un$ToPrecision(thisNumberValue(this))
23
+ : un$ToPrecision(thisNumberValue(this), precision);
23
24
  }
24
25
  });
@@ -1,5 +1,5 @@
1
1
  var $ = require('../internals/export');
2
- var hasOwn = require('../internals/has');
2
+ var hasOwn = require('../internals/has-own-property');
3
3
 
4
4
  // `Object.hasOwn` method
5
5
  // https://github.com/tc39/proposal-accessible-object-hasownproperty
@@ -1,15 +1,9 @@
1
1
  var $ = require('../internals/export');
2
- var fails = require('../internals/fails');
3
- var isObject = require('../internals/is-object');
4
-
5
- // eslint-disable-next-line es/no-object-isextensible -- safe
6
- var $isExtensible = Object.isExtensible;
7
- var FAILS_ON_PRIMITIVES = fails(function () { $isExtensible(1); });
2
+ var $isExtensible = require('../internals/object-is-extensible');
8
3
 
9
4
  // `Object.isExtensible` method
10
5
  // https://tc39.es/ecma262/#sec-object.isextensible
11
- $({ target: 'Object', stat: true, forced: FAILS_ON_PRIMITIVES }, {
12
- isExtensible: function isExtensible(it) {
13
- return isObject(it) ? $isExtensible ? $isExtensible(it) : true : false;
14
- }
6
+ // eslint-disable-next-line es/no-object-isextensible -- safe
7
+ $({ target: 'Object', stat: true, forced: Object.isExtensible !== $isExtensible }, {
8
+ isExtensible: $isExtensible
15
9
  });
@@ -1,6 +1,8 @@
1
1
  var $ = require('../internals/export');
2
2
  var fails = require('../internals/fails');
3
3
  var isObject = require('../internals/is-object');
4
+ var classof = require('../internals/classof-raw');
5
+ var ARRAY_BUFFER_NON_EXTENSIBLE = require('../internals/array-buffer-non-extensible');
4
6
 
5
7
  // eslint-disable-next-line es/no-object-isfrozen -- safe
6
8
  var $isFrozen = Object.isFrozen;
@@ -8,8 +10,10 @@ var FAILS_ON_PRIMITIVES = fails(function () { $isFrozen(1); });
8
10
 
9
11
  // `Object.isFrozen` method
10
12
  // https://tc39.es/ecma262/#sec-object.isfrozen
11
- $({ target: 'Object', stat: true, forced: FAILS_ON_PRIMITIVES }, {
13
+ $({ target: 'Object', stat: true, forced: FAILS_ON_PRIMITIVES || ARRAY_BUFFER_NON_EXTENSIBLE }, {
12
14
  isFrozen: function isFrozen(it) {
13
- return isObject(it) ? $isFrozen ? $isFrozen(it) : false : true;
15
+ if (!isObject(it)) return true;
16
+ if (ARRAY_BUFFER_NON_EXTENSIBLE && classof(it) == 'ArrayBuffer') return true;
17
+ return $isFrozen ? $isFrozen(it) : false;
14
18
  }
15
19
  });
@@ -1,6 +1,8 @@
1
1
  var $ = require('../internals/export');
2
2
  var fails = require('../internals/fails');
3
3
  var isObject = require('../internals/is-object');
4
+ var classof = require('../internals/classof-raw');
5
+ var ARRAY_BUFFER_NON_EXTENSIBLE = require('../internals/array-buffer-non-extensible');
4
6
 
5
7
  // eslint-disable-next-line es/no-object-issealed -- safe
6
8
  var $isSealed = Object.isSealed;
@@ -8,8 +10,10 @@ var FAILS_ON_PRIMITIVES = fails(function () { $isSealed(1); });
8
10
 
9
11
  // `Object.isSealed` method
10
12
  // https://tc39.es/ecma262/#sec-object.issealed
11
- $({ target: 'Object', stat: true, forced: FAILS_ON_PRIMITIVES }, {
13
+ $({ target: 'Object', stat: true, forced: FAILS_ON_PRIMITIVES || ARRAY_BUFFER_NON_EXTENSIBLE }, {
12
14
  isSealed: function isSealed(it) {
13
- return isObject(it) ? $isSealed ? $isSealed(it) : false : true;
15
+ if (!isObject(it)) return true;
16
+ if (ARRAY_BUFFER_NON_EXTENSIBLE && classof(it) == 'ArrayBuffer') return true;
17
+ return $isSealed ? $isSealed(it) : false;
14
18
  }
15
19
  });
@@ -1,5 +1,6 @@
1
1
  'use strict';
2
2
  var $ = require('../internals/export');
3
+ var call = require('../internals/function-call');
3
4
  var aCallable = require('../internals/a-callable');
4
5
  var newPromiseCapabilityModule = require('../internals/new-promise-capability');
5
6
  var perform = require('../internals/perform');
@@ -21,9 +22,8 @@ $({ target: 'Promise', stat: true }, {
21
22
  iterate(iterable, function (promise) {
22
23
  var index = counter++;
23
24
  var alreadyCalled = false;
24
- values.push(undefined);
25
25
  remaining++;
26
- promiseResolve.call(C, promise).then(function (value) {
26
+ call(promiseResolve, C, promise).then(function (value) {
27
27
  if (alreadyCalled) return;
28
28
  alreadyCalled = true;
29
29
  values[index] = { status: 'fulfilled', value: value };
@@ -2,6 +2,7 @@
2
2
  var $ = require('../internals/export');
3
3
  var aCallable = require('../internals/a-callable');
4
4
  var getBuiltIn = require('../internals/get-built-in');
5
+ var call = require('../internals/function-call');
5
6
  var newPromiseCapabilityModule = require('../internals/new-promise-capability');
6
7
  var perform = require('../internals/perform');
7
8
  var iterate = require('../internals/iterate');
@@ -13,6 +14,7 @@ var PROMISE_ANY_ERROR = 'No one promise resolved';
13
14
  $({ target: 'Promise', stat: true }, {
14
15
  any: function any(iterable) {
15
16
  var C = this;
17
+ var AggregateError = getBuiltIn('AggregateError');
16
18
  var capability = newPromiseCapabilityModule.f(C);
17
19
  var resolve = capability.resolve;
18
20
  var reject = capability.reject;
@@ -25,9 +27,8 @@ $({ target: 'Promise', stat: true }, {
25
27
  iterate(iterable, function (promise) {
26
28
  var index = counter++;
27
29
  var alreadyRejected = false;
28
- errors.push(undefined);
29
30
  remaining++;
30
- promiseResolve.call(C, promise).then(function (value) {
31
+ call(promiseResolve, C, promise).then(function (value) {
31
32
  if (alreadyRejected || alreadyResolved) return;
32
33
  alreadyResolved = true;
33
34
  resolve(value);
@@ -35,10 +36,10 @@ $({ target: 'Promise', stat: true }, {
35
36
  if (alreadyRejected || alreadyResolved) return;
36
37
  alreadyRejected = true;
37
38
  errors[index] = error;
38
- --remaining || reject(new (getBuiltIn('AggregateError'))(errors, PROMISE_ANY_ERROR));
39
+ --remaining || reject(new AggregateError(errors, PROMISE_ANY_ERROR));
39
40
  });
40
41
  });
41
- --remaining || reject(new (getBuiltIn('AggregateError'))(errors, PROMISE_ANY_ERROR));
42
+ --remaining || reject(new AggregateError(errors, PROMISE_ANY_ERROR));
42
43
  });
43
44
  if (result.error) reject(result.value);
44
45
  return capability.promise;
@@ -3,6 +3,7 @@ var $ = require('../internals/export');
3
3
  var IS_PURE = require('../internals/is-pure');
4
4
  var global = require('../internals/global');
5
5
  var getBuiltIn = require('../internals/get-built-in');
6
+ var call = require('../internals/function-call');
6
7
  var NativePromise = require('../internals/native-promise-constructor');
7
8
  var redefine = require('../internals/redefine');
8
9
  var redefineAll = require('../internals/redefine-all');
@@ -32,17 +33,19 @@ var V8_VERSION = require('../internals/engine-v8-version');
32
33
 
33
34
  var SPECIES = wellKnownSymbol('species');
34
35
  var PROMISE = 'Promise';
36
+
35
37
  var getInternalState = InternalStateModule.get;
36
38
  var setInternalState = InternalStateModule.set;
37
39
  var getInternalPromiseState = InternalStateModule.getterFor(PROMISE);
38
40
  var NativePromisePrototype = NativePromise && NativePromise.prototype;
39
41
  var PromiseConstructor = NativePromise;
40
- var PromiseConstructorPrototype = NativePromisePrototype;
42
+ var PromisePrototype = NativePromisePrototype;
41
43
  var TypeError = global.TypeError;
42
44
  var document = global.document;
43
45
  var process = global.process;
44
46
  var newPromiseCapability = newPromiseCapabilityModule.f;
45
47
  var newGenericPromiseCapability = newPromiseCapability;
48
+
46
49
  var DISPATCH_EVENT = !!(document && document.createEvent && global.dispatchEvent);
47
50
  var NATIVE_REJECTION_EVENT = isCallable(global.PromiseRejectionEvent);
48
51
  var UNHANDLED_REJECTION = 'unhandledrejection';
@@ -53,6 +56,7 @@ var REJECTED = 2;
53
56
  var HANDLED = 1;
54
57
  var UNHANDLED = 2;
55
58
  var SUBCLASSING = false;
59
+
56
60
  var Internal, OwnPromiseCapability, PromiseWrapper, nativeThen;
57
61
 
58
62
  var FORCED = isForced(PROMISE, function () {
@@ -63,7 +67,7 @@ var FORCED = isForced(PROMISE, function () {
63
67
  // We can't detect it synchronously, so just check versions
64
68
  if (!GLOBAL_CORE_JS_PROMISE && V8_VERSION === 66) return true;
65
69
  // We need Promise#finally in the pure version for preventing prototype pollution
66
- if (IS_PURE && !PromiseConstructorPrototype['finally']) return true;
70
+ if (IS_PURE && !PromisePrototype['finally']) return true;
67
71
  // We can't use @@species feature detection in V8 since it causes
68
72
  // deoptimization and performance degradation
69
73
  // https://github.com/zloirock/core-js/issues/679
@@ -125,7 +129,7 @@ var notify = function (state, isReject) {
125
129
  if (result === reaction.promise) {
126
130
  reject(TypeError('Promise-chain cycle'));
127
131
  } else if (then = isThenable(result)) {
128
- then.call(result, resolve, reject);
132
+ call(then, result, resolve, reject);
129
133
  } else resolve(result);
130
134
  } else reject(value);
131
135
  } catch (error) {
@@ -153,7 +157,7 @@ var dispatchEvent = function (name, promise, reason) {
153
157
  };
154
158
 
155
159
  var onUnhandled = function (state) {
156
- task.call(global, function () {
160
+ call(task, global, function () {
157
161
  var promise = state.facade;
158
162
  var value = state.value;
159
163
  var IS_UNHANDLED = isUnhandled(state);
@@ -176,7 +180,7 @@ var isUnhandled = function (state) {
176
180
  };
177
181
 
178
182
  var onHandleUnhandled = function (state) {
179
- task.call(global, function () {
183
+ call(task, global, function () {
180
184
  var promise = state.facade;
181
185
  if (IS_NODE) {
182
186
  process.emit('rejectionHandled', promise);
@@ -210,7 +214,7 @@ var internalResolve = function (state, value, unwrap) {
210
214
  microtask(function () {
211
215
  var wrapper = { done: false };
212
216
  try {
213
- then.call(value,
217
+ call(then, value,
214
218
  bind(internalResolve, wrapper, state),
215
219
  bind(internalReject, wrapper, state)
216
220
  );
@@ -232,9 +236,9 @@ var internalResolve = function (state, value, unwrap) {
232
236
  if (FORCED) {
233
237
  // 25.4.3.1 Promise(executor)
234
238
  PromiseConstructor = function Promise(executor) {
235
- anInstance(this, PromiseConstructor, PROMISE);
239
+ anInstance(this, PromisePrototype);
236
240
  aCallable(executor);
237
- Internal.call(this);
241
+ call(Internal, this);
238
242
  var state = getInternalState(this);
239
243
  try {
240
244
  executor(bind(internalResolve, state), bind(internalReject, state));
@@ -242,7 +246,7 @@ if (FORCED) {
242
246
  internalReject(state, error);
243
247
  }
244
248
  };
245
- PromiseConstructorPrototype = PromiseConstructor.prototype;
249
+ PromisePrototype = PromiseConstructor.prototype;
246
250
  // eslint-disable-next-line no-unused-vars -- required for `.length`
247
251
  Internal = function Promise(executor) {
248
252
  setInternalState(this, {
@@ -256,17 +260,18 @@ if (FORCED) {
256
260
  value: undefined
257
261
  });
258
262
  };
259
- Internal.prototype = redefineAll(PromiseConstructorPrototype, {
263
+ Internal.prototype = redefineAll(PromisePrototype, {
260
264
  // `Promise.prototype.then` method
261
265
  // https://tc39.es/ecma262/#sec-promise.prototype.then
262
266
  then: function then(onFulfilled, onRejected) {
263
267
  var state = getInternalPromiseState(this);
268
+ var reactions = state.reactions;
264
269
  var reaction = newPromiseCapability(speciesConstructor(this, PromiseConstructor));
265
270
  reaction.ok = isCallable(onFulfilled) ? onFulfilled : true;
266
271
  reaction.fail = isCallable(onRejected) && onRejected;
267
272
  reaction.domain = IS_NODE ? process.domain : undefined;
268
273
  state.parent = true;
269
- state.reactions.push(reaction);
274
+ reactions[reactions.length] = reaction;
270
275
  if (state.state != PENDING) notify(state, false);
271
276
  return reaction.promise;
272
277
  },
@@ -297,13 +302,13 @@ if (FORCED) {
297
302
  redefine(NativePromisePrototype, 'then', function then(onFulfilled, onRejected) {
298
303
  var that = this;
299
304
  return new PromiseConstructor(function (resolve, reject) {
300
- nativeThen.call(that, resolve, reject);
305
+ call(nativeThen, that, resolve, reject);
301
306
  }).then(onFulfilled, onRejected);
302
307
  // https://github.com/zloirock/core-js/issues/640
303
308
  }, { unsafe: true });
304
309
 
305
310
  // makes sure that native promise-based APIs `Promise#catch` properly works with patched `Promise#then`
306
- redefine(NativePromisePrototype, 'catch', PromiseConstructorPrototype['catch'], { unsafe: true });
311
+ redefine(NativePromisePrototype, 'catch', PromisePrototype['catch'], { unsafe: true });
307
312
  }
308
313
 
309
314
  // make `.constructor === Promise` work for native promise-based APIs
@@ -313,7 +318,7 @@ if (FORCED) {
313
318
 
314
319
  // make `instanceof Promise` work for native promise-based APIs
315
320
  if (setPrototypeOf) {
316
- setPrototypeOf(NativePromisePrototype, PromiseConstructorPrototype);
321
+ setPrototypeOf(NativePromisePrototype, PromisePrototype);
317
322
  }
318
323
  }
319
324
  }
@@ -333,7 +338,7 @@ $({ target: PROMISE, stat: true, forced: FORCED }, {
333
338
  // https://tc39.es/ecma262/#sec-promise.reject
334
339
  reject: function reject(r) {
335
340
  var capability = newPromiseCapability(this);
336
- capability.reject.call(undefined, r);
341
+ call(capability.reject, undefined, r);
337
342
  return capability.promise;
338
343
  }
339
344
  });
@@ -362,9 +367,8 @@ $({ target: PROMISE, stat: true, forced: INCORRECT_ITERATION }, {
362
367
  iterate(iterable, function (promise) {
363
368
  var index = counter++;
364
369
  var alreadyCalled = false;
365
- values.push(undefined);
366
370
  remaining++;
367
- $promiseResolve.call(C, promise).then(function (value) {
371
+ call($promiseResolve, C, promise).then(function (value) {
368
372
  if (alreadyCalled) return;
369
373
  alreadyCalled = true;
370
374
  values[index] = value;
@@ -385,7 +389,7 @@ $({ target: PROMISE, stat: true, forced: INCORRECT_ITERATION }, {
385
389
  var result = perform(function () {
386
390
  var $promiseResolve = aCallable(C.resolve);
387
391
  iterate(iterable, function (promise) {
388
- $promiseResolve.call(C, promise).then(capability.resolve, reject);
392
+ call($promiseResolve, C, promise).then(capability.resolve, reject);
389
393
  });
390
394
  });
391
395
  if (result.error) reject(result.value);
@@ -1,25 +1,19 @@
1
1
  var $ = require('../internals/export');
2
- var getBuiltIn = require('../internals/get-built-in');
2
+ var functionApply = require('../internals/function-apply');
3
3
  var aCallable = require('../internals/a-callable');
4
4
  var anObject = require('../internals/an-object');
5
5
  var fails = require('../internals/fails');
6
6
 
7
- var nativeApply = getBuiltIn('Reflect', 'apply');
8
- var functionApply = Function.apply;
9
-
10
7
  // MS Edge argumentsList argument is optional
11
8
  var OPTIONAL_ARGUMENTS_LIST = !fails(function () {
12
- nativeApply(function () { /* empty */ });
9
+ // eslint-disable-next-line es/no-reflect -- required for testing
10
+ Reflect.apply(function () { /* empty */ });
13
11
  });
14
12
 
15
13
  // `Reflect.apply` method
16
14
  // https://tc39.es/ecma262/#sec-reflect.apply
17
15
  $({ target: 'Reflect', stat: true, forced: OPTIONAL_ARGUMENTS_LIST }, {
18
16
  apply: function apply(target, thisArgument, argumentsList) {
19
- aCallable(target);
20
- anObject(argumentsList);
21
- return nativeApply
22
- ? nativeApply(target, thisArgument, argumentsList)
23
- : functionApply.call(target, thisArgument, argumentsList);
17
+ return functionApply(aCallable(target), thisArgument, anObject(argumentsList));
24
18
  }
25
19
  });