@module-federation/nextjs-mf 7.0.8 → 8.0.1-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.
Files changed (107) hide show
  1. package/CHANGELOG.md +545 -411
  2. package/README.md +29 -15
  3. package/client/MFClient.js +1 -2
  4. package/client/MFClient.js.map +1 -1
  5. package/client/RemoteContainer.js +2 -1
  6. package/client/RemoteContainer.js.map +1 -1
  7. package/client/RemotePages.js +2 -1
  8. package/client/RemotePages.js.map +1 -1
  9. package/client/UrlNode.js +2 -10
  10. package/client/UrlNode.js.map +1 -1
  11. package/node.d.ts +1 -1
  12. package/node.js.map +1 -1
  13. package/package.json +7 -5
  14. package/src/default-delegate.js +64 -9
  15. package/src/default-delegate.js.map +1 -1
  16. package/src/federation-noop.js +13 -1
  17. package/src/federation-noop.js.map +1 -1
  18. package/src/index.d.ts +1 -1
  19. package/src/internal.d.ts +18 -12
  20. package/src/internal.js +83 -71
  21. package/src/internal.js.map +1 -1
  22. package/src/loaders/delegateLoader.d.ts +5 -2
  23. package/src/loaders/delegateLoader.js +19 -9
  24. package/src/loaders/delegateLoader.js.map +1 -1
  25. package/src/loaders/fixImageLoader.d.ts +12 -11
  26. package/src/loaders/fixImageLoader.js +17 -13
  27. package/src/loaders/fixImageLoader.js.map +1 -1
  28. package/src/loaders/fixUrlLoader.d.ts +7 -7
  29. package/src/loaders/fixUrlLoader.js +11 -11
  30. package/src/loaders/fixUrlLoader.js.map +1 -1
  31. package/src/loaders/helpers.d.ts +10 -3
  32. package/src/loaders/helpers.js +22 -13
  33. package/src/loaders/helpers.js.map +1 -1
  34. package/src/loaders/inject-hoist.d.ts +11 -0
  35. package/src/loaders/inject-hoist.js +7 -0
  36. package/src/loaders/inject-hoist.js.map +1 -1
  37. package/src/loaders/nextPageMapLoader.d.ts +12 -3
  38. package/src/loaders/nextPageMapLoader.js +45 -29
  39. package/src/loaders/nextPageMapLoader.js.map +1 -1
  40. package/src/loaders/patchDefaultSharedLoader.d.ts +9 -0
  41. package/src/loaders/patchDefaultSharedLoader.js +11 -0
  42. package/src/loaders/patchDefaultSharedLoader.js.map +1 -1
  43. package/src/loaders/patchNextClientPageLoader.d.ts +4 -2
  44. package/src/loaders/patchNextClientPageLoader.js +36 -18
  45. package/src/loaders/patchNextClientPageLoader.js.map +1 -1
  46. package/src/plugins/CopyFederationPlugin.d.ts +13 -0
  47. package/src/plugins/CopyFederationPlugin.js +40 -19
  48. package/src/plugins/CopyFederationPlugin.js.map +1 -1
  49. package/src/plugins/NextFederationPlugin/apply-client-plugins.d.ts +2 -3
  50. package/src/plugins/NextFederationPlugin/apply-client-plugins.js +9 -6
  51. package/src/plugins/NextFederationPlugin/apply-client-plugins.js.map +1 -1
  52. package/src/plugins/NextFederationPlugin/apply-server-plugins.d.ts +17 -10
  53. package/src/plugins/NextFederationPlugin/apply-server-plugins.js +35 -27
  54. package/src/plugins/NextFederationPlugin/apply-server-plugins.js.map +1 -1
  55. package/src/plugins/NextFederationPlugin/index.d.ts +18 -6
  56. package/src/plugins/NextFederationPlugin/index.js +108 -75
  57. package/src/plugins/NextFederationPlugin/index.js.map +1 -1
  58. package/src/plugins/NextFederationPlugin/next-fragments.d.ts +23 -17
  59. package/src/plugins/NextFederationPlugin/next-fragments.js +26 -18
  60. package/src/plugins/NextFederationPlugin/next-fragments.js.map +1 -1
  61. package/src/plugins/NextFederationPlugin/regex-equal.d.ts +8 -8
  62. package/src/plugins/NextFederationPlugin/regex-equal.js +7 -7
  63. package/src/plugins/NextFederationPlugin/remove-unnecessary-shared-keys.d.ts +7 -0
  64. package/src/plugins/NextFederationPlugin/remove-unnecessary-shared-keys.js +20 -9
  65. package/src/plugins/NextFederationPlugin/remove-unnecessary-shared-keys.js.map +1 -1
  66. package/src/plugins/NextFederationPlugin/set-options.d.ts +6 -6
  67. package/src/plugins/NextFederationPlugin/set-options.js +10 -6
  68. package/src/plugins/NextFederationPlugin/set-options.js.map +1 -1
  69. package/src/plugins/NextFederationPlugin/validate-options.d.ts +13 -14
  70. package/src/plugins/NextFederationPlugin/validate-options.js +15 -15
  71. package/src/plugins/NextFederationPlugin/validate-options.js.map +1 -1
  72. package/src/plugins/container/EmbeddedContainerPlugin.d.ts +40 -0
  73. package/src/plugins/container/EmbeddedContainerPlugin.js +73 -0
  74. package/src/plugins/container/EmbeddedContainerPlugin.js.map +1 -0
  75. package/src/plugins/container/InvertedContainerPlugin.d.ts +21 -14
  76. package/src/plugins/container/InvertedContainerPlugin.js +21 -148
  77. package/src/plugins/container/InvertedContainerPlugin.js.map +1 -1
  78. package/src/plugins/container/InvertedContainerRuntimeModule.d.ts +3 -33
  79. package/src/plugins/container/InvertedContainerRuntimeModule.js +64 -518
  80. package/src/plugins/container/InvertedContainerRuntimeModule.js.map +1 -1
  81. package/src/plugins/container/ModuleFederationPlugin.d.ts +17 -0
  82. package/src/plugins/container/ModuleFederationPlugin.js +97 -0
  83. package/src/plugins/container/ModuleFederationPlugin.js.map +1 -0
  84. package/src/plugins/container/RemoveEagerModulesFromRuntimePlugin.d.ts +28 -6
  85. package/src/plugins/container/RemoveEagerModulesFromRuntimePlugin.js +34 -57
  86. package/src/plugins/container/RemoveEagerModulesFromRuntimePlugin.js.map +1 -1
  87. package/src/plugins/container/types.d.ts +1 -1
  88. package/src/types.d.ts +3 -0
  89. package/utilities.js.map +1 -1
  90. package/utils/Template.d.ts +1 -1
  91. package/utils/Template.js +23 -15
  92. package/utils/Template.js.map +1 -1
  93. package/utils/build-utils.d.ts +9 -0
  94. package/utils/build-utils.js +9 -0
  95. package/utils/build-utils.js.map +1 -1
  96. package/utils/flushedChunks.d.ts +15 -0
  97. package/utils/flushedChunks.js +8 -0
  98. package/utils/flushedChunks.js.map +1 -1
  99. package/utils/index.d.ts +27 -3
  100. package/utils/index.js +45 -1
  101. package/utils/index.js.map +1 -1
  102. package/src/plugins/JsonpChunkLoading.d.ts +0 -7
  103. package/src/plugins/JsonpChunkLoading.js +0 -43
  104. package/src/plugins/JsonpChunkLoading.js.map +0 -1
  105. package/src/plugins/container/custom-jsonp.d.ts +0 -2
  106. package/src/plugins/container/custom-jsonp.js +0 -90
  107. package/src/plugins/container/custom-jsonp.js.map +0 -1
