@nx/angular 0.0.0-pr-30715-a5f5e3b → 0.0.0-pr-31313-387cdca

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 (240) hide show
  1. package/fesm2022/nx-angular-mf.mjs.map +1 -1
  2. package/fesm2022/nx-angular.mjs.map +1 -1
  3. package/index.d.ts +1 -2
  4. package/mf/index.d.ts +1 -71
  5. package/mf/mf.d.ts +69 -0
  6. package/migrations.json +0 -98
  7. package/package.json +16 -25
  8. package/plugins/component-testing.js +3 -8
  9. package/src/builders/dev-server/dev-server.impl.js +7 -4
  10. package/src/builders/dev-server/lib/normalize-options.js +6 -0
  11. package/src/builders/dev-server/lib/validate-options.js +4 -0
  12. package/src/builders/dev-server/schema.d.ts +15 -3
  13. package/src/builders/dev-server/schema.json +9 -3
  14. package/src/builders/webpack-browser/webpack-browser.impl.js +0 -2
  15. package/src/builders/webpack-server/webpack-server.impl.d.ts +1 -3
  16. package/src/builders/webpack-server/webpack-server.impl.js +0 -2
  17. package/src/executors/application/application.impl.d.ts +2 -2
  18. package/src/executors/application/application.impl.js +6 -11
  19. package/src/executors/application/schema.d.ts +1 -1
  20. package/src/executors/application/schema.json +10 -21
  21. package/src/executors/application/utils/normalize-options.js +1 -8
  22. package/src/executors/application/utils/validate-options.js +40 -10
  23. package/src/executors/extract-i18n/extract-i18n.impl.js +14 -6
  24. package/src/executors/extract-i18n/schema.d.ts +6 -1
  25. package/src/executors/module-federation-dev-server/lib/normalize-options.js +7 -1
  26. package/src/executors/module-federation-dev-server/schema.d.ts +15 -3
  27. package/src/executors/module-federation-dev-server/schema.json +15 -2
  28. package/src/executors/module-federation-ssr-dev-server/module-federation-ssr-dev-server.impl.js +8 -10
  29. package/src/executors/ng-packagr-lite/ng-packagr-adjustments/ng-package/entry-point/entry-point.d.ts +3 -6
  30. package/src/executors/ng-packagr-lite/ng-packagr-adjustments/ng-package/entry-point/entry-point.js +8 -46
  31. package/src/executors/ng-packagr-lite/ng-packagr-adjustments/ng-package/entry-point/write-bundles.di.d.ts +1 -1
  32. package/src/executors/ng-packagr-lite/ng-packagr-adjustments/ng-package/entry-point/write-bundles.di.js +3 -3
  33. package/src/executors/ng-packagr-lite/ng-packagr-adjustments/ng-package/entry-point/write-bundles.transform.d.ts +2 -2
  34. package/src/executors/ng-packagr-lite/ng-packagr-adjustments/ng-package/entry-point/write-bundles.transform.js +6 -22
  35. package/src/executors/ng-packagr-lite/schema.json +3 -2
  36. package/src/executors/package/package.impl.js +5 -1
  37. package/src/executors/package/schema.d.ts +1 -3
  38. package/src/executors/package/schema.json +3 -2
  39. package/src/executors/utilities/esbuild-extensions.d.ts +1 -2
  40. package/src/executors/utilities/ng-packagr/package-imports.d.ts +1 -3
  41. package/src/executors/utilities/ng-packagr/package-imports.js +2 -2
  42. package/src/executors/utilities/ng-packagr/pre-v19/stylesheet-processor.d.ts +24 -1
  43. package/src/executors/utilities/ng-packagr/pre-v19/stylesheet-processor.js +105 -12
  44. package/src/executors/utilities/ng-packagr/stylesheet-processor.di.js +8 -4
  45. package/src/executors/utilities/ng-packagr/v19+/stylesheet-processor.d.ts +1 -1
  46. package/src/executors/utilities/ng-packagr/v19+/stylesheet-processor.js +11 -18
  47. package/src/generators/add-linting/add-linting.js +0 -8
  48. package/src/generators/application/application.js +1 -21
  49. package/src/generators/application/files/base-pre18/src/favicon.ico +0 -0
  50. package/src/generators/application/files/ng-module/src/app/app.component.spec.ts__tpl__ +29 -0
  51. package/src/generators/application/files/ng-module/src/app/{app__componentFileSuffix__.ts__tpl__ → app.component.ts__tpl__} +3 -3
  52. package/src/generators/application/files/ng-module/src/app/app.module.ts__tpl__ +17 -0
  53. package/src/generators/application/files/ng-module/src/main.ts__tpl__ +3 -11
  54. package/src/generators/application/files/nx-welcome/claimed/ng-module/src/app/{nx-welcome__componentFileSuffix__.ts__tpl__ → nx-welcome.component.ts__tpl__} +1 -1
  55. package/src/generators/application/files/nx-welcome/claimed/standalone/src/app/{nx-welcome__componentFileSuffix__.ts__tpl__ → nx-welcome.component.ts__tpl__} +1 -1
  56. package/src/generators/application/files/nx-welcome/not-configured/ng-module/src/app/{nx-welcome__componentFileSuffix__.ts__tpl__ → nx-welcome.component.ts__tpl__} +1 -1
  57. package/src/generators/application/files/nx-welcome/not-configured/standalone/src/app/{nx-welcome__componentFileSuffix__.ts__tpl__ → nx-welcome.component.ts__tpl__} +1 -1
  58. package/src/generators/application/files/nx-welcome/unclaimed/ng-module/src/app/{nx-welcome__componentFileSuffix__.ts__tpl__ → nx-welcome.component.ts__tpl__} +1 -1
  59. package/src/generators/application/files/nx-welcome/unclaimed/standalone/src/app/{nx-welcome__componentFileSuffix__.ts__tpl__ → nx-welcome.component.ts__tpl__} +1 -1
  60. package/src/generators/application/files/standalone-components/src/app/app.component.__style__ +0 -0
  61. package/src/generators/application/files/standalone-components/src/app/app.component.spec.ts__tpl__ +28 -0
  62. package/src/generators/application/files/standalone-components/src/app/{app__componentFileSuffix__.ts__tpl__ → app.component.ts__tpl__} +5 -5
  63. package/src/generators/application/files/standalone-components/src/app/app.config.ts__tpl__ +2 -6
  64. package/src/generators/application/files/standalone-components/src/main.ts__tpl__ +2 -2
  65. package/src/generators/application/lib/create-files.d.ts +1 -1
  66. package/src/generators/application/lib/create-files.js +14 -15
  67. package/src/generators/application/lib/create-project.d.ts +1 -1
  68. package/src/generators/application/lib/create-project.js +26 -119
  69. package/src/generators/application/lib/enable-strict-type-checking.js +0 -3
  70. package/src/generators/application/schema.json +1 -1
  71. package/src/generators/component/component.js +2 -13
  72. package/src/generators/component/files/__fileName__.ts__tpl__ +1 -1
  73. package/src/generators/component/lib/component.js +1 -11
  74. package/src/generators/component/lib/module.d.ts +2 -7
  75. package/src/generators/component/lib/module.js +5 -7
  76. package/src/generators/component/lib/normalize-options.js +3 -7
  77. package/src/generators/component/schema.d.ts +0 -1
  78. package/src/generators/component/schema.json +2 -6
  79. package/src/generators/convert-to-application-executor/convert-to-application-executor.js +22 -19
  80. package/src/generators/convert-to-rspack/convert-to-rspack.js +2 -6
  81. package/src/generators/convert-to-rspack/lib/get-custom-webpack-config.js +1 -1
  82. package/src/generators/directive/directive.js +1 -1
  83. package/src/generators/directive/lib/normalize-options.js +2 -7
  84. package/src/generators/directive/schema.d.ts +0 -1
  85. package/src/generators/directive/schema.json +2 -10
  86. package/src/generators/host/host.js +21 -1
  87. package/src/generators/host/schema.d.ts +1 -0
  88. package/src/generators/host/schema.json +7 -1
  89. package/src/generators/init/init.js +1 -1
  90. package/src/generators/library/files/ng-module/src/index.ts__tpl__ +1 -1
  91. package/src/generators/library/files/standalone-components/src/lib/lib.routes.ts__tpl__ +2 -2
  92. package/src/generators/library/lib/add-standalone-component.js +0 -1
  93. package/src/generators/library/lib/create-files.js +1 -10
  94. package/src/generators/library/lib/enable-strict-type-checking.d.ts +1 -1
  95. package/src/generators/library/lib/enable-strict-type-checking.js +0 -3
  96. package/src/generators/library/lib/normalize-options.d.ts +3 -3
  97. package/src/generators/library/lib/normalize-options.js +1 -6
  98. package/src/generators/library/lib/normalized-schema.d.ts +0 -2
  99. package/src/generators/library-secondary-entry-point/files/src/index.ts__tmpl__ +1 -1
  100. package/src/generators/library-secondary-entry-point/lib/add-files.js +1 -2
  101. package/src/generators/library-secondary-entry-point/lib/normalize-options.d.ts +2 -2
  102. package/src/generators/library-secondary-entry-point/lib/normalize-options.js +0 -3
  103. package/src/generators/library-secondary-entry-point/schema.d.ts +0 -1
  104. package/src/generators/move/lib/update-module-name.js +10 -17
  105. package/src/generators/move/lib/update-secondary-entry-points.js +3 -0
  106. package/src/generators/ng-add/migrators/builders/angular-devkit-karma.migrator.js +1 -1
  107. package/src/generators/ng-add/migrators/projects/app.migrator.js +8 -43
  108. package/src/generators/ngrx/schema.json +3 -3
  109. package/src/generators/ngrx-root-store/lib/normalize-options.js +2 -9
  110. package/src/generators/pipe/lib/normalize-options.js +0 -4
  111. package/src/generators/pipe/pipe.js +1 -1
  112. package/src/generators/pipe/schema.d.ts +0 -1
  113. package/src/generators/pipe/schema.json +2 -11
  114. package/src/generators/remote/files/standalone/src/bootstrap.server.ts__tmpl__ +4 -4
  115. package/src/generators/remote/lib/update-ssr-setup.js +0 -5
  116. package/src/generators/remote/remote.js +23 -0
  117. package/src/generators/remote/schema.d.ts +1 -0
  118. package/src/generators/remote/schema.json +7 -1
  119. package/src/generators/scam/lib/convert-component-to-scam.js +3 -1
  120. package/src/generators/scam/lib/normalize-options.js +3 -11
  121. package/src/generators/scam/schema.d.ts +0 -1
  122. package/src/generators/scam/schema.json +2 -1
  123. package/src/generators/scam-directive/lib/convert-directive-to-scam.js +3 -1
  124. package/src/generators/scam-directive/lib/normalize-options.js +2 -11
  125. package/src/generators/scam-directive/schema.d.ts +0 -2
  126. package/src/generators/scam-directive/schema.json +2 -10
  127. package/src/generators/scam-pipe/lib/convert-pipe-to-scam.js +3 -1
  128. package/src/generators/scam-pipe/lib/normalize-options.js +0 -8
  129. package/src/generators/scam-pipe/schema.d.ts +0 -2
  130. package/src/generators/scam-pipe/schema.json +0 -5
  131. package/src/generators/setup-mf/files/entry-module-files/{entry__componentFileSuffix__.ts__tmpl__ → entry.component.ts__tmpl__} +1 -1
  132. package/src/generators/setup-mf/files/entry-module-files/{__entryModuleFileName__.ts__tmpl__ → entry.module.ts__tmpl__} +4 -4
  133. package/src/generators/setup-mf/files/entry-module-files/entry.routes.ts__tmpl__ +2 -2
  134. package/src/generators/setup-mf/files/host-files/app.component.spec.ts__tmpl__ +47 -0
  135. package/src/generators/setup-mf/files/standalone-entry-component-files/{entry__componentFileSuffix__.ts__tmpl__ → entry.component.ts__tmpl__} +3 -3
  136. package/src/generators/setup-mf/files/standalone-entry-component-files/entry.routes.ts__tmpl__ +2 -2
  137. package/src/generators/setup-mf/files/ts-webpack/module-federation.config.ts__tmpl__ +1 -1
  138. package/src/generators/setup-mf/files/ts-webpack/tsconfig.lint.json__tmpl__ +1 -1
  139. package/src/generators/setup-mf/files/webpack/module-federation.config.js__tmpl__ +1 -1
  140. package/src/generators/setup-mf/lib/add-remote-entry.d.ts +2 -2
  141. package/src/generators/setup-mf/lib/add-remote-entry.js +3 -9
  142. package/src/generators/setup-mf/lib/add-remote-to-host.js +1 -11
  143. package/src/generators/setup-mf/lib/fix-bootstrap.d.ts +2 -2
  144. package/src/generators/setup-mf/lib/fix-bootstrap.js +4 -4
  145. package/src/generators/setup-mf/lib/generate-config.d.ts +2 -2
  146. package/src/generators/setup-mf/lib/generate-config.js +0 -1
  147. package/src/generators/setup-mf/lib/normalize-options.d.ts +1 -1
  148. package/src/generators/setup-mf/lib/normalize-options.js +0 -13
  149. package/src/generators/setup-mf/lib/remove-dead-code-from-remote.d.ts +2 -2
  150. package/src/generators/setup-mf/lib/remove-dead-code-from-remote.js +14 -18
  151. package/src/generators/setup-mf/lib/setup-host-if-dynamic.js +5 -1
  152. package/src/generators/setup-mf/lib/setup-tspath-for-remote.d.ts +2 -2
  153. package/src/generators/setup-mf/lib/setup-tspath-for-remote.js +1 -1
  154. package/src/generators/setup-mf/lib/update-host-app-routes.d.ts +2 -2
  155. package/src/generators/setup-mf/lib/update-host-app-routes.js +9 -12
  156. package/src/generators/setup-mf/lib/update-tsconfig.d.ts +2 -2
  157. package/src/generators/setup-mf/lib/update-tsconfig.js +5 -5
  158. package/src/generators/setup-mf/schema.d.ts +0 -7
  159. package/src/generators/setup-ssr/lib/add-dependencies.js +7 -4
  160. package/src/generators/setup-ssr/lib/add-hydration.js +3 -10
  161. package/src/generators/setup-ssr/lib/add-server-file.js +2 -7
  162. package/src/generators/setup-ssr/lib/generate-files.js +4 -17
  163. package/src/generators/setup-ssr/lib/generate-server-ts-config.js +2 -5
  164. package/src/generators/setup-ssr/lib/normalize-options.js +2 -2
  165. package/src/generators/setup-ssr/lib/update-project-config.js +0 -5
  166. package/src/generators/setup-ssr/lib/validate-options.js +2 -2
  167. package/src/generators/setup-ssr/schema.json +1 -1
  168. package/src/generators/utils/add-jest.js +1 -6
  169. package/src/generators/utils/assert-mf-utils.d.ts +1 -0
  170. package/src/generators/utils/assert-mf-utils.js +11 -0
  171. package/src/generators/utils/ensure-angular-dependencies.js +3 -6
  172. package/src/generators/utils/export-scam.d.ts +0 -1
  173. package/src/generators/utils/export-scam.js +2 -1
  174. package/src/generators/utils/find-module.js +13 -18
  175. package/src/generators/utils/storybook-ast/component-info.js +24 -40
  176. package/src/generators/utils/storybook-ast/module-info.d.ts +1 -1
  177. package/src/generators/utils/storybook-ast/module-info.js +8 -3
  178. package/src/generators/utils/testing.js +28 -28
  179. package/src/generators/utils/version-utils.js +2 -2
  180. package/src/generators/web-worker/lib/add-snippet.js +3 -3
  181. package/src/plugins/plugin.js +13 -22
  182. package/src/utils/backward-compatible-versions.d.ts +2 -2
  183. package/src/utils/backward-compatible-versions.js +21 -20
  184. package/src/utils/nx-devkit/ast-utils.js +3 -17
  185. package/src/utils/nx-devkit/testing.js +9 -9
  186. package/src/utils/versions.d.ts +4 -3
  187. package/src/utils/versions.js +5 -4
  188. package/src/executors/utilities/builder-package.d.ts +0 -1
  189. package/src/executors/utilities/builder-package.js +0 -11
  190. package/src/generators/application/files/ng-module/src/app/app__componentFileSuffix__.spec.ts__tpl__ +0 -28
  191. package/src/generators/application/files/ng-module/src/app/app__moduleTypeSeparator__module.ts__tpl__ +0 -17
  192. package/src/generators/application/files/standalone-components/src/app/app__componentFileSuffix__.spec.ts__tpl__ +0 -27
  193. package/src/generators/setup-mf/files/host-files/__appFileName__.spec.ts__tmpl__ +0 -43
  194. package/src/generators/setup-ssr/files/v20+/application-builder/ngmodule-src/__main__ +0 -1
  195. package/src/generators/setup-ssr/files/v20+/application-builder/ngmodule-src/app/__rootModuleFileName__ +0 -12
  196. package/src/generators/setup-ssr/files/v20+/application-builder/ngmodule-src/app/app.routes.server.ts__tpl__ +0 -8
  197. package/src/generators/setup-ssr/files/v20+/application-builder/server/__serverFileName__ +0 -66
  198. package/src/generators/setup-ssr/files/v20+/application-builder/standalone-src/__main__ +0 -7
  199. package/src/generators/setup-ssr/files/v20+/application-builder/standalone-src/app/app.config.server.ts__tpl__ +0 -12
  200. package/src/generators/setup-ssr/files/v20+/application-builder/standalone-src/app/app.routes.server.ts__tpl__ +0 -8
  201. package/src/generators/setup-ssr/files/v20+/server-builder/ngmodule-src/__main__ +0 -1
  202. package/src/generators/setup-ssr/files/v20+/server-builder/ngmodule-src/app/__rootModuleFileName__ +0 -14
  203. package/src/generators/setup-ssr/files/v20+/server-builder/root/tsconfig.server.json.template +0 -16
  204. package/src/generators/setup-ssr/files/v20+/server-builder/server/__serverFileName__ +0 -69
  205. package/src/generators/setup-ssr/files/v20+/server-builder/standalone-src/__main__ +0 -7
  206. package/src/generators/setup-ssr/files/v20+/server-builder/standalone-src/app/app.config.server.ts.template +0 -11
  207. package/src/generators/utils/app-components-info.d.ts +0 -9
  208. package/src/generators/utils/app-components-info.js +0 -39
  209. package/src/generators/utils/artifact-types.d.ts +0 -3
  210. package/src/generators/utils/artifact-types.js +0 -33
  211. package/src/migrations/update-21-2-0/migrate-provide-server-rendering-import.d.ts +0 -2
  212. package/src/migrations/update-21-2-0/migrate-provide-server-rendering-import.js +0 -110
  213. package/src/migrations/update-21-2-0/replace-provide-server-routing.d.ts +0 -2
  214. package/src/migrations/update-21-2-0/replace-provide-server-routing.js +0 -103
  215. package/src/migrations/update-21-2-0/set-generator-defaults-for-previous-style-guide.d.ts +0 -2
  216. package/src/migrations/update-21-2-0/set-generator-defaults-for-previous-style-guide.js +0 -47
  217. package/src/migrations/update-21-2-0/update-angular-cli.d.ts +0 -3
  218. package/src/migrations/update-21-2-0/update-angular-cli.js +0 -23
  219. /package/src/generators/application/files/{base → base-18+}/public/favicon.ico +0 -0
  220. /package/src/generators/application/files/{ng-module/src/app/app__componentFileSuffix__.__style__ → base-pre18/src/assets/.gitkeep__tpl__} +0 -0
  221. /package/src/generators/application/files/{standalone-components/src/app/app__componentFileSuffix__.__style__ → ng-module/src/app/app.component.__style__} +0 -0
  222. /package/src/generators/application/files/ng-module/src/app/{app__componentFileSuffix__.html__tpl__ → app.component.html__tpl__} +0 -0
  223. /package/src/generators/application/files/standalone-components/src/app/{app__componentFileSuffix__.html__tpl__ → app.component.html__tpl__} +0 -0
  224. /package/src/generators/component/files/{__fileName____ngext__.html__tpl__ → __fileName__.html__tpl__} +0 -0
  225. /package/src/generators/library/files/ng-module/src/lib/{__libFileName____moduleTypeSeparator__module.ts__tpl__ → __libFileName__.module.ts__tpl__} +0 -0
  226. /package/src/generators/library-secondary-entry-point/files/src/lib/{__fileName____moduleTypeSeparator__module.ts__tmpl__ → __fileName__.module.ts__tmpl__} +0 -0
  227. /package/src/generators/setup-ssr/files/{v19 → v19+}/application-builder/ngmodule-src/__main__ +0 -0
  228. /package/src/generators/setup-ssr/files/{v19 → v19+}/application-builder/ngmodule-src/app/__rootModuleFileName__ +0 -0
  229. /package/src/generators/setup-ssr/files/{v19 → v19+}/application-builder/ngmodule-src/app/app.routes.server.ts__tpl__ +0 -0
  230. /package/src/generators/setup-ssr/files/{v19 → v19+}/application-builder/server/__serverFileName__ +0 -0
  231. /package/src/generators/setup-ssr/files/{v19 → v19+}/application-builder/standalone-src/__main__ +0 -0
  232. /package/src/generators/setup-ssr/files/{v19 → v19+}/application-builder/standalone-src/app/app.config.server.ts__tpl__ +0 -0
  233. /package/src/generators/setup-ssr/files/{v19 → v19+}/application-builder/standalone-src/app/app.routes.server.ts__tpl__ +0 -0
  234. /package/src/generators/setup-ssr/files/{v19 → v19+}/application-builder-common-engine/server/__serverFileName__ +0 -0
  235. /package/src/generators/setup-ssr/files/{v19 → v19+}/server-builder/ngmodule-src/__main__ +0 -0
  236. /package/src/generators/setup-ssr/files/{v19 → v19+}/server-builder/ngmodule-src/app/__rootModuleFileName__ +0 -0
  237. /package/src/generators/setup-ssr/files/{v19 → v19+}/server-builder/root/tsconfig.server.json.template +0 -0
  238. /package/src/generators/setup-ssr/files/{v19 → v19+}/server-builder/server/__serverFileName__ +0 -0
  239. /package/src/generators/setup-ssr/files/{v19 → v19+}/server-builder/standalone-src/__main__ +0 -0
  240. /package/src/generators/setup-ssr/files/{v19 → v19+}/server-builder/standalone-src/app/app.config.server.ts.template +0 -0
