@nx/angular 22.3.0-canary.20251211-205daee → 22.3.0-canary.20251216-71bfc21

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 (255) hide show
  1. package/executors.json +5 -0
  2. package/migrations.json +206 -289
  3. package/package.json +18 -18
  4. package/src/builders/dev-server/lib/normalize-options.d.ts.map +1 -1
  5. package/src/builders/dev-server/lib/normalize-options.js +1 -3
  6. package/src/builders/dev-server/lib/validate-options.d.ts.map +1 -1
  7. package/src/builders/dev-server/lib/validate-options.js +6 -5
  8. package/src/builders/dev-server/schema.d.ts +1 -0
  9. package/src/builders/dev-server/schema.json +9 -2
  10. package/src/executors/application/application.impl.js +1 -1
  11. package/src/executors/application/schema.json +11 -9
  12. package/src/executors/application/utils/normalize-options.d.ts.map +1 -1
  13. package/src/executors/application/utils/normalize-options.js +1 -27
  14. package/src/executors/application/utils/validate-options.d.ts.map +1 -1
  15. package/src/executors/application/utils/validate-options.js +0 -17
  16. package/src/executors/browser-esbuild/browser-esbuild.impl.js +1 -1
  17. package/src/executors/extract-i18n/extract-i18n.impl.js +1 -1
  18. package/src/executors/unit-test/schema.d.ts +7 -0
  19. package/src/executors/unit-test/schema.json +320 -0
  20. package/src/executors/unit-test/unit-test.impl.d.ts +5 -0
  21. package/src/executors/unit-test/unit-test.impl.d.ts.map +1 -0
  22. package/src/executors/unit-test/unit-test.impl.js +111 -0
  23. package/src/executors/utilities/ng-packagr/stylesheet-processor.d.ts.map +1 -0
  24. package/src/executors/utilities/ng-packagr/stylesheet-processor.di.d.ts.map +1 -1
  25. package/src/executors/utilities/ng-packagr/stylesheet-processor.di.js +2 -6
  26. package/src/executors/utilities/ng-packagr/{v19+/stylesheet-processor.js → stylesheet-processor.js} +2 -2
  27. package/src/generators/application/application.d.ts +1 -1
  28. package/src/generators/application/application.d.ts.map +1 -1
  29. package/src/generators/application/application.js +6 -1
  30. package/src/generators/application/files/base/tsconfig.app.json__tpl__ +2 -4
  31. package/src/generators/application/files/ng-module/src/app/app__componentFileSuffix__.spec.ts__tpl__ +2 -2
  32. package/src/generators/application/files/ng-module/src/app/app__componentFileSuffix__.ts__tpl__ +2 -2
  33. package/src/generators/application/files/ng-module/src/main.ts__tpl__ +1 -3
  34. package/src/generators/application/files/nx-welcome/claimed/ng-module/src/app/nx-welcome__componentFileSuffix__.ts__tpl__ +2 -2
  35. package/src/generators/application/files/nx-welcome/claimed/standalone/src/app/nx-welcome__componentFileSuffix__.ts__tpl__ +1 -2
  36. package/src/generators/application/files/nx-welcome/not-configured/ng-module/src/app/nx-welcome__componentFileSuffix__.ts__tpl__ +2 -2
  37. package/src/generators/application/files/nx-welcome/not-configured/standalone/src/app/nx-welcome__componentFileSuffix__.ts__tpl__ +1 -2
  38. package/src/generators/application/files/nx-welcome/unclaimed/ng-module/src/app/nx-welcome__componentFileSuffix__.ts__tpl__ +2 -2
  39. package/src/generators/application/files/nx-welcome/unclaimed/standalone/src/app/nx-welcome__componentFileSuffix__.ts__tpl__ +1 -2
  40. package/src/generators/application/files/rspack-ssr/server.ts__tmpl__ +6 -0
  41. package/src/generators/application/files/standalone-components/src/app/app.config.ts__tpl__ +3 -3
  42. package/src/generators/application/files/standalone-components/src/app/app__componentFileSuffix__.spec.ts__tpl__ +2 -2
  43. package/src/generators/application/files/standalone-components/src/app/app__componentFileSuffix__.ts__tpl__ +1 -2
  44. package/src/generators/application/lib/add-unit-test-runner.d.ts +1 -1
  45. package/src/generators/application/lib/add-unit-test-runner.d.ts.map +1 -1
  46. package/src/generators/application/lib/add-unit-test-runner.js +13 -2
  47. package/src/generators/application/lib/create-files.d.ts.map +1 -1
  48. package/src/generators/application/lib/create-files.js +1 -3
  49. package/src/generators/application/lib/create-project.js +12 -10
  50. package/src/generators/application/lib/enable-strict-type-checking.js +1 -1
  51. package/src/generators/application/lib/index.d.ts +2 -1
  52. package/src/generators/application/lib/index.d.ts.map +1 -1
  53. package/src/generators/application/lib/index.js +2 -1
  54. package/src/generators/application/lib/normalize-options.d.ts.map +1 -1
  55. package/src/generators/application/lib/normalize-options.js +12 -2
  56. package/src/generators/application/lib/update-tsconfig-files.d.ts.map +1 -1
  57. package/src/generators/application/lib/update-tsconfig-files.js +6 -17
  58. package/src/generators/application/lib/validate-options.d.ts +4 -0
  59. package/src/generators/application/lib/validate-options.d.ts.map +1 -0
  60. package/src/generators/application/lib/validate-options.js +26 -0
  61. package/src/generators/application/schema.d.ts +1 -0
  62. package/src/generators/application/schema.json +7 -4
  63. package/src/generators/component/component.d.ts.map +1 -1
  64. package/src/generators/component/component.js +4 -3
  65. package/src/generators/component/files/__fileName__.spec.ts__tpl__ +1 -1
  66. package/src/generators/component/files/__fileName__.ts__tpl__ +1 -1
  67. package/src/generators/component-test/component-test.d.ts +3 -3
  68. package/src/generators/component-test/component-test.d.ts.map +1 -1
  69. package/src/generators/component-test/component-test.js +9 -0
  70. package/src/generators/component-test/schema.d.ts +1 -0
  71. package/src/generators/component-test/schema.json +6 -0
  72. package/src/generators/convert-to-rspack/convert-to-rspack.d.ts.map +1 -1
  73. package/src/generators/convert-to-rspack/convert-to-rspack.js +1 -4
  74. package/src/generators/cypress-component-configuration/cypress-component-configuration.d.ts.map +1 -1
  75. package/src/generators/cypress-component-configuration/cypress-component-configuration.js +80 -33
  76. package/src/generators/cypress-component-configuration/schema.d.ts +1 -0
  77. package/src/generators/cypress-component-configuration/schema.json +6 -0
  78. package/src/generators/directive/directive.d.ts.map +1 -1
  79. package/src/generators/directive/directive.js +0 -3
  80. package/src/generators/directive/files/__fileName__.ts__tpl__ +1 -1
  81. package/src/generators/federate-module/federate-module.d.ts +1 -1
  82. package/src/generators/federate-module/federate-module.d.ts.map +1 -1
  83. package/src/generators/federate-module/federate-module.js +8 -0
  84. package/src/generators/federate-module/lib/add-remote.js +1 -1
  85. package/src/generators/federate-module/schema.d.ts +2 -2
  86. package/src/generators/federate-module/schema.json +3 -4
  87. package/src/generators/host/files/common/src/main.server.ts__tmpl__ +8 -1
  88. package/src/generators/host/host.d.ts.map +1 -1
  89. package/src/generators/host/host.js +5 -1
  90. package/src/generators/host/lib/index.d.ts +1 -0
  91. package/src/generators/host/lib/index.d.ts.map +1 -1
  92. package/src/generators/host/lib/index.js +1 -0
  93. package/src/generators/host/lib/update-ssr-setup.d.ts.map +1 -1
  94. package/src/generators/host/lib/update-ssr-setup.js +6 -4
  95. package/src/generators/host/lib/validate-options.d.ts +4 -0
  96. package/src/generators/host/lib/validate-options.d.ts.map +1 -0
  97. package/src/generators/host/lib/validate-options.js +12 -0
  98. package/src/generators/host/schema.d.ts +2 -2
  99. package/src/generators/host/schema.json +5 -6
  100. package/src/generators/library/files/base/tsconfig.lib.json__tpl__ +3 -5
  101. package/src/generators/library/lib/normalize-options.d.ts.map +1 -1
  102. package/src/generators/library/lib/normalize-options.js +10 -3
  103. package/src/generators/library/lib/update-tsconfig-files.d.ts.map +1 -1
  104. package/src/generators/library/lib/update-tsconfig-files.js +15 -6
  105. package/src/generators/library/lib/validate-options.d.ts +4 -0
  106. package/src/generators/library/lib/validate-options.d.ts.map +1 -0
  107. package/src/generators/library/lib/validate-options.js +27 -0
  108. package/src/generators/library/library.d.ts.map +1 -1
  109. package/src/generators/library/library.js +20 -13
  110. package/src/generators/library/schema.json +3 -4
  111. package/src/generators/ng-add/migrators/builders/angular-build-unit-test.migrator.d.ts +16 -0
  112. package/src/generators/ng-add/migrators/builders/angular-build-unit-test.migrator.d.ts.map +1 -0
  113. package/src/generators/ng-add/migrators/builders/angular-build-unit-test.migrator.js +161 -0
  114. package/src/generators/ng-add/migrators/builders/index.d.ts +1 -0
  115. package/src/generators/ng-add/migrators/builders/index.d.ts.map +1 -1
  116. package/src/generators/ng-add/migrators/builders/index.js +1 -0
  117. package/src/generators/ng-add/migrators/projects/app.migrator.d.ts.map +1 -1
  118. package/src/generators/ng-add/migrators/projects/app.migrator.js +1 -0
  119. package/src/generators/ng-add/migrators/projects/lib.migrator.d.ts.map +1 -1
  120. package/src/generators/ng-add/migrators/projects/lib.migrator.js +1 -0
  121. package/src/generators/pipe/files/__fileName__.ts__tpl__ +1 -1
  122. package/src/generators/pipe/pipe.d.ts.map +1 -1
  123. package/src/generators/pipe/pipe.js +0 -5
  124. package/src/generators/remote/files/common/src/main.server.ts__tmpl__ +8 -1
  125. package/src/generators/remote/lib/index.d.ts +1 -0
  126. package/src/generators/remote/lib/index.d.ts.map +1 -1
  127. package/src/generators/remote/lib/index.js +1 -0
  128. package/src/generators/remote/lib/update-ssr-setup.d.ts +2 -1
  129. package/src/generators/remote/lib/update-ssr-setup.d.ts.map +1 -1
  130. package/src/generators/remote/lib/update-ssr-setup.js +7 -7
  131. package/src/generators/remote/lib/validate-options.d.ts +4 -0
  132. package/src/generators/remote/lib/validate-options.d.ts.map +1 -0
  133. package/src/generators/remote/lib/validate-options.js +12 -0
  134. package/src/generators/remote/remote.d.ts.map +1 -1
  135. package/src/generators/remote/remote.js +6 -1
  136. package/src/generators/remote/schema.d.ts +2 -2
  137. package/src/generators/remote/schema.json +5 -6
  138. package/src/generators/scam-to-standalone/lib/convert-scam-to-standalone.js +1 -1
  139. package/src/generators/setup-mf/files/entry-module-files/entry__componentFileSuffix__.ts__tmpl__ +2 -2
  140. package/src/generators/setup-mf/files/host-files/__appFileName__.spec.ts__tmpl__ +5 -6
  141. package/src/generators/setup-mf/files/standalone-entry-component-files/entry__componentFileSuffix__.ts__tmpl__ +1 -2
  142. package/src/generators/setup-mf/lib/add-remote-entry.d.ts.map +1 -1
  143. package/src/generators/setup-mf/lib/add-remote-entry.js +0 -5
  144. package/src/generators/setup-mf/lib/update-host-app-routes.d.ts.map +1 -1
  145. package/src/generators/setup-mf/lib/update-host-app-routes.js +9 -6
  146. package/src/generators/setup-ssr/files/v20+/application-builder/server/__serverFileName__ +2 -2
  147. package/src/generators/setup-ssr/files/v20+/server-builder/server/__serverFileName__ +6 -0
  148. package/src/generators/setup-ssr/lib/add-hydration.d.ts.map +1 -1
  149. package/src/generators/setup-ssr/lib/add-hydration.js +2 -8
  150. package/src/generators/setup-ssr/lib/add-server-file.d.ts.map +1 -1
  151. package/src/generators/setup-ssr/lib/add-server-file.js +7 -7
  152. package/src/generators/setup-ssr/lib/generate-files.d.ts.map +1 -1
  153. package/src/generators/setup-ssr/lib/generate-files.js +2 -7
  154. package/src/generators/setup-ssr/lib/generate-server-ts-config.d.ts.map +1 -1
  155. package/src/generators/setup-ssr/lib/generate-server-ts-config.js +26 -12
  156. package/src/generators/setup-ssr/lib/normalize-options.d.ts.map +1 -1
  157. package/src/generators/setup-ssr/lib/normalize-options.js +1 -5
  158. package/src/generators/setup-ssr/lib/update-project-config.d.ts.map +1 -1
  159. package/src/generators/setup-ssr/lib/update-project-config.js +6 -17
  160. package/src/generators/setup-ssr/lib/validate-options.d.ts.map +1 -1
  161. package/src/generators/setup-ssr/lib/validate-options.js +9 -0
  162. package/src/generators/utils/add-jest.d.ts +2 -0
  163. package/src/generators/utils/add-jest.d.ts.map +1 -1
  164. package/src/generators/utils/add-jest.js +41 -11
  165. package/src/generators/utils/add-vitest.d.ts +11 -2
  166. package/src/generators/utils/add-vitest.d.ts.map +1 -1
  167. package/src/generators/utils/add-vitest.js +173 -6
  168. package/src/generators/utils/assert-mf-utils.d.ts +1 -1
  169. package/src/generators/utils/assert-mf-utils.d.ts.map +1 -1
  170. package/src/generators/utils/assert-mf-utils.js +1 -4
  171. package/src/generators/utils/ensure-angular-dependencies.d.ts +1 -1
  172. package/src/generators/utils/ensure-angular-dependencies.d.ts.map +1 -1
  173. package/src/generators/utils/ensure-angular-dependencies.js +6 -4
  174. package/src/generators/utils/storybook-ast/component-info.js +2 -10
  175. package/src/generators/utils/tsconfig-utils.d.ts +13 -0
  176. package/src/generators/utils/tsconfig-utils.d.ts.map +1 -0
  177. package/src/generators/utils/tsconfig-utils.js +29 -0
  178. package/src/generators/utils/version-utils.d.ts +13 -3
  179. package/src/generators/utils/version-utils.d.ts.map +1 -1
  180. package/src/generators/utils/version-utils.js +11 -18
  181. package/src/migrations/update-21-2-0/update-module-resolution.d.ts.map +1 -1
  182. package/src/migrations/update-21-2-0/update-module-resolution.js +17 -4
  183. package/src/migrations/update-22-3-0/set-isolated-modules.d.ts +3 -0
  184. package/src/migrations/update-22-3-0/set-isolated-modules.d.ts.map +1 -0
  185. package/src/migrations/update-22-3-0/set-isolated-modules.js +52 -0
  186. package/src/migrations/update-22-3-0/update-angular-cli.d.ts +4 -0
  187. package/src/migrations/update-22-3-0/update-angular-cli.d.ts.map +1 -0
  188. package/src/migrations/{update-16-4-0 → update-22-3-0}/update-angular-cli.js +1 -1
  189. package/src/migrations/update-22-3-0/update-module-resolution.d.ts +3 -0
  190. package/src/migrations/update-22-3-0/update-module-resolution.d.ts.map +1 -0
  191. package/src/migrations/update-22-3-0/update-module-resolution.js +61 -0
  192. package/src/migrations/update-22-3-0/update-ssr-webpack-config.d.ts +3 -0
  193. package/src/migrations/update-22-3-0/update-ssr-webpack-config.d.ts.map +1 -0
  194. package/src/migrations/update-22-3-0/update-ssr-webpack-config.js +111 -0
  195. package/src/migrations/update-22-3-0/update-typescript-lib.d.ts +3 -0
  196. package/src/migrations/update-22-3-0/update-typescript-lib.d.ts.map +1 -0
  197. package/src/migrations/update-22-3-0/update-typescript-lib.js +98 -0
  198. package/src/migrations/update-22-3-0/update-unit-test-runner-option.d.ts +3 -0
  199. package/src/migrations/update-22-3-0/update-unit-test-runner-option.d.ts.map +1 -0
  200. package/src/migrations/update-22-3-0/update-unit-test-runner-option.js +44 -0
  201. package/src/plugins/plugin.d.ts.map +1 -1
  202. package/src/plugins/plugin.js +40 -24
  203. package/src/utils/backward-compatible-versions.d.ts +7 -9
  204. package/src/utils/backward-compatible-versions.d.ts.map +1 -1
  205. package/src/utils/backward-compatible-versions.js +20 -14
  206. package/src/utils/nx-devkit/ast-utils.d.ts.map +1 -1
  207. package/src/utils/nx-devkit/ast-utils.js +2 -13
  208. package/src/utils/targets.d.ts +6 -1
  209. package/src/utils/targets.d.ts.map +1 -1
  210. package/src/utils/targets.js +20 -3
  211. package/src/utils/test-runners.d.ts +2 -1
  212. package/src/utils/test-runners.d.ts.map +1 -1
  213. package/src/utils/test-runners.js +2 -1
  214. package/src/utils/version-utils.d.ts +2 -2
  215. package/src/utils/version-utils.d.ts.map +1 -1
  216. package/src/utils/version-utils.js +3 -2
  217. package/src/utils/versions.d.ts +7 -6
  218. package/src/utils/versions.d.ts.map +1 -1
  219. package/src/utils/versions.js +8 -7
  220. package/src/utils/zoneless.d.ts +3 -0
  221. package/src/utils/zoneless.d.ts.map +1 -0
  222. package/src/utils/zoneless.js +28 -0
  223. package/{mf/index.d.ts → types/nx-angular-mf.d.ts} +1 -1
  224. package/types/nx-angular-mf.d.ts.map +1 -0
  225. package/types/nx-angular.d.ts +3 -0
  226. package/types/nx-angular.d.ts.map +1 -0
  227. package/index.d.ts +0 -3
  228. package/index.d.ts.map +0 -1
  229. package/mf/index.d.ts.map +0 -1
  230. package/src/executors/utilities/ng-packagr/pre-v19/stylesheet-processor.d.ts +0 -28
  231. package/src/executors/utilities/ng-packagr/pre-v19/stylesheet-processor.d.ts.map +0 -1
  232. package/src/executors/utilities/ng-packagr/pre-v19/stylesheet-processor.js +0 -159
  233. package/src/executors/utilities/ng-packagr/v19+/stylesheet-processor.d.ts.map +0 -1
  234. package/src/generators/setup-ssr/files/pre-v19/ngmodule-src/__main__ +0 -1
  235. package/src/generators/setup-ssr/files/pre-v19/ngmodule-src/app/__rootModuleFileName__ +0 -14
  236. package/src/generators/setup-ssr/files/pre-v19/root/tsconfig.server.json__tpl__ +0 -15
  237. package/src/generators/setup-ssr/files/pre-v19/server/application-builder/__serverFileName__ +0 -57
  238. package/src/generators/setup-ssr/files/pre-v19/server/server-builder/__serverFileName__ +0 -72
  239. package/src/generators/setup-ssr/files/pre-v19/standalone-src/__main__ +0 -12
  240. package/src/generators/setup-ssr/files/pre-v19/standalone-src/app/app.config.server.ts__tpl__ +0 -11
  241. package/src/migrations/update-16-2-0/switch-data-persistence-operators-imports-to-ngrx-router-store.d.ts +0 -3
  242. package/src/migrations/update-16-2-0/switch-data-persistence-operators-imports-to-ngrx-router-store.d.ts.map +0 -1
  243. package/src/migrations/update-16-2-0/switch-data-persistence-operators-imports-to-ngrx-router-store.js +0 -122
  244. package/src/migrations/update-16-4-0/rename-angular-eslint-accesibility-rules.d.ts +0 -3
  245. package/src/migrations/update-16-4-0/rename-angular-eslint-accesibility-rules.d.ts.map +0 -1
  246. package/src/migrations/update-16-4-0/rename-angular-eslint-accesibility-rules.js +0 -34
  247. package/src/migrations/update-16-4-0/update-angular-cli.d.ts +0 -4
  248. package/src/migrations/update-16-4-0/update-angular-cli.d.ts.map +0 -1
  249. package/src/migrations/update-16-6-0/explicitly-set-projects-to-update-buildable-deps.d.ts +0 -3
  250. package/src/migrations/update-16-6-0/explicitly-set-projects-to-update-buildable-deps.d.ts.map +0 -1
  251. package/src/migrations/update-16-6-0/explicitly-set-projects-to-update-buildable-deps.js +0 -34
  252. package/src/migrations/update-16-7-0/update-angular-cli.d.ts +0 -4
  253. package/src/migrations/update-16-7-0/update-angular-cli.d.ts.map +0 -1
  254. package/src/migrations/update-16-7-0/update-angular-cli.js +0 -14
  255. /package/src/executors/utilities/ng-packagr/{v19+/stylesheet-processor.d.ts → stylesheet-processor.d.ts} +0 -0
