@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
package/README.md CHANGED
@@ -1,7 +1,7 @@
1
1
  <p style="text-align: center;">
2
2
  <picture>
3
3
  <source media="(prefers-color-scheme: dark)" srcset="https://raw.githubusercontent.com/nrwl/nx/master/images/nx-dark.svg">
4
- <img alt="Nx - Smart Monorepos · Fast CI" src="https://raw.githubusercontent.com/nrwl/nx/master/images/nx-light.svg" width="100%">
4
+ <img alt="Nx - Smart Repos · Fast Builds" src="https://raw.githubusercontent.com/nrwl/nx/master/images/nx-light.svg" width="100%">
5
5
  </picture>
6
6
  </p>
7
7
 
@@ -20,7 +20,7 @@
20
20
 
21
21
  <hr>
22
22
 
23
- # Nx: Smart Monorepos · Fast CI
23
+ # Nx: Smart Repos · Fast Builds
24
24
 
25
25
  Nx is a build system, optimized for monorepos, with plugins for popular frameworks and tools and advanced CI capabilities including caching and distribution.
26
26
 
@@ -64,5 +64,5 @@ npx nx@latest init
64
64
  - [Blog Posts About Nx](https://nx.dev/blog)
65
65
 
66
66
  <p style="text-align: center;"><a href="https://nx.dev/#learning-materials" target="_blank" rel="noreferrer"><img src="https://raw.githubusercontent.com/nrwl/nx/master/images/nx-courses-and-videos.svg"
67
- width="100%" alt="Nx - Smart Monorepos · Fast CI"></a></p>
67
+ width="100%" alt="Nx - Smart Repos · Fast Builds"></a></p>
68
68
 
@@ -1 +1 @@
1
- {"version":3,"file":"nx-angular-mf.mjs","sources":["../../../../packages/angular/mf/mf.ts","../../../../packages/angular/mf/nx-angular-mf.ts"],"sourcesContent":["export type ResolveRemoteUrlFunction = (\n remoteName: string\n) => string | Promise<string>;\n\ndeclare const __webpack_init_sharing__: (scope: 'default') => Promise<void>;\ndeclare const __webpack_share_scopes__: { default: unknown };\n\nlet resolveRemoteUrl: ResolveRemoteUrlFunction;\n\n/**\n * @deprecated Use Runtime Helpers from '@module-federation/enhanced/runtime' instead. This will be removed in Nx 22.\n */\nexport function setRemoteUrlResolver(\n _resolveRemoteUrl: ResolveRemoteUrlFunction\n) {\n resolveRemoteUrl = _resolveRemoteUrl;\n}\n\nlet remoteUrlDefinitions: Record<string, string>;\n\n/**\n * @deprecated Use init() from '@module-federation/enhanced/runtime' instead. This will be removed in Nx 22.\n * If you have a remote app called `my-remote-app` and you want to use the `http://localhost:4201/mf-manifest.json` as the remote url, you should change it from:\n * ```ts\n * import { setRemoteDefinitions } from '@nx/angular/mf';\n *\n * setRemoteDefinitions({\n * 'my-remote-app': 'http://localhost:4201/mf-manifest.json'\n * });\n * ```\n * to use init():\n * ```ts\n * import { init } from '@module-federation/enhanced/runtime';\n *\n * init({\n * name: 'host',\n * remotes: [{\n * name: 'my-remote-app',\n * entry: 'http://localhost:4201/mf-manifest.json'\n * }]\n * });\n * ```\n */\nexport function setRemoteDefinitions(definitions: Record<string, string>) {\n remoteUrlDefinitions = definitions;\n}\n\n/**\n * @deprecated Use registerRemotes() from '@module-federation/enhanced/runtime' instead. This will be removed in Nx 22.\n * If you set a remote app with `setRemoteDefinition` such as:\n * ```ts\n * import { setRemoteDefinition } from '@nx/angular/mf';\n *\n * setRemoteDefinition(\n * 'my-remote-app',\n * 'http://localhost:4201/mf-manifest.json'\n * );\n * ```\n * change it to use registerRemotes():\n * ```ts\n * import { registerRemotes } from '@module-federation/enhanced/runtime';\n *\n * registerRemotes([\n * {\n * name: 'my-remote-app',\n * entry: 'http://localhost:4201/mf-manifest.json'\n * }\n * ]);\n * ```\n */\nexport function setRemoteDefinition(remoteName: string, remoteUrl: string) {\n remoteUrlDefinitions ??= {};\n remoteUrlDefinitions[remoteName] = remoteUrl;\n}\n\nlet remoteModuleMap = new Map<string, unknown>();\nlet remoteContainerMap = new Map<string, unknown>();\n\n/**\n * @deprecated Use loadRemote() from '@module-federation/enhanced/runtime' instead. This will be removed in Nx 22.\n * If you set a load a remote with `loadRemoteModule` such as:\n * ```ts\n * import { loadRemoteModule } from '@nx/angular/mf';\n *\n * loadRemoteModule('my-remote-app', './Module').then(m => m.RemoteEntryModule);\n * ```\n * change it to use loadRemote():\n * ```ts\n * import { loadRemote } from '@module-federation/enhanced/runtime';\n *\n * loadRemote<typeof import('my-remote-app/Module')>('my-remote-app/Module').then(m => m.RemoteEntryModule);\n * ```\n */\nexport async function loadRemoteModule(remoteName: string, moduleName: string) {\n const remoteModuleKey = `${remoteName}:${moduleName}`;\n if (remoteModuleMap.has(remoteModuleKey)) {\n return remoteModuleMap.get(remoteModuleKey);\n }\n\n const container = remoteContainerMap.has(remoteName)\n ? remoteContainerMap.get(remoteName)\n : await loadRemoteContainer(remoteName);\n\n const factory = await container.get(moduleName);\n const Module = factory();\n\n remoteModuleMap.set(remoteModuleKey, Module);\n\n return Module;\n}\n\nfunction loadModule(url: string) {\n return import(/* webpackIgnore:true */ url);\n}\n\nlet initialSharingScopeCreated = false;\n\nasync function loadRemoteContainer(remoteName: string) {\n if (!resolveRemoteUrl && !remoteUrlDefinitions) {\n throw new Error(\n 'Call setRemoteDefinitions or setRemoteUrlResolver to allow Dynamic Federation to find the remote apps correctly.'\n );\n }\n\n if (!initialSharingScopeCreated) {\n initialSharingScopeCreated = true;\n await __webpack_init_sharing__('default');\n }\n\n const remoteUrl = remoteUrlDefinitions\n ? remoteUrlDefinitions[remoteName]\n : await resolveRemoteUrl(remoteName);\n\n let containerUrl = remoteUrl;\n if (!remoteUrl.endsWith('.mjs') && !remoteUrl.endsWith('.js')) {\n containerUrl = `${remoteUrl}${\n remoteUrl.endsWith('/') ? '' : '/'\n }remoteEntry.mjs`;\n }\n\n const container = await loadModule(containerUrl);\n await container.init(__webpack_share_scopes__.default);\n\n remoteContainerMap.set(remoteName, container);\n return container;\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"AAOA,IAAI,gBAA0C;AAE9C;;AAEG;AACG,SAAU,oBAAoB,CAClC,iBAA2C,EAAA;IAE3C,gBAAgB,GAAG,iBAAiB;AACtC;AAEA,IAAI,oBAA4C;AAEhD;;;;;;;;;;;;;;;;;;;;;;AAsBG;AACG,SAAU,oBAAoB,CAAC,WAAmC,EAAA;IACtE,oBAAoB,GAAG,WAAW;AACpC;AAEA;;;;;;;;;;;;;;;;;;;;;;AAsBG;AACa,SAAA,mBAAmB,CAAC,UAAkB,EAAE,SAAiB,EAAA;IACvE,oBAAoB,KAAK,EAAE;AAC3B,IAAA,oBAAoB,CAAC,UAAU,CAAC,GAAG,SAAS;AAC9C;AAEA,IAAI,eAAe,GAAG,IAAI,GAAG,EAAmB;AAChD,IAAI,kBAAkB,GAAG,IAAI,GAAG,EAAmB;AAEnD;;;;;;;;;;;;;;AAcG;AACI,eAAe,gBAAgB,CAAC,UAAkB,EAAE,UAAkB,EAAA;AAC3E,IAAA,MAAM,eAAe,GAAG,CAAA,EAAG,UAAU,CAAI,CAAA,EAAA,UAAU,EAAE;AACrD,IAAA,IAAI,eAAe,CAAC,GAAG,CAAC,eAAe,CAAC,EAAE;AACxC,QAAA,OAAO,eAAe,CAAC,GAAG,CAAC,eAAe,CAAC;;AAG7C,IAAA,MAAM,SAAS,GAAG,kBAAkB,CAAC,GAAG,CAAC,UAAU;AACjD,UAAE,kBAAkB,CAAC,GAAG,CAAC,UAAU;AACnC,UAAE,MAAM,mBAAmB,CAAC,UAAU,CAAC;IAEzC,MAAM,OAAO,GAAG,MAAM,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC;AAC/C,IAAA,MAAM,MAAM,GAAG,OAAO,EAAE;AAExB,IAAA,eAAe,CAAC,GAAG,CAAC,eAAe,EAAE,MAAM,CAAC;AAE5C,IAAA,OAAO,MAAM;AACf;AAEA,SAAS,UAAU,CAAC,GAAW,EAAA;AAC7B,IAAA,OAAO,gCAAgC,GAAG,CAAC;AAC7C;AAEA,IAAI,0BAA0B,GAAG,KAAK;AAEtC,eAAe,mBAAmB,CAAC,UAAkB,EAAA;AACnD,IAAA,IAAI,CAAC,gBAAgB,IAAI,CAAC,oBAAoB,EAAE;AAC9C,QAAA,MAAM,IAAI,KAAK,CACb,kHAAkH,CACnH;;IAGH,IAAI,CAAC,0BAA0B,EAAE;QAC/B,0BAA0B,GAAG,IAAI;AACjC,QAAA,MAAM,wBAAwB,CAAC,SAAS,CAAC;;IAG3C,MAAM,SAAS,GAAG;AAChB,UAAE,oBAAoB,CAAC,UAAU;AACjC,UAAE,MAAM,gBAAgB,CAAC,UAAU,CAAC;IAEtC,IAAI,YAAY,GAAG,SAAS;AAC5B,IAAA,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE;AAC7D,QAAA,YAAY,GAAG,CAAG,EAAA,SAAS,GACzB,SAAS,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,GACjC,iBAAiB;;AAGnB,IAAA,MAAM,SAAS,GAAG,MAAM,UAAU,CAAC,YAAY,CAAC;IAChD,MAAM,SAAS,CAAC,IAAI,CAAC,wBAAwB,CAAC,OAAO,CAAC;AAEtD,IAAA,kBAAkB,CAAC,GAAG,CAAC,UAAU,EAAE,SAAS,CAAC;AAC7C,IAAA,OAAO,SAAS;AAClB;;ACjJA;;AAEG;;;;"}
1
+ {"version":3,"file":"nx-angular-mf.mjs","sources":["../tmp-esm2022/mf/mf.js","../tmp-esm2022/mf/nx-angular-mf.js"],"sourcesContent":["let resolveRemoteUrl;\n/**\n * @deprecated Use Runtime Helpers from '@module-federation/enhanced/runtime' instead. This will be removed in Nx 22.\n */\nexport function setRemoteUrlResolver(_resolveRemoteUrl) {\n resolveRemoteUrl = _resolveRemoteUrl;\n}\nlet remoteUrlDefinitions;\n/**\n * @deprecated Use init() from '@module-federation/enhanced/runtime' instead. This will be removed in Nx 22.\n * If you have a remote app called `my-remote-app` and you want to use the `http://localhost:4201/mf-manifest.json` as the remote url, you should change it from:\n * ```ts\n * import { setRemoteDefinitions } from '@nx/angular/mf';\n *\n * setRemoteDefinitions({\n * 'my-remote-app': 'http://localhost:4201/mf-manifest.json'\n * });\n * ```\n * to use init():\n * ```ts\n * import { init } from '@module-federation/enhanced/runtime';\n *\n * init({\n * name: 'host',\n * remotes: [{\n * name: 'my-remote-app',\n * entry: 'http://localhost:4201/mf-manifest.json'\n * }]\n * });\n * ```\n */\nexport function setRemoteDefinitions(definitions) {\n remoteUrlDefinitions = definitions;\n}\n/**\n * @deprecated Use registerRemotes() from '@module-federation/enhanced/runtime' instead. This will be removed in Nx 22.\n * If you set a remote app with `setRemoteDefinition` such as:\n * ```ts\n * import { setRemoteDefinition } from '@nx/angular/mf';\n *\n * setRemoteDefinition(\n * 'my-remote-app',\n * 'http://localhost:4201/mf-manifest.json'\n * );\n * ```\n * change it to use registerRemotes():\n * ```ts\n * import { registerRemotes } from '@module-federation/enhanced/runtime';\n *\n * registerRemotes([\n * {\n * name: 'my-remote-app',\n * entry: 'http://localhost:4201/mf-manifest.json'\n * }\n * ]);\n * ```\n */\nexport function setRemoteDefinition(remoteName, remoteUrl) {\n remoteUrlDefinitions ??= {};\n remoteUrlDefinitions[remoteName] = remoteUrl;\n}\nlet remoteModuleMap = new Map();\nlet remoteContainerMap = new Map();\n/**\n * @deprecated Use loadRemote() from '@module-federation/enhanced/runtime' instead. This will be removed in Nx 22.\n * If you set a load a remote with `loadRemoteModule` such as:\n * ```ts\n * import { loadRemoteModule } from '@nx/angular/mf';\n *\n * loadRemoteModule('my-remote-app', './Module').then(m => m.RemoteEntryModule);\n * ```\n * change it to use loadRemote():\n * ```ts\n * import { loadRemote } from '@module-federation/enhanced/runtime';\n *\n * loadRemote<typeof import('my-remote-app/Module')>('my-remote-app/Module').then(m => m.RemoteEntryModule);\n * ```\n */\nexport async function loadRemoteModule(remoteName, moduleName) {\n const remoteModuleKey = `${remoteName}:${moduleName}`;\n if (remoteModuleMap.has(remoteModuleKey)) {\n return remoteModuleMap.get(remoteModuleKey);\n }\n const container = remoteContainerMap.has(remoteName)\n ? remoteContainerMap.get(remoteName)\n : await loadRemoteContainer(remoteName);\n const factory = await container.get(moduleName);\n const Module = factory();\n remoteModuleMap.set(remoteModuleKey, Module);\n return Module;\n}\nfunction loadModule(url) {\n return import(/* webpackIgnore:true */ url);\n}\nlet initialSharingScopeCreated = false;\nasync function loadRemoteContainer(remoteName) {\n if (!resolveRemoteUrl && !remoteUrlDefinitions) {\n throw new Error('Call setRemoteDefinitions or setRemoteUrlResolver to allow Dynamic Federation to find the remote apps correctly.');\n }\n if (!initialSharingScopeCreated) {\n initialSharingScopeCreated = true;\n await __webpack_init_sharing__('default');\n }\n const remoteUrl = remoteUrlDefinitions\n ? remoteUrlDefinitions[remoteName]\n : await resolveRemoteUrl(remoteName);\n let containerUrl = remoteUrl;\n if (!remoteUrl.endsWith('.mjs') && !remoteUrl.endsWith('.js')) {\n containerUrl = `${remoteUrl}${remoteUrl.endsWith('/') ? '' : '/'}remoteEntry.mjs`;\n }\n const container = await loadModule(containerUrl);\n await container.init(__webpack_share_scopes__.default);\n remoteContainerMap.set(remoteName, container);\n return container;\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWYuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9hbmd1bGFyL21mL21mLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQU9BLElBQUksZ0JBQTBDLENBQUM7QUFFL0M7O0dBRUc7QUFDSCxNQUFNLFVBQVUsb0JBQW9CLENBQ2xDLGlCQUEyQztJQUUzQyxnQkFBZ0IsR0FBRyxpQkFBaUIsQ0FBQztBQUN2QyxDQUFDO0FBRUQsSUFBSSxvQkFBNEMsQ0FBQztBQUVqRDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXNCRztBQUNILE1BQU0sVUFBVSxvQkFBb0IsQ0FBQyxXQUFtQztJQUN0RSxvQkFBb0IsR0FBRyxXQUFXLENBQUM7QUFDckMsQ0FBQztBQUVEOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBc0JHO0FBQ0gsTUFBTSxVQUFVLG1CQUFtQixDQUFDLFVBQWtCLEVBQUUsU0FBaUI7SUFDdkUsb0JBQW9CLEtBQUssRUFBRSxDQUFDO0lBQzVCLG9CQUFvQixDQUFDLFVBQVUsQ0FBQyxHQUFHLFNBQVMsQ0FBQztBQUMvQyxDQUFDO0FBRUQsSUFBSSxlQUFlLEdBQUcsSUFBSSxHQUFHLEVBQW1CLENBQUM7QUFDakQsSUFBSSxrQkFBa0IsR0FBRyxJQUFJLEdBQUcsRUFBbUIsQ0FBQztBQUVwRDs7Ozs7Ozs7Ozs7Ozs7R0FjRztBQUNILE1BQU0sQ0FBQyxLQUFLLFVBQVUsZ0JBQWdCLENBQUMsVUFBa0IsRUFBRSxVQUFrQjtJQUMzRSxNQUFNLGVBQWUsR0FBRyxHQUFHLFVBQVUsSUFBSSxVQUFVLEVBQUUsQ0FBQztJQUN0RCxJQUFJLGVBQWUsQ0FBQyxHQUFHLENBQUMsZUFBZSxDQUFDLEVBQUUsQ0FBQztRQUN6QyxPQUFPLGVBQWUsQ0FBQyxHQUFHLENBQUMsZUFBZSxDQUFDLENBQUM7SUFDOUMsQ0FBQztJQUVELE1BQU0sU0FBUyxHQUFHLGtCQUFrQixDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUM7UUFDbEQsQ0FBQyxDQUFDLGtCQUFrQixDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUM7UUFDcEMsQ0FBQyxDQUFDLE1BQU0sbUJBQW1CLENBQUMsVUFBVSxDQUFDLENBQUM7SUFFMUMsTUFBTSxPQUFPLEdBQUcsTUFBTSxTQUFTLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQ2hELE1BQU0sTUFBTSxHQUFHLE9BQU8sRUFBRSxDQUFDO0lBRXpCLGVBQWUsQ0FBQyxHQUFHLENBQUMsZUFBZSxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBRTdDLE9BQU8sTUFBTSxDQUFDO0FBQ2hCLENBQUM7QUFFRCxTQUFTLFVBQVUsQ0FBQyxHQUFXO0lBQzdCLE9BQU8sTUFBTSxDQUFDLHdCQUF3QixDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQzlDLENBQUM7QUFFRCxJQUFJLDBCQUEwQixHQUFHLEtBQUssQ0FBQztBQUV2QyxLQUFLLFVBQVUsbUJBQW1CLENBQUMsVUFBa0I7SUFDbkQsSUFBSSxDQUFDLGdCQUFnQixJQUFJLENBQUMsb0JBQW9CLEVBQUUsQ0FBQztRQUMvQyxNQUFNLElBQUksS0FBSyxDQUNiLGtIQUFrSCxDQUNuSCxDQUFDO0lBQ0osQ0FBQztJQUVELElBQUksQ0FBQywwQkFBMEIsRUFBRSxDQUFDO1FBQ2hDLDBCQUEwQixHQUFHLElBQUksQ0FBQztRQUNsQyxNQUFNLHdCQUF3QixDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQzVDLENBQUM7SUFFRCxNQUFNLFNBQVMsR0FBRyxvQkFBb0I7UUFDcEMsQ0FBQyxDQUFDLG9CQUFvQixDQUFDLFVBQVUsQ0FBQztRQUNsQyxDQUFDLENBQUMsTUFBTSxnQkFBZ0IsQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUV2QyxJQUFJLFlBQVksR0FBRyxTQUFTLENBQUM7SUFDN0IsSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7UUFDOUQsWUFBWSxHQUFHLEdBQUcsU0FBUyxHQUN6QixTQUFTLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQ2pDLGlCQUFpQixDQUFDO0lBQ3BCLENBQUM7SUFFRCxNQUFNLFNBQVMsR0FBRyxNQUFNLFVBQVUsQ0FBQyxZQUFZLENBQUMsQ0FBQztJQUNqRCxNQUFNLFNBQVMsQ0FBQyxJQUFJLENBQUMsd0JBQXdCLENBQUMsT0FBTyxDQUFDLENBQUM7SUFFdkQsa0JBQWtCLENBQUMsR0FBRyxDQUFDLFVBQVUsRUFBRSxTQUFTLENBQUMsQ0FBQztJQUM5QyxPQUFPLFNBQVMsQ0FBQztBQUNuQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHR5cGUgUmVzb2x2ZVJlbW90ZVVybEZ1bmN0aW9uID0gKFxuICByZW1vdGVOYW1lOiBzdHJpbmdcbikgPT4gc3RyaW5nIHwgUHJvbWlzZTxzdHJpbmc+O1xuXG5kZWNsYXJlIGNvbnN0IF9fd2VicGFja19pbml0X3NoYXJpbmdfXzogKHNjb3BlOiAnZGVmYXVsdCcpID0+IFByb21pc2U8dm9pZD47XG5kZWNsYXJlIGNvbnN0IF9fd2VicGFja19zaGFyZV9zY29wZXNfXzogeyBkZWZhdWx0OiB1bmtub3duIH07XG5cbmxldCByZXNvbHZlUmVtb3RlVXJsOiBSZXNvbHZlUmVtb3RlVXJsRnVuY3Rpb247XG5cbi8qKlxuICogQGRlcHJlY2F0ZWQgVXNlIFJ1bnRpbWUgSGVscGVycyBmcm9tICdAbW9kdWxlLWZlZGVyYXRpb24vZW5oYW5jZWQvcnVudGltZScgaW5zdGVhZC4gVGhpcyB3aWxsIGJlIHJlbW92ZWQgaW4gTnggMjIuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzZXRSZW1vdGVVcmxSZXNvbHZlcihcbiAgX3Jlc29sdmVSZW1vdGVVcmw6IFJlc29sdmVSZW1vdGVVcmxGdW5jdGlvblxuKSB7XG4gIHJlc29sdmVSZW1vdGVVcmwgPSBfcmVzb2x2ZVJlbW90ZVVybDtcbn1cblxubGV0IHJlbW90ZVVybERlZmluaXRpb25zOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+O1xuXG4vKipcbiAqIEBkZXByZWNhdGVkIFVzZSBpbml0KCkgZnJvbSAnQG1vZHVsZS1mZWRlcmF0aW9uL2VuaGFuY2VkL3J1bnRpbWUnIGluc3RlYWQuIFRoaXMgd2lsbCBiZSByZW1vdmVkIGluIE54IDIyLlxuICogSWYgeW91IGhhdmUgYSByZW1vdGUgYXBwIGNhbGxlZCBgbXktcmVtb3RlLWFwcGAgYW5kIHlvdSB3YW50IHRvIHVzZSB0aGUgYGh0dHA6Ly9sb2NhbGhvc3Q6NDIwMS9tZi1tYW5pZmVzdC5qc29uYCBhcyB0aGUgcmVtb3RlIHVybCwgeW91IHNob3VsZCBjaGFuZ2UgaXQgZnJvbTpcbiAqIGBgYHRzXG4gKiBpbXBvcnQgeyBzZXRSZW1vdGVEZWZpbml0aW9ucyB9IGZyb20gJ0BueC9hbmd1bGFyL21mJztcbiAqXG4gKiBzZXRSZW1vdGVEZWZpbml0aW9ucyh7XG4gKiAgICdteS1yZW1vdGUtYXBwJzogJ2h0dHA6Ly9sb2NhbGhvc3Q6NDIwMS9tZi1tYW5pZmVzdC5qc29uJ1xuICogfSk7XG4gKiBgYGBcbiAqIHRvIHVzZSBpbml0KCk6XG4gKiBgYGB0c1xuICogaW1wb3J0IHsgaW5pdCB9IGZyb20gJ0Btb2R1bGUtZmVkZXJhdGlvbi9lbmhhbmNlZC9ydW50aW1lJztcbiAqXG4gKiBpbml0KHtcbiAqICAgbmFtZTogJ2hvc3QnLFxuICogICByZW1vdGVzOiBbe1xuICogICAgIG5hbWU6ICdteS1yZW1vdGUtYXBwJyxcbiAqICAgICBlbnRyeTogJ2h0dHA6Ly9sb2NhbGhvc3Q6NDIwMS9tZi1tYW5pZmVzdC5qc29uJ1xuICogICB9XVxuICogfSk7XG4gKiBgYGBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHNldFJlbW90ZURlZmluaXRpb25zKGRlZmluaXRpb25zOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+KSB7XG4gIHJlbW90ZVVybERlZmluaXRpb25zID0gZGVmaW5pdGlvbnM7XG59XG5cbi8qKlxuICogQGRlcHJlY2F0ZWQgVXNlIHJlZ2lzdGVyUmVtb3RlcygpIGZyb20gJ0Btb2R1bGUtZmVkZXJhdGlvbi9lbmhhbmNlZC9ydW50aW1lJyBpbnN0ZWFkLiBUaGlzIHdpbGwgYmUgcmVtb3ZlZCBpbiBOeCAyMi5cbiAqIElmIHlvdSBzZXQgYSByZW1vdGUgYXBwIHdpdGggYHNldFJlbW90ZURlZmluaXRpb25gIHN1Y2ggYXM6XG4gKiBgYGB0c1xuICogaW1wb3J0IHsgc2V0UmVtb3RlRGVmaW5pdGlvbiB9IGZyb20gJ0BueC9hbmd1bGFyL21mJztcbiAqXG4gKiBzZXRSZW1vdGVEZWZpbml0aW9uKFxuICogICAnbXktcmVtb3RlLWFwcCcsXG4gKiAgICdodHRwOi8vbG9jYWxob3N0OjQyMDEvbWYtbWFuaWZlc3QuanNvbidcbiAqICk7XG4gKiBgYGBcbiAqIGNoYW5nZSBpdCB0byB1c2UgcmVnaXN0ZXJSZW1vdGVzKCk6XG4gKiBgYGB0c1xuICogaW1wb3J0IHsgcmVnaXN0ZXJSZW1vdGVzIH0gZnJvbSAnQG1vZHVsZS1mZWRlcmF0aW9uL2VuaGFuY2VkL3J1bnRpbWUnO1xuICpcbiAqIHJlZ2lzdGVyUmVtb3RlcyhbXG4gKiAge1xuICogICAgIG5hbWU6ICdteS1yZW1vdGUtYXBwJyxcbiAqICAgICBlbnRyeTogJ2h0dHA6Ly9sb2NhbGhvc3Q6NDIwMS9tZi1tYW5pZmVzdC5qc29uJ1xuICogICB9XG4gKiBdKTtcbiAqIGBgYFxuICovXG5leHBvcnQgZnVuY3Rpb24gc2V0UmVtb3RlRGVmaW5pdGlvbihyZW1vdGVOYW1lOiBzdHJpbmcsIHJlbW90ZVVybDogc3RyaW5nKSB7XG4gIHJlbW90ZVVybERlZmluaXRpb25zID8/PSB7fTtcbiAgcmVtb3RlVXJsRGVmaW5pdGlvbnNbcmVtb3RlTmFtZV0gPSByZW1vdGVVcmw7XG59XG5cbmxldCByZW1vdGVNb2R1bGVNYXAgPSBuZXcgTWFwPHN0cmluZywgdW5rbm93bj4oKTtcbmxldCByZW1vdGVDb250YWluZXJNYXAgPSBuZXcgTWFwPHN0cmluZywgdW5rbm93bj4oKTtcblxuLyoqXG4gKiBAZGVwcmVjYXRlZCBVc2UgbG9hZFJlbW90ZSgpIGZyb20gJ0Btb2R1bGUtZmVkZXJhdGlvbi9lbmhhbmNlZC9ydW50aW1lJyBpbnN0ZWFkLiBUaGlzIHdpbGwgYmUgcmVtb3ZlZCBpbiBOeCAyMi5cbiAqIElmIHlvdSBzZXQgYSBsb2FkIGEgcmVtb3RlIHdpdGggYGxvYWRSZW1vdGVNb2R1bGVgIHN1Y2ggYXM6XG4gKiBgYGB0c1xuICogaW1wb3J0IHsgbG9hZFJlbW90ZU1vZHVsZSB9IGZyb20gJ0BueC9hbmd1bGFyL21mJztcbiAqXG4gKiBsb2FkUmVtb3RlTW9kdWxlKCdteS1yZW1vdGUtYXBwJywgJy4vTW9kdWxlJykudGhlbihtID0+IG0uUmVtb3RlRW50cnlNb2R1bGUpO1xuICogYGBgXG4gKiBjaGFuZ2UgaXQgdG8gdXNlIGxvYWRSZW1vdGUoKTpcbiAqIGBgYHRzXG4gKiBpbXBvcnQgeyBsb2FkUmVtb3RlIH0gZnJvbSAnQG1vZHVsZS1mZWRlcmF0aW9uL2VuaGFuY2VkL3J1bnRpbWUnO1xuICpcbiAqIGxvYWRSZW1vdGU8dHlwZW9mIGltcG9ydCgnbXktcmVtb3RlLWFwcC9Nb2R1bGUnKT4oJ215LXJlbW90ZS1hcHAvTW9kdWxlJykudGhlbihtID0+IG0uUmVtb3RlRW50cnlNb2R1bGUpO1xuICogYGBgXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBsb2FkUmVtb3RlTW9kdWxlKHJlbW90ZU5hbWU6IHN0cmluZywgbW9kdWxlTmFtZTogc3RyaW5nKSB7XG4gIGNvbnN0IHJlbW90ZU1vZHVsZUtleSA9IGAke3JlbW90ZU5hbWV9OiR7bW9kdWxlTmFtZX1gO1xuICBpZiAocmVtb3RlTW9kdWxlTWFwLmhhcyhyZW1vdGVNb2R1bGVLZXkpKSB7XG4gICAgcmV0dXJuIHJlbW90ZU1vZHVsZU1hcC5nZXQocmVtb3RlTW9kdWxlS2V5KTtcbiAgfVxuXG4gIGNvbnN0IGNvbnRhaW5lciA9IHJlbW90ZUNvbnRhaW5lck1hcC5oYXMocmVtb3RlTmFtZSlcbiAgICA/IHJlbW90ZUNvbnRhaW5lck1hcC5nZXQocmVtb3RlTmFtZSlcbiAgICA6IGF3YWl0IGxvYWRSZW1vdGVDb250YWluZXIocmVtb3RlTmFtZSk7XG5cbiAgY29uc3QgZmFjdG9yeSA9IGF3YWl0IGNvbnRhaW5lci5nZXQobW9kdWxlTmFtZSk7XG4gIGNvbnN0IE1vZHVsZSA9IGZhY3RvcnkoKTtcblxuICByZW1vdGVNb2R1bGVNYXAuc2V0KHJlbW90ZU1vZHVsZUtleSwgTW9kdWxlKTtcblxuICByZXR1cm4gTW9kdWxlO1xufVxuXG5mdW5jdGlvbiBsb2FkTW9kdWxlKHVybDogc3RyaW5nKSB7XG4gIHJldHVybiBpbXBvcnQoLyogd2VicGFja0lnbm9yZTp0cnVlICovIHVybCk7XG59XG5cbmxldCBpbml0aWFsU2hhcmluZ1Njb3BlQ3JlYXRlZCA9IGZhbHNlO1xuXG5hc3luYyBmdW5jdGlvbiBsb2FkUmVtb3RlQ29udGFpbmVyKHJlbW90ZU5hbWU6IHN0cmluZykge1xuICBpZiAoIXJlc29sdmVSZW1vdGVVcmwgJiYgIXJlbW90ZVVybERlZmluaXRpb25zKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgJ0NhbGwgc2V0UmVtb3RlRGVmaW5pdGlvbnMgb3Igc2V0UmVtb3RlVXJsUmVzb2x2ZXIgdG8gYWxsb3cgRHluYW1pYyBGZWRlcmF0aW9uIHRvIGZpbmQgdGhlIHJlbW90ZSBhcHBzIGNvcnJlY3RseS4nXG4gICAgKTtcbiAgfVxuXG4gIGlmICghaW5pdGlhbFNoYXJpbmdTY29wZUNyZWF0ZWQpIHtcbiAgICBpbml0aWFsU2hhcmluZ1Njb3BlQ3JlYXRlZCA9IHRydWU7XG4gICAgYXdhaXQgX193ZWJwYWNrX2luaXRfc2hhcmluZ19fKCdkZWZhdWx0Jyk7XG4gIH1cblxuICBjb25zdCByZW1vdGVVcmwgPSByZW1vdGVVcmxEZWZpbml0aW9uc1xuICAgID8gcmVtb3RlVXJsRGVmaW5pdGlvbnNbcmVtb3RlTmFtZV1cbiAgICA6IGF3YWl0IHJlc29sdmVSZW1vdGVVcmwocmVtb3RlTmFtZSk7XG5cbiAgbGV0IGNvbnRhaW5lclVybCA9IHJlbW90ZVVybDtcbiAgaWYgKCFyZW1vdGVVcmwuZW5kc1dpdGgoJy5tanMnKSAmJiAhcmVtb3RlVXJsLmVuZHNXaXRoKCcuanMnKSkge1xuICAgIGNvbnRhaW5lclVybCA9IGAke3JlbW90ZVVybH0ke1xuICAgICAgcmVtb3RlVXJsLmVuZHNXaXRoKCcvJykgPyAnJyA6ICcvJ1xuICAgIH1yZW1vdGVFbnRyeS5tanNgO1xuICB9XG5cbiAgY29uc3QgY29udGFpbmVyID0gYXdhaXQgbG9hZE1vZHVsZShjb250YWluZXJVcmwpO1xuICBhd2FpdCBjb250YWluZXIuaW5pdChfX3dlYnBhY2tfc2hhcmVfc2NvcGVzX18uZGVmYXVsdCk7XG5cbiAgcmVtb3RlQ29udGFpbmVyTWFwLnNldChyZW1vdGVOYW1lLCBjb250YWluZXIpO1xuICByZXR1cm4gY29udGFpbmVyO1xufVxuIl19","/**\n * Generated bundle index. Do not edit.\n */\nexport * from './index';\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibngtYW5ndWxhci1tZi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2FuZ3VsYXIvbWYvbngtYW5ndWxhci1tZi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsU0FBUyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZW5lcmF0ZWQgYnVuZGxlIGluZGV4LiBEbyBub3QgZWRpdC5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL2luZGV4JztcbiJdfQ=="],"names":[],"mappings":"AAAA,IAAI,gBAAgB;AACpB;AACA;AACA;AACO,SAAS,oBAAoB,CAAC,iBAAiB,EAAE;AACxD,IAAI,gBAAgB,GAAG,iBAAiB;AACxC;AACA,IAAI,oBAAoB;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,oBAAoB,CAAC,WAAW,EAAE;AAClD,IAAI,oBAAoB,GAAG,WAAW;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAAS,mBAAmB,CAAC,UAAU,EAAE,SAAS,EAAE;AAC3D,IAAI,oBAAoB,KAAK,EAAE;AAC/B,IAAI,oBAAoB,CAAC,UAAU,CAAC,GAAG,SAAS;AAChD;AACA,IAAI,eAAe,GAAG,IAAI,GAAG,EAAE;AAC/B,IAAI,kBAAkB,GAAG,IAAI,GAAG,EAAE;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,eAAe,gBAAgB,CAAC,UAAU,EAAE,UAAU,EAAE;AAC/D,IAAI,MAAM,eAAe,GAAG,CAAC,EAAE,UAAU,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC;AACzD,IAAI,IAAI,eAAe,CAAC,GAAG,CAAC,eAAe,CAAC,EAAE;AAC9C,QAAQ,OAAO,eAAe,CAAC,GAAG,CAAC,eAAe,CAAC;AACnD;AACA,IAAI,MAAM,SAAS,GAAG,kBAAkB,CAAC,GAAG,CAAC,UAAU;AACvD,UAAU,kBAAkB,CAAC,GAAG,CAAC,UAAU;AAC3C,UAAU,MAAM,mBAAmB,CAAC,UAAU,CAAC;AAC/C,IAAI,MAAM,OAAO,GAAG,MAAM,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC;AACnD,IAAI,MAAM,MAAM,GAAG,OAAO,EAAE;AAC5B,IAAI,eAAe,CAAC,GAAG,CAAC,eAAe,EAAE,MAAM,CAAC;AAChD,IAAI,OAAO,MAAM;AACjB;AACA,SAAS,UAAU,CAAC,GAAG,EAAE;AACzB,IAAI,OAAO,gCAAgC,GAAG,CAAC;AAC/C;AACA,IAAI,0BAA0B,GAAG,KAAK;AACtC,eAAe,mBAAmB,CAAC,UAAU,EAAE;AAC/C,IAAI,IAAI,CAAC,gBAAgB,IAAI,CAAC,oBAAoB,EAAE;AACpD,QAAQ,MAAM,IAAI,KAAK,CAAC,kHAAkH,CAAC;AAC3I;AACA,IAAI,IAAI,CAAC,0BAA0B,EAAE;AACrC,QAAQ,0BAA0B,GAAG,IAAI;AACzC,QAAQ,MAAM,wBAAwB,CAAC,SAAS,CAAC;AACjD;AACA,IAAI,MAAM,SAAS,GAAG;AACtB,UAAU,oBAAoB,CAAC,UAAU;AACzC,UAAU,MAAM,gBAAgB,CAAC,UAAU,CAAC;AAC5C,IAAI,IAAI,YAAY,GAAG,SAAS;AAChC,IAAI,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE;AACnE,QAAQ,YAAY,GAAG,CAAC,EAAE,SAAS,CAAC,EAAE,SAAS,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,GAAG,CAAC,eAAe,CAAC;AACzF;AACA,IAAI,MAAM,SAAS,GAAG,MAAM,UAAU,CAAC,YAAY,CAAC;AACpD,IAAI,MAAM,SAAS,CAAC,IAAI,CAAC,wBAAwB,CAAC,OAAO,CAAC;AAC1D,IAAI,kBAAkB,CAAC,GAAG,CAAC,UAAU,EAAE,SAAS,CAAC;AACjD,IAAI,OAAO,SAAS;AACpB;;AClHA;AACA;AACA;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"nx-angular.mjs","sources":["../../../../packages/angular/nx-angular.ts"],"sourcesContent":["/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"AAAA;;AAEG"}
1
+ {"version":3,"file":"nx-angular.mjs","sources":["../tmp-esm2022/nx-angular.js"],"sourcesContent":["/**\n * Generated bundle index. Do not edit.\n */\nexport * from './index';\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibngtYW5ndWxhci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL2FuZ3VsYXIvbngtYW5ndWxhci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsU0FBUyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZW5lcmF0ZWQgYnVuZGxlIGluZGV4LiBEbyBub3QgZWRpdC5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL2luZGV4JztcbiJdfQ=="],"names":[],"mappings":"AAAA;AACA;AACA"}
package/index.d.ts CHANGED
@@ -1 +1,2 @@
1
- export {};
1
+
2
+ export { };
package/mf/index.d.ts CHANGED
@@ -1 +1,71 @@
1
- export { setRemoteUrlResolver, setRemoteDefinitions, setRemoteDefinition, loadRemoteModule, } from './mf';
1
+ type ResolveRemoteUrlFunction = (remoteName: string) => string | Promise<string>;
2
+ /**
3
+ * @deprecated Use Runtime Helpers from '@module-federation/enhanced/runtime' instead. This will be removed in Nx 22.
4
+ */
5
+ declare function setRemoteUrlResolver(_resolveRemoteUrl: ResolveRemoteUrlFunction): void;
6
+ /**
7
+ * @deprecated Use init() from '@module-federation/enhanced/runtime' instead. This will be removed in Nx 22.
8
+ * If you have a remote app called `my-remote-app` and you want to use the `http://localhost:4201/mf-manifest.json` as the remote url, you should change it from:
9
+ * ```ts
10
+ * import { setRemoteDefinitions } from '@nx/angular/mf';
11
+ *
12
+ * setRemoteDefinitions({
13
+ * 'my-remote-app': 'http://localhost:4201/mf-manifest.json'
14
+ * });
15
+ * ```
16
+ * to use init():
17
+ * ```ts
18
+ * import { init } from '@module-federation/enhanced/runtime';
19
+ *
20
+ * init({
21
+ * name: 'host',
22
+ * remotes: [{
23
+ * name: 'my-remote-app',
24
+ * entry: 'http://localhost:4201/mf-manifest.json'
25
+ * }]
26
+ * });
27
+ * ```
28
+ */
29
+ declare function setRemoteDefinitions(definitions: Record<string, string>): void;
30
+ /**
31
+ * @deprecated Use registerRemotes() from '@module-federation/enhanced/runtime' instead. This will be removed in Nx 22.
32
+ * If you set a remote app with `setRemoteDefinition` such as:
33
+ * ```ts
34
+ * import { setRemoteDefinition } from '@nx/angular/mf';
35
+ *
36
+ * setRemoteDefinition(
37
+ * 'my-remote-app',
38
+ * 'http://localhost:4201/mf-manifest.json'
39
+ * );
40
+ * ```
41
+ * change it to use registerRemotes():
42
+ * ```ts
43
+ * import { registerRemotes } from '@module-federation/enhanced/runtime';
44
+ *
45
+ * registerRemotes([
46
+ * {
47
+ * name: 'my-remote-app',
48
+ * entry: 'http://localhost:4201/mf-manifest.json'
49
+ * }
50
+ * ]);
51
+ * ```
52
+ */
53
+ declare function setRemoteDefinition(remoteName: string, remoteUrl: string): void;
54
+ /**
55
+ * @deprecated Use loadRemote() from '@module-federation/enhanced/runtime' instead. This will be removed in Nx 22.
56
+ * If you set a load a remote with `loadRemoteModule` such as:
57
+ * ```ts
58
+ * import { loadRemoteModule } from '@nx/angular/mf';
59
+ *
60
+ * loadRemoteModule('my-remote-app', './Module').then(m => m.RemoteEntryModule);
61
+ * ```
62
+ * change it to use loadRemote():
63
+ * ```ts
64
+ * import { loadRemote } from '@module-federation/enhanced/runtime';
65
+ *
66
+ * loadRemote<typeof import('my-remote-app/Module')>('my-remote-app/Module').then(m => m.RemoteEntryModule);
67
+ * ```
68
+ */
69
+ declare function loadRemoteModule(remoteName: string, moduleName: string): Promise<any>;
70
+
71
+ export { loadRemoteModule, setRemoteDefinition, setRemoteDefinitions, setRemoteUrlResolver };
package/migrations.json CHANGED
@@ -302,6 +302,47 @@
302
302
  },
303
303
  "description": "Change the data persistence operator imports to '@ngrx/router-store/data-persistence'.",
304
304
  "factory": "./src/migrations/update-21-0-0/change-data-persistence-operators-imports-to-ngrx-router-store-data-persistence"
305
+ },
306
+ "update-angular-cli-version-20-0-0-rc-3": {
307
+ "cli": "nx",
308
+ "version": "21.2.0-beta.0",
309
+ "requires": {
310
+ "@angular/core": ">=20.0.0-rc.2"
311
+ },
312
+ "description": "Update the @angular/cli package version to 20.0.0-rc.3.",
313
+ "factory": "./src/migrations/update-21-2-0/update-angular-cli"
314
+ },
315
+ "migrate-provide-server-rendering-import": {
316
+ "version": "21.2.0-beta.0",
317
+ "requires": {
318
+ "@angular/core": ">=20.0.0-rc.2"
319
+ },
320
+ "description": "Migrate imports of `provideServerRendering` from `@angular/platform-server` to `@angular/ssr`.",
321
+ "factory": "./src/migrations/update-21-2-0/migrate-provide-server-rendering-import"
322
+ },
323
+ "replace-provide-server-routing": {
324
+ "version": "21.2.0-beta.0",
325
+ "requires": {
326
+ "@angular/core": ">=20.0.0-rc.2"
327
+ },
328
+ "description": "Replace `provideServerRouting` with `provideServerRendering` using `withRoutes`.",
329
+ "factory": "./src/migrations/update-21-2-0/replace-provide-server-routing"
330
+ },
331
+ "set-generator-defaults-for-previous-style-guide": {
332
+ "version": "21.2.0-beta.0",
333
+ "requires": {
334
+ "@angular/core": ">=20.0.0-rc.2"
335
+ },
336
+ "description": "Update the generator defaults to maintain the previous style guide behavior.",
337
+ "factory": "./src/migrations/update-21-2-0/set-generator-defaults-for-previous-style-guide"
338
+ },
339
+ "update-module-resolution": {
340
+ "version": "21.2.0-beta.0",
341
+ "requires": {
342
+ "@angular/core": ">=20.0.0-rc.2"
343
+ },
344
+ "description": "Update 'moduleResolution' to 'bundler' in TypeScript configurations. You can read more about this here: https://www.typescriptlang.org/tsconfig/#moduleResolution.",
345
+ "factory": "./src/migrations/update-21-2-0/update-module-resolution"
305
346
  }
306
347
  },
