mirror of https://github.com/webpack/webpack.git
remove originModule from Dependencies and add parent module to ModuleGraph
This commit is contained in:
parent
bff959901d
commit
3618cc1b3c
|
|
@ -626,7 +626,10 @@ class Compilation {
|
||||||
processModuleDependencies(module, callback) {
|
processModuleDependencies(module, callback) {
|
||||||
const dependencies = new Map();
|
const dependencies = new Map();
|
||||||
|
|
||||||
const addDependency = dep => {
|
let currentBlock = module;
|
||||||
|
|
||||||
|
const processDependency = dep => {
|
||||||
|
this.moduleGraph.setParents(dep, currentBlock, module);
|
||||||
const resourceIdent = dep.getResourceIdentifier();
|
const resourceIdent = dep.getResourceIdentifier();
|
||||||
if (resourceIdent) {
|
if (resourceIdent) {
|
||||||
const factory = this.dependencyFactories.get(dep.constructor);
|
const factory = this.dependencyFactories.get(dep.constructor);
|
||||||
|
|
@ -647,17 +650,18 @@ class Compilation {
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
const addDependenciesBlock = block => {
|
const processDependenciesBlock = block => {
|
||||||
if (block.dependencies) {
|
if (block.dependencies) {
|
||||||
iterationOfArrayCallback(block.dependencies, addDependency);
|
currentBlock = block;
|
||||||
|
iterationOfArrayCallback(block.dependencies, processDependency);
|
||||||
}
|
}
|
||||||
if (block.blocks) {
|
if (block.blocks) {
|
||||||
iterationOfArrayCallback(block.blocks, addDependenciesBlock);
|
iterationOfArrayCallback(block.blocks, processDependenciesBlock);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
try {
|
try {
|
||||||
addDependenciesBlock(module);
|
processDependenciesBlock(module);
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
callback(e);
|
callback(e);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -90,7 +90,7 @@ class DelegatedModule extends Module {
|
||||||
);
|
);
|
||||||
this.addDependency(this.delegatedSourceDependency);
|
this.addDependency(this.delegatedSourceDependency);
|
||||||
this.addDependency(
|
this.addDependency(
|
||||||
new DelegatedExportsDependency(this, this.delegateData.exports || true)
|
new DelegatedExportsDependency(this.delegateData.exports || true)
|
||||||
);
|
);
|
||||||
callback();
|
callback();
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -7,6 +7,7 @@
|
||||||
|
|
||||||
const ModuleGraphConnection = require("./ModuleGraphConnection");
|
const ModuleGraphConnection = require("./ModuleGraphConnection");
|
||||||
|
|
||||||
|
/** @typedef {import("./DependenciesBlock")} DependenciesBlock */
|
||||||
/** @typedef {import("./Dependency")} Dependency */
|
/** @typedef {import("./Dependency")} Dependency */
|
||||||
/** @typedef {import("./Module")} Module */
|
/** @typedef {import("./Module")} Module */
|
||||||
|
|
||||||
|
|
@ -20,6 +21,8 @@ class ModuleGraph {
|
||||||
this._originMap = new Map();
|
this._originMap = new Map();
|
||||||
/** @type {Map<any, Object>} */
|
/** @type {Map<any, Object>} */
|
||||||
this._metaMap = new Map();
|
this._metaMap = new Map();
|
||||||
|
/** @type {Map<Dependency, {module: Module, block: DependenciesBlock}>} */
|
||||||
|
this._parentsMap = new Map();
|
||||||
}
|
}
|
||||||
|
|
||||||
_getModuleSet(module) {
|
_getModuleSet(module) {
|
||||||
|
|
@ -40,6 +43,34 @@ class ModuleGraph {
|
||||||
return connections;
|
return connections;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param {Dependency} dependency the dependency
|
||||||
|
* @param {DependenciesBlock} block parent block
|
||||||
|
* @param {Module} module parent module
|
||||||
|
* @returns {void}
|
||||||
|
*/
|
||||||
|
setParents(dependency, block, module) {
|
||||||
|
this._parentsMap.set(dependency, { module, block });
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param {Dependency} dependency the dependency
|
||||||
|
* @returns {Module} parent module
|
||||||
|
*/
|
||||||
|
getParentModule(dependency) {
|
||||||
|
const entry = this._parentsMap.get(dependency);
|
||||||
|
return entry !== undefined ? entry.module : null;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param {Dependency} dependency the dependency
|
||||||
|
* @returns {DependenciesBlock} parent block
|
||||||
|
*/
|
||||||
|
getParentBlock(dependency) {
|
||||||
|
const entry = this._parentsMap.get(dependency);
|
||||||
|
return entry !== undefined ? entry.block : null;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param {Module} originModule the referencing module
|
* @param {Module} originModule the referencing module
|
||||||
* @param {Dependency} dependency the referencing dependency
|
* @param {Dependency} dependency the referencing dependency
|
||||||
|
|
@ -158,6 +189,15 @@ class ModuleGraph {
|
||||||
return connection !== undefined ? connection.originModule : null;
|
return connection !== undefined ? connection.originModule : null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param {Dependency} dependency the dependency to look for a referencing module
|
||||||
|
* @returns {Module} the original referencing module
|
||||||
|
*/
|
||||||
|
getResolvedOrigin(dependency) {
|
||||||
|
const connection = this._dependencyMap.get(dependency);
|
||||||
|
return connection !== undefined ? connection.resolvedOriginModule : null;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param {Module} module the module
|
* @param {Module} module the module
|
||||||
* @returns {ModuleGraphConnection[]} reasons why a module is included
|
* @returns {ModuleGraphConnection[]} reasons why a module is included
|
||||||
|
|
|
||||||
|
|
@ -17,6 +17,7 @@ class ModuleGraphConnection {
|
||||||
*/
|
*/
|
||||||
constructor(originModule, dependency, module, explanation) {
|
constructor(originModule, dependency, module, explanation) {
|
||||||
this.originModule = originModule;
|
this.originModule = originModule;
|
||||||
|
this.resolvedOriginModule = originModule;
|
||||||
this.dependency = dependency;
|
this.dependency = dependency;
|
||||||
this.resolvedModule = module;
|
this.resolvedModule = module;
|
||||||
this.module = module;
|
this.module = module;
|
||||||
|
|
|
||||||
|
|
@ -170,8 +170,7 @@ class NodeStuffPlugin {
|
||||||
getModulePath(
|
getModulePath(
|
||||||
parser.state.module.context,
|
parser.state.module.context,
|
||||||
isHarmony ? harmonyModuleBuildin : moduleBuildin
|
isHarmony ? harmonyModuleBuildin : moduleBuildin
|
||||||
),
|
)
|
||||||
parser.state.module
|
|
||||||
);
|
);
|
||||||
dep.loc = expr.loc;
|
dep.loc = expr.loc;
|
||||||
parser.state.module.addDependency(dep);
|
parser.state.module.addDependency(dep);
|
||||||
|
|
|
||||||
|
|
@ -12,9 +12,8 @@ const NullDependency = require("./NullDependency");
|
||||||
/** @typedef {import("../ModuleGraph")} ModuleGraph */
|
/** @typedef {import("../ModuleGraph")} ModuleGraph */
|
||||||
|
|
||||||
class DelegatedExportsDependency extends NullDependency {
|
class DelegatedExportsDependency extends NullDependency {
|
||||||
constructor(originModule, exports) {
|
constructor(exports) {
|
||||||
super();
|
super();
|
||||||
this.originModule = originModule;
|
|
||||||
this.exports = exports;
|
this.exports = exports;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -28,8 +27,11 @@ class DelegatedExportsDependency extends NullDependency {
|
||||||
* @returns {DependencyReference} reference
|
* @returns {DependencyReference} reference
|
||||||
*/
|
*/
|
||||||
getReference(moduleGraph) {
|
getReference(moduleGraph) {
|
||||||
if (!this.originModule) return null;
|
return new DependencyReference(
|
||||||
return new DependencyReference(() => this.originModule, true, false);
|
() => moduleGraph.getParentModule(this),
|
||||||
|
true,
|
||||||
|
false
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
||||||
|
|
@ -12,8 +12,8 @@ const HarmonyImportDependency = require("./HarmonyImportDependency");
|
||||||
/** @typedef {import("../DependencyTemplate").DependencyTemplateContext} DependencyTemplateContext */
|
/** @typedef {import("../DependencyTemplate").DependencyTemplateContext} DependencyTemplateContext */
|
||||||
|
|
||||||
class HarmonyAcceptImportDependency extends HarmonyImportDependency {
|
class HarmonyAcceptImportDependency extends HarmonyImportDependency {
|
||||||
constructor(request, originModule, parserScope) {
|
constructor(request, parserScope) {
|
||||||
super(request, originModule, NaN, parserScope);
|
super(request, NaN, parserScope);
|
||||||
this.weak = true;
|
this.weak = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -14,14 +14,6 @@ const NullDependency = require("./NullDependency");
|
||||||
/** @typedef {import("../Module")} Module */
|
/** @typedef {import("../Module")} Module */
|
||||||
|
|
||||||
class HarmonyCompatibilityDependency extends NullDependency {
|
class HarmonyCompatibilityDependency extends NullDependency {
|
||||||
/**
|
|
||||||
* @param {Module} originModule the originating module
|
|
||||||
*/
|
|
||||||
constructor(originModule) {
|
|
||||||
super();
|
|
||||||
this.originModule = originModule;
|
|
||||||
}
|
|
||||||
|
|
||||||
get type() {
|
get type() {
|
||||||
return "harmony export header";
|
return "harmony export header";
|
||||||
}
|
}
|
||||||
|
|
@ -43,12 +35,11 @@ HarmonyCompatibilityDependency.Template = class HarmonyExportDependencyTemplate
|
||||||
* @param {DependencyTemplateContext} templateContext the template context
|
* @param {DependencyTemplateContext} templateContext the template context
|
||||||
* @returns {InitFragment[]|null} the init fragments
|
* @returns {InitFragment[]|null} the init fragments
|
||||||
*/
|
*/
|
||||||
getInitFragments(dependency, { runtimeTemplate, moduleGraph }) {
|
getInitFragments(dependency, { module, runtimeTemplate, moduleGraph }) {
|
||||||
const dep = /** @type {HarmonyCompatibilityDependency} */ (dependency);
|
const usedExports = module.getUsedExports(moduleGraph);
|
||||||
const usedExports = dep.originModule.getUsedExports(moduleGraph);
|
|
||||||
if (usedExports === true || usedExports === null) {
|
if (usedExports === true || usedExports === null) {
|
||||||
const content = runtimeTemplate.defineEsModuleFlagStatement({
|
const content = runtimeTemplate.defineEsModuleFlagStatement({
|
||||||
exportsArgument: dep.originModule.exportsArgument
|
exportsArgument: module.exportsArgument
|
||||||
});
|
});
|
||||||
return [
|
return [
|
||||||
new InitFragment(
|
new InitFragment(
|
||||||
|
|
|
||||||
|
|
@ -18,7 +18,7 @@ module.exports = class HarmonyDetectionParserPlugin {
|
||||||
});
|
});
|
||||||
if (isHarmony) {
|
if (isHarmony) {
|
||||||
const module = parser.state.module;
|
const module = parser.state.module;
|
||||||
const compatDep = new HarmonyCompatibilityDependency(module);
|
const compatDep = new HarmonyCompatibilityDependency();
|
||||||
compatDep.loc = {
|
compatDep.loc = {
|
||||||
start: {
|
start: {
|
||||||
line: -1,
|
line: -1,
|
||||||
|
|
|
||||||
|
|
@ -42,7 +42,6 @@ module.exports = class HarmonyExportDependencyParserPlugin {
|
||||||
parser.state.current.addDependency(clearDep);
|
parser.state.current.addDependency(clearDep);
|
||||||
const sideEffectDep = new HarmonyImportSideEffectDependency(
|
const sideEffectDep = new HarmonyImportSideEffectDependency(
|
||||||
source,
|
source,
|
||||||
parser.state.module,
|
|
||||||
parser.state.lastHarmonyImportOrder,
|
parser.state.lastHarmonyImportOrder,
|
||||||
parser.state.harmonyParserScope
|
parser.state.harmonyParserScope
|
||||||
);
|
);
|
||||||
|
|
@ -56,7 +55,6 @@ module.exports = class HarmonyExportDependencyParserPlugin {
|
||||||
"HarmonyExportDependencyParserPlugin",
|
"HarmonyExportDependencyParserPlugin",
|
||||||
(statement, expr) => {
|
(statement, expr) => {
|
||||||
const dep = new HarmonyExportExpressionDependency(
|
const dep = new HarmonyExportExpressionDependency(
|
||||||
parser.state.module,
|
|
||||||
expr.range,
|
expr.range,
|
||||||
statement.range
|
statement.range
|
||||||
);
|
);
|
||||||
|
|
@ -82,7 +80,6 @@ module.exports = class HarmonyExportDependencyParserPlugin {
|
||||||
const settings = parser.state.harmonySpecifier.get(id);
|
const settings = parser.state.harmonySpecifier.get(id);
|
||||||
dep = new HarmonyExportImportedSpecifierDependency(
|
dep = new HarmonyExportImportedSpecifierDependency(
|
||||||
settings.source,
|
settings.source,
|
||||||
parser.state.module,
|
|
||||||
settings.sourceOrder,
|
settings.sourceOrder,
|
||||||
parser.state.harmonyParserScope,
|
parser.state.harmonyParserScope,
|
||||||
settings.id,
|
settings.id,
|
||||||
|
|
@ -92,11 +89,7 @@ module.exports = class HarmonyExportDependencyParserPlugin {
|
||||||
this.strictExportPresence
|
this.strictExportPresence
|
||||||
);
|
);
|
||||||
} else {
|
} else {
|
||||||
dep = new HarmonyExportSpecifierDependency(
|
dep = new HarmonyExportSpecifierDependency(id, name);
|
||||||
parser.state.module,
|
|
||||||
id,
|
|
||||||
name
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
dep.loc = Object.create(statement.loc);
|
dep.loc = Object.create(statement.loc);
|
||||||
dep.loc.index = idx;
|
dep.loc.index = idx;
|
||||||
|
|
@ -118,7 +111,6 @@ module.exports = class HarmonyExportDependencyParserPlugin {
|
||||||
}
|
}
|
||||||
const dep = new HarmonyExportImportedSpecifierDependency(
|
const dep = new HarmonyExportImportedSpecifierDependency(
|
||||||
source,
|
source,
|
||||||
parser.state.module,
|
|
||||||
parser.state.lastHarmonyImportOrder,
|
parser.state.lastHarmonyImportOrder,
|
||||||
parser.state.harmonyParserScope,
|
parser.state.harmonyParserScope,
|
||||||
id,
|
id,
|
||||||
|
|
|
||||||
|
|
@ -14,9 +14,8 @@ const NullDependency = require("./NullDependency");
|
||||||
/** @typedef {import("../ModuleGraph")} ModuleGraph */
|
/** @typedef {import("../ModuleGraph")} ModuleGraph */
|
||||||
|
|
||||||
class HarmonyExportExpressionDependency extends NullDependency {
|
class HarmonyExportExpressionDependency extends NullDependency {
|
||||||
constructor(originModule, range, rangeStatement) {
|
constructor(range, rangeStatement) {
|
||||||
super();
|
super();
|
||||||
this.originModule = originModule;
|
|
||||||
this.range = range;
|
this.range = range;
|
||||||
this.rangeStatement = rangeStatement;
|
this.rangeStatement = rangeStatement;
|
||||||
}
|
}
|
||||||
|
|
@ -45,10 +44,10 @@ HarmonyExportExpressionDependency.Template = class HarmonyExportDependencyTempla
|
||||||
* @param {DependencyTemplateContext} templateContext the context object
|
* @param {DependencyTemplateContext} templateContext the context object
|
||||||
* @returns {void}
|
* @returns {void}
|
||||||
*/
|
*/
|
||||||
apply(dependency, source, { moduleGraph }) {
|
apply(dependency, source, { module, moduleGraph }) {
|
||||||
const dep = /** @type {HarmonyExportExpressionDependency} */ (dependency);
|
const dep = /** @type {HarmonyExportExpressionDependency} */ (dependency);
|
||||||
const used = dep.originModule.getUsedName(moduleGraph, "default");
|
const used = module.getUsedName(moduleGraph, "default");
|
||||||
const content = this.getContent(dep.originModule, used);
|
const content = this.getContent(module, used);
|
||||||
|
|
||||||
if (dep.range) {
|
if (dep.range) {
|
||||||
source.replace(dep.rangeStatement[0], dep.range[0] - 1, content + "(");
|
source.replace(dep.rangeStatement[0], dep.range[0] - 1, content + "(");
|
||||||
|
|
|
||||||
|
|
@ -66,7 +66,6 @@ const EMPTY_STAR_MODE = new ExportMode("empty-star");
|
||||||
class HarmonyExportImportedSpecifierDependency extends HarmonyImportDependency {
|
class HarmonyExportImportedSpecifierDependency extends HarmonyImportDependency {
|
||||||
constructor(
|
constructor(
|
||||||
request,
|
request,
|
||||||
originModule,
|
|
||||||
sourceOrder,
|
sourceOrder,
|
||||||
parserScope,
|
parserScope,
|
||||||
id,
|
id,
|
||||||
|
|
@ -75,7 +74,7 @@ class HarmonyExportImportedSpecifierDependency extends HarmonyImportDependency {
|
||||||
otherStarExports,
|
otherStarExports,
|
||||||
strictExportPresence
|
strictExportPresence
|
||||||
) {
|
) {
|
||||||
super(request, originModule, sourceOrder, parserScope);
|
super(request, sourceOrder, parserScope);
|
||||||
this.id = id;
|
this.id = id;
|
||||||
this.name = name;
|
this.name = name;
|
||||||
this.activeExports = activeExports;
|
this.activeExports = activeExports;
|
||||||
|
|
@ -95,8 +94,9 @@ class HarmonyExportImportedSpecifierDependency extends HarmonyImportDependency {
|
||||||
getMode(moduleGraph, ignoreUnused) {
|
getMode(moduleGraph, ignoreUnused) {
|
||||||
const name = this.name;
|
const name = this.name;
|
||||||
const id = this.id;
|
const id = this.id;
|
||||||
const used = this.originModule.getUsedName(moduleGraph, name);
|
const parentModule = moduleGraph.getParentModule(this);
|
||||||
const usedExports = this.originModule.getUsedExports(moduleGraph);
|
const used = parentModule.getUsedName(moduleGraph, name);
|
||||||
|
const usedExports = parentModule.getUsedExports(moduleGraph);
|
||||||
const importedModule = moduleGraph.getModule(this);
|
const importedModule = moduleGraph.getModule(this);
|
||||||
|
|
||||||
if (!importedModule) {
|
if (!importedModule) {
|
||||||
|
|
@ -111,7 +111,7 @@ class HarmonyExportImportedSpecifierDependency extends HarmonyImportDependency {
|
||||||
return mode;
|
return mode;
|
||||||
}
|
}
|
||||||
|
|
||||||
const strictHarmonyModule = this.originModule.buildMeta.strictHarmonyModule;
|
const strictHarmonyModule = parentModule.buildMeta.strictHarmonyModule;
|
||||||
if (name && id === "default" && importedModule.buildMeta) {
|
if (name && id === "default" && importedModule.buildMeta) {
|
||||||
if (!importedModule.buildMeta.exportsType) {
|
if (!importedModule.buildMeta.exportsType) {
|
||||||
const mode = new ExportMode(
|
const mode = new ExportMode(
|
||||||
|
|
@ -379,7 +379,7 @@ class HarmonyExportImportedSpecifierDependency extends HarmonyImportDependency {
|
||||||
getWarnings(moduleGraph) {
|
getWarnings(moduleGraph) {
|
||||||
if (
|
if (
|
||||||
this.strictExportPresence ||
|
this.strictExportPresence ||
|
||||||
this.originModule.buildMeta.strictHarmonyModule
|
moduleGraph.getParentModule(this).buildMeta.strictHarmonyModule
|
||||||
) {
|
) {
|
||||||
return [];
|
return [];
|
||||||
}
|
}
|
||||||
|
|
@ -394,7 +394,7 @@ class HarmonyExportImportedSpecifierDependency extends HarmonyImportDependency {
|
||||||
getErrors(moduleGraph) {
|
getErrors(moduleGraph) {
|
||||||
if (
|
if (
|
||||||
this.strictExportPresence ||
|
this.strictExportPresence ||
|
||||||
this.originModule.buildMeta.strictHarmonyModule
|
moduleGraph.getParentModule(this).buildMeta.strictHarmonyModule
|
||||||
) {
|
) {
|
||||||
return this._getErrors(moduleGraph);
|
return this._getErrors(moduleGraph);
|
||||||
}
|
}
|
||||||
|
|
@ -410,7 +410,7 @@ class HarmonyExportImportedSpecifierDependency extends HarmonyImportDependency {
|
||||||
if (!importedModule.buildMeta || !importedModule.buildMeta.exportsType) {
|
if (!importedModule.buildMeta || !importedModule.buildMeta.exportsType) {
|
||||||
// It's not an harmony module
|
// It's not an harmony module
|
||||||
if (
|
if (
|
||||||
this.originModule.buildMeta.strictHarmonyModule &&
|
moduleGraph.getParentModule(this).buildMeta.strictHarmonyModule &&
|
||||||
this.id !== "default"
|
this.id !== "default"
|
||||||
) {
|
) {
|
||||||
// In strict harmony modules we only support the default export
|
// In strict harmony modules we only support the default export
|
||||||
|
|
@ -470,7 +470,11 @@ HarmonyExportImportedSpecifierDependency.Template = class HarmonyExportImportedS
|
||||||
if (this.isUsed(dep, templateContext)) {
|
if (this.isUsed(dep, templateContext)) {
|
||||||
const importFragments = super.getInitFragments(dep, templateContext);
|
const importFragments = super.getInitFragments(dep, templateContext);
|
||||||
const exportFragment = new InitFragment(
|
const exportFragment = new InitFragment(
|
||||||
this.getContent(dep, templateContext.moduleGraph),
|
this.getContent(
|
||||||
|
dep,
|
||||||
|
templateContext.module,
|
||||||
|
templateContext.moduleGraph
|
||||||
|
),
|
||||||
InitFragment.STAGE_HARMONY_IMPORTS,
|
InitFragment.STAGE_HARMONY_IMPORTS,
|
||||||
dep.sourceOrder
|
dep.sourceOrder
|
||||||
);
|
);
|
||||||
|
|
@ -487,16 +491,15 @@ HarmonyExportImportedSpecifierDependency.Template = class HarmonyExportImportedS
|
||||||
* @param {DependencyTemplateContext} templateContext the template context
|
* @param {DependencyTemplateContext} templateContext the template context
|
||||||
* @returns {Boolean} true, if (any) export is used
|
* @returns {Boolean} true, if (any) export is used
|
||||||
*/
|
*/
|
||||||
isUsed(dep, templateContext) {
|
isUsed(dep, { moduleGraph, module }) {
|
||||||
const moduleGraph = templateContext.moduleGraph;
|
|
||||||
if (dep.name) {
|
if (dep.name) {
|
||||||
return dep.originModule.isExportUsed(moduleGraph, dep.name);
|
return module.isExportUsed(moduleGraph, dep.name);
|
||||||
} else {
|
} else {
|
||||||
const importedModule = templateContext.moduleGraph.getModule(dep);
|
const importedModule = moduleGraph.getModule(dep);
|
||||||
const activeFromOtherStarExports = dep._discoverActiveExportsFromOtherStartExports(
|
const activeFromOtherStarExports = dep._discoverActiveExportsFromOtherStartExports(
|
||||||
templateContext.moduleGraph
|
moduleGraph
|
||||||
);
|
);
|
||||||
const usedExports = dep.originModule.getUsedExports(moduleGraph);
|
const usedExports = module.getUsedExports(moduleGraph);
|
||||||
|
|
||||||
if (usedExports && usedExports !== true) {
|
if (usedExports && usedExports !== true) {
|
||||||
// we know which exports are used
|
// we know which exports are used
|
||||||
|
|
@ -528,12 +531,12 @@ HarmonyExportImportedSpecifierDependency.Template = class HarmonyExportImportedS
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param {HarmonyExportImportedSpecifierDependency} dep dependency
|
* @param {HarmonyExportImportedSpecifierDependency} dep dependency
|
||||||
|
* @param {Module} module the current module
|
||||||
* @param {ModuleGraph} moduleGraph the module graph
|
* @param {ModuleGraph} moduleGraph the module graph
|
||||||
* @returns {string} the generated code
|
* @returns {string} the generated code
|
||||||
*/
|
*/
|
||||||
getContent(dep, moduleGraph) {
|
getContent(dep, module, moduleGraph) {
|
||||||
const mode = dep.getMode(moduleGraph, false);
|
const mode = dep.getMode(moduleGraph, false);
|
||||||
const module = dep.originModule;
|
|
||||||
const importedModule = moduleGraph.getModule(dep);
|
const importedModule = moduleGraph.getModule(dep);
|
||||||
const importVar = dep.getImportVar(moduleGraph);
|
const importVar = dep.getImportVar(moduleGraph);
|
||||||
|
|
||||||
|
|
@ -667,7 +670,7 @@ HarmonyExportImportedSpecifierDependency.Template = class HarmonyExportImportedS
|
||||||
} else {
|
} else {
|
||||||
content += "if(__WEBPACK_IMPORT_KEY__ !== 'default') ";
|
content += "if(__WEBPACK_IMPORT_KEY__ !== 'default') ";
|
||||||
}
|
}
|
||||||
const exportsName = dep.originModule.exportsArgument;
|
const exportsName = module.exportsArgument;
|
||||||
return (
|
return (
|
||||||
content +
|
content +
|
||||||
`(function(key) { __webpack_require__.d(${exportsName}, key, function() { return ${importVar}[key]; }) }(__WEBPACK_IMPORT_KEY__));\n`
|
`(function(key) { __webpack_require__.d(${exportsName}, key, function() { return ${importVar}[key]; }) }(__WEBPACK_IMPORT_KEY__));\n`
|
||||||
|
|
|
||||||
|
|
@ -15,9 +15,8 @@ const NullDependency = require("./NullDependency");
|
||||||
/** @typedef {import("../ModuleGraph")} ModuleGraph */
|
/** @typedef {import("../ModuleGraph")} ModuleGraph */
|
||||||
|
|
||||||
class HarmonyExportSpecifierDependency extends NullDependency {
|
class HarmonyExportSpecifierDependency extends NullDependency {
|
||||||
constructor(originModule, id, name) {
|
constructor(id, name) {
|
||||||
super();
|
super();
|
||||||
this.originModule = originModule;
|
|
||||||
this.id = id;
|
this.id = id;
|
||||||
this.name = name;
|
this.name = name;
|
||||||
}
|
}
|
||||||
|
|
@ -55,23 +54,23 @@ HarmonyExportSpecifierDependency.Template = class HarmonyExportSpecifierDependen
|
||||||
* @param {DependencyTemplateContext} templateContext the template context
|
* @param {DependencyTemplateContext} templateContext the template context
|
||||||
* @returns {InitFragment[]|null} the init fragments
|
* @returns {InitFragment[]|null} the init fragments
|
||||||
*/
|
*/
|
||||||
getInitFragments(dependency, { moduleGraph }) {
|
getInitFragments(dependency, { module, moduleGraph }) {
|
||||||
return [
|
return [
|
||||||
new InitFragment(
|
new InitFragment(
|
||||||
this.getContent(moduleGraph, dependency),
|
this.getContent(dependency, module, moduleGraph),
|
||||||
InitFragment.STAGE_HARMONY_EXPORTS,
|
InitFragment.STAGE_HARMONY_EXPORTS,
|
||||||
1
|
1
|
||||||
)
|
)
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
||||||
getContent(moduleGraph, dep) {
|
getContent(dep, module, moduleGraph) {
|
||||||
const used = dep.originModule.getUsedName(moduleGraph, dep.name);
|
const used = module.getUsedName(moduleGraph, dep.name);
|
||||||
if (!used) {
|
if (!used) {
|
||||||
return `/* unused harmony export ${dep.name || "namespace"} */\n`;
|
return `/* unused harmony export ${dep.name || "namespace"} */\n`;
|
||||||
}
|
}
|
||||||
|
|
||||||
const exportsName = dep.originModule.exportsArgument;
|
const exportsName = module.exportsArgument;
|
||||||
|
|
||||||
return `/* harmony export (binding) */ __webpack_require__.d(${exportsName}, ${JSON.stringify(
|
return `/* harmony export (binding) */ __webpack_require__.d(${exportsName}, ${JSON.stringify(
|
||||||
used
|
used
|
||||||
|
|
|
||||||
|
|
@ -23,13 +23,11 @@ class HarmonyImportDependency extends ModuleDependency {
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
* @param {string} request request string
|
* @param {string} request request string
|
||||||
* @param {Module} originModule module which contains the dependency
|
|
||||||
* @param {number} sourceOrder source order
|
* @param {number} sourceOrder source order
|
||||||
* @param {TODO} parserScope parser scope
|
* @param {TODO} parserScope parser scope
|
||||||
*/
|
*/
|
||||||
constructor(request, originModule, sourceOrder, parserScope) {
|
constructor(request, sourceOrder, parserScope) {
|
||||||
super(request);
|
super(request);
|
||||||
this.originModule = originModule;
|
|
||||||
this.sourceOrder = sourceOrder;
|
this.sourceOrder = sourceOrder;
|
||||||
this.parserScope = parserScope;
|
this.parserScope = parserScope;
|
||||||
}
|
}
|
||||||
|
|
@ -70,13 +68,13 @@ class HarmonyImportDependency extends ModuleDependency {
|
||||||
* @param {DependencyTemplateContext} templateContext the template context
|
* @param {DependencyTemplateContext} templateContext the template context
|
||||||
* @returns {string} name of the variable for the import
|
* @returns {string} name of the variable for the import
|
||||||
*/
|
*/
|
||||||
getImportStatement(update, { runtimeTemplate: runtime, moduleGraph }) {
|
getImportStatement(update, { runtimeTemplate, module, moduleGraph }) {
|
||||||
return runtime.importStatement({
|
return runtimeTemplate.importStatement({
|
||||||
update,
|
update,
|
||||||
module: moduleGraph.getModule(this),
|
module: moduleGraph.getModule(this),
|
||||||
importVar: this.getImportVar(moduleGraph),
|
importVar: this.getImportVar(moduleGraph),
|
||||||
request: this.request,
|
request: this.request,
|
||||||
originModule: this.originModule
|
originModule: module
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -29,7 +29,6 @@ module.exports = class HarmonyImportDependencyParserPlugin {
|
||||||
parser.state.module.addDependency(clearDep);
|
parser.state.module.addDependency(clearDep);
|
||||||
const sideEffectDep = new HarmonyImportSideEffectDependency(
|
const sideEffectDep = new HarmonyImportSideEffectDependency(
|
||||||
source,
|
source,
|
||||||
parser.state.module,
|
|
||||||
parser.state.lastHarmonyImportOrder,
|
parser.state.lastHarmonyImportOrder,
|
||||||
parser.state.harmonyParserScope
|
parser.state.harmonyParserScope
|
||||||
);
|
);
|
||||||
|
|
@ -61,7 +60,6 @@ module.exports = class HarmonyImportDependencyParserPlugin {
|
||||||
const settings = parser.state.harmonySpecifier.get(name);
|
const settings = parser.state.harmonySpecifier.get(name);
|
||||||
const dep = new HarmonyImportSpecifierDependency(
|
const dep = new HarmonyImportSpecifierDependency(
|
||||||
settings.source,
|
settings.source,
|
||||||
parser.state.module,
|
|
||||||
settings.sourceOrder,
|
settings.sourceOrder,
|
||||||
parser.state.harmonyParserScope,
|
parser.state.harmonyParserScope,
|
||||||
settings.id,
|
settings.id,
|
||||||
|
|
@ -83,7 +81,6 @@ module.exports = class HarmonyImportDependencyParserPlugin {
|
||||||
if (settings.id !== null) return false;
|
if (settings.id !== null) return false;
|
||||||
const dep = new HarmonyImportSpecifierDependency(
|
const dep = new HarmonyImportSpecifierDependency(
|
||||||
settings.source,
|
settings.source,
|
||||||
parser.state.module,
|
|
||||||
settings.sourceOrder,
|
settings.sourceOrder,
|
||||||
parser.state.harmonyParserScope,
|
parser.state.harmonyParserScope,
|
||||||
expr.property.name || expr.property.value,
|
expr.property.name || expr.property.value,
|
||||||
|
|
@ -109,7 +106,6 @@ module.exports = class HarmonyImportDependencyParserPlugin {
|
||||||
if (settings.id !== null) return false;
|
if (settings.id !== null) return false;
|
||||||
const dep = new HarmonyImportSpecifierDependency(
|
const dep = new HarmonyImportSpecifierDependency(
|
||||||
settings.source,
|
settings.source,
|
||||||
parser.state.module,
|
|
||||||
settings.sourceOrder,
|
settings.sourceOrder,
|
||||||
parser.state.harmonyParserScope,
|
parser.state.harmonyParserScope,
|
||||||
expr.callee.property.name || expr.callee.property.value,
|
expr.callee.property.name || expr.callee.property.value,
|
||||||
|
|
@ -137,7 +133,6 @@ module.exports = class HarmonyImportDependencyParserPlugin {
|
||||||
const settings = parser.state.harmonySpecifier.get(name);
|
const settings = parser.state.harmonySpecifier.get(name);
|
||||||
const dep = new HarmonyImportSpecifierDependency(
|
const dep = new HarmonyImportSpecifierDependency(
|
||||||
settings.source,
|
settings.source,
|
||||||
parser.state.module,
|
|
||||||
settings.sourceOrder,
|
settings.sourceOrder,
|
||||||
parser.state.harmonyParserScope,
|
parser.state.harmonyParserScope,
|
||||||
settings.id,
|
settings.id,
|
||||||
|
|
@ -168,7 +163,6 @@ module.exports = class HarmonyImportDependencyParserPlugin {
|
||||||
const dependencies = requests.map(request => {
|
const dependencies = requests.map(request => {
|
||||||
const dep = new HarmonyAcceptImportDependency(
|
const dep = new HarmonyAcceptImportDependency(
|
||||||
request,
|
request,
|
||||||
parser.state.module,
|
|
||||||
harmonyParserScope
|
harmonyParserScope
|
||||||
);
|
);
|
||||||
dep.loc = expr.loc;
|
dep.loc = expr.loc;
|
||||||
|
|
@ -197,7 +191,6 @@ module.exports = class HarmonyImportDependencyParserPlugin {
|
||||||
const dependencies = requests.map(request => {
|
const dependencies = requests.map(request => {
|
||||||
const dep = new HarmonyAcceptImportDependency(
|
const dep = new HarmonyAcceptImportDependency(
|
||||||
request,
|
request,
|
||||||
parser.state.module,
|
|
||||||
harmonyParserScope
|
harmonyParserScope
|
||||||
);
|
);
|
||||||
dep.loc = expr.loc;
|
dep.loc = expr.loc;
|
||||||
|
|
|
||||||
|
|
@ -15,8 +15,8 @@ const HarmonyImportDependency = require("./HarmonyImportDependency");
|
||||||
/** @typedef {import("./DependencyReference")} DependencyReference */
|
/** @typedef {import("./DependencyReference")} DependencyReference */
|
||||||
|
|
||||||
class HarmonyImportSideEffectDependency extends HarmonyImportDependency {
|
class HarmonyImportSideEffectDependency extends HarmonyImportDependency {
|
||||||
constructor(request, originModule, sourceOrder, parserScope) {
|
constructor(request, sourceOrder, parserScope) {
|
||||||
super(request, originModule, sourceOrder, parserScope);
|
super(request, sourceOrder, parserScope);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
||||||
|
|
@ -20,7 +20,6 @@ const HarmonyImportDependency = require("./HarmonyImportDependency");
|
||||||
class HarmonyImportSpecifierDependency extends HarmonyImportDependency {
|
class HarmonyImportSpecifierDependency extends HarmonyImportDependency {
|
||||||
constructor(
|
constructor(
|
||||||
request,
|
request,
|
||||||
originModule,
|
|
||||||
sourceOrder,
|
sourceOrder,
|
||||||
parserScope,
|
parserScope,
|
||||||
id,
|
id,
|
||||||
|
|
@ -28,7 +27,7 @@ class HarmonyImportSpecifierDependency extends HarmonyImportDependency {
|
||||||
range,
|
range,
|
||||||
strictExportPresence
|
strictExportPresence
|
||||||
) {
|
) {
|
||||||
super(request, originModule, sourceOrder, parserScope);
|
super(request, sourceOrder, parserScope);
|
||||||
this.id = id === null ? null : `${id}`;
|
this.id = id === null ? null : `${id}`;
|
||||||
this.name = name;
|
this.name = name;
|
||||||
this.range = range;
|
this.range = range;
|
||||||
|
|
@ -78,7 +77,7 @@ class HarmonyImportSpecifierDependency extends HarmonyImportDependency {
|
||||||
getWarnings(moduleGraph) {
|
getWarnings(moduleGraph) {
|
||||||
if (
|
if (
|
||||||
this.strictExportPresence ||
|
this.strictExportPresence ||
|
||||||
this.originModule.buildMeta.strictHarmonyModule
|
moduleGraph.getParentModule(this).buildMeta.strictHarmonyModule
|
||||||
) {
|
) {
|
||||||
return [];
|
return [];
|
||||||
}
|
}
|
||||||
|
|
@ -93,7 +92,7 @@ class HarmonyImportSpecifierDependency extends HarmonyImportDependency {
|
||||||
getErrors(moduleGraph) {
|
getErrors(moduleGraph) {
|
||||||
if (
|
if (
|
||||||
this.strictExportPresence ||
|
this.strictExportPresence ||
|
||||||
this.originModule.buildMeta.strictHarmonyModule
|
moduleGraph.getParentModule(this).buildMeta.strictHarmonyModule
|
||||||
) {
|
) {
|
||||||
return this._getErrors(moduleGraph);
|
return this._getErrors(moduleGraph);
|
||||||
}
|
}
|
||||||
|
|
@ -109,7 +108,7 @@ class HarmonyImportSpecifierDependency extends HarmonyImportDependency {
|
||||||
if (!importedModule.buildMeta || !importedModule.buildMeta.exportsType) {
|
if (!importedModule.buildMeta || !importedModule.buildMeta.exportsType) {
|
||||||
// It's not an harmony module
|
// It's not an harmony module
|
||||||
if (
|
if (
|
||||||
this.originModule.buildMeta.strictHarmonyModule &&
|
moduleGraph.getParentModule(this).buildMeta.strictHarmonyModule &&
|
||||||
this.getId(moduleGraph) !== "default"
|
this.getId(moduleGraph) !== "default"
|
||||||
) {
|
) {
|
||||||
// In strict harmony modules we only support the default export
|
// In strict harmony modules we only support the default export
|
||||||
|
|
@ -195,13 +194,13 @@ HarmonyImportSpecifierDependency.Template = class HarmonyImportSpecifierDependen
|
||||||
source.replace(dep.range[0], dep.range[1] - 1, content);
|
source.replace(dep.range[0], dep.range[1] - 1, content);
|
||||||
}
|
}
|
||||||
|
|
||||||
getContent(dep, { runtimeTemplate: runtime, moduleGraph }) {
|
getContent(dep, { runtimeTemplate, module, moduleGraph }) {
|
||||||
const exportExpr = runtime.exportFromImport({
|
const exportExpr = runtimeTemplate.exportFromImport({
|
||||||
moduleGraph,
|
moduleGraph,
|
||||||
module: moduleGraph.getModule(dep),
|
module: moduleGraph.getModule(dep),
|
||||||
request: dep.request,
|
request: dep.request,
|
||||||
exportName: dep.getId(moduleGraph),
|
exportName: dep.getId(moduleGraph),
|
||||||
originModule: dep.originModule,
|
originModule: module,
|
||||||
asiSafe: dep.shorthand,
|
asiSafe: dep.shorthand,
|
||||||
isCall: dep.call,
|
isCall: dep.call,
|
||||||
callContext: !dep.directImport,
|
callContext: !dep.directImport,
|
||||||
|
|
|
||||||
|
|
@ -13,7 +13,7 @@ module.exports = class ImportDependenciesBlock extends AsyncDependenciesBlock {
|
||||||
constructor(request, range, groupOptions, module, loc, originModule) {
|
constructor(request, range, groupOptions, module, loc, originModule) {
|
||||||
super(groupOptions, module, loc, request);
|
super(groupOptions, module, loc, request);
|
||||||
this.range = range;
|
this.range = range;
|
||||||
const dep = new ImportDependency(request, originModule, this);
|
const dep = new ImportDependency(request, this);
|
||||||
dep.loc = loc;
|
dep.loc = loc;
|
||||||
this.addDependency(dep);
|
this.addDependency(dep);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -12,9 +12,8 @@ const ModuleDependency = require("./ModuleDependency");
|
||||||
/** @typedef {import("../DependencyTemplate").DependencyTemplateContext} DependencyTemplateContext */
|
/** @typedef {import("../DependencyTemplate").DependencyTemplateContext} DependencyTemplateContext */
|
||||||
|
|
||||||
class ImportDependency extends ModuleDependency {
|
class ImportDependency extends ModuleDependency {
|
||||||
constructor(request, originModule, block) {
|
constructor(request, block) {
|
||||||
super(request);
|
super(request);
|
||||||
this.originModule = originModule;
|
|
||||||
this.block = block;
|
this.block = block;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -30,13 +29,13 @@ ImportDependency.Template = class ImportDependencyTemplate extends ModuleDepende
|
||||||
* @param {DependencyTemplateContext} templateContext the context object
|
* @param {DependencyTemplateContext} templateContext the context object
|
||||||
* @returns {void}
|
* @returns {void}
|
||||||
*/
|
*/
|
||||||
apply(dependency, source, { runtimeTemplate, moduleGraph }) {
|
apply(dependency, source, { runtimeTemplate, module, moduleGraph }) {
|
||||||
const dep = /** @type {ImportDependency} */ (dependency);
|
const dep = /** @type {ImportDependency} */ (dependency);
|
||||||
const content = runtimeTemplate.moduleNamespacePromise({
|
const content = runtimeTemplate.moduleNamespacePromise({
|
||||||
block: dep.block,
|
block: dep.block,
|
||||||
module: moduleGraph.getModule(dep),
|
module: moduleGraph.getModule(dep),
|
||||||
request: dep.request,
|
request: dep.request,
|
||||||
strict: dep.originModule.buildMeta.strictHarmonyModule,
|
strict: module.buildMeta.strictHarmonyModule,
|
||||||
message: "import()"
|
message: "import()"
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -12,9 +12,8 @@ const ModuleDependency = require("./ModuleDependency");
|
||||||
/** @typedef {import("../DependencyTemplate").DependencyTemplateContext} DependencyTemplateContext */
|
/** @typedef {import("../DependencyTemplate").DependencyTemplateContext} DependencyTemplateContext */
|
||||||
|
|
||||||
class ImportEagerDependency extends ModuleDependency {
|
class ImportEagerDependency extends ModuleDependency {
|
||||||
constructor(request, originModule, range) {
|
constructor(request, range) {
|
||||||
super(request);
|
super(request);
|
||||||
this.originModule = originModule;
|
|
||||||
this.range = range;
|
this.range = range;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -30,12 +29,12 @@ ImportEagerDependency.Template = class ImportEagerDependencyTemplate extends Mod
|
||||||
* @param {DependencyTemplateContext} templateContext the context object
|
* @param {DependencyTemplateContext} templateContext the context object
|
||||||
* @returns {void}
|
* @returns {void}
|
||||||
*/
|
*/
|
||||||
apply(dependency, source, { runtimeTemplate, moduleGraph }) {
|
apply(dependency, source, { runtimeTemplate, module, moduleGraph }) {
|
||||||
const dep = /** @type {ImportEagerDependency} */ (dependency);
|
const dep = /** @type {ImportEagerDependency} */ (dependency);
|
||||||
const content = runtimeTemplate.moduleNamespacePromise({
|
const content = runtimeTemplate.moduleNamespacePromise({
|
||||||
module: moduleGraph.getModule(dep),
|
module: moduleGraph.getModule(dep),
|
||||||
request: dep.request,
|
request: dep.request,
|
||||||
strict: dep.originModule.buildMeta.strictHarmonyModule,
|
strict: module.buildMeta.strictHarmonyModule,
|
||||||
message: "import() eager"
|
message: "import() eager"
|
||||||
});
|
});
|
||||||
source.replace(dep.range[0], dep.range[1] - 1, content);
|
source.replace(dep.range[0], dep.range[1] - 1, content);
|
||||||
|
|
|
||||||
|
|
@ -187,18 +187,10 @@ class ImportParserPlugin {
|
||||||
}
|
}
|
||||||
|
|
||||||
if (mode === "eager") {
|
if (mode === "eager") {
|
||||||
const dep = new ImportEagerDependency(
|
const dep = new ImportEagerDependency(param.string, expr.range);
|
||||||
param.string,
|
|
||||||
parser.state.module,
|
|
||||||
expr.range
|
|
||||||
);
|
|
||||||
parser.state.current.addDependency(dep);
|
parser.state.current.addDependency(dep);
|
||||||
} else if (mode === "weak") {
|
} else if (mode === "weak") {
|
||||||
const dep = new ImportWeakDependency(
|
const dep = new ImportWeakDependency(param.string, expr.range);
|
||||||
param.string,
|
|
||||||
parser.state.module,
|
|
||||||
expr.range
|
|
||||||
);
|
|
||||||
parser.state.current.addDependency(dep);
|
parser.state.current.addDependency(dep);
|
||||||
} else {
|
} else {
|
||||||
const depBlock = new ImportDependenciesBlock(
|
const depBlock = new ImportDependenciesBlock(
|
||||||
|
|
|
||||||
|
|
@ -12,9 +12,8 @@ const ModuleDependency = require("./ModuleDependency");
|
||||||
/** @typedef {import("../DependencyTemplate").DependencyTemplateContext} DependencyTemplateContext */
|
/** @typedef {import("../DependencyTemplate").DependencyTemplateContext} DependencyTemplateContext */
|
||||||
|
|
||||||
class ImportWeakDependency extends ModuleDependency {
|
class ImportWeakDependency extends ModuleDependency {
|
||||||
constructor(request, originModule, range) {
|
constructor(request, range) {
|
||||||
super(request);
|
super(request);
|
||||||
this.originModule = originModule;
|
|
||||||
this.range = range;
|
this.range = range;
|
||||||
this.weak = true;
|
this.weak = true;
|
||||||
}
|
}
|
||||||
|
|
@ -31,12 +30,12 @@ ImportWeakDependency.Template = class ImportDependencyTemplate extends ModuleDep
|
||||||
* @param {DependencyTemplateContext} templateContext the context object
|
* @param {DependencyTemplateContext} templateContext the context object
|
||||||
* @returns {void}
|
* @returns {void}
|
||||||
*/
|
*/
|
||||||
apply(dependency, source, { runtimeTemplate, moduleGraph }) {
|
apply(dependency, source, { runtimeTemplate, module, moduleGraph }) {
|
||||||
const dep = /** @type {ImportWeakDependency} */ (dependency);
|
const dep = /** @type {ImportWeakDependency} */ (dependency);
|
||||||
const content = runtimeTemplate.moduleNamespacePromise({
|
const content = runtimeTemplate.moduleNamespacePromise({
|
||||||
module: moduleGraph.getModule(dep),
|
module: moduleGraph.getModule(dep),
|
||||||
request: dep.request,
|
request: dep.request,
|
||||||
strict: dep.originModule.buildMeta.strictHarmonyModule,
|
strict: module.buildMeta.strictHarmonyModule,
|
||||||
message: "import() weak",
|
message: "import() weak",
|
||||||
weak: true
|
weak: true
|
||||||
});
|
});
|
||||||
|
|
|
||||||
|
|
@ -17,11 +17,6 @@ const ModuleDependency = require("./ModuleDependency");
|
||||||
/** @typedef {import("../util/createHash").Hash} Hash */
|
/** @typedef {import("../util/createHash").Hash} Hash */
|
||||||
|
|
||||||
class ModuleDecoratorDependency extends ModuleDependency {
|
class ModuleDecoratorDependency extends ModuleDependency {
|
||||||
constructor(request, originModule) {
|
|
||||||
super(request);
|
|
||||||
this.originModule = originModule;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Update the hash
|
* Update the hash
|
||||||
* @param {Hash} hash hash to be updated
|
* @param {Hash} hash hash to be updated
|
||||||
|
|
@ -50,17 +45,18 @@ ModuleDecoratorDependency.Template = class ModuleDecoratorDependencyTemplate ext
|
||||||
*/
|
*/
|
||||||
getInitFragments(dependency, { runtimeTemplate, moduleGraph }) {
|
getInitFragments(dependency, { runtimeTemplate, moduleGraph }) {
|
||||||
const dep = /** @type {ModuleDecoratorDependency} */ (dependency);
|
const dep = /** @type {ModuleDecoratorDependency} */ (dependency);
|
||||||
|
const originModule = moduleGraph.getOrigin(dep);
|
||||||
return [
|
return [
|
||||||
new InitFragment(
|
new InitFragment(
|
||||||
`/* module decorator */ ${
|
`/* module decorator */ ${
|
||||||
dep.originModule.moduleArgument
|
originModule.moduleArgument
|
||||||
} = ${runtimeTemplate.moduleExports({
|
} = ${runtimeTemplate.moduleExports({
|
||||||
module: moduleGraph.getModule(dep),
|
module: moduleGraph.getModule(dep),
|
||||||
request: dep.request
|
request: dep.request
|
||||||
})}(${dep.originModule.moduleArgument});\n`,
|
})}(${originModule.moduleArgument});\n`,
|
||||||
InitFragment.STAGE_PROVIDES,
|
InitFragment.STAGE_PROVIDES,
|
||||||
0,
|
0,
|
||||||
`module decorator ${dep.originModule.id}`
|
`module decorator ${originModule.id}`
|
||||||
)
|
)
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1282,7 +1282,7 @@ class HarmonyImportSpecifierDependencyConcatenatedTemplate extends DependencyTem
|
||||||
* @returns {void}
|
* @returns {void}
|
||||||
*/
|
*/
|
||||||
apply(dependency, source, templateContext) {
|
apply(dependency, source, templateContext) {
|
||||||
const { moduleGraph } = templateContext;
|
const { moduleGraph, module: parentModule } = templateContext;
|
||||||
const dep = /** @type {HarmonyImportSpecifierDependency} */ (dependency);
|
const dep = /** @type {HarmonyImportSpecifierDependency} */ (dependency);
|
||||||
const module = moduleGraph.getModule(dep);
|
const module = moduleGraph.getModule(dep);
|
||||||
const info = this.modulesMap.get(module);
|
const info = this.modulesMap.get(module);
|
||||||
|
|
@ -1292,7 +1292,7 @@ class HarmonyImportSpecifierDependencyConcatenatedTemplate extends DependencyTem
|
||||||
}
|
}
|
||||||
let content;
|
let content;
|
||||||
const callFlag = dep.call ? "_call" : "";
|
const callFlag = dep.call ? "_call" : "";
|
||||||
const strictFlag = dep.originModule.buildMeta.strictHarmonyModule
|
const strictFlag = parentModule.buildMeta.strictHarmonyModule
|
||||||
? "_strict"
|
? "_strict"
|
||||||
: "";
|
: "";
|
||||||
const id = dep.getId(moduleGraph);
|
const id = dep.getId(moduleGraph);
|
||||||
|
|
@ -1371,7 +1371,7 @@ class HarmonyExportSpecifierDependencyConcatenatedTemplate extends DependencyTem
|
||||||
*/
|
*/
|
||||||
getInitFragments(dependency, templateContext) {
|
getInitFragments(dependency, templateContext) {
|
||||||
const dep = /** @type {HarmonyExportSpecifierDependency} */ (dependency);
|
const dep = /** @type {HarmonyExportSpecifierDependency} */ (dependency);
|
||||||
if (dep.originModule === this.rootModule) {
|
if (templateContext.module === this.rootModule) {
|
||||||
return this.originalTemplate.getInitFragments(dep, templateContext);
|
return this.originalTemplate.getInitFragments(dep, templateContext);
|
||||||
} else {
|
} else {
|
||||||
return null;
|
return null;
|
||||||
|
|
@ -1385,8 +1385,7 @@ class HarmonyExportSpecifierDependencyConcatenatedTemplate extends DependencyTem
|
||||||
* @returns {void}
|
* @returns {void}
|
||||||
*/
|
*/
|
||||||
apply(dependency, source, templateContext) {
|
apply(dependency, source, templateContext) {
|
||||||
const dep = /** @type {HarmonyExportSpecifierDependency} */ (dependency);
|
if (templateContext.module === this.rootModule) {
|
||||||
if (dep.originModule === this.rootModule) {
|
|
||||||
this.originalTemplate.apply(dependency, source, templateContext);
|
this.originalTemplate.apply(dependency, source, templateContext);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -1405,17 +1404,13 @@ class HarmonyExportExpressionDependencyConcatenatedTemplate extends DependencyTe
|
||||||
* @param {DependencyTemplateContext} templateContext the context object
|
* @param {DependencyTemplateContext} templateContext the context object
|
||||||
* @returns {void}
|
* @returns {void}
|
||||||
*/
|
*/
|
||||||
apply(
|
apply(dependency, source, { module, moduleGraph }) {
|
||||||
dependency,
|
|
||||||
source,
|
|
||||||
{ runtimeTemplate, dependencyTemplates, moduleGraph }
|
|
||||||
) {
|
|
||||||
const dep = /** @type {HarmonyExportExpressionDependency} */ (dependency);
|
const dep = /** @type {HarmonyExportExpressionDependency} */ (dependency);
|
||||||
let content =
|
let content =
|
||||||
"/* harmony default export */ var __WEBPACK_MODULE_DEFAULT_EXPORT__ = ";
|
"/* harmony default export */ var __WEBPACK_MODULE_DEFAULT_EXPORT__ = ";
|
||||||
if (dep.originModule === this.rootModule) {
|
if (module === this.rootModule) {
|
||||||
const used = dep.originModule.getUsedName(moduleGraph, "default");
|
const used = module.getUsedName(moduleGraph, "default");
|
||||||
const exportsName = dep.originModule.exportsArgument;
|
const exportsName = module.exportsArgument;
|
||||||
if (used) {
|
if (used) {
|
||||||
content += `${exportsName}[${JSON.stringify(used)}] = `;
|
content += `${exportsName}[${JSON.stringify(used)}] = `;
|
||||||
}
|
}
|
||||||
|
|
@ -1497,14 +1492,14 @@ class HarmonyExportImportedSpecifierDependencyConcatenatedTemplate extends Depen
|
||||||
* @returns {void}
|
* @returns {void}
|
||||||
*/
|
*/
|
||||||
apply(dependency, source, templateContext) {
|
apply(dependency, source, templateContext) {
|
||||||
const { moduleGraph } = templateContext;
|
const { moduleGraph, module } = templateContext;
|
||||||
const dep = /** @type {HarmonyExportImportedSpecifierDependency} */ (dependency);
|
const dep = /** @type {HarmonyExportImportedSpecifierDependency} */ (dependency);
|
||||||
if (dep.originModule === this.rootModule) {
|
if (module === this.rootModule) {
|
||||||
if (this.modulesMap.get(moduleGraph.getModule(dep))) {
|
if (this.modulesMap.get(moduleGraph.getModule(dep))) {
|
||||||
const exportDefs = this.getExports(dep, { moduleGraph });
|
const exportDefs = this.getExports(dep, { moduleGraph });
|
||||||
for (const def of exportDefs) {
|
for (const def of exportDefs) {
|
||||||
const info = this.modulesMap.get(def.module);
|
const info = this.modulesMap.get(def.module);
|
||||||
const used = dep.originModule.getUsedName(moduleGraph, def.name);
|
const used = module.getUsedName(moduleGraph, def.name);
|
||||||
if (!used) {
|
if (!used) {
|
||||||
source.insert(
|
source.insert(
|
||||||
-1,
|
-1,
|
||||||
|
|
@ -1512,7 +1507,7 @@ class HarmonyExportImportedSpecifierDependencyConcatenatedTemplate extends Depen
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
let finalName;
|
let finalName;
|
||||||
const strictFlag = dep.originModule.buildMeta.strictHarmonyModule
|
const strictFlag = module.buildMeta.strictHarmonyModule
|
||||||
? "_strict"
|
? "_strict"
|
||||||
: "";
|
: "";
|
||||||
if (def.id === true) {
|
if (def.id === true) {
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue