@nx/angular 17.0.3 → 17.0.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (458) hide show
  1. package/LICENSE +1 -1
  2. package/README.md +9 -4
  3. package/esm2022/mf/mf.mjs +1 -1
  4. package/esm2022/src/runtime/nx/data-persistence.mjs +1 -1
  5. package/executors.d.ts +9 -2
  6. package/executors.js +7 -2
  7. package/executors.json +19 -9
  8. package/fesm2022/nx-angular-mf.mjs.map +1 -1
  9. package/fesm2022/nx-angular.mjs.map +1 -1
  10. package/generators.d.ts +1 -1
  11. package/generators.js +3 -1
  12. package/generators.json +7 -2
  13. package/migrations.json +451 -0
  14. package/ng-package.json +2 -2
  15. package/package.json +20 -26
  16. package/plugins/component-testing.d.ts +1 -26
  17. package/plugins/component-testing.js +15 -4
  18. package/src/builders/dev-server/dev-server.impl.d.ts +4 -0
  19. package/src/builders/dev-server/dev-server.impl.js +160 -0
  20. package/src/builders/{webpack-dev-server → dev-server}/lib/index.d.ts +1 -0
  21. package/src/builders/{webpack-dev-server → dev-server}/lib/index.js +1 -0
  22. package/src/builders/dev-server/lib/normalize-options.d.ts +2 -0
  23. package/src/builders/dev-server/lib/normalize-options.js +20 -0
  24. package/src/builders/dev-server/lib/validate-options.d.ts +2 -0
  25. package/src/builders/dev-server/lib/validate-options.js +22 -0
  26. package/src/builders/dev-server/schema.d.ts +39 -0
  27. package/src/builders/{webpack-dev-server → dev-server}/schema.json +42 -5
  28. package/src/builders/module-federation-dev-ssr/module-federation-dev-ssr.impl.d.ts +1 -1
  29. package/src/builders/module-federation-dev-ssr/module-federation-dev-ssr.impl.js +15 -9
  30. package/src/builders/utilities/module-federation.js +1 -1
  31. package/src/builders/webpack-browser/schema.d.ts +6 -2
  32. package/src/builders/webpack-browser/schema.json +15 -15
  33. package/src/builders/webpack-browser/webpack-browser.impl.js +8 -6
  34. package/src/builders/webpack-server/schema.d.ts +0 -1
  35. package/src/builders/webpack-server/schema.json +7 -20
  36. package/src/builders/webpack-server/validate-options.js +0 -7
  37. package/src/builders/webpack-server/webpack-server.impl.js +4 -9
  38. package/src/executors/application/application.impl.d.ts +3 -0
  39. package/src/executors/application/application.impl.js +37 -0
  40. package/src/executors/application/schema.d.ts +8 -0
  41. package/src/executors/application/schema.json +682 -0
  42. package/src/executors/application/utils/validate-options.d.ts +2 -0
  43. package/src/executors/application/utils/validate-options.js +52 -0
  44. package/src/executors/browser-esbuild/browser-esbuild.impl.d.ts +2 -3
  45. package/src/executors/browser-esbuild/browser-esbuild.impl.js +15 -8
  46. package/src/executors/browser-esbuild/schema.d.ts +3 -1
  47. package/src/executors/browser-esbuild/schema.json +38 -8
  48. package/src/executors/extract-i18n/extract-i18n.impl.d.ts +3 -0
  49. package/src/executors/extract-i18n/extract-i18n.impl.js +43 -0
  50. package/src/executors/extract-i18n/schema.d.ts +8 -0
  51. package/src/executors/extract-i18n/schema.json +45 -0
  52. package/src/executors/module-federation-dev-server/lib/build-static-remotes.d.ts +4 -0
  53. package/src/executors/module-federation-dev-server/lib/build-static-remotes.js +56 -0
  54. package/src/executors/module-federation-dev-server/lib/index.d.ts +5 -0
  55. package/src/executors/module-federation-dev-server/lib/index.js +8 -0
  56. package/src/executors/module-federation-dev-server/lib/normalize-options.d.ts +2 -0
  57. package/src/executors/module-federation-dev-server/lib/normalize-options.js +23 -0
  58. package/src/executors/module-federation-dev-server/lib/parse-static-remotes-config.d.ts +11 -0
  59. package/src/executors/module-federation-dev-server/lib/parse-static-remotes-config.js +18 -0
  60. package/src/executors/module-federation-dev-server/lib/start-dev-remotes.d.ts +9 -0
  61. package/src/executors/module-federation-dev-server/lib/start-dev-remotes.js +29 -0
  62. package/src/executors/module-federation-dev-server/lib/start-static-remotes-file-server.d.ts +9 -0
  63. package/src/executors/module-federation-dev-server/lib/start-static-remotes-file-server.js +46 -0
  64. package/src/executors/module-federation-dev-server/module-federation-dev-server.impl.d.ts +4 -0
  65. package/src/executors/module-federation-dev-server/module-federation-dev-server.impl.js +115 -0
  66. package/src/{builders → executors}/module-federation-dev-server/schema.d.ts +25 -7
  67. package/src/{builders → executors}/module-federation-dev-server/schema.json +31 -6
  68. package/src/executors/ng-packagr-lite/ng-packagr-adjustments/ng-packagr.d.ts +3 -0
  69. package/src/executors/ng-packagr-lite/ng-packagr-adjustments/ng-packagr.js +34 -0
  70. package/src/executors/ng-packagr-lite/ng-packagr-adjustments/{ng-package → pre-v17/ng-package}/entry-point/compile-ngc.transform.js +6 -4
  71. package/src/executors/ng-packagr-lite/ng-packagr-adjustments/{ng-package → pre-v17/ng-package}/entry-point/write-package.transform.js +25 -13
  72. package/src/executors/ng-packagr-lite/ng-packagr-adjustments/{ngc → pre-v17/ngc}/compile-source-files.d.ts +1 -2
  73. package/src/executors/ng-packagr-lite/ng-packagr-adjustments/{ngc → pre-v17/ngc}/compile-source-files.js +14 -9
  74. package/src/executors/ng-packagr-lite/ng-packagr-adjustments/{styles → pre-v17/styles}/stylesheet-processor.d.ts +5 -10
  75. package/src/executors/ng-packagr-lite/ng-packagr-adjustments/{styles → pre-v17/styles}/stylesheet-processor.js +39 -86
  76. package/src/executors/ng-packagr-lite/ng-packagr-adjustments/v17+/ng-package/entry-point/write-bundles.di.d.ts +2 -0
  77. package/src/executors/ng-packagr-lite/ng-packagr-adjustments/v17+/ng-package/entry-point/write-bundles.di.js +12 -0
  78. package/src/executors/ng-packagr-lite/ng-packagr-adjustments/v17+/ng-package/entry-point/write-bundles.transform.d.ts +8 -0
  79. package/src/executors/ng-packagr-lite/ng-packagr-adjustments/v17+/ng-package/entry-point/write-bundles.transform.js +12 -0
  80. package/src/executors/ng-packagr-lite/ng-packagr-adjustments/v17+/ng-package/entry-point/write-package.di.d.ts +8 -0
  81. package/src/executors/ng-packagr-lite/ng-packagr-adjustments/v17+/ng-package/entry-point/write-package.di.js +18 -0
  82. package/src/executors/ng-packagr-lite/ng-packagr-adjustments/v17+/ng-package/entry-point/write-package.transform.d.ts +8 -0
  83. package/src/executors/ng-packagr-lite/ng-packagr-adjustments/v17+/ng-package/entry-point/write-package.transform.js +285 -0
  84. package/src/executors/ng-packagr-lite/ng-packagr-lite.impl.js +5 -17
  85. package/src/executors/ng-packagr-lite/schema.json +1 -1
  86. package/src/executors/package/ng-packagr-adjustments/ng-package/entry-point/compile-ngc.transform.js +5 -3
  87. package/src/executors/package/ng-packagr-adjustments/ng-packagr.d.ts +3 -0
  88. package/src/executors/package/ng-packagr-adjustments/ng-packagr.js +28 -0
  89. package/src/executors/package/ng-packagr-adjustments/ngc/compile-source-files.d.ts +1 -1
  90. package/src/executors/package/ng-packagr-adjustments/ngc/compile-source-files.js +13 -6
  91. package/src/executors/package/ng-packagr-adjustments/styles/stylesheet-processor.d.ts +5 -10
  92. package/src/executors/package/ng-packagr-adjustments/styles/stylesheet-processor.js +39 -86
  93. package/src/executors/package/package.impl.d.ts +1 -1
  94. package/src/executors/package/package.impl.js +5 -15
  95. package/src/executors/package/schema.json +3 -3
  96. package/src/executors/utilities/buildable-libs.d.ts +6 -0
  97. package/src/executors/{browser-esbuild/lib → utilities}/buildable-libs.js +3 -4
  98. package/src/executors/utilities/esbuild-extensions.d.ts +10 -0
  99. package/src/executors/utilities/esbuild-extensions.js +50 -0
  100. package/src/executors/utilities/module-loader.d.ts +15 -0
  101. package/src/executors/utilities/module-loader.js +52 -0
  102. package/src/executors/utilities/ng-compiler-cli.d.ts +1 -0
  103. package/src/executors/utilities/ng-compiler-cli.js +8 -0
  104. package/src/executors/utilities/ng-packagr/stylesheet-processor.d.ts +49 -0
  105. package/src/executors/utilities/ng-packagr/stylesheet-processor.di.d.ts +2 -0
  106. package/src/executors/utilities/ng-packagr/stylesheet-processor.di.js +16 -0
  107. package/src/executors/utilities/ng-packagr/stylesheet-processor.js +209 -0
  108. package/src/executors/utilities/ng-packagr/tailwindcss.d.ts +7 -0
  109. package/src/executors/utilities/{tailwindcss.js → ng-packagr/tailwindcss.js} +5 -22
  110. package/src/executors/utilities/patch-builder-context.d.ts +3 -0
  111. package/src/executors/utilities/patch-builder-context.js +41 -0
  112. package/src/executors/utilities/typescript.js +1 -1
  113. package/src/generators/add-linting/add-linting.d.ts +1 -1
  114. package/src/generators/add-linting/add-linting.js +9 -15
  115. package/src/generators/add-linting/lib/add-angular-eslint-dependencies.d.ts +2 -2
  116. package/src/generators/add-linting/lib/add-angular-eslint-dependencies.js +9 -5
  117. package/src/generators/add-linting/lib/buildable-project.d.ts +2 -0
  118. package/src/generators/add-linting/lib/buildable-project.js +9 -0
  119. package/src/generators/add-linting/lib/create-eslint-configuration.d.ts +2 -2
  120. package/src/generators/add-linting/schema.json +1 -1
  121. package/src/generators/application/application.js +19 -17
  122. package/src/generators/application/files/base/tsconfig.app.json__tpl__ +1 -1
  123. package/src/generators/application/files/base/tsconfig.json__tpl__ +6 -2
  124. package/src/generators/application/files/ng-module/src/app/app.component.spec.ts__tpl__ +3 -1
  125. package/src/generators/application/files/ng-module/src/app/app.component.ts__tpl__ +4 -2
  126. package/src/generators/application/files/ng-module/src/app/app.module.ts__tpl__ +1 -1
  127. package/src/generators/application/files/ng-module/src/app/nx-welcome.component.ts__tpl__ +53 -14
  128. package/src/generators/application/files/ng-module/src/main.ts__tpl__ +2 -8
  129. package/src/generators/application/files/standalone-components/src/app/app.component.spec.ts__tpl__ +6 -4
  130. package/src/generators/application/files/standalone-components/src/app/app.component.ts__tpl__ +4 -2
  131. package/src/generators/application/files/standalone-components/src/app/app.config.ts__tpl__ +3 -3
  132. package/src/generators/application/files/standalone-components/src/app/nx-welcome.component.ts__tpl__ +53 -14
  133. package/src/generators/application/files/standalone-components/src/main.ts__tpl__ +4 -8
  134. package/src/generators/application/lib/add-e2e.js +22 -8
  135. package/src/generators/application/lib/add-unit-test-runner.js +5 -20
  136. package/src/generators/application/lib/create-files.js +14 -10
  137. package/src/generators/application/lib/create-project.d.ts +1 -1
  138. package/src/generators/application/lib/create-project.js +48 -38
  139. package/src/generators/application/lib/index.d.ts +1 -0
  140. package/src/generators/application/lib/index.js +1 -0
  141. package/src/generators/application/lib/normalize-options.d.ts +1 -1
  142. package/src/generators/application/lib/normalize-options.js +28 -6
  143. package/src/generators/application/lib/normalized-schema.d.ts +5 -0
  144. package/src/generators/application/lib/set-generator-defaults.d.ts +3 -0
  145. package/src/generators/application/lib/set-generator-defaults.js +17 -0
  146. package/src/generators/application/lib/update-editor-tsconfig.d.ts +1 -1
  147. package/src/generators/application/lib/update-editor-tsconfig.js +11 -14
  148. package/src/generators/application/schema.d.ts +1 -0
  149. package/src/generators/application/schema.json +18 -10
  150. package/src/generators/component/component.js +4 -1
  151. package/src/generators/component/files/__fileName__.spec.ts__tpl__ +2 -3
  152. package/src/generators/component/files/__fileName__.ts__tpl__ +8 -2
  153. package/src/generators/component/lib/component.js +1 -1
  154. package/src/generators/component/lib/index.d.ts +1 -1
  155. package/src/generators/component/lib/index.js +1 -1
  156. package/src/generators/component/lib/normalize-options.js +3 -2
  157. package/src/generators/component/lib/set-generator-defaults.d.ts +3 -0
  158. package/src/generators/component/lib/set-generator-defaults.js +14 -0
  159. package/src/generators/component/schema.d.ts +3 -3
  160. package/src/generators/component/schema.json +4 -4
  161. package/src/generators/component-cypress-spec/files/__componentFileName__.__fileExt__ +13 -8
  162. package/src/generators/component-cypress-spec/schema.json +1 -1
  163. package/src/generators/component-story/files/__componentFileName__.stories.ts__tmpl__ +2 -2
  164. package/src/generators/component-test/component-test.d.ts +1 -1
  165. package/src/generators/component-test/component-test.js +8 -3
  166. package/src/generators/component-test/files/__componentFileName__.cy.ts__tpl__ +9 -11
  167. package/src/generators/component-test/schema.json +1 -1
  168. package/src/generators/convert-to-application-executor/convert-to-application-executor.d.ts +4 -0
  169. package/src/generators/convert-to-application-executor/convert-to-application-executor.js +242 -0
  170. package/src/generators/convert-to-application-executor/schema.d.ts +4 -0
  171. package/src/generators/convert-to-application-executor/schema.json +26 -0
  172. package/src/generators/convert-to-with-mf/convert-to-with-mf.js +3 -1
  173. package/src/generators/convert-to-with-mf/lib/write-new-webpack-config.js +3 -2
  174. package/src/generators/convert-to-with-mf/schema.d.ts +1 -0
  175. package/src/generators/convert-to-with-mf/schema.json +6 -0
  176. package/src/generators/cypress-component-configuration/cypress-component-configuration.d.ts +2 -1
  177. package/src/generators/cypress-component-configuration/cypress-component-configuration.js +43 -24
  178. package/src/generators/directive/directive.js +0 -1
  179. package/src/generators/directive/files/__fileName__.ts__tpl__ +1 -3
  180. package/src/generators/directive/lib/index.d.ts +0 -1
  181. package/src/generators/directive/lib/index.js +0 -1
  182. package/src/generators/directive/lib/normalize-options.js +3 -1
  183. package/src/generators/directive/schema.d.ts +3 -3
  184. package/src/generators/directive/schema.json +4 -4
  185. package/src/generators/federate-module/federate-module.js +1 -0
  186. package/src/generators/federate-module/lib/add-remote.d.ts +1 -1
  187. package/src/generators/federate-module/lib/add-remote.js +2 -11
  188. package/src/generators/federate-module/schema.json +3 -3
  189. package/src/generators/host/files/common/v17+/src/main.server.ts__tmpl__ +67 -0
  190. package/src/generators/host/files/ts/webpack.server.config.ts__tmpl__ +2 -2
  191. package/src/generators/host/host.js +8 -9
  192. package/src/generators/host/lib/index.d.ts +1 -1
  193. package/src/generators/host/lib/index.js +1 -1
  194. package/src/generators/host/lib/update-ssr-setup.d.ts +3 -0
  195. package/src/generators/host/lib/{add-ssr.js → update-ssr-setup.js} +8 -14
  196. package/src/generators/host/schema.json +6 -6
  197. package/src/generators/init/init.d.ts +2 -2
  198. package/src/generators/init/init.js +19 -137
  199. package/src/generators/init/schema.d.ts +1 -9
  200. package/src/generators/init/schema.json +8 -59
  201. package/src/generators/library/files/ng-module/src/lib/lib.routes.ts__tpl__ +1 -1
  202. package/src/generators/library/files/standalone-components/src/lib/lib.routes.ts__tpl__ +1 -1
  203. package/src/generators/library/lib/add-load-children.js +2 -2
  204. package/src/generators/library/lib/add-project.js +24 -22
  205. package/src/generators/library/lib/add-standalone-component.d.ts +2 -2
  206. package/src/generators/library/lib/add-standalone-component.js +5 -4
  207. package/src/generators/library/lib/normalize-options.js +2 -5
  208. package/src/generators/library/lib/set-generator-defaults.d.ts +3 -0
  209. package/src/generators/library/lib/set-generator-defaults.js +15 -0
  210. package/src/generators/library/lib/update-tsconfig.js +3 -3
  211. package/src/generators/library/library.js +15 -27
  212. package/src/generators/library/schema.d.ts +1 -0
  213. package/src/generators/library/schema.json +13 -13
  214. package/src/generators/library-secondary-entry-point/files/src/index.ts__tmpl__ +1 -5
  215. package/src/generators/library-secondary-entry-point/lib/index.d.ts +0 -1
  216. package/src/generators/library-secondary-entry-point/lib/index.js +0 -1
  217. package/src/generators/library-secondary-entry-point/library-secondary-entry-point.js +3 -2
  218. package/src/generators/library-secondary-entry-point/schema.d.ts +1 -0
  219. package/src/generators/library-secondary-entry-point/schema.json +9 -3
  220. package/src/generators/move/schema.json +1 -1
  221. package/src/generators/ng-add/migrate-from-angular-cli.js +1 -1
  222. package/src/generators/ng-add/migrators/projects/app.migrator.js +50 -7
  223. package/src/generators/ng-add/migrators/projects/e2e.migrator.js +31 -23
  224. package/src/generators/ng-add/ng-add.js +1 -8
  225. package/src/generators/ng-add/schema.json +1 -1
  226. package/src/generators/ng-add/utilities/workspace.d.ts +1 -1
  227. package/src/generators/ng-add/utilities/workspace.js +9 -16
  228. package/src/generators/ngrx/files/{base/__directory__ → __directory__}/__fileName__.models.ts__tmpl__ +1 -1
  229. package/src/generators/ngrx/files/{base/__directory__ → __directory__}/__fileName__.selectors.spec.ts__tmpl__ +1 -1
  230. package/src/generators/ngrx/lib/generate-files.js +1 -10
  231. package/src/generators/ngrx/lib/validate-options.js +0 -23
  232. package/src/generators/ngrx/schema.json +3 -3
  233. package/src/generators/ngrx-feature-store/files/{base/__directory__ → __directory__}/__fileName__.models.ts__tmpl__ +1 -1
  234. package/src/generators/ngrx-feature-store/files/{base/__directory__ → __directory__}/__fileName__.selectors.spec.ts__tmpl__ +1 -1
  235. package/src/generators/ngrx-feature-store/lib/generate-files.js +1 -12
  236. package/src/generators/ngrx-feature-store/lib/validate-options.js +0 -22
  237. package/src/generators/ngrx-feature-store/schema.json +3 -3
  238. package/src/generators/ngrx-root-store/lib/normalize-options.js +1 -1
  239. package/src/generators/ngrx-root-store/lib/validate-options.js +0 -15
  240. package/src/generators/ngrx-root-store/schema.json +2 -2
  241. package/src/generators/pipe/files/__fileName__.ts__tpl__ +0 -2
  242. package/src/generators/pipe/lib/index.d.ts +0 -1
  243. package/src/generators/pipe/lib/index.js +0 -1
  244. package/src/generators/pipe/lib/normalize-options.js +1 -0
  245. package/src/generators/pipe/pipe.js +0 -1
  246. package/src/generators/pipe/schema.d.ts +3 -3
  247. package/src/generators/pipe/schema.json +4 -4
  248. package/src/generators/remote/files/base-ts/webpack.server.config.ts__tmpl__ +2 -2
  249. package/src/generators/remote/files/common/{src → pre-v17/src}/main.server.ts__tmpl__ +1 -3
  250. package/src/generators/remote/files/common/v17+/src/main.server.ts__tmpl__ +73 -0
  251. package/src/generators/remote/lib/index.d.ts +1 -1
  252. package/src/generators/remote/lib/index.js +1 -1
  253. package/src/generators/remote/lib/{add-ssr.d.ts → update-ssr-setup.d.ts} +1 -1
  254. package/src/generators/remote/lib/{add-ssr.js → update-ssr-setup.js} +9 -13
  255. package/src/generators/remote/remote.js +7 -9
  256. package/src/generators/remote/schema.json +6 -6
  257. package/src/generators/scam/lib/convert-component-to-scam.js +2 -1
  258. package/src/generators/scam/schema.d.ts +3 -3
  259. package/src/generators/scam/schema.json +2 -2
  260. package/src/generators/scam-directive/lib/convert-directive-to-scam.js +2 -1
  261. package/src/generators/scam-directive/scam-directive.js +3 -1
  262. package/src/generators/scam-directive/schema.d.ts +4 -3
  263. package/src/generators/scam-directive/schema.json +8 -2
  264. package/src/generators/scam-pipe/lib/convert-pipe-to-scam.js +2 -1
  265. package/src/generators/scam-pipe/scam-pipe.js +3 -1
  266. package/src/generators/scam-pipe/schema.d.ts +4 -3
  267. package/src/generators/scam-pipe/schema.json +8 -2
  268. package/src/generators/scam-to-standalone/scam-to-standalone.js +0 -7
  269. package/src/generators/scam-to-standalone/schema.json +2 -2
  270. package/src/generators/setup-mf/files/host-files/app.component.spec.ts__tmpl__ +3 -1
  271. package/src/generators/setup-mf/files/ts-webpack/module-federation.config.ts__tmpl__ +12 -0
  272. package/src/generators/setup-mf/files/ts-webpack/tsconfig.lint.json__tmpl__ +12 -0
  273. package/src/generators/setup-mf/files/ts-webpack/webpack.config.ts__tmpl__ +1 -1
  274. package/src/generators/setup-mf/files/ts-webpack/webpack.prod.config.ts__tmpl__ +12 -12
  275. package/src/generators/setup-mf/files/webpack/module-federation.config.js__tmpl__ +13 -1
  276. package/src/generators/setup-mf/lib/add-cypress-workaround.js +14 -4
  277. package/src/generators/setup-mf/lib/add-remote-entry.js +2 -11
  278. package/src/generators/setup-mf/lib/add-remote-to-host.js +1 -1
  279. package/src/generators/setup-mf/lib/fix-bootstrap.js +10 -18
  280. package/src/generators/setup-mf/lib/generate-config.js +3 -0
  281. package/src/generators/setup-mf/lib/index.d.ts +1 -1
  282. package/src/generators/setup-mf/lib/index.js +1 -1
  283. package/src/generators/setup-mf/lib/normalize-options.js +2 -1
  284. package/src/generators/setup-mf/lib/remove-dead-code-from-remote.js +10 -10
  285. package/src/generators/setup-mf/lib/setup-serve-target.js +1 -1
  286. package/src/generators/setup-mf/lib/update-host-app-routes.js +2 -2
  287. package/src/generators/{pipe/lib/validate-options.d.ts → setup-mf/lib/update-tsconfig.d.ts} +1 -1
  288. package/src/generators/setup-mf/lib/update-tsconfig.js +19 -0
  289. package/src/generators/setup-mf/schema.d.ts +1 -0
  290. package/src/generators/setup-mf/schema.json +8 -3
  291. package/src/generators/setup-mf/setup-mf.js +1 -7
  292. package/src/generators/setup-ssr/files/ngmodule/base/src/__main__ +1 -1
  293. package/src/generators/setup-ssr/files/server/application-builder/__serverFileName__ +56 -0
  294. package/src/generators/setup-ssr/files/{ngmodule/base → server/server-builder/pre-v17}/__serverFileName__ +7 -8
  295. package/src/generators/setup-ssr/files/{standalone → server/server-builder/v17+}/__serverFileName__ +25 -16
  296. package/src/generators/setup-ssr/lib/add-dependencies.d.ts +2 -0
  297. package/src/generators/setup-ssr/lib/add-dependencies.js +36 -0
  298. package/src/generators/setup-ssr/lib/add-hydration.js +11 -5
  299. package/src/generators/setup-ssr/lib/add-server-file.d.ts +3 -0
  300. package/src/generators/setup-ssr/lib/add-server-file.js +31 -0
  301. package/src/generators/setup-ssr/lib/constants.d.ts +3 -0
  302. package/src/generators/setup-ssr/lib/constants.js +6 -0
  303. package/src/generators/setup-ssr/lib/generate-files.d.ts +1 -1
  304. package/src/generators/setup-ssr/lib/generate-files.js +11 -16
  305. package/src/generators/setup-ssr/lib/generate-server-ts-config.d.ts +4 -0
  306. package/src/generators/setup-ssr/lib/generate-server-ts-config.js +29 -0
  307. package/src/generators/setup-ssr/lib/index.d.ts +4 -0
  308. package/src/generators/setup-ssr/lib/index.js +4 -0
  309. package/src/generators/setup-ssr/lib/normalize-options.js +7 -1
  310. package/src/generators/setup-ssr/lib/set-router-initial-navigation.d.ts +3 -0
  311. package/src/generators/setup-ssr/lib/set-router-initial-navigation.js +93 -0
  312. package/src/generators/setup-ssr/lib/update-project-config.d.ts +2 -1
  313. package/src/generators/setup-ssr/lib/update-project-config.js +46 -13
  314. package/src/generators/setup-ssr/lib/validate-options.js +15 -2
  315. package/src/generators/setup-ssr/schema.json +4 -4
  316. package/src/generators/setup-ssr/setup-ssr.js +18 -12
  317. package/src/generators/setup-tailwind/schema.json +1 -1
  318. package/src/generators/stories/schema.json +1 -1
  319. package/src/generators/stories/stories.js +2 -2
  320. package/src/generators/storybook-configuration/lib/generate-stories.js +6 -4
  321. package/src/generators/storybook-configuration/lib/generate-storybook-configuration.js +3 -1
  322. package/src/generators/storybook-configuration/schema.d.ts +1 -1
  323. package/src/generators/storybook-configuration/schema.json +7 -7
  324. package/src/generators/storybook-configuration/storybook-configuration.js +8 -5
  325. package/src/generators/utils/add-jest.d.ts +8 -0
  326. package/src/generators/utils/add-jest.js +36 -0
  327. package/src/generators/utils/add-mf-env-to-inputs.d.ts +2 -0
  328. package/src/generators/utils/add-mf-env-to-inputs.js +27 -0
  329. package/src/generators/utils/dependencies.js +1 -2
  330. package/src/generators/utils/ensure-angular-dependencies.d.ts +2 -0
  331. package/src/generators/utils/ensure-angular-dependencies.js +35 -0
  332. package/src/generators/utils/export-scam.js +2 -2
  333. package/src/generators/utils/project.d.ts +0 -1
  334. package/src/generators/utils/project.js +2 -29
  335. package/src/generators/utils/selector.d.ts +2 -2
  336. package/src/generators/utils/selector.js +11 -4
  337. package/src/generators/utils/testing.js +24 -1
  338. package/src/generators/utils/update-app-editor-tsconfig-excluded-files.d.ts +2 -0
  339. package/src/generators/utils/update-app-editor-tsconfig-excluded-files.js +23 -0
  340. package/src/generators/utils/update-project-root-tsconfig.d.ts +3 -0
  341. package/src/generators/utils/update-project-root-tsconfig.js +26 -0
  342. package/src/generators/utils/validations.d.ts +0 -1
  343. package/src/generators/utils/validations.js +1 -14
  344. package/src/generators/utils/version-utils.d.ts +2 -2
  345. package/src/generators/utils/version-utils.js +3 -3
  346. package/src/migrations/update-17-1-0/browser-target-to-build-target.d.ts +3 -0
  347. package/src/migrations/update-17-1-0/browser-target-to-build-target.js +50 -0
  348. package/src/migrations/update-17-1-0/replace-nguniversal-builders.d.ts +2 -0
  349. package/src/migrations/update-17-1-0/replace-nguniversal-builders.js +75 -0
  350. package/src/migrations/update-17-1-0/replace-nguniversal-engines.d.ts +2 -0
  351. package/src/migrations/update-17-1-0/replace-nguniversal-engines.js +183 -0
  352. package/src/migrations/update-17-1-0/update-angular-cli.d.ts +3 -0
  353. package/src/migrations/update-17-1-0/update-angular-cli.js +23 -0
  354. package/src/migrations/update-17-1-0/update-zone-js-deep-import.d.ts +2 -0
  355. package/src/migrations/update-17-1-0/update-zone-js-deep-import.js +37 -0
  356. package/src/migrations/update-17-2-0/rename-webpack-dev-server.d.ts +2 -0
  357. package/src/migrations/update-17-2-0/rename-webpack-dev-server.js +40 -0
  358. package/src/migrations/update-17-3-0/add-autoprefixer-dependency.d.ts +2 -0
  359. package/src/migrations/update-17-3-0/add-autoprefixer-dependency.js +26 -0
  360. package/src/migrations/update-17-3-0/add-browser-sync-dependency.d.ts +2 -0
  361. package/src/migrations/update-17-3-0/add-browser-sync-dependency.js +26 -0
  362. package/src/migrations/update-17-3-0/update-angular-cli.d.ts +3 -0
  363. package/src/migrations/update-17-3-0/update-angular-cli.js +23 -0
  364. package/src/migrations/update-18-0-0/add-mf-env-var-to-target-defaults.d.ts +2 -0
  365. package/src/migrations/update-18-0-0/add-mf-env-var-to-target-defaults.js +26 -0
  366. package/src/migrations/update-18-1-0/update-angular-cli.d.ts +3 -0
  367. package/src/migrations/update-18-1-0/update-angular-cli.js +23 -0
  368. package/src/migrations/update-18-1-1/fix-target-defaults-inputs.d.ts +2 -0
  369. package/src/migrations/update-18-1-1/fix-target-defaults-inputs.js +53 -0
  370. package/src/migrations/update-18-2-0/update-angular-cli.d.ts +3 -0
  371. package/src/migrations/update-18-2-0/update-angular-cli.js +23 -0
  372. package/src/utils/backward-compatible-versions.d.ts +6 -4
  373. package/src/utils/backward-compatible-versions.js +20 -22
  374. package/src/utils/{public-api.d.ts → index.d.ts} +5 -0
  375. package/src/utils/{public-api.js → index.js} +5 -0
  376. package/src/utils/mf/utils.js +7 -0
  377. package/src/utils/mf/with-module-federation-ssr.js +3 -0
  378. package/src/utils/mf/with-module-federation.js +3 -0
  379. package/src/utils/nx-devkit/ast-utils.js +4 -2
  380. package/src/utils/nx-devkit/testing.js +27 -31
  381. package/src/utils/targets.d.ts +2 -0
  382. package/src/utils/targets.js +17 -0
  383. package/src/utils/version-utils.d.ts +3 -3
  384. package/src/utils/versions.d.ts +9 -11
  385. package/src/utils/versions.js +10 -12
  386. package/src/builders/module-federation-dev-server/module-federation-dev-server.impl.d.ts +0 -5
  387. package/src/builders/module-federation-dev-server/module-federation-dev-server.impl.js +0 -136
  388. package/src/builders/webpack-browser/validate-options.d.ts +0 -2
  389. package/src/builders/webpack-browser/validate-options.js +0 -40
  390. package/src/builders/webpack-dev-server/lib/normalize-options.d.ts +0 -2
  391. package/src/builders/webpack-dev-server/lib/normalize-options.js +0 -14
  392. package/src/builders/webpack-dev-server/schema.d.ts +0 -21
  393. package/src/builders/webpack-dev-server/webpack-dev-server.impl.d.ts +0 -4
  394. package/src/builders/webpack-dev-server/webpack-dev-server.impl.js +0 -105
  395. package/src/executors/browser-esbuild/lib/buildable-libs.d.ts +0 -9
  396. package/src/executors/browser-esbuild/lib/validate-options.d.ts +0 -2
  397. package/src/executors/browser-esbuild/lib/validate-options.js +0 -40
  398. package/src/executors/ng-packagr-lite/ng-packagr-adjustments/ts/cache-compiler-host.d.ts +0 -16
  399. package/src/executors/ng-packagr-lite/ng-packagr-adjustments/ts/cache-compiler-host.js +0 -175
  400. package/src/executors/package/ng-packagr-adjustments/ts/cache-compiler-host.d.ts +0 -15
  401. package/src/executors/package/ng-packagr-adjustments/ts/cache-compiler-host.js +0 -197
  402. package/src/executors/utilities/tailwindcss.d.ts +0 -7
  403. package/src/generators/application/files/tsconfig.editor.json__tpl__ +0 -5
  404. package/src/generators/application/files/v14/.browserlistrc__tpl__ +0 -16
  405. package/src/generators/application/files/v14/src/environments/environment.prod.ts__tpl__ +0 -3
  406. package/src/generators/application/files/v14/src/environments/environment.ts__tpl__ +0 -16
  407. package/src/generators/application/files/v14/src/polyfills.ts__tpl__ +0 -53
  408. package/src/generators/component/lib/validate-options.d.ts +0 -3
  409. package/src/generators/component/lib/validate-options.js +0 -8
  410. package/src/generators/directive/lib/validate-options.d.ts +0 -3
  411. package/src/generators/directive/lib/validate-options.js +0 -8
  412. package/src/generators/host/lib/add-ssr.d.ts +0 -3
  413. package/src/generators/library-secondary-entry-point/lib/update-linting-file-patterns.d.ts +0 -3
  414. package/src/generators/library-secondary-entry-point/lib/update-linting-file-patterns.js +0 -15
  415. package/src/generators/ngrx/files/no-inject/__directory__/__fileName__.effects.ts__tmpl__ +0 -22
  416. package/src/generators/ngrx/files/no-inject/__directory__/__fileName__.facade.ts__tmpl__ +0 -27
  417. package/src/generators/ngrx-feature-store/files/no-inject/__directory__/__fileName__.effects.ts__tmpl__ +0 -22
  418. package/src/generators/ngrx-feature-store/files/no-inject/__directory__/__fileName__.facade.ts__tmpl__ +0 -27
  419. package/src/generators/pipe/lib/validate-options.js +0 -8
  420. package/src/generators/setup-mf/lib/set-tsconfig-target.d.ts +0 -3
  421. package/src/generators/setup-mf/lib/set-tsconfig-target.js +0 -16
  422. package/src/generators/setup-ssr/files/ngmodule/v14/src/__main__ +0 -11
  423. package/src/generators/utils/create-ts-config.d.ts +0 -8
  424. package/src/generators/utils/create-ts-config.js +0 -35
  425. /package/src/executors/ng-packagr-lite/ng-packagr-adjustments/{ng-package → pre-v17/ng-package}/entry-point/compile-ngc.di.d.ts +0 -0
  426. /package/src/executors/ng-packagr-lite/ng-packagr-adjustments/{ng-package → pre-v17/ng-package}/entry-point/compile-ngc.di.js +0 -0
  427. /package/src/executors/ng-packagr-lite/ng-packagr-adjustments/{ng-package → pre-v17/ng-package}/entry-point/compile-ngc.transform.d.ts +0 -0
  428. /package/src/executors/ng-packagr-lite/ng-packagr-adjustments/{ng-package → pre-v17/ng-package}/entry-point/entry-point.di.d.ts +0 -0
  429. /package/src/executors/ng-packagr-lite/ng-packagr-adjustments/{ng-package → pre-v17/ng-package}/entry-point/entry-point.di.js +0 -0
  430. /package/src/executors/ng-packagr-lite/ng-packagr-adjustments/{ng-package → pre-v17/ng-package}/entry-point/entry-point.transform.d.ts +0 -0
  431. /package/src/executors/ng-packagr-lite/ng-packagr-adjustments/{ng-package → pre-v17/ng-package}/entry-point/entry-point.transform.js +0 -0
  432. /package/src/executors/ng-packagr-lite/ng-packagr-adjustments/{ng-package → pre-v17/ng-package}/entry-point/write-package.di.d.ts +0 -0
  433. /package/src/executors/ng-packagr-lite/ng-packagr-adjustments/{ng-package → pre-v17/ng-package}/entry-point/write-package.di.js +0 -0
  434. /package/src/executors/ng-packagr-lite/ng-packagr-adjustments/{ng-package → pre-v17/ng-package}/entry-point/write-package.transform.d.ts +0 -0
  435. /package/src/executors/ng-packagr-lite/ng-packagr-adjustments/{ng-package → pre-v17/ng-package}/options.di.d.ts +0 -0
  436. /package/src/executors/ng-packagr-lite/ng-packagr-adjustments/{ng-package → pre-v17/ng-package}/options.di.js +0 -0
  437. /package/src/executors/ng-packagr-lite/ng-packagr-adjustments/{ng-package → pre-v17/ng-package}/package.di.d.ts +0 -0
  438. /package/src/executors/ng-packagr-lite/ng-packagr-adjustments/{ng-package → pre-v17/ng-package}/package.di.js +0 -0
  439. /package/src/executors/ng-packagr-lite/ng-packagr-adjustments/{styles → pre-v17/styles}/stylesheet-processor.di.d.ts +0 -0
  440. /package/src/executors/ng-packagr-lite/ng-packagr-adjustments/{styles → pre-v17/styles}/stylesheet-processor.di.js +0 -0
  441. /package/src/generators/host/files/common/{src → pre-v17/src}/main.server.ts__tmpl__ +0 -0
  442. /package/src/generators/ngrx/files/{base/__directory__ → __directory__}/__fileName__.actions.ts__tmpl__ +0 -0
  443. /package/src/generators/ngrx/files/{base/__directory__ → __directory__}/__fileName__.effects.spec.ts__tmpl__ +0 -0
  444. /package/src/generators/ngrx/files/{base/__directory__ → __directory__}/__fileName__.effects.ts__tmpl__ +0 -0
  445. /package/src/generators/ngrx/files/{base/__directory__ → __directory__}/__fileName__.facade.spec.ts__tmpl__ +0 -0
  446. /package/src/generators/ngrx/files/{base/__directory__ → __directory__}/__fileName__.facade.ts__tmpl__ +0 -0
  447. /package/src/generators/ngrx/files/{base/__directory__ → __directory__}/__fileName__.reducer.spec.ts__tmpl__ +0 -0
  448. /package/src/generators/ngrx/files/{base/__directory__ → __directory__}/__fileName__.reducer.ts__tmpl__ +0 -0
  449. /package/src/generators/ngrx/files/{base/__directory__ → __directory__}/__fileName__.selectors.ts__tmpl__ +0 -0
  450. /package/src/generators/ngrx-feature-store/files/{base/__directory__ → __directory__}/__fileName__.actions.ts__tmpl__ +0 -0
  451. /package/src/generators/ngrx-feature-store/files/{base/__directory__ → __directory__}/__fileName__.effects.spec.ts__tmpl__ +0 -0
  452. /package/src/generators/ngrx-feature-store/files/{base/__directory__ → __directory__}/__fileName__.effects.ts__tmpl__ +0 -0
  453. /package/src/generators/ngrx-feature-store/files/{base/__directory__ → __directory__}/__fileName__.facade.spec.ts__tmpl__ +0 -0
  454. /package/src/generators/ngrx-feature-store/files/{base/__directory__ → __directory__}/__fileName__.facade.ts__tmpl__ +0 -0
  455. /package/src/generators/ngrx-feature-store/files/{base/__directory__ → __directory__}/__fileName__.reducer.spec.ts__tmpl__ +0 -0
  456. /package/src/generators/ngrx-feature-store/files/{base/__directory__ → __directory__}/__fileName__.reducer.ts__tmpl__ +0 -0
  457. /package/src/generators/ngrx-feature-store/files/{base/__directory__ → __directory__}/__fileName__.selectors.ts__tmpl__ +0 -0
  458. /package/src/generators/setup-ssr/files/{base → root}/tsconfig.server.json__tpl__ +0 -0
