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,5 +1,6 @@
1
1
  'use strict';
2
2
  var global = require('../internals/global');
3
+ var uncurryThis = require('../internals/function-uncurry-this');
3
4
  var DESCRIPTORS = require('../internals/descriptors');
4
5
  var NATIVE_ARRAY_BUFFER = require('../internals/array-buffer-native');
5
6
  var FunctionName = require('../internals/function-name');
@@ -16,6 +17,7 @@ var setPrototypeOf = require('../internals/object-set-prototype-of');
16
17
  var getOwnPropertyNames = require('../internals/object-get-own-property-names').f;
17
18
  var defineProperty = require('../internals/object-define-property').f;
18
19
  var arrayFill = require('../internals/array-fill');
20
+ var arraySlice = require('../internals/array-slice-simple');
19
21
  var setToStringTag = require('../internals/set-to-string-tag');
20
22
  var InternalStateModule = require('../internals/internal-state');
21
23
 
@@ -30,10 +32,14 @@ var WRONG_LENGTH = 'Wrong length';
30
32
  var WRONG_INDEX = 'Wrong index';
31
33
  var NativeArrayBuffer = global[ARRAY_BUFFER];
32
34
  var $ArrayBuffer = NativeArrayBuffer;
35
+ var ArrayBufferPrototype = $ArrayBuffer && $ArrayBuffer[PROTOTYPE];
33
36
  var $DataView = global[DATA_VIEW];
34
- var $DataViewPrototype = $DataView && $DataView[PROTOTYPE];
37
+ var DataViewPrototype = $DataView && $DataView[PROTOTYPE];
35
38
  var ObjectPrototype = Object.prototype;
39
+ var Array = global.Array;
36
40
  var RangeError = global.RangeError;
41
+ var fill = uncurryThis(arrayFill);
42
+ var reverse = uncurryThis([].reverse);
37
43
 
38
44
  var packIEEE754 = IEEE754.pack;
39
45
  var unpackIEEE754 = IEEE754.unpack;
@@ -72,8 +78,8 @@ var get = function (view, count, index, isLittleEndian) {
72
78
  if (intIndex + count > store.byteLength) throw RangeError(WRONG_INDEX);
73
79
  var bytes = getInternalState(store.buffer).bytes;
74
80
  var start = intIndex + store.byteOffset;
75
- var pack = bytes.slice(start, start + count);
76
- return isLittleEndian ? pack : pack.reverse();
81
+ var pack = arraySlice(bytes, start, start + count);
82
+ return isLittleEndian ? pack : reverse(pack);
77
83
  };
78
84
 
