Skip to content

Commit 409c45a

Browse files
committedOct 3, 2019
move Map#upsert to stage 2
per babel/proposals#60 (comment)
1 parent 1d63613 commit 409c45a

File tree

4 files changed

+31
-20
lines changed

4 files changed

+31
-20
lines changed
 

‎CHANGELOG.md

+2-1
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,8 @@
3434
- `AsyncIterator#take`
3535
- `AsyncIterator#toArray`
3636
- `AsyncIterator#@@toStringTag`
37-
- Updated `Map#upsert` [stage 1 proposal](https://github.com/thumbsupep/proposal-upsert)
37+
- Updated `Map#upsert` (`Map#updateOrInsert` before) [proposal](https://github.com/thumbsupep/proposal-upsert)
38+
- Moved to stage 2, [per October TC39 meeting](https://github.com/babel/proposals/issues/60#issuecomment-537606117)
3839
- `Map#updateOrInsert` renamed to `Map#upsert`
3940
- Added `WeakMap#upsert`
4041
- Added a workaround for iOS Safari MessageChannel + bfcache bug, [#624](https://github.com/zloirock/core-js/issues/624)

‎README.md

+28-18
Original file line numberDiff line numberDiff line change
@@ -1857,6 +1857,34 @@ require('core-js');
18571857

18581858
(async function * () { /* empty */ })() instanceof AsyncIterator; // => true
18591859
```
1860+
* `Map#upsert` [proposal](https://github.com/thumbsupep/proposal-upsert) - modules [`esnext.map.upsert`](https://github.com/zloirock/core-js/blob/v3.3.0/packages/core-js/modules/esnext.map.upsert.js), [`esnext.map.update-or-insert`](https://github.com/zloirock/core-js/blob/v3.3.0/packages/core-js/modules/esnext.map.update-or-insert.js) and [`esnext.weak-map.update-or-insert`](https://github.com/zloirock/core-js/blob/v3.3.0/packages/core-js/modules/esnext.weak-map.update-or-insert.js)
1861+
```js
1862+
class Map {
1863+
updateOrInsert(key: any, onUpdate: (value: any) => updated: any, onInsert: () => value: any): updated | value; (obsolete in favor `.upsert`)
1864+
upsert(key: any, onUpdate: (value: any) => updated: any, onInsert: () => value: any): updated | value;
1865+
}
1866+
1867+
class WeakMap {
1868+
upsert(key: Object, onUpdate: (value: any) => updated: any, onInsert: () => value: any): updated | value;
1869+
}
1870+
```
1871+
[*CommonJS entry points:*](#commonjs-api)
1872+
```js
1873+
core-js/proposals/map-upsert
1874+
core-js(-pure)/features/map/update-or-insert
1875+
core-js(-pure)/features/map/upsert
1876+
core-js(-pure)/features/weak-map/upsert
1877+
```
1878+
[*Examples*](http://es6.zloirock.ru/#const%20map%20%3D%20new%20Map(%5B%5B'a'%2C%202%5D%5D)%3B%0A%0Amap.upsert('a'%2C%20it%20%3D%3E%20it%20**%202%2C%20()%20%3D%3E%203)%3B%20%2F%2F%20%3D%3E%204%0A%0Amap.upsert('b'%2C%20it%20%3D%3E%20it%20**%202%2C%20()%20%3D%3E%203)%3B%20%2F%2F%20%3D%3E%203%0A%0Alog(map)%3B%20%2F%2F%20%3D%3E%20%7B%20'a'%3A%204%2C%20'b'%3A%203%20%7D):
1879+
```js
1880+
const map = new Map([['a', 2]]);
1881+
1882+
map.upsert('a', it => it ** 2, () => 3); // => 4
1883+
1884+
map.upsert('b', it => it ** 2, () => 3); // => 3
1885+
1886+
console.log(map); // => Map { 'a': 4, 'b': 3 }
1887+
```
18601888
18611889
#### Stage 1 proposals
18621890
[*CommonJS entry points:*](#commonjs-api)
@@ -1905,7 +1933,6 @@ Promise.try(() => { throw 42; }).catch(it => console.log(`Promise, rejected as $
19051933
```
19061934
* New collections methods proposals:
19071935
- New `Set` and `Map` methods [proposal](https://github.com/tc39/proposal-collection-methods) - modules [`esnext.set.add-all`](https://github.com/zloirock/core-js/blob/v3.2.1/packages/core-js/modules/esnext.set.add-all.js), [`esnext.set.delete-all`](https://github.com/zloirock/core-js/blob/v3.2.1/packages/core-js/modules/esnext.set.delete-all.js), [`esnext.set.every`](https://github.com/zloirock/core-js/blob/v3.2.1/packages/core-js/modules/esnext.set.every.js), [`esnext.set.filter`](https://github.com/zloirock/core-js/blob/v3.2.1/packages/core-js/modules/esnext.set.filter.js), [`esnext.set.find`](https://github.com/zloirock/core-js/blob/v3.2.1/packages/core-js/modules/esnext.set.find.js), [`esnext.set.join`](https://github.com/zloirock/core-js/blob/v3.2.1/packages/core-js/modules/esnext.set.join.js), [`esnext.set.map`](https://github.com/zloirock/core-js/blob/v3.2.1/packages/core-js/modules/esnext.set.map.js), [`esnext.set.reduce`](https://github.com/zloirock/core-js/blob/v3.2.1/packages/core-js/modules/esnext.set.reduce.js), [`esnext.set.some`](https://github.com/zloirock/core-js/blob/v3.2.1/packages/core-js/modules/esnext.set.some.js), [`esnext.map.delete-all`](https://github.com/zloirock/core-js/blob/v3.2.1/packages/core-js/modules/esnext.map.delete-all.js), [`esnext.map.every`](https://github.com/zloirock/core-js/blob/v3.2.1/packages/core-js/modules/esnext.map.every.js), [`esnext.map.filter`](https://github.com/zloirock/core-js/blob/v3.2.1/packages/core-js/modules/esnext.map.filter.js), [`esnext.map.find`](https://github.com/zloirock/core-js/blob/v3.2.1/packages/core-js/modules/esnext.map.find.js), [`esnext.map.find-key`](https://github.com/zloirock/core-js/blob/v3.2.1/packages/core-js/modules/esnext.map.find-key.js), [`esnext.map.group-by`](https://github.com/zloirock/core-js/blob/v3.2.1/packages/core-js/modules/esnext.map.group-by.js), [`esnext.map.includes`](https://github.com/zloirock/core-js/blob/v3.2.1/packages/core-js/modules/esnext.map.includes.js), [`esnext.map.key-by`](https://github.com/zloirock/core-js/blob/v3.2.1/packages/core-js/modules/esnext.map.key-by.js), [`esnext.map.key-of`](https://github.com/zloirock/core-js/blob/v3.2.1/packages/core-js/modules/esnext.map.key-of.js), [`esnext.map.map-keys`](https://github.com/zloirock/core-js/blob/v3.2.1/packages/core-js/modules/esnext.map.map-keys.js), [`esnext.map.map-values`](https://github.com/zloirock/core-js/blob/v3.2.1/packages/core-js/modules/esnext.map.map-values.js), [`esnext.map.merge`](https://github.com/zloirock/core-js/blob/v3.2.1/packages/core-js/modules/esnext.map.merge.js), [`esnext.map.reduce`](https://github.com/zloirock/core-js/blob/v3.2.1/packages/core-js/modules/esnext.map.reduce.js), [`esnext.map.some`](https://github.com/zloirock/core-js/blob/v3.2.1/packages/core-js/modules/esnext.map.some.js), [`esnext.map.update`](https://github.com/zloirock/core-js/blob/v3.2.1/packages/core-js/modules/esnext.map.update.js), [`esnext.weak-set.add-all`](https://github.com/zloirock/core-js/blob/v3.2.1/packages/core-js/modules/esnext.weak-set.add-all.js), [`esnext.weak-set.delete-all`](https://github.com/zloirock/core-js/blob/v3.2.1/packages/core-js/modules/esnext.weak-set.delete-all.js), [`esnext.weak-map.delete-all`](https://github.com/zloirock/core-js/blob/v3.2.1/packages/core-js/modules/esnext.weak-map.delete-all.js)
1908-
- `Map#upsert` [proposal](https://github.com/thumbsupep/proposal-upsert) - modules [`esnext.map.upsert`](https://github.com/zloirock/core-js/blob/v3.3.0/packages/core-js/modules/esnext.map.upsert.js), [`esnext.map.update-or-insert`](https://github.com/zloirock/core-js/blob/v3.3.0/packages/core-js/modules/esnext.map.update-or-insert.js) and [`esnext.weak-map.update-or-insert`](https://github.com/zloirock/core-js/blob/v3.3.0/packages/core-js/modules/esnext.weak-map.update-or-insert.js)
19091936
- `.of` and `.from` methods on collection constructors [proposal](https://github.com/tc39/proposal-setmap-offrom) - modules [`esnext.set.of`](https://github.com/zloirock/core-js/blob/v3.2.1/packages/core-js/modules/esnext.set.of.js), [`esnext.set.from`](https://github.com/zloirock/core-js/blob/v3.2.1/packages/core-js/modules/esnext.set.from.js), [`esnext.map.of`](https://github.com/zloirock/core-js/blob/v3.2.1/packages/core-js/modules/esnext.map.of.js), [`esnext.map.from`](https://github.com/zloirock/core-js/blob/v3.2.1/packages/core-js/modules/esnext.map.from.js), [`esnext.weak-set.of`](https://github.com/zloirock/core-js/blob/v3.2.1/packages/core-js/modules/esnext.weak-set.of.js), [`esnext.weak-set.from`](https://github.com/zloirock/core-js/blob/v3.2.1/packages/core-js/modules/esnext.weak-set.from.js), [`esnext.weak-map.of`](https://github.com/zloirock/core-js/blob/v3.2.1/packages/core-js/modules/esnext.weak-map.of.js), [`esnext.weak-map.from`](https://github.com/zloirock/core-js/blob/v3.2.1/packages/core-js/modules/esnext.weak-map.from.js)
19101937
```js
19111938
class Set {
@@ -1940,8 +1967,6 @@ class Map {
19401967
reduce(callbackfn: (memo: any, value: any, key: any, target: any) => any, initialValue?: any): any;
19411968
some(callbackfn: (value: any, key: any, target: any) => boolean, thisArg?: any): boolean;
19421969
update(key: any, callbackfn: (value: any, key: any, target: any) => any, thunk?: (key: any, target: any) => any): this;
1943-
updateOrInsert(key: any, onUpdate: (value: any) => updated: any, onInsert: () => value: any): updated | value; (obsolete in favor `.upsert`)
1944-
upsert(key: any, onUpdate: (value: any) => updated: any, onInsert: () => value: any): updated | value;
19451970
}
19461971

19471972
class WeakSet {
@@ -1955,14 +1980,12 @@ class WeakMap {
19551980
static of(...args: Array<[key, value]>): WeakMap;
19561981
static from(iterable: Iterable<mixed>, mapFn?: (value: any, index: number) => [key: Object, value: any], thisArg?: any): WeakMap;
19571982
deleteAll(...args: Array<mixed>): boolean;
1958-
upsert(key: Object, onUpdate: (value: any) => updated: any, onInsert: () => value: any): updated | value;
19591983
}
19601984
```
19611985
[*CommonJS entry points:*](#commonjs-api)
19621986
```js
19631987
core-js/proposals/collection-methods
19641988
core-js/proposals/collection-of-from
1965-
core-js/proposals/map-upsert
19661989
core-js(-pure)/features/set/add-all
19671990
core-js(-pure)/features/set/delete-all
19681991
core-js(-pure)/features/set/every
@@ -1991,26 +2014,13 @@ core-js(-pure)/features/map/of
19912014
core-js(-pure)/features/map/reduce
19922015
core-js(-pure)/features/map/some
19932016
core-js(-pure)/features/map/update
1994-
core-js(-pure)/features/map/update-or-insert
1995-
core-js(-pure)/features/map/upsert
19962017
core-js(-pure)/features/weak-set/add-all
19972018
core-js(-pure)/features/weak-set/delete-all
19982019
core-js(-pure)/features/weak-set/of
19992020
core-js(-pure)/features/weak-set/from
20002021
core-js(-pure)/features/weak-map/delete-all
20012022
core-js(-pure)/features/weak-map/of
20022023
core-js(-pure)/features/weak-map/from
2003-
core-js(-pure)/features/weak-map/upsert
2004-
```
2005-
`Map#upsert` [*examples*](http://es6.zloirock.ru/#const%20map%20%3D%20new%20Map(%5B%5B'a'%2C%202%5D%5D)%3B%0A%0Amap.upsert('a'%2C%20it%20%3D%3E%20it%20**%202%2C%20()%20%3D%3E%203)%3B%20%2F%2F%20%3D%3E%204%0A%0Amap.upsert('b'%2C%20it%20%3D%3E%20it%20**%202%2C%20()%20%3D%3E%203)%3B%20%2F%2F%20%3D%3E%203%0A%0Alog(map)%3B%20%2F%2F%20%3D%3E%20%7B%20'a'%3A%204%2C%20'b'%3A%203%20%7D):
2006-
```js
2007-
const map = new Map([['a', 2]]);
2008-
2009-
map.upsert('a', it => it ** 2, () => 3); // => 4
2010-
2011-
map.upsert('b', it => it ** 2, () => 3); // => 3
2012-
2013-
console.log(map); // => Map { 'a': 4, 'b': 3 }
20142024
```
20152025
`.of` / `.from` [*examples*](https://goo.gl/mSC7eU):
20162026
```js

‎packages/core-js/stage/1.js

-1
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@ require('../proposals/array-last');
22
require('../proposals/collection-methods');
33
require('../proposals/collection-of-from');
44
require('../proposals/keys-composition');
5-
require('../proposals/map-upsert');
65
require('../proposals/math-extensions');
76
require('../proposals/math-signbit');
87
require('../proposals/number-from-string');

‎packages/core-js/stage/2.js

+1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
require('../proposals/array-is-template-object');
22
require('../proposals/iterator-helpers');
3+
require('../proposals/map-upsert');
34
require('../proposals/promise-any');
45
require('../proposals/set-methods');
56
require('../proposals/using-statement');

0 commit comments

Comments
 (0)
Please sign in to comment.