@nx/react 0.0.0-pr-22179-271588f

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 (347) hide show
  1. package/LICENSE +22 -0
  2. package/README.md +68 -0
  3. package/ast-utils.d.ts +1 -0
  4. package/ast-utils.js +11 -0
  5. package/babel.d.ts +20 -0
  6. package/babel.js +50 -0
  7. package/executors.json +14 -0
  8. package/generators.json +112 -0
  9. package/index.d.ts +22 -0
  10. package/index.js +47 -0
  11. package/mf/dynamic-federation.d.ts +4 -0
  12. package/mf/dynamic-federation.js +75 -0
  13. package/mf/index.d.ts +1 -0
  14. package/mf/index.js +7 -0
  15. package/migrations.json +310 -0
  16. package/module-federation.d.ts +4 -0
  17. package/module-federation.js +12 -0
  18. package/package.json +49 -0
  19. package/plugins/bundle-rollup.d.ts +1 -0
  20. package/plugins/bundle-rollup.js +47 -0
  21. package/plugins/component-testing/index.d.ts +37 -0
  22. package/plugins/component-testing/index.js +222 -0
  23. package/plugins/component-testing/webpack-fallback.d.ts +5 -0
  24. package/plugins/component-testing/webpack-fallback.js +125 -0
  25. package/plugins/jest.d.ts +1 -0
  26. package/plugins/jest.js +59 -0
  27. package/plugins/nx-react-webpack-plugin/lib/apply-react-config.d.ts +4 -0
  28. package/plugins/nx-react-webpack-plugin/lib/apply-react-config.js +60 -0
  29. package/plugins/nx-react-webpack-plugin/nx-react-webpack-plugin.d.ts +8 -0
  30. package/plugins/nx-react-webpack-plugin/nx-react-webpack-plugin.js +13 -0
  31. package/plugins/storybook/index.d.ts +3 -0
  32. package/plugins/storybook/index.js +174 -0
  33. package/plugins/storybook/merge-plugins.d.ts +3 -0
  34. package/plugins/storybook/merge-plugins.js +17 -0
  35. package/plugins/webpack.d.ts +1 -0
  36. package/plugins/webpack.js +6 -0
  37. package/plugins/with-react.d.ts +10 -0
  38. package/plugins/with-react.js +22 -0
  39. package/src/executors/module-federation-dev-server/module-federation-dev-server.impl.d.ts +25 -0
  40. package/src/executors/module-federation-dev-server/module-federation-dev-server.impl.js +211 -0
  41. package/src/executors/module-federation-dev-server/schema.json +114 -0
  42. package/src/executors/module-federation-ssr-dev-server/module-federation-ssr-dev-server.impl.d.ts +9 -0
  43. package/src/executors/module-federation-ssr-dev-server/module-federation-ssr-dev-server.impl.js +106 -0
  44. package/src/executors/module-federation-ssr-dev-server/schema.json +48 -0
  45. package/src/generators/application/application.d.ts +5 -0
  46. package/src/generators/application/application.js +232 -0
  47. package/src/generators/application/files/base-rspack/src/app/__fileName__.spec.tsx__tmpl__ +10 -0
  48. package/src/generators/application/files/base-rspack/src/assets/.gitkeep +0 -0
  49. package/src/generators/application/files/base-rspack/src/favicon.ico +0 -0
  50. package/src/generators/application/files/base-rspack/src/index.html +14 -0
  51. package/src/generators/application/files/base-rspack/src/main.tsx__tmpl__ +10 -0
  52. package/src/generators/application/files/base-rspack/tsconfig.app.json__tmpl__ +14 -0
  53. package/src/generators/application/files/base-vite/index.html__tmpl__ +16 -0
  54. package/src/generators/application/files/base-vite/public/favicon.ico +0 -0
  55. package/src/generators/application/files/base-vite/src/app/__fileName__.spec.tsx__tmpl__ +10 -0
  56. package/src/generators/application/files/base-vite/src/assets/.gitkeep +0 -0
  57. package/src/generators/application/files/base-vite/src/environments/environment.prod.ts__tmpl__ +3 -0
  58. package/src/generators/application/files/base-vite/src/environments/environment.ts__tmpl__ +6 -0
  59. package/src/generators/application/files/base-vite/src/main.tsx__tmpl__ +10 -0
  60. package/src/generators/application/files/base-vite/tsconfig.app.json__tmpl__ +14 -0
  61. package/src/generators/application/files/base-webpack/src/app/__fileName__.spec.tsx__tmpl__ +10 -0
  62. package/src/generators/application/files/base-webpack/src/assets/.gitkeep +0 -0
  63. package/src/generators/application/files/base-webpack/src/favicon.ico +0 -0
  64. package/src/generators/application/files/base-webpack/src/index.html +12 -0
  65. package/src/generators/application/files/base-webpack/src/main.tsx__tmpl__ +10 -0
  66. package/src/generators/application/files/base-webpack/tsconfig.app.json__tmpl__ +14 -0
  67. package/src/generators/application/files/base-webpack/webpack.config.js__tmpl__ +50 -0
  68. package/src/generators/application/files/nx-welcome/src/app/nx-welcome.tsx +886 -0
  69. package/src/generators/application/files/style-css-module/src/app/__fileName__.module.__style__ +1 -0
  70. package/src/generators/application/files/style-css-module/src/app/__fileName__.tsx__tmpl__ +36 -0
  71. package/src/generators/application/files/style-css-module/src/styles.__style__ +1 -0
  72. package/src/generators/application/files/style-global-css/src/app/__fileName__.__style__ +1 -0
  73. package/src/generators/application/files/style-global-css/src/app/__fileName__.tsx__tmpl__ +35 -0
  74. package/src/generators/application/files/style-global-css/src/styles.__style__ +1 -0
  75. package/src/generators/application/files/style-none/src/app/__fileName__.tsx__tmpl__ +34 -0
  76. package/src/generators/application/files/style-styled-jsx/src/app/__fileName__.tsx__tmpl__ +37 -0
  77. package/src/generators/application/files/style-styled-module/src/app/__fileName__.tsx__tmpl__ +40 -0
  78. package/src/generators/application/files/style-tailwind/src/app/__fileName__.tsx__tmpl__ +33 -0
  79. package/src/generators/application/files/style-tailwind/src/styles.css +1 -0
  80. package/src/generators/application/lib/add-e2e.d.ts +3 -0
  81. package/src/generators/application/lib/add-e2e.js +79 -0
  82. package/src/generators/application/lib/add-jest.d.ts +3 -0
  83. package/src/generators/application/lib/add-jest.js +21 -0
  84. package/src/generators/application/lib/add-project.d.ts +3 -0
  85. package/src/generators/application/lib/add-project.js +96 -0
  86. package/src/generators/application/lib/add-routing.d.ts +3 -0
  87. package/src/generators/application/lib/add-routing.js +27 -0
  88. package/src/generators/application/lib/create-application-files.d.ts +3 -0
  89. package/src/generators/application/lib/create-application-files.js +143 -0
  90. package/src/generators/application/lib/find-free-port.d.ts +2 -0
  91. package/src/generators/application/lib/find-free-port.js +16 -0
  92. package/src/generators/application/lib/get-app-tests.d.ts +2 -0
  93. package/src/generators/application/lib/get-app-tests.js +21 -0
  94. package/src/generators/application/lib/install-common-dependencies.d.ts +3 -0
  95. package/src/generators/application/lib/install-common-dependencies.js +47 -0
  96. package/src/generators/application/lib/normalize-options.d.ts +5 -0
  97. package/src/generators/application/lib/normalize-options.js +72 -0
  98. package/src/generators/application/lib/set-defaults.d.ts +3 -0
  99. package/src/generators/application/lib/set-defaults.js +43 -0
  100. package/src/generators/application/lib/show-possible-warnings.d.ts +3 -0
  101. package/src/generators/application/lib/show-possible-warnings.js +11 -0
  102. package/src/generators/application/lib/update-jest-config.d.ts +3 -0
  103. package/src/generators/application/lib/update-jest-config.js +30 -0
  104. package/src/generators/application/schema.d.ts +45 -0
  105. package/src/generators/application/schema.json +201 -0
  106. package/src/generators/component/component.d.ts +5 -0
  107. package/src/generators/component/component.js +93 -0
  108. package/src/generators/component/files/__fileName__.__style__ +0 -0
  109. package/src/generators/component/files/__fileName__.module.__style__ +7 -0
  110. package/src/generators/component/files/__fileName__.spec.tsx__tmpl__ +7 -0
  111. package/src/generators/component/files/__fileName__.tsx__tmpl__ +88 -0
  112. package/src/generators/component/lib/get-component-tests.d.ts +2 -0
  113. package/src/generators/component/lib/get-component-tests.js +12 -0
  114. package/src/generators/component/lib/normalize-options.d.ts +3 -0
  115. package/src/generators/component/lib/normalize-options.js +50 -0
  116. package/src/generators/component/schema.d.ts +48 -0
  117. package/src/generators/component/schema.json +150 -0
  118. package/src/generators/component-cypress-spec/component-cypress-spec.d.ts +13 -0
  119. package/src/generators/component-cypress-spec/component-cypress-spec.js +100 -0
  120. package/src/generators/component-cypress-spec/files/__componentName__.__fileExt__ +13 -0
  121. package/src/generators/component-cypress-spec/schema.json +44 -0
  122. package/src/generators/component-story/component-story.d.ts +12 -0
  123. package/src/generators/component-story/component-story.js +72 -0
  124. package/src/generators/component-story/files/jsx/__componentFileName__.stories.jsx__tmpl__ +29 -0
  125. package/src/generators/component-story/files/tsx/__componentFileName__.stories.tsx__tmpl__ +36 -0
  126. package/src/generators/component-story/schema.json +42 -0
  127. package/src/generators/component-test/component-test.d.ts +4 -0
  128. package/src/generators/component-test/component-test.js +76 -0
  129. package/src/generators/component-test/files/__fileName__.cy__ext__ +21 -0
  130. package/src/generators/component-test/schema.d.ts +4 -0
  131. package/src/generators/component-test/schema.js +2 -0
  132. package/src/generators/component-test/schema.json +31 -0
  133. package/src/generators/cypress-component-configuration/cypress-component-configuration.d.ts +10 -0
  134. package/src/generators/cypress-component-configuration/cypress-component-configuration.js +51 -0
  135. package/src/generators/cypress-component-configuration/lib/add-files.d.ts +4 -0
  136. package/src/generators/cypress-component-configuration/lib/add-files.js +45 -0
  137. package/src/generators/cypress-component-configuration/schema.d.ts +8 -0
  138. package/src/generators/cypress-component-configuration/schema.json +54 -0
  139. package/src/generators/federate-module/federate-module.d.ts +4 -0
  140. package/src/generators/federate-module/federate-module.js +70 -0
  141. package/src/generators/federate-module/lib/utils.d.ts +23 -0
  142. package/src/generators/federate-module/lib/utils.js +100 -0
  143. package/src/generators/federate-module/schema.d.ts +13 -0
  144. package/src/generators/federate-module/schema.json +83 -0
  145. package/src/generators/hook/files/__fileName__.spec.tsx__tmpl__ +18 -0
  146. package/src/generators/hook/files/__fileName__.ts__tmpl__ +15 -0
  147. package/src/generators/hook/hook.d.ts +5 -0
  148. package/src/generators/hook/hook.js +131 -0
  149. package/src/generators/hook/schema.d.ts +24 -0
  150. package/src/generators/hook/schema.json +84 -0
  151. package/src/generators/host/files/common/src/app/__fileName__.js__tmpl__ +33 -0
  152. package/src/generators/host/files/common/src/main.js__tmpl__ +10 -0
  153. package/src/generators/host/files/common/tsconfig.lint.json__tmpl__ +19 -0
  154. package/src/generators/host/files/common-ts/src/app/__fileName__.tsx__tmpl__ +41 -0
  155. package/src/generators/host/files/common-ts/src/main.ts__tmpl__ +10 -0
  156. package/src/generators/host/files/module-federation/module-federation.config.js__tmpl__ +21 -0
  157. package/src/generators/host/files/module-federation/webpack.config.js__tmpl__ +12 -0
  158. package/src/generators/host/files/module-federation/webpack.config.prod.js__tmpl__ +32 -0
  159. package/src/generators/host/files/module-federation-ssr/module-federation.server.config.js__tmpl__ +16 -0
  160. package/src/generators/host/files/module-federation-ssr/server.ts__tmpl__ +28 -0
  161. package/src/generators/host/files/module-federation-ssr/tsconfig.server.json__tmpl__ +17 -0
  162. package/src/generators/host/files/module-federation-ssr/webpack.server.config.js__tmpl__ +12 -0
  163. package/src/generators/host/files/module-federation-ssr-ts/module-federation.server.config.ts__tmpl__ +13 -0
  164. package/src/generators/host/files/module-federation-ssr-ts/server.ts__tmpl__ +28 -0
  165. package/src/generators/host/files/module-federation-ssr-ts/tsconfig.server.json__tmpl__ +17 -0
  166. package/src/generators/host/files/module-federation-ssr-ts/webpack.server.config.ts__tmpl__ +12 -0
  167. package/src/generators/host/files/module-federation-ts/module-federation.config.ts__tmpl__ +25 -0
  168. package/src/generators/host/files/module-federation-ts/webpack.config.prod.ts__tmpl__ +33 -0
  169. package/src/generators/host/files/module-federation-ts/webpack.config.ts__tmpl__ +12 -0
  170. package/src/generators/host/host.d.ts +5 -0
  171. package/src/generators/host/host.js +95 -0
  172. package/src/generators/host/lib/add-module-federation-files.d.ts +6 -0
  173. package/src/generators/host/lib/add-module-federation-files.js +52 -0
  174. package/src/generators/host/lib/normalize-remote.d.ts +4 -0
  175. package/src/generators/host/lib/normalize-remote.js +28 -0
  176. package/src/generators/host/lib/setup-ssr-for-host.d.ts +6 -0
  177. package/src/generators/host/lib/setup-ssr-for-host.js +33 -0
  178. package/src/generators/host/lib/update-module-federation-e2e-project.d.ts +3 -0
  179. package/src/generators/host/lib/update-module-federation-e2e-project.js +20 -0
  180. package/src/generators/host/schema.d.ts +37 -0
  181. package/src/generators/host/schema.json +184 -0
  182. package/src/generators/init/init.d.ts +4 -0
  183. package/src/generators/init/init.js +23 -0
  184. package/src/generators/init/schema.d.ts +5 -0
  185. package/src/generators/init/schema.json +27 -0
  186. package/src/generators/library/files/common/README.md +7 -0
  187. package/src/generators/library/files/common/package.json__tmpl__ +4 -0
  188. package/src/generators/library/files/common/src/index.ts__tmpl__ +0 -0
  189. package/src/generators/library/files/common/tsconfig.lib.json__tmpl__ +14 -0
  190. package/src/generators/library/files/vite/README.md +7 -0
  191. package/src/generators/library/files/vite/package.json__tmpl__ +12 -0
  192. package/src/generators/library/files/vite/tsconfig.lib.json__tmpl__ +14 -0
  193. package/src/generators/library/lib/add-linting.d.ts +3 -0
  194. package/src/generators/library/lib/add-linting.js +36 -0
  195. package/src/generators/library/lib/add-rollup-build-target.d.ts +4 -0
  196. package/src/generators/library/lib/add-rollup-build-target.js +59 -0
  197. package/src/generators/library/lib/create-files.d.ts +3 -0
  198. package/src/generators/library/lib/create-files.js +53 -0
  199. package/src/generators/library/lib/install-common-dependencies.d.ts +3 -0
  200. package/src/generators/library/lib/install-common-dependencies.js +47 -0
  201. package/src/generators/library/lib/normalize-options.d.ts +3 -0
  202. package/src/generators/library/lib/normalize-options.js +92 -0
  203. package/src/generators/library/lib/set-defaults.d.ts +3 -0
  204. package/src/generators/library/lib/set-defaults.js +23 -0
  205. package/src/generators/library/lib/update-app-routes.d.ts +3 -0
  206. package/src/generators/library/lib/update-app-routes.js +62 -0
  207. package/src/generators/library/library.d.ts +5 -0
  208. package/src/generators/library/library.js +193 -0
  209. package/src/generators/library/schema.d.ts +45 -0
  210. package/src/generators/library/schema.json +198 -0
  211. package/src/generators/redux/files/__fileName__.slice.spec.ts__tmpl__ +56 -0
  212. package/src/generators/redux/files/__fileName__.slice.ts__tmpl__ +129 -0
  213. package/src/generators/redux/redux.d.ts +5 -0
  214. package/src/generators/redux/redux.js +143 -0
  215. package/src/generators/redux/schema.d.ts +23 -0
  216. package/src/generators/redux/schema.json +51 -0
  217. package/src/generators/remote/files/common/src/main.js__tmpl__ +1 -0
  218. package/src/generators/remote/files/common/src/remote-entry.js__tmpl__ +1 -0
  219. package/src/generators/remote/files/common-ts/src/main.ts__tmpl__ +1 -0
  220. package/src/generators/remote/files/common-ts/src/remote-entry.ts__tmpl__ +1 -0
  221. package/src/generators/remote/files/module-federation/module-federation.config.js__tmpl__ +9 -0
  222. package/src/generators/remote/files/module-federation/webpack.config.js__tmpl__ +12 -0
  223. package/src/generators/remote/files/module-federation/webpack.config.prod.js__tmpl__ +1 -0
  224. package/src/generators/remote/files/module-federation-ssr/module-federation.server.config.js__tmpl__ +6 -0
  225. package/src/generators/remote/files/module-federation-ssr/server.ts__tmpl__ +45 -0
  226. package/src/generators/remote/files/module-federation-ssr/webpack.server.config.js__tmpl__ +12 -0
  227. package/src/generators/remote/files/module-federation-ssr-ts/module-federation.server.config.ts__tmpl__ +10 -0
  228. package/src/generators/remote/files/module-federation-ssr-ts/server.ts__tmpl__ +45 -0
  229. package/src/generators/remote/files/module-federation-ssr-ts/tsconfig.lint.json__tmpl__ +19 -0
  230. package/src/generators/remote/files/module-federation-ssr-ts/webpack.server.config.ts__tmpl__ +12 -0
  231. package/src/generators/remote/files/module-federation-ts/module-federation.config.ts__tmpl__ +13 -0
  232. package/src/generators/remote/files/module-federation-ts/tsconfig.lint.json__tmpl__ +19 -0
  233. package/src/generators/remote/files/module-federation-ts/webpack.config.prod.ts__tmpl__ +1 -0
  234. package/src/generators/remote/files/module-federation-ts/webpack.config.ts__tmpl__ +12 -0
  235. package/src/generators/remote/lib/add-remote-to-dynamic-host.d.ts +2 -0
  236. package/src/generators/remote/lib/add-remote-to-dynamic-host.js +11 -0
  237. package/src/generators/remote/lib/setup-ssr-for-remote.d.ts +4 -0
  238. package/src/generators/remote/lib/setup-ssr-for-remote.js +40 -0
  239. package/src/generators/remote/lib/setup-tspath-for-remote.d.ts +3 -0
  240. package/src/generators/remote/lib/setup-tspath-for-remote.js +15 -0
  241. package/src/generators/remote/lib/update-host-with-remote.d.ts +2 -0
  242. package/src/generators/remote/lib/update-host-with-remote.js +64 -0
  243. package/src/generators/remote/remote.d.ts +7 -0
  244. package/src/generators/remote/remote.js +104 -0
  245. package/src/generators/remote/schema.d.ts +34 -0
  246. package/src/generators/remote/schema.json +183 -0
  247. package/src/generators/setup-ssr/files/server.ts__tmpl__ +28 -0
  248. package/src/generators/setup-ssr/files/src/main.server.tsx__tmpl__ +47 -0
  249. package/src/generators/setup-ssr/files/tsconfig.server.json__tmpl__ +17 -0
  250. package/src/generators/setup-ssr/schema.d.ts +7 -0
  251. package/src/generators/setup-ssr/schema.json +48 -0
  252. package/src/generators/setup-ssr/setup-ssr.d.ts +4 -0
  253. package/src/generators/setup-ssr/setup-ssr.js +183 -0
  254. package/src/generators/setup-tailwind/files/postcss.config.js__tmpl__ +15 -0
  255. package/src/generators/setup-tailwind/files/tailwind.config.js__tmpl__ +17 -0
  256. package/src/generators/setup-tailwind/lib/add-tailwind-style-imports.d.ts +3 -0
  257. package/src/generators/setup-tailwind/lib/add-tailwind-style-imports.js +36 -0
  258. package/src/generators/setup-tailwind/lib/update-project.d.ts +3 -0
  259. package/src/generators/setup-tailwind/lib/update-project.js +13 -0
  260. package/src/generators/setup-tailwind/schema.d.ts +6 -0
  261. package/src/generators/setup-tailwind/schema.js +2 -0
  262. package/src/generators/setup-tailwind/schema.json +47 -0
  263. package/src/generators/setup-tailwind/setup-tailwind.d.ts +4 -0
  264. package/src/generators/setup-tailwind/setup-tailwind.js +35 -0
  265. package/src/generators/stories/schema.json +67 -0
  266. package/src/generators/stories/stories.d.ts +15 -0
  267. package/src/generators/stories/stories.js +130 -0
  268. package/src/generators/storybook-configuration/configuration.d.ts +6 -0
  269. package/src/generators/storybook-configuration/configuration.js +74 -0
  270. package/src/generators/storybook-configuration/schema.d.ts +16 -0
  271. package/src/generators/storybook-configuration/schema.json +95 -0
  272. package/src/migrations/update-15-3-0/install-webpack-rollup-dependencies.d.ts +3 -0
  273. package/src/migrations/update-15-3-0/install-webpack-rollup-dependencies.js +37 -0
  274. package/src/migrations/update-15-3-0/update-rollup-executor.d.ts +3 -0
  275. package/src/migrations/update-15-3-0/update-rollup-executor.js +15 -0
  276. package/src/migrations/update-15-6-3/webpack-config-setup.d.ts +2 -0
  277. package/src/migrations/update-15-6-3/webpack-config-setup.js +103 -0
  278. package/src/migrations/update-16-0-0-add-nx-packages/update-16-0-0-add-nx-packages.d.ts +2 -0
  279. package/src/migrations/update-16-0-0-add-nx-packages/update-16-0-0-add-nx-packages.js +9 -0
  280. package/src/migrations/update-16-2-0-remove-package/update-16-2-0-remove-package.d.ts +2 -0
  281. package/src/migrations/update-16-2-0-remove-package/update-16-2-0-remove-package.js +8 -0
  282. package/src/migrations/update-16-3-0/remove-types-react-router-dom-package.d.ts +2 -0
  283. package/src/migrations/update-16-3-0/remove-types-react-router-dom-package.js +8 -0
  284. package/src/migrations/update-16-7-0/add-babel-core.d.ts +2 -0
  285. package/src/migrations/update-16-7-0/add-babel-core.js +14 -0
  286. package/src/migrations/update-16-7-0-add-typings/update-16-7-0-add-typings.d.ts +2 -0
  287. package/src/migrations/update-16-7-0-add-typings/update-16-7-0-add-typings.js +57 -0
  288. package/src/migrations/update-18-0-0/add-mf-env-var-to-target-defaults.d.ts +2 -0
  289. package/src/migrations/update-18-0-0/add-mf-env-var-to-target-defaults.js +26 -0
  290. package/src/module-federation/ast-utils.d.ts +8 -0
  291. package/src/module-federation/ast-utils.js +102 -0
  292. package/src/module-federation/load-config.d.ts +3 -0
  293. package/src/module-federation/load-config.js +16 -0
  294. package/src/module-federation/models.d.ts +24 -0
  295. package/src/module-federation/models.js +2 -0
  296. package/src/module-federation/package-json.d.ts +8 -0
  297. package/src/module-federation/package-json.js +13 -0
  298. package/src/module-federation/utils.d.ts +12 -0
  299. package/src/module-federation/utils.js +76 -0
  300. package/src/module-federation/with-module-federation-ssr.d.ts +2 -0
  301. package/src/module-federation/with-module-federation-ssr.js +34 -0
  302. package/src/module-federation/with-module-federation.d.ts +7 -0
  303. package/src/module-federation/with-module-federation.js +50 -0
  304. package/src/rules/add-styled-dependencies.d.ts +5 -0
  305. package/src/rules/add-styled-dependencies.js +17 -0
  306. package/src/rules/update-module-federation-project.d.ts +9 -0
  307. package/src/rules/update-module-federation-project.js +50 -0
  308. package/src/utils/add-mf-env-to-inputs.d.ts +2 -0
  309. package/src/utils/add-mf-env-to-inputs.js +24 -0
  310. package/src/utils/assertion.d.ts +1 -0
  311. package/src/utils/assertion.js +19 -0
  312. package/src/utils/ast-utils.d.ts +29 -0
  313. package/src/utils/ast-utils.js +522 -0
  314. package/src/utils/component-props.d.ts +15 -0
  315. package/src/utils/component-props.js +60 -0
  316. package/src/utils/create-ts-config.d.ts +9 -0
  317. package/src/utils/create-ts-config.js +65 -0
  318. package/src/utils/ct-utils.d.ts +14 -0
  319. package/src/utils/ct-utils.js +94 -0
  320. package/src/utils/dependencies.d.ts +7 -0
  321. package/src/utils/dependencies.js +2 -0
  322. package/src/utils/format-file.d.ts +1 -0
  323. package/src/utils/format-file.js +12 -0
  324. package/src/utils/get-in-source-vitest-tests-template.d.ts +1 -0
  325. package/src/utils/get-in-source-vitest-tests-template.js +21 -0
  326. package/src/utils/has-vite-plugin.d.ts +2 -0
  327. package/src/utils/has-vite-plugin.js +11 -0
  328. package/src/utils/has-webpack-plugin.d.ts +2 -0
  329. package/src/utils/has-webpack-plugin.js +11 -0
  330. package/src/utils/jest-utils.d.ts +1 -0
  331. package/src/utils/jest-utils.js +9 -0
  332. package/src/utils/lint.d.ts +36 -0
  333. package/src/utils/lint.js +24 -0
  334. package/src/utils/maybe-js.d.ts +3 -0
  335. package/src/utils/maybe-js.js +9 -0
  336. package/src/utils/styled.d.ts +3 -0
  337. package/src/utils/styled.js +62 -0
  338. package/src/utils/testing-generators.d.ts +3 -0
  339. package/src/utils/testing-generators.js +30 -0
  340. package/src/utils/versions.d.ts +46 -0
  341. package/src/utils/versions.js +54 -0
  342. package/tailwind.d.ts +6 -0
  343. package/tailwind.js +29 -0
  344. package/typings/cssmodule.d.ts +19 -0
  345. package/typings/image.d.ts +48 -0
  346. package/typings/style.d.ts +9 -0
  347. package/typings/styled-jsx.d.ts +8 -0
