d2-ui
Version:
37 lines (30 loc) • 967 B
JavaScript
var mergeDescriptors = require('merge-descriptors')
var isObject = require('is-object')
var hasOwnProperty = Object.prototype.hasOwnProperty
function fill (destination, source, merge) {
if (destination && (isObject(source) || isFunction(source))) {
merge(destination, source, false)
if (isFunction(destination) && isFunction(source) && source.prototype) {
merge(destination.prototype, source.prototype, false)
}
}
return destination
}
exports = module.exports = function fillKeys (destination, source) {
return fill(destination, source, mergeDescriptors)
}
exports.es3 = function fillKeysEs3 (destination, source) {
return fill(destination, source, es3Merge)
}
function es3Merge (destination, source) {
for (var key in source) {
if (!hasOwnProperty.call(destination, key)) {
destination[key] = source[key]
}
}
return destination
}
function isFunction (value) {
return typeof value === 'function'
}