core-js 3.18.2 → 3.19.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (334) hide show
  1. package/es/date/to-primitive.js +2 -3
  2. package/es/date/to-string.js +2 -4
  3. package/es/instance/at.js +6 -5
  4. package/es/instance/bind.js +3 -2
  5. package/es/instance/code-point-at.js +4 -3
  6. package/es/instance/concat.js +3 -2
  7. package/es/instance/copy-within.js +3 -2
  8. package/es/instance/ends-with.js +4 -3
  9. package/es/instance/entries.js +3 -2
  10. package/es/instance/every.js +3 -2
  11. package/es/instance/fill.js +3 -2
  12. package/es/instance/filter.js +3 -2
  13. package/es/instance/find-index.js +3 -2
  14. package/es/instance/find.js +3 -2
  15. package/es/instance/flags.js +2 -1
  16. package/es/instance/flat-map.js +3 -2
  17. package/es/instance/flat.js +3 -2
  18. package/es/instance/for-each.js +3 -2
  19. package/es/instance/includes.js +6 -5
  20. package/es/instance/index-of.js +3 -2
  21. package/es/instance/keys.js +3 -2
  22. package/es/instance/last-index-of.js +3 -2
  23. package/es/instance/map.js +3 -2
  24. package/es/instance/match-all.js +4 -3
  25. package/es/instance/pad-end.js +4 -3
  26. package/es/instance/pad-start.js +4 -3
  27. package/es/instance/reduce-right.js +3 -2
  28. package/es/instance/reduce.js +3 -2
  29. package/es/instance/repeat.js +4 -3
  30. package/es/instance/replace-all.js +4 -3
  31. package/es/instance/reverse.js +3 -2
  32. package/es/instance/slice.js +3 -2
  33. package/es/instance/some.js +3 -2
  34. package/es/instance/sort.js +3 -2
  35. package/es/instance/splice.js +3 -2
  36. package/es/instance/starts-with.js +4 -3
  37. package/es/instance/trim-end.js +4 -3
  38. package/es/instance/trim-left.js +4 -3
  39. package/es/instance/trim-right.js +4 -3
  40. package/es/instance/trim-start.js +4 -3
  41. package/es/instance/trim.js +4 -3
  42. package/es/instance/values.js +3 -2
  43. package/es/json/stringify.js +4 -3
  44. package/es/promise/all-settled.js +2 -1
  45. package/es/promise/any.js +2 -1
  46. package/es/regexp/flags.js +3 -4
  47. package/es/regexp/match.js +2 -1
  48. package/es/regexp/replace.js +2 -1
  49. package/es/regexp/search.js +2 -1
  50. package/es/regexp/split.js +2 -1
  51. package/es/regexp/test.js +2 -3
  52. package/es/regexp/to-string.js +2 -3
  53. package/es/string/iterator.js +2 -5
  54. package/features/instance/at.js +6 -5
  55. package/features/instance/code-points.js +4 -3
  56. package/features/instance/filter-out.js +3 -2
  57. package/features/instance/filter-reject.js +3 -2
  58. package/features/instance/find-last-index.js +3 -2
  59. package/features/instance/find-last.js +3 -2
  60. package/features/instance/group-by.js +3 -2
  61. package/features/instance/unique-by.js +3 -2
  62. package/features/map/from.js +3 -2
  63. package/features/map/group-by.js +2 -1
  64. package/features/map/key-by.js +2 -1
  65. package/features/map/of.js +3 -2
  66. package/features/promise/try.js +2 -1
  67. package/features/set/from.js +3 -2
  68. package/features/set/of.js +3 -2
  69. package/features/weak-map/from.js +3 -2
  70. package/features/weak-map/of.js +3 -2
  71. package/features/weak-set/from.js +3 -2
  72. package/features/weak-set/of.js +3 -2
  73. package/internals/a-callable.js +3 -0
  74. package/internals/a-constructor.js +3 -0
  75. package/internals/a-possible-prototype.js +5 -1
  76. package/internals/an-instance.js +8 -3
  77. package/internals/an-object.js +4 -0
  78. package/internals/array-buffer-native.js +1 -1
  79. package/internals/array-buffer-non-extensible.js +10 -0
  80. package/internals/array-buffer-view-core.js +3 -2
  81. package/internals/array-buffer.js +29 -16
  82. package/internals/array-from-async.js +1 -1
  83. package/internals/array-from.js +6 -2
  84. package/internals/array-group-by.js +6 -3
  85. package/internals/array-iteration-from-last.js +1 -1
  86. package/internals/array-iteration.js +5 -4
  87. package/internals/array-last-index-of.js +2 -1
  88. package/internals/array-reduce.js +3 -0
  89. package/internals/array-slice-simple.js +17 -0
  90. package/internals/array-slice.js +3 -0
  91. package/internals/array-sort.js +10 -11
  92. package/internals/array-species-constructor.js +2 -0
  93. package/internals/array-unique-by.js +13 -9
  94. package/internals/async-from-sync-iterator.js +4 -3
  95. package/internals/async-iterator-create-proxy.js +4 -3
  96. package/internals/async-iterator-iteration.js +5 -2
  97. package/internals/classof-raw.js +5 -2
  98. package/internals/classof.js +3 -0
  99. package/internals/clear-error-stack.js +20 -0
  100. package/internals/collection-add-all.js +3 -2
  101. package/internals/collection-delete-all.js +3 -2
  102. package/internals/collection-from.js +7 -4
  103. package/internals/collection-of.js +3 -4
  104. package/internals/collection-strong.js +11 -9
  105. package/internals/collection-weak.js +10 -6
  106. package/internals/collection.js +8 -7
  107. package/internals/composite-key.js +9 -2
  108. package/internals/create-html.js +3 -1
  109. package/internals/date-to-iso-string.js +23 -13
  110. package/internals/date-to-primitive.js +3 -0
  111. package/internals/define-iterator.js +2 -1
  112. package/internals/engine-v8-version.js +10 -4
  113. package/internals/entry-unbind.js +3 -5
  114. package/internals/error-stack-installable.js +10 -0
  115. package/internals/export.js +1 -1
  116. package/internals/fix-regexp-well-known-symbol-logic.js +5 -3
  117. package/internals/flatten-into-array.js +4 -1
  118. package/internals/function-apply.js +9 -0
  119. package/internals/function-bind-context.js +5 -17
  120. package/internals/function-bind.js +15 -9
  121. package/internals/function-call.js +5 -0
  122. package/internals/function-uncurry-this.js +12 -0
  123. package/internals/get-async-iterator.js +2 -1
  124. package/internals/get-iterator.js +7 -2
  125. package/internals/get-map-iterator.js +3 -1
  126. package/internals/get-set-iterator.js +3 -1
  127. package/internals/get-substitution.js +10 -7
  128. package/internals/has-own-property.js +3 -2
  129. package/internals/host-report-errors.js +1 -1
  130. package/internals/ieee754.js +24 -6
  131. package/internals/indexed-object.js +5 -2
  132. package/internals/inspect-source.js +3 -2
  133. package/internals/install-error-cause.js +1 -1
  134. package/internals/internal-metadata.js +4 -7
  135. package/internals/internal-state.js +9 -7
  136. package/internals/is-callable.js +1 -1
  137. package/internals/is-constructor.js +6 -4
  138. package/internals/is-iterable.js +4 -2
  139. package/internals/is-object.js +1 -1
  140. package/internals/is-symbol.js +6 -2
  141. package/internals/iterate.js +14 -6
  142. package/internals/iterator-close.js +2 -1
  143. package/internals/iterator-create-proxy.js +4 -3
  144. package/internals/map-emplace.js +8 -3
  145. package/internals/map-upsert.js +12 -4
  146. package/internals/math-scale.js +9 -12
  147. package/internals/microtask.js +6 -4
  148. package/internals/normalize-string-argument.js +5 -0
  149. package/internals/not-a-regexp.js +3 -0
  150. package/internals/number-parse-float.js +8 -6
  151. package/internals/number-parse-int.js +4 -2
  152. package/internals/numeric-range-iterator.js +4 -0
  153. package/internals/object-assign.js +5 -2
  154. package/internals/object-define-properties.js +3 -1
  155. package/internals/object-define-property.js +2 -0
  156. package/internals/object-get-own-property-descriptor.js +2 -1
  157. package/internals/object-get-own-property-names-external.js +4 -4
  158. package/internals/object-get-prototype-of.js +2 -1
  159. package/internals/object-is-extensible.js +16 -0
  160. package/internals/object-is-prototype-of.js +3 -0
  161. package/internals/object-keys-internal.js +5 -2
  162. package/internals/object-set-prototype-of.js +4 -3
  163. package/internals/object-to-array.js +7 -3
  164. package/internals/ordinary-to-primitive.js +7 -3
  165. package/internals/own-keys.js +4 -1
  166. package/internals/reflect-metadata.js +9 -3
  167. package/internals/regexp-exec-abstract.js +6 -2
  168. package/internals/regexp-exec.js +20 -16
  169. package/internals/regexp-sticky-helpers.js +14 -2
  170. package/internals/require-object-coercible.js +4 -0
  171. package/internals/set-global.js +4 -2
  172. package/internals/shared.js +1 -1
  173. package/internals/string-multibyte.js +13 -4
  174. package/internals/string-pad.js +6 -3
  175. package/internals/string-punycode-to-ascii.js +34 -20
  176. package/internals/string-repeat.js +3 -0
  177. package/internals/string-trim.js +4 -2
  178. package/internals/task.js +11 -11
  179. package/internals/this-number-value.js +2 -4
  180. package/internals/to-index.js +3 -0
  181. package/internals/to-object.js +3 -0
  182. package/internals/to-offset.js +3 -0
  183. package/internals/to-positive-integer.js +3 -0
  184. package/internals/to-primitive.js +4 -1
  185. package/internals/to-property-key.js +1 -1
  186. package/internals/to-string.js +3 -0
  187. package/internals/try-to-string.js +4 -0
  188. package/internals/typed-array-constructor.js +10 -6
  189. package/internals/typed-array-from.js +4 -3
  190. package/internals/uid.js +4 -1
  191. package/internals/well-known-symbol.js +5 -1
  192. package/modules/es.aggregate-error.js +27 -11
  193. package/modules/es.array-buffer.slice.js +8 -4
  194. package/modules/es.array.concat.js +2 -0
  195. package/modules/es.array.index-of.js +7 -5
  196. package/modules/es.array.join.js +3 -2
  197. package/modules/es.array.of.js +3 -1
  198. package/modules/es.array.reduce.js +2 -1
  199. package/modules/es.array.reverse.js +3 -2
  200. package/modules/es.array.slice.js +4 -2
  201. package/modules/es.array.sort.js +7 -4
  202. package/modules/es.array.splice.js +2 -0
  203. package/modules/es.date.get-year.js +3 -2
  204. package/modules/es.date.now.js +6 -1
  205. package/modules/es.date.set-year.js +6 -4
  206. package/modules/es.date.to-primitive.js +2 -1
  207. package/modules/es.date.to-string.js +5 -4
  208. package/modules/es.escape.js +12 -5
  209. package/modules/es.function.has-instance.js +3 -2
  210. package/modules/es.function.name.js +5 -3
  211. package/modules/es.json.stringify.js +18 -7
  212. package/modules/es.map.js +1 -1
  213. package/modules/es.number.constructor.js +12 -7
  214. package/modules/es.number.to-fixed.js +19 -13
  215. package/modules/es.number.to-precision.js +6 -5
  216. package/modules/es.object.is-extensible.js +4 -10
  217. package/modules/es.object.is-frozen.js +6 -2
  218. package/modules/es.object.is-sealed.js +6 -2
  219. package/modules/es.promise.all-settled.js +2 -2
  220. package/modules/es.promise.any.js +5 -4
  221. package/modules/es.promise.js +22 -18
  222. package/modules/es.reflect.apply.js +4 -10
  223. package/modules/es.reflect.construct.js +10 -5
  224. package/modules/es.reflect.get.js +2 -1
  225. package/modules/es.reflect.is-extensible.js +2 -4
  226. package/modules/es.reflect.set.js +2 -1
  227. package/modules/es.regexp.constructor.js +26 -16
  228. package/modules/es.regexp.dot-all.js +5 -1
  229. package/modules/es.regexp.flags.js +4 -2
  230. package/modules/es.regexp.sticky.js +7 -3
  231. package/modules/es.regexp.test.js +7 -3
  232. package/modules/es.regexp.to-string.js +8 -5
  233. package/modules/es.set.js +1 -1
  234. package/modules/es.string.at-alternative.js +4 -1
  235. package/modules/es.string.ends-with.js +6 -4
  236. package/modules/es.string.from-code-point.js +7 -4
  237. package/modules/es.string.includes.js +8 -2
  238. package/modules/es.string.match-all.js +25 -19
  239. package/modules/es.string.match.js +2 -1
  240. package/modules/es.string.raw.js +6 -6
  241. package/modules/es.string.replace-all.js +19 -13
  242. package/modules/es.string.replace.js +19 -12
  243. package/modules/es.string.search.js +2 -1
  244. package/modules/es.string.split.js +23 -16
  245. package/modules/es.string.starts-with.js +6 -4
  246. package/modules/es.string.substr.js +3 -2
  247. package/modules/es.symbol.description.js +20 -12
  248. package/modules/es.symbol.js +34 -21
  249. package/modules/es.typed-array.copy-within.js +4 -2
  250. package/modules/es.typed-array.fill.js +9 -2
  251. package/modules/es.typed-array.iterator.js +7 -6
  252. package/modules/es.typed-array.join.js +3 -3
  253. package/modules/es.typed-array.last-index-of.js +3 -2
  254. package/modules/es.typed-array.reduce-right.js +2 -1
  255. package/modules/es.typed-array.reduce.js +2 -1
  256. package/modules/es.typed-array.set.js +2 -0
  257. package/modules/es.typed-array.slice.js +2 -2
  258. package/modules/es.typed-array.sort.js +13 -28
  259. package/modules/es.typed-array.to-locale-string.js +7 -2
  260. package/modules/es.typed-array.to-string.js +3 -2
  261. package/modules/es.unescape.js +14 -9
  262. package/modules/es.weak-map.js +15 -15
  263. package/modules/esnext.array.is-template-object.js +1 -1
  264. package/modules/esnext.async-iterator.as-indexed-pairs.js +2 -1
  265. package/modules/esnext.async-iterator.constructor.js +1 -1
  266. package/modules/esnext.async-iterator.drop.js +2 -1
  267. package/modules/esnext.async-iterator.filter.js +2 -1
  268. package/modules/esnext.async-iterator.flat-map.js +3 -2
  269. package/modules/esnext.async-iterator.from.js +4 -4
  270. package/modules/esnext.async-iterator.map.js +2 -1
  271. package/modules/esnext.async-iterator.reduce.js +4 -1
  272. package/modules/esnext.async-iterator.take.js +4 -2
  273. package/modules/esnext.composite-key.js +5 -1
  274. package/modules/esnext.composite-symbol.js +3 -2
  275. package/modules/esnext.iterator.as-indexed-pairs.js +2 -1
  276. package/modules/esnext.iterator.constructor.js +1 -1
  277. package/modules/esnext.iterator.drop.js +4 -2
  278. package/modules/esnext.iterator.filter.js +2 -1
  279. package/modules/esnext.iterator.flat-map.js +7 -3
  280. package/modules/esnext.iterator.from.js +4 -4
  281. package/modules/esnext.iterator.map.js +2 -1
  282. package/modules/esnext.iterator.reduce.js +3 -0
  283. package/modules/esnext.iterator.take.js +2 -1
  284. package/modules/esnext.map.delete-all.js +2 -4
  285. package/modules/esnext.map.emplace.js +2 -2
  286. package/modules/esnext.map.every.js +1 -1
  287. package/modules/esnext.map.filter.js +5 -4
  288. package/modules/esnext.map.find-key.js +1 -1
  289. package/modules/esnext.map.find.js +1 -1
  290. package/modules/esnext.map.group-by.js +6 -2
  291. package/modules/esnext.map.includes.js +1 -1
  292. package/modules/esnext.map.key-by.js +2 -1
  293. package/modules/esnext.map.map-keys.js +5 -4
  294. package/modules/esnext.map.map-values.js +5 -4
  295. package/modules/esnext.map.reduce.js +3 -0
  296. package/modules/esnext.map.some.js +1 -1
  297. package/modules/esnext.map.update-or-insert.js +2 -2
  298. package/modules/esnext.map.update.js +11 -4
  299. package/modules/esnext.map.upsert.js +2 -2
  300. package/modules/esnext.math.seeded-prng.js +3 -1
  301. package/modules/esnext.number.from-string.js +12 -3
  302. package/modules/esnext.observable.js +14 -9
  303. package/modules/esnext.reflect.get-metadata-keys.js +5 -10
  304. package/modules/esnext.set.add-all.js +2 -4
  305. package/modules/esnext.set.delete-all.js +2 -4
  306. package/modules/esnext.set.difference.js +3 -2
  307. package/modules/esnext.set.every.js +1 -1
  308. package/modules/esnext.set.filter.js +4 -3
  309. package/modules/esnext.set.find.js +1 -1
  310. package/modules/esnext.set.intersection.js +3 -2
  311. package/modules/esnext.set.is-disjoint-from.js +3 -2
  312. package/modules/esnext.set.is-subset-of.js +3 -2
  313. package/modules/esnext.set.is-superset-of.js +3 -2
  314. package/modules/esnext.set.join.js +9 -4
  315. package/modules/esnext.set.map.js +5 -4
  316. package/modules/esnext.set.reduce.js +3 -0
  317. package/modules/esnext.set.some.js +1 -1
  318. package/modules/esnext.set.symmetric-difference.js +3 -2
  319. package/modules/esnext.typed-array.from-async.js +0 -1
  320. package/modules/esnext.typed-array.unique-by.js +4 -2
  321. package/modules/esnext.weak-map.delete-all.js +2 -4
  322. package/modules/esnext.weak-map.emplace.js +2 -2
  323. package/modules/esnext.weak-map.upsert.js +2 -2
  324. package/modules/esnext.weak-set.add-all.js +2 -4
  325. package/modules/esnext.weak-set.delete-all.js +2 -4
  326. package/modules/web.timers.js +5 -4
  327. package/modules/web.url-search-params.js +122 -104
  328. package/modules/web.url.js +664 -628
  329. package/modules/web.url.to-json.js +2 -1
  330. package/package.json +2 -2
  331. package/stable/instance/entries.js +6 -4
  332. package/stable/instance/for-each.js +6 -4
  333. package/stable/instance/keys.js +6 -4
  334. package/stable/instance/values.js +6 -4
