massive update, probably broken
[dotfiles/.git] / .config / coc / extensions / node_modules / coc-prettier / node_modules / core-js / modules / esnext.map.group-by.js
1 'use strict';
2 var $ = require('../internals/export');
3 var call = require('../internals/function-call');
4 var uncurryThis = require('../internals/function-uncurry-this');
5 var aCallable = require('../internals/a-callable');
6 var getIterator = require('../internals/get-iterator');
7 var iterate = require('../internals/iterate');
8
9 var push = uncurryThis([].push);
10
11 // `Map.groupBy` method
12 // https://github.com/tc39/proposal-collection-methods
13 $({ target: 'Map', stat: true }, {
14   groupBy: function groupBy(iterable, keyDerivative) {
15     aCallable(keyDerivative);
16     var iterator = getIterator(iterable);
17     var newMap = new this();
18     var has = aCallable(newMap.has);
19     var get = aCallable(newMap.get);
20     var set = aCallable(newMap.set);
21     iterate(iterator, function (element) {
22       var derivedKey = keyDerivative(element);
23       if (!call(has, newMap, derivedKey)) call(set, newMap, derivedKey, [element]);
24       else push(call(get, newMap, derivedKey), element);
25     }, { IS_ITERATOR: true });
26     return newMap;
27   }
28 });