Quick fix for default import that also uses names. (#6282)

This commit is contained in:
Logan Smyth 2017-09-21 22:26:42 -07:00 committed by GitHub
parent 9159323b1e
commit 72da5e1d02
5 changed files with 28 additions and 16 deletions

View File

@ -158,8 +158,6 @@ function getModuleMetadata(programPath: NodePath) {
child.get("specifiers").forEach(spec => {
if (spec.isImportDefaultSpecifier()) {
if (data.interop === "none") data.interop = "default";
const localName = spec.get("local").node.name;
data.imports.set(localName, "default");
@ -175,8 +173,6 @@ function getModuleMetadata(programPath: NodePath) {
} else if (spec.isImportNamespaceSpecifier()) {
const localName = spec.get("local").node.name;
data.interop = "namespace";
data.importsNamespace.add(localName);
const reexport = localData.get(localName);
if (reexport) {
@ -192,10 +188,6 @@ function getModuleMetadata(programPath: NodePath) {
data.imports.set(localName, importName);
if (importName === "default" && data.interop === "none") {
data.interop = "default";
}
const reexport = localData.get(localName);
if (reexport) {
localData.delete(localName);
@ -224,10 +216,6 @@ function getModuleMetadata(programPath: NodePath) {
const importName = spec.get("local").node.name;
const exportName = spec.get("exported").node.name;
if (importName === "default" && data.interop === "none") {
data.interop = "default";
}
data.reexports.set(exportName, importName);
if (exportName === "__esModule") {
@ -237,6 +225,30 @@ function getModuleMetadata(programPath: NodePath) {
}
});
for (const metadata of sourceData.values()) {
if (metadata.importsNamespace.size > 0) {
metadata.interop = "namespace";
continue;
}
let needsDefault = false;
let needsNamed = false;
for (const importName of metadata.imports.values()) {
if (importName === "default") needsDefault = true;
else needsNamed = true;
}
for (const importName of metadata.reexports.values()) {
if (importName === "default") needsDefault = true;
else needsNamed = true;
}
if (needsDefault && needsNamed) {
// TODO(logan): Using the namespace interop here is unfortunate. Revisit.
metadata.interop = "namespace";
} else if (needsDefault) {
metadata.interop = "default";
}
}
return {
local: localData,
source: sourceData,

View File

@ -5,7 +5,7 @@ Object.defineProperty(exports, "__esModule", {
});
exports.default = void 0;
var _react = babelHelpers.interopRequireDefault(require("react"));
var _react = babelHelpers.interopRequireWildcard(require("react"));
var RandomComponent =
/*#__PURE__*/

View File

@ -1,7 +1,7 @@
define(["foo"], function (_foo) {
"use strict";
_foo = babelHelpers.interopRequireDefault(_foo);
_foo = babelHelpers.interopRequireWildcard(_foo);
_foo.default;
_foo.baz;
});

View File

@ -1,6 +1,6 @@
"use strict";
var _foo = babelHelpers.interopRequireDefault(require("foo"));
var _foo = babelHelpers.interopRequireWildcard(require("foo"));
_foo.default;
_foo.baz;

View File

@ -13,6 +13,6 @@
})(this, function (_foo) {
"use strict";
_foo = babelHelpers.interopRequireDefault(_foo);
_foo = babelHelpers.interopRequireWildcard(_foo);
_foo.baz;
});