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.
		
		
		
		
			
				
					61 lines
				
				1.2 KiB
			
		
		
			
		
	
	
					61 lines
				
				1.2 KiB
			| 
								 
											4 years ago
										 
									 | 
							
								/*!
							 | 
						||
| 
								 | 
							
								 * 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
							 | 
						||
| 
								 | 
							
								}
							 |