@nx/angular 0.0.0-pr-32490-e4fdfa9 → 0.0.0-pr-32868-a65a4a2

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 (50) hide show
  1. package/README.md +1 -1
  2. package/migrations.json +328 -13
  3. package/package.json +9 -9
  4. package/spec/src/migrations/update-21-5-0/remove-default-karma-configuration-files.spec.d.ts +2 -0
  5. package/spec/src/migrations/update-21-5-0/remove-default-karma-configuration-files.spec.d.ts.map +1 -0
  6. package/spec/src/migrations/update-21-5-0/update-angular-cli.spec.d.ts +2 -0
  7. package/spec/src/migrations/update-21-5-0/update-angular-cli.spec.d.ts.map +1 -0
  8. package/spec/src/migrations/update-21-6-1/update-angular-cli.spec.d.ts +2 -0
  9. package/spec/src/migrations/update-21-6-1/update-angular-cli.spec.d.ts.map +1 -0
  10. package/src/generators/application/lib/normalize-options.d.ts.map +1 -1
  11. package/src/generators/application/lib/normalize-options.js +7 -1
  12. package/src/generators/convert-to-rspack/convert-to-rspack.d.ts.map +1 -1
  13. package/src/generators/convert-to-rspack/convert-to-rspack.js +9 -3
  14. package/src/generators/remote/files/standalone/src/bootstrap.server.ts__tmpl__ +6 -1
  15. package/src/generators/remote/lib/update-ssr-setup.d.ts.map +1 -1
  16. package/src/generators/remote/lib/update-ssr-setup.js +10 -1
  17. package/src/generators/setup-mf/lib/fix-bootstrap.js +2 -2
  18. package/src/generators/setup-ssr/files/pre-v19/standalone-src/__main__ +6 -1
  19. package/src/generators/setup-ssr/files/v19/application-builder/standalone-src/__main__ +6 -1
  20. package/src/generators/setup-ssr/files/v19/server-builder/standalone-src/__main__ +6 -1
  21. package/src/generators/setup-ssr/files/v20+/application-builder/standalone-src/__main__ +6 -1
  22. package/src/generators/setup-ssr/files/v20+/server-builder/standalone-src/__main__ +6 -1
  23. package/src/generators/setup-ssr/lib/generate-files.d.ts.map +1 -1
  24. package/src/generators/setup-ssr/lib/generate-files.js +9 -1
  25. package/src/generators/utils/add-jest.d.ts.map +1 -1
  26. package/src/generators/utils/add-jest.js +5 -1
  27. package/src/generators/utils/version-utils.d.ts +5 -0
  28. package/src/generators/utils/version-utils.d.ts.map +1 -1
  29. package/src/generators/utils/version-utils.js +18 -0
  30. package/src/migrations/update-21-5-0/remove-default-karma-configuration-files.d.ts +3 -0
  31. package/src/migrations/update-21-5-0/remove-default-karma-configuration-files.d.ts.map +1 -0
  32. package/src/migrations/update-21-5-0/remove-default-karma-configuration-files.js +53 -0
  33. package/src/migrations/update-21-5-0/update-angular-cli.d.ts +4 -0
  34. package/src/migrations/update-21-5-0/update-angular-cli.d.ts.map +1 -0
  35. package/src/migrations/update-21-5-0/update-angular-cli.js +23 -0
  36. package/src/migrations/update-21-5-0/utils/karma-config-analyzer.d.ts +28 -0
  37. package/src/migrations/update-21-5-0/utils/karma-config-analyzer.d.ts.map +1 -0
  38. package/src/migrations/update-21-5-0/utils/karma-config-analyzer.js +139 -0
  39. package/src/migrations/update-21-5-0/utils/karma-config-comparer.d.ts +64 -0
  40. package/src/migrations/update-21-5-0/utils/karma-config-comparer.d.ts.map +1 -0
  41. package/src/migrations/update-21-5-0/utils/karma-config-comparer.js +145 -0
  42. package/src/migrations/update-21-6-1/update-angular-cli.d.ts +4 -0
  43. package/src/migrations/update-21-6-1/update-angular-cli.d.ts.map +1 -0
  44. package/src/migrations/update-21-6-1/update-angular-cli.js +23 -0
  45. package/src/utils/backward-compatible-versions.d.ts +1 -1
  46. package/src/utils/backward-compatible-versions.d.ts.map +1 -1
  47. package/src/utils/backward-compatible-versions.js +0 -1
  48. package/src/utils/versions.d.ts +5 -6
  49. package/src/utils/versions.d.ts.map +1 -1
  50. package/src/utils/versions.js +6 -7
package/README.md CHANGED
@@ -22,7 +22,7 @@
22
22
 
23
23
  # Nx: Smart Repos · Fast Builds
24
24
 
25
- An AI-first build platform that connects everything from your editor to CI. Helping you deliver fast, without breaking things.
25
+ Get to green PRs in half the time. Nx optimizes your builds, scales your CI, and fixes failed PRs. Built for developers and AI agents.
26
26
 
