'use strict'; var isExtendable = require('is-extendable'); var assignSymbols = require('assign-symbols'); module.exports = Object.assign || function(obj/*, objects*/) { if (obj === null || typeof obj === 'undefined') { throw new TypeError('Cannot convert undefined or null to object'); } if (!isObject(obj)) { obj = {}; } for (var i = 1; i < arguments.length; i++) { var val = arguments[i]; if (isString(val)) { val = toObject(val); } if (isObject(val)) { assign(obj, val); assignSymbols(obj, val); } } return obj; }; function assign(a, b) { for (var key in b) { if (hasOwn(b, key)) { a[key] = b[key]; } } } function isString(val) { return (val && typeof val === 'string'); } function toObject(str) { var obj = {}; for (var i in str) { obj[i] = str[i]; } return obj; } function isObject(val) { return (val && typeof val === 'object') || isExtendable(val); } /** * Returns true if the given `key` is an own property of `obj`. */ function hasOwn(obj, key) { return Object.prototype.hasOwnProperty.call(obj, key); } function isEnum(obj, key) { return Object.prototype.propertyIsEnumerable.call(obj, key); }