diff --git a/lib/6to5/transformation/modules/_strict.js b/lib/6to5/transformation/modules/_strict.js new file mode 100644 index 0000000000..de55735733 --- /dev/null +++ b/lib/6to5/transformation/modules/_strict.js @@ -0,0 +1,14 @@ +"use strict"; + +var util = require("../../util"); + +module.exports = function (Parent) { + var Constructor = function () { + this.noInteropRequire = 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..a055b94763 --- /dev/null +++ b/lib/6to5/transformation/modules/amd-strict.js @@ -0,0 +1,3 @@ +"use strict"; + +module.exports = require("./_strict")(require("./amd")); diff --git a/lib/6to5/transformation/modules/amd.js b/lib/6to5/transformation/modules/amd.js index 88b78bed69..a4d102f210 100644 --- a/lib/6to5/transformation/modules/amd.js +++ b/lib/6to5/transformation/modules/amd.js @@ -99,7 +99,7 @@ AMDFormatter.prototype.importSpecifier = function (specifier, node, nodes) { }; AMDFormatter.prototype.exportDeclaration = function (node) { - if (node.default && !this.noInteropRequire && !this.hasNonDefaultExports) { + if (this.doDefaultExportInterop(node)) { this.passModuleArg = true; } diff --git a/lib/6to5/transformation/modules/common-strict.js b/lib/6to5/transformation/modules/common-strict.js new file mode 100644 index 0000000000..bb7b5c944c --- /dev/null +++ b/lib/6to5/transformation/modules/common-strict.js @@ -0,0 +1,3 @@ +"use strict"; + +module.exports = require("./_strict")(require("./common")); diff --git a/lib/6to5/transformation/modules/common.js b/lib/6to5/transformation/modules/common.js index 472a171f0b..0e0844ef54 100644 --- a/lib/6to5/transformation/modules/common.js +++ b/lib/6to5/transformation/modules/common.js @@ -60,8 +60,12 @@ CommonJSFormatter.prototype.importDeclaration = function (node, nodes) { }, true)); }; +CommonJSFormatter.prototype.doDefaultExportInterop = function (node) { + return node.default && !this.noInteropRequire && !this.hasNonDefaultExports; +}; + CommonJSFormatter.prototype.exportDeclaration = function (node, nodes) { - if (node.default && !this.noInteropRequire && !this.hasNonDefaultExports) { + if (this.doDefaultExportInterop(node)) { var declar = node.declaration; var assign = util.template("exports-default-assign", { VALUE: this._pushStatement(declar, nodes) diff --git a/lib/6to5/transformation/modules/system.js b/lib/6to5/transformation/modules/system.js index 7d72df577d..b81d69a480 100644 --- a/lib/6to5/transformation/modules/system.js +++ b/lib/6to5/transformation/modules/system.js @@ -10,7 +10,7 @@ var t = require("../../types"); var _ = require("lodash"); function SystemFormatter(file) { - this.exportIdentifier = file.generateUidIdentifier("export"); + this.exportIdentifier = file.generateUidIdentifier("export"); this.noInteropRequire = true; AMDFormatter.apply(this, arguments); diff --git a/lib/6to5/transformation/modules/umd-strict b/lib/6to5/transformation/modules/umd-strict new file mode 100644 index 0000000000..6104513e81 --- /dev/null +++ b/lib/6to5/transformation/modules/umd-strict @@ -0,0 +1,3 @@ +"use strict"; + +module.exports = require("./_strict")(require("./umd")); diff --git a/lib/6to5/transformation/transform.js b/lib/6to5/transformation/transform.js index b85c8485e1..43f45a3308 100644 --- a/lib/6to5/transformation/transform.js +++ b/lib/6to5/transformation/transform.js @@ -86,11 +86,14 @@ transform.deprecatedTransformerMap = { transform.transformers = object(); transform.moduleFormatters = { - common: require("./modules/common"), - system: require("./modules/system"), - ignore: require("./modules/ignore"), - amd: require("./modules/amd"), - umd: require("./modules/umd") + commonStrict: require("./modules/common-strict"), + amdStrict: require("./modules/amd-strict"), + umdStrict: require("./modules/umd-strict"), + common: require("./modules/common"), + system: require("./modules/system"), + ignore: require("./modules/ignore"), + amd: require("./modules/amd"), + umd: require("./modules/umd") }; _.each({