core-js 3.1.3 → 3.3.0

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 (307) hide show
  1. package/README.md +1 -1
  2. package/configurator.js +7 -0
  3. package/es/global-this.js +3 -0
  4. package/es/index.js +2 -0
  5. package/es/promise/all-settled.js +11 -0
  6. package/es/promise/index.js +1 -0
  7. package/features/array/index.js +1 -0
  8. package/features/array/is-template-object.js +4 -0
  9. package/features/async-iterator/as-indexed-pairs.js +10 -0
  10. package/features/async-iterator/drop.js +10 -0
  11. package/features/async-iterator/every.js +10 -0
  12. package/features/async-iterator/filter.js +10 -0
  13. package/features/async-iterator/find.js +10 -0
  14. package/features/async-iterator/flat-map.js +10 -0
  15. package/features/async-iterator/for-each.js +10 -0
  16. package/features/async-iterator/from.js +10 -0
  17. package/features/async-iterator/index.js +22 -0
  18. package/features/async-iterator/map.js +10 -0
  19. package/features/async-iterator/reduce.js +10 -0
  20. package/features/async-iterator/some.js +10 -0
  21. package/features/async-iterator/take.js +10 -0
  22. package/features/async-iterator/to-array.js +10 -0
  23. package/features/global-this.js +1 -3
  24. package/features/iterator/as-indexed-pairs.js +10 -0
  25. package/features/iterator/drop.js +9 -0
  26. package/features/iterator/every.js +9 -0
  27. package/features/iterator/filter.js +9 -0
  28. package/features/iterator/find.js +9 -0
  29. package/features/iterator/flat-map.js +9 -0
  30. package/features/iterator/for-each.js +9 -0
  31. package/features/iterator/from.js +9 -0
  32. package/features/iterator/index.js +21 -0
  33. package/features/iterator/map.js +9 -0
  34. package/features/iterator/reduce.js +9 -0
  35. package/features/iterator/some.js +9 -0
  36. package/features/iterator/take.js +9 -0
  37. package/features/iterator/to-array.js +9 -0
  38. package/features/map/from.js +2 -0
  39. package/features/map/index.js +3 -0
  40. package/features/map/of.js +2 -0
  41. package/features/map/update-or-insert.js +6 -0
  42. package/features/map/upsert.js +5 -0
  43. package/features/promise/all-settled.js +2 -9
  44. package/features/promise/index.js +1 -0
  45. package/features/set/difference.js +2 -0
  46. package/features/set/from.js +2 -0
  47. package/features/set/is-subset-of.js +2 -0
  48. package/features/set/of.js +2 -0
  49. package/features/set/symmetric-difference.js +2 -0
  50. package/features/set/union.js +2 -0
  51. package/features/symbol/async-dispose.js +4 -0
  52. package/features/symbol/index.js +1 -0
  53. package/features/weak-map/from.js +2 -0
  54. package/features/weak-map/index.js +1 -0
  55. package/features/weak-map/of.js +2 -0
  56. package/features/weak-map/upsert.js +5 -0
  57. package/features/weak-set/from.js +2 -0
  58. package/features/weak-set/of.js +2 -0
  59. package/internals/a-possible-prototype.js +7 -0
  60. package/internals/add-to-unscopables.js +2 -2
  61. package/internals/advance-string-index.js +2 -2
  62. package/internals/array-buffer-view-core.js +5 -4
  63. package/internals/array-buffer.js +21 -16
  64. package/internals/array-copy-within.js +3 -1
  65. package/internals/array-for-each.js +3 -6
  66. package/internals/array-from.js +4 -3
  67. package/internals/array-includes.js +12 -7
  68. package/internals/{array-methods.js → array-iteration.js} +30 -18
  69. package/internals/array-last-index-of.js +3 -2
  70. package/internals/array-reduce.js +30 -21
  71. package/internals/async-iterator-iteration.js +61 -0
  72. package/internals/async-iterator-prototype.js +37 -0
  73. package/internals/collection-delete-all.js +3 -1
  74. package/internals/collection-from.js +3 -2
  75. package/internals/collection-weak.js +5 -5
  76. package/internals/collection.js +14 -14
  77. package/internals/composite-key.js +1 -0
  78. package/internals/create-async-iterator-proxy.js +61 -0
  79. package/internals/create-iterator-proxy.js +51 -0
  80. package/internals/{hide.js → create-non-enumerable-property.js} +0 -0
  81. package/internals/date-to-iso-string.js +12 -14
  82. package/internals/define-iterator.js +3 -3
  83. package/internals/document-create-element.js +2 -2
  84. package/internals/export.js +2 -2
  85. package/internals/fix-regexp-well-known-symbol-logic.js +2 -2
  86. package/internals/function-bind.js +3 -3
  87. package/internals/get-async-iterator-method.js +9 -0
  88. package/internals/global.js +4 -5
  89. package/internals/html.js +2 -4
  90. package/internals/indexed-object.js +1 -1
  91. package/internals/inherit-if-required.js +13 -6
  92. package/internals/internal-state.js +2 -2
  93. package/internals/iterate.js +21 -12
  94. package/internals/iterators-core.js +4 -2
  95. package/internals/map-upsert.js +23 -0
  96. package/internals/math-expm1.js +2 -1
  97. package/internals/math-fround.js +2 -1
  98. package/internals/math-log1p.js +3 -1
  99. package/internals/microtask.js +4 -3
  100. package/internals/native-promise-constructor.js +3 -0
  101. package/internals/native-url.js +13 -4
  102. package/internals/not-a-regexp.js +7 -0
  103. package/internals/object-assign.js +2 -1
  104. package/internals/object-create.js +2 -1
  105. package/internals/object-define-properties.js +4 -2
  106. package/internals/object-define-property.js +2 -0
  107. package/internals/object-get-own-property-descriptor.js +2 -0
  108. package/internals/object-get-own-property-names.js +2 -1
  109. package/internals/object-get-prototype-of.js +2 -1
  110. package/internals/object-keys-internal.js +2 -4
  111. package/internals/object-keys.js +2 -1
  112. package/internals/object-property-is-enumerable.js +2 -0
  113. package/internals/object-set-prototype-of.js +9 -5
  114. package/internals/object-to-array.js +25 -15
  115. package/internals/own-keys.js +2 -4
  116. package/internals/parse-float.js +7 -5
  117. package/internals/parse-int.js +6 -4
  118. package/internals/punycode-to-ascii.js +2 -4
  119. package/internals/redefine.js +3 -3
  120. package/internals/reflect-metadata.js +1 -0
  121. package/internals/regexp-flags.js +1 -0
  122. package/internals/set-global.js +2 -2
  123. package/internals/set-species.js +8 -5
  124. package/internals/shared-store.js +7 -0
  125. package/internals/shared.js +2 -6
  126. package/internals/string-multibyte.js +27 -0
  127. package/internals/string-pad.js +25 -11
  128. package/internals/string-trim.js +20 -8
  129. package/internals/task.js +3 -1
  130. package/internals/to-offset.js +3 -3
  131. package/internals/to-positive-integer.js +7 -0
  132. package/internals/to-primitive.js +7 -6
  133. package/internals/typed-array-constructor.js +15 -12
  134. package/internals/typed-array-from.js +3 -2
  135. package/internals/uid.js +1 -1
  136. package/internals/user-agent.js +2 -4
  137. package/modules/es.array.every.js +3 -6
  138. package/modules/es.array.fill.js +3 -1
  139. package/modules/es.array.filter.js +3 -6
  140. package/modules/es.array.find-index.js +2 -3
  141. package/modules/es.array.find.js +2 -3
  142. package/modules/es.array.flat-map.js +1 -1
  143. package/modules/es.array.flat.js +1 -1
  144. package/modules/es.array.includes.js +2 -4
  145. package/modules/es.array.index-of.js +2 -3
  146. package/modules/es.array.is-array.js +3 -1
  147. package/modules/es.array.map.js +3 -6
  148. package/modules/es.array.reduce-right.js +3 -4
  149. package/modules/es.array.reduce.js +3 -5
  150. package/modules/es.array.slice.js +1 -3
  151. package/modules/es.array.some.js +3 -6
  152. package/modules/es.array.splice.js +1 -3
  153. package/modules/es.date.to-primitive.js +4 -2
  154. package/modules/es.global-this.js +8 -0
  155. package/modules/es.map.js +1 -1
  156. package/modules/es.math.hypot.js +6 -1
  157. package/modules/es.number.constructor.js +9 -10
  158. package/modules/es.number.to-fixed.js +57 -53
  159. package/modules/es.object.entries.js +2 -2
  160. package/modules/es.object.get-own-property-descriptors.js +3 -3
  161. package/modules/es.object.get-prototype-of.js +1 -0
  162. package/modules/es.object.values.js +2 -2
  163. package/modules/es.promise.all-settled.js +43 -0
  164. package/modules/es.promise.finally.js +8 -0
  165. package/modules/es.promise.js +30 -14
  166. package/modules/es.reflect.apply.js +2 -2
  167. package/modules/es.reflect.construct.js +4 -4
  168. package/modules/es.reflect.define-property.js +5 -5
  169. package/modules/es.reflect.delete-property.js +1 -1
  170. package/modules/es.reflect.get-own-property-descriptor.js +2 -2
  171. package/modules/es.reflect.get-prototype-of.js +1 -1
  172. package/modules/es.reflect.get.js +3 -3
  173. package/modules/es.reflect.set-prototype-of.js +4 -2
  174. package/modules/es.reflect.set.js +3 -3
  175. package/modules/es.regexp.constructor.js +3 -3
  176. package/modules/es.regexp.to-string.js +1 -1
  177. package/modules/es.set.js +1 -1
  178. package/modules/es.string.code-point-at.js +2 -2
  179. package/modules/es.string.ends-with.js +6 -5
  180. package/modules/es.string.includes.js +4 -3
  181. package/modules/es.string.iterator.js +2 -2
  182. package/modules/es.string.match-all.js +22 -7
  183. package/modules/es.string.pad-end.js +2 -2
  184. package/modules/es.string.pad-start.js +2 -2
  185. package/modules/es.string.starts-with.js +8 -6
  186. package/modules/es.string.trim-end.js +2 -2
  187. package/modules/es.string.trim-start.js +2 -2
  188. package/modules/es.string.trim.js +3 -5
  189. package/modules/es.symbol.js +97 -87
  190. package/modules/es.typed-array.copy-within.js +2 -2
  191. package/modules/es.typed-array.every.js +2 -3
  192. package/modules/es.typed-array.fill.js +2 -2
  193. package/modules/es.typed-array.filter.js +3 -4
  194. package/modules/es.typed-array.find-index.js +2 -3
  195. package/modules/es.typed-array.find.js +2 -3
  196. package/modules/es.typed-array.for-each.js +2 -3
  197. package/modules/es.typed-array.includes.js +2 -3
  198. package/modules/es.typed-array.index-of.js +2 -3
  199. package/modules/es.typed-array.iterator.js +1 -1
  200. package/modules/es.typed-array.join.js +2 -2
  201. package/modules/es.typed-array.last-index-of.js +2 -2
  202. package/modules/es.typed-array.map.js +5 -7
  203. package/modules/es.typed-array.of.js +1 -1
  204. package/modules/es.typed-array.reduce-right.js +2 -2
  205. package/modules/es.typed-array.reduce.js +2 -2
  206. package/modules/es.typed-array.reverse.js +2 -1
  207. package/modules/es.typed-array.set.js +2 -2
  208. package/modules/es.typed-array.slice.js +3 -3
  209. package/modules/es.typed-array.some.js +2 -3
  210. package/modules/es.typed-array.sort.js +2 -2
  211. package/modules/es.typed-array.subarray.js +1 -1
  212. package/modules/es.typed-array.to-locale-string.js +7 -6
  213. package/modules/es.weak-map.js +1 -1
  214. package/modules/es.weak-set.js +1 -1
  215. package/modules/esnext.aggregate-error.js +28 -4
  216. package/modules/esnext.array.is-template-object.js +28 -0
  217. package/modules/esnext.async-iterator.as-indexed-pairs.js +27 -0
  218. package/modules/esnext.async-iterator.constructor.js +25 -0
  219. package/modules/esnext.async-iterator.drop.js +41 -0
  220. package/modules/esnext.async-iterator.every.js +10 -0
  221. package/modules/esnext.async-iterator.filter.js +42 -0
  222. package/modules/esnext.async-iterator.find.js +10 -0
  223. package/modules/esnext.async-iterator.flat-map.js +67 -0
  224. package/modules/esnext.async-iterator.for-each.js +10 -0
  225. package/modules/esnext.async-iterator.from.js +30 -0
  226. package/modules/esnext.async-iterator.map.js +30 -0
  227. package/modules/esnext.async-iterator.reduce.js +46 -0
  228. package/modules/esnext.async-iterator.some.js +10 -0
  229. package/modules/esnext.async-iterator.take.js +22 -0
  230. package/modules/esnext.async-iterator.to-array.js +10 -0
  231. package/modules/esnext.global-this.js +2 -6
  232. package/modules/esnext.iterator.as-indexed-pairs.js +20 -0
  233. package/modules/esnext.iterator.constructor.js +39 -0
  234. package/modules/esnext.iterator.drop.js +30 -0
  235. package/modules/esnext.iterator.every.js +16 -0
  236. package/modules/esnext.iterator.filter.js +30 -0
  237. package/modules/esnext.iterator.find.js +16 -0
  238. package/modules/esnext.iterator.flat-map.js +45 -0
  239. package/modules/esnext.iterator.for-each.js +11 -0
  240. package/modules/esnext.iterator.from.js +32 -0
  241. package/modules/esnext.iterator.map.js +23 -0
  242. package/modules/esnext.iterator.reduce.js +25 -0
  243. package/modules/esnext.iterator.some.js +16 -0
  244. package/modules/esnext.iterator.take.js +25 -0
  245. package/modules/esnext.iterator.to-array.js +15 -0
  246. package/modules/esnext.map.every.js +4 -5
  247. package/modules/esnext.map.filter.js +4 -5
  248. package/modules/esnext.map.find-key.js +4 -5
  249. package/modules/esnext.map.find.js +4 -5
  250. package/modules/esnext.map.includes.js +4 -7
  251. package/modules/esnext.map.key-of.js +4 -7
  252. package/modules/esnext.map.map-keys.js +4 -5
  253. package/modules/esnext.map.map-values.js +4 -5
  254. package/modules/esnext.map.reduce.js +12 -11
  255. package/modules/esnext.map.some.js +4 -5
  256. package/modules/esnext.map.update-or-insert.js +11 -0
  257. package/modules/esnext.map.update.js +3 -2
  258. package/modules/esnext.map.upsert.js +10 -0
  259. package/modules/esnext.math.signbit.js +0 -1
  260. package/modules/esnext.observable.js +26 -25
  261. package/modules/esnext.promise.all-settled.js +2 -43
  262. package/modules/esnext.reflect.get-metadata-keys.js +1 -0
  263. package/modules/esnext.set.every.js +4 -4
  264. package/modules/esnext.set.filter.js +4 -4
  265. package/modules/esnext.set.find.js +4 -4
  266. package/modules/esnext.set.is-disjoint-from.js +3 -5
  267. package/modules/esnext.set.is-subset-of.js +3 -5
  268. package/modules/esnext.set.is-superset-of.js +3 -5
  269. package/modules/esnext.set.join.js +2 -2
  270. package/modules/esnext.set.map.js +4 -4
  271. package/modules/esnext.set.reduce.js +12 -10
  272. package/modules/esnext.set.some.js +4 -4
  273. package/modules/esnext.string.at.js +2 -2
  274. package/modules/esnext.string.code-points.js +5 -3
  275. package/modules/esnext.string.match-all.js +0 -1
  276. package/modules/esnext.string.replace-all.js +16 -22
  277. package/modules/esnext.symbol.async-dispose.js +5 -0
  278. package/modules/esnext.symbol.dispose.js +1 -1
  279. package/modules/esnext.symbol.replace-all.js +1 -2
  280. package/modules/esnext.weak-map.upsert.js +10 -0
  281. package/modules/web.dom-collections.for-each.js +2 -2
  282. package/modules/web.dom-collections.iterator.js +6 -4
  283. package/modules/web.immediate.js +5 -0
  284. package/modules/web.timers.js +12 -7
  285. package/modules/web.url-search-params.js +52 -41
  286. package/modules/web.url.js +45 -43
  287. package/package.json +2 -2
  288. package/postinstall.js +49 -0
  289. package/proposals/array-is-template-object.js +1 -0
  290. package/proposals/iterator-helpers.js +20 -0
  291. package/proposals/map-update-or-insert.js +2 -0
  292. package/proposals/map-upsert.js +5 -0
  293. package/proposals/promise-all-settled.js +1 -0
  294. package/proposals/string-match-all.js +0 -2
  295. package/proposals/using-statement.js +1 -0
  296. package/stable/global-this.js +1 -3
  297. package/stable/promise/all-settled.js +1 -0
  298. package/stage/1.js +1 -3
  299. package/stage/2.js +4 -1
  300. package/stage/3.js +2 -2
  301. package/stage/4.js +2 -0
  302. package/LICENSE +0 -19
  303. package/internals/enum-keys.js +0 -16
  304. package/internals/string-at.js +0 -17
  305. package/internals/validate-set-prototype-of-arguments.js +0 -9
  306. package/internals/validate-string-method-arguments.js +0 -9
  307. package/scripts/postinstall.js +0 -23
