mirror of
https://github.com/hanzoai/es5-ext.git
synced 2026-09-24 16:58:43 +00:00
fix: Fix global resolution for Safari
This commit is contained in:
@@ -1,15 +1,35 @@
|
||||
var naiveFallback = function () {
|
||||
if (typeof self === "object" && self) return self;
|
||||
if (typeof window === "object" && window) return window;
|
||||
throw new Error("Unable to resolve global `this`");
|
||||
};
|
||||
|
||||
module.exports = (function () {
|
||||
if (this) return this;
|
||||
|
||||
// Unexpected strict mode (may happen if e.g. bundled into ESM module), be nice
|
||||
// Unexpected strict mode (may happen if e.g. bundled into ESM module)
|
||||
|
||||
// Fallback to standard globalThis if available
|
||||
if (typeof globalThis === "object" && globalThis) return globalThis;
|
||||
|
||||
// Thanks @mathiasbynens -> https://mathiasbynens.be/notes/globalthis
|
||||
// In all ES5+ engines global object inherits from Object.prototype
|
||||
// (if you approached one that doesn't please report)
|
||||
try {
|
||||
Object.defineProperty(Object.prototype, "__global__", {
|
||||
get: function () { return this; },
|
||||
configurable: true
|
||||
});
|
||||
try { return __global__; }
|
||||
finally { delete Object.prototype.__global__; }
|
||||
} catch (error) {
|
||||
// Unfortunate case of updates to Object.prototype being restricted
|
||||
// via preventExtensions, seal or freeze
|
||||
return naiveFallback();
|
||||
}
|
||||
try {
|
||||
// Safari case (window.__global__ works, but __global__ does not)
|
||||
if (!__global__) return naiveFallback();
|
||||
return __global__;
|
||||
} finally {
|
||||
delete Object.prototype.__global__;
|
||||
}
|
||||
})();
|
||||
|
||||
+4
-1
@@ -63,7 +63,10 @@
|
||||
{
|
||||
"files": "global.js",
|
||||
"globals": {
|
||||
"__global__": true
|
||||
"__global__": true,
|
||||
"globalThis": true,
|
||||
"self": true,
|
||||
"window": true
|
||||
},
|
||||
"rules": {
|
||||
"strict": "off"
|
||||
|
||||
Reference in New Issue
Block a user