@@ -1,6 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.remote = remote;
4
+ const tslib_1 = require("tslib");
4
5
  const devkit_1 = require("@nx/devkit");
5
6
  const project_name_and_root_utils_1 = require("@nx/devkit/src/generators/project-name-and-root-utils");
6
7
  const ts_solution_setup_1 = require("@nx/js/src/utils/typescript/ts-solution-setup");
@@ -10,8 +11,14 @@ const application_1 = require("../application/application");
10
11
  const setup_mf_1 = require("../setup-mf/setup-mf");
11
12
  const add_mf_env_to_inputs_1 = require("../utils/add-mf-env-to-inputs");
12
13
  const lib_1 = require("./lib");
14
+ const assert_mf_utils_1 = require("../utils/assert-mf-utils");
15
+ const convert_to_rspack_1 = tslib_1.__importDefault(require("../convert-to-rspack/convert-to-rspack"));
13
16
  async function remote(tree, schema) {
14
17
  (0, ts_solution_setup_1.assertNotUsingTsSolutionSetup)(tree, 'angular', 'remote');
18
+ // TODO: Replace with Rspack when confidence is high enough
19
+ schema.bundler ??= 'webpack';
20
+ const isRspack = schema.bundler === 'rspack';
21
+ (0, assert_mf_utils_1.assertRspackIsCSR)(schema.bundler, schema.ssr ?? false, schema.serverRouting ?? false);
15
22
  const { typescriptConfiguration = true, ...options } = schema;
16
23
  options.standalone = options.standalone ?? true;
17
24
  const projects = (0, devkit_1.getProjects)(tree);
@@ -75,6 +82,22 @@ async function remote(tree, schema) {
75
82
  installTasks.push(ssrInstallTask);
76
83
  }
77
84
  (0, add_mf_env_to_inputs_1.addMfEnvToTargetDefaultInputs)(tree);
85
+ if (isRspack) {
86
+ await (0, convert_to_rspack_1.default)(tree, {
87
+ project: remoteProjectName,
88
+ skipInstall: options.skipPackageJson,
89
+ skipFormat: true,
90
+ });
91
+ }
92
+ const project = (0, devkit_1.readProjectConfiguration)(tree, remoteProjectName);
93
+ project.targets.serve ??= {};
94
+ project.targets.serve.options ??= {};
95
+ if (options.host) {
96
+ project.targets.serve.dependsOn ??= [];
97
+ project.targets.serve.dependsOn.push(`${options.host}:serve`);
98
+ }
99
+ project.targets.serve.options.port = port;
100
+ (0, devkit_1.updateProjectConfiguration)(tree, remoteProjectName, project);
78
101
  if (!options.skipFormat) {
79
102
  await (0, devkit_1.formatFiles)(tree);
80
103
  }
@@ -5,6 +5,7 @@ import type { Styles } from '../utils/types';
5
5
  export interface Schema {
6
6
  directory: string;
7
7
  name?: string;
8
+ bundler?: 'webpack' | 'rspack';
8
9
  host?: string;
9
10
  port?: number;
10
11
  setParserOptionsProject?: boolean;
@@ -42,6 +42,12 @@
42
42
  "type": "number",
43
43
  "description": "The port on which this app should be served."
44
44
  },
45
+ "bundler": {
46
+ "type": "string",
47
+ "description": "The bundler to use for the remote application.",
48
+ "default": "webpack",
49
+ "enum": ["webpack", "rspack"]
50
+ },
45
51
  "style": {
46
52
  "description": "The file extension to be used for style files.",
47
53
  "type": "string",
@@ -165,7 +171,7 @@
165
171
  "default": false
166
172
  },
167
173
  "serverRouting": {
168
- "description": "Creates a server application using the Server Routing and App Engine APIs for application using the `application` builder (Developer Preview). _Note: this is only supported in Angular versions 19.x.x_. From Angular 20 onwards, SSR will always enable server routing when using the `application` builder.",
174
+ "description": "Creates a server application using the Server Routing and App Engine APIs (Developer Preview). _Note: this is only supported in Angular versions >= 19.0.0_.",
169
175
  "type": "boolean"
170
176
  },
171
177
  "typescriptConfiguration": {
@@ -1,6 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.convertComponentToScam = convertComponentToScam;
4
+ const devkit_1 = require("@nx/devkit");
4
5
  const js_1 = require("@nx/js");
5
6
  const ensure_typescript_1 = require("@nx/js/src/utils/typescript/ensure-typescript");
6
7
  let tsModule;
@@ -21,7 +22,8 @@ function convertComponentToScam(tree, options) {
21
22
  tree.write(options.filePath, updatedComponentSource);
22
23
  return;
23
24
  }
24
- tree.write(options.modulePath, getModuleFileContent(options.symbolName, options.fileName));
25
+ const moduleFilePath = (0, devkit_1.joinPathFragments)(options.directory, `${options.name}.module.ts`);
26
+ tree.write(moduleFilePath, getModuleFileContent(options.symbolName, options.fileName));
25
27
  }
26
28
  function getModuleFileContent(componentClassName, componentFileName) {
27
29
  return `import { NgModule } from '@angular/core';
@@ -3,27 +3,20 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.normalizeOptions = normalizeOptions;
4
4
  const devkit_1 = require("@nx/devkit");
5
5
  const artifact_name_and_directory_utils_1 = require("@nx/devkit/src/generators/artifact-name-and-directory-utils");
6
- const artifact_types_1 = require("../../utils/artifact-types");
7
6
  const validations_1 = require("../../utils/validations");
8
- const version_utils_1 = require("../../utils/version-utils");
9
7
  async function normalizeOptions(tree, options) {
10
- const { major: angularMajorVersion } = (0, version_utils_1.getInstalledAngularVersionInfo)(tree);
11
- if (angularMajorVersion < 20) {
12
- options.type ??= 'component';
13
- }
8
+ options.type ??= 'component';
14
9
  const { artifactName: name, directory, fileName, filePath, project: projectName, } = await (0, artifact_name_and_directory_utils_1.determineArtifactNameAndDirectoryOptions)(tree, {
15
10
  name: options.name,
16
11
  path: options.path,
17
- suffix: options.type,
12
+ suffix: options.type ?? 'component',
18
13
  allowedFileExtensions: ['ts'],
19
14
  fileExtension: 'ts',
20
15
  });
21
16
  const { className } = (0, devkit_1.names)(name);
22
- const suffixClassName = options.type ? (0, devkit_1.names)(options.type).className : '';
17
+ const { className: suffixClassName } = (0, devkit_1.names)(options.type);
23
18
  const symbolName = `${className}${suffixClassName}`;
24
19
  (0, validations_1.validateClassName)(symbolName);
25
- const moduleTypeSeparator = (0, artifact_types_1.getModuleTypeSeparator)(tree);
26
- const modulePath = (0, devkit_1.joinPathFragments)(directory, `${name}${moduleTypeSeparator}module.ts`);
27
20
  return {
28
21
  ...options,
29
22
  export: options.export ?? true,
@@ -34,6 +27,5 @@ async function normalizeOptions(tree, options) {
34
27
  name,
35
28
  symbolName,
36
29
  projectName,
37
- modulePath,
38
30
  };
39
31
  }
@@ -26,5 +26,4 @@ export interface NormalizedSchema extends Schema {
26
26
  symbolName: string;
27
27
  export: boolean;
28
28
  inlineScam: boolean;
29
- modulePath: string;
30
29
  }
@@ -94,7 +94,8 @@
94
94
  },
95
95
  "type": {
96
96
  "type": "string",
97
- "description": "Append a custom type to the component's filename. It defaults to 'component' for Angular versions below v20. For Angular v20 and above, no type is appended unless specified."
97
+ "description": "Adds a developer-defined type to the filename, in the format `name.type.ts`.",
98
+ "default": "component"
98
99
  },
99
100
  "prefix": {
100
101
  "type": "string",
@@ -1,6 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.convertDirectiveToScam = convertDirectiveToScam;
4
+ const devkit_1 = require("@nx/devkit");
4
5
  const js_1 = require("@nx/js");
5
6
  const ensure_typescript_1 = require("@nx/js/src/utils/typescript/ensure-typescript");
6
7
  let tsModule;
@@ -21,7 +22,8 @@ function convertDirectiveToScam(tree, options) {
21
22
  tree.write(options.filePath, updatedDirectiveSource);
22
23
  return;
23
24
  }
24
- tree.write(options.modulePath, getModuleFileContent(options.symbolName, options.fileName));
25
+ const scamFilePath = (0, devkit_1.joinPathFragments)(options.directory, `${options.name}.module.ts`);
26
+ tree.write(scamFilePath, getModuleFileContent(options.symbolName, options.fileName));
25
27
  }
26
28
  function getModuleFileContent(directiveClassName, directiveFileName) {
27
29
  return `import { NgModule } from '@angular/core';
@@ -3,27 +3,19 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.normalizeOptions = normalizeOptions;
4
4
  const devkit_1 = require("@nx/devkit");
5
5
  const artifact_name_and_directory_utils_1 = require("@nx/devkit/src/generators/artifact-name-and-directory-utils");
6
- const artifact_types_1 = require("../../utils/artifact-types");
7
6
  const validations_1 = require("../../utils/validations");
8
- const version_utils_1 = require("../../utils/version-utils");
9
7
  async function normalizeOptions(tree, options) {
10
- const { major: angularMajorVersion } = (0, version_utils_1.getInstalledAngularVersionInfo)(tree);
11
- if (angularMajorVersion < 20) {
12
- options.type ??= 'directive';
13
- }
14
8
  const { artifactName: name, directory, fileName, filePath, project: projectName, } = await (0, artifact_name_and_directory_utils_1.determineArtifactNameAndDirectoryOptions)(tree, {
15
9
  name: options.name,
16
10
  path: options.path,
17
- suffix: options.type,
11
+ suffix: 'directive',
18
12
  allowedFileExtensions: ['ts'],
19
13
  fileExtension: 'ts',
20
14
  });
21
15
  const { className } = (0, devkit_1.names)(name);
22
- const suffixClassName = options.type ? (0, devkit_1.names)(options.type).className : '';
16
+ const { className: suffixClassName } = (0, devkit_1.names)('directive');
23
17
  const symbolName = `${className}${suffixClassName}`;
24
18
  (0, validations_1.validateClassName)(symbolName);
25
- const moduleTypeSeparator = (0, artifact_types_1.getModuleTypeSeparator)(tree);
26
- const modulePath = (0, devkit_1.joinPathFragments)(directory, `${name}${moduleTypeSeparator}module.ts`);
27
19
  return {
28
20
  ...options,
29
21
  export: options.export ?? true,
@@ -34,6 +26,5 @@ async function normalizeOptions(tree, options) {
34
26
  name,
35
27
  symbolName,
36
28
  projectName,
37
- modulePath,
38
29
  };
39
30
  }
@@ -6,7 +6,6 @@ export interface Schema {
6
6
  prefix?: string;
7
7
  selector?: string;
8
8
  export?: boolean;
9
- type?: string;
10
9
  skipFormat?: boolean;
11
10
  }
12
11
 
@@ -19,5 +18,4 @@ export interface NormalizedSchema extends Schema {
19
18
  inlineScam: boolean;
20
19
  symbolName: string;
21
20
  projectName: string;
22
- modulePath: string;
23
21
  }
@@ -10,15 +10,11 @@
10
10
  "command": "nx g @nx/angular:scam-directive mylib/src/lib/foo.directive.ts"
11
11
  },
12
12
  {
13
- "description": "Generate a directive without providing the file extension. It results in the directive `Foo` at `mylib/src/lib/foo.ts`",
13
+ "description": "Generate a directive without providing the file extension. It results in the directive `FooDirective` at `mylib/src/lib/foo.directive.ts`",
14
14
  "command": "nx g @nx/angular:scam-directive mylib/src/lib/foo"
15
15
  },
16
16
  {
17
- "description": "Generate a directive with a given type/suffix. It results in the directive `FooDirective` at `mylib/src/lib/foo.directive.ts`",
18
- "command": "nx g @nx/angular:scam-directive mylib/src/lib/foo --type=directive"
19
- },
20
- {
21
- "description": "Generate a directive with the exported symbol different from the file name. It results in the directive `Custom` at `mylib/src/lib/foo.ts`",
17
+ "description": "Generate a directive with the exported symbol different from the file name. It results in the directive `CustomDirective` at `mylib/src/lib/foo.directive.ts`",
22
18
  "command": "nx g @nx/angular:scam-directive mylib/src/lib/foo --name=custom"
23
19
  }
24
20
  ],
@@ -74,10 +70,6 @@
74
70
  "default": true,
75
71
  "x-priority": "important"
76
72
  },
