You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					39 lines
				
				1.3 KiB
			
		
		
			
		
	
	
					39 lines
				
				1.3 KiB
			| 
								 
											3 years ago
										 
									 | 
							
								'use strict';
							 | 
						||
| 
								 | 
							
								// 19.1.2.1 Object.assign(target, source, ...)
							 | 
						||
| 
								 | 
							
								var DESCRIPTORS = require('./_descriptors');
							 | 
						||
| 
								 | 
							
								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) {
							 | 
						||
| 
								 | 
							
								      key = keys[j++];
							 | 
						||
| 
								 | 
							
								      if (!DESCRIPTORS || isEnum.call(S, key)) T[key] = S[key];
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								  } return T;
							 | 
						||
| 
								 | 
							
								} : $assign;
							 |