@nx/angular 17.0.3 → 17.0.4

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 (458) hide show
  1. package/LICENSE +1 -1
  2. package/README.md +9 -4
  3. package/esm2022/mf/mf.mjs +1 -1
  4. package/esm2022/src/runtime/nx/data-persistence.mjs +1 -1
  5. package/executors.d.ts +9 -2
  6. package/executors.js +7 -2
  7. package/executors.json +19 -9
  8. package/fesm2022/nx-angular-mf.mjs.map +1 -1
  9. package/fesm2022/nx-angular.mjs.map +1 -1
  10. package/generators.d.ts +1 -1
  11. package/generators.js +3 -1
  12. package/generators.json +7 -2
  13. package/migrations.json +451 -0
  14. package/ng-package.json +2 -2
  15. package/package.json +20 -26
  16. package/plugins/component-testing.d.ts +1 -26
  17. package/plugins/component-testing.js +15 -4
  18. package/src/builders/dev-server/dev-server.impl.d.ts +4 -0
  19. package/src/builders/dev-server/dev-server.impl.js +160 -0
  20. package/src/builders/{webpack-dev-server → dev-server}/lib/index.d.ts +1 -0
  21. package/src/builders/{webpack-dev-server → dev-server}/lib/index.js +1 -0
  22. package/src/builders/dev-server/lib/normalize-options.d.ts +2 -0
  23. package/src/builders/dev-server/lib/normalize-options.js +20 -0
  24. package/src/builders/dev-server/lib/validate-options.d.ts +2 -0
  25. package/src/builders/dev-server/lib/validate-options.js +22 -0
  26. package/src/builders/dev-server/schema.d.ts +39 -0
  27. package/src/builders/{webpack-dev-server → dev-server}/schema.json +42 -5
  28. package/src/builders/module-federation-dev-ssr/module-federation-dev-ssr.impl.d.ts +1 -1
  29. package/src/builders/module-federation-dev-ssr/module-federation-dev-ssr.impl.js +15 -9
  30. package/src/builders/utilities/module-federation.js +1 -1
  31. package/src/builders/webpack-browser/schema.d.ts +6 -2
  32. package/src/builders/webpack-browser/schema.json +15 -15
  33. package/src/builders/webpack-browser/webpack-browser.impl.js +8 -6
  34. package/src/builders/webpack-server/schema.d.ts +0 -1
  35. package/src/builders/webpack-server/schema.json +7 -20
  36. package/src/builders/webpack-server/validate-options.js +0 -7
  37. package/src/builders/webpack-server/webpack-server.impl.js +4 -9
  38. package/src/executors/application/application.impl.d.ts +3 -0
  39. package/src/executors/application/application.impl.js +37 -0
  40. package/src/executors/application/schema.d.ts +8 -0
  41. package/src/executors/application/schema.json +682 -0
  42. package/src/executors/application/utils/validate-options.d.ts +2 -0
  43. package/src/executors/application/utils/validate-options.js +52 -0
  44. package/src/executors/browser-esbuild/browser-esbuild.impl.d.ts +2 -3
  45. package/src/executors/browser-esbuild/browser-esbuild.impl.js +15 -8
  46. package/src/executors/browser-esbuild/schema.d.ts +3 -1
  47. package/src/executors/browser-esbuild/schema.json +38 -8
  48. package/src/executors/extract-i18n/extract-i18n.impl.d.ts +3 -0
  49. package/src/executors/extract-i18n/extract-i18n.impl.js +43 -0
  50. package/src/executors/extract-i18n/schema.d.ts +8 -0
  51. package/src/executors/extract-i18n/schema.json +45 -0
  52. package/src/executors/module-federation-dev-server/lib/build-static-remotes.d.ts +4 -0
  53. package/src/executors/module-federation-dev-server/lib/build-static-remotes.js +56 -0
  54. package/src/executors/module-federation-dev-server/lib/index.d.ts +5 -0
  55. package/src/executors/module-federation-dev-server/lib/index.js +8 -0
  56. package/src/executors/module-federation-dev-server/lib/normalize-options.d.ts +2 -0
  57. package/src/executors/module-federation-dev-server/lib/normalize-options.js +23 -0
  58. package/src/executors/module-federation-dev-server/lib/parse-static-remotes-config.d.ts +11 -0
  59. package/src/executors/module-federation-dev-server/lib/parse-static-remotes-config.js +18 -0
  60. package/src/executors/module-federation-dev-server/lib/start-dev-remotes.d.ts +9 -0
  61. package/src/executors/module-federation-dev-server/lib/start-dev-remotes.js +29 -0
  62. package/src/executors/module-federation-dev-server/lib/start-static-remotes-file-server.d.ts +9 -0
  63. package/src/executors/module-federation-dev-server/lib/start-static-remotes-file-server.js +46 -0
  64. package/src/executors/module-federation-dev-server/module-federation-dev-server.impl.d.ts +4 -0
  65. package/src/executors/module-federation-dev-server/module-federation-dev-server.impl.js +115 -0
  66. package/src/{builders → executors}/module-federation-dev-server/schema.d.ts +25 -7
  67. package/src/{builders → executors}/module-federation-dev-server/schema.json +31 -6
  68. package/src/executors/ng-packagr-lite/ng-packagr-adjustments/ng-packagr.d.ts +3 -0
  69. package/src/executors/ng-packagr-lite/ng-packagr-adjustments/ng-packagr.js +34 -0
  70. package/src/executors/ng-packagr-lite/ng-packagr-adjustments/{ng-package → pre-v17/ng-package}/entry-point/compile-ngc.transform.js +6 -4
  71. package/src/executors/ng-packagr-lite/ng-packagr-adjustments/{ng-package → pre-v17/ng-package}/entry-point/write-package.transform.js +25 -13
  72. package/src/executors/ng-packagr-lite/ng-packagr-adjustments/{ngc → pre-v17/ngc}/compile-source-files.d.ts +1 -2
  73. package/src/executors/ng-packagr-lite/ng-packagr-adjustments/{ngc → pre-v17/ngc}/compile-source-files.js +14 -9
  74. package/src/executors/ng-packagr-lite/ng-packagr-adjustments/{styles → pre-v17/styles}/stylesheet-processor.d.ts +5 -10
  75. package/src/executors/ng-packagr-lite/ng-packagr-adjustments/{styles → pre-v17/styles}/stylesheet-processor.js +39 -86
  76. package/src/executors/ng-packagr-lite/ng-packagr-adjustments/v17+/ng-package/entry-point/write-bundles.di.d.ts +2 -0
  77. package/src/executors/ng-packagr-lite/ng-packagr-adjustments/v17+/ng-package/entry-point/write-bundles.di.js +12 -0
  78. package/src/executors/ng-packagr-lite/ng-packagr-adjustments/v17+/ng-package/entry-point/write-bundles.transform.d.ts +8 -0
  79. package/src/executors/ng-packagr-lite/ng-packagr-adjustments/v17+/ng-package/entry-point/write-bundles.transform.js +12 -0
  80. package/src/executors/ng-packagr-lite/ng-packagr-adjustments/v17+/ng-package/entry-point/write-package.di.d.ts +8 -0
  81. package/src/executors/ng-packagr-lite/ng-packagr-adjustments/v17+/ng-package/entry-point/write-package.di.js +18 -0
  82. package/src/executors/ng-packagr-lite/ng-packagr-adjustments/v17+/ng-package/entry-point/write-package.transform.d.ts +8 -0
  83. package/src/executors/ng-packagr-lite/ng-packagr-adjustments/v17+/ng-package/entry-point/write-package.transform.js +285 -0
  84. package/src/executors/ng-packagr-lite/ng-packagr-lite.impl.js +5 -17
  85. package/src/executors/ng-packagr-lite/schema.json +1 -1
  86. package/src/executors/package/ng-packagr-adjustments/ng-package/entry-point/compile-ngc.transform.js +5 -3
  87. package/src/executors/package/ng-packagr-adjustments/ng-packagr.d.ts +3 -0
  88. package/src/executors/package/ng-packagr-adjustments/ng-packagr.js +28 -0
  89. package/src/executors/package/ng-packagr-adjustments/ngc/compile-source-files.d.ts +1 -1
  90. package/src/executors/package/ng-packagr-adjustments/ngc/compile-source-files.js +13 -6
  91. package/src/executors/package/ng-packagr-adjustments/styles/stylesheet-processor.d.ts +5 -10
  92. package/src/executors/package/ng-packagr-adjustments/styles/stylesheet-processor.js +39 -86
  93. package/src/executors/package/package.impl.d.ts +1 -1
  94. package/src/executors/package/package.impl.js +5 -15
  95. package/src/executors/package/schema.json +3 -3
  96. package/src/executors/utilities/buildable-libs.d.ts +6 -0
  97. package/src/executors/{browser-esbuild/lib → utilities}/buildable-libs.js +3 -4
  98. package/src/executors/utilities/esbuild-extensions.d.ts +10 -0
  99. package/src/executors/utilities/esbuild-extensions.js +50 -0
  100. package/src/executors/utilities/module-loader.d.ts +15 -0
  101. package/src/executors/utilities/module-loader.js +52 -0
  102. package/src/executors/utilities/ng-compiler-cli.d.ts +1 -0
  103. package/src/executors/utilities/ng-compiler-cli.js +8 -0
  104. package/src/executors/utilities/ng-packagr/stylesheet-processor.d.ts +49 -0
  105. package/src/executors/utilities/ng-packagr/stylesheet-processor.di.d.ts +2 -0
  106. package/src/executors/utilities/ng-packagr/stylesheet-processor.di.js +16 -0
  107. package/src/executors/utilities/ng-packagr/stylesheet-processor.js +209 -0
  108. package/src/executors/utilities/ng-packagr/tailwindcss.d.ts +7 -0
  109. package/src/executors/utilities/{tailwindcss.js → ng-packagr/tailwindcss.js} +5 -22
  110. package/src/executors/utilities/patch-builder-context.d.ts +3 -0
  111. package/src/executors/utilities/patch-builder-context.js +41 -0
  112. package/src/executors/utilities/typescript.js +1 -1
  113. package/src/generators/add-linting/add-linting.d.ts +1 -1
  114. package/src/generators/add-linting/add-linting.js +9 -15
  115. package/src/generators/add-linting/lib/add-angular-eslint-dependencies.d.ts +2 -2
  116. package/src/generators/add-linting/lib/add-angular-eslint-dependencies.js +9 -5
  117. package/src/generators/add-linting/lib/buildable-project.d.ts +2 -0
  118. package/src/generators/add-linting/lib/buildable-project.js +9 -0
  119. package/src/generators/add-linting/lib/create-eslint-configuration.d.ts +2 -2
  120. package/src/generators/add-linting/schema.json +1 -1
  121. package/src/generators/application/application.js +19 -17
  122. package/src/generators/application/files/base/tsconfig.app.json__tpl__ +1 -1
  123. package/src/generators/application/files/base/tsconfig.json__tpl__ +6 -2
  124. package/src/generators/application/files/ng-module/src/app/app.component.spec.ts__tpl__ +3 -1
  125. package/src/generators/application/files/ng-module/src/app/app.component.ts__tpl__ +4 -2
  126. package/src/generators/application/files/ng-module/src/app/app.module.ts__tpl__ +1 -1
  127. package/src/generators/application/files/ng-module/src/app/nx-welcome.component.ts__tpl__ +53 -14
  128. package/src/generators/application/files/ng-module/src/main.ts__tpl__ +2 -8
  129. package/src/generators/application/files/standalone-components/src/app/app.component.spec.ts__tpl__ +6 -4
  130. package/src/generators/application/files/standalone-components/src/app/app.component.ts__tpl__ +4 -2
  131. package/src/generators/application/files/standalone-components/src/app/app.config.ts__tpl__ +3 -3
  132. package/src/generators/application/files/standalone-components/src/app/nx-welcome.component.ts__tpl__ +53 -14
  133. package/src/generators/application/files/standalone-components/src/main.ts__tpl__ +4 -8
  134. package/src/generators/application/lib/add-e2e.js +22 -8
  135. package/src/generators/application/lib/add-unit-test-runner.js +5 -20
  136. package/src/generators/application/lib/create-files.js +14 -10
  137. package/src/generators/application/lib/create-project.d.ts +1 -1
  138. package/src/generators/application/lib/create-project.js +48 -38
  139. package/src/generators/application/lib/index.d.ts +1 -0
  140. package/src/generators/application/lib/index.js +1 -0
  141. package/src/generators/application/lib/normalize-options.d.ts +1 -1
  142. package/src/generators/application/lib/normalize-options.js +28 -6
  143. package/src/generators/application/lib/normalized-schema.d.ts +5 -0
  144. package/src/generators/application/lib/set-generator-defaults.d.ts +3 -0
  145. package/src/generators/application/lib/set-generator-defaults.js +17 -0
  146. package/src/generators/application/lib/update-editor-tsconfig.d.ts +1 -1
  147. package/src/generators/application/lib/update-editor-tsconfig.js +11 -14
  148. package/src/generators/application/schema.d.ts +1 -0
  149. package/src/generators/application/schema.json +18 -10
  150. package/src/generators/component/component.js +4 -1
  151. package/src/generators/component/files/__fileName__.spec.ts__tpl__ +2 -3
  152. package/src/generators/component/files/__fileName__.ts__tpl__ +8 -2
  153. package/src/generators/component/lib/component.js +1 -1
  154. package/src/generators/component/lib/index.d.ts +1 -1
  155. package/src/generators/component/lib/index.js +1 -1
  156. package/src/generators/component/lib/normalize-options.js +3 -2
  157. package/src/generators/component/lib/set-generator-defaults.d.ts +3 -0
  158. package/src/generators/component/lib/set-generator-defaults.js +14 -0
  159. package/src/generators/component/schema.d.ts +3 -3
  160. package/src/generators/component/schema.json +4 -4
  161. package/src/generators/component-cypress-spec/files/__componentFileName__.__fileExt__ +13 -8
  162. package/src/generators/component-cypress-spec/schema.json +1 -1
  163. package/src/generators/component-story/files/__componentFileName__.stories.ts__tmpl__ +2 -2
  164. package/src/generators/component-test/component-test.d.ts +1 -1
  165. package/src/generators/component-test/component-test.js +8 -3
  166. package/src/generators/component-test/files/__componentFileName__.cy.ts__tpl__ +9 -11
  167. package/src/generators/component-test/schema.json +1 -1
  168. package/src/generators/convert-to-application-executor/convert-to-application-executor.d.ts +4 -0
  169. package/src/generators/convert-to-application-executor/convert-to-application-executor.js +242 -0
  170. package/src/generators/convert-to-application-executor/schema.d.ts +4 -0
  171. package/src/generators/convert-to-application-executor/schema.json +26 -0
  172. package/src/generators/convert-to-with-mf/convert-to-with-mf.js +3 -1
  173. package/src/generators/convert-to-with-mf/lib/write-new-webpack-config.js +3 -2
  174. package/src/generators/convert-to-with-mf/schema.d.ts +1 -0
  175. package/src/generators/convert-to-with-mf/schema.json +6 -0
  176. package/src/generators/cypress-component-configuration/cypress-component-configuration.d.ts +2 -1
  177. package/src/generators/cypress-component-configuration/cypress-component-configuration.js +43 -24
  178. package/src/generators/directive/directive.js +0 -1
  179. package/src/generators/directive/files/__fileName__.ts__tpl__ +1 -3
  180. package/src/generators/directive/lib/index.d.ts +0 -1
  181. package/src/generators/directive/lib/index.js +0 -1
  182. package/src/generators/directive/lib/normalize-options.js +3 -1
  183. package/src/generators/directive/schema.d.ts +3 -3
  184. package/src/generators/directive/schema.json +4 -4
  185. package/src/generators/federate-module/federate-module.js +1 -0
  186. package/src/generators/federate-module/lib/add-remote.d.ts +1 -1
  187. package/src/generators/federate-module/lib/add-remote.js +2 -11
  188. package/src/generators/federate-module/schema.json +3 -3
  189. package/src/generators/host/files/common/v17+/src/main.server.ts__tmpl__ +67 -0
  190. package/src/generators/host/files/ts/webpack.server.config.ts__tmpl__ +2 -2
  191. package/src/generators/host/host.js +8 -9
  192. package/src/generators/host/lib/index.d.ts +1 -1
  193. package/src/generators/host/lib/index.js +1 -1
  194. package/src/generators/host/lib/update-ssr-setup.d.ts +3 -0
  195. package/src/generators/host/lib/{add-ssr.js → update-ssr-setup.js} +8 -14
  196. package/src/generators/host/schema.json +6 -6
  197. package/src/generators/init/init.d.ts +2 -2
  198. package/src/generators/init/init.js +19 -137
  199. package/src/generators/init/schema.d.ts +1 -9
  200. package/src/generators/init/schema.json +8 -59
  201. package/src/generators/library/files/ng-module/src/lib/lib.routes.ts__tpl__ +1 -1
  202. package/src/generators/library/files/standalone-components/src/lib/lib.routes.ts__tpl__ +1 -1
  203. package/src/generators/library/lib/add-load-children.js +2 -2
  204. package/src/generators/library/lib/add-project.js +24 -22
  205. package/src/generators/library/lib/add-standalone-component.d.ts +2 -2
  206. package/src/generators/library/lib/add-standalone-component.js +5 -4
  207. package/src/generators/library/lib/normalize-options.js +2 -5
  208. package/src/generators/library/lib/set-generator-defaults.d.ts +3 -0
  209. package/src/generators/library/lib/set-generator-defaults.js +15 -0
  210. package/src/generators/library/lib/update-tsconfig.js +3 -3
  211. package/src/generators/library/library.js +15 -27
  212. package/src/generators/library/schema.d.ts +1 -0
  213. package/src/generators/library/schema.json +13 -13
  214. package/src/generators/library-secondary-entry-point/files/src/index.ts__tmpl__ +1 -5
  215. package/src/generators/library-secondary-entry-point/lib/index.d.ts +0 -1
  216. package/src/generators/library-secondary-entry-point/lib/index.js +0 -1
  217. package/src/generators/library-secondary-entry-point/library-secondary-entry-point.js +3 -2
  218. package/src/generators/library-secondary-entry-point/schema.d.ts +1 -0
  219. package/src/generators/library-secondary-entry-point/schema.json +9 -3
  220. package/src/generators/move/schema.json +1 -1
  221. package/src/generators/ng-add/migrate-from-angular-cli.js +1 -1
  222. package/src/generators/ng-add/migrators/projects/app.migrator.js +50 -7
  223. package/src/generators/ng-add/migrators/projects/e2e.migrator.js +31 -23
  224. package/src/generators/ng-add/ng-add.js +1 -8
  225. package/src/generators/ng-add/schema.json +1 -1
  226. package/src/generators/ng-add/utilities/workspace.d.ts +1 -1
  227. package/src/generators/ng-add/utilities/workspace.js +9 -16
  228. package/src/generators/ngrx/files/{base/__directory__ → __directory__}/__fileName__.models.ts__tmpl__ +1 -1
  229. package/src/generators/ngrx/files/{base/__directory__ → __directory__}/__fileName__.selectors.spec.ts__tmpl__ +1 -1
  230. package/src/generators/ngrx/lib/generate-files.js +1 -10
  231. package/src/generators/ngrx/lib/validate-options.js +0 -23
  232. package/src/generators/ngrx/schema.json +3 -3
  233. package/src/generators/ngrx-feature-store/files/{base/__directory__ → __directory__}/__fileName__.models.ts__tmpl__ +1 -1
  234. package/src/generators/ngrx-feature-store/files/{base/__directory__ → __directory__}/__fileName__.selectors.spec.ts__tmpl__ +1 -1
  235. package/src/generators/ngrx-feature-store/lib/generate-files.js +1 -12
  236. package/src/generators/ngrx-feature-store/lib/validate-options.js +0 -22
  237. package/src/generators/ngrx-feature-store/schema.json +3 -3
  238. package/src/generators/ngrx-root-store/lib/normalize-options.js +1 -1
  239. package/src/generators/ngrx-root-store/lib/validate-options.js +0 -15
  240. package/src/generators/ngrx-root-store/schema.json +2 -2
  241. package/src/generators/pipe/files/__fileName__.ts__tpl__ +0 -2
  242. package/src/generators/pipe/lib/index.d.ts +0 -1
  243. package/src/generators/pipe/lib/index.js +0 -1
  244. package/src/generators/pipe/lib/normalize-options.js +1 -0
  245. package/src/generators/pipe/pipe.js +0 -1
  246. package/src/generators/pipe/schema.d.ts +3 -3
  247. package/src/generators/pipe/schema.json +4 -4
  248. package/src/generators/remote/files/base-ts/webpack.server.config.ts__tmpl__ +2 -2
  249. package/src/generators/remote/files/common/{src → pre-v17/src}/main.server.ts__tmpl__ +1 -3
  250. package/src/generators/remote/files/common/v17+/src/main.server.ts__tmpl__ +73 -0
  251. package/src/generators/remote/lib/index.d.ts +1 -1
  252. package/src/generators/remote/lib/index.js +1 -1
  253. package/src/generators/remote/lib/{add-ssr.d.ts → update-ssr-setup.d.ts} +1 -1
  254. package/src/generators/remote/lib/{add-ssr.js → update-ssr-setup.js} +9 -13
  255. package/src/generators/remote/remote.js +7 -9
  256. package/src/generators/remote/schema.json +6 -6
  257. package/src/generators/scam/lib/convert-component-to-scam.js +2 -1
  258. package/src/generators/scam/schema.d.ts +3 -3
  259. package/src/generators/scam/schema.json +2 -2
  260. package/src/generators/scam-directive/lib/convert-directive-to-scam.js +2 -1
  261. package/src/generators/scam-directive/scam-directive.js +3 -1
  262. package/src/generators/scam-directive/schema.d.ts +4 -3
  263. package/src/generators/scam-directive/schema.json +8 -2
  264. package/src/generators/scam-pipe/lib/convert-pipe-to-scam.js +2 -1
  265. package/src/generators/scam-pipe/scam-pipe.js +3 -1
  266. package/src/generators/scam-pipe/schema.d.ts +4 -3
  267. package/src/generators/scam-pipe/schema.json +8 -2
  268. package/src/generators/scam-to-standalone/scam-to-standalone.js +0 -7
  269. package/src/generators/scam-to-standalone/schema.json +2 -2
  270. package/src/generators/setup-mf/files/host-files/app.component.spec.ts__tmpl__ +3 -1
  271. package/src/generators/setup-mf/files/ts-webpack/module-federation.config.ts__tmpl__ +12 -0
  272. package/src/generators/setup-mf/files/ts-webpack/tsconfig.lint.json__tmpl__ +12 -0
  273. package/src/generators/setup-mf/files/ts-webpack/webpack.config.ts__tmpl__ +1 -1
  274. package/src/generators/setup-mf/files/ts-webpack/webpack.prod.config.ts__tmpl__ +12 -12
  275. package/src/generators/setup-mf/files/webpack/module-federation.config.js__tmpl__ +13 -1
  276. package/src/generators/setup-mf/lib/add-cypress-workaround.js +14 -4
  277. package/src/generators/setup-mf/lib/add-remote-entry.js +2 -11
  278. package/src/generators/setup-mf/lib/add-remote-to-host.js +1 -1
  279. package/src/generators/setup-mf/lib/fix-bootstrap.js +10 -18
  280. package/src/generators/setup-mf/lib/generate-config.js +3 -0
  281. package/src/generators/setup-mf/lib/index.d.ts +1 -1
  282. package/src/generators/setup-mf/lib/index.js +1 -1
  283. package/src/generators/setup-mf/lib/normalize-options.js +2 -1
  284. package/src/generators/setup-mf/lib/remove-dead-code-from-remote.js +10 -10
  285. package/src/generators/setup-mf/lib/setup-serve-target.js +1 -1
  286. package/src/generators/setup-mf/lib/update-host-app-routes.js +2 -2
  287. package/src/generators/{pipe/lib/validate-options.d.ts → setup-mf/lib/update-tsconfig.d.ts} +1 -1
  288. package/src/generators/setup-mf/lib/update-tsconfig.js +19 -0
  289. package/src/generators/setup-mf/schema.d.ts +1 -0
  290. package/src/generators/setup-mf/schema.json +8 -3
  291. package/src/generators/setup-mf/setup-mf.js +1 -7
  292. package/src/generators/setup-ssr/files/ngmodule/base/src/__main__ +1 -1
  293. package/src/generators/setup-ssr/files/server/application-builder/__serverFileName__ +56 -0
  294. package/src/generators/setup-ssr/files/{ngmodule/base → server/server-builder/pre-v17}/__serverFileName__ +7 -8
  295. package/src/generators/setup-ssr/files/{standalone → server/server-builder/v17+}/__serverFileName__ +25 -16
  296. package/src/generators/setup-ssr/lib/add-dependencies.d.ts +2 -0
  297. package/src/generators/setup-ssr/lib/add-dependencies.js +36 -0
  298. package/src/generators/setup-ssr/lib/add-hydration.js +11 -5
  299. package/src/generators/setup-ssr/lib/add-server-file.d.ts +3 -0
  300. package/src/generators/setup-ssr/lib/add-server-file.js +31 -0
  301. package/src/generators/setup-ssr/lib/constants.d.ts +3 -0
  302. package/src/generators/setup-ssr/lib/constants.js +6 -0
  303. package/src/generators/setup-ssr/lib/generate-files.d.ts +1 -1
  304. package/src/generators/setup-ssr/lib/generate-files.js +11 -16
  305. package/src/generators/setup-ssr/lib/generate-server-ts-config.d.ts +4 -0
  306. package/src/generators/setup-ssr/lib/generate-server-ts-config.js +29 -0
  307. package/src/generators/setup-ssr/lib/index.d.ts +4 -0
  308. package/src/generators/setup-ssr/lib/index.js +4 -0
  309. package/src/generators/setup-ssr/lib/normalize-options.js +7 -1
  310. package/src/generators/setup-ssr/lib/set-router-initial-navigation.d.ts +3 -0
  311. package/src/generators/setup-ssr/lib/set-router-initial-navigation.js +93 -0
  312. package/src/generators/setup-ssr/lib/update-project-config.d.ts +2 -1
  313. package/src/generators/setup-ssr/lib/update-project-config.js +46 -13
  314. package/src/generators/setup-ssr/lib/validate-options.js +15 -2
  315. package/src/generators/setup-ssr/schema.json +4 -4
  316. package/src/generators/setup-ssr/setup-ssr.js +18 -12
  317. package/src/generators/setup-tailwind/schema.json +1 -1
  318. package/src/generators/stories/schema.json +1 -1
  319. package/src/generators/stories/stories.js +2 -2
  320. package/src/generators/storybook-configuration/lib/generate-stories.js +6 -4
  321. package/src/generators/storybook-configuration/lib/generate-storybook-configuration.js +3 -1
  322. package/src/generators/storybook-configuration/schema.d.ts +1 -1
  323. package/src/generators/storybook-configuration/schema.json +7 -7
  324. package/src/generators/storybook-configuration/storybook-configuration.js +8 -5
  325. package/src/generators/utils/add-jest.d.ts +8 -0
  326. package/src/generators/utils/add-jest.js +36 -0
  327. package/src/generators/utils/add-mf-env-to-inputs.d.ts +2 -0
  328. package/src/generators/utils/add-mf-env-to-inputs.js +27 -0
  329. package/src/generators/utils/dependencies.js +1 -2
  330. package/src/generators/utils/ensure-angular-dependencies.d.ts +2 -0
  331. package/src/generators/utils/ensure-angular-dependencies.js +35 -0
  332. package/src/generators/utils/export-scam.js +2 -2
  333. package/src/generators/utils/project.d.ts +0 -1
  334. package/src/generators/utils/project.js +2 -29
  335. package/src/generators/utils/selector.d.ts +2 -2
  336. package/src/generators/utils/selector.js +11 -4
  337. package/src/generators/utils/testing.js +24 -1
  338. package/src/generators/utils/update-app-editor-tsconfig-excluded-files.d.ts +2 -0
  339. package/src/generators/utils/update-app-editor-tsconfig-excluded-files.js +23 -0
  340. package/src/generators/utils/update-project-root-tsconfig.d.ts +3 -0
  341. package/src/generators/utils/update-project-root-tsconfig.js +26 -0
  342. package/src/generators/utils/validations.d.ts +0 -1
  343. package/src/generators/utils/validations.js +1 -14
  344. package/src/generators/utils/version-utils.d.ts +2 -2
  345. package/src/generators/utils/version-utils.js +3 -3
  346. package/src/migrations/update-17-1-0/browser-target-to-build-target.d.ts +3 -0
  347. package/src/migrations/update-17-1-0/browser-target-to-build-target.js +50 -0
  348. package/src/migrations/update-17-1-0/replace-nguniversal-builders.d.ts +2 -0
  349. package/src/migrations/update-17-1-0/replace-nguniversal-builders.js +75 -0
  350. package/src/migrations/update-17-1-0/replace-nguniversal-engines.d.ts +2 -0
  351. package/src/migrations/update-17-1-0/replace-nguniversal-engines.js +183 -0
  352. package/src/migrations/update-17-1-0/update-angular-cli.d.ts +3 -0
  353. package/src/migrations/update-17-1-0/update-angular-cli.js +23 -0
  354. package/src/migrations/update-17-1-0/update-zone-js-deep-import.d.ts +2 -0
  355. package/src/migrations/update-17-1-0/update-zone-js-deep-import.js +37 -0
  356. package/src/migrations/update-17-2-0/rename-webpack-dev-server.d.ts +2 -0
  357. package/src/migrations/update-17-2-0/rename-webpack-dev-server.js +40 -0
  358. package/src/migrations/update-17-3-0/add-autoprefixer-dependency.d.ts +2 -0
  359. package/src/migrations/update-17-3-0/add-autoprefixer-dependency.js +26 -0
  360. package/src/migrations/update-17-3-0/add-browser-sync-dependency.d.ts +2 -0
  361. package/src/migrations/update-17-3-0/add-browser-sync-dependency.js +26 -0
  362. package/src/migrations/update-17-3-0/update-angular-cli.d.ts +3 -0
  363. package/src/migrations/update-17-3-0/update-angular-cli.js +23 -0
  364. package/src/migrations/update-18-0-0/add-mf-env-var-to-target-defaults.d.ts +2 -0
  365. package/src/migrations/update-18-0-0/add-mf-env-var-to-target-defaults.js +26 -0
  366. package/src/migrations/update-18-1-0/update-angular-cli.d.ts +3 -0
  367. package/src/migrations/update-18-1-0/update-angular-cli.js +23 -0
  368. package/src/migrations/update-18-1-1/fix-target-defaults-inputs.d.ts +2 -0
  369. package/src/migrations/update-18-1-1/fix-target-defaults-inputs.js +53 -0
  370. package/src/migrations/update-18-2-0/update-angular-cli.d.ts +3 -0
  371. package/src/migrations/update-18-2-0/update-angular-cli.js +23 -0
  372. package/src/utils/backward-compatible-versions.d.ts +6 -4
  373. package/src/utils/backward-compatible-versions.js +20 -22
  374. package/src/utils/{public-api.d.ts → index.d.ts} +5 -0
  375. package/src/utils/{public-api.js → index.js} +5 -0
  376. package/src/utils/mf/utils.js +7 -0
  377. package/src/utils/mf/with-module-federation-ssr.js +3 -0
  378. package/src/utils/mf/with-module-federation.js +3 -0
  379. package/src/utils/nx-devkit/ast-utils.js +4 -2
  380. package/src/utils/nx-devkit/testing.js +27 -31
  381. package/src/utils/targets.d.ts +2 -0
  382. package/src/utils/targets.js +17 -0
  383. package/src/utils/version-utils.d.ts +3 -3
  384. package/src/utils/versions.d.ts +9 -11
  385. package/src/utils/versions.js +10 -12
  386. package/src/builders/module-federation-dev-server/module-federation-dev-server.impl.d.ts +0 -5
  387. package/src/builders/module-federation-dev-server/module-federation-dev-server.impl.js +0 -136
  388. package/src/builders/webpack-browser/validate-options.d.ts +0 -2
  389. package/src/builders/webpack-browser/validate-options.js +0 -40
  390. package/src/builders/webpack-dev-server/lib/normalize-options.d.ts +0 -2
  391. package/src/builders/webpack-dev-server/lib/normalize-options.js +0 -14
  392. package/src/builders/webpack-dev-server/schema.d.ts +0 -21
  393. package/src/builders/webpack-dev-server/webpack-dev-server.impl.d.ts +0 -4
  394. package/src/builders/webpack-dev-server/webpack-dev-server.impl.js +0 -105
  395. package/src/executors/browser-esbuild/lib/buildable-libs.d.ts +0 -9
  396. package/src/executors/browser-esbuild/lib/validate-options.d.ts +0 -2
  397. package/src/executors/browser-esbuild/lib/validate-options.js +0 -40
  398. package/src/executors/ng-packagr-lite/ng-packagr-adjustments/ts/cache-compiler-host.d.ts +0 -16
  399. package/src/executors/ng-packagr-lite/ng-packagr-adjustments/ts/cache-compiler-host.js +0 -175
  400. package/src/executors/package/ng-packagr-adjustments/ts/cache-compiler-host.d.ts +0 -15
  401. package/src/executors/package/ng-packagr-adjustments/ts/cache-compiler-host.js +0 -197
  402. package/src/executors/utilities/tailwindcss.d.ts +0 -7
  403. package/src/generators/application/files/tsconfig.editor.json__tpl__ +0 -5
  404. package/src/generators/application/files/v14/.browserlistrc__tpl__ +0 -16
  405. package/src/generators/application/files/v14/src/environments/environment.prod.ts__tpl__ +0 -3
  406. package/src/generators/application/files/v14/src/environments/environment.ts__tpl__ +0 -16
  407. package/src/generators/application/files/v14/src/polyfills.ts__tpl__ +0 -53
  408. package/src/generators/component/lib/validate-options.d.ts +0 -3
  409. package/src/generators/component/lib/validate-options.js +0 -8
  410. package/src/generators/directive/lib/validate-options.d.ts +0 -3
  411. package/src/generators/directive/lib/validate-options.js +0 -8
  412. package/src/generators/host/lib/add-ssr.d.ts +0 -3
  413. package/src/generators/library-secondary-entry-point/lib/update-linting-file-patterns.d.ts +0 -3
  414. package/src/generators/library-secondary-entry-point/lib/update-linting-file-patterns.js +0 -15
  415. package/src/generators/ngrx/files/no-inject/__directory__/__fileName__.effects.ts__tmpl__ +0 -22
  416. package/src/generators/ngrx/files/no-inject/__directory__/__fileName__.facade.ts__tmpl__ +0 -27
  417. package/src/generators/ngrx-feature-store/files/no-inject/__directory__/__fileName__.effects.ts__tmpl__ +0 -22
  418. package/src/generators/ngrx-feature-store/files/no-inject/__directory__/__fileName__.facade.ts__tmpl__ +0 -27
  419. package/src/generators/pipe/lib/validate-options.js +0 -8
  420. package/src/generators/setup-mf/lib/set-tsconfig-target.d.ts +0 -3
  421. package/src/generators/setup-mf/lib/set-tsconfig-target.js +0 -16
  422. package/src/generators/setup-ssr/files/ngmodule/v14/src/__main__ +0 -11
  423. package/src/generators/utils/create-ts-config.d.ts +0 -8
  424. package/src/generators/utils/create-ts-config.js +0 -35
  425. /package/src/executors/ng-packagr-lite/ng-packagr-adjustments/{ng-package → pre-v17/ng-package}/entry-point/compile-ngc.di.d.ts +0 -0
  426. /package/src/executors/ng-packagr-lite/ng-packagr-adjustments/{ng-package → pre-v17/ng-package}/entry-point/compile-ngc.di.js +0 -0
  427. /package/src/executors/ng-packagr-lite/ng-packagr-adjustments/{ng-package → pre-v17/ng-package}/entry-point/compile-ngc.transform.d.ts +0 -0
  428. /package/src/executors/ng-packagr-lite/ng-packagr-adjustments/{ng-package → pre-v17/ng-package}/entry-point/entry-point.di.d.ts +0 -0
  429. /package/src/executors/ng-packagr-lite/ng-packagr-adjustments/{ng-package → pre-v17/ng-package}/entry-point/entry-point.di.js +0 -0
  430. /package/src/executors/ng-packagr-lite/ng-packagr-adjustments/{ng-package → pre-v17/ng-package}/entry-point/entry-point.transform.d.ts +0 -0
  431. /package/src/executors/ng-packagr-lite/ng-packagr-adjustments/{ng-package → pre-v17/ng-package}/entry-point/entry-point.transform.js +0 -0
  432. /package/src/executors/ng-packagr-lite/ng-packagr-adjustments/{ng-package → pre-v17/ng-package}/entry-point/write-package.di.d.ts +0 -0
  433. /package/src/executors/ng-packagr-lite/ng-packagr-adjustments/{ng-package → pre-v17/ng-package}/entry-point/write-package.di.js +0 -0
  434. /package/src/executors/ng-packagr-lite/ng-packagr-adjustments/{ng-package → pre-v17/ng-package}/entry-point/write-package.transform.d.ts +0 -0
  435. /package/src/executors/ng-packagr-lite/ng-packagr-adjustments/{ng-package → pre-v17/ng-package}/options.di.d.ts +0 -0
  436. /package/src/executors/ng-packagr-lite/ng-packagr-adjustments/{ng-package → pre-v17/ng-package}/options.di.js +0 -0
  437. /package/src/executors/ng-packagr-lite/ng-packagr-adjustments/{ng-package → pre-v17/ng-package}/package.di.d.ts +0 -0
  438. /package/src/executors/ng-packagr-lite/ng-packagr-adjustments/{ng-package → pre-v17/ng-package}/package.di.js +0 -0
  439. /package/src/executors/ng-packagr-lite/ng-packagr-adjustments/{styles → pre-v17/styles}/stylesheet-processor.di.d.ts +0 -0
  440. /package/src/executors/ng-packagr-lite/ng-packagr-adjustments/{styles → pre-v17/styles}/stylesheet-processor.di.js +0 -0
  441. /package/src/generators/host/files/common/{src → pre-v17/src}/main.server.ts__tmpl__ +0 -0
  442. /package/src/generators/ngrx/files/{base/__directory__ → __directory__}/__fileName__.actions.ts__tmpl__ +0 -0
  443. /package/src/generators/ngrx/files/{base/__directory__ → __directory__}/__fileName__.effects.spec.ts__tmpl__ +0 -0
  444. /package/src/generators/ngrx/files/{base/__directory__ → __directory__}/__fileName__.effects.ts__tmpl__ +0 -0
  445. /package/src/generators/ngrx/files/{base/__directory__ → __directory__}/__fileName__.facade.spec.ts__tmpl__ +0 -0
  446. /package/src/generators/ngrx/files/{base/__directory__ → __directory__}/__fileName__.facade.ts__tmpl__ +0 -0
  447. /package/src/generators/ngrx/files/{base/__directory__ → __directory__}/__fileName__.reducer.spec.ts__tmpl__ +0 -0
  448. /package/src/generators/ngrx/files/{base/__directory__ → __directory__}/__fileName__.reducer.ts__tmpl__ +0 -0
  449. /package/src/generators/ngrx/files/{base/__directory__ → __directory__}/__fileName__.selectors.ts__tmpl__ +0 -0
  450. /package/src/generators/ngrx-feature-store/files/{base/__directory__ → __directory__}/__fileName__.actions.ts__tmpl__ +0 -0
  451. /package/src/generators/ngrx-feature-store/files/{base/__directory__ → __directory__}/__fileName__.effects.spec.ts__tmpl__ +0 -0
  452. /package/src/generators/ngrx-feature-store/files/{base/__directory__ → __directory__}/__fileName__.effects.ts__tmpl__ +0 -0
  453. /package/src/generators/ngrx-feature-store/files/{base/__directory__ → __directory__}/__fileName__.facade.spec.ts__tmpl__ +0 -0
  454. /package/src/generators/ngrx-feature-store/files/{base/__directory__ → __directory__}/__fileName__.facade.ts__tmpl__ +0 -0
  455. /package/src/generators/ngrx-feature-store/files/{base/__directory__ → __directory__}/__fileName__.reducer.spec.ts__tmpl__ +0 -0
  456. /package/src/generators/ngrx-feature-store/files/{base/__directory__ → __directory__}/__fileName__.reducer.ts__tmpl__ +0 -0
  457. /package/src/generators/ngrx-feature-store/files/{base/__directory__ → __directory__}/__fileName__.selectors.ts__tmpl__ +0 -0
  458. /package/src/generators/setup-ssr/files/{base → root}/tsconfig.server.json__tpl__ +0 -0