307
348
  "packageJsonUpdates": {
@@ -1624,6 +1665,71 @@
1624
1665
  "alwaysAddToPackageJson": false
1625
1666
  }
1626
1667
  }
1668
+ },
1669
+ "21.2.0": {
1670
+ "version": "21.2.0-beta.0",
1671
+ "x-prompt": "Do you want to update the Angular version to v20?",
1672
+ "requires": {
1673
+ "@angular/core": ">=19.2.0 <20.0.0-rc.2"
1674
+ },
1675
+ "packages": {
1676
+ "@angular-devkit/build-angular": {
1677
+ "version": "20.0.0-rc.3",
1678
+ "alwaysAddToPackageJson": false
1679
+ },
1680
+ "@angular-devkit/core": {
1681
+ "version": "20.0.0-rc.3",
1682
+ "alwaysAddToPackageJson": false
1683
+ },
1684
+ "@angular-devkit/schematics": {
1685
+ "version": "20.0.0-rc.3",
1686
+ "alwaysAddToPackageJson": false
1687
+ },
1688
+ "@angular/build": {
1689
+ "version": "20.0.0-rc.3",
1690
+ "alwaysAddToPackageJson": false
1691
+ },
1692
+ "@angular/pwa": {
1693
+ "version": "20.0.0-rc.3",
1694
+ "alwaysAddToPackageJson": false
1695
+ },
1696
+ "@angular/ssr": {
1697
+ "version": "20.0.0-rc.3",
1698
+ "alwaysAddToPackageJson": false
1699
+ },
1700
+ "@schematics/angular": {
1701
+ "version": "20.0.0-rc.3",
1702
+ "alwaysAddToPackageJson": false
1703
+ },
1704
+ "@angular-devkit/architect": {
1705
+ "version": "0.2000.0-rc.3",
1706
+ "alwaysAddToPackageJson": false
1707
+ },
1708
+ "@angular-devkit/build-webpack": {
1709
+ "version": "0.2000.0-rc.3",
1710
+ "alwaysAddToPackageJson": false
1711
+ },
1712
+ "@angular/core": {
1713
+ "version": "20.0.0-rc.2",
1714
+ "alwaysAddToPackageJson": true
1715
+ },
1716
+ "@angular/material": {
1717
+ "version": "20.0.0-rc.2",
1718
+ "alwaysAddToPackageJson": false
1719
+ },
1720
+ "@angular/cdk": {
1721
+ "version": "20.0.0-rc.2",
1722
+ "alwaysAddToPackageJson": false
1723
+ },
1724
+ "@angular/google-maps": {
1725
+ "version": "20.0.0-rc.2",
1726
+ "alwaysAddToPackageJson": false
1727
+ },
1728
+ "ng-packagr": {
1729
+ "version": "20.0.0-rc.1",
1730
+ "alwaysAddToPackageJson": false
1731
+ }
1732
+ }
1627
1733
  }
