From 611137c7d7df88c47caafb672d37509bea63de62 Mon Sep 17 00:00:00 2001 From: Sebastian McKenzie Date: Thu, 8 Jan 2015 22:44:51 +1100 Subject: [PATCH] add umd strict and amd strict module formatter, also fix bug with wrong amd module constructor - fixes #415 --- lib/6to5/transformation/modules/_strict.js | 12 +++++++ lib/6to5/transformation/modules/amd-strict.js | 1 + lib/6to5/transformation/modules/amd.js | 6 ++-- .../transformation/modules/common-strict.js | 12 +------ lib/6to5/transformation/modules/umd-strict.js | 1 + lib/6to5/transformation/modules/umd.js | 7 ++-- .../transformation/templates/test-exports.js | 1 + .../transformation/templates/test-module.js | 1 + lib/6to5/transformation/transform.js | 2 ++ .../exports-default/actual.js | 8 +++++ .../exports-default/expected.js | 17 ++++++++++ .../exports-default/untitled | 0 .../exports-from/actual.js | 6 ++++ .../exports-from/expected.js | 27 +++++++++++++++ .../exports-named/actual.js | 5 +++ .../exports-named/expected.js | 11 +++++++ .../exports-variable/actual.js | 9 +++++ .../exports-variable/expected.js | 17 ++++++++++ .../hoist-function-exports/actual.js | 11 +++++++ .../hoist-function-exports/expected.js | 15 +++++++++ .../imports-default/actual.js | 2 ++ .../imports-default/expected.js | 11 +++++++ .../imports-glob/actual.js | 1 + .../imports-glob/expected.js | 5 +++ .../imports-mixing/actual.js | 1 + .../imports-mixing/expected.js | 11 +++++++ .../imports-named/actual.js | 4 +++ .../imports-named/expected.js | 10 ++++++ .../es6-modules-amd-strict/imports/actual.js | 3 ++ .../imports/expected.js | 3 ++ .../module-name/actual.js | 1 + .../module-name/expected.js | 5 +++ .../module-name/options.json | 3 ++ .../es6-modules-amd-strict/options.json | 3 ++ .../es6-modules-amd-strict/overview/actual.js | 12 +++++++ .../overview/expected.js | 17 ++++++++++ .../es6-modules-amd-strict/remap/actual.js | 9 +++++ .../es6-modules-amd-strict/remap/expected.js | 13 ++++++++ .../es6-modules-amd/overview/expected.js | 14 +++++++- .../exports-default/actual.js | 8 +++++ .../exports-default/expected.js | 23 +++++++++++++ .../exports-default/untitled | 0 .../exports-from/actual.js | 6 ++++ .../exports-from/expected.js | 33 +++++++++++++++++++ .../exports-named/actual.js | 5 +++ .../exports-named/expected.js | 17 ++++++++++ .../exports-variable/actual.js | 9 +++++ .../exports-variable/expected.js | 23 +++++++++++++ .../hoist-function-exports/actual.js | 11 +++++++ .../hoist-function-exports/expected.js | 21 ++++++++++++ .../imports-default/actual.js | 2 ++ .../imports-default/expected.js | 17 ++++++++++ .../imports-glob/actual.js | 1 + .../imports-glob/expected.js | 11 +++++++ .../imports-mixing/actual.js | 1 + .../imports-mixing/expected.js | 17 ++++++++++ .../imports-named/actual.js | 4 +++ .../imports-named/expected.js | 16 +++++++++ .../es6-modules-umd-strict/imports/actual.js | 3 ++ .../imports/expected.js | 9 +++++ .../module-name/actual.js | 1 + .../module-name/expected.js | 11 +++++++ .../module-name/options.json | 3 ++ .../es6-modules-umd-strict/options.json | 3 ++ .../es6-modules-umd-strict/overview/actual.js | 12 +++++++ .../overview/expected.js | 23 +++++++++++++ .../es6-modules-umd-strict/remap/actual.js | 9 +++++ .../es6-modules-umd-strict/remap/expected.js | 19 +++++++++++ .../es6-modules-umd/overview/expected.js | 14 +++++++- 69 files changed, 609 insertions(+), 20 deletions(-) create mode 100644 lib/6to5/transformation/modules/_strict.js create mode 100644 lib/6to5/transformation/modules/amd-strict.js create mode 100644 lib/6to5/transformation/modules/umd-strict.js create mode 100644 lib/6to5/transformation/templates/test-exports.js create mode 100644 lib/6to5/transformation/templates/test-module.js create mode 100644 test/fixtures/transformation/es6-modules-amd-strict/exports-default/actual.js create mode 100644 test/fixtures/transformation/es6-modules-amd-strict/exports-default/expected.js create mode 100644 test/fixtures/transformation/es6-modules-amd-strict/exports-default/untitled create mode 100644 test/fixtures/transformation/es6-modules-amd-strict/exports-from/actual.js create mode 100644 test/fixtures/transformation/es6-modules-amd-strict/exports-from/expected.js create mode 100644 test/fixtures/transformation/es6-modules-amd-strict/exports-named/actual.js create mode 100644 test/fixtures/transformation/es6-modules-amd-strict/exports-named/expected.js create mode 100644 test/fixtures/transformation/es6-modules-amd-strict/exports-variable/actual.js create mode 100644 test/fixtures/transformation/es6-modules-amd-strict/exports-variable/expected.js create mode 100644 test/fixtures/transformation/es6-modules-amd-strict/hoist-function-exports/actual.js create mode 100644 test/fixtures/transformation/es6-modules-amd-strict/hoist-function-exports/expected.js create mode 100644 test/fixtures/transformation/es6-modules-amd-strict/imports-default/actual.js create mode 100644 test/fixtures/transformation/es6-modules-amd-strict/imports-default/expected.js create mode 100644 test/fixtures/transformation/es6-modules-amd-strict/imports-glob/actual.js create mode 100644 test/fixtures/transformation/es6-modules-amd-strict/imports-glob/expected.js create mode 100644 test/fixtures/transformation/es6-modules-amd-strict/imports-mixing/actual.js create mode 100644 test/fixtures/transformation/es6-modules-amd-strict/imports-mixing/expected.js create mode 100644 test/fixtures/transformation/es6-modules-amd-strict/imports-named/actual.js create mode 100644 test/fixtures/transformation/es6-modules-amd-strict/imports-named/expected.js create mode 100644 test/fixtures/transformation/es6-modules-amd-strict/imports/actual.js create mode 100644 test/fixtures/transformation/es6-modules-amd-strict/imports/expected.js create mode 100644 test/fixtures/transformation/es6-modules-amd-strict/module-name/actual.js create mode 100644 test/fixtures/transformation/es6-modules-amd-strict/module-name/expected.js create mode 100644 test/fixtures/transformation/es6-modules-amd-strict/module-name/options.json create mode 100644 test/fixtures/transformation/es6-modules-amd-strict/options.json create mode 100644 test/fixtures/transformation/es6-modules-amd-strict/overview/actual.js create mode 100644 test/fixtures/transformation/es6-modules-amd-strict/overview/expected.js create mode 100644 test/fixtures/transformation/es6-modules-amd-strict/remap/actual.js create mode 100644 test/fixtures/transformation/es6-modules-amd-strict/remap/expected.js create mode 100644 test/fixtures/transformation/es6-modules-umd-strict/exports-default/actual.js create mode 100644 test/fixtures/transformation/es6-modules-umd-strict/exports-default/expected.js create mode 100644 test/fixtures/transformation/es6-modules-umd-strict/exports-default/untitled create mode 100644 test/fixtures/transformation/es6-modules-umd-strict/exports-from/actual.js create mode 100644 test/fixtures/transformation/es6-modules-umd-strict/exports-from/expected.js create mode 100644 test/fixtures/transformation/es6-modules-umd-strict/exports-named/actual.js create mode 100644 test/fixtures/transformation/es6-modules-umd-strict/exports-named/expected.js create mode 100644 test/fixtures/transformation/es6-modules-umd-strict/exports-variable/actual.js create mode 100644 test/fixtures/transformation/es6-modules-umd-strict/exports-variable/expected.js create mode 100644 test/fixtures/transformation/es6-modules-umd-strict/hoist-function-exports/actual.js create mode 100644 test/fixtures/transformation/es6-modules-umd-strict/hoist-function-exports/expected.js create mode 100644 test/fixtures/transformation/es6-modules-umd-strict/imports-default/actual.js create mode 100644 test/fixtures/transformation/es6-modules-umd-strict/imports-default/expected.js create mode 100644 test/fixtures/transformation/es6-modules-umd-strict/imports-glob/actual.js create mode 100644 test/fixtures/transformation/es6-modules-umd-strict/imports-glob/expected.js create mode 100644 test/fixtures/transformation/es6-modules-umd-strict/imports-mixing/actual.js create mode 100644 test/fixtures/transformation/es6-modules-umd-strict/imports-mixing/expected.js create mode 100644 test/fixtures/transformation/es6-modules-umd-strict/imports-named/actual.js create mode 100644 test/fixtures/transformation/es6-modules-umd-strict/imports-named/expected.js create mode 100644 test/fixtures/transformation/es6-modules-umd-strict/imports/actual.js create mode 100644 test/fixtures/transformation/es6-modules-umd-strict/imports/expected.js create mode 100644 test/fixtures/transformation/es6-modules-umd-strict/module-name/actual.js create mode 100644 test/fixtures/transformation/es6-modules-umd-strict/module-name/expected.js create mode 100644 test/fixtures/transformation/es6-modules-umd-strict/module-name/options.json create mode 100644 test/fixtures/transformation/es6-modules-umd-strict/options.json create mode 100644 test/fixtures/transformation/es6-modules-umd-strict/overview/actual.js create mode 100644 test/fixtures/transformation/es6-modules-umd-strict/overview/expected.js create mode 100644 test/fixtures/transformation/es6-modules-umd-strict/remap/actual.js create mode 100644 test/fixtures/transformation/es6-modules-umd-strict/remap/expected.js diff --git a/lib/6to5/transformation/modules/_strict.js b/lib/6to5/transformation/modules/_strict.js new file mode 100644 index 0000000000..2531d64422 --- /dev/null +++ b/lib/6to5/transformation/modules/_strict.js @@ -0,0 +1,12 @@ +var util = require("../../util"); + +module.exports = function (Parent) { + var Constructor = function () { + this.noInteropExport = true; + Parent.apply(this, arguments); + }; + + util.inherits(Constructor, Parent); + + return Constructor; +}; diff --git a/lib/6to5/transformation/modules/amd-strict.js b/lib/6to5/transformation/modules/amd-strict.js new file mode 100644 index 0000000000..725d67325d --- /dev/null +++ b/lib/6to5/transformation/modules/amd-strict.js @@ -0,0 +1 @@ +module.exports = require("./_strict")(require("./amd")); diff --git a/lib/6to5/transformation/modules/amd.js b/lib/6to5/transformation/modules/amd.js index bfa4bfcf7c..f0aedd7e67 100644 --- a/lib/6to5/transformation/modules/amd.js +++ b/lib/6to5/transformation/modules/amd.js @@ -7,8 +7,8 @@ var t = require("../../types"); var _ = require("lodash"); function AMDFormatter() { - DefaultFormatter.apply(this, arguments); - this.ids = {}; + CommonFormatter.apply(this, arguments); + this.ids = {}; } util.inherits(AMDFormatter, DefaultFormatter); @@ -101,7 +101,7 @@ AMDFormatter.prototype.importSpecifier = function (specifier, node, nodes) { }; AMDFormatter.prototype.exportDeclaration = function (node) { - if (node.default) { + if (node.default && !this.noInteropExport) { this.passModuleArg = true; } diff --git a/lib/6to5/transformation/modules/common-strict.js b/lib/6to5/transformation/modules/common-strict.js index 5b128bbecb..54608375de 100644 --- a/lib/6to5/transformation/modules/common-strict.js +++ b/lib/6to5/transformation/modules/common-strict.js @@ -1,11 +1 @@ -module.exports = CommonJSStrictFormatter; - -var CommonJSFormatter = require("./common"); -var util = require("../../util"); - -function CommonJSStrictFormatter() { - this.noInteropExport = true; - CommonJSFormatter.apply(this, arguments); -} - -util.inherits(CommonJSStrictFormatter, CommonJSFormatter); +module.exports = require("./_strict")(require("./common")); diff --git a/lib/6to5/transformation/modules/umd-strict.js b/lib/6to5/transformation/modules/umd-strict.js new file mode 100644 index 0000000000..c14d6e4076 --- /dev/null +++ b/lib/6to5/transformation/modules/umd-strict.js @@ -0,0 +1 @@ +module.exports = require("./_strict")(require("./umd")); diff --git a/lib/6to5/transformation/modules/umd.js b/lib/6to5/transformation/modules/umd.js index 299a4aee22..32dde9759a 100644 --- a/lib/6to5/transformation/modules/umd.js +++ b/lib/6to5/transformation/modules/umd.js @@ -38,10 +38,9 @@ UMDFormatter.prototype.transform = function (ast) { defineArgs = defineArgs.concat(names); defineArgs = [t.arrayExpression(defineArgs)]; - // typeof exports !== "undefined" && typeof module !== "undefined" - var testExports = t.binaryExpression("!==", t.unaryExpression("typeof", t.identifier("exports"), true), t.literal("undefined")), - testModule = t.binaryExpression("!==", t.unaryExpression("typeof", t.identifier("module"), true), t.literal("undefined")), - commonTests = this.passModuleArg ? t.logicalExpression("&&", testExports, testModule) : testExports; + var testExports = util.template("test-exports"); + var testModule = util.template("test-module"); + var commonTests = this.passModuleArg ? t.logicalExpression("&&", testExports, testModule) : testExports; var commonArgs = [t.identifier("exports")]; if (this.passModuleArg) commonArgs.push(t.identifier("module")); diff --git a/lib/6to5/transformation/templates/test-exports.js b/lib/6to5/transformation/templates/test-exports.js new file mode 100644 index 0000000000..0b26264b2a --- /dev/null +++ b/lib/6to5/transformation/templates/test-exports.js @@ -0,0 +1 @@ +typeof exports !== "undefined" diff --git a/lib/6to5/transformation/templates/test-module.js b/lib/6to5/transformation/templates/test-module.js new file mode 100644 index 0000000000..e21fc01a58 --- /dev/null +++ b/lib/6to5/transformation/templates/test-module.js @@ -0,0 +1 @@ +typeof module !== "undefined" diff --git a/lib/6to5/transformation/transform.js b/lib/6to5/transformation/transform.js index 91dfa44113..5b6104e1b7 100644 --- a/lib/6to5/transformation/transform.js +++ b/lib/6to5/transformation/transform.js @@ -32,6 +32,8 @@ transform.transformers = {}; transform.moduleFormatters = { commonStrict: require("./modules/common-strict"), + umdStrict: require("./modules/umd-strict"), + amdStrict: require("./modules/amd-strict"), common: require("./modules/common"), system: require("./modules/system"), ignore: require("./modules/ignore"), diff --git a/test/fixtures/transformation/es6-modules-amd-strict/exports-default/actual.js b/test/fixtures/transformation/es6-modules-amd-strict/exports-default/actual.js new file mode 100644 index 0000000000..62923e5c15 --- /dev/null +++ b/test/fixtures/transformation/es6-modules-amd-strict/exports-default/actual.js @@ -0,0 +1,8 @@ +export default 42; +export default {}; +export default []; +export default foo; +export default function () {} +export default class {} +export default function foo () {} +export default class Foo {} diff --git a/test/fixtures/transformation/es6-modules-amd-strict/exports-default/expected.js b/test/fixtures/transformation/es6-modules-amd-strict/exports-default/expected.js new file mode 100644 index 0000000000..3ba52475d7 --- /dev/null +++ b/test/fixtures/transformation/es6-modules-amd-strict/exports-default/expected.js @@ -0,0 +1,17 @@ +define(["exports"], function (exports) { + "use strict"; + + exports["default"] = foo; + exports["default"] = 42; + exports["default"] = {}; + exports["default"] = []; + exports["default"] = foo; + exports["default"] = function () {}; + + exports["default"] = function () {}; + + function foo() {} + var Foo = function Foo() {}; + + exports["default"] = Foo; +}); diff --git a/test/fixtures/transformation/es6-modules-amd-strict/exports-default/untitled b/test/fixtures/transformation/es6-modules-amd-strict/exports-default/untitled new file mode 100644 index 0000000000..e69de29bb2 diff --git a/test/fixtures/transformation/es6-modules-amd-strict/exports-from/actual.js b/test/fixtures/transformation/es6-modules-amd-strict/exports-from/actual.js new file mode 100644 index 0000000000..60857f6542 --- /dev/null +++ b/test/fixtures/transformation/es6-modules-amd-strict/exports-from/actual.js @@ -0,0 +1,6 @@ +export * from "foo"; +export {foo} from "foo"; +export {foo, bar} from "foo"; +export {foo as bar} from "foo"; +export {foo as default} from "foo"; +export {foo as default, bar} from "foo"; diff --git a/test/fixtures/transformation/es6-modules-amd-strict/exports-from/expected.js b/test/fixtures/transformation/es6-modules-amd-strict/exports-from/expected.js new file mode 100644 index 0000000000..0ff3782345 --- /dev/null +++ b/test/fixtures/transformation/es6-modules-amd-strict/exports-from/expected.js @@ -0,0 +1,27 @@ +define(["exports", "foo"], function (exports, _foo) { + "use strict"; + + var _interopRequireWildcard = function (obj) { + return obj && obj.constructor === Object ? obj : { + "default": obj + }; + }; + + var _exportsWildcard = function (obj) { + for (var i in obj) { + if (exports[i] !== undefined) { + exports[i] = obj[i]; + } + } + }; + + _exportsWildcard(_interopRequireWildcard(_foo)); + + exports.foo = _foo.foo; + exports.foo = _foo.foo; + exports.bar = _foo.bar; + exports.bar = _foo.foo; + exports["default"] = _foo.foo; + exports["default"] = _foo.foo; + exports.bar = _foo.bar; +}); diff --git a/test/fixtures/transformation/es6-modules-amd-strict/exports-named/actual.js b/test/fixtures/transformation/es6-modules-amd-strict/exports-named/actual.js new file mode 100644 index 0000000000..8515ace759 --- /dev/null +++ b/test/fixtures/transformation/es6-modules-amd-strict/exports-named/actual.js @@ -0,0 +1,5 @@ +export {foo}; +export {foo, bar}; +export {foo as bar}; +export {foo as default}; +export {foo as default, bar}; diff --git a/test/fixtures/transformation/es6-modules-amd-strict/exports-named/expected.js b/test/fixtures/transformation/es6-modules-amd-strict/exports-named/expected.js new file mode 100644 index 0000000000..76c505a7ce --- /dev/null +++ b/test/fixtures/transformation/es6-modules-amd-strict/exports-named/expected.js @@ -0,0 +1,11 @@ +define(["exports"], function (exports) { + "use strict"; + + exports.foo = foo; + exports.foo = foo; + exports.bar = bar; + exports.bar = foo; + exports["default"] = foo; + exports["default"] = foo; + exports.bar = bar; +}); \ No newline at end of file diff --git a/test/fixtures/transformation/es6-modules-amd-strict/exports-variable/actual.js b/test/fixtures/transformation/es6-modules-amd-strict/exports-variable/actual.js new file mode 100644 index 0000000000..c9cd5af09c --- /dev/null +++ b/test/fixtures/transformation/es6-modules-amd-strict/exports-variable/actual.js @@ -0,0 +1,9 @@ +export var foo = 1; +export var foo = 1, bar = 2; +export var foo2 = function () {}; +export var foo3; +export let foo4 = 2; +export let foo5; +export const foo6 = 3; +export function foo7 () {} +export class foo8 {} diff --git a/test/fixtures/transformation/es6-modules-amd-strict/exports-variable/expected.js b/test/fixtures/transformation/es6-modules-amd-strict/exports-variable/expected.js new file mode 100644 index 0000000000..f31d875c89 --- /dev/null +++ b/test/fixtures/transformation/es6-modules-amd-strict/exports-variable/expected.js @@ -0,0 +1,17 @@ +define(["exports"], function (exports) { + "use strict"; + + exports.foo7 = foo7; + var foo = exports.foo = 1; + var foo = exports.foo = 1; + var bar = exports.bar = 2; + var foo2 = exports.foo2 = function () {}; + var foo3 = exports.foo3 = undefined; + var foo4 = exports.foo4 = 2; + var foo5 = exports.foo5 = undefined; + var foo6 = exports.foo6 = 3; + function foo7() {} + var foo8 = function foo8() {}; + + exports.foo8 = foo8; +}); \ No newline at end of file diff --git a/test/fixtures/transformation/es6-modules-amd-strict/hoist-function-exports/actual.js b/test/fixtures/transformation/es6-modules-amd-strict/hoist-function-exports/actual.js new file mode 100644 index 0000000000..3c40b7d1c1 --- /dev/null +++ b/test/fixtures/transformation/es6-modules-amd-strict/hoist-function-exports/actual.js @@ -0,0 +1,11 @@ +import { isEven } from "./evens"; + +export function nextOdd(n) { + return isEven(n) ? n + 1 : n + 2; +} + +export var isOdd = (function (isEven) { + return function (n) { + return !isEven(n); + }; +})(isEven); diff --git a/test/fixtures/transformation/es6-modules-amd-strict/hoist-function-exports/expected.js b/test/fixtures/transformation/es6-modules-amd-strict/hoist-function-exports/expected.js new file mode 100644 index 0000000000..5f8f8e9886 --- /dev/null +++ b/test/fixtures/transformation/es6-modules-amd-strict/hoist-function-exports/expected.js @@ -0,0 +1,15 @@ +define(["exports", "./evens"], function (exports, _evens) { + "use strict"; + + exports.nextOdd = nextOdd; + var isEven = _evens.isEven; + function nextOdd(n) { + return isEven(n) ? n + 1 : n + 2; + } + + var isOdd = exports.isOdd = (function (isEven) { + return function (n) { + return !isEven(n); + }; + })(isEven); +}); \ No newline at end of file diff --git a/test/fixtures/transformation/es6-modules-amd-strict/imports-default/actual.js b/test/fixtures/transformation/es6-modules-amd-strict/imports-default/actual.js new file mode 100644 index 0000000000..7a085cb1e3 --- /dev/null +++ b/test/fixtures/transformation/es6-modules-amd-strict/imports-default/actual.js @@ -0,0 +1,2 @@ +import foo from "foo"; +import {default as foo2} from "foo"; diff --git a/test/fixtures/transformation/es6-modules-amd-strict/imports-default/expected.js b/test/fixtures/transformation/es6-modules-amd-strict/imports-default/expected.js new file mode 100644 index 0000000000..bcc4b497c9 --- /dev/null +++ b/test/fixtures/transformation/es6-modules-amd-strict/imports-default/expected.js @@ -0,0 +1,11 @@ +define(["exports", "foo"], function (exports, _foo) { + "use strict"; + + var _interopRequire = function (obj) { + return obj && (obj["default"] || obj); + }; + + var foo = _interopRequire(_foo); + + var foo2 = _interopRequire(_foo); +}); diff --git a/test/fixtures/transformation/es6-modules-amd-strict/imports-glob/actual.js b/test/fixtures/transformation/es6-modules-amd-strict/imports-glob/actual.js new file mode 100644 index 0000000000..e55c077500 --- /dev/null +++ b/test/fixtures/transformation/es6-modules-amd-strict/imports-glob/actual.js @@ -0,0 +1 @@ +import * as foo from "foo"; diff --git a/test/fixtures/transformation/es6-modules-amd-strict/imports-glob/expected.js b/test/fixtures/transformation/es6-modules-amd-strict/imports-glob/expected.js new file mode 100644 index 0000000000..cc03946787 --- /dev/null +++ b/test/fixtures/transformation/es6-modules-amd-strict/imports-glob/expected.js @@ -0,0 +1,5 @@ +define(["exports", "foo"], function (exports, _foo) { + "use strict"; + + var foo = _foo; +}); \ No newline at end of file diff --git a/test/fixtures/transformation/es6-modules-amd-strict/imports-mixing/actual.js b/test/fixtures/transformation/es6-modules-amd-strict/imports-mixing/actual.js new file mode 100644 index 0000000000..ef78c95b1c --- /dev/null +++ b/test/fixtures/transformation/es6-modules-amd-strict/imports-mixing/actual.js @@ -0,0 +1 @@ +import foo, {baz as xyz} from "foo"; diff --git a/test/fixtures/transformation/es6-modules-amd-strict/imports-mixing/expected.js b/test/fixtures/transformation/es6-modules-amd-strict/imports-mixing/expected.js new file mode 100644 index 0000000000..8acd23bf34 --- /dev/null +++ b/test/fixtures/transformation/es6-modules-amd-strict/imports-mixing/expected.js @@ -0,0 +1,11 @@ +define(["exports", "foo"], function (exports, _foo) { + "use strict"; + + var _interopRequire = function (obj) { + return obj && (obj["default"] || obj); + }; + + var foo = _interopRequire(_foo); + + var xyz = _foo.baz; +}); \ No newline at end of file diff --git a/test/fixtures/transformation/es6-modules-amd-strict/imports-named/actual.js b/test/fixtures/transformation/es6-modules-amd-strict/imports-named/actual.js new file mode 100644 index 0000000000..6d50813b6f --- /dev/null +++ b/test/fixtures/transformation/es6-modules-amd-strict/imports-named/actual.js @@ -0,0 +1,4 @@ +import {bar} from "foo"; +import {bar2, baz} from "foo"; +import {bar as baz2} from "foo"; +import {bar as baz3, xyz} from "foo"; diff --git a/test/fixtures/transformation/es6-modules-amd-strict/imports-named/expected.js b/test/fixtures/transformation/es6-modules-amd-strict/imports-named/expected.js new file mode 100644 index 0000000000..f1cbf26ee3 --- /dev/null +++ b/test/fixtures/transformation/es6-modules-amd-strict/imports-named/expected.js @@ -0,0 +1,10 @@ +define(["exports", "foo"], function (exports, _foo) { + "use strict"; + + var bar = _foo.bar; + var bar2 = _foo.bar2; + var baz = _foo.baz; + var baz2 = _foo.bar; + var baz3 = _foo.bar; + var xyz = _foo.xyz; +}); diff --git a/test/fixtures/transformation/es6-modules-amd-strict/imports/actual.js b/test/fixtures/transformation/es6-modules-amd-strict/imports/actual.js new file mode 100644 index 0000000000..222b6885ac --- /dev/null +++ b/test/fixtures/transformation/es6-modules-amd-strict/imports/actual.js @@ -0,0 +1,3 @@ +import "foo"; +import "foo-bar"; +import "./directory/foo-bar"; diff --git a/test/fixtures/transformation/es6-modules-amd-strict/imports/expected.js b/test/fixtures/transformation/es6-modules-amd-strict/imports/expected.js new file mode 100644 index 0000000000..84e1e6dcc7 --- /dev/null +++ b/test/fixtures/transformation/es6-modules-amd-strict/imports/expected.js @@ -0,0 +1,3 @@ +define(["exports", "foo", "foo-bar", "./directory/foo-bar"], function (exports, _foo, _fooBar, _directoryFooBar) { + "use strict"; +}); \ No newline at end of file diff --git a/test/fixtures/transformation/es6-modules-amd-strict/module-name/actual.js b/test/fixtures/transformation/es6-modules-amd-strict/module-name/actual.js new file mode 100644 index 0000000000..f3b473756e --- /dev/null +++ b/test/fixtures/transformation/es6-modules-amd-strict/module-name/actual.js @@ -0,0 +1 @@ +foobar(); diff --git a/test/fixtures/transformation/es6-modules-amd-strict/module-name/expected.js b/test/fixtures/transformation/es6-modules-amd-strict/module-name/expected.js new file mode 100644 index 0000000000..ee25e68fdf --- /dev/null +++ b/test/fixtures/transformation/es6-modules-amd-strict/module-name/expected.js @@ -0,0 +1,5 @@ +define("es6-modules-amd-strict/module-name/expected", ["exports"], function (exports) { + "use strict"; + + foobar(); +}); diff --git a/test/fixtures/transformation/es6-modules-amd-strict/module-name/options.json b/test/fixtures/transformation/es6-modules-amd-strict/module-name/options.json new file mode 100644 index 0000000000..a2868455b4 --- /dev/null +++ b/test/fixtures/transformation/es6-modules-amd-strict/module-name/options.json @@ -0,0 +1,3 @@ +{ + "amdModuleIds": true +} diff --git a/test/fixtures/transformation/es6-modules-amd-strict/options.json b/test/fixtures/transformation/es6-modules-amd-strict/options.json new file mode 100644 index 0000000000..a1b394048a --- /dev/null +++ b/test/fixtures/transformation/es6-modules-amd-strict/options.json @@ -0,0 +1,3 @@ +{ + "modules": "amdStrict" +} diff --git a/test/fixtures/transformation/es6-modules-amd-strict/overview/actual.js b/test/fixtures/transformation/es6-modules-amd-strict/overview/actual.js new file mode 100644 index 0000000000..1623f8b61e --- /dev/null +++ b/test/fixtures/transformation/es6-modules-amd-strict/overview/actual.js @@ -0,0 +1,12 @@ +import "foo"; +import "foo-bar"; +import "./directory/foo-bar"; +import foo from "foo"; +import * as foo2 from "foo"; +import {bar} from "foo"; +import {foo as bar2} from "foo"; + +export {test}; +export var test2 = 5; + +export default test; diff --git a/test/fixtures/transformation/es6-modules-amd-strict/overview/expected.js b/test/fixtures/transformation/es6-modules-amd-strict/overview/expected.js new file mode 100644 index 0000000000..fdcfb94ff7 --- /dev/null +++ b/test/fixtures/transformation/es6-modules-amd-strict/overview/expected.js @@ -0,0 +1,17 @@ +define(["exports", "foo", "foo-bar", "./directory/foo-bar"], function (exports, _foo, _fooBar, _directoryFooBar) { + "use strict"; + + var _interopRequire = function (obj) { + return obj && (obj["default"] || obj); + }; + + var foo = _interopRequire(_foo); + + var foo2 = _foo; + var bar = _foo.bar; + var bar2 = _foo.foo; + exports.test = test; + var test2 = exports.test2 = 5; + + exports["default"] = test; +}); diff --git a/test/fixtures/transformation/es6-modules-amd-strict/remap/actual.js b/test/fixtures/transformation/es6-modules-amd-strict/remap/actual.js new file mode 100644 index 0000000000..79c234d8ae --- /dev/null +++ b/test/fixtures/transformation/es6-modules-amd-strict/remap/actual.js @@ -0,0 +1,9 @@ +export var test = 2; +test = 5; +test++; + +(function () { + var test = 2; + test = 3; + test++; +})(); diff --git a/test/fixtures/transformation/es6-modules-amd-strict/remap/expected.js b/test/fixtures/transformation/es6-modules-amd-strict/remap/expected.js new file mode 100644 index 0000000000..1edd3204c1 --- /dev/null +++ b/test/fixtures/transformation/es6-modules-amd-strict/remap/expected.js @@ -0,0 +1,13 @@ +define(["exports"], function (exports) { + "use strict"; + + var test = exports.test = 2; + test = exports.test = 5; + test = exports.test += 1; + + (function () { + var test = 2; + test = 3; + test++; + })(); +}); \ 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 96738fe38d..563f241fd3 100644 --- a/test/fixtures/transformation/es6-modules-amd/overview/expected.js +++ b/test/fixtures/transformation/es6-modules-amd/overview/expected.js @@ -1,6 +1,17 @@ define(["exports", "module", "foo", "foo-bar", "./directory/foo-bar"], function (exports, module, _foo, _fooBar, _directoryFooBar) { "use strict"; + var _extends = function (target) { + for (var i = 1; i < arguments.length; i++) { + var source = arguments[i]; + for (var key in source) { + target[key] = source[key]; + } + } + + return target; + }; + var _interopRequire = function (obj) { return obj && (obj["default"] || obj); }; @@ -13,5 +24,6 @@ define(["exports", "module", "foo", "foo-bar", "./directory/foo-bar"], function exports.test = test; var test2 = exports.test2 = 5; - module.exports = test; + exports["default"] = test; + module.exports = _extends(exports["default"], exports); }); diff --git a/test/fixtures/transformation/es6-modules-umd-strict/exports-default/actual.js b/test/fixtures/transformation/es6-modules-umd-strict/exports-default/actual.js new file mode 100644 index 0000000000..62923e5c15 --- /dev/null +++ b/test/fixtures/transformation/es6-modules-umd-strict/exports-default/actual.js @@ -0,0 +1,8 @@ +export default 42; +export default {}; +export default []; +export default foo; +export default function () {} +export default class {} +export default function foo () {} +export default class Foo {} diff --git a/test/fixtures/transformation/es6-modules-umd-strict/exports-default/expected.js b/test/fixtures/transformation/es6-modules-umd-strict/exports-default/expected.js new file mode 100644 index 0000000000..2bcbf30aa6 --- /dev/null +++ b/test/fixtures/transformation/es6-modules-umd-strict/exports-default/expected.js @@ -0,0 +1,23 @@ +(function (factory) { + if (typeof define === "function" && define.amd) { + define(["exports"], factory); + } else if (typeof exports !== "undefined") { + factory(exports); + } +})(function (exports) { + "use strict"; + + exports["default"] = foo; + exports["default"] = 42; + exports["default"] = {}; + exports["default"] = []; + exports["default"] = foo; + exports["default"] = function () {}; + + exports["default"] = function () {}; + + function foo() {} + var Foo = function Foo() {}; + + exports["default"] = Foo; +}); diff --git a/test/fixtures/transformation/es6-modules-umd-strict/exports-default/untitled b/test/fixtures/transformation/es6-modules-umd-strict/exports-default/untitled new file mode 100644 index 0000000000..e69de29bb2 diff --git a/test/fixtures/transformation/es6-modules-umd-strict/exports-from/actual.js b/test/fixtures/transformation/es6-modules-umd-strict/exports-from/actual.js new file mode 100644 index 0000000000..60857f6542 --- /dev/null +++ b/test/fixtures/transformation/es6-modules-umd-strict/exports-from/actual.js @@ -0,0 +1,6 @@ +export * from "foo"; +export {foo} from "foo"; +export {foo, bar} from "foo"; +export {foo as bar} from "foo"; +export {foo as default} from "foo"; +export {foo as default, bar} from "foo"; diff --git a/test/fixtures/transformation/es6-modules-umd-strict/exports-from/expected.js b/test/fixtures/transformation/es6-modules-umd-strict/exports-from/expected.js new file mode 100644 index 0000000000..2f84be3a91 --- /dev/null +++ b/test/fixtures/transformation/es6-modules-umd-strict/exports-from/expected.js @@ -0,0 +1,33 @@ +(function (factory) { + if (typeof define === "function" && define.amd) { + define(["exports", "foo"], factory); + } else if (typeof exports !== "undefined") { + factory(exports, require("foo")); + } +})(function (exports, _foo) { + "use strict"; + + var _interopRequireWildcard = function (obj) { + return obj && obj.constructor === Object ? obj : { + "default": obj + }; + }; + + var _exportsWildcard = function (obj) { + for (var i in obj) { + if (exports[i] !== undefined) { + exports[i] = obj[i]; + } + } + }; + + _exportsWildcard(_interopRequireWildcard(_foo)); + + exports.foo = _foo.foo; + exports.foo = _foo.foo; + exports.bar = _foo.bar; + exports.bar = _foo.foo; + exports["default"] = _foo.foo; + exports["default"] = _foo.foo; + exports.bar = _foo.bar; +}); diff --git a/test/fixtures/transformation/es6-modules-umd-strict/exports-named/actual.js b/test/fixtures/transformation/es6-modules-umd-strict/exports-named/actual.js new file mode 100644 index 0000000000..8515ace759 --- /dev/null +++ b/test/fixtures/transformation/es6-modules-umd-strict/exports-named/actual.js @@ -0,0 +1,5 @@ +export {foo}; +export {foo, bar}; +export {foo as bar}; +export {foo as default}; +export {foo as default, bar}; diff --git a/test/fixtures/transformation/es6-modules-umd-strict/exports-named/expected.js b/test/fixtures/transformation/es6-modules-umd-strict/exports-named/expected.js new file mode 100644 index 0000000000..bb59a54207 --- /dev/null +++ b/test/fixtures/transformation/es6-modules-umd-strict/exports-named/expected.js @@ -0,0 +1,17 @@ +(function (factory) { + if (typeof define === "function" && define.amd) { + define(["exports"], factory); + } else if (typeof exports !== "undefined") { + factory(exports); + } +})(function (exports) { + "use strict"; + + exports.foo = foo; + exports.foo = foo; + exports.bar = bar; + exports.bar = foo; + exports["default"] = foo; + exports["default"] = foo; + exports.bar = bar; +}); \ No newline at end of file diff --git a/test/fixtures/transformation/es6-modules-umd-strict/exports-variable/actual.js b/test/fixtures/transformation/es6-modules-umd-strict/exports-variable/actual.js new file mode 100644 index 0000000000..c9cd5af09c --- /dev/null +++ b/test/fixtures/transformation/es6-modules-umd-strict/exports-variable/actual.js @@ -0,0 +1,9 @@ +export var foo = 1; +export var foo = 1, bar = 2; +export var foo2 = function () {}; +export var foo3; +export let foo4 = 2; +export let foo5; +export const foo6 = 3; +export function foo7 () {} +export class foo8 {} diff --git a/test/fixtures/transformation/es6-modules-umd-strict/exports-variable/expected.js b/test/fixtures/transformation/es6-modules-umd-strict/exports-variable/expected.js new file mode 100644 index 0000000000..f8011621be --- /dev/null +++ b/test/fixtures/transformation/es6-modules-umd-strict/exports-variable/expected.js @@ -0,0 +1,23 @@ +(function (factory) { + if (typeof define === "function" && define.amd) { + define(["exports"], factory); + } else if (typeof exports !== "undefined") { + factory(exports); + } +})(function (exports) { + "use strict"; + + exports.foo7 = foo7; + var foo = exports.foo = 1; + var foo = exports.foo = 1; + var bar = exports.bar = 2; + var foo2 = exports.foo2 = function () {}; + var foo3 = exports.foo3 = undefined; + var foo4 = exports.foo4 = 2; + var foo5 = exports.foo5 = undefined; + var foo6 = exports.foo6 = 3; + function foo7() {} + var foo8 = function foo8() {}; + + exports.foo8 = foo8; +}); \ No newline at end of file diff --git a/test/fixtures/transformation/es6-modules-umd-strict/hoist-function-exports/actual.js b/test/fixtures/transformation/es6-modules-umd-strict/hoist-function-exports/actual.js new file mode 100644 index 0000000000..3c40b7d1c1 --- /dev/null +++ b/test/fixtures/transformation/es6-modules-umd-strict/hoist-function-exports/actual.js @@ -0,0 +1,11 @@ +import { isEven } from "./evens"; + +export function nextOdd(n) { + return isEven(n) ? n + 1 : n + 2; +} + +export var isOdd = (function (isEven) { + return function (n) { + return !isEven(n); + }; +})(isEven); diff --git a/test/fixtures/transformation/es6-modules-umd-strict/hoist-function-exports/expected.js b/test/fixtures/transformation/es6-modules-umd-strict/hoist-function-exports/expected.js new file mode 100644 index 0000000000..e2ec28a22c --- /dev/null +++ b/test/fixtures/transformation/es6-modules-umd-strict/hoist-function-exports/expected.js @@ -0,0 +1,21 @@ +(function (factory) { + if (typeof define === "function" && define.amd) { + define(["exports", "./evens"], factory); + } else if (typeof exports !== "undefined") { + factory(exports, require("./evens")); + } +})(function (exports, _evens) { + "use strict"; + + exports.nextOdd = nextOdd; + var isEven = _evens.isEven; + function nextOdd(n) { + return isEven(n) ? n + 1 : n + 2; + } + + var isOdd = exports.isOdd = (function (isEven) { + return function (n) { + return !isEven(n); + }; + })(isEven); +}); \ No newline at end of file diff --git a/test/fixtures/transformation/es6-modules-umd-strict/imports-default/actual.js b/test/fixtures/transformation/es6-modules-umd-strict/imports-default/actual.js new file mode 100644 index 0000000000..7a085cb1e3 --- /dev/null +++ b/test/fixtures/transformation/es6-modules-umd-strict/imports-default/actual.js @@ -0,0 +1,2 @@ +import foo from "foo"; +import {default as foo2} from "foo"; diff --git a/test/fixtures/transformation/es6-modules-umd-strict/imports-default/expected.js b/test/fixtures/transformation/es6-modules-umd-strict/imports-default/expected.js new file mode 100644 index 0000000000..30aa739b11 --- /dev/null +++ b/test/fixtures/transformation/es6-modules-umd-strict/imports-default/expected.js @@ -0,0 +1,17 @@ +(function (factory) { + if (typeof define === "function" && define.amd) { + define(["exports", "foo"], factory); + } else if (typeof exports !== "undefined") { + factory(exports, require("foo")); + } +})(function (exports, _foo) { + "use strict"; + + var _interopRequire = function (obj) { + return obj && (obj["default"] || obj); + }; + + var foo = _interopRequire(_foo); + + var foo2 = _interopRequire(_foo); +}); diff --git a/test/fixtures/transformation/es6-modules-umd-strict/imports-glob/actual.js b/test/fixtures/transformation/es6-modules-umd-strict/imports-glob/actual.js new file mode 100644 index 0000000000..e55c077500 --- /dev/null +++ b/test/fixtures/transformation/es6-modules-umd-strict/imports-glob/actual.js @@ -0,0 +1 @@ +import * as foo from "foo"; diff --git a/test/fixtures/transformation/es6-modules-umd-strict/imports-glob/expected.js b/test/fixtures/transformation/es6-modules-umd-strict/imports-glob/expected.js new file mode 100644 index 0000000000..45a763f2f2 --- /dev/null +++ b/test/fixtures/transformation/es6-modules-umd-strict/imports-glob/expected.js @@ -0,0 +1,11 @@ +(function (factory) { + if (typeof define === "function" && define.amd) { + define(["exports", "foo"], factory); + } else if (typeof exports !== "undefined") { + factory(exports, require("foo")); + } +})(function (exports, _foo) { + "use strict"; + + var foo = _foo; +}); \ No newline at end of file diff --git a/test/fixtures/transformation/es6-modules-umd-strict/imports-mixing/actual.js b/test/fixtures/transformation/es6-modules-umd-strict/imports-mixing/actual.js new file mode 100644 index 0000000000..ef78c95b1c --- /dev/null +++ b/test/fixtures/transformation/es6-modules-umd-strict/imports-mixing/actual.js @@ -0,0 +1 @@ +import foo, {baz as xyz} from "foo"; diff --git a/test/fixtures/transformation/es6-modules-umd-strict/imports-mixing/expected.js b/test/fixtures/transformation/es6-modules-umd-strict/imports-mixing/expected.js new file mode 100644 index 0000000000..f677ceee86 --- /dev/null +++ b/test/fixtures/transformation/es6-modules-umd-strict/imports-mixing/expected.js @@ -0,0 +1,17 @@ +(function (factory) { + if (typeof define === "function" && define.amd) { + define(["exports", "foo"], factory); + } else if (typeof exports !== "undefined") { + factory(exports, require("foo")); + } +})(function (exports, _foo) { + "use strict"; + + var _interopRequire = function (obj) { + return obj && (obj["default"] || obj); + }; + + var foo = _interopRequire(_foo); + + var xyz = _foo.baz; +}); \ No newline at end of file diff --git a/test/fixtures/transformation/es6-modules-umd-strict/imports-named/actual.js b/test/fixtures/transformation/es6-modules-umd-strict/imports-named/actual.js new file mode 100644 index 0000000000..6d50813b6f --- /dev/null +++ b/test/fixtures/transformation/es6-modules-umd-strict/imports-named/actual.js @@ -0,0 +1,4 @@ +import {bar} from "foo"; +import {bar2, baz} from "foo"; +import {bar as baz2} from "foo"; +import {bar as baz3, xyz} from "foo"; diff --git a/test/fixtures/transformation/es6-modules-umd-strict/imports-named/expected.js b/test/fixtures/transformation/es6-modules-umd-strict/imports-named/expected.js new file mode 100644 index 0000000000..d4c162c172 --- /dev/null +++ b/test/fixtures/transformation/es6-modules-umd-strict/imports-named/expected.js @@ -0,0 +1,16 @@ +(function (factory) { + if (typeof define === "function" && define.amd) { + define(["exports", "foo"], factory); + } else if (typeof exports !== "undefined") { + factory(exports, require("foo")); + } +})(function (exports, _foo) { + "use strict"; + + var bar = _foo.bar; + var bar2 = _foo.bar2; + var baz = _foo.baz; + var baz2 = _foo.bar; + var baz3 = _foo.bar; + var xyz = _foo.xyz; +}); diff --git a/test/fixtures/transformation/es6-modules-umd-strict/imports/actual.js b/test/fixtures/transformation/es6-modules-umd-strict/imports/actual.js new file mode 100644 index 0000000000..222b6885ac --- /dev/null +++ b/test/fixtures/transformation/es6-modules-umd-strict/imports/actual.js @@ -0,0 +1,3 @@ +import "foo"; +import "foo-bar"; +import "./directory/foo-bar"; diff --git a/test/fixtures/transformation/es6-modules-umd-strict/imports/expected.js b/test/fixtures/transformation/es6-modules-umd-strict/imports/expected.js new file mode 100644 index 0000000000..2e39b15cd2 --- /dev/null +++ b/test/fixtures/transformation/es6-modules-umd-strict/imports/expected.js @@ -0,0 +1,9 @@ +(function (factory) { + if (typeof define === "function" && define.amd) { + define(["exports", "foo", "foo-bar", "./directory/foo-bar"], factory); + } else if (typeof exports !== "undefined") { + factory(exports, require("foo"), require("foo-bar"), require("./directory/foo-bar")); + } +})(function (exports, _foo, _fooBar, _directoryFooBar) { + "use strict"; +}); \ No newline at end of file diff --git a/test/fixtures/transformation/es6-modules-umd-strict/module-name/actual.js b/test/fixtures/transformation/es6-modules-umd-strict/module-name/actual.js new file mode 100644 index 0000000000..f3b473756e --- /dev/null +++ b/test/fixtures/transformation/es6-modules-umd-strict/module-name/actual.js @@ -0,0 +1 @@ +foobar(); diff --git a/test/fixtures/transformation/es6-modules-umd-strict/module-name/expected.js b/test/fixtures/transformation/es6-modules-umd-strict/module-name/expected.js new file mode 100644 index 0000000000..b7468340e9 --- /dev/null +++ b/test/fixtures/transformation/es6-modules-umd-strict/module-name/expected.js @@ -0,0 +1,11 @@ +(function (factory) { + if (typeof define === "function" && define.amd) { + define("es6-modules-umd-strict/module-name/expected", ["exports"], factory); + } else if (typeof exports !== "undefined") { + factory(exports); + } +})(function (exports) { + "use strict"; + + foobar(); +}); diff --git a/test/fixtures/transformation/es6-modules-umd-strict/module-name/options.json b/test/fixtures/transformation/es6-modules-umd-strict/module-name/options.json new file mode 100644 index 0000000000..a2868455b4 --- /dev/null +++ b/test/fixtures/transformation/es6-modules-umd-strict/module-name/options.json @@ -0,0 +1,3 @@ +{ + "amdModuleIds": true +} diff --git a/test/fixtures/transformation/es6-modules-umd-strict/options.json b/test/fixtures/transformation/es6-modules-umd-strict/options.json new file mode 100644 index 0000000000..faa5fe6355 --- /dev/null +++ b/test/fixtures/transformation/es6-modules-umd-strict/options.json @@ -0,0 +1,3 @@ +{ + "modules": "umdStrict" +} diff --git a/test/fixtures/transformation/es6-modules-umd-strict/overview/actual.js b/test/fixtures/transformation/es6-modules-umd-strict/overview/actual.js new file mode 100644 index 0000000000..1623f8b61e --- /dev/null +++ b/test/fixtures/transformation/es6-modules-umd-strict/overview/actual.js @@ -0,0 +1,12 @@ +import "foo"; +import "foo-bar"; +import "./directory/foo-bar"; +import foo from "foo"; +import * as foo2 from "foo"; +import {bar} from "foo"; +import {foo as bar2} from "foo"; + +export {test}; +export var test2 = 5; + +export default test; diff --git a/test/fixtures/transformation/es6-modules-umd-strict/overview/expected.js b/test/fixtures/transformation/es6-modules-umd-strict/overview/expected.js new file mode 100644 index 0000000000..8bc9500a22 --- /dev/null +++ b/test/fixtures/transformation/es6-modules-umd-strict/overview/expected.js @@ -0,0 +1,23 @@ +(function (factory) { + if (typeof define === "function" && define.amd) { + define(["exports", "foo", "foo-bar", "./directory/foo-bar"], factory); + } else if (typeof exports !== "undefined") { + factory(exports, require("foo"), require("foo-bar"), require("./directory/foo-bar")); + } +})(function (exports, _foo, _fooBar, _directoryFooBar) { + "use strict"; + + var _interopRequire = function (obj) { + return obj && (obj["default"] || obj); + }; + + var foo = _interopRequire(_foo); + + var foo2 = _foo; + var bar = _foo.bar; + var bar2 = _foo.foo; + exports.test = test; + var test2 = exports.test2 = 5; + + exports["default"] = test; +}); diff --git a/test/fixtures/transformation/es6-modules-umd-strict/remap/actual.js b/test/fixtures/transformation/es6-modules-umd-strict/remap/actual.js new file mode 100644 index 0000000000..79c234d8ae --- /dev/null +++ b/test/fixtures/transformation/es6-modules-umd-strict/remap/actual.js @@ -0,0 +1,9 @@ +export var test = 2; +test = 5; +test++; + +(function () { + var test = 2; + test = 3; + test++; +})(); diff --git a/test/fixtures/transformation/es6-modules-umd-strict/remap/expected.js b/test/fixtures/transformation/es6-modules-umd-strict/remap/expected.js new file mode 100644 index 0000000000..99e5928e2d --- /dev/null +++ b/test/fixtures/transformation/es6-modules-umd-strict/remap/expected.js @@ -0,0 +1,19 @@ +(function (factory) { + if (typeof define === "function" && define.amd) { + define(["exports"], factory); + } else if (typeof exports !== "undefined") { + factory(exports); + } +})(function (exports) { + "use strict"; + + var test = exports.test = 2; + test = exports.test = 5; + test = exports.test += 1; + + (function () { + var test = 2; + test = 3; + test++; + })(); +}); \ 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 2fa6264215..adbd4539cc 100644 --- a/test/fixtures/transformation/es6-modules-umd/overview/expected.js +++ b/test/fixtures/transformation/es6-modules-umd/overview/expected.js @@ -7,6 +7,17 @@ })(function (exports, module, _foo, _fooBar, _directoryFooBar) { "use strict"; + var _extends = function (target) { + for (var i = 1; i < arguments.length; i++) { + var source = arguments[i]; + for (var key in source) { + target[key] = source[key]; + } + } + + return target; + }; + var _interopRequire = function (obj) { return obj && (obj["default"] || obj); }; @@ -19,5 +30,6 @@ exports.test = test; var test2 = exports.test2 = 5; - module.exports = test; + exports["default"] = test; + module.exports = _extends(exports["default"], exports); });