@@ -0,0 +1,242 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.convertToApplicationExecutor = void 0;
4
+ const devkit_1 = require("@nx/devkit");
5
+ const posix_1 = require("node:path/posix");
6
+ const semver_1 = require("semver");
7
+ const targets_1 = require("../../utils/targets");
8
+ const setup_ssr_1 = require("../setup-ssr/setup-ssr");
9
+ const validations_1 = require("../utils/validations");
10
+ const version_utils_1 = require("../utils/version-utils");
11
+ const executorsToConvert = new Set([
12
+ '@angular-devkit/build-angular:browser',
13
+ '@angular-devkit/build-angular:browser-esbuild',
14
+ '@nx/angular:webpack-browser',
15
+ '@nx/angular:browser-esbuild',
16
+ ]);
17
+ const serverTargetExecutors = new Set([
18
+ '@angular-devkit/build-angular:server',
19
+ '@nx/angular:webpack-server',
20
+ ]);
21
+ const redundantExecutors = new Set([
22
+ '@angular-devkit/build-angular:server',
23
+ '@angular-devkit/build-angular:prerender',
24
+ '@angular-devkit/build-angular:app-shell',
25
+ '@angular-devkit/build-angular:ssr-dev-server',
26
+ '@nx/angular:webpack-server',
27
+ ]);
28
+ async function convertToApplicationExecutor(tree, options) {
29
+ const { major: angularMajorVersion, version: angularVersion } = (0, version_utils_1.getInstalledAngularVersionInfo)(tree);
30
+ if (angularMajorVersion < 17) {
31
+ throw new Error(`The "convert-to-application-executor" generator is only supported in Angular >= 17.0.0. You are currently using "${angularVersion}".`);
32
+ }
33
+ let didAnySucceed = false;
34
+ if (options.project) {
35
+ (0, validations_1.validateProject)(tree, options.project);
36
+ didAnySucceed = await convertProjectTargets(tree, options.project, angularVersion, true);
37
+ }
38
+ else {
39
+ const projects = (0, devkit_1.getProjects)(tree);
40
+ for (const [projectName] of projects) {
41
+ devkit_1.logger.info(`Converting project "${projectName}"...`);
42
+ const success = await convertProjectTargets(tree, projectName, angularVersion);
43
+ if (success) {
44
+ devkit_1.logger.info(`Project "${projectName}" converted successfully.`);
45
+ }
46
+ else {
47
+ devkit_1.logger.info(`Project "${projectName}" could not be converted. See above for more information.`);
48
+ }
49
+ devkit_1.logger.info('');
50
+ didAnySucceed = didAnySucceed || success;
51
+ }
52
+ }
53
+ if (!options.skipFormat) {
54
+ await (0, devkit_1.formatFiles)(tree);
55
+ }
56
+ return didAnySucceed ? () => (0, devkit_1.installPackagesTask)(tree) : () => { };
57
+ }
58
+ exports.convertToApplicationExecutor = convertToApplicationExecutor;
59
+ async function convertProjectTargets(tree, projectName, angularVersion, isProvidedProject = false) {
60
+ function warnIfProvided(message) {
61
+ if (isProvidedProject) {
62
+ devkit_1.logger.warn(message);
63
+ }
64
+ }
65
+ let project = (0, devkit_1.readProjectConfiguration)(tree, projectName);
66
+ if (project.projectType !== 'application') {
67
+ warnIfProvided(`The provided project "${projectName}" is not an application. Skipping conversion.`);
68
+ return false;
69
+ }
70
+ const { buildTargetName, serverTargetName } = getTargetsToConvert(project.targets, angularVersion);
71
+ if (!buildTargetName) {
72
+ warnIfProvided(`The provided project "${projectName}" does not have any targets using on of the ` +
73
+ `'@angular-devkit/build-angular:browser', '@angular-devkit/build-angular:browser-esbuild', ` +
74
+ `'@nx/angular:browser' and '@nx/angular:browser-esbuild' executors. Skipping conversion.`);
75
+ return false;
76
+ }
77
+ const useNxExecutor = project.targets[buildTargetName].executor.startsWith('@nx/angular:');
78
+ const newExecutor = useNxExecutor
79
+ ? '@nx/angular:application'
80
+ : '@angular-devkit/build-angular:application';
81
+ const buildTarget = project.targets[buildTargetName];
82
+ buildTarget.executor = newExecutor;
83
+ if ((0, semver_1.gte)(angularVersion, '17.1.0') && buildTarget.outputs) {
84
+ buildTarget.outputs = buildTarget.outputs.map((output) => output === '{options.outputPath}' ? '{options.outputPath.base}' : output);
85
+ }
86
+ for (const [, options] of (0, targets_1.allTargetOptions)(buildTarget)) {
87
+ if (options['index'] === '') {
88
+ options['index'] = false;
89
+ }
90
+ // Rename and transform options
91
+ options['browser'] = options['main'];
92
+ if (serverTargetName && typeof options['browser'] === 'string') {
93
+ options['server'] = (0, posix_1.dirname)(options['browser']) + '/main.server.ts';
94
+ }
95
+ options['serviceWorker'] =
96
+ options['ngswConfigPath'] ?? options['serviceWorker'];
97
+ if (typeof options['polyfills'] === 'string') {
98
+ options['polyfills'] = [options['polyfills']];
99
+ }
100
+ let outputPath = options['outputPath'];
101
+ if ((0, semver_1.lt)(angularVersion, '17.1.0')) {
102
+ options['outputPath'] = outputPath?.replace(/\/browser\/?$/, '');
103
+ }
104
+ else if (typeof outputPath === 'string') {
105
+ if (!/\/browser\/?$/.test(outputPath)) {
106
+ devkit_1.logger.warn(`The output location of the browser build has been updated from "${outputPath}" to ` +
107
+ `"${(0, posix_1.join)(outputPath, 'browser')}". ` +
108
+ 'You might need to adjust your deployment pipeline or, as an alternative, ' +
109
+ 'set outputPath.browser to "" in order to maintain the previous functionality.');
110
+ }
111
+ else {
112
+ outputPath = outputPath.replace(/\/browser\/?$/, '');
113
+ }
114
+ options['outputPath'] = {
115
+ base: outputPath,
116
+ };
117
+ if (typeof options['resourcesOutputPath'] === 'string') {
118
+ const media = options['resourcesOutputPath'].replaceAll('/', '');
119
+ if (media && media !== 'media') {
120
+ options['outputPath'] = {
121
+ base: outputPath,
122
+ media: media,
123
+ };
124
+ }
125
+ }
126
+ }
127
+ // Delete removed options
128
+ if ((0, semver_1.lt)(angularVersion, '17.3.0')) {
129
+ delete options['deployUrl'];
130
+ }
131
+ delete options['vendorChunk'];
132
+ delete options['commonChunk'];
133
+ delete options['resourcesOutputPath'];
134
+ delete options['buildOptimizer'];
135
+ delete options['main'];
136
+ delete options['ngswConfigPath'];
137
+ }
138
+ // Merge browser and server tsconfig
139
+ if (serverTargetName) {
140
+ const browserTsConfigPath = buildTarget?.options?.tsConfig;
141
+ const serverTsConfigPath = project.targets['server']?.options?.tsConfig;
142
+ if (typeof browserTsConfigPath !== 'string') {
143
+ devkit_1.logger.warn(`Cannot update project "${projectName}" to use the application executor ` +
144
+ `as the browser tsconfig cannot be located.`);
145
+ }
146
+ if (typeof serverTsConfigPath !== 'string') {
147
+ devkit_1.logger.warn(`Cannot update project "${projectName}" to use the application executor ` +
148
+ `as the server tsconfig cannot be located.`);
149
+ }
150
+ const browserTsConfigJson = (0, devkit_1.readJson)(tree, browserTsConfigPath);
151
+ const serverTsConfigJson = (0, devkit_1.readJson)(tree, serverTsConfigPath);
152
+ const files = new Set([
153
+ ...(browserTsConfigJson.files ?? []),
154
+ ...(serverTsConfigJson.files ?? []),
155
+ ]);
156
+ // Server file will be added later by the setup-ssr generator
157
+ files.delete('server.ts');
158
+ browserTsConfigJson.files = Array.from(files);
159
+ browserTsConfigJson.compilerOptions ?? {};
160
+ browserTsConfigJson.compilerOptions.types = Array.from(new Set([
161
+ ...(browserTsConfigJson.compilerOptions.types ?? []),
162
+ ...(serverTsConfigJson.compilerOptions?.types ?? []),
163
+ ]));
164
+ // Delete server tsconfig
165
+ tree.delete(serverTsConfigPath);
166
+ }
167
+ // Update project main tsconfig
168
+ const projectRootTsConfigPath = (0, posix_1.join)(project.root, 'tsconfig.json');
169
+ if (tree.exists(projectRootTsConfigPath)) {
170
+ const rootTsConfigJson = (0, devkit_1.readJson)(tree, projectRootTsConfigPath);
171
+ rootTsConfigJson.compilerOptions ?? {};
172
+ rootTsConfigJson.compilerOptions.esModuleInterop = true;
173
+ rootTsConfigJson.compilerOptions.downlevelIteration = undefined;
174
+ rootTsConfigJson.compilerOptions.allowSyntheticDefaultImports = undefined;
175
+ (0, devkit_1.writeJson)(tree, projectRootTsConfigPath, rootTsConfigJson);
176
+ }
177
+ // Update server file
178
+ const ssrMainFile = project.targets['server']?.options?.['main'];
179
+ if (typeof ssrMainFile === 'string') {
180
+ tree.delete(ssrMainFile);
181
+ // apply changes so the setup-ssr generator can access the updated project
182
+ (0, devkit_1.updateProjectConfiguration)(tree, projectName, project);
183
+ await (0, setup_ssr_1.setupSsr)(tree, { project: projectName, skipFormat: true });
184
+ // re-read project configuration as it might have changed
185
+ project = (0, devkit_1.readProjectConfiguration)(tree, projectName);
186
+ }
187
+ // Delete all redundant targets
188
+ for (const [targetName, target] of Object.entries(project.targets)) {
189
+ if (redundantExecutors.has(target.executor)) {
190
+ delete project.targets[targetName];
191
+ }
192
+ }
193
+ (0, devkit_1.updateProjectConfiguration)(tree, projectName, project);
194
+ return true;
195
+ }
196
+ function getTargetsToConvert(targets, angularVersion) {
197
+ let buildTargetName;
198
+ let serverTargetName;
199
+ for (const target of Object.keys(targets)) {
200
+ if (targets[target].executor === '@nx/angular:application' ||
201
+ targets[target].executor === '@angular-devkit/build-angular:application') {
202
+ devkit_1.logger.warn('The project is already using the application builder. Skipping conversion.');
203
+ return {};
204
+ }
205
+ // build target
206
+ if (executorsToConvert.has(targets[target].executor)) {
207
+ for (const [, options] of (0, targets_1.allTargetOptions)(targets[target])) {
208
+ if ((0, semver_1.lt)(angularVersion, '17.3.0') && options.deployUrl) {
209
+ devkit_1.logger.warn(`The project is using the "deployUrl" option which is not available in the application builder. Skipping conversion.`);
210
+ return {};
211
+ }
212
+ if (options.customWebpackConfig) {
213
+ devkit_1.logger.warn(`The project is using a custom webpack configuration which is not supported by the esbuild-based application executor. Skipping conversion.`);
214
+ return {};
215
+ }
216
+ }
217
+ if (buildTargetName) {
218
+ devkit_1.logger.warn('The project has more than one build target. Skipping conversion.');
219
+ return {};
220
+ }
221
+ buildTargetName = target;
222
+ }
223
+ // server target
224
+ if (serverTargetExecutors.has(targets[target].executor)) {
225
+ if (targets[target].executor === '@nx/angular:webpack-server') {
226
+ for (const [, options] of (0, targets_1.allTargetOptions)(targets[target])) {
227
+ if (options.customWebpackConfig) {
228
+ devkit_1.logger.warn(`The project is using a custom webpack configuration which is not supported by the esbuild-based application executor. Skipping conversion.`);
229
+ return {};
230
+ }
231
+ }
232
+ }
233
+ if (serverTargetName) {
234
+ devkit_1.logger.warn('The project has more than one server target. Skipping conversion.');
235
+ return {};
236
+ }
237
+ serverTargetName = target;
238
+ }
239
+ }
240
+ return { buildTargetName, serverTargetName };
241
+ }
242
+ exports.default = convertToApplicationExecutor;
@@ -0,0 +1,4 @@
1
+ export interface GeneratorOptions {
2
+ project?: string;
3
+ skipFormat?: boolean;
4
+ }
@@ -0,0 +1,26 @@
1
+ {
2
+ "$schema": "http://json-schema.org/schema",
3
+ "$id": "NxAngularConvertToApplicationExecutorGenerator",
4
+ "cli": "nx",
5
+ "title": "Converts projects to use the `@nx/angular:application` executor or the `@angular-devkit/build-angular:application` builder. _Note: this is only supported in Angular versions >= 17.0.0_.",
6
+ "description": "Converts a project or all projects using one of the `@angular-devkit/build-angular:browser`, `@angular-devkit/build-angular:browser-esbuild`, `@nx/angular:browser` and `@nx/angular:browser-esbuild` executors to use the `@nx/angular:application` executor or the `@angular-devkit/build-angular:application` builder. If the converted target is using one of the `@nx/angular` executors, the `@nx/angular:application` executor will be used. Otherwise, the `@angular-devkit/build-angular:application` builder will be used.",
7
+ "type": "object",
8
+ "properties": {
9
+ "project": {
10
+ "type": "string",
11
+ "description": "Name of the Angular application project to convert. It has to contain a target using one of the `@angular-devkit/build-angular:browser`, `@angular-devkit/build-angular:browser-esbuild`, `@nx/angular:browser` and `@nx/angular:browser-esbuild` executors. If not specified, all projects with such targets will be converted.",
12
+ "$default": {
13
+ "$source": "argv",
14
+ "index": 0
15
+ },
16
+ "x-priority": "important"
17
+ },
18
+ "skipFormat": {
19
+ "description": "Skip formatting files.",
20
+ "type": "boolean",
21
+ "default": false,
22
+ "x-priority": "internal"
23
+ }
24
+ },
25
+ "additionalProperties": false
26
+ }
@@ -24,7 +24,9 @@ async function convertToWithMF(tree, schema) {
24
24
  const [updatedWebpackConfig, mfConfig] = (0, lib_1.writeNewWebpackConfig)(webpackAst, (0, lib_1.isHostRemoteConfig)(webpackAst), schema.project);
25
25
  tree.write(pathToWebpackConfig, updatedWebpackConfig);
26
26
  tree.write((0, devkit_1.joinPathFragments)(project.root, 'module-federation.config.js'), mfConfig);
27
- await (0, devkit_1.formatFiles)(tree);
27
+ if (!schema.skipFormat) {
28
+ await (0, devkit_1.formatFiles)(tree);
29
+ }
28
30
  }
