@nx/angular 17.0.3 → 17.0.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (458) hide show
  1. package/LICENSE +1 -1
  2. package/README.md +9 -4
  3. package/esm2022/mf/mf.mjs +1 -1
  4. package/esm2022/src/runtime/nx/data-persistence.mjs +1 -1
  5. package/executors.d.ts +9 -2
  6. package/executors.js +7 -2
  7. package/executors.json +19 -9
  8. package/fesm2022/nx-angular-mf.mjs.map +1 -1
  9. package/fesm2022/nx-angular.mjs.map +1 -1
  10. package/generators.d.ts +1 -1
  11. package/generators.js +3 -1
  12. package/generators.json +7 -2
  13. package/migrations.json +451 -0
  14. package/ng-package.json +2 -2
  15. package/package.json +20 -26
  16. package/plugins/component-testing.d.ts +1 -26
  17. package/plugins/component-testing.js +15 -4
  18. package/src/builders/dev-server/dev-server.impl.d.ts +4 -0
  19. package/src/builders/dev-server/dev-server.impl.js +160 -0
  20. package/src/builders/{webpack-dev-server → dev-server}/lib/index.d.ts +1 -0
  21. package/src/builders/{webpack-dev-server → dev-server}/lib/index.js +1 -0
  22. package/src/builders/dev-server/lib/normalize-options.d.ts +2 -0
  23. package/src/builders/dev-server/lib/normalize-options.js +20 -0
  24. package/src/builders/dev-server/lib/validate-options.d.ts +2 -0
  25. package/src/builders/dev-server/lib/validate-options.js +22 -0
  26. package/src/builders/dev-server/schema.d.ts +39 -0
  27. package/src/builders/{webpack-dev-server → dev-server}/schema.json +42 -5
  28. package/src/builders/module-federation-dev-ssr/module-federation-dev-ssr.impl.d.ts +1 -1
  29. package/src/builders/module-federation-dev-ssr/module-federation-dev-ssr.impl.js +15 -9
  30. package/src/builders/utilities/module-federation.js +1 -1
  31. package/src/builders/webpack-browser/schema.d.ts +6 -2
  32. package/src/builders/webpack-browser/schema.json +15 -15
  33. package/src/builders/webpack-browser/webpack-browser.impl.js +8 -6
  34. package/src/builders/webpack-server/schema.d.ts +0 -1
  35. package/src/builders/webpack-server/schema.json +7 -20
  36. package/src/builders/webpack-server/validate-options.js +0 -7
  37. package/src/builders/webpack-server/webpack-server.impl.js +4 -9
  38. package/src/executors/application/application.impl.d.ts +3 -0
  39. package/src/executors/application/application.impl.js +37 -0
  40. package/src/executors/application/schema.d.ts +8 -0
  41. package/src/executors/application/schema.json +682 -0
  42. package/src/executors/application/utils/validate-options.d.ts +2 -0
  43. package/src/executors/application/utils/validate-options.js +52 -0
  44. package/src/executors/browser-esbuild/browser-esbuild.impl.d.ts +2 -3
  45. package/src/executors/browser-esbuild/browser-esbuild.impl.js +15 -8
  46. package/src/executors/browser-esbuild/schema.d.ts +3 -1
  47. package/src/executors/browser-esbuild/schema.json +38 -8
  48. package/src/executors/extract-i18n/extract-i18n.impl.d.ts +3 -0
  49. package/src/executors/extract-i18n/extract-i18n.impl.js +43 -0
  50. package/src/executors/extract-i18n/schema.d.ts +8 -0
  51. package/src/executors/extract-i18n/schema.json +45 -0
  52. package/src/executors/module-federation-dev-server/lib/build-static-remotes.d.ts +4 -0
  53. package/src/executors/module-federation-dev-server/lib/build-static-remotes.js +56 -0
  54. package/src/executors/module-federation-dev-server/lib/index.d.ts +5 -0
  55. package/src/executors/module-federation-dev-server/lib/index.js +8 -0
  56. package/src/executors/module-federation-dev-server/lib/normalize-options.d.ts +2 -0
  57. package/src/executors/module-federation-dev-server/lib/normalize-options.js +23 -0
  58. package/src/executors/module-federation-dev-server/lib/parse-static-remotes-config.d.ts +11 -0
  59. package/src/executors/module-federation-dev-server/lib/parse-static-remotes-config.js +18 -0
  60. package/src/executors/module-federation-dev-server/lib/start-dev-remotes.d.ts +5 -0
  61. package/src/executors/module-federation-dev-server/lib/start-dev-remotes.js +29 -0
  62. package/src/executors/module-federation-dev-server/lib/start-static-remotes-file-server.d.ts +9 -0
  63. package/src/executors/module-federation-dev-server/lib/start-static-remotes-file-server.js +46 -0
  64. package/src/executors/module-federation-dev-server/module-federation-dev-server.impl.d.ts +4 -0
  65. package/src/executors/module-federation-dev-server/module-federation-dev-server.impl.js +116 -0
  66. package/src/{builders → executors}/module-federation-dev-server/schema.d.ts +25 -7
  67. package/src/{builders → executors}/module-federation-dev-server/schema.json +31 -6
  68. package/src/executors/ng-packagr-lite/ng-packagr-adjustments/ng-packagr.d.ts +3 -0
  69. package/src/executors/ng-packagr-lite/ng-packagr-adjustments/ng-packagr.js +34 -0
  70. package/src/executors/ng-packagr-lite/ng-packagr-adjustments/{ng-package → pre-v17/ng-package}/entry-point/compile-ngc.transform.js +6 -4
  71. package/src/executors/ng-packagr-lite/ng-packagr-adjustments/{ng-package → pre-v17/ng-package}/entry-point/write-package.transform.js +25 -13
  72. package/src/executors/ng-packagr-lite/ng-packagr-adjustments/{ngc → pre-v17/ngc}/compile-source-files.d.ts +1 -2
  73. package/src/executors/ng-packagr-lite/ng-packagr-adjustments/{ngc → pre-v17/ngc}/compile-source-files.js +14 -9
  74. package/src/executors/ng-packagr-lite/ng-packagr-adjustments/{styles → pre-v17/styles}/stylesheet-processor.d.ts +5 -10
  75. package/src/executors/ng-packagr-lite/ng-packagr-adjustments/{styles → pre-v17/styles}/stylesheet-processor.js +39 -86
  76. package/src/executors/ng-packagr-lite/ng-packagr-adjustments/v17+/ng-package/entry-point/write-bundles.di.d.ts +2 -0
  77. package/src/executors/ng-packagr-lite/ng-packagr-adjustments/v17+/ng-package/entry-point/write-bundles.di.js +12 -0
  78. package/src/executors/ng-packagr-lite/ng-packagr-adjustments/v17+/ng-package/entry-point/write-bundles.transform.d.ts +8 -0
  79. package/src/executors/ng-packagr-lite/ng-packagr-adjustments/v17+/ng-package/entry-point/write-bundles.transform.js +12 -0
  80. package/src/executors/ng-packagr-lite/ng-packagr-adjustments/v17+/ng-package/entry-point/write-package.di.d.ts +8 -0
  81. package/src/executors/ng-packagr-lite/ng-packagr-adjustments/v17+/ng-package/entry-point/write-package.di.js +18 -0
  82. package/src/executors/ng-packagr-lite/ng-packagr-adjustments/v17+/ng-package/entry-point/write-package.transform.d.ts +8 -0
  83. package/src/executors/ng-packagr-lite/ng-packagr-adjustments/v17+/ng-package/entry-point/write-package.transform.js +285 -0
  84. package/src/executors/ng-packagr-lite/ng-packagr-lite.impl.js +5 -17
  85. package/src/executors/ng-packagr-lite/schema.json +1 -1
  86. package/src/executors/package/ng-packagr-adjustments/ng-package/entry-point/compile-ngc.transform.js +5 -3
  87. package/src/executors/package/ng-packagr-adjustments/ng-packagr.d.ts +3 -0
  88. package/src/executors/package/ng-packagr-adjustments/ng-packagr.js +28 -0
  89. package/src/executors/package/ng-packagr-adjustments/ngc/compile-source-files.d.ts +1 -1
  90. package/src/executors/package/ng-packagr-adjustments/ngc/compile-source-files.js +13 -6
  91. package/src/executors/package/ng-packagr-adjustments/styles/stylesheet-processor.d.ts +5 -10
  92. package/src/executors/package/ng-packagr-adjustments/styles/stylesheet-processor.js +39 -86
  93. package/src/executors/package/package.impl.d.ts +1 -1
  94. package/src/executors/package/package.impl.js +5 -15
  95. package/src/executors/package/schema.json +3 -3
  96. package/src/executors/utilities/buildable-libs.d.ts +6 -0
  97. package/src/executors/{browser-esbuild/lib → utilities}/buildable-libs.js +3 -4
  98. package/src/executors/utilities/esbuild-extensions.d.ts +10 -0
  99. package/src/executors/utilities/esbuild-extensions.js +50 -0
  100. package/src/executors/utilities/module-loader.d.ts +15 -0
  101. package/src/executors/utilities/module-loader.js +52 -0
  102. package/src/executors/utilities/ng-compiler-cli.d.ts +1 -0
  103. package/src/executors/utilities/ng-compiler-cli.js +8 -0
  104. package/src/executors/utilities/ng-packagr/stylesheet-processor.d.ts +49 -0
  105. package/src/executors/utilities/ng-packagr/stylesheet-processor.di.d.ts +2 -0
  106. package/src/executors/utilities/ng-packagr/stylesheet-processor.di.js +16 -0
  107. package/src/executors/utilities/ng-packagr/stylesheet-processor.js +209 -0
  108. package/src/executors/utilities/ng-packagr/tailwindcss.d.ts +7 -0
  109. package/src/executors/utilities/{tailwindcss.js → ng-packagr/tailwindcss.js} +5 -22
  110. package/src/executors/utilities/patch-builder-context.d.ts +3 -0
  111. package/src/executors/utilities/patch-builder-context.js +41 -0
  112. package/src/executors/utilities/typescript.js +1 -1
  113. package/src/generators/add-linting/add-linting.d.ts +1 -1
  114. package/src/generators/add-linting/add-linting.js +9 -15
  115. package/src/generators/add-linting/lib/add-angular-eslint-dependencies.d.ts +2 -2
  116. package/src/generators/add-linting/lib/add-angular-eslint-dependencies.js +9 -5
  117. package/src/generators/add-linting/lib/buildable-project.d.ts +2 -0
  118. package/src/generators/add-linting/lib/buildable-project.js +9 -0
  119. package/src/generators/add-linting/lib/create-eslint-configuration.d.ts +2 -2
  120. package/src/generators/add-linting/schema.json +1 -1
  121. package/src/generators/application/application.js +19 -17
  122. package/src/generators/application/files/base/tsconfig.app.json__tpl__ +1 -1
  123. package/src/generators/application/files/base/tsconfig.json__tpl__ +6 -2
  124. package/src/generators/application/files/ng-module/src/app/app.component.spec.ts__tpl__ +3 -1
  125. package/src/generators/application/files/ng-module/src/app/app.component.ts__tpl__ +4 -2
  126. package/src/generators/application/files/ng-module/src/app/app.module.ts__tpl__ +1 -1
  127. package/src/generators/application/files/ng-module/src/app/nx-welcome.component.ts__tpl__ +53 -14
  128. package/src/generators/application/files/ng-module/src/main.ts__tpl__ +2 -8
  129. package/src/generators/application/files/standalone-components/src/app/app.component.spec.ts__tpl__ +6 -4
  130. package/src/generators/application/files/standalone-components/src/app/app.component.ts__tpl__ +4 -2
  131. package/src/generators/application/files/standalone-components/src/app/app.config.ts__tpl__ +3 -3
  132. package/src/generators/application/files/standalone-components/src/app/nx-welcome.component.ts__tpl__ +53 -14
  133. package/src/generators/application/files/standalone-components/src/main.ts__tpl__ +4 -8
  134. package/src/generators/application/lib/add-e2e.js +22 -8
  135. package/src/generators/application/lib/add-unit-test-runner.js +5 -20
  136. package/src/generators/application/lib/create-files.js +14 -10
  137. package/src/generators/application/lib/create-project.d.ts +1 -1
  138. package/src/generators/application/lib/create-project.js +48 -38
  139. package/src/generators/application/lib/index.d.ts +1 -0
  140. package/src/generators/application/lib/index.js +1 -0
  141. package/src/generators/application/lib/normalize-options.d.ts +1 -1
  142. package/src/generators/application/lib/normalize-options.js +28 -6
  143. package/src/generators/application/lib/normalized-schema.d.ts +5 -0
  144. package/src/generators/application/lib/set-generator-defaults.d.ts +3 -0
  145. package/src/generators/application/lib/set-generator-defaults.js +17 -0
  146. package/src/generators/application/lib/update-editor-tsconfig.d.ts +1 -1
  147. package/src/generators/application/lib/update-editor-tsconfig.js +11 -14
  148. package/src/generators/application/schema.d.ts +1 -0
  149. package/src/generators/application/schema.json +18 -10
  150. package/src/generators/component/component.js +4 -1
  151. package/src/generators/component/files/__fileName__.spec.ts__tpl__ +2 -3
  152. package/src/generators/component/files/__fileName__.ts__tpl__ +8 -2
  153. package/src/generators/component/lib/component.js +1 -1
  154. package/src/generators/component/lib/index.d.ts +1 -1
  155. package/src/generators/component/lib/index.js +1 -1
  156. package/src/generators/component/lib/normalize-options.js +3 -2
  157. package/src/generators/component/lib/set-generator-defaults.d.ts +3 -0
  158. package/src/generators/component/lib/set-generator-defaults.js +14 -0
  159. package/src/generators/component/schema.d.ts +3 -3
  160. package/src/generators/component/schema.json +4 -4
  161. package/src/generators/component-cypress-spec/files/__componentFileName__.__fileExt__ +13 -8
  162. package/src/generators/component-cypress-spec/schema.json +1 -1
  163. package/src/generators/component-story/files/__componentFileName__.stories.ts__tmpl__ +2 -2
  164. package/src/generators/component-test/component-test.d.ts +1 -1
  165. package/src/generators/component-test/component-test.js +8 -3
  166. package/src/generators/component-test/files/__componentFileName__.cy.ts__tpl__ +9 -11
  167. package/src/generators/component-test/schema.json +1 -1
  168. package/src/generators/convert-to-application-executor/convert-to-application-executor.d.ts +4 -0
  169. package/src/generators/convert-to-application-executor/convert-to-application-executor.js +242 -0
  170. package/src/generators/convert-to-application-executor/schema.d.ts +4 -0
  171. package/src/generators/convert-to-application-executor/schema.json +26 -0
  172. package/src/generators/convert-to-with-mf/convert-to-with-mf.js +3 -1
  173. package/src/generators/convert-to-with-mf/lib/write-new-webpack-config.js +3 -2
  174. package/src/generators/convert-to-with-mf/schema.d.ts +1 -0
  175. package/src/generators/convert-to-with-mf/schema.json +6 -0
  176. package/src/generators/cypress-component-configuration/cypress-component-configuration.d.ts +2 -1
  177. package/src/generators/cypress-component-configuration/cypress-component-configuration.js +43 -24
  178. package/src/generators/directive/directive.js +0 -1
  179. package/src/generators/directive/files/__fileName__.ts__tpl__ +1 -3
  180. package/src/generators/directive/lib/index.d.ts +0 -1
  181. package/src/generators/directive/lib/index.js +0 -1
  182. package/src/generators/directive/lib/normalize-options.js +3 -1
  183. package/src/generators/directive/schema.d.ts +3 -3
  184. package/src/generators/directive/schema.json +4 -4
  185. package/src/generators/federate-module/federate-module.js +1 -0
  186. package/src/generators/federate-module/lib/add-remote.d.ts +1 -1
  187. package/src/generators/federate-module/lib/add-remote.js +2 -11
  188. package/src/generators/federate-module/schema.json +3 -3
  189. package/src/generators/host/files/common/v17+/src/main.server.ts__tmpl__ +67 -0
  190. package/src/generators/host/files/ts/webpack.server.config.ts__tmpl__ +2 -2
  191. package/src/generators/host/host.js +8 -9
  192. package/src/generators/host/lib/index.d.ts +1 -1
  193. package/src/generators/host/lib/index.js +1 -1
  194. package/src/generators/host/lib/update-ssr-setup.d.ts +3 -0
  195. package/src/generators/host/lib/{add-ssr.js → update-ssr-setup.js} +8 -14
  196. package/src/generators/host/schema.json +6 -6
  197. package/src/generators/init/init.d.ts +2 -2
  198. package/src/generators/init/init.js +19 -137
  199. package/src/generators/init/schema.d.ts +1 -9
  200. package/src/generators/init/schema.json +8 -59
  201. package/src/generators/library/files/ng-module/src/lib/lib.routes.ts__tpl__ +1 -1
  202. package/src/generators/library/files/standalone-components/src/lib/lib.routes.ts__tpl__ +1 -1
  203. package/src/generators/library/lib/add-load-children.js +2 -2
  204. package/src/generators/library/lib/add-project.js +24 -22
  205. package/src/generators/library/lib/add-standalone-component.d.ts +2 -2
  206. package/src/generators/library/lib/add-standalone-component.js +5 -4
  207. package/src/generators/library/lib/normalize-options.js +2 -5
  208. package/src/generators/library/lib/set-generator-defaults.d.ts +3 -0
  209. package/src/generators/library/lib/set-generator-defaults.js +15 -0
  210. package/src/generators/library/lib/update-tsconfig.js +3 -3
  211. package/src/generators/library/library.js +15 -27
  212. package/src/generators/library/schema.d.ts +1 -0
  213. package/src/generators/library/schema.json +13 -13
  214. package/src/generators/library-secondary-entry-point/files/src/index.ts__tmpl__ +1 -5
  215. package/src/generators/library-secondary-entry-point/lib/index.d.ts +0 -1
  216. package/src/generators/library-secondary-entry-point/lib/index.js +0 -1
  217. package/src/generators/library-secondary-entry-point/library-secondary-entry-point.js +3 -2
  218. package/src/generators/library-secondary-entry-point/schema.d.ts +1 -0
  219. package/src/generators/library-secondary-entry-point/schema.json +9 -3
  220. package/src/generators/move/schema.json +1 -1
  221. package/src/generators/ng-add/migrate-from-angular-cli.js +1 -1
  222. package/src/generators/ng-add/migrators/projects/app.migrator.js +50 -7
  223. package/src/generators/ng-add/migrators/projects/e2e.migrator.js +31 -23
  224. package/src/generators/ng-add/ng-add.js +1 -8
  225. package/src/generators/ng-add/schema.json +1 -1
  226. package/src/generators/ng-add/utilities/workspace.d.ts +1 -1
  227. package/src/generators/ng-add/utilities/workspace.js +9 -16
  228. package/src/generators/ngrx/files/{base/__directory__ → __directory__}/__fileName__.models.ts__tmpl__ +1 -1
  229. package/src/generators/ngrx/files/{base/__directory__ → __directory__}/__fileName__.selectors.spec.ts__tmpl__ +1 -1
  230. package/src/generators/ngrx/lib/generate-files.js +1 -10
  231. package/src/generators/ngrx/lib/validate-options.js +0 -23
  232. package/src/generators/ngrx/schema.json +3 -3
  233. package/src/generators/ngrx-feature-store/files/{base/__directory__ → __directory__}/__fileName__.models.ts__tmpl__ +1 -1
  234. package/src/generators/ngrx-feature-store/files/{base/__directory__ → __directory__}/__fileName__.selectors.spec.ts__tmpl__ +1 -1
  235. package/src/generators/ngrx-feature-store/lib/generate-files.js +1 -12
  236. package/src/generators/ngrx-feature-store/lib/validate-options.js +0 -22
  237. package/src/generators/ngrx-feature-store/schema.json +3 -3
  238. package/src/generators/ngrx-root-store/lib/normalize-options.js +1 -1
  239. package/src/generators/ngrx-root-store/lib/validate-options.js +0 -15
  240. package/src/generators/ngrx-root-store/schema.json +2 -2
  241. package/src/generators/pipe/files/__fileName__.ts__tpl__ +0 -2
  242. package/src/generators/pipe/lib/index.d.ts +0 -1
  243. package/src/generators/pipe/lib/index.js +0 -1
  244. package/src/generators/pipe/lib/normalize-options.js +1 -0
  245. package/src/generators/pipe/pipe.js +0 -1
  246. package/src/generators/pipe/schema.d.ts +3 -3
  247. package/src/generators/pipe/schema.json +4 -4
  248. package/src/generators/remote/files/base-ts/webpack.server.config.ts__tmpl__ +2 -2
  249. package/src/generators/remote/files/common/{src → pre-v17/src}/main.server.ts__tmpl__ +1 -3
  250. package/src/generators/remote/files/common/v17+/src/main.server.ts__tmpl__ +73 -0
  251. package/src/generators/remote/lib/index.d.ts +1 -1
  252. package/src/generators/remote/lib/index.js +1 -1
  253. package/src/generators/remote/lib/{add-ssr.d.ts → update-ssr-setup.d.ts} +1 -1
  254. package/src/generators/remote/lib/{add-ssr.js → update-ssr-setup.js} +9 -13
  255. package/src/generators/remote/remote.js +7 -9
  256. package/src/generators/remote/schema.json +6 -6
  257. package/src/generators/scam/lib/convert-component-to-scam.js +2 -1
  258. package/src/generators/scam/schema.d.ts +3 -3
  259. package/src/generators/scam/schema.json +2 -2
  260. package/src/generators/scam-directive/lib/convert-directive-to-scam.js +2 -1
  261. package/src/generators/scam-directive/scam-directive.js +3 -1
  262. package/src/generators/scam-directive/schema.d.ts +4 -3
  263. package/src/generators/scam-directive/schema.json +8 -2
  264. package/src/generators/scam-pipe/lib/convert-pipe-to-scam.js +2 -1
  265. package/src/generators/scam-pipe/scam-pipe.js +3 -1
  266. package/src/generators/scam-pipe/schema.d.ts +4 -3
  267. package/src/generators/scam-pipe/schema.json +8 -2
  268. package/src/generators/scam-to-standalone/scam-to-standalone.js +0 -7
  269. package/src/generators/scam-to-standalone/schema.json +2 -2
  270. package/src/generators/setup-mf/files/host-files/app.component.spec.ts__tmpl__ +3 -1
  271. package/src/generators/setup-mf/files/ts-webpack/module-federation.config.ts__tmpl__ +12 -0
  272. package/src/generators/setup-mf/files/ts-webpack/tsconfig.lint.json__tmpl__ +12 -0
  273. package/src/generators/setup-mf/files/ts-webpack/webpack.config.ts__tmpl__ +1 -1
  274. package/src/generators/setup-mf/files/ts-webpack/webpack.prod.config.ts__tmpl__ +12 -12
  275. package/src/generators/setup-mf/files/webpack/module-federation.config.js__tmpl__ +13 -1
  276. package/src/generators/setup-mf/lib/add-cypress-workaround.js +14 -4
  277. package/src/generators/setup-mf/lib/add-remote-entry.js +2 -11
  278. package/src/generators/setup-mf/lib/add-remote-to-host.js +1 -1
  279. package/src/generators/setup-mf/lib/fix-bootstrap.js +10 -18
  280. package/src/generators/setup-mf/lib/generate-config.js +3 -0
  281. package/src/generators/setup-mf/lib/index.d.ts +1 -1
  282. package/src/generators/setup-mf/lib/index.js +1 -1
  283. package/src/generators/setup-mf/lib/normalize-options.js +2 -1
  284. package/src/generators/setup-mf/lib/remove-dead-code-from-remote.js +10 -10
  285. package/src/generators/setup-mf/lib/setup-serve-target.js +1 -1
  286. package/src/generators/setup-mf/lib/update-host-app-routes.js +2 -2
  287. package/src/generators/{pipe/lib/validate-options.d.ts → setup-mf/lib/update-tsconfig.d.ts} +1 -1
  288. package/src/generators/setup-mf/lib/update-tsconfig.js +19 -0
  289. package/src/generators/setup-mf/schema.d.ts +1 -0
  290. package/src/generators/setup-mf/schema.json +8 -3
  291. package/src/generators/setup-mf/setup-mf.js +1 -7
  292. package/src/generators/setup-ssr/files/ngmodule/base/src/__main__ +1 -1
  293. package/src/generators/setup-ssr/files/server/application-builder/__serverFileName__ +56 -0
  294. package/src/generators/setup-ssr/files/{ngmodule/base → server/server-builder/pre-v17}/__serverFileName__ +7 -8
  295. package/src/generators/setup-ssr/files/{standalone → server/server-builder/v17+}/__serverFileName__ +25 -16
  296. package/src/generators/setup-ssr/lib/add-dependencies.d.ts +2 -0
  297. package/src/generators/setup-ssr/lib/add-dependencies.js +36 -0
  298. package/src/generators/setup-ssr/lib/add-hydration.js +11 -5
  299. package/src/generators/setup-ssr/lib/add-server-file.d.ts +3 -0
  300. package/src/generators/setup-ssr/lib/add-server-file.js +31 -0
  301. package/src/generators/setup-ssr/lib/constants.d.ts +3 -0
  302. package/src/generators/setup-ssr/lib/constants.js +6 -0
  303. package/src/generators/setup-ssr/lib/generate-files.d.ts +1 -1
  304. package/src/generators/setup-ssr/lib/generate-files.js +11 -16
  305. package/src/generators/setup-ssr/lib/generate-server-ts-config.d.ts +4 -0
  306. package/src/generators/setup-ssr/lib/generate-server-ts-config.js +29 -0
  307. package/src/generators/setup-ssr/lib/index.d.ts +4 -0
  308. package/src/generators/setup-ssr/lib/index.js +4 -0
  309. package/src/generators/setup-ssr/lib/normalize-options.js +7 -1
  310. package/src/generators/setup-ssr/lib/set-router-initial-navigation.d.ts +3 -0
  311. package/src/generators/setup-ssr/lib/set-router-initial-navigation.js +93 -0
  312. package/src/generators/setup-ssr/lib/update-project-config.d.ts +2 -1
  313. package/src/generators/setup-ssr/lib/update-project-config.js +46 -13
  314. package/src/generators/setup-ssr/lib/validate-options.js +15 -2
  315. package/src/generators/setup-ssr/schema.json +4 -4
  316. package/src/generators/setup-ssr/setup-ssr.js +18 -12
  317. package/src/generators/setup-tailwind/schema.json +1 -1
  318. package/src/generators/stories/schema.json +1 -1
  319. package/src/generators/stories/stories.js +2 -2
  320. package/src/generators/storybook-configuration/lib/generate-stories.js +6 -4
  321. package/src/generators/storybook-configuration/lib/generate-storybook-configuration.js +3 -1
  322. package/src/generators/storybook-configuration/schema.d.ts +1 -1
  323. package/src/generators/storybook-configuration/schema.json +7 -7
  324. package/src/generators/storybook-configuration/storybook-configuration.js +8 -5
  325. package/src/generators/utils/add-jest.d.ts +8 -0
  326. package/src/generators/utils/add-jest.js +36 -0
  327. package/src/generators/utils/add-mf-env-to-inputs.d.ts +2 -0
  328. package/src/generators/utils/add-mf-env-to-inputs.js +27 -0
  329. package/src/generators/utils/dependencies.js +1 -2
  330. package/src/generators/utils/ensure-angular-dependencies.d.ts +2 -0
  331. package/src/generators/utils/ensure-angular-dependencies.js +35 -0
  332. package/src/generators/utils/export-scam.js +2 -2
  333. package/src/generators/utils/project.d.ts +0 -1
  334. package/src/generators/utils/project.js +2 -29
  335. package/src/generators/utils/selector.d.ts +2 -2
  336. package/src/generators/utils/selector.js +11 -4
  337. package/src/generators/utils/testing.js +24 -1
  338. package/src/generators/utils/update-app-editor-tsconfig-excluded-files.d.ts +2 -0
  339. package/src/generators/utils/update-app-editor-tsconfig-excluded-files.js +23 -0
  340. package/src/generators/utils/update-project-root-tsconfig.d.ts +3 -0
  341. package/src/generators/utils/update-project-root-tsconfig.js +26 -0
  342. package/src/generators/utils/validations.d.ts +0 -1
  343. package/src/generators/utils/validations.js +1 -14
  344. package/src/generators/utils/version-utils.d.ts +2 -2
  345. package/src/generators/utils/version-utils.js +3 -3
  346. package/src/migrations/update-17-1-0/browser-target-to-build-target.d.ts +3 -0
  347. package/src/migrations/update-17-1-0/browser-target-to-build-target.js +50 -0
  348. package/src/migrations/update-17-1-0/replace-nguniversal-builders.d.ts +2 -0
  349. package/src/migrations/update-17-1-0/replace-nguniversal-builders.js +75 -0
  350. package/src/migrations/update-17-1-0/replace-nguniversal-engines.d.ts +2 -0
  351. package/src/migrations/update-17-1-0/replace-nguniversal-engines.js +183 -0
  352. package/src/migrations/update-17-1-0/update-angular-cli.d.ts +3 -0
  353. package/src/migrations/update-17-1-0/update-angular-cli.js +23 -0
  354. package/src/migrations/update-17-1-0/update-zone-js-deep-import.d.ts +2 -0
  355. package/src/migrations/update-17-1-0/update-zone-js-deep-import.js +37 -0
  356. package/src/migrations/update-17-2-0/rename-webpack-dev-server.d.ts +2 -0
  357. package/src/migrations/update-17-2-0/rename-webpack-dev-server.js +40 -0
  358. package/src/migrations/update-17-3-0/add-autoprefixer-dependency.d.ts +2 -0
  359. package/src/migrations/update-17-3-0/add-autoprefixer-dependency.js +26 -0
  360. package/src/migrations/update-17-3-0/add-browser-sync-dependency.d.ts +2 -0
  361. package/src/migrations/update-17-3-0/add-browser-sync-dependency.js +26 -0
  362. package/src/migrations/update-17-3-0/update-angular-cli.d.ts +3 -0
  363. package/src/migrations/update-17-3-0/update-angular-cli.js +23 -0
  364. package/src/migrations/update-18-0-0/add-mf-env-var-to-target-defaults.d.ts +2 -0
  365. package/src/migrations/update-18-0-0/add-mf-env-var-to-target-defaults.js +26 -0
  366. package/src/migrations/update-18-1-0/update-angular-cli.d.ts +3 -0
  367. package/src/migrations/update-18-1-0/update-angular-cli.js +23 -0
  368. package/src/migrations/update-18-1-1/fix-target-defaults-inputs.d.ts +2 -0
  369. package/src/migrations/update-18-1-1/fix-target-defaults-inputs.js +53 -0
  370. package/src/migrations/update-18-2-0/update-angular-cli.d.ts +3 -0
  371. package/src/migrations/update-18-2-0/update-angular-cli.js +23 -0
  372. package/src/utils/backward-compatible-versions.d.ts +6 -4
  373. package/src/utils/backward-compatible-versions.js +20 -22
  374. package/src/utils/{public-api.d.ts → index.d.ts} +5 -0
  375. package/src/utils/{public-api.js → index.js} +5 -0
  376. package/src/utils/mf/utils.js +7 -0
  377. package/src/utils/mf/with-module-federation-ssr.js +3 -0
  378. package/src/utils/mf/with-module-federation.js +3 -0
  379. package/src/utils/nx-devkit/ast-utils.js +4 -2
  380. package/src/utils/nx-devkit/testing.js +27 -31
  381. package/src/utils/targets.d.ts +2 -0
  382. package/src/utils/targets.js +17 -0
  383. package/src/utils/version-utils.d.ts +3 -3
  384. package/src/utils/versions.d.ts +9 -11
  385. package/src/utils/versions.js +10 -12
  386. package/src/builders/module-federation-dev-server/module-federation-dev-server.impl.d.ts +0 -5
  387. package/src/builders/module-federation-dev-server/module-federation-dev-server.impl.js +0 -136
  388. package/src/builders/webpack-browser/validate-options.d.ts +0 -2
  389. package/src/builders/webpack-browser/validate-options.js +0 -40
  390. package/src/builders/webpack-dev-server/lib/normalize-options.d.ts +0 -2
  391. package/src/builders/webpack-dev-server/lib/normalize-options.js +0 -14
  392. package/src/builders/webpack-dev-server/schema.d.ts +0 -21
  393. package/src/builders/webpack-dev-server/webpack-dev-server.impl.d.ts +0 -4
  394. package/src/builders/webpack-dev-server/webpack-dev-server.impl.js +0 -105
  395. package/src/executors/browser-esbuild/lib/buildable-libs.d.ts +0 -9
  396. package/src/executors/browser-esbuild/lib/validate-options.d.ts +0 -2
  397. package/src/executors/browser-esbuild/lib/validate-options.js +0 -40
  398. package/src/executors/ng-packagr-lite/ng-packagr-adjustments/ts/cache-compiler-host.d.ts +0 -16
  399. package/src/executors/ng-packagr-lite/ng-packagr-adjustments/ts/cache-compiler-host.js +0 -175
  400. package/src/executors/package/ng-packagr-adjustments/ts/cache-compiler-host.d.ts +0 -15
  401. package/src/executors/package/ng-packagr-adjustments/ts/cache-compiler-host.js +0 -197
  402. package/src/executors/utilities/tailwindcss.d.ts +0 -7
  403. package/src/generators/application/files/tsconfig.editor.json__tpl__ +0 -5
  404. package/src/generators/application/files/v14/.browserlistrc__tpl__ +0 -16
  405. package/src/generators/application/files/v14/src/environments/environment.prod.ts__tpl__ +0 -3
  406. package/src/generators/application/files/v14/src/environments/environment.ts__tpl__ +0 -16
  407. package/src/generators/application/files/v14/src/polyfills.ts__tpl__ +0 -53
  408. package/src/generators/component/lib/validate-options.d.ts +0 -3
  409. package/src/generators/component/lib/validate-options.js +0 -8
  410. package/src/generators/directive/lib/validate-options.d.ts +0 -3
  411. package/src/generators/directive/lib/validate-options.js +0 -8
  412. package/src/generators/host/lib/add-ssr.d.ts +0 -3
  413. package/src/generators/library-secondary-entry-point/lib/update-linting-file-patterns.d.ts +0 -3
  414. package/src/generators/library-secondary-entry-point/lib/update-linting-file-patterns.js +0 -15
  415. package/src/generators/ngrx/files/no-inject/__directory__/__fileName__.effects.ts__tmpl__ +0 -22
  416. package/src/generators/ngrx/files/no-inject/__directory__/__fileName__.facade.ts__tmpl__ +0 -27
  417. package/src/generators/ngrx-feature-store/files/no-inject/__directory__/__fileName__.effects.ts__tmpl__ +0 -22
  418. package/src/generators/ngrx-feature-store/files/no-inject/__directory__/__fileName__.facade.ts__tmpl__ +0 -27
  419. package/src/generators/pipe/lib/validate-options.js +0 -8
  420. package/src/generators/setup-mf/lib/set-tsconfig-target.d.ts +0 -3
  421. package/src/generators/setup-mf/lib/set-tsconfig-target.js +0 -16
  422. package/src/generators/setup-ssr/files/ngmodule/v14/src/__main__ +0 -11
  423. package/src/generators/utils/create-ts-config.d.ts +0 -8
  424. package/src/generators/utils/create-ts-config.js +0 -35
  425. /package/src/executors/ng-packagr-lite/ng-packagr-adjustments/{ng-package → pre-v17/ng-package}/entry-point/compile-ngc.di.d.ts +0 -0
  426. /package/src/executors/ng-packagr-lite/ng-packagr-adjustments/{ng-package → pre-v17/ng-package}/entry-point/compile-ngc.di.js +0 -0
  427. /package/src/executors/ng-packagr-lite/ng-packagr-adjustments/{ng-package → pre-v17/ng-package}/entry-point/compile-ngc.transform.d.ts +0 -0
  428. /package/src/executors/ng-packagr-lite/ng-packagr-adjustments/{ng-package → pre-v17/ng-package}/entry-point/entry-point.di.d.ts +0 -0
  429. /package/src/executors/ng-packagr-lite/ng-packagr-adjustments/{ng-package → pre-v17/ng-package}/entry-point/entry-point.di.js +0 -0
  430. /package/src/executors/ng-packagr-lite/ng-packagr-adjustments/{ng-package → pre-v17/ng-package}/entry-point/entry-point.transform.d.ts +0 -0
  431. /package/src/executors/ng-packagr-lite/ng-packagr-adjustments/{ng-package → pre-v17/ng-package}/entry-point/entry-point.transform.js +0 -0
  432. /package/src/executors/ng-packagr-lite/ng-packagr-adjustments/{ng-package → pre-v17/ng-package}/entry-point/write-package.di.d.ts +0 -0
  433. /package/src/executors/ng-packagr-lite/ng-packagr-adjustments/{ng-package → pre-v17/ng-package}/entry-point/write-package.di.js +0 -0
  434. /package/src/executors/ng-packagr-lite/ng-packagr-adjustments/{ng-package → pre-v17/ng-package}/entry-point/write-package.transform.d.ts +0 -0
  435. /package/src/executors/ng-packagr-lite/ng-packagr-adjustments/{ng-package → pre-v17/ng-package}/options.di.d.ts +0 -0
  436. /package/src/executors/ng-packagr-lite/ng-packagr-adjustments/{ng-package → pre-v17/ng-package}/options.di.js +0 -0
  437. /package/src/executors/ng-packagr-lite/ng-packagr-adjustments/{ng-package → pre-v17/ng-package}/package.di.d.ts +0 -0
  438. /package/src/executors/ng-packagr-lite/ng-packagr-adjustments/{ng-package → pre-v17/ng-package}/package.di.js +0 -0
  439. /package/src/executors/ng-packagr-lite/ng-packagr-adjustments/{styles → pre-v17/styles}/stylesheet-processor.di.d.ts +0 -0
  440. /package/src/executors/ng-packagr-lite/ng-packagr-adjustments/{styles → pre-v17/styles}/stylesheet-processor.di.js +0 -0
  441. /package/src/generators/host/files/common/{src → pre-v17/src}/main.server.ts__tmpl__ +0 -0
  442. /package/src/generators/ngrx/files/{base/__directory__ → __directory__}/__fileName__.actions.ts__tmpl__ +0 -0
  443. /package/src/generators/ngrx/files/{base/__directory__ → __directory__}/__fileName__.effects.spec.ts__tmpl__ +0 -0
  444. /package/src/generators/ngrx/files/{base/__directory__ → __directory__}/__fileName__.effects.ts__tmpl__ +0 -0
  445. /package/src/generators/ngrx/files/{base/__directory__ → __directory__}/__fileName__.facade.spec.ts__tmpl__ +0 -0
  446. /package/src/generators/ngrx/files/{base/__directory__ → __directory__}/__fileName__.facade.ts__tmpl__ +0 -0
  447. /package/src/generators/ngrx/files/{base/__directory__ → __directory__}/__fileName__.reducer.spec.ts__tmpl__ +0 -0
  448. /package/src/generators/ngrx/files/{base/__directory__ → __directory__}/__fileName__.reducer.ts__tmpl__ +0 -0
  449. /package/src/generators/ngrx/files/{base/__directory__ → __directory__}/__fileName__.selectors.ts__tmpl__ +0 -0
  450. /package/src/generators/ngrx-feature-store/files/{base/__directory__ → __directory__}/__fileName__.actions.ts__tmpl__ +0 -0
  451. /package/src/generators/ngrx-feature-store/files/{base/__directory__ → __directory__}/__fileName__.effects.spec.ts__tmpl__ +0 -0
  452. /package/src/generators/ngrx-feature-store/files/{base/__directory__ → __directory__}/__fileName__.effects.ts__tmpl__ +0 -0
  453. /package/src/generators/ngrx-feature-store/files/{base/__directory__ → __directory__}/__fileName__.facade.spec.ts__tmpl__ +0 -0
  454. /package/src/generators/ngrx-feature-store/files/{base/__directory__ → __directory__}/__fileName__.facade.ts__tmpl__ +0 -0
  455. /package/src/generators/ngrx-feature-store/files/{base/__directory__ → __directory__}/__fileName__.reducer.spec.ts__tmpl__ +0 -0
  456. /package/src/generators/ngrx-feature-store/files/{base/__directory__ → __directory__}/__fileName__.reducer.ts__tmpl__ +0 -0
  457. /package/src/generators/ngrx-feature-store/files/{base/__directory__ → __directory__}/__fileName__.selectors.ts__tmpl__ +0 -0
  458. /package/src/generators/setup-ssr/files/{base → root}/tsconfig.server.json__tpl__ +0 -0
