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.
		
		
		
		
		
			
		
			
				
					
					
						
							52 lines
						
					
					
						
							2.0 KiB
						
					
					
				
			
		
		
	
	
							52 lines
						
					
					
						
							2.0 KiB
						
					
					
				'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;
 | 
						|
 |