()
| 64478 | } |
| 64479 | |
| 64480 | function shouldUseNative() { |
| 64481 | try { |
| 64482 | if (!Object.assign) { |
| 64483 | return false; |
| 64484 | } |
| 64485 | |
| 64486 | // Detect buggy property enumeration order in older V8 versions. |
| 64487 | |
| 64488 | // https://bugs.chromium.org/p/v8/issues/detail?id=4118 |
| 64489 | var test1 = new String('abc'); // eslint-disable-line no-new-wrappers |
| 64490 | test1[5] = 'de'; |
| 64491 | if (Object.getOwnPropertyNames(test1)[0] === '5') { |
| 64492 | return false; |
| 64493 | } |
| 64494 | |
| 64495 | // https://bugs.chromium.org/p/v8/issues/detail?id=3056 |
| 64496 | var test2 = {}; |
| 64497 | for (var i = 0; i < 10; i++) { |
| 64498 | test2['_' + String.fromCharCode(i)] = i; |
| 64499 | } |
| 64500 | var order2 = Object.getOwnPropertyNames(test2).map(function (n) { |
| 64501 | return test2[n]; |
| 64502 | }); |
| 64503 | if (order2.join('') !== '0123456789') { |
| 64504 | return false; |
| 64505 | } |
| 64506 | |
| 64507 | // https://bugs.chromium.org/p/v8/issues/detail?id=3056 |
| 64508 | var test3 = {}; |
| 64509 | 'abcdefghijklmnopqrst'.split('').forEach(function (letter) { |
| 64510 | test3[letter] = letter; |
| 64511 | }); |
| 64512 | if (Object.keys(Object.assign({}, test3)).join('') !== |
| 64513 | 'abcdefghijklmnopqrst') { |
| 64514 | return false; |
| 64515 | } |
| 64516 | |
| 64517 | return true; |
| 64518 | } catch (err) { |
| 64519 | // We don't expect any of the above to throw, but better to be safe. |
| 64520 | return false; |
| 64521 | } |
| 64522 | } |
| 64523 | |
| 64524 | module.exports = shouldUseNative() ? Object.assign : function (target, source) { |
| 64525 | var from; |
no outgoing calls
no test coverage detected
searching dependent graphs…