@@ -0,0 +1,52 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.validateOptions = void 0;
4
+ const semver_1 = require("semver");
5
+ const angular_version_utils_1 = require("../../utilities/angular-version-utils");
6
+ function validateOptions(options) {
7
+ const { major: angularMajorVersion, version: angularVersion } = (0, angular_version_utils_1.getInstalledAngularVersionInfo)();
8
+ if (angularMajorVersion < 17) {
9
+ throw new Error(`The "application" executor requires Angular version 17 or greater. You are currently using version ${angularVersion}.`);
10
+ }
11
+ if ((0, semver_1.lt)(angularVersion, '17.1.0')) {
12
+ if (options.loader) {
13
+ throw new Error(`The "loader" option requires Angular version 17.1.0 or greater. You are currently using version ${angularVersion}.`);
14
+ }
15
+ if (options.indexHtmlTransformer) {
16
+ throw new Error(`The "indexHtmlTransformer" option requires Angular version 17.1.0 or greater. You are currently using version ${angularVersion}.`);
17
+ }
18
+ if (typeof options.index === 'object' &&
19
+ options.index.preloadInitial !== undefined) {
20
+ throw new Error(`The "index.preloadInitial" option requires Angular version 17.1.0 or greater. You are currently using version ${angularVersion}.`);
21
+ }
22
+ if (options.optimization &&
23
+ typeof options.optimization !== 'boolean' &&
24
+ options.optimization.styles &&
25
+ typeof options.optimization.styles !== 'boolean') {
26
+ if (options.optimization.styles.removeSpecialComments === false) {
27
+ throw new Error(`The "optimization.styles.removeSpecialComments" option requires Angular version 17.1.0 or greater. You are currently using version ${angularVersion}.`);
28
+ }
29
+ else if (options.optimization.styles.removeSpecialComments === true) {
30
+ // silently remove the option, as it was the default before 17.1.0
31
+ delete options.optimization.styles.removeSpecialComments;
32
+ }
33
+ }
34
+ if (typeof options.outputPath === 'object') {
35
+ throw new Error(`The "outputPath" option as an object requires Angular version 17.1.0 or greater. You are currently using version ${angularVersion}.`);
36
+ }
37
+ }
38
+ if ((0, semver_1.lt)(angularVersion, '17.2.0')) {
39
+ if (options.define) {
40
+ throw new Error(`The "define" option requires Angular version 17.2.0 or greater. You are currently using version ${angularVersion}.`);
41
+ }
42
+ if (options.clearScreen !== undefined) {
43
+ throw new Error(`The "clearScreen" option requires Angular version 17.2.0 or greater. You are currently using version ${angularVersion}.`);
44
+ }
45
+ }
46
+ if ((0, semver_1.lt)(angularVersion, '17.3.0')) {
47
+ if (options.deployUrl) {
48
+ throw new Error(`The "deployUrl" option requires Angular version 17.3.0 or greater. You are currently using version ${angularVersion}.`);
49
+ }
50
+ }
51
+ }
52
+ exports.validateOptions = validateOptions;
@@ -1,8 +1,7 @@
1
- import { type EsBuildSchema } from './schema';
2
1
  import { type ExecutorContext } from '@nx/devkit';