29
31
  exports.convertToWithMF = convertToWithMF;
30
32
  exports.default = convertToWithMF;
@@ -4,8 +4,9 @@ exports.writeNewWebpackConfig = void 0;
4
4
  const is_host_remote_config_1 = require("./is-host-remote-config");
5
5
  function writeNewWebpackConfig(ast, mfType, projectName) {
6
6
  const webpackConfig = `const { withModuleFederation } = require('@nx/angular/module-federation');
7
- const config = require('./module-federation.config');
8
- module.exports = withModuleFederation(config);`;
7
+ const config = require('./module-federation.config');
8
+ module.exports = withModuleFederation(config);
9
+ `;
9
10
  let mfeConfig = '';
10
11
  if (!mfType) {
11
12
  mfeConfig = `
@@ -1,3 +1,4 @@
1
1
  export interface Schema {
2
2
  project: string;
3
+ skipFormat?: boolean;
3
4
  }
@@ -22,6 +22,12 @@
22
22
  },
23
23
  "x-prompt": "What micro frontend project would you like to migrate?",
24
24
  "x-priority": "important"
25
+ },
26
+ "skipFormat": {
27
+ "description": "Skip formatting files.",
28
+ "type": "boolean",
29
+ "default": false,
30
+ "x-priority": "internal"
25
31
  }
