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.
		
		
		
		
		
			
		
			
				
					
					
						
							60 lines
						
					
					
						
							1.2 KiB
						
					
					
				
			
		
		
	
	
							60 lines
						
					
					
						
							1.2 KiB
						
					
					
				/*! | 
						|
 * merge-descriptors | 
						|
 * Copyright(c) 2014 Jonathan Ong | 
						|
 * Copyright(c) 2015 Douglas Christopher Wilson | 
						|
 * MIT Licensed | 
						|
 */ | 
						|
 | 
						|
'use strict' | 
						|
 | 
						|
/** | 
						|
 * Module exports. | 
						|
 * @public | 
						|
 */ | 
						|
 | 
						|
module.exports = merge | 
						|
 | 
						|
/** | 
						|
 * Module variables. | 
						|
 * @private | 
						|
 */ | 
						|
 | 
						|
var hasOwnProperty = Object.prototype.hasOwnProperty | 
						|
 | 
						|
/** | 
						|
 * Merge the property descriptors of `src` into `dest` | 
						|
 * | 
						|
 * @param {object} dest Object to add descriptors to | 
						|
 * @param {object} src Object to clone descriptors from | 
						|
 * @param {boolean} [redefine=true] Redefine `dest` properties with `src` properties | 
						|
 * @returns {object} Reference to dest | 
						|
 * @public | 
						|
 */ | 
						|
 | 
						|
function merge(dest, src, redefine) { | 
						|
  if (!dest) { | 
						|
    throw new TypeError('argument dest is required') | 
						|
  } | 
						|
 | 
						|
  if (!src) { | 
						|
    throw new TypeError('argument src is required') | 
						|
  } | 
						|
 | 
						|
  if (redefine === undefined) { | 
						|
    // Default to true | 
						|
    redefine = true | 
						|
  } | 
						|
 | 
						|
  Object.getOwnPropertyNames(src).forEach(function forEachOwnPropertyName(name) { | 
						|
    if (!redefine && hasOwnProperty.call(dest, name)) { | 
						|
      // Skip desriptor | 
						|
      return | 
						|
    } | 
						|
 | 
						|
    // Copy descriptor | 
						|
    var descriptor = Object.getOwnPropertyDescriptor(src, name) | 
						|
    Object.defineProperty(dest, name, descriptor) | 
						|
  }) | 
						|
 | 
						|
  return dest | 
						|
}
 | 
						|
 |