@@ -0,0 +1,16 @@
1
+ 'use strict';
2
+ // https://github.com/tc39/proposal-iterator-helpers
3
+ var $ = require('../internals/export');
4
+ var iterate = require('../internals/iterate');
5
+ var aFunction = require('../internals/a-function');
6
+ var anObject = require('../internals/an-object');
7
+
8
+ $({ target: 'Iterator', proto: true, real: true }, {
9
+ every: function every(fn) {
10
+ anObject(this);
11
+ aFunction(fn);
12
+ return !iterate(this, function (value) {
13
+ if (!fn(value)) return iterate.stop();
14
+ }, undefined, false, true).stopped;
15
+ }
16
+ });
@@ -0,0 +1,30 @@
1
+ 'use strict';
2
+ // https://github.com/tc39/proposal-iterator-helpers
3
+ var $ = require('../internals/export');
4
+ var aFunction = require('../internals/a-function');
5
+ var anObject = require('../internals/an-object');
6
+ var createIteratorProxy = require('../internals/create-iterator-proxy');
7
+ var callWithSafeIterationClosing = require('../internals/call-with-safe-iteration-closing');
8
+
9
+ var IteratorProxy = createIteratorProxy(function (arg) {
10
+ var iterator = this.iterator;
11
+ var filterer = this.filterer;
12
+ var next = this.next;
13
+ var result, done, value;
14
+ while (true) {
15
+ result = anObject(next.call(iterator, arg));
16
+ done = this.done = !!result.done;
17
+ if (done) return;
18
+ value = result.value;
19
+ if (callWithSafeIterationClosing(iterator, filterer, value)) return value;
20
+ }
21
+ });
22
+
23
+ $({ target: 'Iterator', proto: true, real: true }, {
24
+ filter: function filter(filterer) {
25
+ return new IteratorProxy({
26
+ iterator: anObject(this),
27
+ filterer: aFunction(filterer)
28
+ });
29
+ }
30
+ });
@@ -0,0 +1,16 @@
1
+ 'use strict';
2
+ // https://github.com/tc39/proposal-iterator-helpers
3
+ var $ = require('../internals/export');
4
+ var iterate = require('../internals/iterate');
5
+ var aFunction = require('../internals/a-function');
6
+ var anObject = require('../internals/an-object');
7
+
8
+ $({ target: 'Iterator', proto: true, real: true }, {
9
+ find: function find(fn) {
10
+ anObject(this);
11
+ aFunction(fn);
12
+ return iterate(this, function (value) {
13
+ if (fn(value)) return iterate.stop(value);
14
+ }, undefined, false, true).result;
15
+ }
16
+ });
@@ -0,0 +1,45 @@
1
+ 'use strict';
2
+ // https://github.com/tc39/proposal-iterator-helpers
3
+ var $ = require('../internals/export');
4
+ var aFunction = require('../internals/a-function');
5
+ var anObject = require('../internals/an-object');
6
+ var isObject = require('../internals/is-object');
7
+ var getIteratorMethod = require('../internals/get-iterator-method');
8
+ var createIteratorProxy = require('../internals/create-iterator-proxy');
9
+ var callWithSafeIterationClosing = require('../internals/call-with-safe-iteration-closing');
10
+
11
+ var IteratorProxy = createIteratorProxy(function (arg) {
12
+ var iterator = this.iterator;
13
+ var result, mapped, iteratorMethod, innerIterator;
14
+
15
+ while (true) {
16
+ if (innerIterator = this.innerIterator) {
17
+ result = anObject(this.innerNext.call(innerIterator));
18
+ if (!result.done) return result.value;
19
+ this.innerIterator = this.innerNext = null;
20
+ }
21
+
22
+ result = anObject(this.next.call(iterator, arg));
23
+
24
+ if (this.done = !!result.done) return;
25
+
26
+ mapped = callWithSafeIterationClosing(iterator, this.mapper, result.value);
27
+
28
+ if (isObject(mapped) && (iteratorMethod = getIteratorMethod(mapped)) !== undefined) {
29
+ this.innerIterator = innerIterator = iteratorMethod.call(mapped);
30
+ this.innerNext = aFunction(innerIterator.next);
31
+ continue;
32
+ } return mapped;
33
+ }
34
+ });
35
+
36
+ $({ target: 'Iterator', proto: true, real: true }, {
37
+ flatMap: function flatMap(mapper) {
38
+ return new IteratorProxy({
39
+ iterator: anObject(this),
40
+ mapper: aFunction(mapper),
41
+ innerIterator: null,
42
+ innerNext: null
43
+ });
44
+ }
45
+ });
@@ -0,0 +1,11 @@
1
+ 'use strict';
2
+ // https://github.com/tc39/proposal-iterator-helpers
3
+ var $ = require('../internals/export');
4
+ var iterate = require('../internals/iterate');
5
+ var anObject = require('../internals/an-object');
6
+
7
+ $({ target: 'Iterator', proto: true, real: true }, {
8
+ forEach: function forEach(fn) {
9
+ iterate(anObject(this), fn, undefined, false, true);
10
+ }
11
+ });
@@ -0,0 +1,32 @@
1
+ // https://github.com/tc39/proposal-iterator-helpers
2
+ var $ = require('../internals/export');
3
+ var path = require('../internals/path');
4
+ var aFunction = require('../internals/a-function');
5
+ var anObject = require('../internals/an-object');
6
+ var toObject = require('../internals/to-object');
7
+ var createIteratorProxy = require('../internals/create-iterator-proxy');
8
+ var getIteratorMethod = require('../internals/get-iterator-method');
9
+
10
+ var Iterator = path.Iterator;
11
+
12
+ var IteratorProxy = createIteratorProxy(function (arg) {
13
+ var result = anObject(this.next.call(this.iterator, arg));
14
+ var done = this.done = !!result.done;
15
+ if (!done) return result.value;
16
+ }, true);
17
+
18
+ $({ target: 'Iterator', stat: true }, {
19
+ from: function from(O) {
20
+ var object = toObject(O);
21
+ var usingIterator = getIteratorMethod(object);
22
+ var iterator;
23
+ if (usingIterator != null) {
24
+ iterator = aFunction(usingIterator).call(object);
25
+ if (iterator instanceof Iterator) return iterator;
26
+ } else {
27
+ iterator = object;
28
+ } return new IteratorProxy({
29
+ iterator: iterator
30
+ });
31
+ }
32
+ });
@@ -0,0 +1,23 @@
1
+ 'use strict';
2
+ // https://github.com/tc39/proposal-iterator-helpers
3
+ var $ = require('../internals/export');
4
+ var aFunction = require('../internals/a-function');
5
+ var anObject = require('../internals/an-object');
6
+ var createIteratorProxy = require('../internals/create-iterator-proxy');
7
+ var callWithSafeIterationClosing = require('../internals/call-with-safe-iteration-closing');
8
+
9
+ var IteratorProxy = createIteratorProxy(function (arg) {
10
+ var iterator = this.iterator;
11
+ var result = anObject(this.next.call(iterator, arg));
12
+ var done = this.done = !!result.done;
13
+ if (!done) return callWithSafeIterationClosing(iterator, this.mapper, result.value);
14
+ });
15
+
16
+ $({ target: 'Iterator', proto: true, real: true }, {
17
+ map: function map(mapper) {
18
+ return new IteratorProxy({
19
+ iterator: anObject(this),
20
+ mapper: aFunction(mapper)
21
+ });
22
+ }
23
+ });
@@ -0,0 +1,25 @@
1
+ 'use strict';
2
+ // https://github.com/tc39/proposal-iterator-helpers
3
+ var $ = require('../internals/export');
4
+ var iterate = require('../internals/iterate');
5
+ var aFunction = require('../internals/a-function');
6
+ var anObject = require('../internals/an-object');
7
+
8
+ $({ target: 'Iterator', proto: true, real: true }, {
9
+ reduce: function reduce(reducer /* , initialValue */) {
10
+ anObject(this);
11
+ aFunction(reducer);
12
+ var noInitial = arguments.length < 2;
13
+ var accumulator = noInitial ? undefined : arguments[1];
14
+ iterate(this, function (value) {
15
+ if (noInitial) {
16
+ noInitial = false;
17
+ accumulator = value;
18
+ } else {
19
+ accumulator = reducer(accumulator, value);
20
+ }
21
+ }, undefined, false, true);
22
+ if (noInitial) throw TypeError('Reduce of empty iterator with no initial value');
23
+ return accumulator;
24
+ }
25
+ });
@@ -0,0 +1,16 @@
1
+ 'use strict';
2
+ // https://github.com/tc39/proposal-iterator-helpers
3
+ var $ = require('../internals/export');
4
+ var iterate = require('../internals/iterate');
5
+ var aFunction = require('../internals/a-function');
6
+ var anObject = require('../internals/an-object');
7
+
8
+ $({ target: 'Iterator', proto: true, real: true }, {
9
+ some: function some(fn) {
10
+ anObject(this);
11
+ aFunction(fn);
12
+ return iterate(this, function (value) {
13
+ if (fn(value)) return iterate.stop();
14
+ }, undefined, false, true).stopped;
15
+ }
16
+ });
@@ -0,0 +1,25 @@
1
+ 'use strict';
2
+ // https://github.com/tc39/proposal-iterator-helpers
3
+ var $ = require('../internals/export');
4
+ var anObject = require('../internals/an-object');
5
+ var toPositiveInteger = require('../internals/to-positive-integer');
6
+ var createIteratorProxy = require('../internals/create-iterator-proxy');
7
+
8
+ var IteratorProxy = createIteratorProxy(function (arg) {
9
+ if (!this.remaining--) {
10
+ this.done = true;
11
+ return;
12
+ }
13
+ var result = anObject(this.next.call(this.iterator, arg));
14
+ var done = this.done = !!result.done;
15
+ if (!done) return result.value;
16
+ });
17
+
18
+ $({ target: 'Iterator', proto: true, real: true }, {
19
+ take: function take(limit) {
20
+ return new IteratorProxy({
21
+ iterator: anObject(this),
22
+ remaining: toPositiveInteger(limit)
23
+ });
24
+ }
25
+ });
@@ -0,0 +1,15 @@
1
+ 'use strict';
2
+ // https://github.com/tc39/proposal-iterator-helpers
3
+ var $ = require('../internals/export');
4
+ var iterate = require('../internals/iterate');
5
+ var anObject = require('../internals/an-object');
6
+
7
+ var push = [].push;
8
+
9
+ $({ target: 'Iterator', proto: true, real: true }, {
10
+ toArray: function toArray() {
11
+ var result = [];
12
+ iterate(anObject(this), push, result, false, true);
13
+ return result;
14
+ }
15
+ });
@@ -4,6 +4,7 @@ var IS_PURE = require('../internals/is-pure');
4
4
  var anObject = require('../internals/an-object');
