@module-federation/enhanced
Version:
This package provides enhanced features for module federation.
41 lines (39 loc) • 1.88 kB
JavaScript
Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: 'Module' } });
const require_runtime = require('../../../_virtual/_rolldown/runtime.js');
let _module_federation_sdk_normalize_webpack_path = require("@module-federation/sdk/normalize-webpack-path");
let tapable = require("tapable");
//#region src/lib/container/runtime/FederationModulesPlugin.ts
require((0, _module_federation_sdk_normalize_webpack_path.normalizeWebpackPath)("webpack/lib/Compilation"));
/** @type {WeakMap<import("webpack").Compilation, CompilationHooks>} */
const compilationHooksMap = /* @__PURE__ */ new WeakMap();
const PLUGIN_NAME = "FederationModulesPlugin";
var FederationModulesPlugin = class FederationModulesPlugin {
/**
* @param {Compilation} compilation the compilation
* @returns {CompilationHooks} the attached hooks
*/
static getCompilationHooks(compilation) {
if (!(compilation && typeof compilation === "object" && typeof compilation.hooks === "object" && typeof compilation.hooks.processAssets?.tap === "function")) throw new TypeError("Invalid 'compilation' argument: expected a Webpack Compilation-like object");
let hooks = compilationHooksMap.get(compilation);
if (hooks === void 0) {
hooks = {
addContainerEntryDependency: new tapable.SyncHook(["dependency"]),
addFederationRuntimeDependency: new tapable.SyncHook(["dependency"]),
addRemoteDependency: new tapable.SyncHook(["dependency"])
};
compilationHooksMap.set(compilation, hooks);
}
return hooks;
}
constructor(options = {}) {
this.options = options;
}
apply(compiler) {
compiler.hooks.compilation.tap(PLUGIN_NAME, (compilation, { normalModuleFactory }) => {
FederationModulesPlugin.getCompilationHooks(compilation);
});
}
};
//#endregion
exports.default = FederationModulesPlugin;
//# sourceMappingURL=FederationModulesPlugin.js.map