@nx/angular 21.1.1 → 21.2.0-beta.1

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 (269) hide show
  1. package/README.md +3 -3
  2. package/fesm2022/nx-angular-mf.mjs.map +1 -1
  3. package/fesm2022/nx-angular.mjs.map +1 -1
  4. package/index.d.ts +2 -1
  5. package/mf/index.d.ts +71 -1
  6. package/migrations.json +106 -0
  7. package/ng-package.json +0 -1
  8. package/package.json +28 -16
  9. package/plugins/component-testing.js +8 -3
  10. package/src/builders/dev-server/dev-server.impl.js +4 -7
  11. package/src/builders/dev-server/lib/normalize-options.js +0 -6
  12. package/src/builders/dev-server/lib/validate-options.js +0 -4
  13. package/src/builders/dev-server/schema.d.ts +3 -15
  14. package/src/builders/dev-server/schema.json +3 -9
  15. package/src/builders/webpack-browser/webpack-browser.impl.js +2 -0
  16. package/src/builders/webpack-server/webpack-server.impl.d.ts +3 -1
  17. package/src/builders/webpack-server/webpack-server.impl.js +2 -0
  18. package/src/executors/application/application.impl.d.ts +2 -2
  19. package/src/executors/application/application.impl.js +11 -6
  20. package/src/executors/application/schema.d.ts +1 -1
  21. package/src/executors/application/schema.json +21 -10
  22. package/src/executors/application/utils/normalize-options.js +8 -1
  23. package/src/executors/application/utils/validate-options.js +10 -40
  24. package/src/executors/extract-i18n/extract-i18n.impl.js +6 -14
  25. package/src/executors/extract-i18n/schema.d.ts +1 -6
  26. package/src/executors/extract-i18n/schema.json +5 -0
  27. package/src/executors/extract-i18n/utils/validate-options.d.ts +2 -0
  28. package/src/executors/extract-i18n/utils/validate-options.js +13 -0
  29. package/src/executors/module-federation-dev-server/lib/normalize-options.js +1 -7
  30. package/src/executors/module-federation-dev-server/schema.d.ts +3 -15
  31. package/src/executors/module-federation-dev-server/schema.json +2 -15
  32. package/src/executors/module-federation-ssr-dev-server/module-federation-ssr-dev-server.impl.js +10 -8
  33. package/src/executors/ng-packagr-lite/ng-packagr-adjustments/ng-package/entry-point/entry-point.d.ts +6 -3
  34. package/src/executors/ng-packagr-lite/ng-packagr-adjustments/ng-package/entry-point/entry-point.js +46 -8
  35. package/src/executors/ng-packagr-lite/ng-packagr-adjustments/ng-package/entry-point/write-bundles.di.d.ts +1 -1
  36. package/src/executors/ng-packagr-lite/ng-packagr-adjustments/ng-package/entry-point/write-bundles.di.js +3 -3
  37. package/src/executors/ng-packagr-lite/ng-packagr-adjustments/ng-package/entry-point/write-bundles.transform.d.ts +2 -2
  38. package/src/executors/ng-packagr-lite/ng-packagr-adjustments/ng-package/entry-point/write-bundles.transform.js +22 -6
  39. package/src/executors/ng-packagr-lite/schema.json +2 -3
  40. package/src/executors/package/package.impl.js +1 -5
  41. package/src/executors/package/schema.d.ts +3 -1
  42. package/src/executors/package/schema.json +2 -3
  43. package/src/executors/utilities/builder-package.d.ts +1 -0
  44. package/src/executors/utilities/builder-package.js +11 -0
  45. package/src/executors/utilities/esbuild-extensions.d.ts +2 -1
  46. package/src/executors/utilities/ng-packagr/package-imports.d.ts +3 -1
  47. package/src/executors/utilities/ng-packagr/package-imports.js +2 -2
  48. package/src/executors/utilities/ng-packagr/pre-v19/stylesheet-processor.d.ts +2 -24
  49. package/src/executors/utilities/ng-packagr/pre-v19/stylesheet-processor.js +40 -107
  50. package/src/executors/utilities/ng-packagr/stylesheet-processor.di.js +4 -8
  51. package/src/executors/utilities/ng-packagr/v19+/stylesheet-processor.d.ts +1 -1
  52. package/src/executors/utilities/ng-packagr/v19+/stylesheet-processor.js +18 -11
  53. package/src/generators/add-linting/add-linting.js +8 -0
  54. package/src/generators/application/application.js +22 -8
  55. package/src/generators/application/files/base/tsconfig.app.json__tpl__ +10 -1
  56. package/src/generators/application/files/base/tsconfig.json__tpl__ +5 -6
  57. package/src/generators/application/files/ng-module/src/app/app__componentFileSuffix__.spec.ts__tpl__ +28 -0
  58. package/src/generators/application/files/ng-module/src/app/{app.component.ts__tpl__ → app__componentFileSuffix__.ts__tpl__} +4 -4
  59. package/src/generators/application/files/ng-module/src/app/app__moduleTypeSeparator__module.ts__tpl__ +17 -0
  60. package/src/generators/application/files/ng-module/src/main.ts__tpl__ +11 -3
  61. package/src/generators/application/files/nx-welcome/claimed/ng-module/src/app/{nx-welcome.component.ts__tpl__ → nx-welcome__componentFileSuffix__.ts__tpl__} +1 -1
  62. package/src/generators/application/files/nx-welcome/claimed/standalone/src/app/{nx-welcome.component.ts__tpl__ → nx-welcome__componentFileSuffix__.ts__tpl__} +1 -1
  63. package/src/generators/application/files/nx-welcome/not-configured/ng-module/src/app/{nx-welcome.component.ts__tpl__ → nx-welcome__componentFileSuffix__.ts__tpl__} +1 -1
  64. package/src/generators/application/files/nx-welcome/not-configured/standalone/src/app/{nx-welcome.component.ts__tpl__ → nx-welcome__componentFileSuffix__.ts__tpl__} +1 -1
  65. package/src/generators/application/files/nx-welcome/unclaimed/ng-module/src/app/{nx-welcome.component.ts__tpl__ → nx-welcome__componentFileSuffix__.ts__tpl__} +1 -1
  66. package/src/generators/application/files/nx-welcome/unclaimed/standalone/src/app/{nx-welcome.component.ts__tpl__ → nx-welcome__componentFileSuffix__.ts__tpl__} +1 -1
  67. package/src/generators/application/files/standalone-components/src/app/app.config.ts__tpl__ +6 -2
  68. package/src/generators/application/files/standalone-components/src/app/app__componentFileSuffix__.spec.ts__tpl__ +27 -0
  69. package/src/generators/application/files/standalone-components/src/app/{app.component.ts__tpl__ → app__componentFileSuffix__.ts__tpl__} +6 -6
  70. package/src/generators/application/files/standalone-components/src/main.ts__tpl__ +2 -2
  71. package/src/generators/application/lib/create-files.d.ts +1 -1
  72. package/src/generators/application/lib/create-files.js +18 -19
  73. package/src/generators/application/lib/create-project.d.ts +1 -1
  74. package/src/generators/application/lib/create-project.js +119 -26
  75. package/src/generators/application/lib/enable-strict-type-checking.js +4 -2
  76. package/src/generators/application/lib/index.d.ts +1 -2
  77. package/src/generators/application/lib/index.js +1 -2
  78. package/src/generators/application/lib/set-generator-defaults.js +1 -0
  79. package/src/generators/application/lib/{update-editor-tsconfig.d.ts → update-tsconfig-files.d.ts} +1 -1
  80. package/src/generators/application/lib/update-tsconfig-files.js +76 -0
  81. package/src/generators/application/schema.json +1 -1
  82. package/src/generators/component/component.js +13 -2
  83. package/src/generators/component/files/__fileName__.ts__tpl__ +1 -1
  84. package/src/generators/component/lib/component.js +11 -1
  85. package/src/generators/component/lib/module.d.ts +7 -2
  86. package/src/generators/component/lib/module.js +7 -5
  87. package/src/generators/component/lib/normalize-options.js +7 -3
  88. package/src/generators/component/schema.d.ts +1 -0
  89. package/src/generators/component/schema.json +6 -2
  90. package/src/generators/convert-to-application-executor/convert-to-application-executor.js +37 -24
  91. package/src/generators/convert-to-rspack/convert-to-rspack.js +2 -6
  92. package/src/generators/convert-to-rspack/lib/get-custom-webpack-config.js +1 -1
  93. package/src/generators/directive/directive.js +1 -1
  94. package/src/generators/directive/lib/normalize-options.js +7 -2
  95. package/src/generators/directive/schema.d.ts +1 -0
  96. package/src/generators/directive/schema.json +10 -2
  97. package/src/generators/host/host.js +21 -1
  98. package/src/generators/host/schema.d.ts +1 -0
  99. package/src/generators/host/schema.json +7 -1
  100. package/src/generators/init/init.js +1 -1
  101. package/src/generators/library/files/base/tsconfig.json__tpl__ +5 -5
  102. package/src/generators/library/files/ng-module/src/index.ts__tpl__ +1 -1
  103. package/src/generators/library/files/standalone-components/src/lib/lib.routes.ts__tpl__ +2 -2
  104. package/src/generators/library/lib/add-standalone-component.js +1 -0
  105. package/src/generators/library/lib/create-files.js +10 -3
  106. package/src/generators/library/lib/normalize-options.d.ts +3 -3
  107. package/src/generators/library/lib/normalize-options.js +6 -1
  108. package/src/generators/library/lib/normalized-schema.d.ts +2 -0
  109. package/src/generators/library/lib/set-generator-defaults.js +1 -0
  110. package/src/generators/library/lib/update-tsconfig-files.d.ts +3 -0
  111. package/src/generators/library/lib/update-tsconfig-files.js +85 -0
  112. package/src/generators/library/library.js +19 -33
  113. package/src/generators/library-secondary-entry-point/files/src/index.ts__tmpl__ +1 -1
  114. package/src/generators/library-secondary-entry-point/lib/add-files.js +2 -1
  115. package/src/generators/library-secondary-entry-point/lib/normalize-options.d.ts +2 -2
  116. package/src/generators/library-secondary-entry-point/lib/normalize-options.js +3 -0
  117. package/src/generators/library-secondary-entry-point/schema.d.ts +1 -0
  118. package/src/generators/move/lib/update-module-name.js +17 -10
  119. package/src/generators/move/lib/update-secondary-entry-points.js +0 -3
  120. package/src/generators/ng-add/migrators/builders/angular-devkit-karma.migrator.js +1 -1
  121. package/src/generators/ng-add/migrators/projects/app.migrator.js +43 -8
  122. package/src/generators/ngrx/schema.json +3 -3
  123. package/src/generators/ngrx-root-store/lib/normalize-options.js +9 -2
  124. package/src/generators/pipe/lib/normalize-options.js +4 -0
  125. package/src/generators/pipe/pipe.js +1 -1
  126. package/src/generators/pipe/schema.d.ts +1 -0
  127. package/src/generators/pipe/schema.json +11 -2
  128. package/src/generators/remote/files/standalone/src/bootstrap.server.ts__tmpl__ +4 -4
  129. package/src/generators/remote/lib/update-ssr-setup.js +5 -0
  130. package/src/generators/remote/remote.js +23 -0
  131. package/src/generators/remote/schema.d.ts +1 -0
  132. package/src/generators/remote/schema.json +7 -1
  133. package/src/generators/scam/lib/convert-component-to-scam.js +1 -3
  134. package/src/generators/scam/lib/normalize-options.js +11 -3
  135. package/src/generators/scam/schema.d.ts +1 -0
  136. package/src/generators/scam/schema.json +1 -2
  137. package/src/generators/scam-directive/lib/convert-directive-to-scam.js +1 -3
  138. package/src/generators/scam-directive/lib/normalize-options.js +11 -2
  139. package/src/generators/scam-directive/schema.d.ts +2 -0
  140. package/src/generators/scam-directive/schema.json +10 -2
  141. package/src/generators/scam-pipe/lib/convert-pipe-to-scam.js +1 -3
  142. package/src/generators/scam-pipe/lib/normalize-options.js +8 -0
  143. package/src/generators/scam-pipe/schema.d.ts +2 -0
  144. package/src/generators/scam-pipe/schema.json +5 -0
  145. package/src/generators/setup-mf/files/entry-module-files/{entry.module.ts__tmpl__ → __entryModuleFileName__.ts__tmpl__} +4 -4
  146. package/src/generators/setup-mf/files/entry-module-files/entry.routes.ts__tmpl__ +2 -2
  147. package/src/generators/setup-mf/files/entry-module-files/{entry.component.ts__tmpl__ → entry__componentFileSuffix__.ts__tmpl__} +1 -1
  148. package/src/generators/setup-mf/files/host-files/__appFileName__.spec.ts__tmpl__ +43 -0
  149. package/src/generators/setup-mf/files/standalone-entry-component-files/entry.routes.ts__tmpl__ +2 -2
  150. package/src/generators/setup-mf/files/standalone-entry-component-files/{entry.component.ts__tmpl__ → entry__componentFileSuffix__.ts__tmpl__} +3 -3
  151. package/src/generators/setup-mf/files/ts-webpack/module-federation.config.ts__tmpl__ +1 -1
  152. package/src/generators/setup-mf/files/ts-webpack/tsconfig.lint.json__tmpl__ +1 -1
  153. package/src/generators/setup-mf/files/webpack/module-federation.config.js__tmpl__ +1 -1
  154. package/src/generators/setup-mf/lib/add-remote-entry.d.ts +2 -2
  155. package/src/generators/setup-mf/lib/add-remote-entry.js +9 -3
  156. package/src/generators/setup-mf/lib/add-remote-to-host.js +11 -1
  157. package/src/generators/setup-mf/lib/fix-bootstrap.d.ts +2 -2
  158. package/src/generators/setup-mf/lib/fix-bootstrap.js +4 -4
  159. package/src/generators/setup-mf/lib/generate-config.d.ts +2 -2
  160. package/src/generators/setup-mf/lib/generate-config.js +1 -0
  161. package/src/generators/setup-mf/lib/normalize-options.d.ts +1 -1
  162. package/src/generators/setup-mf/lib/normalize-options.js +13 -0
  163. package/src/generators/setup-mf/lib/remove-dead-code-from-remote.d.ts +2 -2
  164. package/src/generators/setup-mf/lib/remove-dead-code-from-remote.js +18 -14
  165. package/src/generators/setup-mf/lib/setup-host-if-dynamic.js +1 -5
  166. package/src/generators/setup-mf/lib/setup-tspath-for-remote.d.ts +2 -2
  167. package/src/generators/setup-mf/lib/setup-tspath-for-remote.js +1 -1
  168. package/src/generators/setup-mf/lib/update-host-app-routes.d.ts +2 -2
  169. package/src/generators/setup-mf/lib/update-host-app-routes.js +12 -9
  170. package/src/generators/setup-mf/lib/update-tsconfig.d.ts +2 -2
  171. package/src/generators/setup-mf/lib/update-tsconfig.js +5 -5
  172. package/src/generators/setup-mf/schema.d.ts +7 -0
  173. package/src/generators/setup-mf/setup-mf.d.ts +2 -2
  174. package/src/generators/setup-mf/setup-mf.js +16 -6
  175. package/src/generators/setup-ssr/files/v20+/application-builder/ngmodule-src/__main__ +1 -0
  176. package/src/generators/setup-ssr/files/v20+/application-builder/ngmodule-src/app/__rootModuleFileName__ +12 -0
  177. package/src/generators/setup-ssr/files/v20+/application-builder/ngmodule-src/app/app.routes.server.ts__tpl__ +8 -0
  178. package/src/generators/setup-ssr/files/v20+/application-builder/server/__serverFileName__ +66 -0
  179. package/src/generators/setup-ssr/files/v20+/application-builder/standalone-src/__main__ +7 -0
  180. package/src/generators/setup-ssr/files/v20+/application-builder/standalone-src/app/app.config.server.ts__tpl__ +12 -0
  181. package/src/generators/setup-ssr/files/v20+/application-builder/standalone-src/app/app.routes.server.ts__tpl__ +8 -0
  182. package/src/generators/setup-ssr/files/v20+/server-builder/ngmodule-src/__main__ +1 -0
  183. package/src/generators/setup-ssr/files/v20+/server-builder/ngmodule-src/app/__rootModuleFileName__ +14 -0
  184. package/src/generators/setup-ssr/files/v20+/server-builder/root/tsconfig.server.json.template +18 -0
  185. package/src/generators/setup-ssr/files/v20+/server-builder/server/__serverFileName__ +69 -0
  186. package/src/generators/setup-ssr/files/v20+/server-builder/standalone-src/__main__ +7 -0
  187. package/src/generators/setup-ssr/files/v20+/server-builder/standalone-src/app/app.config.server.ts.template +11 -0
  188. package/src/generators/setup-ssr/lib/add-dependencies.js +11 -8
  189. package/src/generators/setup-ssr/lib/add-hydration.js +10 -3
  190. package/src/generators/setup-ssr/lib/add-server-file.js +7 -2
  191. package/src/generators/setup-ssr/lib/generate-files.js +17 -4
  192. package/src/generators/setup-ssr/lib/generate-server-ts-config.js +32 -6
  193. package/src/generators/setup-ssr/lib/normalize-options.js +5 -3
  194. package/src/generators/setup-ssr/lib/update-project-config.js +5 -0
  195. package/src/generators/setup-ssr/lib/validate-options.js +2 -2
  196. package/src/generators/setup-ssr/schema.d.ts +1 -0
  197. package/src/generators/setup-ssr/schema.json +1 -1
  198. package/src/generators/utils/add-jest.js +6 -1
  199. package/src/generators/utils/app-components-info.d.ts +9 -0
  200. package/src/generators/utils/app-components-info.js +39 -0
  201. package/src/generators/utils/artifact-types.d.ts +3 -0
  202. package/src/generators/utils/artifact-types.js +33 -0
  203. package/src/generators/utils/assert-mf-utils.d.ts +1 -0
  204. package/src/generators/utils/assert-mf-utils.js +11 -0
  205. package/src/generators/utils/ensure-angular-dependencies.js +6 -3
  206. package/src/generators/utils/export-scam.d.ts +1 -0
  207. package/src/generators/utils/export-scam.js +1 -2
  208. package/src/generators/utils/find-module.js +18 -13
  209. package/src/generators/utils/storybook-ast/component-info.js +40 -24
  210. package/src/generators/utils/storybook-ast/module-info.d.ts +1 -1
  211. package/src/generators/utils/storybook-ast/module-info.js +3 -8
  212. package/src/generators/utils/testing.js +28 -28
  213. package/src/generators/utils/version-utils.js +2 -2
  214. package/src/generators/web-worker/lib/add-snippet.js +3 -3
  215. package/src/migrations/update-21-2-0/migrate-provide-server-rendering-import.d.ts +2 -0
  216. package/src/migrations/update-21-2-0/migrate-provide-server-rendering-import.js +110 -0
  217. package/src/migrations/update-21-2-0/replace-provide-server-routing.d.ts +2 -0
  218. package/src/migrations/update-21-2-0/replace-provide-server-routing.js +103 -0
  219. package/src/migrations/update-21-2-0/set-generator-defaults-for-previous-style-guide.d.ts +2 -0
  220. package/src/migrations/update-21-2-0/set-generator-defaults-for-previous-style-guide.js +47 -0
  221. package/src/migrations/update-21-2-0/update-angular-cli.d.ts +3 -0
  222. package/src/migrations/update-21-2-0/update-angular-cli.js +23 -0
  223. package/src/migrations/update-21-2-0/update-module-resolution.d.ts +2 -0
  224. package/src/migrations/update-21-2-0/update-module-resolution.js +45 -0
  225. package/src/plugins/plugin.js +22 -13
  226. package/src/utils/backward-compatible-versions.d.ts +2 -2
  227. package/src/utils/backward-compatible-versions.js +22 -19
  228. package/src/utils/nx-devkit/ast-utils.js +17 -3
  229. package/src/utils/nx-devkit/testing.js +9 -9
  230. package/src/utils/targets.d.ts +2 -1
  231. package/src/utils/targets.js +6 -0
  232. package/src/utils/versions.d.ts +4 -3
  233. package/src/utils/versions.js +5 -4
  234. package/mf/mf.d.ts +0 -69
  235. package/src/generators/application/files/base-pre18/src/favicon.ico +0 -0
  236. package/src/generators/application/files/ng-module/src/app/app.component.spec.ts__tpl__ +0 -29
  237. package/src/generators/application/files/ng-module/src/app/app.module.ts__tpl__ +0 -17
  238. package/src/generators/application/files/standalone-components/src/app/app.component.__style__ +0 -0
  239. package/src/generators/application/files/standalone-components/src/app/app.component.spec.ts__tpl__ +0 -28
  240. package/src/generators/application/lib/set-app-strict-default.d.ts +0 -2
  241. package/src/generators/application/lib/set-app-strict-default.js +0 -13
  242. package/src/generators/application/lib/update-editor-tsconfig.js +0 -21
  243. package/src/generators/library/lib/enable-strict-type-checking.d.ts +0 -7
  244. package/src/generators/library/lib/enable-strict-type-checking.js +0 -47
  245. package/src/generators/library/lib/update-tsconfig.d.ts +0 -3
  246. package/src/generators/library/lib/update-tsconfig.js +0 -36
  247. package/src/generators/setup-mf/files/host-files/app.component.spec.ts__tmpl__ +0 -47
  248. /package/src/generators/application/files/{base-18+ → base}/public/favicon.ico +0 -0
  249. /package/src/generators/application/files/{base-pre18/src/assets/.gitkeep__tpl__ → ng-module/src/app/app__componentFileSuffix__.__style__} +0 -0
  250. /package/src/generators/application/files/ng-module/src/app/{app.component.html__tpl__ → app__componentFileSuffix__.html__tpl__} +0 -0
  251. /package/src/generators/application/files/{ng-module/src/app/app.component.__style__ → standalone-components/src/app/app__componentFileSuffix__.__style__} +0 -0
  252. /package/src/generators/application/files/standalone-components/src/app/{app.component.html__tpl__ → app__componentFileSuffix__.html__tpl__} +0 -0
  253. /package/src/generators/component/files/{__fileName__.html__tpl__ → __fileName____ngext__.html__tpl__} +0 -0
  254. /package/src/generators/library/files/ng-module/src/lib/{__libFileName__.module.ts__tpl__ → __libFileName____moduleTypeSeparator__module.ts__tpl__} +0 -0
  255. /package/src/generators/library-secondary-entry-point/files/src/lib/{__fileName__.module.ts__tmpl__ → __fileName____moduleTypeSeparator__module.ts__tmpl__} +0 -0
  256. /package/src/generators/setup-ssr/files/{v19+ → v19}/application-builder/ngmodule-src/__main__ +0 -0
  257. /package/src/generators/setup-ssr/files/{v19+ → v19}/application-builder/ngmodule-src/app/__rootModuleFileName__ +0 -0
  258. /package/src/generators/setup-ssr/files/{v19+ → v19}/application-builder/ngmodule-src/app/app.routes.server.ts__tpl__ +0 -0
  259. /package/src/generators/setup-ssr/files/{v19+ → v19}/application-builder/server/__serverFileName__ +0 -0
  260. /package/src/generators/setup-ssr/files/{v19+ → v19}/application-builder/standalone-src/__main__ +0 -0
  261. /package/src/generators/setup-ssr/files/{v19+ → v19}/application-builder/standalone-src/app/app.config.server.ts__tpl__ +0 -0
  262. /package/src/generators/setup-ssr/files/{v19+ → v19}/application-builder/standalone-src/app/app.routes.server.ts__tpl__ +0 -0
  263. /package/src/generators/setup-ssr/files/{v19+ → v19}/application-builder-common-engine/server/__serverFileName__ +0 -0
  264. /package/src/generators/setup-ssr/files/{v19+ → v19}/server-builder/ngmodule-src/__main__ +0 -0
  265. /package/src/generators/setup-ssr/files/{v19+ → v19}/server-builder/ngmodule-src/app/__rootModuleFileName__ +0 -0
  266. /package/src/generators/setup-ssr/files/{v19+ → v19}/server-builder/root/tsconfig.server.json.template +0 -0
  267. /package/src/generators/setup-ssr/files/{v19+ → v19}/server-builder/server/__serverFileName__ +0 -0
  268. /package/src/generators/setup-ssr/files/{v19+ → v19}/server-builder/standalone-src/__main__ +0 -0
  269. /package/src/generators/setup-ssr/files/{v19+ → v19}/server-builder/standalone-src/app/app.config.server.ts.template +0 -0
