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.
		
		
		
		
			
				
					53 lines
				
				2.0 KiB
			
		
		
			
		
	
	
					53 lines
				
				2.0 KiB
			| 
								 
											4 years ago
										 
									 | 
							
								'use strict';
							 | 
						||
| 
								 | 
							
								var DESCRIPTORS = require('../internals/descriptors');
							 | 
						||
| 
								 | 
							
								var fails = require('../internals/fails');
							 | 
						||
| 
								 | 
							
								var objectKeys = require('../internals/object-keys');
							 | 
						||
| 
								 | 
							
								var getOwnPropertySymbolsModule = require('../internals/object-get-own-property-symbols');
							 | 
						||
| 
								 | 
							
								var propertyIsEnumerableModule = require('../internals/object-property-is-enumerable');
							 | 
						||
| 
								 | 
							
								var toObject = require('../internals/to-object');
							 | 
						||
| 
								 | 
							
								var IndexedObject = require('../internals/indexed-object');
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								var nativeAssign = Object.assign;
							 | 
						||
| 
								 | 
							
								var defineProperty = Object.defineProperty;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								// `Object.assign` method
							 | 
						||
| 
								 | 
							
								// https://tc39.github.io/ecma262/#sec-object.assign
							 | 
						||
| 
								 | 
							
								module.exports = !nativeAssign || fails(function () {
							 | 
						||
| 
								 | 
							
								  // should have correct order of operations (Edge bug)
							 | 
						||
| 
								 | 
							
								  if (DESCRIPTORS && nativeAssign({ b: 1 }, nativeAssign(defineProperty({}, 'a', {
							 | 
						||
| 
								 | 
							
								    enumerable: true,
							 | 
						||
| 
								 | 
							
								    get: function () {
							 | 
						||
| 
								 | 
							
								      defineProperty(this, 'b', {
							 | 
						||
| 
								 | 
							
								        value: 3,
							 | 
						||
| 
								 | 
							
								        enumerable: false
							 | 
						||
| 
								 | 
							
								      });
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								  }), { b: 2 })).b !== 1) return true;
							 | 
						||
| 
								 | 
							
								  // should work with symbols and should have deterministic property order (V8 bug)
							 | 
						||
| 
								 | 
							
								  var A = {};
							 | 
						||
| 
								 | 
							
								  var B = {};
							 | 
						||
| 
								 | 
							
								  // eslint-disable-next-line no-undef
							 | 
						||
| 
								 | 
							
								  var symbol = Symbol();
							 | 
						||
| 
								 | 
							
								  var alphabet = 'abcdefghijklmnopqrst';
							 | 
						||
| 
								 | 
							
								  A[symbol] = 7;
							 | 
						||
| 
								 | 
							
								  alphabet.split('').forEach(function (chr) { B[chr] = chr; });
							 | 
						||
| 
								 | 
							
								  return nativeAssign({}, A)[symbol] != 7 || objectKeys(nativeAssign({}, B)).join('') != alphabet;
							 | 
						||
| 
								 | 
							
								}) ? function assign(target, source) { // eslint-disable-line no-unused-vars
							 | 
						||
| 
								 | 
							
								  var T = toObject(target);
							 | 
						||
| 
								 | 
							
								  var argumentsLength = arguments.length;
							 | 
						||
| 
								 | 
							
								  var index = 1;
							 | 
						||
| 
								 | 
							
								  var getOwnPropertySymbols = getOwnPropertySymbolsModule.f;
							 | 
						||
| 
								 | 
							
								  var propertyIsEnumerable = propertyIsEnumerableModule.f;
							 | 
						||
| 
								 | 
							
								  while (argumentsLength > index) {
							 | 
						||
| 
								 | 
							
								    var S = IndexedObject(arguments[index++]);
							 | 
						||
| 
								 | 
							
								    var keys = getOwnPropertySymbols ? objectKeys(S).concat(getOwnPropertySymbols(S)) : objectKeys(S);
							 | 
						||
| 
								 | 
							
								    var length = keys.length;
							 | 
						||
| 
								 | 
							
								    var j = 0;
							 | 
						||
| 
								 | 
							
								    var key;
							 | 
						||
| 
								 | 
							
								    while (length > j) {
							 | 
						||
| 
								 | 
							
								      key = keys[j++];
							 | 
						||
| 
								 | 
							
								      if (!DESCRIPTORS || propertyIsEnumerable.call(S, key)) T[key] = S[key];
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								  } return T;
							 | 
						||
| 
								 | 
							
								} : nativeAssign;
							 |