@module-federation/nextjs-mf 5.5.0 → 5.6.0
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/README.md +1 -27
- package/{lib/client → client}/CombinedPages.d.ts +27 -28
- package/client/CombinedPages.js +38 -0
- package/client/CombinedPages.js.map +1 -0
- package/{lib/client → client}/MFClient.d.ts +72 -73
- package/client/MFClient.js +159 -0
- package/client/MFClient.js.map +1 -0
- package/{lib/client → client}/RemoteContainer.d.ts +46 -58
- package/client/RemoteContainer.js +121 -0
- package/client/RemoteContainer.js.map +1 -0
- package/{lib/client → client}/RemotePages.d.ts +49 -49
- package/client/RemotePages.js +138 -0
- package/client/RemotePages.js.map +1 -0
- package/{lib/client → client}/UrlNode.d.ts +17 -18
- package/{lib/client → client}/UrlNode.js +157 -161
- package/client/UrlNode.js.map +1 -0
- package/{lib/client → client}/helpers.d.ts +16 -17
- package/{lib/client → client}/helpers.js +90 -104
- package/client/helpers.js.map +1 -0
- package/client/index.d.ts +2 -0
- package/client/index.js +6 -0
- package/client/index.js.map +1 -0
- package/{lib/client → client}/useMFClient.d.ts +24 -25
- package/client/useMFClient.js +55 -0
- package/client/useMFClient.js.map +1 -0
- package/{lib/client → client}/useMFRemote.d.ts +16 -17
- package/client/useMFRemote.js +50 -0
- package/client/useMFRemote.js.map +1 -0
- package/jest.config.d.ts +13 -0
- package/jest.config.js +18 -0
- package/jest.config.js.map +1 -0
- package/package.json +19 -42
- package/src/include-defaults.d.ts +0 -0
- package/{lib → src}/include-defaults.js +4 -3
- package/src/include-defaults.js.map +1 -0
- package/src/index.d.ts +3 -0
- package/src/index.js +9 -0
- package/src/index.js.map +1 -0
- package/src/internal.d.ts +12 -0
- package/src/internal.js +260 -0
- package/src/internal.js.map +1 -0
- package/src/loaders/fixImageLoader.d.ts +16 -0
- package/src/loaders/fixImageLoader.js +53 -0
- package/src/loaders/fixImageLoader.js.map +1 -0
- package/src/loaders/fixUrlLoader.d.ts +13 -0
- package/src/loaders/fixUrlLoader.js +25 -0
- package/src/loaders/fixUrlLoader.js.map +1 -0
- package/src/loaders/helpers.d.ts +10 -0
- package/src/loaders/helpers.js +46 -0
- package/src/loaders/helpers.js.map +1 -0
- package/src/loaders/nextPageMapLoader.d.ts +15 -0
- package/src/loaders/nextPageMapLoader.js +151 -0
- package/src/loaders/nextPageMapLoader.js.map +1 -0
- package/src/loaders/patchNextClientPageLoader.d.ts +7 -0
- package/src/loaders/patchNextClientPageLoader.js +43 -0
- package/src/loaders/patchNextClientPageLoader.js.map +1 -0
- package/src/plugins/AddRuntimeRequirementToPromiseExternalPlugin.d.ts +5 -0
- package/src/plugins/AddRuntimeRequirementToPromiseExternalPlugin.js +19 -0
- package/src/plugins/AddRuntimeRequirementToPromiseExternalPlugin.js.map +1 -0
- package/src/plugins/ChildFederationPlugin.d.ts +9 -0
- package/src/plugins/ChildFederationPlugin.js +281 -0
- package/src/plugins/ChildFederationPlugin.js.map +1 -0
- package/src/plugins/DevHmrFixInvalidPongPlugin.d.ts +11 -0
- package/src/plugins/DevHmrFixInvalidPongPlugin.js +55 -0
- package/src/plugins/DevHmrFixInvalidPongPlugin.js.map +1 -0
- package/src/plugins/ModuleFederationPlugin.d.ts +7 -0
- package/src/plugins/ModuleFederationPlugin.js +50 -0
- package/src/plugins/ModuleFederationPlugin.js.map +1 -0
- package/src/plugins/NextFederationPlugin.d.ts +9 -0
- package/src/plugins/NextFederationPlugin.js +111 -0
- package/src/plugins/NextFederationPlugin.js.map +1 -0
- package/src/plugins/RemoveRRRuntimePlugin.d.ts +5 -0
- package/src/plugins/RemoveRRRuntimePlugin.js +39 -0
- package/src/plugins/RemoveRRRuntimePlugin.js.map +1 -0
- package/utils/Template.d.ts +148 -0
- package/utils/Template.js +381 -0
- package/utils/Template.js.map +1 -0
- package/utils/build-utils.d.ts +3 -0
- package/utils/build-utils.js +175 -0
- package/utils/build-utils.js.map +1 -0
- package/utils/index.d.ts +1 -0
- package/utils/index.js +7 -0
- package/utils/index.js.map +1 -0
- package/.prettierignore +0 -2
- package/.prettierrc +0 -7
- package/LICENSE +0 -21
- package/lib/ModuleFederationPlugin.js +0 -84
- package/lib/NextFederationPlugin.js +0 -513
- package/lib/_virtual/Template.js +0 -7
- package/lib/_virtual/UrlNode.js +0 -9
- package/lib/_virtual/_commonjsHelpers.js +0 -44
- package/lib/_virtual/_fast-glob.js +0 -16
- package/lib/_virtual/_fs.js +0 -16
- package/lib/_virtual/_path.js +0 -16
- package/lib/_virtual/_tslib.js +0 -277
- package/lib/_virtual/_webpack-sources.js +0 -16
- package/lib/_virtual/fs.js +0 -4
- package/lib/_virtual/fs2.js +0 -7
- package/lib/_virtual/helpers.js +0 -7
- package/lib/_virtual/nextPageMapLoader.js +0 -7
- package/lib/_virtual/options.js +0 -7
- package/lib/_virtual/utils.js +0 -7
- package/lib/build-utils.js +0 -176
- package/lib/client/CombinedPages.d.ts.map +0 -1
- package/lib/client/CombinedPages.js +0 -60
- package/lib/client/MFClient.d.ts.map +0 -1
- package/lib/client/MFClient.js +0 -213
- package/lib/client/RemoteContainer.d.ts.map +0 -1
- package/lib/client/RemoteContainer.js +0 -162
- package/lib/client/RemotePages.d.ts.map +0 -1
- package/lib/client/RemotePages.js +0 -194
- package/lib/client/UrlNode.d.ts.map +0 -1
- package/lib/client/helpers.d.ts.map +0 -1
- package/lib/client/useMFClient.d.ts.map +0 -1
- package/lib/client/useMFClient.js +0 -79
- package/lib/client/useMFRemote.d.ts.map +0 -1
- package/lib/client/useMFRemote.js +0 -72
- package/lib/dependencies/webpack/lib/Template.js +0 -437
- package/lib/dependencies/webpack/lib/container/options.js +0 -102
- package/lib/dependencies/webpack/lib/sharing/utils.js +0 -104
- package/lib/dependencies/webpack/lib/util/fs.js +0 -359
- package/lib/index.js +0 -3
- package/lib/internal.js +0 -271
- package/lib/loaders/UrlNode.js +0 -219
- package/lib/loaders/fixImageLoader.js +0 -65
- package/lib/loaders/fixUrlLoader.js +0 -25
- package/lib/loaders/helpers.js +0 -60
- package/lib/loaders/nextPageMapLoader.js +0 -200
- package/lib/loaders/patchNextClientPageLoader.js +0 -53
- package/lib/plugins/DevHmrFixInvalidPongPlugin.js +0 -82
- package/lib/utils.js +0 -125
- package/node-plugin/README.md +0 -27
- package/node-plugin/package.json +0 -4
- package/node-plugin/streaming/CommonJsChunkLoadingPlugin.js +0 -89
- package/node-plugin/streaming/LoadFileChunkLoadingRuntimeModule.js +0 -410
- package/node-plugin/streaming/NodeRuntime.js +0 -245
- package/node-plugin/streaming/index.js +0 -42
- package/node-plugin/streaming/loadScript.js +0 -51
- package/tsconfig.json +0 -33
|
@@ -0,0 +1,281 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ChildFederationPlugin = void 0;
|
|
4
|
+
const tslib_1 = require("tslib");
|
|
5
|
+
const path_1 = tslib_1.__importDefault(require("path"));
|
|
6
|
+
const fs_1 = tslib_1.__importDefault(require("fs"));
|
|
7
|
+
const nextPageMapLoader_1 = require("../loaders/nextPageMapLoader");
|
|
8
|
+
const helpers_1 = require("../loaders/helpers");
|
|
9
|
+
const internal_1 = require("../internal");
|
|
10
|
+
const utilities_1 = require("@module-federation/utilities");
|
|
11
|
+
const build_utils_1 = require("../../utils/build-utils");
|
|
12
|
+
const ModuleFederationPlugin_1 = tslib_1.__importDefault(require("./ModuleFederationPlugin"));
|
|
13
|
+
const RemoveRRRuntimePlugin_1 = tslib_1.__importDefault(require("./RemoveRRRuntimePlugin"));
|
|
14
|
+
const AddRuntimeRequirementToPromiseExternalPlugin_1 = tslib_1.__importDefault(require("./AddRuntimeRequirementToPromiseExternalPlugin"));
|
|
15
|
+
const CHILD_PLUGIN_NAME = 'ChildFederationPlugin';
|
|
16
|
+
const childCompilers = {};
|
|
17
|
+
class ChildFederationPlugin {
|
|
18
|
+
constructor(options, extraOptions) {
|
|
19
|
+
this._options = options;
|
|
20
|
+
this._extraOptions = extraOptions;
|
|
21
|
+
}
|
|
22
|
+
apply(compiler) {
|
|
23
|
+
const webpack = compiler.webpack;
|
|
24
|
+
const LibraryPlugin = webpack.library.EnableLibraryPlugin;
|
|
25
|
+
const LoaderTargetPlugin = webpack.LoaderTargetPlugin;
|
|
26
|
+
const library = compiler.options.output.library;
|
|
27
|
+
const isServer = compiler.options.name === 'server';
|
|
28
|
+
const isDev = compiler.options.mode === 'development';
|
|
29
|
+
let outputPath;
|
|
30
|
+
if (isDev && isServer) {
|
|
31
|
+
outputPath = path_1.default.join((0, internal_1.getOutputPath)(compiler), 'static/ssr');
|
|
32
|
+
}
|
|
33
|
+
else {
|
|
34
|
+
if (isServer) {
|
|
35
|
+
outputPath = path_1.default.join((0, internal_1.getOutputPath)(compiler), 'static/ssr');
|
|
36
|
+
}
|
|
37
|
+
else {
|
|
38
|
+
outputPath = compiler.options.output.path;
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
compiler.hooks.thisCompilation.tap(CHILD_PLUGIN_NAME, (compilation) => {
|
|
42
|
+
let plugins = [];
|
|
43
|
+
const buildName = this._options.name;
|
|
44
|
+
// using ModuleFederationPlugin does not work, i had to fork because of afterPlugins hook on containerPlugin.
|
|
45
|
+
const FederationPlugin = ModuleFederationPlugin_1.default;
|
|
46
|
+
const childOutput = {
|
|
47
|
+
...compiler.options.output,
|
|
48
|
+
path: outputPath,
|
|
49
|
+
// path: deriveOutputPath(isServer, compiler.options.output.path),
|
|
50
|
+
publicPath: 'auto',
|
|
51
|
+
chunkLoadingGlobal: buildName + 'chunkLoader',
|
|
52
|
+
uniqueName: buildName,
|
|
53
|
+
library: {
|
|
54
|
+
name: buildName,
|
|
55
|
+
type: library?.type,
|
|
56
|
+
},
|
|
57
|
+
chunkFilename: compiler.options.output.chunkFilename?.replace('.js', '-fed.js'),
|
|
58
|
+
filename: compiler.options.output.filename?.replace('.js', '-fed.js'),
|
|
59
|
+
};
|
|
60
|
+
const federationPluginOptions = {
|
|
61
|
+
// library: {type: 'var', name: buildName},
|
|
62
|
+
...this._options,
|
|
63
|
+
filename: (0, build_utils_1.computeRemoteFilename)(isServer, this._options.filename),
|
|
64
|
+
exposes: {
|
|
65
|
+
...this._options.exposes,
|
|
66
|
+
...(this._extraOptions.exposePages
|
|
67
|
+
? (0, nextPageMapLoader_1.exposeNextjsPages)(compiler.options.context)
|
|
68
|
+
: {}),
|
|
69
|
+
},
|
|
70
|
+
runtime: false,
|
|
71
|
+
shared: {
|
|
72
|
+
...(this._extraOptions.skipSharingNextInternals
|
|
73
|
+
? {}
|
|
74
|
+
: internal_1.externalizedShares),
|
|
75
|
+
...this._options.shared,
|
|
76
|
+
},
|
|
77
|
+
};
|
|
78
|
+
if (compiler.options.name === 'client') {
|
|
79
|
+
plugins = [
|
|
80
|
+
new FederationPlugin(federationPluginOptions),
|
|
81
|
+
new webpack.web.JsonpTemplatePlugin(),
|
|
82
|
+
new LoaderTargetPlugin('web'),
|
|
83
|
+
new LibraryPlugin(this._options.library?.type),
|
|
84
|
+
new webpack.DefinePlugin({
|
|
85
|
+
'process.env.REMOTES': (0, utilities_1.createRuntimeVariables)(this._options.remotes),
|
|
86
|
+
'process.env.CURRENT_HOST': JSON.stringify(this._options.name),
|
|
87
|
+
}),
|
|
88
|
+
new AddRuntimeRequirementToPromiseExternalPlugin_1.default(),
|
|
89
|
+
];
|
|
90
|
+
}
|
|
91
|
+
else if (compiler.options.name === 'server') {
|
|
92
|
+
const { StreamingTargetPlugin, NodeFederationPlugin, } = require('@module-federation/node');
|
|
93
|
+
plugins = [
|
|
94
|
+
new NodeFederationPlugin(federationPluginOptions, {
|
|
95
|
+
ModuleFederationPlugin: FederationPlugin,
|
|
96
|
+
}),
|
|
97
|
+
new webpack.node.NodeTemplatePlugin(childOutput),
|
|
98
|
+
//TODO: Externals function needs to internalize any shared module for host and remote build
|
|
99
|
+
new webpack.ExternalsPlugin(compiler.options.externalsType, [
|
|
100
|
+
// next dynamic needs to be within webpack, cannot be externalized
|
|
101
|
+
...Object.keys(internal_1.DEFAULT_SHARE_SCOPE).filter((k) => k !== 'next/dynamic'),
|
|
102
|
+
'react/jsx-runtime',
|
|
103
|
+
'react/jsx-dev-runtime',
|
|
104
|
+
]),
|
|
105
|
+
// new LoaderTargetPlugin('async-node'),
|
|
106
|
+
new StreamingTargetPlugin(federationPluginOptions, {
|
|
107
|
+
ModuleFederationPlugin: webpack.container.ModuleFederationPlugin,
|
|
108
|
+
}),
|
|
109
|
+
new LibraryPlugin(federationPluginOptions.library?.type),
|
|
110
|
+
// new webpack.DefinePlugin({
|
|
111
|
+
// 'process.env.REMOTES': JSON.stringify(this._options.remotes),
|
|
112
|
+
// 'process.env.CURRENT_HOST': JSON.stringify(this._options.name),
|
|
113
|
+
// }),
|
|
114
|
+
new AddRuntimeRequirementToPromiseExternalPlugin_1.default(),
|
|
115
|
+
];
|
|
116
|
+
}
|
|
117
|
+
const childCompiler = compilation.createChildCompiler(CHILD_PLUGIN_NAME, childOutput, plugins);
|
|
118
|
+
childCompiler.outputPath = outputPath;
|
|
119
|
+
childCompiler.options.module.rules.forEach((rule) => {
|
|
120
|
+
// next-image-loader fix which adds remote's hostname to the assets url
|
|
121
|
+
if (this._extraOptions.enableImageLoaderFix &&
|
|
122
|
+
(0, helpers_1.hasLoader)(rule, 'next-image-loader')) {
|
|
123
|
+
(0, helpers_1.injectRuleLoader)(rule, {
|
|
124
|
+
loader: path_1.default.resolve(__dirname, '../loaders/fixImageLoader'),
|
|
125
|
+
});
|
|
126
|
+
}
|
|
127
|
+
// url-loader fix for which adds remote's hostname to the assets url
|
|
128
|
+
if (this._extraOptions.enableUrlLoaderFix &&
|
|
129
|
+
(0, helpers_1.hasLoader)(rule, 'url-loader')) {
|
|
130
|
+
(0, helpers_1.injectRuleLoader)({
|
|
131
|
+
loader: path_1.default.resolve(__dirname, '../loaders/fixUrlLoader'),
|
|
132
|
+
});
|
|
133
|
+
}
|
|
134
|
+
});
|
|
135
|
+
childCompiler.options.experiments.lazyCompilation = false;
|
|
136
|
+
childCompiler.options.optimization.runtimeChunk = false;
|
|
137
|
+
childCompiler.outputFileSystem = fs_1.default;
|
|
138
|
+
// no custom chunk splitting should be derived from host (next)
|
|
139
|
+
delete childCompiler.options.optimization.splitChunks;
|
|
140
|
+
if (compiler.options.optimization.minimize &&
|
|
141
|
+
compiler.options.optimization.minimizer) {
|
|
142
|
+
for (const minimizer of compiler.options.optimization.minimizer) {
|
|
143
|
+
if (typeof minimizer === 'function') {
|
|
144
|
+
minimizer.call(childCompiler, childCompiler);
|
|
145
|
+
}
|
|
146
|
+
else if (minimizer !== '...') {
|
|
147
|
+
minimizer.apply(childCompiler);
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
new RemoveRRRuntimePlugin_1.default().apply(childCompiler);
|
|
152
|
+
// TODO: Provide better types for MiniCss Plugin for ChildCompiler in ChildFederationPlugin
|
|
153
|
+
const MiniCss = childCompiler.options.plugins.find((p) => {
|
|
154
|
+
return p.constructor.name === 'NextMiniCssExtractPlugin';
|
|
155
|
+
});
|
|
156
|
+
childCompiler.options.plugins = childCompiler.options.plugins.filter((plugin) => !internal_1.removePlugins.includes(plugin.constructor.name));
|
|
157
|
+
if (MiniCss) {
|
|
158
|
+
// grab mini-css and reconfigure it to avoid conflicts with host
|
|
159
|
+
new MiniCss.constructor({
|
|
160
|
+
...MiniCss.options,
|
|
161
|
+
filename: MiniCss.options.filename.replace('.css', '-fed.css'),
|
|
162
|
+
chunkFilename: MiniCss.options.chunkFilename.replace('.css', '-fed.css'),
|
|
163
|
+
}).apply(childCompiler);
|
|
164
|
+
}
|
|
165
|
+
// TODO: this can likely be deleted now, if running server child compiler under client is the best way to go
|
|
166
|
+
// help wanted for all asset pipeline stuff below
|
|
167
|
+
// let childAssets
|
|
168
|
+
// if (isServer) {
|
|
169
|
+
// childAssets = new Promise((resolve) => {
|
|
170
|
+
// childCompiler.hooks.afterEmit.tap(
|
|
171
|
+
// CHILD_PLUGIN_NAME,
|
|
172
|
+
// (childCompilation) => {
|
|
173
|
+
// console.log('after emit assets server');
|
|
174
|
+
// resolve(childCompilation.assets);
|
|
175
|
+
// }
|
|
176
|
+
// );
|
|
177
|
+
// });
|
|
178
|
+
// } else {
|
|
179
|
+
// if(isDev) {
|
|
180
|
+
// childAssets = new Promise((resolve) => {
|
|
181
|
+
// childCompiler.hooks.afterEmit.tap(
|
|
182
|
+
// CHILD_PLUGIN_NAME,
|
|
183
|
+
// (childCompilation) => {
|
|
184
|
+
// resolve(childCompilation.assets);
|
|
185
|
+
// }
|
|
186
|
+
// );
|
|
187
|
+
// });
|
|
188
|
+
//
|
|
189
|
+
// } else {
|
|
190
|
+
//
|
|
191
|
+
// TODO: improve this
|
|
192
|
+
// childAssets = new Promise((resolve, reject) => {
|
|
193
|
+
// fs.readdir(
|
|
194
|
+
// path.join(childCompiler.context, '.next/ssr'),
|
|
195
|
+
// function (err, files) {
|
|
196
|
+
// if (err) {
|
|
197
|
+
// reject('Unable to scan directory: ' + err);
|
|
198
|
+
// return;
|
|
199
|
+
// }
|
|
200
|
+
//
|
|
201
|
+
// const allFiles = files.map(function (file) {
|
|
202
|
+
// return new Promise((res, rej) => {
|
|
203
|
+
// fs.readFile(
|
|
204
|
+
// path.join(childCompiler.context, '.next/ssr', file),
|
|
205
|
+
// (err, data) => {
|
|
206
|
+
// if (err) rej(err);
|
|
207
|
+
// compilation.assets[path.join('static/ssr', file)] = new compiler.webpack.sources.RawSource(data)
|
|
208
|
+
// res();
|
|
209
|
+
// }
|
|
210
|
+
// );
|
|
211
|
+
// });
|
|
212
|
+
// });
|
|
213
|
+
// Promise.all(allFiles).then(resolve).catch(reject)
|
|
214
|
+
// }
|
|
215
|
+
// );
|
|
216
|
+
// });
|
|
217
|
+
// }
|
|
218
|
+
// }
|
|
219
|
+
// on main compiler add extra assets from server output to browser build
|
|
220
|
+
// compilation.hooks.additionalAssets.tapPromise(CHILD_PLUGIN_NAME, () => {
|
|
221
|
+
// console.log('additional hooks', compiler.options.name);
|
|
222
|
+
// console.log('in additional assets hook for main build');
|
|
223
|
+
// return childAssets
|
|
224
|
+
// });
|
|
225
|
+
// cache the serer compiler instance, we will run the server child compiler during the client main compilation
|
|
226
|
+
// we need to do this because i need access to data from the client build to inject into the server build
|
|
227
|
+
// in prod builds, server build runs first, followed by client build
|
|
228
|
+
// in dev, client build runs first, followed by server build
|
|
229
|
+
if (compiler.options.name) {
|
|
230
|
+
childCompilers[compiler.options.name] = childCompiler;
|
|
231
|
+
}
|
|
232
|
+
if (isDev) {
|
|
233
|
+
// in dev, run the compilers in the order they are created (client, server)
|
|
234
|
+
childCompiler.run((err, stats) => {
|
|
235
|
+
if (err) {
|
|
236
|
+
compilation.errors.push(err);
|
|
237
|
+
}
|
|
238
|
+
if (stats && stats.hasErrors()) {
|
|
239
|
+
compilation.errors.push(new Error((0, internal_1.toDisplayErrors)(stats.compilation.errors)));
|
|
240
|
+
}
|
|
241
|
+
});
|
|
242
|
+
// in prod, if client
|
|
243
|
+
}
|
|
244
|
+
else if (!isServer) {
|
|
245
|
+
// if ssr enabled and server in compiler cache
|
|
246
|
+
if (childCompilers['server']) {
|
|
247
|
+
//wrong hook for this
|
|
248
|
+
// add hook for additional assets to prevent compile from sealing.
|
|
249
|
+
compilation.hooks.additionalAssets.tapPromise(CHILD_PLUGIN_NAME, () => {
|
|
250
|
+
return new Promise((res, rej) => {
|
|
251
|
+
// run server child compilation during client main compilation
|
|
252
|
+
childCompilers['server'].run((err, stats) => {
|
|
253
|
+
if (err) {
|
|
254
|
+
compilation.errors.push(err);
|
|
255
|
+
rej();
|
|
256
|
+
}
|
|
257
|
+
if (stats && stats.hasErrors()) {
|
|
258
|
+
compilation.errors.push(new Error((0, internal_1.toDisplayErrors)(stats.compilation.errors)));
|
|
259
|
+
rej();
|
|
260
|
+
}
|
|
261
|
+
res();
|
|
262
|
+
});
|
|
263
|
+
});
|
|
264
|
+
});
|
|
265
|
+
}
|
|
266
|
+
// run client child compiler like normal
|
|
267
|
+
childCompiler.run((err, stats) => {
|
|
268
|
+
if (err) {
|
|
269
|
+
compilation.errors.push(err);
|
|
270
|
+
}
|
|
271
|
+
if (stats && stats.hasErrors()) {
|
|
272
|
+
compilation.errors.push(new Error((0, internal_1.toDisplayErrors)(stats.compilation.errors)));
|
|
273
|
+
}
|
|
274
|
+
});
|
|
275
|
+
}
|
|
276
|
+
});
|
|
277
|
+
}
|
|
278
|
+
}
|
|
279
|
+
exports.ChildFederationPlugin = ChildFederationPlugin;
|
|
280
|
+
exports.default = ChildFederationPlugin;
|
|
281
|
+
//# sourceMappingURL=ChildFederationPlugin.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ChildFederationPlugin.js","sourceRoot":"","sources":["../../../../../packages/nextjs-mf/src/plugins/ChildFederationPlugin.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { Compiler } from 'webpack';
|
|
2
|
+
/**
|
|
3
|
+
* If HMR through websocket received {"invalid":true, "event":"pong"} event
|
|
4
|
+
* then pages reloads. But for federated page this is unwanted behavior.
|
|
5
|
+
*
|
|
6
|
+
* So this plugin in DEV mode disables page.reload() in HMR for federated pages.
|
|
7
|
+
*/
|
|
8
|
+
export declare class DevHmrFixInvalidPongPlugin {
|
|
9
|
+
apply(compiler: Compiler): void;
|
|
10
|
+
}
|
|
11
|
+
export default DevHmrFixInvalidPongPlugin;
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.DevHmrFixInvalidPongPlugin = void 0;
|
|
4
|
+
const webpack_1 = require("webpack");
|
|
5
|
+
if (!String.prototype.replaceAll) {
|
|
6
|
+
String.prototype.replaceAll = function (str, newStr) {
|
|
7
|
+
// If a regex pattern
|
|
8
|
+
if (Object.prototype.toString.call(str).toLowerCase() === '[object regexp]') {
|
|
9
|
+
return this.replace(str, newStr);
|
|
10
|
+
}
|
|
11
|
+
// If a string
|
|
12
|
+
return this.replace(new RegExp(str, 'g'), newStr);
|
|
13
|
+
};
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* If HMR through websocket received {"invalid":true, "event":"pong"} event
|
|
17
|
+
* then pages reloads. But for federated page this is unwanted behavior.
|
|
18
|
+
*
|
|
19
|
+
* So this plugin in DEV mode disables page.reload() in HMR for federated pages.
|
|
20
|
+
*/
|
|
21
|
+
class DevHmrFixInvalidPongPlugin {
|
|
22
|
+
apply(compiler) {
|
|
23
|
+
const webpack = compiler.webpack;
|
|
24
|
+
compiler.hooks.thisCompilation.tap('DevHmrFixInvalidPongPlugin', (compilation) => {
|
|
25
|
+
compilation.hooks.processAssets.tap({
|
|
26
|
+
name: 'DevHmrFixInvalidPongPlugin',
|
|
27
|
+
// FIXME: Is this state or stage?
|
|
28
|
+
// Webpack docs mentions it as 'stage'.
|
|
29
|
+
stage: webpack_1.Compilation.PROCESS_ASSETS_STAGE_PRE_PROCESS,
|
|
30
|
+
}, (assets) => {
|
|
31
|
+
Object.keys(assets).forEach((filename) => {
|
|
32
|
+
if (filename.endsWith('/main.js')) {
|
|
33
|
+
const asset = compilation.getAsset(filename);
|
|
34
|
+
const newSource = asset?.source.source().replace(new RegExp(escapeRegExp('if (payload.event === \\"pong\\" && payload.invalid && !self.__NEXT_DATA__.err) {'), 'g'), `if (payload.event === \\"pong\\" && payload.invalid && !self.__NEXT_DATA__.err) {
|
|
35
|
+
if (window.mf_client && window.mf_client.isFederatedPathname(window.location.pathname)) return;
|
|
36
|
+
`.replaceAll('\n', '\\n'));
|
|
37
|
+
const updatedAsset = new webpack.sources.RawSource(newSource);
|
|
38
|
+
if (asset) {
|
|
39
|
+
compilation.updateAsset(filename, updatedAsset);
|
|
40
|
+
}
|
|
41
|
+
else {
|
|
42
|
+
compilation.emitAsset(filename, updatedAsset);
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
});
|
|
46
|
+
});
|
|
47
|
+
});
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
exports.DevHmrFixInvalidPongPlugin = DevHmrFixInvalidPongPlugin;
|
|
51
|
+
function escapeRegExp(string) {
|
|
52
|
+
return string.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'); // $& means the whole matched string
|
|
53
|
+
}
|
|
54
|
+
exports.default = DevHmrFixInvalidPongPlugin;
|
|
55
|
+
//# sourceMappingURL=DevHmrFixInvalidPongPlugin.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DevHmrFixInvalidPongPlugin.js","sourceRoot":"","sources":["../../../../../packages/nextjs-mf/src/plugins/DevHmrFixInvalidPongPlugin.ts"],"names":[],"mappings":";;;AAAA,qCAAgD;AAEhD,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,UAAU,EAAE;IAChC,MAAM,CAAC,SAAS,CAAC,UAAU,GAAG,UAAS,GAAG,EAAE,MAAM;QAEhD,qBAAqB;QACrB,IAAI,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE,KAAK,iBAAiB,EAAE;YAC3E,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,EAAU,MAAM,CAAC,CAAC;SAC1C;QAED,cAAc;QACd,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,EAAU,MAAM,CAAC,CAAC;IAE5D,CAAC,CAAC;CACH;AAED;;;;;GAKG;AACH,MAAa,0BAA0B;IACrC,KAAK,CAAC,QAAkB;QACtB,MAAM,OAAO,GAAG,QAAQ,CAAC,OAAO,CAAC;QAEjC,QAAQ,CAAC,KAAK,CAAC,eAAe,CAAC,GAAG,CAChC,4BAA4B,EAC5B,CAAC,WAAW,EAAE,EAAE;YACd,WAAW,CAAC,KAAK,CAAC,aAAa,CAAC,GAAG,CACjC;gBACE,IAAI,EAAE,4BAA4B;gBAClC,iCAAiC;gBACjC,uCAAuC;gBACvC,KAAK,EAAE,qBAAW,CAAC,gCAAgC;aACpD,EACD,CAAC,MAAM,EAAE,EAAE;gBACT,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,EAAE;oBACvC,IAAI,QAAQ,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE;wBACjC,MAAM,KAAK,GAAG,WAAW,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;wBAC7C,MAAM,SAAS,GAAI,KAAK,EAAE,MAAM,CAAC,MAAM,EAAa,CAAC,OAAO,CAC1D,IAAI,MAAM,CACR,YAAY,CACV,mFAAmF,CACpF,EACD,GAAG,CACJ,EACD;;mBAEC,CAAC,UAAU,CAAC,IAAI,EAAE,KAAK,CAAC,CAC1B,CAAC;wBAEF,MAAM,YAAY,GAAG,IAAI,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;wBAE9D,IAAI,KAAK,EAAE;4BACT,WAAW,CAAC,WAAW,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC;yBACjD;6BAAM;4BACL,WAAW,CAAC,SAAS,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC;yBAC/C;qBACF;gBACH,CAAC,CAAC,CAAC;YACL,CAAC,CACF,CAAC;QACJ,CAAC,CACF,CAAC;IACJ,CAAC;CACF;AA5CD,gEA4CC;AAED,SAAS,YAAY,CAAC,MAAc;IAClC,OAAO,MAAM,CAAC,OAAO,CAAC,qBAAqB,EAAE,MAAM,CAAC,CAAC,CAAC,oCAAoC;AAC5F,CAAC;AAED,kBAAe,0BAA0B,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { Compiler } from 'webpack';
|
|
2
|
+
import type { ModuleFederationPluginOptions } from '@module-federation/utilities';
|
|
3
|
+
export default class ModuleFederationPlugin {
|
|
4
|
+
private _options;
|
|
5
|
+
constructor(options: ModuleFederationPluginOptions);
|
|
6
|
+
apply(compiler: Compiler): void;
|
|
7
|
+
}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
class ModuleFederationPlugin {
|
|
4
|
+
constructor(options) {
|
|
5
|
+
this._options = options;
|
|
6
|
+
}
|
|
7
|
+
apply(compiler) {
|
|
8
|
+
const { _options: options } = this;
|
|
9
|
+
const webpack = compiler.webpack;
|
|
10
|
+
const { ContainerPlugin, ContainerReferencePlugin } = webpack.container;
|
|
11
|
+
const { SharePlugin } = webpack.sharing;
|
|
12
|
+
const library = options.library || { type: 'var', name: options.name };
|
|
13
|
+
const remoteType = options.remoteType ||
|
|
14
|
+
(options.library && options.library.type) ||
|
|
15
|
+
'script';
|
|
16
|
+
if (library &&
|
|
17
|
+
!compiler.options.output.enabledLibraryTypes?.includes(library.type)) {
|
|
18
|
+
compiler.options.output.enabledLibraryTypes?.push(library.type);
|
|
19
|
+
}
|
|
20
|
+
if (options.exposes &&
|
|
21
|
+
(Array.isArray(options.exposes)
|
|
22
|
+
? options.exposes.length > 0
|
|
23
|
+
: Object.keys(options.exposes).length > 0)) {
|
|
24
|
+
new ContainerPlugin({
|
|
25
|
+
name: options.name,
|
|
26
|
+
library,
|
|
27
|
+
filename: options.filename,
|
|
28
|
+
runtime: options.runtime,
|
|
29
|
+
exposes: options.exposes,
|
|
30
|
+
}).apply(compiler);
|
|
31
|
+
}
|
|
32
|
+
if (options.remotes &&
|
|
33
|
+
(Array.isArray(options.remotes)
|
|
34
|
+
? options.remotes.length > 0
|
|
35
|
+
: Object.keys(options.remotes).length > 0)) {
|
|
36
|
+
new ContainerReferencePlugin({
|
|
37
|
+
remoteType,
|
|
38
|
+
remotes: options.remotes,
|
|
39
|
+
}).apply(compiler);
|
|
40
|
+
}
|
|
41
|
+
if (options.shared) {
|
|
42
|
+
new SharePlugin({
|
|
43
|
+
shared: options.shared,
|
|
44
|
+
shareScope: options.shareScope,
|
|
45
|
+
}).apply(compiler);
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
exports.default = ModuleFederationPlugin;
|
|
50
|
+
//# sourceMappingURL=ModuleFederationPlugin.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ModuleFederationPlugin.js","sourceRoot":"","sources":["../../../../../packages/nextjs-mf/src/plugins/ModuleFederationPlugin.ts"],"names":[],"mappings":";;AAGA,MAAqB,sBAAsB;IAGzC,YAAY,OAAsC;QAChD,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;IAC1B,CAAC;IACD,KAAK,CAAC,QAAkB;QACtB,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC;QACnC,MAAM,OAAO,GAAG,QAAQ,CAAC,OAAO,CAAC;QACjC,MAAM,EAAE,eAAe,EAAE,wBAAwB,EAAE,GAAG,OAAO,CAAC,SAAS,CAAC;QACxE,MAAM,EAAE,WAAW,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC;QACxC,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,CAAC;QACvE,MAAM,UAAU,GACd,OAAO,CAAC,UAAU;YAClB,CAAC,OAAO,CAAC,OAAO,IAAK,OAAO,CAAC,OAAO,CAAC,IAAsB,CAAC;YAC5D,QAAQ,CAAC;QAEX,IACE,OAAO;YACP,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,mBAAmB,EAAE,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,EACpE;YACA,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,mBAAmB,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;SACjE;QAED,IACE,OAAO,CAAC,OAAO;YACf,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC;gBAC7B,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC;gBAC5B,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,EAC5C;YACA,IAAI,eAAe,CAAC;gBAClB,IAAI,EAAE,OAAO,CAAC,IAAc;gBAC5B,OAAO;gBACP,QAAQ,EAAE,OAAO,CAAC,QAAQ;gBAC1B,OAAO,EAAE,OAAO,CAAC,OAAO;gBACxB,OAAO,EAAE,OAAO,CAAC,OAAO;aACzB,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;SACpB;QACD,IACE,OAAO,CAAC,OAAO;YACf,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC;gBAC7B,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC;gBAC5B,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,EAC5C;YACA,IAAI,wBAAwB,CAAC;gBAC3B,UAAU;gBACV,OAAO,EAAE,OAAO,CAAC,OAAO;aACzB,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;SACpB;QACD,IAAI,OAAO,CAAC,MAAM,EAAE;YAClB,IAAI,WAAW,CAAC;gBACd,MAAM,EAAE,OAAO,CAAC,MAAM;gBACtB,UAAU,EAAE,OAAO,CAAC,UAAU;aAC/B,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;SACpB;IACH,CAAC;CACF;AAxDD,yCAwDC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { NextFederationPluginOptions } from '@module-federation/utilities';
|
|
2
|
+
import type { Compiler } from 'webpack';
|
|
3
|
+
export declare class NextFederationPlugin {
|
|
4
|
+
private _options;
|
|
5
|
+
private _extraOptions;
|
|
6
|
+
constructor(options: NextFederationPluginOptions);
|
|
7
|
+
apply(compiler: Compiler): void;
|
|
8
|
+
}
|
|
9
|
+
export default NextFederationPlugin;
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
/*
|
|
2
|
+
MIT License http://www.opensource.org/licenses/mit-license.php
|
|
3
|
+
Author Zackary Jackson @ScriptedAlchemy
|
|
4
|
+
*/
|
|
5
|
+
'use strict';
|
|
6
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
+
exports.NextFederationPlugin = void 0;
|
|
8
|
+
const tslib_1 = require("tslib");
|
|
9
|
+
const utilities_1 = require("@module-federation/utilities");
|
|
10
|
+
const path_1 = tslib_1.__importDefault(require("path"));
|
|
11
|
+
const internal_1 = require("../internal");
|
|
12
|
+
const AddRuntimeRequirementToPromiseExternalPlugin_1 = tslib_1.__importDefault(require("./AddRuntimeRequirementToPromiseExternalPlugin"));
|
|
13
|
+
const ChildFederationPlugin_1 = tslib_1.__importDefault(require("./ChildFederationPlugin"));
|
|
14
|
+
const DevHmrFixInvalidPongPlugin_1 = tslib_1.__importDefault(require("./DevHmrFixInvalidPongPlugin"));
|
|
15
|
+
class NextFederationPlugin {
|
|
16
|
+
constructor(options) {
|
|
17
|
+
const { extraOptions, ...mainOpts } = options;
|
|
18
|
+
this._options = mainOpts;
|
|
19
|
+
this._extraOptions = {
|
|
20
|
+
automaticPageStitching: false,
|
|
21
|
+
enableImageLoaderFix: false,
|
|
22
|
+
enableUrlLoaderFix: false,
|
|
23
|
+
skipSharingNextInternals: false,
|
|
24
|
+
...extraOptions,
|
|
25
|
+
};
|
|
26
|
+
}
|
|
27
|
+
apply(compiler) {
|
|
28
|
+
if (!compiler.options.name) {
|
|
29
|
+
throw new Error('name is not defined in Compiler options');
|
|
30
|
+
}
|
|
31
|
+
if (!this._options.filename) {
|
|
32
|
+
throw new Error('filename is not defined in NextFederation options');
|
|
33
|
+
}
|
|
34
|
+
const isServer = compiler.options.name === 'server';
|
|
35
|
+
const webpack = compiler.webpack;
|
|
36
|
+
if (isServer) {
|
|
37
|
+
console.error('[nextjs-mf] WARNING: SSR IS NOT FULLY SUPPORTED YET, Only use pluign on client builds');
|
|
38
|
+
// target false because we use our own target for node env
|
|
39
|
+
compiler.options.target = false;
|
|
40
|
+
const StreamingTargetPlugin = require('@module-federation/node').StreamingTargetPlugin;
|
|
41
|
+
new StreamingTargetPlugin(this._options, {
|
|
42
|
+
ModuleFederationPlugin: webpack.container.ModuleFederationPlugin,
|
|
43
|
+
}).apply(compiler);
|
|
44
|
+
this._options.library = {
|
|
45
|
+
type: 'commonjs-module',
|
|
46
|
+
name: this._options.name,
|
|
47
|
+
};
|
|
48
|
+
// output remote to ssr if server
|
|
49
|
+
this._options.filename = this._options.filename.replace('/chunks', '/ssr');
|
|
50
|
+
// should this be a plugin that we apply to the compiler?
|
|
51
|
+
(0, internal_1.internalizeSharedPackages)(this._options, compiler);
|
|
52
|
+
}
|
|
53
|
+
else {
|
|
54
|
+
if (this._extraOptions.automaticPageStitching) {
|
|
55
|
+
compiler.options.module.rules.push({
|
|
56
|
+
test: /next[\\/]dist[\\/]client[\\/]page-loader\.js$/,
|
|
57
|
+
loader: path_1.default.resolve(__dirname, '../loaders/patchNextClientPageLoader'),
|
|
58
|
+
});
|
|
59
|
+
}
|
|
60
|
+
if (this._options.remotes) {
|
|
61
|
+
this._options.remotes = (0, internal_1.parseRemotes)(this._options.remotes);
|
|
62
|
+
}
|
|
63
|
+
if (this._options.library) {
|
|
64
|
+
console.error('[mf] you cannot set custom library');
|
|
65
|
+
}
|
|
66
|
+
this._options.library = {
|
|
67
|
+
// assign remote name to object to avoid SWC mangling top level variable
|
|
68
|
+
type: 'window',
|
|
69
|
+
name: this._options.name,
|
|
70
|
+
};
|
|
71
|
+
}
|
|
72
|
+
//todo runtime variable creation needs to be applied for server as well. this is just for client
|
|
73
|
+
// TODO: this needs to be refactored into something more comprehensive. this is just a quick fix
|
|
74
|
+
new webpack.DefinePlugin({
|
|
75
|
+
'process.env.REMOTES': (0, utilities_1.createRuntimeVariables)(this._options.remotes),
|
|
76
|
+
'process.env.CURRENT_HOST': JSON.stringify(this._options.name),
|
|
77
|
+
}).apply(compiler);
|
|
78
|
+
const ModuleFederationPlugin = isServer
|
|
79
|
+
? require('@module-federation/node').NodeFederationPlugin
|
|
80
|
+
: webpack.container.ModuleFederationPlugin;
|
|
81
|
+
// ignore edge runtime and middleware builds
|
|
82
|
+
if (ModuleFederationPlugin) {
|
|
83
|
+
const internalShare = (0, internal_1.reKeyHostShared)(this._options.shared);
|
|
84
|
+
const hostFederationPluginOptions = {
|
|
85
|
+
...this._options,
|
|
86
|
+
exposes: {},
|
|
87
|
+
shared: {
|
|
88
|
+
noop: {
|
|
89
|
+
import: 'data:text/javascript,module.exports = {};',
|
|
90
|
+
requiredVersion: false,
|
|
91
|
+
eager: true,
|
|
92
|
+
version: '0',
|
|
93
|
+
},
|
|
94
|
+
...internalShare,
|
|
95
|
+
},
|
|
96
|
+
};
|
|
97
|
+
compiler.options.optimization.chunkIds = 'named';
|
|
98
|
+
new ModuleFederationPlugin(hostFederationPluginOptions, {
|
|
99
|
+
ModuleFederationPlugin,
|
|
100
|
+
}).apply(compiler);
|
|
101
|
+
new ChildFederationPlugin_1.default(this._options, this._extraOptions).apply(compiler);
|
|
102
|
+
new AddRuntimeRequirementToPromiseExternalPlugin_1.default().apply(compiler);
|
|
103
|
+
if (compiler.options.mode === 'development') {
|
|
104
|
+
new DevHmrFixInvalidPongPlugin_1.default().apply(compiler);
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
exports.NextFederationPlugin = NextFederationPlugin;
|
|
110
|
+
exports.default = NextFederationPlugin;
|
|
111
|
+
//# sourceMappingURL=NextFederationPlugin.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"NextFederationPlugin.js","sourceRoot":"","sources":["../../../../../packages/nextjs-mf/src/plugins/NextFederationPlugin.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.RemoveRRRuntimePlugin = void 0;
|
|
4
|
+
const webpack_1 = require("webpack");
|
|
5
|
+
class RemoveRRRuntimePlugin {
|
|
6
|
+
apply(compiler) {
|
|
7
|
+
const webpack = compiler.webpack;
|
|
8
|
+
// only impacts dev mode - dont waste the memory during prod build
|
|
9
|
+
if (compiler.options.mode === 'development') {
|
|
10
|
+
compiler.hooks.thisCompilation.tap('RemoveRRRuntimePlugin', (compilation) => {
|
|
11
|
+
compilation.hooks.processAssets.tap({
|
|
12
|
+
name: 'RemoveRRRuntimePlugin',
|
|
13
|
+
// FIXME: Is this state or stage?
|
|
14
|
+
// Webpack docs mentions it as 'stage'.
|
|
15
|
+
stage: webpack_1.Compilation.PROCESS_ASSETS_STAGE_OPTIMIZE_INLINE,
|
|
16
|
+
}, (assets) => {
|
|
17
|
+
//can this be improved? I need react refresh not to cause global collision in dev mode
|
|
18
|
+
Object.keys(assets).forEach((filename) => {
|
|
19
|
+
if (filename.endsWith('.js') || filename.endsWith('.mjs')) {
|
|
20
|
+
const asset = compilation.getAsset(filename);
|
|
21
|
+
// easiest way to solve it is to prevent react refresh helpers from running when its a federated module chunk
|
|
22
|
+
const newSource = asset?.source.source().replace(/RefreshHelpers/g, 'NoExist');
|
|
23
|
+
const updatedAsset = new webpack.sources.RawSource(newSource);
|
|
24
|
+
if (asset) {
|
|
25
|
+
compilation.updateAsset(filename, updatedAsset);
|
|
26
|
+
}
|
|
27
|
+
else {
|
|
28
|
+
compilation.emitAsset(filename, updatedAsset);
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
});
|
|
32
|
+
});
|
|
33
|
+
});
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
exports.RemoveRRRuntimePlugin = RemoveRRRuntimePlugin;
|
|
38
|
+
exports.default = RemoveRRRuntimePlugin;
|
|
39
|
+
//# sourceMappingURL=RemoveRRRuntimePlugin.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RemoveRRRuntimePlugin.js","sourceRoot":"","sources":["../../../../../packages/nextjs-mf/src/plugins/RemoveRRRuntimePlugin.ts"],"names":[],"mappings":";;;AAAA,qCAAgD;AAEhD,MAAa,qBAAqB;IAChC,KAAK,CAAC,QAAkB;QACtB,MAAM,OAAO,GAAG,QAAQ,CAAC,OAAO,CAAC;QAEjC,kEAAkE;QAClE,IAAI,QAAQ,CAAC,OAAO,CAAC,IAAI,KAAK,aAAa,EAAE;YAC3C,QAAQ,CAAC,KAAK,CAAC,eAAe,CAAC,GAAG,CAChC,uBAAuB,EACvB,CAAC,WAAW,EAAE,EAAE;gBACd,WAAW,CAAC,KAAK,CAAC,aAAa,CAAC,GAAG,CACjC;oBACE,IAAI,EAAE,uBAAuB;oBAC7B,iCAAiC;oBACjC,uCAAuC;oBACvC,KAAK,EAAE,qBAAW,CAAC,oCAAoC;iBACxD,EACD,CAAC,MAAM,EAAE,EAAE;oBACT,sFAAsF;oBACtF,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,EAAE;wBACvC,IAAI,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE;4BACzD,MAAM,KAAK,GAAG,WAAW,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;4BAC7C,6GAA6G;4BAC7G,MAAM,SAAS,GAAI,KAAK,EAAE,MAAM,CAAC,MAAM,EAAa,CAAC,OAAO,CAC1D,iBAAiB,EACjB,SAAS,CACV,CAAC;4BACF,MAAM,YAAY,GAAG,IAAI,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;4BAE9D,IAAI,KAAK,EAAE;gCACT,WAAW,CAAC,WAAW,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC;6BACjD;iCAAM;gCACL,WAAW,CAAC,SAAS,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC;6BAC/C;yBACF;oBACH,CAAC,CAAC,CAAC;gBACL,CAAC,CACF,CAAC;YACJ,CAAC,CACF,CAAC;SACH;IACH,CAAC;CACF;AAzCD,sDAyCC;AAED,kBAAe,qBAAqB,CAAC"}
|