@@ -1,17 +1,20 @@
1
1
  import { Compiler } from 'webpack';
2
2
  import { ModuleFederationPluginOptions } from '@module-federation/utilities';
3
3
  /**
4
- * Applies server-specific plugins.
4
+ * This function applies server-specific plugins to the webpack compiler.
5
5
  *
6
- * @param compiler - The Webpack compiler instance.
7
- * @param options - The ModuleFederationPluginOptions instance.
6
+ * @param {Compiler} compiler - The Webpack compiler instance.
7
+ * @param {ModuleFederationPluginOptions} options - The ModuleFederationPluginOptions instance.
8
8
  *
9
+ * @returns {void}
9
10
  */
10
11
  export declare function applyServerPlugins(compiler: Compiler, options: ModuleFederationPluginOptions): void;
11
12
  /**
12
- * Configures server-specific library and filename options.
13
+ * This function configures server-specific library and filename options.
13
14
  *
14
- * @param options - The ModuleFederationPluginOptions instance.
15
+ * @param {ModuleFederationPluginOptions} options - The ModuleFederationPluginOptions instance.
16
+ *
17
+ * @returns {void}
15
18
  *
16
19
  * @remarks
17
20
  * This function configures the library and filename options for server builds. The library option is
@@ -21,10 +24,12 @@ export declare function applyServerPlugins(compiler: Compiler, options: ModuleFe
21
24
  */