5
5
  var bind = require('../internals/bind-context');
6
6
  var getMapIterator = require('../internals/get-map-iterator');
7
+ var iterate = require('../internals/iterate');
7
8
 
8
9
  // `Map.prototype.every` method
9
10
  // https://github.com/tc39/proposal-collection-methods
@@ -12,10 +13,8 @@ $({ target: 'Map', proto: true, real: true, forced: IS_PURE }, {
12
13
  var map = anObject(this);
13
14
  var iterator = getMapIterator(map);
14
15
  var boundFunction = bind(callbackfn, arguments.length > 1 ? arguments[1] : undefined, 3);
15
- var step, entry;
16
- while (!(step = iterator.next()).done) {
17
- entry = step.value;
18
- if (!boundFunction(entry[1], entry[0], map)) return false;
19
- } return true;
16
+ return !iterate(iterator, function (key, value) {
17
+ if (!boundFunction(value, key, map)) return iterate.stop();
18
+ }, undefined, true, true).stopped;
20
19
  }
21
20
  });
@@ -7,6 +7,7 @@ var aFunction = require('../internals/a-function');
7
7
  var bind = require('../internals/bind-context');
8
8
  var speciesConstructor = require('../internals/species-constructor');
9
9
  var getMapIterator = require('../internals/get-map-iterator');