3
- import { type OutputFile } from 'esbuild';
2
+ import type { EsBuildSchema } from './schema';
4
3
  export default function esbuildExecutor(options: EsBuildSchema, context: ExecutorContext): AsyncGenerator<import("@angular-devkit/core").JsonObject & import("@angular-devkit/architect/src/output-schema").Schema & {
5
- outputFiles?: OutputFile[];
4
+ outputFiles?: import("@angular-devkit/build-angular/src/tools/esbuild/bundler-context").BuildOutputFile[];
6
5
  assetFiles?: {
7
6
  source: string;
8
7
  destination: string;
@@ -1,27 +1,34 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- const validate_options_1 = require("./lib/validate-options");
4
3
  const devkit_1 = require("@nx/devkit");
5
- const buildable_libs_1 = require("./lib/buildable-libs");
6
4
  const ngcli_adapter_1 = require("nx/src/adapter/ngcli-adapter");
5
+ const angular_version_utils_1 = require("../utilities/angular-version-utils");
6
+ const buildable_libs_1 = require("../utilities/buildable-libs");
7
+ const esbuild_extensions_1 = require("../utilities/esbuild-extensions");
7
8
  async function* esbuildExecutor(options, context) {
8
- (0, validate_options_1.validateOptions)(options);
9
+ if (options.plugins) {
10
+ const { major: angularMajorVersion, version: angularVersion } = (0, angular_version_utils_1.getInstalledAngularVersionInfo)();
11
+ if (angularMajorVersion < 17) {
12
+ throw new Error((0, devkit_1.stripIndents) `The "plugins" option is only supported in Angular >= 17.0.0. You are currently using "${angularVersion}".
13
+ You can resolve this error by removing the "plugins" option or by migrating to Angular 17.0.0.`);
14
+ }
15
+ }
9
16
  options.buildLibsFromSource ??= true;
10
- const { buildLibsFromSource, ...delegateExecutorOptions } = options;
17
+ const { buildLibsFromSource, plugins: pluginPaths, ...delegateExecutorOptions } = options;
11
18
  let dependencies;
12
- let projectGraph = context.projectGraph;
13
19
  if (!buildLibsFromSource) {
14
- projectGraph = projectGraph ?? (0, devkit_1.readCachedProjectGraph)();
15
- const { tsConfigPath, dependencies: foundDependencies } = (0, buildable_libs_1.createTmpTsConfigForBuildableLibs)(delegateExecutorOptions.tsConfig, context, { projectGraph });
20
+ const { tsConfigPath, dependencies: foundDependencies } = (0, buildable_libs_1.createTmpTsConfigForBuildableLibs)(delegateExecutorOptions.tsConfig, context);
16
21
  dependencies = foundDependencies;
17
22
  delegateExecutorOptions.tsConfig = tsConfigPath;
18
23
  }
24
+ const plugins = await (0, esbuild_extensions_1.loadPlugins)(pluginPaths, options.tsConfig);
19
25
  const { buildEsbuildBrowser } = await Promise.resolve().then(() => require('@angular-devkit/build-angular/src/builders/browser-esbuild/index'));
20
26
  const builderContext = await (0, ngcli_adapter_1.createBuilderContext)({
21
27
  builderName: 'browser-esbuild',
22
28
  description: 'Build a browser application',
23
29
  optionSchema: await Promise.resolve().then(() => require('@angular-devkit/build-angular/src/builders/browser-esbuild/schema.json')),
24
30
  }, context);
25
- return yield* buildEsbuildBrowser(delegateExecutorOptions, builderContext);
31
+ return yield* buildEsbuildBrowser(delegateExecutorOptions, builderContext,
32
+ /* infrastructureSettings */ undefined, plugins);
26
33
  }
27
34
  exports.default = esbuildExecutor;
@@ -1,5 +1,7 @@
1
- import { Schema } from '@angular-devkit/build-angular/src/builders/browser-esbuild/schema';
1
+ import type { Schema } from '@angular-devkit/build-angular/src/builders/browser-esbuild/schema';
2
+ import type { PluginSpec } from '../utilities/esbuild-extensions';
2
3
 
3
4
  export interface EsBuildSchema extends Schema {
4
5
  buildLibsFromSource?: boolean;
6
+ plugins?: string[] | PluginSpec[];
5
7
  }
@@ -2,6 +2,7 @@
2
2
  "$schema": "http://json-schema.org/draft-07/schema",
3
3
  "title": "Schema for Nx ESBuild Executor",
4
4
  "description": "Nx ESBuild Executor supporting Incremental Builds.",
5
+ "examplesFile": "../../../docs/browser-esbuild-examples.md",
5
6
  "outputCapture": "direct-nodejs",
6
7
  "type": "object",
7
8
  "properties": {
@@ -215,7 +216,7 @@
215
216
  },
216
217
  "outputPath": {
217
218
  "type": "string",
218
- "description": "The full path for the new output directory, relative to the current workspace.\nBy default, writes output to a folder named dist/ in the current project."
219
+ "description": "The full path for the new output directory, relative to the current workspace."
219
220
  },
220
221
  "resourcesOutputPath": {
221
222
  "type": "string",
@@ -264,12 +265,12 @@
264
265
  },
265
266
  "vendorChunk": {
266
267
  "type": "boolean",
267
- "description": "Generate a seperate bundle containing only vendor libraries. This option should only be used for development to reduce the incremental compilation time.",
268
+ "description": "Generate a separate bundle containing only vendor libraries. This option should only be used for development to reduce the incremental compilation time.",
268
269
  "default": false
269
270
  },
270
271
  "commonChunk": {
271
272
  "type": "boolean",
272
- "description": "Generate a seperate bundle containing code used across multiple bundles.",
273
+ "description": "Generate a separate bundle containing code used across multiple bundles.",
273
274
  "default": true
274
275
  },
275
276
  "baseHref": {
@@ -278,8 +279,7 @@
278
279
  },
279
280
  "deployUrl": {
280
281
  "type": "string",
281
- "description": "URL where files will be deployed.",
282
- "x-deprecated": "Use \"baseHref\" option, \"APP_BASE_HREF\" DI token or a combination of both instead. For more information, see https://angular.io/guide/deployment#the-deploy-url."
282
+ "description": "Customize the base path for the URLs of resources in 'index.html' and component stylesheets. This option is only necessary for specific deployment scenarios, such as with Angular Elements or when utilizing different CDN locations."
283
283
  },
284
284
  "verbose": {
285
285
  "type": "boolean",
@@ -401,6 +401,7 @@
401
401
  },
402
402
  {
403
403
  "const": false,
404
+ "type": "boolean",
404
405
  "description": "Does not generate an `index.html` file."
405
406
  }
406
407
  ]
@@ -429,7 +430,7 @@
429
430
  "enum": ["none", "anonymous", "use-credentials"]
430
431
  },
