UNPKG

webpack

Version:

Packs CommonJs/AMD modules for the browser. Allows to split your codebase into multiple bundles, which can be loaded on demand. Support loaders to preprocess files, i.e. json, jsx, es7, css, less, ... and your custom stuff.

48 lines (42 loc) 1.16 kB
/* MIT License http://www.opensource.org/licenses/mit-license.php */ "use strict"; const RuntimeGlobals = require("../RuntimeGlobals"); const RuntimeModule = require("../RuntimeModule"); const Template = require("../Template"); class GlobalRuntimeModule extends RuntimeModule { constructor() { super("global"); } /** * @returns {string} runtime code */ generate() { return Template.asString([ `${RuntimeGlobals.global} = (function() {`, Template.indent([ "if (typeof globalThis === 'object') return globalThis;", "try {", Template.indent( // This works in non-strict mode // or // This works if eval is allowed (see CSP) "return this || new Function('return this')();" ), "} catch (e) {", Template.indent( // This works if the window reference is available "if (typeof window === 'object') return window;" ), "}" // It can still be `undefined`, but nothing to do about it... // We return `undefined`, instead of nothing here, so it's // easier to handle this case: // if (!global) { … } ]), "})();" ]); } } module.exports = GlobalRuntimeModule;