77
- "type": {
78
- "type": "string",
79
- "description": "Append a custom type to the directive's filename. It defaults to 'directive' for Angular versions below v20. For Angular v20 and above, no type is appended unless specified."
80
- },
81
73
  "skipFormat": {
82
74
  "description": "Skip formatting files.",
83
75
  "type": "boolean",
@@ -1,6 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.convertPipeToScam = convertPipeToScam;
4
+ const devkit_1 = require("@nx/devkit");
4
5
  const js_1 = require("@nx/js");
5
6
  const ensure_typescript_1 = require("@nx/js/src/utils/typescript/ensure-typescript");
6
7
  let tsModule;
@@ -21,7 +22,8 @@ function convertPipeToScam(tree, options) {
21
22
  tree.write(options.filePath, updatedPipeSource);
22
23
  return;
23
24
  }
24
- tree.write(options.modulePath, getModuleFileContent(options.symbolName, options.fileName));
25
+ const scamFilePath = (0, devkit_1.joinPathFragments)(options.directory, `${options.name}.module.ts`);
26
+ tree.write(scamFilePath, getModuleFileContent(options.symbolName, options.fileName));
25
27
  }
26
28
  function getModuleFileContent(pipeClassName, pipeFileName) {
27
29
  return `import { NgModule } from '@angular/core';
@@ -3,17 +3,12 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.normalizeOptions = normalizeOptions;
4
4
  const devkit_1 = require("@nx/devkit");
5
5
  const artifact_name_and_directory_utils_1 = require("@nx/devkit/src/generators/artifact-name-and-directory-utils");
6
- const artifact_types_1 = require("../../utils/artifact-types");
7
6
  const validations_1 = require("../../utils/validations");
8
- const version_utils_1 = require("../../utils/version-utils");
9
7
  async function normalizeOptions(tree, options) {
10
- const { major: angularMajorVersion } = (0, version_utils_1.getInstalledAngularVersionInfo)(tree);
11
- options.typeSeparator ??= angularMajorVersion < 20 ? '.' : '-';
12
8
  const { artifactName: name, directory, fileName, filePath, project: projectName, } = await (0, artifact_name_and_directory_utils_1.determineArtifactNameAndDirectoryOptions)(tree, {
13
9
  name: options.name,
14
10
  path: options.path,
15
11
  suffix: 'pipe',
16
- suffixSeparator: options.typeSeparator,
17
12
  allowedFileExtensions: ['ts'],
18
13
  fileExtension: 'ts',
19
14
  });
@@ -21,8 +16,6 @@ async function normalizeOptions(tree, options) {
21
16
  const { className: suffixClassName } = (0, devkit_1.names)('pipe');
22
17
  const symbolName = `${className}${suffixClassName}`;
23
18
  (0, validations_1.validateClassName)(symbolName);
24
- const moduleTypeSeparator = (0, artifact_types_1.getModuleTypeSeparator)(tree);
25
- const modulePath = (0, devkit_1.joinPathFragments)(directory, `${name}${moduleTypeSeparator}module.ts`);
26
19
  return {
27
20
  ...options,
28
21
  export: options.export ?? true,
@@ -33,6 +26,5 @@ async function normalizeOptions(tree, options) {
33
26
  name,
34
27
  symbolName,
35
28
  projectName,
36
- modulePath,
37
29
  };
38
30
  }
@@ -4,7 +4,6 @@ export interface Schema {
4
4
  skipTests?: boolean;
5
5
  inlineScam?: boolean;
6
6
  export?: boolean;
7
- typeSeparator?: string;
8
7
  skipFormat?: boolean;
9
8
  }
10
9
 
@@ -17,5 +16,4 @@ export interface NormalizedSchema extends Schema {
17
16
  inlineScam: boolean;
18
17
  projectName: string;
19
18
  symbolName: string;
20
- modulePath: string;
21
19
  }
@@ -51,11 +51,6 @@
51
51
  "default": true,
52
52
  "x-priority": "important"
53
53
  },
54
- "typeSeparator": {
55
- "type": "string",
56
- "enum": ["-", "."],
57
- "description": "The separator character to use before the type within the generated file's name. For example, if you set the option to `.`, the file will be named `example.pipe.ts`. It defaults to '-' for Angular v20+. For versions below v20, it defaults to '.'."
58
- },
59
54
  "skipFormat": {
60
55
  "description": "Skip formatting files.",
61
56
  "type": "boolean",
@@ -7,4 +7,4 @@ import { Component } from '@angular/core';
7
7
  selector: '<%= appName %>-entry',
8
8
  template: `<nx-welcome></nx-welcome>`<% } %>
9
9
  })
10
- export class RemoteEntry<%= componentType %> {}
10
+ export class RemoteEntryComponent {}
@@ -2,17 +2,17 @@ import { NgModule } from '@angular/core';
2
2
  import { CommonModule } from '@angular/common';<% if(routing) { %>
3
3
  import { RouterModule } from '@angular/router';<% } %>
4
4
 
5
- import { RemoteEntry<%= componentType %> } from './entry<%= componentFileSuffix %>';
6
- import { <%= nxWelcomeSymbolName %> } from './<%= nxWelcomeFileName %>';<% if(routing) { %>
5
+ import { RemoteEntryComponent } from './entry.component';
6
+ import { NxWelcomeComponent } from './nx-welcome.component';<% if(routing) { %>
7
7
  import { remoteRoutes } from './entry.routes';<% } %>
8
8
 
9
9
  @NgModule({
10
- declarations: [RemoteEntry<%= componentType %>, <%= nxWelcomeSymbolName %>],
10
+ declarations: [RemoteEntryComponent, NxWelcomeComponent],
11
11
  imports: [
12
12
  CommonModule,<% if(routing) { %>
13
13
  RouterModule.forChild(remoteRoutes),<% } %>
14
14
  ],
15
15
  providers: [],<% if(!routing) { %>
16
- exports: [RemoteEntry<%= componentType %>],<% } %>
16
+ exports: [RemoteEntryComponent],<% } %>
17
17
  })
18
18
  export class RemoteEntryModule {}
@@ -1,4 +1,4 @@
1
1
  import { Route } from '@angular/router';
2
- import { RemoteEntry<%= componentType %> } from './entry<%= componentFileSuffix %>';
2
+ import { RemoteEntryComponent } from './entry.component';
3
3
 
4
- export const remoteRoutes: Route[] = [{ path: '', component: RemoteEntry<%= componentType %> }];
4
+ export const remoteRoutes: Route[] = [{ path: '', component: RemoteEntryComponent }];
@@ -0,0 +1,47 @@
1
+ import { fakeAsync, TestBed, tick } from '@angular/core/testing';
2
+ import { AppComponent } from './app.component';
3
+ import { NxWelcomeComponent } from './nx-welcome.component';<% if(useRouterTestingModule) { %>
4
+ import { RouterTestingModule } from '@angular/router/testing';<% } %>
5
+ import { Router<% if(!useRouterTestingModule) { %>, RouterModule<% } %> } from '@angular/router';
6
+
7
+ describe('AppComponent', () => {
8
+ beforeEach(async () => {
9
+ await TestBed.configureTestingModule({
10
+ imports: [<% if(useRouterTestingModule) { %>
11
+ RouterTestingModule.withRoutes([
12
+ { path: '', component: NxWelcomeComponent },
13
+ ]),<% } %><% if(!useRouterTestingModule) { %>
14
+ RouterModule.forRoot([
15
+ { path: '', component: NxWelcomeComponent },
16
+ ]),<% } %><% if (standalone) { %>
17
+ AppComponent,
18
+ NxWelcomeComponent,<% } %>
19
+ ],<% if (!standalone) { %>
20
+ declarations: [AppComponent, NxWelcomeComponent],<% } %>
21
+ }).compileComponents();
22
+ });
23
+
24
+ it('should create the app', () => {
25
+ const fixture = TestBed.createComponent(AppComponent);
26
+ const app = fixture.componentInstance;
27
+ expect(app).toBeTruthy();
28
+ });
29
+
30
+ it(`should have as title '<%= appName %>'`, () => {
31
+ const fixture = TestBed.createComponent(AppComponent);
32
+ const app = fixture.componentInstance;
33
+ expect(app.title).toEqual('<%= appName %>');
34
+ });
35
+
36
+ it('should render title', fakeAsync(() => {
37
+ const fixture = TestBed.createComponent(AppComponent);
38
+ const router = TestBed.inject(Router);
39
+ fixture.ngZone?.run(() => router.navigate(['']));
40
+ tick();
41
+ fixture.detectChanges();
42
+ const compiled = fixture.nativeElement as HTMLElement;
43
+ expect(compiled.querySelector('h1')?.textContent).toContain(
44
+ 'Welcome <%= appName %>'
45
+ );
46
+ }));
47
+ });
@@ -1,13 +1,13 @@
1
1
  import { Component } from '@angular/core';
2
2
  import { CommonModule } from '@angular/common';
3
- import { <%= nxWelcomeSymbolName %> } from './<%= nxWelcomeFileName %>';
3
+ import { NxWelcomeComponent } from './nx-welcome.component';
4
4
 
5
5
  @Component({<% if (setStandaloneTrue) { %>
6
6
  standalone: true,<% } %>
7
- imports: [CommonModule, <%= nxWelcomeSymbolName %>],<% if (prefix) { %>
7
+ imports: [CommonModule, NxWelcomeComponent],<% if (prefix) { %>
8
8
  selector: '<%= prefix %>-<%= appName %>-entry',
9
9
  template: `<<%= prefix %>-nx-welcome></<%= prefix %>-nx-welcome>`<% } else { %>
10
10
  selector: '<%= appName %>-entry',
11
11
  template: `<nx-welcome></nx-welcome>`<% } %>
12
12
  })
13
- export class RemoteEntry<%= componentType %> {}
13
+ export class RemoteEntryComponent {}
@@ -1,4 +1,4 @@
1
1
  import { Route } from '@angular/router';
2
- import { RemoteEntry<%= componentType %> } from './entry<%= componentFileSuffix %>';
2
+ import { RemoteEntryComponent } from './entry.component';
3
3
 
4
- export const remoteRoutes: Route[] = [{ path: '', component: RemoteEntry<%= componentType %> }];
4
+ export const remoteRoutes: Route[] = [{ path: '', component: RemoteEntryComponent }];
@@ -17,7 +17,7 @@ const config: ModuleFederationConfig = {
17
17
  remotes: [<% if (federationType === 'static') { remotes.forEach(function(remote) { %>'<%= remote.remoteName %>',<% }); } %>]<% } %><% if(type === 'remote') { %>
18
18
  exposes: {<% if(standalone) { %>
19
19
  './Routes': '<%= projectRoot %>/src/app/remote-entry/entry.routes.ts',<% } else { %>
20
- './Module': '<%= projectRoot %>/src/app/remote-entry/<%= entryModuleFileName %>.ts',<% } %>
20
+ './Module': '<%= projectRoot %>/src/app/remote-entry/entry.module.ts',<% } %>
21
21
  },<% } %>
22
22
  };
23
23
 
@@ -5,7 +5,7 @@
5
5
  },
6
6
  "include": [
7
7
  "src/main.ts",
8
- <% if(type === "remote") { %> "src/remote-entry/<% if(standalone) { %>entry.routes.ts",<% } else { %><%= entryModuleFileName %>.ts",<% } } %>
8
+ <% if(type === "remote") { %> "src/remote-entry/<% if(standalone) { %>entry.routes.ts", <% } else { %> entry.module.ts", <% } } %>
9
9
  "webpack.config.ts",
10
10
  "webpack.prod.config.ts"
11
11
  ]
@@ -18,6 +18,6 @@ module.exports = {
18
18
  remotes: [<% if (federationType === 'static') { remotes.forEach(function(remote) { %>'<%= remote.remoteName %>',<% }); } %>]<% } %><% if(type === 'remote') { %>
19
19
  exposes: {<% if(standalone) { %>
20
20
  './Routes': '<%= projectRoot %>/src/app/remote-entry/entry.routes.ts',<% } else { %>
21
- './Module': '<%= projectRoot %>/src/app/remote-entry/<%= entryModuleFileName %>.ts',<% } %>
21
+ './Module': '<%= projectRoot %>/src/app/remote-entry/entry.module.ts',<% } %>
22
22
  },<% } %>
23
23
  };
@@ -1,3 +1,3 @@
1
1
  import type { Tree } from '@nx/devkit';
2
- import type { NormalizedOptions } from '../schema';
3
- export declare function addRemoteEntry(tree: Tree, options: NormalizedOptions, appRoot: string): void;
2
+ import type { Schema } from '../schema';
3
+ export declare function addRemoteEntry(tree: Tree, { appName, routing, prefix, standalone }: Schema, appRoot: string): void;
@@ -4,9 +4,8 @@ exports.addRemoteEntry = addRemoteEntry;
4
4
  const devkit_1 = require("@nx/devkit");
5
5
  const route_utils_1 = require("../../../utils/nx-devkit/route-utils");
6
6
  const version_utils_1 = require("../../utils/version-utils");
7
- function addRemoteEntry(tree, options, appRoot) {
7
+ function addRemoteEntry(tree, { appName, routing, prefix, standalone }, appRoot) {
8
8
  const { major: angularMajorVersion } = (0, version_utils_1.getInstalledAngularVersionInfo)(tree);
9
- const { appName, routing, prefix, standalone, componentType, componentFileSuffix, nxWelcomeComponentInfo, entryModuleFileName, } = options;
10
9
  (0, devkit_1.generateFiles)(tree, standalone
11
10
  ? (0, devkit_1.joinPathFragments)(__dirname, '../files/standalone-entry-component-files')
12
11
  : (0, devkit_1.joinPathFragments)(__dirname, '../files/entry-module-files'), `${appRoot}/src/app/remote-entry`, {
@@ -14,19 +13,14 @@ function addRemoteEntry(tree, options, appRoot) {
14
13
  appName,
15
14
  routing,
16
15
  prefix,
17
- // Angular v19 or higher defaults to true, while lower versions default to false
16
+ // Angular v19 or higher defaults to true, while v18 or lower defaults to false
18
17
  setStandaloneFalse: angularMajorVersion >= 19,
19
18
  setStandaloneTrue: angularMajorVersion < 19,
20
- componentType,
21
- componentFileSuffix,
22
- entryModuleFileName,
23
- nxWelcomeFileName: nxWelcomeComponentInfo.extensionlessFileName,
24
- nxWelcomeSymbolName: nxWelcomeComponentInfo.symbolName,
25
19
  });
26
20
  if (standalone && routing) {
27
21
  (0, route_utils_1.addRoute)(tree, (0, devkit_1.joinPathFragments)(appRoot, 'src/app/app.routes.ts'), `{path: '', loadChildren: () => import('./remote-entry/entry.routes').then(m => m.remoteRoutes)}`);
28
22
  }
29
23
  else if (routing) {
30
- (0, route_utils_1.addRoute)(tree, (0, devkit_1.joinPathFragments)(appRoot, 'src/app/app.routes.ts'), `{ path: '', loadChildren: () => import('./remote-entry/${entryModuleFileName}').then(m => m.RemoteEntryModule) }`);
24
+ (0, route_utils_1.addRoute)(tree, (0, devkit_1.joinPathFragments)(appRoot, 'src/app/app.routes.ts'), `{ path: '', loadChildren: () => import('./remote-entry/entry.module').then(m => m.RemoteEntryModule) }`);
31
25
  }
32
26
  }
@@ -105,17 +105,7 @@ function addLazyLoadedRouteToHostAppModule(tree, options, hostFederationType) {
105
105
  path: '${options.appName}',
106
106
  loadChildren: () => ${routeToAdd}.then(m => m!.${exportedRemote})
107
107
  }`);