79
85
  var set = function (view, count, index, conversion, value, isLittleEndian) {
@@ -88,18 +94,20 @@ var set = function (view, count, index, conversion, value, isLittleEndian) {
88
94
 
89
95
  if (!NATIVE_ARRAY_BUFFER) {
90
96
  $ArrayBuffer = function ArrayBuffer(length) {
91
- anInstance(this, $ArrayBuffer, ARRAY_BUFFER);
97
+ anInstance(this, ArrayBufferPrototype);
92
98
  var byteLength = toIndex(length);
93
99
  setInternalState(this, {
94
- bytes: arrayFill.call(new Array(byteLength), 0),
100
+ bytes: fill(Array(byteLength), 0),
95
101
  byteLength: byteLength
96
102
  });
97
103
  if (!DESCRIPTORS) this.byteLength = byteLength;
98
104
  };
99
105
 
106
+ ArrayBufferPrototype = $ArrayBuffer[PROTOTYPE];
107
+
100
108
  $DataView = function DataView(buffer, byteOffset, byteLength) {
101
- anInstance(this, $DataView, DATA_VIEW);
102
- anInstance(buffer, $ArrayBuffer, DATA_VIEW);
109
+ anInstance(this, DataViewPrototype);
110
+ anInstance(buffer, ArrayBufferPrototype);
103
111
  var bufferLength = getInternalState(buffer).byteLength;
104
112
  var offset = toIntegerOrInfinity(byteOffset);
105
113
  if (offset < 0 || offset > bufferLength) throw RangeError('Wrong offset');
@@ -117,6 +125,8 @@ if (!NATIVE_ARRAY_BUFFER) {
117
125
  }
118
126
  };
119
127
 
128
+ DataViewPrototype = $DataView[PROTOTYPE];
129
+
120
130
  if (DESCRIPTORS) {
121
131
  addGetter($ArrayBuffer, 'byteLength');
122
132
  addGetter($DataView, 'buffer');
@@ -124,7 +134,7 @@ if (!NATIVE_ARRAY_BUFFER) {
124
134
  addGetter($DataView, 'byteOffset');
125
135
  }
126
136
 
127
- redefineAll($DataView[PROTOTYPE], {
137
+ redefineAll(DataViewPrototype, {
128
138
  getInt8: function getInt8(byteOffset) {
129
139
  return get(this, 1, byteOffset)[0] << 24 >> 24;
130
140
  },
@@ -191,36 +201,39 @@ if (!NATIVE_ARRAY_BUFFER) {
191
201
  })) {
192
202
  /* eslint-enable no-new -- required for testing */
193
203
  $ArrayBuffer = function ArrayBuffer(length) {
194
- anInstance(this, $ArrayBuffer);
204
+ anInstance(this, ArrayBufferPrototype);
195
205
  return new NativeArrayBuffer(toIndex(length));
196
206
  };
197
- var ArrayBufferPrototype = $ArrayBuffer[PROTOTYPE] = NativeArrayBuffer[PROTOTYPE];
207
+
208
+ $ArrayBuffer[PROTOTYPE] = ArrayBufferPrototype;
209
+
198
210
  for (var keys = getOwnPropertyNames(NativeArrayBuffer), j = 0, key; keys.length > j;) {
199
211
  if (!((key = keys[j++]) in $ArrayBuffer)) {
200
212
  createNonEnumerableProperty($ArrayBuffer, key, NativeArrayBuffer[key]);
201
213
  }
202
214
  }
215
+
203
216
  ArrayBufferPrototype.constructor = $ArrayBuffer;
204
217
  } else if (INCORRECT_ARRAY_BUFFER_NAME && CONFIGURABLE_FUNCTION_NAME) {
205
218
  createNonEnumerableProperty(NativeArrayBuffer, 'name', ARRAY_BUFFER);
206
219
  }
207
220
 
208
221
  // WebKit bug - the same parent prototype for typed arrays and data view
209
- if (setPrototypeOf && getPrototypeOf($DataViewPrototype) !== ObjectPrototype) {
210
- setPrototypeOf($DataViewPrototype, ObjectPrototype);
222
+ if (setPrototypeOf && getPrototypeOf(DataViewPrototype) !== ObjectPrototype) {
223
+ setPrototypeOf(DataViewPrototype, ObjectPrototype);
211
224
  }
212
225
 
213
226
  // iOS Safari 7.x bug
214
227
  var testView = new $DataView(new $ArrayBuffer(2));
215
- var $setInt8 = $DataViewPrototype.setInt8;
228
+ var $setInt8 = uncurryThis(DataViewPrototype.setInt8);
216
229
  testView.setInt8(0, 2147483648);
217
230
  testView.setInt8(1, 2147483649);
218
- if (testView.getInt8(0) || !testView.getInt8(1)) redefineAll($DataViewPrototype, {
231
+ if (testView.getInt8(0) || !testView.getInt8(1)) redefineAll(DataViewPrototype, {
219
232
  setInt8: function setInt8(byteOffset, value) {
220
- $setInt8.call(this, byteOffset, value << 24 >> 24);
233
+ $setInt8(this, byteOffset, value << 24 >> 24);
221
234
  },
222
235
  setUint8: function setUint8(byteOffset, value) {
223
- $setInt8.call(this, byteOffset, value << 24 >> 24);
236
+ $setInt8(this, byteOffset, value << 24 >> 24);
224
237
  }
225
238
  }, { unsafe: true });
226
239
  }
@@ -24,7 +24,7 @@ module.exports = function fromAsync(asyncItems /* , mapfn = undefined, thisArg =
24
24
  var thisArg = argumentsLength > 2 ? arguments[2] : undefined;
25
25
  return new (getBuiltIn('Promise'))(function (resolve) {
26
26
  var O = toObject(asyncItems);
27
- if (mapfn !== undefined) mapfn = bind(mapfn, thisArg, 2);
27
+ if (mapfn !== undefined) mapfn = bind(mapfn, thisArg);
28
28
  var usingAsyncIterator = getMethod(O, ASYNC_ITERATOR);
29
29
  var usingSyncIterator = usingAsyncIterator ? undefined : getIteratorMethod(O) || arrayIterator;
30
30
  var A = isConstructor(C) ? new C() : [];
@@ -1,5 +1,7 @@
1
1
  'use strict';
2
+ var global = require('../internals/global');
2
3
  var bind = require('../internals/function-bind-context');
4
+ var call = require('../internals/function-call');
3
5
  var toObject = require('../internals/to-object');
4
6
  var callWithSafeIterationClosing = require('../internals/call-with-safe-iteration-closing');
5
7
  var isArrayIteratorMethod = require('../internals/is-array-iterator-method');
@@ -9,6 +11,8 @@ var createProperty = require('../internals/create-property');
9
11
  var getIterator = require('../internals/get-iterator');
10
12
  var getIteratorMethod = require('../internals/get-iterator-method');
11
13
 
14
+ var Array = global.Array;
15
+
12
16
  // `Array.from` method implementation
13
17
  // https://tc39.es/ecma262/#sec-array.from
14
18
  module.exports = function from(arrayLike /* , mapfn = undefined, thisArg = undefined */) {
@@ -17,7 +21,7 @@ module.exports = function from(arrayLike /* , mapfn = undefined, thisArg = undef
17
21
  var argumentsLength = arguments.length;
18
22
  var mapfn = argumentsLength > 1 ? arguments[1] : undefined;
19
23
  var mapping = mapfn !== undefined;
20
- if (mapping) mapfn = bind(mapfn, argumentsLength > 2 ? arguments[2] : undefined, 2);
24
+ if (mapping) mapfn = bind(mapfn, argumentsLength > 2 ? arguments[2] : undefined);
21
25
  var iteratorMethod = getIteratorMethod(O);
22
26
  var index = 0;
23
27
  var length, result, step, iterator, next, value;
@@ -26,7 +30,7 @@ module.exports = function from(arrayLike /* , mapfn = undefined, thisArg = undef
26
30
  iterator = getIterator(O, iteratorMethod);
27
31
  next = iterator.next;
28
32
  result = IS_CONSTRUCTOR ? new this() : [];
29
- for (;!(step = next.call(iterator)).done; index++) {
33
+ for (;!(step = call(next, iterator)).done; index++) {
30
34
  value = mapping ? callWithSafeIterationClosing(iterator, mapfn, [step.value, index], true) : step.value;
31
35
  createProperty(result, index, value);
32
36
  }
@@ -1,4 +1,6 @@
1
+ var global = require('../internals/global');
1
2
  var bind = require('../internals/function-bind-context');
3
+ var uncurryThis = require('../internals/function-uncurry-this');
2
4
  var IndexedObject = require('../internals/indexed-object');
3
5
  var toObject = require('../internals/to-object');
4
6
  var toPropertyKey = require('../internals/to-property-key');
@@ -6,12 +8,13 @@ var lengthOfArrayLike = require('../internals/length-of-array-like');
6
8
  var objectCreate = require('../internals/object-create');
7
9
  var arrayFromConstructorAndList = require('../internals/array-from-constructor-and-list');
8
10
 
9
- var push = [].push;
11
+ var Array = global.Array;
12
+ var push = uncurryThis([].push);
10
13
 
11
14
  module.exports = function ($this, callbackfn, that, specificConstructor) {
12
15
  var O = toObject($this);
13
16
  var self = IndexedObject(O);
14
- var boundFunction = bind(callbackfn, that, 3);
17
+ var boundFunction = bind(callbackfn, that);
15
18
  var target = objectCreate(null);
16
19
  var length = lengthOfArrayLike(self);
17
20
  var index = 0;
@@ -21,7 +24,7 @@ module.exports = function ($this, callbackfn, that, specificConstructor) {
21
24
  key = toPropertyKey(boundFunction(value, index, O));
22
25
  // in some IE10 builds, `hasOwnProperty` returns incorrect result on integer keys
23
26
  // but since it's a `null` prototype object, we can safely use `in`
24
- if (key in target) push.call(target[key], value);
27
+ if (key in target) push(target[key], value);
25
28
  else target[key] = [value];
26
29
  }
27
30
  if (specificConstructor) {
@@ -9,7 +9,7 @@ var createMethod = function (TYPE) {
9
9
  return function ($this, callbackfn, that) {
10
10
  var O = toObject($this);
11
11
  var self = IndexedObject(O);
12
- var boundFunction = bind(callbackfn, that, 3);
12
+ var boundFunction = bind(callbackfn, that);
13
13
  var index = lengthOfArrayLike(self);
14
14
  var value, result;
15
15
  while (index-- > 0) {
@@ -1,10 +1,11 @@
1
1
  var bind = require('../internals/function-bind-context');
2
+ var uncurryThis = require('../internals/function-uncurry-this');
2
3
  var IndexedObject = require('../internals/indexed-object');
3
4
  var toObject = require('../internals/to-object');
4
5
  var lengthOfArrayLike = require('../internals/length-of-array-like');
5
6
  var arraySpeciesCreate = require('../internals/array-species-create');
6
7
 
7
- var push = [].push;
8
+ var push = uncurryThis([].push);
8
9
 
9
10
  // `Array.prototype.{ forEach, map, filter, some, every, find, findIndex, filterReject }` methods implementation
10
11
  var createMethod = function (TYPE) {
@@ -18,7 +19,7 @@ var createMethod = function (TYPE) {
18
19
  return function ($this, callbackfn, that, specificCreate) {
19
20
  var O = toObject($this);
20
21
  var self = IndexedObject(O);
21
- var boundFunction = bind(callbackfn, that, 3);
22
+ var boundFunction = bind(callbackfn, that);
22
23
  var length = lengthOfArrayLike(self);
23
24
  var index = 0;
24
25
  var create = specificCreate || arraySpeciesCreate;
@@ -33,10 +34,10 @@ var createMethod = function (TYPE) {
33
34
  case 3: return true; // some
34
35
  case 5: return value; // find
35
36
  case 6: return index; // findIndex
36
- case 2: push.call(target, value); // filter
37
+ case 2: push(target, value); // filter
37
38
  } else switch (TYPE) {
38
39
  case 4: return false; // every
39
- case 7: push.call(target, value); // filterReject
40
+ case 7: push(target, value); // filterReject
40
41
  }
41
42
  }
42
43
  }
@@ -1,5 +1,6 @@
1
1
  'use strict';
2
2
  /* eslint-disable es/no-array-prototype-lastindexof -- safe */
3
+ var apply = require('../internals/function-apply');
3
4
  var toIndexedObject = require('../internals/to-indexed-object');
4
5
  var toIntegerOrInfinity = require('../internals/to-integer-or-infinity');
5
6
  var lengthOfArrayLike = require('../internals/length-of-array-like');
@@ -15,7 +16,7 @@ var FORCED = NEGATIVE_ZERO || !STRICT_METHOD;
15
16
  // https://tc39.es/ecma262/#sec-array.prototype.lastindexof
16
17
  module.exports = FORCED ? function lastIndexOf(searchElement /* , fromIndex = @[*-1] */) {
17
18
  // convert -0 to +0
18
- if (NEGATIVE_ZERO) return $lastIndexOf.apply(this, arguments) || 0;
19
+ if (NEGATIVE_ZERO) return apply($lastIndexOf, this, arguments) || 0;
19
20
  var O = toIndexedObject(this);
20
21
  var length = lengthOfArrayLike(O);
21
22
  var index = length - 1;
@@ -1,8 +1,11 @@
1
+ var global = require('../internals/global');
1
2
  var aCallable = require('../internals/a-callable');
2
3
  var toObject = require('../internals/to-object');
3
4
  var IndexedObject = require('../internals/indexed-object');
4
5
  var lengthOfArrayLike = require('../internals/length-of-array-like');
5
6
 
7
+ var TypeError = global.TypeError;
8
+
6
9
  // `Array.prototype.{ reduce, reduceRight }` methods implementation
7
10
  var createMethod = function (IS_RIGHT) {
8
11
  return function (that, callbackfn, argumentsLength, memo) {
@@ -0,0 +1,17 @@
1
+ var global = require('../internals/global');
2
+ var toAbsoluteIndex = require('../internals/to-absolute-index');
3
+ var lengthOfArrayLike = require('../internals/length-of-array-like');
4
+ var createProperty = require('../internals/create-property');
5
+
6
+ var Array = global.Array;
7
+ var max = Math.max;
8
+
9
+ module.exports = function (O, start, end) {
10
+ var length = lengthOfArrayLike(O);
11
+ var k = toAbsoluteIndex(start, length);
12
+ var fin = toAbsoluteIndex(end === undefined ? length : end, length);
13
+ var result = Array(max(fin - k, 0));
14
+ for (var n = 0; k < fin; k++, n++) createProperty(result, n, O[k]);
15
+ result.length = n;
16
+ return result;
17
+ };
@@ -0,0 +1,3 @@
1
+ var uncurryThis = require('../internals/function-uncurry-this');
2
+
3
+ module.exports = uncurryThis([].slice);
@@ -1,12 +1,14 @@
1
- // TODO: use something more complex like timsort?
1
+ var arraySlice = require('../internals/array-slice-simple');
2
+
2
3
  var floor = Math.floor;
3
4
 
4
5
  var mergeSort = function (array, comparefn) {
5
6
  var length = array.length;
6
7
  var middle = floor(length / 2);
7
8
  return length < 8 ? insertionSort(array, comparefn) : merge(
8
- mergeSort(array.slice(0, middle), comparefn),
9
- mergeSort(array.slice(middle), comparefn),
9
+ array,
10
+ mergeSort(arraySlice(array, 0, middle), comparefn),
11
+ mergeSort(arraySlice(array, middle), comparefn),
10
12
  comparefn
11
13
  );
12
14
  };
@@ -26,20 +28,17 @@ var insertionSort = function (array, comparefn) {
26
28
  } return array;
27
29
  };
28
30
 
29
- var merge = function (left, right, comparefn) {
31
+ var merge = function (array, left, right, comparefn) {
30
32
  var llength = left.length;
31
33
  var rlength = right.length;
32
34
  var lindex = 0;
33
35
  var rindex = 0;
34
- var result = [];
35
36
 
36
37
  while (lindex < llength || rindex < rlength) {
37
- if (lindex < llength && rindex < rlength) {
38
- result.push(comparefn(left[lindex], right[rindex]) <= 0 ? left[lindex++] : right[rindex++]);
39
- } else {
40
- result.push(lindex < llength ? left[lindex++] : right[rindex++]);
41
- }
42
- } return result;
38
+ array[lindex + rindex] = (lindex < llength && rindex < rlength)
39
+ ? comparefn(left[lindex], right[rindex]) <= 0 ? left[lindex++] : right[rindex++]
40
+ : lindex < llength ? left[lindex++] : right[rindex++];
41
+ } return array;
43
42
  };
44
43
 
45
44
  module.exports = mergeSort;
@@ -1,9 +1,11 @@
1
+ var global = require('../internals/global');
1
2
  var isArray = require('../internals/is-array');
2
3
  var isConstructor = require('../internals/is-constructor');
3
4
  var isObject = require('../internals/is-object');
4
5
  var wellKnownSymbol = require('../internals/well-known-symbol');
5
6
 
6
7
  var SPECIES = wellKnownSymbol('species');
8
+ var Array = global.Array;
7
9
 
8
10
  // a part of `ArraySpeciesCreate` abstract operation
9
11
  // https://tc39.es/ecma262/#sec-arrayspeciescreate
@@ -1,11 +1,17 @@
1
1
  'use strict';
2
+ var getBuiltIn = require('../internals/get-built-in');
3
+ var uncurryThis = require('../internals/function-uncurry-this');
2
4
  var aCallable = require('../internals/a-callable');
3
5
  var lengthOfArrayLike = require('../internals/length-of-array-like');
4
6
  var toObject = require('../internals/to-object');
5
- var getBuiltIn = require('../internals/get-built-in');
6
7
  var arraySpeciesCreate = require('../internals/array-species-create');
7
8
 
8
- var push = [].push;
9
+ var Map = getBuiltIn('Map');
10
+ var MapPrototype = Map.prototype;
11
+ var mapForEach = uncurryThis(MapPrototype.forEach);
12
+ var mapHas = uncurryThis(MapPrototype.has);
13
+ var mapSet = uncurryThis(MapPrototype.set);
14
+ var push = uncurryThis([].push);
9
15
 
10
16
  // `Array.prototype.uniqueBy` method
11
17
  // https://github.com/tc39/proposal-array-unique
@@ -13,20 +19,18 @@ module.exports = function uniqueBy(resolver) {
13
19
  var that = toObject(this);
14
20
  var length = lengthOfArrayLike(that);
15
21
  var result = arraySpeciesCreate(that, 0);
16
- var Map = getBuiltIn('Map');
17
22
  var map = new Map();
18
- var resolverFunction, index, item, key;
19
- if (resolver != null) resolverFunction = aCallable(resolver);
20
- else resolverFunction = function (value) {
23
+ var resolverFunction = resolver != null ? aCallable(resolver) : function (value) {
21
24
  return value;
22
25
  };
26
+ var index, item, key;
23
27
  for (index = 0; index < length; index++) {
24
28
  item = that[index];
25
29
  key = resolverFunction(item);
26
- if (!map.has(key)) map.set(key, item);
30
+ if (!mapHas(map, key)) mapSet(map, key, item);
27
31
  }
28
- map.forEach(function (value) {
29
- push.call(result, value);
32
+ mapForEach(map, function (value) {
33
+ push(result, value);
30
34
  });
31
35
  return result;
32
36
  };
@@ -1,4 +1,5 @@
1
1
  'use strict';
2
+ var apply = require('../internals/function-apply');
2
3
  var anObject = require('../internals/an-object');
3
4
  var create = require('../internals/object-create');
4
5
  var getMethod = require('../internals/get-method');
@@ -31,7 +32,7 @@ AsyncFromSyncIterator.prototype = redefineAll(create(AsyncIteratorPrototype), {
31
32
  var state = getInternalState(this);
32
33
  var hasArg = !!arguments.length;
33
34
  return new Promise(function (resolve, reject) {
34
- var result = anObject(state.next.apply(state.iterator, hasArg ? [arg] : []));
35
+ var result = anObject(apply(state.next, state.iterator, hasArg ? [arg] : []));
35
36
  asyncFromSyncIteratorContinuation(result, resolve, reject);
36
37
  });
37
38
  },
@@ -41,7 +42,7 @@ AsyncFromSyncIterator.prototype = redefineAll(create(AsyncIteratorPrototype), {
41
42
  return new Promise(function (resolve, reject) {
42
43
  var $return = getMethod(iterator, 'return');
43
44
  if ($return === undefined) return resolve({ done: true, value: arg });
44
- var result = anObject($return.apply(iterator, hasArg ? [arg] : []));
45
+ var result = anObject(apply($return, iterator, hasArg ? [arg] : []));
45
46
  asyncFromSyncIteratorContinuation(result, resolve, reject);
46
47
  });
47
48
  },
@@ -51,7 +52,7 @@ AsyncFromSyncIterator.prototype = redefineAll(create(AsyncIteratorPrototype), {
51
52
  return new Promise(function (resolve, reject) {
52
53
  var $throw = getMethod(iterator, 'throw');
53
54
  if ($throw === undefined) return reject(arg);
54
- var result = anObject($throw.apply(iterator, hasArg ? [arg] : []));
55
+ var result = anObject(apply($throw, iterator, hasArg ? [arg] : []));
55
56
  asyncFromSyncIteratorContinuation(result, resolve, reject);
56
57
  });
57
58
  }
@@ -1,4 +1,5 @@
1
1
  'use strict';
2
+ var call = require('../internals/function-call');
2
3
  var aCallable = require('../internals/a-callable');
3
4
  var anObject = require('../internals/an-object');
4
5
  var create = require('../internals/object-create');
@@ -33,7 +34,7 @@ module.exports = function (nextHandler, IS_ITERATOR) {
33
34
  var state = getInternalState(that);
34
35
  var args = hasArgument ? [state.ignoreArgument ? undefined : arg] : IS_ITERATOR ? [] : [undefined];
35
36
  state.ignoreArgument = false;
36
- resolve(state.done ? { done: true, value: undefined } : anObject(nextHandler.call(state, Promise, args)));
37
+ resolve(state.done ? { done: true, value: undefined } : anObject(call(nextHandler, state, Promise, args)));
37
38
  });
38
39
  },
39
40
  'return': function (value) {
@@ -44,7 +45,7 @@ module.exports = function (nextHandler, IS_ITERATOR) {
44
45
  state.done = true;
45
46
  var $$return = getMethod(iterator, 'return');
46
47
  if ($$return === undefined) return resolve({ done: true, value: value });
47
- Promise.resolve($$return.call(iterator, value)).then(function (result) {
48
+ Promise.resolve(call($$return, iterator, value)).then(function (result) {
48
49
  anObject(result);
49
50
  resolve({ done: true, value: value });
50
51
  }, reject);
@@ -58,7 +59,7 @@ module.exports = function (nextHandler, IS_ITERATOR) {
58
59
  state.done = true;
59
60
  var $$throw = getMethod(iterator, 'throw');
60
61
  if ($$throw === undefined) return reject(value);
61
- resolve($$throw.call(iterator, value));
62
+ resolve(call($$throw, iterator, value));
62
63
  });
63
64
  }
64
65
  });
@@ -1,12 +1,15 @@
1
1
  'use strict';
2
2
  // https://github.com/tc39/proposal-iterator-helpers
3
3
  // https://github.com/tc39/proposal-array-from-async
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
  var getMethod = require('../internals/get-method');
8
10
 
9
11
  var MAX_SAFE_INTEGER = 0x1FFFFFFFFFFFFF;
12
+ var TypeError = global.TypeError;
10
13
 
11
14
  var createMethod = function (TYPE) {
12
15
  var IS_TO_ARRAY = TYPE == 0;
@@ -26,7 +29,7 @@ var createMethod = function (TYPE) {
26
29
  try {
27
30
  var returnMethod = getMethod(iterator, 'return');
28
31
  if (returnMethod) {
29
- return Promise.resolve(returnMethod.call(iterator)).then(function () {
32
+ return Promise.resolve(call(returnMethod, iterator)).then(function () {
30
33
  method(argument);
31
34
  }, function (error) {
32
35
  reject(error);
@@ -46,7 +49,7 @@ var createMethod = function (TYPE) {
46
49
  if (IS_TO_ARRAY && (index > MAX_SAFE_INTEGER) && MAPPING) {
47
50
  throw TypeError('The allowed number of iterations has been exceeded');
48
51
  }
49
- Promise.resolve(anObject(next.call(iterator))).then(function (step) {
52
+ Promise.resolve(anObject(call(next, iterator))).then(function (step) {
50
53
  try {
51
54
  if (anObject(step).done) {
52
55
  if (IS_TO_ARRAY) {
@@ -1,5 +1,8 @@
1
- var toString = {}.toString;
1
+ var uncurryThis = require('../internals/function-uncurry-this');
2
+
3
+ var toString = uncurryThis({}.toString);
4
+ var stringSlice = uncurryThis(''.slice);
2
5
 
3
6
  module.exports = function (it) {
4
- return toString.call(it).slice(8, -1);
7
+ return stringSlice(toString(it), 8, -1);
5
8
  };
@@ -1,9 +1,12 @@
1
+ var global = require('../internals/global');
1
2
  var TO_STRING_TAG_SUPPORT = require('../internals/to-string-tag-support');
2
3
  var isCallable = require('../internals/is-callable');
3
4
  var classofRaw = require('../internals/classof-raw');
4
5
  var wellKnownSymbol = require('../internals/well-known-symbol');
5
6
 
6
7
  var TO_STRING_TAG = wellKnownSymbol('toStringTag');
8
+ var Object = global.Object;
9
+
7
10
  // ES3 wrong here
8
11
  var CORRECT_ARGUMENTS = classofRaw(function () { return arguments; }()) == 'Arguments';
9
12
 
@@ -0,0 +1,20 @@
1
+ var uncurryThis = require('../internals/function-uncurry-this');
2
+ var arraySlice = require('../internals/array-slice-simple');
3
+
4
+ var replace = uncurryThis(''.replace);
5
+ var split = uncurryThis(''.split);
6
+ var join = uncurryThis([].join);
7
+
8
+ var TEST = (function (arg) { return String(Error(arg).stack); })('zxcasd');
9
+ var V8_OR_CHAKRA_STACK_ENTRY = /\n\s*at [^:]*:[^\n]*/;
10
+ var IS_V8_OR_CHAKRA_STACK = V8_OR_CHAKRA_STACK_ENTRY.test(TEST);
11
+ var IS_FIREFOX_OR_SAFARI_STACK = /@[^\n]*\n/.test(TEST) && !/zxcasd/.test(TEST);
12
+
13
+ module.exports = function (stack, dropEntries) {
14
+ if (typeof stack != 'string') return stack;
15
+ if (IS_V8_OR_CHAKRA_STACK) {
16
+ while (dropEntries--) stack = replace(stack, V8_OR_CHAKRA_STACK_ENTRY, '');
17
+ } else if (IS_FIREFOX_OR_SAFARI_STACK) {
18
+ return join(arraySlice(split(stack, '\n'), dropEntries), '\n');
19
+ } return stack;
20
+ };
@@ -1,13 +1,14 @@
1
1
  'use strict';
2
+ var call = require('../internals/function-call');
2
3
  var aCallable = require('../internals/a-callable');
3
4
  var anObject = require('../internals/an-object');
4
5
 
5
6
  // https://github.com/tc39/collection-methods
6
- module.exports = function (/* ...elements */) {
7
+ module.exports = function addAll(/* ...elements */) {
7
8
  var set = anObject(this);
8
9
  var adder = aCallable(set.add);
9
10
  for (var k = 0, len = arguments.length; k < len; k++) {
10
- adder.call(set, arguments[k]);
11
+ call(adder, set, arguments[k]);
11
12
  }
12
13
  return set;
13
14
  };
@@ -1,15 +1,16 @@
1
1
  'use strict';
2
+ var call = require('../internals/function-call');
2
3
  var aCallable = require('../internals/a-callable');
3
4
  var anObject = require('../internals/an-object');
4
5
 
5
6
  // https://github.com/tc39/collection-methods
6
- module.exports = function (/* ...elements */) {
7
+ module.exports = function deleteAll(/* ...elements */) {
7
8
  var collection = anObject(this);
8
9
  var remover = aCallable(collection['delete']);
9
10
  var allDeleted = true;
10
11
  var wasDeleted;
11
12
  for (var k = 0, len = arguments.length; k < len; k++) {
12
- wasDeleted = remover.call(collection, arguments[k]);
13
+ wasDeleted = call(remover, collection, arguments[k]);
13
14
  allDeleted = allDeleted && wasDeleted;
14
15
  }
15
16
  return !!allDeleted;
@@ -1,10 +1,13 @@
1
1
  'use strict';
2
2
  // https://tc39.github.io/proposal-setmap-offrom/
3
+ var bind = require('../internals/function-bind-context');
4
+ var call = require('../internals/function-call');
3
5
  var aCallable = require('../internals/a-callable');
4
6
  var aConstructor = require('../internals/a-constructor');
5
- var bind = require('../internals/function-bind-context');
6
7
  var iterate = require('../internals/iterate');
7
8
 
9
+ var push = [].push;
10
+
8
11
  module.exports = function from(source /* , mapFn, thisArg */) {
9
12
  var length = arguments.length;
10
13
  var mapFn = length > 1 ? arguments[1] : undefined;
@@ -16,12 +19,12 @@ module.exports = function from(source /* , mapFn, thisArg */) {
16
19
  array = [];
17
20
  if (mapping) {
18
21
  n = 0;
19
- boundFunction = bind(mapFn, length > 2 ? arguments[2] : undefined, 2);
22
+ boundFunction = bind(mapFn, length > 2 ? arguments[2] : undefined);
20
23
  iterate(source, function (nextItem) {
21
- array.push(boundFunction(nextItem, n++));
24
+ call(push, array, boundFunction(nextItem, n++));
22
25
  });
23
26
  } else {
24
- iterate(source, array.push, { that: array });
27
+ iterate(source, push, { that: array });
25
28
  }
26
29
  return new this(array);
27
30
  };
@@ -1,8 +1,7 @@
1
1
  'use strict';
2
+ var arraySlice = require('../internals/array-slice');
3
+
2
4
  // https://tc39.github.io/proposal-setmap-offrom/
3
5
  module.exports = function of() {
4
- var length = arguments.length;
5
- var A = new Array(length);
6
- while (length--) A[length] = arguments[length];
7
- return new this(A);
6
+ return new this(arraySlice(arguments));
8
7
  };