@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,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)('directive');
14
15
  const symbolName = `${className}${suffixClassName}`;
16
+ (0, validations_1.validateClassName)(symbolName);
15
17
  return {
16
18
  ...options,
17
19
  export: options.export ?? true,
@@ -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
  export: options.export ?? true,
@@ -1,3 +1,3 @@
1
+ import { type Tree } from '@nx/devkit';
1
2
  import type { Node, SourceFile } from 'typescript';
2
- import { Tree } from 'nx/src/generators/tree';
3
3
  export declare function convertScamToStandalone(componentAST: SourceFile, componentFileContents: string, importsArray: string[], providersArray: string[], moduleNodes: Array<Node>, tree: Tree, normalizedComponentPath: string, componentName: string): void;
@@ -1,19 +1,20 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.convertScamToStandalone = convertScamToStandalone;
4
+ const devkit_1 = require("@nx/devkit");
4
5
  const path_1 = require("path");
5
- const path_2 = require("nx/src/utils/path");
6
+ const version_utils_1 = require("../../utils/version-utils");
6
7
  function convertScamToStandalone(componentAST, componentFileContents, importsArray, providersArray, moduleNodes, tree, normalizedComponentPath, componentName) {
7
8
  let newComponentContents = '';
8
9
  const COMPONENT_PROPERTY_SELECTOR = 'ClassDeclaration > Decorator > CallExpression:has(Identifier[name=Component]) ObjectLiteralExpression';
9
10
  const { tsquery } = require('@phenomnomnominal/tsquery');
10
11
  const componentDecoratorMetadataNode = tsquery(componentAST, COMPONENT_PROPERTY_SELECTOR, { visitAllChildren: true })[0];
11
- newComponentContents = `${componentFileContents.slice(0, componentDecoratorMetadataNode.getStart() - 1)}({
12
- standalone: true,
12
+ const { major: angularMajorVersion } = (0, version_utils_1.getInstalledAngularVersionInfo)(tree);
13
+ newComponentContents = `${componentFileContents.slice(0, componentDecoratorMetadataNode.getStart() - 1)}({${angularMajorVersion < 19 ? `\nstandalone: true,` : ''}
13
14
  imports: [${importsArray.join(',')}],${providersArray.length > 0 ? `providers: [${providersArray.join(',')}],` : ''}${componentFileContents.slice(componentDecoratorMetadataNode.getStart() + 1, moduleNodes[0].getStart() - 1)}`;
14
15
  tree.write(normalizedComponentPath, newComponentContents);
15
16
  const componentPathParts = (0, path_1.parse)(normalizedComponentPath);
16
- const pathToComponentSpec = (0, path_2.joinPathFragments)(componentPathParts.dir, '/', `${componentPathParts.name}.spec.ts`);
17
+ const pathToComponentSpec = (0, devkit_1.joinPathFragments)(componentPathParts.dir, '/', `${componentPathParts.name}.spec.ts`);
17
18
  if (tree.exists(pathToComponentSpec)) {
18
19
  const componentSpecContents = tree.read(pathToComponentSpec, 'utf-8');
19
20
  // Only support testbed based tests
@@ -1,7 +1,8 @@
1
1
  import { Component } from '@angular/core';
2
2
 
3
3
  @Component({<% if (prefix) { %>
4
- selector: '<%= prefix %>-<%= appName %>-entry',
4
+ selector: '<%= prefix %>-<%= appName %>-entry',<% if (setStandaloneFalse) { %>
5
+ standalone: false,<% } %>
5
6
  template: `<<%= prefix %>-nx-welcome></<%= prefix %>-nx-welcome>`<% } else { %>
6
7
  selector: '<%= appName %>-entry',
7
8
  template: `<nx-welcome></nx-welcome>`<% } %>
@@ -2,8 +2,8 @@ import { Component } from '@angular/core';
2
2
  import { CommonModule } from '@angular/common';
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: [CommonModule, NxWelcomeComponent],<% if (prefix) { %>
8
8
  selector: '<%= prefix %>-<%= appName %>-entry',
9
9
  template: `<<%= prefix %>-nx-welcome></<%= prefix %>-nx-welcome>`<% } else { %>
@@ -3,7 +3,9 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.addRemoteEntry = addRemoteEntry;
4
4
  const devkit_1 = require("@nx/devkit");
5
5
  const route_utils_1 = require("../../../utils/nx-devkit/route-utils");
6
+ const version_utils_1 = require("../../utils/version-utils");
6
7
  function addRemoteEntry(tree, { appName, routing, prefix, standalone }, appRoot) {
8
+ const { major: angularMajorVersion } = (0, version_utils_1.getInstalledAngularVersionInfo)(tree);
7
9
  (0, devkit_1.generateFiles)(tree, standalone
8
10
  ? (0, devkit_1.joinPathFragments)(__dirname, '../files/standalone-entry-component-files')
9
11
  : (0, devkit_1.joinPathFragments)(__dirname, '../files/entry-module-files'), `${appRoot}/src/app/remote-entry`, {
@@ -11,6 +13,9 @@ function addRemoteEntry(tree, { appName, routing, prefix, standalone }, appRoot)
11
13
  appName,
12
14
  routing,
13
15
  prefix,
16
+ // Angular v19 or higher defaults to true, while v18 or lower defaults to false
17
+ setStandaloneFalse: angularMajorVersion >= 19,
18
+ setStandaloneTrue: angularMajorVersion < 19,
14
19
  });
15
20
  if (standalone && routing) {
16
21
  (0, route_utils_1.addRoute)(tree, (0, devkit_1.joinPathFragments)(appRoot, 'src/app/app.routes.ts'), `{path: '', loadChildren: () => import('./remote-entry/entry.routes').then(m => m.remoteRoutes)}`);
@@ -9,7 +9,7 @@ import <% if (standalone) { %>bootstrap<% } else { %><%= rootModuleClassName %><
9
9
  export function app(): express.Express {
10
10
  const server = express();
11
11
  const serverDistFolder = dirname(fileURLToPath(import.meta.url));
12
- const browserDistFolder = resolve(serverDistFolder, '../<%= browserBundleOutputPath %>');
12
+ const browserDistFolder = resolve(serverDistFolder, '../<%= browserDistDirectory %>');
13
13
  const indexHtml = join(serverDistFolder, 'index.server.html');
14
14
 
15
15
  const commonEngine = new CommonEngine();
@@ -10,7 +10,7 @@ import <% if (standalone) { %>bootstrap<% } else { %><%= rootModuleClassName %><
10
10
  // The Express app is exported so that it can be used by serverless Functions.
11
11
  export function app(): express.Express {
12
12
  const server = express();
13
- const distFolder = join(process.cwd(), '<%= browserBundleOutputPath %>');
13
+ const distFolder = join(process.cwd(), '<%= browserDistDirectory %>');
14
14
  const indexHtml = existsSync(join(distFolder, 'index.original.html'))
15
15
  ? join(distFolder, 'index.original.html')
16
16
  : join(distFolder, 'index.html');
@@ -0,0 +1 @@
1
+ export { <%= rootModuleClassName %> as default } from './app/<%= rootModuleFileName.slice(0, -3) %>';
@@ -0,0 +1,13 @@
1
+ import { NgModule } from '@angular/core';
2
+ import { ServerModule } from '@angular/platform-server';<% if(serverRouting) { %>
3
+ import { provideServerRoutesConfig } from '@angular/ssr';<% } %>
4
+ import { AppComponent } from './app.component';
5
+ import { AppModule } from './app.module';<% if(serverRouting) { %>
6
+ import { serverRoutes } from './app.routes.server';<% } %>
7
+
8
+ @NgModule({
9
+ imports: [AppModule, ServerModule],<% if(serverRouting) { %>
10
+ providers: [provideServerRoutesConfig(serverRoutes)],<% } %>
11
+ bootstrap: [AppComponent],
12
+ })
13
+ export class <%= rootModuleClassName %> {}
@@ -0,0 +1,8 @@
1
+ import { RenderMode, ServerRoute } from '@angular/ssr';
2
+
3
+ export const serverRoutes: ServerRoute[] = [
4
+ {
5
+ path: '**',
6
+ renderMode: RenderMode.Prerender
7
+ }
8
+ ];
@@ -0,0 +1,66 @@
1
+ import {
2
+ AngularNodeAppEngine,
3
+ createNodeRequestHandler,
4
+ isMainModule,
5
+ writeResponseToNodeResponse,
6
+ } from '@angular/ssr/node';
7
+ import express from 'express';
8
+ import { dirname, resolve } from 'node:path';
9
+ import { fileURLToPath } from 'node:url';
10
+
11
+ const serverDistFolder = dirname(fileURLToPath(import.meta.url));
12
+ const browserDistFolder = resolve(serverDistFolder, '../<%= browserDistDirectory %>');
13
+
14
+ const app = express();
15
+ const angularApp = new AngularNodeAppEngine();
16
+
17
+ /**
18
+ * Example Express Rest API endpoints can be defined here.
19
+ * Uncomment and define endpoints as necessary.
20
+ *
21
+ * Example:
22
+ * ```ts
23
+ * app.get('/api/**', (req, res) => {
24
+ * // Handle API request
25
+ * });
26
+ * ```
27
+ */
28
+
29
+ /**
30
+ * Serve static files from /<%= browserDistDirectory %>
31
+ */
32
+ app.use(
33
+ express.static(browserDistFolder, {
34
+ maxAge: '1y',
35
+ index: false,
36
+ redirect: false,
37
+ })
38
+ );
39
+
40
+ /**
41
+ * Handle all other requests by rendering the Angular application.
42
+ */
43
+ app.use('/**', (req, res, next) => {
44
+ angularApp
45
+ .handle(req)
46
+ .then((response) =>
47
+ response ? writeResponseToNodeResponse(response, res) : next()
48
+ )
49
+ .catch(next);
50
+ });
51
+
52
+ /**
53
+ * Start the server if this module is the main entry point.
54
+ * The server listens on the port defined by the `PORT` environment variable, or defaults to <%= serverPort %>.
55
+ */
56
+ if (isMainModule(import.meta.url)) {
57
+ const port = process.env['PORT'] || <%= serverPort %>;
58
+ app.listen(port, () => {
59
+ console.log(`Node Express server listening on http://localhost:${port}`);
60
+ });
61
+ }
62
+
63
+ /**
64
+ * The request handler used by the Angular CLI (dev-server and during build).
65
+ */
66
+ export const reqHandler = createNodeRequestHandler(app);
@@ -0,0 +1,7 @@
1
+ import { bootstrapApplication } from '@angular/platform-browser';
2
+ import { AppComponent } from './app/app.component';
3
+ import { config } from './app/app.config.server';
4
+
5
+ const bootstrap = () => bootstrapApplication(AppComponent, config);
6
+
7
+ export default bootstrap;
@@ -0,0 +1,14 @@
1
+ import { mergeApplicationConfig, ApplicationConfig } from '@angular/core';
2
+ import { provideServerRendering } from '@angular/platform-server';<% if(serverRouting) { %>
3
+ import { provideServerRoutesConfig } from '@angular/ssr';<% } %>
4
+ import { appConfig } from './app.config';<% if(serverRouting) { %>
5
+ import { serverRoutes } from './app.routes.server';<% } %>
6
+
7
+ const serverConfig: ApplicationConfig = {
8
+ providers: [
9
+ provideServerRendering()<% if(serverRouting) { %>,
10
+ provideServerRoutesConfig(serverRoutes)<% } %>
11
+ ]
12
+ };
13
+
14
+ export const config = mergeApplicationConfig(appConfig, serverConfig);
@@ -0,0 +1,8 @@
1
+ import { RenderMode, ServerRoute } from '@angular/ssr';
2
+
3
+ export const serverRoutes: ServerRoute[] = [
4
+ {
5
+ path: '**',
6
+ renderMode: RenderMode.Prerender
7
+ }
8
+ ];
@@ -0,0 +1,65 @@
1
+ import { APP_BASE_HREF } from '@angular/common';
2
+ import { CommonEngine, isMainModule } from '@angular/ssr/node';
3
+ import express from 'express';
4
+ import { dirname, join, resolve } from 'node:path';
5
+ import { fileURLToPath } from 'node:url';
6
+ import <% if (standalone) { %>bootstrap<% } else { %><%= rootModuleClassName %><% } %> from './<%= main.slice(0, -3) %>';
7
+
8
+ const serverDistFolder = dirname(fileURLToPath(import.meta.url));
9
+ const browserDistFolder = resolve(serverDistFolder, '../<%= browserDistDirectory %>');
10
+ const indexHtml = join(serverDistFolder, 'index.server.html');
11
+
12
+ const app = express();
13
+ const commonEngine = new CommonEngine();
14
+
15
+ /**
16
+ * Example Express Rest API endpoints can be defined here.
17
+ * Uncomment and define endpoints as necessary.
18
+ *
19
+ * Example:
20
+ * ```ts
21
+ * app.get('/api/**', (req, res) => {
22
+ * // Handle API request
23
+ * });
24
+ * ```
25
+ */
26
+
27
+ /**
28
+ * Serve static files from /<%= browserDistDirectory %>
29
+ */
30
+ app.get(
31
+ '**',
32
+ express.static(browserDistFolder, {
33
+ maxAge: '1y',
34
+ index: 'index.html'
35
+ }),
36
+ );
37
+
38
+ /**
39
+ * Handle all other requests by rendering the Angular application.
40
+ */
41
+ app.get('**', (req, res, next) => {
42
+ const { protocol, originalUrl, baseUrl, headers } = req;
43
+
44
+ commonEngine
45
+ .render({
46
+ bootstrap<% if (!standalone) { %>: <%= rootModuleClassName %><% } %>,
47
+ documentFilePath: indexHtml,
48
+ url: `${protocol}://${headers.host}${originalUrl}`,
49
+ publicPath: browserDistFolder,
50
+ providers: [{ provide: APP_BASE_HREF, useValue: baseUrl }],
51
+ })
52
+ .then((html) => res.send(html))
53
+ .catch((err) => next(err));
54
+ });
55
+
56
+ /**
57
+ * Start the server if this module is the main entry point.
58
+ * The server listens on the port defined by the `PORT` environment variable, or defaults to 4000.
59
+ */
60
+ if (isMainModule(import.meta.url)) {
61
+ const port = process.env['PORT'] || <%= serverPort %>;
62
+ app.listen(port, () => {
63
+ console.log(`Node Express server listening on http://localhost:${port}`);
64
+ });
65
+ }
@@ -0,0 +1 @@
1
+ export { <%= rootModuleClassName %> as default } from './app/<%= rootModuleFileName.slice(0, -3) %>';
@@ -0,0 +1,14 @@
1
+ import { NgModule } from '@angular/core';
2
+ import { ServerModule } from '@angular/platform-server';
3
+
4
+ import { AppModule } from './app.module';
5
+ import { AppComponent } from './app.component';
6
+
7
+ @NgModule({
8
+ imports: [
9
+ AppModule,
10
+ ServerModule,
11
+ ],
12
+ bootstrap: [AppComponent],
13
+ })
14
+ export class <%= rootModuleClassName %> {}
@@ -0,0 +1,16 @@
1
+ /* To learn more about Typescript configuration file: https://www.typescriptlang.org/docs/handbook/tsconfig-json.html. */
2
+ /* To learn more about Angular compiler options: https://angular.dev/reference/configs/angular-compiler-options. */
3
+ {
4
+ "extends": "./tsconfig.app.json",
5
+ "compilerOptions": {
6
+ "outDir": "<%= rootOffset %>out-tsc/server",
7
+ "types": [
8
+ "node"<% if (hasLocalizePackage) { %>,
9
+ "@angular/localize"<% } %>
10
+ ]
11
+ },
12
+ "files": [
13
+ "src/<%= main %>",
14
+ "src/server.ts"
15
+ ]
16
+ }
@@ -1,22 +1,21 @@
1
- import 'zone.js/dist/zone-node';
1
+ import 'zone.js/node';
2
2
 
3
3
  import { APP_BASE_HREF } from '@angular/common';
4
- import { ngExpressEngine } from '@nguniversal/express-engine';
4
+ import { CommonEngine } from '@angular/ssr/node';
5
5
  import * as express from 'express';
6
- import { existsSync } from 'fs';
7
- import { join } from 'path';
8
- import <% if (standalone) { %>bootstrap<% } else { %><%= rootModuleClassName %><% } %> from './src/<%= main.slice(0, -3) %>';
6
+ import { existsSync } from 'node:fs';
7
+ import { join } from 'node:path';
8
+ import <% if (standalone) { %>bootstrap<% } else { %><%= rootModuleClassName %><% } %> from './<%= main.slice(0, -3) %>';
9
9
 
10
10
  // The Express app is exported so that it can be used by serverless Functions.
11
11
  export function app(): express.Express {
12
12
  const server = express();
13
- const distFolder = join(process.cwd(), '<%= browserBundleOutputPath %>');
14
- const indexHtml = existsSync(join(distFolder, 'index.original.html')) ? 'index.original.html' : 'index';
13
+ const distFolder = join(process.cwd(), '<%= browserDistDirectory %>');
14
+ const indexHtml = existsSync(join(distFolder, 'index.original.html'))
15
+ ? join(distFolder, 'index.original.html')
16
+ : join(distFolder, 'index.html');
15
17
 
16
- // Our Universal express-engine (found @ https://github.com/angular/universal/tree/main/modules/express-engine)
17
- server.engine('html', ngExpressEngine({
18
- bootstrap<% if (!standalone) { %>: <%= rootModuleClassName %><% } %>,
19
- }));
18
+ const commonEngine = new CommonEngine();
20
19
 
21
20
  server.set('view engine', 'html');
22
21
  server.set('views', distFolder);
@@ -28,9 +27,20 @@ export function app(): express.Express {
28
27
  maxAge: '1y'
29
28
  }));