@@ -0,0 +1,110 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.default = default_1;
4
+ const tslib_1 = require("tslib");
5
+ const devkit_1 = require("@nx/devkit");
6
+ const ts = tslib_1.__importStar(require("typescript"));
7
+ const file_change_recorder_1 = require("../../utils/file-change-recorder");
8
+ const versions_1 = require("../../utils/versions");
9
+ const projects_1 = require("../utils/projects");
10
+ async function default_1(tree) {
11
+ const projects = await (0, projects_1.getProjectsFilteredByDependencies)(tree, [
12
+ 'npm:@angular/platform-server',
13
+ ]);
14
+ if (!projects.length) {
15
+ return;
16
+ }
17
+ let isSsrInstalled = false;
18
+ for (const { project } of projects) {
19
+ (0, devkit_1.visitNotIgnoredFiles)(tree, project.root, (file) => {
20
+ if (!file.endsWith('.ts') || file.endsWith('.d.ts')) {
21
+ return;
22
+ }
23
+ const shouldInstallSsr = processFile(tree, file);
24
+ if (shouldInstallSsr && !isSsrInstalled) {
25
+ isSsrInstalled = true;
26
+ (0, devkit_1.addDependenciesToPackageJson)(tree, { '@angular/ssr': versions_1.angularDevkitVersion }, {}, undefined, true);
27
+ }
28
+ });
29
+ }
30
+ await (0, devkit_1.formatFiles)(tree);
31
+ }
32
+ function processFile(tree, filePath) {
33
+ const content = tree.read(filePath, 'utf-8');
34
+ if (!content.includes('provideServerRendering') ||
35
+ !content.includes('@angular/platform-server')) {
36
+ return false;
37
+ }
38
+ const sourceFile = ts.createSourceFile(filePath, content, ts.ScriptTarget.Latest, true);
39
+ let platformServerHasProvideServerRendering = false;
40
+ let platformServerImportNode;
41
+ let ssrImportNode;
42
+ const platformServerImports = new Set();
43
+ sourceFile.forEachChild((node) => {
44
+ if (!ts.isImportDeclaration(node)) {
45
+ return;
46
+ }
47
+ const moduleSpecifier = node.moduleSpecifier.getText(sourceFile);
48
+ if (moduleSpecifier.includes('@angular/platform-server')) {
49
+ platformServerImportNode = node;
50
+ const importClause = node.importClause;
51
+ if (importClause &&
52
+ importClause.namedBindings &&
53
+ ts.isNamedImports(importClause.namedBindings)) {
54
+ const namedImports = importClause.namedBindings.elements.map((e) => e.getText(sourceFile));
55
+ namedImports.forEach((importName) => {
56
+ if (importName === 'provideServerRendering') {
57
+ platformServerHasProvideServerRendering = true;
58
+ }
59
+ else {
60
+ platformServerImports.add(importName);
61
+ }
62
+ });
63
+ }
64
+ }
65
+ else if (moduleSpecifier.includes('@angular/ssr')) {
66
+ ssrImportNode = node;
67
+ }
68
+ });
69
+ if (!platformServerHasProvideServerRendering) {
70
+ return;
71
+ }
72
+ const recorder = new file_change_recorder_1.FileChangeRecorder(tree, filePath);
73
+ const printer = ts.createPrinter({
74
+ newLine: ts.NewLineKind.LineFeed,
75
+ });
76
+ if (ssrImportNode?.importClause?.namedBindings &&
77
+ ts.isNamedImports(ssrImportNode.importClause.namedBindings)) {
78
+ const namedBindingsNode = ssrImportNode.importClause
79
+ .namedBindings;
80
+ const updatedNamedBindingsNode = ts.factory.updateNamedImports(namedBindingsNode, [
81
+ ...namedBindingsNode.elements,
82
+ ts.factory.createImportSpecifier(false, undefined, ts.factory.createIdentifier('provideServerRendering')),
83
+ ]);
84
+ recorder.replace(namedBindingsNode, printer.printNode(ts.EmitHint.Unspecified, updatedNamedBindingsNode, sourceFile));
85
+ }
86
+ else {
87
+ /**
88
+ * Add a new import statement with the needed named import in case it
89
+ * doesn't exist yet or it doesn't have named imports.
90
+ *
91
+ * It would be quite uncommon to have an import from @angular/ssr without
92
+ * named imports, but if that's the case, we'll just add an extra import
93
+ * statement with the needed named import.
94
+ */
95
+ recorder.insertLeft(0, `import { provideServerRendering } from '@angular/ssr';\n`);
96
+ }
97
+ if (platformServerImports.size > 0) {
98
+ // we only collected platform server imports because there were named
99
+ // imports, so we can safely use the type
100
+ const namedBindingsNode = platformServerImportNode.importClause
101
+ .namedBindings;
102
+ const updatedNamedBindingsNode = ts.factory.updateNamedImports(namedBindingsNode, namedBindingsNode.elements.filter((e) => platformServerImports.has(e.getText(sourceFile))));
103
+ recorder.replace(namedBindingsNode, printer.printNode(ts.EmitHint.Unspecified, updatedNamedBindingsNode, sourceFile));
104
+ }
105
+ else {
106
+ recorder.remove(platformServerImportNode.getFullStart(), platformServerImportNode.getEnd());
107
+ }
108
+ recorder.applyChanges();
109
+ return true;
110
+ }
@@ -0,0 +1,2 @@
1
+ import { type Tree } from '@nx/devkit';
2
+ export default function (tree: Tree): Promise<void>;
@@ -0,0 +1,103 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.default = default_1;
4
+ const tslib_1 = require("tslib");
5
+ const devkit_1 = require("@nx/devkit");
6
+ const tsquery_1 = require("@phenomnomnominal/tsquery");
7
+ const ts = tslib_1.__importStar(require("typescript"));
8
+ const file_change_recorder_1 = require("../../utils/file-change-recorder");
9
+ const projects_1 = require("../utils/projects");
10
+ async function default_1(tree) {
11
+ const projects = await (0, projects_1.getProjectsFilteredByDependencies)(tree, [
12
+ 'npm:@angular/ssr',
13
+ ]);
14
+ if (!projects.length) {
15
+ return;
16
+ }
17
+ for (const { project } of projects) {
18
+ (0, devkit_1.visitNotIgnoredFiles)(tree, project.root, (file) => {
19
+ if (!file.endsWith('.ts') || file.endsWith('.d.ts')) {
20
+ return;
21
+ }
22
+ processFile(tree, file);
23
+ });
24
+ }
25
+ await (0, devkit_1.formatFiles)(tree);
26
+ }
27
+ function processFile(tree, filePath) {
28
+ const content = tree.read(filePath, 'utf-8');
29
+ if (!content.includes('provideServerRouting') ||
30
+ !content.includes('@angular/ssr')) {
31
+ return;
32
+ }
33
+ const sourceFile = tsquery_1.tsquery.ast(content);
34
+ const providersArray = tsquery_1.tsquery.query(sourceFile, 'PropertyAssignment:has(Identifier[name=providers]) > ArrayLiteralExpression:has(CallExpression > Identifier[name=provideServerRouting])', { visitAllChildren: true })[0];
35
+ if (!providersArray) {
36
+ return;
37
+ }
38
+ const recorder = new file_change_recorder_1.FileChangeRecorder(tree, filePath);
39
+ const printer = ts.createPrinter({
40
+ newLine: ts.NewLineKind.LineFeed,
41
+ });
42
+ let provideServerRenderingCall;
43
+ let provideServerRoutingCall;
44
+ const providerCallNodes = providersArray.elements.filter((el) => ts.isCallExpression(el));
45
+ for (const node of providerCallNodes) {
46
+ if (node.expression.getText() === 'provideServerRendering') {
47
+ provideServerRenderingCall = node;
48
+ }
49
+ else if (node.expression.getText() === 'provideServerRouting') {
50
+ provideServerRoutingCall = node;
51
+ }
52
+ }
53
+ const withRoutesCall = ts.factory.createCallExpression(ts.factory.createIdentifier('withRoutes'), undefined, [provideServerRoutingCall.arguments.at(0)]);
54
+ let updatedProvidersArray;
55
+ if (provideServerRenderingCall) {
56
+ // remove the "provideServerRouting" call and update the existing "provideServerRendering" call
57
+ updatedProvidersArray = ts.factory.updateArrayLiteralExpression(providersArray, providersArray.elements
58
+ .filter((el) => !(ts.isCallExpression(el) &&
59
+ ts.isIdentifier(el.expression) &&
60
+ el.expression.text === 'provideServerRouting'))
61
+ .map((el) => {
62
+ if (ts.isCallExpression(el) &&
63
+ ts.isIdentifier(el.expression) &&
64
+ el.expression.text === 'provideServerRendering') {
65
+ return ts.factory.updateCallExpression(el, el.expression, el.typeArguments, [withRoutesCall, ...provideServerRoutingCall.arguments.slice(1)]);
66
+ }
67
+ return el;
68
+ }));
69
+ }
70
+ else {
71
+ // replace the "provideServerRouting" call with the new "provideServerRendering" call
72
+ updatedProvidersArray = ts.factory.updateArrayLiteralExpression(providersArray, providersArray.elements.map((el) => {
73
+ if (ts.isCallExpression(el) &&
74
+ ts.isIdentifier(el.expression) &&
75
+ el.expression.text === 'provideServerRouting') {
76
+ return ts.factory.createCallExpression(ts.factory.createIdentifier('provideServerRendering'), undefined, [withRoutesCall, ...provideServerRoutingCall.arguments.slice(1)]);
77
+ }
78
+ return el;
79
+ }));
80
+ }
81
+ recorder.replace(providersArray, printer.printNode(ts.EmitHint.Unspecified, updatedProvidersArray, sourceFile));
82
+ const importDecl = sourceFile.statements.find((stmt) => ts.isImportDeclaration(stmt) &&
83
+ ts.isStringLiteral(stmt.moduleSpecifier) &&
84
+ stmt.moduleSpecifier.text === '@angular/ssr');
85
+ if (importDecl?.importClause?.namedBindings) {
86
+ const namedBindings = importDecl?.importClause.namedBindings;
87
+ if (ts.isNamedImports(namedBindings)) {
88
+ // remove the "provideServerRouting" import and ensure we have the "withRoutes" import
89
+ const updatedElementNames = new Set([
90
+ ...namedBindings.elements
91
+ .map((el) => el.getText())
92
+ .filter((x) => x !== 'provideServerRouting'),
93
+ 'withRoutes',
94
+ ]);
95
+ const updatedNamedBindings = ts.factory.updateNamedImports(namedBindings, Array.from(updatedElementNames).map((name) => ts.factory.createImportSpecifier(false, undefined, ts.factory.createIdentifier(name))));
96
+ const printer = ts.createPrinter({
97
+ newLine: ts.NewLineKind.LineFeed,
98
+ });
99
+ recorder.replace(namedBindings, printer.printNode(ts.EmitHint.Unspecified, updatedNamedBindings, sourceFile));
100
+ }
101
+ }
102
+ recorder.applyChanges();
103
+ }
@@ -0,0 +1,2 @@
1
+ import { type Tree } from '@nx/devkit';
2
+ export default function (tree: Tree): Promise<void>;
@@ -0,0 +1,47 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.default = default_1;
4
+ const devkit_1 = require("@nx/devkit");
5
+ const TYPE_GENERATORS = ['component', 'directive', 'service'];
6
+ const TYPE_SEPARATOR_GENERATORS = [
7
+ 'guard',
8
+ 'interceptor',
9
+ 'module',
10
+ 'pipe',
11
+ 'resolver',
12
+ ];
13
+ async function default_1(tree) {
14
+ const nxJson = (0, devkit_1.readNxJson)(tree);
15
+ nxJson.generators ??= {};
16
+ for (const generator of TYPE_GENERATORS) {
17
+ setDefault(nxJson.generators, '@nx/angular', generator, 'type', generator);
18
+ setDefault(nxJson.generators, '@schematics/angular', generator, 'type', generator);
19
+ }
20
+ setDefault(nxJson.generators, '@nx/angular', 'scam', 'type', 'component');
21
+ setDefault(nxJson.generators, '@nx/angular', 'scam-directive', 'type', 'directive');
22
+ for (const generator of TYPE_SEPARATOR_GENERATORS) {
23
+ setDefault(nxJson.generators, '@nx/angular', generator, 'typeSeparator', '.');
24
+ setDefault(nxJson.generators, '@schematics/angular', generator, 'typeSeparator', '.');
25
+ }
26
+ (0, devkit_1.updateNxJson)(tree, nxJson);
27
+ await (0, devkit_1.formatFiles)(tree);
28
+ }
29
+ function setDefault(generators, collection, generator, option, value) {
30
+ const generatorKey = `${collection}:${generator}`;
31
+ if (generators[generatorKey]?.[option] ||
32
+ generators[collection]?.[generator]?.[option]) {
33
+ return;
34
+ }
35
+ if (generators[generatorKey]) {
36
+ generators[generatorKey][option] = value;
37
+ }
38
+ else if (generators[collection]?.[generator]) {
39
+ generators[collection][generator][option] = value;
40
+ }
41
+ else if (generators[collection]) {
42
+ generators[collection][generator] = { [option]: value };
43
+ }
44
+ else {
45
+ generators[generatorKey] = { [option]: value };
46
+ }
47
+ }
@@ -0,0 +1,3 @@
1
+ import { Tree } from '@nx/devkit';
2
+ export declare const angularCliVersion = "20.0.0-rc.3";
3
+ export default function (tree: Tree): Promise<void>;
@@ -0,0 +1,23 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.angularCliVersion = void 0;
4
+ exports.default = default_1;
5
+ const devkit_1 = require("@nx/devkit");
6
+ exports.angularCliVersion = '20.0.0-rc.3';
7
+ async function default_1(tree) {
8
+ let shouldFormat = false;
9
+ (0, devkit_1.updateJson)(tree, 'package.json', (json) => {
10
+ if (json.devDependencies?.['@angular/cli']) {
11
+ json.devDependencies['@angular/cli'] = exports.angularCliVersion;
12
+ shouldFormat = true;
13
+ }
14
+ else if (json.dependencies?.['@angular/cli']) {
15
+ json.dependencies['@angular/cli'] = exports.angularCliVersion;
16
+ shouldFormat = true;
17
+ }
18
+ return json;
19
+ });
20
+ if (shouldFormat) {
21
+ await (0, devkit_1.formatFiles)(tree);
22
+ }
23
+ }
@@ -0,0 +1,2 @@
1
+ import { type Tree } from '@nx/devkit';
2
+ export default function (tree: Tree): Promise<void>;
@@ -0,0 +1,45 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.default = default_1;
4
+ const devkit_1 = require("@nx/devkit");
5
+ const targets_1 = require("../../utils/targets");
6
+ const projects_1 = require("../utils/projects");
7
+ async function default_1(tree) {
8
+ const uniqueTsConfigs = new Set();
9
+ const projects = await (0, projects_1.getProjectsFilteredByDependencies)(tree, [
10
+ 'npm:@angular/core',
11
+ ]);
12
+ for (const { project } of projects) {
13
+ for (const [, target] of (0, targets_1.allProjectTargets)(project)) {
14
+ for (const [, options] of (0, targets_1.allTargetOptions)(target)) {
15
+ if (typeof options?.tsConfig === 'string') {
16
+ uniqueTsConfigs.add(options.tsConfig);
17
+ }
18
+ }
19
+ }
20
+ }
21
+ for (const tsConfig of uniqueTsConfigs) {
22
+ if (tree.exists(tsConfig)) {
23
+ updateModuleResolution(tree, tsConfig);
24
+ }
25
+ }
26
+ await (0, devkit_1.formatFiles)(tree);
27
+ }
28
+ function updateModuleResolution(tree, tsConfigPath) {
29
+ const tsConfig = (0, devkit_1.readJson)(tree, tsConfigPath);
30
+ if (!tsConfig.compilerOptions) {
31
+ return;
32
+ }
33
+ const { compilerOptions } = tsConfig;
34
+ // Only update if module is not 'preserve' and moduleResolution is not already 'bundler'
35
+ if (compilerOptions.module === 'preserve' ||
36
+ compilerOptions.moduleResolution === 'bundler') {
37
+ return;
38
+ }
39
+ // Update moduleResolution to 'bundler'
40
+ (0, devkit_1.updateJson)(tree, tsConfigPath, (json) => {
41
+ json.compilerOptions ??= {};
42
+ json.compilerOptions.moduleResolution = 'bundler';
43
+ return json;
44
+ });
45
+ }
@@ -21,8 +21,14 @@ const knownExecutors = {
21
21
  '@angular-devkit/build-angular:ng-packagr',
22
22
  '@angular/build:ng-packagr',
23
23
  ]),
