@nx/react 24.0.0-beta.1 → 24.0.0-beta.3

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 (204) hide show
  1. package/dist/index.d.ts +0 -2
  2. package/dist/index.js +1 -5
  3. package/dist/internal.d.ts +1 -0
  4. package/dist/internal.js +3 -1
  5. package/dist/plugins/component-testing/index.js +92 -33
  6. package/dist/plugins/storybook/index.js +18 -18
  7. package/dist/plugins/with-react.d.ts +3 -7
  8. package/dist/plugins/with-react.js +5 -19
  9. package/dist/src/generators/application/application.js +1 -36
  10. package/dist/src/generators/application/files/base-rspack/rspack.config.js__tmpl__ +1 -24
  11. package/dist/src/generators/application/files/base-webpack/webpack.config.js__tmpl__ +1 -26
  12. package/dist/src/generators/application/lib/add-e2e.js +5 -6
  13. package/dist/src/generators/application/lib/add-linting.js +0 -1
  14. package/dist/src/generators/application/lib/add-project.js +0 -167
  15. package/dist/src/generators/application/lib/bundlers/add-rsbuild.js +0 -1
  16. package/dist/src/generators/application/lib/bundlers/add-vite.js +0 -2
  17. package/dist/src/generators/application/lib/bundlers/add-webpack.js +0 -1
  18. package/dist/src/generators/application/lib/create-application-files.d.ts +0 -1
  19. package/dist/src/generators/application/lib/create-application-files.js +2 -11
  20. package/dist/src/generators/application/lib/normalize-options.js +0 -4
  21. package/dist/src/generators/application/schema.d.ts +0 -2
  22. package/dist/src/generators/cypress-component-configuration/cypress-component-configuration.js +1 -9
  23. package/dist/src/generators/cypress-component-configuration/schema.d.ts +0 -1
  24. package/dist/src/generators/init/init.js +3 -5
  25. package/dist/src/generators/init/schema.d.ts +0 -1
  26. package/dist/src/generators/library/lib/add-linting.js +0 -1
  27. package/dist/src/generators/library/lib/add-rollup-build-target.js +3 -47
  28. package/dist/src/generators/library/lib/normalize-options.js +0 -4
  29. package/dist/src/generators/library/library.js +1 -4
  30. package/dist/src/generators/library/schema.d.ts +0 -1
  31. package/dist/src/generators/storybook-configuration/configuration.js +1 -9
  32. package/dist/src/generators/storybook-configuration/schema.d.ts +0 -1
  33. package/dist/src/migrations/update-23-2-0/add-optional-module-federation-packages.js +2 -1
  34. package/dist/src/migrations/update-24-0-0/register-typescript-plugin-for-typecheck.d.ts +4 -0
  35. package/dist/src/migrations/update-24-0-0/register-typescript-plugin-for-typecheck.js +13 -0
  36. package/dist/src/migrations/update-24-0-0/register-typescript-plugin-for-typecheck.md +40 -0
  37. package/dist/src/plugins/router-plugin.d.ts +0 -1
  38. package/dist/src/plugins/router-plugin.js +5 -42
  39. package/dist/src/utils/ast-utils.d.ts +0 -1
  40. package/dist/src/utils/ast-utils.js +0 -23
  41. package/dist/src/utils/ct-utils.js +54 -14
  42. package/dist/src/utils/deprecation.d.ts +1 -1
  43. package/dist/src/utils/deprecation.js +3 -5
  44. package/dist/src/utils/versions.d.ts +0 -7
  45. package/dist/src/utils/versions.js +2 -9
  46. package/executors.json +1 -17
  47. package/generators.json +0 -27
  48. package/migrations.json +6 -0
  49. package/package.json +17 -47
  50. package/dist/mf/dynamic-federation.d.ts +0 -69
  51. package/dist/mf/dynamic-federation.js +0 -141
  52. package/dist/mf/index.d.ts +0 -1
  53. package/dist/mf/index.js +0 -8
  54. package/dist/module-federation.d.ts +0 -5
  55. package/dist/module-federation.js +0 -20
  56. package/dist/src/executors/module-federation-dev-server/lib/index.d.ts +0 -2
  57. package/dist/src/executors/module-federation-dev-server/lib/index.js +0 -5
  58. package/dist/src/executors/module-federation-dev-server/lib/normalize-options.d.ts +0 -4
  59. package/dist/src/executors/module-federation-dev-server/lib/normalize-options.js +0 -19
  60. package/dist/src/executors/module-federation-dev-server/lib/start-remotes.d.ts +0 -5
  61. package/dist/src/executors/module-federation-dev-server/lib/start-remotes.js +0 -33
  62. package/dist/src/executors/module-federation-dev-server/module-federation-dev-server.impl.d.ts +0 -6
  63. package/dist/src/executors/module-federation-dev-server/module-federation-dev-server.impl.js +0 -80
  64. package/dist/src/executors/module-federation-dev-server/schema.d.ts +0 -19
  65. package/dist/src/executors/module-federation-dev-server/schema.json +0 -142
  66. package/dist/src/executors/module-federation-ssr-dev-server/lib/index.d.ts +0 -2
  67. package/dist/src/executors/module-federation-ssr-dev-server/lib/index.js +0 -5
  68. package/dist/src/executors/module-federation-ssr-dev-server/lib/normalize-options.d.ts +0 -4
  69. package/dist/src/executors/module-federation-ssr-dev-server/lib/normalize-options.js +0 -23
  70. package/dist/src/executors/module-federation-ssr-dev-server/lib/start-remotes.d.ts +0 -5
  71. package/dist/src/executors/module-federation-ssr-dev-server/lib/start-remotes.js +0 -34
  72. package/dist/src/executors/module-federation-ssr-dev-server/module-federation-ssr-dev-server.impl.d.ts +0 -3
  73. package/dist/src/executors/module-federation-ssr-dev-server/module-federation-ssr-dev-server.impl.js +0 -83
  74. package/dist/src/executors/module-federation-ssr-dev-server/schema.d.ts +0 -29
  75. package/dist/src/executors/module-federation-ssr-dev-server/schema.json +0 -81
  76. package/dist/src/executors/module-federation-static-server/module-federation-static-server.impl.d.ts +0 -12
  77. package/dist/src/executors/module-federation-static-server/module-federation-static-server.impl.js +0 -244
  78. package/dist/src/executors/module-federation-static-server/schema.d.ts +0 -3
  79. package/dist/src/executors/module-federation-static-server/schema.json +0 -16
  80. package/dist/src/generators/federate-module/federate-module.d.ts +0 -4
  81. package/dist/src/generators/federate-module/federate-module.js +0 -67
  82. package/dist/src/generators/federate-module/lib/utils.d.ts +0 -23
  83. package/dist/src/generators/federate-module/lib/utils.js +0 -99
  84. package/dist/src/generators/federate-module/schema.d.ts +0 -15
  85. package/dist/src/generators/federate-module/schema.json +0 -89
  86. package/dist/src/generators/host/files/common/src/app/__fileName__.js__tmpl__ +0 -40
  87. package/dist/src/generators/host/files/common/src/main.js__tmpl__ +0 -13
  88. package/dist/src/generators/host/files/common/tsconfig.lint.json__tmpl__ +0 -19
  89. package/dist/src/generators/host/files/common-ts/src/app/__fileName__.tsx__tmpl__ +0 -41
  90. package/dist/src/generators/host/files/common-ts/src/main.ts__tmpl__ +0 -13
  91. package/dist/src/generators/host/files/rspack-common/src/app/__fileName__.jsx__tmpl__ +0 -42
  92. package/dist/src/generators/host/files/rspack-common/src/main.jsx__tmpl__ +0 -13
  93. package/dist/src/generators/host/files/rspack-common/tsconfig.lint.json__tmpl__ +0 -19
  94. package/dist/src/generators/host/files/rspack-module-federation/module-federation.config.js__tmpl__ +0 -24
  95. package/dist/src/generators/host/files/rspack-module-federation/rspack.config.js__tmpl__ +0 -42
  96. package/dist/src/generators/host/files/rspack-module-federation/rspack.config.prod.js__tmpl__ +0 -66
  97. package/dist/src/generators/host/files/rspack-module-federation-ssr/module-federation.server.config.js__tmpl__ +0 -27
  98. package/dist/src/generators/host/files/rspack-module-federation-ssr/rspack.config.js__tmpl__ +0 -68
  99. package/dist/src/generators/host/files/rspack-module-federation-ssr/server.ts__tmpl__ +0 -28
  100. package/dist/src/generators/host/files/rspack-module-federation-ssr/src/main.server.tsx__tmpl__ +0 -49
  101. package/dist/src/generators/host/files/rspack-module-federation-ssr/tsconfig.server.json__tmpl__ +0 -17
  102. package/dist/src/generators/host/files/rspack-module-federation-ssr-ts/module-federation.server.config.ts__tmpl__ +0 -22
  103. package/dist/src/generators/host/files/rspack-module-federation-ssr-ts/rspack.config.ts__tmpl__ +0 -68
  104. package/dist/src/generators/host/files/rspack-module-federation-ssr-ts/server.ts__tmpl__ +0 -28
  105. package/dist/src/generators/host/files/rspack-module-federation-ssr-ts/src/main.server.tsx__tmpl__ +0 -49
  106. package/dist/src/generators/host/files/rspack-module-federation-ssr-ts/tsconfig.server.json__tmpl__ +0 -17
  107. package/dist/src/generators/host/files/rspack-module-federation-ts/module-federation.config.ts__tmpl__ +0 -28
  108. package/dist/src/generators/host/files/rspack-module-federation-ts/rspack.config.prod.ts__tmpl__ +0 -67
  109. package/dist/src/generators/host/files/rspack-module-federation-ts/rspack.config.ts__tmpl__ +0 -42
  110. package/dist/src/generators/host/files/webpack-module-federation/module-federation.config.js__tmpl__ +0 -24
  111. package/dist/src/generators/host/files/webpack-module-federation/webpack.config.js__tmpl__ +0 -17
  112. package/dist/src/generators/host/files/webpack-module-federation/webpack.config.prod.js__tmpl__ +0 -39
  113. package/dist/src/generators/host/files/webpack-module-federation-ssr/module-federation.server.config.js__tmpl__ +0 -19
  114. package/dist/src/generators/host/files/webpack-module-federation-ssr/server.ts__tmpl__ +0 -28
  115. package/dist/src/generators/host/files/webpack-module-federation-ssr/tsconfig.server.json__tmpl__ +0 -17
  116. package/dist/src/generators/host/files/webpack-module-federation-ssr/webpack.server.config.js__tmpl__ +0 -17
  117. package/dist/src/generators/host/files/webpack-module-federation-ssr-ts/module-federation.server.config.ts__tmpl__ +0 -16
  118. package/dist/src/generators/host/files/webpack-module-federation-ssr-ts/server.ts__tmpl__ +0 -28
  119. package/dist/src/generators/host/files/webpack-module-federation-ssr-ts/tsconfig.server.json__tmpl__ +0 -17
  120. package/dist/src/generators/host/files/webpack-module-federation-ssr-ts/webpack.server.config.ts__tmpl__ +0 -17
  121. package/dist/src/generators/host/files/webpack-module-federation-ts/module-federation.config.ts__tmpl__ +0 -28
  122. package/dist/src/generators/host/files/webpack-module-federation-ts/webpack.config.prod.ts__tmpl__ +0 -40
  123. package/dist/src/generators/host/files/webpack-module-federation-ts/webpack.config.ts__tmpl__ +0 -18
  124. package/dist/src/generators/host/host.d.ts +0 -4
  125. package/dist/src/generators/host/host.js +0 -174
  126. package/dist/src/generators/host/lib/add-module-federation-files.d.ts +0 -6
  127. package/dist/src/generators/host/lib/add-module-federation-files.js +0 -92
  128. package/dist/src/generators/host/lib/normalize-host-name.d.ts +0 -2
  129. package/dist/src/generators/host/lib/normalize-host-name.js +0 -12
  130. package/dist/src/generators/host/lib/setup-ssr-for-host.d.ts +0 -6
  131. package/dist/src/generators/host/lib/setup-ssr-for-host.js +0 -59
  132. package/dist/src/generators/host/lib/update-module-federation-e2e-project.d.ts +0 -3
  133. package/dist/src/generators/host/lib/update-module-federation-e2e-project.js +0 -19
  134. package/dist/src/generators/host/lib/update-module-federation-tsconfig.d.ts +0 -3
  135. package/dist/src/generators/host/lib/update-module-federation-tsconfig.js +0 -34
  136. package/dist/src/generators/host/schema.d.ts +0 -44
  137. package/dist/src/generators/host/schema.json +0 -173
  138. package/dist/src/generators/remote/files/common/src/main.js__tmpl__ +0 -1
  139. package/dist/src/generators/remote/files/common/src/remote-entry.js__tmpl__ +0 -1
  140. package/dist/src/generators/remote/files/common-ts/src/main.ts__tmpl__ +0 -1
  141. package/dist/src/generators/remote/files/common-ts/src/remote-entry.ts__tmpl__ +0 -1
  142. package/dist/src/generators/remote/files/rspack-common/src/main.jsx__tmpl__ +0 -1
  143. package/dist/src/generators/remote/files/rspack-common/src/remote-entry.js__tmpl__ +0 -1
  144. package/dist/src/generators/remote/files/rspack-module-federation/module-federation.config.js__tmpl__ +0 -12
  145. package/dist/src/generators/remote/files/rspack-module-federation/rspack.config.js__tmpl__ +0 -45
  146. package/dist/src/generators/remote/files/rspack-module-federation/rspack.config.prod.js__tmpl__ +0 -1
  147. package/dist/src/generators/remote/files/rspack-module-federation-ssr/module-federation.server.config.js__tmpl__ +0 -15
  148. package/dist/src/generators/remote/files/rspack-module-federation-ssr/rspack.config.js__tmpl__ +0 -71
  149. package/dist/src/generators/remote/files/rspack-module-federation-ssr/server.ts__tmpl__ +0 -45
  150. package/dist/src/generators/remote/files/rspack-module-federation-ssr/src/main.server.tsx__tmpl__ +0 -45
  151. package/dist/src/generators/remote/files/rspack-module-federation-ssr-ts/module-federation.server.config.ts__tmpl__ +0 -19
  152. package/dist/src/generators/remote/files/rspack-module-federation-ssr-ts/rspack.config.ts__tmpl__ +0 -71
  153. package/dist/src/generators/remote/files/rspack-module-federation-ssr-ts/server.ts__tmpl__ +0 -45
  154. package/dist/src/generators/remote/files/rspack-module-federation-ssr-ts/src/main.server.tsx__tmpl__ +0 -45
  155. package/dist/src/generators/remote/files/rspack-module-federation-ssr-ts/tsconfig.lint.json__tmpl__ +0 -19
  156. package/dist/src/generators/remote/files/rspack-module-federation-ts/module-federation.config.ts__tmpl__ +0 -16
  157. package/dist/src/generators/remote/files/rspack-module-federation-ts/rspack.config.prod.ts__tmpl__ +0 -1
  158. package/dist/src/generators/remote/files/rspack-module-federation-ts/rspack.config.ts__tmpl__ +0 -45
  159. package/dist/src/generators/remote/files/rspack-module-federation-ts/tsconfig.lint.json__tmpl__ +0 -19
  160. package/dist/src/generators/remote/files/webpack-module-federation/module-federation.config.js__tmpl__ +0 -12
  161. package/dist/src/generators/remote/files/webpack-module-federation/webpack.config.js__tmpl__ +0 -17
  162. package/dist/src/generators/remote/files/webpack-module-federation/webpack.config.prod.js__tmpl__ +0 -1
  163. package/dist/src/generators/remote/files/webpack-module-federation-ssr/module-federation.server.config.js__tmpl__ +0 -9
  164. package/dist/src/generators/remote/files/webpack-module-federation-ssr/server.ts__tmpl__ +0 -45
  165. package/dist/src/generators/remote/files/webpack-module-federation-ssr/webpack.server.config.js__tmpl__ +0 -17
  166. package/dist/src/generators/remote/files/webpack-module-federation-ssr-ts/module-federation.server.config.ts__tmpl__ +0 -13
  167. package/dist/src/generators/remote/files/webpack-module-federation-ssr-ts/server.ts__tmpl__ +0 -45
  168. package/dist/src/generators/remote/files/webpack-module-federation-ssr-ts/tsconfig.lint.json__tmpl__ +0 -19
  169. package/dist/src/generators/remote/files/webpack-module-federation-ssr-ts/webpack.server.config.ts__tmpl__ +0 -17
  170. package/dist/src/generators/remote/files/webpack-module-federation-ts/module-federation.config.ts__tmpl__ +0 -16
  171. package/dist/src/generators/remote/files/webpack-module-federation-ts/tsconfig.lint.json__tmpl__ +0 -19
  172. package/dist/src/generators/remote/files/webpack-module-federation-ts/webpack.config.prod.ts__tmpl__ +0 -1
  173. package/dist/src/generators/remote/files/webpack-module-federation-ts/webpack.config.ts__tmpl__ +0 -17
  174. package/dist/src/generators/remote/lib/add-remote-to-dynamic-host.d.ts +0 -2
  175. package/dist/src/generators/remote/lib/add-remote-to-dynamic-host.js +0 -12
  176. package/dist/src/generators/remote/lib/setup-package-json-exports-for-remote.d.ts +0 -3
  177. package/dist/src/generators/remote/lib/setup-package-json-exports-for-remote.js +0 -30
  178. package/dist/src/generators/remote/lib/setup-ssr-for-remote.d.ts +0 -4
  179. package/dist/src/generators/remote/lib/setup-ssr-for-remote.js +0 -61
  180. package/dist/src/generators/remote/lib/setup-tspath-for-remote.d.ts +0 -3
  181. package/dist/src/generators/remote/lib/setup-tspath-for-remote.js +0 -14
  182. package/dist/src/generators/remote/lib/update-host-with-remote.d.ts +0 -2
  183. package/dist/src/generators/remote/lib/update-host-with-remote.js +0 -79
  184. package/dist/src/generators/remote/remote.d.ts +0 -6
  185. package/dist/src/generators/remote/remote.js +0 -201
  186. package/dist/src/generators/remote/schema.d.ts +0 -39
  187. package/dist/src/generators/remote/schema.json +0 -173
  188. package/dist/src/generators/setup-ssr/files/server.ts__tmpl__ +0 -28
  189. package/dist/src/generators/setup-ssr/files/src/main.server.tsx__tmpl__ +0 -47
  190. package/dist/src/generators/setup-ssr/files/tsconfig.server.json__tmpl__ +0 -17
  191. package/dist/src/generators/setup-ssr/schema.d.ts +0 -8
  192. package/dist/src/generators/setup-ssr/schema.json +0 -54
  193. package/dist/src/generators/setup-ssr/setup-ssr.d.ts +0 -4
  194. package/dist/src/generators/setup-ssr/setup-ssr.js +0 -198
  195. package/dist/src/module-federation/ast-utils.d.ts +0 -8
  196. package/dist/src/module-federation/ast-utils.js +0 -101
  197. package/dist/src/rules/update-module-federation-project.d.ts +0 -11
  198. package/dist/src/rules/update-module-federation-project.js +0 -72
  199. package/dist/src/utils/add-mf-env-to-inputs.d.ts +0 -2
  200. package/dist/src/utils/add-mf-env-to-inputs.js +0 -29
  201. package/dist/src/utils/module-federation-deprecation.d.ts +0 -12
  202. package/dist/src/utils/module-federation-deprecation.js +0 -46
  203. package/dist/src/utils/normalize-remote.d.ts +0 -8
  204. package/dist/src/utils/normalize-remote.js +0 -31