26
32
  }
27
33
  }
@@ -1,8 +1,9 @@
1
1
  import { Tree } from '@nx/devkit';
2
2
  import { CypressComponentConfigSchema } from './schema';
3
+ export declare function cypressComponentConfiguration(tree: Tree, options: CypressComponentConfigSchema): Promise<import("@nx/devkit").GeneratorCallback>;
3
4
  /**
4
5
  * This is for cypress built in component testing, if you want to test with
5
6
  * storybook + cypress then use the componentCypressGenerator instead.
6
7
  */
7
- export declare function cypressComponentConfiguration(tree: Tree, options: CypressComponentConfigSchema): Promise<() => void>;
8
+ export declare function cypressComponentConfigurationInternal(tree: Tree, options: CypressComponentConfigSchema): Promise<import("@nx/devkit").GeneratorCallback>;
8
9
  export default cypressComponentConfiguration;
@@ -1,41 +1,48 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.cypressComponentConfiguration = void 0;
4
- const cypress_1 = require("@nx/cypress");
5
- const config_1 = require("@nx/cypress/src/utils/config");
6
- const find_target_options_1 = require("@nx/cypress/src/utils/find-target-options");
3
+ exports.cypressComponentConfigurationInternal = exports.cypressComponentConfiguration = void 0;
7
4
  const devkit_1 = require("@nx/devkit");
