in src/loader.js [1784:1850]
ModuleManager.prototype._onModuleComplete = function (module) {
var _this = this;
var recorder = this.getRecorder();
if (module.isComplete()) {
// already done
return;
}
var dependencies = module.dependencies;
var dependenciesValues = [];
if (dependencies) {
for (var i = 0, len = dependencies.length; i < len; i++) {
var dependency = dependencies[i];
if (dependency === RegularDependency.EXPORTS) {
dependenciesValues[i] = module.exports;
continue;
}
if (dependency === RegularDependency.MODULE) {
dependenciesValues[i] = {
id: module.strId,
config: function () {
return _this._config.getConfigForModule(module.strId);
}
};
continue;
}
if (dependency === RegularDependency.REQUIRE) {
dependenciesValues[i] = this._createRequire(module.moduleIdResolver);
continue;
}
var dependencyModule = this._modules2[dependency.id];
if (dependencyModule) {
dependenciesValues[i] = dependencyModule.exports;
continue;
}
dependenciesValues[i] = null;
}
}
var inversedependenciesProvider = function (moduleId) {
return (_this._inverseDependencies2[moduleId] || []).map(function (intModuleId) { return _this._moduleIdProvider.getStrModuleId(intModuleId); });
};
module.complete(recorder, this._config, dependenciesValues, inversedependenciesProvider);
// Fetch and clear inverse dependencies
var inverseDeps = this._inverseDependencies2[module.id];
this._inverseDependencies2[module.id] = null;
if (inverseDeps) {
// Resolve one inverse dependency at a time, always
// on the lookout for a completed module.
for (var i = 0, len = inverseDeps.length; i < len; i++) {
var inverseDependencyId = inverseDeps[i];
var inverseDependency = this._modules2[inverseDependencyId];
inverseDependency.unresolvedDependenciesCount--;
if (inverseDependency.unresolvedDependenciesCount === 0) {
this._onModuleComplete(inverseDependency);
}
}
}
var inversePluginDeps = this._inversePluginDependencies2.get(module.id);
if (inversePluginDeps) {
// This module is used as a plugin at least once
// Fetch and clear these inverse plugin dependencies
this._inversePluginDependencies2.delete(module.id);
// Resolve plugin dependencies one at a time
for (var i = 0, len = inversePluginDeps.length; i < len; i++) {
this._loadPluginDependency(module.exports, inversePluginDeps[i]);
}
}
};