From 3acc5d610fe6b802d5660290e3322112684e0e8c Mon Sep 17 00:00:00 2001 From: Rich-Harris Date: Wed, 21 Dec 2016 23:48:46 -0500 Subject: [PATCH] dont overwrite globals (#127) --- src/transform.js | 11 ++++------- test/function/global-not-overwritten/_config.js | 7 +++++++ test/function/global-not-overwritten/encode.js | 5 +++++ test/function/global-not-overwritten/main.js | 8 ++++++++ 4 files changed, 24 insertions(+), 7 deletions(-) create mode 100644 test/function/global-not-overwritten/_config.js create mode 100644 test/function/global-not-overwritten/encode.js create mode 100644 test/function/global-not-overwritten/main.js diff --git a/src/transform.js b/src/transform.js index 7818e80..d3d032e 100644 --- a/src/transform.js +++ b/src/transform.js @@ -230,14 +230,11 @@ export default function transformCommonjs ( code, id, isEntry, ignoreGlobal, cus const name = getName( id ); function addExport ( x ) { - let declaration; + const deconflicted = deconflict( scope, globals, name ); - if ( x === name ) { - const deconflicted = deconflict( scope, globals, name ); - declaration = `var ${deconflicted} = ${moduleName}.${x};\nexport { ${deconflicted} as ${x} };`; - } else { - declaration = `export var ${x} = ${moduleName}.${x};`; - } + const declaration = deconflicted === name ? + `export var ${x} = ${moduleName}.${x};` : + `var ${deconflicted} = ${moduleName}.${x};\nexport { ${deconflicted} as ${x} };`; namedExportDeclarations.push( declaration ); } diff --git a/test/function/global-not-overwritten/_config.js b/test/function/global-not-overwritten/_config.js new file mode 100644 index 0000000..05532d6 --- /dev/null +++ b/test/function/global-not-overwritten/_config.js @@ -0,0 +1,7 @@ +const assert = require( 'assert' ); + +module.exports = { + exports: function ( exports ) { + assert.equal( exports.encoded, encodeURIComponent( 'test string' ) ); + } +}; diff --git a/test/function/global-not-overwritten/encode.js b/test/function/global-not-overwritten/encode.js new file mode 100644 index 0000000..7c1cd56 --- /dev/null +++ b/test/function/global-not-overwritten/encode.js @@ -0,0 +1,5 @@ +exports.encodeURIComponent = function () { + return encodeURIComponent( this.str ); +}; + +console.log( exports ); // to ensure module is wrapped diff --git a/test/function/global-not-overwritten/main.js b/test/function/global-not-overwritten/main.js new file mode 100644 index 0000000..523e69e --- /dev/null +++ b/test/function/global-not-overwritten/main.js @@ -0,0 +1,8 @@ +import { encodeURIComponent } from './encode.js'; + +var foo = { + str: 'test string', + encodeURIComponent +}; + +export var encoded = foo.encodeURIComponent();