431
432
  "allowedCommonJsDependencies": {
432
- "description": "A list of CommonJS packages that are allowed to be used without a build time warning.",
433
+ "description": "A list of CommonJS or AMD packages that are allowed to be used without a build time warning. Use `'*'` to allow all.",
433
434
  "type": "array",
434
435
  "items": {
435
436
  "type": "string"
@@ -440,6 +441,35 @@
440
441
  "type": "boolean",
441
442
  "description": "Read buildable libraries from source instead of building them separately.",
442
443
  "default": true
444
+ },
445
+ "plugins": {
446
+ "description": "A list of ESBuild plugins. _Note: this is only supported in Angular versions >= 17.0.0_.",
447
+ "type": "array",
448
+ "items": {
449
+ "oneOf": [
450
+ {
451
+ "type": "object",
452
+ "properties": {
453
+ "path": {
454
+ "type": "string",
455
+ "description": "The path to the plugin. Relative to the workspace root."
456
+ },
457
+ "options": {
458
+ "type": "object",
459
+ "description": "The options to provide to the plugin.",
460
+ "properties": {},
461
+ "additionalProperties": true
462
+ }
463
+ },
464
+ "additionalProperties": false,
465
+ "required": ["path"]
466
+ },
467
+ {
468
+ "type": "string",
469
+ "description": "The path to the plugin. Relative to the workspace root."
470
+ }
471
+ ]
472
+ }
443
473
  }
444
474
  },
