mirror of https://github.com/webpack/webpack.git
rename exportsType named to default
exportsType default doesn't include named exports in strict esm
This commit is contained in:
parent
ce70102a8f
commit
5a01ed8121
|
|
@ -485,8 +485,8 @@ class ContextModule extends Module {
|
||||||
} else if (exportsType === "namespace") {
|
} else if (exportsType === "namespace") {
|
||||||
map[id] = 9;
|
map[id] = 9;
|
||||||
hasNamespace = true;
|
hasNamespace = true;
|
||||||
} else if (exportsType === "named") {
|
} else if (exportsType === "default") {
|
||||||
map[id] = 3;
|
map[id] = this.options.namespaceObject === "strict" ? 1 : 3;
|
||||||
hasNamed = true;
|
hasNamed = true;
|
||||||
}
|
}
|
||||||
return map;
|
return map;
|
||||||
|
|
@ -498,7 +498,7 @@ class ContextModule extends Module {
|
||||||
return 9;
|
return 9;
|
||||||
}
|
}
|
||||||
if (!hasNamespace && !hasNonHarmony && hasNamed) {
|
if (!hasNamespace && !hasNonHarmony && hasNamed) {
|
||||||
return 3;
|
return this.options.namespaceObject === "strict" ? 1 : 3;
|
||||||
}
|
}
|
||||||
if (!hasNamespace && !hasNonHarmony && !hasNamed) {
|
if (!hasNamespace && !hasNonHarmony && !hasNamed) {
|
||||||
return 9;
|
return 9;
|
||||||
|
|
|
||||||
|
|
@ -65,7 +65,7 @@ const makeSerializable = require("./util/makeSerializable");
|
||||||
* @property {string=} exportsArgument
|
* @property {string=} exportsArgument
|
||||||
* @property {boolean=} strict
|
* @property {boolean=} strict
|
||||||
* @property {string=} moduleConcatenationBailout
|
* @property {string=} moduleConcatenationBailout
|
||||||
* @property {("named" | "namespace")=} exportsType
|
* @property {("default" | "namespace")=} exportsType
|
||||||
* @property {boolean=} strictHarmonyModule
|
* @property {boolean=} strictHarmonyModule
|
||||||
* @property {boolean=} async
|
* @property {boolean=} async
|
||||||
*/
|
*/
|
||||||
|
|
|
||||||
|
|
@ -957,7 +957,7 @@ class ModuleGraph {
|
||||||
* @returns {void}
|
* @returns {void}
|
||||||
*/
|
*/
|
||||||
finishModule(module) {
|
finishModule(module) {
|
||||||
if (module.buildMeta.exportsType === "named") {
|
if (module.buildMeta.exportsType === "default") {
|
||||||
this.getExportsInfo(module).setRedirectToDefaultObject();
|
this.getExportsInfo(module).setRedirectToDefaultObject();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -329,12 +329,12 @@ class RuntimeTemplate {
|
||||||
runtimeRequirements
|
runtimeRequirements
|
||||||
});
|
});
|
||||||
return rawModule;
|
return rawModule;
|
||||||
} else if (exportsType === "named") {
|
|
||||||
runtimeRequirements.add(RuntimeGlobals.createFakeNamespaceObject);
|
|
||||||
return `${RuntimeGlobals.createFakeNamespaceObject}(${moduleId}, 3)`;
|
|
||||||
} else if (strict) {
|
} else if (strict) {
|
||||||
runtimeRequirements.add(RuntimeGlobals.createFakeNamespaceObject);
|
runtimeRequirements.add(RuntimeGlobals.createFakeNamespaceObject);
|
||||||
return `${RuntimeGlobals.createFakeNamespaceObject}(${moduleId}, 1)`;
|
return `${RuntimeGlobals.createFakeNamespaceObject}(${moduleId}, 1)`;
|
||||||
|
} else if (exportsType === "default") {
|
||||||
|
runtimeRequirements.add(RuntimeGlobals.createFakeNamespaceObject);
|
||||||
|
return `${RuntimeGlobals.createFakeNamespaceObject}(${moduleId}, 3)`;
|
||||||
} else {
|
} else {
|
||||||
runtimeRequirements.add(RuntimeGlobals.createFakeNamespaceObject);
|
runtimeRequirements.add(RuntimeGlobals.createFakeNamespaceObject);
|
||||||
return `${RuntimeGlobals.createFakeNamespaceObject}(${moduleId}, 7)`;
|
return `${RuntimeGlobals.createFakeNamespaceObject}(${moduleId}, 7)`;
|
||||||
|
|
@ -435,13 +435,6 @@ class RuntimeTemplate {
|
||||||
runtimeRequirements.add(RuntimeGlobals.require);
|
runtimeRequirements.add(RuntimeGlobals.require);
|
||||||
getModuleFunction = `__webpack_require__.bind(null, ${comment}${idExpr})`;
|
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) {
|
} else if (strict) {
|
||||||
runtimeRequirements.add(RuntimeGlobals.createFakeNamespaceObject);
|
runtimeRequirements.add(RuntimeGlobals.createFakeNamespaceObject);
|
||||||
if (header) {
|
if (header) {
|
||||||
|
|
@ -449,6 +442,13 @@ class RuntimeTemplate {
|
||||||
} else {
|
} else {
|
||||||
getModuleFunction = `${RuntimeGlobals.createFakeNamespaceObject}.bind(__webpack_require__, ${comment}${idExpr}, 1)`;
|
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 {
|
} else {
|
||||||
runtimeRequirements.add(RuntimeGlobals.createFakeNamespaceObject);
|
runtimeRequirements.add(RuntimeGlobals.createFakeNamespaceObject);
|
||||||
if (header) {
|
if (header) {
|
||||||
|
|
@ -595,7 +595,7 @@ class RuntimeTemplate {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (exportsType === "named") {
|
if (exportsType === "default") {
|
||||||
if (exportName.length === 0) {
|
if (exportName.length === 0) {
|
||||||
runtimeRequirements.add(RuntimeGlobals.createFakeNamespaceObject);
|
runtimeRequirements.add(RuntimeGlobals.createFakeNamespaceObject);
|
||||||
initFragments.push(
|
initFragments.push(
|
||||||
|
|
@ -606,7 +606,11 @@ class RuntimeTemplate {
|
||||||
`${importVar}_namespace_cache`
|
`${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
|
||||||
|
})))`;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -196,7 +196,7 @@ class HarmonyExportImportedSpecifierDependency extends HarmonyImportDependency {
|
||||||
importedModule.buildMeta && !importedModule.buildMeta.exportsType;
|
importedModule.buildMeta && !importedModule.buildMeta.exportsType;
|
||||||
const isNamedModule =
|
const isNamedModule =
|
||||||
importedModule.buildMeta &&
|
importedModule.buildMeta &&
|
||||||
importedModule.buildMeta.exportsType === "named";
|
importedModule.buildMeta.exportsType === "default";
|
||||||
|
|
||||||
// Special handling for reexporting the default export
|
// Special handling for reexporting the default export
|
||||||
// from non-harmony modules
|
// from non-harmony modules
|
||||||
|
|
@ -225,7 +225,7 @@ class HarmonyExportImportedSpecifierDependency extends HarmonyImportDependency {
|
||||||
|
|
||||||
if (ids.length > 0) {
|
if (ids.length > 0) {
|
||||||
// export { name as name }
|
// export { name as name }
|
||||||
if (isNotAHarmonyModule && strictHarmonyModule) {
|
if ((isNotAHarmonyModule || isNamedModule) && strictHarmonyModule) {
|
||||||
mode = new ExportMode("reexport-non-harmony-undefined");
|
mode = new ExportMode("reexport-non-harmony-undefined");
|
||||||
mode.name = name;
|
mode.name = name;
|
||||||
} else {
|
} else {
|
||||||
|
|
@ -242,7 +242,7 @@ class HarmonyExportImportedSpecifierDependency extends HarmonyImportDependency {
|
||||||
mode = new ExportMode("reexport-fake-named-namespace-object");
|
mode = new ExportMode("reexport-fake-named-namespace-object");
|
||||||
mode.name = name;
|
mode.name = name;
|
||||||
mode.partialNamespaceExportInfo = exportInfo;
|
mode.partialNamespaceExportInfo = exportInfo;
|
||||||
mode.fakeType = 2;
|
mode.fakeType = strictHarmonyModule ? 0 : 2;
|
||||||
} else {
|
} else {
|
||||||
mode = new ExportMode("reexport-namespace-object");
|
mode = new ExportMode("reexport-namespace-object");
|
||||||
mode.name = name;
|
mode.name = name;
|
||||||
|
|
|
||||||
|
|
@ -115,7 +115,7 @@ class HarmonyImportDependency extends ModuleDependency {
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
return;
|
return;
|
||||||
} else if (exportsType === "named") {
|
} else if (exportsType === "default") {
|
||||||
if (ids.length > 0 && ids[0] !== "default") {
|
if (ids.length > 0 && ids[0] !== "default") {
|
||||||
// For these modules only the default export is supported
|
// For these modules only the default export is supported
|
||||||
return [
|
return [
|
||||||
|
|
|
||||||
|
|
@ -19,7 +19,7 @@ class JsonParser {
|
||||||
parse(source, state) {
|
parse(source, state) {
|
||||||
const data = parseJson(source[0] === "\ufeff" ? source.slice(1) : source);
|
const data = parseJson(source[0] === "\ufeff" ? source.slice(1) : source);
|
||||||
state.module.buildInfo.jsonData = data;
|
state.module.buildInfo.jsonData = data;
|
||||||
state.module.buildMeta.exportsType = "named";
|
state.module.buildMeta.exportsType = "default";
|
||||||
state.module.addDependency(
|
state.module.addDependency(
|
||||||
new JsonExportsDependency(JsonExportsDependency.getExportsFromData(data))
|
new JsonExportsDependency(JsonExportsDependency.getExportsFromData(data))
|
||||||
);
|
);
|
||||||
|
|
|
||||||
|
|
@ -234,7 +234,7 @@ const getExternalImport = (
|
||||||
let exprStart;
|
let exprStart;
|
||||||
if (exportName.length === 0) {
|
if (exportName.length === 0) {
|
||||||
switch (importedModule.buildMeta.exportsType) {
|
switch (importedModule.buildMeta.exportsType) {
|
||||||
case "named":
|
case "default":
|
||||||
info.interopNamespaceObjectUsed = true;
|
info.interopNamespaceObjectUsed = true;
|
||||||
exprStart = info.interopNamespaceObjectName;
|
exprStart = info.interopNamespaceObjectName;
|
||||||
break;
|
break;
|
||||||
|
|
@ -253,7 +253,7 @@ const getExternalImport = (
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
switch (importedModule.buildMeta.exportsType) {
|
switch (importedModule.buildMeta.exportsType) {
|
||||||
case "named":
|
case "default":
|
||||||
case "namespace":
|
case "namespace":
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
|
|
@ -977,7 +977,7 @@ class ConcatenatedModule extends Module {
|
||||||
allUsedNames.add(externalName);
|
allUsedNames.add(externalName);
|
||||||
info.name = externalName;
|
info.name = externalName;
|
||||||
if (
|
if (
|
||||||
info.module.buildMeta.exportsType === "named" ||
|
info.module.buildMeta.exportsType === "default" ||
|
||||||
!info.module.buildMeta.exportsType
|
!info.module.buildMeta.exportsType
|
||||||
) {
|
) {
|
||||||
const externalNameInterop = this.findNewName(
|
const externalNameInterop = this.findNewName(
|
||||||
|
|
@ -1085,7 +1085,7 @@ class ConcatenatedModule extends Module {
|
||||||
)});\n`
|
)});\n`
|
||||||
);
|
);
|
||||||
if (info.interopNamespaceObjectUsed) {
|
if (info.interopNamespaceObjectUsed) {
|
||||||
if (info.module.buildMeta.exportsType === "named") {
|
if (info.module.buildMeta.exportsType === "default") {
|
||||||
runtimeRequirements.add(RuntimeGlobals.createFakeNamespaceObject);
|
runtimeRequirements.add(RuntimeGlobals.createFakeNamespaceObject);
|
||||||
result.add(
|
result.add(
|
||||||
`var ${info.interopNamespaceObjectName} = /*#__PURE__*/${RuntimeGlobals.createFakeNamespaceObject}(${info.name}, 2);\n`
|
`var ${info.interopNamespaceObjectName} = /*#__PURE__*/${RuntimeGlobals.createFakeNamespaceObject}(${info.name}, 2);\n`
|
||||||
|
|
|
||||||
|
|
@ -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("two"), nsObj({ default: { __esModule: true, named: "named", default: "default" } })),
|
||||||
promiseTest(contextMixed("three"), nsObj({ named: "named", default: "default" })),
|
promiseTest(contextMixed("three"), nsObj({ named: "named", default: "default" })),
|
||||||
promiseTest(contextMixed("null"), nsObj({ default: null })),
|
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" } }))
|
||||||
]);
|
]);
|
||||||
});
|
});
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue