@nx/angular 22.3.0-canary.20251211-205daee → 22.3.0-canary.20251215-e864b6a

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 (252) hide show
  1. package/executors.json +5 -0
  2. package/migrations.json +200 -291
  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/update-angular-cli.d.ts +4 -0
  184. package/src/migrations/update-22-3-0/update-angular-cli.d.ts.map +1 -0
  185. package/src/migrations/{update-16-4-0 → update-22-3-0}/update-angular-cli.js +1 -1
  186. package/src/migrations/update-22-3-0/update-module-resolution.d.ts +3 -0
  187. package/src/migrations/update-22-3-0/update-module-resolution.d.ts.map +1 -0
  188. package/src/migrations/update-22-3-0/update-module-resolution.js +61 -0
  189. package/src/migrations/update-22-3-0/update-ssr-webpack-config.d.ts +3 -0
  190. package/src/migrations/update-22-3-0/update-ssr-webpack-config.d.ts.map +1 -0
  191. package/src/migrations/update-22-3-0/update-ssr-webpack-config.js +111 -0
  192. package/src/migrations/update-22-3-0/update-typescript-lib.d.ts +3 -0
  193. package/src/migrations/update-22-3-0/update-typescript-lib.d.ts.map +1 -0
  194. package/src/migrations/update-22-3-0/update-typescript-lib.js +98 -0
  195. package/src/migrations/update-22-3-0/update-unit-test-runner-option.d.ts +3 -0
  196. package/src/migrations/update-22-3-0/update-unit-test-runner-option.d.ts.map +1 -0
  197. package/src/migrations/update-22-3-0/update-unit-test-runner-option.js +44 -0
  198. package/src/plugins/plugin.d.ts.map +1 -1
  199. package/src/plugins/plugin.js +40 -24
  200. package/src/utils/backward-compatible-versions.d.ts +7 -9
  201. package/src/utils/backward-compatible-versions.d.ts.map +1 -1
  202. package/src/utils/backward-compatible-versions.js +20 -14
  203. package/src/utils/nx-devkit/ast-utils.d.ts.map +1 -1
  204. package/src/utils/nx-devkit/ast-utils.js +2 -13
  205. package/src/utils/targets.d.ts +6 -1
  206. package/src/utils/targets.d.ts.map +1 -1
  207. package/src/utils/targets.js +20 -3
  208. package/src/utils/test-runners.d.ts +2 -1
  209. package/src/utils/test-runners.d.ts.map +1 -1
  210. package/src/utils/test-runners.js +2 -1
  211. package/src/utils/version-utils.d.ts +2 -2
  212. package/src/utils/version-utils.d.ts.map +1 -1
  213. package/src/utils/version-utils.js +3 -2
  214. package/src/utils/versions.d.ts +7 -6
  215. package/src/utils/versions.d.ts.map +1 -1
  216. package/src/utils/versions.js +8 -7
  217. package/src/utils/zoneless.d.ts +3 -0
  218. package/src/utils/zoneless.d.ts.map +1 -0
  219. package/src/utils/zoneless.js +28 -0
  220. package/{mf/index.d.ts → types/nx-angular-mf.d.ts} +1 -1
  221. package/types/nx-angular-mf.d.ts.map +1 -0
  222. package/types/nx-angular.d.ts +3 -0
  223. package/types/nx-angular.d.ts.map +1 -0
  224. package/index.d.ts +0 -3
  225. package/index.d.ts.map +0 -1
  226. package/mf/index.d.ts.map +0 -1
  227. package/src/executors/utilities/ng-packagr/pre-v19/stylesheet-processor.d.ts +0 -28
  228. package/src/executors/utilities/ng-packagr/pre-v19/stylesheet-processor.d.ts.map +0 -1
  229. package/src/executors/utilities/ng-packagr/pre-v19/stylesheet-processor.js +0 -159
  230. package/src/executors/utilities/ng-packagr/v19+/stylesheet-processor.d.ts.map +0 -1
  231. package/src/generators/setup-ssr/files/pre-v19/ngmodule-src/__main__ +0 -1
  232. package/src/generators/setup-ssr/files/pre-v19/ngmodule-src/app/__rootModuleFileName__ +0 -14
  233. package/src/generators/setup-ssr/files/pre-v19/root/tsconfig.server.json__tpl__ +0 -15
  234. package/src/generators/setup-ssr/files/pre-v19/server/application-builder/__serverFileName__ +0 -57
  235. package/src/generators/setup-ssr/files/pre-v19/server/server-builder/__serverFileName__ +0 -72
  236. package/src/generators/setup-ssr/files/pre-v19/standalone-src/__main__ +0 -12
  237. package/src/generators/setup-ssr/files/pre-v19/standalone-src/app/app.config.server.ts__tpl__ +0 -11
  238. package/src/migrations/update-16-2-0/switch-data-persistence-operators-imports-to-ngrx-router-store.d.ts +0 -3
  239. package/src/migrations/update-16-2-0/switch-data-persistence-operators-imports-to-ngrx-router-store.d.ts.map +0 -1
  240. package/src/migrations/update-16-2-0/switch-data-persistence-operators-imports-to-ngrx-router-store.js +0 -122
  241. package/src/migrations/update-16-4-0/rename-angular-eslint-accesibility-rules.d.ts +0 -3
  242. package/src/migrations/update-16-4-0/rename-angular-eslint-accesibility-rules.d.ts.map +0 -1
  243. package/src/migrations/update-16-4-0/rename-angular-eslint-accesibility-rules.js +0 -34
  244. package/src/migrations/update-16-4-0/update-angular-cli.d.ts +0 -4
  245. package/src/migrations/update-16-4-0/update-angular-cli.d.ts.map +0 -1
  246. package/src/migrations/update-16-6-0/explicitly-set-projects-to-update-buildable-deps.d.ts +0 -3
  247. package/src/migrations/update-16-6-0/explicitly-set-projects-to-update-buildable-deps.d.ts.map +0 -1
  248. package/src/migrations/update-16-6-0/explicitly-set-projects-to-update-buildable-deps.js +0 -34
  249. package/src/migrations/update-16-7-0/update-angular-cli.d.ts +0 -4
  250. package/src/migrations/update-16-7-0/update-angular-cli.d.ts.map +0 -1
  251. package/src/migrations/update-16-7-0/update-angular-cli.js +0 -14
  252. /package/src/executors/utilities/ng-packagr/{v19+/stylesheet-processor.d.ts → stylesheet-processor.d.ts} +0 -0
