You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							23 lines
						
					
					
						
							721 B
						
					
					
				
			
		
		
	
	
							23 lines
						
					
					
						
							721 B
						
					
					
				'use strict'; | 
						|
var anObject = require('../internals/an-object'); | 
						|
 | 
						|
// `Map.prototype.upsert` method | 
						|
// https://github.com/thumbsupep/proposal-upsert | 
						|
module.exports = function upsert(key, updateFn /* , insertFn */) { | 
						|
  var map = anObject(this); | 
						|
  var insertFn = arguments.length > 2 ? arguments[2] : undefined; | 
						|
  var value; | 
						|
  if (typeof updateFn != 'function' && typeof insertFn != 'function') { | 
						|
    throw TypeError('At least one callback required'); | 
						|
  } | 
						|
  if (map.has(key)) { | 
						|
    value = map.get(key); | 
						|
    if (typeof updateFn == 'function') { | 
						|
      value = updateFn(value); | 
						|
      map.set(key, value); | 
						|
    } | 
						|
  } else if (typeof insertFn == 'function') { | 
						|
    value = insertFn(); | 
						|
    map.set(key, value); | 
						|
  } return value; | 
						|
};
 | 
						|
 |