24
- devServer: new Set(['@angular-devkit/build-angular:dev-server']),
25
- extractI18n: new Set(['@angular-devkit/build-angular:extract-i18n']),
24
+ devServer: new Set([
25
+ '@angular-devkit/build-angular:dev-server',
26
+ '@angular/build:dev-server',
27
+ ]),
28
+ extractI18n: new Set([
29
+ '@angular-devkit/build-angular:extract-i18n',
30
+ '@angular/build:extract-i18n',
31
+ ]),
26
32
  prerender: new Set([
27
33
  '@angular-devkit/build-angular:prerender',
28
34
  '@nguniversal/builders:prerender',
@@ -32,7 +38,10 @@ const knownExecutors = {
32
38
  '@angular-devkit/build-angular:ssr-dev-server',
33
39
  '@nguniversal/builders:ssr-dev-server',
34
40
  ]),
35
- test: new Set(['@angular-devkit/build-angular:karma']),
41
+ test: new Set([
42
+ '@angular-devkit/build-angular:karma',
43
+ '@angular/build:karma',
44
+ ]),
36
45
  };
37
46
  const pmc = (0, devkit_1.getPackageManagerCommand)();
38
47
  function readProjectsCache(cachePath) {
@@ -111,7 +120,7 @@ async function buildAngularProjects(configFilePath, options, angularWorkspaceRoo
111
120
  appShellTargets.push({ target: nxTargetName, project: projectName });
112
121
  }
113
122
  else if (knownExecutors.build.has(angularTarget.builder)) {
114
- await updateBuildTarget(nxTargetName, targets[nxTargetName], angularTarget, context, angularWorkspaceRoot, project.root, namedInputs);
123
+ await updateBuildTarget(projectName, nxTargetName, targets[nxTargetName], angularTarget, context, angularWorkspaceRoot, project.root, namedInputs);
115
124
  }
116
125
  else if (knownExecutors.devServer.has(angularTarget.builder)) {
117
126
  targets[nxTargetName].continuous = true;
@@ -196,21 +205,21 @@ function updateAppShellTarget(projectName, targetName, projects, angularJson, an
196
205
  target.inputs = inputs;
197
206
  target.outputs = outputs;
198
207
  }
199
- async function updateBuildTarget(targetName, target, angularTarget, context, angularWorkspaceRoot, projectRoot, namedInputs) {
208
+ async function updateBuildTarget(projectName, targetName, target, angularTarget, context, angularWorkspaceRoot, projectRoot, namedInputs) {
200
209
  target.dependsOn = [`^${targetName}`];
201
- if (angularTarget.options?.outputPath) {
202
- const fullOutputPath = (0, node_path_1.join)(context.workspaceRoot, angularWorkspaceRoot, angularTarget.options.outputPath);
203
- target.outputs = [
204
- getOutput(fullOutputPath, context.workspaceRoot, angularWorkspaceRoot, projectRoot),
205
- ];
206
- }
207
- else if (angularTarget.builder === '@angular-devkit/build-angular:ng-packagr' ||
210
+ if (angularTarget.builder === '@angular-devkit/build-angular:ng-packagr' ||
208
211
  angularTarget.builder === '@angular/build:ng-packagr') {
209
212
  const outputs = await getNgPackagrOutputs(angularTarget, angularWorkspaceRoot, projectRoot, context);
210
213
  if (outputs.length) {
211
214
  target.outputs = outputs;
212
215
  }
213
216
  }
217
+ else {
218
+ const fullOutputPath = (0, node_path_1.join)(context.workspaceRoot, angularWorkspaceRoot, angularTarget.options?.outputPath ?? posix.join('dist', projectName));
219
+ target.outputs = [
220
+ getOutput(fullOutputPath, context.workspaceRoot, angularWorkspaceRoot, projectRoot),
221
+ ];
222
+ }
214
223
  if (target.outputs?.length) {
215
224
  // make it cacheable if we were able to identify outputs
216
225
  target.cache = true;
@@ -272,7 +281,7 @@ function updatePrerenderTarget(projectName, targetName, projects, angularJson) {
272
281
  target.outputs = outputs;
273
282
  }
274
283
  async function getNgPackagrOutputs(target, angularWorkspaceRoot, projectRoot, context) {
275
- let ngPackageJsonPath = (0, node_path_1.join)(context.workspaceRoot, angularWorkspaceRoot, target.options.project);
284
+ let ngPackageJsonPath = (0, node_path_1.join)(context.workspaceRoot, angularWorkspaceRoot, target.options?.project ?? (0, node_path_1.join)(projectRoot, 'ng-package.json'));
276
285
  const readConfig = async (configPath) => {
277
286
  if (!(0, node_fs_1.existsSync)(configPath)) {
278
287
  return undefined;
@@ -1,11 +1,11 @@
1
1
  import * as latestVersions from './versions';
2
- type SupportedVersions = 'angularV17' | 'angularV18';
2
+ type SupportedVersions = 'angularV18' | 'angularV19';
3
3
  type LatestPackageVersionNames = Exclude<keyof typeof latestVersions, 'nxVersion'>;
4
4
  type CompatPackageVersionNames = LatestPackageVersionNames;
5
5
  export type PackageVersionNames = LatestPackageVersionNames | CompatPackageVersionNames;
6
6
  export type VersionMap = {
7
- angularV17: Record<Exclude<CompatPackageVersionNames, 'typescriptEslintVersion'>, string>;
8
7
  angularV18: Record<CompatPackageVersionNames, string>;
8
+ angularV19: Record<CompatPackageVersionNames, string>;
9
9
  };
10
10
  export type PackageLatestVersions = Record<LatestPackageVersionNames, string>;
11
11
  export type PackageCompatVersions = VersionMap[SupportedVersions];
@@ -2,12 +2,12 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.backwardCompatibleVersions = void 0;
4
4
  exports.backwardCompatibleVersions = {
5
- angularV17: {
6
- angularVersion: '~17.3.0',
7
- angularDevkitVersion: '~17.3.0',
8
- ngPackagrVersion: '~17.3.0',
5
+ angularV18: {
6
+ angularVersion: '~18.2.0',
7
+ angularDevkitVersion: '~18.2.0',
8
+ ngPackagrVersion: '~18.2.0',
9
9
  angularRspackVersion: '~20.6.1',
10
- ngrxVersion: '~17.0.0',
10
+ ngrxVersion: '~18.0.2',
11
11
  rxjsVersion: '~7.8.0',
12
12
  zoneJsVersion: '~0.14.3',
13
13
  angularJsVersion: '1.7.9',
@@ -17,27 +17,29 @@ exports.backwardCompatibleVersions = {
17
17
  expressVersion: '^4.21.2',
18
18
  typesExpressVersion: '^4.17.21',
19
19
  browserSyncVersion: '^3.0.0',
20
- moduleFederationNodeVersion: '~2.3.0',
21
- moduleFederationEnhancedVersion: '~0.2.3',
22
- angularEslintVersion: '~17.3.0',
20
+ moduleFederationNodeVersion: '~2.5.0',
21
+ moduleFederationEnhancedVersion: '0.6.9',
22
+ angularEslintVersion: '^18.3.0',
23
+ typescriptEslintVersion: '^7.16.0',
23
24
  tailwindVersion: '^3.0.2',
24
25
  postcssVersion: '^8.4.5',
25
26
  postcssUrlVersion: '~10.1.3',
26
27
  autoprefixerVersion: '^10.4.0',
27
28
  tsNodeVersion: '10.9.1',
28
- jestPresetAngularVersion: '~14.0.3',
29
+ jestPresetAngularVersion: '~14.1.0',
29
30
  typesNodeVersion: '18.16.9',
30
31
  jasmineMarblesVersion: '^0.9.2',
31
32
  jsoncEslintParserVersion: '^2.1.0',
33
+ webpackMergeVersion: '^5.8.0',
32
34
  },
33
- angularV18: {
34
- angularVersion: '~18.2.0',
35
- angularDevkitVersion: '~18.2.0',
36
- ngPackagrVersion: '~18.2.0',
35
+ angularV19: {
36
+ angularVersion: '~19.2.0',
37
+ angularDevkitVersion: '~19.2.0',
38
+ ngPackagrVersion: '~19.2.0',
37
39
  angularRspackVersion: '~20.6.1',
38
- ngrxVersion: '~18.0.2',
40
+ ngrxVersion: '~19.1.0',
39
41
  rxjsVersion: '~7.8.0',
40
- zoneJsVersion: '~0.14.3',
42
+ zoneJsVersion: '~0.15.0',
41
43
  angularJsVersion: '1.7.9',
42
44
  tsLibVersion: '^2.3.0',
43
45
  corsVersion: '~2.8.5',
@@ -45,18 +47,19 @@ exports.backwardCompatibleVersions = {
45
47
  expressVersion: '^4.21.2',
46
48
  typesExpressVersion: '^4.17.21',
47
49
  browserSyncVersion: '^3.0.0',
48
- moduleFederationNodeVersion: '~2.5.0',
49
- moduleFederationEnhancedVersion: '0.6.9',
50
- angularEslintVersion: '^18.3.0',
50
+ moduleFederationNodeVersion: '^2.6.26',
51
+ moduleFederationEnhancedVersion: '^0.9.0',
52
+ angularEslintVersion: '^19.2.0',
51
53
  typescriptEslintVersion: '^7.16.0',
52
54
  tailwindVersion: '^3.0.2',
53
55
  postcssVersion: '^8.4.5',
54
56
  postcssUrlVersion: '~10.1.3',
55
57
  autoprefixerVersion: '^10.4.0',
56
58
  tsNodeVersion: '10.9.1',
57
- jestPresetAngularVersion: '~14.1.0',
59
+ jestPresetAngularVersion: '~14.4.0',
58
60
  typesNodeVersion: '18.16.9',
59
61
  jasmineMarblesVersion: '^0.9.2',
60
62
  jsoncEslintParserVersion: '^2.1.0',
63
+ webpackMergeVersion: '^5.8.0',
61
64
  },
62
65
  };
@@ -444,9 +444,18 @@ function getListOfRoutes(source) {
444
444
  }
445
445
  function isNgStandaloneApp(tree, projectName) {
446
446
  const project = (0, devkit_1.readProjectConfiguration)(tree, projectName);
447
- const mainFile = project.targets?.build?.options?.main ??
447
+ let mainFile = project.targets?.build?.options?.main ??
448
448
  project.targets?.build?.options?.browser;
449
- if (project.projectType !== 'application' || !mainFile) {
449
+ let hasMainFile = false;
450
+ if (mainFile) {
451
+ hasMainFile = true;
452
+ }
453
+ else {
454
+ const sourceRoot = project.sourceRoot ?? (0, devkit_1.joinPathFragments)(project.root, 'src');
455
+ mainFile = (0, devkit_1.joinPathFragments)(sourceRoot, 'main.ts');
456
+ hasMainFile = tree.exists(mainFile);
457
+ }
458
+ if (project.projectType !== 'application' || !hasMainFile) {
450
459
  return false;
451
460
  }
452
461
  (0, ensure_typescript_1.ensureTypescript)();
@@ -548,7 +557,12 @@ function readBootstrapInfo(host, app) {
548
557
  let mainPath;
549
558
  try {
550
559
  mainPath =
551
- config.targets.build.options.main ?? config.targets.build.options.browser;
560
+ config.targets.build.options?.main ??
561
+ config.targets.build.options?.browser;
562
+ if (!mainPath) {
563
+ const sourceRoot = config.sourceRoot ?? (0, devkit_1.joinPathFragments)(config.root, 'src');
564
+ mainPath = (0, devkit_1.joinPathFragments)(sourceRoot, 'main.ts');
565
+ }
552
566
  }
553
567
  catch (e) {
554
568
  throw new Error('Main file cannot be located');
@@ -18,24 +18,24 @@ function createApp(tree, appName, routing = true) {
18
18
  // save for getAppDir() lookup by external *.spec.ts tests
19
19
  appConfig = {
20
20
  appName,
21
- appModule: `${appName}/src/app/app.module.ts`,
21
+ appModule: `${appName}/src/app/app-module.ts`,
22
22
  };
23
23
  tree.write(appConfig.appModule, `import { NgModule } from '@angular/core';
24
24
  import { BrowserModule } from '@angular/platform-browser';
25
25
  ${routing ? "import { RouterModule } from '@angular/router'" : ''};
26
- import { AppComponent } from './app.component';
26
+ import { App } from './app';
27
27
  @NgModule({
28
28
  imports: [BrowserModule, ${routing ? 'RouterModule.forRoot([])' : ''}],
29
- declarations: [AppComponent],
30
- bootstrap: [AppComponent]
29
+ declarations: [App],
30
+ bootstrap: [App]
31
31
  })
32
32
  export class AppModule {}
33
33
  `);
34
- tree.write(`${appName}/src/main.ts`, `import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';
34
+ tree.write(`${appName}/src/main.ts`, `import { platformBrowser } from '@angular/platform-browser';
35
35
 
36
- import { AppModule } from './app/app.module';
36
+ import { AppModule } from './app/app-module';
37
37
 
38
- platformBrowserDynamic()
38
+ platformBrowser()
39
39
  .bootstrapModule(AppModule)
40
40
  .catch(err => console.log(err));
41
41
  `);
@@ -65,7 +65,7 @@ function createLib(tree, libName) {
65
65
  const { name, className, fileName, propertyName } = (0, devkit_1.names)(libName);
66
66
  libConfig = {
67
67
  name,
68
- module: `${propertyName}/src/lib/${fileName}.module.ts`,
68
+ module: `${propertyName}/src/lib/${fileName}-module.ts`,
69
69
  barrel: `${propertyName}/src/index.ts`,
70
70
  };
71
71
  tree.write(libConfig.module, `import { NgModule } from '@angular/core';
@@ -78,6 +78,6 @@ import { CommonModule } from '@angular/common';
78
78
  })
79
79
  export class ${className}Module { }
80
80
  `);
81
- tree.write(libConfig.barrel, `export * from './lib/${fileName}.module';
81
+ tree.write(libConfig.barrel, `export * from './lib/${fileName}-module';
82
82
  `);
83
83
  }
@@ -1,2 +1,3 @@
1
- import { TargetConfiguration } from '@nx/devkit';
1
+ import type { ProjectConfiguration, TargetConfiguration } from '@nx/devkit';
2
+ export declare function allProjectTargets<T>(project: ProjectConfiguration): Iterable<[name: string, target: TargetConfiguration<T>]>;
2
3
  export declare function allTargetOptions<T>(target: TargetConfiguration<T>): Iterable<[string | undefined, T]>;
@@ -1,6 +1,12 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.allProjectTargets = allProjectTargets;
3
4
  exports.allTargetOptions = allTargetOptions;
5
+ function* allProjectTargets(project) {
6
+ for (const [name, target] of Object.entries(project.targets ?? {})) {
7
+ yield [name, target];
8
+ }
9
+ }
4
10
  function* allTargetOptions(target) {
5
11
  if (target.options) {
6
12
  yield [undefined, target.options];
@@ -1,7 +1,7 @@
1
1
  export declare const nxVersion: any;
2
- export declare const angularVersion = "~19.2.0";
3
- export declare const angularDevkitVersion = "~19.2.0";
4
- export declare const ngPackagrVersion = "~19.2.0";
2
+ export declare const angularVersion = "20.0.0-rc.2";
3
+ export declare const angularDevkitVersion = "20.0.0-rc.3";
4
+ export declare const ngPackagrVersion = "20.0.0-rc.1";
5
5
  export declare const angularRspackVersion = "^21.0.1";
6
6
  export declare const ngrxVersion = "^19.0.0";
7
7
  export declare const rxjsVersion = "~7.8.0";
@@ -15,6 +15,7 @@ export declare const typesExpressVersion = "^4.17.21";
15
15
  export declare const browserSyncVersion = "^3.0.0";
16
16
  export declare const moduleFederationNodeVersion = "^2.6.26";
17
17
  export declare const moduleFederationEnhancedVersion = "^0.9.0";
18
+ export declare const webpackMergeVersion = "^5.8.0";
18
19
  export declare const angularEslintVersion = "^19.2.0";
19
20
  export declare const typescriptEslintVersion = "^7.16.0";
20
21
  export declare const tailwindVersion = "^3.0.2";