rename exportsType named to default

exportsType default doesn't include named exports in strict esm
This commit is contained in:
Tobias Koppers 2019-11-20 10:06:16 +01:00
parent ce70102a8f
commit 5a01ed8121
9 changed files with 31 additions and 27 deletions

View File

@ -485,8 +485,8 @@ class ContextModule extends Module {
} else if (exportsType === "namespace") {
map[id] = 9;
hasNamespace = true;
} else if (exportsType === "named") {
map[id] = 3;
} else if (exportsType === "default") {
map[id] = this.options.namespaceObject === "strict" ? 1 : 3;
hasNamed = true;
}
return map;
@ -498,7 +498,7 @@ class ContextModule extends Module {
return 9;
}
if (!hasNamespace && !hasNonHarmony && hasNamed) {
return 3;
return this.options.namespaceObject === "strict" ? 1 : 3;
}
if (!hasNamespace && !hasNonHarmony && !hasNamed) {
return 9;

View File

@ -65,7 +65,7 @@ const makeSerializable = require("./util/makeSerializable");
* @property {string=} exportsArgument
* @property {boolean=} strict
* @property {string=} moduleConcatenationBailout
* @property {("named" | "namespace")=} exportsType
* @property {("default" | "namespace")=} exportsType
* @property {boolean=} strictHarmonyModule
* @property {boolean=} async
*/

View File

@ -957,7 +957,7 @@ class ModuleGraph {
* @returns {void}
*/
finishModule(module) {
if (module.buildMeta.exportsType === "named") {
if (module.buildMeta.exportsType === "default") {
this.getExportsInfo(module).setRedirectToDefaultObject();
}
}

View File

@ -329,12 +329,12 @@ class RuntimeTemplate {
runtimeRequirements
});
return rawModule;
} else if (exportsType === "named") {
runtimeRequirements.add(RuntimeGlobals.createFakeNamespaceObject);
return `${RuntimeGlobals.createFakeNamespaceObject}(${moduleId}, 3)`;
} else if (strict) {
runtimeRequirements.add(RuntimeGlobals.createFakeNamespaceObject);
return `${RuntimeGlobals.createFakeNamespaceObject}(${moduleId}, 1)`;
} else if (exportsType === "default") {
runtimeRequirements.add(RuntimeGlobals.createFakeNamespaceObject);
return `${RuntimeGlobals.createFakeNamespaceObject}(${moduleId}, 3)`;
} else {
runtimeRequirements.add(RuntimeGlobals.createFakeNamespaceObject);
return `${RuntimeGlobals.createFakeNamespaceObject}(${moduleId}, 7)`;
@ -435,13 +435,6 @@ class RuntimeTemplate {
runtimeRequirements.add(RuntimeGlobals.require);
getModuleFunction = `__webpack_require__.bind(null, ${comment}${idExpr})`;
}
} else if (exportsType === "named") {
runtimeRequirements.add(RuntimeGlobals.createFakeNamespaceObject);
if (header) {
getModuleFunction = `function() { ${header}return ${RuntimeGlobals.createFakeNamespaceObject}(${moduleIdExpr}, 3); }`;
} else {
getModuleFunction = `${RuntimeGlobals.createFakeNamespaceObject}.bind(__webpack_require__, ${comment}${idExpr}, 3)`;
}
} else if (strict) {
runtimeRequirements.add(RuntimeGlobals.createFakeNamespaceObject);
if (header) {
@ -449,6 +442,13 @@ class RuntimeTemplate {
} else {
getModuleFunction = `${RuntimeGlobals.createFakeNamespaceObject}.bind(__webpack_require__, ${comment}${idExpr}, 1)`;
}
} else if (exportsType === "default") {
runtimeRequirements.add(RuntimeGlobals.createFakeNamespaceObject);
if (header) {
getModuleFunction = `function() { ${header}return ${RuntimeGlobals.createFakeNamespaceObject}(${moduleIdExpr}, 3); }`;
} else {
getModuleFunction = `${RuntimeGlobals.createFakeNamespaceObject}.bind(__webpack_require__, ${comment}${idExpr}, 3)`;
}
} else {
runtimeRequirements.add(RuntimeGlobals.createFakeNamespaceObject);
if (header) {
@ -595,7 +595,7 @@ class RuntimeTemplate {
}
}
if (exportsType === "named") {
if (exportsType === "default") {
if (exportName.length === 0) {
runtimeRequirements.add(RuntimeGlobals.createFakeNamespaceObject);
initFragments.push(
@ -606,7 +606,11 @@ class RuntimeTemplate {
`${importVar}_namespace_cache`
)
);
return `/*#__PURE__*/ (${importVar}_namespace_cache || (${importVar}_namespace_cache = ${RuntimeGlobals.createFakeNamespaceObject}(${importVar}, 2)))`;
return `/*#__PURE__*/ (${importVar}_namespace_cache || (${importVar}_namespace_cache = ${
RuntimeGlobals.createFakeNamespaceObject
}(${importVar}, ${
originModule.buildMeta.strictHarmonyModule ? 0 : 2
})))`;
}
}

View File

@ -196,7 +196,7 @@ class HarmonyExportImportedSpecifierDependency extends HarmonyImportDependency {
importedModule.buildMeta && !importedModule.buildMeta.exportsType;
const isNamedModule =
importedModule.buildMeta &&
importedModule.buildMeta.exportsType === "named";
importedModule.buildMeta.exportsType === "default";
// Special handling for reexporting the default export
// from non-harmony modules
@ -225,7 +225,7 @@ class HarmonyExportImportedSpecifierDependency extends HarmonyImportDependency {
if (ids.length > 0) {
// export { name as name }
if (isNotAHarmonyModule && strictHarmonyModule) {
if ((isNotAHarmonyModule || isNamedModule) && strictHarmonyModule) {
mode = new ExportMode("reexport-non-harmony-undefined");
mode.name = name;
} else {
@ -242,7 +242,7 @@ class HarmonyExportImportedSpecifierDependency extends HarmonyImportDependency {
mode = new ExportMode("reexport-fake-named-namespace-object");
mode.name = name;
mode.partialNamespaceExportInfo = exportInfo;
mode.fakeType = 2;
mode.fakeType = strictHarmonyModule ? 0 : 2;
} else {
mode = new ExportMode("reexport-namespace-object");
mode.name = name;

View File

@ -115,7 +115,7 @@ class HarmonyImportDependency extends ModuleDependency {
];
}
return;
} else if (exportsType === "named") {
} else if (exportsType === "default") {
if (ids.length > 0 && ids[0] !== "default") {
// For these modules only the default export is supported
return [

View File

@ -19,7 +19,7 @@ class JsonParser {
parse(source, state) {
const data = parseJson(source[0] === "\ufeff" ? source.slice(1) : source);
state.module.buildInfo.jsonData = data;
state.module.buildMeta.exportsType = "named";
state.module.buildMeta.exportsType = "default";
state.module.addDependency(
new JsonExportsDependency(JsonExportsDependency.getExportsFromData(data))
);

View File

@ -234,7 +234,7 @@ const getExternalImport = (
let exprStart;
if (exportName.length === 0) {
switch (importedModule.buildMeta.exportsType) {
case "named":
case "default":
info.interopNamespaceObjectUsed = true;
exprStart = info.interopNamespaceObjectName;
break;
@ -253,7 +253,7 @@ const getExternalImport = (
}
} else {
switch (importedModule.buildMeta.exportsType) {
case "named":
case "default":
case "namespace":
break;
default:
@ -977,7 +977,7 @@ class ConcatenatedModule extends Module {
allUsedNames.add(externalName);
info.name = externalName;
if (
info.module.buildMeta.exportsType === "named" ||
info.module.buildMeta.exportsType === "default" ||
!info.module.buildMeta.exportsType
) {
const externalNameInterop = this.findNewName(
@ -1085,7 +1085,7 @@ class ConcatenatedModule extends Module {
)});\n`
);
if (info.interopNamespaceObjectUsed) {
if (info.module.buildMeta.exportsType === "named") {
if (info.module.buildMeta.exportsType === "default") {
runtimeRequirements.add(RuntimeGlobals.createFakeNamespaceObject);
result.add(
`var ${info.interopNamespaceObjectName} = /*#__PURE__*/${RuntimeGlobals.createFakeNamespaceObject}(${info.name}, 2);\n`

View File

@ -81,6 +81,6 @@ it("should receive a namespace object when importing mixed content via context",
promiseTest(contextMixed("two"), nsObj({ default: { __esModule: true, named: "named", default: "default" } })),
promiseTest(contextMixed("three"), nsObj({ named: "named", default: "default" })),
promiseTest(contextMixed("null"), nsObj({ default: null })),
promiseTest(contextMixed("json.json"), nsObj({ named: "named", default: { named: "named", default: "default" } }))
promiseTest(contextMixed("json.json"), nsObj({ default: { named: "named", default: "default" } }))
]);
});