@nx/angular 17.1.0-beta.2 → 17.1.0-beta.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (191) hide show
  1. package/fesm2022/nx-angular.mjs +1 -1
  2. package/migrations.json +135 -0
  3. package/ng-package.json +0 -1
  4. package/package.json +14 -19
  5. package/src/builders/module-federation-dev-server/module-federation-dev-server.impl.d.ts +1 -1
  6. package/src/builders/module-federation-dev-server/module-federation-dev-server.impl.js +112 -60
  7. package/src/builders/module-federation-dev-server/schema.d.ts +23 -7
  8. package/src/builders/module-federation-dev-server/schema.json +13 -3
  9. package/src/builders/module-federation-dev-ssr/module-federation-dev-ssr.impl.d.ts +1 -1
  10. package/src/builders/module-federation-dev-ssr/module-federation-dev-ssr.impl.js +13 -8
  11. package/src/builders/webpack-browser/schema.json +7 -7
  12. package/src/builders/webpack-browser/webpack-browser.impl.js +0 -2
  13. package/src/builders/webpack-dev-server/lib/normalize-options.d.ts +2 -2
  14. package/src/builders/webpack-dev-server/lib/normalize-options.js +11 -5
  15. package/src/builders/webpack-dev-server/schema.d.ts +22 -7
  16. package/src/builders/webpack-dev-server/schema.json +9 -3
  17. package/src/builders/webpack-dev-server/webpack-dev-server.impl.js +24 -13
  18. package/src/builders/webpack-server/schema.d.ts +0 -1
  19. package/src/builders/webpack-server/schema.json +1 -13
  20. package/src/builders/webpack-server/validate-options.js +0 -7
  21. package/src/builders/webpack-server/webpack-server.impl.js +0 -8
  22. package/src/executors/browser-esbuild/browser-esbuild.impl.js +0 -2
  23. package/src/executors/browser-esbuild/schema.json +5 -4
  24. package/src/executors/ng-packagr-lite/ng-packagr-adjustments/ng-package/entry-point/write-package.transform.js +20 -12
  25. package/src/executors/ng-packagr-lite/ng-packagr-adjustments/ngc/compile-source-files.js +10 -1
  26. package/src/executors/ng-packagr-lite/ng-packagr-adjustments/styles/stylesheet-processor.js +0 -13
  27. package/src/executors/package/ng-packagr-adjustments/ngc/compile-source-files.js +10 -1
  28. package/src/executors/package/ng-packagr-adjustments/styles/stylesheet-processor.js +0 -13
  29. package/src/executors/utilities/ng-compiler-cli.d.ts +15 -0
  30. package/src/executors/utilities/ng-compiler-cli.js +28 -0
  31. package/src/executors/utilities/typescript.js +1 -1
  32. package/src/generators/application/application.js +7 -17
  33. package/src/generators/application/files/base/tsconfig.app.json__tpl__ +1 -1
  34. package/src/generators/application/files/base/tsconfig.json__tpl__ +3 -2
  35. package/src/generators/application/files/ng-module/src/app/app.module.ts__tpl__ +1 -1
  36. package/src/generators/application/files/ng-module/src/app/nx-welcome.component.ts__tpl__ +2 -2
  37. package/src/generators/application/files/ng-module/src/main.ts__tpl__ +2 -8
  38. package/src/generators/application/files/standalone-components/src/app/app.config.ts__tpl__ +2 -2
  39. package/src/generators/application/files/standalone-components/src/app/nx-welcome.component.ts__tpl__ +2 -2
  40. package/src/generators/application/lib/add-e2e.js +7 -1
  41. package/src/generators/application/lib/create-files.js +10 -5
  42. package/src/generators/application/lib/create-project.js +46 -38
  43. package/src/generators/application/lib/normalize-options.d.ts +1 -1
  44. package/src/generators/application/lib/normalize-options.js +14 -3
  45. package/src/generators/application/lib/normalized-schema.d.ts +2 -0
  46. package/src/generators/application/schema.d.ts +1 -0
  47. package/src/generators/application/schema.json +13 -6
  48. package/src/generators/component/component.js +0 -1
  49. package/src/generators/component/lib/index.d.ts +0 -1
  50. package/src/generators/component/lib/index.js +0 -1
  51. package/src/generators/component/lib/normalize-options.js +1 -0
  52. package/src/generators/component/schema.json +2 -2
  53. package/src/generators/directive/directive.js +0 -1
  54. package/src/generators/directive/lib/index.d.ts +0 -1
  55. package/src/generators/directive/lib/index.js +0 -1
  56. package/src/generators/directive/lib/normalize-options.js +1 -0
  57. package/src/generators/directive/schema.json +2 -2
  58. package/src/generators/federate-module/federate-module.js +1 -0
  59. package/src/generators/federate-module/lib/add-remote.d.ts +1 -1
  60. package/src/generators/federate-module/lib/add-remote.js +2 -11
  61. package/src/generators/federate-module/schema.json +2 -2
  62. package/src/generators/host/files/common/v17+/src/main.server.ts__tmpl__ +67 -0
  63. package/src/generators/host/host.js +5 -9
  64. package/src/generators/host/lib/index.d.ts +1 -1
  65. package/src/generators/host/lib/index.js +1 -1
  66. package/src/generators/host/lib/update-ssr-setup.d.ts +3 -0
  67. package/src/generators/host/lib/{add-ssr.js → update-ssr-setup.js} +8 -14
  68. package/src/generators/host/schema.json +2 -2
  69. package/src/generators/library/lib/normalize-options.js +1 -0
  70. package/src/generators/library/library.js +0 -5
  71. package/src/generators/library/schema.json +12 -12
  72. package/src/generators/ng-add/migrators/projects/app.migrator.js +50 -7
  73. package/src/generators/ngrx/lib/generate-files.js +1 -10
  74. package/src/generators/ngrx/lib/validate-options.js +0 -23
  75. package/src/generators/ngrx/schema.json +2 -2
  76. package/src/generators/ngrx-feature-store/lib/generate-files.js +1 -12
  77. package/src/generators/ngrx-feature-store/lib/validate-options.js +0 -22
  78. package/src/generators/ngrx-feature-store/schema.json +2 -2
  79. package/src/generators/ngrx-root-store/lib/normalize-options.js +1 -1
  80. package/src/generators/ngrx-root-store/lib/validate-options.js +0 -15
  81. package/src/generators/ngrx-root-store/schema.json +1 -1
  82. package/src/generators/pipe/lib/index.d.ts +0 -1
  83. package/src/generators/pipe/lib/index.js +0 -1
  84. package/src/generators/pipe/lib/normalize-options.js +1 -0
  85. package/src/generators/pipe/pipe.js +0 -1
  86. package/src/generators/pipe/schema.json +2 -2
  87. package/src/generators/remote/files/common/v17+/src/main.server.ts__tmpl__ +74 -0
  88. package/src/generators/remote/lib/index.d.ts +1 -1
  89. package/src/generators/remote/lib/index.js +1 -1
  90. package/src/generators/remote/lib/{add-ssr.d.ts → update-ssr-setup.d.ts} +1 -1
  91. package/src/generators/remote/lib/{add-ssr.js → update-ssr-setup.js} +9 -13
  92. package/src/generators/remote/remote.js +4 -9
  93. package/src/generators/remote/schema.json +2 -2
  94. package/src/generators/scam-to-standalone/scam-to-standalone.js +0 -7
  95. package/src/generators/scam-to-standalone/schema.json +1 -1
  96. package/src/generators/setup-mf/lib/add-remote-entry.js +2 -11
  97. package/src/generators/setup-mf/lib/fix-bootstrap.js +3 -12
  98. package/src/generators/setup-mf/lib/index.d.ts +1 -1
  99. package/src/generators/setup-mf/lib/index.js +1 -1
  100. package/src/generators/setup-mf/lib/normalize-options.js +1 -0
  101. package/src/generators/{component/lib/validate-options.d.ts → setup-mf/lib/update-tsconfig.d.ts} +1 -1
  102. package/src/generators/setup-mf/lib/update-tsconfig.js +19 -0
  103. package/src/generators/setup-mf/schema.json +2 -2
  104. package/src/generators/setup-mf/setup-mf.js +1 -7
  105. package/src/generators/setup-ssr/files/server/application-builder/__serverFileName__ +54 -0
  106. package/src/generators/setup-ssr/files/{ngmodule/base → server/server-builder/pre-v17}/__serverFileName__ +3 -4
  107. package/src/generators/setup-ssr/files/{standalone → server/server-builder/v17+}/__serverFileName__ +25 -16
  108. package/src/generators/setup-ssr/lib/add-dependencies.d.ts +2 -0
  109. package/src/generators/setup-ssr/lib/add-dependencies.js +32 -0
  110. package/src/generators/setup-ssr/lib/generate-files.d.ts +1 -1
  111. package/src/generators/setup-ssr/lib/generate-files.js +10 -13
  112. package/src/generators/setup-ssr/lib/generate-server-ts-config.d.ts +4 -0
  113. package/src/generators/setup-ssr/lib/generate-server-ts-config.js +26 -0
  114. package/src/generators/setup-ssr/lib/index.d.ts +3 -0
  115. package/src/generators/setup-ssr/lib/index.js +3 -0
  116. package/src/generators/setup-ssr/lib/normalize-options.js +7 -1
  117. package/src/generators/setup-ssr/lib/set-router-initial-navigation.d.ts +3 -0
  118. package/src/generators/setup-ssr/lib/set-router-initial-navigation.js +93 -0
  119. package/src/generators/setup-ssr/lib/update-project-config.d.ts +2 -1
  120. package/src/generators/setup-ssr/lib/update-project-config.js +24 -6
  121. package/src/generators/setup-ssr/lib/validate-options.js +15 -2
  122. package/src/generators/setup-ssr/schema.json +3 -3
  123. package/src/generators/setup-ssr/setup-ssr.js +16 -12
  124. package/src/generators/utils/create-ts-config.d.ts +1 -0
  125. package/src/generators/utils/create-ts-config.js +2 -3
  126. package/src/generators/utils/testing.js +12 -0
  127. package/src/generators/utils/validations.d.ts +0 -1
  128. package/src/generators/utils/validations.js +1 -14
  129. package/src/generators/utils/version-utils.d.ts +2 -2
  130. package/src/generators/utils/version-utils.js +3 -3
  131. package/src/migrations/update-17-1-0/browser-target-to-build-target.d.ts +3 -0
  132. package/src/migrations/update-17-1-0/browser-target-to-build-target.js +50 -0
  133. package/src/migrations/update-17-1-0/replace-nguniversal-builders.d.ts +2 -0
  134. package/src/migrations/update-17-1-0/replace-nguniversal-builders.js +75 -0
  135. package/src/migrations/update-17-1-0/replace-nguniversal-engines.d.ts +2 -0
  136. package/src/migrations/update-17-1-0/replace-nguniversal-engines.js +185 -0
  137. package/src/migrations/update-17-1-0/update-angular-cli.d.ts +3 -0
  138. package/src/migrations/update-17-1-0/update-angular-cli.js +23 -0
  139. package/src/migrations/update-17-1-0/update-zone-js-deep-import.d.ts +2 -0
  140. package/src/migrations/update-17-1-0/update-zone-js-deep-import.js +37 -0
  141. package/src/utils/backward-compatible-versions.d.ts +6 -4
  142. package/src/utils/backward-compatible-versions.js +18 -18
  143. package/src/utils/nx-devkit/ast-utils.js +4 -2
  144. package/src/utils/version-utils.d.ts +3 -3
  145. package/src/utils/versions.d.ts +6 -7
  146. package/src/utils/versions.js +7 -8
  147. package/src/builders/webpack-browser/validate-options.d.ts +0 -2
  148. package/src/builders/webpack-browser/validate-options.js +0 -40
  149. package/src/executors/browser-esbuild/lib/validate-options.d.ts +0 -2
  150. package/src/executors/browser-esbuild/lib/validate-options.js +0 -40
  151. package/src/generators/application/files/tsconfig.editor.json__tpl__ +0 -5
  152. package/src/generators/application/files/v14/.browserlistrc__tpl__ +0 -16
  153. package/src/generators/application/files/v14/src/environments/environment.prod.ts__tpl__ +0 -3
  154. package/src/generators/application/files/v14/src/environments/environment.ts__tpl__ +0 -16
  155. package/src/generators/application/files/v14/src/polyfills.ts__tpl__ +0 -53
  156. package/src/generators/component/lib/validate-options.js +0 -8
  157. package/src/generators/directive/lib/validate-options.d.ts +0 -3
  158. package/src/generators/directive/lib/validate-options.js +0 -8
  159. package/src/generators/host/lib/add-ssr.d.ts +0 -3
  160. package/src/generators/ngrx/files/no-inject/__directory__/__fileName__.effects.ts__tmpl__ +0 -22
  161. package/src/generators/ngrx/files/no-inject/__directory__/__fileName__.facade.ts__tmpl__ +0 -27
  162. package/src/generators/ngrx-feature-store/files/no-inject/__directory__/__fileName__.effects.ts__tmpl__ +0 -22
  163. package/src/generators/ngrx-feature-store/files/no-inject/__directory__/__fileName__.facade.ts__tmpl__ +0 -27
  164. package/src/generators/pipe/lib/validate-options.d.ts +0 -3
  165. package/src/generators/pipe/lib/validate-options.js +0 -8
  166. package/src/generators/setup-mf/lib/set-tsconfig-target.d.ts +0 -3
  167. package/src/generators/setup-mf/lib/set-tsconfig-target.js +0 -16
  168. package/src/generators/setup-ssr/files/ngmodule/v14/src/__main__ +0 -11
  169. /package/src/generators/host/files/common/{src → pre-v17/src}/main.server.ts__tmpl__ +0 -0
  170. /package/src/generators/ngrx/files/{base/__directory__ → __directory__}/__fileName__.actions.ts__tmpl__ +0 -0
  171. /package/src/generators/ngrx/files/{base/__directory__ → __directory__}/__fileName__.effects.spec.ts__tmpl__ +0 -0
  172. /package/src/generators/ngrx/files/{base/__directory__ → __directory__}/__fileName__.effects.ts__tmpl__ +0 -0
  173. /package/src/generators/ngrx/files/{base/__directory__ → __directory__}/__fileName__.facade.spec.ts__tmpl__ +0 -0
  174. /package/src/generators/ngrx/files/{base/__directory__ → __directory__}/__fileName__.facade.ts__tmpl__ +0 -0
  175. /package/src/generators/ngrx/files/{base/__directory__ → __directory__}/__fileName__.models.ts__tmpl__ +0 -0
  176. /package/src/generators/ngrx/files/{base/__directory__ → __directory__}/__fileName__.reducer.spec.ts__tmpl__ +0 -0
  177. /package/src/generators/ngrx/files/{base/__directory__ → __directory__}/__fileName__.reducer.ts__tmpl__ +0 -0
  178. /package/src/generators/ngrx/files/{base/__directory__ → __directory__}/__fileName__.selectors.spec.ts__tmpl__ +0 -0
  179. /package/src/generators/ngrx/files/{base/__directory__ → __directory__}/__fileName__.selectors.ts__tmpl__ +0 -0
  180. /package/src/generators/ngrx-feature-store/files/{base/__directory__ → __directory__}/__fileName__.actions.ts__tmpl__ +0 -0
  181. /package/src/generators/ngrx-feature-store/files/{base/__directory__ → __directory__}/__fileName__.effects.spec.ts__tmpl__ +0 -0
  182. /package/src/generators/ngrx-feature-store/files/{base/__directory__ → __directory__}/__fileName__.effects.ts__tmpl__ +0 -0
  183. /package/src/generators/ngrx-feature-store/files/{base/__directory__ → __directory__}/__fileName__.facade.spec.ts__tmpl__ +0 -0
  184. /package/src/generators/ngrx-feature-store/files/{base/__directory__ → __directory__}/__fileName__.facade.ts__tmpl__ +0 -0
  185. /package/src/generators/ngrx-feature-store/files/{base/__directory__ → __directory__}/__fileName__.models.ts__tmpl__ +0 -0
  186. /package/src/generators/ngrx-feature-store/files/{base/__directory__ → __directory__}/__fileName__.reducer.spec.ts__tmpl__ +0 -0
  187. /package/src/generators/ngrx-feature-store/files/{base/__directory__ → __directory__}/__fileName__.reducer.ts__tmpl__ +0 -0
  188. /package/src/generators/ngrx-feature-store/files/{base/__directory__ → __directory__}/__fileName__.selectors.spec.ts__tmpl__ +0 -0
  189. /package/src/generators/ngrx-feature-store/files/{base/__directory__ → __directory__}/__fileName__.selectors.ts__tmpl__ +0 -0
  190. /package/src/generators/remote/files/common/{src → pre-v17/src}/main.server.ts__tmpl__ +0 -0
  191. /package/src/generators/setup-ssr/files/{base → root}/tsconfig.server.json__tpl__ +0 -0
