@nx/angular 20.2.0-canary.20241130-ec5a5e6 → 20.2.0-canary.20241203-6b87005

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 (209) hide show
  1. package/executors.json +1 -1
  2. package/fesm2022/nx-angular-mf.mjs.map +1 -1
  3. package/fesm2022/nx-angular-testing.mjs.map +1 -1
  4. package/fesm2022/nx-angular.mjs.map +1 -1
  5. package/generators.json +1 -1
  6. package/migrations.json +151 -1
  7. package/package.json +8 -15
  8. package/src/builders/dev-server/lib/normalize-options.js +3 -0
  9. package/src/builders/dev-server/lib/validate-options.js +1 -9
  10. package/src/builders/dev-server/schema.json +3 -4
  11. package/src/executors/application/application.impl.d.ts +1 -1
  12. package/src/executors/application/application.impl.js +4 -1
  13. package/src/executors/application/schema.json +78 -6
  14. package/src/executors/application/utils/normalize-options.d.ts +2 -0
  15. package/src/executors/application/utils/normalize-options.js +33 -0
  16. package/src/executors/application/utils/validate-options.js +18 -4
  17. package/src/executors/browser-esbuild/browser-esbuild.impl.d.ts +1 -1
  18. package/src/executors/browser-esbuild/browser-esbuild.impl.js +0 -9
  19. package/src/executors/browser-esbuild/schema.json +1 -1
  20. package/src/executors/delegate-build/delegate-build.impl.d.ts +1 -1
  21. package/src/executors/module-federation-dev-server/module-federation-dev-server.impl.d.ts +1 -1
  22. package/src/executors/module-federation-ssr-dev-server/module-federation-ssr-dev-server.impl.d.ts +1 -1
  23. package/src/executors/module-federation-ssr-dev-server/module-federation-ssr-dev-server.impl.js +8 -12
  24. package/src/executors/module-federation-ssr-dev-server/schema.d.ts +2 -14
  25. package/src/executors/ng-packagr-lite/ng-packagr-adjustments/ng-packagr.d.ts +1 -2
  26. package/src/executors/ng-packagr-lite/ng-packagr-adjustments/ng-packagr.js +11 -20
  27. package/src/executors/ng-packagr-lite/ng-packagr-lite.impl.d.ts +1 -1
  28. package/src/executors/ng-packagr-lite/ng-packagr-lite.impl.js +1 -1
  29. package/src/executors/ng-packagr-lite/schema.json +0 -8
  30. package/src/executors/package/ng-packagr-adjustments/ng-packagr.d.ts +1 -2
  31. package/src/executors/package/ng-packagr-adjustments/ng-packagr.js +4 -21
  32. package/src/executors/package/package.impl.d.ts +2 -2
  33. package/src/executors/package/package.impl.js +1 -1
  34. package/src/executors/package/schema.d.ts +1 -3
  35. package/src/executors/package/schema.json +0 -10
  36. package/src/executors/utilities/ng-packagr/{stylesheet-processor.js → pre-v19/stylesheet-processor.js} +2 -2
  37. package/src/executors/utilities/ng-packagr/stylesheet-processor.di.js +11 -5
  38. package/src/executors/utilities/ng-packagr/tailwindcss.d.ts +0 -6
  39. package/src/executors/utilities/ng-packagr/tailwindcss.js +0 -32
  40. package/src/executors/utilities/ng-packagr/v19+/stylesheet-processor.d.ts +23 -0
  41. package/src/executors/utilities/ng-packagr/v19+/stylesheet-processor.js +93 -0
  42. package/src/generators/application/application.js +1 -0
  43. package/src/generators/application/files/ng-module/src/app/app.component.ts__tpl__ +4 -5
  44. package/src/generators/application/files/nx-welcome/claimed/ng-module/src/app/nx-welcome.component.ts__tpl__ +2 -1
  45. package/src/generators/application/files/nx-welcome/claimed/standalone/src/app/nx-welcome.component.ts__tpl__ +2 -2
  46. package/src/generators/application/files/nx-welcome/not-configured/ng-module/src/app/nx-welcome.component.ts__tpl__ +2 -1
  47. package/src/generators/application/files/nx-welcome/not-configured/standalone/src/app/nx-welcome.component.ts__tpl__ +2 -2
  48. package/src/generators/application/files/nx-welcome/unclaimed/ng-module/src/app/nx-welcome.component.ts__tpl__ +2 -1
  49. package/src/generators/application/files/nx-welcome/unclaimed/standalone/src/app/nx-welcome.component.ts__tpl__ +2 -2
  50. package/src/generators/application/files/standalone-components/src/app/app.component.ts__tpl__ +4 -6
  51. package/src/generators/application/lib/add-serve-static-target.d.ts +1 -1
  52. package/src/generators/application/lib/add-serve-static-target.js +1 -3
  53. package/src/generators/application/lib/create-files.js +4 -1
  54. package/src/generators/application/lib/create-project.js +24 -31
  55. package/src/generators/application/lib/normalize-options.js +1 -6
  56. package/src/generators/application/schema.d.ts +1 -0
  57. package/src/generators/application/schema.json +7 -2
  58. package/src/generators/component/component.js +4 -0
  59. package/src/generators/component/files/__fileName__.spec.ts__tpl__ +1 -1
  60. package/src/generators/component/files/__fileName__.ts__tpl__ +5 -13
  61. package/src/generators/component/lib/normalize-options.js +2 -0
  62. package/src/generators/component/schema.d.ts +1 -0
  63. package/src/generators/component/schema.json +5 -0
  64. package/src/generators/convert-to-application-executor/convert-to-application-executor.js +1 -4
  65. package/src/generators/convert-to-application-executor/schema.json +1 -1
  66. package/src/generators/directive/directive.js +5 -0
  67. package/src/generators/directive/files/__fileName__.ts__tpl__ +2 -2
  68. package/src/generators/directive/lib/normalize-options.js +3 -1
  69. package/src/generators/host/files/common/{v17+/src → src}/main.server.ts__tmpl__ +1 -1
  70. package/src/generators/host/lib/update-ssr-setup.js +2 -1
  71. package/src/generators/host/schema.d.ts +1 -0
  72. package/src/generators/host/schema.json +4 -0
  73. package/src/generators/pipe/files/__fileName__.ts__tpl__ +2 -2
  74. package/src/generators/pipe/lib/normalize-options.js +3 -1
  75. package/src/generators/pipe/pipe.js +5 -0
  76. package/src/generators/remote/files/common/{v17+/src → src}/main.server.ts__tmpl__ +1 -1
  77. package/src/generators/remote/lib/update-ssr-setup.js +2 -1
  78. package/src/generators/remote/schema.d.ts +1 -0
  79. package/src/generators/remote/schema.json +4 -0
  80. package/src/generators/scam/lib/normalize-options.js +3 -1
  81. package/src/generators/scam-directive/lib/normalize-options.js +3 -1
  82. package/src/generators/scam-pipe/lib/normalize-options.js +3 -1
  83. package/src/generators/scam-to-standalone/lib/convert-scam-to-standalone.d.ts +1 -1
  84. package/src/generators/scam-to-standalone/lib/convert-scam-to-standalone.js +5 -4
  85. package/src/generators/setup-mf/files/entry-module-files/entry.component.ts__tmpl__ +2 -1
  86. package/src/generators/setup-mf/files/standalone-entry-component-files/entry.component.ts__tmpl__ +2 -2
  87. package/src/generators/setup-mf/lib/add-remote-entry.js +5 -0
  88. package/src/generators/setup-ssr/files/{server → pre-v19/server}/application-builder/__serverFileName__ +1 -1
  89. package/src/generators/setup-ssr/files/{server/server-builder/v17+ → pre-v19/server/server-builder}/__serverFileName__ +1 -1
  90. package/src/generators/setup-ssr/files/v19+/application-builder/ngmodule-src/__main__ +1 -0
  91. package/src/generators/setup-ssr/files/v19+/application-builder/ngmodule-src/app/__rootModuleFileName__ +13 -0
  92. package/src/generators/setup-ssr/files/v19+/application-builder/ngmodule-src/app/app.routes.server.ts__tpl__ +8 -0
  93. package/src/generators/setup-ssr/files/v19+/application-builder/server/__serverFileName__ +66 -0
  94. package/src/generators/setup-ssr/files/v19+/application-builder/standalone-src/__main__ +7 -0
  95. package/src/generators/setup-ssr/files/v19+/application-builder/standalone-src/app/app.config.server.ts__tpl__ +14 -0
  96. package/src/generators/setup-ssr/files/v19+/application-builder/standalone-src/app/app.routes.server.ts__tpl__ +8 -0
  97. package/src/generators/setup-ssr/files/v19+/application-builder-common-engine/server/__serverFileName__ +65 -0
  98. package/src/generators/setup-ssr/files/v19+/server-builder/ngmodule-src/__main__ +1 -0
  99. package/src/generators/setup-ssr/files/v19+/server-builder/ngmodule-src/app/__rootModuleFileName__ +14 -0
  100. package/src/generators/setup-ssr/files/v19+/server-builder/root/tsconfig.server.json.template +16 -0
  101. package/src/generators/setup-ssr/files/{server/server-builder/pre-v17 → v19+/server-builder/server}/__serverFileName__ +25 -15
  102. package/src/generators/setup-ssr/files/v19+/server-builder/standalone-src/__main__ +7 -0
  103. package/src/generators/setup-ssr/files/v19+/server-builder/standalone-src/app/app.config.server.ts.template +11 -0
  104. package/src/generators/setup-ssr/lib/add-dependencies.js +6 -17
  105. package/src/generators/setup-ssr/lib/add-hydration.d.ts +2 -2
  106. package/src/generators/setup-ssr/lib/add-hydration.js +10 -2
  107. package/src/generators/setup-ssr/lib/add-server-file.d.ts +2 -2
  108. package/src/generators/setup-ssr/lib/add-server-file.js +24 -10
  109. package/src/generators/setup-ssr/lib/generate-files.d.ts +2 -2
  110. package/src/generators/setup-ssr/lib/generate-files.js +20 -8
  111. package/src/generators/setup-ssr/lib/generate-server-ts-config.d.ts +3 -3
  112. package/src/generators/setup-ssr/lib/generate-server-ts-config.js +24 -3
  113. package/src/generators/setup-ssr/lib/normalize-options.d.ts +3 -14
  114. package/src/generators/setup-ssr/lib/normalize-options.js +23 -6
  115. package/src/generators/setup-ssr/lib/set-router-initial-navigation.d.ts +2 -2
  116. package/src/generators/setup-ssr/lib/update-project-config.d.ts +3 -3
  117. package/src/generators/setup-ssr/lib/update-project-config.js +36 -24
  118. package/src/generators/setup-ssr/lib/validate-options.js +5 -0
  119. package/src/generators/setup-ssr/schema.d.ts +5 -0
  120. package/src/generators/setup-ssr/schema.json +6 -8
  121. package/src/generators/setup-ssr/setup-ssr.js +6 -11
  122. package/src/generators/setup-tailwind/lib/index.d.ts +1 -1
  123. package/src/generators/setup-tailwind/lib/index.js +1 -1
  124. package/src/generators/setup-tailwind/lib/update-application-styles.js +1 -1
  125. package/src/generators/setup-tailwind/lib/validate-build-target.d.ts +3 -0
  126. package/src/generators/setup-tailwind/lib/{add-tailwind-config-path-to-project.js → validate-build-target.js} +4 -15
  127. package/src/generators/setup-tailwind/setup-tailwind.js +4 -1
  128. package/src/generators/utils/storybook-ast/component-info.js +12 -2
  129. package/src/generators/utils/validations.d.ts +1 -0
  130. package/src/generators/utils/validations.js +10 -0
  131. package/src/generators/utils/version-utils.js +2 -2
  132. package/src/migrations/update-20-2-0/add-localize-polyfill-to-targets.d.ts +3 -0
  133. package/src/migrations/update-20-2-0/add-localize-polyfill-to-targets.js +48 -0
  134. package/src/migrations/update-20-2-0/update-angular-cli.d.ts +3 -0
  135. package/src/migrations/update-20-2-0/update-angular-cli.js +23 -0
  136. package/src/migrations/update-20-2-0/update-angular-ssr-imports-to-use-node-entry-point.d.ts +2 -0
  137. package/src/migrations/update-20-2-0/update-angular-ssr-imports-to-use-node-entry-point.js +55 -0
  138. package/src/utils/backward-compatible-versions.d.ts +4 -4
  139. package/src/utils/backward-compatible-versions.js +20 -19
  140. package/src/utils/nx-devkit/ast-utils.d.ts +10 -1
  141. package/src/utils/nx-devkit/ast-utils.js +32 -9
  142. package/src/utils/versions.d.ts +7 -7
  143. package/src/utils/versions.js +7 -7
  144. package/esm2022/index.mjs +0 -2
  145. package/esm2022/mf/index.mjs +0 -2
  146. package/esm2022/mf/mf.mjs +0 -116
  147. package/esm2022/mf/nx-angular-mf.mjs +0 -5
  148. package/esm2022/nx-angular.mjs +0 -5
  149. package/esm2022/src/runtime/nx/data-persistence.mjs +0 -349
  150. package/esm2022/testing/index.mjs +0 -2
  151. package/esm2022/testing/nx-angular-testing.mjs +0 -5
  152. package/esm2022/testing/src/testing-utils.mjs +0 -38
  153. package/src/executors/ng-packagr-lite/ng-packagr-adjustments/pre-v17/ng-package/entry-point/compile-ngc.di.d.ts +0 -14
  154. package/src/executors/ng-packagr-lite/ng-packagr-adjustments/pre-v17/ng-package/entry-point/compile-ngc.di.js +0 -27
  155. package/src/executors/ng-packagr-lite/ng-packagr-adjustments/pre-v17/ng-package/entry-point/compile-ngc.transform.d.ts +0 -12
  156. package/src/executors/ng-packagr-lite/ng-packagr-adjustments/pre-v17/ng-package/entry-point/compile-ngc.transform.js +0 -53
  157. package/src/executors/ng-packagr-lite/ng-packagr-adjustments/pre-v17/ng-package/entry-point/entry-point.di.d.ts +0 -15
  158. package/src/executors/ng-packagr-lite/ng-packagr-adjustments/pre-v17/ng-package/entry-point/entry-point.di.js +0 -28
  159. package/src/executors/ng-packagr-lite/ng-packagr-adjustments/pre-v17/ng-package/entry-point/entry-point.transform.d.ts +0 -30
  160. package/src/executors/ng-packagr-lite/ng-packagr-adjustments/pre-v17/ng-package/entry-point/entry-point.transform.js +0 -52
  161. package/src/executors/ng-packagr-lite/ng-packagr-adjustments/pre-v17/ng-package/entry-point/write-package.di.d.ts +0 -12
  162. package/src/executors/ng-packagr-lite/ng-packagr-adjustments/pre-v17/ng-package/entry-point/write-package.di.js +0 -20
  163. package/src/executors/ng-packagr-lite/ng-packagr-adjustments/pre-v17/ng-package/entry-point/write-package.transform.d.ts +0 -9
  164. package/src/executors/ng-packagr-lite/ng-packagr-adjustments/pre-v17/ng-package/entry-point/write-package.transform.js +0 -320
  165. package/src/executors/ng-packagr-lite/ng-packagr-adjustments/pre-v17/ng-package/options.di.d.ts +0 -14
  166. package/src/executors/ng-packagr-lite/ng-packagr-adjustments/pre-v17/ng-package/options.di.js +0 -35
  167. package/src/executors/ng-packagr-lite/ng-packagr-adjustments/pre-v17/ng-package/package.di.d.ts +0 -14
  168. package/src/executors/ng-packagr-lite/ng-packagr-adjustments/pre-v17/ng-package/package.di.js +0 -37
  169. package/src/executors/ng-packagr-lite/ng-packagr-adjustments/pre-v17/ngc/compile-source-files.d.ts +0 -12
  170. package/src/executors/ng-packagr-lite/ng-packagr-adjustments/pre-v17/ngc/compile-source-files.js +0 -178
  171. package/src/executors/ng-packagr-lite/ng-packagr-adjustments/pre-v17/styles/stylesheet-processor.d.ts +0 -42
  172. package/src/executors/ng-packagr-lite/ng-packagr-adjustments/pre-v17/styles/stylesheet-processor.di.d.ts +0 -10
  173. package/src/executors/ng-packagr-lite/ng-packagr-adjustments/pre-v17/styles/stylesheet-processor.di.js +0 -17
  174. package/src/executors/ng-packagr-lite/ng-packagr-adjustments/pre-v17/styles/stylesheet-processor.js +0 -201
  175. package/src/executors/package/ng-packagr-adjustments/ng-package/entry-point/compile-ngc.di.d.ts +0 -14
  176. package/src/executors/package/ng-packagr-adjustments/ng-package/entry-point/compile-ngc.di.js +0 -26
  177. package/src/executors/package/ng-packagr-adjustments/ng-package/entry-point/compile-ngc.transform.d.ts +0 -12
  178. package/src/executors/package/ng-packagr-adjustments/ng-package/entry-point/compile-ngc.transform.js +0 -71
  179. package/src/executors/package/ng-packagr-adjustments/ng-package/entry-point/entry-point.di.d.ts +0 -13
  180. package/src/executors/package/ng-packagr-adjustments/ng-package/entry-point/entry-point.di.js +0 -32
  181. package/src/executors/package/ng-packagr-adjustments/ng-package/options.di.d.ts +0 -14
  182. package/src/executors/package/ng-packagr-adjustments/ng-package/options.di.js +0 -35
  183. package/src/executors/package/ng-packagr-adjustments/ng-package/package.di.d.ts +0 -14
  184. package/src/executors/package/ng-packagr-adjustments/ng-package/package.di.js +0 -37
  185. package/src/executors/package/ng-packagr-adjustments/ngc/compile-source-files.d.ts +0 -13
  186. package/src/executors/package/ng-packagr-adjustments/ngc/compile-source-files.js +0 -183
  187. package/src/executors/package/ng-packagr-adjustments/styles/stylesheet-processor.d.ts +0 -36
  188. package/src/executors/package/ng-packagr-adjustments/styles/stylesheet-processor.di.d.ts +0 -10
  189. package/src/executors/package/ng-packagr-adjustments/styles/stylesheet-processor.di.js +0 -17
  190. package/src/executors/package/ng-packagr-adjustments/styles/stylesheet-processor.js +0 -194
  191. package/src/executors/package/ng-packagr-adjustments/utils/ng-compiler-cli.d.ts +0 -1
  192. package/src/executors/package/ng-packagr-adjustments/utils/ng-compiler-cli.js +0 -9
  193. package/src/generators/host/files/common/pre-v17/src/main.server.ts__tmpl__ +0 -66
  194. package/src/generators/remote/files/common/pre-v17/src/main.server.ts__tmpl__ +0 -72
  195. package/src/generators/setup-tailwind/lib/add-tailwind-config-path-to-project.d.ts +0 -3
  196. /package/src/executors/ng-packagr-lite/ng-packagr-adjustments/{v17+ → pre-v19}/ng-package/entry-point/write-bundles.di.d.ts +0 -0
  197. /package/src/executors/ng-packagr-lite/ng-packagr-adjustments/{v17+ → pre-v19}/ng-package/entry-point/write-bundles.di.js +0 -0
  198. /package/src/executors/ng-packagr-lite/ng-packagr-adjustments/{v17+ → pre-v19}/ng-package/entry-point/write-bundles.transform.d.ts +0 -0
  199. /package/src/executors/ng-packagr-lite/ng-packagr-adjustments/{v17+ → pre-v19}/ng-package/entry-point/write-bundles.transform.js +0 -0
  200. /package/src/executors/ng-packagr-lite/ng-packagr-adjustments/{v17+ → pre-v19}/ng-package/entry-point/write-package.di.d.ts +0 -0
  201. /package/src/executors/ng-packagr-lite/ng-packagr-adjustments/{v17+ → pre-v19}/ng-package/entry-point/write-package.di.js +0 -0
  202. /package/src/executors/ng-packagr-lite/ng-packagr-adjustments/{v17+ → pre-v19}/ng-package/entry-point/write-package.transform.d.ts +0 -0
  203. /package/src/executors/ng-packagr-lite/ng-packagr-adjustments/{v17+ → pre-v19}/ng-package/entry-point/write-package.transform.js +0 -0
  204. /package/src/executors/utilities/ng-packagr/{stylesheet-processor.d.ts → pre-v19/stylesheet-processor.d.ts} +0 -0
  205. /package/src/generators/setup-ssr/files/{ngmodule/src → pre-v19/ngmodule-src}/__main__ +0 -0
  206. /package/src/generators/setup-ssr/files/{ngmodule/src → pre-v19/ngmodule-src}/app/__rootModuleFileName__ +0 -0
  207. /package/src/generators/setup-ssr/files/{root → pre-v19/root}/tsconfig.server.json__tpl__ +0 -0
  208. /package/src/generators/setup-ssr/files/{standalone/src → pre-v19/standalone-src}/__main__ +0 -0
  209. /package/src/generators/setup-ssr/files/{standalone/src → pre-v19/standalone-src}/app/app.config.server.ts__tpl__ +0 -0
