@module-federation/enhanced 0.5.2 → 0.6.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/package.json +3 -2
- package/dist/src/declarations/plugins/container/WebpackError.d.ts +2 -1
- package/dist/src/lib/container/ContainerEntryDependency.d.ts +20 -22
- package/dist/src/lib/container/ContainerEntryModule.d.ts +77 -70
- package/dist/src/lib/container/ContainerEntryModuleFactory.d.ts +10 -14
- package/dist/src/lib/container/ContainerExposedDependency.d.ts +25 -18
- package/dist/src/lib/container/ContainerPlugin.js +4 -12
- package/dist/src/lib/container/ContainerPlugin.js.map +1 -1
- package/dist/src/lib/container/ContainerReferencePlugin.js +1 -3
- package/dist/src/lib/container/ContainerReferencePlugin.js.map +1 -1
- package/dist/src/lib/container/FallbackDependency.d.ts +20 -14
- package/dist/src/lib/container/FallbackItemDependency.d.ts +10 -3
- package/dist/src/lib/container/FallbackModule.d.ts +70 -52
- package/dist/src/lib/container/FallbackModuleFactory.d.ts +10 -10
- package/dist/src/lib/container/HoistContainerReferencesPlugin.d.ts +9 -4
- package/dist/src/lib/container/HoistContainerReferencesPlugin.js +165 -30
- package/dist/src/lib/container/HoistContainerReferencesPlugin.js.map +1 -1
- package/dist/src/lib/container/ModuleFederationPlugin.js +6 -9
- package/dist/src/lib/container/ModuleFederationPlugin.js.map +1 -1
- package/dist/src/lib/container/RemoteModule.d.ts +73 -88
- package/dist/src/lib/container/RemoteModule.js +0 -1
- package/dist/src/lib/container/RemoteModule.js.map +1 -1
- package/dist/src/lib/container/RemoteRuntimeModule.d.ts +7 -10
- package/dist/src/lib/container/RemoteRuntimeModule.js +10 -0
- package/dist/src/lib/container/RemoteRuntimeModule.js.map +1 -1
- package/dist/src/lib/container/RemoteToExternalDependency.d.ts +9 -3
- package/dist/src/lib/container/options.d.ts +3 -12
- package/dist/src/lib/container/options.js +6 -7
- package/dist/src/lib/container/options.js.map +1 -1
- package/dist/src/lib/container/runtime/ChildCompilationRuntimePlugin.d.ts +21 -0
- package/dist/src/lib/container/runtime/ChildCompilationRuntimePlugin.js +215 -0
- package/dist/src/lib/container/runtime/ChildCompilationRuntimePlugin.js.map +1 -0
- package/dist/src/lib/container/runtime/EmbedFederationRuntimeModule.d.ts +9 -0
- package/dist/src/lib/container/runtime/EmbedFederationRuntimeModule.js +81 -0
- package/dist/src/lib/container/runtime/EmbedFederationRuntimeModule.js.map +1 -0
- package/dist/src/lib/container/runtime/EmbedFederationRuntimePlugin.d.ts +7 -0
- package/dist/src/lib/container/runtime/EmbedFederationRuntimePlugin.js +38 -0
- package/dist/src/lib/container/runtime/EmbedFederationRuntimePlugin.js.map +1 -0
- package/dist/src/lib/container/runtime/FederationRuntimeModule.d.ts +2 -2
- package/dist/src/lib/container/runtime/FederationRuntimeModule.js.map +1 -1
- package/dist/src/lib/container/runtime/FederationRuntimePlugin.d.ts +2 -2
- package/dist/src/lib/container/runtime/FederationRuntimePlugin.js +105 -39
- package/dist/src/lib/container/runtime/FederationRuntimePlugin.js.map +1 -1
- package/dist/src/lib/sharing/ConsumeSharedFallbackDependency.d.ts +10 -3
- package/dist/src/lib/sharing/ConsumeSharedModule.d.ts +104 -97
- package/dist/src/lib/sharing/ConsumeSharedPlugin.d.ts +6 -28
- package/dist/src/lib/sharing/ConsumeSharedPlugin.js +1 -3
- package/dist/src/lib/sharing/ConsumeSharedPlugin.js.map +1 -1
- package/dist/src/lib/sharing/ConsumeSharedRuntimeModule.d.ts +11 -29
- package/dist/src/lib/sharing/ConsumeSharedRuntimeModule.js +7 -0
- package/dist/src/lib/sharing/ConsumeSharedRuntimeModule.js.map +1 -1
- package/dist/src/lib/sharing/ProvideForSharedDependency.d.ts +11 -3
- package/dist/src/lib/sharing/ProvideSharedDependency.d.ts +37 -35
- package/dist/src/lib/sharing/ProvideSharedModule.d.ts +83 -65
- package/dist/src/lib/sharing/ProvideSharedModuleFactory.d.ts +10 -17
- package/dist/src/lib/sharing/ProvideSharedPlugin.d.ts +19 -37
- package/dist/src/lib/sharing/ProvideSharedPlugin.js +1 -3
- package/dist/src/lib/sharing/ProvideSharedPlugin.js.map +1 -1
- package/dist/src/lib/sharing/SharePlugin.d.ts +13 -39
- package/dist/src/lib/sharing/ShareRuntimeModule.d.ts +7 -12
- package/dist/src/lib/sharing/resolveMatchedConfigs.d.ts +8 -12
- package/dist/src/lib/sharing/utils.d.ts +29 -21
- package/dist/src/lib/startup/MfStartupChunkDependenciesPlugin.d.ts +11 -0
- package/dist/src/lib/startup/MfStartupChunkDependenciesPlugin.js +94 -0
- package/dist/src/lib/startup/MfStartupChunkDependenciesPlugin.js.map +1 -0
- package/dist/src/lib/startup/StartupHelpers.d.ts +6 -0
- package/dist/src/lib/startup/StartupHelpers.js +190 -0
- package/dist/src/lib/startup/StartupHelpers.js.map +1 -0
- package/dist/src/webpack.js.map +1 -1
- package/dist/src/wrapper/HoistContainerReferencesPlugin.d.ts +5 -2
- package/dist/src/wrapper/HoistContainerReferencesPlugin.js +7 -3
- package/dist/src/wrapper/HoistContainerReferencesPlugin.js.map +1 -1
- package/package.json +10 -9
- package/dist/src/declarations/plugins/container/Module.d.ts +0 -138
- package/dist/src/schemas/container/ModuleFederationPlugin.check.js +0 -4001
- package/dist/src/schemas/container/ModuleFederationPlugin.check.js.map +0 -1
- package/dist/src/schemas/container/ModuleFederationPlugin.d.ts +0 -678
- package/dist/src/schemas/container/ModuleFederationPlugin.js +0 -774
- package/dist/src/schemas/container/ModuleFederationPlugin.js.map +0 -1
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
3
|
+
exports.parseOptions = parseOptions;
|
|
4
|
+
exports.scope = scope;
|
|
4
5
|
/** @template T @typedef {(string | Record<string, string | string[] | T>)[] | Record<string, string | string[] | T>} ContainerOptionsFormat */
|
|
5
6
|
/**
|
|
6
7
|
* @template T
|
|
@@ -56,26 +57,24 @@ const process = (options, normalizeSimple, normalizeOptions, fn) => {
|
|
|
56
57
|
* @param {function(T, string) : R} normalizeOptions normalize a complex item
|
|
57
58
|
* @returns {[string, R][]} parsed options
|
|
58
59
|
*/
|
|
59
|
-
|
|
60
|
+
function parseOptions(options, normalizeSimple, normalizeOptions) {
|
|
60
61
|
const items = [];
|
|
61
62
|
process(options, normalizeSimple, normalizeOptions, (key, value) => {
|
|
62
63
|
items.push([key, value]);
|
|
63
64
|
});
|
|
64
65
|
return items;
|
|
65
|
-
}
|
|
66
|
-
exports.parseOptions = parseOptions;
|
|
66
|
+
}
|
|
67
67
|
/**
|
|
68
68
|
* @template T
|
|
69
69
|
* @param {string} scope scope name
|
|
70
70
|
* @param {ContainerOptionsFormat<T>} options options passed by the user
|
|
71
71
|
* @returns {Record<string, string | string[] | T>} options to spread or pass
|
|
72
72
|
*/
|
|
73
|
-
|
|
73
|
+
function scope(scope, options) {
|
|
74
74
|
const obj = {};
|
|
75
75
|
process(options, (item) => item, (item) => item, (key, value) => {
|
|
76
76
|
obj[key.startsWith('./') ? `${scope}${key.slice(1)}` : `${scope}/${key}`] = value;
|
|
77
77
|
});
|
|
78
78
|
return obj;
|
|
79
|
-
}
|
|
80
|
-
exports.scope = scope;
|
|
79
|
+
}
|
|
81
80
|
//# sourceMappingURL=options.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"options.js","sourceRoot":"","sources":["../../../../src/lib/container/options.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"options.js","sourceRoot":"","sources":["../../../../src/lib/container/options.ts"],"names":[],"mappings":";;AAkEA,oCAUC;AAQD,sBAgBC;AA5FD,+IAA+I;AAE/I;;;;;;;;GAQG;AACH,MAAM,OAAO,GAAG,CACd,OAAkC,EAClC,eAA6D,EAC7D,gBAA8C,EAC9C,EAAmC,EAC7B,EAAE;IACR,MAAM,KAAK,GAAG,CACZ,KAAyD,EACnD,EAAE;QACR,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;gBAC7B,EAAE,CAAC,IAAI,EAAE,eAAe,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;YACxC,CAAC;iBAAM,IAAI,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;gBAC5C,MAAM,CAAC,IAA6C,CAAC,CAAC;YACxD,CAAC;iBAAM,CAAC;gBACN,MAAM,IAAI,KAAK,CAAC,2BAA2B,CAAC,CAAC;YAC/C,CAAC;QACH,CAAC;IACH,CAAC,CAAC;IACF,MAAM,MAAM,GAAG,CAAC,GAA0C,EAAQ,EAAE;QAClE,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;YAC/C,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;gBACtD,EAAE,CAAC,GAAG,EAAE,eAAe,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC;YACvC,CAAC;iBAAM,CAAC;gBACN,EAAE,CAAC,GAAG,EAAE,gBAAgB,CAAC,KAAU,EAAE,GAAG,CAAC,CAAC,CAAC;YAC7C,CAAC;QACH,CAAC;IACH,CAAC,CAAC;IACF,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,OAAO;IACT,CAAC;SAAM,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;QAClC,KAAK,CAAC,OAAO,CAAC,CAAC;IACjB,CAAC;SAAM,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE,CAAC;QACvC,MAAM,CAAC,OAAO,CAAC,CAAC;IAClB,CAAC;SAAM,CAAC;QACN,MAAM,IAAI,KAAK,CAAC,2BAA2B,CAAC,CAAC;IAC/C,CAAC;AACH,CAAC,CAAC;AAEF;;;;;;;GAOG;AACH,SAAgB,YAAY,CAC1B,OAAkC,EAClC,eAA6D,EAC7D,gBAA8C;IAE9C,MAAM,KAAK,GAAkB,EAAE,CAAC;IAChC,OAAO,CAAC,OAAO,EAAE,eAAe,EAAE,gBAAgB,EAAE,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE;QACjE,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC;IAC3B,CAAC,CAAC,CAAC;IACH,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;;;GAKG;AACH,SAAgB,KAAK,CACnB,KAAa,EACb,OAAkC;IAElC,MAAM,GAAG,GAA0C,EAAE,CAAC;IACtD,OAAO,CACL,OAAO,EACP,CAAC,IAAI,EAAE,EAAE,CAAC,IAA6B,EACvC,CAAC,IAAI,EAAE,EAAE,CAAC,IAA6B,EACvC,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE;QACb,GAAG,CACD,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,KAAK,IAAI,GAAG,EAAE,CACrE,GAAG,KAAK,CAAC;IACZ,CAAC,CACF,CAAC;IACF,OAAO,GAAG,CAAC;AACb,CAAC"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import type { Compiler } from 'webpack';
|
|
2
|
+
declare const RuntimeModule: typeof import("webpack").RuntimeModule;
|
|
3
|
+
declare class RuntimeModuleChunkPlugin {
|
|
4
|
+
apply(compiler: Compiler): void;
|
|
5
|
+
}
|
|
6
|
+
declare class CustomRuntimePlugin {
|
|
7
|
+
private entryModule?;
|
|
8
|
+
private bundlerRuntimePath;
|
|
9
|
+
private tempDir;
|
|
10
|
+
constructor(path: string, tempDir: string);
|
|
11
|
+
apply(compiler: Compiler): void;
|
|
12
|
+
}
|
|
13
|
+
declare class CustomRuntimeModule extends RuntimeModule {
|
|
14
|
+
private readonly entryPath;
|
|
15
|
+
private bundledCode;
|
|
16
|
+
private entryModuleId;
|
|
17
|
+
constructor(entryPath: string, entryModuleId: string | number | undefined);
|
|
18
|
+
identifier(): string;
|
|
19
|
+
generate(): string;
|
|
20
|
+
}
|
|
21
|
+
export { CustomRuntimePlugin, CustomRuntimeModule, RuntimeModuleChunkPlugin };
|
|
@@ -0,0 +1,215 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// This stores the previous child compilation based solution
|
|
3
|
+
// it is not currently used
|
|
4
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
5
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
6
|
+
};
|
|
7
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
8
|
+
exports.RuntimeModuleChunkPlugin = exports.CustomRuntimeModule = exports.CustomRuntimePlugin = void 0;
|
|
9
|
+
const normalize_webpack_path_1 = require("@module-federation/sdk/normalize-webpack-path");
|
|
10
|
+
const utils_1 = require("./utils");
|
|
11
|
+
const fs_1 = __importDefault(require("fs"));
|
|
12
|
+
const path_1 = __importDefault(require("path"));
|
|
13
|
+
const webpack_sources_1 = require("webpack-sources");
|
|
14
|
+
const core_1 = require("@swc/core");
|
|
15
|
+
const { RuntimeModule, Template, RuntimeGlobals } = require((0, normalize_webpack_path_1.normalizeWebpackPath)('webpack'));
|
|
16
|
+
const onceForCompilationMap = new WeakMap();
|
|
17
|
+
const federationGlobal = (0, utils_1.getFederationGlobalScope)(RuntimeGlobals);
|
|
18
|
+
class RuntimeModuleChunkPlugin {
|
|
19
|
+
apply(compiler) {
|
|
20
|
+
compiler.hooks.thisCompilation.tap('ModuleChunkFormatPlugin', (compilation) => {
|
|
21
|
+
compilation.hooks.optimizeModuleIds.tap('ModuleChunkFormatPlugin', (modules) => {
|
|
22
|
+
for (const module of modules) {
|
|
23
|
+
const moduleId = compilation.chunkGraph.getModuleId(module);
|
|
24
|
+
if (typeof moduleId === 'string') {
|
|
25
|
+
compilation.chunkGraph.setModuleId(module, `(embed)${moduleId}`);
|
|
26
|
+
}
|
|
27
|
+
else {
|
|
28
|
+
compilation.chunkGraph.setModuleId(module, `1000${moduleId}`);
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
});
|
|
32
|
+
const hooks = compiler.webpack.javascript.JavascriptModulesPlugin.getCompilationHooks(compilation);
|
|
33
|
+
hooks.renderChunk.tap('ModuleChunkFormatPlugin', (modules, renderContext) => {
|
|
34
|
+
const { chunk, chunkGraph } = renderContext;
|
|
35
|
+
const source = new webpack_sources_1.ConcatSource();
|
|
36
|
+
source.add('var federation = ');
|
|
37
|
+
source.add(modules);
|
|
38
|
+
source.add('\n');
|
|
39
|
+
const entries = Array.from(chunkGraph.getChunkEntryModulesWithChunkGroupIterable(chunk));
|
|
40
|
+
for (let i = 0; i < entries.length; i++) {
|
|
41
|
+
const [module, entrypoint] = entries[i];
|
|
42
|
+
const final = i + 1 === entries.length;
|
|
43
|
+
const moduleId = chunkGraph.getModuleId(module);
|
|
44
|
+
source.add('\n');
|
|
45
|
+
if (final) {
|
|
46
|
+
source.add('for (var mod in federation) {\n');
|
|
47
|
+
source.add(`${RuntimeGlobals.moduleFactories}[mod] = federation[mod];\n`);
|
|
48
|
+
source.add('}\n');
|
|
49
|
+
source.add('federation = ');
|
|
50
|
+
}
|
|
51
|
+
source.add(`${RuntimeGlobals.require}(${typeof moduleId === 'number' ? moduleId : JSON.stringify(moduleId)});\n`);
|
|
52
|
+
}
|
|
53
|
+
return source;
|
|
54
|
+
});
|
|
55
|
+
});
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
exports.RuntimeModuleChunkPlugin = RuntimeModuleChunkPlugin;
|
|
59
|
+
class CustomRuntimePlugin {
|
|
60
|
+
constructor(path, tempDir) {
|
|
61
|
+
this.bundlerRuntimePath = path.replace('cjs', 'esm');
|
|
62
|
+
this.tempDir = tempDir;
|
|
63
|
+
}
|
|
64
|
+
apply(compiler) {
|
|
65
|
+
compiler.hooks.make.tapAsync('CustomRuntimePlugin', (compilation, callback) => {
|
|
66
|
+
if (onceForCompilationMap.has(compilation))
|
|
67
|
+
return callback();
|
|
68
|
+
onceForCompilationMap.set(compilation, null);
|
|
69
|
+
const target = compilation.options.target || 'default';
|
|
70
|
+
const outputPath = path_1.default.join(this.tempDir, `${target}-custom-runtime-bundle.js`);
|
|
71
|
+
if (fs_1.default.existsSync(outputPath)) {
|
|
72
|
+
const source = fs_1.default.readFileSync(outputPath, 'utf-8');
|
|
73
|
+
onceForCompilationMap.set(compiler, source);
|
|
74
|
+
return callback();
|
|
75
|
+
}
|
|
76
|
+
if (onceForCompilationMap.has(compiler))
|
|
77
|
+
return callback();
|
|
78
|
+
onceForCompilationMap.set(compiler, null);
|
|
79
|
+
const childCompiler = compilation.createChildCompiler('EmbedFederationRuntimeCompiler', {
|
|
80
|
+
filename: '[name].js',
|
|
81
|
+
library: {
|
|
82
|
+
type: 'var',
|
|
83
|
+
name: 'federation',
|
|
84
|
+
export: 'default',
|
|
85
|
+
},
|
|
86
|
+
}, [
|
|
87
|
+
new compiler.webpack.EntryPlugin(compiler.context, this.bundlerRuntimePath, {
|
|
88
|
+
name: 'custom-runtime-bundle',
|
|
89
|
+
runtime: 'other',
|
|
90
|
+
}),
|
|
91
|
+
new compiler.webpack.library.EnableLibraryPlugin('var'),
|
|
92
|
+
new RuntimeModuleChunkPlugin(),
|
|
93
|
+
]);
|
|
94
|
+
childCompiler.context = compiler.context;
|
|
95
|
+
childCompiler.options.devtool = undefined;
|
|
96
|
+
childCompiler.options.optimization.splitChunks = false;
|
|
97
|
+
childCompiler.options.optimization.removeAvailableModules = true;
|
|
98
|
+
console.log('Creating child compiler for', this.bundlerRuntimePath);
|
|
99
|
+
childCompiler.hooks.thisCompilation.tap(this.constructor.name, (childCompilation) => {
|
|
100
|
+
childCompilation.hooks.processAssets.tap(this.constructor.name, () => {
|
|
101
|
+
const source = childCompilation.assets['custom-runtime-bundle.js'] &&
|
|
102
|
+
childCompilation.assets['custom-runtime-bundle.js'].source();
|
|
103
|
+
const entry = childCompilation.entrypoints.get('custom-runtime-bundle');
|
|
104
|
+
const entryChunk = entry?.getEntrypointChunk();
|
|
105
|
+
if (entryChunk) {
|
|
106
|
+
const entryModule = Array.from(childCompilation.chunkGraph.getChunkEntryModulesIterable(entryChunk))[0];
|
|
107
|
+
this.entryModule =
|
|
108
|
+
childCompilation.chunkGraph.getModuleId(entryModule);
|
|
109
|
+
}
|
|
110
|
+
onceForCompilationMap.set(compilation, source);
|
|
111
|
+
onceForCompilationMap.set(compiler, source);
|
|
112
|
+
fs_1.default.writeFileSync(outputPath, source);
|
|
113
|
+
console.log('got compilation asset');
|
|
114
|
+
childCompilation.chunks.forEach((chunk) => {
|
|
115
|
+
chunk.files.forEach((file) => {
|
|
116
|
+
childCompilation.deleteAsset(file);
|
|
117
|
+
});
|
|
118
|
+
});
|
|
119
|
+
});
|
|
120
|
+
});
|
|
121
|
+
childCompiler.runAsChild((err, entries, childCompilation) => {
|
|
122
|
+
if (err) {
|
|
123
|
+
return callback(err);
|
|
124
|
+
}
|
|
125
|
+
if (!childCompilation) {
|
|
126
|
+
console.warn('Embed Federation Runtime: Child compilation is undefined');
|
|
127
|
+
return callback();
|
|
128
|
+
}
|
|
129
|
+
if (childCompilation.errors.length) {
|
|
130
|
+
return callback(childCompilation.errors[0]);
|
|
131
|
+
}
|
|
132
|
+
console.log('Code built successfully');
|
|
133
|
+
callback();
|
|
134
|
+
});
|
|
135
|
+
});
|
|
136
|
+
compiler.hooks.thisCompilation.tap('CustomRuntimePlugin', (compilation) => {
|
|
137
|
+
const handler = (chunk, runtimeRequirements) => {
|
|
138
|
+
if (chunk.id === 'build time chunk') {
|
|
139
|
+
return;
|
|
140
|
+
}
|
|
141
|
+
if (runtimeRequirements.has('embeddedFederationRuntime'))
|
|
142
|
+
return;
|
|
143
|
+
if (!runtimeRequirements.has(federationGlobal)) {
|
|
144
|
+
return;
|
|
145
|
+
}
|
|
146
|
+
const bundledCode = onceForCompilationMap.get(compilation);
|
|
147
|
+
if (!bundledCode)
|
|
148
|
+
return;
|
|
149
|
+
runtimeRequirements.add('embeddedFederationRuntime');
|
|
150
|
+
const runtimeModule = new CustomRuntimeModule(bundledCode, this.entryModule);
|
|
151
|
+
compilation.addRuntimeModule(chunk, runtimeModule);
|
|
152
|
+
console.log(`Custom runtime module added to chunk: ${chunk.name}`);
|
|
153
|
+
};
|
|
154
|
+
compilation.hooks.runtimeRequirementInTree
|
|
155
|
+
.for(federationGlobal)
|
|
156
|
+
.tap('CustomRuntimePlugin', handler);
|
|
157
|
+
});
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
exports.CustomRuntimePlugin = CustomRuntimePlugin;
|
|
161
|
+
class CustomRuntimeModule extends RuntimeModule {
|
|
162
|
+
constructor(entryPath, entryModuleId) {
|
|
163
|
+
super('CustomRuntimeModule', RuntimeModule.STAGE_BASIC);
|
|
164
|
+
this.entryPath = entryPath;
|
|
165
|
+
this.bundledCode = null;
|
|
166
|
+
this.entryPath = entryPath;
|
|
167
|
+
this.entryModuleId = entryModuleId;
|
|
168
|
+
}
|
|
169
|
+
identifier() {
|
|
170
|
+
return 'webpack/runtime/embed/federation';
|
|
171
|
+
}
|
|
172
|
+
generate() {
|
|
173
|
+
const runtimeModule = this.entryPath;
|
|
174
|
+
const { code: transformedCode } = (0, core_1.transformSync)(this.entryPath.replace('var federation;', 'var federation = '), {
|
|
175
|
+
jsc: {
|
|
176
|
+
parser: {
|
|
177
|
+
syntax: 'ecmascript',
|
|
178
|
+
jsx: false,
|
|
179
|
+
},
|
|
180
|
+
target: 'es2022',
|
|
181
|
+
minify: {
|
|
182
|
+
compress: {
|
|
183
|
+
unused: true,
|
|
184
|
+
dead_code: true,
|
|
185
|
+
drop_debugger: true,
|
|
186
|
+
},
|
|
187
|
+
mangle: false,
|
|
188
|
+
format: {
|
|
189
|
+
comments: false,
|
|
190
|
+
},
|
|
191
|
+
},
|
|
192
|
+
},
|
|
193
|
+
});
|
|
194
|
+
return Template.asString([
|
|
195
|
+
runtimeModule,
|
|
196
|
+
transformedCode,
|
|
197
|
+
`for (var mod in federation) {
|
|
198
|
+
${Template.indent(`${RuntimeGlobals.moduleFactories}[mod] = federation[mod];`)}
|
|
199
|
+
}`,
|
|
200
|
+
`federation = ${RuntimeGlobals.require}(${JSON.stringify(this.entryModuleId)});`,
|
|
201
|
+
`federation = ${RuntimeGlobals.compatGetDefaultExport}(federation)();`,
|
|
202
|
+
`var prevFederation = ${federationGlobal}`,
|
|
203
|
+
`${federationGlobal} = {}`,
|
|
204
|
+
`for (var key in federation) {`,
|
|
205
|
+
Template.indent(`${federationGlobal}[key] = federation[key];`),
|
|
206
|
+
`}`,
|
|
207
|
+
`for (var key in prevFederation) {`,
|
|
208
|
+
Template.indent(`${federationGlobal}[key] = prevFederation[key];`),
|
|
209
|
+
`}`,
|
|
210
|
+
'federation = undefined;',
|
|
211
|
+
]);
|
|
212
|
+
}
|
|
213
|
+
}
|
|
214
|
+
exports.CustomRuntimeModule = CustomRuntimeModule;
|
|
215
|
+
//# sourceMappingURL=ChildCompilationRuntimePlugin.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ChildCompilationRuntimePlugin.js","sourceRoot":"","sources":["../../../../../src/lib/container/runtime/ChildCompilationRuntimePlugin.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
declare const RuntimeModule: typeof import("webpack").RuntimeModule;
|
|
2
|
+
declare class EmbedFederationRuntimeModule extends RuntimeModule {
|
|
3
|
+
private bundlerRuntimePath;
|
|
4
|
+
constructor(bundlerRuntimePath: string);
|
|
5
|
+
identifier(): string;
|
|
6
|
+
generate(): string | null;
|
|
7
|
+
private findModule;
|
|
8
|
+
}
|
|
9
|
+
export default EmbedFederationRuntimeModule;
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const normalize_webpack_path_1 = require("@module-federation/sdk/normalize-webpack-path");
|
|
4
|
+
const utils_1 = require("./utils");
|
|
5
|
+
const { RuntimeModule, NormalModule, Template, RuntimeGlobals } = require((0, normalize_webpack_path_1.normalizeWebpackPath)('webpack'));
|
|
6
|
+
const ConcatenatedModule = require((0, normalize_webpack_path_1.normalizeWebpackPath)('webpack/lib/optimize/ConcatenatedModule'));
|
|
7
|
+
const federationGlobal = (0, utils_1.getFederationGlobalScope)(RuntimeGlobals);
|
|
8
|
+
class EmbedFederationRuntimeModule extends RuntimeModule {
|
|
9
|
+
constructor(bundlerRuntimePath) {
|
|
10
|
+
super('EmbedFederationRuntimeModule', RuntimeModule.STAGE_ATTACH);
|
|
11
|
+
this.bundlerRuntimePath = bundlerRuntimePath;
|
|
12
|
+
}
|
|
13
|
+
identifier() {
|
|
14
|
+
return 'webpack/runtime/embed/federation';
|
|
15
|
+
}
|
|
16
|
+
generate() {
|
|
17
|
+
const { compilation, chunk, chunkGraph, bundlerRuntimePath } = this;
|
|
18
|
+
if (!chunk || !chunkGraph || !compilation) {
|
|
19
|
+
return null;
|
|
20
|
+
}
|
|
21
|
+
const found = this.findModule(chunk, bundlerRuntimePath);
|
|
22
|
+
if (!found)
|
|
23
|
+
return null;
|
|
24
|
+
const initRuntimeModuleGetter = compilation.runtimeTemplate.moduleRaw({
|
|
25
|
+
module: found,
|
|
26
|
+
chunkGraph,
|
|
27
|
+
request: this.bundlerRuntimePath,
|
|
28
|
+
weak: false,
|
|
29
|
+
runtimeRequirements: new Set(),
|
|
30
|
+
});
|
|
31
|
+
const exportExpr = compilation.runtimeTemplate.exportFromImport({
|
|
32
|
+
moduleGraph: compilation.moduleGraph,
|
|
33
|
+
module: found,
|
|
34
|
+
request: this.bundlerRuntimePath,
|
|
35
|
+
exportName: ['default'],
|
|
36
|
+
originModule: found,
|
|
37
|
+
asiSafe: true,
|
|
38
|
+
isCall: false,
|
|
39
|
+
callContext: false,
|
|
40
|
+
defaultInterop: true,
|
|
41
|
+
importVar: 'federation',
|
|
42
|
+
initFragments: [],
|
|
43
|
+
runtime: chunk.runtime,
|
|
44
|
+
runtimeRequirements: new Set(),
|
|
45
|
+
});
|
|
46
|
+
return Template.asString([
|
|
47
|
+
`var federation = ${initRuntimeModuleGetter};`,
|
|
48
|
+
`federation = ${exportExpr}`,
|
|
49
|
+
`var prevFederation = ${federationGlobal};`,
|
|
50
|
+
`${federationGlobal} = {};`,
|
|
51
|
+
`for (var key in federation) {`,
|
|
52
|
+
Template.indent(`${federationGlobal}[key] = federation[key];`),
|
|
53
|
+
`}`,
|
|
54
|
+
`for (var key in prevFederation) {`,
|
|
55
|
+
Template.indent(`${federationGlobal}[key] = prevFederation[key];`),
|
|
56
|
+
`}`,
|
|
57
|
+
'federation = undefined;',
|
|
58
|
+
]);
|
|
59
|
+
}
|
|
60
|
+
findModule(chunk, bundlerRuntimePath) {
|
|
61
|
+
const { chunkGraph, compilation } = this;
|
|
62
|
+
if (!chunk || !chunkGraph || !compilation) {
|
|
63
|
+
return null;
|
|
64
|
+
}
|
|
65
|
+
for (const mod of chunkGraph.getChunkModulesIterable(chunk)) {
|
|
66
|
+
if (mod instanceof NormalModule && mod.resource === bundlerRuntimePath) {
|
|
67
|
+
return mod;
|
|
68
|
+
}
|
|
69
|
+
if (mod instanceof ConcatenatedModule) {
|
|
70
|
+
for (const m of mod.modules) {
|
|
71
|
+
if (m instanceof NormalModule && m.resource === bundlerRuntimePath) {
|
|
72
|
+
return mod;
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
return null;
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
exports.default = EmbedFederationRuntimeModule;
|
|
81
|
+
//# sourceMappingURL=EmbedFederationRuntimeModule.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"EmbedFederationRuntimeModule.js","sourceRoot":"","sources":["../../../../../src/lib/container/runtime/EmbedFederationRuntimeModule.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
const normalize_webpack_path_1 = require("@module-federation/sdk/normalize-webpack-path");
|
|
7
|
+
const EmbedFederationRuntimeModule_1 = __importDefault(require("./EmbedFederationRuntimeModule"));
|
|
8
|
+
const { RuntimeGlobals } = require((0, normalize_webpack_path_1.normalizeWebpackPath)('webpack'));
|
|
9
|
+
const utils_1 = require("./utils");
|
|
10
|
+
const EntryDependency = require((0, normalize_webpack_path_1.normalizeWebpackPath)('webpack/lib/dependencies/EntryDependency'));
|
|
11
|
+
const federationGlobal = (0, utils_1.getFederationGlobalScope)(RuntimeGlobals);
|
|
12
|
+
class EmbedFederationRuntimePlugin {
|
|
13
|
+
constructor(path) {
|
|
14
|
+
this.bundlerRuntimePath = path;
|
|
15
|
+
}
|
|
16
|
+
apply(compiler) {
|
|
17
|
+
compiler.hooks.thisCompilation.tap('EmbedFederationRuntimePlugin', (compilation) => {
|
|
18
|
+
const handler = (chunk, runtimeRequirements) => {
|
|
19
|
+
if (chunk.id === 'build time chunk') {
|
|
20
|
+
return;
|
|
21
|
+
}
|
|
22
|
+
if (runtimeRequirements.has('embeddedFederationRuntime'))
|
|
23
|
+
return;
|
|
24
|
+
if (!runtimeRequirements.has(federationGlobal)) {
|
|
25
|
+
return;
|
|
26
|
+
}
|
|
27
|
+
runtimeRequirements.add('embeddedFederationRuntime');
|
|
28
|
+
const runtimeModule = new EmbedFederationRuntimeModule_1.default(this.bundlerRuntimePath);
|
|
29
|
+
compilation.addRuntimeModule(chunk, runtimeModule);
|
|
30
|
+
};
|
|
31
|
+
compilation.hooks.runtimeRequirementInTree
|
|
32
|
+
.for(federationGlobal)
|
|
33
|
+
.tap('EmbedFederationRuntimePlugin', handler);
|
|
34
|
+
});
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
exports.default = EmbedFederationRuntimePlugin;
|
|
38
|
+
//# sourceMappingURL=EmbedFederationRuntimePlugin.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"EmbedFederationRuntimePlugin.js","sourceRoot":"","sources":["../../../../../src/lib/container/runtime/EmbedFederationRuntimePlugin.ts"],"names":[],"mappings":";;;;;AAAA,0FAAqF;AACrF,kGAA0E;AAC1E,MAAM,EAAE,cAAc,EAAE,GAAG,OAAO,CAChC,IAAA,6CAAoB,EAAC,SAAS,CAAC,CACJ,CAAC;AAE9B,mCAAmD;AACnD,MAAM,eAAe,GAAG,OAAO,CAC7B,IAAA,6CAAoB,EAAC,0CAA0C,CAAC,CACJ,CAAC;AAE/D,MAAM,gBAAgB,GAAG,IAAA,gCAAwB,EAAC,cAAc,CAAC,CAAC;AAElE,MAAM,4BAA4B;IAGhC,YAAY,IAAY;QACtB,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC;IACjC,CAAC;IAED,KAAK,CAAC,QAAkB;QACtB,QAAQ,CAAC,KAAK,CAAC,eAAe,CAAC,GAAG,CAChC,8BAA8B,EAC9B,CAAC,WAAwB,EAAE,EAAE;YAC3B,MAAM,OAAO,GAAG,CAAC,KAAY,EAAE,mBAAgC,EAAE,EAAE;gBACjE,IAAI,KAAK,CAAC,EAAE,KAAK,kBAAkB,EAAE,CAAC;oBACpC,OAAO;gBACT,CAAC;gBACD,IAAI,mBAAmB,CAAC,GAAG,CAAC,2BAA2B,CAAC;oBAAE,OAAO;gBACjE,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,gBAAgB,CAAC,EAAE,CAAC;oBAC/C,OAAO;gBACT,CAAC;gBAED,mBAAmB,CAAC,GAAG,CAAC,2BAA2B,CAAC,CAAC;gBACrD,MAAM,aAAa,GAAG,IAAI,sCAA4B,CACpD,IAAI,CAAC,kBAAkB,CACxB,CAAC;gBAEF,WAAW,CAAC,gBAAgB,CAAC,KAAK,EAAE,aAAa,CAAC,CAAC;YACrD,CAAC,CAAC;YACF,WAAW,CAAC,KAAK,CAAC,wBAAwB;iBACvC,GAAG,CAAC,gBAAgB,CAAC;iBACrB,GAAG,CAAC,8BAA8B,EAAE,OAAO,CAAC,CAAC;QAClD,CAAC,CACF,CAAC;IACJ,CAAC;CACF;AAED,kBAAe,4BAA4B,CAAC"}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { NormalizedRuntimeInitOptionsWithOutShared } from '../../../types/runtime';
|
|
2
2
|
declare const RuntimeModule: typeof import("webpack").RuntimeModule;
|
|
3
3
|
declare class FederationRuntimeModule extends RuntimeModule {
|
|
4
|
-
runtimeRequirements:
|
|
4
|
+
runtimeRequirements: ReadonlySet<string>;
|
|
5
5
|
containerName: string;
|
|
6
6
|
initOptionsWithoutShared: NormalizedRuntimeInitOptionsWithOutShared;
|
|
7
|
-
constructor(runtimeRequirements:
|
|
7
|
+
constructor(runtimeRequirements: ReadonlySet<string>, containerName: string, initOptionsWithoutShared: NormalizedRuntimeInitOptionsWithOutShared);
|
|
8
8
|
/**
|
|
9
9
|
* @returns {string | null} runtime code
|
|
10
10
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FederationRuntimeModule.js","sourceRoot":"","sources":["../../../../../src/lib/container/runtime/FederationRuntimeModule.ts"],"names":[],"mappings":";;;;;AAAA,0FAAqF;AACrF,MAAM,qBAAqB,GAAG,OAAO,CACnC,IAAA,6CAAoB,EAAC,wCAAwC,CAAC,CACJ,CAAC;AAC7D,MAAM,EAAE,WAAW,EAAE,GAAG,OAAO,CAC7B,IAAA,6CAAoB,EAAC,6BAA6B,CAAC,CACJ,CAAC;AAClD,2CAA2C;AAC3C,gFAAwD;AAGxD,MAAM,EAAE,aAAa,EAAE,cAAc,EAAE,QAAQ,EAAE,GAAG,OAAO,CACzD,IAAA,6CAAoB,EAAC,SAAS,CAAC,CACJ,CAAC;AAE9B,MAAM,uBAAwB,SAAQ,aAAa;IAKjD,YACE,
|
|
1
|
+
{"version":3,"file":"FederationRuntimeModule.js","sourceRoot":"","sources":["../../../../../src/lib/container/runtime/FederationRuntimeModule.ts"],"names":[],"mappings":";;;;;AAAA,0FAAqF;AACrF,MAAM,qBAAqB,GAAG,OAAO,CACnC,IAAA,6CAAoB,EAAC,wCAAwC,CAAC,CACJ,CAAC;AAC7D,MAAM,EAAE,WAAW,EAAE,GAAG,OAAO,CAC7B,IAAA,6CAAoB,EAAC,6BAA6B,CAAC,CACJ,CAAC;AAClD,2CAA2C;AAC3C,gFAAwD;AAGxD,MAAM,EAAE,aAAa,EAAE,cAAc,EAAE,QAAQ,EAAE,GAAG,OAAO,CACzD,IAAA,6CAAoB,EAAC,SAAS,CAAC,CACJ,CAAC;AAE9B,MAAM,uBAAwB,SAAQ,aAAa;IAKjD,YACE,mBAAwC,EACxC,aAAqB,EACrB,wBAAmE;QAEnE,KAAK,CAAC,oBAAoB,EAAE,aAAa,CAAC,YAAY,GAAG,CAAC,CAAC,CAAC;QAC5D,IAAI,CAAC,mBAAmB,GAAG,mBAAmB,CAAC;QAC/C,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC;QACnC,IAAI,CAAC,wBAAwB,GAAG,wBAAwB,CAAC;IAC3D,CAAC;IAED;;OAEG;IACM,QAAQ;QACf,IAAI,OAAO,GAAqB,KAAK,CAAC;QACtC,IAAI,aAAiC,CAAC;QACtC,IAAI,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YACnC,MAAM,cAAc,GAClB,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,OAAO,EAAE,UAAU;gBAC3C,EAAE,uBAAuB;gBAC3B,OAAO,CACL,IAAA,6CAAoB,EAClB,gDAAgD,CACjD,CACF,CAAC;YACJ,MAAM,EAAE,UAAU,EAAE,GAAG,cAAc,CAAC;YACtC,IAAI,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,cAAc,CAAC,mBAAmB,CAAC,EAAE,CAAC;gBACrE,MAAM,YAAY,GAAG,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,oBAAoB,CACnE,IAAI,CAAC,KAAK,EACV,UAAU,CACX,CAAC;gBACF,MAAM,YAAY,GAAG,qBAAqB,CAAC,YAAY,CAAC,CAAC;gBACzD,IAAI,OAAO,YAAY,KAAK,SAAS,EAAE,CAAC;oBACtC,OAAO,GAAG,YAAY,CAAC;gBACzB,CAAC;qBAAM,CAAC;oBACN,OAAO,GAAG,YAAY,CAAC,SAAS,CAAC,CAAC;gBACpC,CAAC;gBACD,MAAM,UAAU,GAAG,IAAI,CAAC,WAAW,CAAC,OAAO,CACzC,cAAc,CAAC,wBAAwB,CACrC,IAAI,CAAC,KAAK,EACV,IAAI,CAAC,WAAW,CAAC,aAAa,CAC/B,EACD,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,eAAe,EAAE,YAAY,EAAE,CACrD,CAAC;gBACF,aAAa,GAAG,WAAW,CACzB,UAAU,EACV,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,IAAI,IAAI,EAAE,EACzC,KAAK,CACN,CAAC;YACJ,CAAC;QACH,CAAC;QAED,OAAO,QAAQ,CAAC,QAAQ,CAAC;YACvB,IAAA,6BAAmB,EACjB,QAAQ,EACR,cAAc,EACd,OAAO,EACP,aAAa,EACb,IAAI,CAAC,wBAAwB,CAC9B;SACF,CAAC,CAAC;IACL,CAAC;CACF;AACD,kBAAe,uBAAuB,CAAC"}
|
|
@@ -5,8 +5,8 @@ declare class FederationRuntimePlugin {
|
|
|
5
5
|
entryFilePath: string;
|
|
6
6
|
bundlerRuntimePath: string;
|
|
7
7
|
constructor(options?: moduleFederationPlugin.ModuleFederationPluginOptions);
|
|
8
|
-
static getTemplate(runtimePlugins: string[], bundlerRuntimePath?: string): string;
|
|
9
|
-
static getFilePath(containerName: string, runtimePlugins: string[], bundlerRuntimePath?: string): string;
|
|
8
|
+
static getTemplate(runtimePlugins: string[], bundlerRuntimePath?: string, experiments?: moduleFederationPlugin.ModuleFederationPluginOptions['experiments']): string;
|
|
9
|
+
static getFilePath(containerName: string, runtimePlugins: string[], bundlerRuntimePath?: string, experiments?: moduleFederationPlugin.ModuleFederationPluginOptions['experiments']): string;
|
|
10
10
|
getFilePath(): string;
|
|
11
11
|
ensureFile(): void;
|
|
12
12
|
prependEntry(compiler: Compiler): void;
|