22
25
  export declare function configureServerLibraryAndFilename(options: ModuleFederationPluginOptions): void;
23
26
  /**
24
- * Patches Next.js' default externals function to make sure shared modules are bundled and not treated as external.
27
+ * This function patches Next.js' default externals function to make sure shared modules are bundled and not treated as external.
28
+ *
29
+ * @param {Compiler} compiler - The Webpack compiler instance.
30
+ * @param {ModuleFederationPluginOptions} options - The ModuleFederationPluginOptions instance.
25
31
  *
26
- * @param compiler - The Webpack compiler instance.
27
- * @param options - The ModuleFederationPluginOptions instance.
32
+ * @returns {void}
28
33
  *
29
34
  * @remarks
30
35
  * In server builds, all node modules are treated as external, which prevents them from being shared
@@ -40,9 +45,11 @@ export declare function configureServerLibraryAndFilename(options: ModuleFederat
40
45
  */
41
46
  export declare function handleServerExternals(compiler: Compiler, options: ModuleFederationPluginOptions): void;
42
47
  /**
43
- * Configures server-specific compiler options.
48
+ * This function configures server-specific compiler options.
49
+ *
50
+ * @param {Compiler} compiler - The Webpack compiler instance.
44
51
  *
45
- * @param compiler - The Webpack compiler instance.
52
+ * @returns {void}
46
53
  *
47
54
  * @remarks
48
55
  * This function configures the compiler options for server builds. It turns off the compiler target on node
@@ -7,18 +7,20 @@ exports.configureServerCompilerOptions = exports.handleServerExternals = exports
7
7
  const DelegateModulesPlugin_1 = __importDefault(require("@module-federation/utilities/src/plugins/DelegateModulesPlugin"));
8
8
  const path_1 = __importDefault(require("path"));
9
9
  const InvertedContainerPlugin_1 = __importDefault(require("../container/InvertedContainerPlugin"));
10
- const JsonpChunkLoading_1 = __importDefault(require("../JsonpChunkLoading"));
10
+ const enhanced_1 = require("@module-federation/enhanced");
11
11
  /**
12
- * Applies server-specific plugins.
12
+ * This function applies server-specific plugins to the webpack compiler.
13
13
  *
14
- * @param compiler - The Webpack compiler instance.
15
- * @param options - The ModuleFederationPluginOptions instance.
14
+ * @param {Compiler} compiler - The Webpack compiler instance.
15
+ * @param {ModuleFederationPluginOptions} options - The ModuleFederationPluginOptions instance.
16
16
  *
17
+ * @returns {void}
17
18
  */