27
27
  This package is an [Angular plugin for Nx](https://nx.dev/nx-api/angular).
28
28
 
package/migrations.json CHANGED
@@ -357,6 +357,32 @@
357
357
  "version": "21.5.0-beta.0",
358
358
  "description": "Set the 'tsConfig' option to build and test targets to help with Angular migration issues.",
359
359
  "factory": "./src/migrations/update-21-5-0/set-tsconfig-option"
360
+ },
361
+ "update-angular-cli-version-20-2-0": {
362
+ "cli": "nx",
363
+ "version": "21.5.0-beta.2",
364
+ "requires": {
365
+ "@angular/core": ">=20.2.0"
366
+ },
367
+ "description": "Update the @angular/cli package version to ~20.2.0.",
368
+ "factory": "./src/migrations/update-21-5-0/update-angular-cli"
369
+ },
370
+ "remove-default-karma-configuration-files": {
371
+ "version": "21.5.0-beta.2",
372
+ "requires": {
373
+ "@angular/core": ">=20.2.0"
374
+ },
375
+ "description": "Remove any Karma configuration files that only contain the default content. The default configuration is automatically available without a specific project configurationfile.",
376
+ "factory": "./src/migrations/update-21-5-0/remove-default-karma-configuration-files"
377
+ },
378
+ "update-angular-cli-version-20-3-0": {
379
+ "cli": "nx",
380
+ "version": "21.6.1-beta.2",
381
+ "requires": {
382
+ "@angular/core": ">=20.3.0"
383
+ },
384
+ "description": "Update the @angular/cli package version to ~20.3.0.",
385
+ "factory": "./src/migrations/update-21-6-1/update-angular-cli"
360
386
  }
361
387
  },
362
388
  "packageJsonUpdates": {
@@ -1889,29 +1915,318 @@
1889
1915
  }
1890
1916
  }
1891
1917
  },
