MCPcopy Index your code
hub / github.com/krasimir/react-in-patterns / shouldUseNative

Function shouldUseNative

code/higher-order-components/public/app.js:681–723  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

679}
680
681function shouldUseNative() {
682 try {
683 if (!Object.assign) {
684 return false;
685 }
686
687 // Detect buggy property enumeration order in older V8 versions.
688
689 // https://bugs.chromium.org/p/v8/issues/detail?id=4118
690 var test1 = new String('abc'); // eslint-disable-line no-new-wrappers
691 test1[5] = 'de';
692 if (Object.getOwnPropertyNames(test1)[0] === '5') {
693 return false;
694 }
695
696 // https://bugs.chromium.org/p/v8/issues/detail?id=3056
697 var test2 = {};
698 for (var i = 0; i < 10; i++) {
699 test2['_' + String.fromCharCode(i)] = i;
700 }
701 var order2 = Object.getOwnPropertyNames(test2).map(function (n) {
702 return test2[n];
703 });
704 if (order2.join('') !== '0123456789') {
705 return false;
706 }
707
708 // https://bugs.chromium.org/p/v8/issues/detail?id=3056
709 var test3 = {};
710 'abcdefghijklmnopqrst'.split('').forEach(function (letter) {
711 test3[letter] = letter;
712 });
713 if (Object.keys(Object.assign({}, test3)).join('') !==
714 'abcdefghijklmnopqrst') {
715 return false;
716 }
717
718 return true;
719 } catch (err) {
720 // We don't expect any of the above to throw, but better to be safe.
721 return false;
722 }
723}
724
725module.exports = shouldUseNative() ? Object.assign : function (target, source) {
726 var from;

Callers 1

app.jsFile · 0.70

Calls

no outgoing calls

Tested by

no test coverage detected