18
19
  function applyServerPlugins(compiler, options) {
19
20
  // Import the StreamingTargetPlugin from @module-federation/node
20
21
  const { StreamingTargetPlugin } = require('@module-federation/node');
21
- new JsonpChunkLoading_1.default({ server: true }).apply(compiler);
22
+ new enhanced_1.ModuleInfoRuntimePlugin().apply(compiler);
23
+ // Apply the DelegatesModulePlugin to the compiler
22
24
  new DelegateModulesPlugin_1.default({
23
25
  runtime: 'webpack-runtime',
24
26
  remotes: options.remotes,
@@ -26,21 +28,28 @@ function applyServerPlugins(compiler, options) {
26
28
  }).apply(compiler);
27
29
  // Add the StreamingTargetPlugin with the ModuleFederationPlugin from the webpack container
28
30
  new StreamingTargetPlugin(options, {
29
- ModuleFederationPlugin: compiler.webpack.container.ModuleFederationPlugin,
31
+ ModuleFederationPlugin: enhanced_1.ModuleFederationPlugin,
30
32
  }).apply(compiler);
31
33
  // Add a new commonjs chunk loading plugin to the compiler
32
34
  new InvertedContainerPlugin_1.default({
33
35
  runtime: 'webpack-runtime',
34
36
  container: options.name,
37
+ chunkToEmbed: 'host_inner_ctn',
35
38
  remotes: options.remotes,
39
+ shared: options.shared,
40
+ shareScope: 'default',
41
+ exposes: options.exposes,
36
42
  debug: false,
43
+ //@ts-ignore
37
44
  }).apply(compiler);
38
45
  }
39
46
  exports.applyServerPlugins = applyServerPlugins;
40
47
  /**
41
- * Configures server-specific library and filename options.
48
+ * This function configures server-specific library and filename options.
42
49
  *
43
- * @param options - The ModuleFederationPluginOptions instance.
50
+ * @param {ModuleFederationPluginOptions} options - The ModuleFederationPluginOptions instance.
51
+ *
52
+ * @returns {void}
44
53
  *
45
54
  * @remarks
46
55
  * This function configures the library and filename options for server builds. The library option is
@@ -59,10 +68,12 @@ function configureServerLibraryAndFilename(options) {
59
68
  }
60
69
  exports.configureServerLibraryAndFilename = configureServerLibraryAndFilename;
61
70
  /**
62
- * Patches Next.js' default externals function to make sure shared modules are bundled and not treated as external.
71
+ * This function patches Next.js' default externals function to make sure shared modules are bundled and not treated as external.
72
+ *
73
+ * @param {Compiler} compiler - The Webpack compiler instance.
74
+ * @param {ModuleFederationPluginOptions} options - The ModuleFederationPluginOptions instance.
63
75
  *
64
- * @param compiler - The Webpack compiler instance.
65
- * @param options - The ModuleFederationPluginOptions instance.
76
+ * @returns {void}
66
77
  *
67
78
  * @remarks
68
79
  * In server builds, all node modules are treated as external, which prevents them from being shared
@@ -77,7 +88,11 @@ exports.configureServerLibraryAndFilename = configureServerLibraryAndFilename;
77
88
  * function returns the original result. Otherwise, the function returns null.
78
89
  */
79
90
  function handleServerExternals(compiler, options) {
80
- // Check if the compiler has an `externals` array
91
+ // Use a regex to match the required external modules
92
+ // const crittersRegex = 'critters';
93
+ // const reactRegex = /^react$/;
94
+ // const reactDomRegex = /^react-dom$/;
95
+ // const nextCompiledRegex = /next\/dist\/compiled\/(?!server|client|shared).*/;
81
96
  if (Array.isArray(compiler.options.externals) &&
82
97
  compiler.options.externals[0]) {
83
98
  // Retrieve the original externals function
@@ -98,12 +113,6 @@ function handleServerExternals(compiler, options) {
98
113
  // If the module should not be treated as external, return without calling the original externals function
99
114
  return;
100
115
  }
101
- // seems to cause build issues at lululemon
102
- // nobody else seems to run into this issue
103
- // #JobSecurity
104
- if (ctx.request && ctx.request.includes('react/jsx-runtime')) {
105
- return 'commonjs ' + ctx.request;
106
- }
107
116
  // Call the original externals function and retrieve the result
108
117
  // @ts-ignore
109
118
  const fromNext = await originalExternals(ctx, callback);
@@ -125,13 +134,19 @@ function handleServerExternals(compiler, options) {
125
134
  // Otherwise, return (null) to treat the module as internalizable
126
135
  return;
127
136
  };
137
+ // compiler.options.externals.push(crittersRegex)
138
+ // compiler.options.externals.push(reactRegex)
139
+ // compiler.options.externals.push(reactDomRegex)
140
+ // compiler.options.externals.push(nextCompiledRegex)
128
141
  }
129
142
  }
130
143
  exports.handleServerExternals = handleServerExternals;
131
144
  /**
132
- * Configures server-specific compiler options.
145
+ * This function configures server-specific compiler options.
146
+ *
147
+ * @param {Compiler} compiler - The Webpack compiler instance.
133
148
  *
134
- * @param compiler - The Webpack compiler instance.
149
+ * @returns {void}
135
150
  *
136
151
  * @remarks
137
152
  * This function configures the compiler options for server builds. It turns off the compiler target on node
@@ -142,17 +157,10 @@ exports.handleServerExternals = handleServerExternals;
142
157
  function configureServerCompilerOptions(compiler) {
143
158
  // Turn off the compiler target on node builds because we add our own chunk loading runtime module
144
159
  // with NodeFederationPlugin and StreamingTargetPlugin
145
- compiler.options.target = false;
146
160
  compiler.options.node = {
147
161
  ...compiler.options.node,
148
162
  global: false,
149
163
  };
150
- compiler.options.resolve.conditionNames = [
151
- 'node',
152
- 'import',
153
- 'require',
154
- 'default',
155
- ];
156
164
  // no custom chunk rules
157
165
  compiler.options.optimization.splitChunks = undefined;
158
166
  // solves strange issues where next doesnt create a runtime chunk
@@ -1 +1 @@
1
- {"version":3,"file":"apply-server-plugins.js","sourceRoot":"","sources":["../../../../../../packages/nextjs-mf/src/plugins/NextFederationPlugin/apply-server-plugins.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"apply-server-plugins.js","sourceRoot":"","sources":["../../../../../../packages/nextjs-mf/src/plugins/NextFederationPlugin/apply-server-plugins.ts"],"names":[],"mappings":"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"}
@@ -1,18 +1,30 @@
1
- import type { ModuleFederationPluginOptions, NextFederationPluginExtraOptions, NextFederationPluginOptions } from '@module-federation/utilities';
2
- import type { Compiler } from 'webpack';
1
+ import type { NextFederationPluginOptions } from '@module-federation/utilities';
2
+ import type Compiler from 'webpack/lib/Compiler';
3
3
  /**
4
- * NextFederationPlugin is a webpack plugin that handles Next.js application
5
- * federation using Module Federation.
4
+ * NextFederationPlugin is a webpack plugin that handles Next.js application federation using Module Federation.
6
5
  */
7
6
  export declare class NextFederationPlugin {
8
- _options: ModuleFederationPluginOptions;
9
- _extraOptions: NextFederationPluginExtraOptions;
7
+ private _options;
8
+ private _extraOptions;
10
9
  /**
11
10
  * Constructs the NextFederationPlugin with the provided options.
12
11
  *
13
12
  * @param options The options to configure the plugin.
14
13
  */
15
14
  constructor(options: NextFederationPluginOptions);
15
+ /**
16
+ * The apply method is called by the webpack compiler and allows the plugin to hook into the webpack process.
17
+ * @param compiler The webpack compiler object.
18
+ */
16
19
  apply(compiler: Compiler): void;
20
+ private validateOptions;
21
+ private isServerCompiler;
22
+ private applyConditionalPlugins;
23
+ private getNormalFederationPluginOptions;
24
+ private getNoopPath;
25
+ private createEmbeddedOptions;
26
+ private applyClientFederationPlugins;
27
+ private applyServerFederationPlugins;
28
+ private applyModuleFederationPlugins;
17
29
  }
18
30
  export default NextFederationPlugin;
@@ -1,27 +1,25 @@
1
- /*
2
- MIT License http://www.opensource.org/licenses/mit-license.php
3
- Author Zackary Jackson @ScriptedAlchemy
4
- */
1
+ /**
2
+ * MIT License http://www.opensource.org/licenses/mit-license.php
3
+ * Author Zackary Jackson @ScriptedAlchemy
4
+ * This module contains the NextFederationPlugin class which is a webpack plugin that handles Next.js application federation using Module Federation.
5
+ */
5
6
  'use strict';
6
7
  var __importDefault = (this && this.__importDefault) || function (mod) {
7
8
  return (mod && mod.__esModule) ? mod : { "default": mod };
8
9
  };
9
10
  Object.defineProperty(exports, "__esModule", { value: true });
10
11
  exports.NextFederationPlugin = void 0;
11
- const utilities_1 = require("@module-federation/utilities");
12
12
  const CopyFederationPlugin_1 = __importDefault(require("../CopyFederationPlugin"));
13
- const next_fragments_1 = require("./next-fragments");
14
- const internal_1 = require("../../internal");
15
- const AddRuntimeRequirementToPromiseExternalPlugin_1 = __importDefault(require("../AddRuntimeRequirementToPromiseExternalPlugin"));
16
13
  const nextPageMapLoader_1 = require("../../loaders/nextPageMapLoader");
17
- const remove_unnecessary_shared_keys_1 = require("./remove-unnecessary-shared-keys");
14
+ const next_fragments_1 = require("./next-fragments");
18
15
  const set_options_1 = require("./set-options");
19
16
  const validate_options_1 = require("./validate-options");
20
17
  const apply_server_plugins_1 = require("./apply-server-plugins");
21
18
  const apply_client_plugins_1 = require("./apply-client-plugins");
19
+ const ModuleFederationPlugin_1 = __importDefault(require("../container/ModuleFederationPlugin"));
20
+ const node_1 = require("@module-federation/node");
22
21
  /**
23
- * NextFederationPlugin is a webpack plugin that handles Next.js application
24
- * federation using Module Federation.
22
+ * NextFederationPlugin is a webpack plugin that handles Next.js application federation using Module Federation.
25
23
  */
26
24
  class NextFederationPlugin {
27
25
  /**
@@ -34,57 +32,70 @@ class NextFederationPlugin {
34
32
  this._options = mainOptions;
35
33
  this._extraOptions = extraOptions;
36
34
  }
35
+ /**
36
+ * The apply method is called by the webpack compiler and allows the plugin to hook into the webpack process.
37
+ * @param compiler The webpack compiler object.
38
+ */
37
39
  apply(compiler) {
38
- // Validate the compiler options
39
- const validCompile = (0, validate_options_1.validateCompilerOptions)(compiler);
40
- if (!validCompile)
40
+ if (!this.validateOptions(compiler))
41
41
  return;
42
- // Validate the NextFederationPlugin options
43
- (0, validate_options_1.validatePluginOptions)(this._options);
44
- // Check if the compiler is for the server or client
45
- const isServer = compiler.options.name === 'server';
46
- const { webpack } = compiler;
47
- // Apply the CopyFederationPlugin
42
+ const isServer = this.isServerCompiler(compiler);
43
+ //@ts-ignore
48
44
  new CopyFederationPlugin_1.default(isServer).apply(compiler);
49
- // If remotes are provided, parse them
50
- if (this._options.remotes) {
51
- // @ts-ignore
52
- this._options.remotes = (0, internal_1.parseRemotes)(this._options.remotes);
53
- }
54
- // If shared modules are provided, remove unnecessary shared keys from the default share scope
55
- if (this._options.shared) {
56
- (0, remove_unnecessary_shared_keys_1.removeUnnecessarySharedKeys)(this._options.shared);
57
- }
58
- const ModuleFederationPlugin = (0, next_fragments_1.getModuleFederationPluginConstructor)(isServer, compiler);
59
- const defaultShared = (0, next_fragments_1.retrieveDefaultShared)(isServer);
45
+ this.applyConditionalPlugins(compiler, isServer);
46
+ const normalFederationPluginOptions = this.getNormalFederationPluginOptions(compiler, isServer);
47
+ this.applyModuleFederationPlugins(compiler, normalFederationPluginOptions, isServer);
48
+ }
49
+ validateOptions(compiler) {
50
+ const compilerValid = (0, validate_options_1.validateCompilerOptions)(compiler);
51
+ const pluginValid = (0, validate_options_1.validatePluginOptions)(this._options);
52
+ if (compilerValid === undefined)
53
+ console.error('Compiler validation failed');
54
+ if (pluginValid === undefined)
55
+ console.error('Plugin validation failed');
56
+ const validCompilerTarget = compiler.options.name === 'server' || compiler.options.name === 'client';
57
+ return (compilerValid !== undefined &&
58
+ pluginValid !== undefined &&
59
+ validCompilerTarget);
60
+ }
61
+ isServerCompiler(compiler) {
62
+ return compiler.options.name === 'server';
63
+ }
64
+ applyConditionalPlugins(compiler, isServer) {
65
+ compiler.options.output.uniqueName = this._options.name;
66
+ (0, next_fragments_1.applyPathFixes)(compiler, this._extraOptions);
60
67
  if (isServer) {
61
- // Refactored server condition
68
+ //@ts-ignore
62
69
  (0, apply_server_plugins_1.configureServerCompilerOptions)(compiler);
63
70
  (0, apply_server_plugins_1.configureServerLibraryAndFilename)(this._options);
71
+ //@ts-ignore
64
72
  (0, apply_server_plugins_1.applyServerPlugins)(compiler, this._options);
73
+ //@ts-ignore
65
74
  (0, apply_server_plugins_1.handleServerExternals)(compiler, {
66
75
  ...this._options,
67
- shared: { ...defaultShared, ...this._options.shared },
76
+ shared: { ...(0, next_fragments_1.retrieveDefaultShared)(isServer), ...this._options.shared },
68
77
  });
69
78
  }
70
79
  else {
80
+ //@ts-ignore
71
81
  (0, apply_client_plugins_1.applyClientPlugins)(compiler, this._options, this._extraOptions);
72
82
  }
73
- (0, next_fragments_1.applyPathFixes)(compiler, this._extraOptions);
74
- // @ts-ignore
75
- const hostFederationPluginOptions = {
83
+ }
84
+ getNormalFederationPluginOptions(compiler, isServer) {
85
+ const defaultShared = (0, next_fragments_1.retrieveDefaultShared)(isServer);
86
+ const noop = this.getNoopPath();
87
+ return {
76
88
  ...this._options,
77
89
  runtime: false,
90
+ remoteType: 'script',
78
91
  exposes: {
79
- //something must be exposed in order to generate a remote entry, which is needed to kickstart runtime
80
- './noop': require.resolve('../../federation-noop'),
92
+ './noop': noop,
93
+ ...this._options.exposes,
81
94
  ...(this._extraOptions.exposePages
82
95
  ? (0, nextPageMapLoader_1.exposeNextjsPages)(compiler.options.context)
83
96
  : {}),
84
- ...this._options.exposes,
85
97
  },
86
98
  remotes: {
87
- //@ts-ignore
88
99
  ...this._options.remotes,
89
100
  },
90
101
  shared: {
@@ -92,46 +103,68 @@ class NextFederationPlugin {
92
103
  ...this._options.shared,
93
104
  },
94
105
  };
95
- if (this._extraOptions.debug) {
96
- compiler.options.devtool = false;
106
+ }
107
+ getNoopPath() {
108
+ let noop;
109
+ try {
110
+ noop = require.resolve('../../federation-noop');
97
111
  }
98
- compiler.options.output.uniqueName = this._options.name;
99
- // inject module hoisting system
100
- (0, next_fragments_1.applyRemoteDelegates)(this._options, compiler);
101
- //@ts-ignore
102
- if (this._extraOptions.automaticAsyncBoundary) {
103
- console.warn('[nextjs-mf]: automaticAsyncBoundary is deprecated');
112
+ catch (e) {
113
+ noop = require.resolve('../../federation-noop.cjs');
104
114
  }
105
- //todo runtime variable creation needs to be applied for server as well. this is just for client
106
- // TODO: this needs to be refactored into something more comprehensive. this is just a quick fix
107
- new webpack.DefinePlugin({
108
- 'process.env.REMOTES': (0, utilities_1.createRuntimeVariables)(this._options.remotes),
109
- 'process.env.CURRENT_HOST': JSON.stringify(this._options.name),
110
- }).apply(compiler);
111
- // @ts-ignore
112
- new ModuleFederationPlugin(hostFederationPluginOptions).apply(compiler);
113
- if (Object.keys(this._options?.remotes || {}).length > 0 ||
114
- Object.keys(this._options?.exposes || {}).length > 0) {
115
- const commonOptions = {
116
- ...hostFederationPluginOptions,
115
+ return noop;
116
+ }
117
+ createEmbeddedOptions(normalFederationPluginOptions, isServer) {
118
+ return {
119
+ ...normalFederationPluginOptions,
120
+ name: 'host_inner_ctn',
121
+ runtime: isServer ? 'webpack-runtime' : 'webpack',
122
+ filename: `host_inner_ctn.js`,
123
+ remoteType: 'script',
124
+ library: {
125
+ ...normalFederationPluginOptions.library,
117
126
  name: 'host_inner_ctn',
118
- runtime: isServer ? 'webpack-runtime' : 'webpack',
119
- filename: `host_inner_ctn.js`,
120
- library: {
121
- ...hostFederationPluginOptions.library,
122
- name: this._options.name,
123
- },
124
- shared: {
125
- ...hostFederationPluginOptions.shared,
126
- ...defaultShared,
127
- },
127
+ },
128
+ };
129
+ }
130
+ applyClientFederationPlugins(compiler, normalFederationPluginOptions) {
131
+ const embeddedOptions = this.createEmbeddedOptions(normalFederationPluginOptions);
132
+ new ModuleFederationPlugin_1.default(normalFederationPluginOptions, embeddedOptions).apply(compiler);
133
+ }
134
+ applyServerFederationPlugins(compiler, normalFederationPluginOptions) {
135
+ const embeddedOptions = this.createEmbeddedOptions(normalFederationPluginOptions, true);
136
+ //@ts-ignore
137
+ const serverSharedOptions = Object.keys(
138
+ //@ts-ignore
139
+ normalFederationPluginOptions.shared).reduce((acc, key) => ({
140
+ ...acc,
141
+ //@ts-ignore
142
+ [key]: { ...normalFederationPluginOptions.shared[key], eager: false },
143
+ }), {});
144
+ const mainOptions = {
145
+ ...normalFederationPluginOptions,
146
+ shared: serverSharedOptions,
147
+ };
148
+ //@ts-ignore
149
+ const prepareRemote = (options) => {
150
+ return {
151
+ ...options,
152
+ remotes: options.remotes
153
+ ? (0, node_1.parseRemotes)(options.remotes)
154
+ : {},
128
155
  };
129
- // @ts-ignore
130
- new ModuleFederationPlugin({
131
- ...commonOptions,
132
- }).apply(compiler);
156
+ };
157
+ //@ts-ignore
158
+ new ModuleFederationPlugin_1.default(prepareRemote(mainOptions), prepareRemote(embeddedOptions)).apply(compiler);
159
+ }
160
+ applyModuleFederationPlugins(compiler, normalFederationPluginOptions, isServer) {
161
+ const ModuleFederationPlugin = (0, next_fragments_1.getModuleFederationPluginConstructor)(isServer, compiler);
162
+ if (!isServer) {
163
+ this.applyClientFederationPlugins(compiler, normalFederationPluginOptions);
164
+ }
165
+ else {
166
+ this.applyServerFederationPlugins(compiler, normalFederationPluginOptions);
133
167
  }
134
- new AddRuntimeRequirementToPromiseExternalPlugin_1.default().apply(compiler);
135
168
  }
136
169
  }
137
170
  exports.NextFederationPlugin = NextFederationPlugin;
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../packages/nextjs-mf/src/plugins/NextFederationPlugin/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../packages/nextjs-mf/src/plugins/NextFederationPlugin/index.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import type { Compiler } from 'webpack';
1
+ import Compiler from 'webpack/lib/Compiler';
2
2
  import { container } from 'webpack';
3
3
  import type { ModuleFederationPluginOptions, SharedObject } from '@module-federation/utilities';
4
4
  type ConstructableModuleFederationPlugin = new (options: ModuleFederationPluginOptions) => container.ModuleFederationPlugin;
@@ -10,25 +10,31 @@ type ConstructableModuleFederationPlugin = new (options: ModuleFederationPluginO
10
10
  */
11
11
  export declare function getModuleFederationPluginConstructor(isServer: boolean, compiler: Compiler): ConstructableModuleFederationPlugin;
12
12
  /**
13
-
14
- Set up default shared values based on the environment.
15
- @param isServer - Boolean indicating if the code is running on the server.
16
- @returns The default share scope based on the environment.
13
+ * Set up default shared values based on the environment.
14
+ * @param {boolean} isServer - Boolean indicating if the code is running on the server.
15
+ * @returns {SharedObject} The default share scope based on the environment.
17
16
  */
18
17
  export declare const retrieveDefaultShared: (isServer: boolean) => SharedObject;
19
18
  /**
20
-
21
- Apply remote delegates.
22
-
23
- This function adds the remote delegates feature by configuring and injecting the appropriate loader that will look
24
- for internal delegate hoist or delegate hoist container and load it using a custom delegateLoader.
25
- Once loaded, it will then look for the available delegates that will be used to configure the remote
26
- that the hoisted module will be dependent upon.
27
-
28
- @param {ModuleFederationPluginOptions} options - The ModuleFederationPluginOptions instance.
29
-
30
- @param {Compiler} compiler - The Webpack compiler instance.
19
+ * Apply remote delegates.
20
+ *
21
+ * This function adds the remote delegates feature by configuring and injecting the appropriate loader that will look
22
+ * for internal delegate hoist or delegate hoist container and load it using a custom delegateLoader.
23
+ * Once loaded, it will then look for the available delegates that will be used to configure the remote
24
+ * that the hoisted module will be dependent upon.
25
+ *
26
+ * @param {ModuleFederationPluginOptions} options - The ModuleFederationPluginOptions instance.
27
+ * @param {Compiler} compiler - The Webpack compiler instance.
31
28
  */
32
29
  export declare function applyRemoteDelegates(options: ModuleFederationPluginOptions, compiler: Compiler): void;
33
- export declare const applyPathFixes: (compiler: any, options: any) => void;
30
+ /**
31
+ * Apply path fixes.
32
+ *
33
+ * This function applies fixes to the path for certain loaders. It checks if the fix is enabled in the options
34
+ * and if the loader is present in the rule. If both conditions are met, it injects the fix loader.
35
+ *
36
+ * @param {Compiler} compiler - The Webpack compiler instance.
37
+ * @param {any} options - The ModuleFederationPluginOptions instance.
38
+ */
39
+ export declare const applyPathFixes: (compiler: Compiler, options: any) => void;
34
40
  export {};