Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
Replace Function constructor with globalThis and use polyfill if missing
  • Loading branch information
eugenioemmolo committed Jul 29, 2020
1 parent 66b01ea commit 2b292e6
Showing 1 changed file with 37 additions and 3 deletions.
40 changes: 37 additions & 3 deletions resemble.js
Expand Up @@ -3,9 +3,43 @@ James Cryer / Huddle
URL: https://github.com/Huddle/Resemble.js
*/

var isNode = new Function(
"return (typeof process !== 'undefined') && process.versions && process.versions.node"
); //eslint-disable-line
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`");
};

// https://github.com/medikoo/es5-ext/blob/master/global.js
var getGlobalThis = function() {
// 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
});
} 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__;
}
}

var isNode = function() {
const globalPolyfill = getGlobalThis();
return (typeof globalPolyfill.process !== 'undefined') && globalPolyfill.process.versions && globalPolyfill.process.versions.node;
};//eslint-disable-line

(function(root, factory) {
"use strict";
Expand Down

0 comments on commit 2b292e6

Please sign in to comment.