update packages

This commit is contained in:
benjamin
2026-10-25 21:48:51 +01:00
parent 2c1b6e5fbe
commit 464cb4bb7b
8 changed files with 3929 additions and 13820 deletions
+32
View File
@@ -16,6 +16,38 @@ npm start
`npm start` führt `ng serve` aus. Die Standard-Serve-Konfiguration ist `development`. `npm start` führt `ng serve` aus. Die Standard-Serve-Konfiguration ist `development`.
## Abhängigkeiten und Sicherheitsupdates
Build, Entwicklungsserver und Tests verwenden direkt `@angular/build`. Der ältere
Wrapper `@angular-devkit/build-angular` wird nicht benötigt. `less` ist als
Entwicklungsabhängigkeit erforderlich, damit die LESS-Styles kompiliert werden.
Stand 25. Oktober 2026 ist Firebase auf `12.18.0` festgesetzt, weil `12.19.0`
unvollständige Typdefinitionen für `Temporal.Instant` enthält. Bei einem späteren
Firebase-Update muss dieser Compilerfehler erneut geprüft werden.
Die `overrides` in `package.json` haben folgende Gründe:
- `@firebase/app`: eine gemeinsame App-Instanz für alle Firebase-Dienste;
unterschiedliche Versionen können zu „Service firestore is not available“ führen.
- Firestore → `@grpc/grpc-js`: Sicherheitsupdate innerhalb der Hauptversion 1.
- Angular Build → `undici`: Sicherheitsupdate innerhalb der Hauptversion 7.
- gaxios 6 → `uuid`: Version 11 enthält die Sicherheitskorrektur und unterstützt
weiterhin CommonJS sowie den von gaxios verwendeten `v4`-Aufruf.
- `qs`: Sicherheitsupdate innerhalb der Hauptversion 6.
Bei Updates der übergeordneten Pakete prüfen, ob diese Overrides entfernt werden
können. Danach `npm test -- --watch=false`, `npm run build:dev` und `npm audit`
ausführen.
Es verbleiben drei moderate Audit-Meldungen aus derselben Kette:
`firebase-tools` → `@google-cloud/pubsub` → `@opentelemetry/core`.
Firebase CLI 15.34.1 verlangt noch Pub/Sub 5; die korrigierte OpenTelemetry-Version
2.8 liegt außerhalb dessen Abhängigkeitsbereichs. Ein erzwungener Wechsel auf
Pub/Sub 6 oder OpenTelemetry 2 ist ohne Prüfung der CLI-Kompatibilität keine
geeignete Korrektur. `npm audit fix --force` schlägt stattdessen ein Downgrade der
Firebase CLI vor und sollte dafür nicht verwendet werden.
## Firebase-Konfiguration ## Firebase-Konfiguration
`src/environments/environment.ts` und `src/environments/environment.prod.ts` importieren beide `src/environments/firebase.ts`. Diese Datei ist nicht versioniert und muss lokal vorhanden sein. In CI wird sie aus Secrets erzeugt. `src/environments/environment.ts` und `src/environments/environment.prod.ts` importieren beide `src/environments/firebase.ts`. Diese Datei ist nicht versioniert und muss lokal vorhanden sein. In CI wird sie aus Secrets erzeugt.
+3857 -13802
View File
File diff suppressed because it is too large Load Diff
+29 -16
View File
@@ -9,27 +9,27 @@
"deploy-beta": "ng b && firebase hosting:channel:deploy beta", "deploy-beta": "ng b && firebase hosting:channel:deploy beta",
"test": "ng test", "test": "ng test",
"lint": "ng lint --fix", "lint": "ng lint --fix",
"update": "ng update @angular/cdk @angular/cli @angular/core @angular/material && ncu -u && npm i && npm fix" "update": "ng update @angular/cdk @angular/cli @angular/core @angular/material && ncu -u && npm i && npm audit fix"
}, },
"private": true, "private": true,
"dependencies": { "dependencies": {
"@angular/animations": "^21.2.2", "@angular/animations": "^21.2.25",
"@angular/cdk": "^21.2.1", "@angular/cdk": "^21.2.1",
"@angular/common": "^21.2.2", "@angular/common": "^21.2.25",
"@angular/compiler": "^21.2.2", "@angular/compiler": "^21.2.25",
"@angular/core": "^21.2.2", "@angular/core": "^21.2.25",
"@angular/fire": "21.0.0-rc.0", "@angular/fire": "21.0.0-rc.2",
"@angular/forms": "^21.2.2", "@angular/forms": "^21.2.25",
"@angular/material": "^21.2.1", "@angular/material": "^21.2.1",
"@angular/platform-browser": "^21.2.2", "@angular/platform-browser": "^21.2.25",
"@angular/platform-browser-dynamic": "^21.2.2", "@angular/platform-browser-dynamic": "^21.2.25",
"@angular/router": "^21.2.2", "@angular/router": "^21.2.25",
"@angular/service-worker": "^21.2.2", "@angular/service-worker": "^21.2.25",
"@fortawesome/angular-fontawesome": "^4.0.0", "@fortawesome/angular-fontawesome": "^4.0.0",
"@fortawesome/fontawesome-svg-core": "^7.2.0", "@fortawesome/fontawesome-svg-core": "^7.2.0",
"@fortawesome/free-solid-svg-icons": "^7.2.0", "@fortawesome/free-solid-svg-icons": "^7.2.0",
"docx": "^9.6.0", "docx": "^9.6.0",
"firebase": "^12.10.0", "firebase": "12.18.0",
"ngx-mat-select-search": "^8.0.4", "ngx-mat-select-search": "^8.0.4",
"qrcode": "^1.5.4", "qrcode": "^1.5.4",
"rxjs": "~7.8.1", "rxjs": "~7.8.1",
@@ -38,16 +38,15 @@
"zone.js": "~0.15.0" "zone.js": "~0.15.0"
}, },
"devDependencies": { "devDependencies": {
"@angular-devkit/architect": "0.2102.1",
"@angular-devkit/build-angular": "^21.2.1",
"@angular-eslint/builder": "21.3.0", "@angular-eslint/builder": "21.3.0",
"@angular-eslint/eslint-plugin": "21.3.0", "@angular-eslint/eslint-plugin": "21.3.0",
"@angular-eslint/eslint-plugin-template": "21.3.0", "@angular-eslint/eslint-plugin-template": "21.3.0",
"@angular-eslint/schematics": "21.3.0", "@angular-eslint/schematics": "21.3.0",
"@angular-eslint/template-parser": "21.3.0", "@angular-eslint/template-parser": "21.3.0",
"@angular/build": "^21.2.28",
"@angular/cli": "^21.2.1", "@angular/cli": "^21.2.1",
"@angular/compiler-cli": "^21.2.2", "@angular/compiler-cli": "^21.2.25",
"@angular/language-service": "^21.2.2", "@angular/language-service": "^21.2.25",
"@typescript-eslint/eslint-plugin": "^8.57.0", "@typescript-eslint/eslint-plugin": "^8.57.0",
"@typescript-eslint/parser": "^8.57.0", "@typescript-eslint/parser": "^8.57.0",
"angular-eslint": "^21.3.1", "angular-eslint": "^21.3.1",
@@ -56,8 +55,22 @@
"eslint-plugin-prettier": "^5.5.5", "eslint-plugin-prettier": "^5.5.5",
"firebase-tools": "^15.9.1", "firebase-tools": "^15.9.1",
"jsdom": "^29.0.0", "jsdom": "^29.0.0",
"less": "^4.9.1",
"prettier": "^3.8.1", "prettier": "^3.8.1",
"typescript": "~5.9.3", "typescript": "~5.9.3",
"vitest": "^4.1.0" "vitest": "^4.1.0"
},
"overrides": {
"@angular/build": {
"undici": "^7.30.1"
},
"@firebase/firestore": {
"@grpc/grpc-js": "^1.14.6"
},
"gaxios@6": {
"uuid": "^11.1.1"
},
"qs": "^6.16.0",
"@firebase/app": "0.16.2"
} }
} }
+1
View File
@@ -45,6 +45,7 @@ const routes: Routes = [
{ {
path: 'brand', path: 'brand',
loadChildren: () => import('./modules/brand/brand.module').then(m => m.BrandModule), loadChildren: () => import('./modules/brand/brand.module').then(m => m.BrandModule),
canActivate: [AuthGuard],
}, },
{ {
path: 'guest', path: 'guest',
+1 -1
View File
@@ -1,4 +1,4 @@
<div class="brand"> <div class="brand">
<app-logo></app-logo> <app-logo></app-logo>
<div class="copyright">© 2019 - 2026 - Benjamin Ifland</div> <div class="copyright"><span class="version">v{{ version }}</span> © 2026 - Benjamin Ifland</div>
</div> </div>
@@ -10,3 +10,7 @@
transform: scale(0.5) translateY(-50%); transform: scale(0.5) translateY(-50%);
} }
} }
.version {
font-size: 0.7em;
}
+4 -1
View File
@@ -1,5 +1,6 @@
import {Component} from '@angular/core'; import {Component} from '@angular/core';
import {LogoComponent} from '../../widget-modules/components/logo/logo.component'; import {LogoComponent} from '../../widget-modules/components/logo/logo.component';
import {version} from '../../../../package.json';
@Component({ @Component({
selector: 'app-brand', selector: 'app-brand',
@@ -7,4 +8,6 @@ import {LogoComponent} from '../../widget-modules/components/logo/logo.component
styleUrls: ['./brand.component.less'], styleUrls: ['./brand.component.less'],
imports: [LogoComponent], imports: [LogoComponent],
}) })
export class BrandComponent {} export class BrandComponent {
protected readonly version = version;
}
+1
View File
@@ -9,6 +9,7 @@
"experimentalDecorators": true, "experimentalDecorators": true,
"module": "es2020", "module": "es2020",
"moduleResolution": "bundler", "moduleResolution": "bundler",
"resolveJsonModule": true,
"importHelpers": true, "importHelpers": true,
"target": "ES2022", "target": "ES2022",
"strict": true, "strict": true,