@@ -1,6 +1,7 @@
1
1
  'use strict';
2
2
  // https://github.com/tc39/proposal-iterator-helpers
3
3
  var $ = require('../internals/export');
4
+ var apply = require('../internals/function-apply');
4
5
  var aCallable = require('../internals/a-callable');
5
6
  var anObject = require('../internals/an-object');
6
7
  var createAsyncIteratorProxy = require('../internals/async-iterator-create-proxy');
@@ -12,7 +13,7 @@ var AsyncIteratorProxy = createAsyncIteratorProxy(function (Promise, args) {
12
13
  return new Promise(function (resolve, reject) {
13
14
  var loop = function () {
14
15
  try {
15
- Promise.resolve(anObject(state.next.apply(state.iterator, args))).then(function (step) {
16
+ Promise.resolve(anObject(apply(state.next, state.iterator, args))).then(function (step) {
16
17
  try {
17
18
  if (anObject(step).done) {
18
19
  state.done = true;
@@ -1,6 +1,7 @@
1
1
  'use strict';
2
2
  // https://github.com/tc39/proposal-iterator-helpers
3
3
  var $ = require('../internals/export');
4
+ var call = require('../internals/function-call');
4
5
  var aCallable = require('../internals/a-callable');
5
6
  var anObject = require('../internals/an-object');
6
7
  var createAsyncIteratorProxy = require('../internals/async-iterator-create-proxy');
@@ -14,7 +15,7 @@ var AsyncIteratorProxy = createAsyncIteratorProxy(function (Promise) {
14
15
  return new Promise(function (resolve, reject) {
15
16
  var outerLoop = function () {
16
17
  try {
17
- Promise.resolve(anObject(state.next.call(state.iterator))).then(function (step) {
18
+ Promise.resolve(anObject(call(state.next, state.iterator))).then(function (step) {
18
19
  try {
19
20
  if (anObject(step).done) {
20
21
  state.done = true;
@@ -36,7 +37,7 @@ var AsyncIteratorProxy = createAsyncIteratorProxy(function (Promise) {
36
37
  var innerLoop = function () {
37
38
  if (innerIterator = state.innerIterator) {
38
39
  try {
39
- Promise.resolve(anObject(state.innerNext.call(innerIterator))).then(function (result) {
40
+ Promise.resolve(anObject(call(state.innerNext, innerIterator))).then(function (result) {
40
41
  try {
41
42
  if (anObject(result).done) {
42
43
  state.innerIterator = state.innerNext = null;
@@ -1,7 +1,9 @@
1
1
  // https://github.com/tc39/proposal-iterator-helpers
2
2
  var $ = require('../internals/export');
3
+ var apply = require('../internals/function-apply');
3
4
  var anObject = require('../internals/an-object');
4
5
  var toObject = require('../internals/to-object');
6
+ var isPrototypeOf = require('../internals/object-is-prototype-of');
5
7
  var AsyncIteratorPrototype = require('../internals/async-iterator-prototype');
6
8
  var createAsyncIteratorProxy = require('../internals/async-iterator-create-proxy');
7
9
  var getAsyncIterator = require('../internals/get-async-iterator');
@@ -13,10 +15,8 @@ var AsyncFromSyncIterator = require('../internals/async-from-sync-iterator');
13
15
 
14
16
  var ASYNC_ITERATOR = wellKnownSymbol('asyncIterator');
15
17
 
16
- var isPrototypeOf = {}.isPrototypeOf;
17
-
18
18
  var AsyncIteratorProxy = createAsyncIteratorProxy(function (Promise, args) {
19
- return anObject(this.next.apply(this.iterator, args));
19
+ return anObject(apply(this.next, this.iterator, args));
20
20
  }, true);
21
21
 
22
22
  $({ target: 'AsyncIterator', stat: true }, {
@@ -26,7 +26,7 @@ $({ target: 'AsyncIterator', stat: true }, {
26
26
  var iterator;
27
27
  if (usingIterator) {
28
28
  iterator = getAsyncIterator(object, usingIterator);
29
- if (isPrototypeOf.call(AsyncIteratorPrototype, iterator)) return iterator;
29
+ if (isPrototypeOf(AsyncIteratorPrototype, iterator)) return iterator;
30
30
  }
31
31
  if (iterator === undefined) {
32
32
  usingIterator = getIteratorMethod(object);
@@ -1,6 +1,7 @@
1
1
  'use strict';
2
2
  // https://github.com/tc39/proposal-iterator-helpers
3
3
  var $ = require('../internals/export');
4
+ var apply = require('../internals/function-apply');
4
5
  var aCallable = require('../internals/a-callable');
5
6
  var anObject = require('../internals/an-object');
6
7
  var createAsyncIteratorProxy = require('../internals/async-iterator-create-proxy');
@@ -9,7 +10,7 @@ var AsyncIteratorProxy = createAsyncIteratorProxy(function (Promise, args) {
9
10
  var state = this;
10
11
  var mapper = state.mapper;
11
12
 
12
- return Promise.resolve(anObject(state.next.apply(state.iterator, args))).then(function (step) {
13
+ return Promise.resolve(anObject(apply(state.next, state.iterator, args))).then(function (step) {
13
14
  if (anObject(step).done) {
14
15
  state.done = true;
15
16
  return { done: true, value: undefined };
@@ -1,11 +1,14 @@
1
1
  'use strict';
2
2
  // https://github.com/tc39/proposal-iterator-helpers
3
3
  var $ = require('../internals/export');
4
+ var global = require('../internals/global');
5
+ var call = require('../internals/function-call');
4
6
  var aCallable = require('../internals/a-callable');
5
7
  var anObject = require('../internals/an-object');
6
8
  var getBuiltIn = require('../internals/get-built-in');
7
9
 
8
10
  var Promise = getBuiltIn('Promise');
11
+ var TypeError = global.TypeError;
9
12
 
10
13
  $({ target: 'AsyncIterator', proto: true, real: true }, {
11
14
  reduce: function reduce(reducer /* , initialValue */) {
@@ -18,7 +21,7 @@ $({ target: 'AsyncIterator', proto: true, real: true }, {
18
21
  return new Promise(function (resolve, reject) {
19
22
  var loop = function () {
20
23
  try {
21
- Promise.resolve(anObject(next.call(iterator))).then(function (step) {
24
+ Promise.resolve(anObject(call(next, iterator))).then(function (step) {
22
25
  try {
23
26
  if (anObject(step).done) {
24
27
  noInitial ? reject(TypeError('Reduce of empty iterator with no initial value')) : resolve(accumulator);
@@ -1,6 +1,8 @@
1
1
  'use strict';
2
2
  // https://github.com/tc39/proposal-iterator-helpers
3
3
  var $ = require('../internals/export');
4
+ var apply = require('../internals/function-apply');
5
+ var call = require('../internals/function-call');
4
6
  var anObject = require('../internals/an-object');
5
7
  var toPositiveInteger = require('../internals/to-positive-integer');
6
8
  var createAsyncIteratorProxy = require('../internals/async-iterator-create-proxy');
@@ -13,12 +15,12 @@ var AsyncIteratorProxy = createAsyncIteratorProxy(function (Promise, args) {
13
15
  this.done = true;
14
16
  returnMethod = iterator['return'];
15
17
  if (returnMethod !== undefined) {
16
- return Promise.resolve(returnMethod.call(iterator)).then(function () {
18
+ return Promise.resolve(call(returnMethod, iterator)).then(function () {
17
19
  return result;
18
20
  });
19
21
  }
20
22
  return result;
21
- } return this.next.apply(iterator, args);
23
+ } return apply(this.next, iterator, args);
22
24
  });
23
25
 
24
26
  $({ target: 'AsyncIterator', proto: true, real: true }, {
@@ -1,8 +1,12 @@
1
1
  var $ = require('../internals/export');
2
+ var global = require('../internals/global');
3
+ var apply = require('../internals/function-apply');
2
4
  var getCompositeKeyNode = require('../internals/composite-key');
3
5
  var getBuiltIn = require('../internals/get-built-in');
4
6
  var create = require('../internals/object-create');
5
7
 
8
+ var Object = global.Object;
9
+
6
10
  var initializer = function () {
7
11
  var freeze = getBuiltIn('Object', 'freeze');
8
12
  return freeze ? freeze(create(null)) : create(null);
@@ -11,6 +15,6 @@ var initializer = function () {
11
15
  // https://github.com/tc39/proposal-richer-keys/tree/master/compositeKey
12
16
  $({ global: true }, {
13
17
  compositeKey: function compositeKey() {
14
- return getCompositeKeyNode.apply(Object, arguments).get('object', initializer);
18
+ return apply(getCompositeKeyNode, Object, arguments).get('object', initializer);
15
19
  }
16
20
  });
@@ -1,11 +1,12 @@
1
1
  var $ = require('../internals/export');
2
2
  var getCompositeKeyNode = require('../internals/composite-key');
3
3
  var getBuiltIn = require('../internals/get-built-in');
4
+ var apply = require('../internals/function-apply');
4
5
 
5
6
  // https://github.com/tc39/proposal-richer-keys/tree/master/compositeKey
6
7
  $({ global: true }, {
7
8
  compositeSymbol: function compositeSymbol() {
8
- if (arguments.length === 1 && typeof arguments[0] === 'string') return getBuiltIn('Symbol')['for'](arguments[0]);
9
- return getCompositeKeyNode.apply(null, arguments).get('symbol', getBuiltIn('Symbol'));
9
+ if (arguments.length == 1 && typeof arguments[0] == 'string') return getBuiltIn('Symbol')['for'](arguments[0]);
10
+ return apply(getCompositeKeyNode, null, arguments).get('symbol', getBuiltIn('Symbol'));
10
11
  }
11
12
  });
@@ -1,11 +1,12 @@
1
1
  'use strict';
2
2
  // https://github.com/tc39/proposal-iterator-helpers
3
3
  var $ = require('../internals/export');
4
+ var apply = require('../internals/function-apply');
4
5
  var anObject = require('../internals/an-object');
5
6
  var createIteratorProxy = require('../internals/iterator-create-proxy');
6
7
 
7
8
  var IteratorProxy = createIteratorProxy(function (args) {
8
- var result = anObject(this.next.apply(this.iterator, args));
9
+ var result = anObject(apply(this.next, this.iterator, args));
9
10
  var done = this.done = !!result.done;
10
11
  if (!done) return [this.index++, result.value];
11
12
  });
@@ -23,7 +23,7 @@ var FORCED = IS_PURE
23
23
  || !fails(function () { NativeIterator({}); });
24
24
 
25
25
  var IteratorConstructor = function Iterator() {
26
- anInstance(this, IteratorConstructor);
26
+ anInstance(this, IteratorPrototype);
27
27
  };
28
28
 
29
29
  if (!hasOwn(IteratorPrototype, TO_STRING_TAG)) {
@@ -1,6 +1,8 @@
1
1
  'use strict';
2
2
  // https://github.com/tc39/proposal-iterator-helpers
3
3
  var $ = require('../internals/export');
4
+ var apply = require('../internals/function-apply');
5
+ var call = require('../internals/function-call');
4
6
  var anObject = require('../internals/an-object');
5
7
  var toPositiveInteger = require('../internals/to-positive-integer');
6
8
  var createIteratorProxy = require('../internals/iterator-create-proxy');
@@ -11,11 +13,11 @@ var IteratorProxy = createIteratorProxy(function (args) {
11
13
  var result, done;
12
14
  while (this.remaining) {
13
15
  this.remaining--;
14
- result = anObject(next.call(iterator));
16
+ result = anObject(call(next, iterator));
15
17
  done = this.done = !!result.done;
16
18
  if (done) return;
17
19
  }
18
- result = anObject(next.apply(iterator, args));
20
+ result = anObject(apply(next, iterator, args));
19
21
  done = this.done = !!result.done;
20
22
  if (!done) return result.value;
21
23
  });
@@ -1,6 +1,7 @@
1
1
  'use strict';
2
2
  // https://github.com/tc39/proposal-iterator-helpers
3
3
  var $ = require('../internals/export');
4
+ var apply = require('../internals/function-apply');
4
5
  var aCallable = require('../internals/a-callable');
5
6
  var anObject = require('../internals/an-object');
6
7
  var createIteratorProxy = require('../internals/iterator-create-proxy');
@@ -12,7 +13,7 @@ var IteratorProxy = createIteratorProxy(function (args) {
12
13
  var next = this.next;
13
14
  var result, done, value;
14
15
  while (true) {
15
- result = anObject(next.apply(iterator, args));
16
+ result = anObject(apply(next, iterator, args));
16
17
  done = this.done = !!result.done;
17
18
  if (done) return;
18
19
  value = result.value;
@@ -1,12 +1,16 @@
1
1
  'use strict';
2
2
  // https://github.com/tc39/proposal-iterator-helpers
3
3
  var $ = require('../internals/export');
4
+ var global = require('../internals/global');
5
+ var call = require('../internals/function-call');
4
6
  var aCallable = require('../internals/a-callable');
5
7
  var anObject = require('../internals/an-object');
6
8
  var getIteratorMethod = require('../internals/get-iterator-method');
7
9
  var createIteratorProxy = require('../internals/iterator-create-proxy');
8
10
  var iteratorClose = require('../internals/iterator-close');
9
11
 
12
+ var TypeError = global.TypeError;
13
+
10
14
  var IteratorProxy = createIteratorProxy(function () {
11
15
  var iterator = this.iterator;
12
16
  var mapper = this.mapper;
@@ -15,12 +19,12 @@ var IteratorProxy = createIteratorProxy(function () {
15
19
  while (true) {
16
20
  try {
17
21
  if (innerIterator = this.innerIterator) {
18
- result = anObject(this.innerNext.call(innerIterator));
22
+ result = anObject(call(this.innerNext, innerIterator));
19
23
  if (!result.done) return result.value;
20
24
  this.innerIterator = this.innerNext = null;
21
25
  }
22
26
 
23
- result = anObject(this.next.call(iterator));
27
+ result = anObject(call(this.next, iterator));
24
28
 
25
29
  if (this.done = !!result.done) return;
26
30
 
@@ -31,7 +35,7 @@ var IteratorProxy = createIteratorProxy(function () {
31
35
  throw TypeError('.flatMap callback should return an iterable object');
32
36
  }
33
37
 
34
- this.innerIterator = innerIterator = anObject(iteratorMethod.call(mapped));
38
+ this.innerIterator = innerIterator = anObject(call(iteratorMethod, mapped));
35
39
  this.innerNext = aCallable(innerIterator.next);
36
40
  } catch (error) {
37
41
  iteratorClose(iterator, 'throw', error);
@@ -1,16 +1,16 @@
1
1
  // https://github.com/tc39/proposal-iterator-helpers
2
2
  var $ = require('../internals/export');
3
+ var apply = require('../internals/function-apply');
3
4
  var anObject = require('../internals/an-object');
4
5
  var toObject = require('../internals/to-object');
6
+ var isPrototypeOf = require('../internals/object-is-prototype-of');
5
7
  var IteratorPrototype = require('../internals/iterators-core').IteratorPrototype;
6
8
  var createIteratorProxy = require('../internals/iterator-create-proxy');
7
9
  var getIterator = require('../internals/get-iterator');
8
10
  var getIteratorMethod = require('../internals/get-iterator-method');
9
11
 
10
- var isPrototypeOf = {}.isPrototypeOf;
11
-
12
12
  var IteratorProxy = createIteratorProxy(function (args) {
13
- var result = anObject(this.next.apply(this.iterator, args));
13
+ var result = anObject(apply(this.next, this.iterator, args));
14
14
  var done = this.done = !!result.done;
15
15
  if (!done) return result.value;
16
16
  }, true);
@@ -22,7 +22,7 @@ $({ target: 'Iterator', stat: true }, {
22
22
  var iterator;
23
23
  if (usingIterator) {
24
24
  iterator = getIterator(object, usingIterator);
25
- if (isPrototypeOf.call(IteratorPrototype, iterator)) return iterator;
25
+ if (isPrototypeOf(IteratorPrototype, iterator)) return iterator;
26
26
  } else {
27
27
  iterator = object;
28
28
  } return new IteratorProxy({ iterator: iterator });
@@ -1,6 +1,7 @@
1
1
  'use strict';
2
2
  // https://github.com/tc39/proposal-iterator-helpers
3
3
  var $ = require('../internals/export');
4
+ var apply = require('../internals/function-apply');
4
5
  var aCallable = require('../internals/a-callable');
5
6
  var anObject = require('../internals/an-object');
6
7
  var createIteratorProxy = require('../internals/iterator-create-proxy');
@@ -8,7 +9,7 @@ var callWithSafeIterationClosing = require('../internals/call-with-safe-iteratio
8
9
 
9
10
  var IteratorProxy = createIteratorProxy(function (args) {
10
11
  var iterator = this.iterator;
11
- var result = anObject(this.next.apply(iterator, args));
12
+ var result = anObject(apply(this.next, iterator, args));
12
13
  var done = this.done = !!result.done;
13
14
  if (!done) return callWithSafeIterationClosing(iterator, this.mapper, result.value);
14
15
  });
@@ -1,10 +1,13 @@
1
1
  'use strict';
2
2
  // https://github.com/tc39/proposal-iterator-helpers
3
3
  var $ = require('../internals/export');
4
+ var global = require('../internals/global');
4
5
  var iterate = require('../internals/iterate');
5
6
  var aCallable = require('../internals/a-callable');
6
7
  var anObject = require('../internals/an-object');
7
8
 
9
+ var TypeError = global.TypeError;
10
+
8
11
  $({ target: 'Iterator', proto: true, real: true }, {
9
12
  reduce: function reduce(reducer /* , initialValue */) {
10
13
  anObject(this);
@@ -1,6 +1,7 @@
1
1
  'use strict';
2
2
  // https://github.com/tc39/proposal-iterator-helpers
3
3
  var $ = require('../internals/export');
4
+ var apply = require('../internals/function-apply');
4
5
  var anObject = require('../internals/an-object');
5
6
  var toPositiveInteger = require('../internals/to-positive-integer');
6
7
  var createIteratorProxy = require('../internals/iterator-create-proxy');
@@ -12,7 +13,7 @@ var IteratorProxy = createIteratorProxy(function (args) {
12
13
  this.done = true;
13
14
  return iteratorClose(iterator, 'normal', undefined);
14
15
  }
15
- var result = anObject(this.next.apply(iterator, args));
16
+ var result = anObject(apply(this.next, iterator, args));
16
17
  var done = this.done = !!result.done;
17
18
  if (!done) return result.value;
18
19
  });
@@ -1,12 +1,10 @@
1
1
  'use strict';
2
2
  var $ = require('../internals/export');
3
3
  var IS_PURE = require('../internals/is-pure');
4
- var collectionDeleteAll = require('../internals/collection-delete-all');
4
+ var deleteAll = require('../internals/collection-delete-all');
5
5
 
6
6
  // `Map.prototype.deleteAll` method
7
7
  // https://github.com/tc39/proposal-collection-methods
8
8
  $({ target: 'Map', proto: true, real: true, forced: IS_PURE }, {
9
- deleteAll: function deleteAll(/* ...elements */) {
10
- return collectionDeleteAll.apply(this, arguments);
11
- }
9
+ deleteAll: deleteAll
12
10
  });
@@ -1,10 +1,10 @@
1
1
  'use strict';
2
2
  var $ = require('../internals/export');
3
3
  var IS_PURE = require('../internals/is-pure');
4
- var $emplace = require('../internals/map-emplace');
4
+ var emplace = require('../internals/map-emplace');
5
5
 
6
6
  // `Map.prototype.emplace` method
7
7
  // https://github.com/thumbsupep/proposal-upsert
8
8
  $({ target: 'Map', proto: true, real: true, forced: IS_PURE }, {
9
- emplace: $emplace
9
+ emplace: emplace
10
10
  });
@@ -12,7 +12,7 @@ $({ target: 'Map', proto: true, real: true, forced: IS_PURE }, {
12
12
  every: function every(callbackfn /* , thisArg */) {
13
13
  var map = anObject(this);
14
14
  var iterator = getMapIterator(map);
15
- var boundFunction = bind(callbackfn, arguments.length > 1 ? arguments[1] : undefined, 3);
15
+ var boundFunction = bind(callbackfn, arguments.length > 1 ? arguments[1] : undefined);
16
16
  return !iterate(iterator, function (key, value, stop) {
17
17
  if (!boundFunction(value, key, map)) return stop();
18
18
  }, { AS_ENTRIES: true, IS_ITERATOR: true, INTERRUPTED: true }).stopped;
@@ -1,10 +1,11 @@
1
1
  'use strict';
2
- var $ = require('../internals/export');
3
2
  var IS_PURE = require('../internals/is-pure');
3
+ var $ = require('../internals/export');
4
4
  var getBuiltIn = require('../internals/get-built-in');
5
+ var bind = require('../internals/function-bind-context');
6
+ var call = require('../internals/function-call');
5
7
  var aCallable = require('../internals/a-callable');
6
8
  var anObject = require('../internals/an-object');
7
- var bind = require('../internals/function-bind-context');
8
9
  var speciesConstructor = require('../internals/species-constructor');
9
10
  var getMapIterator = require('../internals/get-map-iterator');
10
11
  var iterate = require('../internals/iterate');
@@ -15,11 +16,11 @@ $({ target: 'Map', proto: true, real: true, forced: IS_PURE }, {
15
16
  filter: function filter(callbackfn /* , thisArg */) {
16
17
  var map = anObject(this);
17
18
  var iterator = getMapIterator(map);
18
- var boundFunction = bind(callbackfn, arguments.length > 1 ? arguments[1] : undefined, 3);
19
+ var boundFunction = bind(callbackfn, arguments.length > 1 ? arguments[1] : undefined);
19
20
  var newMap = new (speciesConstructor(map, getBuiltIn('Map')))();
20
21
  var setter = aCallable(newMap.set);
21
22
  iterate(iterator, function (key, value) {
22
- if (boundFunction(value, key, map)) setter.call(newMap, key, value);
23
+ if (boundFunction(value, key, map)) call(setter, newMap, key, value);
23
24
  }, { AS_ENTRIES: true, IS_ITERATOR: true });
24
25
  return newMap;
25
26
  }
@@ -12,7 +12,7 @@ $({ target: 'Map', proto: true, real: true, forced: IS_PURE }, {
12
12
  findKey: function findKey(callbackfn /* , thisArg */) {
13
13
  var map = anObject(this);
14
14
  var iterator = getMapIterator(map);
15
- var boundFunction = bind(callbackfn, arguments.length > 1 ? arguments[1] : undefined, 3);
15
+ var boundFunction = bind(callbackfn, arguments.length > 1 ? arguments[1] : undefined);
16
16
  return iterate(iterator, function (key, value, stop) {
17
17
  if (boundFunction(value, key, map)) return stop(key);
18
18
  }, { AS_ENTRIES: true, IS_ITERATOR: true, INTERRUPTED: true }).result;
@@ -12,7 +12,7 @@ $({ target: 'Map', proto: true, real: true, forced: IS_PURE }, {
12
12
  find: function find(callbackfn /* , thisArg */) {
13
13
  var map = anObject(this);
14
14
  var iterator = getMapIterator(map);
15
- var boundFunction = bind(callbackfn, arguments.length > 1 ? arguments[1] : undefined, 3);
15
+ var boundFunction = bind(callbackfn, arguments.length > 1 ? arguments[1] : undefined);
16
16
  return iterate(iterator, function (key, value, stop) {
17
17
  if (boundFunction(value, key, map)) return stop(value);
18
18
  }, { AS_ENTRIES: true, IS_ITERATOR: true, INTERRUPTED: true }).result;
@@ -1,9 +1,13 @@
1
1
  'use strict';
2
2
  var $ = require('../internals/export');
3
+ var call = require('../internals/function-call');
4
+ var uncurryThis = require('../internals/function-uncurry-this');
3
5
  var aCallable = require('../internals/a-callable');
4
6
  var getIterator = require('../internals/get-iterator');
5
7
  var iterate = require('../internals/iterate');
6
8
 
9
+ var push = uncurryThis([].push);
10
+
7
11
  // `Map.groupBy` method
8
12
  // https://github.com/tc39/proposal-collection-methods
9
13
  $({ target: 'Map', stat: true }, {
@@ -16,8 +20,8 @@ $({ target: 'Map', stat: true }, {
16
20
  var set = aCallable(newMap.set);
17
21
  iterate(iterator, function (element) {
18
22
  var derivedKey = keyDerivative(element);
19
- if (!has.call(newMap, derivedKey)) set.call(newMap, derivedKey, [element]);
20
- else get.call(newMap, derivedKey).push(element);
23
+ if (!call(has, newMap, derivedKey)) call(set, newMap, derivedKey, [element]);
24
+ else push(call(get, newMap, derivedKey), element);
21
25
  }, { IS_ITERATOR: true });
22
26
  return newMap;
23
27
  }
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
- var $ = require('../internals/export');
3
2
  var IS_PURE = require('../internals/is-pure');
3
+ var $ = require('../internals/export');
4
4
  var anObject = require('../internals/an-object');
5
5
  var getMapIterator = require('../internals/get-map-iterator');
6
6
  var sameValueZero = require('../internals/same-value-zero');
@@ -1,5 +1,6 @@
1
1
  'use strict';
2
2
  var $ = require('../internals/export');
3
+ var call = require('../internals/function-call');
3
4
  var iterate = require('../internals/iterate');
4
5
  var aCallable = require('../internals/a-callable');
5
6
 
@@ -11,7 +12,7 @@ $({ target: 'Map', stat: true }, {
11
12
  aCallable(keyDerivative);
12
13
  var setter = aCallable(newMap.set);
13
14
  iterate(iterable, function (element) {
14
- setter.call(newMap, keyDerivative(element), element);
15
+ call(setter, newMap, keyDerivative(element), element);
15
16
  });
16
17
  return newMap;
17
18
  }
@@ -1,10 +1,11 @@
1
1
  'use strict';
2
- var $ = require('../internals/export');
3
2
  var IS_PURE = require('../internals/is-pure');
3
+ var $ = require('../internals/export');
4
4
  var getBuiltIn = require('../internals/get-built-in');
5
+ var bind = require('../internals/function-bind-context');
6
+ var call = require('../internals/function-call');
5
7
  var aCallable = require('../internals/a-callable');
6
8
  var anObject = require('../internals/an-object');
7
- var bind = require('../internals/function-bind-context');
8
9
  var speciesConstructor = require('../internals/species-constructor');
9
10
  var getMapIterator = require('../internals/get-map-iterator');
10
11
  var iterate = require('../internals/iterate');
@@ -15,11 +16,11 @@ $({ target: 'Map', proto: true, real: true, forced: IS_PURE }, {
15
16
  mapKeys: function mapKeys(callbackfn /* , thisArg */) {
16
17
  var map = anObject(this);
17
18
  var iterator = getMapIterator(map);
18
- var boundFunction = bind(callbackfn, arguments.length > 1 ? arguments[1] : undefined, 3);
19
+ var boundFunction = bind(callbackfn, arguments.length > 1 ? arguments[1] : undefined);
19
20
  var newMap = new (speciesConstructor(map, getBuiltIn('Map')))();
20
21
  var setter = aCallable(newMap.set);
21
22
  iterate(iterator, function (key, value) {
22
- setter.call(newMap, boundFunction(value, key, map), value);
23
+ call(setter, newMap, boundFunction(value, key, map), value);
23
24
  }, { AS_ENTRIES: true, IS_ITERATOR: true });
24
25
  return newMap;
25
26
  }
@@ -1,10 +1,11 @@
1
1
  'use strict';
2
- var $ = require('../internals/export');
3
2
  var IS_PURE = require('../internals/is-pure');
3
+ var $ = require('../internals/export');
4
4
  var getBuiltIn = require('../internals/get-built-in');
5
+ var bind = require('../internals/function-bind-context');
6
+ var call = require('../internals/function-call');
5
7
  var aCallable = require('../internals/a-callable');
6
8
  var anObject = require('../internals/an-object');
7
- var bind = require('../internals/function-bind-context');
8
9
  var speciesConstructor = require('../internals/species-constructor');
9
10
  var getMapIterator = require('../internals/get-map-iterator');
10
11
  var iterate = require('../internals/iterate');
@@ -15,11 +16,11 @@ $({ target: 'Map', proto: true, real: true, forced: IS_PURE }, {
15
16
  mapValues: function mapValues(callbackfn /* , thisArg */) {
16
17
  var map = anObject(this);
17
18
  var iterator = getMapIterator(map);
18
- var boundFunction = bind(callbackfn, arguments.length > 1 ? arguments[1] : undefined, 3);
19
+ var boundFunction = bind(callbackfn, arguments.length > 1 ? arguments[1] : undefined);
19
20
  var newMap = new (speciesConstructor(map, getBuiltIn('Map')))();
20
21
  var setter = aCallable(newMap.set);
21
22
  iterate(iterator, function (key, value) {
22
- setter.call(newMap, key, boundFunction(value, key, map));
23
+ call(setter, newMap, key, boundFunction(value, key, map));
23
24
  }, { AS_ENTRIES: true, IS_ITERATOR: true });
24
25
  return newMap;
25
26
  }
@@ -1,11 +1,14 @@
1
1
  'use strict';
2
2
  var $ = require('../internals/export');
3
+ var global = require('../internals/global');
3
4
  var IS_PURE = require('../internals/is-pure');
4
5
  var anObject = require('../internals/an-object');
5
6
  var aCallable = require('../internals/a-callable');
6
7
  var getMapIterator = require('../internals/get-map-iterator');
7
8
  var iterate = require('../internals/iterate');
8
9
 
10
+ var TypeError = global.TypeError;
11
+
9
12
  // `Map.prototype.reduce` method
10
13
  // https://github.com/tc39/proposal-collection-methods
11
14
  $({ target: 'Map', proto: true, real: true, forced: IS_PURE }, {
@@ -12,7 +12,7 @@ $({ target: 'Map', proto: true, real: true, forced: IS_PURE }, {
12
12
  some: function some(callbackfn /* , thisArg */) {
13
13
  var map = anObject(this);
14
14
  var iterator = getMapIterator(map);
15
- var boundFunction = bind(callbackfn, arguments.length > 1 ? arguments[1] : undefined, 3);
15
+ var boundFunction = bind(callbackfn, arguments.length > 1 ? arguments[1] : undefined);
16
16
  return iterate(iterator, function (key, value, stop) {
17
17
  if (boundFunction(value, key, map)) return stop();
18
18
  }, { AS_ENTRIES: true, IS_ITERATOR: true, INTERRUPTED: true }).stopped;
@@ -2,10 +2,10 @@
2
2
  // TODO: remove from `core-js@4`
3
3
  var $ = require('../internals/export');
4
4
  var IS_PURE = require('../internals/is-pure');
5
- var $upsert = require('../internals/map-upsert');
5
+ var upsert = require('../internals/map-upsert');
6
6
 
7
7
  // `Map.prototype.updateOrInsert` method (replaced by `Map.prototype.emplace`)
8
8
  // https://github.com/thumbsupep/proposal-upsert
9
9
  $({ target: 'Map', proto: true, real: true, name: 'upsert', forced: IS_PURE }, {
10
- updateOrInsert: $upsert
10
+ updateOrInsert: upsert
11
11
  });
@@ -1,22 +1,29 @@
1
1
  'use strict';
2
- var $ = require('../internals/export');
3
2
  var IS_PURE = require('../internals/is-pure');
3
+ var $ = require('../internals/export');
4
+ var global = require('../internals/global');
5
+ var call = require('../internals/function-call');
4
6
  var anObject = require('../internals/an-object');
5
7
  var aCallable = require('../internals/a-callable');
6
8
 
9
+ var TypeError = global.TypeError;
10
+
7
11
  // `Set.prototype.update` method
8
12
  // https://github.com/tc39/proposal-collection-methods
9
13
  $({ target: 'Map', proto: true, real: true, forced: IS_PURE }, {
10
14
  update: function update(key, callback /* , thunk */) {
11
15
  var map = anObject(this);
16
+ var get = aCallable(map.get);
17
+ var has = aCallable(map.has);
18
+ var set = aCallable(map.set);
12
19
  var length = arguments.length;
13
20
  aCallable(callback);
14
- var isPresentInMap = map.has(key);
21
+ var isPresentInMap = call(has, map, key);
15
22
  if (!isPresentInMap && length < 3) {
16
23
  throw TypeError('Updating absent value');
17
24
  }
18
- var value = isPresentInMap ? map.get(key) : aCallable(length > 2 ? arguments[2] : undefined)(key, map);
19
- map.set(key, callback(value, key, map));
25
+ var value = isPresentInMap ? call(get, map, key) : aCallable(length > 2 ? arguments[2] : undefined)(key, map);
26
+ call(set, map, key, callback(value, key, map));
20
27
  return map;
21
28
  }
22
29
  });