Skip to content

Commit 430f67c

Browse files
authored
Merge pull request #51 from ccremer/angular-v16
Upgrade to Angular v16 and migrate to standalone components
2 parents 6735155 + 987c254 commit 430f67c

File tree

14 files changed

+3212
-2376
lines changed

14 files changed

+3212
-2376
lines changed

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ node_modules/
2727

2828
# generated output
2929
dist
30+
/angular.json
3031

3132
# test output
3233
playwright-report

package-lock.json

Lines changed: 3096 additions & 2236 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

packages/kubernetes-client-angular/package.json

Lines changed: 25 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,9 @@
66
"dev": "ng serve",
77
"preformat": "node ../../README.cjs projects/kubernetes-client-angular/README.md.njk > projects/kubernetes-client-angular/README.md",
88
"format": "prettier --write ./**/*.{js,ts,json}",
9-
"prelint": "npm run format",
9+
"prelint": "npm run format && ln -sf ${PWD}/angular.json ../../angular.json",
1010
"lint": "ng lint",
11+
"postlint": "rm -f ../../angular.json",
1112
"build": "for PROJ in $(ls projects); do ng build $PROJ; done",
1213
"watch": "ng build --watch --configuration development",
1314
"pree2e": "playwright install",
@@ -21,19 +22,17 @@
2122
"dist"
2223
],
2324
"dependencies": {
24-
"@angular/animations": "^15.2.0",
25-
"@angular/common": "^15.2.0",
26-
"@angular/compiler": "^15.2.0",
27-
"@angular/core": "^15.2.0",
28-
"@angular/forms": "^15.2.0",
29-
"@angular/platform-browser": "^15.2.0",
30-
"@angular/platform-browser-dynamic": "^15.2.0",
31-
"@angular/router": "^15.2.0",
32-
"@ngrx/data": "^15.4.0",
33-
"@ngrx/effects": "^15.4.0",
34-
"@ngrx/store": "^15.4.0",
35-
"bootstrap": "5.2.3",
36-
"jose": "4.14.4",
25+
"@angular/animations": "^16.0.2",
26+
"@angular/common": "^16.0.2",
27+
"@angular/compiler": "^16.0.2",
28+
"@angular/core": "^16.0.2",
29+
"@angular/forms": "^16.0.2",
30+
"@angular/platform-browser": "^16.0.2",
31+
"@angular/platform-browser-dynamic": "^16.0.2",
32+
"@angular/router": "^16.0.2",
33+
"@ngrx/data": "^16.0.0",
34+
"@ngrx/effects": "^16.0.0",
35+
"@ngrx/store": "^16.0.0",
3736
"rxjs": "~7.8.0",
3837
"tslib": "2.5.0",
3938
"zone.js": "~0.13.0"
@@ -42,19 +41,21 @@
4241
"@ccremer/kubernetes-client": "*"
4342
},
4443
"devDependencies": {
45-
"@angular-devkit/build-angular": "^15.2.6",
46-
"@angular-eslint/builder": "15.2.1",
47-
"@angular-eslint/eslint-plugin": "15.2.1",
48-
"@angular-eslint/eslint-plugin-template": "15.2.1",
49-
"@angular-eslint/schematics": "15.2.1",
50-
"@angular-eslint/template-parser": "15.2.1",
51-
"@angular/cli": "~15.2.6",
52-
"@angular/compiler-cli": "^15.2.0",
53-
"@ngrx/store-devtools": "15.4.0",
44+
"bootstrap": "5.2.3",
45+
"jose": "4.14.4",
46+
"@angular-devkit/build-angular": "16.0.1",
47+
"@angular-eslint/builder": "16.0.2",
48+
"@angular-eslint/eslint-plugin": "16.0.2",
49+
"@angular-eslint/eslint-plugin-template": "16.0.2",
50+
"@angular-eslint/schematics": "16.0.2",
51+
"@angular-eslint/template-parser": "16.0.2",
52+
"@angular/cli": "~16.0.2",
53+
"@angular/compiler-cli": "^16.0.2",
54+
"@ngrx/store-devtools": "16.0.0",
5455
"@playwright/test": "^1.32.3",
5556
"eslint-config-custom": "*",
5657
"eslint-plugin-ngrx": "2.1.4",
57-
"ng-packagr": "^15.2.2"
58+
"ng-packagr": "^16.0.1"
5859
},
5960
"publishConfig": {
6061
"access": "public"

packages/kubernetes-client-angular/projects/kubernetes-client-angular/README.md

Lines changed: 19 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -35,49 +35,45 @@ Install the dependencies
3535
npm install @ccremer/kubernetes-client @ccremer/kubernetes-client-angular
3636
```
3737

38-
Setup the module with `@ngrx/data` in `app.module.ts`:
38+
Setup the module with `@ngrx/data` in `main.ts`:
3939
```typescript
40-
import { NgModule } from '@angular/core'
41-
import { BrowserModule } from '@angular/platform-browser'
42-
40+
import { bootstrapApplication, BrowserModule } from '@angular/platform-browser'
41+
import { AppComponent } from './app.component'
42+
import { importProvidersFrom } from '@angular/core'
43+
import { StoreModule } from '@ngrx/store'
44+
import { EffectsModule } from '@ngrx/effects'
4345
import { DefaultDataServiceFactory, EntityDataModule } from '@ngrx/data'
44-
import { HTTP_INTERCEPTORS, HttpClientModule } from '@angular/common/http'
4546
import {
4647
DefaultEntityMetadataMap,
4748
KubernetesAuthorizerInterceptor,
4849
KubernetesDataServiceFactory,
4950
KubernetesDataServiceFactoryConfig,
5051
} from '@ccremer/kubernetes-client-angular'
51-
import { StoreModule } from '@ngrx/store'
52-
import { EffectsModule } from '@ngrx/effects'
53-
import { AppComponent } from './app.component'
52+
import { HTTP_INTERCEPTORS, provideHttpClient, withInterceptorsFromDi } from '@angular/common/http'
5453

55-
@NgModule({
56-
declarations: [AppComponent],
57-
imports: [
58-
BrowserModule,
59-
HttpClientModule,
60-
StoreModule.forRoot(),
61-
EffectsModule.forRoot(),
62-
EntityDataModule.forRoot({
63-
entityMetadata: DefaultEntityMetadataMap,
64-
}),
65-
],
54+
bootstrapApplication(AppComponent, {
6655
providers: [
56+
importProvidersFrom(
57+
BrowserModule,
58+
StoreModule.forRoot(),
59+
EffectsModule.forRoot(),
60+
EntityDataModule.forRoot({
61+
entityMetadata: DefaultEntityMetadataMap,
62+
})
63+
),
64+
provideHttpClient(withInterceptorsFromDi()),
6765
{ provide: DefaultDataServiceFactory, useClass: KubernetesDataServiceFactory },
6866
{ provide: HTTP_INTERCEPTORS, useClass: KubernetesAuthorizerInterceptor, multi: true },
6967
{
7068
provide: KubernetesDataServiceFactoryConfig,
7169
useValue: {
7270
default: {
7371
usePatchInUpsert: true,
74-
usePatchInUpdate: false,
7572
},
7673
} satisfies KubernetesDataServiceFactoryConfig,
7774
},
7875
],
79-
})
80-
export class AppModule {}
76+
}).catch((err) => console.error(err))
8177
```
8278

8379
Optional but highly recommended: Create an extendable Service for each entity, for example in `config-map.service.ts`:
@@ -107,6 +103,7 @@ import { KubernetesAuthorizerService } from '@ccremer/kubernetes-client-angular'
107103
selector: 'app-root',
108104
template: '<p>Kubernetes Client for Angular in Action</p>',
109105
styles: [],
106+
standalone: true,
110107
})
111108
export class AppComponent implements OnInit {
112109
constructor(private configMapService: ConfigMapService, authorizer: KubernetesAuthorizerService) {

packages/kubernetes-client-angular/projects/kubernetes-client-angular/README.md.njk

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -35,9 +35,9 @@ Install the dependencies
3535
npm install @ccremer/kubernetes-client @ccremer/kubernetes-client-angular
3636
```
3737

38-
Setup the module with `@ngrx/data` in `app.module.ts`:
38+
Setup the module with `@ngrx/data` in `main.ts`:
3939
```typescript
40-
{% include "projects/kubernetes-client-angular/examples/app.module.ts" -%}
40+
{% include "projects/kubernetes-client-angular/examples/main.ts" -%}
4141
```
4242

4343
Optional but highly recommended: Create an extendable Service for each entity, for example in `config-map.service.ts`:

packages/kubernetes-client-angular/projects/kubernetes-client-angular/examples/app.component.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import { KubernetesAuthorizerService } from '@ccremer/kubernetes-client-angular'
66
selector: 'app-root',
77
template: '<p>Kubernetes Client for Angular in Action</p>',
88
styles: [],
9+
standalone: true,
910
})
1011
export class AppComponent implements OnInit {
1112
constructor(private configMapService: ConfigMapService, authorizer: KubernetesAuthorizerService) {
Lines changed: 17 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -1,41 +1,37 @@
1-
import { NgModule } from '@angular/core'
2-
import { BrowserModule } from '@angular/platform-browser'
3-
1+
import { bootstrapApplication, BrowserModule } from '@angular/platform-browser'
2+
import { AppComponent } from './app.component'
3+
import { importProvidersFrom } from '@angular/core'
4+
import { StoreModule } from '@ngrx/store'
5+
import { EffectsModule } from '@ngrx/effects'
46
import { DefaultDataServiceFactory, EntityDataModule } from '@ngrx/data'
5-
import { HTTP_INTERCEPTORS, HttpClientModule } from '@angular/common/http'
67
import {
78
DefaultEntityMetadataMap,
89
KubernetesAuthorizerInterceptor,
910
KubernetesDataServiceFactory,
1011
KubernetesDataServiceFactoryConfig,
1112
} from '@ccremer/kubernetes-client-angular'
12-
import { StoreModule } from '@ngrx/store'
13-
import { EffectsModule } from '@ngrx/effects'
14-
import { AppComponent } from './app.component'
13+
import { HTTP_INTERCEPTORS, provideHttpClient, withInterceptorsFromDi } from '@angular/common/http'
1514

16-
@NgModule({
17-
declarations: [AppComponent],
18-
imports: [
19-
BrowserModule,
20-
HttpClientModule,
21-
StoreModule.forRoot(),
22-
EffectsModule.forRoot(),
23-
EntityDataModule.forRoot({
24-
entityMetadata: DefaultEntityMetadataMap,
25-
}),
26-
],
15+
bootstrapApplication(AppComponent, {
2716
providers: [
17+
importProvidersFrom(
18+
BrowserModule,
19+
StoreModule.forRoot(),
20+
EffectsModule.forRoot(),
21+
EntityDataModule.forRoot({
22+
entityMetadata: DefaultEntityMetadataMap,
23+
})
24+
),
25+
provideHttpClient(withInterceptorsFromDi()),
2826
{ provide: DefaultDataServiceFactory, useClass: KubernetesDataServiceFactory },
2927
{ provide: HTTP_INTERCEPTORS, useClass: KubernetesAuthorizerInterceptor, multi: true },
3028
{
3129
provide: KubernetesDataServiceFactoryConfig,
3230
useValue: {
3331
default: {
3432
usePatchInUpsert: true,
35-
usePatchInUpdate: false,
3633
},
3734
} satisfies KubernetesDataServiceFactoryConfig,
3835
},
3936
],
40-
})
41-
export class AppModule {}
37+
}).catch((err) => console.error(err))

packages/kubernetes-client-angular/projects/kubernetes-client-angular/package.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
{
22
"name": "@ccremer/kubernetes-client-angular",
33
"peerDependencies": {
4-
"@angular/common": "^15.2.0",
5-
"@angular/core": "^15.2.0",
4+
"@angular/common": "^16.0.0",
5+
"@angular/core": "^16.0.0",
66
"@ccremer/kubernetes-client": "*"
77
},
88
"dependencies": {

packages/kubernetes-client-angular/projects/kubernetes-client-example-angular/src/app/app.component.ts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,13 @@
11
import { Component, OnInit } from '@angular/core'
2-
import { Router } from '@angular/router'
2+
import { Router, RouterOutlet } from '@angular/router'
33
import { KubernetesAuthorizerService } from 'kubernetes-client-angular'
44

55
@Component({
66
selector: 'app-root',
77
templateUrl: './app.component.html',
88
styleUrls: ['./app.component.scss'],
9+
standalone: true,
10+
imports: [RouterOutlet],
911
})
1012
export class AppComponent implements OnInit {
1113
constructor(private router: Router, private authorizer: KubernetesAuthorizerService) {}

packages/kubernetes-client-angular/projects/kubernetes-client-example-angular/src/app/app.module.ts

Lines changed: 0 additions & 49 deletions
This file was deleted.

0 commit comments

Comments
 (0)