108
- let pathToAppComponentTemplate = (0, devkit_1.joinPathFragments)(hostAppConfig.sourceRoot, 'app/app.component.html');
109
- const candidatePaths = [
110
- pathToAppComponentTemplate,
111
- (0, devkit_1.joinPathFragments)(hostAppConfig.sourceRoot, 'app/app.html'),
112
- ];
113
- for (const path of candidatePaths) {
114
- if (tree.exists(path)) {
115
- pathToAppComponentTemplate = path;
116
- break;
117
- }
118
- }
108
+ const pathToAppComponentTemplate = (0, devkit_1.joinPathFragments)(hostAppConfig.sourceRoot, 'app/app.component.html');
119
109
  const appComponent = tree.read(pathToAppComponentTemplate, 'utf-8');
120
110
  if (appComponent.includes(`<ul class="remote-menu">`) &&
121
111
  appComponent.includes('</ul>')) {
@@ -1,3 +1,3 @@
1
1
  import { type Tree } from '@nx/devkit';
2
- import type { NormalizedOptions } from '../schema';
3
- export declare function fixBootstrap(tree: Tree, appRoot: string, options: NormalizedOptions): void;
2
+ import type { Schema } from '../schema';
3
+ export declare function fixBootstrap(tree: Tree, appRoot: string, options: Schema): void;
@@ -6,7 +6,7 @@ function fixBootstrap(tree, appRoot, options) {
6
6
  const mainFilePath = (0, devkit_1.joinPathFragments)(appRoot, 'src/main.ts');
7
7
  const bootstrapCode = tree.read(mainFilePath, 'utf-8');
8
8
  if (options.standalone && options.mfType === 'remote') {
9
- tree.write(`${appRoot}/src/bootstrap.ts`, standaloneBootstrapCode(options.componentType, options.componentFileSuffix));
9
+ tree.write(`${appRoot}/src/bootstrap.ts`, standaloneBootstrapCode());
10
10
  }
11
11
  else {
12
12
  tree.write((0, devkit_1.joinPathFragments)(appRoot, 'src/bootstrap.ts'), bootstrapCode);
@@ -30,11 +30,11 @@ fetch('${manifestPath}')
30
30
  tree.write(mainFilePath, fetchMFManifestCode);
31
31
  }
32
32
  }
33
- const standaloneBootstrapCode = (componentType, componentFileSuffix) => `import { bootstrapApplication } from '@angular/platform-browser';
33
+ const standaloneBootstrapCode = () => `import { bootstrapApplication } from '@angular/platform-browser';
34
34
  import { appConfig } from './app/app.config';
35
- import { RemoteEntry${componentType} } from './app/remote-entry/entry${componentFileSuffix}';
35
+ import { RemoteEntryComponent } from './app/remote-entry/entry.component';
36
36
 
37
- bootstrapApplication(RemoteEntry${componentType}, appConfig).catch((err) =>
37
+ bootstrapApplication(RemoteEntryComponent, appConfig).catch((err) =>
38
38
  console.error(err)
39
39
  );
40
40
  `;
@@ -1,6 +1,6 @@
1
1
  import type { Tree } from '@nx/devkit';
2
- import type { NormalizedOptions } from '../schema';
3
- export declare function generateWebpackConfig(tree: Tree, options: NormalizedOptions, appRoot: string, remotesWithPorts: {
2
+ import type { Schema } from '../schema';
3
+ export declare function generateWebpackConfig(tree: Tree, options: Schema, appRoot: string, remotesWithPorts: {
4
4
  remoteName: string;
5
5
  port: number;
6
6
  }[]): void;
@@ -23,7 +23,6 @@ function generateWebpackConfig(tree, options, appRoot, remotesWithPorts) {
23
23
  remotes: remotesWithPorts ?? [],
24
24
  projectRoot: appRoot,
25
25
  standalone: options.standalone,
26
- entryModuleFileName: options.entryModuleFileName,
27
26
  });
28
27
  if (!options.setParserOptionsProject) {
29
28
  tree.delete((0, devkit_1.joinPathFragments)(appRoot, 'tsconfig.lint.json'));
@@ -1,3 +1,3 @@
1
- import { type Tree } from '@nx/devkit';
1
+ import type { Tree } from '@nx/devkit';
2
2
  import type { NormalizedOptions, Schema } from '../schema';
3
3
  export declare function normalizeOptions(tree: Tree, options: Schema): NormalizedOptions;
@@ -1,26 +1,13 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.normalizeOptions = normalizeOptions;
4
- const devkit_1 = require("@nx/devkit");
5
- const app_components_info_1 = require("../../utils/app-components-info");
6
- const artifact_types_1 = require("../../utils/artifact-types");
7
4
  const project_1 = require("../../utils/project");
8
5
  function normalizeOptions(tree, options) {
9
- const componentType = (0, artifact_types_1.getComponentType)(tree);
10
- const componentFileSuffix = componentType ? `.${componentType}` : '';
11
- const moduleTypeSeparator = (0, artifact_types_1.getModuleTypeSeparator)(tree);
12
- const entryModuleFileName = `entry${moduleTypeSeparator}module`;
13
- const project = (0, devkit_1.readProjectConfiguration)(tree, options.appName);
14
6
  return {
15
7
  ...options,
16
8
  typescriptConfiguration: options.typescriptConfiguration ?? true,
17
9
  federationType: options.federationType ?? 'static',
18
10
  prefix: options.prefix ?? (0, project_1.getProjectPrefix)(tree, options.appName) ?? 'app',
19
11
  standalone: options.standalone ?? true,
20
- componentType: componentType ? (0, devkit_1.names)(componentType).className : '',
21
- componentFileSuffix,
22
- entryModuleFileName,
23
- appComponentInfo: (0, app_components_info_1.getAppComponentInfo)(tree, componentFileSuffix, project),
24
- nxWelcomeComponentInfo: (0, app_components_info_1.getNxWelcomeComponentInfo)(tree, componentFileSuffix, project),
25
12
  };
26
13
  }