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.
29 lines
715 B
29 lines
715 B
'use strict'; |
|
|
|
var define = require('define-properties'); |
|
var gOPD = require('gopd'); |
|
var getPolyfill = require('./polyfill'); |
|
|
|
module.exports = function shimGlobal() { |
|
var polyfill = getPolyfill(); |
|
if (define.supportsDescriptors) { |
|
var descriptor = gOPD(polyfill, 'globalThis'); |
|
if ( |
|
!descriptor |
|
|| ( |
|
descriptor.configurable |
|
&& (descriptor.enumerable || !descriptor.writable || globalThis !== polyfill) |
|
) |
|
) { |
|
Object.defineProperty(polyfill, 'globalThis', { |
|
configurable: true, |
|
enumerable: false, |
|
value: polyfill, |
|
writable: true |
|
}); |
|
} |
|
} else if (typeof globalThis !== 'object' || globalThis !== polyfill) { |
|
polyfill.globalThis = polyfill; |
|
} |
|
return polyfill; |
|
};
|
|
|