MCPcopy
hub / github.com/react/create-react-app / shouldUseNative

Function shouldUseNative

packages/react-error-overlay/fixtures/bundle.mjs:1000–1042  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

998}
999
1000function shouldUseNative() {
1001 try {
1002 if (!Object.assign) {
1003 return false;
1004 }
1005
1006 // Detect buggy property enumeration order in older V8 versions.
1007
1008 // https://bugs.chromium.org/p/v8/issues/detail?id=4118
1009 var test1 = new String('abc'); // eslint-disable-line no-new-wrappers
1010 test1[5] = 'de';
1011 if (Object.getOwnPropertyNames(test1)[0] === '5') {
1012 return false;
1013 }
1014
1015 // https://bugs.chromium.org/p/v8/issues/detail?id=3056
1016 var test2 = {};
1017 for (var i = 0; i < 10; i++) {
1018 test2['_' + String.fromCharCode(i)] = i;
1019 }
1020 var order2 = Object.getOwnPropertyNames(test2).map(function (n) {
1021 return test2[n];
1022 });
1023 if (order2.join('') !== '0123456789') {
1024 return false;
1025 }
1026
1027 // https://bugs.chromium.org/p/v8/issues/detail?id=3056
1028 var test3 = {};
1029 'abcdefghijklmnopqrst'.split('').forEach(function (letter) {
1030 test3[letter] = letter;
1031 });
1032 if (Object.keys(Object.assign({}, test3)).join('') !==
1033 'abcdefghijklmnopqrst') {
1034 return false;
1035 }
1036
1037 return true;
1038 } catch (err) {
1039 // We don't expect any of the above to throw, but better to be safe.
1040 return false;
1041 }
1042}
1043
1044module.exports = shouldUseNative() ? Object.assign : function (target, source) {
1045 var from;

Callers 1

bundle.mjsFile · 0.70

Calls

no outgoing calls

Tested by

no test coverage detected