1628
1734
  }
1629
1735
  }
package/ng-package.json CHANGED
@@ -28,7 +28,6 @@
28
28
  "magic-string",
29
29
  "enquirer",
30
30
  "find-cache-dir",
31
- "piscina",
32
31
  "webpack"
33
32
  ],
34
33
  "keepLifecycleScripts": true
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@nx/angular",
3
- "version": "21.1.1",
3
+ "version": "21.2.0-beta.1",
4
4
  "private": false,
5
5
  "description": "The Nx Plugin for Angular contains executors, generators, and utilities for managing Angular applications and libraries within an Nx workspace. It provides: \n\n- Integration with libraries such as Storybook, Jest, ESLint, Tailwind CSS, Playwright and Cypress. \n\n- Generators to help scaffold code quickly (like: Micro Frontends, Libraries, both internal to your codebase and publishable to npm) \n\n- Single Component Application Modules (SCAMs) \n\n- NgRx helpers. \n\n- Utilities for automatic workspace refactoring.",
6
6
  "repository": {
@@ -58,32 +58,44 @@
58
58
  "migrations": "./migrations.json"
59
59
  },
60
60
  "dependencies": {
61
+ "@nx/devkit": "21.2.0-beta.1",
62
+ "@nx/eslint": "21.2.0-beta.1",
63
+ "@nx/js": "21.2.0-beta.1",
64
+ "@nx/module-federation": "21.2.0-beta.1",
65
+ "@nx/rspack": "21.2.0-beta.1",
66
+ "@nx/web": "21.2.0-beta.1",
67
+ "@nx/webpack": "21.2.0-beta.1",
68
+ "@nx/workspace": "21.2.0-beta.1",
61
69
  "@phenomnomnominal/tsquery": "~5.0.1",
62
70
  "@typescript-eslint/type-utils": "^8.0.0",
63
71
  "enquirer": "~2.3.6",
72
+ "magic-string": "~0.30.2",
64
73
  "picocolors": "^1.1.0",
65
74
  "picomatch": "4.0.2",
66
- "magic-string": "~0.30.2",
67
75
  "semver": "^7.5.3",
68
76
  "tslib": "^2.3.0",
69
- "webpack-merge": "^5.8.0",
70
- "@nx/devkit": "21.1.1",
71
- "@nx/js": "21.1.1",
72
- "@nx/eslint": "21.1.1",
73
- "@nx/webpack": "21.1.1",
74
- "@nx/rspack": "21.1.1",
75
- "@nx/module-federation": "21.1.1",
76
- "@nx/web": "21.1.1",
77
- "@nx/workspace": "21.1.1",
78
- "piscina": "^4.4.0"
77
+ "webpack-merge": "^5.8.0"
79
78
  },
