@nx/react 24.0.0-beta.2 → 24.0.0-canary.20261016-5ef7804

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 (158) hide show
  1. package/dist/index.d.ts +0 -2
  2. package/dist/index.js +1 -5
  3. package/dist/src/generators/application/files/base-rspack/rspack.config.js__tmpl__ +2 -10
  4. package/dist/src/generators/application/files/base-webpack/webpack.config.js__tmpl__ +2 -10
  5. package/dist/src/migrations/update-23-2-0/add-optional-module-federation-packages.js +2 -1
  6. package/dist/src/utils/versions.d.ts +0 -3
  7. package/dist/src/utils/versions.js +2 -5
  8. package/executors.json +1 -17
  9. package/generators.json +0 -21
  10. package/package.json +16 -47
  11. package/dist/mf/dynamic-federation.d.ts +0 -69
  12. package/dist/mf/dynamic-federation.js +0 -141
  13. package/dist/mf/index.d.ts +0 -1
  14. package/dist/mf/index.js +0 -8
  15. package/dist/module-federation.d.ts +0 -5
  16. package/dist/module-federation.js +0 -20
  17. package/dist/src/executors/module-federation-dev-server/lib/index.d.ts +0 -2
  18. package/dist/src/executors/module-federation-dev-server/lib/index.js +0 -5
  19. package/dist/src/executors/module-federation-dev-server/lib/normalize-options.d.ts +0 -4
  20. package/dist/src/executors/module-federation-dev-server/lib/normalize-options.js +0 -19
  21. package/dist/src/executors/module-federation-dev-server/lib/start-remotes.d.ts +0 -5
  22. package/dist/src/executors/module-federation-dev-server/lib/start-remotes.js +0 -33
  23. package/dist/src/executors/module-federation-dev-server/module-federation-dev-server.impl.d.ts +0 -6
  24. package/dist/src/executors/module-federation-dev-server/module-federation-dev-server.impl.js +0 -80
  25. package/dist/src/executors/module-federation-dev-server/schema.d.ts +0 -19
  26. package/dist/src/executors/module-federation-dev-server/schema.json +0 -142
  27. package/dist/src/executors/module-federation-ssr-dev-server/lib/index.d.ts +0 -2
  28. package/dist/src/executors/module-federation-ssr-dev-server/lib/index.js +0 -5
  29. package/dist/src/executors/module-federation-ssr-dev-server/lib/normalize-options.d.ts +0 -4
  30. package/dist/src/executors/module-federation-ssr-dev-server/lib/normalize-options.js +0 -23
  31. package/dist/src/executors/module-federation-ssr-dev-server/lib/start-remotes.d.ts +0 -5
  32. package/dist/src/executors/module-federation-ssr-dev-server/lib/start-remotes.js +0 -34
  33. package/dist/src/executors/module-federation-ssr-dev-server/module-federation-ssr-dev-server.impl.d.ts +0 -3
  34. package/dist/src/executors/module-federation-ssr-dev-server/module-federation-ssr-dev-server.impl.js +0 -83
  35. package/dist/src/executors/module-federation-ssr-dev-server/schema.d.ts +0 -29
  36. package/dist/src/executors/module-federation-ssr-dev-server/schema.json +0 -81
  37. package/dist/src/executors/module-federation-static-server/module-federation-static-server.impl.d.ts +0 -12
  38. package/dist/src/executors/module-federation-static-server/module-federation-static-server.impl.js +0 -244
  39. package/dist/src/executors/module-federation-static-server/schema.d.ts +0 -3
  40. package/dist/src/executors/module-federation-static-server/schema.json +0 -16
  41. package/dist/src/generators/federate-module/federate-module.d.ts +0 -4
  42. package/dist/src/generators/federate-module/federate-module.js +0 -67
  43. package/dist/src/generators/federate-module/lib/utils.d.ts +0 -23
  44. package/dist/src/generators/federate-module/lib/utils.js +0 -99
  45. package/dist/src/generators/federate-module/schema.d.ts +0 -15
  46. package/dist/src/generators/federate-module/schema.json +0 -89
  47. package/dist/src/generators/host/files/common/src/app/__fileName__.js__tmpl__ +0 -40
  48. package/dist/src/generators/host/files/common/src/main.js__tmpl__ +0 -13
  49. package/dist/src/generators/host/files/common/tsconfig.lint.json__tmpl__ +0 -19
  50. package/dist/src/generators/host/files/common-ts/src/app/__fileName__.tsx__tmpl__ +0 -41
  51. package/dist/src/generators/host/files/common-ts/src/main.ts__tmpl__ +0 -13
  52. package/dist/src/generators/host/files/rspack-common/src/app/__fileName__.jsx__tmpl__ +0 -42
  53. package/dist/src/generators/host/files/rspack-common/src/main.jsx__tmpl__ +0 -13
  54. package/dist/src/generators/host/files/rspack-common/tsconfig.lint.json__tmpl__ +0 -19
  55. package/dist/src/generators/host/files/rspack-module-federation/module-federation.config.js__tmpl__ +0 -24
  56. package/dist/src/generators/host/files/rspack-module-federation/rspack.config.js__tmpl__ +0 -42
  57. package/dist/src/generators/host/files/rspack-module-federation/rspack.config.prod.js__tmpl__ +0 -66
  58. package/dist/src/generators/host/files/rspack-module-federation-ssr/module-federation.server.config.js__tmpl__ +0 -27
  59. package/dist/src/generators/host/files/rspack-module-federation-ssr/rspack.config.js__tmpl__ +0 -68
  60. package/dist/src/generators/host/files/rspack-module-federation-ssr/server.ts__tmpl__ +0 -28
  61. package/dist/src/generators/host/files/rspack-module-federation-ssr/src/main.server.tsx__tmpl__ +0 -49
  62. package/dist/src/generators/host/files/rspack-module-federation-ssr/tsconfig.server.json__tmpl__ +0 -17
  63. package/dist/src/generators/host/files/rspack-module-federation-ssr-ts/module-federation.server.config.ts__tmpl__ +0 -22
  64. package/dist/src/generators/host/files/rspack-module-federation-ssr-ts/rspack.config.ts__tmpl__ +0 -68
  65. package/dist/src/generators/host/files/rspack-module-federation-ssr-ts/server.ts__tmpl__ +0 -28
  66. package/dist/src/generators/host/files/rspack-module-federation-ssr-ts/src/main.server.tsx__tmpl__ +0 -49
  67. package/dist/src/generators/host/files/rspack-module-federation-ssr-ts/tsconfig.server.json__tmpl__ +0 -17
  68. package/dist/src/generators/host/files/rspack-module-federation-ts/module-federation.config.ts__tmpl__ +0 -28
  69. package/dist/src/generators/host/files/rspack-module-federation-ts/rspack.config.prod.ts__tmpl__ +0 -67
  70. package/dist/src/generators/host/files/rspack-module-federation-ts/rspack.config.ts__tmpl__ +0 -42
  71. package/dist/src/generators/host/files/webpack-module-federation/module-federation.config.js__tmpl__ +0 -24
  72. package/dist/src/generators/host/files/webpack-module-federation/webpack.config.js__tmpl__ +0 -17
  73. package/dist/src/generators/host/files/webpack-module-federation/webpack.config.prod.js__tmpl__ +0 -39
  74. package/dist/src/generators/host/files/webpack-module-federation-ssr/module-federation.server.config.js__tmpl__ +0 -19
  75. package/dist/src/generators/host/files/webpack-module-federation-ssr/server.ts__tmpl__ +0 -28
  76. package/dist/src/generators/host/files/webpack-module-federation-ssr/tsconfig.server.json__tmpl__ +0 -17
  77. package/dist/src/generators/host/files/webpack-module-federation-ssr/webpack.server.config.js__tmpl__ +0 -17
  78. package/dist/src/generators/host/files/webpack-module-federation-ssr-ts/module-federation.server.config.ts__tmpl__ +0 -16
  79. package/dist/src/generators/host/files/webpack-module-federation-ssr-ts/server.ts__tmpl__ +0 -28
  80. package/dist/src/generators/host/files/webpack-module-federation-ssr-ts/tsconfig.server.json__tmpl__ +0 -17
  81. package/dist/src/generators/host/files/webpack-module-federation-ssr-ts/webpack.server.config.ts__tmpl__ +0 -17
  82. package/dist/src/generators/host/files/webpack-module-federation-ts/module-federation.config.ts__tmpl__ +0 -28
  83. package/dist/src/generators/host/files/webpack-module-federation-ts/webpack.config.prod.ts__tmpl__ +0 -40
  84. package/dist/src/generators/host/files/webpack-module-federation-ts/webpack.config.ts__tmpl__ +0 -18
  85. package/dist/src/generators/host/host.d.ts +0 -4
  86. package/dist/src/generators/host/host.js +0 -174
  87. package/dist/src/generators/host/lib/add-module-federation-files.d.ts +0 -6
  88. package/dist/src/generators/host/lib/add-module-federation-files.js +0 -92
  89. package/dist/src/generators/host/lib/normalize-host-name.d.ts +0 -2
  90. package/dist/src/generators/host/lib/normalize-host-name.js +0 -12
  91. package/dist/src/generators/host/lib/setup-ssr-for-host.d.ts +0 -6
  92. package/dist/src/generators/host/lib/setup-ssr-for-host.js +0 -59
  93. package/dist/src/generators/host/lib/update-module-federation-e2e-project.d.ts +0 -3
  94. package/dist/src/generators/host/lib/update-module-federation-e2e-project.js +0 -19
  95. package/dist/src/generators/host/lib/update-module-federation-tsconfig.d.ts +0 -3
  96. package/dist/src/generators/host/lib/update-module-federation-tsconfig.js +0 -34
  97. package/dist/src/generators/host/schema.d.ts +0 -44
  98. package/dist/src/generators/host/schema.json +0 -173
  99. package/dist/src/generators/remote/files/common/src/main.js__tmpl__ +0 -1
  100. package/dist/src/generators/remote/files/common/src/remote-entry.js__tmpl__ +0 -1
  101. package/dist/src/generators/remote/files/common-ts/src/main.ts__tmpl__ +0 -1
  102. package/dist/src/generators/remote/files/common-ts/src/remote-entry.ts__tmpl__ +0 -1
  103. package/dist/src/generators/remote/files/rspack-common/src/main.jsx__tmpl__ +0 -1
  104. package/dist/src/generators/remote/files/rspack-common/src/remote-entry.js__tmpl__ +0 -1
  105. package/dist/src/generators/remote/files/rspack-module-federation/module-federation.config.js__tmpl__ +0 -12
  106. package/dist/src/generators/remote/files/rspack-module-federation/rspack.config.js__tmpl__ +0 -45
  107. package/dist/src/generators/remote/files/rspack-module-federation/rspack.config.prod.js__tmpl__ +0 -1
  108. package/dist/src/generators/remote/files/rspack-module-federation-ssr/module-federation.server.config.js__tmpl__ +0 -15
  109. package/dist/src/generators/remote/files/rspack-module-federation-ssr/rspack.config.js__tmpl__ +0 -71
  110. package/dist/src/generators/remote/files/rspack-module-federation-ssr/server.ts__tmpl__ +0 -45
  111. package/dist/src/generators/remote/files/rspack-module-federation-ssr/src/main.server.tsx__tmpl__ +0 -45
  112. package/dist/src/generators/remote/files/rspack-module-federation-ssr-ts/module-federation.server.config.ts__tmpl__ +0 -19
  113. package/dist/src/generators/remote/files/rspack-module-federation-ssr-ts/rspack.config.ts__tmpl__ +0 -71
  114. package/dist/src/generators/remote/files/rspack-module-federation-ssr-ts/server.ts__tmpl__ +0 -45
  115. package/dist/src/generators/remote/files/rspack-module-federation-ssr-ts/src/main.server.tsx__tmpl__ +0 -45
  116. package/dist/src/generators/remote/files/rspack-module-federation-ssr-ts/tsconfig.lint.json__tmpl__ +0 -19
  117. package/dist/src/generators/remote/files/rspack-module-federation-ts/module-federation.config.ts__tmpl__ +0 -16
  118. package/dist/src/generators/remote/files/rspack-module-federation-ts/rspack.config.prod.ts__tmpl__ +0 -1
  119. package/dist/src/generators/remote/files/rspack-module-federation-ts/rspack.config.ts__tmpl__ +0 -45
  120. package/dist/src/generators/remote/files/rspack-module-federation-ts/tsconfig.lint.json__tmpl__ +0 -19
  121. package/dist/src/generators/remote/files/webpack-module-federation/module-federation.config.js__tmpl__ +0 -12
  122. package/dist/src/generators/remote/files/webpack-module-federation/webpack.config.js__tmpl__ +0 -17
  123. package/dist/src/generators/remote/files/webpack-module-federation/webpack.config.prod.js__tmpl__ +0 -1
  124. package/dist/src/generators/remote/files/webpack-module-federation-ssr/module-federation.server.config.js__tmpl__ +0 -9
  125. package/dist/src/generators/remote/files/webpack-module-federation-ssr/server.ts__tmpl__ +0 -45
  126. package/dist/src/generators/remote/files/webpack-module-federation-ssr/webpack.server.config.js__tmpl__ +0 -17
  127. package/dist/src/generators/remote/files/webpack-module-federation-ssr-ts/module-federation.server.config.ts__tmpl__ +0 -13
  128. package/dist/src/generators/remote/files/webpack-module-federation-ssr-ts/server.ts__tmpl__ +0 -45
  129. package/dist/src/generators/remote/files/webpack-module-federation-ssr-ts/tsconfig.lint.json__tmpl__ +0 -19
  130. package/dist/src/generators/remote/files/webpack-module-federation-ssr-ts/webpack.server.config.ts__tmpl__ +0 -17
  131. package/dist/src/generators/remote/files/webpack-module-federation-ts/module-federation.config.ts__tmpl__ +0 -16
  132. package/dist/src/generators/remote/files/webpack-module-federation-ts/tsconfig.lint.json__tmpl__ +0 -19
  133. package/dist/src/generators/remote/files/webpack-module-federation-ts/webpack.config.prod.ts__tmpl__ +0 -1
  134. package/dist/src/generators/remote/files/webpack-module-federation-ts/webpack.config.ts__tmpl__ +0 -17
  135. package/dist/src/generators/remote/lib/add-remote-to-dynamic-host.d.ts +0 -2
  136. package/dist/src/generators/remote/lib/add-remote-to-dynamic-host.js +0 -12
  137. package/dist/src/generators/remote/lib/setup-package-json-exports-for-remote.d.ts +0 -3
  138. package/dist/src/generators/remote/lib/setup-package-json-exports-for-remote.js +0 -30
  139. package/dist/src/generators/remote/lib/setup-ssr-for-remote.d.ts +0 -4
  140. package/dist/src/generators/remote/lib/setup-ssr-for-remote.js +0 -61
  141. package/dist/src/generators/remote/lib/setup-tspath-for-remote.d.ts +0 -3
  142. package/dist/src/generators/remote/lib/setup-tspath-for-remote.js +0 -14
  143. package/dist/src/generators/remote/lib/update-host-with-remote.d.ts +0 -2
  144. package/dist/src/generators/remote/lib/update-host-with-remote.js +0 -79
  145. package/dist/src/generators/remote/remote.d.ts +0 -6
  146. package/dist/src/generators/remote/remote.js +0 -201
  147. package/dist/src/generators/remote/schema.d.ts +0 -39
  148. package/dist/src/generators/remote/schema.json +0 -173
  149. package/dist/src/module-federation/ast-utils.d.ts +0 -8
  150. package/dist/src/module-federation/ast-utils.js +0 -101
  151. package/dist/src/rules/update-module-federation-project.d.ts +0 -11
  152. package/dist/src/rules/update-module-federation-project.js +0 -72
  153. package/dist/src/utils/add-mf-env-to-inputs.d.ts +0 -2
  154. package/dist/src/utils/add-mf-env-to-inputs.js +0 -29
  155. package/dist/src/utils/module-federation-deprecation.d.ts +0 -12
  156. package/dist/src/utils/module-federation-deprecation.js +0 -46
  157. package/dist/src/utils/normalize-remote.d.ts +0 -8
  158. package/dist/src/utils/normalize-remote.js +0 -31
