| 'use strict'; | |
| // modified from https://github.com/es-shims/es6-shim | |
| var keys = require('object-keys'); | |
| var bind = require('function-bind'); | |
| var canBeObject = function (obj) { | |
| return typeof obj !== 'undefined' && obj !== null; | |
| }; | |
| var hasSymbols = require('has-symbols/shams')(); | |
| var toObject = Object; | |
| var push = bind.call(Function.call, Array.prototype.push); | |
| var propIsEnumerable = bind.call(Function.call, Object.prototype.propertyIsEnumerable); | |
| var originalGetSymbols = hasSymbols ? Object.getOwnPropertySymbols : null; | |
| module.exports = function assign(target, source1) { | |
| if (!canBeObject(target)) { throw new TypeError('target must be an object'); } | |
| var objTarget = toObject(target); | |
| var s, source, i, props, syms, value, key; | |
| for (s = 1; s < arguments.length; ++s) { | |
| source = toObject(arguments[s]); | |
| props = keys(source); | |
| var getSymbols = hasSymbols && (Object.getOwnPropertySymbols || originalGetSymbols); | |
| if (getSymbols) { | |
| syms = getSymbols(source); | |
| for (i = 0; i < syms.length; ++i) { | |
| key = syms[i]; | |
| if (propIsEnumerable(source, key)) { | |
| push(props, key); | |
| } | |
| } | |
| } | |
| for (i = 0; i < props.length; ++i) { | |
| key = props[i]; | |
| value = source[key]; | |
| if (propIsEnumerable(source, key)) { | |
| objTarget[key] = value; | |
| } | |
| } | |
| } | |
| return objTarget; | |
| }; |