@@ -1,20 +1,18 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.addSsr = void 0;
3
+ exports.updateSsrSetup = void 0;
4
4
  const devkit_1 = require("@nx/devkit");
5
- const setup_ssr_1 = require("../../setup-ssr/setup-ssr");
5
+ const path_1 = require("path");
6
6
  const versions_1 = require("../../../utils/versions");
7
- async function addSsr(tree, { appName, port, standalone, typescriptConfiguration, }) {
7
+ const version_utils_1 = require("../../utils/version-utils");
8
+ async function updateSsrSetup(tree, { appName, port, standalone, typescriptConfiguration, }) {
8
9
  let project = (0, devkit_1.readProjectConfiguration)(tree, appName);
9
- await (0, setup_ssr_1.default)(tree, {
10
- project: appName,
11
- standalone,
12
- });
13
10
  tree.rename((0, devkit_1.joinPathFragments)(project.sourceRoot, 'main.server.ts'), (0, devkit_1.joinPathFragments)(project.sourceRoot, 'bootstrap.server.ts'));
14
11
  tree.write((0, devkit_1.joinPathFragments)(project.root, 'server.ts'), "import('./src/main.server');");
15
- const browserBundleOutput = (0, devkit_1.joinPathFragments)(project.targets.build.options.outputPath, 'browser');
16
- const serverBundleOutput = (0, devkit_1.joinPathFragments)(project.targets.build.options.outputPath, 'server');
17
- (0, devkit_1.generateFiles)(tree, (0, devkit_1.joinPathFragments)(__dirname, `../files/common`), project.root, {
12
+ const browserBundleOutput = project.targets.build.options.outputPath;
13
+ const serverBundleOutput = project.targets.build.options.outputPath.replace(/\/browser$/, '/server');
14
+ const { major: angularMajorVersion } = (0, version_utils_1.getInstalledAngularVersionInfo)(tree);
15
+ (0, devkit_1.generateFiles)(tree, (0, path_1.join)(__dirname, '../files/common', angularMajorVersion >= 17 ? 'v17+' : 'pre-v17'), project.root, {
18
16
  appName,
19
17
  browserBundleOutput,
20
18
  serverBundleOutput,
@@ -52,12 +50,10 @@ async function addSsr(tree, { appName, port, standalone, typescriptConfiguration
52
50
  (0, devkit_1.updateProjectConfiguration)(tree, appName, project);
53
51
  const installTask = (0, devkit_1.addDependenciesToPackageJson)(tree, {
54
52
  cors: versions_1.corsVersion,
55
- express: versions_1.expressVersion,
56
53
  '@module-federation/node': versions_1.moduleFederationNodeVersion,
57
54
  }, {
58
55
  '@types/cors': versions_1.typesCorsVersion,
59
- '@types/express': versions_1.typesExpressVersion,
60
56
  });
61
57
  return installTask;
62
58
  }
63
- exports.addSsr = addSsr;
59
+ exports.updateSsrSetup = updateSsrSetup;
@@ -3,11 +3,9 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.remoteInternal = exports.remote = void 0;
4
4
  const devkit_1 = require("@nx/devkit");
5
5
  const project_name_and_root_utils_1 = require("@nx/devkit/src/generators/project-name-and-root-utils");
6
- const semver_1 = require("semver");
7
6
  const test_runners_1 = require("../../utils/test-runners");
8
7
  const application_1 = require("../application/application");
9
8
  const setup_mf_1 = require("../setup-mf/setup-mf");
10
- const version_utils_1 = require("../utils/version-utils");
11
9
  const lib_1 = require("./lib");
12
10
  const versions_1 = require("@nx/js/src/utils/versions");
13
11
  async function remote(tree, options) {
@@ -18,12 +16,8 @@ async function remote(tree, options) {
18
16
  }
19
17
  exports.remote = remote;
20
18
  async function remoteInternal(tree, schema) {
21
- const installedAngularVersionInfo = (0, version_utils_1.getInstalledAngularVersionInfo)(tree);
22
- if ((0, semver_1.lt)(installedAngularVersionInfo.version, '14.1.0') && schema.standalone) {
23
- throw new Error((0, devkit_1.stripIndents) `The "standalone" option is only supported in Angular >= 14.1.0. You are currently using ${installedAngularVersionInfo.version}.
24
- You can resolve this error by removing the "standalone" option or by migrating to Angular 14.1.0.`);
25
- }
26
19
  const { typescriptConfiguration = true, ...options } = schema;
20
+ options.standalone = options.standalone ?? true;
27
21
  const projects = (0, devkit_1.getProjects)(tree);
28
22
  if (options.host && !projects.has(options.host)) {
29
23
  throw new Error(`The name of the application to be used as the host app does not exist. (${options.host})`);
@@ -39,10 +33,11 @@ async function remoteInternal(tree, schema) {
39
33
  const port = options.port ?? (0, lib_1.findNextAvailablePort)(tree);
40
34
  const appInstallTask = await (0, application_1.applicationGenerator)(tree, {
41
35
  ...options,
42
- standalone: options.standalone ?? false,
36
+ standalone: options.standalone,
43
37
  routing: true,
44
38
  port,
45
39
  skipFormat: true,
40
+ bundler: 'webpack',
46
41
  });
47
42
  const skipE2E = !options.e2eTestRunner || options.e2eTestRunner === test_runners_1.E2eTestRunner.None;
48
43
  await (0, setup_mf_1.setupMf)(tree, {
@@ -64,7 +59,7 @@ async function remoteInternal(tree, schema) {
64
59
  });
65
60
  let installTasks = [appInstallTask, installSwcHelpersTask];
66
61
  if (options.ssr) {
67
- let ssrInstallTask = await (0, lib_1.addSsr)(tree, {
62
+ let ssrInstallTask = await (0, lib_1.updateSsrSetup)(tree, {
68
63
  appName: remoteProjectName,
69
64
  port,
70
65
  typescriptConfiguration,
@@ -158,9 +158,9 @@
158
158
  "x-priority": "internal"
159
159
  },
160
160
  "standalone": {
161
- "description": "Whether to generate a remote application with standalone components. _Note: This is only supported in Angular versions >= 14.1.0_",
161
+ "description": "Whether to generate a remote application with standalone components.",
162
162
  "type": "boolean",
163
- "default": false
163
+ "default": true
164
164
  },
165
165
  "ssr": {
166
166
  "description": "Whether to configure SSR for the remote application to be consumed by a host application using SSR.",
@@ -3,14 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.scamToStandalone = void 0;
4
4
  const devkit_1 = require("@nx/devkit");
5
5
  const lib_1 = require("./lib");
6
- const version_utils_1 = require("../utils/version-utils");
7
- const semver_1 = require("semver");
8
6
  async function scamToStandalone(tree, { component, project: projectName, skipFormat }) {
9
- const installedAngularVersionInfo = (0, version_utils_1.getInstalledAngularVersionInfo)(tree);
10
- if ((0, semver_1.lt)(installedAngularVersionInfo.version, '14.1.0')) {
11
- throw new Error((0, devkit_1.stripIndents) `This generator is only supported with Angular >= 14.1.0. You are currently using ${installedAngularVersionInfo.version}.
12
- You can resolve this error by migrating to Angular 14.1.0.`);
13
- }
14
7
  const projects = (0, devkit_1.getProjects)(tree);
15
8
  let project = (0, lib_1.getTargetProject)(projectName, projects);
16
9
  const normalizedComponentPath = (0, devkit_1.joinPathFragments)(project.root, component);
@@ -3,7 +3,7 @@
3
3
  "$id": "GeneratorAngularScamToStandalone",
4
4
  "cli": "nx",
5
5
  "title": "Convert an Inline SCAM to Standalone Component",
6
- "description": "Convert an Inline SCAM to a Standalone Component. _Note: This generator is only supported with Angular versions >= 14.1.0_.",
6
+ "description": "Convert an Inline SCAM to a Standalone Component.",
7
7
  "type": "object",
8
8
  "properties": {
9
9
  "component": {
@@ -15,17 +15,8 @@ function addRemoteEntry(tree, { appName, routing, prefix, standalone }, appRoot)
15
15
  if (standalone && routing) {
16
16
  (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)}`);
17
17
  }
18
- else {
19
- if (routing) {
20
- (0, route_utils_1.addRoute)(tree, (0, devkit_1.joinPathFragments)(appRoot, 'src/app/app.routes.ts'), `{path: '', loadChildren: () => import('./remote-entry/entry.module').then(m => m.RemoteEntryModule)}`);
21
- }
22
- tree.write(`${appRoot}/src/app/app.module.ts`, `/*
23
- * This RemoteEntryModule is imported here to allow TS to find the Module during
24
- * compilation, allowing it to be included in the built bundle. This is required
25
- * for the Module Federation Plugin to expose the Module correctly.
26
- * */
27
- import { RemoteEntryModule } from './remote-entry/entry.module';
28
- ${tree.read(`${appRoot}/src/app/app.module.ts`, 'utf-8')}`);
18
+ else if (routing) {
19
+ (0, route_utils_1.addRoute)(tree, (0, devkit_1.joinPathFragments)(appRoot, 'src/app/app.routes.ts'), `{path: '', loadChildren: () => import('./remote-entry/entry.module').then(m => m.RemoteEntryModule)}`);
29
20
  }
30
21
  }
31
22
  exports.addRemoteEntry = addRemoteEntry;
@@ -2,13 +2,11 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.fixBootstrap = void 0;
4
4
  const devkit_1 = require("@nx/devkit");
5
- const version_utils_1 = require("../../utils/version-utils");
6
5
  function fixBootstrap(tree, appRoot, options) {
7
6
  const mainFilePath = (0, devkit_1.joinPathFragments)(appRoot, 'src/main.ts');
8
7
  const bootstrapCode = tree.read(mainFilePath, 'utf-8');
9
- const installedAngularMajor = (0, version_utils_1.getInstalledAngularMajorVersion)(tree);
10
8
  if (options.standalone && options.mfType === 'remote') {
11
- tree.write(`${appRoot}/src/bootstrap.ts`, standaloneBootstrapCode(installedAngularMajor === 14));
9
+ tree.write(`${appRoot}/src/bootstrap.ts`, standaloneBootstrapCode());
12
10
  }
13
11
  else {
14
12
  tree.write((0, devkit_1.joinPathFragments)(appRoot, 'src/bootstrap.ts'), bootstrapCode);
@@ -25,17 +23,10 @@ function fixBootstrap(tree, appRoot, options) {
25
23
  : bootstrapImportCode);
26
24
  }
27
25
  exports.fixBootstrap = fixBootstrap;
28
- const standaloneBootstrapCode = (includeEnvironments = false) => `import {bootstrapApplication} from "@angular/platform-browser";
26
+ const standaloneBootstrapCode = () => `import {bootstrapApplication} from "@angular/platform-browser";
29
27
  import {appConfig} from './app/app.config';
30
28
  import {RemoteEntryComponent} from './app/remote-entry/entry.component';
31
- ${includeEnvironments
32
- ? `import {enableProdMode} from '@angular/core';
33
- import {environment} from './environments/environment';
34
- if(environment.production) {
35
- enableProdMode();
36
- }
37
- `
38
- : ``}
29
+
39
30
  bootstrapApplication(RemoteEntryComponent, appConfig).catch((err) =>
40
31
  console.error(err)
41
32
  );`;
@@ -6,7 +6,7 @@ export * from './fix-bootstrap';
6
6
  export * from './generate-config';
7
7
  export * from './get-remotes-with-ports';
8
8
  export * from './normalize-options';
9
- export * from './set-tsconfig-target';
9
+ export * from './update-tsconfig';
10
10
  export * from './setup-host-if-dynamic';
11
11
  export * from './setup-serve-target';
12
12
  export * from './update-host-app-routes';
@@ -9,7 +9,7 @@ tslib_1.__exportStar(require("./fix-bootstrap"), exports);
9
9
  tslib_1.__exportStar(require("./generate-config"), exports);
10
10
  tslib_1.__exportStar(require("./get-remotes-with-ports"), exports);
11
11
  tslib_1.__exportStar(require("./normalize-options"), exports);
12
- tslib_1.__exportStar(require("./set-tsconfig-target"), exports);
12
+ tslib_1.__exportStar(require("./update-tsconfig"), exports);
13
13
  tslib_1.__exportStar(require("./setup-host-if-dynamic"), exports);
14
14
  tslib_1.__exportStar(require("./setup-serve-target"), exports);
15
15
  tslib_1.__exportStar(require("./update-host-app-routes"), exports);
@@ -8,6 +8,7 @@ function normalizeOptions(tree, options) {
8
8
  typescriptConfiguration: options.typescriptConfiguration ?? true,
9
9
  federationType: options.federationType ?? 'static',
10
10
  prefix: options.prefix ?? (0, project_1.getProjectPrefix)(tree, options.appName),
11
+ standalone: options.standalone ?? true,
11
12
  };
12
13
  }
13
14
  exports.normalizeOptions = normalizeOptions;
@@ -1,3 +1,3 @@
1
1
  import type { Tree } from '@nx/devkit';
2
2
  import type { Schema } from '../schema';
3
- export declare function validateOptions(tree: Tree, options: Schema): void;
3
+ export declare function updateTsConfig(tree: Tree, schema: Schema): void;
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.updateTsConfig = void 0;
4
+ const devkit_1 = require("@nx/devkit");
5
+ function updateTsConfig(tree, schema) {
6
+ const { root } = (0, devkit_1.readProjectConfiguration)(tree, schema.appName);
7
+ (0, devkit_1.updateJson)(tree, (0, devkit_1.joinPathFragments)(root, `tsconfig.app.json`), (json) => {
8
+ json.compilerOptions ??= {};
9
+ json.compilerOptions.target = 'ES2020';
10
+ if (schema.mfType === 'remote') {
11
+ json.files ??= [];
12
+ json.files.push(schema.standalone
13
+ ? 'src/app/remote-entry/entry.routes.ts'
14
+ : 'src/app/remote-entry/entry.module.ts');
15
+ }
16
+ return json;
17
+ });
18
+ }
19
+ exports.updateTsConfig = updateTsConfig;
@@ -71,8 +71,8 @@
71
71
  },
72
72
  "standalone": {
73
73
  "type": "boolean",
74
- "description": "Whether the application is a standalone application. _Note: This is only supported in Angular versions >= 14.1.0_",
75
- "default": false
74
+ "description": "Whether the application is a standalone application.",
75
+ "default": true
76
76
  },
77
77
  "typescriptConfiguration": {
78
78
  "type": "boolean",
@@ -3,14 +3,8 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.setupMf = void 0;
4
4
  const devkit_1 = require("@nx/devkit");
5
5
  const lib_1 = require("./lib");
6
- const version_utils_1 = require("../utils/version-utils");
7
6
  const versions_1 = require("../../utils/versions");
8
- const semver_1 = require("semver");
9
7
  async function setupMf(tree, rawOptions) {
10
- const installedAngularInfo = (0, version_utils_1.getInstalledAngularVersionInfo)(tree);
11
- if ((0, semver_1.lt)(installedAngularInfo.version, '14.1.0') && rawOptions.standalone) {
12
- throw new Error(`The --standalone flag is not supported in your current version of Angular (${installedAngularInfo.version}). Please update to a version of Angular that supports Standalone Components (>= 14.1.0).`);
13
- }
14
8
  const options = (0, lib_1.normalizeOptions)(tree, rawOptions);
15
9
  const projectConfig = (0, devkit_1.readProjectConfiguration)(tree, options.appName);
16
10
  let installTask = () => { };
@@ -24,7 +18,7 @@ async function setupMf(tree, rawOptions) {
24
18
  const remotesWithPorts = (0, lib_1.getRemotesWithPorts)(tree, options);
25
19
  (0, lib_1.generateWebpackConfig)(tree, options, projectConfig.root, remotesWithPorts);
26
20
  (0, lib_1.changeBuildTarget)(tree, options);
27
- (0, lib_1.updateTsConfigTarget)(tree, options);
21
+ (0, lib_1.updateTsConfig)(tree, options);
28
22
  (0, lib_1.setupServeTarget)(tree, options);
29
23
  (0, lib_1.fixBootstrap)(tree, projectConfig.root, options);
30
24
  if (options.mfType === 'host') {
@@ -0,0 +1,54 @@
1
+ import { APP_BASE_HREF } from '@angular/common';
2
+ import { CommonEngine } from '@angular/ssr';
3
+ import express from 'express';
4
+ import { fileURLToPath } from 'node:url';
5
+ import { dirname, join, resolve } from 'node:path';
6
+ import <% if (standalone) { %>bootstrap<% } else { %>{ <%= rootModuleClassName %> }<% } %> from './src/<%= main.slice(0, -3) %>';
7
+
8
+ // The Express app is exported so that it can be used by serverless Functions.
9
+ export function app(): express.Express {
10
+ const server = express();
11
+ const serverDistFolder = dirname(fileURLToPath(import.meta.url));
12
+ const browserDistFolder = resolve(serverDistFolder, '../browser');
13
+ const indexHtml = join(serverDistFolder, 'index.server.html');
14
+
15
+ const commonEngine = new CommonEngine();
16
+
17
+ server.set('view engine', 'html');
18
+ server.set('views', browserDistFolder);
19
+
20
+ // Example Express Rest API endpoints
21
+ // server.get('/api/**', (req, res) => { });
22
+ // Serve static files from /browser
23
+ server.get('*.*', express.static(browserDistFolder, {
24
+ maxAge: '1y'
25
+ }));
26
+
27
+ // All regular routes use the Angular engine
28
+ server.get('*', (req, res, next) => {
29
+ const { protocol, originalUrl, baseUrl, headers } = req;
30
+
31
+ commonEngine
32
+ .render({
33
+ bootstrap<% if (!standalone) { %>: <%= rootModuleClassName %><% } %>,
34
+ documentFilePath: indexHtml,
35
+ url: `${protocol}://${headers.host}${originalUrl}`,
36
+ publicPath: browserDistFolder,
37
+ providers: [{ provide: APP_BASE_HREF, useValue: baseUrl }],
38
+ })
39
+ .then((html) => res.send(html))
40
+ .catch((err) => next(err));
41
+ });
42
+
43
+ return server;
44
+ }
45
+
46
+ function run(): void {
47
+ const port = process.env['PORT'] || <%= serverPort %>;
48
+
49
+ // Start up the Node server
50
+ const server = app();
51
+ server.listen(port, () => {
52
+ console.log(`Node Express server listening on http://localhost:${port}`);
53
+ });
54
+ }
@@ -5,8 +5,7 @@ import {ngExpressEngine} from '@nguniversal/express-engine';
5
5
  import * as express from 'express';
6
6
  import {existsSync} from 'fs';
7
7
  import {join} from 'path';
8
-
9
- import {<%= rootModuleClassName %>} from './src/<%= main.slice(0, -3) %>';
8
+ import <% if (standalone) { %>bootstrap<% } else { %>{ <%= rootModuleClassName %> }<% } %> from './src/<%= main.slice(0, -3) %>';
10
9
 
11
10
  // The Express app is exported so that it can be used by serverless Functions.
12
11
  export function app(): express.Express {
@@ -16,7 +15,7 @@ export function app(): express.Express {
16
15
 
17
16
  // Our Universal express-engine (found @ https://github.com/angular/universal/tree/main/modules/express-engine)
18
17
  server.engine('html', ngExpressEngine({
19
- bootstrap: <%= rootModuleClassName %>,
18
+ bootstrap<% if (!standalone) { %>: <%= rootModuleClassName %><% } %>,
20
19
  }));
21
20
 
22
21
  server.set('view engine', 'html');
@@ -57,4 +56,4 @@ if (moduleFilename === __filename || moduleFilename.includes('iisnode')) {
57
56
  run();
58
57
  }
59
58
 
60
- export * from './src/<%= main.slice(0, -3) %>';
59
+ export <% if (standalone) { %>default bootstrap<% } else { %>* from './src/<%= main.slice(0, -3) %>'<% } %>;
@@ -1,23 +1,21 @@
1
- import 'zone.js/dist/zone-node';
1
+ import 'zone.js/node';
2
2
 
3
- import {APP_BASE_HREF} from '@angular/common';
4
- import {ngExpressEngine} from '@nguniversal/express-engine';
3
+ import { APP_BASE_HREF } from '@angular/common';
4
+ import { CommonEngine } from '@angular/ssr';
5
5
  import * as express from 'express';
6
- import {existsSync} from 'fs';
7
- import {join} from 'path';
8
-
9
- import bootstrap 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 './src/<%= main.slice(0, -3) %>';
10
9
 
11
10
  // The Express app is exported so that it can be used by serverless Functions.
12
11
  export function app(): express.Express {
13
12
  const server = express();
14
13
  const distFolder = join(process.cwd(), '<%= browserBundleOutputPath %>');
15
- const indexHtml = existsSync(join(distFolder, 'index.original.html')) ? 'index.original.html' : 'index';
14
+ const indexHtml = existsSync(join(distFolder, 'index.original.html'))
15
+ ? join(distFolder, 'index.original.html')
16
+ : join(distFolder, 'index.html');
16
17
 
17
- // Our Universal express-engine (found @ https://github.com/angular/universal/tree/main/modules/express-engine)
18
- server.engine('html', ngExpressEngine({
19
- bootstrap
20
- }));
18
+ const commonEngine = new CommonEngine();
21
19
 
22
20
  server.set('view engine', 'html');
23
21
  server.set('views', distFolder);
@@ -29,9 +27,20 @@ export function app(): express.Express {
29
27
  maxAge: '1y'
30
28
  }));
31
29
 
32
- // All regular routes use the Universal engine
33
- server.get('*', (req, res) => {
34
- 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));
35
44
  });
36
45
 
37
46
  return server;
@@ -57,4 +66,4 @@ if (moduleFilename === __filename || moduleFilename.includes('iisnode')) {
57
66
  run();
58
67
  }
59
68
 
60
- export default bootstrap;
69
+ export default <% if (standalone) { %>bootstrap<% } else { %><%= rootModuleClassName %><% } %>;
@@ -0,0 +1,2 @@
1
+ import { type Tree } from '@nx/devkit';
2
+ export declare function addDependencies(tree: Tree): void;
@@ -0,0 +1,32 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.addDependencies = void 0;
4
+ const devkit_1 = require("@nx/devkit");
5
+ const version_utils_1 = require("../../utils/version-utils");
6
+ function addDependencies(tree) {
7
+ const pkgVersions = (0, version_utils_1.versions)(tree);
8
+ const { major: angularMajorVersion } = (0, version_utils_1.getInstalledAngularVersionInfo)(tree);
9
+ const dependencies = {
10
+ '@angular/platform-server': (0, version_utils_1.getInstalledPackageVersionInfo)(tree, '@angular/platform-server')
11
+ ?.version ?? pkgVersions.angularVersion,
12
+ express: pkgVersions.expressVersion,
13
+ };
14
+ const devDependencies = {
15
+ '@types/express': pkgVersions.typesExpressVersion,
16
+ };
17
+ if (angularMajorVersion >= 17) {
18
+ dependencies['@angular/ssr'] =
19
+ (0, version_utils_1.getInstalledPackageVersionInfo)(tree, '@angular-devkit/build-angular')
20
+ ?.version ?? pkgVersions.angularDevkitVersion;
21
+ }
22
+ else {
23
+ dependencies['@nguniversal/express-engine'] =
24
+ (0, version_utils_1.getInstalledPackageVersionInfo)(tree, '@nguniversal/express-engine')
25
+ ?.version ?? pkgVersions.ngUniversalVersion;
26
+ devDependencies['@nguniversal/builders'] =
27
+ (0, version_utils_1.getInstalledPackageVersionInfo)(tree, '@nguniversal/builders')?.version ??
28
+ pkgVersions.ngUniversalVersion;
29
+ }
30
+ (0, devkit_1.addDependenciesToPackageJson)(tree, dependencies, devDependencies);
31
+ }
32
+ exports.addDependencies = addDependencies;
@@ -1,3 +1,3 @@
1
1
  import type { Tree } from '@nx/devkit';
2
2
  import type { Schema } from '../schema';
3
- export declare function generateSSRFiles(tree: Tree, schema: Schema): void;
3
+ export declare function generateSSRFiles(tree: Tree, schema: Schema, isUsingApplicationBuilder: boolean): void;
@@ -4,28 +4,25 @@ exports.generateSSRFiles = void 0;
4
4
  const devkit_1 = require("@nx/devkit");
5
5
  const semver_1 = require("semver");
6
6
  const version_utils_1 = require("../../utils/version-utils");
7
- const path_1 = require("path");
8
- function generateSSRFiles(tree, schema) {
9
- const projectConfig = (0, devkit_1.readProjectConfiguration)(tree, schema.project);
10
- const projectRoot = projectConfig.root;
11
- const browserBundleOutputPath = projectConfig.targets.build.options.outputPath;
7
+ function generateSSRFiles(tree, schema, isUsingApplicationBuilder) {
8
+ const { root: projectRoot, targets } = (0, devkit_1.readProjectConfiguration)(tree, schema.project);
9
+ const baseOutputPath = targets.build.options.outputPath;
10
+ const browserBundleOutputPath = (0, devkit_1.joinPathFragments)(baseOutputPath, 'browser');
12
11
  const pathToFiles = (0, devkit_1.joinPathFragments)(__dirname, '..', 'files');
13
- (0, devkit_1.generateFiles)(tree, (0, path_1.join)(pathToFiles, 'base'), projectRoot, {
14
- ...schema,
15
- tpl: '',
16
- });
12
+ const { version: angularVersion, major: angularMajorVersion } = (0, version_utils_1.getInstalledAngularVersionInfo)(tree);
17
13
  if (schema.standalone) {
18
14
  (0, devkit_1.generateFiles)(tree, (0, devkit_1.joinPathFragments)(pathToFiles, 'standalone'), projectRoot, { ...schema, browserBundleOutputPath, tpl: '' });
19
15
  }
20
16
  else {
21
17
  (0, devkit_1.generateFiles)(tree, (0, devkit_1.joinPathFragments)(pathToFiles, 'ngmodule', 'base'), projectRoot, { ...schema, browserBundleOutputPath, tpl: '' });
22
- const { major: angularMajorVersion, version: angularVersion } = (0, version_utils_1.getInstalledAngularVersionInfo)(tree);
23
- if (angularMajorVersion < 15) {
24
- (0, devkit_1.generateFiles)(tree, (0, devkit_1.joinPathFragments)(pathToFiles, 'ngmodule', 'v14'), projectRoot, { ...schema, browserBundleOutputPath, tpl: '' });
25
- }
26
18
  if ((0, semver_1.lt)(angularVersion, '15.2.0')) {
27
19
  (0, devkit_1.generateFiles)(tree, (0, devkit_1.joinPathFragments)(pathToFiles, 'ngmodule', 'pre-v15-2'), projectRoot, { ...schema, browserBundleOutputPath, tpl: '' });
28
20
  }
29
21
  }
22
+ (0, devkit_1.generateFiles)(tree, (0, devkit_1.joinPathFragments)(pathToFiles, 'server', ...(isUsingApplicationBuilder
23
+ ? ['application-builder']
24
+ : angularMajorVersion >= 17
25
+ ? ['server-builder', 'v17+']
26
+ : ['server-builder', 'pre-v17'])), projectRoot, { ...schema, browserBundleOutputPath, tpl: '' });
30
27
  }
31
28
  exports.generateSSRFiles = generateSSRFiles;
@@ -0,0 +1,4 @@
1
+ import { type Tree } from '@nx/devkit';
2
+ import type { Schema } from '../schema';
3
+ export declare function setServerTsConfigOptionsForApplicationBuilder(tree: Tree, options: Schema): void;
4
+ export declare function generateTsConfigServerJsonForBrowserBuilder(tree: Tree, options: Schema): void;
@@ -0,0 +1,26 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.generateTsConfigServerJsonForBrowserBuilder = exports.setServerTsConfigOptionsForApplicationBuilder = void 0;
4
+ const devkit_1 = require("@nx/devkit");
5
+ const path_1 = require("path");
6
+ function setServerTsConfigOptionsForApplicationBuilder(tree, options) {
7
+ const { targets } = (0, devkit_1.readProjectConfiguration)(tree, options.project);
8
+ const tsConfigPath = targets.build.options.tsConfig;
9
+ (0, devkit_1.updateJson)(tree, tsConfigPath, (json) => {
10
+ json.files ??= [];
11
+ json.files.push((0, devkit_1.joinPathFragments)('src', options.main), (0, devkit_1.joinPathFragments)(options.serverFileName));
12
+ json.compilerOptions ??= {};
13
+ json.compilerOptions.types ??= [];
14
+ json.compilerOptions.types.push('node');
15
+ return json;
16
+ });
17
+ }
18
+ exports.setServerTsConfigOptionsForApplicationBuilder = setServerTsConfigOptionsForApplicationBuilder;
19
+ function generateTsConfigServerJsonForBrowserBuilder(tree, options) {
20
+ const { root } = (0, devkit_1.readProjectConfiguration)(tree, options.project);
21
+ (0, devkit_1.generateFiles)(tree, (0, path_1.join)(__dirname, '..', 'files', 'root'), root, {
22
+ ...options,
23
+ tpl: '',
24
+ });
25
+ }
26
+ exports.generateTsConfigServerJsonForBrowserBuilder = generateTsConfigServerJsonForBrowserBuilder;
@@ -1,6 +1,9 @@
1
+ export * from './add-dependencies';
1
2
  export * from './generate-files';
3
+ export * from './generate-server-ts-config';
2
4
  export * from './normalize-options';
3
5
  export * from './update-app-module';
4
6
  export * from './update-project-config';
5
7
  export * from './validate-options';
6
8
  export * from './add-hydration';
9
+ export * from './set-router-initial-navigation';
@@ -1,9 +1,12 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  const tslib_1 = require("tslib");
4
+ tslib_1.__exportStar(require("./add-dependencies"), exports);
4
5
  tslib_1.__exportStar(require("./generate-files"), exports);
6
+ tslib_1.__exportStar(require("./generate-server-ts-config"), exports);
5
7
  tslib_1.__exportStar(require("./normalize-options"), exports);
6
8
  tslib_1.__exportStar(require("./update-app-module"), exports);
7
9
  tslib_1.__exportStar(require("./update-project-config"), exports);
8
10
  tslib_1.__exportStar(require("./validate-options"), exports);
9
11
  tslib_1.__exportStar(require("./add-hydration"), exports);
12
+ tslib_1.__exportStar(require("./set-router-initial-navigation"), exports);
@@ -2,8 +2,14 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.normalizeOptions = void 0;
4
4
  const ast_utils_1 = require("../../../utils/nx-devkit/ast-utils");
5
+ const version_utils_1 = require("../../utils/version-utils");
5
6
  function normalizeOptions(tree, options) {
6
7
  const isStandaloneApp = (0, ast_utils_1.isNgStandaloneApp)(tree, options.project);
8
+ let hydration = options.hydration;
9
+ if (hydration === undefined) {
10
+ const { major: angularMajorVersion } = (0, version_utils_1.getInstalledAngularVersionInfo)(tree);
11
+ hydration = angularMajorVersion >= 17;
12
+ }
7
13
  return {
8
14
  project: options.project,
9
15
  appId: options.appId ?? 'serverApp',
@@ -14,7 +20,7 @@ function normalizeOptions(tree, options) {
14
20
  rootModuleClassName: options.rootModuleClassName ?? 'AppServerModule',
15
21
  skipFormat: options.skipFormat ?? false,
16
22
  standalone: options.standalone ?? isStandaloneApp,
17
- hydration: options.hydration ?? false,
23
+ hydration,
18
24
  };
19
25
  }
20
26
  exports.normalizeOptions = normalizeOptions;
@@ -0,0 +1,3 @@
1
+ import { type Tree } from '@nx/devkit';
2
+ import type { Schema } from '../schema';
3
+ export declare function setRouterInitialNavigation(tree: Tree, options: Schema): void;