update packages
This commit is contained in:
@@ -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.
|
||||||
|
|||||||
Generated
+3857
-13802
File diff suppressed because it is too large
Load Diff
+29
-16
@@ -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"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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,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;
|
||||||
|
}
|
||||||
|
|||||||
@@ -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;
|
||||||
|
}
|
||||||
|
|||||||
@@ -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,
|
||||||
|
|||||||
Reference in New Issue
Block a user