@@ -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.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 for 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,28 +0,0 @@
1
- import type { ModuleFederationConfig } from '@nx/module-federation';
2
-
3
- const config: ModuleFederationConfig = {
4
- name: '<%= projectName %>',
5
- /**
6
- * To use a remote that does not exist in your current Nx Workspace
7
- * You can use the tuple-syntax to define your remote
8
- *
9
- * remotes: [['my-external-remote', 'https://nx-angular-remote.netlify.app']]
10
- *
11
- * You _may_ need to add a `remotes.d.ts` file to your `src/` folder declaring the external remote for tsc, with the
12
- * following content:
13
- *
14
- * declare module 'my-external-remote';
15
- *
16
- */
17
- remotes: [
18
- <%_ if (static) {
19
- remotes.forEach(function(r) { _%>
20
- "<%= r.fileName %>",
21
- <%_ }); } _%>
22
- ],
23
- };
24
-
25
- /**
26
- * Nx requires a default export of the config to allow correct resolution of the module federation graph.
27
- **/
28
- export default config;
@@ -1,40 +0,0 @@
1
- import { composePlugins, withNx } from '@nx/webpack';
2
- import { withReact } from '@nx/react';
3
- import { withModuleFederation } from '@nx/module-federation/webpack';
4
- import type { ModuleFederationConfig } from '@nx/module-federation';
5
-
6
- import baseConfig from './module-federation.config';
7
-
8
- const prodConfig: ModuleFederationConfig = {
9
- ...baseConfig,
10
- /*
11
- * Remote overrides for production.
12
- * Each entry is a pair of a unique name and the URL where it is deployed.
13
- *
14
- * e.g.
15
- * remotes: [
16
- * ['app1', 'http://app1.example.com'],
17
- * ['app2', 'http://app2.example.com'],
18
- * ]
19
- *
20
- * You can also use a full path to the remoteEntry.js file if desired.
21
- *
22
- * remotes: [
23
- * ['app1', 'http://example.com/path/to/app1/remoteEntry.js'],
24
- * ['app2', 'http://example.com/path/to/app2/remoteEntry.js'],
25
- * ]
26
- */
27
- remotes: [
28
- <%_ remotes.forEach(function(r) { _%>
29
- ['<%= r.fileName %>', 'http://localhost:<%= r.port %>/'],
30
- <%_ }); _%>
31
- ],
32
- };
33
-
34
- // Nx plugins for webpack to build config object from Nx options and context.
35
- /**
36
- * DTS Plugin is disabled in Nx Workspaces as Nx already provides Typing support for Module Federation
37
- * The DTS Plugin can be enabled by setting dts: true
38
- * Learn more about the DTS Plugin here: https://module-federation.io/configure/dts.html
39
- */
40
- export default composePlugins(withNx(), withReact(), withModuleFederation(prodConfig, { dts: false }));
@@ -1,18 +0,0 @@
1
- import {composePlugins, withNx} from '@nx/webpack';
2
- import {withReact} from '@nx/react';
3
- import {withModuleFederation} from '@nx/module-federation/webpack';
4
- import type { ModuleFederationConfig } from '@nx/module-federation';
5
-
6
- import baseConfig from './module-federation.config';
7
-
8
- const config: ModuleFederationConfig = {
9
- ...baseConfig,
10
- };
11
-
12
- // Nx plugins for webpack to build config object from Nx options and context.
13
- /**
14
- * DTS Plugin is disabled in Nx Workspaces as Nx already provides Typing support for Module Federation
15
- * The DTS Plugin can be enabled by setting dts: true
16
- * Learn more about the DTS Plugin here: https://module-federation.io/configure/dts.html
17
- */
18
- export default composePlugins(withNx(), withReact(), withModuleFederation(config, { dts: false }));
@@ -1,4 +0,0 @@
1
- import { GeneratorCallback, Tree } from '@nx/devkit';
2
- import { Schema } from './schema';
3
- export declare function hostGenerator(host: Tree, schema: Schema): Promise<GeneratorCallback>;
4
- export default hostGenerator;
@@ -1,174 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.hostGenerator = hostGenerator;
4
- const tslib_1 = require("tslib");
5
- const internal_1 = require("@nx/devkit/internal");
6
- const assert_supported_react_version_1 = require("../../utils/assert-supported-react-version");
7
- const internal_2 = require("@nx/eslint/internal");
8
- const devkit_1 = require("@nx/devkit");
9
- const update_module_federation_project_1 = require("../../rules/update-module-federation-project");
10
- const application_1 = tslib_1.__importDefault(require("../application/application"));
11
- const normalize_options_1 = require("../application/lib/normalize-options");
12
- const remote_1 = tslib_1.__importDefault(require("../remote/remote"));
13
- const setup_ssr_1 = tslib_1.__importDefault(require("../setup-ssr/setup-ssr"));
14
- const add_module_federation_files_1 = require("./lib/add-module-federation-files");
15
- const normalize_remote_1 = require("../../utils/normalize-remote");
16
- const setup_ssr_for_host_1 = require("./lib/setup-ssr-for-host");
17
- const update_module_federation_e2e_project_1 = require("./lib/update-module-federation-e2e-project");
18
- const add_mf_env_to_inputs_1 = require("../../utils/add-mf-env-to-inputs");
19
- const js_1 = require("@nx/js");
20
- const internal_3 = require("@nx/js/internal");
21
- const versions_1 = require("../../utils/versions");
22
- const update_module_federation_tsconfig_1 = require("./lib/update-module-federation-tsconfig");
23
- const normalize_host_name_1 = require("./lib/normalize-host-name");
24
- const module_federation_deprecation_1 = require("../../utils/module-federation-deprecation");
25
- async function hostGenerator(host, schema) {
26
- (0, assert_supported_react_version_1.assertSupportedReactVersion)(host);
27
- (0, module_federation_deprecation_1.warnReactHostGeneratorDeprecation)();
28
- const tasks = [];
29
- const name = await (0, normalize_host_name_1.normalizeHostName)(host, schema.directory, schema.name);
30
- const options = {
31
- ...(await (0, normalize_options_1.normalizeOptions)(host, {
32
- ...schema,
33
- name,
34
- })),
35
- js: schema.js ?? false,
36
- typescriptConfiguration: schema.js
37
- ? false
38
- : (schema.typescriptConfiguration ?? true),
39
- dynamic: schema.dynamic ?? false,
40
- // TODO(colum): remove when Webpack MF works with Crystal
41
- addPlugin: !schema.bundler || schema.bundler === 'rspack' ? true : false,
42
- bundler: schema.bundler ?? 'rspack',
43
- // The schema carries no default, so supply one here: remotes are numbered up
44
- // from the host's port (`options.port + 1` below), which needs a concrete value.
45
- port: schema.port ?? schema.devServerPort ?? 4200,
46
- };
47
- // Check to see if remotes are provided and also check if --dynamic is provided
48
- // if both are check that the remotes are valid names else throw an error.
49
- if (options.dynamic && options.remotes?.length > 0) {
50
- options.remotes.forEach((remote) => {
51
- const isValidRemote = (0, js_1.isValidVariable)(remote);
52
- if (!isValidRemote.isValid) {
53
- throw new Error(`Invalid remote name provided: ${remote}. ${isValidRemote.message}`);
54
- }
55
- });
56
- }
57
- await (0, internal_1.ensureRootProjectName)(options, 'application');
58
- const initTask = await (0, application_1.default)(host, {
59
- ...options,
60
- directory: options.appProjectRoot,
61
- name: options.name,
62
- // The target use-case is loading remotes as child routes, thus always enable routing.
63
- routing: true,
64
- skipFormat: true,
65
- });
66
- tasks.push(initTask);
67
- // In TS solution setup, update package.json to use simple name instead of scoped name
68
- if ((0, internal_3.isUsingTsSolutionSetup)(host)) {
69
- const hostPackageJsonPath = (0, devkit_1.joinPathFragments)(options.appProjectRoot, 'package.json');
70
- if (host.exists(hostPackageJsonPath)) {
71
- (0, devkit_1.updateJson)(host, hostPackageJsonPath, (json) => {
72
- json.name = options.projectName;
73
- return json;
74
- });
75
- }
76
- }
77
- const remotesWithPorts = [];
78
- if (schema.remotes) {
79
- let remotePort = options.port + 1;
80
- for (const remote of schema.remotes) {
81
- const remoteName = await (0, normalize_remote_1.normalizeRemoteName)(host, remote, options);
82
- remotesWithPorts.push({ name: remoteName, port: remotePort });
83
- const remoteTask = await (0, remote_1.default)(host, {
84
- name: remote,
85
- directory: (0, normalize_remote_1.normalizeRemoteDirectory)(remote, options),
86
- style: options.style,
87
- unitTestRunner: options.unitTestRunner,
88
- e2eTestRunner: options.e2eTestRunner,
89
- linter: options.linter,
90
- port: remotePort,
91
- ssr: options.ssr,
92
- skipFormat: true,
93
- typescriptConfiguration: options.typescriptConfiguration,
94
- js: options.js,
95
- dynamic: options.dynamic,
96
- host: options.projectName,
97
- skipPackageJson: options.skipPackageJson,
98
- bundler: options.bundler,
99
- });
100
- tasks.push(remoteTask);
101
- remotePort++;
102
- }
103
- }
104
- (0, add_module_federation_files_1.addModuleFederationFiles)(host, options, remotesWithPorts);
105
- (0, update_module_federation_project_1.updateModuleFederationProject)(host, options, true);
106
- (0, update_module_federation_e2e_project_1.updateModuleFederationE2eProject)(host, options);
107
- (0, update_module_federation_tsconfig_1.updateModuleFederationTsconfig)(host, options);
108
- // Add remotes as devDependencies in TS solution setup
109
- if ((0, internal_3.isUsingTsSolutionSetup)(host) && remotesWithPorts.length > 0) {
110
- addRemotesAsHostDependencies(host, options.projectName, remotesWithPorts);
111
- }
112
- if (options.ssr) {
113
- if (options.bundler !== 'rspack') {
114
- const setupSsrTask = await (0, setup_ssr_1.default)(host, {
115
- project: options.projectName,
116
- serverPort: options.port,
117
- skipFormat: true,
118
- });
119
- tasks.push(setupSsrTask);
120
- }
121
- const setupSsrForHostTask = await (0, setup_ssr_for_host_1.setupSsrForHost)(host, options, options.projectName, remotesWithPorts);
122
- tasks.push(setupSsrForHostTask);
123
- const projectConfig = (0, devkit_1.readProjectConfiguration)(host, options.projectName);
124
- if (options.bundler !== 'rspack') {
125
- projectConfig.targets.server.options.webpackConfig = (0, devkit_1.joinPathFragments)(projectConfig.root, `webpack.server.config.${options.typescriptConfiguration ? 'ts' : 'js'}`);
126
- }
127
- (0, devkit_1.updateProjectConfiguration)(host, options.projectName, projectConfig);
128
- }
129
- if (!(0, internal_2.isTypedLintingEnabled)(options)) {
130
- host.delete((0, devkit_1.joinPathFragments)(options.appProjectRoot, 'tsconfig.lint.json'));
131
- }
132
- (0, add_mf_env_to_inputs_1.addMfEnvToTargetDefaultInputs)(host, options.bundler);
133
- const installTask = (0, devkit_1.addDependenciesToPackageJson)(host, { '@module-federation/enhanced': versions_1.moduleFederationEnhancedVersion }, {
134
- '@nx/web': versions_1.nxVersion,
135
- '@nx/module-federation': versions_1.nxVersion,
136
- // The webpack path also generates a `serve-static` target running the
137
- // `module-federation-static-server` executor, which proxies via express.
138
- ...(options.bundler !== 'rspack'
139
- ? {
140
- express: versions_1.expressVersion,
141
- 'http-proxy-middleware': versions_1.httpProxyMiddlewareVersion,
142
- }
143
- : {}),
144
- }, undefined, true);
145
- tasks.push(installTask);
146
- // The TS config templates use extensionless relative imports and
147
- // `__dirname`, which Node's native type stripping cannot load.
148
- if (options.typescriptConfiguration) {
149
- tasks.push((0, internal_3.addSwcRegisterDependencies)(host));
150
- }
151
- if (!options.skipFormat) {
152
- await (0, devkit_1.formatFiles)(host);
153
- }
154
- return (0, devkit_1.runTasksInSerial)(...tasks);
155
- }
156
- function addRemotesAsHostDependencies(tree, hostName, remotes) {
157
- const hostConfig = (0, devkit_1.readProjectConfiguration)(tree, hostName);
158
- const hostPackageJsonPath = (0, devkit_1.joinPathFragments)(hostConfig.root, 'package.json');
159
- if (!tree.exists(hostPackageJsonPath)) {
160
- throw new Error(`Host package.json not found at ${hostPackageJsonPath}. ` +
161
- `TypeScript solution setup requires package.json for all projects.`);
162
- }
163
- const packageManager = (0, devkit_1.detectPackageManager)(tree.root);
164
- const versionSpec = packageManager === 'npm' ? '*' : 'workspace:*';
165
- (0, devkit_1.updateJson)(tree, hostPackageJsonPath, (json) => {
166
- json.devDependencies ??= {};
167
- for (const remote of remotes) {
168
- // Use simple remote name directly to match module-federation.config.ts
169
- json.devDependencies[remote.name] = versionSpec;
170
- }
171
- return json;
172
- });
173
- }
174
- exports.default = hostGenerator;
@@ -1,6 +0,0 @@
1
- import { Tree } from '@nx/devkit';
2
- import { NormalizedSchema } from '../schema';
3
- export declare function addModuleFederationFiles(host: Tree, options: NormalizedSchema, defaultRemoteManifest: {
4
- name: string;
5
- port: number;
6
- }[]): void;
@@ -1,92 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.addModuleFederationFiles = addModuleFederationFiles;
4
- const devkit_1 = require("@nx/devkit");
5
- const internal_1 = require("@nx/js/internal");
6
- const maybe_js_1 = require("../../../utils/maybe-js");
7
- const create_application_files_1 = require("../../application/lib/create-application-files");
8
- const path_1 = require("path");
9
- function addModuleFederationFiles(host, options, defaultRemoteManifest) {
10
- const templateVariables = options.bundler === 'rspack'
11
- ? {
12
- ...(0, create_application_files_1.getDefaultTemplateVariables)(host, options),
13
- rspackPluginOptions: {
14
- ...(0, create_application_files_1.createNxRspackPluginOptions)(options, (0, devkit_1.offsetFromRoot)(options.appProjectRoot), false),
15
- mainServer: `./server.ts`,
16
- },
17
- static: !options?.dynamic,
18
- remotes: defaultRemoteManifest.map(({ name, port }) => {
19
- return {
20
- ...(0, devkit_1.names)(name),
21
- port,
22
- };
23
- }),
24
- }
25
- : {
26
- ...(0, devkit_1.names)(options.projectName),
27
- ...options,
28
- static: !options?.dynamic,
29
- tmpl: '',
30
- remotes: defaultRemoteManifest.map(({ name, port }) => {
31
- return {
32
- ...(0, devkit_1.names)(name),
33
- port,
34
- };
35
- }),
36
- };
37
- const projectConfig = (0, devkit_1.readProjectConfiguration)(host, options.projectName);
38
- const pathToMFManifest = (0, devkit_1.joinPathFragments)((0, internal_1.getProjectSourceRoot)(projectConfig, host), 'assets/module-federation.manifest.json');
39
- // Module federation requires bootstrap code to be dynamically imported.
40
- // Renaming original entry file so we can use `import(./bootstrap)` in
41
- // new entry file.
42
- host.rename((0, devkit_1.joinPathFragments)(options.appProjectRoot, (0, maybe_js_1.maybeJs)({ js: options.js, useJsx: options.bundler === 'rspack' }, 'src/main.tsx')), (0, devkit_1.joinPathFragments)(options.appProjectRoot, (0, maybe_js_1.maybeJs)({ js: options.js, useJsx: options.bundler === 'rspack' }, 'src/bootstrap.tsx')));
43
- (0, devkit_1.generateFiles)(host, (0, path_1.join)(__dirname, `../files/${options.js
44
- ? options.bundler === 'rspack'
45
- ? 'rspack-common'
46
- : 'common'
47
- : 'common-ts'}`), options.appProjectRoot, templateVariables);
48
- const pathToModuleFederationFiles = options.typescriptConfiguration
49
- ? `${options.bundler === 'rspack' ? 'rspack-' : 'webpack-'}module-federation-ts`
50
- : `${options.bundler === 'rspack' ? 'rspack-' : 'webpack-'}module-federation`;
51
- // New entry file is created here.
52
- (0, devkit_1.generateFiles)(host, (0, path_1.join)(__dirname, `../files/${pathToModuleFederationFiles}`), options.appProjectRoot, templateVariables);
53
- function deleteFileIfExists(host, filePath) {
54
- if (host.exists(filePath)) {
55
- host.delete(filePath);
56
- }
57
- }
58
- function processBundlerConfigFile(options, host, fileName) {
59
- const pathToBundlerConfig = (0, devkit_1.joinPathFragments)(options.appProjectRoot, fileName);
60
- deleteFileIfExists(host, pathToBundlerConfig);
61
- }
62
- if (options.typescriptConfiguration) {
63
- if (options.bundler === 'rspack') {
64
- processBundlerConfigFile(options, host, 'rspack.config.js');
65
- processBundlerConfigFile(options, host, 'rspack.config.prod.js');
66
- }
67
- else {
68
- processBundlerConfigFile(options, host, 'webpack.config.js');
69
- processBundlerConfigFile(options, host, 'webpack.config.prod.js');
70
- }
71
- // Delete TypeScript prod config in TS solution setup - not needed in Crystal
72
- if ((0, internal_1.isUsingTsSolutionSetup)(host)) {
73
- const prodConfigFileName = options.bundler === 'rspack'
74
- ? 'rspack.config.prod.ts'
75
- : 'webpack.config.prod.ts';
76
- processBundlerConfigFile(options, host, prodConfigFileName);
77
- }
78
- }
79
- if (options.dynamic) {
80
- processBundlerConfigFile(options, host, 'webpack.config.prod.js');
81
- processBundlerConfigFile(options, host, 'webpack.config.prod.ts');
82
- processBundlerConfigFile(options, host, 'rspack.config.prod.js');
83
- processBundlerConfigFile(options, host, 'rspack.config.prod.ts');
84
- if (!host.exists(pathToMFManifest)) {
85
- host.write(pathToMFManifest, `{
86
- ${defaultRemoteManifest
87
- .map(({ name, port }) => `"${name}": "http://localhost:${port}/mf-manifest.json"`)
88
- .join(',\n')}
89
- }`);
90
- }
91
- }
92
- }
@@ -1,2 +0,0 @@
1
- import { Tree } from '@nx/devkit';
2
- export declare function normalizeHostName(tree: Tree, directory: string, name?: string): Promise<string>;
@@ -1,12 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.normalizeHostName = normalizeHostName;
4
- const internal_1 = require("@nx/devkit/internal");
5
- async function normalizeHostName(tree, directory, name) {
6
- const { projectName } = await (0, internal_1.determineProjectNameAndRootOptions)(tree, {
7
- name,
8
- directory,
9
- projectType: 'application',
10
- });
11
- return projectName;
12
- }
@@ -1,6 +0,0 @@
1
- import { GeneratorCallback, Tree } from '@nx/devkit';
2
- import type { NormalizedSchema } from '../schema';
3
- export declare function setupSsrForHost(tree: Tree, options: NormalizedSchema, appName: string, defaultRemoteManifest: {
4
- name: string;
5
- port: number;
6
- }[]): Promise<GeneratorCallback>;
@@ -1,59 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.setupSsrForHost = setupSsrForHost;
4
- const devkit_1 = require("@nx/devkit");
5
- const versions_1 = require("../../../utils/versions");
6
- const create_application_files_1 = require("../../application/lib/create-application-files");
7
- async function setupSsrForHost(tree, options, appName, defaultRemoteManifest) {
8
- const tasks = [];
9
- let project = (0, devkit_1.readProjectConfiguration)(tree, appName);
10
- if (options.bundler !== 'rspack') {
11
- project.targets.serve.executor =
12
- '@nx/react:module-federation-ssr-dev-server';
13
- (0, devkit_1.updateProjectConfiguration)(tree, appName, project);
14
- }
15
- const pathToModuleFederationSsrFiles = options.typescriptConfiguration
16
- ? `${options.bundler === 'rspack' ? 'rspack-' : 'webpack-'}module-federation-ssr-ts`
17
- : `${options.bundler === 'rspack' ? 'rspack-' : 'webpack-'}module-federation-ssr`;
18
- const templateVariables = options.bundler === 'rspack'
19
- ? {
20
- ...(0, create_application_files_1.getDefaultTemplateVariables)(tree, options),
21
- rspackPluginOptions: {
22
- ...(0, create_application_files_1.createNxRspackPluginOptions)(options, (0, devkit_1.offsetFromRoot)(options.appProjectRoot), false),
23
- mainServer: `./server.ts`,
24
- },
25
- port: Number(options?.port) || 4200,
26
- appName,
27
- static: !options?.dynamic,
28
- remotes: defaultRemoteManifest.map(({ name, port }) => {
29
- return {
30
- ...(0, devkit_1.names)(name),
31
- port,
32
- };
33
- }),
34
- }
35
- : {
36
- ...options,
37
- static: !options?.dynamic,
38
- port: Number(options?.port) || 4200,
39
- appName,
40
- tmpl: '',
41
- browserBuildOutputPath: project.targets.build?.options?.outputPath,
42
- remotes: defaultRemoteManifest.map(({ name, port }) => {
43
- return {
44
- ...(0, devkit_1.names)(name),
45
- port,
46
- };
47
- }),
48
- };
49
- (0, devkit_1.generateFiles)(tree, (0, devkit_1.joinPathFragments)(__dirname, `../files/${pathToModuleFederationSsrFiles}`), project.root, templateVariables);
50
- const installTask = (0, devkit_1.addDependenciesToPackageJson)(tree, {
51
- '@module-federation/node': versions_1.moduleFederationNodeVersion,
52
- cors: versions_1.corsVersion,
53
- isbot: versions_1.isbotVersion,
54
- express: versions_1.expressVersion,
55
- '@types/express': versions_1.typesExpressVersion,
56
- }, {}, undefined, true);
57
- tasks.push(installTask);
58
- return (0, devkit_1.runTasksInSerial)(...tasks);
59
- }
@@ -1,3 +0,0 @@
1
- import { NormalizedSchema } from '../schema';
2
- import { Tree } from '@nx/devkit';
3
- export declare function updateModuleFederationE2eProject(host: Tree, options: NormalizedSchema): void;
@@ -1,19 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.updateModuleFederationE2eProject = updateModuleFederationE2eProject;
4
- const devkit_1 = require("@nx/devkit");
5
- function updateModuleFederationE2eProject(host, options) {
6
- try {
7
- let projectConfig = (0, devkit_1.readProjectConfiguration)(host, options.e2eProjectName);
8
- if (projectConfig.targets.e2e.executor !== '@nx/playwright:playwright') {
9
- projectConfig.targets.e2e.options = {
10
- ...projectConfig.targets.e2e.options,
11
- baseUrl: `http://localhost:${options.port}`,
12
- };
13
- (0, devkit_1.updateProjectConfiguration)(host, options.e2eProjectName, projectConfig);
14
- }
15
- }
16
- catch {
17
- // nothing
18
- }
19
- }
@@ -1,3 +0,0 @@
1
- import { type Tree } from '@nx/devkit';
2
- import { NormalizedSchema } from '../schema';
3
- export declare function updateModuleFederationTsconfig(host: Tree, options: NormalizedSchema): void;
@@ -1,34 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.updateModuleFederationTsconfig = updateModuleFederationTsconfig;
4
- const devkit_1 = require("@nx/devkit");
5
- const internal_1 = require("@nx/js/internal");
6
- function updateModuleFederationTsconfig(host, options) {
7
- const tsconfigPath = (0, devkit_1.joinPathFragments)(options.appProjectRoot, 'tsconfig.json');
8
- const tsconfigRuntimePath = (0, devkit_1.joinPathFragments)(options.appProjectRoot, 'tsconfig.app.json');
9
- if (!host.exists(tsconfigPath) || !host.exists(tsconfigRuntimePath))
10
- return;
11
- if ((0, internal_1.isUsingTsSolutionSetup)(host)) {
12
- // Update references to match what `nx sync` does.
13
- if (options.remotes?.length) {
14
- (0, devkit_1.updateJson)(host, tsconfigPath, (json) => {
15
- json.references ??= [];
16
- for (const remote of options.remotes) {
17
- const remotePath = `../${remote}`;
18
- if (!json.references.some((ref) => ref.path === remotePath))
19
- json.references.push({ path: remotePath });
20
- }
21
- return json;
22
- });
23
- (0, devkit_1.updateJson)(host, tsconfigRuntimePath, (json) => {
24
- json.references ??= [];
25
- for (const remote of options.remotes) {
26
- const remotePath = `../${remote}/tsconfig.app.json`;
27
- if (!json.references.some((ref) => ref.path === remotePath))
28
- json.references.push({ path: remotePath });
29
- }
30
- return json;
31
- });
32
- }
33
- }
34
- }
@@ -1,44 +0,0 @@
1
- import type { LinterType } from '@nx/js';
2
- import type { SupportedStyles } from '../../../typings/style';
3
-
4
- export interface Schema {
5
- classComponent?: boolean;
6
- compiler?: 'babel' | 'swc';
7
- port?: number;
8
- /** @deprecated Use {@link Schema.port} instead. This option will be removed in Nx v24. */
9
- devServerPort?: number;
10
- directory: string;
11
- e2eTestRunner: 'cypress' | 'playwright' | 'none';
12
- globalCss?: boolean;
13
- js?: boolean;
14
- linter?: LinterType;
15
- name?: string;
16
- remotes?: string[];
17
- enableTypedLinting?: boolean;
18
- /**
19
- * @deprecated Use `enableTypedLinting` instead. This option will be removed in Nx v24.
20
- */
21
- setParserOptionsProject?: boolean;
22
- skipFormat?: boolean;
23
- skipNxJson?: boolean;
24
- skipPackageJson?: boolean;
25
- ssr?: boolean;
26
- strict?: boolean;
27
- style: SupportedStyles;
28
- tags?: string;
29
- unitTestRunner: 'jest' | 'vitest' | 'none';
30
- minimal?: boolean;
31
- typescriptConfiguration?: boolean;
32
- dynamic?: boolean;
33
- addPlugin?: boolean;
34
- bundler?: 'rspack' | 'webpack';
35
- }
36
-
37
- export interface NormalizedSchema extends Schema {
38
- // `normalizeOptions` always resolves this, so it is no longer optional.
39
- linter: LinterType;
40
- appProjectRoot: string;
41
- e2eProjectName: string;
42
- projectName: string;
43
- addPlugin?: boolean;
44
- }