'use strict'; var value = require('./valid-value') , defineProperty = Object.defineProperty , getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor , getOwnPropertyNames = Object.getOwnPropertyNames; module.exports = function (target, source) { var error; target = Object(value(target)); getOwnPropertyNames(Object(value(source))).forEach(function (name) { try { defineProperty(target, name, getOwnPropertyDescriptor(source, name)); } catch (e) { error = e; } }); if (error !== undefined) throw error; return target; };