445
475
  "additionalProperties": false,
@@ -488,11 +518,11 @@
488
518
  "properties": {
489
519
  "replace": {
490
520
  "type": "string",
491
- "pattern": "\\.(([cm]?j|t)sx?|json)$"
521
+ "pattern": "\\.(([cm]?[jt])sx?|json)$"
492
522
  },
493
523
  "with": {
494
524
  "type": "string",
495
- "pattern": "\\.(([cm]?j|t)sx?|json)$"
525
+ "pattern": "\\.(([cm]?[jt])sx?|json)$"
496
526
  }
497
527
  },
498
528
  "additionalProperties": false,
@@ -0,0 +1,3 @@
1
+ import { type ExecutorContext } from '@nx/devkit';
2
+ import type { ExtractI18nExecutorOptions } from './schema';
3
+ export default function extractI18nExecutor(options: ExtractI18nExecutorOptions, context: ExecutorContext): AsyncGenerator<never, import("@angular-devkit/architect").BuilderOutput, unknown>;
@@ -0,0 +1,43 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const devkit_1 = require("@nx/devkit");
4
+ const ngcli_adapter_1 = require("nx/src/adapter/ngcli-adapter");
5
+ const project_graph_1 = require("nx/src/project-graph/project-graph");
6
+ const angular_version_utils_1 = require("../utilities/angular-version-utils");
7
+ const patch_builder_context_1 = require("../utilities/patch-builder-context");
8
+ async function* extractI18nExecutor(options, context) {
9
+ const parsedBuildTarget = (0, devkit_1.parseTargetString)(options.buildTarget, context);
10
+ const browserTargetProjectConfiguration = (0, project_graph_1.readCachedProjectConfiguration)(parsedBuildTarget.project);
11
+ const buildTarget = browserTargetProjectConfiguration.targets[parsedBuildTarget.target];
12
+ const isUsingEsbuildBuilder = [
13
+ '@angular-devkit/build-angular:application',
14
+ '@angular-devkit/build-angular:browser-esbuild',
15
+ '@nx/angular:application',
16
+ '@nx/angular:browser-esbuild',
17
+ ].includes(buildTarget.executor);
18
+ const builderContext = await (0, ngcli_adapter_1.createBuilderContext)({
19
+ builderName: 'extrct-i18n',
20
+ description: 'Extracts i18n messages from source code.',
21
+ optionSchema: await Promise.resolve().then(() => require('./schema.json')),
22
+ }, context);
23
+ /**
24
+ * The Angular CLI extract-i18n builder make some decisions based on the build
25
+ * target builder but it only considers `@angular-devkit/build-angular:*`
26
+ * builders. Since we are using a custom builder, we patch the context to
27
+ * handle `@nx/angular:*` executors.
28
+ */
29
+ (0, patch_builder_context_1.patchBuilderContext)(builderContext, isUsingEsbuildBuilder, parsedBuildTarget);
30
+ const { executeExtractI18nBuilder } = await Promise.resolve().then(() => require('@angular-devkit/build-angular'));
31
+ const delegateBuilderOptions = getDelegateBuilderOptions(options);
32
+ return await executeExtractI18nBuilder(delegateBuilderOptions, builderContext);
33
+ }
34
+ exports.default = extractI18nExecutor;
35
+ function getDelegateBuilderOptions(options) {
36
+ const delegateBuilderOptions = { ...options };
37
+ const { major: angularMajorVersion } = (0, angular_version_utils_1.getInstalledAngularVersionInfo)();
38
+ if (angularMajorVersion <= 17) {
39
+ delegateBuilderOptions.browserTarget = delegateBuilderOptions.buildTarget;
40
+ delete delegateBuilderOptions.buildTarget;
41
+ }
42
+ return delegateBuilderOptions;
43
+ }
@@ -0,0 +1,8 @@
1
+ import type { ExtractI18nBuilderOptions } from '@angular-devkit/build-angular';
2
+
3
+ export type ExtractI18nExecutorOptions = Omit<
4
+ ExtractI18nBuilderOptions,
5
+ 'browserTarget'
6
+ > & {
7
+ buildTarget: string;
8
+ };
@@ -0,0 +1,45 @@
1
+ {
2
+ "$schema": "http://json-schema.org/draft-07/schema",
3
+ "title": "Schema for Nx extract-i18n Executor",
4
+ "description": "Extracts i18n messages from source code.",
5
+ "outputCapture": "direct-nodejs",
6
+ "type": "object",
7
+ "properties": {
8
+ "buildTarget": {
9
+ "type": "string",
10
+ "description": "A builder target to extract i18n messages in the format of `project:target[:configuration]`. You can also pass in more than one configuration name as a comma-separated list. Example: `project:target:production,staging`.",
11
+ "pattern": "^[^:\\s]+:[^:\\s]+(:[^\\s]+)?$"
12
+ },
13
+ "format": {
14
+ "type": "string",
15
+ "description": "Output format for the generated file.",
16
+ "default": "xlf",
17
+ "enum": [
18
+ "xmb",
19
+ "xlf",
20
+ "xlif",
21
+ "xliff",
22
+ "xlf2",
23
+ "xliff2",
24
+ "json",
25
+ "arb",
26
+ "legacy-migrate"
27
+ ]
28
+ },
29
+ "progress": {
30
+ "type": "boolean",
31
+ "description": "Log progress to the console.",
32
+ "default": true
33
+ },
34
+ "outputPath": {
35
+ "type": "string",
36
+ "description": "Path where output will be placed."
37
+ },
38
+ "outFile": {
39
+ "type": "string",
40
+ "description": "Name of the file to output."
41
+ }
42
+ },
43
+ "additionalProperties": false,
44
+ "required": ["buildTarget"]
45
+ }
@@ -0,0 +1,4 @@
1
+ import { type Schema } from '../schema';
2
+ import { type ExecutorContext } from '@nx/devkit';
3
+ import type { StaticRemotesConfig } from './parse-static-remotes-config';
4
+ export declare function buildStaticRemotes(staticRemotesConfig: StaticRemotesConfig, nxBin: any, context: ExecutorContext, options: Schema): Promise<void>;
@@ -0,0 +1,56 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.buildStaticRemotes = void 0;
4
+ const devkit_1 = require("@nx/devkit");
5
+ const cache_directory_1 = require("nx/src/utils/cache-directory");
6
+ const node_child_process_1 = require("node:child_process");
7
+ const node_path_1 = require("node:path");
8
+ const node_fs_1 = require("node:fs");
9
+ async function buildStaticRemotes(staticRemotesConfig, nxBin, context, options) {
10
+ if (!staticRemotesConfig.remotes.length) {
11
+ return;
12
+ }
13
+ const mappedLocationOfRemotes = {};
14
+ for (const app of staticRemotesConfig.remotes) {
15
+ mappedLocationOfRemotes[app] = `http${options.ssl ? 's' : ''}://${options.host}:${options.staticRemotesPort}/${staticRemotesConfig.config[app].urlSegment}`;
16
+ }
17
+ process.env.NX_MF_DEV_SERVER_STATIC_REMOTES = JSON.stringify(mappedLocationOfRemotes);
18
+ await new Promise((res) => {
19
+ devkit_1.logger.info(`NX Building ${staticRemotesConfig.remotes.length} static remotes...`);
20
+ const staticProcess = (0, node_child_process_1.fork)(nxBin, [
21
+ 'run-many',
22
+ `--target=build`,
23
+ `--projects=${staticRemotesConfig.remotes.join(',')}`,
24
+ ...(context.configurationName
25
+ ? [`--configuration=${context.configurationName}`]
26
+ : []),
27
+ ...(options.parallel ? [`--parallel=${options.parallel}`] : []),
28
+ ], {
29
+ cwd: context.root,
30
+ stdio: ['ignore', 'pipe', 'pipe', 'ipc'],
31
+ });
32
+ // File to debug build failures e.g. 2024-01-01T00_00_0_0Z-build.log'
33
+ const remoteBuildLogFile = (0, node_path_1.join)(cache_directory_1.projectGraphCacheDirectory, `${new Date().toISOString().replace(/[:\.]/g, '_')}-build.log`);
34
+ const stdoutStream = (0, node_fs_1.createWriteStream)(remoteBuildLogFile);
35
+ staticProcess.stdout.on('data', (data) => {
36
+ const ANSII_CODE_REGEX = /[\u001b\u009b][[()#;?]*(?:[0-9]{1,4}(?:;[0-9]{0,4})*)?[0-9A-ORZcf-nqry=><]/g;
37
+ const stdoutString = data.toString().replace(ANSII_CODE_REGEX, '');
38
+ stdoutStream.write(stdoutString);
39
+ if (stdoutString.includes('Successfully ran target build')) {
40
+ staticProcess.stdout.removeAllListeners('data');
41
+ devkit_1.logger.info(`NX Built ${staticRemotesConfig.remotes.length} static remotes`);
42
+ res();
43
+ }
44
+ });
45
+ staticProcess.stderr.on('data', (data) => devkit_1.logger.info(data.toString()));
46
+ staticProcess.on('exit', (code) => {
47
+ stdoutStream.end();
48
+ if (code !== 0) {
49
+ throw new Error(`Remote failed to start. A complete log can be found in: ${remoteBuildLogFile}`);
50
+ }
51
+ });
52
+ process.on('SIGTERM', () => staticProcess.kill('SIGTERM'));
53
+ process.on('exit', () => staticProcess.kill('SIGTERM'));
54
+ });
55
+ }
56
+ exports.buildStaticRemotes = buildStaticRemotes;
@@ -0,0 +1,5 @@
1
+ export * from './build-static-remotes';
2
+ export * from './normalize-options';
3
+ export * from './parse-static-remotes-config';
4
+ export * from './start-dev-remotes';
5
+ export * from './start-static-remotes-file-server';
@@ -0,0 +1,8 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const tslib_1 = require("tslib");
4
+ tslib_1.__exportStar(require("./build-static-remotes"), exports);
5
+ tslib_1.__exportStar(require("./normalize-options"), exports);
6
+ tslib_1.__exportStar(require("./parse-static-remotes-config"), exports);
7
+ tslib_1.__exportStar(require("./start-dev-remotes"), exports);
8
+ tslib_1.__exportStar(require("./start-static-remotes-file-server"), exports);
@@ -0,0 +1,2 @@
1
+ import type { NormalizedSchema, Schema } from '../schema';
2
+ export declare function normalizeOptions(schema: Schema): NormalizedSchema;
@@ -0,0 +1,23 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.normalizeOptions = void 0;
4
+ function normalizeOptions(schema) {
5
+ let buildTarget = schema.buildTarget;
6
+ if (schema.browserTarget) {
7
+ buildTarget ??= schema.browserTarget;
8
+ delete schema.browserTarget;
9
+ }
10
+ schema.buildLibsFromSource ??= true;
11
+ process.env.NX_BUILD_LIBS_FROM_SOURCE = `${schema.buildLibsFromSource}`;
12
+ process.env.NX_BUILD_TARGET = `${buildTarget}`;
13
+ return {
14
+ ...schema,
15
+ buildTarget,
16
+ host: schema.host ?? 'localhost',
17
+ port: schema.port ?? 4200,
18
+ liveReload: schema.liveReload ?? true,
19
+ open: schema.open ?? false,
20
+ ssl: schema.ssl ?? false,
21
+ };
22
+ }
23
+ exports.normalizeOptions = normalizeOptions;
@@ -0,0 +1,11 @@
1
+ import type { ExecutorContext } from '@nx/devkit';
2
+ export type StaticRemoteConfig = {
3
+ basePath: string;
4
+ outputPath: string;
5
+ urlSegment: string;
6
+ };
7
+ export type StaticRemotesConfig = {
8
+ remotes: string[];
9
+ config: Record<string, StaticRemoteConfig> | undefined;
10
+ };
11
+ export declare function parseStaticRemotesConfig(staticRemotes: string[] | undefined, context: ExecutorContext): StaticRemotesConfig;
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.parseStaticRemotesConfig = void 0;
4
+ const path_1 = require("path");
5
+ function parseStaticRemotesConfig(staticRemotes, context) {
6
+ if (!staticRemotes?.length) {
7
+ return { remotes: [], config: undefined };
8
+ }
9
+ const config = {};
10
+ for (const app of staticRemotes) {
11
+ const outputPath = context.projectGraph.nodes[app].data.targets['build'].options.outputPath;
12
+ const basePath = (0, path_1.dirname)(outputPath);
13
+ const urlSegment = (0, path_1.basename)(outputPath);
14
+ config[app] = { basePath, outputPath, urlSegment };
15
+ }
16
+ return { remotes: staticRemotes, config };
17
+ }
18
+ exports.parseStaticRemotesConfig = parseStaticRemotesConfig;
@@ -0,0 +1,5 @@
1
+ import { type Schema } from '../schema';
2
+ import { type ExecutorContext, type ProjectConfiguration } from '@nx/devkit';
3
+ export declare function startRemotes(remotes: string[], workspaceProjects: Record<string, ProjectConfiguration>, options: Schema, context: ExecutorContext, target?: 'serve' | 'serve-static'): Promise<AsyncIterable<{
4
+ success: boolean;
5
+ }>[]>;
@@ -0,0 +1,29 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.startRemotes = void 0;
4
+ const devkit_1 = require("@nx/devkit");
5
+ async function startRemotes(remotes, workspaceProjects, options, context, target = 'serve') {
6
+ const remoteIters = [];
7
+ for (const app of remotes) {
8
+ if (!workspaceProjects[app].targets?.[target]) {
9
+ throw new Error(`Could not find "${target}" target in "${app}" project.`);
10
+ }
11
+ else if (!workspaceProjects[app].targets?.[target].executor) {
12
+ throw new Error(`Could not find executor for "${target}" target in "${app}" project.`);
13
+ }
14
+ const [collection, executor] = workspaceProjects[app].targets[target].executor.split(':');
15
+ const isUsingModuleFederationDevServerExecutor = executor.includes('module-federation-dev-server');
16
+ remoteIters.push(await (0, devkit_1.runExecutor)({
17
+ project: app,
18
+ target,
19
+ configuration: context.configurationName,
20
+ }, {
21
+ ...(target === 'serve' ? { verbose: options.verbose ?? false } : {}),
22
+ ...(isUsingModuleFederationDevServerExecutor
23
+ ? { isInitialHost: false }
24
+ : {}),
25
+ }, context));
26
+ }
27
+ return remoteIters;
28
+ }
29
+ exports.startRemotes = startRemotes;
@@ -0,0 +1,9 @@
1
+ import { type ExecutorContext } from '@nx/devkit';
2
+ import { type Schema } from '../schema';
3
+ import type { StaticRemotesConfig } from './parse-static-remotes-config';
4
+ export declare function startStaticRemotesFileServer(staticRemotesConfig: StaticRemotesConfig, context: ExecutorContext, options: Schema): AsyncGenerator<{
5
+ success: boolean;
6
+ baseUrl: string;
7
+ }, {
8
+ success: boolean;
9
+ }, unknown>;
@@ -0,0 +1,46 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.startStaticRemotesFileServer = void 0;
4
+ const devkit_1 = require("@nx/devkit");
5
+ const file_server_impl_1 = require("@nx/web/src/executors/file-server/file-server.impl");
6
+ const path_1 = require("path");
7
+ const fs_1 = require("fs");
8
+ function startStaticRemotesFileServer(staticRemotesConfig, context, options) {
9
+ let shouldMoveToCommonLocation = false;
10
+ let commonOutputDirectory;
11
+ for (const app of staticRemotesConfig.remotes) {
12
+ const remoteBasePath = staticRemotesConfig.config[app].basePath;
13
+ if (!commonOutputDirectory) {
14
+ commonOutputDirectory = remoteBasePath;
15
+ }
16
+ else if (commonOutputDirectory !== remoteBasePath) {
17
+ shouldMoveToCommonLocation = true;
18
+ break;
19
+ }
20
+ }
21
+ if (shouldMoveToCommonLocation) {
22
+ commonOutputDirectory = (0, path_1.join)(devkit_1.workspaceRoot, 'tmp/static-remotes');
23
+ for (const app of staticRemotesConfig.remotes) {
24
+ const remoteConfig = staticRemotesConfig.config[app];
25
+ (0, fs_1.cpSync)(remoteConfig.outputPath, (0, path_1.join)(commonOutputDirectory, remoteConfig.urlSegment), {
26
+ force: true,
27
+ recursive: true,
28
+ });
29
+ }
30
+ }
31
+ const staticRemotesIter = (0, file_server_impl_1.default)({
32
+ cors: true,
33
+ watch: false,
34
+ staticFilePath: commonOutputDirectory,
35
+ parallel: false,
36
+ spa: false,
37
+ withDeps: false,
38
+ host: options.host,
39
+ port: options.staticRemotesPort,
40
+ ssl: options.ssl,
41
+ sslCert: options.sslCert,
42
+ sslKey: options.sslKey,
43
+ }, context);
44
+ return staticRemotesIter;
45
+ }
46
+ exports.startStaticRemotesFileServer = startStaticRemotesFileServer;
@@ -0,0 +1,4 @@
1
+ import { type ExecutorContext } from '@nx/devkit';
2
+ import { type Schema } from './schema';
3
+ export declare function moduleFederationDevServerExecutor(schema: Schema, context: ExecutorContext): AsyncGenerator<any, any, undefined>;
4
+ export default moduleFederationDevServerExecutor;