From dc45415ee04b20914d2a89468726abe745118fa6 Mon Sep 17 00:00:00 2001 From: Sebastian McKenzie Date: Wed, 11 Mar 2015 00:08:06 +1100 Subject: [PATCH] hoist esModule to the top --- src/babel/transformation/modules/common.js | 2 +- .../es6-modules-amd/exports-from/expected.js | 7 ++++--- .../es6-modules-amd/exports-named/expected.js | 6 +++--- .../es6-modules-amd/exports-variable/expected.js | 7 +++---- .../es6-modules-amd/hoist-function-exports/expected.js | 6 +++--- .../transformation/es6-modules-amd/overview/expected.js | 7 ++++--- .../transformation/es6-modules-amd/remap/expected.js | 6 +++--- .../exports-default-non-function/expected.js | 9 ++++----- .../es6-modules-common/exports-from/expected.js | 9 +++++---- .../es6-modules-common/exports-named/expected.js | 8 ++++---- .../es6-modules-common/exports-variable/expected.js | 9 ++++----- .../hoist-function-exports/expected.js | 8 ++++---- .../transformation/es6-modules-common/loose/expected.js | 4 ++-- .../es6-modules-common/overview/expected.js | 9 +++++---- .../transformation/es6-modules-common/remap/expected.js | 8 ++++---- .../es6-modules-umd/exports-from/expected.js | 7 ++++--- .../es6-modules-umd/exports-named/expected.js | 6 +++--- .../es6-modules-umd/exports-variable/expected.js | 7 +++---- .../es6-modules-umd/hoist-function-exports/expected.js | 6 +++--- .../transformation/es6-modules-umd/overview/expected.js | 7 ++++--- .../transformation/es6-modules-umd/remap/expected.js | 6 +++--- test/fixtures/transformation/runtime/full/expected.js | 8 ++++---- 22 files changed, 77 insertions(+), 75 deletions(-) diff --git a/src/babel/transformation/modules/common.js b/src/babel/transformation/modules/common.js index 6cd4509bb6..edfd68088c 100644 --- a/src/babel/transformation/modules/common.js +++ b/src/babel/transformation/modules/common.js @@ -13,7 +13,7 @@ export default class CommonJSFormatter extends DefaultFormatter { if (!this.noInteropRequireImport && this.hasNonDefaultExports) { var templateName = "exports-module-declaration"; if (this.file.isLoose("es6.modules")) templateName += "-loose"; - file.ast.program.body.push(util.template(templateName, true)); + file.ast.program.body.unshift(util.template(templateName, true)); } }; diff --git a/test/fixtures/transformation/es6-modules-amd/exports-from/expected.js b/test/fixtures/transformation/es6-modules-amd/exports-from/expected.js index 113dd40be3..212badc613 100644 --- a/test/fixtures/transformation/es6-modules-amd/exports-from/expected.js +++ b/test/fixtures/transformation/es6-modules-amd/exports-from/expected.js @@ -5,6 +5,10 @@ define(["exports", "foo"], function (exports, _foo) { var _defaults = function (obj, defaults) { var keys = Object.getOwnPropertyNames(defaults); for (var i = 0; i < keys.length; i++) { var key = keys[i]; var value = Object.getOwnPropertyDescriptor(defaults, key); if (value && value.configurable && obj[key] === undefined) { Object.defineProperty(obj, key, value); } } return obj; }; + Object.defineProperty(exports, "__esModule", { + value: true + }); + _defaults(exports, _interopRequireWildcard(_foo)); exports.foo = _foo.foo; @@ -14,7 +18,4 @@ define(["exports", "foo"], function (exports, _foo) { exports["default"] = _foo.foo; exports["default"] = _foo.foo; exports.bar = _foo.bar; - Object.defineProperty(exports, "__esModule", { - value: true - }); }); \ No newline at end of file diff --git a/test/fixtures/transformation/es6-modules-amd/exports-named/expected.js b/test/fixtures/transformation/es6-modules-amd/exports-named/expected.js index d66e609acb..8313d82781 100644 --- a/test/fixtures/transformation/es6-modules-amd/exports-named/expected.js +++ b/test/fixtures/transformation/es6-modules-amd/exports-named/expected.js @@ -1,6 +1,9 @@ define(["exports"], function (exports) { "use strict"; + Object.defineProperty(exports, "__esModule", { + value: true + }); exports.foo = foo; exports.foo = foo; exports.bar = bar; @@ -8,7 +11,4 @@ define(["exports"], function (exports) { exports["default"] = foo; exports["default"] = foo; exports.bar = bar; - Object.defineProperty(exports, "__esModule", { - value: true - }); }); \ No newline at end of file diff --git a/test/fixtures/transformation/es6-modules-amd/exports-variable/expected.js b/test/fixtures/transformation/es6-modules-amd/exports-variable/expected.js index f53c6adb75..bd6d12e3f6 100644 --- a/test/fixtures/transformation/es6-modules-amd/exports-variable/expected.js +++ b/test/fixtures/transformation/es6-modules-amd/exports-variable/expected.js @@ -4,6 +4,9 @@ define(["exports"], function (exports) { var _classCallCheck = function (instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }; exports.foo7 = foo7; + Object.defineProperty(exports, "__esModule", { + value: true + }); var foo = 1; exports.foo = foo; var foo = 1, @@ -26,8 +29,4 @@ define(["exports"], function (exports) { var foo8 = exports.foo8 = function foo8() { _classCallCheck(this, foo8); }; - - Object.defineProperty(exports, "__esModule", { - value: true - }); }); \ No newline at end of file diff --git a/test/fixtures/transformation/es6-modules-amd/hoist-function-exports/expected.js b/test/fixtures/transformation/es6-modules-amd/hoist-function-exports/expected.js index 7afc49e1bb..7e6ee99d5e 100644 --- a/test/fixtures/transformation/es6-modules-amd/hoist-function-exports/expected.js +++ b/test/fixtures/transformation/es6-modules-amd/hoist-function-exports/expected.js @@ -2,6 +2,9 @@ define(["exports", "./evens"], function (exports, _evens) { "use strict"; exports.nextOdd = nextOdd; + Object.defineProperty(exports, "__esModule", { + value: true + }); var isEven = _evens.isEven; function nextOdd(n) { @@ -14,7 +17,4 @@ define(["exports", "./evens"], function (exports, _evens) { }; })(isEven); exports.isOdd = isOdd; - Object.defineProperty(exports, "__esModule", { - value: true - }); }); \ No newline at end of file diff --git a/test/fixtures/transformation/es6-modules-amd/overview/expected.js b/test/fixtures/transformation/es6-modules-amd/overview/expected.js index 777baa6c76..05844d6d0f 100644 --- a/test/fixtures/transformation/es6-modules-amd/overview/expected.js +++ b/test/fixtures/transformation/es6-modules-amd/overview/expected.js @@ -3,6 +3,10 @@ define(["exports", "foo", "foo-bar", "./directory/foo-bar"], function (exports, var _interopRequire = function (obj) { return obj && obj.__esModule ? obj["default"] : obj; }; + Object.defineProperty(exports, "__esModule", { + value: true + }); + var foo = _interopRequire(_foo); var foo2 = _foo; @@ -13,7 +17,4 @@ define(["exports", "foo", "foo-bar", "./directory/foo-bar"], function (exports, exports.test2 = test2; exports["default"] = test; - Object.defineProperty(exports, "__esModule", { - value: true - }); }); \ No newline at end of file diff --git a/test/fixtures/transformation/es6-modules-amd/remap/expected.js b/test/fixtures/transformation/es6-modules-amd/remap/expected.js index 243a843682..1540d04da3 100644 --- a/test/fixtures/transformation/es6-modules-amd/remap/expected.js +++ b/test/fixtures/transformation/es6-modules-amd/remap/expected.js @@ -1,6 +1,9 @@ define(["exports"], function (exports) { "use strict"; + Object.defineProperty(exports, "__esModule", { + value: true + }); var test = 2; exports.test = test; test = exports.test = 5; @@ -11,7 +14,4 @@ define(["exports"], function (exports) { test = 3; test++; })(); - Object.defineProperty(exports, "__esModule", { - value: true - }); }); \ No newline at end of file diff --git a/test/fixtures/transformation/es6-modules-common/exports-default-non-function/expected.js b/test/fixtures/transformation/es6-modules-common/exports-default-non-function/expected.js index ad21772ee9..8b8e854777 100644 --- a/test/fixtures/transformation/es6-modules-common/exports-default-non-function/expected.js +++ b/test/fixtures/transformation/es6-modules-common/exports-default-non-function/expected.js @@ -1,10 +1,9 @@ "use strict"; exports.Cachier = Cachier; -exports["default"] = new Cachier(); - -function Cachier(databaseName) {} - Object.defineProperty(exports, "__esModule", { value: true -}); \ No newline at end of file +}); +exports["default"] = new Cachier(); + +function Cachier(databaseName) {} \ No newline at end of file diff --git a/test/fixtures/transformation/es6-modules-common/exports-from/expected.js b/test/fixtures/transformation/es6-modules-common/exports-from/expected.js index b3d182d456..9566cf7800 100644 --- a/test/fixtures/transformation/es6-modules-common/exports-from/expected.js +++ b/test/fixtures/transformation/es6-modules-common/exports-from/expected.js @@ -4,6 +4,10 @@ var _interopRequireWildcard = function (obj) { return obj && obj.__esModule ? ob var _defaults = function (obj, defaults) { var keys = Object.getOwnPropertyNames(defaults); for (var i = 0; i < keys.length; i++) { var key = keys[i]; var value = Object.getOwnPropertyDescriptor(defaults, key); if (value && value.configurable && obj[key] === undefined) { Object.defineProperty(obj, key, value); } } return obj; }; +Object.defineProperty(exports, "__esModule", { + value: true +}); + var _foo = require("foo"); _defaults(exports, _interopRequireWildcard(_foo)); @@ -14,7 +18,4 @@ exports.bar = _foo.bar; exports.bar = _foo.foo; exports["default"] = _foo.foo; exports["default"] = _foo.foo; -exports.bar = _foo.bar; -Object.defineProperty(exports, "__esModule", { - value: true -}); \ No newline at end of file +exports.bar = _foo.bar; \ No newline at end of file diff --git a/test/fixtures/transformation/es6-modules-common/exports-named/expected.js b/test/fixtures/transformation/es6-modules-common/exports-named/expected.js index 5930ea82df..aaef8926ae 100644 --- a/test/fixtures/transformation/es6-modules-common/exports-named/expected.js +++ b/test/fixtures/transformation/es6-modules-common/exports-named/expected.js @@ -1,12 +1,12 @@ "use strict"; +Object.defineProperty(exports, "__esModule", { + value: true +}); exports.foo = foo; exports.foo = foo; exports.bar = bar; exports.bar = foo; exports["default"] = foo; exports["default"] = foo; -exports.bar = bar; -Object.defineProperty(exports, "__esModule", { - value: true -}); \ No newline at end of file +exports.bar = bar; \ No newline at end of file diff --git a/test/fixtures/transformation/es6-modules-common/exports-variable/expected.js b/test/fixtures/transformation/es6-modules-common/exports-variable/expected.js index d6976167ba..0b2cbf18e7 100644 --- a/test/fixtures/transformation/es6-modules-common/exports-variable/expected.js +++ b/test/fixtures/transformation/es6-modules-common/exports-variable/expected.js @@ -3,6 +3,9 @@ var _classCallCheck = function (instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }; exports.foo7 = foo7; +Object.defineProperty(exports, "__esModule", { + value: true +}); var foo = 1; exports.foo = foo; var foo = 1, @@ -24,8 +27,4 @@ function foo7() {} var foo8 = exports.foo8 = function foo8() { _classCallCheck(this, foo8); -}; - -Object.defineProperty(exports, "__esModule", { - value: true -}); \ No newline at end of file +}; \ No newline at end of file diff --git a/test/fixtures/transformation/es6-modules-common/hoist-function-exports/expected.js b/test/fixtures/transformation/es6-modules-common/hoist-function-exports/expected.js index e4ae21b6fb..b643bdd4d8 100644 --- a/test/fixtures/transformation/es6-modules-common/hoist-function-exports/expected.js +++ b/test/fixtures/transformation/es6-modules-common/hoist-function-exports/expected.js @@ -1,6 +1,9 @@ "use strict"; exports.nextOdd = nextOdd; +Object.defineProperty(exports, "__esModule", { + value: true +}); var isEven = require("./evens").isEven; @@ -13,7 +16,4 @@ var isOdd = (function (isEven) { return !isEven(n); }; })(isEven); -exports.isOdd = isOdd; -Object.defineProperty(exports, "__esModule", { - value: true -}); \ No newline at end of file +exports.isOdd = isOdd; \ No newline at end of file diff --git a/test/fixtures/transformation/es6-modules-common/loose/expected.js b/test/fixtures/transformation/es6-modules-common/loose/expected.js index 5fa26a81fa..7c5d4df47b 100644 --- a/test/fixtures/transformation/es6-modules-common/loose/expected.js +++ b/test/fixtures/transformation/es6-modules-common/loose/expected.js @@ -1,5 +1,5 @@ "use strict"; +exports.__esModule = true; var foo = 5; -exports.foo = foo; -exports.__esModule = true; \ No newline at end of file +exports.foo = foo; \ No newline at end of file diff --git a/test/fixtures/transformation/es6-modules-common/overview/expected.js b/test/fixtures/transformation/es6-modules-common/overview/expected.js index 3ff558eaec..ff2ef24b3d 100644 --- a/test/fixtures/transformation/es6-modules-common/overview/expected.js +++ b/test/fixtures/transformation/es6-modules-common/overview/expected.js @@ -4,6 +4,10 @@ var _interopRequireWildcard = function (obj) { return obj && obj.__esModule ? ob var _interopRequire = function (obj) { return obj && obj.__esModule ? obj["default"] : obj; }; +Object.defineProperty(exports, "__esModule", { + value: true +}); + require("foo"); require("foo-bar"); @@ -20,7 +24,4 @@ var bar2 = require("foo5").foo; exports.test = test; var test = 5; -exports.test = test; -Object.defineProperty(exports, "__esModule", { - value: true -}); \ No newline at end of file +exports.test = test; \ No newline at end of file diff --git a/test/fixtures/transformation/es6-modules-common/remap/expected.js b/test/fixtures/transformation/es6-modules-common/remap/expected.js index 5562ddce4e..8a7e7c39e0 100644 --- a/test/fixtures/transformation/es6-modules-common/remap/expected.js +++ b/test/fixtures/transformation/es6-modules-common/remap/expected.js @@ -1,5 +1,8 @@ "use strict"; +Object.defineProperty(exports, "__esModule", { + value: true +}); var test = 2; exports.test = test; test = exports.test = 5; @@ -9,7 +12,4 @@ test = exports.test += 1; var test = 2; test = 3; test++; -})(); -Object.defineProperty(exports, "__esModule", { - value: true -}); \ No newline at end of file +})(); \ No newline at end of file diff --git a/test/fixtures/transformation/es6-modules-umd/exports-from/expected.js b/test/fixtures/transformation/es6-modules-umd/exports-from/expected.js index 35cdb100e3..a30d9902fd 100644 --- a/test/fixtures/transformation/es6-modules-umd/exports-from/expected.js +++ b/test/fixtures/transformation/es6-modules-umd/exports-from/expected.js @@ -11,6 +11,10 @@ var _defaults = function (obj, defaults) { var keys = Object.getOwnPropertyNames(defaults); for (var i = 0; i < keys.length; i++) { var key = keys[i]; var value = Object.getOwnPropertyDescriptor(defaults, key); if (value && value.configurable && obj[key] === undefined) { Object.defineProperty(obj, key, value); } } return obj; }; + Object.defineProperty(exports, "__esModule", { + value: true + }); + _defaults(exports, _interopRequireWildcard(_foo)); exports.foo = _foo.foo; @@ -20,7 +24,4 @@ exports["default"] = _foo.foo; exports["default"] = _foo.foo; exports.bar = _foo.bar; - Object.defineProperty(exports, "__esModule", { - value: true - }); }); \ No newline at end of file diff --git a/test/fixtures/transformation/es6-modules-umd/exports-named/expected.js b/test/fixtures/transformation/es6-modules-umd/exports-named/expected.js index 3b4d067ec0..71839235df 100644 --- a/test/fixtures/transformation/es6-modules-umd/exports-named/expected.js +++ b/test/fixtures/transformation/es6-modules-umd/exports-named/expected.js @@ -7,6 +7,9 @@ })(function (exports) { "use strict"; + Object.defineProperty(exports, "__esModule", { + value: true + }); exports.foo = foo; exports.foo = foo; exports.bar = bar; @@ -14,7 +17,4 @@ exports["default"] = foo; exports["default"] = foo; exports.bar = bar; - Object.defineProperty(exports, "__esModule", { - value: true - }); }); \ No newline at end of file diff --git a/test/fixtures/transformation/es6-modules-umd/exports-variable/expected.js b/test/fixtures/transformation/es6-modules-umd/exports-variable/expected.js index f504a01385..49eca85aba 100644 --- a/test/fixtures/transformation/es6-modules-umd/exports-variable/expected.js +++ b/test/fixtures/transformation/es6-modules-umd/exports-variable/expected.js @@ -10,6 +10,9 @@ var _classCallCheck = function (instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }; exports.foo7 = foo7; + Object.defineProperty(exports, "__esModule", { + value: true + }); var foo = 1; exports.foo = foo; var foo = 1, @@ -32,8 +35,4 @@ var foo8 = exports.foo8 = function foo8() { _classCallCheck(this, foo8); }; - - Object.defineProperty(exports, "__esModule", { - value: true - }); }); \ No newline at end of file diff --git a/test/fixtures/transformation/es6-modules-umd/hoist-function-exports/expected.js b/test/fixtures/transformation/es6-modules-umd/hoist-function-exports/expected.js index 162cc9f711..799c042feb 100644 --- a/test/fixtures/transformation/es6-modules-umd/hoist-function-exports/expected.js +++ b/test/fixtures/transformation/es6-modules-umd/hoist-function-exports/expected.js @@ -8,6 +8,9 @@ "use strict"; exports.nextOdd = nextOdd; + Object.defineProperty(exports, "__esModule", { + value: true + }); var isEven = _evens.isEven; function nextOdd(n) { @@ -20,7 +23,4 @@ }; })(isEven); exports.isOdd = isOdd; - Object.defineProperty(exports, "__esModule", { - value: true - }); }); \ No newline at end of file diff --git a/test/fixtures/transformation/es6-modules-umd/overview/expected.js b/test/fixtures/transformation/es6-modules-umd/overview/expected.js index d5c3640494..9d745a80b4 100644 --- a/test/fixtures/transformation/es6-modules-umd/overview/expected.js +++ b/test/fixtures/transformation/es6-modules-umd/overview/expected.js @@ -9,6 +9,10 @@ var _interopRequire = function (obj) { return obj && obj.__esModule ? obj["default"] : obj; }; + Object.defineProperty(exports, "__esModule", { + value: true + }); + var foo = _interopRequire(_foo); var foo2 = _foo; @@ -19,7 +23,4 @@ exports.test2 = test2; exports["default"] = test; - Object.defineProperty(exports, "__esModule", { - value: true - }); }); \ No newline at end of file diff --git a/test/fixtures/transformation/es6-modules-umd/remap/expected.js b/test/fixtures/transformation/es6-modules-umd/remap/expected.js index a8acb3f535..09494c1703 100644 --- a/test/fixtures/transformation/es6-modules-umd/remap/expected.js +++ b/test/fixtures/transformation/es6-modules-umd/remap/expected.js @@ -7,6 +7,9 @@ })(function (exports) { "use strict"; + Object.defineProperty(exports, "__esModule", { + value: true + }); var test = 2; exports.test = test; test = exports.test = 5; @@ -17,7 +20,4 @@ test = 3; test++; })(); - Object.defineProperty(exports, "__esModule", { - value: true - }); }); \ No newline at end of file diff --git a/test/fixtures/transformation/runtime/full/expected.js b/test/fixtures/transformation/runtime/full/expected.js index affed27af7..1fbbe92282 100644 --- a/test/fixtures/transformation/runtime/full/expected.js +++ b/test/fixtures/transformation/runtime/full/expected.js @@ -23,6 +23,9 @@ var giveWord = _regeneratorRuntime.mark(function giveWord() { }); exports.giveWord = giveWord; +Object.defineProperty(exports, "__esModule", { + value: true +}); var _someModule = require("someModule"); @@ -31,7 +34,4 @@ var foo = _interopRequire(_someModule); var bar = _interopRequireWildcard(_someModule); var myWord = _core.Symbol("abc"); -exports.myWord = myWord; -Object.defineProperty(exports, "__esModule", { - value: true -}); \ No newline at end of file +exports.myWord = myWord; \ No newline at end of file