| 'use strict'; | |
| // modified from https://github.com/es-shims/es6-shim | |
| var keys = require('object-keys'); | |
| var canBeObject = function (obj) { | |
| return typeof obj !== 'undefined' && obj !== null; | |
| }; | |
| var hasSymbols = require('has-symbols/shams')(); | |
| var callBound = require('call-bind/callBound'); | |
| var toObject = Object; | |
| var $push = callBound('Array.prototype.push'); | |
| var $propIsEnumerable = callBound('Object.prototype.propertyIsEnumerable'); | |
| var originalGetSymbols = hasSymbols ? Object.getOwnPropertySymbols : null; | |
| // eslint-disable-next-line no-unused-vars | |
| 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; | |
| }; |