8
5
  const path_1 = require("path");
6
+ const versions_1 = require("../../utils/versions");
9
7
  const component_test_1 = require("../component-test/component-test");
10
8
  const component_info_1 = require("../utils/storybook-ast/component-info");
11
9
  const entry_point_1 = require("../utils/storybook-ast/entry-point");
12
10
  const module_info_1 = require("../utils/storybook-ast/module-info");
11
+ const update_app_editor_tsconfig_excluded_files_1 = require("../utils/update-app-editor-tsconfig-excluded-files");
12
+ function cypressComponentConfiguration(tree, options) {
13
+ return cypressComponentConfigurationInternal(tree, {
14
+ ...options,
15
+ });
16
+ }
17
+ exports.cypressComponentConfiguration = cypressComponentConfiguration;
13
18
  /**
14
19
  * This is for cypress built in component testing, if you want to test with
15
20
  * storybook + cypress then use the componentCypressGenerator instead.
16
21
  */
17
- async function cypressComponentConfiguration(tree, options) {
22
+ async function cypressComponentConfigurationInternal(tree, options) {
18
23
  const projectConfig = (0, devkit_1.readProjectConfiguration)(tree, options.project);
19
- const installTask = await (0, cypress_1.componentConfigurationGenerator)(tree, {
24
+ const { componentConfigurationGenerator: baseCyCTConfig } = (0, devkit_1.ensurePackage)('@nx/cypress', versions_1.nxVersion);
25
+ const installTask = await baseCyCTConfig(tree, {
20
26
  project: options.project,
21
27
  skipFormat: true,
28
+ addPlugin: false,
29
+ addExplicitTargets: true,
22
30
  });
23
- await updateProjectConfig(tree, options);
31
+ await configureCypressCT(tree, options);
24
32
  await addFiles(tree, projectConfig, options);
33
+ if (projectConfig.projectType === 'application') {
34
+ (0, update_app_editor_tsconfig_excluded_files_1.updateAppEditorTsConfigExcludedFiles)(tree, projectConfig);
35
+ }
25
36
  if (!options.skipFormat) {
26
37
  await (0, devkit_1.formatFiles)(tree);
27
38
  }
28
- return () => {
29
- installTask();
30
- };
39
+ return installTask;
31
40
  }
32
- exports.cypressComponentConfiguration = cypressComponentConfiguration;
41
+ exports.cypressComponentConfigurationInternal = cypressComponentConfigurationInternal;
33
42
  async function addFiles(tree, projectConfig, options) {
34
- const cyConfigFile = (0, devkit_1.joinPathFragments)(projectConfig.root, 'cypress.config.ts');
35
- const updatedCyConfig = await (0, config_1.addDefaultCTConfig)(tree.read(cyConfigFile, 'utf-8'));
36
- tree.write(cyConfigFile, `import { nxComponentTestingPreset } from '@nx/angular/plugins/component-testing';\n${updatedCyConfig}`);
37
43
  const componentFile = (0, devkit_1.joinPathFragments)(projectConfig.root, 'cypress', 'support', 'component.ts');
38
- const updatedCmpContents = await (0, config_1.addMountDefinition)(tree.read(componentFile, 'utf-8'));
44
+ const { addMountDefinition } = await Promise.resolve().then(() => require('@nx/cypress/src/utils/config'));
45
+ const updatedCmpContents = await addMountDefinition(tree.read(componentFile, 'utf-8'));
39
46
  tree.write(componentFile, `import { mount } from 'cypress/angular';\n${updatedCmpContents}`);
40
47
  if (options.generateTests) {
41
48
  const entryPoints = (0, entry_point_1.getProjectEntryPoints)(tree, options.project);
@@ -49,7 +56,7 @@ async function addFiles(tree, projectConfig, options) {
49
56
  continue;
50
57
  }
51
58
  const componentDirFromProjectRoot = (0, path_1.relative)(projectConfig.root, (0, devkit_1.joinPathFragments)(info.moduleFolderPath, info.path));
52
- (0, component_test_1.componentTestGenerator)(tree, {
59
+ await (0, component_test_1.componentTestGenerator)(tree, {
53
60
  project: options.project,
54
61
  componentName: info.name,
55
62
  componentDir: componentDirFromProjectRoot,
@@ -59,10 +66,11 @@ async function addFiles(tree, projectConfig, options) {
59
66
  }
60
67
  }
61
68
  }
62
- async function updateProjectConfig(tree, options) {
69
+ async function configureCypressCT(tree, options) {
63
70
  let found = { target: options.buildTarget, config: undefined };
64
71
  if (!options.buildTarget) {
65
- found = await (0, find_target_options_1.findBuildConfig)(tree, {
72
+ const { findBuildConfig } = await Promise.resolve().then(() => require('@nx/cypress/src/utils/find-target-options'));
73
+ found = await findBuildConfig(tree, {
66
74
  project: options.project,
67
75
  buildTarget: options.buildTarget,
68
76
  validExecutorNames: new Set([
@@ -73,13 +81,24 @@ async function updateProjectConfig(tree, options) {
73
81
  });
74
82
  assertValidConfig(found?.config);
75
83
  }
84
+ const ctConfigOptions = {};
76
85
  const projectConfig = (0, devkit_1.readProjectConfiguration)(tree, options.project);
77
- projectConfig.targets['component-test'].options = {
78
- ...projectConfig.targets['component-test'].options,
79
- skipServe: true,
80
- devServerTarget: found.target,
81
- };
82
- (0, devkit_1.updateProjectConfiguration)(tree, options.project, projectConfig);
86
+ if (projectConfig.targets?.['component-test']?.executor ===
87
+ '@nx/cypress:cypress') {
88
+ projectConfig.targets['component-test'].options = {
89
+ ...projectConfig.targets['component-test'].options,
90
+ skipServe: true,
91
+ devServerTarget: found.target,
92
+ };
93
+ (0, devkit_1.updateProjectConfiguration)(tree, options.project, projectConfig);
94
+ }
95
+ else {
96
+ ctConfigOptions.buildTarget = found.target;
97
+ }
98
+ const { addDefaultCTConfig, getProjectCypressConfigPath } = await Promise.resolve().then(() => require('@nx/cypress/src/utils/config'));
99
+ const cypressConfigPath = getProjectCypressConfigPath(tree, projectConfig.root);
100
+ const updatedCyConfig = await addDefaultCTConfig(tree.read(cypressConfigPath, 'utf-8'), ctConfigOptions);
101
+ tree.write(cypressConfigPath, `import { nxComponentTestingPreset } from '@nx/angular/plugins/component-testing';\n${updatedCyConfig}`);
83
102
  }
84
103
  function assertValidConfig(config) {
85
104
  if (!config) {
@@ -5,7 +5,6 @@ const devkit_1 = require("@nx/devkit");
5
5
  const utils_1 = require("../utils");
6
6
  const lib_1 = require("./lib");
7
7
  async function directiveGenerator(tree, schema) {
8
- (0, lib_1.validateOptions)(tree, schema);
9
8
  const options = await (0, lib_1.normalizeOptions)(tree, schema);
10
9
  (0, devkit_1.generateFiles)(tree, (0, devkit_1.joinPathFragments)(__dirname, 'files'), options.directory, {
11
10
  selector: options.selector,
@@ -5,7 +5,5 @@ import { Directive } from '@angular/core';
5
5
  standalone: true<%}%>
6
6
  })
7
7
  export class <%= symbolName %> {
8
-
9
- constructor() { }
10
-
8
+ constructor() {}
11
9
  }
@@ -1,2 +1 @@
1
1
  export * from './normalize-options';
2
- export * from './validate-options';
@@ -2,4 +2,3 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  const tslib_1 = require("tslib");
4
4
  tslib_1.__exportStar(require("./normalize-options"), exports);
5
- tslib_1.__exportStar(require("./validate-options"), exports);
@@ -20,7 +20,8 @@ async function normalizeOptions(tree, options) {
20
20
  const symbolName = `${className}${suffixClassName}`;
21
21
  const { prefix } = (0, devkit_1.readProjectConfiguration)(tree, projectName);
22
22
  const selector = options.selector ??
23
- (0, selector_1.buildSelector)(tree, name, options.prefix, prefix, 'propertyName');
23
+ (0, selector_1.buildSelector)(name, options.prefix, prefix, 'propertyName');
24
+ (0, selector_1.validateHtmlSelector)(selector);
24
25
  return {
25
26
  ...options,
26
27
  projectName,
@@ -30,6 +31,7 @@ async function normalizeOptions(tree, options) {
30
31
  filePath,
31
32
  symbolName,
32
33
  selector,
34
+ standalone: options.standalone ?? true,
33
35
  };
34
36
  }
35
37
  exports.normalizeOptions = normalizeOptions;
@@ -13,15 +13,15 @@ export interface Schema {
13
13
  export?: boolean;
14
14
  skipFormat?: boolean;
15
15
  /**
16
- * @deprecated Provide the `directory` option instead and use the `as-provided` format. It will be removed in Nx v18.
16
+ * @deprecated Provide the `directory` option instead and use the `as-provided` format. It will be removed in Nx v19.
17
17
  */
18
18
  flat?: boolean;
19
19
  /**
20
- * @deprecated Provide the `directory` option instead. It will be removed in Nx v18.
20
+ * @deprecated Provide the `directory` option instead. It will be removed in Nx v19.
21
21
  */
22
22
  path?: string;
23
23
  /**
24
- * @deprecated Provide the `directory` option instead. The project will be determined from the directory provided. It will be removed in Nx v18.
24
+ * @deprecated Provide the `directory` option instead. The project will be determined from the directory provided. It will be removed in Nx v19.
25
25
  */
26
26
  project?: string;
27
27
  }
@@ -34,7 +34,7 @@
34
34
  "$source": "projectName"
35
35
  },
36
36
  "x-dropdown": "projects",
37
- "x-deprecated": "Provide the `directory` option instead and use the `as-provided` format. The project will be determined from the directory provided. It will be removed in Nx v18."
37
+ "x-deprecated": "Provide the `directory` option instead and use the `as-provided` format. The project will be determined from the directory provided. It will be removed in Nx v19."
38
38
  },
39
39
  "prefix": {
40
40
  "type": "string",
@@ -66,15 +66,15 @@
66
66
  "description": "The HTML selector to use for this directive."
67
67
  },
68
68
  "standalone": {
69
- "description": "Whether the generated directive is standalone. _Note: This is only supported in Angular versions >= 14.1.0_.",
69
+ "description": "Whether the generated directive is standalone.",
70
70
  "type": "boolean",
71
- "default": false
71
+ "default": true
72
72
  },
73
73
  "flat": {
74
74
  "type": "boolean",
75
75
  "description": "When true (the default), creates the new files at the top level of the current project.",
76
76
  "default": true,
77
- "x-deprecated": "Provide the `directory` option instead and use the `as-provided` format. It will be removed in Nx v18."
77
+ "x-deprecated": "Provide the `directory` option instead and use the `as-provided` format. It will be removed in Nx v19."
78
78
  },
79
79
  "module": {
80
80
  "type": "string",
@@ -9,6 +9,7 @@ async function federateModuleGenerator(tree, schema) {
9
9
 
10
10
  Path: ${schema.path}`);
11
11
  }
12
+ schema.standalone = schema.standalone ?? true;
12
13
  const { tasks, projectRoot, remoteName } = await (0, lib_1.addRemote)(tree, schema);
13
14
  (0, lib_1.addFileToRemoteTsconfig)(tree, remoteName, schema.path);
14
15
  (0, lib_1.addPathToExposes)(tree, {
@@ -1,4 +1,4 @@
1
- import { GeneratorCallback, type Tree } from '@nx/devkit';
1
+ import type { GeneratorCallback, Tree } from '@nx/devkit';
2
2
  import { type Schema } from '../schema';
3
3
  export declare function addRemote(tree: Tree, schema: Schema): Promise<{
4
4
  tasks: GeneratorCallback[];
@@ -1,24 +1,15 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.addRemote = void 0;
4
- const devkit_1 = require("@nx/devkit");
5
4
  const project_name_and_root_utils_1 = require("@nx/devkit/src/generators/project-name-and-root-utils");
6
- const semver_1 = require("semver");
7
- const check_remote_exists_1 = require("./check-remote-exists");
8
- const version_utils_1 = require("../../utils/version-utils");
9
- const remote_1 = require("../../remote/remote");
10
5
  const test_runners_1 = require("../../../utils/test-runners");
6
+ const remote_1 = require("../../remote/remote");
7
+ const check_remote_exists_1 = require("./check-remote-exists");
11
8
  async function addRemote(tree, schema) {
12
9
  const tasks = [];
13
10
  const remote = (0, check_remote_exists_1.getRemoteIfExists)(tree, schema.remote);
14
11
  let projectRoot, remoteName;
15
12
  if (!remote) {
16
- const installedAngularVersionInfo = (0, version_utils_1.getInstalledAngularVersionInfo)(tree);
17
- if ((0, semver_1.lt)(installedAngularVersionInfo.version, '14.1.0') &&
18
- schema.standalone) {
19
- throw new Error((0, devkit_1.stripIndents) `The "standalone" option is only supported in Angular >= 14.1.0. You are currently using ${installedAngularVersionInfo.version}.
20
- You can resolve this error by removing the "standalone" option or by migrating to Angular 14.1.0.`);
21
- }
22
13
  const remoteGeneratorCallback = await (0, remote_1.default)(tree, {
23
14
  name: schema.remote,
24
15
  directory: schema.remoteDirectory,
@@ -1,5 +1,5 @@
1
1
  {
2
- "$schema": "http://json-schema.org/schema",
2
+ "$schema": "https://json-schema.org/schema",
3
3
  "cli": "nx",
4
4
  "$id": "NxReactFederateModule",
5
5
  "title": "Federate Module",
@@ -67,9 +67,9 @@
67
67
  "default": "cypress"
68
68
  },
69
69
  "standalone": {
70
- "description": "Whether to generate the remote application with standalone components if it needs to be created. _Note: This is only supported in Angular versions >= 14.1.0_",
70
+ "description": "Whether to generate the remote application with standalone components if it needs to be created.",
71
71
  "type": "boolean",
72
- "default": false
72
+ "default": true
73
73
  },
74
74
  "host": {
75
75
  "type": "string",