@@ -4,7 +4,6 @@ exports.updateProjectConfigForApplicationBuilder = updateProjectConfigForApplica
4
4
  exports.updateProjectConfigForBrowserBuilder = updateProjectConfigForBrowserBuilder;
5
5
  const devkit_1 = require("@nx/devkit");
6
6
  const ts_solution_setup_1 = require("@nx/js/src/utils/typescript/ts-solution-setup");
7
- const version_utils_1 = require("../../utils/version-utils");
8
7
  const constants_1 = require("./constants");
9
8
  function updateProjectConfigForApplicationBuilder(tree, options) {
10
9
  const project = (0, devkit_1.readProjectConfiguration)(tree, options.project);
@@ -29,27 +28,18 @@ function updateProjectConfigForApplicationBuilder(tree, options) {
29
28
  }
30
29
  }
31
30
  }
32
- const { major: angularMajorVersion } = (0, version_utils_1.getInstalledAngularVersionInfo)(tree);
33
31
  const sourceRoot = (0, ts_solution_setup_1.getProjectSourceRoot)(project, tree);
34
32
  buildTarget.options ??= {};
35
33
  buildTarget.options.outputPath = outputPath;
36
34
  buildTarget.options.server = (0, devkit_1.joinPathFragments)(sourceRoot, options.main);
37
- if (angularMajorVersion >= 19) {
38
- buildTarget.options.ssr = {
39
- entry: (0, devkit_1.joinPathFragments)(sourceRoot, options.serverFileName),
40
- };
41
- if (options.serverRouting) {
42
- buildTarget.options.outputMode = 'server';
43
- }
44
- else {
45
- buildTarget.options.prerender = true;
46
- }
35
+ buildTarget.options.ssr = {
36
+ entry: (0, devkit_1.joinPathFragments)(sourceRoot, options.serverFileName),
37
+ };
38
+ if (options.serverRouting) {
39
+ buildTarget.options.outputMode = 'server';
47
40
  }
48
41
  else {
49
42
  buildTarget.options.prerender = true;
50
- buildTarget.options.ssr = {
51
- entry: (0, devkit_1.joinPathFragments)(project.root, options.serverFileName),
52
- };
53
43
  }
54
44
  (0, devkit_1.updateProjectConfiguration)(tree, options.project, project);
55
45
  }
@@ -65,7 +55,6 @@ function updateProjectConfigForBrowserBuilder(tree, options) {
65
55
  configurations[key] = getServerOptions(options);
66
56
  }
67
57
  }
68
- const { major: angularMajorVersion } = (0, version_utils_1.getInstalledAngularVersionInfo)(tree);
69
58
  const sourceRoot = (0, ts_solution_setup_1.getProjectSourceRoot)(projectConfig, tree);