1892
- "21.3.5-jest": {
1893
- "version": "21.3.5-beta.0",
1918
+ "21.4.0-ngrx": {
1919
+ "version": "21.4.0-beta.3",
1894
1920
  "requires": {
1895
- "@angular/compiler-cli": ">=18.0.0 <21.0.0",
1896
- "@angular/core": ">=18.0.0 <21.0.0",
1897
- "@angular/platform-browser-dynamic": ">=18.0.0 <21.0.0",
1898
- "jest": "^30.0.0"
1921
+ "@angular/core": "^20.0.0"
1899
1922
  },
1900
1923
  "packages": {
1901
- "jest-preset-angular": {
1902
- "version": "~15.0.0",
1924
+ "@ngrx/store": {
1925
+ "version": "^20.0.0",
1903
1926
  "alwaysAddToPackageJson": false
1904
1927
  }
1905
1928
  }
1906
1929
  },
1907
- "21.4.0-ngrx": {
1908
- "version": "21.4.0-beta.3",
1930
+ "21.5.0": {
1931
+ "version": "21.5.0-beta.2",
1932
+ "x-prompt": "Do you want to update the Angular version to v20.2?",
1909
1933
  "requires": {
1910
- "@angular/core": "^20.0.0"
1934
+ "@angular/core": ">=20.1.0 <20.2.0"
1911
1935
  },
1912
1936
  "packages": {
1913
- "@ngrx/store": {
1914
- "version": "^20.0.0",
1937
+ "@angular-devkit/build-angular": {
1938
+ "version": "~20.2.0",
1939
+ "alwaysAddToPackageJson": false
1940
+ },
1941
+ "@angular-devkit/core": {
1942
+ "version": "~20.2.0",
1943
+ "alwaysAddToPackageJson": false
1944
+ },
1945
+ "@angular-devkit/schematics": {
1946
+ "version": "~20.2.0",
1947
+ "alwaysAddToPackageJson": false
1948
+ },
1949
+ "@angular/build": {
1950
+ "version": "~20.2.0",
1951
+ "alwaysAddToPackageJson": false
1952
+ },
1953
+ "@angular/pwa": {
1954
+ "version": "~20.2.0",
1955
+ "alwaysAddToPackageJson": false
1956
+ },
1957
+ "@angular/ssr": {
1958
+ "version": "~20.2.0",
1959
+ "alwaysAddToPackageJson": false
1960
+ },
1961
+ "@schematics/angular": {
1962
+ "version": "~20.2.0",
1963
+ "alwaysAddToPackageJson": false
1964
+ },
1965
+ "@angular-devkit/architect": {
1966
+ "version": "~0.2002.0",
1967
+ "alwaysAddToPackageJson": false
1968
+ },
1969
+ "@angular-devkit/build-webpack": {
1970
+ "version": "~0.2002.0",
1971
+ "alwaysAddToPackageJson": false
1972
+ },
1973
+ "@angular/core": {
1974
+ "version": "~20.2.0",
1975
+ "alwaysAddToPackageJson": true
1976
+ },
1977
+ "@angular/material": {
1978
+ "version": "~20.2.0",
1979
+ "alwaysAddToPackageJson": false
1980
+ },
1981
+ "@angular/cdk": {
1982
+ "version": "~20.2.0",
1983
+ "alwaysAddToPackageJson": false
1984
+ },
1985
+ "@angular/google-maps": {
1986
+ "version": "~20.2.0",
1987
+ "alwaysAddToPackageJson": false
1988
+ },
1989
+ "ng-packagr": {
1990
+ "version": "~20.2.0",
1991
+ "alwaysAddToPackageJson": false
1992
+ }
1993
+ }
1994
+ },
1995
+ "21.5.0-angular-eslint": {
1996
+ "version": "21.5.0-beta.2",
1997
+ "requires": {
1998
+ "@angular/core": ">= 20.0.0 < 21.0.0",
1999
+ "typescript-eslint": "^8.0.0",
2000
+ "eslint": "^8.57.0 || ^9.0.0"
2001
+ },
2002
+ "packages": {
2003
+ "angular-eslint": {
2004
+ "version": "^20.2.0",
2005
+ "alwaysAddToPackageJson": false
2006
+ },
2007
+ "@angular-eslint/eslint-plugin": {
2008
+ "version": "^20.2.0",
2009
+ "alwaysAddToPackageJson": false
2010
+ },
2011
+ "@angular-eslint/eslint-plugin-template": {
2012
+ "version": "^20.2.0",
2013
+ "alwaysAddToPackageJson": false
2014
+ },
2015
+ "@angular-eslint/template-parser": {
2016
+ "version": "^20.2.0",
2017
+ "alwaysAddToPackageJson": false
2018
+ },
2019
+ "@angular-eslint/utils": {
2020
+ "version": "^20.2.0",
2021
+ "alwaysAddToPackageJson": false
2022
+ },
2023
+ "@angular-eslint/schematics": {
2024
+ "version": "^20.2.0",
2025
+ "alwaysAddToPackageJson": false
2026
+ },
2027
+ "@angular-eslint/test-utils": {
2028
+ "version": "^20.2.0",
2029
+ "alwaysAddToPackageJson": false
2030
+ },
2031
+ "@angular-eslint/builder": {
2032
+ "version": "^20.2.0",
2033
+ "alwaysAddToPackageJson": false
2034
+ },
2035
+ "@angular-eslint/bundled-angular-compiler": {
2036
+ "version": "^20.2.0",
2037
+ "alwaysAddToPackageJson": false
2038
+ }
2039
+ }
2040
+ },
2041
+ "21.5.0-@angular-eslint": {
2042
+ "version": "21.5.0-beta.2",
2043
+ "requires": {
2044
+ "@angular/core": ">= 20.0.0 < 21.0.0",
2045
+ "eslint": "^8.57.0 || ^9.0.0"
2046
+ },
2047
+ "packages": {
2048
+ "@angular-eslint/eslint-plugin": {
2049
+ "version": "^20.2.0",
2050
+ "alwaysAddToPackageJson": false
2051
+ },
2052
+ "@angular-eslint/eslint-plugin-template": {
2053
+ "version": "^20.2.0",
2054
+ "alwaysAddToPackageJson": false
2055
+ },
2056
+ "@angular-eslint/template-parser": {
2057
+ "version": "^20.2.0",
2058
+ "alwaysAddToPackageJson": false
2059
+ },
2060
+ "@angular-eslint/utils": {
2061
+ "version": "^20.2.0",
2062
+ "alwaysAddToPackageJson": false
2063
+ },
2064
+ "@angular-eslint/schematics": {
2065
+ "version": "^20.2.0",
2066
+ "alwaysAddToPackageJson": false
2067
+ },
2068
+ "@angular-eslint/test-utils": {
2069
+ "version": "^20.2.0",
2070
+ "alwaysAddToPackageJson": false
2071
+ },
2072
+ "@angular-eslint/builder": {
2073
+ "version": "^20.2.0",
2074
+ "alwaysAddToPackageJson": false
2075
+ },
2076
+ "@angular-eslint/bundled-angular-compiler": {
2077
+ "version": "^20.2.0",
2078
+ "alwaysAddToPackageJson": false
2079
+ }
2080
+ }
2081
+ },
2082
+ "21.6.1": {
2083
+ "version": "21.6.1-beta.2",
2084
+ "x-prompt": "Do you want to update the Angular version to v20.3?",
2085
+ "requires": {
2086
+ "@angular/core": ">=20.2.0 <20.3.0"
2087
+ },
2088
+ "packages": {
2089
+ "@angular-devkit/build-angular": {
2090
+ "version": "~20.3.0",
2091
+ "alwaysAddToPackageJson": false
2092
+ },
2093
+ "@angular-devkit/core": {
2094
+ "version": "~20.3.0",
2095
+ "alwaysAddToPackageJson": false
2096
+ },
2097
+ "@angular-devkit/schematics": {
2098
+ "version": "~20.3.0",
2099
+ "alwaysAddToPackageJson": false
2100
+ },
2101
+ "@angular/build": {
2102
+ "version": "~20.3.0",
2103
+ "alwaysAddToPackageJson": false
2104
+ },
2105
+ "@angular/pwa": {
2106
+ "version": "~20.3.0",
2107
+ "alwaysAddToPackageJson": false
2108
+ },
2109
+ "@angular/ssr": {
2110
+ "version": "~20.3.0",
2111
+ "alwaysAddToPackageJson": false
2112
+ },
2113
+ "@schematics/angular": {
2114
+ "version": "~20.3.0",
2115
+ "alwaysAddToPackageJson": false
2116
+ },
2117
+ "@angular-devkit/architect": {
2118
+ "version": "~0.2003.0",
2119
+ "alwaysAddToPackageJson": false
2120
+ },
2121
+ "@angular-devkit/build-webpack": {
2122
+ "version": "~0.2003.0",
2123
+ "alwaysAddToPackageJson": false
2124
+ },
2125
+ "@angular/core": {
2126
+ "version": "~20.3.0",
2127
+ "alwaysAddToPackageJson": true
2128
+ },
2129
+ "@angular/material": {
2130
+ "version": "~20.2.3",
2131
+ "alwaysAddToPackageJson": false
2132
+ },
2133
+ "@angular/cdk": {
2134
+ "version": "~20.2.3",
2135
+ "alwaysAddToPackageJson": false
2136
+ },
2137
+ "@angular/google-maps": {
2138
+ "version": "~20.2.3",
2139
+ "alwaysAddToPackageJson": false
2140
+ },
2141
+ "ng-packagr": {
2142
+ "version": "~20.3.0",
2143
+ "alwaysAddToPackageJson": false
2144
+ }
2145
+ }
2146
+ },
2147
+ "21.6.1-angular-eslint": {
2148
+ "version": "21.6.1-beta.2",
2149
+ "requires": {
2150
+ "@angular/core": ">= 20.0.0 < 21.0.0",
2151
+ "typescript-eslint": "^8.0.0",
2152
+ "eslint": "^8.57.0 || ^9.0.0"
2153
+ },
2154
+ "packages": {
2155
+ "angular-eslint": {
2156
+ "version": "^20.3.0",
2157
+ "alwaysAddToPackageJson": false
2158
+ },
2159
+ "@angular-eslint/eslint-plugin": {
2160
+ "version": "^20.3.0",
2161
+ "alwaysAddToPackageJson": false
2162
+ },
2163
+ "@angular-eslint/eslint-plugin-template": {
2164
+ "version": "^20.3.0",
2165
+ "alwaysAddToPackageJson": false
2166
+ },
2167
+ "@angular-eslint/template-parser": {
2168
+ "version": "^20.3.0",
2169
+ "alwaysAddToPackageJson": false
2170
+ },
2171
+ "@angular-eslint/utils": {
2172
+ "version": "^20.3.0",
2173
+ "alwaysAddToPackageJson": false
2174
+ },
2175
+ "@angular-eslint/schematics": {
2176
+ "version": "^20.3.0",
2177
+ "alwaysAddToPackageJson": false
2178
+ },
2179
+ "@angular-eslint/test-utils": {
2180
+ "version": "^20.3.0",
2181
+ "alwaysAddToPackageJson": false
2182
+ },
2183
+ "@angular-eslint/builder": {
2184
+ "version": "^20.3.0",
2185
+ "alwaysAddToPackageJson": false
2186
+ },
2187
+ "@angular-eslint/bundled-angular-compiler": {
2188
+ "version": "^20.3.0",
2189
+ "alwaysAddToPackageJson": false
2190
+ }
2191
+ }
2192
+ },
2193
+ "21.6.1-@angular-eslint": {
2194
+ "version": "21.6.1-beta.2",
2195
+ "requires": {
2196
+ "@angular/core": ">= 20.0.0 < 21.0.0",
2197
+ "eslint": "^8.57.0 || ^9.0.0"
2198
+ },
2199
+ "packages": {
2200
+ "@angular-eslint/eslint-plugin": {
2201
+ "version": "^20.3.0",
2202
+ "alwaysAddToPackageJson": false
2203
+ },
2204
+ "@angular-eslint/eslint-plugin-template": {
2205
+ "version": "^20.3.0",
2206
+ "alwaysAddToPackageJson": false
2207
+ },
2208
+ "@angular-eslint/template-parser": {
2209
+ "version": "^20.3.0",
2210
+ "alwaysAddToPackageJson": false
2211
+ },
2212
+ "@angular-eslint/utils": {
2213
+ "version": "^20.3.0",
2214
+ "alwaysAddToPackageJson": false
2215
+ },
2216
+ "@angular-eslint/schematics": {
2217
+ "version": "^20.3.0",
2218
+ "alwaysAddToPackageJson": false
2219
+ },
2220
+ "@angular-eslint/test-utils": {
2221
+ "version": "^20.3.0",
2222
+ "alwaysAddToPackageJson": false
2223
+ },
2224
+ "@angular-eslint/builder": {
2225
+ "version": "^20.3.0",
2226
+ "alwaysAddToPackageJson": false
2227
+ },
2228
+ "@angular-eslint/bundled-angular-compiler": {
2229
+ "version": "^20.3.0",
1915
2230
  "alwaysAddToPackageJson": false
1916
2231
  }
1917
2232
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@nx/angular",
3
- "version": "0.0.0-pr-32490-e4fdfa9",
3
+ "version": "0.0.0-pr-32868-a65a4a2",
4
4
  "private": false,
5
5
  "description": "The Nx Plugin for Angular contains executors, generators, and utilities for managing Angular applications and libraries within an Nx workspace. It provides: \n\n- Integration with libraries such as Storybook, Jest, ESLint, Tailwind CSS, Playwright and Cypress. \n\n- Generators to help scaffold code quickly (like: Micro Frontends, Libraries, both internal to your codebase and publishable to npm) \n\n- Single Component Application Modules (SCAMs) \n\n- NgRx helpers. \n\n- Utilities for automatic workspace refactoring.",
6
6
  "repository": {
@@ -58,14 +58,14 @@
58
58
  "migrations": "./migrations.json"
59
59
  },
60
60
  "dependencies": {
61
- "@nx/devkit": "0.0.0-pr-32490-e4fdfa9",
62
- "@nx/eslint": "0.0.0-pr-32490-e4fdfa9",
63
- "@nx/js": "0.0.0-pr-32490-e4fdfa9",
64
- "@nx/module-federation": "0.0.0-pr-32490-e4fdfa9",
65
- "@nx/rspack": "0.0.0-pr-32490-e4fdfa9",
66
- "@nx/web": "0.0.0-pr-32490-e4fdfa9",
67
- "@nx/webpack": "0.0.0-pr-32490-e4fdfa9",
68
- "@nx/workspace": "0.0.0-pr-32490-e4fdfa9",
61
+ "@nx/devkit": "0.0.0-pr-32868-a65a4a2",
62
+ "@nx/eslint": "0.0.0-pr-32868-a65a4a2",
63
+ "@nx/js": "0.0.0-pr-32868-a65a4a2",
64
+ "@nx/module-federation": "0.0.0-pr-32868-a65a4a2",
65
+ "@nx/rspack": "0.0.0-pr-32868-a65a4a2",
66
+ "@nx/web": "0.0.0-pr-32868-a65a4a2",
67
+ "@nx/webpack": "0.0.0-pr-32868-a65a4a2",
68
+ "@nx/workspace": "0.0.0-pr-32868-a65a4a2",
69
69
  "@phenomnomnominal/tsquery": "~5.0.1",
70
70
  "@typescript-eslint/type-utils": "^8.0.0",
71
71
  "enquirer": "~2.3.6",
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=remove-default-karma-configuration-files.spec.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"remove-default-karma-configuration-files.spec.d.ts","sourceRoot":"","sources":["../../../../../../../packages/angular/src/migrations/update-21-5-0/remove-default-karma-configuration-files.spec.ts"],"names":[],"mappings":""}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=update-angular-cli.spec.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"update-angular-cli.spec.d.ts","sourceRoot":"","sources":["../../../../../../../packages/angular/src/migrations/update-21-5-0/update-angular-cli.spec.ts"],"names":[],"mappings":""}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=update-angular-cli.spec.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"update-angular-cli.spec.d.ts","sourceRoot":"","sources":["../../../../../../../packages/angular/src/migrations/update-21-6-1/update-angular-cli.spec.ts"],"names":[],"mappings":""}
@@ -1 +1 @@
1
- {"version":3,"file":"normalize-options.d.ts","sourceRoot":"","sources":["../../../../../../../packages/angular/src/generators/application/lib/normalize-options.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiC,KAAK,IAAI,EAAE,MAAM,YAAY,CAAC;AAMtE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AACxC,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAQ5D,wBAAsB,gBAAgB,CACpC,IAAI,EAAE,IAAI,EACV,OAAO,EAAE,OAAO,CAAC,MAAM,CAAC,EACxB,QAAQ,CAAC,EAAE,OAAO,GACjB,OAAO,CAAC,gBAAgB,CAAC,CAqD3B"}
1
+ {"version":3,"file":"normalize-options.d.ts","sourceRoot":"","sources":["../../../../../../../packages/angular/src/generators/application/lib/normalize-options.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiC,KAAK,IAAI,EAAE,MAAM,YAAY,CAAC;AAMtE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AACxC,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAiB5D,wBAAsB,gBAAgB,CACpC,IAAI,EAAE,IAAI,EACV,OAAO,EAAE,OAAO,CAAC,MAAM,CAAC,EACxB,QAAQ,CAAC,EAAE,OAAO,GACjB,OAAO,CAAC,gBAAgB,CAAC,CAqD3B"}
@@ -9,6 +9,12 @@ function arePluginsExplicitlyDisabled(host) {
9
9
  const addPluginEnvVar = process.env.NX_ADD_PLUGINS;
10
10
  return useInferencePlugins === false || addPluginEnvVar === 'false';
11
11
  }
12
+ function validateBundler(bundler) {
13
+ if (['esbuild', 'webpack', 'rspack'].includes(bundler)) {
14
+ return bundler;
15
+ }
16
+ throw new Error(`Invalid bundler: ${bundler}. Please use one of the following: 'esbuild', 'webpack', 'rspack'.`);
17
+ }
12
18
  async function normalizeOptions(host, options, isRspack) {
13
19
  await (0, project_name_and_root_utils_1.ensureRootProjectName)(options, 'application');
14
20
  const { projectName: appProjectName, projectRoot: appProjectRoot } = await (0, project_name_and_root_utils_1.determineProjectNameAndRootOptions)(host, {
@@ -23,7 +29,7 @@ async function normalizeOptions(host, options, isRspack) {
23
29
  const parsedTags = options.tags
24
30
  ? options.tags.split(',').map((s) => s.trim())
25
31
  : [];
26
- const bundler = options.bundler ?? 'esbuild';
32
+ const bundler = validateBundler(options.bundler ?? 'esbuild');
27
33
  const addPlugin = options.addPlugin ?? (!arePluginsExplicitlyDisabled(host) && isRspack);
28
34
  // Set defaults and then overwrite with user options
29
35
  return {
@@ -1 +1 @@
1
- {"version":3,"file":"convert-to-rspack.d.ts","sourceRoot":"","sources":["../../../../../../packages/angular/src/generators/convert-to-rspack/convert-to-rspack.ts"],"names":[],"mappings":"AAAA,OAAO,EAcL,KAAK,iBAAiB,EAEtB,KAAK,IAAI,EACV,MAAM,YAAY,CAAC;AAiBpB,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,UAAU,CAAC;AA6StD,wBAAsB,eAAe,CACnC,IAAI,EAAE,IAAI,EACV,MAAM,EAAE,qBAAqB,8BA+X9B;AAED,eAAe,eAAe,CAAC"}
1
+ {"version":3,"file":"convert-to-rspack.d.ts","sourceRoot":"","sources":["../../../../../../packages/angular/src/generators/convert-to-rspack/convert-to-rspack.ts"],"names":[],"mappings":"AAAA,OAAO,EAcL,KAAK,iBAAiB,EAEtB,KAAK,IAAI,EACV,MAAM,YAAY,CAAC;AAapB,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,UAAU,CAAC;AA6StD,wBAAsB,eAAe,CACnC,IAAI,EAAE,IAAI,EACV,MAAM,EAAE,qBAAqB,8BAuY9B;AAED,eAAe,eAAe,CAAC"}
@@ -8,6 +8,7 @@ const enquirer_1 = require("enquirer");
8
8
  const path_1 = require("path");
9
9
  const posix_1 = require("path/posix");
10
10
  const versions_1 = require("../../utils/versions");
11
+ const version_utils_1 = require("../utils/version-utils");
11
12
  const create_config_1 = require("./lib/create-config");
12
13
  const get_custom_webpack_config_1 = require("./lib/get-custom-webpack-config");
13
14
  const update_tsconfig_1 = require("./lib/update-tsconfig");
@@ -249,6 +250,10 @@ async function convertToRspack(tree, schema) {
249
250
  const targetsToRemove = [];
250
251
  let customWebpackConfigPath;
251
252
  (0, validate_supported_executor_1.validateSupportedBuildExecutor)(Object.values(project.targets));
253
+ const angularRspackVersion = (0, version_utils_1.getAngularRspackVersion)(tree);
254
+ if (!angularRspackVersion) {
255
+ throw new Error('Angular Rspack requires Angular 19 or higher. Please upgrade your Angular version before converting to Rspack.');
256
+ }
252
257
  let projectServePort = DEFAULT_PORT;
253
258
  for (const [targetName, target] of Object.entries(project.targets)) {
254
259
  if (target.executor === '@angular-devkit/build-angular:browser' ||
@@ -491,10 +496,11 @@ async function convertToRspack(tree, schema) {
491
496
  (0, devkit_1.writeJson)(tree, 'package.json', rootPkgJson);
492
497
  }
493
498
  if (!schema.skipInstall) {
499
+ const { webpackMergeVersion, tsNodeVersion } = (0, version_utils_1.versions)(tree);
494
500
  const installTask = (0, devkit_1.addDependenciesToPackageJson)(tree, {}, {
495
- '@nx/angular-rspack': versions_1.angularRspackVersion,
496
- 'webpack-merge': versions_1.webpackMergeVersion,
497
- 'ts-node': versions_1.tsNodeVersion,
501
+ '@nx/angular-rspack': angularRspackVersion,
502
+ 'webpack-merge': webpackMergeVersion,
503
+ 'ts-node': tsNodeVersion,
498
504
  });
499
505
  tasks.push(installTask);
500
506
  }
@@ -1,7 +1,12 @@
1
- import { bootstrapApplication } from '@angular/platform-browser';
1
+ import { <% if (useBootstrapContext) { %>BootstrapContext, <% } %>bootstrapApplication } from '@angular/platform-browser';
2
2
  import { RemoteEntry<%= componentType %> } from './app/remote-entry/entry<%= componentFileSuffix %>';
3
3
  import { config } from './app/app.config.server';
4
4
 
5
+ <%_ if (useBootstrapContext) { _%>
6
+ const bootstrap = (context: BootstrapContext) =>
7
+ bootstrapApplication(RemoteEntry<%= componentType %>, config, context);
8
+ <%_ } else { _%>
5
9
  const bootstrap = () => bootstrapApplication(RemoteEntry<%= componentType %>, config);
10
+ <%_ } _%>
6
11
 
7
12
  export default bootstrap;
@@ -1 +1 @@
1
- {"version":3,"file":"update-ssr-setup.d.ts","sourceRoot":"","sources":["../../../../../../../packages/angular/src/generators/remote/lib/update-ssr-setup.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAmBvC,wBAAsB,cAAc,CAClC,IAAI,EAAE,IAAI,EACV,EACE,OAAO,EACP,IAAI,EACJ,UAAU,EACV,uBAAuB,EACvB,eAAe,GAChB,EAAE;IACD,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,OAAO,CAAC;IACpB,uBAAuB,EAAE,OAAO,CAAC;IACjC,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B,mDAmHF"}
1
+ {"version":3,"file":"update-ssr-setup.d.ts","sourceRoot":"","sources":["../../../../../../../packages/angular/src/generators/remote/lib/update-ssr-setup.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAoBvC,wBAAsB,cAAc,CAClC,IAAI,EAAE,IAAI,EACV,EACE,OAAO,EACP,IAAI,EACJ,UAAU,EACV,uBAAuB,EACvB,eAAe,GAChB,EAAE;IACD,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,OAAO,CAAC;IACpB,uBAAuB,EAAE,OAAO,CAAC;IACjC,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B,mDA6HF"}
@@ -4,11 +4,12 @@ exports.updateSsrSetup = updateSsrSetup;
4
4
  const devkit_1 = require("@nx/devkit");
5
5
  const ts_solution_setup_1 = require("@nx/js/src/utils/typescript/ts-solution-setup");
6
6
  const path_1 = require("path");
7
+ const semver_1 = require("semver");
7
8
  const versions_1 = require("../../../utils/versions");
8
9
  const artifact_types_1 = require("../../utils/artifact-types");
9
10
  const version_utils_1 = require("../../utils/version-utils");
10
11
  async function updateSsrSetup(tree, { appName, port, standalone, typescriptConfiguration, skipPackageJson, }) {
11
- const { major: angularMajorVersion } = (0, version_utils_1.getInstalledAngularVersionInfo)(tree);
12
+ const { major: angularMajorVersion, version: angularVersion } = (0, version_utils_1.getInstalledAngularVersionInfo)(tree);
12
13
  let project = (0, devkit_1.readProjectConfiguration)(tree, appName);
13
14
  const sourceRoot = (0, ts_solution_setup_1.getProjectSourceRoot)(project, tree);
14
15
  tree.rename((0, devkit_1.joinPathFragments)(sourceRoot, 'main.server.ts'), (0, devkit_1.joinPathFragments)(sourceRoot, 'bootstrap.server.ts'));
@@ -31,11 +32,19 @@ async function updateSsrSetup(tree, { appName, port, standalone, typescriptConfi
31
32
  if (standalone) {
32
33
  const componentType = (0, artifact_types_1.getComponentType)(tree);
33
34
  const componentFileSuffix = componentType ? `.${componentType}` : '';
35
+ const useBootstrapContext =
36
+ // https://github.com/angular/angular-cli/releases/tag/20.3.0
37
+ (0, semver_1.gte)(angularVersion, '20.3.0') ||
38
+ // https://github.com/angular/angular-cli/releases/tag/19.2.16
39
+ (angularMajorVersion === 19 && (0, semver_1.gte)(angularVersion, '19.2.16')) ||
40
+ // https://github.com/angular/angular-cli/releases/tag/18.2.21
41
+ (angularMajorVersion === 18 && (0, semver_1.gte)(angularVersion, '18.2.21'));
34
42
  (0, devkit_1.generateFiles)(tree, (0, devkit_1.joinPathFragments)(__dirname, '../files/standalone'), project.root, {
35
43
  appName,
36
44
  standalone,
37
45
  componentType: componentType ? (0, devkit_1.names)(componentType).className : '',
38
46
  componentFileSuffix,
47
+ useBootstrapContext,
39
48
  tmpl: '',
40
49
  });
41
50
  }
@@ -20,12 +20,12 @@ function fixBootstrap(tree, appRoot, options) {
20
20
  if (tree.exists((0, devkit_1.joinPathFragments)(appRoot, 'public/module-federation.manifest.json'))) {
21
21
  manifestPath = '/module-federation.manifest.json';
22
22
  }
23
- const fetchMFManifestCode = `import { init } from '@module-federation/enhanced/runtime';
23
+ const fetchMFManifestCode = `import { registerRemotes } from '@module-federation/enhanced/runtime';
24
24
 
25
25
  fetch('${manifestPath}')
26
26
  .then((res) => res.json())
27
27
  .then((remotes: Record<string, string>) => Object.entries(remotes).map(([name, entry]) => ({ name,entry})))
28
- .then(remotes => init({name: '${options.appName}', remotes}))
28
+ .then(remotes => registerRemotes(remotes))
29
29
  .then(() => ${bootstrapImportCode});`;
30
30
  tree.write(mainFilePath, fetchMFManifestCode);
31
31
  }
@@ -1,7 +1,12 @@
1
- import { bootstrapApplication } from '@angular/platform-browser';
1
+ import { <% if (useBootstrapContext) { %>BootstrapContext, <% } %>bootstrapApplication } from '@angular/platform-browser';
2
2
  import { AppComponent } from './app/app.component';
3
3
  import { config } from './app/app.config.server';
4
4
 
5
+ <%_ if (useBootstrapContext) { _%>
6
+ const bootstrap = (context: BootstrapContext) =>
7
+ bootstrapApplication(AppComponent, config, context);
8
+ <%_ } else { _%>
5
9
  const bootstrap = () => bootstrapApplication(AppComponent, config);
10
+ <%_ } _%>
6
11
 
7
12
  export default bootstrap;
@@ -1,7 +1,12 @@
1
- import { bootstrapApplication } from '@angular/platform-browser';
1
+ import { <% if (useBootstrapContext) { %>BootstrapContext, <% } %>bootstrapApplication } from '@angular/platform-browser';
2
2
  import { AppComponent } from './app/app.component';
3
3
  import { config } from './app/app.config.server';
4
4
 
5
+ <%_ if (useBootstrapContext) { _%>
6
+ const bootstrap = (context: BootstrapContext) =>
7
+ bootstrapApplication(AppComponent, config, context);
8
+ <%_ } else { _%>
5
9
  const bootstrap = () => bootstrapApplication(AppComponent, config);
10
+ <%_ } _%>
6
11
 
7
12
  export default bootstrap;
@@ -1,7 +1,12 @@
1
- import { bootstrapApplication } from '@angular/platform-browser';
1
+ import { <% if (useBootstrapContext) { %>BootstrapContext, <% } %>bootstrapApplication } from '@angular/platform-browser';
2
2
  import { AppComponent } from './app/app.component';
3
3
  import { config } from './app/app.config.server';
4
4
 
5
+ <%_ if (useBootstrapContext) { _%>
6
+ const bootstrap = (context: BootstrapContext) =>
7
+ bootstrapApplication(AppComponent, config, context);
8
+ <%_ } else { _%>
5
9
  const bootstrap = () => bootstrapApplication(AppComponent, config);
10
+ <%_ } _%>
6
11
 
7
12
  export default bootstrap;
@@ -1,7 +1,12 @@
1
- import { bootstrapApplication } from '@angular/platform-browser';
1
+ import { <% if (useBootstrapContext) { %>BootstrapContext, <% } %>bootstrapApplication } from '@angular/platform-browser';
2
2
  import { <%= appSymbolName %> } from './app/<%= appFileName %>';
3
3
  import { config } from './app/app.config.server';
4
4
 
5
+ <%_ if (useBootstrapContext) { _%>
6
+ const bootstrap = (context: BootstrapContext) =>
7
+ bootstrapApplication(<%= appSymbolName %>, config, context);
8
+ <%_ } else { _%>
5
9
  const bootstrap = () => bootstrapApplication(<%= appSymbolName %>, config);
10
+ <%_ } _%>
6
11
 
7
12
  export default bootstrap;
@@ -1,7 +1,12 @@
1
- import { bootstrapApplication } from '@angular/platform-browser';
1
+ import { <% if (useBootstrapContext) { %>BootstrapContext, <% } %>bootstrapApplication } from '@angular/platform-browser';
2
2
  import { <%= appSymbolName %> } from './app/<%= appFileName %>';
3
3
  import { config } from './app/app.config.server';
4
4
 
5
+ <%_ if (useBootstrapContext) { _%>
6
+ const bootstrap = (context: BootstrapContext) =>
7
+ bootstrapApplication(<%= appSymbolName %>, config, context);
8
+ <%_ } else { _%>
5
9
  const bootstrap = () => bootstrapApplication(<%= appSymbolName %>, config);
10
+ <%_ } _%>
6
11
 
7
12
  export default bootstrap;
@@ -1 +1 @@
1
- {"version":3,"file":"generate-files.d.ts","sourceRoot":"","sources":["../../../../../../../packages/angular/src/generators/setup-ssr/lib/generate-files.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAkBvC,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,WAAW,CAAC;AAE5D,wBAAgB,gBAAgB,CAC9B,IAAI,EAAE,IAAI,EACV,OAAO,EAAE,0BAA0B,QAwEpC"}
1
+ {"version":3,"file":"generate-files.d.ts","sourceRoot":"","sources":["../../../../../../../packages/angular/src/generators/setup-ssr/lib/generate-files.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAkBvC,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,WAAW,CAAC;AAE5D,wBAAgB,gBAAgB,CAC9B,IAAI,EAAE,IAAI,EACV,OAAO,EAAE,0BAA0B,QAiFpC"}