@openrewrite/recipes-angular 1.8.0-20260804-103913 → 1.8.0
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.
- package/dist/migration/upgrade-to-angular-10.d.ts +6 -0
- package/dist/migration/upgrade-to-angular-10.d.ts.map +1 -1
- package/dist/migration/upgrade-to-angular-10.js +34 -14
- package/dist/migration/upgrade-to-angular-10.js.map +1 -1
- package/dist/migration/upgrade-to-angular-11.d.ts +6 -0
- package/dist/migration/upgrade-to-angular-11.d.ts.map +1 -1
- package/dist/migration/upgrade-to-angular-11.js +34 -14
- package/dist/migration/upgrade-to-angular-11.js.map +1 -1
- package/dist/migration/upgrade-to-angular-12.d.ts +6 -0
- package/dist/migration/upgrade-to-angular-12.d.ts.map +1 -1
- package/dist/migration/upgrade-to-angular-12.js +31 -10
- package/dist/migration/upgrade-to-angular-12.js.map +1 -1
- package/dist/migration/upgrade-to-angular-13.d.ts +6 -0
- package/dist/migration/upgrade-to-angular-13.d.ts.map +1 -1
- package/dist/migration/upgrade-to-angular-13.js +31 -10
- package/dist/migration/upgrade-to-angular-13.js.map +1 -1
- package/dist/migration/upgrade-to-angular-14.d.ts +6 -0
- package/dist/migration/upgrade-to-angular-14.d.ts.map +1 -1
- package/dist/migration/upgrade-to-angular-14.js +30 -10
- package/dist/migration/upgrade-to-angular-14.js.map +1 -1
- package/dist/migration/upgrade-to-angular-15.d.ts +6 -0
- package/dist/migration/upgrade-to-angular-15.d.ts.map +1 -1
- package/dist/migration/upgrade-to-angular-15.js +31 -11
- package/dist/migration/upgrade-to-angular-15.js.map +1 -1
- package/dist/migration/upgrade-to-angular-16.d.ts +6 -0
- package/dist/migration/upgrade-to-angular-16.d.ts.map +1 -1
- package/dist/migration/upgrade-to-angular-16.js +32 -12
- package/dist/migration/upgrade-to-angular-16.js.map +1 -1
- package/dist/migration/upgrade-to-angular-17.d.ts +6 -0
- package/dist/migration/upgrade-to-angular-17.d.ts.map +1 -1
- package/dist/migration/upgrade-to-angular-17.js +30 -10
- package/dist/migration/upgrade-to-angular-17.js.map +1 -1
- package/dist/migration/upgrade-to-angular-18.d.ts +6 -0
- package/dist/migration/upgrade-to-angular-18.d.ts.map +1 -1
- package/dist/migration/upgrade-to-angular-18.js +38 -22
- package/dist/migration/upgrade-to-angular-18.js.map +1 -1
- package/dist/migration/upgrade-to-angular-19.d.ts +6 -0
- package/dist/migration/upgrade-to-angular-19.d.ts.map +1 -1
- package/dist/migration/upgrade-to-angular-19.js +32 -12
- package/dist/migration/upgrade-to-angular-19.js.map +1 -1
- package/dist/migration/upgrade-to-angular-20.d.ts +6 -0
- package/dist/migration/upgrade-to-angular-20.d.ts.map +1 -1
- package/dist/migration/upgrade-to-angular-20.js +31 -11
- package/dist/migration/upgrade-to-angular-20.js.map +1 -1
- package/dist/migration/upgrade-to-angular-21.d.ts +6 -0
- package/dist/migration/upgrade-to-angular-21.d.ts.map +1 -1
- package/dist/migration/upgrade-to-angular-21.js +32 -12
- package/dist/migration/upgrade-to-angular-21.js.map +1 -1
- package/dist/migration/upgrade-to-angular-8.d.ts +10 -0
- package/dist/migration/upgrade-to-angular-8.d.ts.map +1 -1
- package/dist/migration/upgrade-to-angular-8.js +40 -15
- package/dist/migration/upgrade-to-angular-8.js.map +1 -1
- package/dist/migration/upgrade-to-angular-9.d.ts +6 -0
- package/dist/migration/upgrade-to-angular-9.d.ts.map +1 -1
- package/dist/migration/upgrade-to-angular-9.js +37 -17
- package/dist/migration/upgrade-to-angular-9.js.map +1 -1
- package/package.json +1 -1
- package/src/migration/upgrade-to-angular-10.ts +30 -14
- package/src/migration/upgrade-to-angular-11.ts +30 -14
- package/src/migration/upgrade-to-angular-12.ts +27 -10
- package/src/migration/upgrade-to-angular-13.ts +27 -10
- package/src/migration/upgrade-to-angular-14.ts +26 -10
- package/src/migration/upgrade-to-angular-15.ts +27 -11
- package/src/migration/upgrade-to-angular-16.ts +28 -12
- package/src/migration/upgrade-to-angular-17.ts +26 -10
- package/src/migration/upgrade-to-angular-18.ts +34 -22
- package/src/migration/upgrade-to-angular-19.ts +28 -12
- package/src/migration/upgrade-to-angular-20.ts +27 -11
- package/src/migration/upgrade-to-angular-21.ts +28 -12
- package/src/migration/upgrade-to-angular-8.ts +35 -14
- package/src/migration/upgrade-to-angular-9.ts +33 -17
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
|
|
7
7
|
import {Recipe} from "@openrewrite/rewrite";
|
|
8
8
|
import {ChangeImport, upgradeDependencyVersion} from "@openrewrite/rewrite/javascript";
|
|
9
|
-
import {
|
|
9
|
+
import {UpgradeToAngular15CodeChanges} from "./upgrade-to-angular-15";
|
|
10
10
|
import {RemoveEntryComponents} from "./remove-entry-components";
|
|
11
11
|
import {RemoveModuleId} from "./remove-module-id";
|
|
12
12
|
import {ReplaceRouterLinkWithHref} from "./replace-router-link-with-href";
|
|
@@ -15,18 +15,15 @@ import {FindRenderModuleFactoryUsage} from "../search/find-render-module-factory
|
|
|
15
15
|
import {FindBrowserTransferStateModuleUsage} from "../search/find-browser-transfer-state-module-usage";
|
|
16
16
|
import {FindRenderApplicationUsage} from "../search/find-render-application-usage";
|
|
17
17
|
|
|
18
|
-
export class
|
|
19
|
-
readonly name = "org.openrewrite.angular.
|
|
20
|
-
readonly displayName = "Upgrade to Angular 16";
|
|
21
|
-
readonly description = "
|
|
22
|
-
"
|
|
23
|
-
"moving the `XhrFactory` import to `@angular/common`, and flagging removed APIs " +
|
|
24
|
-
"like `ReflectiveInjector`, `renderModuleFactory`, and `BrowserTransferStateModule`.";
|
|
18
|
+
export class UpgradeToAngular16CodeChanges extends Recipe {
|
|
19
|
+
readonly name = "org.openrewrite.angular.UpgradeToAngular16CodeChanges";
|
|
20
|
+
readonly displayName = "Upgrade to Angular 16 (code changes)";
|
|
21
|
+
readonly description = "The source changes of the Angular 16 migration, without the dependency version bumps. " +
|
|
22
|
+
"Use `UpgradeToAngular16` unless you are composing a migration to a later major.";
|
|
25
23
|
|
|
26
24
|
async recipeList(): Promise<Recipe[]> {
|
|
27
25
|
return [
|
|
28
|
-
|
|
29
|
-
new UpgradeToAngular15(),
|
|
26
|
+
new UpgradeToAngular15CodeChanges(),
|
|
30
27
|
// Code transformations
|
|
31
28
|
new RemoveEntryComponents(),
|
|
32
29
|
new RemoveModuleId(),
|
|
@@ -42,10 +39,29 @@ export class UpgradeToAngular16 extends Recipe {
|
|
|
42
39
|
new FindRenderModuleFactoryUsage(),
|
|
43
40
|
new FindBrowserTransferStateModuleUsage(),
|
|
44
41
|
new FindRenderApplicationUsage(),
|
|
42
|
+
];
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
export class UpgradeToAngular16 extends Recipe {
|
|
47
|
+
readonly name = "org.openrewrite.angular.UpgradeToAngular16";
|
|
48
|
+
readonly displayName = "Upgrade to Angular 16";
|
|
49
|
+
readonly description = "Migrates Angular 15.x applications to Angular 16. " +
|
|
50
|
+
"This includes removing `entryComponents` and `moduleId` from decorators, replacing `RouterLinkWithHref` with `RouterLink`, " +
|
|
51
|
+
"moving the `XhrFactory` import to `@angular/common`, and flagging removed APIs " +
|
|
52
|
+
"like `ReflectiveInjector`, `renderModuleFactory`, and `BrowserTransferStateModule`.";
|
|
53
|
+
|
|
54
|
+
async recipeList(): Promise<Recipe[]> {
|
|
55
|
+
return [
|
|
56
|
+
new UpgradeToAngular16CodeChanges(),
|
|
45
57
|
// Angular core packages
|
|
46
58
|
await upgradeDependencyVersion({packagePattern: "@angular/*", newVersion: "16.x"}),
|
|
47
|
-
// Angular DevKit
|
|
48
|
-
await upgradeDependencyVersion({
|
|
59
|
+
// Angular DevKit; `architect` and `build-webpack` kept the 0.<major><minor>.x CLI scheme
|
|
60
|
+
await upgradeDependencyVersion({packageName: "@angular-devkit/core", newVersion: "16.x"}),
|
|
61
|
+
await upgradeDependencyVersion({packagePattern: "@angular-devkit/s*", newVersion: "16.x"}),
|
|
62
|
+
await upgradeDependencyVersion({packageName: "@angular-devkit/build-angular", newVersion: "16.x"}),
|
|
63
|
+
await upgradeDependencyVersion({packagePattern: "@angular-devkit/architect*", newVersion: "0.1602.x"}),
|
|
64
|
+
await upgradeDependencyVersion({packageName: "@angular-devkit/build-webpack", newVersion: "0.1602.x"}),
|
|
49
65
|
await upgradeDependencyVersion({packageName: "@schematics/angular", newVersion: "16.x"}),
|
|
50
66
|
// zone.js
|
|
51
67
|
await upgradeDependencyVersion({packageName: "zone.js", newVersion: "0.13.x"}),
|
|
@@ -6,11 +6,29 @@
|
|
|
6
6
|
|
|
7
7
|
import {Recipe} from "@openrewrite/rewrite";
|
|
8
8
|
import {upgradeDependencyVersion} from "@openrewrite/rewrite/javascript";
|
|
9
|
-
import {
|
|
9
|
+
import {UpgradeToAngular16CodeChanges} from "./upgrade-to-angular-16";
|
|
10
10
|
import {ReplaceDeepZoneJsImports} from "./replace-deep-zone-js-imports";
|
|
11
11
|
import {FindWithNoDomReuseUsage} from "../search/find-with-no-dom-reuse-usage";
|
|
12
12
|
import {FindSetupTestingRouterUsage} from "../search/find-setup-testing-router-usage";
|
|
13
13
|
|
|
14
|
+
export class UpgradeToAngular17CodeChanges extends Recipe {
|
|
15
|
+
readonly name = "org.openrewrite.angular.UpgradeToAngular17CodeChanges";
|
|
16
|
+
readonly displayName = "Upgrade to Angular 17 (code changes)";
|
|
17
|
+
readonly description = "The source changes of the Angular 17 migration, without the dependency version bumps. " +
|
|
18
|
+
"Use `UpgradeToAngular17` unless you are composing a migration to a later major.";
|
|
19
|
+
|
|
20
|
+
async recipeList(): Promise<Recipe[]> {
|
|
21
|
+
return [
|
|
22
|
+
new UpgradeToAngular16CodeChanges(),
|
|
23
|
+
// Code transformations
|
|
24
|
+
new ReplaceDeepZoneJsImports(),
|
|
25
|
+
// Search: removed APIs
|
|
26
|
+
new FindWithNoDomReuseUsage(),
|
|
27
|
+
new FindSetupTestingRouterUsage(),
|
|
28
|
+
];
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
|
|
14
32
|
export class UpgradeToAngular17 extends Recipe {
|
|
15
33
|
readonly name = "org.openrewrite.angular.UpgradeToAngular17";
|
|
16
34
|
readonly displayName = "Upgrade to Angular 17";
|
|
@@ -21,17 +39,15 @@ export class UpgradeToAngular17 extends Recipe {
|
|
|
21
39
|
|
|
22
40
|
async recipeList(): Promise<Recipe[]> {
|
|
23
41
|
return [
|
|
24
|
-
|
|
25
|
-
new UpgradeToAngular16(),
|
|
26
|
-
// Code transformations
|
|
27
|
-
new ReplaceDeepZoneJsImports(),
|
|
28
|
-
// Search: removed APIs
|
|
29
|
-
new FindWithNoDomReuseUsage(),
|
|
30
|
-
new FindSetupTestingRouterUsage(),
|
|
42
|
+
new UpgradeToAngular17CodeChanges(),
|
|
31
43
|
// Angular core packages
|
|
32
44
|
await upgradeDependencyVersion({packagePattern: "@angular/*", newVersion: "17.x"}),
|
|
33
|
-
// Angular DevKit
|
|
34
|
-
await upgradeDependencyVersion({
|
|
45
|
+
// Angular DevKit; `architect` and `build-webpack` kept the 0.<major><minor>.x CLI scheme
|
|
46
|
+
await upgradeDependencyVersion({packageName: "@angular-devkit/core", newVersion: "17.x"}),
|
|
47
|
+
await upgradeDependencyVersion({packagePattern: "@angular-devkit/s*", newVersion: "17.x"}),
|
|
48
|
+
await upgradeDependencyVersion({packageName: "@angular-devkit/build-angular", newVersion: "17.x"}),
|
|
49
|
+
await upgradeDependencyVersion({packagePattern: "@angular-devkit/architect*", newVersion: "0.1703.x"}),
|
|
50
|
+
await upgradeDependencyVersion({packageName: "@angular-devkit/build-webpack", newVersion: "0.1703.x"}),
|
|
35
51
|
await upgradeDependencyVersion({packageName: "@schematics/angular", newVersion: "17.x"}),
|
|
36
52
|
// zone.js
|
|
37
53
|
await upgradeDependencyVersion({packageName: "zone.js", newVersion: "0.14.x"}),
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
|
|
7
7
|
import {Recipe} from "@openrewrite/rewrite";
|
|
8
8
|
import {ChangeImport, upgradeDependencyVersion} from "@openrewrite/rewrite/javascript";
|
|
9
|
-
import {
|
|
9
|
+
import {UpgradeToAngular17CodeChanges} from "./upgrade-to-angular-17";
|
|
10
10
|
import {UpgradeAngularPeerLibsTo18} from "./upgrade-angular-peer-libs-to-18";
|
|
11
11
|
import {ReplaceAsyncWithWaitForAsync} from "./replace-async-with-wait-for-async";
|
|
12
12
|
import {ReplaceHttpClientModule} from "./replace-http-client-module";
|
|
@@ -17,18 +17,15 @@ import {FindResourceCacheProviderUsage} from "../search/find-resource-cache-prov
|
|
|
17
17
|
import {FindTestabilityPendingRequestUsage} from "../search/find-testability-pending-request-usage";
|
|
18
18
|
import {FindAnimationDriverMatchesElement} from "../search/find-animation-driver-matches-element";
|
|
19
19
|
|
|
20
|
-
export class
|
|
21
|
-
readonly name = "org.openrewrite.angular.
|
|
22
|
-
readonly displayName = "Upgrade to Angular 18";
|
|
23
|
-
readonly description = "
|
|
24
|
-
"
|
|
25
|
-
"migrating `HttpClientModule` to `provideHttpClient()`, moving Transfer State APIs " +
|
|
26
|
-
"to `@angular/core`, and flagging removed platform APIs.";
|
|
20
|
+
export class UpgradeToAngular18CodeChanges extends Recipe {
|
|
21
|
+
readonly name = "org.openrewrite.angular.UpgradeToAngular18CodeChanges";
|
|
22
|
+
readonly displayName = "Upgrade to Angular 18 (code changes)";
|
|
23
|
+
readonly description = "The source changes of the Angular 18 migration, without the Angular dependency version bumps. " +
|
|
24
|
+
"Use `UpgradeToAngular18` unless you are composing a migration to a later major.";
|
|
27
25
|
|
|
28
26
|
async recipeList(): Promise<Recipe[]> {
|
|
29
27
|
return [
|
|
30
|
-
|
|
31
|
-
new UpgradeToAngular17(),
|
|
28
|
+
new UpgradeToAngular17CodeChanges(),
|
|
32
29
|
// Code transformations
|
|
33
30
|
new ReplaceAsyncWithWaitForAsync(),
|
|
34
31
|
new ReplaceHttpClientModule(),
|
|
@@ -55,19 +52,34 @@ export class UpgradeToAngular18 extends Recipe {
|
|
|
55
52
|
new FindResourceCacheProviderUsage(),
|
|
56
53
|
new FindTestabilityPendingRequestUsage(),
|
|
57
54
|
new FindAnimationDriverMatchesElement(),
|
|
58
|
-
//
|
|
59
|
-
//
|
|
60
|
-
//
|
|
61
|
-
// leaves the install failing with ERESOLVE. picomatch brace expansion lets us glob
|
|
62
|
-
// multiple package patterns in a single call.
|
|
63
|
-
await upgradeDependencyVersion({
|
|
64
|
-
packagePattern: "{@angular/*,@angular-devkit/*,@schematics/angular}",
|
|
65
|
-
newVersion: "18.x",
|
|
66
|
-
}),
|
|
67
|
-
// Bump well-known third-party Angular libraries (ng-bootstrap, ngx-bootstrap, …) to
|
|
68
|
-
// their Angular-18-compatible versions. Kept as a separate recipe so it can be run
|
|
69
|
-
// independently or extended without touching this file every time.
|
|
55
|
+
// Third-party libraries pinned to an Angular peer range (ng-bootstrap, ngx-bootstrap, …).
|
|
56
|
+
// There is no 19/20/21 equivalent yet, so this stays in the chained half: without it a
|
|
57
|
+
// migration to a later major would leave these libraries on a pre-18 line entirely.
|
|
70
58
|
new UpgradeAngularPeerLibsTo18(),
|
|
59
|
+
];
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
export class UpgradeToAngular18 extends Recipe {
|
|
64
|
+
readonly name = "org.openrewrite.angular.UpgradeToAngular18";
|
|
65
|
+
readonly displayName = "Upgrade to Angular 18";
|
|
66
|
+
readonly description = "Migrates Angular 17.x applications to Angular 18. " +
|
|
67
|
+
"This includes replacing the deprecated `async` test helper with `waitForAsync`, " +
|
|
68
|
+
"migrating `HttpClientModule` to `provideHttpClient()`, moving Transfer State APIs " +
|
|
69
|
+
"to `@angular/core`, and flagging removed platform APIs.";
|
|
70
|
+
|
|
71
|
+
async recipeList(): Promise<Recipe[]> {
|
|
72
|
+
return [
|
|
73
|
+
new UpgradeToAngular18CodeChanges(),
|
|
74
|
+
// Angular core packages
|
|
75
|
+
await upgradeDependencyVersion({packagePattern: "@angular/*", newVersion: "18.x"}),
|
|
76
|
+
// Angular DevKit; `architect` and `build-webpack` kept the 0.<major><minor>.x CLI scheme
|
|
77
|
+
await upgradeDependencyVersion({packageName: "@angular-devkit/core", newVersion: "18.x"}),
|
|
78
|
+
await upgradeDependencyVersion({packagePattern: "@angular-devkit/s*", newVersion: "18.x"}),
|
|
79
|
+
await upgradeDependencyVersion({packageName: "@angular-devkit/build-angular", newVersion: "18.x"}),
|
|
80
|
+
await upgradeDependencyVersion({packagePattern: "@angular-devkit/architect*", newVersion: "0.1802.x"}),
|
|
81
|
+
await upgradeDependencyVersion({packageName: "@angular-devkit/build-webpack", newVersion: "0.1802.x"}),
|
|
82
|
+
await upgradeDependencyVersion({packageName: "@schematics/angular", newVersion: "18.x"}),
|
|
71
83
|
// zone.js
|
|
72
84
|
await upgradeDependencyVersion({packageName: "zone.js", newVersion: "0.14.x"}),
|
|
73
85
|
// TypeScript: Angular 18 compiler requires >=5.4.0 <5.5.0
|
|
@@ -6,25 +6,22 @@
|
|
|
6
6
|
|
|
7
7
|
import {Recipe} from "@openrewrite/rewrite";
|
|
8
8
|
import {ChangeImport, upgradeDependencyVersion} from "@openrewrite/rewrite/javascript";
|
|
9
|
-
import {
|
|
9
|
+
import {UpgradeToAngular18CodeChanges} from "./upgrade-to-angular-18";
|
|
10
10
|
import {ExplicitStandaloneFlag} from "./explicit-standalone-flag";
|
|
11
11
|
import {RenamePendingTasks} from "./rename-pending-tasks";
|
|
12
12
|
import {RemoveBrowserModuleWithServerTransition} from "./remove-browser-module-with-server-transition";
|
|
13
13
|
import {FindEffectTimingUsage} from "../search/find-effect-timing-usage";
|
|
14
14
|
import {FindEmptyProjectableNodes} from "../search/find-empty-projectable-nodes";
|
|
15
15
|
|
|
16
|
-
export class
|
|
17
|
-
readonly name = "org.openrewrite.angular.
|
|
18
|
-
readonly displayName = "Upgrade to Angular 19";
|
|
19
|
-
readonly description = "
|
|
20
|
-
"
|
|
21
|
-
"renaming `ExperimentalPendingTasks` to `PendingTasks`, moving the `ApplicationConfig` import " +
|
|
22
|
-
"to `@angular/core`, and updating `zone.js`.";
|
|
16
|
+
export class UpgradeToAngular19CodeChanges extends Recipe {
|
|
17
|
+
readonly name = "org.openrewrite.angular.UpgradeToAngular19CodeChanges";
|
|
18
|
+
readonly displayName = "Upgrade to Angular 19 (code changes)";
|
|
19
|
+
readonly description = "The source changes of the Angular 19 migration, without the dependency version bumps. " +
|
|
20
|
+
"Use `UpgradeToAngular19` unless you are composing a migration to a later major.";
|
|
23
21
|
|
|
24
22
|
async recipeList(): Promise<Recipe[]> {
|
|
25
23
|
return [
|
|
26
|
-
|
|
27
|
-
new UpgradeToAngular18(),
|
|
24
|
+
new UpgradeToAngular18CodeChanges(),
|
|
28
25
|
// Code transformations
|
|
29
26
|
new ExplicitStandaloneFlag(),
|
|
30
27
|
new RenamePendingTasks(),
|
|
@@ -37,10 +34,29 @@ export class UpgradeToAngular19 extends Recipe {
|
|
|
37
34
|
// Behavioral change warnings
|
|
38
35
|
new FindEffectTimingUsage(),
|
|
39
36
|
new FindEmptyProjectableNodes(),
|
|
37
|
+
];
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
export class UpgradeToAngular19 extends Recipe {
|
|
42
|
+
readonly name = "org.openrewrite.angular.UpgradeToAngular19";
|
|
43
|
+
readonly displayName = "Upgrade to Angular 19";
|
|
44
|
+
readonly description = "Migrates Angular 18.x applications to Angular 19. " +
|
|
45
|
+
"This includes updating Angular package versions, adjusting the standalone default, " +
|
|
46
|
+
"renaming `ExperimentalPendingTasks` to `PendingTasks`, moving the `ApplicationConfig` import " +
|
|
47
|
+
"to `@angular/core`, and updating `zone.js`.";
|
|
48
|
+
|
|
49
|
+
async recipeList(): Promise<Recipe[]> {
|
|
50
|
+
return [
|
|
51
|
+
new UpgradeToAngular19CodeChanges(),
|
|
40
52
|
// Angular core packages
|
|
41
53
|
await upgradeDependencyVersion({packagePattern: "@angular/*", newVersion: "19.x"}),
|
|
42
|
-
// Angular DevKit
|
|
43
|
-
await upgradeDependencyVersion({
|
|
54
|
+
// Angular DevKit; `architect` and `build-webpack` kept the 0.<major><minor>.x CLI scheme
|
|
55
|
+
await upgradeDependencyVersion({packageName: "@angular-devkit/core", newVersion: "19.x"}),
|
|
56
|
+
await upgradeDependencyVersion({packagePattern: "@angular-devkit/s*", newVersion: "19.x"}),
|
|
57
|
+
await upgradeDependencyVersion({packageName: "@angular-devkit/build-angular", newVersion: "19.x"}),
|
|
58
|
+
await upgradeDependencyVersion({packagePattern: "@angular-devkit/architect*", newVersion: "0.1902.x"}),
|
|
59
|
+
await upgradeDependencyVersion({packageName: "@angular-devkit/build-webpack", newVersion: "0.1902.x"}),
|
|
44
60
|
await upgradeDependencyVersion({packageName: "@schematics/angular", newVersion: "19.x"}),
|
|
45
61
|
// zone.js
|
|
46
62
|
await upgradeDependencyVersion({packageName: "zone.js", newVersion: "0.15.x"}),
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
|
|
7
7
|
import {Recipe} from "@openrewrite/rewrite";
|
|
8
8
|
import {upgradeDependencyVersion} from "@openrewrite/rewrite/javascript";
|
|
9
|
-
import {
|
|
9
|
+
import {UpgradeToAngular19CodeChanges} from "./upgrade-to-angular-19";
|
|
10
10
|
import {RenameZonelessProvider} from "./rename-zoneless-provider";
|
|
11
11
|
import {RenameCheckNoChanges} from "./rename-check-no-changes";
|
|
12
12
|
import {RenameAfterRender} from "./rename-after-render";
|
|
@@ -15,17 +15,15 @@ import {MoveDocumentImport} from "./move-document-to-core";
|
|
|
15
15
|
import {RemoveStandaloneTrue} from "./remove-standalone-true";
|
|
16
16
|
import {RemoveZoneJsPolyfill} from "./remove-zone-js-polyfill";
|
|
17
17
|
|
|
18
|
-
export class
|
|
19
|
-
readonly name = "org.openrewrite.angular.
|
|
20
|
-
readonly displayName = "Upgrade to Angular 20";
|
|
21
|
-
readonly description = "
|
|
22
|
-
"
|
|
23
|
-
"renaming experimental APIs promoted to stable, and upgrading TypeScript to 5.8.x.";
|
|
18
|
+
export class UpgradeToAngular20CodeChanges extends Recipe {
|
|
19
|
+
readonly name = "org.openrewrite.angular.UpgradeToAngular20CodeChanges";
|
|
20
|
+
readonly displayName = "Upgrade to Angular 20 (code changes)";
|
|
21
|
+
readonly description = "The source changes of the Angular 20 migration, without the dependency version bumps. " +
|
|
22
|
+
"Use `UpgradeToAngular20` unless you are composing a migration to a later major.";
|
|
24
23
|
|
|
25
24
|
async recipeList(): Promise<Recipe[]> {
|
|
26
25
|
return [
|
|
27
|
-
|
|
28
|
-
new UpgradeToAngular19(),
|
|
26
|
+
new UpgradeToAngular19CodeChanges(),
|
|
29
27
|
// Code transformations
|
|
30
28
|
new RenameZonelessProvider(),
|
|
31
29
|
new RenameCheckNoChanges(),
|
|
@@ -34,10 +32,28 @@ export class UpgradeToAngular20 extends Recipe {
|
|
|
34
32
|
new MoveDocumentImport(),
|
|
35
33
|
new RemoveStandaloneTrue(),
|
|
36
34
|
new RemoveZoneJsPolyfill(),
|
|
35
|
+
];
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
export class UpgradeToAngular20 extends Recipe {
|
|
40
|
+
readonly name = "org.openrewrite.angular.UpgradeToAngular20";
|
|
41
|
+
readonly displayName = "Upgrade to Angular 20";
|
|
42
|
+
readonly description = "Migrates Angular 19.x applications to Angular 20. " +
|
|
43
|
+
"This includes running the Angular 19 migration first, then updating Angular package versions, " +
|
|
44
|
+
"renaming experimental APIs promoted to stable, and upgrading TypeScript to 5.8.x.";
|
|
45
|
+
|
|
46
|
+
async recipeList(): Promise<Recipe[]> {
|
|
47
|
+
return [
|
|
48
|
+
new UpgradeToAngular20CodeChanges(),
|
|
37
49
|
// Angular core packages
|
|
38
50
|
await upgradeDependencyVersion({packagePattern: "@angular/*", newVersion: "20.x"}),
|
|
39
|
-
// Angular DevKit
|
|
40
|
-
await upgradeDependencyVersion({
|
|
51
|
+
// Angular DevKit; `architect` and `build-webpack` kept the 0.<major><minor>.x CLI scheme
|
|
52
|
+
await upgradeDependencyVersion({packageName: "@angular-devkit/core", newVersion: "20.x"}),
|
|
53
|
+
await upgradeDependencyVersion({packagePattern: "@angular-devkit/s*", newVersion: "20.x"}),
|
|
54
|
+
await upgradeDependencyVersion({packageName: "@angular-devkit/build-angular", newVersion: "20.x"}),
|
|
55
|
+
await upgradeDependencyVersion({packagePattern: "@angular-devkit/architect*", newVersion: "0.2003.x"}),
|
|
56
|
+
await upgradeDependencyVersion({packageName: "@angular-devkit/build-webpack", newVersion: "0.2003.x"}),
|
|
41
57
|
await upgradeDependencyVersion({packageName: "@schematics/angular", newVersion: "20.x"}),
|
|
42
58
|
// TypeScript
|
|
43
59
|
await upgradeDependencyVersion({packageName: "typescript", newVersion: "5.8.x"}),
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
|
|
7
7
|
import {Recipe} from "@openrewrite/rewrite";
|
|
8
8
|
import {upgradeDependencyVersion} from "@openrewrite/rewrite/javascript";
|
|
9
|
-
import {
|
|
9
|
+
import {UpgradeToAngular20CodeChanges} from "./upgrade-to-angular-20";
|
|
10
10
|
import {FindKarmaUsage} from "../search/find-karma-usage";
|
|
11
11
|
import {FindCommonModuleUsage} from "../search/find-common-module-usage";
|
|
12
12
|
import {FindNgClassUsage} from "../search/find-ng-class-usage";
|
|
@@ -17,18 +17,15 @@ import {MigrateInputToSignal} from "./migrate-input-to-signal";
|
|
|
17
17
|
import {MigrateOutputToSignal} from "./migrate-output-to-signal";
|
|
18
18
|
import {MigrateQueryToSignal} from "./migrate-query-to-signal";
|
|
19
19
|
|
|
20
|
-
export class
|
|
21
|
-
readonly name = "org.openrewrite.angular.
|
|
22
|
-
readonly displayName = "Upgrade to Angular 21";
|
|
23
|
-
readonly description = "
|
|
24
|
-
"
|
|
25
|
-
"for Vitest migration, deprecated NgClass, zone.js-dependent test helpers, " +
|
|
26
|
-
"and upgrading TypeScript to 5.9.x.";
|
|
20
|
+
export class UpgradeToAngular21CodeChanges extends Recipe {
|
|
21
|
+
readonly name = "org.openrewrite.angular.UpgradeToAngular21CodeChanges";
|
|
22
|
+
readonly displayName = "Upgrade to Angular 21 (code changes)";
|
|
23
|
+
readonly description = "The source changes of the Angular 21 migration, without the dependency version bumps. " +
|
|
24
|
+
"Use `UpgradeToAngular21` unless you are composing a migration to a later major.";
|
|
27
25
|
|
|
28
26
|
async recipeList(): Promise<Recipe[]> {
|
|
29
27
|
return [
|
|
30
|
-
|
|
31
|
-
new UpgradeToAngular20(),
|
|
28
|
+
new UpgradeToAngular20CodeChanges(),
|
|
32
29
|
// Deprecation and behavioral change warnings
|
|
33
30
|
new FindKarmaUsage(),
|
|
34
31
|
new FindCommonModuleUsage(),
|
|
@@ -40,10 +37,29 @@ export class UpgradeToAngular21 extends Recipe {
|
|
|
40
37
|
new MigrateInputToSignal(),
|
|
41
38
|
new MigrateOutputToSignal(),
|
|
42
39
|
new MigrateQueryToSignal(),
|
|
40
|
+
];
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
export class UpgradeToAngular21 extends Recipe {
|
|
45
|
+
readonly name = "org.openrewrite.angular.UpgradeToAngular21";
|
|
46
|
+
readonly displayName = "Upgrade to Angular 21";
|
|
47
|
+
readonly description = "Migrates Angular 20.x applications to Angular 21. " +
|
|
48
|
+
"This includes running the Angular 20 migration first, flagging Karma test runner usage " +
|
|
49
|
+
"for Vitest migration, deprecated NgClass, zone.js-dependent test helpers, " +
|
|
50
|
+
"and upgrading TypeScript to 5.9.x.";
|
|
51
|
+
|
|
52
|
+
async recipeList(): Promise<Recipe[]> {
|
|
53
|
+
return [
|
|
54
|
+
new UpgradeToAngular21CodeChanges(),
|
|
43
55
|
// Angular core packages
|
|
44
56
|
await upgradeDependencyVersion({packagePattern: "@angular/*", newVersion: "21.x"}),
|
|
45
|
-
// Angular DevKit
|
|
46
|
-
await upgradeDependencyVersion({
|
|
57
|
+
// Angular DevKit; `architect` and `build-webpack` kept the 0.<major><minor>.x CLI scheme
|
|
58
|
+
await upgradeDependencyVersion({packageName: "@angular-devkit/core", newVersion: "21.x"}),
|
|
59
|
+
await upgradeDependencyVersion({packagePattern: "@angular-devkit/s*", newVersion: "21.x"}),
|
|
60
|
+
await upgradeDependencyVersion({packageName: "@angular-devkit/build-angular", newVersion: "21.x"}),
|
|
61
|
+
await upgradeDependencyVersion({packagePattern: "@angular-devkit/architect*", newVersion: "0.2102.x"}),
|
|
62
|
+
await upgradeDependencyVersion({packageName: "@angular-devkit/build-webpack", newVersion: "0.2102.x"}),
|
|
47
63
|
await upgradeDependencyVersion({packageName: "@schematics/angular", newVersion: "21.x"}),
|
|
48
64
|
// TypeScript
|
|
49
65
|
await upgradeDependencyVersion({packageName: "typescript", newVersion: "5.9.x"}),
|
|
@@ -13,6 +13,33 @@ import {FindPlatformWebworkerUsage} from "../search/find-platform-webworker-usag
|
|
|
13
13
|
import {FindRxjsCompatUsage} from "../search/find-rxjs-compat-usage";
|
|
14
14
|
import {ReplaceLoadChildrenString} from "./replace-load-children-string";
|
|
15
15
|
|
|
16
|
+
/**
|
|
17
|
+
* Source changes only. Later majors chain this instead of `UpgradeToAngular8` so they don't
|
|
18
|
+
* inherit its dependency ladder — only the target major's versions should end up in the patch.
|
|
19
|
+
*/
|
|
20
|
+
export class UpgradeToAngular8CodeChanges extends Recipe {
|
|
21
|
+
readonly name = "org.openrewrite.angular.UpgradeToAngular8CodeChanges";
|
|
22
|
+
readonly displayName = "Upgrade to Angular 8 (code changes)";
|
|
23
|
+
readonly description = "The source changes of the Angular 8 migration, without the dependency version bumps. " +
|
|
24
|
+
"Use `UpgradeToAngular8` unless you are composing a migration to a later major.";
|
|
25
|
+
|
|
26
|
+
async recipeList(): Promise<Recipe[]> {
|
|
27
|
+
return [
|
|
28
|
+
// Code transformations
|
|
29
|
+
new AddStaticFalseToViewQueries(),
|
|
30
|
+
new MoveDocumentImport({targetModule: '@angular/common'}),
|
|
31
|
+
// Search: removed/deprecated APIs
|
|
32
|
+
new FindRxjsCompatUsage(),
|
|
33
|
+
new ReplaceLoadChildrenString(),
|
|
34
|
+
new FindAngularHttpUsage(),
|
|
35
|
+
new FindPlatformWebworkerUsage(),
|
|
36
|
+
// Remove rxjs-compat (RxJS 5→6 shim no longer needed). A one-shot removal rather than a
|
|
37
|
+
// version bump, so it lives here where migrations to later majors still pick it up.
|
|
38
|
+
await removeDependency({packageName: "rxjs-compat"}),
|
|
39
|
+
];
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
|
|
16
43
|
export class UpgradeToAngular8 extends Recipe {
|
|
17
44
|
readonly name = "org.openrewrite.angular.UpgradeToAngular8";
|
|
18
45
|
readonly displayName = "Upgrade to Angular 8";
|
|
@@ -26,22 +53,16 @@ export class UpgradeToAngular8 extends Recipe {
|
|
|
26
53
|
|
|
27
54
|
async recipeList(): Promise<Recipe[]> {
|
|
28
55
|
return [
|
|
29
|
-
|
|
30
|
-
new AddStaticFalseToViewQueries(),
|
|
31
|
-
new MoveDocumentImport({targetModule: '@angular/common'}),
|
|
32
|
-
// Search: removed/deprecated APIs
|
|
33
|
-
new FindRxjsCompatUsage(),
|
|
34
|
-
new ReplaceLoadChildrenString(),
|
|
35
|
-
new FindAngularHttpUsage(),
|
|
36
|
-
new FindPlatformWebworkerUsage(),
|
|
37
|
-
// Remove rxjs-compat (RxJS 5→6 shim no longer needed)
|
|
38
|
-
await removeDependency({packageName: "rxjs-compat"}),
|
|
56
|
+
new UpgradeToAngular8CodeChanges(),
|
|
39
57
|
// Angular core packages
|
|
40
58
|
await upgradeDependencyVersion({packagePattern: "@angular/*", newVersion: "8.x"}),
|
|
41
|
-
// Angular
|
|
42
|
-
await upgradeDependencyVersion({packageName: "@angular/
|
|
43
|
-
|
|
44
|
-
await upgradeDependencyVersion({
|
|
59
|
+
// Angular DevKit; before Angular 12 the CLI-aligned packages used the 0.<major><minor>.x scheme
|
|
60
|
+
await upgradeDependencyVersion({packageName: "@angular-devkit/core", newVersion: "8.x"}),
|
|
61
|
+
await upgradeDependencyVersion({packageName: "@angular-devkit/schematics", newVersion: "8.x"}),
|
|
62
|
+
await upgradeDependencyVersion({packageName: "@angular-devkit/build-angular", newVersion: "0.803.x"}),
|
|
63
|
+
await upgradeDependencyVersion({packageName: "@angular-devkit/schematics-cli", newVersion: "0.803.x"}),
|
|
64
|
+
await upgradeDependencyVersion({packagePattern: "@angular-devkit/architect*", newVersion: "0.803.x"}),
|
|
65
|
+
await upgradeDependencyVersion({packageName: "@angular-devkit/build-webpack", newVersion: "0.803.x"}),
|
|
45
66
|
await upgradeDependencyVersion({packageName: "@schematics/angular", newVersion: "8.x"}),
|
|
46
67
|
// zone.js
|
|
47
68
|
await upgradeDependencyVersion({packageName: "zone.js", newVersion: "0.9.x"}),
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
|
|
7
7
|
import {Recipe} from "@openrewrite/rewrite";
|
|
8
8
|
import {upgradeDependencyVersion} from "@openrewrite/rewrite/javascript";
|
|
9
|
-
import {
|
|
9
|
+
import {UpgradeToAngular8CodeChanges} from "./upgrade-to-angular-8";
|
|
10
10
|
import {RemoveStaticFalse} from "./remove-static-false";
|
|
11
11
|
import {EnableAotBuild} from "./enable-aot-build";
|
|
12
12
|
import {UpdateTsconfigModule} from "./update-tsconfig-module";
|
|
@@ -21,21 +21,15 @@ import {FindAnalyzeForEntryComponentsUsage} from "../search/find-analyze-for-ent
|
|
|
21
21
|
import {ReplaceTestBedGetWithInject} from "./replace-testbed-get-with-inject";
|
|
22
22
|
import {AddModuleWithProvidersGeneric} from "./add-module-with-providers-generic";
|
|
23
23
|
|
|
24
|
-
export class
|
|
25
|
-
readonly name = "org.openrewrite.angular.
|
|
26
|
-
readonly displayName = "Upgrade to Angular 9";
|
|
27
|
-
readonly description = "
|
|
28
|
-
"
|
|
29
|
-
"replacing `TestBed.get()` with `TestBed.inject()`, " +
|
|
30
|
-
"adding generic type parameters to `ModuleWithProviders`, " +
|
|
31
|
-
"enabling AOT compilation in `angular.json`, " +
|
|
32
|
-
"updating `tsconfig.json` module settings for Ivy, " +
|
|
33
|
-
"flagging removed View Engine APIs (`Renderer`, `RenderComponentType`, `RootRenderer`), " +
|
|
34
|
-
"and upgrading Angular, TypeScript, and related dependency versions.";
|
|
24
|
+
export class UpgradeToAngular9CodeChanges extends Recipe {
|
|
25
|
+
readonly name = "org.openrewrite.angular.UpgradeToAngular9CodeChanges";
|
|
26
|
+
readonly displayName = "Upgrade to Angular 9 (code changes)";
|
|
27
|
+
readonly description = "The source changes of the Angular 9 migration, without the dependency version bumps. " +
|
|
28
|
+
"Use `UpgradeToAngular9` unless you are composing a migration to a later major.";
|
|
35
29
|
|
|
36
30
|
async recipeList(): Promise<Recipe[]> {
|
|
37
31
|
return [
|
|
38
|
-
new
|
|
32
|
+
new UpgradeToAngular8CodeChanges(),
|
|
39
33
|
// Code transformations
|
|
40
34
|
new RemoveStaticFalse(),
|
|
41
35
|
new EnableAotBuild(),
|
|
@@ -51,12 +45,34 @@ export class UpgradeToAngular9 extends Recipe {
|
|
|
51
45
|
new FindUndecoratedAngularClass(),
|
|
52
46
|
new FindMissingInjectable(),
|
|
53
47
|
new FindAnalyzeForEntryComponentsUsage(),
|
|
48
|
+
];
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
export class UpgradeToAngular9 extends Recipe {
|
|
53
|
+
readonly name = "org.openrewrite.angular.UpgradeToAngular9";
|
|
54
|
+
readonly displayName = "Upgrade to Angular 9";
|
|
55
|
+
readonly description = "Migrates Angular 8.x applications to Angular 9. " +
|
|
56
|
+
"This includes removing the now-default `static: false` from view query decorators, " +
|
|
57
|
+
"replacing `TestBed.get()` with `TestBed.inject()`, " +
|
|
58
|
+
"adding generic type parameters to `ModuleWithProviders`, " +
|
|
59
|
+
"enabling AOT compilation in `angular.json`, " +
|
|
60
|
+
"updating `tsconfig.json` module settings for Ivy, " +
|
|
61
|
+
"flagging removed View Engine APIs (`Renderer`, `RenderComponentType`, `RootRenderer`), " +
|
|
62
|
+
"and upgrading Angular, TypeScript, and related dependency versions.";
|
|
63
|
+
|
|
64
|
+
async recipeList(): Promise<Recipe[]> {
|
|
65
|
+
return [
|
|
66
|
+
new UpgradeToAngular9CodeChanges(),
|
|
54
67
|
// Angular core packages
|
|
55
68
|
await upgradeDependencyVersion({packagePattern: "@angular/*", newVersion: "9.x"}),
|
|
56
|
-
// Angular
|
|
57
|
-
await upgradeDependencyVersion({packageName: "@angular/
|
|
58
|
-
|
|
59
|
-
await upgradeDependencyVersion({
|
|
69
|
+
// Angular DevKit; before Angular 12 the CLI-aligned packages used the 0.<major><minor>.x scheme
|
|
70
|
+
await upgradeDependencyVersion({packageName: "@angular-devkit/core", newVersion: "9.x"}),
|
|
71
|
+
await upgradeDependencyVersion({packageName: "@angular-devkit/schematics", newVersion: "9.x"}),
|
|
72
|
+
await upgradeDependencyVersion({packageName: "@angular-devkit/build-angular", newVersion: "0.901.x"}),
|
|
73
|
+
await upgradeDependencyVersion({packageName: "@angular-devkit/schematics-cli", newVersion: "0.901.x"}),
|
|
74
|
+
await upgradeDependencyVersion({packagePattern: "@angular-devkit/architect*", newVersion: "0.901.x"}),
|
|
75
|
+
await upgradeDependencyVersion({packageName: "@angular-devkit/build-webpack", newVersion: "0.901.x"}),
|
|
60
76
|
await upgradeDependencyVersion({packageName: "@schematics/angular", newVersion: "9.x"}),
|
|
61
77
|
// zone.js
|
|
62
78
|
await upgradeDependencyVersion({packageName: "zone.js", newVersion: "0.10.x"}),
|