10
+ var iterate = require('../internals/iterate');
10
11
 
11
12
  // `Map.prototype.filter` method
12
13
  // https://github.com/tc39/proposal-collection-methods
@@ -17,11 +18,9 @@ $({ target: 'Map', proto: true, real: true, forced: IS_PURE }, {
17
18
  var boundFunction = bind(callbackfn, arguments.length > 1 ? arguments[1] : undefined, 3);
18
19
  var newMap = new (speciesConstructor(map, getBuiltIn('Map')))();
19
20
  var setter = aFunction(newMap.set);
20
- var step, entry, key, value;
21
- while (!(step = iterator.next()).done) {
22
- entry = step.value;
23
- if (boundFunction(value = entry[1], key = entry[0], map)) setter.call(newMap, key, value);
24
- }
21
+ iterate(iterator, function (key, value) {
22
+ if (boundFunction(value, key, map)) setter.call(newMap, key, value);
23
+ }, undefined, true, true);
25
24
  return newMap;
26
25
  }
27
26
  });
@@ -4,6 +4,7 @@ var IS_PURE = require('../internals/is-pure');
4
4
  var anObject = require('../internals/an-object');
5
5
  var bind = require('../internals/bind-context');
6
6
  var getMapIterator = require('../internals/get-map-iterator');
