From f17d30692c5a4b892d1ea212aef875de9695d23a Mon Sep 17 00:00:00 2001 From: Logan Smyth Date: Thu, 7 Sep 2017 20:41:00 -0700 Subject: [PATCH] Convert AMD to use new shared implementation. --- .../expected.js | 9 +- .../package.json | 2 +- .../src/index.js | 212 ++++++++---------- .../amd/export-default-10/expected.js | 9 +- .../fixtures/amd/export-default-2/expected.js | 8 +- .../fixtures/amd/export-default-3/expected.js | 8 +- .../fixtures/amd/export-default-4/expected.js | 8 +- .../fixtures/amd/export-default-5/expected.js | 7 +- .../fixtures/amd/export-default-6/expected.js | 10 +- .../fixtures/amd/export-default-7/expected.js | 6 +- .../fixtures/amd/export-default-8/expected.js | 7 +- .../fixtures/amd/export-default-9/actual.js | 1 + .../fixtures/amd/export-default-9/expected.js | 8 +- .../fixtures/amd/export-default/expected.js | 8 +- .../fixtures/amd/export-from-2/expected.js | 6 +- .../fixtures/amd/export-from-3/expected.js | 8 +- .../fixtures/amd/export-from-4/expected.js | 6 +- .../fixtures/amd/export-from-5/expected.js | 6 +- .../fixtures/amd/export-from-6/expected.js | 8 +- .../test/fixtures/amd/export-from/expected.js | 6 +- .../fixtures/amd/export-named-2/actual.js | 1 + .../fixtures/amd/export-named-2/expected.js | 10 +- .../fixtures/amd/export-named-3/actual.js | 1 + .../fixtures/amd/export-named-3/expected.js | 8 +- .../fixtures/amd/export-named-4/actual.js | 1 + .../fixtures/amd/export-named-4/expected.js | 8 +- .../fixtures/amd/export-named-5/actual.js | 1 + .../fixtures/amd/export-named-5/expected.js | 10 +- .../test/fixtures/amd/export-named/actual.js | 1 + .../fixtures/amd/export-named/expected.js | 8 +- .../amd/export-specifier-default/expected.js | 7 +- .../fixtures/amd/exports-variable/expected.js | 33 ++- .../amd/hoist-function-exports/expected.js | 12 +- .../fixtures/amd/import-order/expected.js | 2 +- .../fixtures/amd/imports-default/expected.js | 7 +- .../fixtures/amd/imports-glob/expected.js | 4 +- .../fixtures/amd/imports-mixing/expected.js | 5 +- .../amd/noInterop-export-from/expected.js | 6 +- .../test/fixtures/amd/overview/actual.js | 1 + .../test/fixtures/amd/overview/expected.js | 21 +- .../test/fixtures/amd/remap/expected.js | 25 ++- .../test/fixtures/regression/4192/expected.js | 7 +- .../modules-amd-loose/expected.js | 6 +- 43 files changed, 275 insertions(+), 253 deletions(-) diff --git a/packages/babel-plugin-transform-es2015-function-name/test/fixtures/function-name/export-default-arrow-renaming-module-amd/expected.js b/packages/babel-plugin-transform-es2015-function-name/test/fixtures/function-name/export-default-arrow-renaming-module-amd/expected.js index 55c7daa819..1cfe10ea87 100644 --- a/packages/babel-plugin-transform-es2015-function-name/test/fixtures/function-name/export-default-arrow-renaming-module-amd/expected.js +++ b/packages/babel-plugin-transform-es2015-function-name/test/fixtures/function-name/export-default-arrow-renaming-module-amd/expected.js @@ -1,15 +1,18 @@ -define(["exports"], function (exports) { +define(["exports"], function (_exports) { "use strict"; - Object.defineProperty(exports, "__esModule", { + Object.defineProperty(_exports, "__esModule", { value: true }); + _exports.default = void 0; - exports.default = function (_a) { + var _default = function _default(_a) { return { a: function a() { return _a; } }; }; + + _exports.default = _default; }); diff --git a/packages/babel-plugin-transform-es2015-modules-amd/package.json b/packages/babel-plugin-transform-es2015-modules-amd/package.json index 547a6fa8c4..0ce9b7938c 100644 --- a/packages/babel-plugin-transform-es2015-modules-amd/package.json +++ b/packages/babel-plugin-transform-es2015-modules-amd/package.json @@ -6,7 +6,7 @@ "license": "MIT", "main": "lib/index.js", "dependencies": { - "babel-plugin-transform-es2015-modules-commonjs": "7.0.0-beta.0", + "babel-helper-modules": "7.0.0-beta.0", "babel-template": "7.0.0-beta.0" }, "keywords": [ diff --git a/packages/babel-plugin-transform-es2015-modules-amd/src/index.js b/packages/babel-plugin-transform-es2015-modules-amd/src/index.js index 7a8573d3da..82696478e6 100644 --- a/packages/babel-plugin-transform-es2015-modules-amd/src/index.js +++ b/packages/babel-plugin-transform-es2015-modules-amd/src/index.js @@ -1,143 +1,111 @@ -import { basename, extname } from "path"; import template from "babel-template"; -import transformCommonjs from "babel-plugin-transform-es2015-modules-commonjs"; +import { + rewriteModuleStatementsAndPrepareHeader, + hasExports, + getSourceMetadataArray, + buildNamespaceInitStatements, + ensureStatementsHoisted, + wrapInterop, +} from "babel-helper-modules"; -const buildDefine = template(` - define(MODULE_NAME, [SOURCES], FACTORY); -`); - -const buildFactory = template(` - (function (PARAMS) { - BODY; +const buildWrapper = template(` + define(MODULE_NAME, AMD_ARGUMENTS, function(IMPORT_NAMES) { }) `); export default function({ types: t }) { - function isValidRequireCall(path) { - if (!path.isCallExpression()) return false; - if (!path.get("callee").isIdentifier({ name: "require" })) return false; - if (path.scope.getBinding("require")) return false; - - const args = path.get("arguments"); - if (args.length !== 1) return false; - - const arg = args[0]; - if (!arg.isStringLiteral()) return false; - - return true; - } - - function buildParamsAndSource(sourcesFound) { - const params = []; - const sources = []; - - let hasSeenNonBareRequire = false; - for (let i = sourcesFound.length - 1; i > -1; i--) { - const source = sourcesFound[i]; - - sources.unshift(source[1]); - - // bare import at end, no need for param - if (!hasSeenNonBareRequire && source[2] === true) { - continue; - } - - hasSeenNonBareRequire = true; - params.unshift(source[0]); - } - - return [params, sources]; - } - - const amdVisitor = { - ReferencedIdentifier({ node, scope }) { - if (node.name === "exports" && !scope.getBinding("exports")) { - this.hasExports = true; - } - - if (node.name === "module" && !scope.getBinding("module")) { - this.hasModule = true; - } - }, - - CallExpression(path) { - if (!isValidRequireCall(path)) return; - const source = path.node.arguments[0]; - const ref = path.scope.generateUidIdentifier( - basename(source.value, extname(source.value)), - ); - this.sources.push([ref, source, true]); - path.remove(); - }, - - VariableDeclarator(path) { - const id = path.get("id"); - if (!id.isIdentifier()) return; - - const init = path.get("init"); - if (!isValidRequireCall(init)) return; - - const source = init.node.arguments[0]; - this.sourceNames[source.value] = true; - - this.sources.push([id.node, source]); - - path.remove(); - }, - }; - return { - inherits: transformCommonjs, - - pre() { - // source strings - this.sources = []; - this.sourceNames = Object.create(null); - - this.hasExports = false; - this.hasModule = false; - }, - visitor: { Program: { - exit(path) { - if (this.ran) return; - this.ran = true; - - path.traverse(amdVisitor, this); - - const [params, sources] = buildParamsAndSource(this.sources); + exit(path, state) { + const { + loose, + allowTopLevelThis, + strict, + strictMode, + noInterop, + } = state.opts; let moduleName = this.getModuleName(); if (moduleName) moduleName = t.stringLiteral(moduleName); - if (this.hasExports) { - sources.unshift(t.stringLiteral("exports")); - params.unshift(t.identifier("exports")); - } - - if (this.hasModule) { - sources.unshift(t.stringLiteral("module")); - params.unshift(t.identifier("module")); - } - - const { node } = path; - const factory = buildFactory({ - PARAMS: params, - BODY: node.body, + const { + meta, + headers, + } = rewriteModuleStatementsAndPrepareHeader(path, { + loose, + strict, + strictMode, + allowTopLevelThis, + noInterop, }); - factory.expression.body.directives = node.directives; - node.directives = []; - node.body = []; + const amdArgs = []; + const commonjsArgs = []; + const importNames = []; - path.pushContainer("body", [ - buildDefine({ + if (hasExports(meta)) { + amdArgs.push(t.stringLiteral("exports")); + commonjsArgs.push(t.identifier("exports")); + + importNames.push(t.identifier(meta.exportName)); + } + + getSourceMetadataArray( + meta, + ).forEach(([source, metadata, , inSideEffectBlock]) => { + amdArgs.push(t.stringLiteral(source)); + commonjsArgs.push( + t.callExpression(t.identifier("require"), [ + t.stringLiteral(source), + ]), + ); + + if (!inSideEffectBlock) { + importNames.push(t.identifier(metadata.name)); + + const interop = wrapInterop( + path, + t.identifier(metadata.name), + metadata.interop, + ); + if (interop) { + const header = t.expressionStatement( + t.assignmentExpression( + "=", + t.identifier(metadata.name), + interop, + ), + ); + header.loc = metadata.loc; + headers.push(header); + } + } + + headers.push(...buildNamespaceInitStatements(meta, metadata)); + }); + + ensureStatementsHoisted(headers); + path.unshiftContainer("body", headers); + + const { body, directives } = path.node; + path.node.directives = []; + path.node.body = []; + const amdWrapper = path.pushContainer("body", [ + buildWrapper({ MODULE_NAME: moduleName, - SOURCES: sources, - FACTORY: factory, + + AMD_ARGUMENTS: t.arrayExpression(amdArgs), + COMMONJS_ARGUMENTS: commonjsArgs, + IMPORT_NAMES: importNames, }), - ]); + ])[0]; + const amdFactory = amdWrapper + .get("expression.arguments") + .filter(arg => arg.isFunctionExpression())[0] + .get("body"); + amdFactory.pushContainer("directives", directives); + amdFactory.pushContainer("body", body); }, }, }, diff --git a/packages/babel-plugin-transform-es2015-modules-amd/test/fixtures/amd/export-default-10/expected.js b/packages/babel-plugin-transform-es2015-modules-amd/test/fixtures/amd/export-default-10/expected.js index 3f4ebdc60f..7fd574382a 100644 --- a/packages/babel-plugin-transform-es2015-modules-amd/test/fixtures/amd/export-default-10/expected.js +++ b/packages/babel-plugin-transform-es2015-modules-amd/test/fixtures/amd/export-default-10/expected.js @@ -1,11 +1,14 @@ -define(["exports"], function (exports) { +define(["exports"], function (_exports) { "use strict"; - Object.defineProperty(exports, "__esModule", { + Object.defineProperty(_exports, "__esModule", { value: true }); + _exports.default = void 0; - exports.default = function () { + var _default = function () { return "foo"; }(); + + _exports.default = _default; }); diff --git a/packages/babel-plugin-transform-es2015-modules-amd/test/fixtures/amd/export-default-2/expected.js b/packages/babel-plugin-transform-es2015-modules-amd/test/fixtures/amd/export-default-2/expected.js index fc05c36dd8..2f57a0c415 100644 --- a/packages/babel-plugin-transform-es2015-modules-amd/test/fixtures/amd/export-default-2/expected.js +++ b/packages/babel-plugin-transform-es2015-modules-amd/test/fixtures/amd/export-default-2/expected.js @@ -1,8 +1,10 @@ -define(["exports"], function (exports) { +define(["exports"], function (_exports) { "use strict"; - Object.defineProperty(exports, "__esModule", { + Object.defineProperty(_exports, "__esModule", { value: true }); - exports.default = {}; + _exports.default = void 0; + var _default = {}; + _exports.default = _default; }); diff --git a/packages/babel-plugin-transform-es2015-modules-amd/test/fixtures/amd/export-default-3/expected.js b/packages/babel-plugin-transform-es2015-modules-amd/test/fixtures/amd/export-default-3/expected.js index 0eb559ca60..2cfc9ab6ec 100644 --- a/packages/babel-plugin-transform-es2015-modules-amd/test/fixtures/amd/export-default-3/expected.js +++ b/packages/babel-plugin-transform-es2015-modules-amd/test/fixtures/amd/export-default-3/expected.js @@ -1,8 +1,10 @@ -define(["exports"], function (exports) { +define(["exports"], function (_exports) { "use strict"; - Object.defineProperty(exports, "__esModule", { + Object.defineProperty(_exports, "__esModule", { value: true }); - exports.default = []; + _exports.default = void 0; + var _default = []; + _exports.default = _default; }); diff --git a/packages/babel-plugin-transform-es2015-modules-amd/test/fixtures/amd/export-default-4/expected.js b/packages/babel-plugin-transform-es2015-modules-amd/test/fixtures/amd/export-default-4/expected.js index dbe6496d73..8a0d7bce51 100644 --- a/packages/babel-plugin-transform-es2015-modules-amd/test/fixtures/amd/export-default-4/expected.js +++ b/packages/babel-plugin-transform-es2015-modules-amd/test/fixtures/amd/export-default-4/expected.js @@ -1,8 +1,10 @@ -define(["exports"], function (exports) { +define(["exports"], function (_exports) { "use strict"; - Object.defineProperty(exports, "__esModule", { + Object.defineProperty(_exports, "__esModule", { value: true }); - exports.default = foo; + _exports.default = void 0; + var _default = foo; + _exports.default = _default; }); diff --git a/packages/babel-plugin-transform-es2015-modules-amd/test/fixtures/amd/export-default-5/expected.js b/packages/babel-plugin-transform-es2015-modules-amd/test/fixtures/amd/export-default-5/expected.js index 0975d81147..5a4c677eb0 100644 --- a/packages/babel-plugin-transform-es2015-modules-amd/test/fixtures/amd/export-default-5/expected.js +++ b/packages/babel-plugin-transform-es2015-modules-amd/test/fixtures/amd/export-default-5/expected.js @@ -1,9 +1,10 @@ -define(["exports"], function (exports) { +define(["exports"], function (_exports) { "use strict"; - Object.defineProperty(exports, "__esModule", { + Object.defineProperty(_exports, "__esModule", { value: true }); + _exports.default = _default; - exports.default = function () {}; + function _default() {} }); diff --git a/packages/babel-plugin-transform-es2015-modules-amd/test/fixtures/amd/export-default-6/expected.js b/packages/babel-plugin-transform-es2015-modules-amd/test/fixtures/amd/export-default-6/expected.js index 3e29cba5e0..c0de9727b8 100644 --- a/packages/babel-plugin-transform-es2015-modules-amd/test/fixtures/amd/export-default-6/expected.js +++ b/packages/babel-plugin-transform-es2015-modules-amd/test/fixtures/amd/export-default-6/expected.js @@ -1,8 +1,12 @@ -define(["exports"], function (exports) { +define(["exports"], function (_exports) { "use strict"; - Object.defineProperty(exports, "__esModule", { + Object.defineProperty(_exports, "__esModule", { value: true }); - exports.default = class {}; + _exports.default = void 0; + + class _default {} + + _exports.default = _default; }); diff --git a/packages/babel-plugin-transform-es2015-modules-amd/test/fixtures/amd/export-default-7/expected.js b/packages/babel-plugin-transform-es2015-modules-amd/test/fixtures/amd/export-default-7/expected.js index b8efa116fd..b77e30588b 100644 --- a/packages/babel-plugin-transform-es2015-modules-amd/test/fixtures/amd/export-default-7/expected.js +++ b/packages/babel-plugin-transform-es2015-modules-amd/test/fixtures/amd/export-default-7/expected.js @@ -1,10 +1,10 @@ -define(["exports"], function (exports) { +define(["exports"], function (_exports) { "use strict"; - Object.defineProperty(exports, "__esModule", { + Object.defineProperty(_exports, "__esModule", { value: true }); - exports.default = foo; + _exports.default = foo; function foo() {} }); diff --git a/packages/babel-plugin-transform-es2015-modules-amd/test/fixtures/amd/export-default-8/expected.js b/packages/babel-plugin-transform-es2015-modules-amd/test/fixtures/amd/export-default-8/expected.js index 675ec475df..67cd81118e 100644 --- a/packages/babel-plugin-transform-es2015-modules-amd/test/fixtures/amd/export-default-8/expected.js +++ b/packages/babel-plugin-transform-es2015-modules-amd/test/fixtures/amd/export-default-8/expected.js @@ -1,11 +1,12 @@ -define(["exports"], function (exports) { +define(["exports"], function (_exports) { "use strict"; - Object.defineProperty(exports, "__esModule", { + Object.defineProperty(_exports, "__esModule", { value: true }); + _exports.default = void 0; class Foo {} - exports.default = Foo; + _exports.default = Foo; }); diff --git a/packages/babel-plugin-transform-es2015-modules-amd/test/fixtures/amd/export-default-9/actual.js b/packages/babel-plugin-transform-es2015-modules-amd/test/fixtures/amd/export-default-9/actual.js index 95daad9d96..f52d2a9030 100644 --- a/packages/babel-plugin-transform-es2015-modules-amd/test/fixtures/amd/export-default-9/actual.js +++ b/packages/babel-plugin-transform-es2015-modules-amd/test/fixtures/amd/export-default-9/actual.js @@ -1 +1,2 @@ +var foo; export { foo as default }; diff --git a/packages/babel-plugin-transform-es2015-modules-amd/test/fixtures/amd/export-default-9/expected.js b/packages/babel-plugin-transform-es2015-modules-amd/test/fixtures/amd/export-default-9/expected.js index dbe6496d73..c1b6fcad35 100644 --- a/packages/babel-plugin-transform-es2015-modules-amd/test/fixtures/amd/export-default-9/expected.js +++ b/packages/babel-plugin-transform-es2015-modules-amd/test/fixtures/amd/export-default-9/expected.js @@ -1,8 +1,10 @@ -define(["exports"], function (exports) { +define(["exports"], function (_exports) { "use strict"; - Object.defineProperty(exports, "__esModule", { + Object.defineProperty(_exports, "__esModule", { value: true }); - exports.default = foo; + _exports.default = void 0; + var foo; + _exports.default = foo; }); diff --git a/packages/babel-plugin-transform-es2015-modules-amd/test/fixtures/amd/export-default/expected.js b/packages/babel-plugin-transform-es2015-modules-amd/test/fixtures/amd/export-default/expected.js index e8a2af62f4..adecae50fb 100644 --- a/packages/babel-plugin-transform-es2015-modules-amd/test/fixtures/amd/export-default/expected.js +++ b/packages/babel-plugin-transform-es2015-modules-amd/test/fixtures/amd/export-default/expected.js @@ -1,8 +1,10 @@ -define(["exports"], function (exports) { +define(["exports"], function (_exports) { "use strict"; - Object.defineProperty(exports, "__esModule", { + Object.defineProperty(_exports, "__esModule", { value: true }); - exports.default = 42; + _exports.default = void 0; + var _default = 42; + _exports.default = _default; }); diff --git a/packages/babel-plugin-transform-es2015-modules-amd/test/fixtures/amd/export-from-2/expected.js b/packages/babel-plugin-transform-es2015-modules-amd/test/fixtures/amd/export-from-2/expected.js index d624cde4f0..27e921085d 100644 --- a/packages/babel-plugin-transform-es2015-modules-amd/test/fixtures/amd/export-from-2/expected.js +++ b/packages/babel-plugin-transform-es2015-modules-amd/test/fixtures/amd/export-from-2/expected.js @@ -1,10 +1,10 @@ -define(["exports", "foo"], function (exports, _foo) { +define(["exports", "foo"], function (_exports, _foo) { "use strict"; - Object.defineProperty(exports, "__esModule", { + Object.defineProperty(_exports, "__esModule", { value: true }); - Object.defineProperty(exports, "foo", { + Object.defineProperty(_exports, "foo", { enumerable: true, get: function () { return _foo.foo; diff --git a/packages/babel-plugin-transform-es2015-modules-amd/test/fixtures/amd/export-from-3/expected.js b/packages/babel-plugin-transform-es2015-modules-amd/test/fixtures/amd/export-from-3/expected.js index 76fffe2220..67c7df5a73 100644 --- a/packages/babel-plugin-transform-es2015-modules-amd/test/fixtures/amd/export-from-3/expected.js +++ b/packages/babel-plugin-transform-es2015-modules-amd/test/fixtures/amd/export-from-3/expected.js @@ -1,16 +1,16 @@ -define(["exports", "foo"], function (exports, _foo) { +define(["exports", "foo"], function (_exports, _foo) { "use strict"; - Object.defineProperty(exports, "__esModule", { + Object.defineProperty(_exports, "__esModule", { value: true }); - Object.defineProperty(exports, "foo", { + Object.defineProperty(_exports, "foo", { enumerable: true, get: function () { return _foo.foo; } }); - Object.defineProperty(exports, "bar", { + Object.defineProperty(_exports, "bar", { enumerable: true, get: function () { return _foo.bar; diff --git a/packages/babel-plugin-transform-es2015-modules-amd/test/fixtures/amd/export-from-4/expected.js b/packages/babel-plugin-transform-es2015-modules-amd/test/fixtures/amd/export-from-4/expected.js index 1319b03f46..6e43da546e 100644 --- a/packages/babel-plugin-transform-es2015-modules-amd/test/fixtures/amd/export-from-4/expected.js +++ b/packages/babel-plugin-transform-es2015-modules-amd/test/fixtures/amd/export-from-4/expected.js @@ -1,10 +1,10 @@ -define(["exports", "foo"], function (exports, _foo) { +define(["exports", "foo"], function (_exports, _foo) { "use strict"; - Object.defineProperty(exports, "__esModule", { + Object.defineProperty(_exports, "__esModule", { value: true }); - Object.defineProperty(exports, "bar", { + Object.defineProperty(_exports, "bar", { enumerable: true, get: function () { return _foo.foo; diff --git a/packages/babel-plugin-transform-es2015-modules-amd/test/fixtures/amd/export-from-5/expected.js b/packages/babel-plugin-transform-es2015-modules-amd/test/fixtures/amd/export-from-5/expected.js index 92b27bc298..3fb87d64d8 100644 --- a/packages/babel-plugin-transform-es2015-modules-amd/test/fixtures/amd/export-from-5/expected.js +++ b/packages/babel-plugin-transform-es2015-modules-amd/test/fixtures/amd/export-from-5/expected.js @@ -1,10 +1,10 @@ -define(["exports", "foo"], function (exports, _foo) { +define(["exports", "foo"], function (_exports, _foo) { "use strict"; - Object.defineProperty(exports, "__esModule", { + Object.defineProperty(_exports, "__esModule", { value: true }); - Object.defineProperty(exports, "default", { + Object.defineProperty(_exports, "default", { enumerable: true, get: function () { return _foo.foo; diff --git a/packages/babel-plugin-transform-es2015-modules-amd/test/fixtures/amd/export-from-6/expected.js b/packages/babel-plugin-transform-es2015-modules-amd/test/fixtures/amd/export-from-6/expected.js index 56968766a3..b3416f4a11 100644 --- a/packages/babel-plugin-transform-es2015-modules-amd/test/fixtures/amd/export-from-6/expected.js +++ b/packages/babel-plugin-transform-es2015-modules-amd/test/fixtures/amd/export-from-6/expected.js @@ -1,16 +1,16 @@ -define(["exports", "foo"], function (exports, _foo) { +define(["exports", "foo"], function (_exports, _foo) { "use strict"; - Object.defineProperty(exports, "__esModule", { + Object.defineProperty(_exports, "__esModule", { value: true }); - Object.defineProperty(exports, "default", { + Object.defineProperty(_exports, "default", { enumerable: true, get: function () { return _foo.foo; } }); - Object.defineProperty(exports, "bar", { + Object.defineProperty(_exports, "bar", { enumerable: true, get: function () { return _foo.bar; diff --git a/packages/babel-plugin-transform-es2015-modules-amd/test/fixtures/amd/export-from/expected.js b/packages/babel-plugin-transform-es2015-modules-amd/test/fixtures/amd/export-from/expected.js index 10c4aedc32..7dd0d1811c 100644 --- a/packages/babel-plugin-transform-es2015-modules-amd/test/fixtures/amd/export-from/expected.js +++ b/packages/babel-plugin-transform-es2015-modules-amd/test/fixtures/amd/export-from/expected.js @@ -1,12 +1,12 @@ -define(["exports", "foo"], function (exports, _foo) { +define(["exports", "foo"], function (_exports, _foo) { "use strict"; - Object.defineProperty(exports, "__esModule", { + Object.defineProperty(_exports, "__esModule", { value: true }); Object.keys(_foo).forEach(function (key) { if (key === "default" || key === "__esModule") return; - Object.defineProperty(exports, key, { + Object.defineProperty(_exports, key, { enumerable: true, get: function () { return _foo[key]; diff --git a/packages/babel-plugin-transform-es2015-modules-amd/test/fixtures/amd/export-named-2/actual.js b/packages/babel-plugin-transform-es2015-modules-amd/test/fixtures/amd/export-named-2/actual.js index fdbc942750..b2bb6f25f1 100644 --- a/packages/babel-plugin-transform-es2015-modules-amd/test/fixtures/amd/export-named-2/actual.js +++ b/packages/babel-plugin-transform-es2015-modules-amd/test/fixtures/amd/export-named-2/actual.js @@ -1 +1,2 @@ +var foo, bar; export {foo, bar}; diff --git a/packages/babel-plugin-transform-es2015-modules-amd/test/fixtures/amd/export-named-2/expected.js b/packages/babel-plugin-transform-es2015-modules-amd/test/fixtures/amd/export-named-2/expected.js index 16fcc8906f..1178bbfb61 100644 --- a/packages/babel-plugin-transform-es2015-modules-amd/test/fixtures/amd/export-named-2/expected.js +++ b/packages/babel-plugin-transform-es2015-modules-amd/test/fixtures/amd/export-named-2/expected.js @@ -1,9 +1,11 @@ -define(["exports"], function (exports) { +define(["exports"], function (_exports) { "use strict"; - Object.defineProperty(exports, "__esModule", { + Object.defineProperty(_exports, "__esModule", { value: true }); - exports.foo = foo; - exports.bar = bar; + _exports.bar = _exports.foo = void 0; + var foo, bar; + _exports.bar = bar; + _exports.foo = foo; }); diff --git a/packages/babel-plugin-transform-es2015-modules-amd/test/fixtures/amd/export-named-3/actual.js b/packages/babel-plugin-transform-es2015-modules-amd/test/fixtures/amd/export-named-3/actual.js index e7820a6f02..0e20b2a7c2 100644 --- a/packages/babel-plugin-transform-es2015-modules-amd/test/fixtures/amd/export-named-3/actual.js +++ b/packages/babel-plugin-transform-es2015-modules-amd/test/fixtures/amd/export-named-3/actual.js @@ -1 +1,2 @@ +var foo; export {foo as bar}; diff --git a/packages/babel-plugin-transform-es2015-modules-amd/test/fixtures/amd/export-named-3/expected.js b/packages/babel-plugin-transform-es2015-modules-amd/test/fixtures/amd/export-named-3/expected.js index 3e1399cb4f..c78f8ad8b8 100644 --- a/packages/babel-plugin-transform-es2015-modules-amd/test/fixtures/amd/export-named-3/expected.js +++ b/packages/babel-plugin-transform-es2015-modules-amd/test/fixtures/amd/export-named-3/expected.js @@ -1,8 +1,10 @@ -define(["exports"], function (exports) { +define(["exports"], function (_exports) { "use strict"; - Object.defineProperty(exports, "__esModule", { + Object.defineProperty(_exports, "__esModule", { value: true }); - exports.bar = foo; + _exports.bar = void 0; + var foo; + _exports.bar = foo; }); diff --git a/packages/babel-plugin-transform-es2015-modules-amd/test/fixtures/amd/export-named-4/actual.js b/packages/babel-plugin-transform-es2015-modules-amd/test/fixtures/amd/export-named-4/actual.js index 5d32a24de0..6cf31d7c35 100644 --- a/packages/babel-plugin-transform-es2015-modules-amd/test/fixtures/amd/export-named-4/actual.js +++ b/packages/babel-plugin-transform-es2015-modules-amd/test/fixtures/amd/export-named-4/actual.js @@ -1 +1,2 @@ +var foo; export {foo as default}; diff --git a/packages/babel-plugin-transform-es2015-modules-amd/test/fixtures/amd/export-named-4/expected.js b/packages/babel-plugin-transform-es2015-modules-amd/test/fixtures/amd/export-named-4/expected.js index dbe6496d73..c1b6fcad35 100644 --- a/packages/babel-plugin-transform-es2015-modules-amd/test/fixtures/amd/export-named-4/expected.js +++ b/packages/babel-plugin-transform-es2015-modules-amd/test/fixtures/amd/export-named-4/expected.js @@ -1,8 +1,10 @@ -define(["exports"], function (exports) { +define(["exports"], function (_exports) { "use strict"; - Object.defineProperty(exports, "__esModule", { + Object.defineProperty(_exports, "__esModule", { value: true }); - exports.default = foo; + _exports.default = void 0; + var foo; + _exports.default = foo; }); diff --git a/packages/babel-plugin-transform-es2015-modules-amd/test/fixtures/amd/export-named-5/actual.js b/packages/babel-plugin-transform-es2015-modules-amd/test/fixtures/amd/export-named-5/actual.js index ff57927839..d8d18266bb 100644 --- a/packages/babel-plugin-transform-es2015-modules-amd/test/fixtures/amd/export-named-5/actual.js +++ b/packages/babel-plugin-transform-es2015-modules-amd/test/fixtures/amd/export-named-5/actual.js @@ -1 +1,2 @@ +var foo, bar; export {foo as default, bar}; diff --git a/packages/babel-plugin-transform-es2015-modules-amd/test/fixtures/amd/export-named-5/expected.js b/packages/babel-plugin-transform-es2015-modules-amd/test/fixtures/amd/export-named-5/expected.js index 566e321816..f647f9a99d 100644 --- a/packages/babel-plugin-transform-es2015-modules-amd/test/fixtures/amd/export-named-5/expected.js +++ b/packages/babel-plugin-transform-es2015-modules-amd/test/fixtures/amd/export-named-5/expected.js @@ -1,9 +1,11 @@ -define(["exports"], function (exports) { +define(["exports"], function (_exports) { "use strict"; - Object.defineProperty(exports, "__esModule", { + Object.defineProperty(_exports, "__esModule", { value: true }); - exports.default = foo; - exports.bar = bar; + _exports.bar = _exports.default = void 0; + var foo, bar; + _exports.bar = bar; + _exports.default = foo; }); diff --git a/packages/babel-plugin-transform-es2015-modules-amd/test/fixtures/amd/export-named/actual.js b/packages/babel-plugin-transform-es2015-modules-amd/test/fixtures/amd/export-named/actual.js index df5f5e609e..8da11199f4 100644 --- a/packages/babel-plugin-transform-es2015-modules-amd/test/fixtures/amd/export-named/actual.js +++ b/packages/babel-plugin-transform-es2015-modules-amd/test/fixtures/amd/export-named/actual.js @@ -1 +1,2 @@ +var foo; export {foo}; diff --git a/packages/babel-plugin-transform-es2015-modules-amd/test/fixtures/amd/export-named/expected.js b/packages/babel-plugin-transform-es2015-modules-amd/test/fixtures/amd/export-named/expected.js index cc0ea4199b..e85a20fb69 100644 --- a/packages/babel-plugin-transform-es2015-modules-amd/test/fixtures/amd/export-named/expected.js +++ b/packages/babel-plugin-transform-es2015-modules-amd/test/fixtures/amd/export-named/expected.js @@ -1,8 +1,10 @@ -define(["exports"], function (exports) { +define(["exports"], function (_exports) { "use strict"; - Object.defineProperty(exports, "__esModule", { + Object.defineProperty(_exports, "__esModule", { value: true }); - exports.foo = foo; + _exports.foo = void 0; + var foo; + _exports.foo = foo; }); diff --git a/packages/babel-plugin-transform-es2015-modules-amd/test/fixtures/amd/export-specifier-default/expected.js b/packages/babel-plugin-transform-es2015-modules-amd/test/fixtures/amd/export-specifier-default/expected.js index 3609610897..1ed9e198c6 100644 --- a/packages/babel-plugin-transform-es2015-modules-amd/test/fixtures/amd/export-specifier-default/expected.js +++ b/packages/babel-plugin-transform-es2015-modules-amd/test/fixtures/amd/export-specifier-default/expected.js @@ -1,9 +1,10 @@ -define(["exports"], function (exports) { +define(["exports"], function (_exports) { "use strict"; - Object.defineProperty(exports, "__esModule", { + Object.defineProperty(_exports, "__esModule", { value: true }); + _exports.default = void 0; var a = 1; - exports.default = a; + _exports.default = a; }); diff --git a/packages/babel-plugin-transform-es2015-modules-amd/test/fixtures/amd/exports-variable/expected.js b/packages/babel-plugin-transform-es2015-modules-amd/test/fixtures/amd/exports-variable/expected.js index 2f4b91be0d..9aebe81d52 100644 --- a/packages/babel-plugin-transform-es2015-modules-amd/test/fixtures/amd/exports-variable/expected.js +++ b/packages/babel-plugin-transform-es2015-modules-amd/test/fixtures/amd/exports-variable/expected.js @@ -1,24 +1,33 @@ -define(["exports"], function (exports) { +define(["exports"], function (_exports) { "use strict"; - Object.defineProperty(exports, "__esModule", { + Object.defineProperty(_exports, "__esModule", { value: true }); - exports.foo8 = foo8; - var foo = exports.foo = 1; - var foo2 = exports.foo2 = 1, - bar = exports.bar = 2; + _exports.foo8 = foo8; + _exports.foo9 = _exports.foo7 = _exports.foo6 = _exports.foo5 = _exports.foo4 = _exports.foo3 = _exports.bar = _exports.foo2 = _exports.foo = void 0; + var foo = 1; + _exports.foo = foo; + var foo2 = 1, + bar = 2; + _exports.bar = bar; + _exports.foo2 = foo2; - var foo3 = exports.foo3 = function () {}; + var foo3 = function () {}; - var foo4 = exports.foo4 = void 0; - let foo5 = exports.foo5 = 2; - let foo6 = exports.foo6 = void 0; - const foo7 = exports.foo7 = 3; + _exports.foo3 = foo3; + var foo4; + _exports.foo4 = foo4; + let foo5 = 2; + _exports.foo5 = foo5; + let foo6; + _exports.foo6 = foo6; + const foo7 = 3; + _exports.foo7 = foo7; function foo8() {} class foo9 {} - exports.foo9 = foo9; + _exports.foo9 = foo9; }); diff --git a/packages/babel-plugin-transform-es2015-modules-amd/test/fixtures/amd/hoist-function-exports/expected.js b/packages/babel-plugin-transform-es2015-modules-amd/test/fixtures/amd/hoist-function-exports/expected.js index f078af154c..8eacaccfbe 100644 --- a/packages/babel-plugin-transform-es2015-modules-amd/test/fixtures/amd/hoist-function-exports/expected.js +++ b/packages/babel-plugin-transform-es2015-modules-amd/test/fixtures/amd/hoist-function-exports/expected.js @@ -1,19 +1,21 @@ -define(["exports", "./evens"], function (exports, _evens) { +define(["exports", "./evens"], function (_exports, _evens) { "use strict"; - Object.defineProperty(exports, "__esModule", { + Object.defineProperty(_exports, "__esModule", { value: true }); - exports.isOdd = void 0; - exports.nextOdd = nextOdd; + _exports.nextOdd = nextOdd; + _exports.isOdd = void 0; function nextOdd(n) { return (0, _evens.isEven)(n) ? n + 1 : n + 2; } - var isOdd = exports.isOdd = function (isEven) { + var isOdd = function (isEven) { return function (n) { return !isEven(n); }; }(_evens.isEven); + + _exports.isOdd = isOdd; }); diff --git a/packages/babel-plugin-transform-es2015-modules-amd/test/fixtures/amd/import-order/expected.js b/packages/babel-plugin-transform-es2015-modules-amd/test/fixtures/amd/import-order/expected.js index 8501bbaa41..ad4067dee3 100644 --- a/packages/babel-plugin-transform-es2015-modules-amd/test/fixtures/amd/import-order/expected.js +++ b/packages/babel-plugin-transform-es2015-modules-amd/test/fixtures/amd/import-order/expected.js @@ -1,5 +1,5 @@ define(["./foo", "./bar", "./derp", "./qux"], function (_foo, _bar, _derp, _qux) { "use strict"; - var _bar2 = babelHelpers.interopRequireDefault(_bar); + _bar = babelHelpers.interopRequireDefault(_bar); }); diff --git a/packages/babel-plugin-transform-es2015-modules-amd/test/fixtures/amd/imports-default/expected.js b/packages/babel-plugin-transform-es2015-modules-amd/test/fixtures/amd/imports-default/expected.js index 48aa60c7b9..67aa7bc21c 100644 --- a/packages/babel-plugin-transform-es2015-modules-amd/test/fixtures/amd/imports-default/expected.js +++ b/packages/babel-plugin-transform-es2015-modules-amd/test/fixtures/amd/imports-default/expected.js @@ -1,8 +1,7 @@ define(["foo"], function (_foo) { "use strict"; - var _foo2 = babelHelpers.interopRequireDefault(_foo); - - _foo2.default; - _foo2.default; + _foo = babelHelpers.interopRequireDefault(_foo); + _foo.default; + _foo.default; }); diff --git a/packages/babel-plugin-transform-es2015-modules-amd/test/fixtures/amd/imports-glob/expected.js b/packages/babel-plugin-transform-es2015-modules-amd/test/fixtures/amd/imports-glob/expected.js index 54accef1cd..c3a94a67fc 100644 --- a/packages/babel-plugin-transform-es2015-modules-amd/test/fixtures/amd/imports-glob/expected.js +++ b/packages/babel-plugin-transform-es2015-modules-amd/test/fixtures/amd/imports-glob/expected.js @@ -1,6 +1,6 @@ -define(["foo"], function (_foo) { +define(["foo"], function (foo) { "use strict"; - var foo = babelHelpers.interopRequireWildcard(_foo); + foo = babelHelpers.interopRequireWildcard(foo); foo; }); diff --git a/packages/babel-plugin-transform-es2015-modules-amd/test/fixtures/amd/imports-mixing/expected.js b/packages/babel-plugin-transform-es2015-modules-amd/test/fixtures/amd/imports-mixing/expected.js index fa3aa7bbe4..65b0f67a5b 100644 --- a/packages/babel-plugin-transform-es2015-modules-amd/test/fixtures/amd/imports-mixing/expected.js +++ b/packages/babel-plugin-transform-es2015-modules-amd/test/fixtures/amd/imports-mixing/expected.js @@ -1,8 +1,7 @@ define(["foo"], function (_foo) { "use strict"; - var _foo2 = babelHelpers.interopRequireDefault(_foo); - - _foo2.default; + _foo = babelHelpers.interopRequireDefault(_foo); + _foo.default; _foo.baz; }); diff --git a/packages/babel-plugin-transform-es2015-modules-amd/test/fixtures/amd/noInterop-export-from/expected.js b/packages/babel-plugin-transform-es2015-modules-amd/test/fixtures/amd/noInterop-export-from/expected.js index 981b0755f1..16393ef8ed 100644 --- a/packages/babel-plugin-transform-es2015-modules-amd/test/fixtures/amd/noInterop-export-from/expected.js +++ b/packages/babel-plugin-transform-es2015-modules-amd/test/fixtures/amd/noInterop-export-from/expected.js @@ -1,10 +1,10 @@ -define(["exports", "foo"], function (exports, _foo) { +define(["exports", "foo"], function (_exports, _foo) { "use strict"; - Object.defineProperty(exports, "__esModule", { + Object.defineProperty(_exports, "__esModule", { value: true }); - Object.defineProperty(exports, "default", { + Object.defineProperty(_exports, "default", { enumerable: true, get: function () { return _foo.default; diff --git a/packages/babel-plugin-transform-es2015-modules-amd/test/fixtures/amd/overview/actual.js b/packages/babel-plugin-transform-es2015-modules-amd/test/fixtures/amd/overview/actual.js index 8f0dfdfe06..04aa23e120 100644 --- a/packages/babel-plugin-transform-es2015-modules-amd/test/fixtures/amd/overview/actual.js +++ b/packages/babel-plugin-transform-es2015-modules-amd/test/fixtures/amd/overview/actual.js @@ -6,6 +6,7 @@ import * as foo2 from "foo"; import {bar} from "foo"; import {foo as bar2} from "foo"; +var test; export {test}; export var test2 = 5; diff --git a/packages/babel-plugin-transform-es2015-modules-amd/test/fixtures/amd/overview/expected.js b/packages/babel-plugin-transform-es2015-modules-amd/test/fixtures/amd/overview/expected.js index 55b3fe7d7e..e659fe0e08 100644 --- a/packages/babel-plugin-transform-es2015-modules-amd/test/fixtures/amd/overview/expected.js +++ b/packages/babel-plugin-transform-es2015-modules-amd/test/fixtures/amd/overview/expected.js @@ -1,16 +1,19 @@ -define(["exports", "foo", "foo-bar", "./directory/foo-bar"], function (exports, _foo) { +define(["exports", "foo", "foo-bar", "./directory/foo-bar"], function (_exports, foo2) { "use strict"; - Object.defineProperty(exports, "__esModule", { + Object.defineProperty(_exports, "__esModule", { value: true }); - exports.test2 = exports.test = void 0; - var foo2 = babelHelpers.interopRequireWildcard(_foo); - exports.test = test; - var test2 = exports.test2 = 5; - exports.default = test; + _exports.default = _exports.test2 = _exports.test = void 0; + foo2 = babelHelpers.interopRequireWildcard(foo2); + var test; + _exports.test = test; + var test2 = 5; + _exports.test2 = test2; + var _default = test; + _exports.default = _default; foo2.default; foo2; - _foo.bar; - _foo.foo; + foo2.bar; + foo2.foo; }); diff --git a/packages/babel-plugin-transform-es2015-modules-amd/test/fixtures/amd/remap/expected.js b/packages/babel-plugin-transform-es2015-modules-amd/test/fixtures/amd/remap/expected.js index b841cb2e28..a86943f369 100644 --- a/packages/babel-plugin-transform-es2015-modules-amd/test/fixtures/amd/remap/expected.js +++ b/packages/babel-plugin-transform-es2015-modules-amd/test/fixtures/amd/remap/expected.js @@ -1,12 +1,14 @@ -define(["exports"], function (exports) { +define(["exports"], function (_exports) { "use strict"; - Object.defineProperty(exports, "__esModule", { + Object.defineProperty(_exports, "__esModule", { value: true }); - var test = exports.test = 2; - exports.test = test = 5; - exports.test = test += 1; + _exports.f = _exports.e = _exports.c = _exports.a = _exports.test = void 0; + var test = 2; + _exports.test = test; + _exports.test = test = 5; + _exports.test = test += 1; (function () { var test = 2; @@ -15,13 +17,12 @@ define(["exports"], function (exports) { })(); var a = 2; - exports.a = a; - exports.a = a = 3; + _exports.a = a; + _exports.a = a = 3; var b = 2; - exports.c = b; - exports.c = b = 3; + _exports.c = b; + _exports.c = b = 3; var d = 3; - exports.e = d; - exports.f = d; - exports.f = exports.e = d = 4; + _exports.f = _exports.e = d; + _exports.f = _exports.e = d = 4; }); diff --git a/packages/babel-plugin-transform-es2015-modules-amd/test/fixtures/regression/4192/expected.js b/packages/babel-plugin-transform-es2015-modules-amd/test/fixtures/regression/4192/expected.js index dd662419eb..71f2bf9239 100644 --- a/packages/babel-plugin-transform-es2015-modules-amd/test/fixtures/regression/4192/expected.js +++ b/packages/babel-plugin-transform-es2015-modules-amd/test/fixtures/regression/4192/expected.js @@ -1,9 +1,10 @@ -define(["exports"], function (exports) { +define(["exports"], function (_exports) { "use strict"; - Object.defineProperty(exports, "__esModule", { + Object.defineProperty(_exports, "__esModule", { value: true }); + _exports["default"] = _default; - exports["default"] = function () {}; + function _default() {} }); diff --git a/packages/babel-preset-es2015/test/fixtures/preset-options/modules-amd-loose/expected.js b/packages/babel-preset-es2015/test/fixtures/preset-options/modules-amd-loose/expected.js index 7dedaa78f4..99f234e54b 100644 --- a/packages/babel-preset-es2015/test/fixtures/preset-options/modules-amd-loose/expected.js +++ b/packages/babel-preset-es2015/test/fixtures/preset-options/modules-amd-loose/expected.js @@ -1,8 +1,8 @@ -define(["exports"], function (exports) { +define(["exports"], function (_exports) { "use strict"; - exports.__esModule = true; - exports.a = a; + _exports.__esModule = true; + _exports.a = a; function a() {} });