@@ -1,7 +1,8 @@
1
1
  import { Component, ViewEncapsulation } from '@angular/core';
2
2
 
3
3
  @Component({
4
- selector: '<%= nxWelcomeSelector %>',
4
+ selector: '<%= nxWelcomeSelector %>',<% if (setStandaloneFalse) { %>
5
+ standalone: false,<% } %>
5
6
  template: `
6
7
  <!--
7
8
  * * * * * * * * * * * * * * * * * * * * * * * * * * * *
@@ -2,8 +2,8 @@ import { Component, ViewEncapsulation } from '@angular/core';
2
2
  import { CommonModule } from '@angular/common';
3
3
 
4
4
  @Component({
5
- selector: '<%= nxWelcomeSelector %>',
6
- standalone: true,
5
+ selector: '<%= nxWelcomeSelector %>',<% if (setStandaloneTrue) { %>
6
+ standalone: true,<% } %>
7
7
  imports: [CommonModule],
8
8
  template: `
9
9
  <!--
@@ -1,7 +1,8 @@
1
1
  import { Component, ViewEncapsulation } from '@angular/core';
2
2
 
3
3
  @Component({
4
- selector: '<%= nxWelcomeSelector %>',
4
+ selector: '<%= nxWelcomeSelector %>',<% if (setStandaloneFalse) { %>
5
+ standalone: false,<% } %>
5
6
  template: `
6
7
  <!--
7
8
  * * * * * * * * * * * * * * * * * * * * * * * * * * * *
@@ -2,8 +2,8 @@ import { Component, ViewEncapsulation } from '@angular/core';
2
2
  import { CommonModule } from '@angular/common';
3
3
 
4
4
  @Component({
5
- selector: '<%= nxWelcomeSelector %>',
6
- standalone: true,
5
+ selector: '<%= nxWelcomeSelector %>',<% if (setStandaloneTrue) { %>
6
+ standalone: true,<% } %>
7
7
  imports: [CommonModule],
8
8
  template: `
9
9
  <!--
@@ -1,7 +1,8 @@
1
1
  import { Component, ViewEncapsulation } from '@angular/core';
2
2
 
3
3
  @Component({
4
- selector: '<%= nxWelcomeSelector %>',
4
+ selector: '<%= nxWelcomeSelector %>',<% if (setStandaloneFalse) { %>
5
+ standalone: false,<% } %>
5
6
  template: `
6
7
  <!--
7
8
  * * * * * * * * * * * * * * * * * * * * * * * * * * * *
@@ -2,8 +2,8 @@ import { Component, ViewEncapsulation } from '@angular/core';
2
2
  import { CommonModule } from '@angular/common';
3
3
 
4
4
  @Component({
5
- selector: '<%= nxWelcomeSelector %>',
6
- standalone: true,
5
+ selector: '<%= nxWelcomeSelector %>',<% if (setStandaloneTrue) { %>
6
+ standalone: true,<% } %>
7
7
  imports: [CommonModule],
8
8
  template: `
9
9
  <!--
@@ -2,16 +2,14 @@ import { Component<% if(viewEncapsulation) { %>, ViewEncapsulation<% } %> } from
2
2
  import { RouterModule } from '@angular/router';<% } %><% if(!minimal) { %>
3
3
  import { NxWelcomeComponent } from './nx-welcome.component';<% } %>
4
4
 
5
- @Component({
6
- standalone: true,
5
+ @Component({<% if (setStandaloneTrue) { %>
6
+ standalone: true,<% } %>
7
7
  imports: [<% if(!minimal) { %>NxWelcomeComponent, <% } %><% if(routing) { %>RouterModule<% } %>],
8
8
  selector: '<%= rootSelector %>',<% if(!inlineTemplate) { %>
9
9
  templateUrl: './app.component.html',<% } else { %>
10
- template: `<% if(minimal) { %><h1>Welcome <%= appName %></h1><% } else { %><<%= nxWelcomeSelector %>></<%= nxWelcomeSelector %>><% } %> <% if(routing) { %><router-outlet></router-outlet><% } %>`,<% } %><% if (angularMajorVersion < 17) { if(!inlineStyle) { %>
11
- styleUrls: ['./app.component.<%= style %>'],<% } else { %>
12
- styles: [``],<% } %><% } else { if(!inlineStyle) { %>
10
+ template: `<% if(minimal) { %><h1>Welcome <%= appName %></h1><% } else { %><<%= nxWelcomeSelector %>></<%= nxWelcomeSelector %>><% } %> <% if(routing) { %><router-outlet></router-outlet><% } %>`,<% } %><% if(!inlineStyle) { %>
13
11
  styleUrl: './app.component.<%= style %>',<% } else { %>
14
- styles: ``,<% } %><% } %><% if(viewEncapsulation) { %>
12
+ styles: ``,<% } %><% if(viewEncapsulation) { %>
15
13
  encapsulation: ViewEncapsulation.<%= viewEncapsulation %>,<% } %>
16
14
  })
17
15
  export class AppComponent {<% if(!minimal) { %>
@@ -1,3 +1,3 @@
1
- import { Tree } from '@nx/devkit';
1
+ import { type Tree } from '@nx/devkit';
2
2
  import type { NormalizedSchema } from './normalized-schema';
3
3
  export declare function addServeStaticTarget(tree: Tree, options: NormalizedSchema, port: number): void;
@@ -3,7 +3,6 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.addServeStaticTarget = addServeStaticTarget;
4
4
  const devkit_1 = require("@nx/devkit");
5
5
  const versions_1 = require("../../../utils/versions");
6
- const version_utils_1 = require("../../utils/version-utils");
7
6
  function addServeStaticTarget(tree, options, port) {
8
7
  addFileServerTarget(tree, options, 'serve-static', port);
9
8
  }
@@ -11,8 +10,7 @@ function addFileServerTarget(tree, options, targetName, e2ePort) {
11
10
  if (!options.skipPackageJson) {
12
11
  (0, devkit_1.addDependenciesToPackageJson)(tree, {}, { '@nx/web': versions_1.nxVersion });
13
12
  }
14
- const { major: angularMajorVersion } = (0, version_utils_1.getInstalledAngularVersionInfo)(tree);
15
- const isUsingApplicationBuilder = angularMajorVersion >= 17 && options.bundler === 'esbuild';
13
+ const isUsingApplicationBuilder = options.bundler === 'esbuild';
16
14
  const projectConfig = (0, devkit_1.readProjectConfiguration)(tree, options.name);
17
15
  projectConfig.targets[targetName] = {
18
16
  executor: '@nx/web:file-server',
@@ -11,7 +11,7 @@ const version_utils_1 = require("../../utils/version-utils");
11
11
  const onboarding_1 = require("nx/src/nx-cloud/utilities/onboarding");
12
12
  async function createFiles(tree, options, rootOffset) {
13
13
  const { major: angularMajorVersion, version: angularVersion } = (0, version_utils_1.getInstalledAngularVersionInfo)(tree);
14
- const isUsingApplicationBuilder = angularMajorVersion >= 17 && options.bundler === 'esbuild';
14
+ const isUsingApplicationBuilder = options.bundler === 'esbuild';
15
15
  const disableModernClassFieldsBehavior = (0, semver_1.lt)(angularVersion, '18.1.0-rc.0');
16
16
  const rootSelector = `${options.prefix}-root`;
17
17
  (0, selector_1.validateHtmlSelector)(rootSelector);
@@ -38,6 +38,9 @@ async function createFiles(tree, options, rootOffset) {
38
38
  disableModernClassFieldsBehavior,
39
39
  useEventCoalescing: angularMajorVersion >= 18,
40
40
  useRouterTestingModule: angularMajorVersion < 18,
41
+ // Angular v19 or higher defaults to true, while v18 or lower defaults to false
42
+ setStandaloneFalse: angularMajorVersion >= 19,
43
+ setStandaloneTrue: angularMajorVersion < 19,
41
44
  connectCloudUrl,
42
45
  tutorialUrl: options.standalone
43
46
  ? 'https://nx.dev/getting-started/tutorials/angular-standalone-tutorial?utm_source=nx-project'
@@ -8,36 +8,29 @@ function createProject(tree, options) {
8
8
  const { major: angularMajorVersion } = (0, version_utils_1.getInstalledAngularVersionInfo)(tree);
9
9
  const buildExecutor = options.bundler === 'webpack'
10
10
  ? '@angular-devkit/build-angular:browser'
11
- : angularMajorVersion >= 17
12
- ? '@angular-devkit/build-angular:application'
13
- : '@angular-devkit/build-angular:browser-esbuild';
14
- const buildTargetOptionName = angularMajorVersion >= 17 ? 'buildTarget' : 'browserTarget';
15
- const buildMainOptionName = angularMajorVersion >= 17 && options.bundler === 'esbuild'
16
- ? 'browser'
17
- : 'main';
11
+ : '@angular-devkit/build-angular:application';
12
+ const buildMainOptionName = options.bundler === 'esbuild' ? 'browser' : 'main';
18
13
  (0, target_defaults_utils_1.addBuildTargetDefaults)(tree, buildExecutor);
19
14
  let budgets = undefined;
20
- if (options.bundler === 'webpack' || angularMajorVersion >= 17) {
21
- if (options.strict) {
22
- budgets = [
23
- { type: 'initial', maximumWarning: '500kb', maximumError: '1mb' },
24
- {
25
- type: 'anyComponentStyle',
26
- maximumWarning: '2kb',
27
- maximumError: '4kb',
28
- },
29
- ];
30
- }
31
- else {
32
- budgets = [
33
- { type: 'initial', maximumWarning: '2mb', maximumError: '5mb' },
34
- {
35
- type: 'anyComponentStyle',
36
- maximumWarning: '6kb',
37
- maximumError: '10kb',
38
- },
39
- ];
40
- }
15
+ if (options.strict) {
16
+ budgets = [
17
+ { type: 'initial', maximumWarning: '500kb', maximumError: '1mb' },
18
+ {
19
+ type: 'anyComponentStyle',
20
+ maximumWarning: '4kb',
21
+ maximumError: '8kb',
22
+ },
23
+ ];
24
+ }
25
+ else {
26
+ budgets = [
27
+ { type: 'initial', maximumWarning: '2mb', maximumError: '5mb' },
28
+ {
29
+ type: 'anyComponentStyle',
30
+ maximumWarning: '6kb',
31
+ maximumError: '10kb',
32
+ },
33
+ ];
41
34
  }
42
35
  const inlineStyleLanguage = options?.style !== 'css' ? options.style : undefined;
43
36
  const project = {
@@ -97,10 +90,10 @@ function createProject(tree, options) {
97
90
  : undefined,
98
91
  configurations: {
99
92
  production: {
100
- [buildTargetOptionName]: `${options.name}:build:production`,
93
+ buildTarget: `${options.name}:build:production`,
101
94
  },
102
95
  development: {
103
- [buildTargetOptionName]: `${options.name}:build:development`,
96
+ buildTarget: `${options.name}:build:development`,
104
97
  },
105
98
  },
106
99
  defaultConfiguration: 'development',
@@ -108,7 +101,7 @@ function createProject(tree, options) {
108
101
  'extract-i18n': {
109
102
  executor: '@angular-devkit/build-angular:extract-i18n',
110
103
  options: {
111
- [buildTargetOptionName]: `${options.name}:build`,
104
+ buildTarget: `${options.name}:build`,
112
105
  },
113
106
  },
114
107
  },
@@ -5,7 +5,6 @@ const devkit_1 = require("@nx/devkit");
5
5
  const project_name_and_root_utils_1 = require("@nx/devkit/src/generators/project-name-and-root-utils");
6
6
  const eslint_1 = require("@nx/eslint");
7
7
  const test_runners_1 = require("../../../utils/test-runners");
8
- const version_utils_1 = require("../../utils/version-utils");
9
8
  async function normalizeOptions(host, options) {
10
9
  await (0, project_name_and_root_utils_1.ensureProjectName)(host, options, 'application');
11
10
  const { projectName: appProjectName, projectRoot: appProjectRoot } = await (0, project_name_and_root_utils_1.determineProjectNameAndRootOptions)(host, {
@@ -20,11 +19,7 @@ async function normalizeOptions(host, options) {
20
19
  const parsedTags = options.tags
21
20
  ? options.tags.split(',').map((s) => s.trim())
22
21
  : [];
23
- let bundler = options.bundler;
24
- if (!bundler) {
25
- const { major: angularMajorVersion } = (0, version_utils_1.getInstalledAngularVersionInfo)(host);
26
- bundler = angularMajorVersion >= 17 ? 'esbuild' : 'webpack';
27
- }
22
+ const bundler = options.bundler ?? 'esbuild';
28
23
  // Set defaults and then overwrite with user options
29
24
  return {
30
25
  style: 'css',
@@ -29,5 +29,6 @@ export interface Schema {
29
29
  minimal?: boolean;
30
30
  bundler?: 'webpack' | 'esbuild';
31
31
  ssr?: boolean;
32
+ serverRouting?: boolean;
32
33
  nxCloudToken?: string;
33
34
  }
@@ -169,9 +169,10 @@
169
169
  "default": false
170
170
  },
171
171
  "bundler": {
172
- "description": "Bundler to use to build the application. It defaults to `esbuild` for Angular versions >= 17.0.0. Otherwise, it defaults to `webpack`. _Note: The `esbuild` bundler is only considered stable from Angular v17._",
172
+ "description": "Bundler to use to build the application.",
173
173
  "type": "string",
174
- "enum": ["webpack", "esbuild"],
174
+ "enum": ["esbuild", "webpack"],
175
+ "default": "esbuild",
175
176
  "x-prompt": "Which bundler do you want to use to build the application?",
176
177
  "x-priority": "important"
177
178
  },
@@ -180,6 +181,10 @@
180
181
  "type": "boolean",
181
182
  "x-prompt": "Do you want to enable Server-Side Rendering (SSR) and Static Site Generation (SSG/Prerendering)?",
182
183
  "default": false
184
+ },
185
+ "serverRouting": {
186
+ "description": "Creates a server application using the Server Routing and App Engine APIs (Developer Preview). _Note: this is only supported in Angular versions >= 19.0.0_.",
187
+ "type": "boolean"
183
188
  }
184
189
  },
185
190
  "additionalProperties": false,
@@ -12,6 +12,7 @@ async function componentGenerator(tree, rawOptions) {
12
12
  name: options.name,
13
13
  fileName: options.fileName,
14
14
  symbolName: options.symbolName,
15
+ exportDefault: options.exportDefault,
15
16
  style: options.style,
16
17
  inlineStyle: options.inlineStyle,
17
18
  inlineTemplate: options.inlineTemplate,
@@ -21,6 +22,9 @@ async function componentGenerator(tree, rawOptions) {
21
22
  viewEncapsulation: options.viewEncapsulation,
22
23
  displayBlock: options.displayBlock,
23
24
  selector: options.selector,
25
+ // Angular v19 or higher defaults to true, while v18 or lower defaults to false
26
+ setStandalone: (angularMajorVersion >= 19 && !options.standalone) ||
27
+ (angularMajorVersion < 19 && options.standalone),
24
28
  angularMajorVersion,
25
29
  tpl: '',
26
30
  });
@@ -1,5 +1,5 @@
1
1
  import { ComponentFixture, TestBed } from '@angular/core/testing';
2
- import { <%= symbolName %> } from './<%= fileName %>';
2
+ import <% if (exportDefault) { %><%= symbolName %><% } else { %>{ <%= symbolName %> }<% } %> from './<%= fileName %>';
3
3
 
4
4
  describe('<%= symbolName %>', () => {
5
5
  let component: <%= symbolName %>;
@@ -2,26 +2,18 @@ import { <% if(changeDetection !== 'Default') { %>ChangeDetectionStrategy, <% }%
2
2
  import { CommonModule } from '@angular/common';<% } %>
3
3
 
4
4
  @Component({<% if(!skipSelector) {%>
5
- selector: '<%= selector %>',<%}%><% if(standalone) {%>
6
- standalone: true,
5
+ selector: '<%= selector %>',<%}%><% if (setStandalone) { %>
6
+ standalone: <%= standalone %>,<% } %><% if(standalone) { %>
7
7
  imports: [CommonModule],<%}%><% if(inlineTemplate) { %>
8
8
  template: `<p><%= name %> works!</p>`<% } else { %>
9
- templateUrl: './<%= fileName %>.html'<% } if (angularMajorVersion < 17) { if(inlineStyle) { %>,
10
- styles: [<% if(displayBlock){ %>
11
- `
12
- :host {
13
- display: block;
14
- }
15
- `<% } %>
16
- ]<% } else if (style !== 'none') { %>,
17
- styleUrls: ['./<%= fileName %>.<%= style %>']<% } %><% } else { if(inlineStyle) { %>,
9
+ templateUrl: './<%= fileName %>.html'<% } if(inlineStyle) { %>,
18
10
  styles: `<% if(displayBlock){ %>
19
11
  :host {
20
12
  display: block;
21
13
  }
22
14
  <% } %>`<% } else if (style !== 'none') { %>,
23
- styleUrl: './<%= fileName %>.<%= style %>'<% } %><% } %><% if(!!viewEncapsulation) { %>,
15
+ styleUrl: './<%= fileName %>.<%= style %>'<% } %><% if(!!viewEncapsulation) { %>,
24
16
  encapsulation: ViewEncapsulation.<%= viewEncapsulation %><% } if (changeDetection !== 'Default') { %>,
25
17
  changeDetection: ChangeDetectionStrategy.<%= changeDetection %><% } %>
26
18
  })
27
- export class <%= symbolName %> {}
19
+ export <% if (exportDefault) {%>default <%}%>class <%= symbolName %> {}
@@ -4,6 +4,7 @@ exports.normalizeOptions = normalizeOptions;
4
4
  const devkit_1 = require("@nx/devkit");
5
5
  const artifact_name_and_directory_utils_1 = require("@nx/devkit/src/generators/artifact-name-and-directory-utils");
6
6
  const selector_1 = require("../../utils/selector");
7
+ const validations_1 = require("../../utils/validations");
7
8
  async function normalizeOptions(tree, options) {
8
9
  options.type ??= 'component';
9
10
  const { artifactName: name, directory, fileName, filePath, project: projectName, } = await (0, artifact_name_and_directory_utils_1.determineArtifactNameAndDirectoryOptions)(tree, {
@@ -14,6 +15,7 @@ async function normalizeOptions(tree, options) {
14
15
  const { className } = (0, devkit_1.names)(name);
15
16
  const { className: suffixClassName } = (0, devkit_1.names)(options.type);
16
17
  const symbolName = `${className}${suffixClassName}`;
18
+ (0, validations_1.validateClassName)(symbolName);
17
19
  const { prefix, root, sourceRoot } = (0, devkit_1.readProjectConfiguration)(tree, projectName);
18
20
  const selector = options.selector ?? (0, selector_1.buildSelector)(name, options.prefix, prefix, 'fileName');
19
21
  (0, selector_1.validateHtmlSelector)(selector);
@@ -15,6 +15,7 @@ export interface Schema {
15
15
  module?: string;
16
16
  skipSelector?: boolean;
17
17
  export?: boolean;
18
+ exportDefault?: boolean;
18
19
  prefix?: string;
19
20
  skipFormat?: boolean;
20
21
  }
@@ -104,6 +104,11 @@
104
104
  "default": false,
105
105
  "x-priority": "important"
106
106
  },
107
+ "exportDefault": {
108
+ "type": "boolean",
109
+ "default": false,
110
+ "description": "Use default export for the component instead of a named export."
111
+ },
107
112
  "skipFormat": {
108
113
  "description": "Skip formatting files.",
109
114
  "type": "boolean",
@@ -26,10 +26,7 @@ const redundantExecutors = new Set([
26
26
  '@nx/angular:webpack-server',
27
27
  ]);
28
28
  async function convertToApplicationExecutor(tree, options) {
29
- const { major: angularMajorVersion, version: angularVersion } = (0, version_utils_1.getInstalledAngularVersionInfo)(tree);
30
- if (angularMajorVersion < 17) {
31
- throw new Error(`The "convert-to-application-executor" generator is only supported in Angular >= 17.0.0. You are currently using "${angularVersion}".`);
32
- }
29
+ const { version: angularVersion } = (0, version_utils_1.getInstalledAngularVersionInfo)(tree);
33
30
  let didAnySucceed = false;
34
31
  if (options.project) {
35
32
  (0, validations_1.validateProject)(tree, options.project);
@@ -2,7 +2,7 @@
2
2
  "$schema": "http://json-schema.org/schema",
3
3
  "$id": "NxAngularConvertToApplicationExecutorGenerator",
4
4
  "cli": "nx",
5
- "title": "Converts projects to use the `@nx/angular:application` executor or the `@angular-devkit/build-angular:application` builder. _Note: this is only supported in Angular versions >= 17.0.0_.",
5
+ "title": "Converts projects to use the `@nx/angular:application` executor or the `@angular-devkit/build-angular:application` builder.",
6
6
  "description": "Converts a project or all projects using one of the `@angular-devkit/build-angular:browser`, `@angular-devkit/build-angular:browser-esbuild`, `@nx/angular:browser` and `@nx/angular:browser-esbuild` executors to use the `@nx/angular:application` executor or the `@angular-devkit/build-angular:application` builder. If the converted target is using one of the `@nx/angular` executors, the `@nx/angular:application` executor will be used. Otherwise, the `@angular-devkit/build-angular:application` builder will be used.",
7
7
  "type": "object",
8
8
  "properties": {
@@ -3,14 +3,19 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.directiveGenerator = directiveGenerator;
4
4
  const devkit_1 = require("@nx/devkit");
5
5
  const utils_1 = require("../utils");
6
+ const version_utils_1 = require("../utils/version-utils");
6
7
  const lib_1 = require("./lib");
7
8
  async function directiveGenerator(tree, schema) {
8
9
  const options = await (0, lib_1.normalizeOptions)(tree, schema);
10
+ const { major: angularMajorVersion } = (0, version_utils_1.getInstalledAngularVersionInfo)(tree);
9
11
  (0, devkit_1.generateFiles)(tree, (0, devkit_1.joinPathFragments)(__dirname, 'files'), options.directory, {
10
12
  selector: options.selector,
11
13
  symbolName: options.symbolName,
12
14
  fileName: options.fileName,
13
15
  standalone: options.standalone,
16
+ // Angular v19 or higher defaults to true, while v18 or lower defaults to false
17
+ setStandalone: (angularMajorVersion >= 19 && !options.standalone) ||
18
+ (angularMajorVersion < 19 && options.standalone),
14
19
  tpl: '',
15
20
  });
16
21
  if (options.skipTests) {
@@ -1,8 +1,8 @@
1
1
  import { Directive } from '@angular/core';
2
2
 
3
3
  @Directive({
4
- selector: '[<%= selector %>]'<% if(standalone) {%>,
5
- standalone: true<%}%>
4
+ selector: '[<%= selector %>]'<% if (setStandalone) { %>,
5
+ standalone: <%= standalone %><% } %>
6
6
  })
7
7
  export class <%= symbolName %> {
8
8
  constructor() {}
@@ -2,8 +2,9 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.normalizeOptions = normalizeOptions;
4
4
  const devkit_1 = require("@nx/devkit");
5
- const selector_1 = require("../../utils/selector");
6
5
  const artifact_name_and_directory_utils_1 = require("@nx/devkit/src/generators/artifact-name-and-directory-utils");
6
+ const selector_1 = require("../../utils/selector");
7
+ const validations_1 = require("../../utils/validations");
7
8
  async function normalizeOptions(tree, options) {
8
9
  const { artifactName: name, directory, fileName, filePath, project: projectName, } = await (0, artifact_name_and_directory_utils_1.determineArtifactNameAndDirectoryOptions)(tree, {
9
10
  name: options.name,
@@ -13,6 +14,7 @@ async function normalizeOptions(tree, options) {
13
14
  const { className } = (0, devkit_1.names)(name);
14
15
  const { className: suffixClassName } = (0, devkit_1.names)('directive');
15
16
  const symbolName = `${className}${suffixClassName}`;
17
+ (0, validations_1.validateClassName)(symbolName);
16
18
  const { prefix } = (0, devkit_1.readProjectConfiguration)(tree, projectName);
17
19
  const selector = options.selector ??
18
20
  (0, selector_1.buildSelector)(name, options.prefix, prefix, 'propertyName');
@@ -1,7 +1,7 @@
1
1
  import 'zone.js/node';
2
2
 
3
3
  import { APP_BASE_HREF } from '@angular/common';
4
- import { CommonEngine } from '@angular/ssr';
4
+ import { CommonEngine } from '<%= commonEngineEntryPoint %>';
5
5
  import * as express from 'express';
6
6
  import * as cors from 'cors';
7
7
  import { existsSync } from 'node:fs';
@@ -10,10 +10,11 @@ async function updateSsrSetup(tree, options, appName, typescriptConfiguration) {
10
10
  tree.rename((0, devkit_1.joinPathFragments)(project.sourceRoot, 'main.server.ts'), (0, devkit_1.joinPathFragments)(project.sourceRoot, 'bootstrap.server.ts'));
11
11
  tree.write((0, devkit_1.joinPathFragments)(project.root, 'server.ts'), "import('./src/main.server');");
12
12
  const { major: angularMajorVersion } = (0, version_utils_1.getInstalledAngularVersionInfo)(tree);
13
- (0, devkit_1.generateFiles)(tree, (0, path_1.join)(__dirname, '../files/common', angularMajorVersion >= 17 ? 'v17+' : 'pre-v17'), project.root, {
13
+ (0, devkit_1.generateFiles)(tree, (0, path_1.join)(__dirname, '../files/common'), project.root, {
14
14
  appName,
15
15
  browserBundleOutput: project.targets.build.options.outputPath,
16
16
  standalone: options.standalone,
17
+ commonEngineEntryPoint: angularMajorVersion >= 19 ? '@angular/ssr/node' : '@angular/ssr',
17
18
  tmpl: '',
18
19
  });
19
20
  const pathToTemplateFiles = typescriptConfiguration ? 'ts' : 'js';
@@ -27,5 +27,6 @@ export interface Schema {
27
27
  skipFormat?: boolean;
28
28
  standalone?: boolean;
29
29
  ssr?: boolean;
30
+ serverRouting?: boolean;
30
31
  typescriptConfiguration?: boolean;
31
32
  }
@@ -172,6 +172,10 @@
172
172
  "default": false,
173
173
  "x-priority": "important"
174
174
  },
175
+ "serverRouting": {
176
+ "description": "Creates a server application using the Server Routing and App Engine APIs (Developer Preview). _Note: this is only supported in Angular versions >= 19.0.0_.",
177
+ "type": "boolean"
178
+ },
175
179
  "typescriptConfiguration": {
176
180
  "type": "boolean",
177
181
  "description": "Whether the module federation configuration and webpack configuration files should use TS.",
@@ -1,8 +1,8 @@
1
1
  import { Pipe, PipeTransform } from '@angular/core';
2
2
 
3
3
  @Pipe({
4
- name: '<%= selector %>'<% if(standalone) {%>,
5
- standalone: true<%}%>
4
+ name: '<%= selector %>'<% if (setStandalone) { %>,
5
+ standalone: <%= standalone %><% } %>
6
6
  })
7
7
  export class <%= symbolName %> implements PipeTransform {
8
8
  transform(value: unknown, ...args: unknown[]): unknown {
@@ -1,8 +1,9 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.normalizeOptions = normalizeOptions;
4
- const artifact_name_and_directory_utils_1 = require("@nx/devkit/src/generators/artifact-name-and-directory-utils");
5
4
  const devkit_1 = require("@nx/devkit");
5
+ const artifact_name_and_directory_utils_1 = require("@nx/devkit/src/generators/artifact-name-and-directory-utils");
6
+ const validations_1 = require("../../utils/validations");
6
7
  async function normalizeOptions(tree, options) {
7
8
  const { artifactName: name, directory, fileName, filePath, project: projectName, } = await (0, artifact_name_and_directory_utils_1.determineArtifactNameAndDirectoryOptions)(tree, {
8
9
  name: options.name,
@@ -12,6 +13,7 @@ async function normalizeOptions(tree, options) {
12
13
  const { className } = (0, devkit_1.names)(name);
13
14
  const { className: suffixClassName } = (0, devkit_1.names)('pipe');
14
15
  const symbolName = `${className}${suffixClassName}`;
16
+ (0, validations_1.validateClassName)(symbolName);
15
17
  return {
16
18
  ...options,
17
19
  projectName,
@@ -3,15 +3,20 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.pipeGenerator = pipeGenerator;
4
4
  const devkit_1 = require("@nx/devkit");
5
5
  const utils_1 = require("../utils");
6
+ const version_utils_1 = require("../utils/version-utils");
6
7
  const lib_1 = require("./lib");
7
8
  async function pipeGenerator(tree, rawOptions) {
8
9
  const options = await (0, lib_1.normalizeOptions)(tree, rawOptions);
10
+ const { major: angularMajorVersion } = (0, version_utils_1.getInstalledAngularVersionInfo)(tree);
9
11
  const pipeNames = (0, devkit_1.names)(options.name);
10
12
  (0, devkit_1.generateFiles)(tree, (0, devkit_1.joinPathFragments)(__dirname, 'files'), options.directory, {
11
13
  symbolName: options.symbolName,
12
14
  fileName: options.fileName,
13
15
  selector: pipeNames.propertyName,
14
16
  standalone: options.standalone,
17
+ // Angular v19 or higher defaults to true, while v18 or lower defaults to false
18
+ setStandalone: (angularMajorVersion >= 19 && !options.standalone) ||
19
+ (angularMajorVersion < 19 && options.standalone),
15
20
  tpl: '',
16
21
  });
17
22
  if (options.skipTests) {
@@ -1,7 +1,7 @@
1
1
  import 'zone.js/node';
2
2
 
3
3
  import { APP_BASE_HREF } from '@angular/common';
4
- import { CommonEngine } from '@angular/ssr';
4
+ import { CommonEngine } from '<%= commonEngineEntryPoint %>';
5
5
  import * as express from 'express';
6
6
  import * as cors from 'cors';
7
7
  import { existsSync } from 'node:fs';
@@ -12,11 +12,12 @@ async function updateSsrSetup(tree, { appName, port, standalone, typescriptConfi
12
12
  const browserBundleOutput = project.targets.build.options.outputPath;
13
13
  const serverBundleOutput = project.targets.build.options.outputPath.replace(/\/browser$/, '/server');
14
14
  const { major: angularMajorVersion } = (0, version_utils_1.getInstalledAngularVersionInfo)(tree);
15
- (0, devkit_1.generateFiles)(tree, (0, path_1.join)(__dirname, '../files/common', angularMajorVersion >= 17 ? 'v17+' : 'pre-v17'), project.root, {
15
+ (0, devkit_1.generateFiles)(tree, (0, path_1.join)(__dirname, '../files/common'), project.root, {
16
16
  appName,
17
17
  browserBundleOutput,
18
18
  serverBundleOutput,
19
19
  standalone,
20
+ commonEngineEntryPoint: angularMajorVersion >= 19 ? '@angular/ssr/node' : '@angular/ssr',
20
21
  tmpl: '',
21
22
  });
22
23
  const pathToTemplateFiles = typescriptConfiguration ? 'base-ts' : 'base';
@@ -26,5 +26,6 @@ export interface Schema {
26
26
  skipFormat?: boolean;
27
27
  standalone?: boolean;
28
28
  ssr?: boolean;
29
+ serverRouting?: boolean;
29
30
  typescriptConfiguration?: boolean;
30
31
  }
@@ -165,6 +165,10 @@
165
165
  "type": "boolean",
166
166
  "default": false
167
167
  },
168
+ "serverRouting": {
169
+ "description": "Creates a server application using the Server Routing and App Engine APIs (Developer Preview). _Note: this is only supported in Angular versions >= 19.0.0_.",
170
+ "type": "boolean"
171
+ },
168
172
  "typescriptConfiguration": {
169
173
  "type": "boolean",
170
174
  "description": "Whether the module federation configuration and webpack configuration files should use TS.",
@@ -1,8 +1,9 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.normalizeOptions = normalizeOptions;
4
- const artifact_name_and_directory_utils_1 = require("@nx/devkit/src/generators/artifact-name-and-directory-utils");
5
4
  const devkit_1 = require("@nx/devkit");
5
+ const artifact_name_and_directory_utils_1 = require("@nx/devkit/src/generators/artifact-name-and-directory-utils");
6
+ const validations_1 = require("../../utils/validations");
6
7
  async function normalizeOptions(tree, options) {
7
8
  options.type ??= 'component';
8
9
  const { artifactName: name, directory, fileName, filePath, project: projectName, } = await (0, artifact_name_and_directory_utils_1.determineArtifactNameAndDirectoryOptions)(tree, {
@@ -13,6 +14,7 @@ async function normalizeOptions(tree, options) {
13
14
  const { className } = (0, devkit_1.names)(name);
14
15
  const { className: suffixClassName } = (0, devkit_1.names)(options.type);
15
16
  const symbolName = `${className}${suffixClassName}`;
17
+ (0, validations_1.validateClassName)(symbolName);
16
18
  return {
17
19
  ...options,
18
20
  export: options.export ?? true,