| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960 | /*! * 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}
 |