| 'use strict'; |
| // 19.1.2.1 Object.assign(target, source, ...) |
| var getKeys = require('./_object-keys'); |
| var gOPS = require('./_object-gops'); |
| var pIE = require('./_object-pie'); |
| var toObject = require('./_to-object'); |
| var IObject = require('./_iobject'); |
| var $assign = Object.assign; |
| |
| // should work with symbols and should have deterministic property order (V8 bug) |
| module.exports = !$assign || require('./_fails')(function () { |
| var A = {}; |
| var B = {}; |
| // eslint-disable-next-line no-undef |
| var S = Symbol(); |
| var K = 'abcdefghijklmnopqrst'; |
| A[S] = 7; |
| K.split('').forEach(function (k) { B[k] = k; }); |
| return $assign({}, A)[S] != 7 || Object.keys($assign({}, B)).join('') != K; |
| }) ? function assign(target, source) { // eslint-disable-line no-unused-vars |
| var T = toObject(target); |
| var aLen = arguments.length; |
| var index = 1; |
| var getSymbols = gOPS.f; |
| var isEnum = pIE.f; |
| while (aLen > index) { |
| var S = IObject(arguments[index++]); |
| var keys = getSymbols ? getKeys(S).concat(getSymbols(S)) : getKeys(S); |
| var length = keys.length; |
| var j = 0; |
| var key; |
| while (length > j) if (isEnum.call(S, key = keys[j++])) T[key] = S[key]; |
| } return T; |
| } : $assign; |