'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; };