7
+ var iterate = require('../internals/iterate');
7
8
 
8
9
  // `Map.prototype.findKey` method
9
10
  // https://github.com/tc39/proposal-collection-methods
@@ -12,10 +13,8 @@ $({ target: 'Map', proto: true, real: true, forced: IS_PURE }, {
12
13
  var map = anObject(this);
13
14
  var iterator = getMapIterator(map);
14
15
  var boundFunction = bind(callbackfn, arguments.length > 1 ? arguments[1] : undefined, 3);
15
- var step, entry, key;
16
- while (!(step = iterator.next()).done) {
17
- entry = step.value;
18
- if (boundFunction(entry[1], key = entry[0], map)) return key;
19
- }
16
+ return iterate(iterator, function (key, value) {
17
+ if (boundFunction(value, key, map)) return iterate.stop(key);
18
+ }, undefined, true, true).result;
20
19
  }
21
20
  });
@@ -4,6 +4,7 @@ var IS_PURE = require('../internals/is-pure');
4
4
  var anObject = require('../internals/an-object');
5
5
  var bind = require('../internals/bind-context');
6
6
  var getMapIterator = require('../internals/get-map-iterator');
7
+ var iterate = require('../internals/iterate');
7
8
 
8
9
  // `Map.prototype.find` method
