27 lines
		
	
	
		
			913 B
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			27 lines
		
	
	
		
			913 B
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| "use strict";
 | |
| 
 | |
| var value                    = require("./valid-value")
 | |
|   , defineProperty           = Object.defineProperty
 | |
|   , getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor
 | |
|   , getOwnPropertyNames      = Object.getOwnPropertyNames
 | |
|   , getOwnPropertySymbols    = Object.getOwnPropertySymbols;
 | |
| 
 | |
| module.exports = function (target, source) {
 | |
| 	var error, sourceObject = Object(value(source));
 | |
| 	target = Object(value(target));
 | |
| 	getOwnPropertyNames(sourceObject).forEach(function (name) {
 | |
| 		try {
 | |
| 			defineProperty(target, name, getOwnPropertyDescriptor(source, name));
 | |
| 		} catch (e) { error = e; }
 | |
| 	});
 | |
| 	if (typeof getOwnPropertySymbols === "function") {
 | |
| 		getOwnPropertySymbols(sourceObject).forEach(function (symbol) {
 | |
| 			try {
 | |
| 				defineProperty(target, symbol, getOwnPropertyDescriptor(source, symbol));
 | |
| 			} catch (e) { error = e; }
 | |
| 		});
 | |
| 	}
 | |
| 	if (error !== undefined) throw error;
 | |
| 	return target;
 | |
| };
 |