@@ -0,0 +1,2 @@
1
+ import { Tree } from '@nx/devkit';
2
+ export default function (tree: Tree): Promise<void>;
@@ -0,0 +1,103 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const devkit_1 = require("@nx/devkit");
4
+ const executor_options_utils_1 = require("@nx/devkit/src/generators/executor-options-utils");
5
+ const path_1 = require("path");
6
+ async function default_1(tree) {
7
+ // Since projects can have multiple configurations, we need to know if the default options
8
+ // need to be migrated or not. If so then the subsequent configurations with `webpackConfig` also need to be.
9
+ const defaultOptionsUpdated = new Set();
10
+ (0, executor_options_utils_1.forEachExecutorOptions)(tree, '@nrwl/webpack:webpack', (options, projectName, targetName, configurationName) => {
11
+ const projectConfiguration = (0, devkit_1.readProjectConfiguration)(tree, projectName);
12
+ const defaultOptions = projectConfiguration.targets[targetName].options;
13
+ const defaultWasUpdated = defaultOptionsUpdated.has(projectName);
14
+ // If default was not updated (for different configurations), we don't do anything
15
+ // If isolatedConfig is set, we don't need to do anything
16
+ // If it is NOT React, we don't need to do anything
17
+ if (!defaultWasUpdated &&
18
+ (defaultOptions?.['isolatedConfig'] ||
19
+ !(defaultOptions?.['main']?.match(/main\.(t|j)sx$/) ||
20
+ defaultOptions?.['webpackConfig'] === '@nrwl/react/plugins/webpack'))) {
21
+ return;
22
+ }
23
+ defaultOptionsUpdated.add(projectName);
24
+ // If this is not the default options (e.g. for development, production, or something custom),
25
+ // then skip it unless it specifically configures a webpackConfig file
26
+ if (configurationName && !options?.webpackConfig) {
27
+ return;
28
+ }
29
+ // If webpackConfig is set, update it with the new options
30
+ // If webpackConfig is not set, we need to create a new
31
+ // webpack.config.js file and set the path to it in the
32
+ // executor options
33
+ if (options?.['webpackConfig'] &&
34
+ options['webpackConfig'] !== '@nrwl/react/plugins/webpack') {
35
+ let oldName = options['webpackConfig'];
36
+ if (options['webpackConfig'].endsWith('.js')) {
37
+ oldName = options['webpackConfig'].replace('.js', '.old.js');
38
+ }
39
+ if (options['webpackConfig'].endsWith('.ts')) {
40
+ oldName = options['webpackConfig'].replace('.ts', '.old.ts');
41
+ }
42
+ renameFile(tree, options['webpackConfig'], oldName);
43
+ const justTheFileName = (0, path_1.basename)(oldName);
44
+ tree.write(options['webpackConfig'], `
45
+ const { composePlugins, withNx } = require('@nrwl/webpack');
46
+ const { withReact } = require('@nrwl/react');
47
+
48
+ // Nx plugins for webpack.
49
+ module.exports = composePlugins(withNx(), withReact(), (config, { options, context }) => {
50
+ // Note: This was added by an Nx migration.
51
+ // You should consider inlining the logic into this file.
52
+ // For more information on webpack config and Nx see:
53
+ // https://nx.dev/recipes/webpack/webpack-config-setup
54
+ return require('./${justTheFileName}')(config, context);
55
+ });
56
+ `);
57
+ options['isolatedConfig'] = true;
58
+ projectConfiguration.targets[targetName][configurationName ?? 'options'] = options;
59
+ (0, devkit_1.updateProjectConfiguration)(tree, projectName, projectConfiguration);
60
+ devkit_1.logger.info(`
61
+ ${options['webpackConfig']} has been renamed to ${oldName} and a new ${options['webpackConfig']}
62
+ has been created for your project ${projectName}.
63
+ You should consider inlining the logic from ${oldName} into ${options['webpackConfig']}.
64
+ You can read our guide on how to do this here:
65
+
66
+ https://nx.dev/recipes/webpack/webpack-config-setup
67
+ `);
68
+ }
69
+ else {
70
+ const projectConfiguration = (0, devkit_1.readProjectConfiguration)(tree, projectName);
71
+ if (!options) {
72
+ options = {};
73
+ }
74
+ options['webpackConfig'] = `${projectConfiguration.root}/webpack.config.js`;
75
+ options['isolatedConfig'] = true;
76
+ tree.write(options['webpackConfig'], `
77
+ const { composePlugins, withNx } = require('@nrwl/webpack');
78
+ const { withReact } = require('@nrwl/react');
79
+
80
+ // Nx plugins for webpack.
81
+ module.exports = composePlugins(withNx(), withReact(), (config, { options, context }) => {
82
+ // Update the webpack config as needed here.
83
+ // e.g. config.plugins.push(new MyPlugin())
84
+ // For more information on webpack config and Nx see:
85
+ // https://nx.dev/recipes/webpack/webpack-config-setup
86
+ return config;
87
+ });
88
+ `);
89
+ projectConfiguration.targets[targetName].options = options;
90
+ (0, devkit_1.updateProjectConfiguration)(tree, projectName, projectConfiguration);
91
+ }
92
+ });
93
+ await (0, devkit_1.formatFiles)(tree);
94
+ }
95
+ exports.default = default_1;
96
+ function renameFile(tree, from, to) {
97
+ const buffer = tree.read(from);
98
+ if (!buffer) {
99
+ return;
100
+ }
101
+ tree.write(to, buffer);
102
+ tree.delete(from);
103
+ }
@@ -0,0 +1,2 @@
1
+ import { Tree } from '@nx/devkit';
2
+ export default function replacePackage(tree: Tree): Promise<void>;
@@ -0,0 +1,9 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const devkit_1 = require("@nx/devkit");
4
+ const replace_package_1 = require("@nx/devkit/src/utils/replace-package");
5
+ async function replacePackage(tree) {
6
+ await (0, replace_package_1.replaceNrwlPackageWithNxPackage)(tree, '@nrwl/react', '@nx/react');
7
+ await (0, devkit_1.formatFiles)(tree);
8
+ }
9
+ exports.default = replacePackage;
@@ -0,0 +1,2 @@
1
+ import { Tree } from '@nx/devkit';
2
+ export default function removePackage(tree: Tree): Promise<void>;
@@ -0,0 +1,8 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const devkit_1 = require("@nx/devkit");
4
+ async function removePackage(tree) {
5
+ (0, devkit_1.removeDependenciesFromPackageJson)(tree, [], ['react-test-renderer']);
6
+ await (0, devkit_1.formatFiles)(tree);
7
+ }
8
+ exports.default = removePackage;
@@ -0,0 +1,2 @@
1
+ import { Tree } from '@nx/devkit';
2
+ export default function removePackage(tree: Tree): Promise<void>;
@@ -0,0 +1,8 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const devkit_1 = require("@nx/devkit");
4
+ async function removePackage(tree) {
5
+ (0, devkit_1.removeDependenciesFromPackageJson)(tree, [], ['react-test-renderer']);
6
+ await (0, devkit_1.formatFiles)(tree);
7
+ }
8
+ exports.default = removePackage;
@@ -0,0 +1,2 @@
1
+ import { Tree } from '@nx/devkit';
2
+ export default function addBabelCore(tree: Tree): Promise<void>;
@@ -0,0 +1,14 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const devkit_1 = require("@nx/devkit");
4
+ const versions_1 = require("../../utils/versions");
5
+ async function addBabelCore(tree) {
6
+ const packageJson = (0, devkit_1.readJson)(tree, 'package.json');
7
+ if (packageJson?.devDependencies['@babel/preset-react']) {
8
+ (0, devkit_1.addDependenciesToPackageJson)(tree, {}, {
9
+ '@babel/core': versions_1.babelCoreVersion,
10
+ });
11
+ await (0, devkit_1.formatFiles)(tree);
12
+ }
13
+ }
14
+ exports.default = addBabelCore;
@@ -0,0 +1,2 @@
1
+ import { Tree } from '@nx/devkit';
2
+ export default function addTypings(tree: Tree): Promise<void>;
@@ -0,0 +1,57 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const devkit_1 = require("@nx/devkit");
4
+ async function addTypings(tree) {
5
+ const projects = (0, devkit_1.getProjects)(tree);
6
+ const buildExecutors = [
7
+ '@nx/webpack:webpack',
8
+ '@nx/vite:build',
9
+ '@nx/rspack:rspack',
10
+ ];
11
+ const serveExecutors = [
12
+ '@nx/webpack:dev-server',
13
+ '@nx/vite:dev-server',
14
+ '@nx/rspack:dev-server',
15
+ ];
16
+ const relatedTsConfigs = [
17
+ 'tsconfig.app.json',
18
+ 'tsconfig.lib.json',
19
+ 'tsconfig.spec.json',
20
+ ];
21
+ const typesToAdd = [
22
+ '@nx/react/typings/cssmodule.d.ts',
23
+ '@nx/react/typings/image.d.ts',
24
+ ];
25
+ for (const [, config] of projects) {
26
+ if (!buildExecutors.includes(config?.targets?.build?.executor)) {
27
+ continue;
28
+ }
29
+ if (config?.targets?.serve?.executor &&
30
+ !serveExecutors.includes(config?.targets?.serve?.executor)) {
31
+ continue;
32
+ }
33
+ const rootPath = config.root;
34
+ const projectTsConfigPath = (0, devkit_1.joinPathFragments)(rootPath, 'tsconfig.json');
35
+ const projectTsConfig = (0, devkit_1.readJson)(tree, projectTsConfigPath);
36
+ if (projectTsConfig.compilerOptions?.jsx !== 'react-jsx') {
37
+ continue;
38
+ }
39
+ relatedTsConfigs.forEach((tsConfig) => {
40
+ const tsConfigPath = (0, devkit_1.joinPathFragments)(rootPath, tsConfig);
41
+ if (tree.exists(tsConfigPath)) {
42
+ (0, devkit_1.updateJson)(tree, tsConfigPath, (json) => {
43
+ const compilerOptions = json.compilerOptions || {};
44
+ compilerOptions.types = [
45
+ ...new Set([...(compilerOptions.types || []), ...typesToAdd]),
46
+ ];
47
+ if (json.files?.length > 0) {
48
+ json.files = json.files.filter((file) => !['cssmodule.d.ts', 'image.d.ts'].includes(file));
49
+ }
50
+ return { ...json, compilerOptions };
51
+ });
52
+ }
53
+ });
54
+ }
55
+ await (0, devkit_1.formatFiles)(tree);
56
+ }
57
+ exports.default = addTypings;
@@ -0,0 +1,2 @@
1
+ import { type Tree } from '@nx/devkit';
2
+ export default function (tree: Tree): Promise<void>;
@@ -0,0 +1,26 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const devkit_1 = require("@nx/devkit");
4
+ const add_mf_env_to_inputs_1 = require("../../utils/add-mf-env-to-inputs");
5
+ async function default_1(tree) {
6
+ if (!hasModuleFederationProject(tree)) {
7
+ return;
8
+ }
9
+ (0, add_mf_env_to_inputs_1.addMfEnvToTargetDefaultInputs)(tree);
10
+ await (0, devkit_1.formatFiles)(tree);
11
+ }
12
+ exports.default = default_1;
13
+ function hasModuleFederationProject(tree) {
14
+ const projects = (0, devkit_1.getProjects)(tree);
15
+ for (const project of projects.values()) {
16
+ const targets = project.targets || {};
17
+ for (const [_, target] of Object.entries(targets)) {
18
+ if (target.executor === '@nx/webpack:webpack' &&
19
+ (tree.exists((0, devkit_1.joinPathFragments)(project.root, 'module-federation.config.ts')) ||
20
+ tree.exists((0, devkit_1.joinPathFragments)(project.root, 'module-federation.config.js')))) {
21
+ return true;
22
+ }
23
+ }
24
+ }
25
+ return false;
26
+ }
@@ -0,0 +1,8 @@
1
+ import type * as ts from 'typescript';
2
+ import { StringChange } from '@nx/devkit';
3
+ export declare function addRemoteToConfig(source: ts.SourceFile, app: string): StringChange[];
4
+ export declare function addRemoteDefinition(source: ts.SourceFile, app: string): StringChange[];
5
+ export declare function addRemoteRoute(source: ts.SourceFile, names: {
6
+ fileName: string;
7
+ className: string;
8
+ }): StringChange[];
@@ -0,0 +1,102 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.addRemoteRoute = exports.addRemoteDefinition = exports.addRemoteToConfig = void 0;
4
+ const devkit_1 = require("@nx/devkit");
5
+ const js_1 = require("@nx/js");
6
+ const ast_utils_1 = require("../utils/ast-utils");
7
+ const ensure_typescript_1 = require("@nx/js/src/utils/typescript/ensure-typescript");
8
+ let tsModule;
9
+ function addRemoteToConfig(source, app) {
10
+ if (!tsModule) {
11
+ tsModule = (0, ensure_typescript_1.ensureTypescript)();
12
+ }
13
+ const assignments = (0, js_1.findNodes)(source, tsModule.SyntaxKind.PropertyAssignment);
14
+ const remotesAssignment = assignments.find((s) => s.name.getText() === 'remotes');
15
+ if (remotesAssignment) {
16
+ const arrayExpression = remotesAssignment.initializer;
17
+ if (!arrayExpression.elements)
18
+ return [];
19
+ const lastElement = arrayExpression.elements[arrayExpression.elements.length - 1];
20
+ return [
21
+ lastElement && !arrayExpression.elements.hasTrailingComma
22
+ ? {
23
+ type: devkit_1.ChangeType.Insert,
24
+ index: lastElement.end,
25
+ text: `,`,
26
+ }
27
+ : null,
28
+ {
29
+ type: devkit_1.ChangeType.Insert,
30
+ index: remotesAssignment.end - 1,
31
+ text: `'${app}',\n`,
32
+ },
33
+ ].filter(Boolean);
34
+ }
35
+ const binaryExpressions = (0, js_1.findNodes)(source, tsModule.SyntaxKind.BinaryExpression);
36
+ const exportExpression = binaryExpressions.find((b) => {
37
+ if (b.left.kind === tsModule.SyntaxKind.PropertyAccessExpression) {
38
+ const pae = b.left;
39
+ return (pae.expression.getText() === 'module' &&
40
+ pae.name.getText() === 'exports');
41
+ }
42
+ });
43
+ if (exportExpression?.right.kind === tsModule.SyntaxKind.ObjectLiteralExpression) {
44
+ const ole = exportExpression.right;
45
+ return [
46
+ {
47
+ type: devkit_1.ChangeType.Insert,
48
+ index: ole.end - 1,
49
+ text: `remotes: ['${app}']\n`,
50
+ },
51
+ ];
52
+ }
53
+ return [];
54
+ }
55
+ exports.addRemoteToConfig = addRemoteToConfig;
56
+ function addRemoteDefinition(source, app) {
57
+ return [
58
+ {
59
+ type: devkit_1.ChangeType.Insert,
60
+ index: source.end,
61
+ text: `\ndeclare module '${app}/Module';`,
62
+ },
63
+ ];
64
+ }
65
+ exports.addRemoteDefinition = addRemoteDefinition;
66
+ function addRemoteRoute(source, names) {
67
+ const routes = (0, ast_utils_1.findElements)(source, 'Route');
68
+ const links = (0, ast_utils_1.findElements)(source, 'Link');
69
+ if (routes.length === 0) {
70
+ return [];
71
+ }
72
+ else {
73
+ const changes = [];
74
+ const firstRoute = routes[0];
75
+ const firstLink = links[0];
76
+ changes.push(...(0, ast_utils_1.addImport)(source, `const ${names.className} = React.lazy(() => import('${names.fileName}/Module'));`));
77
+ changes.push({
78
+ type: devkit_1.ChangeType.Insert,
79
+ index: firstRoute.end,
80
+ text: `\n<Route path="/${names.fileName}" element={<${names.className} />} />`,
81
+ });
82
+ if (firstLink) {
83
+ const parentLi = (0, ast_utils_1.findClosestOpening)('li', firstLink);
84
+ if (parentLi) {
85
+ changes.push({
86
+ type: devkit_1.ChangeType.Insert,
87
+ index: parentLi.end,
88
+ text: `\n<li><Link to="/${names.fileName}">${names.className}</Link></li>`,
89
+ });
90
+ }
91
+ else {
92
+ changes.push({
93
+ type: devkit_1.ChangeType.Insert,
94
+ index: firstLink.parent.end,
95
+ text: `\n<Link to="/${names.fileName}">${names.className}</Link>`,
96
+ });
97
+ }
98
+ }
99
+ return changes;
100
+ }
101
+ }
102
+ exports.addRemoteRoute = addRemoteRoute;
@@ -0,0 +1,3 @@
1
+ import { ExecutorContext } from '@nx/devkit';
2
+ import { ModuleFederationConfig } from './models';
3
+ export declare function loadModuleFederationConfigFromContext(context: ExecutorContext): ModuleFederationConfig;
@@ -0,0 +1,16 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.loadModuleFederationConfigFromContext = void 0;
4
+ const path_1 = require("path");
5
+ function loadModuleFederationConfigFromContext(context) {
6
+ const p = context.projectsConfigurations.projects[context.projectName];
7
+ const moduleFederationConfigPath = (0, path_1.join)(context.root, p.root, 'module-federation.config.js');
8
+ try {
9
+ return require(moduleFederationConfigPath);
10
+ }
11
+ catch {
12
+ // TODO(jack): Add a link to guide
13
+ throw new Error(`Could not load ${moduleFederationConfigPath}. Was this project generated with "@nx/react:host"?`);
14
+ }
15
+ }
16
+ exports.loadModuleFederationConfigFromContext = loadModuleFederationConfigFromContext;
@@ -0,0 +1,24 @@
1
+ export type ModuleFederationLibrary = {
2
+ type: string;
3
+ name: string;
4
+ };
5
+ export type Remotes = string[] | [remoteName: string, remoteUrl: string][];
6
+ export interface SharedLibraryConfig {
7
+ singleton?: boolean;
8
+ strictVersion?: boolean;
9
+ requiredVersion?: false | string;
10
+ eager?: boolean;
11
+ }
12
+ export type SharedFunction = (libraryName: string, sharedConfig: SharedLibraryConfig) => undefined | false | SharedLibraryConfig;
13
+ export type AdditionalSharedConfig = Array<string | [libraryName: string, sharedConfig: SharedLibraryConfig] | {
14
+ libraryName: string;
15
+ sharedConfig: SharedLibraryConfig;
16
+ }>;
17
+ export interface ModuleFederationConfig {
18
+ name: string;
19
+ remotes?: Remotes;
20
+ library?: ModuleFederationLibrary;
21
+ exposes?: Record<string, string>;
22
+ shared?: SharedFunction;
23
+ additionalShared?: AdditionalSharedConfig;
24
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,8 @@
1
+ export declare function readRootPackageJson(): {
2
+ dependencies?: {
3
+ [key: string]: string;
4
+ };
5
+ devDependencies?: {
6
+ [key: string]: string;
7
+ };
8
+ };
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.readRootPackageJson = void 0;
4
+ const devkit_1 = require("@nx/devkit");
5
+ const fs_1 = require("fs");
6
+ function readRootPackageJson() {
7
+ const pkgJsonPath = (0, devkit_1.joinPathFragments)(devkit_1.workspaceRoot, 'package.json');
8
+ if (!(0, fs_1.existsSync)(pkgJsonPath)) {
9
+ throw new Error('NX MFE: Could not find root package.json to determine dependency versions.');
10
+ }
11
+ return (0, devkit_1.readJsonFile)(pkgJsonPath);
12
+ }
13
+ exports.readRootPackageJson = readRootPackageJson;
@@ -0,0 +1,12 @@
1
+ import { ModuleFederationConfig } from '@nx/webpack/src/utils/module-federation';
2
+ export declare function getFunctionDeterminateRemoteUrl(isServer?: boolean): (remote: string) => string;
3
+ export declare function getModuleFederationConfig(mfConfig: ModuleFederationConfig, options?: {
4
+ isServer: boolean;
5
+ determineRemoteUrl?: (remote: string) => string;
6
+ }): Promise<{
7
+ sharedLibraries: import("@nx/webpack/src/utils/module-federation").SharedWorkspaceLibraryConfig;
8
+ sharedDependencies: {
9
+ [x: string]: import("@nx/webpack/src/utils/module-federation").SharedLibraryConfig;
10
+ };
11
+ mappedRemotes: {};
12
+ }>;
@@ -0,0 +1,76 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getModuleFederationConfig = exports.getFunctionDeterminateRemoteUrl = void 0;
4
+ const module_federation_1 = require("@nx/webpack/src/utils/module-federation");
5
+ const devkit_1 = require("@nx/devkit");
6
+ const project_graph_1 = require("nx/src/project-graph/project-graph");
7
+ function getFunctionDeterminateRemoteUrl(isServer = false) {
8
+ const target = 'serve';
9
+ const remoteEntry = isServer ? 'server/remoteEntry.js' : 'remoteEntry.js';
10
+ return function (remote) {
11
+ const mappedStaticRemotesFromEnv = process.env
12
+ .NX_MF_DEV_SERVER_STATIC_REMOTES
13
+ ? JSON.parse(process.env.NX_MF_DEV_SERVER_STATIC_REMOTES)
14
+ : undefined;
15
+ if (mappedStaticRemotesFromEnv && mappedStaticRemotesFromEnv[remote]) {
16
+ return `${mappedStaticRemotesFromEnv[remote]}/${remoteEntry}`;
17
+ }
18
+ let remoteConfiguration = null;
19
+ try {
20
+ remoteConfiguration = (0, project_graph_1.readCachedProjectConfiguration)(remote);
21
+ }
22
+ catch (e) {
23
+ throw new Error(`Cannot find remote: "${remote}". Check that the remote name is correct in your module federation config file.\n`);
24
+ }
25
+ const serveTarget = remoteConfiguration?.targets?.[target];
26
+ if (!serveTarget) {
27
+ throw new Error(`Cannot automatically determine URL of remote (${remote}). Looked for property "host" in the project's "${serveTarget}" target.\n
28
+ You can also use the tuple syntax in your webpack config to configure your remotes. e.g. \`remotes: [['remote1', 'http://localhost:4201']]\``);
29
+ }
30
+ const host = serveTarget.options?.host ??
31
+ `http${serveTarget.options.ssl ? 's' : ''}://localhost`;
32
+ const port = serveTarget.options?.port ?? 4201;
33
+ return `${host.endsWith('/') ? host.slice(0, -1) : host}:${port}/${remoteEntry}`;
34
+ };
35
+ }
36
+ exports.getFunctionDeterminateRemoteUrl = getFunctionDeterminateRemoteUrl;
37
+ async function getModuleFederationConfig(mfConfig, options = { isServer: false }) {
38
+ let projectGraph;
39
+ try {
40
+ projectGraph = (0, devkit_1.readCachedProjectGraph)();
41
+ }
42
+ catch (e) {
43
+ projectGraph = await (0, devkit_1.createProjectGraphAsync)();
44
+ }
45
+ const project = projectGraph.nodes[mfConfig.name]?.data;
46
+ if (!project) {
47
+ throw Error(`Cannot find project "${mfConfig.name}". Check that the name is correct in module-federation.config.js`);
48
+ }
49
+ const dependencies = (0, module_federation_1.getDependentPackagesForProject)(projectGraph, mfConfig.name);
50
+ if (mfConfig.shared) {
51
+ dependencies.workspaceLibraries = dependencies.workspaceLibraries.filter((lib) => mfConfig.shared(lib.importKey, {}) !== false);
52
+ dependencies.npmPackages = dependencies.npmPackages.filter((pkg) => mfConfig.shared(pkg, {}) !== false);
53
+ }
54
+ const sharedLibraries = (0, module_federation_1.shareWorkspaceLibraries)(dependencies.workspaceLibraries);
55
+ const npmPackages = (0, module_federation_1.sharePackages)(dependencies.npmPackages);
56
+ const sharedDependencies = {
57
+ ...sharedLibraries.getLibraries(project.root),
58
+ ...npmPackages,
59
+ };
60
+ (0, module_federation_1.applySharedFunction)(sharedDependencies, mfConfig.shared);
61
+ (0, module_federation_1.applyAdditionalShared)(sharedDependencies, mfConfig.additionalShared, projectGraph);
62
+ // Choose the correct mapRemotes function based on the server state.
63
+ const mapRemotesFunction = options.isServer ? module_federation_1.mapRemotesForSSR : module_federation_1.mapRemotes;
64
+ // Determine the URL function, either from provided options or by using a default.
65
+ const determineRemoteUrlFunction = options.determineRemoteUrl
66
+ ? options.determineRemoteUrl
67
+ : getFunctionDeterminateRemoteUrl(options.isServer);
68
+ // Map the remotes if they exist, otherwise default to an empty object.
69
+ let mappedRemotes = {};
70
+ if (mfConfig.remotes && mfConfig.remotes.length > 0) {
71
+ const isLibraryTypeVar = mfConfig.library?.type === 'var';
72
+ mappedRemotes = mapRemotesFunction(mfConfig.remotes, 'js', determineRemoteUrlFunction, isLibraryTypeVar);
73
+ }
74
+ return { sharedLibraries, sharedDependencies, mappedRemotes };
75
+ }
76
+ exports.getModuleFederationConfig = getModuleFederationConfig;
@@ -0,0 +1,2 @@
1
+ import { ModuleFederationConfig } from '@nx/webpack/src/utils/module-federation';
2
+ export declare function withModuleFederationForSSR(options: ModuleFederationConfig): Promise<(config: any) => any>;
@@ -0,0 +1,34 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.withModuleFederationForSSR = void 0;
4
+ const utils_1 = require("./utils");
5
+ async function withModuleFederationForSSR(options) {
6
+ if (global.NX_GRAPH_CREATION) {
7
+ return (config) => config;
8
+ }
9
+ const { sharedLibraries, sharedDependencies, mappedRemotes } = await (0, utils_1.getModuleFederationConfig)(options, {
10
+ isServer: true,
11
+ });
12
+ return (config) => {
13
+ config.target = false;
14
+ config.output.uniqueName = options.name;
15
+ config.optimization = {
16
+ runtimeChunk: false,
17
+ };
18
+ config.plugins.push(new (require('@module-federation/node').UniversalFederationPlugin)({
19
+ name: options.name,
20
+ filename: 'remoteEntry.js',
21
+ exposes: options.exposes,
22
+ remotes: mappedRemotes,
23
+ shared: {
24
+ ...sharedDependencies,
25
+ },
26
+ library: {
27
+ type: 'commonjs-module',
28
+ },
29
+ isServer: true,
30
+ }, {}), sharedLibraries.getReplacementPlugin());
31
+ return config;
32
+ };
33
+ }
34
+ exports.withModuleFederationForSSR = withModuleFederationForSSR;
@@ -0,0 +1,7 @@
1
+ import { ModuleFederationConfig } from '@nx/webpack/src/utils/module-federation';
2
+ import type { AsyncNxComposableWebpackPlugin } from '@nx/webpack';
3
+ /**
4
+ * @param {ModuleFederationConfig} options
5
+ * @return {Promise<AsyncNxComposableWebpackPlugin>}
6
+ */
7
+ export declare function withModuleFederation(options: ModuleFederationConfig): Promise<AsyncNxComposableWebpackPlugin>;
@@ -0,0 +1,50 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.withModuleFederation = void 0;
4
+ const utils_1 = require("./utils");
5
+ const ModuleFederationPlugin = require("webpack/lib/container/ModuleFederationPlugin");
6
+ const isVarOrWindow = (libType) => libType === 'var' || libType === 'window';
7
+ /**
8
+ * @param {ModuleFederationConfig} options
9
+ * @return {Promise<AsyncNxComposableWebpackPlugin>}
10
+ */
11
+ async function withModuleFederation(options) {
12
+ if (global.NX_GRAPH_CREATION) {
13
+ return (config) => config;
14
+ }
15
+ const { sharedDependencies, sharedLibraries, mappedRemotes } = await (0, utils_1.getModuleFederationConfig)(options);
16
+ const isGlobal = isVarOrWindow(options.library?.type);
17
+ return (config, ctx) => {
18
+ config.output.uniqueName = options.name;
19
+ config.output.publicPath = 'auto';
20
+ if (isGlobal) {
21
+ config.output.scriptType = 'text/javascript';
22
+ }
23
+ config.optimization = {
24
+ runtimeChunk: false,
25
+ };
26
+ config.experiments = {
27
+ ...config.experiments,
28
+ outputModule: !isGlobal,
29
+ };
30
+ config.plugins.push(new ModuleFederationPlugin({
31
+ name: options.name,
32
+ library: options.library ?? { type: 'module' },
33
+ filename: 'remoteEntry.js',
34
+ exposes: options.exposes,
35
+ remotes: mappedRemotes,
36
+ shared: {
37
+ ...sharedDependencies,
38
+ },
39
+ /**
40
+ * remoteType: 'script' is required for the remote to be loaded as a script tag.
41
+ * remotes will need to be defined as:
42
+ * { appX: 'appX@http://localhost:3001/remoteEntry.js' }
43
+ * { appY: 'appY@http://localhost:3002/remoteEntry.js' }
44
+ */
45
+ ...(isGlobal ? { remoteType: 'script' } : {}),
46
+ }), sharedLibraries.getReplacementPlugin());
47
+ return config;
48
+ };
49
+ }
50
+ exports.withModuleFederation = withModuleFederation;
@@ -0,0 +1,5 @@
1
+ import { Tree } from '@nx/devkit';
2
+ export declare function addStyledModuleDependencies(host: Tree, options: {
3
+ styledModule?: string;
4
+ compiler?: 'babel' | 'swc';
5
+ }): import("@nx/devkit").GeneratorCallback;