9
10
  // https://github.com/tc39/proposal-collection-methods
@@ -12,10 +13,8 @@ $({ target: 'Map', proto: true, real: true, forced: IS_PURE }, {
12
13
  var map = anObject(this);
13
14
  var iterator = getMapIterator(map);
14
15
  var boundFunction = bind(callbackfn, arguments.length > 1 ? arguments[1] : undefined, 3);
15
- var step, entry, value;
16
- while (!(step = iterator.next()).done) {
17
- entry = step.value;
18
- if (boundFunction(value = entry[1], entry[0], map)) return value;
19
- }
16
+ return iterate(iterator, function (key, value) {
17
+ if (boundFunction(value, key, map)) return iterate.stop(value);
18
+ }, undefined, true, true).result;
20
19
  }
21
20
  });
@@ -4,17 +4,14 @@ var IS_PURE = require('../internals/is-pure');
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');
7
+ var iterate = require('../internals/iterate');
7
8
 
8
9
  // `Map.prototype.includes` method
9
10
  // https://github.com/tc39/proposal-collection-methods
10
11
  $({ target: 'Map', proto: true, real: true, forced: IS_PURE }, {
11
12
  includes: function includes(searchElement) {
12
- var map = anObject(this);
13
- var iterator = getMapIterator(map);
14
- var step;
15
- while (!(step = iterator.next()).done) {
16
- if (sameValueZero(step.value[1], searchElement)) return true;
17
- }
18
- return false;
13
+ return iterate(getMapIterator(anObject(this)), function (key, value) {
14
+ if (sameValueZero(value, searchElement)) return iterate.stop();
15
+ }, undefined, true, true).stopped;
19
16
  }
20
17
  });