@@ -1,9 +1,39 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.updateProjectConfig = void 0;
3
+ exports.updateProjectConfigForBrowserBuilder = exports.updateProjectConfigForApplicationBuilder = void 0;
4
4
  const devkit_1 = require("@nx/devkit");
5
- function updateProjectConfig(tree, schema) {
6
- let projectConfig = (0, devkit_1.readProjectConfiguration)(tree, schema.project);
5
+ const version_utils_1 = require("../../utils/version-utils");
6
+ const constants_1 = require("./constants");
7
+ function updateProjectConfigForApplicationBuilder(tree, options) {
8
+ const project = (0, devkit_1.readProjectConfiguration)(tree, options.project);
9
+ const buildTarget = project.targets.build;
10
+ let outputPath = buildTarget.options?.outputPath;
11
+ if (outputPath &&
12
+ typeof outputPath !== 'string' &&
13
+ outputPath.browser === '') {
14
+ const base = outputPath.base;
15
+ devkit_1.logger.warn(`The output location of the browser build has been updated from "${base}" to "${(0, devkit_1.joinPathFragments)(base, constants_1.DEFAULT_BROWSER_DIR)}".
16
+ You might need to adjust your deployment pipeline.`);
17
+ if ((outputPath.media && outputPath.media !== constants_1.DEFAULT_MEDIA_DIR) ||
18
+ (outputPath.server && outputPath.server !== constants_1.DEFAULT_SERVER_DIR)) {
19
+ delete outputPath.browser;
20
+ }
21
+ else {
22
+ outputPath = outputPath.base;
23
+ }
24
+ }
25
+ buildTarget.options ??= {};
26
+ buildTarget.options.outputPath = outputPath;
27
+ buildTarget.options.server = (0, devkit_1.joinPathFragments)(project.sourceRoot ?? (0, devkit_1.joinPathFragments)(project.root, 'src'), options.main);
28
+ buildTarget.options.prerender = true;
29
+ buildTarget.options.ssr = {
30
+ entry: (0, devkit_1.joinPathFragments)(project.root, options.serverFileName),
31
+ };
32
+ (0, devkit_1.updateProjectConfiguration)(tree, options.project, project);
33
+ }
34
+ exports.updateProjectConfigForApplicationBuilder = updateProjectConfigForApplicationBuilder;
35
+ function updateProjectConfigForBrowserBuilder(tree, schema) {
36
+ const projectConfig = (0, devkit_1.readProjectConfiguration)(tree, schema.project);
7
37
  const buildTarget = projectConfig.targets.build;
8
38
  const baseOutputPath = buildTarget.options.outputPath;
9
39
  buildTarget.options.outputPath = (0, devkit_1.joinPathFragments)(baseOutputPath, 'browser');
@@ -16,7 +46,9 @@ function updateProjectConfig(tree, schema) {
16
46
  }
17
47
  projectConfig.targets.server = {
18
48
  dependsOn: ['build'],
19
- executor: '@angular-devkit/build-angular:server',
49
+ executor: buildTarget.executor.startsWith('@angular-devkit/build-angular:')
50
+ ? '@angular-devkit/build-angular:server'
51
+ : '@nx/angular:webpack-server',
20
52
  options: {
21
53
  outputPath: (0, devkit_1.joinPathFragments)(baseOutputPath, 'server'),
22
54
  main: (0, devkit_1.joinPathFragments)(projectConfig.root, schema.serverFileName),
@@ -26,8 +58,11 @@ function updateProjectConfig(tree, schema) {
26
58
  configurations,
27
59
  defaultConfiguration: 'production',
28
60
  };
61
+ const { major: angularMajorVersion } = (0, version_utils_1.getInstalledAngularVersionInfo)(tree);
29
62
  projectConfig.targets['serve-ssr'] = {
30
- executor: '@nguniversal/builders:ssr-dev-server',
63
+ executor: angularMajorVersion >= 17
64
+ ? '@angular-devkit/build-angular:ssr-dev-server'
65
+ : '@nguniversal/builders:ssr-dev-server',
31
66
  configurations: {
32
67
  development: {
33
68
  browserTarget: `${schema.project}:build:development`,
@@ -41,7 +76,9 @@ function updateProjectConfig(tree, schema) {
41
76
  defaultConfiguration: 'development',
42
77
  };
43
78
  projectConfig.targets.prerender = {
44
- executor: '@nguniversal/builders:prerender',
79
+ executor: angularMajorVersion >= 17
80
+ ? '@angular-devkit/build-angular:prerender'
81
+ : '@nguniversal/builders:prerender',
45
82
  options: {
46
83
  routes: ['/'],
47
84
  },
@@ -59,20 +96,16 @@ function updateProjectConfig(tree, schema) {
59
96
  };
60
97
  (0, devkit_1.updateProjectConfiguration)(tree, schema.project, projectConfig);
61
98
  const nxJson = (0, devkit_1.readNxJson)(tree);
62
- if (nxJson.tasksRunnerOptions?.default &&
99
+ if (nxJson.tasksRunnerOptions?.default?.options?.cacheableOperations &&
63
100
  !nxJson.tasksRunnerOptions.default.options.cacheableOperations.includes('server')) {
64
- nxJson.tasksRunnerOptions.default.options.cacheableOperations = [
65
- ...nxJson.tasksRunnerOptions.default.options.cacheableOperations,
66
- 'server',
67
- ];
68
- (0, devkit_1.updateNxJson)(tree, nxJson);
101
+ nxJson.tasksRunnerOptions.default.options.cacheableOperations.push('server');
69
102
  }
70
103
  nxJson.targetDefaults ??= {};
71
104
  nxJson.targetDefaults.server ??= {};
72
105
  nxJson.targetDefaults.server.cache ??= true;
73
106
  (0, devkit_1.updateNxJson)(tree, nxJson);
74
107
  }
75
- exports.updateProjectConfig = updateProjectConfig;
108
+ exports.updateProjectConfigForBrowserBuilder = updateProjectConfigForBrowserBuilder;
76
109
  function getServerOptions(options = {}) {
77
110
  return {
78
111
  buildOptimizer: options?.buildOptimizer,
@@ -6,11 +6,24 @@ const validations_1 = require("../../utils/validations");
6
6
  const version_utils_1 = require("../../utils/version-utils");
7
7
  const semver_1 = require("semver");
8
8
  function validateOptions(tree, options) {
9
- (0, validations_1.validateProject)(tree, options.project);
10
- (0, validations_1.validateStandaloneOption)(tree, options.standalone);
9
+ validateProject(tree, options.project);
10
+ validateBuildTarget(tree, options.project);
11
11
  validateHydrationOption(tree, options.hydration);
12
12
  }
13
13
  exports.validateOptions = validateOptions;
14
+ function validateProject(tree, project) {
15
+ (0, validations_1.validateProject)(tree, project);
16
+ const { projectType } = (0, devkit_1.readProjectConfiguration)(tree, project);
17
+ if (projectType !== 'application') {
18
+ throw new Error(`The "${project}" project is not an application. Only application projects are supported by the "setup-ssr" generator.`);
19
+ }
20
+ }
21
+ function validateBuildTarget(tree, project) {
22
+ const { targets } = (0, devkit_1.readProjectConfiguration)(tree, project);
23
+ if (!targets?.build) {
24
+ throw new Error(`The "${project}" project does not have a "build" target. Please add a "build" target.`);
25
+ }
26
+ }
14
27
  function validateHydrationOption(tree, hydration) {
15
28
  if (!hydration) {
16
29
  return;
@@ -1,5 +1,5 @@
1
1
  {
2
- "$schema": "http://json-schema.org/schema",
2
+ "$schema": "https://json-schema.org/schema",
3
3
  "$id": "GeneratorAngularUniversalSetup",
4
4
  "cli": "nx",
5
5
  "title": "Generate Angular Universal (SSR) setup for an Angular App",
@@ -19,7 +19,7 @@
19
19
  "appId": {
20
20
  "type": "string",
21
21
  "format": "html-selector",
22
- "description": "The `appId` to use with `withServerTransition`. _Note: This is only used in Angular versions <16.0.0. It's deprecated since Angular 16._",
22
+ "description": "The `appId` to use with `withServerTransition`. _Note: This is only used in Angular versions <16.0.0. It's deprecated since Angular 16 and not supported since Angular 17._",
23
23
  "default": "serverApp"
24
24
  },
25
25
  "main": {
@@ -51,11 +51,11 @@
51
51
  },
52
52
  "standalone": {
53
53
  "type": "boolean",
54
- "description": "Use Standalone Components to bootstrap SSR. _Note: This is only supported in Angular versions >= 14.1.0_."
54
+ "description": "Use Standalone Components to bootstrap SSR."
55
55
  },
56
56
  "hydration": {
57
57
  "type": "boolean",
58
- "description": "Set up Hydration for the SSR application. _Note: This is only supported in Angular versions >= 16.0.0_."
58
+ "description": "Set up Hydration for the SSR application. It defaults to `true` for Angular versions >= 17.0.0. Otherwise, it defaults to `false`. _Note: This is only supported in Angular versions >= 16.0.0_."
59
59
  },
60
60
  "skipFormat": {
61
61
  "type": "boolean",
@@ -7,24 +7,30 @@ const lib_1 = require("./lib");
7
7
  async function setupSsr(tree, schema) {
8
8
  (0, lib_1.validateOptions)(tree, schema);
9
9
  const options = (0, lib_1.normalizeOptions)(tree, schema);
10
- (0, lib_1.updateProjectConfig)(tree, options);
11
- (0, lib_1.generateSSRFiles)(tree, options);
10
+ const { targets } = (0, devkit_1.readProjectConfiguration)(tree, options.project);
11
+ const isUsingApplicationBuilder = targets.build.executor === '@angular-devkit/build-angular:application' ||
12
+ targets.build.executor === '@nx/angular:application';
13
+ (0, lib_1.addDependencies)(tree, isUsingApplicationBuilder);
14
+ (0, lib_1.generateSSRFiles)(tree, options, isUsingApplicationBuilder);
12
15
  if (!options.standalone) {
13
16
  (0, lib_1.updateAppModule)(tree, options);
14
17
  }
15
18
  if (options.hydration) {
16
19
  (0, lib_1.addHydration)(tree, options);
17
20
  }
18
- const pkgVersions = (0, version_utils_1.versions)(tree);
19
- (0, devkit_1.addDependenciesToPackageJson)(tree, {
20
- '@nguniversal/express-engine': (0, version_utils_1.getInstalledPackageVersionInfo)(tree, '@nguniversal/express-engine')
21
- ?.version ?? pkgVersions.ngUniversalVersion,
22
- '@angular/platform-server': (0, version_utils_1.getInstalledPackageVersionInfo)(tree, '@angular/platform-server')
23
- ?.version ?? pkgVersions.angularVersion,
24
- }, {
25
- '@nguniversal/builders': (0, version_utils_1.getInstalledPackageVersionInfo)(tree, '@nguniversal/builders')
26
- ?.version ?? pkgVersions.ngUniversalVersion,
27
- });
21
+ const { major: angularMajorVersion } = (0, version_utils_1.getInstalledAngularVersionInfo)(tree);
22
+ if (angularMajorVersion < 17 || !options.hydration) {
23
+ (0, lib_1.setRouterInitialNavigation)(tree, options);
24
+ }
25
+ if (isUsingApplicationBuilder) {
26
+ (0, lib_1.updateProjectConfigForApplicationBuilder)(tree, options);
27
+ (0, lib_1.setServerTsConfigOptionsForApplicationBuilder)(tree, options);
28
+ }
29
+ else {
30
+ (0, lib_1.updateProjectConfigForBrowserBuilder)(tree, options);
31
+ (0, lib_1.generateTsConfigServerJsonForBrowserBuilder)(tree, options);
32
+ }
33
+ (0, lib_1.addServerFile)(tree, options, isUsingApplicationBuilder);
28
34
  if (!options.skipFormat) {
29
35
  await (0, devkit_1.formatFiles)(tree);
30
36
  }
@@ -1,5 +1,5 @@
1
1
  {
2
- "$schema": "http://json-schema.org/schema",
2
+ "$schema": "https://json-schema.org/schema",
3
3
  "$id": "NxAngularTailwindSetupGenerator",
4
4
  "cli": "nx",
5
5
  "title": "Configures Tailwind CSS for an application or a buildable/publishable library.",
@@ -1,5 +1,5 @@
1
1
  {
2
- "$schema": "http://json-schema.org/schema",
2
+ "$schema": "https://json-schema.org/schema",
3
3
  "$id": "NxAngularStorybookStoriesGenerator",
4
4
  "title": "Create Storybook stories/specs",
5
5
  "description": "Creates Storybook stories/specs for all Angular components declared in a project.",
@@ -8,7 +8,7 @@ const component_info_1 = require("../utils/storybook-ast/component-info");
8
8
  const entry_point_1 = require("../utils/storybook-ast/entry-point");
9
9
  const get_e2e_project_1 = require("./lib/get-e2e-project");
10
10
  const module_info_1 = require("../utils/storybook-ast/module-info");
11
- const minimatch = require("minimatch");
11
+ const minimatch_1 = require("minimatch");
12
12
  const versions_1 = require("../../utils/versions");
13
13
  async function angularStoriesGenerator(tree, options) {
14
14
  const e2eProjectName = options.cypressProject ?? `${options.name}-e2e`;
@@ -23,7 +23,7 @@ async function angularStoriesGenerator(tree, options) {
23
23
  devkit_1.logger.info(`There was no e2e project "${e2eProjectName}" found, so cypress specs will not be generated. Pass "--cypressProject" to specify a different e2e project name.`);
24
24
  }
25
25
  const componentInfos = componentsInfo.filter((f) => !options.ignorePaths?.some((pattern) => {
26
- const shouldIgnorePath = minimatch((0, devkit_1.joinPathFragments)(f.moduleFolderPath, f.path, `${f.componentFileName}.ts`), pattern);
26
+ const shouldIgnorePath = (0, minimatch_1.minimatch)((0, devkit_1.joinPathFragments)(f.moduleFolderPath, f.path, `${f.componentFileName}.ts`), pattern);
27
27
  return shouldIgnorePath;
28
28
  }));
29
29
  for (const info of componentInfos) {
@@ -1,14 +1,16 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.generateStories = void 0;
4
- const project_name_1 = require("@nx/cypress/src/utils/project-name");
5
4
  const devkit_1 = require("@nx/devkit");
5
+ const versions_1 = require("../../../utils/versions");
6
6
  const stories_1 = require("../../stories/stories");
7
7
  async function generateStories(tree, options) {
8
- const project = (0, devkit_1.readProjectConfiguration)(tree, options.name);
9
- const e2eProjectName = (0, project_name_1.getE2eProjectName)(options.name, project.root, options.cypressDirectory);
8
+ const project = (0, devkit_1.readProjectConfiguration)(tree, options.project);
9
+ (0, devkit_1.ensurePackage)('@nx/cypress', versions_1.nxVersion);
10
+ const { getE2eProjectName } = await Promise.resolve().then(() => require('@nx/cypress/src/utils/project-name'));
11
+ const e2eProjectName = getE2eProjectName(options.project, project.root, options.cypressDirectory);
10
12
  await (0, stories_1.angularStoriesGenerator)(tree, {
11
- name: options.name,
13
+ name: options.project,
12
14
  generateCypressSpecs: options.configureCypress && options.generateCypressSpecs,
13
15
  cypressProject: e2eProjectName,
14
16
  ignorePaths: options.ignorePaths,
@@ -6,7 +6,7 @@ const versions_1 = require("../../../utils/versions");
6
6
  async function generateStorybookConfiguration(tree, options) {
7
7
  const { configurationGenerator } = (0, devkit_1.ensurePackage)('@nx/storybook', versions_1.nxVersion);
8
8
  return await configurationGenerator(tree, {
9
- name: options.name,
9
+ project: options.project,
10
10
  uiFramework: '@storybook/angular',
11
11
  configureCypress: options.configureCypress,
12
12
  linter: options.linter,
@@ -15,6 +15,8 @@ async function generateStorybookConfiguration(tree, options) {
15
15
  interactionTests: options.interactionTests,
16
16
  configureStaticServe: options.configureStaticServe,
17
17
  skipFormat: true,
18
+ addPlugin: false,
19
+ addExplicitTargets: true,
18
20
  });
19
21
  }
20
22
  exports.generateStorybookConfiguration = generateStorybookConfiguration;
@@ -4,7 +4,7 @@ export interface StorybookConfigurationOptions {
4
4
  configureStaticServe?: boolean;
5
5
  generateStories: boolean;
6
6
  linter: Linter;
7
- name: string;
7
+ project: string;
8
8
  tsConfiguration?: boolean;
9
9
  skipFormat?: boolean;
10
10
  ignorePaths?: string[];
@@ -1,14 +1,14 @@
1
1
  {
2
- "$schema": "http://json-schema.org/schema",
2
+ "$schema": "https://json-schema.org/schema",
3
3
  "$id": "NxAngularStorybookConfigurationGenerator",
4
4
  "title": "Adds Storybook configuration to a project.",
5
5
  "description": "Adds Storybook configuration to a project to be able to use and create stories.",
6
6
  "cli": "nx",
7
7
  "type": "object",
8
8
  "properties": {
9
- "name": {
9
+ "project": {
10
10
  "type": "string",
11
- "aliases": ["project", "projectName"],
11
+ "aliases": ["name", "projectName"],
12
12
  "description": "Project for which to generate Storybook configuration.",
13
13
  "$default": {
14
14
  "$source": "argv",
@@ -29,7 +29,7 @@
29
29
  "configureCypress": {
30
30
  "type": "boolean",
31
31
  "description": "Specifies whether to configure Cypress or not.",
32
- "x-deprecated": "Use interactionTests instead. This option will be removed in v18."
32
+ "x-deprecated": "Use interactionTests instead. This option will be removed in v19."
33
33
  },
34
34
  "generateStories": {
35
35
  "type": "boolean",
@@ -41,7 +41,7 @@
41
41
  "generateCypressSpecs": {
42
42
  "type": "boolean",
43
43
  "description": "Specifies whether to automatically generate test files in the generated Cypress e2e app.",
44
- "x-deprecated": "Use interactionTests instead. This option will be removed in v18."
44
+ "x-deprecated": "Use interactionTests instead. This option will be removed in v19."
45
45
  },
46
46
  "configureStaticServe": {
47
47
  "type": "boolean",
@@ -53,7 +53,7 @@
53
53
  "cypressDirectory": {
54
54
  "type": "string",
55
55
  "description": "A directory where the Cypress project will be placed. Placed at the root by default.",
56
- "x-deprecated": "Use interactionTests instead. This option will be removed in v18."
56
+ "x-deprecated": "Use interactionTests instead. This option will be removed in v19."
57
57
  },
58
58
  "linter": {
59
59
  "description": "The tool to use for running lint checks.",
@@ -93,6 +93,6 @@
93
93
  }
94
94
  },
95
95
  "additionalProperties": false,
96
- "required": ["name"],
96
+ "required": ["project"],
97
97
  "examplesFile": "../../../docs/storybook-configuration-examples.md"
98
98
  }
@@ -2,17 +2,18 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.storybookConfigurationGenerator = void 0;
4
4
  const devkit_1 = require("@nx/devkit");
5
+ const update_app_editor_tsconfig_excluded_files_1 = require("../utils/update-app-editor-tsconfig-excluded-files");
5
6
  const assert_compatible_storybook_version_1 = require("./lib/assert-compatible-storybook-version");
6
7
  const generate_stories_1 = require("./lib/generate-stories");
7
8
  const generate_storybook_configuration_1 = require("./lib/generate-storybook-configuration");
8
9
  const validate_options_1 = require("./lib/validate-options");
9
- // TODO(katerina): Nx 18 -> remove Cypress
10
+ // TODO(katerina): Nx 19 -> remove Cypress
10
11
  async function storybookConfigurationGenerator(tree, options) {
11
12
  (0, assert_compatible_storybook_version_1.assertCompatibleStorybookVersion)();
12
13
  (0, validate_options_1.validateOptions)(options);
13
14
  const storybookGeneratorInstallTask = await (0, generate_storybook_configuration_1.generateStorybookConfiguration)(tree, {
14
15
  ...options,
15
- interactionTests: options.interactionTests ?? true,
16
+ interactionTests: options.interactionTests ?? true, // default is true
16
17
  tsConfiguration: options.tsConfiguration ?? true, // default is true
17
18
  });
18
19
  if (options.generateStories) {
@@ -22,12 +23,14 @@ async function storybookConfigurationGenerator(tree, options) {
22
23
  skipFormat: true,
23
24
  });
24
25
  }
26
+ const project = (0, devkit_1.readProjectConfiguration)(tree, options.project);
27
+ if (project.projectType === 'application') {
28
+ (0, update_app_editor_tsconfig_excluded_files_1.updateAppEditorTsConfigExcludedFiles)(tree, project);
29
+ }
25
30
  if (!options.skipFormat) {
26
31
  await (0, devkit_1.formatFiles)(tree);
27
32
  }
28
- return () => {
29
- storybookGeneratorInstallTask();
30
- };
33
+ return storybookGeneratorInstallTask;
31
34
  }
32
35
  exports.storybookConfigurationGenerator = storybookConfigurationGenerator;
33
36
  exports.default = storybookConfigurationGenerator;
@@ -0,0 +1,8 @@
1
+ import { type Tree } from '@nx/devkit';
2
+ export type AddJestOptions = {
3
+ name: string;
4
+ projectRoot: string;
5
+ skipPackageJson: boolean;
6
+ strict: boolean;
7
+ };
8
+ export declare function addJest(tree: Tree, options: AddJestOptions): Promise<void>;
@@ -0,0 +1,36 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.addJest = void 0;
4
+ const devkit_1 = require("@nx/devkit");
5
+ const versions_1 = require("../../utils/versions");
6
+ const version_utils_1 = require("./version-utils");
7
+ async function addJest(tree, options) {
8
+ if (!options.skipPackageJson) {
9
+ process.env.npm_config_legacy_peer_deps ??= 'true';
10
+ (0, version_utils_1.addDependenciesToPackageJsonIfDontExist)(tree, {}, { 'jest-preset-angular': versions_1.jestPresetAngularVersion });
11
+ }
12
+ const { configurationGenerator } = (0, devkit_1.ensurePackage)('@nx/jest', versions_1.nxVersion);
13
+ await configurationGenerator(tree, {
14
+ project: options.name,
15
+ setupFile: 'angular',
16
+ supportTsx: false,
17
+ skipSerializers: false,
18
+ skipPackageJson: options.skipPackageJson,
19
+ skipFormat: true,
20
+ addPlugin: false,
21
+ addExplicitTargets: true,
22
+ });
23
+ const setupFile = (0, devkit_1.joinPathFragments)(options.projectRoot, 'src', 'test-setup.ts');
24
+ if (options.strict && tree.exists(setupFile)) {
25
+ const contents = tree.read(setupFile, 'utf-8');
26
+ tree.write(setupFile, `// @ts-expect-error https://thymikee.github.io/jest-preset-angular/docs/getting-started/test-environment
27
+ globalThis.ngJest = {
28
+ testEnvironmentOptions: {
29
+ errorOnUnknownElements: true,
30
+ errorOnUnknownProperties: true,
31
+ },
32
+ };
33
+ ${contents}`);
34
+ }
35
+ }
36
+ exports.addJest = addJest;
@@ -0,0 +1,2 @@
1
+ import { type Tree } from '@nx/devkit';
2
+ export declare function addMfEnvToTargetDefaultInputs(tree: Tree): void;
@@ -0,0 +1,27 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.addMfEnvToTargetDefaultInputs = void 0;
4
+ const devkit_1 = require("@nx/devkit");
5
+ function addMfEnvToTargetDefaultInputs(tree) {
6
+ const nxJson = (0, devkit_1.readNxJson)(tree);
7
+ const webpackExecutor = '@nx/angular:webpack-browser';
8
+ const mfEnvVar = 'NX_MF_DEV_SERVER_STATIC_REMOTES';
9
+ nxJson.targetDefaults ??= {};
10
+ nxJson.targetDefaults[webpackExecutor] ??= {};
11
+ nxJson.targetDefaults[webpackExecutor].inputs ??= [
12
+ 'production',
13
+ '^production',
14
+ ];
15
+ let mfEnvVarExists = false;
16
+ for (const input of nxJson.targetDefaults[webpackExecutor].inputs) {
17
+ if (typeof input === 'object' && input['env'] === mfEnvVar) {
18
+ mfEnvVarExists = true;
19
+ break;
20
+ }
21
+ }
22
+ if (!mfEnvVarExists) {
23
+ nxJson.targetDefaults[webpackExecutor].inputs.push({ env: mfEnvVar });
24
+ (0, devkit_1.updateNxJson)(tree, nxJson);
25
+ }
26
+ }
27
+ exports.addMfEnvToTargetDefaultInputs = addMfEnvToTargetDefaultInputs;
@@ -7,8 +7,7 @@ function addBuildableLibrariesPostCssDependencies(tree) {
7
7
  const pkgVersions = (0, version_utils_1.versions)(tree);
8
8
  (0, devkit_1.addDependenciesToPackageJson)(tree, {}, {
9
9
  postcss: pkgVersions.postcssVersion,
10
- 'postcss-import': pkgVersions.postcssImportVersion,
11
- 'postcss-preset-env': pkgVersions.postcssPresetEnvVersion,
10
+ autoprefixer: pkgVersions.autoprefixerVersion,
12
11
  'postcss-url': pkgVersions.postcssUrlVersion,
13
12
  });
14
13
  }
@@ -0,0 +1,2 @@
1
+ import type { GeneratorCallback, Tree } from '@nx/devkit';
2
+ export declare function ensureAngularDependencies(tree: Tree): GeneratorCallback;
@@ -0,0 +1,35 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ensureAngularDependencies = void 0;
4
+ const version_utils_1 = require("./version-utils");
5
+ function ensureAngularDependencies(tree) {
6
+ const pkgVersions = (0, version_utils_1.versions)(tree);
7
+ const angularVersion = (0, version_utils_1.getInstalledPackageVersion)(tree, '@angular/core') ??
8
+ pkgVersions.angularVersion;
9
+ const angularDevkitVersion = (0, version_utils_1.getInstalledPackageVersion)(tree, '@angular-devkit/build-angular') ??
10
+ pkgVersions.angularDevkitVersion;
11
+ const rxjsVersion = (0, version_utils_1.getInstalledPackageVersion)(tree, 'rxjs') ?? pkgVersions.rxjsVersion;
12
+ const tsLibVersion = (0, version_utils_1.getInstalledPackageVersion)(tree, 'tslib') ?? pkgVersions.tsLibVersion;
13
+ const zoneJsVersion = (0, version_utils_1.getInstalledPackageVersion)(tree, 'zone.js') ?? pkgVersions.zoneJsVersion;
14
+ return (0, version_utils_1.addDependenciesToPackageJsonIfDontExist)(tree, {
15
+ '@angular/animations': angularVersion,
16
+ '@angular/common': angularVersion,
17
+ '@angular/compiler': angularVersion,
18
+ '@angular/core': angularVersion,
19
+ '@angular/forms': angularVersion,
20
+ '@angular/platform-browser': angularVersion,
21
+ '@angular/platform-browser-dynamic': angularVersion,
22
+ '@angular/router': angularVersion,
23
+ rxjs: rxjsVersion,
24
+ tslib: tsLibVersion,
25
+ 'zone.js': zoneJsVersion,
26
+ }, {
27
+ '@angular/cli': angularDevkitVersion,
28
+ '@angular/compiler-cli': angularVersion,
29
+ '@angular/language-service': angularVersion,
30
+ '@angular-devkit/build-angular': angularDevkitVersion,
31
+ '@angular-devkit/schematics': angularDevkitVersion,
32
+ '@schematics/angular': angularDevkitVersion,
33
+ });
34
+ }
35
+ exports.ensureAngularDependencies = ensureAngularDependencies;
@@ -25,12 +25,12 @@ function exportScam(tree, options) {
25
25
  const relativePathFromEntryPoint = (0, path_1.getRelativeImportToFile)(entryPointPath, options.filePath);
26
26
  const entryPointContent = tree.read(entryPointPath, 'utf-8');
27
27
  let updatedEntryPointContent = (0, devkit_1.stripIndents) `${entryPointContent}
28
- export * from "${relativePathFromEntryPoint}";`;
28
+ export * from '${relativePathFromEntryPoint}';`;
29
29
  if (!options.inlineScam) {
30
30
  const moduleFilePath = (0, devkit_1.joinPathFragments)(options.directory, `${(0, devkit_1.names)(options.name).fileName}.module.ts`);
31
31
  const relativePathFromModule = (0, path_1.getRelativeImportToFile)(entryPointPath, moduleFilePath);
32
32
  updatedEntryPointContent = (0, devkit_1.stripIndents) `${updatedEntryPointContent}
33
- export * from "${relativePathFromModule}";`;
33
+ export * from '${relativePathFromModule}';`;
34
34
  }
35
35
  tree.write(entryPointPath, updatedEntryPointContent);
36
36
  }
@@ -1,3 +1,2 @@
1
1
  import type { Tree } from '@nx/devkit';
2
- export declare function normalizeNewProjectPrefix(prefix: string | undefined, npmScope: string | undefined, fallbackPrefix: string): string;
3
2
  export declare function getProjectPrefix(tree: Tree, project: string): string | undefined;
@@ -1,35 +1,8 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.getProjectPrefix = exports.normalizeNewProjectPrefix = void 0;
3
+ exports.getProjectPrefix = void 0;
4
4
  const devkit_1 = require("@nx/devkit");
5
- const get_npm_scope_1 = require("@nx/js/src/utils/package-json/get-npm-scope");
6
- function normalizeNewProjectPrefix(prefix, npmScope, fallbackPrefix) {
7
- // Prefix needs to be a valid html selector, if npmScope it's not valid, we don't default
8
- // to it and let it fall through to the Angular schematic to handle it
9
- // https://github.com/angular/angular-cli/blob/aa9f0528f174e856a4923cb24861fdf6e6f96b48/packages/schematics/angular/component/index.ts#L64
10
- const htmlSelectorRegex = /^[a-zA-Z][.0-9a-zA-Z]*((:?-[0-9]+)*|(:?-[a-zA-Z][.0-9a-zA-Z]*(:?-[0-9]+)*)*)$/;
11
- if (prefix) {
12
- if (!htmlSelectorRegex.test(prefix)) {
13
- throw new Error('The provided "prefix" is invalid. The prefix must start with a letter, and must contain only alphanumeric characters or dashes.');
14
- }
15
- return prefix;
16
- }
17
- if (npmScope && !htmlSelectorRegex.test(npmScope)) {
18
- throw new Error(`The "--prefix" option was not provided, therefore attempted to use the "npmScope" defined in "nx.json" to set the application's selector prefix, but it is invalid.
19
-
20
- There are two options that can be followed to resolve this issue:
21
- - Pass a valid "--prefix" option.
22
- - Update the "npmScope" in "nx.json" (Note: this can be an involved process, as other libraries and applications may need to be updated to match the new scope).
23
-
24
- If you encountered this error when creating a new Nx Workspace, the workspace name or "npmScope" is invalid to use as the selector prefix for the application being generated.
25
-
26
- Valid selector prefixes must start with a letter, and must contain only alphanumeric characters or dashes.`);
27
- }
28
- return npmScope || fallbackPrefix;
29
- }
30
- exports.normalizeNewProjectPrefix = normalizeNewProjectPrefix;
31
5
  function getProjectPrefix(tree, project) {
32
- return ((0, devkit_1.readProjectConfiguration)(tree, project)
33
- .prefix ?? (0, get_npm_scope_1.getNpmScope)(tree));
6
+ return (0, devkit_1.readProjectConfiguration)(tree, project).prefix;
34
7
  }
35
8
  exports.getProjectPrefix = getProjectPrefix;
@@ -1,3 +1,3 @@
1
- import type { Tree } from '@nx/devkit';
2
1
  import { names } from '@nx/devkit';
3
- export declare function buildSelector(tree: Tree, name: string, prefix: string | undefined, projectPrefix: string | undefined, casing: keyof Pick<ReturnType<typeof names>, 'fileName' | 'propertyName'>): string;
2
+ export declare function buildSelector(name: string, prefix: string | undefined, projectPrefix: string | undefined, casing: keyof Pick<ReturnType<typeof names>, 'fileName' | 'propertyName'>): string;
3
+ export declare function validateHtmlSelector(selector: string): void;
@@ -1,14 +1,21 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.buildSelector = void 0;
3
+ exports.validateHtmlSelector = exports.buildSelector = void 0;
4
4
  const devkit_1 = require("@nx/devkit");
5
- const get_npm_scope_1 = require("@nx/js/src/utils/package-json/get-npm-scope");
6
- function buildSelector(tree, name, prefix, projectPrefix, casing) {
5
+ function buildSelector(name, prefix, projectPrefix, casing) {
7
6
  let selector = name;
8
- prefix ??= projectPrefix ?? (0, get_npm_scope_1.getNpmScope)(tree);
7
+ prefix ??= projectPrefix;
9
8
  if (prefix) {
10
9
  selector = `${prefix}-${selector}`;
11
10
  }
12
11
  return (0, devkit_1.names)(selector)[casing];
13
12
  }
14
13
  exports.buildSelector = buildSelector;
14
+ // https://github.com/angular/angular-cli/blob/main/packages/schematics/angular/utility/validation.ts#L11-L14
15
+ const htmlSelectorRegex = /^[a-zA-Z][.0-9a-zA-Z]*((:?-[0-9]+)*|(:?-[a-zA-Z][.0-9a-zA-Z]*(:?-[0-9]+)*)*)$/;
16
+ function validateHtmlSelector(selector) {
17
+ if (selector && !htmlSelectorRegex.test(selector)) {
18
+ throw new Error(`The selector "${selector}" is invalid.`);
19
+ }
20
+ }
21
+ exports.validateHtmlSelector = validateHtmlSelector;