@@ -3,20 +3,15 @@ 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");
7
6
  const lib_1 = require("./lib");
8
7
  async function pipeGenerator(tree, rawOptions) {
9
8
  const options = await (0, lib_1.normalizeOptions)(tree, rawOptions);
10
- const { major: angularMajorVersion } = (0, version_utils_1.getInstalledAngularVersionInfo)(tree);
11
9
  const pipeNames = (0, devkit_1.names)(options.name);
12
10
  (0, devkit_1.generateFiles)(tree, (0, devkit_1.joinPathFragments)(__dirname, 'files'), options.directory, {
13
11
  symbolName: options.symbolName,
14
12
  fileName: options.fileName,
15
13
  selector: pipeNames.propertyName,
16
14
  standalone: options.standalone,
17
- // Angular v19 or higher defaults to true, while lower versions default to false
18
- setStandalone: (angularMajorVersion >= 19 && !options.standalone) ||
19
- (angularMajorVersion < 19 && options.standalone),
20
15
  tpl: '',
21
16
  });
22
17
  if (options.skipTests) {
@@ -1,9 +1,16 @@
1
+ <%_ if (!zoneless && angularMajorVersion < 21) { _%>
1
2
  import 'zone.js/node';
2
3
 
4
+ <%_ } _%>
3
5
  import { APP_BASE_HREF } from '@angular/common';
4
- import { CommonEngine } from '<%= commonEngineEntryPoint %>';
6
+ import { CommonEngine } from '@angular/ssr/node';
7
+ <%_ if (useDefaultImport) { _%>
8
+ import express from 'express';
9
+ import cors from 'cors';
10
+ <%_ } else { _%>
5
11
  import * as express from 'express';
6
12
  import * as cors from 'cors';
13
+ <%_ } _%>
7
14
  import { existsSync } from 'node:fs';
8
15
  import { join } from 'node:path';
9
16
  import<% if(standalone) { %> bootstrap <% } else { %> { AppServerModule } <% } %>from './bootstrap.server';
@@ -1,3 +1,4 @@
1
1
  export * from './find-next-available-port';
2
2
  export * from './update-ssr-setup';
3
+ export * from './validate-options';
3
4
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../../packages/angular/src/generators/remote/lib/index.ts"],"names":[],"mappings":"AAAA,cAAc,4BAA4B,CAAC;AAC3C,cAAc,oBAAoB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../../packages/angular/src/generators/remote/lib/index.ts"],"names":[],"mappings":"AAAA,cAAc,4BAA4B,CAAC;AAC3C,cAAc,oBAAoB,CAAC;AACnC,cAAc,oBAAoB,CAAC"}
@@ -3,3 +3,4 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  const tslib_1 = require("tslib");
4
4
  tslib_1.__exportStar(require("./find-next-available-port"), exports);
5
5
  tslib_1.__exportStar(require("./update-ssr-setup"), exports);
6
+ tslib_1.__exportStar(require("./validate-options"), exports);
@@ -1,9 +1,10 @@
1
1
  import type { Tree } from '@nx/devkit';
2
- export declare function updateSsrSetup(tree: Tree, { appName, port, standalone, typescriptConfiguration, skipPackageJson, }: {
2
+ export declare function updateSsrSetup(tree: Tree, { appName, port, standalone, typescriptConfiguration, zoneless, skipPackageJson, }: {
3
3
  appName: string;
4
4
  port: number;
5
5
  standalone: boolean;
6
6
  typescriptConfiguration: boolean;
7
+ zoneless: boolean;
7
8
  skipPackageJson?: boolean;
8
9
  }): Promise<import("@nx/devkit").GeneratorCallback>;
9
10
  //# sourceMappingURL=update-ssr-setup.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"update-ssr-setup.d.ts","sourceRoot":"","sources":["../../../../../../../packages/angular/src/generators/remote/lib/update-ssr-setup.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAoBvC,wBAAsB,cAAc,CAClC,IAAI,EAAE,IAAI,EACV,EACE,OAAO,EACP,IAAI,EACJ,UAAU,EACV,uBAAuB,EACvB,eAAe,GAChB,EAAE;IACD,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,OAAO,CAAC;IACpB,uBAAuB,EAAE,OAAO,CAAC;IACjC,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B,mDA6HF"}
1
+ {"version":3,"file":"update-ssr-setup.d.ts","sourceRoot":"","sources":["../../../../../../../packages/angular/src/generators/remote/lib/update-ssr-setup.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAoBvC,wBAAsB,cAAc,CAClC,IAAI,EAAE,IAAI,EACV,EACE,OAAO,EACP,IAAI,EACJ,UAAU,EACV,uBAAuB,EACvB,QAAQ,EACR,eAAe,GAChB,EAAE;IACD,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,OAAO,CAAC;IACpB,uBAAuB,EAAE,OAAO,CAAC;IACjC,QAAQ,EAAE,OAAO,CAAC;IAClB,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B,mDAsHF"}
@@ -8,13 +8,13 @@ const semver_1 = require("semver");
8
8
  const versions_1 = require("../../../utils/versions");
9
9
  const artifact_types_1 = require("../../utils/artifact-types");
10
10
  const version_utils_1 = require("../../utils/version-utils");
11
- async function updateSsrSetup(tree, { appName, port, standalone, typescriptConfiguration, skipPackageJson, }) {
11
+ async function updateSsrSetup(tree, { appName, port, standalone, typescriptConfiguration, zoneless, skipPackageJson, }) {
12
12
  const { major: angularMajorVersion, version: angularVersion } = (0, version_utils_1.getInstalledAngularVersionInfo)(tree);
13
13
  let project = (0, devkit_1.readProjectConfiguration)(tree, appName);
14
14
  const sourceRoot = (0, ts_solution_setup_1.getProjectSourceRoot)(project, tree);
15
15
  tree.rename((0, devkit_1.joinPathFragments)(sourceRoot, 'main.server.ts'), (0, devkit_1.joinPathFragments)(sourceRoot, 'bootstrap.server.ts'));
16
- const pathToServerEntry = (0, devkit_1.joinPathFragments)(angularMajorVersion >= 19 ? sourceRoot : project.root, 'server.ts');
17
- tree.write(pathToServerEntry, `import('./${angularMajorVersion >= 19 ? '' : 'src/'}main.server');`);
16
+ const pathToServerEntry = (0, devkit_1.joinPathFragments)(sourceRoot, 'server.ts');
17
+ tree.write(pathToServerEntry, `import('./main.server');`);
18
18
  const browserBundleOutput = project.targets.build.options.outputPath;
19
19
  const serverBundleOutput = project.targets.build.options.outputPath.replace(/\/browser$/, '/server');
20
20
  (0, devkit_1.generateFiles)(tree, (0, path_1.join)(__dirname, '../files/common'), project.root, {
@@ -22,7 +22,9 @@ async function updateSsrSetup(tree, { appName, port, standalone, typescriptConfi
22
22
  browserBundleOutput,
23
23
  serverBundleOutput,
24
24
  standalone,
25
- commonEngineEntryPoint: angularMajorVersion >= 19 ? '@angular/ssr/node' : '@angular/ssr',
25
+ zoneless,
26
+ useDefaultImport: angularMajorVersion >= 21,
27
+ angularMajorVersion,
26
28
  tmpl: '',
27
29
  });
28
30
  const pathToTemplateFiles = typescriptConfiguration ? 'base-ts' : 'base';
@@ -36,9 +38,7 @@ async function updateSsrSetup(tree, { appName, port, standalone, typescriptConfi
36
38
  // https://github.com/angular/angular-cli/releases/tag/20.3.0
37
39
  (0, semver_1.gte)(angularVersion, '20.3.0') ||
38
40
  // https://github.com/angular/angular-cli/releases/tag/19.2.16
39
- (angularMajorVersion === 19 && (0, semver_1.gte)(angularVersion, '19.2.16')) ||
40
- // https://github.com/angular/angular-cli/releases/tag/18.2.21
41
- (angularMajorVersion === 18 && (0, semver_1.gte)(angularVersion, '18.2.21'));
41
+ (angularMajorVersion === 19 && (0, semver_1.gte)(angularVersion, '19.2.16'));
42
42
  (0, devkit_1.generateFiles)(tree, (0, devkit_1.joinPathFragments)(__dirname, '../files/standalone'), project.root, {
43
43
  appName,
44
44
  standalone,
@@ -0,0 +1,4 @@
1
+ import type { Tree } from '@nx/devkit';
2
+ import type { Schema } from '../schema';
3
+ export declare function validateOptions(tree: Tree, options: Schema): void;
4
+ //# sourceMappingURL=validate-options.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validate-options.d.ts","sourceRoot":"","sources":["../../../../../../../packages/angular/src/generators/remote/lib/validate-options.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAEvC,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AAExC,wBAAgB,eAAe,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,QAW1D"}
@@ -0,0 +1,12 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.validateOptions = validateOptions;
4
+ const version_utils_1 = require("../../utils/version-utils");
5
+ function validateOptions(tree, options) {
6
+ const { major: angularMajorVersion, version: angularVersion } = (0, version_utils_1.getInstalledAngularVersionInfo)(tree);
7
+ if (angularMajorVersion < 21) {
8
+ if (options.zoneless) {
9
+ throw new Error(`The "zoneless" option is only supported for Angular versions >= 21.0.0. You are using Angular ${angularVersion}.`);
10
+ }
11
+ }
12
+ }
@@ -1 +1 @@
1
- {"version":3,"file":"remote.d.ts","sourceRoot":"","sources":["../../../../../../packages/angular/src/generators/remote/remote.ts"],"names":[],"mappings":"AAAA,OAAO,EAOL,IAAI,EAEL,MAAM,YAAY,CAAC;AAcpB,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAEvC,wBAAsB,MAAM,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,mDAqHtD;AAED,eAAe,MAAM,CAAC"}
1
+ {"version":3,"file":"remote.d.ts","sourceRoot":"","sources":["../../../../../../packages/angular/src/generators/remote/remote.ts"],"names":[],"mappings":"AAAA,OAAO,EAOL,IAAI,EAEL,MAAM,YAAY,CAAC;AAepB,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAEvC,wBAAsB,MAAM,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,mDAqHtD;AAED,eAAe,MAAM,CAAC"}
@@ -12,13 +12,17 @@ const setup_mf_1 = require("../setup-mf/setup-mf");
12
12
  const add_mf_env_to_inputs_1 = require("../utils/add-mf-env-to-inputs");
13
13
  const assert_mf_utils_1 = require("../utils/assert-mf-utils");
14
14
  const validations_1 = require("../utils/validations");
15
+ const version_utils_1 = require("../utils/version-utils");
15
16
  const lib_1 = require("./lib");
16
17
  async function remote(tree, schema) {
17
18
  (0, validations_1.assertNotUsingTsSolutionSetup)(tree, 'remote');
19
+ (0, lib_1.validateOptions)(tree, schema);
18
20
  // TODO: Replace with Rspack when confidence is high enough
19
21
  schema.bundler ??= 'webpack';
20
22
  const isRspack = schema.bundler === 'rspack';
21
- (0, assert_mf_utils_1.assertRspackIsCSR)(schema.bundler, schema.ssr ?? false, schema.serverRouting ?? false);
23
+ (0, assert_mf_utils_1.assertRspackIsCSR)(schema.bundler, schema.ssr ?? false);
24
+ const { major: angularMajorVersion } = (0, version_utils_1.getInstalledAngularVersionInfo)(tree);
25
+ schema.zoneless ??= angularMajorVersion >= 21 ? true : false;
22
26
  const { typescriptConfiguration = true, ...options } = schema;
23
27
  options.standalone = options.standalone ?? true;
24
28
  const projects = (0, devkit_1.getProjects)(tree);
@@ -78,6 +82,7 @@ async function remote(tree, schema) {
78
82
  typescriptConfiguration,
79
83
  standalone: options.standalone,
80
84
  skipPackageJson: options.skipPackageJson,
85
+ zoneless: options.zoneless,
81
86
  });
82
87
  installTasks.push(ssrInstallTask);
83
88
  }
@@ -16,7 +16,7 @@ export interface Schema {
16
16
  skipTests?: boolean;
17
17
  tags?: string;
18
18
  linter?: Linter | LinterType;
19
- unitTestRunner?: UnitTestRunner;
19
+ unitTestRunner?: Exclude<UnitTestRunner, UnitTestRunner.VitestAngular>;
20
20
  e2eTestRunner?: E2eTestRunner;
21
21
  backendProject?: string;
22
22
  strict?: boolean;
@@ -26,6 +26,6 @@ export interface Schema {
26
26
  skipFormat?: boolean;
27
27
  standalone?: boolean;
28
28
  ssr?: boolean;
29
- serverRouting?: boolean;
29
+ zoneless?: boolean;
30
30
  typescriptConfiguration?: boolean;
31
31
  }
@@ -113,10 +113,9 @@
113
113
  },
114
114
  "unitTestRunner": {
115
115
  "type": "string",
116
- "enum": ["jest", "vitest", "none"],
117
- "description": "Test runner to use for unit tests.",
118
- "x-prompt": "Which unit test runner would you like to use?",
119
- "default": "jest"
116
+ "enum": ["vitest-analog", "jest", "none"],
117
+ "description": "Test runner to use for unit tests. `vitest-analog` uses AnalogJS-based setup with `@nx/vitest`. It defaults to `vitest-analog` for Angular versions >= 21.0.0, otherwise `jest`.",
118
+ "x-prompt": "Which unit test runner would you like to use?"
120
119
  },
121
120
  "e2eTestRunner": {
122
121
  "type": "string",
@@ -170,8 +169,8 @@
170
169
  "type": "boolean",
171
170
  "default": false
172
171
  },
173
- "serverRouting": {
174
- "description": "Creates a server application using the Server Routing and App Engine APIs for application using the `application` builder (Developer Preview). _Note: this is only supported in Angular versions 19.x.x_. From Angular 20 onwards, SSR will always enable server routing when using the `application` builder.",
172
+ "zoneless": {
173
+ "description": "Generate an application that does not use `zone.js`. It defaults to `true`. _Note: this is only supported in Angular versions >= 21.0.0_",
175
174
  "type": "boolean"
176
175
  },
177
176
  "typescriptConfiguration": {
@@ -10,7 +10,7 @@ function convertScamToStandalone(componentAST, componentFileContents, importsArr
10
10
  const { tsquery } = require('@phenomnomnominal/tsquery');
11
11
  const componentDecoratorMetadataNode = tsquery(componentAST, COMPONENT_PROPERTY_SELECTOR, { visitAllChildren: true })[0];
12
12
  const { major: angularMajorVersion } = (0, version_utils_1.getInstalledAngularVersionInfo)(tree);
13
- newComponentContents = `${componentFileContents.slice(0, componentDecoratorMetadataNode.getStart() - 1)}({${angularMajorVersion < 19 ? `\nstandalone: true,` : ''}
13
+ newComponentContents = `${componentFileContents.slice(0, componentDecoratorMetadataNode.getStart() - 1)}({
14
14
  imports: [${importsArray.join(',')}],${providersArray.length > 0 ? `providers: [${providersArray.join(',')}],` : ''}${componentFileContents.slice(componentDecoratorMetadataNode.getStart() + 1, moduleNodes[0].getStart() - 1)}`;
15
15
  tree.write(normalizedComponentPath, newComponentContents);
16
16
  const componentPathParts = (0, path_1.parse)(normalizedComponentPath);
@@ -1,8 +1,8 @@
1
1
  import { Component } from '@angular/core';
2
2
 
3
3
  @Component({<% if (prefix) { %>
4
- selector: '<%= prefix %>-<%= appName %>-entry',<% if (setStandaloneFalse) { %>
5
- standalone: false,<% } %>
4
+ selector: '<%= prefix %>-<%= appName %>-entry',
5
+ standalone: false,
6
6
  template: `<<%= prefix %>-nx-welcome></<%= prefix %>-nx-welcome>`<% } else { %>
7
7
  selector: '<%= appName %>-entry',
8
8
  template: `<nx-welcome></nx-welcome>`<% } %>
@@ -1,4 +1,4 @@
1
- import { fakeAsync, TestBed, tick } from '@angular/core/testing';
1
+ import { TestBed } from '@angular/core/testing';
2
2
  import { <%= appSymbolName %> } from './<%= appFileName %>';
3
3
  import { <%= nxWelcomeSymbolName %> } from './<%= nxWelcomeFileName %>';
4
4
  import { Router, RouterModule } from '@angular/router';
@@ -29,15 +29,14 @@ describe('<%= appSymbolName %>', () => {
29
29
  expect(app.title).toEqual('<%= appName %>');
30
30
  });
31
31
 
32
- it('should render title', fakeAsync(() => {
32
+ it('should render title', async () => {
33
33
  const fixture = TestBed.createComponent(<%= appSymbolName %>);
34
34
  const router = TestBed.inject(Router);
35
- fixture.ngZone?.run(() => router.navigate(['']));
36
- tick();
37
- fixture.detectChanges();
35
+ await router.navigate(['']);
36
+ <%= zoneless ? 'await fixture.whenStable();' : 'fixture.detectChanges();' %>
38
37
  const compiled = fixture.nativeElement as HTMLElement;
39
38
  expect(compiled.querySelector('h1')?.textContent).toContain(
40
39
  'Welcome <%= appName %>'
41
40
  );
42
- }));
41
+ });
43
42
  });
@@ -1,8 +1,7 @@
1
1
  import { Component } from '@angular/core';
2
2
  import { <%= nxWelcomeSymbolName %> } from './<%= nxWelcomeFileName %>';
3
3
 
4
- @Component({<% if (setStandaloneTrue) { %>
5
- standalone: true,<% } %>
4
+ @Component({
6
5
  imports: [<%= nxWelcomeSymbolName %>],<% if (prefix) { %>
7
6
  selector: '<%= prefix %>-<%= appName %>-entry',
8
7
  template: `<<%= prefix %>-nx-welcome></<%= prefix %>-nx-welcome>`<% } else { %>
@@ -1 +1 @@
1
- {"version":3,"file":"add-remote-entry.d.ts","sourceRoot":"","sources":["../../../../../../../packages/angular/src/generators/setup-mf/lib/add-remote-entry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAIvC,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAEnD,wBAAgB,cAAc,CAC5B,IAAI,EAAE,IAAI,EACV,OAAO,EAAE,iBAAiB,EAC1B,OAAO,EAAE,MAAM,QAoDhB"}
1
+ {"version":3,"file":"add-remote-entry.d.ts","sourceRoot":"","sources":["../../../../../../../packages/angular/src/generators/setup-mf/lib/add-remote-entry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAGvC,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAEnD,wBAAgB,cAAc,CAC5B,IAAI,EAAE,IAAI,EACV,OAAO,EAAE,iBAAiB,EAC1B,OAAO,EAAE,MAAM,QAgDhB"}
@@ -3,9 +3,7 @@ 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");
7
6
  function addRemoteEntry(tree, options, appRoot) {
8
- const { major: angularMajorVersion } = (0, version_utils_1.getInstalledAngularVersionInfo)(tree);
9
7
  const { appName, routing, prefix, standalone, componentType, componentFileSuffix, nxWelcomeComponentInfo, entryModuleFileName, } = options;
10
8
  (0, devkit_1.generateFiles)(tree, standalone
11
9
  ? (0, devkit_1.joinPathFragments)(__dirname, '../files/standalone-entry-component-files')
@@ -14,9 +12,6 @@ function addRemoteEntry(tree, options, appRoot) {
14
12
  appName,
15
13
  routing,
16
14
  prefix,
17
- // Angular v19 or higher defaults to true, while lower versions default to false
18
- setStandaloneFalse: angularMajorVersion >= 19,
19
- setStandaloneTrue: angularMajorVersion < 19,
20
15
  componentType,
21
16
  componentFileSuffix,
22
17
  entryModuleFileName,
@@ -1 +1 @@
1
- {"version":3,"file":"update-host-app-routes.d.ts","sourceRoot":"","sources":["../../../../../../../packages/angular/src/generators/setup-mf/lib/update-host-app-routes.ts"],"names":[],"mappings":"AAAA,OAAO,EAIL,KAAK,IAAI,EACV,MAAM,YAAY,CAAC;AAEpB,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAEnD,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,iBAAiB,QAiEzE"}
1
+ {"version":3,"file":"update-host-app-routes.d.ts","sourceRoot":"","sources":["../../../../../../../packages/angular/src/generators/setup-mf/lib/update-host-app-routes.ts"],"names":[],"mappings":"AAAA,OAAO,EAIL,KAAK,IAAI,EACV,MAAM,YAAY,CAAC;AAGpB,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAEnD,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,iBAAiB,QAmEzE"}
@@ -3,20 +3,22 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.updateHostAppRoutes = updateHostAppRoutes;
4
4
  const devkit_1 = require("@nx/devkit");
5
5
  const route_utils_1 = require("../../../utils/nx-devkit/route-utils");
6
+ const zoneless_1 = require("../../../utils/zoneless");
6
7
  function updateHostAppRoutes(tree, options) {
7
- const { sourceRoot } = (0, devkit_1.readProjectConfiguration)(tree, options.appName);
8
+ const project = (0, devkit_1.readProjectConfiguration)(tree, options.appName);
8
9
  const { appComponentInfo, nxWelcomeComponentInfo } = options;
9
- tree.write((0, devkit_1.joinPathFragments)(sourceRoot, 'app', `${appComponentInfo.extensionlessFileName}.html`), `<ul class="remote-menu">
10
+ const zoneless = (0, zoneless_1.isZonelessApp)(project);
11
+ tree.write((0, devkit_1.joinPathFragments)(project.sourceRoot, 'app', `${appComponentInfo.extensionlessFileName}.html`), `<ul class="remote-menu">
10
12
  <li><a routerLink="/">Home</a></li>
11
13
  </ul>
12
14
  <router-outlet></router-outlet>
13
15
  `);
14
- let pathToHostRootRoutingFile = (0, devkit_1.joinPathFragments)(sourceRoot, 'app/app.routes.ts');
16
+ let pathToHostRootRoutingFile = (0, devkit_1.joinPathFragments)(project.sourceRoot, 'app/app.routes.ts');
15
17
  if (!tree.exists(pathToHostRootRoutingFile)) {
16
- pathToHostRootRoutingFile = (0, devkit_1.joinPathFragments)(sourceRoot, 'app/app-routing.module.ts');
18
+ pathToHostRootRoutingFile = (0, devkit_1.joinPathFragments)(project.sourceRoot, 'app/app-routing.module.ts');
17
19
  }
18
20
  if (!tree.exists(pathToHostRootRoutingFile)) {
19
- pathToHostRootRoutingFile = (0, devkit_1.joinPathFragments)(sourceRoot, 'app/app-routing-module.ts');
21
+ pathToHostRootRoutingFile = (0, devkit_1.joinPathFragments)(project.sourceRoot, 'app/app-routing-module.ts');
20
22
  }
21
23
  (0, route_utils_1.addRoute)(tree, pathToHostRootRoutingFile, `{
22
24
  path: '',
@@ -24,13 +26,14 @@ function updateHostAppRoutes(tree, options) {
24
26
  }`);
25
27
  tree.write(pathToHostRootRoutingFile, `import { ${nxWelcomeComponentInfo.symbolName} } from './${nxWelcomeComponentInfo.extensionlessFileName}';
26
28
  ${tree.read(pathToHostRootRoutingFile, 'utf-8')}`);
27
- (0, devkit_1.generateFiles)(tree, (0, devkit_1.joinPathFragments)(__dirname, '../files/host-files'), (0, devkit_1.joinPathFragments)(sourceRoot, 'app'), {
29
+ (0, devkit_1.generateFiles)(tree, (0, devkit_1.joinPathFragments)(__dirname, '../files/host-files'), (0, devkit_1.joinPathFragments)(project.sourceRoot, 'app'), {
28
30
  appName: options.appName,
29
31
  standalone: options.standalone,
30
32
  appFileName: appComponentInfo.extensionlessFileName,
31
33
  appSymbolName: appComponentInfo.symbolName,
32
34
  nxWelcomeFileName: nxWelcomeComponentInfo.extensionlessFileName,
33
35
  nxWelcomeSymbolName: nxWelcomeComponentInfo.symbolName,
36
+ zoneless,
34
37
  tmpl: '',
35
38
  });
36
39
  }
@@ -50,10 +50,10 @@ app.use('/**', (req, res, next) => {
50
50
  });
51
51
 
52
52
  /**
53
- * Start the server if this module is the main entry point.
53
+ * Start the server if this module is the main entry point, or it is ran via PM2.
54
54
  * The server listens on the port defined by the `PORT` environment variable, or defaults to <%= serverPort %>.
55
55
  */
56
- if (isMainModule(import.meta.url)) {
56
+ if (isMainModule(import.meta.url) || process.env['pm_id']) {
57
57
  const port = process.env['PORT'] || <%= serverPort %>;
58
58
  app.listen(port, () => {
59
59
  console.log(`Node Express server listening on http://localhost:${port}`);
@@ -1,8 +1,14 @@
1
+ <%_ if (!zoneless && angularMajorVersion < 21) { _%>
1
2
  import 'zone.js/node';
2
3
 
4
+ <%_ } _%>
3
5
  import { APP_BASE_HREF } from '@angular/common';
4
6
  import { CommonEngine } from '@angular/ssr/node';
7
+ <%_ if (useDefaultImport) { _%>
8
+ import express from 'express';
9
+ <%_ } else { _%>
5
10
  import * as express from 'express';
11
+ <%_ } _%>
6
12
  import { existsSync } from 'node:fs';
7
13
  import { join } from 'node:path';
8
14
  import <% if (standalone) { %>bootstrap<% } else { %><%= rootModuleClassName %><% } %> from './<%= main.slice(0, -3) %>';
@@ -1 +1 @@
1
- {"version":3,"file":"add-hydration.d.ts","sourceRoot":"","sources":["../../../../../../../packages/angular/src/generators/setup-ssr/lib/add-hydration.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,IAAI,EACV,MAAM,YAAY,CAAC;AAUpB,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,WAAW,CAAC;AAK5D,wBAAgB,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,0BAA0B,QAmF3E"}
1
+ {"version":3,"file":"add-hydration.d.ts","sourceRoot":"","sources":["../../../../../../../packages/angular/src/generators/setup-ssr/lib/add-hydration.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,IAAI,EACV,MAAM,YAAY,CAAC;AASpB,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,WAAW,CAAC;AAK5D,wBAAgB,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,0BAA0B,QA0E3E"}
@@ -6,7 +6,6 @@ const js_1 = require("@nx/js");
6
6
  const ensure_typescript_1 = require("@nx/js/src/utils/typescript/ensure-typescript");
7
7
  const ts_solution_setup_1 = require("@nx/js/src/utils/typescript/ts-solution-setup");
8
8
  const ast_utils_1 = require("../../../utils/nx-devkit/ast-utils");
9
- const version_utils_1 = require("../../utils/version-utils");
10
9
  let tsModule;
11
10
  let tsquery;
12
11
  function addHydration(tree, options) {
@@ -35,14 +34,9 @@ function addHydration(tree, options) {
35
34
  const addImport = (source, symbolName, packageName, filePath, isDefault = false) => {
36
35
  return (0, js_1.insertImport)(tree, source, filePath, symbolName, packageName, isDefault);
37
36
  };
38
- const { major: angularMajorVersion } = (0, version_utils_1.getInstalledAngularVersionInfo)(tree);
39
37
  sourceFile = addImport(sourceFile, 'provideClientHydration', '@angular/platform-browser', pathToClientConfigFile);
40
- if (angularMajorVersion >= 19) {
41
- sourceFile = addImport(sourceFile, 'withEventReplay', '@angular/platform-browser', pathToClientConfigFile);
42
- }
43
- const provider = angularMajorVersion >= 19
44
- ? 'provideClientHydration(withEventReplay())'
45
- : 'provideClientHydration()';
38
+ sourceFile = addImport(sourceFile, 'withEventReplay', '@angular/platform-browser', pathToClientConfigFile);
39
+ const provider = 'provideClientHydration(withEventReplay())';
46
40
  if (options.standalone) {
47
41
  (0, ast_utils_1.addProviderToAppConfig)(tree, pathToClientConfigFile, provider);
48
42
  }
@@ -1 +1 @@
1
- {"version":3,"file":"add-server-file.d.ts","sourceRoot":"","sources":["../../../../../../../packages/angular/src/generators/setup-ssr/lib/add-server-file.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAKvC,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,WAAW,CAAC;AAG5D,wBAAgB,aAAa,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,0BAA0B,QAoD5E"}
1
+ {"version":3,"file":"add-server-file.d.ts","sourceRoot":"","sources":["../../../../../../../packages/angular/src/generators/setup-ssr/lib/add-server-file.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAMvC,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,WAAW,CAAC;AAG5D,wBAAgB,aAAa,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,0BAA0B,QA0C5E"}
@@ -4,6 +4,7 @@ exports.addServerFile = addServerFile;
4
4
  const devkit_1 = require("@nx/devkit");
5
5
  const ts_solution_setup_1 = require("@nx/js/src/utils/typescript/ts-solution-setup");
6
6
  const path_1 = require("path");
7
+ const zoneless_1 = require("../../../utils/zoneless");
7
8
  const version_utils_1 = require("../../utils/version-utils");
8
9
  const constants_1 = require("./constants");
9
10
  function addServerFile(tree, options) {
@@ -20,21 +21,20 @@ function addServerFile(tree, options) {
20
21
  ? 'application-builder'
21
22
  : 'server-builder', 'server');
22
23
  }
23
- else if (angularMajorVersion === 19) {
24
+ else {
24
25
  pathToFiles = (0, path_1.join)(baseFilesPath, 'v19', options.isUsingApplicationBuilder
25
26
  ? 'application-builder' +
26
27
  (options.serverRouting ? '' : '-common-engine')
27
28
  : 'server-builder', 'server');
28
29
  }
29
- else {
30
- pathToFiles = (0, path_1.join)(baseFilesPath, 'pre-v19', 'server', options.isUsingApplicationBuilder
31
- ? 'application-builder'
32
- : 'server-builder');
33
- }
34
30
  const sourceRoot = (0, ts_solution_setup_1.getProjectSourceRoot)(project, tree);
35
- (0, devkit_1.generateFiles)(tree, pathToFiles, angularMajorVersion >= 19 ? sourceRoot : project.root, {
31
+ const zoneless = (0, zoneless_1.isZonelessApp)(project);
32
+ (0, devkit_1.generateFiles)(tree, pathToFiles, sourceRoot, {
36
33
  ...options,
37
34
  browserDistDirectory,
35
+ zoneless,
36
+ useDefaultImport: angularMajorVersion >= 21,
37
+ angularMajorVersion,
38
38
  tpl: '',
39
39
  });
40
40
  }
@@ -1 +1 @@
1
- {"version":3,"file":"generate-files.d.ts","sourceRoot":"","sources":["../../../../../../../packages/angular/src/generators/setup-ssr/lib/generate-files.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAgBvC,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,WAAW,CAAC;AAE5D,wBAAgB,gBAAgB,CAC9B,IAAI,EAAE,IAAI,EACV,OAAO,EAAE,0BAA0B,QAiFpC"}
1
+ {"version":3,"file":"generate-files.d.ts","sourceRoot":"","sources":["../../../../../../../packages/angular/src/generators/setup-ssr/lib/generate-files.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAgBvC,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,WAAW,CAAC;AAE5D,wBAAgB,gBAAgB,CAC9B,IAAI,EAAE,IAAI,EACV,OAAO,EAAE,0BAA0B,QAyEpC"}
@@ -24,14 +24,11 @@ function generateSSRFiles(tree, options) {
24
24
  ? 'application-builder'
25
25
  : 'server-builder', options.standalone ? 'standalone-src' : 'ngmodule-src');
26
26
  }
27
- else if (angularMajorVersion === 19) {
27
+ else {
28
28
  pathToFiles = (0, path_1.join)(baseFilesPath, 'v19', options.isUsingApplicationBuilder
29
29
  ? 'application-builder'
30
30
  : 'server-builder', options.standalone ? 'standalone-src' : 'ngmodule-src');
31
31
  }
32
- else {
33
- pathToFiles = (0, path_1.join)(baseFilesPath, 'pre-v19', options.standalone ? 'standalone-src' : 'ngmodule-src');
34
- }
35
32
  const sourceRoot = (0, ts_solution_setup_1.getProjectSourceRoot)(project, tree);
36
33
  const ssrVersion = (0, devkit_1.getDependencyVersionFromPackageJson)(tree, '@angular/ssr');
37
34
  const cleanedSsrVersion = ssrVersion
@@ -44,9 +41,7 @@ function generateSSRFiles(tree, options) {
44
41
  // https://github.com/angular/angular-cli/releases/tag/20.3.0
45
42
  (0, semver_1.gte)(angularVersion, '20.3.0') ||
46
43
  // https://github.com/angular/angular-cli/releases/tag/19.2.16
47
- (angularMajorVersion === 19 && (0, semver_1.gte)(angularVersion, '19.2.16')) ||
48
- // https://github.com/angular/angular-cli/releases/tag/18.2.21
49
- (angularMajorVersion === 18 && (0, semver_1.gte)(angularVersion, '18.2.21'));
44
+ (angularMajorVersion === 19 && (0, semver_1.gte)(angularVersion, '19.2.16'));
50
45
  (0, devkit_1.generateFiles)(tree, pathToFiles, sourceRoot, {
51
46
  ...options,
52
47
  provideServerRoutingFn: !cleanedSsrVersion || (0, semver_1.gte)(cleanedSsrVersion, '19.2.0')
@@ -1 +1 @@
1
- {"version":3,"file":"generate-server-ts-config.d.ts","sourceRoot":"","sources":["../../../../../../../packages/angular/src/generators/setup-ssr/lib/generate-server-ts-config.ts"],"names":[],"mappings":"AAAA,OAAO,EAOL,KAAK,IAAI,EACV,MAAM,YAAY,CAAC;AAGpB,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,WAAW,CAAC;AAE5D,wBAAgB,6CAA6C,CAC3D,IAAI,EAAE,IAAI,EACV,OAAO,EAAE,0BAA0B,QA6BpC;AAED,wBAAgB,2CAA2C,CACzD,IAAI,EAAE,IAAI,EACV,OAAO,EAAE,0BAA0B,QAgDpC"}
1
+ {"version":3,"file":"generate-server-ts-config.d.ts","sourceRoot":"","sources":["../../../../../../../packages/angular/src/generators/setup-ssr/lib/generate-server-ts-config.ts"],"names":[],"mappings":"AAAA,OAAO,EAOL,KAAK,IAAI,EACV,MAAM,YAAY,CAAC;AAKpB,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,WAAW,CAAC;AAE5D,wBAAgB,6CAA6C,CAC3D,IAAI,EAAE,IAAI,EACV,OAAO,EAAE,0BAA0B,QAuBpC;AAED,wBAAgB,2CAA2C,CACzD,IAAI,EAAE,IAAI,EACV,OAAO,EAAE,0BAA0B,QA8EpC"}
@@ -3,7 +3,9 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.setServerTsConfigOptionsForApplicationBuilder = setServerTsConfigOptionsForApplicationBuilder;
4
4
  exports.generateTsConfigServerJsonForBrowserBuilder = generateTsConfigServerJsonForBrowserBuilder;
5
5
  const devkit_1 = require("@nx/devkit");
6
+ const ensure_typescript_1 = require("@nx/js/src/utils/typescript/ensure-typescript");
6
7
  const path_1 = require("path");
8
+ const tsconfig_utils_1 = require("../../utils/tsconfig-utils");
7
9
  const version_utils_1 = require("../../utils/version-utils");
8
10
  function setServerTsConfigOptionsForApplicationBuilder(tree, options) {
9
11
  const { targets } = (0, devkit_1.readProjectConfiguration)(tree, options.project);
@@ -17,15 +19,9 @@ function setServerTsConfigOptionsForApplicationBuilder(tree, options) {
17
19
  // server file is already included, no need to add it
18
20
  return json;
19
21
  }
20
- const { major: angularMajorVersion } = (0, version_utils_1.getInstalledAngularVersionInfo)(tree);
21
22
  const files = new Set(json.files ?? []);
22
23
  files.add((0, devkit_1.joinPathFragments)('src', options.main));
23
- if (angularMajorVersion >= 19) {
24
- files.add((0, devkit_1.joinPathFragments)('src', options.serverFileName));
25
- }
26
- else {
27
- files.add((0, devkit_1.joinPathFragments)(options.serverFileName));
28
- }
24
+ files.add((0, devkit_1.joinPathFragments)('src', options.serverFileName));
29
25
  json.files = Array.from(files);
30
26
  return json;
31
27
  });
@@ -41,11 +37,8 @@ function generateTsConfigServerJsonForBrowserBuilder(tree, options) {
41
37
  if (angularMajorVersion >= 20) {
42
38
  pathToFiles = (0, path_1.join)(baseFilesPath, 'v20+', 'server-builder', 'root');
43
39
  }
44
- else if (angularMajorVersion === 19) {
45
- pathToFiles = (0, path_1.join)(baseFilesPath, 'v19', 'server-builder', 'root');
46
- }
47
40
  else {
48
- pathToFiles = (0, path_1.join)(baseFilesPath, 'pre-v19', 'root');
41
+ pathToFiles = (0, path_1.join)(baseFilesPath, 'v19', 'server-builder', 'root');
49
42
  }
50
43
  (0, devkit_1.generateFiles)(tree, pathToFiles, project.root, {
51
44
  ...options,
@@ -53,10 +46,11 @@ function generateTsConfigServerJsonForBrowserBuilder(tree, options) {
53
46
  hasLocalizePackage,
54
47
  tpl: '',
55
48
  });
49
+ const tsconfigServerPath = (0, devkit_1.joinPathFragments)(project.root, 'tsconfig.server.json');
56
50
  (0, devkit_1.updateJson)(tree, (0, devkit_1.joinPathFragments)(project.root, 'tsconfig.json'), (json) => {
57
51
  json.references ??= [];
58
52
  json.references.push({
59
- path: (0, devkit_1.joinPathFragments)(project.root, 'tsconfig.server.json'),
53
+ path: tsconfigServerPath,
60
54
  });
61
55
  return json;
62
56
  });
@@ -72,4 +66,24 @@ function generateTsConfigServerJsonForBrowserBuilder(tree, options) {
72
66
  return json;
73
67
  });
74
68
  }
69
+ if (angularMajorVersion >= 21) {
70
+ // remove module and moduleResolution from tsconfig.server.json
71
+ (0, devkit_1.updateJson)(tree, tsconfigServerPath, (json) => {
72
+ delete json.compilerOptions.module;
73
+ delete json.compilerOptions.moduleResolution;
74
+ return json;
75
+ });
76
+ // read the parsed compiler options from tsconfig.server.json
77
+ const compilerOptions = (0, tsconfig_utils_1.readCompilerOptionsFromTsConfig)(tree, tsconfigServerPath);
78
+ const ts = (0, ensure_typescript_1.ensureTypescript)();
79
+ if (compilerOptions.module === ts.ModuleKind.Preserve &&
80
+ compilerOptions.moduleResolution === ts.ModuleResolutionKind.Bundler) {
81
+ return;
82
+ }
83
+ (0, devkit_1.updateJson)(tree, tsconfigServerPath, (json) => {
84
+ json.compilerOptions.module = 'preserve';
85
+ json.compilerOptions.moduleResolution = 'bundler';
86
+ return json;
87
+ });
88
+ }
75
89
  }
@@ -1 +1 @@
1
- {"version":3,"file":"normalize-options.d.ts","sourceRoot":"","sources":["../../../../../../../packages/angular/src/generators/setup-ssr/lib/normalize-options.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,IAAI,EACV,MAAM,YAAY,CAAC;AAIpB,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AAEpE,wBAAsB,gBAAgB,CACpC,IAAI,EAAE,IAAI,EACV,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,0BAA0B,CAAC,CAsDrC"}
1
+ {"version":3,"file":"normalize-options.d.ts","sourceRoot":"","sources":["../../../../../../../packages/angular/src/generators/setup-ssr/lib/normalize-options.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,IAAI,EACV,MAAM,YAAY,CAAC;AAIpB,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AAEpE,wBAAsB,gBAAgB,CACpC,IAAI,EAAE,IAAI,EACV,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,0BAA0B,CAAC,CA+CrC"}
@@ -21,13 +21,9 @@ async function normalizeOptions(tree, options) {
21
21
  }, { serverRouting: false }).then(({ serverRouting }) => serverRouting);
22
22
  }
23
23
  else {
24
- options.serverRouting = angularMajorVersion >= 20;
24
+ options.serverRouting = true;
25
25
  }
26
26
  }
27
- else if (options.serverRouting !== undefined &&
28
- !isUsingApplicationBuilder) {
29
- throw new Error('Server routing APIs can only be added to a project using `application` builder.');
30
- }
31
27
  const isStandaloneApp = (0, ast_utils_1.isNgStandaloneApp)(tree, options.project);
32
28
  return {
33
29
  project: options.project,
@@ -1 +1 @@
1
- {"version":3,"file":"update-project-config.d.ts","sourceRoot":"","sources":["../../../../../../../packages/angular/src/generators/setup-ssr/lib/update-project-config.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAWvC,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,WAAW,CAAC;AAO5D,wBAAgB,wCAAwC,CACtD,IAAI,EAAE,IAAI,EACV,OAAO,EAAE,0BAA0B,GAClC,IAAI,CA4DN;AAED,wBAAgB,oCAAoC,CAClD,IAAI,EAAE,IAAI,EACV,OAAO,EAAE,0BAA0B,QAuFpC"}
1
+ {"version":3,"file":"update-project-config.d.ts","sourceRoot":"","sources":["../../../../../../../packages/angular/src/generators/setup-ssr/lib/update-project-config.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAUvC,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,WAAW,CAAC;AAO5D,wBAAgB,wCAAwC,CACtD,IAAI,EAAE,IAAI,EACV,OAAO,EAAE,0BAA0B,GAClC,IAAI,CAmDN;AAED,wBAAgB,oCAAoC,CAClD,IAAI,EAAE,IAAI,EACV,OAAO,EAAE,0BAA0B,QAmFpC"}