First commit
This commit is contained in:
60
node_modules/merge-descriptors/index.js
generated
vendored
Executable file
60
node_modules/merge-descriptors/index.js
generated
vendored
Executable file
@ -0,0 +1,60 @@
|
||||
/*!
|
||||
* 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
|
||||
}
|
Reference in New Issue
Block a user