clean up module formatters and fix interopRequireWildcard helper
This commit is contained in:
@@ -12,6 +12,8 @@ function DefaultFormatter(file) {
|
||||
this.file = file;
|
||||
this.ids = object();
|
||||
|
||||
this.hasNonDefaultExports = false;
|
||||
|
||||
this.hasLocalExports = false;
|
||||
this.hasLocalImports = false;
|
||||
|
||||
@@ -27,8 +29,9 @@ function DefaultFormatter(file) {
|
||||
|
||||
DefaultFormatter.prototype.bumpImportOccurences = function (node) {
|
||||
var source = node.source.value;
|
||||
this.localImportOccurences[source] = this.localImportOccurences[source] || 0;
|
||||
this.localImportOccurences[source] += node.specifiers.length;
|
||||
var occurs = this.localImportOccurences;
|
||||
occurs[source] = occurs[source] || 0;
|
||||
occurs[source] += node.specifiers.length;
|
||||
};
|
||||
|
||||
var exportsVisitor = {
|
||||
@@ -36,10 +39,15 @@ var exportsVisitor = {
|
||||
var declar = node && node.declaration;
|
||||
if (t.isExportDeclaration(node)) {
|
||||
formatter.hasLocalImports = true;
|
||||
|
||||
if (declar && t.isStatement(declar)) {
|
||||
_.extend(formatter.localExports, t.getIds(declar, true));
|
||||
}
|
||||
|
||||
if (!node.default) {
|
||||
formatter.hasNonDefaultExports = true;
|
||||
}
|
||||
|
||||
if (node.source) {
|
||||
formatter.bumpImportOccurences(node);
|
||||
}
|
||||
@@ -189,14 +197,14 @@ DefaultFormatter.prototype._hoistExport = function (declar, assign, priority) {
|
||||
return assign;
|
||||
};
|
||||
|
||||
DefaultFormatter.prototype.push = function (node, nodes) {
|
||||
DefaultFormatter.prototype.getExternalReference = function (node, nodes) {
|
||||
var ids = this.ids;
|
||||
var id = node.source.value;
|
||||
|
||||
if (ids[id]) {
|
||||
return ids[id];
|
||||
} else {
|
||||
return this.ids[id] = this._push(node, nodes);
|
||||
return this.ids[id] = this._getExternalReference(node, nodes);
|
||||
}
|
||||
};
|
||||
|
||||
@@ -205,11 +213,11 @@ DefaultFormatter.prototype.exportSpecifier = function (specifier, node, nodes) {
|
||||
if (node.specifiers.length === 1) inherits = node;
|
||||
|
||||
if (node.source) {
|
||||
var ref = this.push(node, nodes);
|
||||
var ref = this.getExternalReference(node, nodes);
|
||||
|
||||
if (t.isExportBatchSpecifier(specifier)) {
|
||||
// export * from "foo";
|
||||
nodes.push(this._exportsWildcard(ref, node));
|
||||
nodes.push(this.buildExportsWildcard(ref, node));
|
||||
} else {
|
||||
var ref;
|
||||
if (t.isSpecifierDefault(specifier) && !this.noInteropRequire) {
|
||||
@@ -220,7 +228,7 @@ DefaultFormatter.prototype.exportSpecifier = function (specifier, node, nodes) {
|
||||
}
|
||||
|
||||
// export { foo } from "test";
|
||||
nodes.push(this._exportsAssign(
|
||||
nodes.push(this.buildExportsAssignment(
|
||||
t.getSpecifierName(specifier),
|
||||
ref,
|
||||
node
|
||||
@@ -228,18 +236,18 @@ DefaultFormatter.prototype.exportSpecifier = function (specifier, node, nodes) {
|
||||
}
|
||||
} else {
|
||||
// export { foo };
|
||||
nodes.push(this._exportsAssign(t.getSpecifierName(specifier), specifier.id, node));
|
||||
nodes.push(this.buildExportsAssignment(t.getSpecifierName(specifier), specifier.id, node));
|
||||
}
|
||||
};
|
||||
|
||||
DefaultFormatter.prototype._exportsWildcard = function (objectIdentifier) {
|
||||
DefaultFormatter.prototype.buildExportsWildcard = function (objectIdentifier) {
|
||||
return t.expressionStatement(t.callExpression(this.file.addHelper("defaults"), [
|
||||
t.identifier("exports"),
|
||||
t.callExpression(this.file.addHelper("interop-require-wildcard"), [objectIdentifier])
|
||||
]));
|
||||
};
|
||||
|
||||
DefaultFormatter.prototype._exportsAssign = function (id, init) {
|
||||
DefaultFormatter.prototype.buildExportsAssignment = function (id, init) {
|
||||
return util.template("exports-assign", {
|
||||
VALUE: init,
|
||||
KEY: id
|
||||
@@ -261,7 +269,7 @@ DefaultFormatter.prototype.exportDeclaration = function (node, nodes) {
|
||||
for (var i = 0; i < declar.declarations.length; i++) {
|
||||
var decl = declar.declarations[i];
|
||||
|
||||
decl.init = this._exportsAssign(decl.id, decl.init, node).expression;
|
||||
decl.init = this.buildExportsAssignment(decl.id, decl.init, node).expression;
|
||||
|
||||
var newDeclar = t.variableDeclaration(declar.kind, [decl]);
|
||||
if (i === 0) t.inherits(newDeclar, declar);
|
||||
@@ -275,7 +283,7 @@ DefaultFormatter.prototype.exportDeclaration = function (node, nodes) {
|
||||
nodes.push(declar);
|
||||
}
|
||||
|
||||
assign = this._exportsAssign(id, ref, node);
|
||||
assign = this.buildExportsAssignment(id, ref, node);
|
||||
|
||||
nodes.push(assign);
|
||||
|
||||
|
||||
@@ -67,17 +67,17 @@ AMDFormatter.prototype.getModuleName = function () {
|
||||
}
|
||||
};
|
||||
|
||||
AMDFormatter.prototype._push = function (node) {
|
||||
AMDFormatter.prototype._getExternalReference = function (node) {
|
||||
return this.file.generateUidIdentifier(node.source.value);
|
||||
};
|
||||
|
||||
AMDFormatter.prototype.importDeclaration = function (node) {
|
||||
this.push(node);
|
||||
this.getExternalReference(node);
|
||||
};
|
||||
|
||||
AMDFormatter.prototype.importSpecifier = function (specifier, node, nodes) {
|
||||
var key = t.getSpecifierName(specifier);
|
||||
var ref = this.push(node);
|
||||
var ref = this.getExternalReference(node);
|
||||
|
||||
if (_.contains(this.file.dynamicImported, node)) {
|
||||
// Prevent unnecessary renaming of dynamic imports.
|
||||
@@ -99,7 +99,7 @@ AMDFormatter.prototype.importSpecifier = function (specifier, node, nodes) {
|
||||
};
|
||||
|
||||
AMDFormatter.prototype.exportDeclaration = function (node) {
|
||||
if (node.default && !this.noInteropRequire) {
|
||||
if (node.default && !this.noInteropRequire && !this.hasNonDefaultExports) {
|
||||
this.passModuleArg = true;
|
||||
}
|
||||
|
||||
|
||||
@@ -8,23 +8,13 @@ var util = require("../../util");
|
||||
var t = require("../../types");
|
||||
var _ = require("lodash");
|
||||
|
||||
var visitor = {
|
||||
enter: function (node, parent, scope, context, state) {
|
||||
if (t.isExportDeclaration(node) && !node.default) {
|
||||
state.hasNonDefaultExports = true;
|
||||
context.stop();
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
function CommonJSFormatter(file) {
|
||||
DefaultFormatter.apply(this, arguments);
|
||||
|
||||
var state = { hasNonDefaultExports: false };
|
||||
traverse(file.ast, visitor, file.scope, state);
|
||||
|
||||
this.insertedModuleDeclaration = false;
|
||||
this.hasNonDefaultExports = state.hasNonDefaultExports;
|
||||
if (this.hasNonDefaultExports) {
|
||||
file.ast.program.body.push(util.template("exports-module-declaration", true));
|
||||
}
|
||||
}
|
||||
|
||||
util.inherits(CommonJSFormatter, DefaultFormatter);
|
||||
@@ -32,7 +22,7 @@ util.inherits(CommonJSFormatter, DefaultFormatter);
|
||||
CommonJSFormatter.prototype.importSpecifier = function (specifier, node, nodes) {
|
||||
var variableName = t.getSpecifierName(specifier);
|
||||
|
||||
var ref = this.push(node, nodes);
|
||||
var ref = this.getExternalReference(node, nodes);
|
||||
|
||||
// import foo from "foo";
|
||||
if (t.isSpecifierDefault(specifier)) {
|
||||
@@ -71,34 +61,25 @@ CommonJSFormatter.prototype.importDeclaration = function (node, nodes) {
|
||||
};
|
||||
|
||||
CommonJSFormatter.prototype.exportDeclaration = function (node, nodes) {
|
||||
if (node.default && !this.noInteropRequire) {
|
||||
if (node.default && !this.noInteropRequire && !this.hasNonDefaultExports) {
|
||||
var declar = node.declaration;
|
||||
var assign;
|
||||
var assign = util.template("exports-default-assign", {
|
||||
VALUE: this._pushStatement(declar, nodes)
|
||||
}, true);
|
||||
|
||||
if (this.hasNonDefaultExports) {
|
||||
if (!this.insertedModuleDeclaration) {
|
||||
nodes.push(util.template("exports-module-declaration", true));
|
||||
this.insertedModuleDeclaration = true;
|
||||
}
|
||||
} else {
|
||||
var assign = util.template("exports-default-assign", {
|
||||
VALUE: this._pushStatement(declar, nodes)
|
||||
}, true);
|
||||
|
||||
if (t.isFunctionDeclaration(declar)) {
|
||||
// we can hoist this assignment to the top of the file
|
||||
assign._blockHoist = 3;
|
||||
}
|
||||
|
||||
nodes.push(assign);
|
||||
return;
|
||||
if (t.isFunctionDeclaration(declar)) {
|
||||
// we can hoist this assignment to the top of the file
|
||||
assign._blockHoist = 3;
|
||||
}
|
||||
|
||||
nodes.push(assign);
|
||||
return;
|
||||
}
|
||||
|
||||
DefaultFormatter.prototype.exportDeclaration.apply(this, arguments);
|
||||
};
|
||||
|
||||
CommonJSFormatter.prototype._push = function (node, nodes) {
|
||||
CommonJSFormatter.prototype._getExternalReference = function (node, nodes) {
|
||||
var source = node.source.value;
|
||||
var call = t.callExpression(t.identifier("require"), [node.source]);
|
||||
|
||||
|
||||
@@ -23,7 +23,7 @@ SystemFormatter.prototype._addImportSource = function (node, exportNode) {
|
||||
return node;
|
||||
};
|
||||
|
||||
SystemFormatter.prototype._exportsWildcard = function (objectIdentifier, node) {
|
||||
SystemFormatter.prototype.buildExportsWildcard = function (objectIdentifier, node) {
|
||||
var leftIdentifier = this.file.generateUidIdentifier("key");
|
||||
var valIdentifier = t.memberExpression(objectIdentifier, leftIdentifier, true);
|
||||
|
||||
@@ -40,7 +40,7 @@ SystemFormatter.prototype._exportsWildcard = function (objectIdentifier, node) {
|
||||
return this._addImportSource(t.forInStatement(left, right, block), node);
|
||||
};
|
||||
|
||||
SystemFormatter.prototype._exportsAssign = function (id, init, node) {
|
||||
SystemFormatter.prototype.buildExportsAssignment = function (id, init, node) {
|
||||
var call = this.buildExportCall(t.literal(id.name), init, true);
|
||||
return this._addImportSource(call, node);
|
||||
};
|
||||
|
||||
@@ -1,3 +1,3 @@
|
||||
(function (obj) {
|
||||
return obj && obj.__esModule ? obj.default : { default: obj };
|
||||
return obj && obj.__esModule ? obj : { default: obj };
|
||||
})
|
||||
|
||||
@@ -2,7 +2,7 @@ define(["exports", "foo"], function (exports, _foo) {
|
||||
"use strict";
|
||||
|
||||
var _interopRequireWildcard = function (obj) {
|
||||
return obj && obj.__esModule ? obj["default"] : {
|
||||
return obj && obj.__esModule ? obj : {
|
||||
"default": obj
|
||||
};
|
||||
};
|
||||
@@ -26,4 +26,5 @@ define(["exports", "foo"], function (exports, _foo) {
|
||||
exports["default"] = _foo.foo;
|
||||
exports["default"] = _foo.foo;
|
||||
exports.bar = _foo.bar;
|
||||
exports.__esModule = true;
|
||||
});
|
||||
|
||||
@@ -8,4 +8,5 @@ define(["exports"], function (exports) {
|
||||
exports["default"] = foo;
|
||||
exports["default"] = foo;
|
||||
exports.bar = bar;
|
||||
exports.__esModule = true;
|
||||
});
|
||||
@@ -14,4 +14,5 @@ define(["exports"], function (exports) {
|
||||
var foo8 = function foo8() {};
|
||||
|
||||
exports.foo8 = foo8;
|
||||
});
|
||||
exports.__esModule = true;
|
||||
});
|
||||
@@ -12,4 +12,5 @@ define(["exports", "./evens"], function (exports, _evens) {
|
||||
return !isEven(n);
|
||||
};
|
||||
})(isEven);
|
||||
exports.__esModule = true;
|
||||
});
|
||||
@@ -1,4 +1,4 @@
|
||||
define(["exports", "module", "foo", "foo-bar", "./directory/foo-bar"], function (exports, module, _foo, _fooBar, _directoryFooBar) {
|
||||
define(["exports", "foo", "foo-bar", "./directory/foo-bar"], function (exports, _foo, _fooBar, _directoryFooBar) {
|
||||
"use strict";
|
||||
|
||||
var _interopRequire = function (obj) {
|
||||
@@ -13,6 +13,6 @@ define(["exports", "module", "foo", "foo-bar", "./directory/foo-bar"], function
|
||||
exports.test = test;
|
||||
var test2 = exports.test2 = 5;
|
||||
|
||||
exports.__esModule = true;
|
||||
exports["default"] = test;
|
||||
});
|
||||
exports.__esModule = true;
|
||||
});
|
||||
@@ -10,4 +10,5 @@ define(["exports"], function (exports) {
|
||||
test = 3;
|
||||
test++;
|
||||
})();
|
||||
exports.__esModule = true;
|
||||
});
|
||||
@@ -1,6 +1,6 @@
|
||||
"use strict";
|
||||
|
||||
exports.Cachier = Cachier;
|
||||
exports.__esModule = true;
|
||||
exports["default"] = new Cachier();
|
||||
function Cachier(databaseName) {}
|
||||
exports.__esModule = true;
|
||||
@@ -1,7 +1,7 @@
|
||||
"use strict";
|
||||
|
||||
var _interopRequireWildcard = function (obj) {
|
||||
return obj && obj.__esModule ? obj["default"] : {
|
||||
return obj && obj.__esModule ? obj : {
|
||||
"default": obj
|
||||
};
|
||||
};
|
||||
@@ -27,3 +27,4 @@ exports.bar = _foo.foo;
|
||||
exports["default"] = _foo.foo;
|
||||
exports["default"] = _foo.foo;
|
||||
exports.bar = _foo.bar;
|
||||
exports.__esModule = true;
|
||||
|
||||
@@ -7,3 +7,4 @@ exports.bar = foo;
|
||||
exports["default"] = foo;
|
||||
exports["default"] = foo;
|
||||
exports.bar = bar;
|
||||
exports.__esModule = true;
|
||||
@@ -13,3 +13,4 @@ function foo7() {}
|
||||
var foo8 = function foo8() {};
|
||||
|
||||
exports.foo8 = foo8;
|
||||
exports.__esModule = true;
|
||||
@@ -10,4 +10,5 @@ var isOdd = exports.isOdd = (function (isEven) {
|
||||
return function (n) {
|
||||
return !isEven(n);
|
||||
};
|
||||
})(isEven);
|
||||
})(isEven);
|
||||
exports.__esModule = true;
|
||||
@@ -1,7 +1,7 @@
|
||||
"use strict";
|
||||
|
||||
var _interopRequireWildcard = function (obj) {
|
||||
return obj && obj.__esModule ? obj["default"] : {
|
||||
return obj && obj.__esModule ? obj : {
|
||||
"default": obj
|
||||
};
|
||||
};
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
"use strict";
|
||||
|
||||
var _interopRequireWildcard = function (obj) {
|
||||
return obj && obj.__esModule ? obj["default"] : {
|
||||
return obj && obj.__esModule ? obj : {
|
||||
"default": obj
|
||||
};
|
||||
};
|
||||
@@ -23,4 +23,5 @@ var foo2 = _interopRequireWildcard(require("foo3"));
|
||||
var bar = require("foo4").bar;
|
||||
var bar2 = require("foo5").foo;
|
||||
exports.test = test;
|
||||
var test = exports.test = 5;
|
||||
var test = exports.test = 5;
|
||||
exports.__esModule = true;
|
||||
|
||||
@@ -9,3 +9,4 @@ test = exports.test += 1;
|
||||
test = 3;
|
||||
test++;
|
||||
})();
|
||||
exports.__esModule = true;
|
||||
@@ -21,6 +21,8 @@ System.register(["foo"], function (_export) {
|
||||
|
||||
_export("bar", _foo.bar);
|
||||
}],
|
||||
execute: function () {}
|
||||
execute: function () {
|
||||
exports.__esModule = true;
|
||||
}
|
||||
};
|
||||
});
|
||||
@@ -18,6 +18,8 @@ System.register([], function (_export) {
|
||||
|
||||
return {
|
||||
setters: [],
|
||||
execute: function () {}
|
||||
execute: function () {
|
||||
exports.__esModule = true;
|
||||
}
|
||||
};
|
||||
});
|
||||
});
|
||||
@@ -17,6 +17,8 @@ System.register([], function (_export) {
|
||||
_export("default", foo);
|
||||
|
||||
_export("bar", bar);
|
||||
|
||||
exports.__esModule = true;
|
||||
}
|
||||
};
|
||||
});
|
||||
@@ -19,6 +19,7 @@ System.register([], function (_export) {
|
||||
_export("foo8", foo8);
|
||||
|
||||
_export("foo3", foo3 = 5);
|
||||
exports.__esModule = true;
|
||||
}
|
||||
};
|
||||
});
|
||||
});
|
||||
@@ -19,6 +19,7 @@ System.register(["./evens"], function (_export) {
|
||||
return !isEven(n);
|
||||
};
|
||||
})(isEven));
|
||||
exports.__esModule = true;
|
||||
}
|
||||
};
|
||||
});
|
||||
@@ -14,6 +14,8 @@ System.register(["foo", "foo-bar", "./directory/foo-bar"], function (_export) {
|
||||
|
||||
test2 = _export("test2", 5);
|
||||
_export("default", test);
|
||||
|
||||
exports.__esModule = true;
|
||||
}
|
||||
};
|
||||
});
|
||||
});
|
||||
@@ -14,6 +14,7 @@ System.register([], function (_export) {
|
||||
test = 3;
|
||||
test++;
|
||||
})();
|
||||
exports.__esModule = true;
|
||||
}
|
||||
};
|
||||
});
|
||||
@@ -8,7 +8,7 @@
|
||||
"use strict";
|
||||
|
||||
var _interopRequireWildcard = function (obj) {
|
||||
return obj && obj.__esModule ? obj["default"] : {
|
||||
return obj && obj.__esModule ? obj : {
|
||||
"default": obj
|
||||
};
|
||||
};
|
||||
@@ -32,4 +32,5 @@
|
||||
exports["default"] = _foo.foo;
|
||||
exports["default"] = _foo.foo;
|
||||
exports.bar = _foo.bar;
|
||||
exports.__esModule = true;
|
||||
});
|
||||
|
||||
@@ -14,4 +14,5 @@
|
||||
exports["default"] = foo;
|
||||
exports["default"] = foo;
|
||||
exports.bar = bar;
|
||||
exports.__esModule = true;
|
||||
});
|
||||
@@ -20,4 +20,5 @@
|
||||
var foo8 = function foo8() {};
|
||||
|
||||
exports.foo8 = foo8;
|
||||
});
|
||||
exports.__esModule = true;
|
||||
});
|
||||
@@ -18,4 +18,5 @@
|
||||
return !isEven(n);
|
||||
};
|
||||
})(isEven);
|
||||
exports.__esModule = true;
|
||||
});
|
||||
@@ -1,10 +1,10 @@
|
||||
(function (factory) {
|
||||
if (typeof define === "function" && define.amd) {
|
||||
define(["exports", "module", "foo", "foo-bar", "./directory/foo-bar"], factory);
|
||||
} else if (typeof exports !== "undefined" && typeof module !== "undefined") {
|
||||
factory(exports, module, require("foo"), require("foo-bar"), require("./directory/foo-bar"));
|
||||
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, module, _foo, _fooBar, _directoryFooBar) {
|
||||
})(function (exports, _foo, _fooBar, _directoryFooBar) {
|
||||
"use strict";
|
||||
|
||||
var _interopRequire = function (obj) {
|
||||
@@ -19,6 +19,6 @@
|
||||
exports.test = test;
|
||||
var test2 = exports.test2 = 5;
|
||||
|
||||
exports.__esModule = true;
|
||||
exports["default"] = test;
|
||||
});
|
||||
exports.__esModule = true;
|
||||
});
|
||||
@@ -16,4 +16,5 @@
|
||||
test = 3;
|
||||
test++;
|
||||
})();
|
||||
exports.__esModule = true;
|
||||
});
|
||||
@@ -26,4 +26,5 @@ var foo = _to5Helpers.interopRequire(_someModule);
|
||||
|
||||
var bar = _to5Helpers.interopRequireWildcard(_someModule);
|
||||
|
||||
var myWord = exports.myWord = _core.Symbol("abc");
|
||||
var myWord = exports.myWord = _core.Symbol("abc");
|
||||
exports.__esModule = true;
|
||||
|
||||
Reference in New Issue
Block a user