30
29
 
31
- // All regular routes use the Universal engine
32
- server.get('*', (req, res) => {
33
- res.render(indexHtml, { req, providers: [{ provide: APP_BASE_HREF, useValue: req.baseUrl }] });
30
+ // All regular routes use the Angular engine
31
+ server.get('*', (req, res, next) => {
32
+ const { protocol, originalUrl, baseUrl, headers } = req;
33
+
34
+ commonEngine
35
+ .render({
36
+ bootstrap<% if (!standalone) { %>: <%= rootModuleClassName %><% } %>,
37
+ documentFilePath: indexHtml,
38
+ url: `${protocol}://${headers.host}${originalUrl}`,
39
+ publicPath: distFolder,
40
+ providers: [{ provide: APP_BASE_HREF, useValue: baseUrl }],
41
+ })
42
+ .then((html) => res.send(html))
43
+ .catch((err) => next(err));
34
44
  });
35
45
 
36
46
  return server;
@@ -56,4 +66,4 @@ if (moduleFilename === __filename || moduleFilename.includes('iisnode')) {
56
66
  run();
57
67
  }
58
68
 
59
- export <% if (standalone) { %>default bootstrap<% } else { %>* from './src/<%= main.slice(0, -3) %>'<% } %>;
69
+ export default <% if (standalone) { %>bootstrap<% } else { %><%= rootModuleClassName %><% } %>;
@@ -0,0 +1,7 @@
1
+ import { bootstrapApplication } from '@angular/platform-browser';
2
+ import { AppComponent } from './app/app.component';
3
+ import { config } from './app/app.config.server';
4
+
5
+ const bootstrap = () => bootstrapApplication(AppComponent, config);
6
+
7
+ export default bootstrap;
@@ -0,0 +1,11 @@
1
+ import { mergeApplicationConfig, ApplicationConfig } from '@angular/core';
2
+ import { provideServerRendering } from '@angular/platform-server';
3
+ import { appConfig } from './app.config';
4
+
5
+ const serverConfig: ApplicationConfig = {
6
+ providers: [
7
+ provideServerRendering()
8
+ ]
9
+ };
10
+
11
+ export const config = mergeApplicationConfig(appConfig, serverConfig);
@@ -6,7 +6,7 @@ const semver_1 = require("semver");
6
6
  const version_utils_1 = require("../../utils/version-utils");
7
7
  function addDependencies(tree, isUsingApplicationBuilder) {
8
8
  const pkgVersions = (0, version_utils_1.versions)(tree);
9
- const { major: angularMajorVersion, version: angularVersion } = (0, version_utils_1.getInstalledAngularVersionInfo)(tree);
9
+ const { version: angularVersion } = (0, version_utils_1.getInstalledAngularVersionInfo)(tree);
10
10
  const dependencies = {
11
11
  '@angular/platform-server': (0, version_utils_1.getInstalledPackageVersionInfo)(tree, '@angular/platform-server')
12
12
  ?.version ?? pkgVersions.angularVersion,
@@ -15,22 +15,11 @@ function addDependencies(tree, isUsingApplicationBuilder) {
15
15
  const devDependencies = {
16
16
  '@types/express': pkgVersions.typesExpressVersion,
17
17
  };
18
- if (angularMajorVersion >= 17) {
19
- dependencies['@angular/ssr'] =
20
- (0, version_utils_1.getInstalledPackageVersionInfo)(tree, '@angular-devkit/build-angular')
21
- ?.version ?? pkgVersions.angularDevkitVersion;
22
- if (!isUsingApplicationBuilder && (0, semver_1.gte)(angularVersion, '17.1.0')) {
23
- devDependencies['browser-sync'] = pkgVersions.browserSyncVersion;
24
- }
25
- }
26
- else {
27
- dependencies['@nguniversal/express-engine'] =
28
- (0, version_utils_1.getInstalledPackageVersionInfo)(tree, '@nguniversal/express-engine')
29
- ?.version ??
30
- pkgVersions.ngUniversalVersion;
31
- devDependencies['@nguniversal/builders'] =
32
- (0, version_utils_1.getInstalledPackageVersionInfo)(tree, '@nguniversal/builders')?.version ??
33
- pkgVersions.ngUniversalVersion;
18
+ dependencies['@angular/ssr'] =
19
+ (0, version_utils_1.getInstalledPackageVersionInfo)(tree, '@angular-devkit/build-angular')
20
+ ?.version ?? pkgVersions.angularDevkitVersion;
21
+ if (!isUsingApplicationBuilder && (0, semver_1.gte)(angularVersion, '17.1.0')) {
22
+ devDependencies['browser-sync'] = pkgVersions.browserSyncVersion;
34
23
  }
35
24
  (0, devkit_1.addDependenciesToPackageJson)(tree, dependencies, devDependencies);
36
25
  }
@@ -1,3 +1,3 @@
1
1
  import { type Tree } from '@nx/devkit';
2
- import { type Schema } from '../schema';
3
- export declare function addHydration(tree: Tree, options: Schema): void;
2
+ import type { NormalizedGeneratorOptions } from '../schema';
3
+ export declare function addHydration(tree: Tree, options: NormalizedGeneratorOptions): void;
@@ -5,6 +5,7 @@ const devkit_1 = require("@nx/devkit");
5
5
  const js_1 = require("@nx/js");
6
6
  const ensure_typescript_1 = require("@nx/js/src/utils/typescript/ensure-typescript");
7
7
  const ast_utils_1 = require("../../../utils/nx-devkit/ast-utils");
8
+ const version_utils_1 = require("../../utils/version-utils");
8
9
  let tsModule;
9
10
  let tsquery;
10
11
  function addHydration(tree, options) {
@@ -25,11 +26,18 @@ function addHydration(tree, options) {
25
26
  const addImport = (source, symbolName, packageName, filePath, isDefault = false) => {
26
27
  return (0, js_1.insertImport)(tree, source, filePath, symbolName, packageName, isDefault);
27
28
  };
29
+ const { major: angularMajorVersion } = (0, version_utils_1.getInstalledAngularVersionInfo)(tree);
28
30
  sourceFile = addImport(sourceFile, 'provideClientHydration', '@angular/platform-browser', pathToClientConfigFile);
31
+ if (angularMajorVersion >= 19) {
32
+ sourceFile = addImport(sourceFile, 'withEventReplay', '@angular/platform-browser', pathToClientConfigFile);
33
+ }
34
+ const provider = angularMajorVersion >= 19
35
+ ? 'provideClientHydration(withEventReplay())'
36
+ : 'provideClientHydration()';
29
37
  if (options.standalone) {
30
- (0, ast_utils_1.addProviderToAppConfig)(tree, pathToClientConfigFile, 'provideClientHydration()');
38
+ (0, ast_utils_1.addProviderToAppConfig)(tree, pathToClientConfigFile, provider);
31
39
  }
32
40
  else {
33
- (0, ast_utils_1.addProviderToModule)(tree, sourceFile, pathToClientConfigFile, 'provideClientHydration()');
41
+ (0, ast_utils_1.addProviderToModule)(tree, sourceFile, pathToClientConfigFile, provider);
34
42
  }
35
43
  }
@@ -1,3 +1,3 @@
1
1
  import type { Tree } from '@nx/devkit';
2
- import type { Schema } from '../schema';
3
- export declare function addServerFile(tree: Tree, schema: Schema, isUsingApplicationBuilder: boolean): void;
2
+ import type { NormalizedGeneratorOptions } from '../schema';
3
+ export declare function addServerFile(tree: Tree, options: NormalizedGeneratorOptions): void;
@@ -2,21 +2,35 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.addServerFile = addServerFile;
4
4
  const devkit_1 = require("@nx/devkit");
5
+ const path_1 = require("path");
5
6
  const version_utils_1 = require("../../utils/version-utils");
6
7
  const constants_1 = require("./constants");
7
- function addServerFile(tree, schema, isUsingApplicationBuilder) {
8
- const { root: projectRoot, targets } = (0, devkit_1.readProjectConfiguration)(tree, schema.project);
9
- const { outputPath } = targets.build.options;
10
- const browserBundleOutputPath = isUsingApplicationBuilder
8
+ function addServerFile(tree, options) {
9
+ const project = (0, devkit_1.readProjectConfiguration)(tree, options.project);
10
+ const { outputPath } = project.targets.build.options;
11
+ const browserDistDirectory = options.isUsingApplicationBuilder
11
12
  ? getApplicationBuilderBrowserOutputPath(outputPath)
12
13
  : outputPath;
13
- const pathToFiles = (0, devkit_1.joinPathFragments)(__dirname, '..', 'files');
14
14
  const { major: angularMajorVersion } = (0, version_utils_1.getInstalledAngularVersionInfo)(tree);
15
- (0, devkit_1.generateFiles)(tree, (0, devkit_1.joinPathFragments)(pathToFiles, 'server', ...(isUsingApplicationBuilder
16
- ? ['application-builder']
17
- : angularMajorVersion >= 17
18
- ? ['server-builder', 'v17+']
19
- : ['server-builder', 'pre-v17'])), projectRoot, { ...schema, browserBundleOutputPath, tpl: '' });
15
+ const baseFilesPath = (0, path_1.join)(__dirname, '..', 'files');
16
+ let pathToFiles;
17
+ if (angularMajorVersion >= 19) {
18
+ pathToFiles = (0, path_1.join)(baseFilesPath, 'v19+', options.isUsingApplicationBuilder
19
+ ? 'application-builder' +
20
+ (options.serverRouting ? '' : '-common-engine')
21
+ : 'server-builder', 'server');
22
+ }
23
+ else {
24
+ pathToFiles = (0, path_1.join)(baseFilesPath, 'pre-v19', 'server', options.isUsingApplicationBuilder
25
+ ? 'application-builder'
26
+ : 'server-builder');
27
+ }
28
+ const sourceRoot = project.sourceRoot ?? (0, devkit_1.joinPathFragments)(project.root, 'src');
29
+ (0, devkit_1.generateFiles)(tree, pathToFiles, angularMajorVersion >= 19 ? sourceRoot : project.root, {
30
+ ...options,
31
+ browserDistDirectory,
32
+ tpl: '',
33
+ });
20
34
  }
21
35
  function getApplicationBuilderBrowserOutputPath(outputPath) {
22
36
  if (outputPath) {
@@ -1,3 +1,3 @@
1
1
  import type { Tree } from '@nx/devkit';
2
- import type { Schema } from '../schema';
3
- export declare function generateSSRFiles(tree: Tree, schema: Schema, isUsingApplicationBuilder: boolean): void;
2
+ import type { NormalizedGeneratorOptions } from '../schema';
3
+ export declare function generateSSRFiles(tree: Tree, options: NormalizedGeneratorOptions): void;
@@ -2,18 +2,30 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.generateSSRFiles = generateSSRFiles;
4
4
  const devkit_1 = require("@nx/devkit");
5
- function generateSSRFiles(tree, schema, isUsingApplicationBuilder) {
6
- const { root: projectRoot, targets } = (0, devkit_1.readProjectConfiguration)(tree, schema.project);
7
- if (targets.server ||
8
- (isUsingApplicationBuilder && targets.build.options?.server !== undefined)) {
5
+ const path_1 = require("path");
6
+ const version_utils_1 = require("../../utils/version-utils");
7
+ function generateSSRFiles(tree, options) {
8
+ const project = (0, devkit_1.readProjectConfiguration)(tree, options.project);
9
+ if (project.targets.server ||
10
+ (options.isUsingApplicationBuilder &&
11
+ project.targets.build.options?.server !== undefined)) {
9
12
  // server has already been added
10
13
  return;
11
14
  }
12
- const pathToFiles = (0, devkit_1.joinPathFragments)(__dirname, '..', 'files');
13
- if (schema.standalone) {
14
- (0, devkit_1.generateFiles)(tree, (0, devkit_1.joinPathFragments)(pathToFiles, 'standalone'), projectRoot, { ...schema, tpl: '' });
15
+ const { major: angularMajorVersion } = (0, version_utils_1.getInstalledAngularVersionInfo)(tree);
16
+ const baseFilesPath = (0, path_1.join)(__dirname, '..', 'files');
17
+ let pathToFiles;
18
+ if (angularMajorVersion >= 19) {
19
+ pathToFiles = (0, path_1.join)(baseFilesPath, 'v19+', options.isUsingApplicationBuilder
20
+ ? 'application-builder'
21
+ : 'server-builder', options.standalone ? 'standalone-src' : 'ngmodule-src');
15
22
  }
16
23
  else {
17
- (0, devkit_1.generateFiles)(tree, (0, devkit_1.joinPathFragments)(pathToFiles, 'ngmodule'), projectRoot, { ...schema, tpl: '' });
24
+ pathToFiles = (0, path_1.join)(baseFilesPath, 'pre-v19', options.standalone ? 'standalone-src' : 'ngmodule-src');
25
+ }
26
+ const sourceRoot = project.sourceRoot ?? (0, devkit_1.joinPathFragments)(project.root, 'src');
27
+ (0, devkit_1.generateFiles)(tree, pathToFiles, sourceRoot, { ...options, tpl: '' });
28
+ if (angularMajorVersion >= 19 && !options.serverRouting) {
29
+ tree.delete((0, devkit_1.joinPathFragments)(sourceRoot, 'app/app.routes.server.ts'));
18
30
  }
19
31
  }