MCPcopy
hub / github.com/jhnns/rewire / getImportGlobalsSrc

Function getImportGlobalsSrc

lib/getImportGlobalsSrc.js:10–48  ·  view source on GitHub ↗

* Declares all globals with a var and assigns the global object. Thus you're able to * override globals without changing the global object itself. * * Returns something like * "var console = globalThis.console; var process = globalThis.process; ..." * * @return {String}

(ignore)

Source from the content-addressed store, hash-verified

8 * @return {String}
9 */
10function getImportGlobalsSrc(ignore) {
11 var key,
12 src = "",
13 globalObj = typeof globalThis === "undefined"? window : globalThis;
14
15 ignore = ignore || [];
16 ignore.push(
17 // globalThis itself can't be overridden because it's the only reference to our real global objects
18 "globalThis",
19 // ignore 'module', 'exports' and 'require' on the global scope, because otherwise our code would
20 // shadow the module-internal variables
21 // @see https://github.com/jhnns/rewire-webpack/pull/6
22 "module", "exports", "require",
23 // strict mode doesn't allow to (re)define 'undefined', 'eval' & 'arguments'
24 "undefined", "eval", "arguments",
25 // 'GLOBAL' and 'root' are deprecated in Node
26 // (assigning them causes a DeprecationWarning)
27 "GLOBAL", "root",
28 // 'NaN' and 'Infinity' are immutable
29 // (doesn't throw an error if you set 'var NaN = ...', but doesn't work either)
30 "NaN", "Infinity",
31 );
32
33 const globals = Object.getOwnPropertyNames(globalObj);
34
35 for (key of globals) {
36 if (ignore.indexOf(key) !== -1) {
37 continue;
38 }
39
40 // key may be an invalid variable name (e.g. 'a-b')
41 try {
42 eval("var " + key + ";");
43 src += "var " + key + " = globalThis." + key + "; ";
44 } catch(e) {}
45 }
46
47 return src;
48}
49
50module.exports = getImportGlobalsSrc;

Callers 2

internalRewireFunction · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…