diff options
author | Rens Baardman <git@rensbaardman.nl> | 2019-06-11 14:41:59 +0300 |
---|---|---|
committer | Rens Baardman <git@rensbaardman.nl> | 2019-06-11 16:14:58 +0300 |
commit | 7bec7f88e01bad4829ee2ac3f90fe5d9d2616888 (patch) | |
tree | 3e8500e4f4c4c66d07057b5f84eaaa25747eda22 /lib | |
parent | 5bea3d816d0258e5204f1b49b08b9fb302ac53e1 (diff) |
Fix #167: non-enumerable globals are now also prefixed with `var`fix-167-global-var-leakage
Diffstat (limited to 'lib')
-rw-r--r-- | lib/getImportGlobalsSrc.js | 14 |
1 files changed, 11 insertions, 3 deletions
diff --git a/lib/getImportGlobalsSrc.js b/lib/getImportGlobalsSrc.js index 3c29c56..fcce0d0 100644 --- a/lib/getImportGlobalsSrc.js +++ b/lib/getImportGlobalsSrc.js @@ -9,7 +9,6 @@ */ function getImportGlobalsSrc(ignore) { var key, - value, src = "", globalObj = typeof global === "undefined"? window: global; @@ -20,12 +19,21 @@ function getImportGlobalsSrc(ignore) { // shadow the module-internal variables // @see https://github.com/jhnns/rewire-webpack/pull/6 ignore.push("module", "exports", "require"); + // strict mode doesn't allow to (re)define 'undefined', 'eval' & 'arguments' + ignore.push("undefined", "eval", "arguments"); + // 'GLOBAL' and 'root' are deprecated in Node + // (assigning them causes a DeprecationWarning) + ignore.push("GLOBAL", "root"); + // 'NaN' and 'Infinity' are immutable + // (doesn't throw an error if you set 'var NaN = ...', but doesn't work either) + ignore.push("NaN", "Infinity"); - for (key in globalObj) { /* jshint forin: false */ + const globals = Object.getOwnPropertyNames(globalObj); + + for (key of globals) { if (ignore.indexOf(key) !== -1) { continue; } - value = globalObj[key]; // key may be an invalid variable name (e.g. 'a-b') try { |