80
79
  "peerDependencies": {
81
- "@angular-devkit/build-angular": ">= 17.0.0 < 20.0.0",
82
- "@angular-devkit/core": ">= 17.0.0 < 20.0.0",
83
- "@angular-devkit/schematics": ">= 17.0.0 < 20.0.0",
84
- "@schematics/angular": ">= 17.0.0 < 20.0.0",
80
+ "@angular/build": ">= 18.0.0 < 21.0.0",
81
+ "@angular-devkit/build-angular": ">= 18.0.0 < 21.0.0",
82
+ "@angular-devkit/core": ">= 18.0.0 < 21.0.0",
83
+ "@angular-devkit/schematics": ">= 18.0.0 < 21.0.0",
84
+ "@schematics/angular": ">= 18.0.0 < 21.0.0",
85
+ "ng-packagr": ">= 18.0.0 < 21.0.0",
85
86
  "rxjs": "^6.5.3 || ^7.5.0"
86
87
  },
88
+ "peerDependenciesMeta": {
89
+ "@angular/build": {
90
+ "optional": true
91
+ },
92
+ "@angular-devkit/build-angular": {
93
+ "optional": true
94
+ },
95
+ "ng-packagr": {
96
+ "optional": true
97
+ }
98
+ },
87
99
  "publishConfig": {
88
100
  "access": "public"
89
101
  },
