1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
  | 'use strict'; 
 |  var $ = require('../internals/export'); 
 |  var aWeakMap = require('../internals/a-weak-map'); 
 |  var WeakMapHelpers = require('../internals/weak-map-helpers'); 
 |    
 |  var get = WeakMapHelpers.get; 
 |  var has = WeakMapHelpers.has; 
 |  var set = WeakMapHelpers.set; 
 |    
 |  // `WeakMap.prototype.emplace` method 
 |  // https://github.com/tc39/proposal-upsert 
 |  $({ target: 'WeakMap', proto: true, real: true, forced: true }, { 
 |    emplace: function emplace(key, handler) { 
 |      var map = aWeakMap(this); 
 |      var value, inserted; 
 |      if (has(map, key)) { 
 |        value = get(map, key); 
 |        if ('update' in handler) { 
 |          value = handler.update(value, key, map); 
 |          set(map, key, value); 
 |        } return value; 
 |      } 
 |      inserted = handler.insert(key, map); 
 |      set(map, key, inserted); 
 |      return inserted; 
 |    } 
 |  }); 
 |  
  |