@@ -3,17 +3,14 @@ var $ = require('../internals/export');
3
3
  var IS_PURE = require('../internals/is-pure');
4
4
  var anObject = require('../internals/an-object');
5
5
  var getMapIterator = require('../internals/get-map-iterator');
6
+ var iterate = require('../internals/iterate');
6
7
 
7
8
  // `Map.prototype.includes` method
8
9
  // https://github.com/tc39/proposal-collection-methods
9
10
  $({ target: 'Map', proto: true, real: true, forced: IS_PURE }, {
10
11
  keyOf: function keyOf(searchElement) {
11
- var map = anObject(this);
12
- var iterator = getMapIterator(map);
13
- var step, entry;
14
- while (!(step = iterator.next()).done) {
15
- entry = step.value;
16
- if (entry[1] === searchElement) return entry[0];
17
- }
12
+ return iterate(getMapIterator(anObject(this)), function (key, value) {
13
+ if (value === searchElement) return iterate.stop(key);
14
+ }, undefined, true, true).result;
18
15
  }
19
16
  });
@@ -7,6 +7,7 @@ var aFunction = require('../internals/a-function');
7
7
  var bind = require('../internals/bind-context');
8
8
  var speciesConstructor = require('../internals/species-constructor');
9
9
  var getMapIterator = require('../internals/get-map-iterator');
10
+ var iterate = require('../internals/iterate');
10
11
 
11
12
  // `Map.prototype.mapKeys` method
12
13
  // https://github.com/tc39/proposal-collection-methods
@@ -17,11 +18,9 @@ $({ target: 'Map', proto: true, real: true, forced: IS_PURE }, {
17
18
  var boundFunction = bind(callbackfn, arguments.length > 1 ? arguments[1] : undefined, 3);
18
19
  var newMap = new (speciesConstructor(map, getBuiltIn('Map')))();
19
20
  var setter = aFunction(newMap.set);
20
- var step, entry, value;
21
- while (!(step = iterator.next()).done) {
22
- entry = step.value;
23
- setter.call(newMap, boundFunction(value = entry[1], entry[0], map), value);
24
- }
21
+ iterate(iterator, function (key, value) {
22
+ setter.call(newMap, boundFunction(value, key, map), value);
23
+ }, undefined, true, true);
25
24
  return newMap;
26
25
  }
27
26
  });
@@ -7,6 +7,7 @@ var aFunction = require('../internals/a-function');
7
7
  var bind = require('../internals/bind-context');
8
8
  var speciesConstructor = require('../internals/species-constructor');
9
9
  var getMapIterator = require('../internals/get-map-iterator');
10
+ var iterate = require('../internals/iterate');
10
11
 
11
12
  // `Map.prototype.mapValues` method
12
13
  // https://github.com/tc39/proposal-collection-methods
@@ -17,11 +18,9 @@ $({ target: 'Map', proto: true, real: true, forced: IS_PURE }, {
17
18
  var boundFunction = bind(callbackfn, arguments.length > 1 ? arguments[1] : undefined, 3);
18
19
  var newMap = new (speciesConstructor(map, getBuiltIn('Map')))();
19
20
  var setter = aFunction(newMap.set);
20
- var step, entry, key;
21
- while (!(step = iterator.next()).done) {
22
- entry = step.value;
23
- setter.call(newMap, key = entry[0], boundFunction(entry[1], key, map));
24
- }
21
+ iterate(iterator, function (key, value) {
22
+ setter.call(newMap, key, boundFunction(value, key, map));
23
+ }, undefined, true, true);
25
24
  return newMap;
26
25
  }
27
26
  });