@@ -114,7 +114,8 @@ function normalizeBuildTargetOptions(buildContext, ctContext, offset) {
114
114
  target: buildContext.targetName,
115
115
  configuration: buildContext.configurationName,
116
116
  }, buildContext);
117
- const buildOptions = withSchemaDefaults(options);
117
+ const project = buildContext.projectsConfigurations.projects[buildContext.projectName];
118
+ const buildOptions = withSchemaDefaults(options, project, buildContext.root);
118
119
  // cypress creates a tsconfig if one isn't preset
119
120
  // that contains all the support required for angular and component tests
120
121
  delete buildOptions.tsConfig;
@@ -207,9 +208,13 @@ Note: this may fail, setting the correct 'sourceRoot' for ${buildContext.project
207
208
  },
208
209
  };
209
210
  }
210
- function withSchemaDefaults(options) {
211
+ function withSchemaDefaults(options, project, workspaceRoot) {
211
212
  if (!options.main && !options.browser) {
212
- throw new Error('Missing executor options "main" and "browser"');
213
+ const sourceRoot = project.sourceRoot ?? (0, devkit_1.joinPathFragments)(project.root, 'src');
214
+ options.browser = (0, devkit_1.joinPathFragments)(sourceRoot, 'main.ts');
215
+ if (!(0, fs_1.existsSync)((0, path_1.join)(workspaceRoot, options.browser))) {
216
+ throw new Error('Missing executor options "main" and "browser"');
217
+ }
213
218
  }
214
219
  if (!options.index) {
215
220
  throw new Error('Missing executor options "index"');
@@ -5,18 +5,18 @@ const devkit_1 = require("@nx/devkit");
5
5
  const js_1 = require("@nx/js");
6
6
  const webpack_nx_build_coordination_plugin_1 = require("@nx/webpack/src/plugins/webpack-nx-build-coordination-plugin");
7
7
  const fs_1 = require("fs");
8
+ const configuration_1 = require("nx/src/config/configuration");
8
9
  const operators_1 = require("nx/src/project-graph/operators");
9
10
  const project_graph_1 = require("nx/src/project-graph/project-graph");
10
11
  const path_1 = require("path");
11
12
  const rxjs_1 = require("rxjs");
12
13
  const operators_2 = require("rxjs/operators");
13
- const angular_version_utils_1 = require("../../executors/utilities/angular-version-utils");
14
+ const builder_package_1 = require("../../executors/utilities/builder-package");
14
15
  const esbuild_extensions_1 = require("../../executors/utilities/esbuild-extensions");
15
16
  const patch_builder_context_1 = require("../../executors/utilities/patch-builder-context");
16
17
  const buildable_libs_1 = require("../utilities/buildable-libs");
17
18
  const webpack_1 = require("../utilities/webpack");
18
19
  const lib_1 = require("./lib");
19
- const configuration_1 = require("nx/src/config/configuration");
20
20
  function executeDevServerBuilder(rawOptions, context) {
21
21
  (0, lib_1.validateOptions)(rawOptions);
22
22
  process.env.NX_TSCONFIG_PATH = (0, js_1.getRootTsConfigPath)();
@@ -89,6 +89,7 @@ function executeDevServerBuilder(rawOptions, context) {
89
89
  }
90
90
  const delegateBuilderOptions = getDelegateBuilderOptions(options);
91
91
  const isUsingWebpackBuilder = ![
92
+ '@angular/build:application',
92
93
  '@angular-devkit/build-angular:application',
93
94
  '@angular-devkit/build-angular:browser-esbuild',
94
95
  '@nx/angular:application',
@@ -101,6 +102,7 @@ function executeDevServerBuilder(rawOptions, context) {
101
102
  * handle `@nx/angular:*` executors.
102
103
  */
103
104
  (0, patch_builder_context_1.patchBuilderContext)(context, !isUsingWebpackBuilder, parsedBuildTarget);
105
+ (0, builder_package_1.assertBuilderPackageIsInstalled)('@angular-devkit/build-angular');
104
106
  return (0, rxjs_1.combineLatest)([
105
107
  (0, rxjs_1.from)(import('@angular-devkit/build-angular')),
106
108
  (0, rxjs_1.from)((0, esbuild_extensions_1.loadPlugins)(buildTargetOptions.plugins, buildTargetOptions.tsConfig)),
@@ -142,11 +144,6 @@ function getDelegateBuilderOptions(options) {
142
144
  const delegateBuilderOptions = {
143
145
  ...options,
144
146
  };
145
- const { major: angularMajorVersion } = (0, angular_version_utils_1.getInstalledAngularVersionInfo)();
146
- if (angularMajorVersion <= 17) {
147
- delegateBuilderOptions.browserTarget = delegateBuilderOptions.buildTarget;
148
- delete delegateBuilderOptions.buildTarget;
149
- }
150
147
  // delete extra option not supported by the delegate builder
151
148
  delete delegateBuilderOptions.buildLibsFromSource;
152
149
  delete delegateBuilderOptions.watchDependencies;
@@ -3,15 +3,9 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.normalizeOptions = normalizeOptions;
4
4
  const angular_version_utils_1 = require("../../../executors/utilities/angular-version-utils");
5
5
  function normalizeOptions(schema) {
6
- let buildTarget = schema.buildTarget;
7
- if (schema.browserTarget) {
8
- buildTarget ??= schema.browserTarget;
9
- delete schema.browserTarget;
10
- }
11
6
  const { major: angularMajorVersion } = (0, angular_version_utils_1.getInstalledAngularVersionInfo)();
12
7
  return {
13
8
  ...schema,
14
- buildTarget,
15
9
  host: schema.host ?? 'localhost',
16
10
  port: schema.port ?? 4200,
17
11
  liveReload: schema.liveReload ?? true,
@@ -6,10 +6,6 @@ const semver_1 = require("semver");
6
6
  const angular_version_utils_1 = require("../../../executors/utilities/angular-version-utils");
7
7
  function validateOptions(options) {
8
8
  const { version: angularVersion } = (0, angular_version_utils_1.getInstalledAngularVersionInfo)();
9
- if ((0, semver_1.lt)(angularVersion, '17.2.0') && options.prebundle) {
10
- throw new Error((0, devkit_1.stripIndents) `The "prebundle" option is only supported in Angular >= 17.2.0. You are currently using "${angularVersion}".
11
- You can resolve this error by removing the "prebundle" option or by migrating to Angular 17.2.0.`);
12
- }
13
9
  if ((0, semver_1.lt)(angularVersion, '18.1.0') && options.inspect) {
14
10
  throw new Error((0, devkit_1.stripIndents) `The "inspect" option is only supported in Angular >= 18.1.0. You are currently using "${angularVersion}".
15
11
  You can resolve this error by removing the "inspect" option or by migrating to Angular 18.1.0.`);
@@ -1,4 +1,5 @@
1
- interface BaseSchema {
1
+ interface Schema {
2
+ buildTarget: string;
2
3
  port?: number;
3
4
  host?: string;
4
5
  proxyConfig?: string;
@@ -24,20 +25,7 @@ interface BaseSchema {
24
25
  watchDependencies?: boolean;
25
26
  }
26
27
 
27
- export type SchemaWithBrowserTarget = BaseSchema & {
28
- /**
29
- * @deprecated Use `buildTarget` instead. It will be removed when Angular v20 is released.
30
- */
31
- browserTarget: string;
32
- };
33
-
34
- export type SchemaWithBuildTarget = BaseSchema & {
35
- buildTarget: string;
36
- };
37
-
38
- export type Schema = SchemaWithBrowserTarget | SchemaWithBuildTarget;
39
-
40
- export type NormalizedSchema = SchemaWithBuildTarget & {
28
+ export type NormalizedSchema = Schema & {
41
29
  liveReload: boolean;
42
30
  open: boolean;
43
31
  ssl: boolean;
@@ -14,12 +14,6 @@
14
14
  }
15
15
  ],
16
16
  "properties": {
17
- "browserTarget": {
18
- "type": "string",
19
- "description": "A browser builder target to serve in the format of `project:target[:configuration]`. Ignored if `buildTarget` is set.",
20
- "pattern": "^[^:\\s]+:[^:\\s]+(:[^\\s]+)?$",
21
- "x-deprecated": "Use 'buildTarget' instead. It will be removed when Angular v20 is released."
22
- },
23
17
  "buildTarget": {
24
18
  "type": "string",
25
19
  "description": "A build builder target to serve in the format of `project:target[:configuration]`.",
@@ -128,7 +122,7 @@
128
122
  ]
129
123
  },
130
124
  "prebundle": {
131
- "description": "Enable and control the Vite-based development server's prebundling capabilities. To enable prebundling, the Angular CLI cache must also be enabled. This option has no effect when using the 'browser' or other Webpack-based builders. _Note: this is only supported in Angular versions >= 17.2.0_.",
125
+ "description": "Enable and control the Vite-based development server's prebundling capabilities. To enable prebundling, the Angular CLI cache must also be enabled. This option has no effect when using the 'browser' or other Webpack-based builders.",
132
126
  "oneOf": [
133
127
  { "type": "boolean" },
134
128
  {
@@ -147,7 +141,7 @@
147
141
  },
148
142
  "buildLibsFromSource": {
149
143
  "type": "boolean",
150
- "description": "Read buildable libraries from source instead of building them separately. If not set, it will take the value specified in the `browserTarget` options, or it will default to `true` if it's also not set in the `browserTarget` options.",
144
+ "description": "Read buildable libraries from source instead of building them separately. If not set, it will take the value specified in the `buildTarget` options, or it will default to `true` if it's also not set in the `buildTarget` options.",
151
145
  "x-priority": "important"
152
146
  },
153
147
  "esbuildMiddleware": {
@@ -165,5 +159,5 @@
165
159
  }
166
160
  },
167
161
  "additionalProperties": false,
168
- "anyOf": [{ "required": ["buildTarget"] }, { "required": ["browserTarget"] }]
162
+ "required": ["buildTarget"]
169
163
  }
@@ -9,6 +9,7 @@ const utils_1 = require("nx/src/tasks-runner/utils");
9
9
  const path_1 = require("path");
10
10
  const rxjs_1 = require("rxjs");
11
11
  const operators_2 = require("rxjs/operators");
12
+ const builder_package_1 = require("../../executors/utilities/builder-package");
12
13
  const buildable_libs_1 = require("../utilities/buildable-libs");
13
14
  const webpack_1 = require("../utilities/webpack");
14
15
  function shouldSkipInitialTargetRun(projectGraph, project, target) {
@@ -47,6 +48,7 @@ function executeWebpackBrowserBuilder(options, context) {
47
48
  dependencies = foundDependencies;
48
49
  delegateBuilderOptions.tsConfig = (0, devkit_1.normalizePath)((0, path_1.relative)(context.workspaceRoot, tsConfigPath));
49
50
  }
51
+ (0, builder_package_1.assertBuilderPackageIsInstalled)('@angular-devkit/build-angular');
50
52
  return (0, rxjs_1.from)(import('@angular-devkit/build-angular')).pipe((0, operators_2.switchMap)(({ executeBrowserBuilder }) => executeBrowserBuilder(delegateBuilderOptions, context, {
51
53
  webpackConfiguration: (baseWebpackConfig) => {
52
54
  if (!buildLibsFromSource && delegateBuilderOptions.watch) {
@@ -1,5 +1,7 @@
1
+ import type { BuilderContext } from '@angular-devkit/architect';
2
+ import type { ServerBuilderOutput } from '@angular-devkit/build-angular';
1
3
  import { Observable } from 'rxjs';
2
4
  import { Schema } from './schema';
3
- export declare function executeWebpackServerBuilder(options: Schema, context: import('@angular-devkit/architect').BuilderContext): Observable<import('@angular-devkit/build-angular').ServerBuilderOutput>;
5
+ export declare function executeWebpackServerBuilder(options: Schema, context: BuilderContext): Observable<ServerBuilderOutput>;
4
6
  declare const _default: any;
5
7
  export default _default;
@@ -6,9 +6,11 @@ const fs_1 = require("fs");
6
6
  const path_1 = require("path");
7
7
  const rxjs_1 = require("rxjs");
8
8
  const operators_1 = require("rxjs/operators");
9
+ const builder_package_1 = require("../../executors/utilities/builder-package");
9
10
  const buildable_libs_1 = require("../utilities/buildable-libs");
10
11
  const webpack_1 = require("../utilities/webpack");
11
12
  function buildServerApp(options, context) {
13
+ (0, builder_package_1.assertBuilderPackageIsInstalled)('@angular-devkit/build-angular');
12
14
  const { buildLibsFromSource, customWebpackConfig, ...delegateOptions } = options;
13
15
  // If there is a path to custom webpack config
14
16
  // Invoke our own support for custom webpack config
@@ -1,4 +1,4 @@
1
- import type { buildApplication as buildApplicationFn } from '@angular-devkit/build-angular';
1
+ import type { BuilderOutput } from '@angular-devkit/architect';
2
2
  import type { ExecutorContext } from '@nx/devkit';
3
3
  import type { ApplicationExecutorOptions } from './schema';
4
- export default function applicationExecutor(options: ApplicationExecutorOptions, context: ExecutorContext): ReturnType<typeof buildApplicationFn>;
4
+ export default function applicationExecutor(options: ApplicationExecutorOptions, context: ExecutorContext): AsyncIterable<BuilderOutput>;
@@ -2,9 +2,9 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.default = applicationExecutor;
4
4
  const ngcli_adapter_1 = require("nx/src/adapter/ngcli-adapter");
5
- const semver_1 = require("semver");
6
5
  const angular_version_utils_1 = require("../utilities/angular-version-utils");
7
6
  const buildable_libs_1 = require("../utilities/buildable-libs");
7
+ const builder_package_1 = require("../utilities/builder-package");
8
8
  const esbuild_extensions_1 = require("../utilities/esbuild-extensions");
9
9
  const normalize_options_1 = require("./utils/normalize-options");
10
10
  const validate_options_1 = require("./utils/validate-options");
@@ -27,14 +27,19 @@ async function* applicationExecutor(options, context) {
27
27
  description: 'Build an application.',
28
28
  optionSchema: require('./schema.json'),
29
29
  }, context);
30
- const { version: angularVersion } = (0, angular_version_utils_1.getInstalledAngularVersionInfo)();
31
- if ((0, semver_1.gte)(angularVersion, '17.1.0')) {
32
- const { buildApplication } = await import('@angular-devkit/build-angular');
30
+ const { major: angularMajorVersion } = (0, angular_version_utils_1.getInstalledAngularVersionInfo)();
31
+ if (angularMajorVersion >= 20) {
32
+ (0, builder_package_1.assertBuilderPackageIsInstalled)('@angular/build');
33
+ const { buildApplication } = await import('@angular/build');
33
34
  return yield* buildApplication(delegateExecutorOptions, builderContext, {
34
35
  codePlugins: plugins,
35
36
  indexHtmlTransformer,
36
37
  });
37
38
  }
38
- const { buildApplication } = require('@angular-devkit/build-angular');
39
- return yield* buildApplication(delegateExecutorOptions, builderContext, plugins);
39
+ (0, builder_package_1.assertBuilderPackageIsInstalled)('@angular-devkit/build-angular');
40
+ const { buildApplication } = await import('@angular-devkit/build-angular');
41
+ return yield* buildApplication(delegateExecutorOptions, builderContext, {
42
+ codePlugins: plugins,
43
+ indexHtmlTransformer,
44
+ });
40
45
  }
@@ -1,4 +1,4 @@
1
- import type { ApplicationBuilderOptions } from '@angular-devkit/build-angular';
1
+ import type { ApplicationBuilderOptions } from '@angular/build';
2
2
  import type { PluginSpec } from '../utilities/esbuild-extensions';
3
3
 
4
4
  export interface ApplicationExecutorOptions extends ApplicationBuilderOptions {