70
59
  projectConfig.targets.server = {
71
60
  dependsOn: ['build'],
@@ -74,7 +63,7 @@ function updateProjectConfigForBrowserBuilder(tree, options) {
74
63
  : '@nx/angular:webpack-server',
75
64
  options: {
76
65
  outputPath: (0, devkit_1.joinPathFragments)(baseOutputPath, 'server'),
77
- main: (0, devkit_1.joinPathFragments)(angularMajorVersion >= 19 ? sourceRoot : projectConfig.root, options.serverFileName),
66
+ main: (0, devkit_1.joinPathFragments)(sourceRoot, options.serverFileName),
78
67
  tsConfig: (0, devkit_1.joinPathFragments)(projectConfig.root, 'tsconfig.server.json'),
79
68
  ...(buildTarget.options ? getServerOptions(buildTarget.options) : {}),
80
69
  },
@@ -1 +1 @@
1
- {"version":3,"file":"validate-options.d.ts","sourceRoot":"","sources":["../../../../../../../packages/angular/src/generators/setup-ssr/lib/validate-options.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAIvC,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AAExC,wBAAgB,eAAe,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI,CAWjE"}
1
+ {"version":3,"file":"validate-options.d.ts","sourceRoot":"","sources":["../../../../../../../packages/angular/src/generators/setup-ssr/lib/validate-options.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAIvC,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AAExC,wBAAgB,eAAe,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI,CAyBjE"}
@@ -11,6 +11,15 @@ function validateOptions(tree, options) {
11
11
  if (angularMajorVersion !== 19 && options.serverRouting !== undefined) {
12
12
  throw new Error(`The "serverRouting" option is only supported in Angular versions 19.x.x. You are using Angular ${angularVersion}.`);
13
13
  }
14
+ if (options.serverRouting) {
15
+ const { targets } = (0, devkit_1.readProjectConfiguration)(tree, options.project);
16
+ const isUsingApplicationBuilder = targets.build.executor === '@angular-devkit/build-angular:application' ||
17
+ targets.build.executor === '@angular/build:application' ||
18
+ targets.build.executor === '@nx/angular:application';
19
+ if (!isUsingApplicationBuilder) {
20
+ throw new Error('Server routing APIs can only be added to a project using the "application" builder.');
21
+ }
22
+ }
14
23
  }
15
24
  function validateProject(tree, project) {
16
25
  (0, validations_1.validateProject)(tree, project);
@@ -4,6 +4,8 @@ export type AddJestOptions = {
4
4
  projectRoot: string;
5
5
  skipPackageJson: boolean;
6
6
  strict: boolean;
7
+ runtimeTsconfigFileName: 'tsconfig.app.json' | 'tsconfig.lib.json';
8
+ zoneless: boolean;
7
9
  addPlugin?: boolean;
8
10
  };
9
11
  export declare function addJest(tree: Tree, options: AddJestOptions): Promise<void>;
@@ -1 +1 @@
1
- {"version":3,"file":"add-jest.d.ts","sourceRoot":"","sources":["../../../../../../packages/angular/src/generators/utils/add-jest.ts"],"names":[],"mappings":"AAAA,OAAO,EAIL,KAAK,IAAI,EACV,MAAM,YAAY,CAAC;AAIpB,MAAM,MAAM,cAAc,GAAG;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,eAAe,EAAE,OAAO,CAAC;IACzB,MAAM,EAAE,OAAO,CAAC;IAChB,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB,CAAC;AAEF,wBAAsB,OAAO,CAC3B,IAAI,EAAE,IAAI,EACV,OAAO,EAAE,cAAc,GACtB,OAAO,CAAC,IAAI,CAAC,CAoDf"}
1
+ {"version":3,"file":"add-jest.d.ts","sourceRoot":"","sources":["../../../../../../packages/angular/src/generators/utils/add-jest.ts"],"names":[],"mappings":"AAAA,OAAO,EAKL,KAAK,IAAI,EACV,MAAM,YAAY,CAAC;AAIpB,MAAM,MAAM,cAAc,GAAG;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,eAAe,EAAE,OAAO,CAAC;IACzB,MAAM,EAAE,OAAO,CAAC;IAChB,uBAAuB,EAAE,mBAAmB,GAAG,mBAAmB,CAAC;IACnE,QAAQ,EAAE,OAAO,CAAC;IAClB,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB,CAAC;AAEF,wBAAsB,OAAO,CAC3B,IAAI,EAAE,IAAI,EACV,OAAO,EAAE,cAAc,GACtB,OAAO,CAAC,IAAI,CAAC,CAkEf"}
@@ -7,14 +7,18 @@ const version_utils_1 = require("./version-utils");
7
7
  async function addJest(tree, options) {
8
8
  if (!options.skipPackageJson) {
9
9
  const pkgVersions = (0, version_utils_1.versions)(tree);
10
+ const devDependencies = {
11
+ 'jest-preset-angular': pkgVersions.jestPresetAngularVersion,
12
+ };
13
+ const { major: angularMajorVersion } = (0, version_utils_1.getInstalledAngularVersionInfo)(tree);
14
+ if (angularMajorVersion < 21) {
15
+ // force jest v29.7.0
16
+ devDependencies.jest = '^29.7.0';
17
+ }
10
18
  (0, devkit_1.addDependenciesToPackageJson)(tree, {
11
- // TODO(leo): jest-preset-angular still needs this until https://github.com/thymikee/jest-preset-angular/pull/3079 is merged
19
+ // TODO(leo): jest-preset-angular still needs this, it has it as a peer dependency
12
20
  '@angular/platform-browser-dynamic': pkgVersions.angularVersion,
13
- }, {
14
- // force jest v29.7.0, Angular doesn't support Jest v30 yet: https://github.com/angular/angular-cli/pull/30761
15
- jest: '^29.7.0',
16
- 'jest-preset-angular': pkgVersions.jestPresetAngularVersion,
17
- }, undefined, true);
21
+ }, devDependencies, undefined, true);
18
22
  }
19
23
  const { configurationGenerator } = (0, devkit_1.ensurePackage)('@nx/jest', versions_1.nxVersion);
20
24
  await configurationGenerator(tree, {
@@ -28,11 +32,37 @@ async function addJest(tree, options) {
28
32
  addExplicitTargets: !options.addPlugin,
29
33
  });
30
34
  const setupFile = (0, devkit_1.joinPathFragments)(options.projectRoot, 'src', 'test-setup.ts');
31
- if (options.strict && tree.exists(setupFile)) {
32
- const contents = tree.read(setupFile, 'utf-8');
33
- tree.write(setupFile, contents.replace('setupZoneTestEnv();', `setupZoneTestEnv({
35
+ if (options.zoneless) {
36
+ tree.write(setupFile, getZonelessSetupFile(options.strict));
37
+ }
38
+ else {
39
+ tree.write(setupFile, getZoneSetupFile(options.strict));
40
+ }
41
+ const runtimeTsconfigPath = (0, devkit_1.joinPathFragments)(options.projectRoot, options.runtimeTsconfigFileName);
42
+ if (tree.exists(runtimeTsconfigPath)) {
43
+ (0, devkit_1.updateJson)(tree, runtimeTsconfigPath, (json) => {
44
+ const excludeSet = new Set([
45
+ ...(json.exclude ?? []),
46
+ 'src/test-setup.ts',
47
+ ]);
48
+ json.exclude = Array.from(excludeSet);
49
+ return json;
50
+ });
51
+ }
52
+ }
53
+ const strictTestEnvOptions = `{
34
54
  errorOnUnknownElements: true,
35
55
  errorOnUnknownProperties: true
36
- });`));
37
- }
56
+ }`;
57
+ function getZonelessSetupFile(strict) {
58
+ return `import { setupZonelessTestEnv } from 'jest-preset-angular/setup-env/zoneless';
59
+
60
+ setupZonelessTestEnv(${strict ? strictTestEnvOptions : ''});
61
+ `;
62
+ }
63
+ function getZoneSetupFile(strict) {
64
+ return `import { setupZoneTestEnv } from 'jest-preset-angular/setup-env/zone';
65
+
66
+ setupZoneTestEnv(${strict ? strictTestEnvOptions : ''});
67
+ `;
38
68
  }
@@ -1,10 +1,19 @@
1
1
  import { type Tree } from '@nx/devkit';
2
- export type AddVitestOptions = {
2
+ export type AddVitestAngularOptions = {
3
3
  name: string;
4
4
  projectRoot: string;
5
5
  skipPackageJson: boolean;
6
+ useNxUnitTestRunnerExecutor?: boolean;
7
+ };
8
+ export type AddVitestAnalogOptions = {
9
+ name: string;
10
+ projectRoot: string;
11
+ skipFormat: boolean;
12
+ skipPackageJson: boolean;
6
13
  strict: boolean;
14
+ zoneless: boolean;
7
15
  addPlugin?: boolean;
8
16
  };
9
- export declare function addVitest(tree: Tree, options: AddVitestOptions): Promise<void>;
17
+ export declare function addVitestAngular(tree: Tree, options: AddVitestAngularOptions): Promise<void>;
18
+ export declare function addVitestAnalog(tree: Tree, options: AddVitestAnalogOptions): Promise<void>;
10
19
  //# sourceMappingURL=add-vitest.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"add-vitest.d.ts","sourceRoot":"","sources":["../../../../../../packages/angular/src/generators/utils/add-vitest.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,IAAI,EACV,MAAM,YAAY,CAAC;AAIpB,MAAM,MAAM,gBAAgB,GAAG;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,eAAe,EAAE,OAAO,CAAC;IACzB,MAAM,EAAE,OAAO,CAAC;IAChB,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB,CAAC;AAEF,wBAAsB,SAAS,CAC7B,IAAI,EAAE,IAAI,EACV,OAAO,EAAE,gBAAgB,GACxB,OAAO,CAAC,IAAI,CAAC,CAyBf"}
1
+ {"version":3,"file":"add-vitest.d.ts","sourceRoot":"","sources":["../../../../../../packages/angular/src/generators/utils/add-vitest.ts"],"names":[],"mappings":"AAAA,OAAO,EASL,KAAK,IAAI,EAKV,MAAM,YAAY,CAAC;AAUpB,MAAM,MAAM,uBAAuB,GAAG;IACpC,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,eAAe,EAAE,OAAO,CAAC;IACzB,2BAA2B,CAAC,EAAE,OAAO,CAAC;CACvC,CAAC;AAEF,MAAM,MAAM,sBAAsB,GAAG;IACnC,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,OAAO,CAAC;IACpB,eAAe,EAAE,OAAO,CAAC;IACzB,MAAM,EAAE,OAAO,CAAC;IAChB,QAAQ,EAAE,OAAO,CAAC;IAClB,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB,CAAC;AAEF,wBAAsB,gBAAgB,CACpC,IAAI,EAAE,IAAI,EACV,OAAO,EAAE,uBAAuB,GAC/B,OAAO,CAAC,IAAI,CAAC,CA2Cf;AAED,wBAAsB,eAAe,CACnC,IAAI,EAAE,IAAI,EACV,OAAO,EAAE,sBAAsB,GAC9B,OAAO,CAAC,IAAI,CAAC,CAoCf"}
@@ -33,11 +33,61 @@ var __importStar = (this && this.__importStar) || (function () {
33
33
  };
34
34
  })();
35
35
  Object.defineProperty(exports, "__esModule", { value: true });
36
- exports.addVitest = addVitest;
36
+ exports.addVitestAngular = addVitestAngular;
37
+ exports.addVitestAnalog = addVitestAnalog;
37
38
  const devkit_1 = require("@nx/devkit");
39
+ const devkit_internals_1 = require("nx/src/devkit-internals");
40
+ const semver_1 = require("semver");
38
41
  const versions_1 = require("../../utils/versions");
39
42
  const version_utils_1 = require("./version-utils");
40
- async function addVitest(tree, options) {
43
+ async function addVitestAngular(tree, options) {
44
+ validateVitestVersion(tree);
45
+ const executor = options.useNxUnitTestRunnerExecutor
46
+ ? '@nx/angular:unit-test'
47
+ : '@angular/build:unit-test';
48
+ const project = (0, devkit_1.readProjectConfiguration)(tree, options.name);
49
+ project.targets ??= {};
50
+ project.targets.test = { executor, options: {} };
51
+ (0, devkit_1.updateProjectConfiguration)(tree, options.name, project);
52
+ const nxJson = (0, devkit_1.readNxJson)(tree);
53
+ nxJson.targetDefaults ??= {};
54
+ nxJson.targetDefaults[executor] ??= {
55
+ cache: true,
56
+ inputs: nxJson.namedInputs && 'production' in nxJson.namedInputs
57
+ ? ['default', '^production']
58
+ : ['default', '^default'],
59
+ };
60
+ (0, devkit_1.updateNxJson)(tree, nxJson);
61
+ configureTypeScriptForVitest(tree, options.projectRoot);
62
+ addVitestScreenshotsToGitIgnore(tree);
63
+ if (!options.skipPackageJson) {
64
+ const pkgVersions = (0, version_utils_1.versions)(tree, { minAngularMajorVersion: 21 });
65
+ const angularDevkitVersion = (0, version_utils_1.getInstalledAngularDevkitVersion)(tree) ??
66
+ pkgVersions.angularDevkitVersion;
67
+ (0, devkit_1.addDependenciesToPackageJson)(tree, {}, {
68
+ '@angular/build': angularDevkitVersion,
69
+ jsdom: pkgVersions.jsdomVersion,
70
+ vitest: pkgVersions.vitestVersion,
71
+ }, undefined, true);
72
+ }
73
+ }
74
+ async function addVitestAnalog(tree, options) {
75
+ const { major: angularMajorVersion } = (0, version_utils_1.getInstalledAngularVersionInfo)(tree);
76
+ if (!options.skipPackageJson) {
77
+ const angularDevkitVersion = (0, version_utils_1.getInstalledAngularDevkitVersion)(tree) ??
78
+ (0, version_utils_1.versions)(tree).angularDevkitVersion;
79
+ const devDependencies = {
80
+ '@angular/build': angularDevkitVersion,
81
+ };
82
+ // Add compatible vitest/jsdom versions BEFORE calling configurationGenerator
83
+ // so that @nx/vitest respects existing versions
84
+ if (angularMajorVersion < 21) {
85
+ const pkgVersions = (0, version_utils_1.versions)(tree);
86
+ devDependencies['vitest'] = pkgVersions.vitestVersion;
87
+ devDependencies['jsdom'] = pkgVersions.jsdomVersion;
88
+ }
89
+ (0, devkit_1.addDependenciesToPackageJson)(tree, {}, devDependencies, undefined, true);
90
+ }
41
91
  (0, devkit_1.ensurePackage)('@nx/vitest', versions_1.nxVersion);
42
92
  const { configurationGenerator } = await Promise.resolve().then(() => __importStar(require('@nx/vitest/generators')));
43
93
  await configurationGenerator(tree, {
@@ -46,10 +96,127 @@ async function addVitest(tree, options) {
46
96
  testEnvironment: 'jsdom',
47
97
  coverageProvider: 'v8',
48
98
  addPlugin: options.addPlugin ?? false,
99
+ skipFormat: options.skipFormat,
100
+ skipPackageJson: options.skipPackageJson,
49
101
  });
50
- if (!options.skipPackageJson) {
51
- const angularDevkitVersion = (0, version_utils_1.getInstalledAngularDevkitVersion)(tree) ??
52
- (0, version_utils_1.versions)(tree).angularDevkitVersion;
53
- (0, devkit_1.addDependenciesToPackageJson)(tree, {}, { '@angular/build': angularDevkitVersion }, undefined, true);
102
+ createAnalogSetupFile(tree, options, angularMajorVersion);
103
+ }
104
+ function validateVitestVersion(tree) {
105
+ let installedVitestVersion = null;
106
+ // Try to get the actual installed version from node_modules
107
+ try {
108
+ const { packageJson } = (0, devkit_internals_1.readModulePackageJson)('vitest');
109
+ installedVitestVersion = packageJson.version;
110
+ }
111
+ catch { }
112
+ const pkgVersions = (0, version_utils_1.versions)(tree, { minAngularMajorVersion: 21 });
113
+ const requiredRange = pkgVersions.vitestVersion;
114
+ if (installedVitestVersion) {
115
+ if (!(0, semver_1.satisfies)(installedVitestVersion, requiredRange, {
116
+ includePrerelease: true,
117
+ })) {
118
+ throw new Error(`The installed vitest version "${installedVitestVersion}" is not compatible with the version range Angular requires: "${requiredRange}".`);
119
+ }
120
+ return;
121
+ }
122
+ // not installed, get it from package.json
123
+ installedVitestVersion = (0, devkit_1.getDependencyVersionFromPackageJson)(tree, 'vitest');
124
+ if (!installedVitestVersion) {
125
+ // not declared anywhere, it'll be installed with the correct version
126
+ return;
127
+ }
128
+ if ((0, semver_1.valid)(installedVitestVersion)) {
129
+ if (!(0, semver_1.satisfies)(installedVitestVersion, requiredRange, {
130
+ includePrerelease: true,
131
+ })) {
132
+ throw new Error(`The installed vitest version "${installedVitestVersion}" is not compatible with the version range Angular requires: "${requiredRange}".`);
133
+ }
134
+ }
135
+ else if ((0, semver_1.validRange)(installedVitestVersion)) {
136
+ // it's a range from package.json, check if it intersects with the required range
137
+ if (!(0, semver_1.intersects)(installedVitestVersion, requiredRange, {
138
+ includePrerelease: true,
139
+ })) {
140
+ throw new Error(`The declared vitest version range "${installedVitestVersion}" does not overlap with the version range Angular requires: "${requiredRange}". When installed, this may cause compatibility issues.`);
141
+ }
142
+ }
143
+ else {
144
+ // it can be anything, we don't have a way to validate it
145
+ // log a warning and continue
146
+ devkit_1.logger.warn(`The declared vitest version "${installedVitestVersion}" is not a valid semver range, ` +
147
+ `so we can't validate if it's compatible with the version range Angular requires: "${requiredRange}". ` +
148
+ `The generation will continue, but you may encounter issues if the version is not compatible.`);
149
+ }
150
+ }
151
+ function configureTypeScriptForVitest(tree, projectRoot) {
152
+ (0, devkit_1.writeJson)(tree, (0, devkit_1.joinPathFragments)(projectRoot, 'tsconfig.spec.json'), {
153
+ extends: './tsconfig.json',
154
+ compilerOptions: {
155
+ outDir: `${(0, devkit_1.offsetFromRoot)(projectRoot)}dist/out-tsc`,
156
+ types: ['vitest/globals'],
157
+ },
158
+ include: ['src/**/*.ts', 'src/**/*.d.ts'],
159
+ });
160
+ const projectTsconfigPath = (0, devkit_1.joinPathFragments)(projectRoot, 'tsconfig.json');
161
+ (0, devkit_1.updateJson)(tree, projectTsconfigPath, (json) => {
162
+ json.references ??= [];
163
+ if (!json.references.some((ref) => ref.path === './tsconfig.spec.json')) {
164
+ json.references.push({ path: './tsconfig.spec.json' });
165
+ }
166
+ return json;
167
+ });
168
+ }
169
+ function addVitestScreenshotsToGitIgnore(tree) {
170
+ if (tree.exists('.gitignore')) {
171
+ let content = tree.read('.gitignore', 'utf-8');
172
+ if (/^__screenshots__\/$/gm.test(content)) {
173
+ return;
174
+ }
175
+ content = `${content}\n__screenshots__/\n`;
176
+ tree.write('.gitignore', content);
177
+ }
178
+ else {
179
+ devkit_1.logger.warn(`Couldn't find .gitignore file to update`);
180
+ }
181
+ }
182
+ function createAnalogSetupFile(tree, options, angularMajorVersion) {
183
+ let setupFile;
184
+ if (angularMajorVersion >= 21) {
185
+ setupFile = `import '@angular/compiler';
186
+ import '@analogjs/vitest-angular/setup-snapshots';
187
+ import { setupTestBed } from '@analogjs/vitest-angular/setup-testbed';
188
+
189
+ setupTestBed(${options.zoneless ? '' : '{ zoneless: false }'});
190
+ `;
191
+ }
192
+ else if (angularMajorVersion === 20) {
193
+ setupFile = `import '@angular/compiler';
194
+ import '@analogjs/vitest-angular/setup-zone';
195
+ import {
196
+ BrowserTestingModule,
197
+ platformBrowserTesting,
198
+ } from '@angular/platform-browser/testing';
199
+ import { getTestBed } from '@angular/core/testing';
200
+
201
+ getTestBed().initTestEnvironment(
202
+ BrowserTestingModule,
203
+ platformBrowserTesting(),
204
+ );
205
+ `;
206
+ }
207
+ else {
208
+ setupFile = `import '@analogjs/vitest-angular/setup-zone';
209
+ import {
210
+ BrowserDynamicTestingModule,
211
+ platformBrowserDynamicTesting,
212
+ } from '@angular/platform-browser-dynamic/testing';
213
+ import { getTestBed } from '@angular/core/testing';
214
+
215
+ getTestBed().initTestEnvironment(
216
+ BrowserDynamicTestingModule,
217
+ platformBrowserDynamicTesting(),
218
+ );
219
+ `;
54
220
  }
221
+ tree.write((0, devkit_1.joinPathFragments)(options.projectRoot, 'src/test-setup.ts'), setupFile);
55
222
  }
@@ -1,2 +1,2 @@
1
- export declare function assertRspackIsCSR(bundler: 'webpack' | 'rspack', ssr: boolean, serverRouting: boolean): void;
1
+ export declare function assertRspackIsCSR(bundler: 'webpack' | 'rspack', ssr: boolean): void;
2
2
  //# sourceMappingURL=assert-mf-utils.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"assert-mf-utils.d.ts","sourceRoot":"","sources":["../../../../../../packages/angular/src/generators/utils/assert-mf-utils.ts"],"names":[],"mappings":"AAAA,wBAAgB,iBAAiB,CAC/B,OAAO,EAAE,SAAS,GAAG,QAAQ,EAC7B,GAAG,EAAE,OAAO,EACZ,aAAa,EAAE,OAAO,QAYvB"}
1
+ {"version":3,"file":"assert-mf-utils.d.ts","sourceRoot":"","sources":["../../../../../../packages/angular/src/generators/utils/assert-mf-utils.ts"],"names":[],"mappings":"AAAA,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,SAAS,GAAG,QAAQ,EAAE,GAAG,EAAE,OAAO,QAM5E"}
@@ -1,10 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.assertRspackIsCSR = assertRspackIsCSR;
4
- function assertRspackIsCSR(bundler, ssr, serverRouting) {
5
- if (bundler === 'rspack' && serverRouting) {
6
- throw new Error('Server Routing is not currently supported for Angular Rspack Module Federation. Please use webpack instead.');
7
- }
4
+ function assertRspackIsCSR(bundler, ssr) {
8
5
  if (bundler === 'rspack' && ssr) {
9
6
  throw new Error('SSR is not currently supported for Angular Rspack Module Federation. Please use webpack instead.');
10
7
  }
@@ -1,3 +1,3 @@
1
1
  import { type GeneratorCallback, type Tree } from '@nx/devkit';
2
- export declare function ensureAngularDependencies(tree: Tree): GeneratorCallback;
2
+ export declare function ensureAngularDependencies(tree: Tree, zoneless: boolean): GeneratorCallback;
3
3
  //# sourceMappingURL=ensure-angular-dependencies.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ensure-angular-dependencies.d.ts","sourceRoot":"","sources":["../../../../../../packages/angular/src/generators/utils/ensure-angular-dependencies.ts"],"names":[],"mappings":"AAAA,OAAO,EAIL,KAAK,iBAAiB,EACtB,KAAK,IAAI,EACV,MAAM,YAAY,CAAC;AAQpB,wBAAgB,yBAAyB,CAAC,IAAI,EAAE,IAAI,GAAG,iBAAiB,CAuEvE"}
1
+ {"version":3,"file":"ensure-angular-dependencies.d.ts","sourceRoot":"","sources":["../../../../../../packages/angular/src/generators/utils/ensure-angular-dependencies.ts"],"names":[],"mappings":"AAAA,OAAO,EAIL,KAAK,iBAAiB,EACtB,KAAK,IAAI,EACV,MAAM,YAAY,CAAC;AAQpB,wBAAgB,yBAAyB,CACvC,IAAI,EAAE,IAAI,EACV,QAAQ,EAAE,OAAO,GAChB,iBAAiB,CA0EnB"}
@@ -3,7 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.ensureAngularDependencies = ensureAngularDependencies;
4
4
  const devkit_1 = require("@nx/devkit");
5
5
  const version_utils_1 = require("./version-utils");
6
- function ensureAngularDependencies(tree) {
6
+ function ensureAngularDependencies(tree, zoneless) {
7
7
  const dependencies = {};
8
8
  const devDependencies = {};
9
9
  const pkgVersions = (0, version_utils_1.versions)(tree);
@@ -21,8 +21,6 @@ function ensureAngularDependencies(tree) {
21
21
  pkgVersions.rxjsVersion;
22
22
  const tsLibVersion = (0, devkit_1.getDependencyVersionFromPackageJson)(tree, 'tslib', packageJson) ??
23
23
  pkgVersions.tsLibVersion;
24
- const zoneJsVersion = (0, devkit_1.getDependencyVersionFromPackageJson)(tree, 'zone.js', packageJson) ??
25
- pkgVersions.zoneJsVersion;
26
24
  dependencies['@angular/common'] = angularVersion;
27
25
  dependencies['@angular/compiler'] = angularVersion;
28
26
  dependencies['@angular/core'] = angularVersion;
@@ -31,7 +29,11 @@ function ensureAngularDependencies(tree) {
31
29
  dependencies['@angular/router'] = angularVersion;
32
30
  dependencies.rxjs = rxjsVersion;
33
31
  dependencies.tslib = tsLibVersion;
34
- dependencies['zone.js'] = zoneJsVersion;
32
+ if (!zoneless) {
33
+ const zoneJsVersion = (0, devkit_1.getDependencyVersionFromPackageJson)(tree, 'zone.js', packageJson) ??
34
+ pkgVersions.zoneJsVersion;
35
+ dependencies['zone.js'] = zoneJsVersion;
36
+ }
35
37
  }
36
38
  const installedAngularDevkitVersion = (0, version_utils_1.getInstalledAngularDevkitVersion)(tree);
37
39
  if (!installedAngularDevkitVersion) {
@@ -6,7 +6,6 @@ const devkit_1 = require("@nx/devkit");
6
6
  const ensure_typescript_1 = require("@nx/js/src/utils/typescript/ensure-typescript");
7
7
  const path_1 = require("path");
8
8
  const ast_utils_1 = require("../../../utils/nx-devkit/ast-utils");
9
- const version_utils_1 = require("../version-utils");
10
9
  const module_info_1 = require("./module-info");
11
10
  let tsModule;
12
11
  let tsquery;
@@ -61,15 +60,8 @@ function getStandaloneComponents(tree, filePath) {
61
60
  }
62
61
  const fileContent = tree.read(filePath, 'utf-8');
63
62
  const ast = tsquery.ast(fileContent);
64
- const { major: angularMajorVersion } = (0, version_utils_1.getInstalledAngularVersionInfo)(tree);
65
- if (angularMajorVersion < 19) {
66
- // in angular 18 and below, standalone: false is the default, so only
67
- // components with standalone: true are considered standalone
68
- const components = tsquery(ast, 'ClassDeclaration:has(Decorator > CallExpression:has(Identifier[name=Component]) ObjectLiteralExpression PropertyAssignment:has(Identifier[name=standalone]) > TrueKeyword) > Identifier', { visitAllChildren: true });
69
- return components.map((component) => component.getText());
70
- }
71
- // in angular 19 and above, standalone: true is the default, so all components
72
- // except those with standalone: false are considered standalone
63
+ // standalone: true is the default, so all components except those with
64
+ // standalone: false are considered standalone
73
65
  const standaloneComponentNodes = tsquery(ast, 'ClassDeclaration:has(Decorator > CallExpression:has(Identifier[name=Component]) ObjectLiteralExpression:not(:has(PropertyAssignment:has(Identifier[name=standalone]) > FalseKeyword))) > Identifier', { visitAllChildren: true });
74
66
  return standaloneComponentNodes.map((component) => component.getText());
75
67
  }
@@ -0,0 +1,13 @@
1
+ import type { Tree } from '@nx/devkit';
2
+ import type * as ts from 'typescript';
3
+ /**
4
+ * Gets the resolved value of a specific compiler option from the TypeScript configuration hierarchy.
5
+ *
6
+ * @param tree - The file system tree
7
+ * @param tsConfigPath - Path to the tsconfig file to resolve
8
+ * @param optionName - Name of the compiler option to retrieve
9
+ * @returns The resolved value of the compiler option, or undefined if not set
10
+ */
11
+ export declare function getDefinedCompilerOption(tree: Tree, tsConfigPath: string, optionName: keyof ts.CompilerOptions): any | undefined;
12
+ export declare function readCompilerOptionsFromTsConfig(tree: Tree, tsConfigPath: string): ts.CompilerOptions;
13
+ //# sourceMappingURL=tsconfig-utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tsconfig-utils.d.ts","sourceRoot":"","sources":["../../../../../../packages/angular/src/generators/utils/tsconfig-utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAGvC,OAAO,KAAK,KAAK,EAAE,MAAM,YAAY,CAAC;AAEtC;;;;;;;GAOG;AACH,wBAAgB,wBAAwB,CACtC,IAAI,EAAE,IAAI,EACV,YAAY,EAAE,MAAM,EACpB,UAAU,EAAE,MAAM,EAAE,CAAC,eAAe,GACnC,GAAG,GAAG,SAAS,CAIjB;AAED,wBAAgB,+BAA+B,CAC7C,IAAI,EAAE,IAAI,EACV,YAAY,EAAE,MAAM,GACnB,EAAE,CAAC,eAAe,CAgBpB"}
@@ -0,0 +1,29 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getDefinedCompilerOption = getDefinedCompilerOption;
4
+ exports.readCompilerOptionsFromTsConfig = readCompilerOptionsFromTsConfig;
5
+ const ensure_typescript_1 = require("@nx/js/src/utils/typescript/ensure-typescript");
6
+ const node_path_1 = require("node:path");
7
+ /**
8
+ * Gets the resolved value of a specific compiler option from the TypeScript configuration hierarchy.
9
+ *
10
+ * @param tree - The file system tree
11
+ * @param tsConfigPath - Path to the tsconfig file to resolve
12
+ * @param optionName - Name of the compiler option to retrieve
13
+ * @returns The resolved value of the compiler option, or undefined if not set
14
+ */
15
+ function getDefinedCompilerOption(tree, tsConfigPath, optionName) {
16
+ const compilerOptions = readCompilerOptionsFromTsConfig(tree, tsConfigPath);
17
+ return compilerOptions[optionName];
18
+ }
19
+ function readCompilerOptionsFromTsConfig(tree, tsConfigPath) {
20
+ const ts = (0, ensure_typescript_1.ensureTypescript)();
21
+ const tsSysFromTree = {
22
+ ...ts.sys,
23
+ readDirectory: () => [],
24
+ readFile: (path) => tree.read(path, 'utf-8'),
25
+ fileExists: (path) => tree.exists(path),
26
+ };
27
+ const parsed = ts.parseJsonConfigFileContent(ts.readConfigFile(tsConfigPath, tsSysFromTree.readFile).config, tsSysFromTree, (0, node_path_1.dirname)(tsConfigPath));
28
+ return parsed.options;
29
+ }
@@ -1,5 +1,5 @@
1
1
  import { type Tree } from '@nx/devkit';
2
- import { type PackageCompatVersions, type PackageLatestVersions } from '../../utils/backward-compatible-versions';
2
+ import { type PackageCompatVersions, type SupportedVersion, supportedVersions, type VersionMap } from '../../utils/backward-compatible-versions';
3
3
  export declare function getInstalledAngularDevkitVersion(tree: Tree): string | null;
4
4
  export declare function getInstalledAngularVersion(tree: Tree): string;
5
5
  export declare function getInstalledAngularMajorVersion(tree: Tree): number;
@@ -11,10 +11,20 @@ export declare function getInstalledPackageVersionInfo(tree: Tree, pkgName: stri
11
11
  major: number;
12
12
  version: string;
13
13
  };
14
- export declare function versions(tree: Tree): PackageLatestVersions | PackageCompatVersions;
14
+ export declare function versions(tree: Tree): PackageCompatVersions;
15
+ export declare function versions<V extends SupportedVersion>(tree: Tree, options: {
16
+ minAngularMajorVersion: V;
17
+ }): MinVersionReturnType<V>;
15
18
  /**
16
19
  * Temporary helper to abstract away the version of angular-rspack to be installed
17
20
  * until we stop supporting Angular 19.
18
21
  */
19
- export declare function getAngularRspackVersion(tree: Tree): string | null;
22
+ export declare function getAngularRspackVersion(tree: Tree): string;
23
+ type TakeUntil<Arr extends readonly any[], Target> = Arr extends readonly [
24
+ infer Head,
25
+ ...infer Rest
26
+ ] ? Head extends Target ? [Head] : [Head, ...TakeUntil<Rest, Target>] : [];
27
+ type VersionsAtLeast<MinV extends SupportedVersion> = Extract<SupportedVersion, TakeUntil<typeof supportedVersions, MinV>[number]>;
28
+ type MinVersionReturnType<MinV extends SupportedVersion> = VersionMap[VersionsAtLeast<MinV>];
29
+ export {};
20
30
  //# sourceMappingURL=version-utils.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"version-utils.d.ts","sourceRoot":"","sources":["../../../../../../packages/angular/src/generators/utils/version-utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAuC,KAAK,IAAI,EAAE,MAAM,YAAY,CAAC;AAE5E,OAAO,EAEL,KAAK,qBAAqB,EAC1B,KAAK,qBAAqB,EAC3B,MAAM,0CAA0C,CAAC;AAIlD,wBAAgB,gCAAgC,CAAC,IAAI,EAAE,IAAI,GAAG,MAAM,GAAG,IAAI,CAO1E;AAED,wBAAgB,0BAA0B,CAAC,IAAI,EAAE,IAAI,GAAG,MAAM,CAiB7D;AAED,wBAAgB,+BAA+B,CAAC,IAAI,EAAE,IAAI,GAAG,MAAM,CAElE;AAED,wBAAgB,8BAA8B,CAAC,IAAI,EAAE,IAAI;;;EAOxD;AAED,wBAAgB,8BAA8B,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM;;;EAIzE;AAED,wBAAgB,QAAQ,CACtB,IAAI,EAAE,IAAI,GACT,qBAAqB,GAAG,qBAAqB,CAU/C;AAED;;;GAGG;AACH,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,IAAI,GAAG,MAAM,GAAG,IAAI,CAcjE"}
1
+ {"version":3,"file":"version-utils.d.ts","sourceRoot":"","sources":["../../../../../../packages/angular/src/generators/utils/version-utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAuC,KAAK,IAAI,EAAE,MAAM,YAAY,CAAC;AAE5E,OAAO,EAEL,KAAK,qBAAqB,EAC1B,KAAK,gBAAgB,EACrB,iBAAiB,EACjB,KAAK,UAAU,EAChB,MAAM,0CAA0C,CAAC;AAIlD,wBAAgB,gCAAgC,CAAC,IAAI,EAAE,IAAI,GAAG,MAAM,GAAG,IAAI,CAO1E;AAED,wBAAgB,0BAA0B,CAAC,IAAI,EAAE,IAAI,GAAG,MAAM,CAiB7D;AAED,wBAAgB,+BAA+B,CAAC,IAAI,EAAE,IAAI,GAAG,MAAM,CAElE;AAED,wBAAgB,8BAA8B,CAAC,IAAI,EAAE,IAAI;;;EAOxD;AAED,wBAAgB,8BAA8B,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM;;;EAIzE;AAED,wBAAgB,QAAQ,CAAC,IAAI,EAAE,IAAI,GAAG,qBAAqB,CAAC;AAC5D,wBAAgB,QAAQ,CAAC,CAAC,SAAS,gBAAgB,EACjD,IAAI,EAAE,IAAI,EACV,OAAO,EAAE;IAAE,sBAAsB,EAAE,CAAC,CAAA;CAAE,GACrC,oBAAoB,CAAC,CAAC,CAAC,CAAC;AAoB3B;;;GAGG;AACH,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,IAAI,GAAG,MAAM,CAQ1D;AAID,KAAK,SAAS,CAAC,GAAG,SAAS,SAAS,GAAG,EAAE,EAAE,MAAM,IAAI,GAAG,SAAS,SAAS;IACxE,MAAM,IAAI;IACV,GAAG,MAAM,IAAI;CACd,GACG,IAAI,SAAS,MAAM,GACjB,CAAC,IAAI,CAAC,GACN,CAAC,IAAI,EAAE,GAAG,SAAS,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,GACpC,EAAE,CAAC;AACP,KAAK,eAAe,CAAC,IAAI,SAAS,gBAAgB,IAAI,OAAO,CAC3D,gBAAgB,EAChB,SAAS,CAAC,OAAO,iBAAiB,EAAE,IAAI,CAAC,CAAC,MAAM,CAAC,CAClD,CAAC;AACF,KAAK,oBAAoB,CAAC,IAAI,SAAS,gBAAgB,IACrD,UAAU,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC"}
@@ -39,16 +39,14 @@ function getInstalledPackageVersionInfo(tree, pkgName) {
39
39
  const version = (0, devkit_1.getDependencyVersionFromPackageJson)(tree, pkgName);
40
40
  return version ? { major: (0, semver_1.major)((0, semver_1.coerce)(version)), version } : null;
41
41
  }
42
- function versions(tree) {
42
+ function versions(tree, options) {
43
43
  const majorAngularVersion = getInstalledAngularMajorVersion(tree);
44
- switch (majorAngularVersion) {
45
- case 18:
46
- return backward_compatible_versions_1.backwardCompatibleVersions.angularV18;
47
- case 19:
48
- return backward_compatible_versions_1.backwardCompatibleVersions.angularV19;
49
- default:
50
- return latestVersions;
44
+ if (options?.minAngularMajorVersion &&
45
+ majorAngularVersion < options.minAngularMajorVersion) {
46
+ throw new Error(`This operation requires Angular ${options.minAngularMajorVersion}+, but found version ${majorAngularVersion}. ` +
47
+ `This shouldn't happen. Please report it as a bug and include the stack trace.`);
51
48
  }
49
+ return backward_compatible_versions_1.backwardCompatibleVersions[majorAngularVersion] ?? latestVersions;
52
50
  }
53
51
  /**
54
52
  * Temporary helper to abstract away the version of angular-rspack to be installed
@@ -56,14 +54,9 @@ function versions(tree) {
56
54
  */
57
55
  function getAngularRspackVersion(tree) {
58
56
  const majorAngularVersion = getInstalledAngularMajorVersion(tree);
59
- if (majorAngularVersion === 19) {
60
- return backward_compatible_versions_1.backwardCompatibleVersions.angularV19.angularRspackVersion;
61
- }
62
- if (majorAngularVersion >= 20) {
63
- // Starting with Angular 20, we can use an Angular Rspack version that is
64
- // aligned with the Nx version
65
- return latestVersions.nxVersion;
66
- }
67
- // Lower versions of Angular are not supported
68
- return null;
57
+ // Starting with Angular 20, we can use an Angular Rspack version that is
58
+ // aligned with the Nx version
59
+ return majorAngularVersion === 19
60
+ ? backward_compatible_versions_1.backwardCompatibleVersions[19].angularRspackVersion
61
+ : latestVersions.nxVersion;
69
62
  }
@@ -1 +1 @@
1
- {"version":3,"file":"update-module-resolution.d.ts","sourceRoot":"","sources":["../../../../../../packages/angular/src/migrations/update-21-2-0/update-module-resolution.ts"],"names":[],"mappings":"AAAA,OAAO,EAAyB,KAAK,IAAI,EAAc,MAAM,YAAY,CAAC;AAW1E,yBAA+B,IAAI,EAAE,IAAI,iBA0BxC"}
1
+ {"version":3,"file":"update-module-resolution.d.ts","sourceRoot":"","sources":["../../../../../../packages/angular/src/migrations/update-21-2-0/update-module-resolution.ts"],"names":[],"mappings":"AAAA,OAAO,EAIL,KAAK,IAAI,EAEV,MAAM,YAAY,CAAC;AAkBpB,yBAA+B,IAAI,EAAE,IAAI,iBAqCxC"}