| '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; |
| }; |