@@ -4,6 +4,7 @@ var IS_PURE = require('../internals/is-pure');
4
4
  var anObject = require('../internals/an-object');
5
5
  var aFunction = require('../internals/a-function');
6
6
  var getMapIterator = require('../internals/get-map-iterator');
7
+ var iterate = require('../internals/iterate');
7
8
 
8
9
  // `Map.prototype.reduce` method
9
10
  // https://github.com/tc39/proposal-collection-methods
@@ -11,18 +12,18 @@ $({ target: 'Map', proto: true, real: true, forced: IS_PURE }, {
11
12
  reduce: function reduce(callbackfn /* , initialValue */) {
12
13
  var map = anObject(this);
13
14
  var iterator = getMapIterator(map);
14
- var accumulator, step, entry;
15
+ var noInitial = arguments.length < 2;
16
+ var accumulator = noInitial ? undefined : arguments[1];
15
17
  aFunction(callbackfn);
16
- if (arguments.length > 1) accumulator = arguments[1];
17
- else {
18
- step = iterator.next();
19
- if (step.done) throw TypeError('Reduce of empty map with no initial value');
20
- accumulator = step.value[1];
21
- }
22
- while (!(step = iterator.next()).done) {
23
- entry = step.value;
24
- accumulator = callbackfn(accumulator, entry[1], entry[0], map);
25
- }
18
+ iterate(iterator, function (key, value) {
19
+ if (noInitial) {
20
+ noInitial = false;
21
+ accumulator = value;
22
+ } else {
23
+ accumulator = callbackfn(accumulator, value, key, map);
24
+ }
25
+ }, undefined, true, true);
26
+ if (noInitial) throw TypeError('Reduce of empty map with no initial value');
26
27
  return accumulator;
27
28
  }
28
29
  });
@@ -4,6 +4,7 @@ var IS_PURE = require('../internals/is-pure');
4
4
  var anObject = require('../internals/an-object');
5
5
  var bind = require('../internals/bind-context');
6
6
  var getMapIterator = require('../internals/get-map-iterator');
7
+ var iterate = require('../internals/iterate');
7
8
 
8
9
  // `Set.prototype.some` method
9
10
  // https://github.com/tc39/proposal-collection-methods
@@ -12,10 +13,8 @@ $({ target: 'Map', proto: true, real: true, forced: IS_PURE }, {
12
13
  var map = anObject(this);
13
14
  var iterator = getMapIterator(map);
14
15
  var boundFunction = bind(callbackfn, arguments.length > 1 ? arguments[1] : undefined, 3);
15
- var step, entry;
16
- while (!(step = iterator.next()).done) {
17
- entry = step.value;
18
- if (boundFunction(entry[1], entry[0], map)) return true;
19
- } return false;
16
+ return iterate(iterator, function (key, value) {
17
+ if (boundFunction(value, key, map)) return iterate.stop();
18
+ }, undefined, true, true).stopped;
20
19
  }
21
20
  });
@@ -0,0 +1,11 @@
1
+ 'use strict';
2
+ // TODO: remove from `core-js@4`
3
+ var $ = require('../internals/export');
4
+ var IS_PURE = require('../internals/is-pure');
5
+ var $upsert = require('../internals/map-upsert');
6
+
7
+ // `Map.prototype.updateOrInsert` method (replaced by `Map.prototype.upsert`)
8
+ // https://github.com/thumbsupep/proposal-upsert
9
+ $({ target: 'Map', proto: true, real: true, forced: IS_PURE }, {
10
+ updateOrInsert: $upsert
11
+ });
@@ -9,12 +9,13 @@ var aFunction = require('../internals/a-function');
9
9
  $({ target: 'Map', proto: true, real: true, forced: IS_PURE }, {
10
10
  update: function update(key, callback /* , thunk */) {
11
11
  var map = anObject(this);
12
+ var length = arguments.length;
12
13
  aFunction(callback);
13
14
  var isPresentInMap = map.has(key);
14
- if (!isPresentInMap && arguments.length < 3) {
15
+ if (!isPresentInMap && length < 3) {
15
16
  throw TypeError('Updating absent value');
16
17
  }
17
- var value = isPresentInMap ? map.get(key) : aFunction(arguments[2])(key, map);
18
+ var value = isPresentInMap ? map.get(key) : aFunction(length > 2 ? arguments[2] : undefined)(key, map);
18
19
  map.set(key, callback(value, key, map));
19
20
  return map;
20
21
  }
@@ -0,0 +1,10 @@
1
+ 'use strict';
2
+ var $ = require('../internals/export');
3
+ var IS_PURE = require('../internals/is-pure');
4
+ var $upsert = require('../internals/map-upsert');
5
+
6
+ // `Map.prototype.upsert` method
7
+ // https://github.com/thumbsupep/proposal-upsert
8
+ $({ target: 'Map', proto: true, real: true, forced: IS_PURE }, {
9
+ upsert: $upsert
10
+ });
@@ -4,7 +4,6 @@ var $ = require('../internals/export');
4
4
  // https://github.com/tc39/proposal-Math.signbit
5
5
  $({ target: 'Math', stat: true }, {
6
6
  signbit: function signbit(x) {
7
- // eslint-disable-next-line no-self-compare
8
7
  return (x = +x) != x ? x : x == 0 ? 1 / x == Infinity : x > 0;
9
8
  }
10
9
  });