@@ -1,45 +0,0 @@
1
- import * as path from 'path';
2
- import express from 'express';
3
- import cors from 'cors';
4
-
5
- import { handleRequest } from './src/main.server';
6
-
7
- const port = process.env['PORT'] || <%= port %>;
8
- const app = express();
9
-
10
- const browserDist = path.join(process.cwd(), '<%= rspackPluginOptions.outputPath %>', 'browser');
11
- const serverDist = path.join(process.cwd(), '<%= rspackPluginOptions.outputPath %>', 'server');
12
- const indexPath = path.join(browserDist, 'index.html');
13
-
14
- app.use(cors());
15
-
16
- // Client-side static bundles
17
- app.get(
18
- '*.*',
19
- express.static(browserDist, {
20
- maxAge: '1y',
21
- })
22
- );
23
-
24
- // Static bundles for server-side module federation
25
- app.use('/server',
26
- express.static(serverDist, {
27
- maxAge: '1y'
28
- })
29
- );
30
-
31
- app.use('*', handleRequest(indexPath));
32
-
33
- const server = app.listen(port, () => {
34
- console.log(`Express server listening on http://localhost:${port}`);
35
-
36
- /**
37
- * DO NOT REMOVE IF USING @nx/react:module-federation-dev-ssr executor
38
- * to serve your Host application with this Remote application.
39
- * This message allows Nx to determine when the Remote is ready to be
40
- * consumed by the Host.
41
- */
42
- process.send?.('nx.server.ready');
43
- });
44
-
45
- server.on('error', console.error);
@@ -1,45 +0,0 @@
1
- import type { Request, Response } from 'express';
2
- import * as fs from 'fs';
3
- import * as ReactDOMServer from 'react-dom/server';
4
- import isbot from 'isbot';
5
-
6
- import App from './app/app';
7
-
8
- let indexHtml: null | string = null;
9
-
10
- export function handleRequest(indexPath: string) {
11
- return function render(req: Request, res: Response) {
12
- let didError = false;
13
-
14
- if (!indexHtml) {
15
- indexHtml = fs.readFileSync(indexPath).toString();
16
- }
17
-
18
- const [htmlStart, htmlEnd] = indexHtml.split(`<div id="root"></div>`);
19
-
20
- // For bots (e.g. search engines), the content will not be streamed but render all at once.
21
- // For users, content should be streamed to the user as they are ready.
22
- const callbackName = isbot(req.headers['user-agent'])
23
- ? 'onAllReady'
24
- : 'onShellReady';
25
-
26
- const stream = ReactDOMServer.renderToPipeableStream(<App />, {
27
- [callbackName]() {
28
- res.statusCode = didError ? 500 : 200;
29
- res.setHeader('Content-type', 'text/html; charset=utf-8');
30
- res.write(`${htmlStart}<div id="root">`);
31
- stream.pipe(res);
32
- res.write(`</div>${htmlEnd}`);
33
- },
34
- onShellError(error) {
35
- console.error(error);
36
- res.statusCode = 500;
37
- res.send('<!doctype html><h1>Server Error</h1>');
38
- },
39
- onError(error) {
40
- didError = true;
41
- console.error(error);
42
- },
43
- });
44
- };
45
- }
@@ -1,19 +0,0 @@
1
- import type {ModuleFederationConfig} from '@nx/module-federation';
2
-
3
- const config: ModuleFederationConfig = {
4
- name: '<%= projectName %>',
5
- exposes: {
6
- './Module': './src/remote-entry.<%= js ? 'js' : 'ts' %>',
7
- },
8
- shared: (libraryName, libraryConfig) => {
9
- return {
10
- ...libraryConfig,
11
- eager: true
12
- }
13
- },
14
- };
15
-
16
- /**
17
- * Nx requires a default export of the config to allow correct resolution of the module federation graph.
18
- **/
19
- export default config;
@@ -1,71 +0,0 @@
1
- import { NxAppRspackPlugin } from '@nx/rspack/app-plugin.js';
2
- import { NxReactRspackPlugin } from '@nx/rspack/react-plugin.js';
3
- import { NxModuleFederationPlugin, NxModuleFederationSSRDevServerPlugin } from '@nx/module-federation/rspack';
4
- import { join } from 'path';
5
-
6
- import browserMfConfig from './module-federation.config';
7
- import serverMfConfig from './module-federation.server.config';
8
-
9
- const browserRspackConfig = {
10
- name: 'browser',
11
- // rspack-cli dev mode defaults this on; it breaks module federation.
12
- lazyCompilation: false,
13
- output: {
14
- path: join(__dirname, '<%= rspackPluginOptions.outputPath %>', 'browser'),
15
- publicPath: 'auto'
16
- },
17
- devServer: {
18
- port: <%= port %>,
19
- headers: {
20
- "Access-Control-Allow-Origin": "*"
21
- },
22
- historyApiFallback: {
23
- index: '/index.html',
24
- disableDotRule: true,
25
- htmlAcceptHeaders: ['text/html', 'application/xhtml+xml'],
26
- },
27
- devMiddleware: {
28
- writeToDisk: (file: string) => !file.includes('.hot-update.'),
29
- },
30
- },
31
- plugins: [
32
- new NxAppRspackPlugin({
33
- tsConfig: '<%= rspackPluginOptions.tsConfig %>',
34
- main: '<%= rspackPluginOptions.main %>',
35
- index: '<%= rspackPluginOptions.index %>',
36
- baseHref: '<%= rspackPluginOptions.baseHref %>',
37
- assets: <%- JSON.stringify(rspackPluginOptions.assets) %>,
38
- styles: <%- JSON.stringify(rspackPluginOptions.styles) %>,
39
- outputHashing: process.env['NODE_ENV'] === 'production' ? 'all' : 'none',
40
- optimization: process.env['NODE_ENV'] === 'production',
41
- }),
42
- new NxReactRspackPlugin({
43
- // Uncomment this line if you don't want to use SVGR
44
- // See: https://react-svgr.com/
45
- // svgr: false
46
- }),
47
- new NxModuleFederationPlugin({ config: browserMfConfig }, { dts: false }),
48
- ],
49
- };
50
-
51
- const serverRspackConfig = {
52
- name: 'server',
53
- target: 'async-node',
54
- output: {
55
- path: join(__dirname, '<%= rspackPluginOptions.outputPath %>', 'server'),
56
- filename: 'server.js'
57
- },
58
- plugins: [
59
- new NxAppRspackPlugin({
60
- outputPath: join(__dirname, '<%= rspackPluginOptions.outputPath %>', 'server'),
61
- outputFileName: 'server.js',
62
- tsConfig: '<%= rspackPluginOptions.tsConfig %>',
63
- main: '<%= rspackPluginOptions.mainServer %>',
64
- baseHref: '<%= rspackPluginOptions.baseHref %>',
65
- }),
66
- new NxModuleFederationPlugin({ config: serverMfConfig, isServer: true }, { dts: false }),
67
- new NxModuleFederationSSRDevServerPlugin({ config: serverMfConfig }),
68
- ],
69
- };
70
-
71
- export default [browserRspackConfig, serverRspackConfig];
@@ -1,45 +0,0 @@
1
- import * as path from 'path';
2
- import express from 'express';
3
- import cors from 'cors';
4
-
5
- import { handleRequest } from './src/main.server';
6
-
7
- const port = process.env['PORT'] || <%= port %>;
8
- const app = express();
9
-
10
- const browserDist = path.join(process.cwd(), '<%= rspackPluginOptions.outputPath %>', 'browser');
11
- const serverDist = path.join(process.cwd(), '<%= rspackPluginOptions.outputPath %>', 'server');
12
- const indexPath = path.join(browserDist, 'index.html');
13
-
14
- app.use(cors());
15
-
16
- // Client-side static bundles
17
- app.get(
18
- '*.*',
19
- express.static(browserDist, {
20
- maxAge: '1y',
21
- })
22
- );
23
-
24
- // Static bundles for server-side module federation
25
- app.use('/server',
26
- express.static(serverDist, {
27
- maxAge: '1y'
28
- })
29
- );
30
-
31
- app.use('*', handleRequest(indexPath));
32
-
33
- const server = app.listen(port, () => {
34
- console.log(`Express server listening on http://localhost:${port}`);
35
-
36
- /**
37
- * DO NOT REMOVE IF USING @nx/react:module-federation-dev-ssr executor
38
- * to serve your Host application with this Remote application.
39
- * This message allows Nx to determine when the Remote is ready to be
40
- * consumed by the Host.
41
- */
42
- process.send?.('nx.server.ready');
43
- });
44
-
45
- server.on('error', console.error);
@@ -1,45 +0,0 @@
1
- import type { Request, Response } from 'express';
2
- import * as fs from 'fs';
3
- import * as ReactDOMServer from 'react-dom/server';
4
- import isbot from 'isbot';
5
-
6
- import App from './app/app';
7
-
8
- let indexHtml: null | string = null;
9
-
10
- export function handleRequest(indexPath: string) {
11
- return function render(req: Request, res: Response) {
12
- let didError = false;
13
-
14
- if (!indexHtml) {
15
- indexHtml = fs.readFileSync(indexPath).toString();
16
- }
17
-
18
- const [htmlStart, htmlEnd] = indexHtml.split(`<div id="root"></div>`);
19
-
20
- // For bots (e.g. search engines), the content will not be streamed but render all at once.
21
- // For users, content should be streamed to the user as they are ready.
22
- const callbackName = isbot(req.headers['user-agent'])
23
- ? 'onAllReady'
24
- : 'onShellReady';
25
-
26
- const stream = ReactDOMServer.renderToPipeableStream(<App />, {
27
- [callbackName]() {
28
- res.statusCode = didError ? 500 : 200;
29
- res.setHeader('Content-type', 'text/html; charset=utf-8');
30
- res.write(`${htmlStart}<div id="root">`);
31
- stream.pipe(res);
32
- res.write(`</div>${htmlEnd}`);
33
- },
34
- onShellError(error) {
35
- console.error(error);
36
- res.statusCode = 500;
37
- res.send('<!doctype html><h1>Server Error</h1>');
38
- },
39
- onError(error) {
40
- didError = true;
41
- console.error(error);
42
- },
43
- });
44
- };
45
- }
@@ -1,19 +0,0 @@
1
- {
2
- "extends": "./tsconfig.json",
3
- "compilerOptions": {
4
- "outDir": "../../dist/out-tsc",
5
- "types": [
6
- "node",
7
- "@nx/react/typings/cssmodule.d.ts",
8
- "@nx/react/typings/image.d.ts"
9
- ]
10
- },
11
- "include": [
12
- "src/**/*.js",
13
- "src/**/*.jsx",
14
- "src/**/*.ts",
15
- "src/**/*.tsx",
16
- "rspack.config.ts",
17
- "rspack.prod.config.ts"
18
- ]
19
- }
@@ -1,16 +0,0 @@
1
- import type {ModuleFederationConfig} from '@nx/module-federation';
2
-
3
- const config: ModuleFederationConfig = {
4
- name: '<%= projectName %>',
5
- <%_ if (dynamic) { _%>
6
- library: { type: 'var', name: '<%= projectName %>'},
7
- <%_ } _%>
8
- exposes: {
9
- './Module': './src/remote-entry.<%= js ? 'js' : 'ts' %>',
10
- },
11
- };
12
-
13
- /**
14
- * Nx requires a default export of the config to allow correct resolution of the module federation graph.
15
- **/
16
- export default config;
@@ -1 +0,0 @@
1
- export default require('./rspack.config');
@@ -1,45 +0,0 @@
1
- import { NxAppRspackPlugin } from '@nx/rspack/app-plugin.js';
2
- import { NxReactRspackPlugin } from '@nx/rspack/react-plugin.js';
3
- import { NxModuleFederationPlugin, NxModuleFederationDevServerPlugin } from '@nx/module-federation/rspack';
4
- import { join } from 'path';
5
-
6
- import config from './module-federation.config';
7
-
8
- export default {
9
- // rspack-cli dev mode defaults this on; it breaks module federation.
10
- lazyCompilation: false,
11
- output: {
12
- path: join(__dirname, '<%= rspackPluginOptions.outputPath %>'),
13
- publicPath: 'auto'
14
- },
15
- devServer: {
16
- port: <%= port %>,
17
- headers: {
18
- "Access-Control-Allow-Origin": "*"
19
- },
20
- historyApiFallback: {
21
- index: '/index.html',
22
- disableDotRule: true,
23
- htmlAcceptHeaders: ['text/html', 'application/xhtml+xml'],
24
- },
25
- },
26
- plugins: [
27
- new NxAppRspackPlugin({
28
- tsConfig: '<%= rspackPluginOptions.tsConfig %>',
29
- main: '<%= rspackPluginOptions.main %>',
30
- index: '<%= rspackPluginOptions.index %>',
31
- baseHref: '<%= rspackPluginOptions.baseHref %>',
32
- assets: <%- JSON.stringify(rspackPluginOptions.assets) %>,
33
- styles: <%- JSON.stringify(rspackPluginOptions.styles) %>,
34
- outputHashing: process.env['NODE_ENV'] === 'production' ? 'all' : 'none',
35
- optimization: process.env['NODE_ENV'] === 'production',
36
- }),
37
- new NxReactRspackPlugin({
38
- // Uncomment this line if you don't want to use SVGR
39
- // See: https://react-svgr.com/
40
- // svgr: false
41
- }),
42
- new NxModuleFederationPlugin({ config }, { dts: false }),
43
- new NxModuleFederationDevServerPlugin({ config }),
44
- ],
45
- };
@@ -1,19 +0,0 @@
1
- {
2
- "extends": "./tsconfig.json",
3
- "compilerOptions": {
4
- "outDir": "../../dist/out-tsc",
5
- "types": [
6
- "node",
7
- "@nx/react/typings/cssmodule.d.ts",
8
- "@nx/react/typings/image.d.ts"
9
- ]
10
- },
11
- "include": [
12
- "src/**/*.js",
13
- "src/**/*.jsx",
14
- "src/**/*.ts",
15
- "src/**/*.tsx",
16
- "rspack.config.ts",
17
- "rspack.prod.config.ts"
18
- ]
19
- }
@@ -1,12 +0,0 @@
1
- /**
2
- * Nx requires a default export of the config to allow correct resolution of the module federation graph.
3
- **/
4
- module.exports = {
5
- name: '<%= projectName %>',
6
- <%_ if (dynamic) { _%>
7
- library: { type: 'var', name: '<%= projectName %>'},
8
- <%_ } _%>
9
- exposes: {
10
- './Module': './src/remote-entry.<%= js ? 'js' : 'ts' %>',
11
- },
12
- };
@@ -1,17 +0,0 @@
1
- const { composePlugins, withNx } = require('@nx/webpack');
2
- const { withReact } = require('@nx/react');
3
- const { withModuleFederation } = require('@nx/module-federation/webpack');
4
-
5
- const baseConfig = require('./module-federation.config');
6
-
7
- const config = {
8
- ...baseConfig,
9
- };
10
-
11
- // Nx plugins for webpack to build config object from Nx options and context.
12
- /**
13
- * DTS Plugin is disabled in Nx Workspaces as Nx already provides Typing support Module Federation
14
- * The DTS Plugin can be enabled by setting dts: true
15
- * Learn more about the DTS Plugin here: https://module-federation.io/configure/dts.html
16
- */
17
- module.exports = composePlugins(withNx(), withReact(), withModuleFederation(config, { dts: false }));
@@ -1 +0,0 @@
1
- module.exports = require('./webpack.config');
@@ -1,9 +0,0 @@
1
- /**
2
- * Nx requires a default export of the config to allow correct resolution of the module federation graph.
3
- **/
4
- module.exports = {
5
- name: '<%= projectName %>',
6
- exposes: {
7
- './Module': '<%= appProjectRoot %>/src/remote-entry.<%= js ? 'js' : 'ts' %>',
8
- },
9
- };
@@ -1,45 +0,0 @@
1
- import * as path from 'path';
2
- import express from 'express';
3
- import cors from 'cors';
4
-
5
- import { handleRequest } from './src/main.server';
6
-
7
- const port = process.env['PORT'] || <%= port %>;
8
- const app = express();
9
-
10
- const browserDist = path.join(process.cwd(), '<%= browserBuildOutputPath %>');
11
- const serverDist = path.join(process.cwd(), '<%= serverBuildOutputPath %>');
12
- const indexPath = path.join(browserDist, 'index.html');
13
-
14
- app.use(cors());
15
-
16
- // Client-side static bundles
17
- app.get(
18
- '*.*',
19
- express.static(browserDist, {
20
- maxAge: '1y',
21
- })
22
- );
23
-
24
- // Static bundles for server-side module federation
25
- app.use('/server',
26
- express.static(serverDist, {
27
- maxAge: '1y'
28
- })
29
- );
30
-
31
- app.use('*', handleRequest(indexPath));
32
-
33
- const server = app.listen(port, () => {
34
- console.log(`Express server listening on http://localhost:${port}`);
35
-
36
- /**
37
- * DO NOT REMOVE IF USING @nx/react:module-federation-dev-ssr executor
38
- * to serve your Host application with this Remote application.
39
- * This message allows Nx to determine when the Remote is ready to be
40
- * consumed by the Host.
41
- */
42
- process.send?.('nx.server.ready');
43
- });
44
-
45
- server.on('error', console.error);
@@ -1,17 +0,0 @@
1
- const {composePlugins, withNx} = require('@nx/webpack');
2
- const {withReact} = require('@nx/react');
3
- const {withModuleFederationForSSR} = require('@nx/module-federation/webpack');
4
-
5
- const baseConfig = require("./module-federation.server.config");
6
-
7
- const defaultConfig = {
8
- ...baseConfig,
9
- };
10
-
11
- // Nx plugins for webpack to build config object from Nx options and context.
12
- /**
13
- * DTS Plugin is disabled in Nx Workspaces as Nx already provides Typing support Module Federation
14
- * The DTS Plugin can be enabled by setting dts: true
15
- * Learn more about the DTS Plugin here: https://module-federation.io/configure/dts.html
16
- */
17
- module.exports = composePlugins(withNx(), withReact({ssr: true}), withModuleFederationForSSR(defaultConfig, { dts: false }));
@@ -1,13 +0,0 @@
1
- import type {ModuleFederationConfig} from '@nx/module-federation';
2
-
3
- const config: ModuleFederationConfig = {
4
- name: '<%= projectName %>',
5
- exposes: {
6
- './Module': '<%= appProjectRoot %>/src/remote-entry.<%= js ? 'js' : 'ts' %>',
7
- },
8
- };
9
-
10
- /**
11
- * Nx requires a default export of the config to allow correct resolution of the module federation graph.
12
- **/
13
- export default config;
@@ -1,45 +0,0 @@
1
- import * as path from 'path';
2
- import express from 'express';
3
- import cors from 'cors';
4
-
5
- import { handleRequest } from './src/main.server';
6
-
7
- const port = process.env['PORT'] || <%= port %>;
8
- const app = express();
9
-
10
- const browserDist = path.join(process.cwd(), '<%= browserBuildOutputPath %>');
11
- const serverDist = path.join(process.cwd(), '<%= serverBuildOutputPath %>');
12
- const indexPath = path.join(browserDist, 'index.html');
13
-
14
- app.use(cors());
15
-
16
- // Client-side static bundles
17
- app.get(
18
- '*.*',
19
- express.static(browserDist, {
20
- maxAge: '1y',
21
- })
22
- );
23
-
24
- // Static bundles for server-side module federation
25
- app.use('/server',
26
- express.static(serverDist, {
27
- maxAge: '1y'
28
- })
29
- );
30
-
31
- app.use('*', handleRequest(indexPath));
32
-
33
- const server = app.listen(port, () => {
34
- console.log(`Express server listening on http://localhost:${port}`);
35
-
36
- /**
37
- * DO NOT REMOVE IF USING @nx/react:module-federation-dev-ssr executor
38
- * to serve your Host application with this Remote application.
39
- * This message allows Nx to determine when the Remote is ready to be
40
- * consumed by the Host.
41
- */
42
- process.send?.('nx.server.ready');
43
- });
44
-
45
- server.on('error', console.error);
@@ -1,19 +0,0 @@
1
- {
2
- "extends": "./tsconfig.json",
3
- "compilerOptions": {
4
- "outDir": "../../dist/out-tsc",
5
- "types": [
6
- "node",
7
- "@nx/react/typings/cssmodule.d.ts",
8
- "@nx/react/typings/image.d.ts"
9
- ]
10
- },
11
- "include": [
12
- "src/**/*.js",
13
- "src/**/*.jsx",
14
- "src/**/*.ts",
15
- "src/**/*.tsx",
16
- "webpack.config.ts",
17
- "webpack.prod.config.ts"
18
- ]
19
- }
@@ -1,17 +0,0 @@
1
- import {composePlugins, withNx} from '@nx/webpack';
2
- import {withReact} from '@nx/react';
3
- import {withModuleFederationForSSR} from '@nx/module-federation/webpack';
4
-
5
- import baseConfig from "./module-federation.server.config";
6
-
7
- const defaultConfig = {
8
- ...baseConfig,
9
- };
10
-
11
- // Nx plugins for webpack to build config object from Nx options and context.
12
- /**
13
- * DTS Plugin is disabled in Nx Workspaces as Nx already provides Typing support Module Federation
14
- * The DTS Plugin can be enabled by setting dts: true
15
- * Learn more about the DTS Plugin here: https://module-federation.io/configure/dts.html
16
- */
17
- export default composePlugins(withNx(), withReact({ssr: true}), withModuleFederationForSSR(defaultConfig, { dts: false }));
@@ -1,16 +0,0 @@
1
- import type {ModuleFederationConfig} from '@nx/module-federation';
2
-
3
- const config: ModuleFederationConfig = {
4
- name: '<%= projectName %>',
5
- <%_ if (dynamic) { _%>
6
- library: { type: 'var', name: '<%= projectName %>'},
7
- <%_ } _%>
8
- exposes: {
9
- './Module': './src/remote-entry.<%= js ? 'js' : 'ts' %>',
10
- },
11
- };
12
-
13
- /**
14
- * Nx requires a default export of the config to allow correct resolution of the module federation graph.
15
- **/
16
- export default config;
@@ -1,19 +0,0 @@
1
- {
2
- "extends": "./tsconfig.json",
3
- "compilerOptions": {
4
- "outDir": "../../dist/out-tsc",
5
- "types": [
6
- "node",
7
- "@nx/react/typings/cssmodule.d.ts",
8
- "@nx/react/typings/image.d.ts"
9
- ]
10
- },
11
- "include": [
12
- "src/**/*.js",
13
- "src/**/*.jsx",
14
- "src/**/*.ts",
15
- "src/**/*.tsx",
16
- "webpack.config.ts",
17
- "webpack.prod.config.ts"
18
- ]
19
- }
@@ -1 +0,0 @@
1
- export default require('./webpack.config');
@@ -1,17 +0,0 @@
1
- import {composePlugins, withNx} from '@nx/webpack';
2
- import {withReact} from '@nx/react';
3
- import {withModuleFederation} from '@nx/module-federation/webpack';
4
-
5
- import baseConfig from './module-federation.config';
6
-
7
- const config = {
8
- ...baseConfig,
9
- };
10
-
11
- // Nx plugins for webpack to build config object from Nx options and context.
12
- /**
13
- * DTS Plugin is disabled in Nx Workspaces as Nx already provides Typing support Module Federation
14
- * The DTS Plugin can be enabled by setting dts: true
15
- * Learn more about the DTS Plugin here: https://module-federation.io/configure/dts.html
16
- */
17
- export default composePlugins(withNx(), withReact(), withModuleFederation(config, { dts: false }));
@@ -1,2 +0,0 @@
1
- import { Tree } from '@nx/devkit';
2
- export declare function addRemoteToDynamicHost(tree: Tree, remoteName: string, remotePort: number, pathToMfManifest: string): void;