diff --git a/src-ui/angular.json b/src-ui/angular.json index 643d6bda0..65cb7910a 100644 --- a/src-ui/angular.json +++ b/src-ui/angular.json @@ -60,10 +60,12 @@ "path": "./extra-webpack.config.ts" }, "outputPath": "dist/paperless-ui", + "main": "src/main.ts", "outputHashing": "none", "index": "src/index.html", - "main": "src/main.ts", - "polyfills": "src/polyfills.ts", + "polyfills": [ + "src/polyfills.ts" + ], "tsConfig": "tsconfig.app.json", "localize": true, "assets": [ @@ -86,12 +88,15 @@ "file-saver", "utif" ], - "vendorChunk": true, "extractLicenses": false, - "buildOptimizer": false, "sourceMap": true, "optimization": false, - "namedChunks": true + "namedChunks": true, + "stylePreprocessorOptions": { + "includePaths": [ + "." + ] + } }, "configurations": { "production": { @@ -107,8 +112,6 @@ "sourceMap": false, "namedChunks": false, "extractLicenses": true, - "vendorChunk": false, - "buildOptimizer": true, "budgets": [ { "type": "initial", @@ -188,6 +191,30 @@ }, "@angular-eslint/schematics:library": { "setParserOptionsProject": true + }, + "@schematics/angular:component": { + "type": "component" + }, + "@schematics/angular:directive": { + "type": "directive" + }, + "@schematics/angular:service": { + "type": "service" + }, + "@schematics/angular:guard": { + "typeSeparator": "." + }, + "@schematics/angular:interceptor": { + "typeSeparator": "." + }, + "@schematics/angular:module": { + "typeSeparator": "." + }, + "@schematics/angular:pipe": { + "typeSeparator": "." + }, + "@schematics/angular:resolver": { + "typeSeparator": "." } } } diff --git a/src-ui/package.json b/src-ui/package.json index 2913a6319..16973af5f 100644 --- a/src-ui/package.json +++ b/src-ui/package.json @@ -11,17 +11,17 @@ }, "private": true, "dependencies": { - "@angular/cdk": "^19.2.14", - "@angular/common": "~19.2.14", - "@angular/compiler": "~19.2.14", - "@angular/core": "~19.2.14", - "@angular/forms": "~19.2.14", - "@angular/localize": "~19.2.14", - "@angular/platform-browser": "~19.2.14", - "@angular/platform-browser-dynamic": "~19.2.14", - "@angular/router": "~19.2.14", - "@ng-bootstrap/ng-bootstrap": "^18.0.0", - "@ng-select/ng-select": "^14.9.0", + "@angular/cdk": "^20.0.4", + "@angular/common": "~20.0.5", + "@angular/compiler": "~20.0.5", + "@angular/core": "~20.0.5", + "@angular/forms": "~20.0.5", + "@angular/localize": "~20.0.5", + "@angular/platform-browser": "~20.0.5", + "@angular/platform-browser-dynamic": "~20.0.5", + "@angular/router": "~20.0.5", + "@ng-bootstrap/ng-bootstrap": "^19.0.0", + "@ng-select/ng-select": "^15.1.2", "@ngneat/dirty-check-forms": "^3.0.3", "@popperjs/core": "^2.11.8", "bootstrap": "^5.3.6", @@ -32,7 +32,7 @@ "ngx-color": "^10.0.0", "ngx-cookie-service": "^19.1.2", "ngx-device-detector": "^9.0.0", - "ngx-ui-tour-ng-bootstrap": "^16.0.0", + "ngx-ui-tour-ng-bootstrap": "^17.0.0", "rxjs": "^7.8.2", "tslib": "^2.8.1", "utif": "^3.1.0", @@ -40,25 +40,25 @@ "zone.js": "^0.15.1" }, "devDependencies": { - "@angular-builders/custom-webpack": "^19.0.1", - "@angular-builders/jest": "^19.0.1", - "@angular-devkit/build-angular": "^19.2.14", - "@angular-devkit/core": "^19.2.14", - "@angular-devkit/schematics": "^19.2.14", - "@angular-eslint/builder": "19.7.0", - "@angular-eslint/eslint-plugin": "19.7.0", - "@angular-eslint/eslint-plugin-template": "19.7.0", - "@angular-eslint/schematics": "19.7.0", - "@angular-eslint/template-parser": "19.7.0", - "@angular/cli": "~19.2.14", - "@angular/compiler-cli": "~19.2.14", + "@angular-builders/custom-webpack": "^20.0.0", + "@angular-builders/jest": "^20.0.0", + "@angular-devkit/core": "^20.0.4", + "@angular-devkit/schematics": "^20.0.4", + "@angular-eslint/builder": "20.1.1", + "@angular-eslint/eslint-plugin": "20.1.1", + "@angular-eslint/eslint-plugin-template": "20.1.1", + "@angular-eslint/schematics": "20.1.1", + "@angular-eslint/template-parser": "20.1.1", + "@angular/build": "^20.0.4", + "@angular/cli": "~20.0.4", + "@angular/compiler-cli": "~20.0.5", "@codecov/webpack-plugin": "^1.9.1", "@playwright/test": "^1.51.1", "@types/jest": "^29.5.14", "@types/node": "^22.15.29", - "@typescript-eslint/eslint-plugin": "^8.33.0", - "@typescript-eslint/parser": "^8.33.0", - "@typescript-eslint/utils": "^8.33.0", + "@typescript-eslint/eslint-plugin": "^8.33.1", + "@typescript-eslint/parser": "^8.33.1", + "@typescript-eslint/utils": "^8.33.1", "eslint": "^9.28.0", "jest": "29.7.0", "jest-environment-jsdom": "^29.7.0", @@ -67,7 +67,7 @@ "jest-websocket-mock": "^2.5.0", "prettier-plugin-organize-imports": "^4.1.0", "ts-node": "~10.9.1", - "typescript": "^5.5.4", + "typescript": "^5.8.3", "webpack": "^5.98.0" }, "pnpm": { @@ -78,6 +78,5 @@ "lmdb", "msgpackr-extract" ] - }, - "typings": "./src/typings.d.ts" + } } diff --git a/src-ui/pnpm-lock.yaml b/src-ui/pnpm-lock.yaml index 2801edb7d..17a630d07 100644 --- a/src-ui/pnpm-lock.yaml +++ b/src-ui/pnpm-lock.yaml @@ -9,41 +9,41 @@ importers: .: dependencies: '@angular/cdk': - specifier: ^19.2.14 - version: 19.2.14(@angular/common@19.2.14(@angular/core@19.2.14(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@19.2.14(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2) + specifier: ^20.0.4 + version: 20.0.4(@angular/common@20.0.5(@angular/core@20.0.5(@angular/compiler@20.0.5)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.0.5(@angular/compiler@20.0.5)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2) '@angular/common': - specifier: ~19.2.14 - version: 19.2.14(@angular/core@19.2.14(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2) + specifier: ~20.0.5 + version: 20.0.5(@angular/core@20.0.5(@angular/compiler@20.0.5)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2) '@angular/compiler': - specifier: ~19.2.14 - version: 19.2.14 + specifier: ~20.0.5 + version: 20.0.5 '@angular/core': - specifier: ~19.2.14 - version: 19.2.14(rxjs@7.8.2)(zone.js@0.15.1) + specifier: ~20.0.5 + version: 20.0.5(@angular/compiler@20.0.5)(rxjs@7.8.2)(zone.js@0.15.1) '@angular/forms': - specifier: ~19.2.14 - version: 19.2.14(@angular/common@19.2.14(@angular/core@19.2.14(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@19.2.14(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@19.2.14(@angular/common@19.2.14(@angular/core@19.2.14(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@19.2.14(rxjs@7.8.2)(zone.js@0.15.1)))(rxjs@7.8.2) + specifier: ~20.0.5 + version: 20.0.5(@angular/common@20.0.5(@angular/core@20.0.5(@angular/compiler@20.0.5)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.0.5(@angular/compiler@20.0.5)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@20.0.5(@angular/common@20.0.5(@angular/core@20.0.5(@angular/compiler@20.0.5)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.0.5(@angular/compiler@20.0.5)(rxjs@7.8.2)(zone.js@0.15.1)))(rxjs@7.8.2) '@angular/localize': - specifier: ~19.2.14 - version: 19.2.14(@angular/compiler-cli@19.2.14(@angular/compiler@19.2.14)(typescript@5.5.4))(@angular/compiler@19.2.14) + specifier: ~20.0.5 + version: 20.0.5(@angular/compiler-cli@20.0.5(@angular/compiler@20.0.5)(typescript@5.8.3))(@angular/compiler@20.0.5) '@angular/platform-browser': - specifier: ~19.2.14 - version: 19.2.14(@angular/common@19.2.14(@angular/core@19.2.14(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@19.2.14(rxjs@7.8.2)(zone.js@0.15.1)) + specifier: ~20.0.5 + version: 20.0.5(@angular/common@20.0.5(@angular/core@20.0.5(@angular/compiler@20.0.5)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.0.5(@angular/compiler@20.0.5)(rxjs@7.8.2)(zone.js@0.15.1)) '@angular/platform-browser-dynamic': - specifier: ~19.2.14 - version: 19.2.14(@angular/common@19.2.14(@angular/core@19.2.14(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/compiler@19.2.14)(@angular/core@19.2.14(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@19.2.14(@angular/common@19.2.14(@angular/core@19.2.14(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@19.2.14(rxjs@7.8.2)(zone.js@0.15.1))) + specifier: ~20.0.5 + version: 20.0.5(@angular/common@20.0.5(@angular/core@20.0.5(@angular/compiler@20.0.5)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/compiler@20.0.5)(@angular/core@20.0.5(@angular/compiler@20.0.5)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@20.0.5(@angular/common@20.0.5(@angular/core@20.0.5(@angular/compiler@20.0.5)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.0.5(@angular/compiler@20.0.5)(rxjs@7.8.2)(zone.js@0.15.1))) '@angular/router': - specifier: ~19.2.14 - version: 19.2.14(@angular/common@19.2.14(@angular/core@19.2.14(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@19.2.14(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@19.2.14(@angular/common@19.2.14(@angular/core@19.2.14(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@19.2.14(rxjs@7.8.2)(zone.js@0.15.1)))(rxjs@7.8.2) + specifier: ~20.0.5 + version: 20.0.5(@angular/common@20.0.5(@angular/core@20.0.5(@angular/compiler@20.0.5)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.0.5(@angular/compiler@20.0.5)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@20.0.5(@angular/common@20.0.5(@angular/core@20.0.5(@angular/compiler@20.0.5)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.0.5(@angular/compiler@20.0.5)(rxjs@7.8.2)(zone.js@0.15.1)))(rxjs@7.8.2) '@ng-bootstrap/ng-bootstrap': - specifier: ^18.0.0 - version: 18.0.0(@angular/common@19.2.14(@angular/core@19.2.14(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@19.2.14(rxjs@7.8.2)(zone.js@0.15.1))(@angular/forms@19.2.14(@angular/common@19.2.14(@angular/core@19.2.14(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@19.2.14(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@19.2.14(@angular/common@19.2.14(@angular/core@19.2.14(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@19.2.14(rxjs@7.8.2)(zone.js@0.15.1)))(rxjs@7.8.2))(@angular/localize@19.2.14(@angular/compiler-cli@19.2.14(@angular/compiler@19.2.14)(typescript@5.5.4))(@angular/compiler@19.2.14))(@popperjs/core@2.11.8)(rxjs@7.8.2) + specifier: ^19.0.0 + version: 19.0.0(@angular/common@20.0.5(@angular/core@20.0.5(@angular/compiler@20.0.5)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.0.5(@angular/compiler@20.0.5)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/forms@20.0.5(@angular/common@20.0.5(@angular/core@20.0.5(@angular/compiler@20.0.5)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.0.5(@angular/compiler@20.0.5)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@20.0.5(@angular/common@20.0.5(@angular/core@20.0.5(@angular/compiler@20.0.5)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.0.5(@angular/compiler@20.0.5)(rxjs@7.8.2)(zone.js@0.15.1)))(rxjs@7.8.2))(@angular/localize@20.0.5(@angular/compiler-cli@20.0.5(@angular/compiler@20.0.5)(typescript@5.8.3))(@angular/compiler@20.0.5))(@popperjs/core@2.11.8)(rxjs@7.8.2) '@ng-select/ng-select': - specifier: ^14.9.0 - version: 14.9.0(@angular/common@19.2.14(@angular/core@19.2.14(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@19.2.14(rxjs@7.8.2)(zone.js@0.15.1))(@angular/forms@19.2.14(@angular/common@19.2.14(@angular/core@19.2.14(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@19.2.14(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@19.2.14(@angular/common@19.2.14(@angular/core@19.2.14(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@19.2.14(rxjs@7.8.2)(zone.js@0.15.1)))(rxjs@7.8.2)) + specifier: ^15.1.2 + version: 15.1.2(@angular/common@20.0.5(@angular/core@20.0.5(@angular/compiler@20.0.5)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.0.5(@angular/compiler@20.0.5)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/forms@20.0.5(@angular/common@20.0.5(@angular/core@20.0.5(@angular/compiler@20.0.5)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.0.5(@angular/compiler@20.0.5)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@20.0.5(@angular/common@20.0.5(@angular/core@20.0.5(@angular/compiler@20.0.5)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.0.5(@angular/compiler@20.0.5)(rxjs@7.8.2)(zone.js@0.15.1)))(rxjs@7.8.2)) '@ngneat/dirty-check-forms': specifier: ^3.0.3 - version: 3.0.3(@angular/core@19.2.14(rxjs@7.8.2)(zone.js@0.15.1))(@angular/forms@19.2.14(@angular/common@19.2.14(@angular/core@19.2.14(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@19.2.14(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@19.2.14(@angular/common@19.2.14(@angular/core@19.2.14(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@19.2.14(rxjs@7.8.2)(zone.js@0.15.1)))(rxjs@7.8.2))(@angular/router@19.2.14(@angular/common@19.2.14(@angular/core@19.2.14(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@19.2.14(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@19.2.14(@angular/common@19.2.14(@angular/core@19.2.14(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@19.2.14(rxjs@7.8.2)(zone.js@0.15.1)))(rxjs@7.8.2))(lodash-es@4.17.21)(rxjs@7.8.2) + version: 3.0.3(@angular/core@20.0.5(@angular/compiler@20.0.5)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/forms@20.0.5(@angular/common@20.0.5(@angular/core@20.0.5(@angular/compiler@20.0.5)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.0.5(@angular/compiler@20.0.5)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@20.0.5(@angular/common@20.0.5(@angular/core@20.0.5(@angular/compiler@20.0.5)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.0.5(@angular/compiler@20.0.5)(rxjs@7.8.2)(zone.js@0.15.1)))(rxjs@7.8.2))(@angular/router@20.0.5(@angular/common@20.0.5(@angular/core@20.0.5(@angular/compiler@20.0.5)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.0.5(@angular/compiler@20.0.5)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@20.0.5(@angular/common@20.0.5(@angular/core@20.0.5(@angular/compiler@20.0.5)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.0.5(@angular/compiler@20.0.5)(rxjs@7.8.2)(zone.js@0.15.1)))(rxjs@7.8.2))(lodash-es@4.17.21)(rxjs@7.8.2) '@popperjs/core': specifier: ^2.11.8 version: 2.11.8 @@ -61,19 +61,19 @@ importers: version: 10.4.0 ngx-bootstrap-icons: specifier: ^1.9.3 - version: 1.9.3(@angular/common@19.2.14(@angular/core@19.2.14(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@19.2.14(rxjs@7.8.2)(zone.js@0.15.1)) + version: 1.9.3(@angular/common@20.0.5(@angular/core@20.0.5(@angular/compiler@20.0.5)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.0.5(@angular/compiler@20.0.5)(rxjs@7.8.2)(zone.js@0.15.1)) ngx-color: specifier: ^10.0.0 - version: 10.0.0(@angular/common@19.2.14(@angular/core@19.2.14(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@19.2.14(rxjs@7.8.2)(zone.js@0.15.1)) + version: 10.0.0(@angular/common@20.0.5(@angular/core@20.0.5(@angular/compiler@20.0.5)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.0.5(@angular/compiler@20.0.5)(rxjs@7.8.2)(zone.js@0.15.1)) ngx-cookie-service: specifier: ^19.1.2 - version: 19.1.2(@angular/common@19.2.14(@angular/core@19.2.14(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@19.2.14(rxjs@7.8.2)(zone.js@0.15.1)) + version: 19.1.2(@angular/common@20.0.5(@angular/core@20.0.5(@angular/compiler@20.0.5)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.0.5(@angular/compiler@20.0.5)(rxjs@7.8.2)(zone.js@0.15.1)) ngx-device-detector: specifier: ^9.0.0 - version: 9.0.0(@angular/common@19.2.14(@angular/core@19.2.14(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@19.2.14(rxjs@7.8.2)(zone.js@0.15.1)) + version: 9.0.0(@angular/common@20.0.5(@angular/core@20.0.5(@angular/compiler@20.0.5)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.0.5(@angular/compiler@20.0.5)(rxjs@7.8.2)(zone.js@0.15.1)) ngx-ui-tour-ng-bootstrap: - specifier: ^16.0.0 - version: 16.0.0(b22d6d97efbc9cb8f9e09ff61a244f2e) + specifier: ^17.0.0 + version: 17.0.0(d39044206fc345e584b8fbeeeb8ce06e) rxjs: specifier: ^7.8.2 version: 7.8.2 @@ -91,41 +91,41 @@ importers: version: 0.15.1 devDependencies: '@angular-builders/custom-webpack': - specifier: ^19.0.1 - version: 19.0.1(@angular/compiler-cli@19.2.14(@angular/compiler@19.2.14)(typescript@5.5.4))(@angular/compiler@19.2.14)(@angular/localize@19.2.14(@angular/compiler-cli@19.2.14(@angular/compiler@19.2.14)(typescript@5.5.4))(@angular/compiler@19.2.14))(@types/node@22.15.29)(chokidar@4.0.3)(jest-environment-jsdom@29.7.0)(jest@29.7.0(@types/node@22.15.29)(ts-node@10.9.2(@types/node@22.15.29)(typescript@5.5.4)))(jiti@1.21.7)(typescript@5.5.4)(vite@6.2.7(@types/node@22.15.29)(jiti@1.21.7)(less@4.2.2)(sass@1.85.0)(terser@5.39.0)(yaml@2.7.0))(yaml@2.7.0) + specifier: ^20.0.0 + version: 20.0.0(@angular/compiler-cli@20.0.5(@angular/compiler@20.0.5)(typescript@5.8.3))(@angular/compiler@20.0.5)(@angular/core@20.0.5(@angular/compiler@20.0.5)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/localize@20.0.5(@angular/compiler-cli@20.0.5(@angular/compiler@20.0.5)(typescript@5.8.3))(@angular/compiler@20.0.5))(@angular/platform-browser@20.0.5(@angular/common@20.0.5(@angular/core@20.0.5(@angular/compiler@20.0.5)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.0.5(@angular/compiler@20.0.5)(rxjs@7.8.2)(zone.js@0.15.1)))(@types/node@22.15.29)(chokidar@4.0.3)(jest-environment-jsdom@29.7.0)(jest@29.7.0(@types/node@22.15.29)(ts-node@10.9.2(@types/node@22.15.29)(typescript@5.8.3)))(jiti@1.21.7)(less@4.3.0)(postcss@8.5.3)(terser@5.39.1)(tslib@2.8.1)(typescript@5.8.3)(vite@6.3.5(@types/node@22.15.29)(jiti@1.21.7)(less@4.3.0)(sass@1.88.0)(terser@5.39.1)(yaml@2.7.0))(yaml@2.7.0) '@angular-builders/jest': - specifier: ^19.0.1 - version: 19.0.1(4b49eb59c0a92e3dbc1542019395d573) - '@angular-devkit/build-angular': - specifier: ^19.2.14 - version: 19.2.14(@angular/compiler-cli@19.2.14(@angular/compiler@19.2.14)(typescript@5.5.4))(@angular/compiler@19.2.14)(@angular/localize@19.2.14(@angular/compiler-cli@19.2.14(@angular/compiler@19.2.14)(typescript@5.5.4))(@angular/compiler@19.2.14))(@types/node@22.15.29)(chokidar@4.0.3)(jest-environment-jsdom@29.7.0)(jest@29.7.0(@types/node@22.15.29)(ts-node@10.9.2(@types/node@22.15.29)(typescript@5.5.4)))(jiti@1.21.7)(typescript@5.5.4)(vite@6.2.7(@types/node@22.15.29)(jiti@1.21.7)(less@4.2.2)(sass@1.85.0)(terser@5.39.0)(yaml@2.7.0))(yaml@2.7.0) + specifier: ^20.0.0 + version: 20.0.0(1a9e198a3f9bea260cecd5aa12aea346) '@angular-devkit/core': - specifier: ^19.2.14 - version: 19.2.14(chokidar@4.0.3) + specifier: ^20.0.4 + version: 20.0.4(chokidar@4.0.3) '@angular-devkit/schematics': - specifier: ^19.2.14 - version: 19.2.14(chokidar@4.0.3) + specifier: ^20.0.4 + version: 20.0.4(chokidar@4.0.3) '@angular-eslint/builder': - specifier: 19.7.0 - version: 19.7.0(chokidar@4.0.3)(eslint@9.28.0(jiti@1.21.7))(typescript@5.5.4) + specifier: 20.1.1 + version: 20.1.1(chokidar@4.0.3)(eslint@9.28.0(jiti@1.21.7))(typescript@5.8.3) '@angular-eslint/eslint-plugin': - specifier: 19.7.0 - version: 19.7.0(@typescript-eslint/utils@8.33.0(eslint@9.28.0(jiti@1.21.7))(typescript@5.5.4))(eslint@9.28.0(jiti@1.21.7))(typescript@5.5.4) + specifier: 20.1.1 + version: 20.1.1(@typescript-eslint/utils@8.35.0(eslint@9.28.0(jiti@1.21.7))(typescript@5.8.3))(eslint@9.28.0(jiti@1.21.7))(typescript@5.8.3) '@angular-eslint/eslint-plugin-template': - specifier: 19.7.0 - version: 19.7.0(@angular-eslint/template-parser@19.7.0(eslint@9.28.0(jiti@1.21.7))(typescript@5.5.4))(@typescript-eslint/types@8.33.0)(@typescript-eslint/utils@8.33.0(eslint@9.28.0(jiti@1.21.7))(typescript@5.5.4))(eslint@9.28.0(jiti@1.21.7))(typescript@5.5.4) + specifier: 20.1.1 + version: 20.1.1(@angular-eslint/template-parser@20.1.1(eslint@9.28.0(jiti@1.21.7))(typescript@5.8.3))(@typescript-eslint/types@8.35.0)(@typescript-eslint/utils@8.35.0(eslint@9.28.0(jiti@1.21.7))(typescript@5.8.3))(eslint@9.28.0(jiti@1.21.7))(typescript@5.8.3) '@angular-eslint/schematics': - specifier: 19.7.0 - version: 19.7.0(@angular-eslint/template-parser@19.7.0(eslint@9.28.0(jiti@1.21.7))(typescript@5.5.4))(@typescript-eslint/types@8.33.0)(@typescript-eslint/utils@8.33.0(eslint@9.28.0(jiti@1.21.7))(typescript@5.5.4))(chokidar@4.0.3)(eslint@9.28.0(jiti@1.21.7))(typescript@5.5.4) + specifier: 20.1.1 + version: 20.1.1(@angular-eslint/template-parser@20.1.1(eslint@9.28.0(jiti@1.21.7))(typescript@5.8.3))(@typescript-eslint/types@8.35.0)(@typescript-eslint/utils@8.35.0(eslint@9.28.0(jiti@1.21.7))(typescript@5.8.3))(chokidar@4.0.3)(eslint@9.28.0(jiti@1.21.7))(typescript@5.8.3) '@angular-eslint/template-parser': - specifier: 19.7.0 - version: 19.7.0(eslint@9.28.0(jiti@1.21.7))(typescript@5.5.4) + specifier: 20.1.1 + version: 20.1.1(eslint@9.28.0(jiti@1.21.7))(typescript@5.8.3) + '@angular/build': + specifier: ^20.0.4 + version: 20.0.4(@angular/compiler-cli@20.0.5(@angular/compiler@20.0.5)(typescript@5.8.3))(@angular/compiler@20.0.5)(@angular/core@20.0.5(@angular/compiler@20.0.5)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/localize@20.0.5(@angular/compiler-cli@20.0.5(@angular/compiler@20.0.5)(typescript@5.8.3))(@angular/compiler@20.0.5))(@angular/platform-browser@20.0.5(@angular/common@20.0.5(@angular/core@20.0.5(@angular/compiler@20.0.5)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.0.5(@angular/compiler@20.0.5)(rxjs@7.8.2)(zone.js@0.15.1)))(@types/node@22.15.29)(chokidar@4.0.3)(jiti@1.21.7)(less@4.3.0)(postcss@8.5.3)(terser@5.39.1)(tslib@2.8.1)(typescript@5.8.3)(yaml@2.7.0) '@angular/cli': - specifier: ~19.2.14 - version: 19.2.14(@types/node@22.15.29)(chokidar@4.0.3) + specifier: ~20.0.4 + version: 20.0.4(@types/node@22.15.29)(chokidar@4.0.3) '@angular/compiler-cli': - specifier: ~19.2.14 - version: 19.2.14(@angular/compiler@19.2.14)(typescript@5.5.4) + specifier: ~20.0.5 + version: 20.0.5(@angular/compiler@20.0.5)(typescript@5.8.3) '@codecov/webpack-plugin': specifier: ^1.9.1 version: 1.9.1(webpack@5.98.0) @@ -139,20 +139,20 @@ importers: specifier: ^22.15.29 version: 22.15.29 '@typescript-eslint/eslint-plugin': - specifier: ^8.33.0 - version: 8.33.0(@typescript-eslint/parser@8.33.0(eslint@9.28.0(jiti@1.21.7))(typescript@5.5.4))(eslint@9.28.0(jiti@1.21.7))(typescript@5.5.4) + specifier: ^8.33.1 + version: 8.35.0(@typescript-eslint/parser@8.35.0(eslint@9.28.0(jiti@1.21.7))(typescript@5.8.3))(eslint@9.28.0(jiti@1.21.7))(typescript@5.8.3) '@typescript-eslint/parser': - specifier: ^8.33.0 - version: 8.33.0(eslint@9.28.0(jiti@1.21.7))(typescript@5.5.4) + specifier: ^8.33.1 + version: 8.35.0(eslint@9.28.0(jiti@1.21.7))(typescript@5.8.3) '@typescript-eslint/utils': - specifier: ^8.33.0 - version: 8.33.0(eslint@9.28.0(jiti@1.21.7))(typescript@5.5.4) + specifier: ^8.33.1 + version: 8.35.0(eslint@9.28.0(jiti@1.21.7))(typescript@5.8.3) eslint: specifier: ^9.28.0 version: 9.28.0(jiti@1.21.7) jest: specifier: 29.7.0 - version: 29.7.0(@types/node@22.15.29)(ts-node@10.9.2(@types/node@22.15.29)(typescript@5.5.4)) + version: 29.7.0(@types/node@22.15.29)(ts-node@10.9.2(@types/node@22.15.29)(typescript@5.8.3)) jest-environment-jsdom: specifier: ^29.7.0 version: 29.7.0 @@ -161,22 +161,22 @@ importers: version: 16.0.0 jest-preset-angular: specifier: ^14.5.5 - version: 14.5.5(@angular/compiler-cli@19.2.14(@angular/compiler@19.2.14)(typescript@5.5.4))(@angular/core@19.2.14(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser-dynamic@19.2.14(@angular/common@19.2.14(@angular/core@19.2.14(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/compiler@19.2.14)(@angular/core@19.2.14(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@19.2.14(@angular/common@19.2.14(@angular/core@19.2.14(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@19.2.14(rxjs@7.8.2)(zone.js@0.15.1))))(@babel/core@7.27.4)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.27.4))(jest@29.7.0(@types/node@22.15.29)(ts-node@10.9.2(@types/node@22.15.29)(typescript@5.5.4)))(jsdom@20.0.3)(typescript@5.5.4) + version: 14.5.5(@angular/compiler-cli@20.0.5(@angular/compiler@20.0.5)(typescript@5.8.3))(@angular/core@20.0.5(@angular/compiler@20.0.5)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser-dynamic@20.0.5(@angular/common@20.0.5(@angular/core@20.0.5(@angular/compiler@20.0.5)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/compiler@20.0.5)(@angular/core@20.0.5(@angular/compiler@20.0.5)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@20.0.5(@angular/common@20.0.5(@angular/core@20.0.5(@angular/compiler@20.0.5)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.0.5(@angular/compiler@20.0.5)(rxjs@7.8.2)(zone.js@0.15.1))))(@babel/core@7.27.4)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.27.4))(jest@29.7.0(@types/node@22.15.29)(ts-node@10.9.2(@types/node@22.15.29)(typescript@5.8.3)))(jsdom@20.0.3)(typescript@5.8.3) jest-websocket-mock: specifier: ^2.5.0 version: 2.5.0 prettier-plugin-organize-imports: specifier: ^4.1.0 - version: 4.1.0(prettier@3.4.2)(typescript@5.5.4) + version: 4.1.0(prettier@3.4.2)(typescript@5.8.3) ts-node: specifier: ~10.9.1 - version: 10.9.2(@types/node@22.15.29)(typescript@5.5.4) + version: 10.9.2(@types/node@22.15.29)(typescript@5.8.3) typescript: - specifier: ^5.5.4 - version: 5.5.4 + specifier: ^5.8.3 + version: 5.8.3 webpack: specifier: ^5.98.0 - version: 5.98.0(esbuild@0.25.4) + version: 5.98.0 packages: @@ -199,55 +199,57 @@ packages: resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==} engines: {node: '>=6.0.0'} - '@angular-builders/common@3.0.1': - resolution: {integrity: sha512-AIIqWtlr3sc2+CTEOqbDsrpVvkT6ijfYzvzPk1HLFrcP9Y2tYLXVFc+gGThlE+e1Om0pKminXcINEqm3J/yY5g==} - engines: {node: ^18.19.1 || ^20.11.1 || >=22.0.0} + '@angular-builders/common@4.0.0': + resolution: {integrity: sha512-bepZI1KdXUVhDGqHOudZQJwucSbZWxfWzM+EHFXUoExUO0u7XEuHTF5bhtQZ+YU+ZK2Ayl26QbI/26Yj72vcFQ==} + engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} - '@angular-builders/custom-webpack@19.0.1': - resolution: {integrity: sha512-UXsMg0UgttwAwKAuKduwr9fUrQbN//ylaL4+qbBzdZcfEwyHYGzqprvdEgCcx0CgFKED72Z3OmY8ekNJZ5panA==} - engines: {node: ^18.19.1 || ^20.11.1 || >=22.0.0} + '@angular-builders/custom-webpack@20.0.0': + resolution: {integrity: sha512-aw7zXG5vhsYCPLR/eOThcyWLJZ9MEh49wYaj0LouBctJsAdR6Pgg3ksubrejLI5oiUWxM9Ywu4BGwmf3QaUYqg==} + engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} peerDependencies: - '@angular/compiler-cli': ^19.0.0 + '@angular/compiler-cli': ^20.0.0 - '@angular-builders/jest@19.0.1': - resolution: {integrity: sha512-mi4HMQkyb1Z+pPRIKt70Uk/EBoDUirPqhv3xlz1/WpPqpxXz8y+Y3ffutot4JJDmzJw2p4h3x2hh6D3Kbocraw==} - engines: {node: ^18.19.1 || ^20.11.1 || >=22.0.0} + '@angular-builders/jest@20.0.0': + resolution: {integrity: sha512-3rnobnIdErtjyM3yAAAOdod79lgbkf1QWMFHiRDHW4tw4f+DLFiM2HMFircCoO5WIe/ILEJE9GNxs/vvYa3gvw==} + engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} peerDependencies: - '@angular-devkit/build-angular': ^19.0.0 - '@angular/compiler-cli': ^19.0.0 - '@angular/core': ^19.0.0 - '@angular/platform-browser-dynamic': ^19.0.0 + '@angular-devkit/build-angular': ^20.0.0 + '@angular/compiler-cli': ^20.0.0 + '@angular/core': ^20.0.0 + '@angular/platform-browser-dynamic': ^20.0.0 jest: '>=29' - '@angular-devkit/architect@0.1902.14': - resolution: {integrity: sha512-rgMkqOrxedzqLZ8w59T/0YrpWt7LDmGwt+ZhNHE7cn27jZ876yGC2Bhcn58YZh2+R03WEJ9q0ePblaBYz03SMw==} - engines: {node: ^18.19.1 || ^20.11.1 || >=22.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} + '@angular-devkit/architect@0.2000.4': + resolution: {integrity: sha512-pg+EPv/j17ybCoYiKjeRCebkE5CeD009xC6XJfugBmui6CcCQ5UAN82ibBhL869PXR7xCboylcRxlFfcBmvCpA==} + engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} - '@angular-devkit/architect@0.1902.8': - resolution: {integrity: sha512-0A1EhtC/A/N7ukOD+s04l7sCyeSF5llBupkZdksSfi5y56s8U6Lt7KuqrbsErkOKgaCWrP/+Ef8fo0RmYpnefQ==} - engines: {node: ^18.19.1 || ^20.11.1 || >=22.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} - - '@angular-devkit/build-angular@19.2.14': - resolution: {integrity: sha512-0K8vZxXdkME31fd6/+WACug8j4eLlU7mxR2/XJvS+VQ+a7bqdEsVddZDkwdWE+Y3ccZXvD/aNLZSEuSKmVFsnA==} - engines: {node: ^18.19.1 || ^20.11.1 || >=22.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} + '@angular-devkit/build-angular@20.0.4': + resolution: {integrity: sha512-YUf9hRAd//yu44vGMnET1ajmUMXwSz0t4rOajDj5yb57sYS9eYu912K2pWfDNDNJncOshtpklvBqUDngDNcPDw==} + engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} peerDependencies: - '@angular/compiler-cli': ^19.0.0 || ^19.2.0-next.0 - '@angular/localize': ^19.0.0 || ^19.2.0-next.0 - '@angular/platform-server': ^19.0.0 || ^19.2.0-next.0 - '@angular/service-worker': ^19.0.0 || ^19.2.0-next.0 - '@angular/ssr': ^19.2.14 + '@angular/compiler-cli': ^20.0.0 + '@angular/core': ^20.0.0 + '@angular/localize': ^20.0.0 + '@angular/platform-browser': ^20.0.0 + '@angular/platform-server': ^20.0.0 + '@angular/service-worker': ^20.0.0 + '@angular/ssr': ^20.0.4 '@web/test-runner': ^0.20.0 browser-sync: ^3.0.2 jest: ^29.5.0 jest-environment-jsdom: ^29.5.0 karma: ^6.3.0 - ng-packagr: ^19.0.0 || ^19.2.0-next.0 + ng-packagr: ^20.0.0 protractor: ^7.0.0 tailwindcss: ^2.0.0 || ^3.0.0 || ^4.0.0 - typescript: '>=5.5 <5.9' + typescript: '>=5.8 <5.9' peerDependenciesMeta: + '@angular/core': + optional: true '@angular/localize': optional: true + '@angular/platform-browser': + optional: true '@angular/platform-server': optional: true '@angular/service-worker': @@ -271,95 +273,94 @@ packages: tailwindcss: optional: true - '@angular-devkit/build-webpack@0.1902.14': - resolution: {integrity: sha512-XDNB8Nlau/v59Ukd6UgBRBRnTnUmC244832SECmMxXHs1ljJMWGlI1img2xPErGd8426rUA9Iws4RkQiqbsybQ==} - engines: {node: ^18.19.1 || ^20.11.1 || >=22.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} + '@angular-devkit/build-webpack@0.2000.4': + resolution: {integrity: sha512-ZdYSzuDJOIXzuzr3JuriAXWjjVH335K7sLF1udyd1BUeDkKjRNOrrd0Zfo8eraMgbMfEdjApf+UGzTBgU0euMA==} + engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} peerDependencies: webpack: ^5.30.0 webpack-dev-server: ^5.0.2 - '@angular-devkit/core@19.2.14': - resolution: {integrity: sha512-aaPEnRNIBoYT4XrrYcZlHadX8vFDTUR+4wUgcmr0cNDLeWzWtoPFeVq8TQD6kFDeqovSx/UVEblGgg/28WvHyg==} - engines: {node: ^18.19.1 || ^20.11.1 || >=22.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} + '@angular-devkit/core@20.0.4': + resolution: {integrity: sha512-GmHBOEhdZn0Xh8JAdmnbSXtEMoAEqakEFy1JZmwuUo5e6uuuEp5xQY4O3MO0UQBVjYT+Wz8KNfonTvY91t/lNQ==} + engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} peerDependencies: chokidar: ^4.0.0 peerDependenciesMeta: chokidar: optional: true - '@angular-devkit/core@19.2.8': - resolution: {integrity: sha512-kcxUHKf5Hi98r4gAvMP3ntJV8wuQ3/i6wuU9RcMP0UKUt2Rer5Ryis3MPqT92jvVVwg6lhrLIhXsFuWJMiYjXQ==} - engines: {node: ^18.19.1 || ^20.11.1 || >=22.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} - peerDependencies: - chokidar: ^4.0.0 - peerDependenciesMeta: - chokidar: - optional: true + '@angular-devkit/schematics@20.0.4': + resolution: {integrity: sha512-NADJed7h4KYSqbbw91AKFvFp+CsDuPUBzuMrck38R0ql0ZeaLKJtwT+IQFs7Hb6bmE4xn1i0+Z/p7v8q6ZRrKw==} + engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} - '@angular-devkit/schematics@19.2.14': - resolution: {integrity: sha512-s89/MWXHy8+GP/cRfFbSECIG3FQQQwNVv44OOmghPVgKQgQ+EoE/zygL2hqKYTUPoPaS/IhNXdXjSE5pS9yLeg==} - engines: {node: ^18.19.1 || ^20.11.1 || >=22.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} - - '@angular-eslint/builder@19.7.0': - resolution: {integrity: sha512-tnanOOwUKzeS0FwhjJd/dNeb8gVzcF0+cI4/ZgohOjZxm8fZqtzXcKfGS1C7KsR/CPHBdY9cbF1OVPJEarrnsQ==} + '@angular-eslint/builder@20.1.1': + resolution: {integrity: sha512-pfCYfocX79CZ5nokZF4gVScUGyLWRKQHZsUkQ5V/1hsaGsahvzDRjxsYz0J9rO0ligSa2pwgUCXEwSY8hhHQBw==} peerDependencies: eslint: ^8.57.0 || ^9.0.0 typescript: '*' - '@angular-eslint/bundled-angular-compiler@19.7.0': - resolution: {integrity: sha512-95Z30MhQ93s1G1mEnsVuG45te82I+6dp8Y0MamRgyh4OZvOajmEXpvCwT+hkr/9WAroLZ7p5nlMbzAA+OXZ+YQ==} + '@angular-eslint/bundled-angular-compiler@20.1.1': + resolution: {integrity: sha512-hEWh/upyTj2bhyRmbNnGtlOXhBSEHwLg8/9YYhwmiNApQwKcvcg7lkstZMEVrKievNHZT6Wh4dWZvjRjMqLNSg==} - '@angular-eslint/eslint-plugin-template@19.7.0': - resolution: {integrity: sha512-gR+RH7ZDFctupUsCcxWWloD0I7m9pE8HiDX9TrwrSQbNgzvp/P7+Mgv709rR1Jju9GSVavPh7EG3VgiCyR2m5w==} + '@angular-eslint/eslint-plugin-template@20.1.1': + resolution: {integrity: sha512-dRqfxYvgOC4DZqvRTmxoIUMeIqTzcIkRcMVEuP8qvR10KHAWDkV7xT4f7BAee9deI/lzoAk3tk5wkQg6POQo7Q==} peerDependencies: - '@angular-eslint/template-parser': 19.7.0 + '@angular-eslint/template-parser': 20.1.1 '@typescript-eslint/types': ^7.11.0 || ^8.0.0 '@typescript-eslint/utils': ^7.11.0 || ^8.0.0 eslint: ^8.57.0 || ^9.0.0 typescript: '*' - '@angular-eslint/eslint-plugin@19.7.0': - resolution: {integrity: sha512-M8OqDgiFSSxMinW/Gkdrvy2O2Oeo8bGk1DQc0s3aEKB44PYAjXC49jMSihvdozqtu1qjPBcTN5kvUwzwN5oWxA==} + '@angular-eslint/eslint-plugin@20.1.1': + resolution: {integrity: sha512-h+D6T35UGIuG0keYPH7dc6OTdfTVJ8GoIhCIpoAmVGhdIdfXIISvDvvX/QPiZtTcefik3vEZEGRiI/Nzc5xImw==} peerDependencies: '@typescript-eslint/utils': ^7.11.0 || ^8.0.0 eslint: ^8.57.0 || ^9.0.0 typescript: '*' - '@angular-eslint/schematics@19.7.0': - resolution: {integrity: sha512-07j/qXfSLvLsUq8a7WJlGYgcgfVEJ1ODuwJ2R4686dh2lqZ5GRV75fpdOtOBdC38MILLwd5el+8LfdaIG19Yog==} + '@angular-eslint/schematics@20.1.1': + resolution: {integrity: sha512-4sXU0Gr/RhdW3xSBFRzjhTO9mk6ugXUhUIPc1FRta1pmNnbmkvx22ewnKZE8IeRl8PMyk6xJuxZHq19CW1oWOA==} - '@angular-eslint/template-parser@19.7.0': - resolution: {integrity: sha512-XLPt6gk8VMOrUO9NWRpXN8zgwJuCDV+9y3KbVnd4WyakO0sOz9SVzktuI4AeY9jWS9/tqU6P8Uj0WZsMVz7F8w==} + '@angular-eslint/template-parser@20.1.1': + resolution: {integrity: sha512-giIMYORf8P8MbBxh6EUfiR/7Y+omxJtK2C7a8lYTtLSOIGO0D8c8hXx9hTlPcdupVX+xZXDuZ85c9JDen+JSSA==} peerDependencies: eslint: ^8.57.0 || ^9.0.0 typescript: '*' - '@angular-eslint/utils@19.7.0': - resolution: {integrity: sha512-F4JcZtc2/Wl0AwRaeUywupPHdaOtldpwfrGYewT1dYDikFafyDk5T6E9JYv/HgLXROPNMDVPFquwikNvAPlfAg==} + '@angular-eslint/utils@20.1.1': + resolution: {integrity: sha512-hqbzGqa/0Ua90r4TMn4oZVnLuwIF6dqEfH7SlstB224h/7+nKoi67aHkmUq7VItWXpDDe+f1opeR01GKS9fNog==} peerDependencies: '@typescript-eslint/utils': ^7.11.0 || ^8.0.0 eslint: ^8.57.0 || ^9.0.0 typescript: '*' - '@angular/build@19.2.14': - resolution: {integrity: sha512-PAUR8vZpGKXy0Vc5gpJkigOthoj5YeGDpeykl/yLi6sx6yAIlXcE0MD+LGehKeqFSBL56rEpn9n710lI7eTJwg==} - engines: {node: ^18.19.1 || ^20.11.1 || >=22.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} + '@angular/build@20.0.4': + resolution: {integrity: sha512-SIYLg2st05Q5hgFrxwj6L4i9j2j2JNWYoYgacXp+mw9YVhFiC02Ymbakc9fq+3+sWlm0XTX5JgrupV2ac1ytNQ==} + engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} peerDependencies: - '@angular/compiler': ^19.0.0 || ^19.2.0-next.0 - '@angular/compiler-cli': ^19.0.0 || ^19.2.0-next.0 - '@angular/localize': ^19.0.0 || ^19.2.0-next.0 - '@angular/platform-server': ^19.0.0 || ^19.2.0-next.0 - '@angular/service-worker': ^19.0.0 || ^19.2.0-next.0 - '@angular/ssr': ^19.2.14 + '@angular/compiler': ^20.0.0 + '@angular/compiler-cli': ^20.0.0 + '@angular/core': ^20.0.0 + '@angular/localize': ^20.0.0 + '@angular/platform-browser': ^20.0.0 + '@angular/platform-server': ^20.0.0 + '@angular/service-worker': ^20.0.0 + '@angular/ssr': ^20.0.4 karma: ^6.4.0 less: ^4.2.0 - ng-packagr: ^19.0.0 || ^19.2.0-next.0 + ng-packagr: ^20.0.0 postcss: ^8.4.0 tailwindcss: ^2.0.0 || ^3.0.0 || ^4.0.0 - typescript: '>=5.5 <5.9' + tslib: ^2.3.0 + typescript: '>=5.8 <5.9' + vitest: ^3.1.1 peerDependenciesMeta: + '@angular/core': + optional: true '@angular/localize': optional: true + '@angular/platform-browser': + optional: true '@angular/platform-server': optional: true '@angular/service-worker': @@ -376,89 +377,100 @@ packages: optional: true tailwindcss: optional: true + vitest: + optional: true - '@angular/cdk@19.2.14': - resolution: {integrity: sha512-VRTvSRCJYrlywT0mtUZTqA6zb8beWNqr9xl7d/vaPjopzJMSdmIpNmPiN+WshLeQhRYnXOPmhUbhULAwThnetg==} + '@angular/cdk@20.0.4': + resolution: {integrity: sha512-NCUuw0qQXwawLsT14JHApNB9or3XGs7D1pWXlOIix/fKqzHVfi4un9xHmpjH2Q1uCiwonuak7fDof8B+IXhbug==} peerDependencies: - '@angular/common': ^19.0.0 || ^20.0.0 - '@angular/core': ^19.0.0 || ^20.0.0 + '@angular/common': ^20.0.0 || ^21.0.0 + '@angular/core': ^20.0.0 || ^21.0.0 rxjs: ^6.5.3 || ^7.4.0 - '@angular/cli@19.2.14': - resolution: {integrity: sha512-jZvNHAwmyhgUqSIs6OW8YH1rX9XKytm4zPxJol1Xk56F8yAhnrUtukcOi3b7Dv19Z+9eXkwV/Db+2dGjWIE0DA==} - engines: {node: ^18.19.1 || ^20.11.1 || >=22.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} + '@angular/cli@20.0.4': + resolution: {integrity: sha512-WG0TxDODciNU93AjENph4v7nBowMTGRI8VwIPitPstthez7oViugnXbsPoti5wfSjPweGawMSf6fgqOTx1+yKQ==} + engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} hasBin: true - '@angular/common@19.2.14': - resolution: {integrity: sha512-NcNklcuyqaTjOVGf7aru8APX9mjsnZ01gFZrn47BxHozhaR0EMRrotYQTdi8YdVjPkeYFYanVntSLfhyobq/jg==} - engines: {node: ^18.19.1 || ^20.11.1 || >=22.0.0} + '@angular/common@20.0.5': + resolution: {integrity: sha512-R7SQaOVYjVnrGHOq2RnuPn0pGofGVTDgy5EoHzF8ulb5MG/d7GFwCaMgfAbp3/Cw1CJzP2ZB54O8x9SMuqExyg==} + engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} peerDependencies: - '@angular/core': 19.2.14 + '@angular/core': 20.0.5 rxjs: ^6.5.3 || ^7.4.0 - '@angular/compiler-cli@19.2.14': - resolution: {integrity: sha512-e9/h86ETjoIK2yTLE9aUeMCKujdg/du2pq7run/aINjop4RtnNOw+ZlSTUa6R65lP5CVwDup1kPytpAoifw8cA==} - engines: {node: ^18.19.1 || ^20.11.1 || >=22.0.0} + '@angular/compiler-cli@20.0.5': + resolution: {integrity: sha512-v0DSeUU7cid7jqfK9RTkyhbZGNIiOyxRYeaqZMsu4UiYGwABIanM7lOcX++OYapfWj/TEPky+5wtbV8ScqAxiw==} + engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} hasBin: true peerDependencies: - '@angular/compiler': 19.2.14 - typescript: '>=5.5 <5.9' + '@angular/compiler': 20.0.5 + typescript: '>=5.8 <5.9' + peerDependenciesMeta: + typescript: + optional: true - '@angular/compiler@19.2.14': - resolution: {integrity: sha512-ZqJDYOdhgKpVGNq3+n/Gbxma8DVYElDsoRe0tvNtjkWBVdaOxdZZUqmJ3kdCBsqD/aqTRvRBu0KGo9s2fCChkA==} - engines: {node: ^18.19.1 || ^20.11.1 || >=22.0.0} + '@angular/compiler@20.0.5': + resolution: {integrity: sha512-eHHnh+wIUC+8mfmlPnkzVfonQCA3LAbPWgYpvEQtBh0/R3cZBN6tmOxWQB8IuLu+cZ0eXS/a14mqHJp3c3u7Hg==} + engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} - '@angular/core@19.2.14': - resolution: {integrity: sha512-EVErpW9tGqJ/wNcAN3G/ErH8pHCJ8mM1E6bsJ8UJIpDTZkpqqYjBMtZS9YWH5n3KwUd1tAkAB2w8FK125AjDUQ==} - engines: {node: ^18.19.1 || ^20.11.1 || >=22.0.0} + '@angular/core@20.0.5': + resolution: {integrity: sha512-r7YQXZvKPAMUXeo3psKTZxyYJrwidTwDPrzxMX3EGqZxv0eDnMPWCxH2y0O2X4BT0Nm1iAqx3zhGrSFc0vD60Q==} + engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} peerDependencies: + '@angular/compiler': 20.0.5 rxjs: ^6.5.3 || ^7.4.0 zone.js: ~0.15.0 + peerDependenciesMeta: + '@angular/compiler': + optional: true + zone.js: + optional: true - '@angular/forms@19.2.14': - resolution: {integrity: sha512-hWtDOj2B0AuRTf+nkMJeodnFpDpmEK9OIhIv1YxcRe73ooaxrIdjgugkElO8I9Tj0E4/7m117ezhWDUkbqm1zA==} - engines: {node: ^18.19.1 || ^20.11.1 || >=22.0.0} + '@angular/forms@20.0.5': + resolution: {integrity: sha512-zoS0SaNUZBPtDfmr/edd3cHa9Z+vvPs8UXKMo9/i4YezWCskkZmW5qIJwISYJt4DHnHWoznlGBB9BQX8HgmQRw==} + engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} peerDependencies: - '@angular/common': 19.2.14 - '@angular/core': 19.2.14 - '@angular/platform-browser': 19.2.14 + '@angular/common': 20.0.5 + '@angular/core': 20.0.5 + '@angular/platform-browser': 20.0.5 rxjs: ^6.5.3 || ^7.4.0 - '@angular/localize@19.2.14': - resolution: {integrity: sha512-T2qPVE5N4qe1rQnx9tkxqUzXV+gUgAwSpVG+vHHRJe//jxCIVfk5zyPd2Z9nFzwGarHP61hvnEzbdbZHtCmbcQ==} - engines: {node: ^18.19.1 || ^20.11.1 || >=22.0.0} + '@angular/localize@20.0.5': + resolution: {integrity: sha512-3EpePYklIal1n948iAY04dUfwCKPyuvDriMBdwAzfY0Se9/wwUZrVA4R8e5kmqazfgtpAuGasgy6zoPWejzJbw==} + engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} hasBin: true peerDependencies: - '@angular/compiler': 19.2.14 - '@angular/compiler-cli': 19.2.14 + '@angular/compiler': 20.0.5 + '@angular/compiler-cli': 20.0.5 - '@angular/platform-browser-dynamic@19.2.14': - resolution: {integrity: sha512-Hfz0z1KDQmIdnFXVFCwCPykuIsHPkr1uW2aY396eARwZ6PK8i0Aadcm1ZOnpd3MR1bMyDrJo30VRS5kx89QWvA==} - engines: {node: ^18.19.1 || ^20.11.1 || >=22.0.0} + '@angular/platform-browser-dynamic@20.0.5': + resolution: {integrity: sha512-uGkHndCWqQyhjcDziC93R5CwQBKa+Xvk0s02ia8LJwVz7iIu/bLO34vos0HM9d250W4TNZbuVFmMhJDJWCq3uQ==} + engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} peerDependencies: - '@angular/common': 19.2.14 - '@angular/compiler': 19.2.14 - '@angular/core': 19.2.14 - '@angular/platform-browser': 19.2.14 + '@angular/common': 20.0.5 + '@angular/compiler': 20.0.5 + '@angular/core': 20.0.5 + '@angular/platform-browser': 20.0.5 - '@angular/platform-browser@19.2.14': - resolution: {integrity: sha512-hzkT5nmA64oVBQl6PRjdL4dIFT1n7lfM9rm5cAoS+6LUUKRgiE2d421Kpn/Hz3jaCJfo+calMIdtSMIfUJBmww==} - engines: {node: ^18.19.1 || ^20.11.1 || >=22.0.0} + '@angular/platform-browser@20.0.5': + resolution: {integrity: sha512-gE3C5/ZAXdAlBFvvX/crboIy5skbV5mtxRoEULwf7xF9WJLlYzY3w+PCRHV6/Z21UJ3ikCcbaaowBx378FYhQg==} + engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} peerDependencies: - '@angular/animations': 19.2.14 - '@angular/common': 19.2.14 - '@angular/core': 19.2.14 + '@angular/animations': 20.0.5 + '@angular/common': 20.0.5 + '@angular/core': 20.0.5 peerDependenciesMeta: '@angular/animations': optional: true - '@angular/router@19.2.14': - resolution: {integrity: sha512-cBTWY9Jx7YhbmDYDb7Hqz4Q7UNIMlKTkdKToJd2pbhIXyoS+kHVQrySmyca+jgvYMjWnIjsAEa3dpje12D4mFw==} - engines: {node: ^18.19.1 || ^20.11.1 || >=22.0.0} + '@angular/router@20.0.5': + resolution: {integrity: sha512-GqBxrjov6p6riqDmn+hD2FWk5JSXR638/UhWCZe+XORoOmV/gWgND1HaHPa7f/UvM422yrPEkIsFNMr7bwLmkA==} + engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} peerDependencies: - '@angular/common': 19.2.14 - '@angular/core': 19.2.14 - '@angular/platform-browser': 19.2.14 + '@angular/common': 20.0.5 + '@angular/core': 20.0.5 + '@angular/platform-browser': 20.0.5 rxjs: ^6.5.3 || ^7.4.0 '@babel/code-frame@7.27.1': @@ -469,28 +481,32 @@ packages: resolution: {integrity: sha512-V42wFfx1ymFte+ecf6iXghnnP8kWTO+ZLXIyZq+1LAXHHvTZdVxicn4yiVYdYMGaCO3tmqub11AorKkv+iodqw==} engines: {node: '>=6.9.0'} - '@babel/core@7.26.10': - resolution: {integrity: sha512-vMqyb7XCDMPvJFFOaT9kxtiRh42GwlZEg1/uIgtZshS5a/8OaduUfCi7kynKgc3Tw/6Uo2D+db9qBttghhmxwQ==} + '@babel/compat-data@7.27.7': + resolution: {integrity: sha512-xgu/ySj2mTiUFmdE9yCMfBxLp4DHd5DwmbbD05YAuICfodYT3VvRxbrh81LGQ/8UpSdtMdfKMn3KouYDX59DGQ==} engines: {node: '>=6.9.0'} - '@babel/core@7.26.9': - resolution: {integrity: sha512-lWBYIrF7qK5+GjY5Uy+/hEgp8OJWOD/rpy74GplYRhEauvbHDeFB8t5hPOZxCZ0Oxf4Cc36tK51/l3ymJysrKw==} + '@babel/core@7.27.1': + resolution: {integrity: sha512-IaaGWsQqfsQWVLqMn9OB92MNN7zukfVA4s7KKAI0KfrrDsZ0yhi5uV4baBuLuN7n3vsZpwP8asPPcVwApxvjBQ==} engines: {node: '>=6.9.0'} '@babel/core@7.27.4': resolution: {integrity: sha512-bXYxrXFubeYdvB0NhD/NBB3Qi6aZeV20GOWVI47t2dkecCEoneR4NPVcb7abpXDEvejgrUfFtG6vG/zxAKmg+g==} engines: {node: '>=6.9.0'} - '@babel/generator@7.26.10': - resolution: {integrity: sha512-rRHT8siFIXQrAYOYqZQVsAr8vJ+cBNqcVAY6m5V8/4QqzaPl+zDBe6cLEPRDuNOUf3ww8RfJVlOyQMoSI+5Ang==} + '@babel/generator@7.27.1': + resolution: {integrity: sha512-UnJfnIpc/+JO0/+KRVQNGU+y5taA5vCbwN8+azkX6beii/ZF+enZJSOKo11ZSzGJjlNfJHfQtmQT8H+9TXPG2w==} engines: {node: '>=6.9.0'} '@babel/generator@7.27.3': resolution: {integrity: sha512-xnlJYj5zepml8NXtjkG0WquFUv8RskFqyFcVgTBp5k+NaA/8uw/K+OSVf8AMGw5e9HKP2ETd5xpK5MLZQD6b4Q==} engines: {node: '>=6.9.0'} - '@babel/helper-annotate-as-pure@7.25.9': - resolution: {integrity: sha512-gv7320KBUFJz1RnylIg5WWYPRXKZ884AGkYpgpWW02TH66Dl+HaC1t1CKd0z3R4b6hdYEcmrNZHUmfCP+1u3/g==} + '@babel/generator@7.27.5': + resolution: {integrity: sha512-ZGhA37l0e/g2s1Cnzdix0O3aLYm66eF8aufiVteOgnwxgnRP8GoyMj7VWsgWnQbVKXyge7hqrFh2K2TQM6t1Hw==} + engines: {node: '>=6.9.0'} + + '@babel/helper-annotate-as-pure@7.27.1': + resolution: {integrity: sha512-WnuuDILl9oOBbKnb4L+DyODx7iC47XfzmNCpTttFsSp6hTG7XZxu60+4IO+2/hPfcGOoKbFiwoI/+zwARbNQow==} engines: {node: '>=6.9.0'} '@babel/helper-annotate-as-pure@7.27.3': @@ -585,6 +601,11 @@ packages: engines: {node: '>=6.0.0'} hasBin: true + '@babel/parser@7.27.7': + resolution: {integrity: sha512-qnzXzDXdr/po3bOTbTIQZ7+TxNKxpkN5IifVLXS+r7qwynkZfPyjZfE7hCXbo7IoO9TNcSyibgONsf2HauUd3Q==} + engines: {node: '>=6.0.0'} + hasBin: true + '@babel/plugin-bugfix-firefox-class-in-computed-class-key@7.27.1': resolution: {integrity: sha512-QPG3C9cCVRQLxAVwmefEmwdTanECuUBMQZ/ym5kiw3XKCGA7qkuQLcjWWHcrD/GKbn/WmJwaezfuuAOcyKlRPA==} engines: {node: '>=6.9.0'} @@ -642,12 +663,6 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-syntax-import-attributes@7.26.0': - resolution: {integrity: sha512-e2dttdsJ1ZTpi3B9UYGLw41hifAubg19AtCu/2I/F1QNVclOBr1dYpTdmdyZ84Xiz43BS/tCUkMAZNLv12Pi+A==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - '@babel/plugin-syntax-import-attributes@7.27.1': resolution: {integrity: sha512-oFT0FrKHgF53f4vOsZGi2Hh3I35PfSmVs4IBFLFj4dnafP+hIWDLg3VyKmUHfLoLHlyxY4C7DGtmHuJgn+IGww==} engines: {node: '>=6.9.0'} @@ -724,14 +739,14 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-async-generator-functions@7.26.8': - resolution: {integrity: sha512-He9Ej2X7tNf2zdKMAGOsmg2MrFc+hfoAhd3po4cWfo/NWjzEAKa0oQruj1ROVUdl0e6fb6/kE/G3SSxE0lRJOg==} + '@babel/plugin-transform-async-generator-functions@7.27.1': + resolution: {integrity: sha512-eST9RrwlpaoJBDHShc+DS2SG4ATTi2MYNb4OxYkf3n+7eb49LWpnS+HSpVfW4x927qQwgk8A2hGNVaajAEw0EA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-async-to-generator@7.25.9': - resolution: {integrity: sha512-NT7Ejn7Z/LjUH0Gv5KsBCxh7BH3fbLTV0ptHvpeMvrt3cPThHfJfst9Wrb7S8EvJ7vRTFI7z+VAvFVEQn/m5zQ==} + '@babel/plugin-transform-async-to-generator@7.27.1': + resolution: {integrity: sha512-NREkZsZVJS4xmTr8qzE5y8AfIPqsdQfRuUiLRTEzb7Qii8iFWCyDKaUV2c0rCuh4ljDZ98ALHP/PetiBV2nddA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -742,8 +757,8 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-block-scoping@7.27.3': - resolution: {integrity: sha512-+F8CnfhuLhwUACIJMLWnjz6zvzYM2r0yeIHKlbgfw7ml8rOMJsXNXV/hyRcb3nb493gRs4WvYpQAndWj/qQmkQ==} + '@babel/plugin-transform-block-scoping@7.27.5': + resolution: {integrity: sha512-JF6uE2s67f0y2RZcm2kpAUEbD50vH62TyWVebxwHAlbSdM49VqPz8t4a1uIjp4NIOIZ4xzLfjY5emt/RCyC7TQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -760,8 +775,8 @@ packages: peerDependencies: '@babel/core': ^7.12.0 - '@babel/plugin-transform-classes@7.27.1': - resolution: {integrity: sha512-7iLhfFAubmpeJe/Wo2TVuDrykh/zlWXLzPNdL0Jqn/Xu8R3QQ8h9ff8FQoISZOsw74/HFqFI7NX63HN7QFIHKA==} + '@babel/plugin-transform-classes@7.27.7': + resolution: {integrity: sha512-CuLkokN1PEZ0Fsjtq+001aog/C2drDK9nTfK/NRK0n6rBin6cBrvM+zfQjDE+UllhR6/J4a6w8Xq9i4yi3mQrw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -772,8 +787,8 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-destructuring@7.27.3': - resolution: {integrity: sha512-s4Jrok82JpiaIprtY2nHsYmrThKvvwgHwjgd7UMiYhZaN0asdXNLr0y+NjTfkA7SyQE5i2Fb7eawUOZmLvyqOA==} + '@babel/plugin-transform-destructuring@7.27.7': + resolution: {integrity: sha512-pg3ZLdIKWCP0CrJm0O4jYjVthyBeioVfvz9nwt6o5paUxsgJ/8GucSMAIaj6M7xA4WY+SrvtGu2LijzkdyecWQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -898,8 +913,8 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-object-rest-spread@7.27.3': - resolution: {integrity: sha512-7ZZtznF9g4l2JCImCo5LNKFHB5eXnN39lLtLY5Tg+VkR0jwOt7TBciMckuiQIOIW7L5tkQOCh3bVGYeXgMx52Q==} + '@babel/plugin-transform-object-rest-spread@7.27.7': + resolution: {integrity: sha512-201B1kFTWhckclcXpWHc8uUpYziDX/Pl4rxl0ZX0DiCZ3jknwfSUALL3QCYeeXXB37yWxJbo+g+Vfq8pAaHi3w==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -922,8 +937,8 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-parameters@7.27.1': - resolution: {integrity: sha512-018KRk76HWKeZ5l4oTj2zPpSh+NbGdt0st5S6x0pga6HgrjBOJb24mMDHorFopOOd6YHkLgOZ+zaCjZGPO4aKg==} + '@babel/plugin-transform-parameters@7.27.7': + resolution: {integrity: sha512-qBkYTYCb76RRxUM6CcZA5KRu8K4SM8ajzVeUgVdMVO9NN9uI/GaVmBg/WKJJGnNokV9SY8FxNOVWGXzqzUidBg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -946,8 +961,8 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-regenerator@7.27.4': - resolution: {integrity: sha512-Glp/0n8xuj+E1588otw5rjJkTXfzW7FjH3IIUrfqiZOPQCd2vbg8e+DQE8jK9g4V5/zrxFW+D9WM9gboRPELpQ==} + '@babel/plugin-transform-regenerator@7.27.5': + resolution: {integrity: sha512-uhB8yHerfe3MWnuLAhEbeQ4afVoqv8BQsPqrTv7e/jZ9y00kJL6l9a/f4OWaKxotmjzewfEyXE1vgDJenkQ2/Q==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -964,8 +979,8 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 - '@babel/plugin-transform-runtime@7.26.10': - resolution: {integrity: sha512-NWaL2qG6HRpONTnj4JvDU6th4jYeZOJgu3QhmFTCihib0ermtOJqktA5BduGm3suhhVe9EMP9c9+mfJ/I9slqw==} + '@babel/plugin-transform-runtime@7.27.1': + resolution: {integrity: sha512-TqGF3desVsTcp3WrJGj4HfKokfCXCLcHpt4PJF0D8/iT6LPd9RS82Upw3KPeyr6B22Lfd3DO8MVrmp0oRkUDdw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -1024,8 +1039,8 @@ packages: peerDependencies: '@babel/core': ^7.0.0 - '@babel/preset-env@7.26.9': - resolution: {integrity: sha512-vX3qPGE8sEKEAZCWk05k3cpTAE3/nOYca++JA+Rd0z2NCNzabmYvEiSShKzm10zdquOIAVXsy2Ei/DTW34KlKQ==} + '@babel/preset-env@7.27.2': + resolution: {integrity: sha512-Ma4zSuYSlGNRlCLO+EAzLnCmJK2vdstgv+n7aUP+/IKZrOfWHOJVdSJtuub8RzHTj3ahD37k5OKJWvzf16TQyQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -1035,8 +1050,8 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 || ^8.0.0-0 <8.0.0 - '@babel/runtime@7.26.10': - resolution: {integrity: sha512-2WJMeRQPHKSPemqk/awGrAiuFfzBmOIPXKizAsVhWH9YJqLZ0H+HS4c8loHGgW6utJ3E/ejXQUsiGaQy2NZ9Fw==} + '@babel/runtime@7.27.1': + resolution: {integrity: sha512-1x3D2xEk2fRo3PAhwQwu5UubzgiVWSXTBfWpVd2Mx2AzRqJuDJCsgaDVZ7HB5iGzDW1Hl1sWN2mFyKjmR9uAog==} engines: {node: '>=6.9.0'} '@babel/template@7.27.2': @@ -1047,10 +1062,18 @@ packages: resolution: {integrity: sha512-oNcu2QbHqts9BtOWJosOVJapWjBDSxGCpFvikNR5TGDYDQf3JwpIoMzIKrvfoti93cLfPJEG4tH9SPVeyCGgdA==} engines: {node: '>=6.9.0'} + '@babel/traverse@7.27.7': + resolution: {integrity: sha512-X6ZlfR/O/s5EQ/SnUSLzr+6kGnkg8HXGMzpgsMsrJVcfDtH1vIp6ctCN4eZ1LS5c0+te5Cb6Y514fASjMRJ1nw==} + engines: {node: '>=6.9.0'} + '@babel/types@7.27.3': resolution: {integrity: sha512-Y1GkI4ktrtvmawoSq+4FCVHNryea6uR+qUQy0AGxLSsjCX0nVmkYQMBLHDkXZuo5hGx7eYdnIaslsdBFm7zbUw==} engines: {node: '>=6.9.0'} + '@babel/types@7.27.7': + resolution: {integrity: sha512-8OLQgDScAOHXnAz2cV+RfzzNMipuLVBz2biuAJFMV9bfkNf393je3VM8CLkjQodW5+iWsSJdSgSWT6rsZoXHPw==} + engines: {node: '>=6.9.0'} + '@bcoe/v8-coverage@0.2.3': resolution: {integrity: sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==} @@ -1082,14 +1105,14 @@ packages: cpu: [ppc64] os: [aix] - '@esbuild/aix-ppc64@0.25.3': - resolution: {integrity: sha512-W8bFfPA8DowP8l//sxjJLSLkD8iEjMc7cBVyP+u4cEv9sM7mdUCkgsj+t0n/BWPFtv7WWCN5Yzj0N6FJNUUqBQ==} + '@esbuild/aix-ppc64@0.25.4': + resolution: {integrity: sha512-1VCICWypeQKhVbE9oW/sJaAmjLxhVqacdkvPLEjwlttjfwENRSClS8EjBz0KzRyFSCPDIkuXW34Je/vk7zdB7Q==} engines: {node: '>=18'} cpu: [ppc64] os: [aix] - '@esbuild/aix-ppc64@0.25.4': - resolution: {integrity: sha512-1VCICWypeQKhVbE9oW/sJaAmjLxhVqacdkvPLEjwlttjfwENRSClS8EjBz0KzRyFSCPDIkuXW34Je/vk7zdB7Q==} + '@esbuild/aix-ppc64@0.25.5': + resolution: {integrity: sha512-9o3TMmpmftaCMepOdA5k/yDw8SfInyzWWTjYTFCX3kPSDJMROQTb8jg+h9Cnwnmm1vOzvxN7gIfB5V2ewpjtGA==} engines: {node: '>=18'} cpu: [ppc64] os: [aix] @@ -1100,14 +1123,14 @@ packages: cpu: [arm64] os: [android] - '@esbuild/android-arm64@0.25.3': - resolution: {integrity: sha512-XelR6MzjlZuBM4f5z2IQHK6LkK34Cvv6Rj2EntER3lwCBFdg6h2lKbtRjpTTsdEjD/WSe1q8UyPBXP1x3i/wYQ==} + '@esbuild/android-arm64@0.25.4': + resolution: {integrity: sha512-bBy69pgfhMGtCnwpC/x5QhfxAz/cBgQ9enbtwjf6V9lnPI/hMyT9iWpR1arm0l3kttTr4L0KSLpKmLp/ilKS9A==} engines: {node: '>=18'} cpu: [arm64] os: [android] - '@esbuild/android-arm64@0.25.4': - resolution: {integrity: sha512-bBy69pgfhMGtCnwpC/x5QhfxAz/cBgQ9enbtwjf6V9lnPI/hMyT9iWpR1arm0l3kttTr4L0KSLpKmLp/ilKS9A==} + '@esbuild/android-arm64@0.25.5': + resolution: {integrity: sha512-VGzGhj4lJO+TVGV1v8ntCZWJktV7SGCs3Pn1GRWI1SBFtRALoomm8k5E9Pmwg3HOAal2VDc2F9+PM/rEY6oIDg==} engines: {node: '>=18'} cpu: [arm64] os: [android] @@ -1118,14 +1141,14 @@ packages: cpu: [arm] os: [android] - '@esbuild/android-arm@0.25.3': - resolution: {integrity: sha512-PuwVXbnP87Tcff5I9ngV0lmiSu40xw1At6i3GsU77U7cjDDB4s0X2cyFuBiDa1SBk9DnvWwnGvVaGBqoFWPb7A==} + '@esbuild/android-arm@0.25.4': + resolution: {integrity: sha512-QNdQEps7DfFwE3hXiU4BZeOV68HHzYwGd0Nthhd3uCkkEKK7/R6MTgM0P7H7FAs5pU/DIWsviMmEGxEoxIZ+ZQ==} engines: {node: '>=18'} cpu: [arm] os: [android] - '@esbuild/android-arm@0.25.4': - resolution: {integrity: sha512-QNdQEps7DfFwE3hXiU4BZeOV68HHzYwGd0Nthhd3uCkkEKK7/R6MTgM0P7H7FAs5pU/DIWsviMmEGxEoxIZ+ZQ==} + '@esbuild/android-arm@0.25.5': + resolution: {integrity: sha512-AdJKSPeEHgi7/ZhuIPtcQKr5RQdo6OO2IL87JkianiMYMPbCtot9fxPbrMiBADOWWm3T2si9stAiVsGbTQFkbA==} engines: {node: '>=18'} cpu: [arm] os: [android] @@ -1136,14 +1159,14 @@ packages: cpu: [x64] os: [android] - '@esbuild/android-x64@0.25.3': - resolution: {integrity: sha512-ogtTpYHT/g1GWS/zKM0cc/tIebFjm1F9Aw1boQ2Y0eUQ+J89d0jFY//s9ei9jVIlkYi8AfOjiixcLJSGNSOAdQ==} + '@esbuild/android-x64@0.25.4': + resolution: {integrity: sha512-TVhdVtQIFuVpIIR282btcGC2oGQoSfZfmBdTip2anCaVYcqWlZXGcdcKIUklfX2wj0JklNYgz39OBqh2cqXvcQ==} engines: {node: '>=18'} cpu: [x64] os: [android] - '@esbuild/android-x64@0.25.4': - resolution: {integrity: sha512-TVhdVtQIFuVpIIR282btcGC2oGQoSfZfmBdTip2anCaVYcqWlZXGcdcKIUklfX2wj0JklNYgz39OBqh2cqXvcQ==} + '@esbuild/android-x64@0.25.5': + resolution: {integrity: sha512-D2GyJT1kjvO//drbRT3Hib9XPwQeWd9vZoBJn+bu/lVsOZ13cqNdDeqIF/xQ5/VmWvMduP6AmXvylO/PIc2isw==} engines: {node: '>=18'} cpu: [x64] os: [android] @@ -1154,14 +1177,14 @@ packages: cpu: [arm64] os: [darwin] - '@esbuild/darwin-arm64@0.25.3': - resolution: {integrity: sha512-eESK5yfPNTqpAmDfFWNsOhmIOaQA59tAcF/EfYvo5/QWQCzXn5iUSOnqt3ra3UdzBv073ykTtmeLJZGt3HhA+w==} + '@esbuild/darwin-arm64@0.25.4': + resolution: {integrity: sha512-Y1giCfM4nlHDWEfSckMzeWNdQS31BQGs9/rouw6Ub91tkK79aIMTH3q9xHvzH8d0wDru5Ci0kWB8b3up/nl16g==} engines: {node: '>=18'} cpu: [arm64] os: [darwin] - '@esbuild/darwin-arm64@0.25.4': - resolution: {integrity: sha512-Y1giCfM4nlHDWEfSckMzeWNdQS31BQGs9/rouw6Ub91tkK79aIMTH3q9xHvzH8d0wDru5Ci0kWB8b3up/nl16g==} + '@esbuild/darwin-arm64@0.25.5': + resolution: {integrity: sha512-GtaBgammVvdF7aPIgH2jxMDdivezgFu6iKpmT+48+F8Hhg5J/sfnDieg0aeG/jfSvkYQU2/pceFPDKlqZzwnfQ==} engines: {node: '>=18'} cpu: [arm64] os: [darwin] @@ -1172,14 +1195,14 @@ packages: cpu: [x64] os: [darwin] - '@esbuild/darwin-x64@0.25.3': - resolution: {integrity: sha512-Kd8glo7sIZtwOLcPbW0yLpKmBNWMANZhrC1r6K++uDR2zyzb6AeOYtI6udbtabmQpFaxJ8uduXMAo1gs5ozz8A==} + '@esbuild/darwin-x64@0.25.4': + resolution: {integrity: sha512-CJsry8ZGM5VFVeyUYB3cdKpd/H69PYez4eJh1W/t38vzutdjEjtP7hB6eLKBoOdxcAlCtEYHzQ/PJ/oU9I4u0A==} engines: {node: '>=18'} cpu: [x64] os: [darwin] - '@esbuild/darwin-x64@0.25.4': - resolution: {integrity: sha512-CJsry8ZGM5VFVeyUYB3cdKpd/H69PYez4eJh1W/t38vzutdjEjtP7hB6eLKBoOdxcAlCtEYHzQ/PJ/oU9I4u0A==} + '@esbuild/darwin-x64@0.25.5': + resolution: {integrity: sha512-1iT4FVL0dJ76/q1wd7XDsXrSW+oLoquptvh4CLR4kITDtqi2e/xwXwdCVH8hVHU43wgJdsq7Gxuzcs6Iq/7bxQ==} engines: {node: '>=18'} cpu: [x64] os: [darwin] @@ -1190,14 +1213,14 @@ packages: cpu: [arm64] os: [freebsd] - '@esbuild/freebsd-arm64@0.25.3': - resolution: {integrity: sha512-EJiyS70BYybOBpJth3M0KLOus0n+RRMKTYzhYhFeMwp7e/RaajXvP+BWlmEXNk6uk+KAu46j/kaQzr6au+JcIw==} + '@esbuild/freebsd-arm64@0.25.4': + resolution: {integrity: sha512-yYq+39NlTRzU2XmoPW4l5Ifpl9fqSk0nAJYM/V/WUGPEFfek1epLHJIkTQM6bBs1swApjO5nWgvr843g6TjxuQ==} engines: {node: '>=18'} cpu: [arm64] os: [freebsd] - '@esbuild/freebsd-arm64@0.25.4': - resolution: {integrity: sha512-yYq+39NlTRzU2XmoPW4l5Ifpl9fqSk0nAJYM/V/WUGPEFfek1epLHJIkTQM6bBs1swApjO5nWgvr843g6TjxuQ==} + '@esbuild/freebsd-arm64@0.25.5': + resolution: {integrity: sha512-nk4tGP3JThz4La38Uy/gzyXtpkPW8zSAmoUhK9xKKXdBCzKODMc2adkB2+8om9BDYugz+uGV7sLmpTYzvmz6Sw==} engines: {node: '>=18'} cpu: [arm64] os: [freebsd] @@ -1208,14 +1231,14 @@ packages: cpu: [x64] os: [freebsd] - '@esbuild/freebsd-x64@0.25.3': - resolution: {integrity: sha512-Q+wSjaLpGxYf7zC0kL0nDlhsfuFkoN+EXrx2KSB33RhinWzejOd6AvgmP5JbkgXKmjhmpfgKZq24pneodYqE8Q==} + '@esbuild/freebsd-x64@0.25.4': + resolution: {integrity: sha512-0FgvOJ6UUMflsHSPLzdfDnnBBVoCDtBTVyn/MrWloUNvq/5SFmh13l3dvgRPkDihRxb77Y17MbqbCAa2strMQQ==} engines: {node: '>=18'} cpu: [x64] os: [freebsd] - '@esbuild/freebsd-x64@0.25.4': - resolution: {integrity: sha512-0FgvOJ6UUMflsHSPLzdfDnnBBVoCDtBTVyn/MrWloUNvq/5SFmh13l3dvgRPkDihRxb77Y17MbqbCAa2strMQQ==} + '@esbuild/freebsd-x64@0.25.5': + resolution: {integrity: sha512-PrikaNjiXdR2laW6OIjlbeuCPrPaAl0IwPIaRv+SMV8CiM8i2LqVUHFC1+8eORgWyY7yhQY+2U2fA55mBzReaw==} engines: {node: '>=18'} cpu: [x64] os: [freebsd] @@ -1226,14 +1249,14 @@ packages: cpu: [arm64] os: [linux] - '@esbuild/linux-arm64@0.25.3': - resolution: {integrity: sha512-xCUgnNYhRD5bb1C1nqrDV1PfkwgbswTTBRbAd8aH5PhYzikdf/ddtsYyMXFfGSsb/6t6QaPSzxtbfAZr9uox4A==} + '@esbuild/linux-arm64@0.25.4': + resolution: {integrity: sha512-+89UsQTfXdmjIvZS6nUnOOLoXnkUTB9hR5QAeLrQdzOSWZvNSAXAtcRDHWtqAUtAmv7ZM1WPOOeSxDzzzMogiQ==} engines: {node: '>=18'} cpu: [arm64] os: [linux] - '@esbuild/linux-arm64@0.25.4': - resolution: {integrity: sha512-+89UsQTfXdmjIvZS6nUnOOLoXnkUTB9hR5QAeLrQdzOSWZvNSAXAtcRDHWtqAUtAmv7ZM1WPOOeSxDzzzMogiQ==} + '@esbuild/linux-arm64@0.25.5': + resolution: {integrity: sha512-Z9kfb1v6ZlGbWj8EJk9T6czVEjjq2ntSYLY2cw6pAZl4oKtfgQuS4HOq41M/BcoLPzrUbNd+R4BXFyH//nHxVg==} engines: {node: '>=18'} cpu: [arm64] os: [linux] @@ -1244,14 +1267,14 @@ packages: cpu: [arm] os: [linux] - '@esbuild/linux-arm@0.25.3': - resolution: {integrity: sha512-dUOVmAUzuHy2ZOKIHIKHCm58HKzFqd+puLaS424h6I85GlSDRZIA5ycBixb3mFgM0Jdh+ZOSB6KptX30DD8YOQ==} + '@esbuild/linux-arm@0.25.4': + resolution: {integrity: sha512-kro4c0P85GMfFYqW4TWOpvmF8rFShbWGnrLqlzp4X1TNWjRY3JMYUfDCtOxPKOIY8B0WC8HN51hGP4I4hz4AaQ==} engines: {node: '>=18'} cpu: [arm] os: [linux] - '@esbuild/linux-arm@0.25.4': - resolution: {integrity: sha512-kro4c0P85GMfFYqW4TWOpvmF8rFShbWGnrLqlzp4X1TNWjRY3JMYUfDCtOxPKOIY8B0WC8HN51hGP4I4hz4AaQ==} + '@esbuild/linux-arm@0.25.5': + resolution: {integrity: sha512-cPzojwW2okgh7ZlRpcBEtsX7WBuqbLrNXqLU89GxWbNt6uIg78ET82qifUy3W6OVww6ZWobWub5oqZOVtwolfw==} engines: {node: '>=18'} cpu: [arm] os: [linux] @@ -1262,14 +1285,14 @@ packages: cpu: [ia32] os: [linux] - '@esbuild/linux-ia32@0.25.3': - resolution: {integrity: sha512-yplPOpczHOO4jTYKmuYuANI3WhvIPSVANGcNUeMlxH4twz/TeXuzEP41tGKNGWJjuMhotpGabeFYGAOU2ummBw==} + '@esbuild/linux-ia32@0.25.4': + resolution: {integrity: sha512-yTEjoapy8UP3rv8dB0ip3AfMpRbyhSN3+hY8mo/i4QXFeDxmiYbEKp3ZRjBKcOP862Ua4b1PDfwlvbuwY7hIGQ==} engines: {node: '>=18'} cpu: [ia32] os: [linux] - '@esbuild/linux-ia32@0.25.4': - resolution: {integrity: sha512-yTEjoapy8UP3rv8dB0ip3AfMpRbyhSN3+hY8mo/i4QXFeDxmiYbEKp3ZRjBKcOP862Ua4b1PDfwlvbuwY7hIGQ==} + '@esbuild/linux-ia32@0.25.5': + resolution: {integrity: sha512-sQ7l00M8bSv36GLV95BVAdhJ2QsIbCuCjh/uYrWiMQSUuV+LpXwIqhgJDcvMTj+VsQmqAHL2yYaasENvJ7CDKA==} engines: {node: '>=18'} cpu: [ia32] os: [linux] @@ -1280,14 +1303,14 @@ packages: cpu: [loong64] os: [linux] - '@esbuild/linux-loong64@0.25.3': - resolution: {integrity: sha512-P4BLP5/fjyihmXCELRGrLd793q/lBtKMQl8ARGpDxgzgIKJDRJ/u4r1A/HgpBpKpKZelGct2PGI4T+axcedf6g==} + '@esbuild/linux-loong64@0.25.4': + resolution: {integrity: sha512-NeqqYkrcGzFwi6CGRGNMOjWGGSYOpqwCjS9fvaUlX5s3zwOtn1qwg1s2iE2svBe4Q/YOG1q6875lcAoQK/F4VA==} engines: {node: '>=18'} cpu: [loong64] os: [linux] - '@esbuild/linux-loong64@0.25.4': - resolution: {integrity: sha512-NeqqYkrcGzFwi6CGRGNMOjWGGSYOpqwCjS9fvaUlX5s3zwOtn1qwg1s2iE2svBe4Q/YOG1q6875lcAoQK/F4VA==} + '@esbuild/linux-loong64@0.25.5': + resolution: {integrity: sha512-0ur7ae16hDUC4OL5iEnDb0tZHDxYmuQyhKhsPBV8f99f6Z9KQM02g33f93rNH5A30agMS46u2HP6qTdEt6Q1kg==} engines: {node: '>=18'} cpu: [loong64] os: [linux] @@ -1298,14 +1321,14 @@ packages: cpu: [mips64el] os: [linux] - '@esbuild/linux-mips64el@0.25.3': - resolution: {integrity: sha512-eRAOV2ODpu6P5divMEMa26RRqb2yUoYsuQQOuFUexUoQndm4MdpXXDBbUoKIc0iPa4aCO7gIhtnYomkn2x+bag==} + '@esbuild/linux-mips64el@0.25.4': + resolution: {integrity: sha512-IcvTlF9dtLrfL/M8WgNI/qJYBENP3ekgsHbYUIzEzq5XJzzVEV/fXY9WFPfEEXmu3ck2qJP8LG/p3Q8f7Zc2Xg==} engines: {node: '>=18'} cpu: [mips64el] os: [linux] - '@esbuild/linux-mips64el@0.25.4': - resolution: {integrity: sha512-IcvTlF9dtLrfL/M8WgNI/qJYBENP3ekgsHbYUIzEzq5XJzzVEV/fXY9WFPfEEXmu3ck2qJP8LG/p3Q8f7Zc2Xg==} + '@esbuild/linux-mips64el@0.25.5': + resolution: {integrity: sha512-kB/66P1OsHO5zLz0i6X0RxlQ+3cu0mkxS3TKFvkb5lin6uwZ/ttOkP3Z8lfR9mJOBk14ZwZ9182SIIWFGNmqmg==} engines: {node: '>=18'} cpu: [mips64el] os: [linux] @@ -1316,14 +1339,14 @@ packages: cpu: [ppc64] os: [linux] - '@esbuild/linux-ppc64@0.25.3': - resolution: {integrity: sha512-ZC4jV2p7VbzTlnl8nZKLcBkfzIf4Yad1SJM4ZMKYnJqZFD4rTI+pBG65u8ev4jk3/MPwY9DvGn50wi3uhdaghg==} + '@esbuild/linux-ppc64@0.25.4': + resolution: {integrity: sha512-HOy0aLTJTVtoTeGZh4HSXaO6M95qu4k5lJcH4gxv56iaycfz1S8GO/5Jh6X4Y1YiI0h7cRyLi+HixMR+88swag==} engines: {node: '>=18'} cpu: [ppc64] os: [linux] - '@esbuild/linux-ppc64@0.25.4': - resolution: {integrity: sha512-HOy0aLTJTVtoTeGZh4HSXaO6M95qu4k5lJcH4gxv56iaycfz1S8GO/5Jh6X4Y1YiI0h7cRyLi+HixMR+88swag==} + '@esbuild/linux-ppc64@0.25.5': + resolution: {integrity: sha512-UZCmJ7r9X2fe2D6jBmkLBMQetXPXIsZjQJCjgwpVDz+YMcS6oFR27alkgGv3Oqkv07bxdvw7fyB71/olceJhkQ==} engines: {node: '>=18'} cpu: [ppc64] os: [linux] @@ -1334,14 +1357,14 @@ packages: cpu: [riscv64] os: [linux] - '@esbuild/linux-riscv64@0.25.3': - resolution: {integrity: sha512-LDDODcFzNtECTrUUbVCs6j9/bDVqy7DDRsuIXJg6so+mFksgwG7ZVnTruYi5V+z3eE5y+BJZw7VvUadkbfg7QA==} + '@esbuild/linux-riscv64@0.25.4': + resolution: {integrity: sha512-i8JUDAufpz9jOzo4yIShCTcXzS07vEgWzyX3NH2G7LEFVgrLEhjwL3ajFE4fZI3I4ZgiM7JH3GQ7ReObROvSUA==} engines: {node: '>=18'} cpu: [riscv64] os: [linux] - '@esbuild/linux-riscv64@0.25.4': - resolution: {integrity: sha512-i8JUDAufpz9jOzo4yIShCTcXzS07vEgWzyX3NH2G7LEFVgrLEhjwL3ajFE4fZI3I4ZgiM7JH3GQ7ReObROvSUA==} + '@esbuild/linux-riscv64@0.25.5': + resolution: {integrity: sha512-kTxwu4mLyeOlsVIFPfQo+fQJAV9mh24xL+y+Bm6ej067sYANjyEw1dNHmvoqxJUCMnkBdKpvOn0Ahql6+4VyeA==} engines: {node: '>=18'} cpu: [riscv64] os: [linux] @@ -1352,14 +1375,14 @@ packages: cpu: [s390x] os: [linux] - '@esbuild/linux-s390x@0.25.3': - resolution: {integrity: sha512-s+w/NOY2k0yC2p9SLen+ymflgcpRkvwwa02fqmAwhBRI3SC12uiS10edHHXlVWwfAagYSY5UpmT/zISXPMW3tQ==} + '@esbuild/linux-s390x@0.25.4': + resolution: {integrity: sha512-jFnu+6UbLlzIjPQpWCNh5QtrcNfMLjgIavnwPQAfoGx4q17ocOU9MsQ2QVvFxwQoWpZT8DvTLooTvmOQXkO51g==} engines: {node: '>=18'} cpu: [s390x] os: [linux] - '@esbuild/linux-s390x@0.25.4': - resolution: {integrity: sha512-jFnu+6UbLlzIjPQpWCNh5QtrcNfMLjgIavnwPQAfoGx4q17ocOU9MsQ2QVvFxwQoWpZT8DvTLooTvmOQXkO51g==} + '@esbuild/linux-s390x@0.25.5': + resolution: {integrity: sha512-K2dSKTKfmdh78uJ3NcWFiqyRrimfdinS5ErLSn3vluHNeHVnBAFWC8a4X5N+7FgVE1EjXS1QDZbpqZBjfrqMTQ==} engines: {node: '>=18'} cpu: [s390x] os: [linux] @@ -1370,14 +1393,14 @@ packages: cpu: [x64] os: [linux] - '@esbuild/linux-x64@0.25.3': - resolution: {integrity: sha512-nQHDz4pXjSDC6UfOE1Fw9Q8d6GCAd9KdvMZpfVGWSJztYCarRgSDfOVBY5xwhQXseiyxapkiSJi/5/ja8mRFFA==} + '@esbuild/linux-x64@0.25.4': + resolution: {integrity: sha512-6e0cvXwzOnVWJHq+mskP8DNSrKBr1bULBvnFLpc1KY+d+irZSgZ02TGse5FsafKS5jg2e4pbvK6TPXaF/A6+CA==} engines: {node: '>=18'} cpu: [x64] os: [linux] - '@esbuild/linux-x64@0.25.4': - resolution: {integrity: sha512-6e0cvXwzOnVWJHq+mskP8DNSrKBr1bULBvnFLpc1KY+d+irZSgZ02TGse5FsafKS5jg2e4pbvK6TPXaF/A6+CA==} + '@esbuild/linux-x64@0.25.5': + resolution: {integrity: sha512-uhj8N2obKTE6pSZ+aMUbqq+1nXxNjZIIjCjGLfsWvVpy7gKCOL6rsY1MhRh9zLtUtAI7vpgLMK6DxjO8Qm9lJw==} engines: {node: '>=18'} cpu: [x64] os: [linux] @@ -1388,14 +1411,14 @@ packages: cpu: [arm64] os: [netbsd] - '@esbuild/netbsd-arm64@0.25.3': - resolution: {integrity: sha512-1QaLtOWq0mzK6tzzp0jRN3eccmN3hezey7mhLnzC6oNlJoUJz4nym5ZD7mDnS/LZQgkrhEbEiTn515lPeLpgWA==} + '@esbuild/netbsd-arm64@0.25.4': + resolution: {integrity: sha512-vUnkBYxZW4hL/ie91hSqaSNjulOnYXE1VSLusnvHg2u3jewJBz3YzB9+oCw8DABeVqZGg94t9tyZFoHma8gWZQ==} engines: {node: '>=18'} cpu: [arm64] os: [netbsd] - '@esbuild/netbsd-arm64@0.25.4': - resolution: {integrity: sha512-vUnkBYxZW4hL/ie91hSqaSNjulOnYXE1VSLusnvHg2u3jewJBz3YzB9+oCw8DABeVqZGg94t9tyZFoHma8gWZQ==} + '@esbuild/netbsd-arm64@0.25.5': + resolution: {integrity: sha512-pwHtMP9viAy1oHPvgxtOv+OkduK5ugofNTVDilIzBLpoWAM16r7b/mxBvfpuQDpRQFMfuVr5aLcn4yveGvBZvw==} engines: {node: '>=18'} cpu: [arm64] os: [netbsd] @@ -1406,14 +1429,14 @@ packages: cpu: [x64] os: [netbsd] - '@esbuild/netbsd-x64@0.25.3': - resolution: {integrity: sha512-i5Hm68HXHdgv8wkrt+10Bc50zM0/eonPb/a/OFVfB6Qvpiirco5gBA5bz7S2SHuU+Y4LWn/zehzNX14Sp4r27g==} + '@esbuild/netbsd-x64@0.25.4': + resolution: {integrity: sha512-XAg8pIQn5CzhOB8odIcAm42QsOfa98SBeKUdo4xa8OvX8LbMZqEtgeWE9P/Wxt7MlG2QqvjGths+nq48TrUiKw==} engines: {node: '>=18'} cpu: [x64] os: [netbsd] - '@esbuild/netbsd-x64@0.25.4': - resolution: {integrity: sha512-XAg8pIQn5CzhOB8odIcAm42QsOfa98SBeKUdo4xa8OvX8LbMZqEtgeWE9P/Wxt7MlG2QqvjGths+nq48TrUiKw==} + '@esbuild/netbsd-x64@0.25.5': + resolution: {integrity: sha512-WOb5fKrvVTRMfWFNCroYWWklbnXH0Q5rZppjq0vQIdlsQKuw6mdSihwSo4RV/YdQ5UCKKvBy7/0ZZYLBZKIbwQ==} engines: {node: '>=18'} cpu: [x64] os: [netbsd] @@ -1424,14 +1447,14 @@ packages: cpu: [arm64] os: [openbsd] - '@esbuild/openbsd-arm64@0.25.3': - resolution: {integrity: sha512-zGAVApJEYTbOC6H/3QBr2mq3upG/LBEXr85/pTtKiv2IXcgKV0RT0QA/hSXZqSvLEpXeIxah7LczB4lkiYhTAQ==} + '@esbuild/openbsd-arm64@0.25.4': + resolution: {integrity: sha512-Ct2WcFEANlFDtp1nVAXSNBPDxyU+j7+tId//iHXU2f/lN5AmO4zLyhDcpR5Cz1r08mVxzt3Jpyt4PmXQ1O6+7A==} engines: {node: '>=18'} cpu: [arm64] os: [openbsd] - '@esbuild/openbsd-arm64@0.25.4': - resolution: {integrity: sha512-Ct2WcFEANlFDtp1nVAXSNBPDxyU+j7+tId//iHXU2f/lN5AmO4zLyhDcpR5Cz1r08mVxzt3Jpyt4PmXQ1O6+7A==} + '@esbuild/openbsd-arm64@0.25.5': + resolution: {integrity: sha512-7A208+uQKgTxHd0G0uqZO8UjK2R0DDb4fDmERtARjSHWxqMTye4Erz4zZafx7Di9Cv+lNHYuncAkiGFySoD+Mw==} engines: {node: '>=18'} cpu: [arm64] os: [openbsd] @@ -1442,14 +1465,14 @@ packages: cpu: [x64] os: [openbsd] - '@esbuild/openbsd-x64@0.25.3': - resolution: {integrity: sha512-fpqctI45NnCIDKBH5AXQBsD0NDPbEFczK98hk/aa6HJxbl+UtLkJV2+Bvy5hLSLk3LHmqt0NTkKNso1A9y1a4w==} + '@esbuild/openbsd-x64@0.25.4': + resolution: {integrity: sha512-xAGGhyOQ9Otm1Xu8NT1ifGLnA6M3sJxZ6ixylb+vIUVzvvd6GOALpwQrYrtlPouMqd/vSbgehz6HaVk4+7Afhw==} engines: {node: '>=18'} cpu: [x64] os: [openbsd] - '@esbuild/openbsd-x64@0.25.4': - resolution: {integrity: sha512-xAGGhyOQ9Otm1Xu8NT1ifGLnA6M3sJxZ6ixylb+vIUVzvvd6GOALpwQrYrtlPouMqd/vSbgehz6HaVk4+7Afhw==} + '@esbuild/openbsd-x64@0.25.5': + resolution: {integrity: sha512-G4hE405ErTWraiZ8UiSoesH8DaCsMm0Cay4fsFWOOUcz8b8rC6uCvnagr+gnioEjWn0wC+o1/TAHt+It+MpIMg==} engines: {node: '>=18'} cpu: [x64] os: [openbsd] @@ -1460,14 +1483,14 @@ packages: cpu: [x64] os: [sunos] - '@esbuild/sunos-x64@0.25.3': - resolution: {integrity: sha512-ROJhm7d8bk9dMCUZjkS8fgzsPAZEjtRJqCAmVgB0gMrvG7hfmPmz9k1rwO4jSiblFjYmNvbECL9uhaPzONMfgA==} + '@esbuild/sunos-x64@0.25.4': + resolution: {integrity: sha512-Mw+tzy4pp6wZEK0+Lwr76pWLjrtjmJyUB23tHKqEDP74R3q95luY/bXqXZeYl4NYlvwOqoRKlInQialgCKy67Q==} engines: {node: '>=18'} cpu: [x64] os: [sunos] - '@esbuild/sunos-x64@0.25.4': - resolution: {integrity: sha512-Mw+tzy4pp6wZEK0+Lwr76pWLjrtjmJyUB23tHKqEDP74R3q95luY/bXqXZeYl4NYlvwOqoRKlInQialgCKy67Q==} + '@esbuild/sunos-x64@0.25.5': + resolution: {integrity: sha512-l+azKShMy7FxzY0Rj4RCt5VD/q8mG/e+mDivgspo+yL8zW7qEwctQ6YqKX34DTEleFAvCIUviCFX1SDZRSyMQA==} engines: {node: '>=18'} cpu: [x64] os: [sunos] @@ -1478,14 +1501,14 @@ packages: cpu: [arm64] os: [win32] - '@esbuild/win32-arm64@0.25.3': - resolution: {integrity: sha512-YWcow8peiHpNBiIXHwaswPnAXLsLVygFwCB3A7Bh5jRkIBFWHGmNQ48AlX4xDvQNoMZlPYzjVOQDYEzWCqufMQ==} + '@esbuild/win32-arm64@0.25.4': + resolution: {integrity: sha512-AVUP428VQTSddguz9dO9ngb+E5aScyg7nOeJDrF1HPYu555gmza3bDGMPhmVXL8svDSoqPCsCPjb265yG/kLKQ==} engines: {node: '>=18'} cpu: [arm64] os: [win32] - '@esbuild/win32-arm64@0.25.4': - resolution: {integrity: sha512-AVUP428VQTSddguz9dO9ngb+E5aScyg7nOeJDrF1HPYu555gmza3bDGMPhmVXL8svDSoqPCsCPjb265yG/kLKQ==} + '@esbuild/win32-arm64@0.25.5': + resolution: {integrity: sha512-O2S7SNZzdcFG7eFKgvwUEZ2VG9D/sn/eIiz8XRZ1Q/DO5a3s76Xv0mdBzVM5j5R639lXQmPmSo0iRpHqUUrsxw==} engines: {node: '>=18'} cpu: [arm64] os: [win32] @@ -1496,14 +1519,14 @@ packages: cpu: [ia32] os: [win32] - '@esbuild/win32-ia32@0.25.3': - resolution: {integrity: sha512-qspTZOIGoXVS4DpNqUYUs9UxVb04khS1Degaw/MnfMe7goQ3lTfQ13Vw4qY/Nj0979BGvMRpAYbs/BAxEvU8ew==} + '@esbuild/win32-ia32@0.25.4': + resolution: {integrity: sha512-i1sW+1i+oWvQzSgfRcxxG2k4I9n3O9NRqy8U+uugaT2Dy7kLO9Y7wI72haOahxceMX8hZAzgGou1FhndRldxRg==} engines: {node: '>=18'} cpu: [ia32] os: [win32] - '@esbuild/win32-ia32@0.25.4': - resolution: {integrity: sha512-i1sW+1i+oWvQzSgfRcxxG2k4I9n3O9NRqy8U+uugaT2Dy7kLO9Y7wI72haOahxceMX8hZAzgGou1FhndRldxRg==} + '@esbuild/win32-ia32@0.25.5': + resolution: {integrity: sha512-onOJ02pqs9h1iMJ1PQphR+VZv8qBMQ77Klcsqv9CNW2w6yLqoURLcgERAIurY6QE63bbLuqgP9ATqajFLK5AMQ==} engines: {node: '>=18'} cpu: [ia32] os: [win32] @@ -1514,14 +1537,14 @@ packages: cpu: [x64] os: [win32] - '@esbuild/win32-x64@0.25.3': - resolution: {integrity: sha512-ICgUR+kPimx0vvRzf+N/7L7tVSQeE3BYY+NhHRHXS1kBuPO7z2+7ea2HbhDyZdTephgvNvKrlDDKUexuCVBVvg==} + '@esbuild/win32-x64@0.25.4': + resolution: {integrity: sha512-nOT2vZNw6hJ+z43oP1SPea/G/6AbN6X+bGNhNuq8NtRHy4wsMhw765IKLNmnjek7GvjWBYQ8Q5VBoYTFg9y1UQ==} engines: {node: '>=18'} cpu: [x64] os: [win32] - '@esbuild/win32-x64@0.25.4': - resolution: {integrity: sha512-nOT2vZNw6hJ+z43oP1SPea/G/6AbN6X+bGNhNuq8NtRHy4wsMhw765IKLNmnjek7GvjWBYQ8Q5VBoYTFg9y1UQ==} + '@esbuild/win32-x64@0.25.5': + resolution: {integrity: sha512-TXv6YnJ8ZMVdX+SXWVBo/0p8LTcrUYngpWjvm91TMjjBQii7Oz11Lw5lbDV5Y0TzuhSJHwiH4hEtC1I42mMS0g==} engines: {node: '>=18'} cpu: [x64] os: [win32] @@ -1597,8 +1620,8 @@ packages: '@types/node': optional: true - '@inquirer/confirm@5.1.12': - resolution: {integrity: sha512-dpq+ielV9/bqgXRUbNH//KsY6WEw9DrGPmipkpmgC1Y46cwuBTNx7PXFWTjc3MQ+urcc0QxoVHcMI0FW4Ok0hg==} + '@inquirer/confirm@5.1.10': + resolution: {integrity: sha512-FxbQ9giWxUWKUk2O5XZ6PduVnH2CZ/fmMKMBkH71MHJvWr7WL5AHKevhzF1L5uYWB2P548o1RzVxrNd3dpmk6g==} engines: {node: '>=18'} peerDependencies: '@types/node': '>=18' @@ -1606,8 +1629,8 @@ packages: '@types/node': optional: true - '@inquirer/confirm@5.1.6': - resolution: {integrity: sha512-6ZXYK3M1XmaVBZX6FCfChgtponnL0R6I7k8Nu+kaoNkT828FVZTcca1MqmWQipaW2oNREQl5AaPCUOOCVNdRMw==} + '@inquirer/confirm@5.1.12': + resolution: {integrity: sha512-dpq+ielV9/bqgXRUbNH//KsY6WEw9DrGPmipkpmgC1Y46cwuBTNx7PXFWTjc3MQ+urcc0QxoVHcMI0FW4Ok0hg==} engines: {node: '>=18'} peerDependencies: '@types/node': '>=18' @@ -1673,8 +1696,8 @@ packages: '@types/node': optional: true - '@inquirer/prompts@7.3.2': - resolution: {integrity: sha512-G1ytyOoHh5BphmEBxSwALin3n1KGNYB6yImbICcRQdzXfOGbuJ9Jske/Of5Sebk339NSGGNfUshnzK8YWkTPsQ==} + '@inquirer/prompts@7.5.1': + resolution: {integrity: sha512-5AOrZPf2/GxZ+SDRZ5WFplCA2TAQgK3OYrXCYmJL5NaTu4ECcoWFlfUZuw7Es++6Njv7iu/8vpYJhuzxUH76Vg==} engines: {node: '>=18'} peerDependencies: '@types/node': '>=18' @@ -1853,39 +1876,44 @@ packages: '@leichtgewicht/ip-codec@2.0.5': resolution: {integrity: sha512-Vo+PSpZG2/fmgmiNzYK9qWRh8h/CHrwD0mo1h1DzL4yzHNSfWYujGTYsWGreD000gcgmZ7K4Ys6Tx9TxtsKdDw==} - '@listr2/prompt-adapter-inquirer@2.0.18': - resolution: {integrity: sha512-0hz44rAcrphyXcA8IS7EJ2SCoaBZD2u5goE8S/e+q/DL+dOGpqpcLidVOFeLG3VgML62SXmfRLAhWt0zL1oW4Q==} + '@listr2/prompt-adapter-inquirer@2.0.22': + resolution: {integrity: sha512-hV36ZoY+xKL6pYOt1nPNnkciFkn89KZwqLhAFzJvYysAvL5uBQdiADZx/8bIDXIukzzwG0QlPYolgMzQUtKgpQ==} engines: {node: '>=18.0.0'} peerDependencies: '@inquirer/prompts': '>= 3 < 8' - '@lmdb/lmdb-darwin-arm64@3.2.6': - resolution: {integrity: sha512-yF/ih9EJJZc72psFQbwnn8mExIWfTnzWJg+N02hnpXtDPETYLmQswIMBn7+V88lfCaFrMozJsUvcEQIkEPU0Gg==} + '@lmdb/lmdb-darwin-arm64@3.3.0': + resolution: {integrity: sha512-LipbQobyEfQtu8WixasaFUZZ+JCGlho4OWwWIQ5ol0rB1RKkcZvypu7sS1CBvofBGVAa3vbOh8IOGQMrbmL5dg==} cpu: [arm64] os: [darwin] - '@lmdb/lmdb-darwin-x64@3.2.6': - resolution: {integrity: sha512-5BbCumsFLbCi586Bb1lTWQFkekdQUw8/t8cy++Uq251cl3hbDIGEwD9HAwh8H6IS2F6QA9KdKmO136LmipRNkg==} + '@lmdb/lmdb-darwin-x64@3.3.0': + resolution: {integrity: sha512-yA+9P+ZeA3vg76BLXWeUomIAjxfmSmR2eg8fueHXDg5Xe1Xmkl9JCKuHXUhtJ+mMVcH12d5k4kJBLbyXTadfGQ==} cpu: [x64] os: [darwin] - '@lmdb/lmdb-linux-arm64@3.2.6': - resolution: {integrity: sha512-l5VmJamJ3nyMmeD1ANBQCQqy7do1ESaJQfKPSm2IG9/ADZryptTyCj8N6QaYgIWewqNUrcbdMkJajRQAt5Qjfg==} + '@lmdb/lmdb-linux-arm64@3.3.0': + resolution: {integrity: sha512-OeWvSgjXXZ/zmtLqqL78I3910F6UYpUubmsUU+iBHo6nTtjkpXms95rJtGrjkWQqwswKBD7xSMplbYC4LEsiPA==} cpu: [arm64] os: [linux] - '@lmdb/lmdb-linux-arm@3.2.6': - resolution: {integrity: sha512-+6XgLpMb7HBoWxXj+bLbiiB4s0mRRcDPElnRS3LpWRzdYSe+gFk5MT/4RrVNqd2MESUDmb53NUXw1+BP69bjiQ==} + '@lmdb/lmdb-linux-arm@3.3.0': + resolution: {integrity: sha512-EDYrW9kle+8wI19JCj/PhRnGoCN9bked5cdOPdo1wdgH/HzjgoLPFTn9DHlZccgTEVhp3O+bpWXdN/rWySVvjw==} cpu: [arm] os: [linux] - '@lmdb/lmdb-linux-x64@3.2.6': - resolution: {integrity: sha512-nDYT8qN9si5+onHYYaI4DiauDMx24OAiuZAUsEqrDy+ja/3EbpXPX/VAkMV8AEaQhy3xc4dRC+KcYIvOFefJ4Q==} + '@lmdb/lmdb-linux-x64@3.3.0': + resolution: {integrity: sha512-wDd02mt5ScX4+xd6g78zKBr6ojpgCJCTrllCAabjgap5FzuETqOqaQfKhO+tJuGWv/J5q+GIds6uY7rNFueOxg==} cpu: [x64] os: [linux] - '@lmdb/lmdb-win32-x64@3.2.6': - resolution: {integrity: sha512-XlqVtILonQnG+9fH2N3Aytria7P/1fwDgDhl29rde96uH2sLB8CHORIf2PfuLVzFQJ7Uqp8py9AYwr3ZUCFfWg==} + '@lmdb/lmdb-win32-arm64@3.3.0': + resolution: {integrity: sha512-COotWhHJgzXULLiEjOgWQwqig6PoA+6ji6W+sDl6M1HhMXWIymEVHGs0edsVSNtsNSCAWMxJgR3asv6FNX/2EA==} + cpu: [arm64] + os: [win32] + + '@lmdb/lmdb-win32-x64@3.3.0': + resolution: {integrity: sha512-kqUgQH+l8HDbkAapx+aoko7Ez4X4DqkIraOqY/k0QY5EN/iialVlFpBUXh4wFXzirdmEVjbIUMrceUh0Kh8LeA==} cpu: [x64] os: [win32] @@ -2019,23 +2047,23 @@ packages: resolution: {integrity: sha512-zM0mVWSXE0a0h9aKACLwKmD6nHcRiKrPpCfvaKqG1CqDEyjEawId0ocXxVzPMCAm6kkWr2P025msfxXEnt8UGQ==} engines: {node: '>= 10'} - '@ng-bootstrap/ng-bootstrap@18.0.0': - resolution: {integrity: sha512-GeSAz4yiGq49psdte8kcf+Y562wB3jK/qKRAkh6iA32lcXmy2sfQXVAmlHdjZ3AyP+E8lf3yMwuPdSKiYcDgSg==} + '@ng-bootstrap/ng-bootstrap@19.0.0': + resolution: {integrity: sha512-Ryd7L3VdT0zQ5+Y9uA5Kze+4FylUQ7FS04DCiFAjU3eCLxrGirhXiwpE2poMSciZi0nqXodKgKKdUSynZEYY+Q==} peerDependencies: - '@angular/common': ^19.0.0 - '@angular/core': ^19.0.0 - '@angular/forms': ^19.0.0 - '@angular/localize': ^19.0.0 + '@angular/common': ^20.0.0 + '@angular/core': ^20.0.0 + '@angular/forms': ^20.0.0 + '@angular/localize': ^20.0.0 '@popperjs/core': ^2.11.8 rxjs: ^6.5.3 || ^7.4.0 - '@ng-select/ng-select@14.9.0': - resolution: {integrity: sha512-f/E3EaSVwdKmwvZL43nS961bGaXR90F0Gtb8vA+ub8Hfwqjr1NTI6X7+yu5iMkqfy5ZW5cJdoGvo+kv8zcAkjQ==} - engines: {node: '>= 18', npm: '>= 8'} + '@ng-select/ng-select@15.1.2': + resolution: {integrity: sha512-SHz+15A30QP3QNkGHZ0p1tNn5ZgXFi8f+wkPp2Vfkst2dEyaIHVT0v3fvHAo7Qy8FqHJk2LdPVSZW0i/aOfvpw==} + engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} peerDependencies: - '@angular/common': ^19.0.0 - '@angular/core': ^19.0.0 - '@angular/forms': ^19.0.0 + '@angular/common': ^20.0.0 + '@angular/core': ^20.0.0 + '@angular/forms': ^20.0.0 '@ngneat/dirty-check-forms@3.0.3': resolution: {integrity: sha512-YGlKrAaqTRO8lfT1xyN9LkYN0GH0crzdnXAxQFNEuNDQpCHv9cQ0j9XPDsonek6X4K7fLug84n0CQ42rSmGBqw==} @@ -2046,12 +2074,12 @@ packages: lodash-es: '>=4.17.0' rxjs: '>=6.0.0' - '@ngtools/webpack@19.2.14': - resolution: {integrity: sha512-PqrY+eeSUoF6JC6NCEQRPE/0Y2umSllD/fsDE6pnQrvGfztBpj0Jt1WMhgEI8BBcl4S7QW0LhPynkBmnCvTUmw==} - engines: {node: ^18.19.1 || ^20.11.1 || >=22.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} + '@ngtools/webpack@20.0.4': + resolution: {integrity: sha512-GFke8NcaFW62d1KXd4DkKbEw4mSsjJsMGmeHkBe5LPWS6zRIAZULo0fk/qV94IZ8INDbqY2k1WoxvStg7pHTsg==} + engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} peerDependencies: - '@angular/compiler-cli': ^19.0.0 || ^19.2.0-next.0 - typescript: '>=5.5 <5.9' + '@angular/compiler-cli': ^20.0.0 + typescript: '>=5.8 <5.9' webpack: ^5.54.0 '@nodelib/fs.scandir@2.1.5': @@ -2245,104 +2273,109 @@ packages: '@popperjs/core@2.11.8': resolution: {integrity: sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A==} - '@rollup/rollup-android-arm-eabi@4.34.8': - resolution: {integrity: sha512-q217OSE8DTp8AFHuNHXo0Y86e1wtlfVrXiAlwkIvGRQv9zbc6mE3sjIVfwI8sYUyNxwOg0j/Vm1RKM04JcWLJw==} + '@rollup/rollup-android-arm-eabi@4.40.2': + resolution: {integrity: sha512-JkdNEq+DFxZfUwxvB58tHMHBHVgX23ew41g1OQinthJ+ryhdRk67O31S7sYw8u2lTjHUPFxwar07BBt1KHp/hg==} cpu: [arm] os: [android] - '@rollup/rollup-android-arm64@4.34.8': - resolution: {integrity: sha512-Gigjz7mNWaOL9wCggvoK3jEIUUbGul656opstjaUSGC3eT0BM7PofdAJaBfPFWWkXNVAXbaQtC99OCg4sJv70Q==} + '@rollup/rollup-android-arm64@4.40.2': + resolution: {integrity: sha512-13unNoZ8NzUmnndhPTkWPWbX3vtHodYmy+I9kuLxN+F+l+x3LdVF7UCu8TWVMt1POHLh6oDHhnOA04n8oJZhBw==} cpu: [arm64] os: [android] - '@rollup/rollup-darwin-arm64@4.34.8': - resolution: {integrity: sha512-02rVdZ5tgdUNRxIUrFdcMBZQoaPMrxtwSb+/hOfBdqkatYHR3lZ2A2EGyHq2sGOd0Owk80oV3snlDASC24He3Q==} + '@rollup/rollup-darwin-arm64@4.40.2': + resolution: {integrity: sha512-Gzf1Hn2Aoe8VZzevHostPX23U7N5+4D36WJNHK88NZHCJr7aVMG4fadqkIf72eqVPGjGc0HJHNuUaUcxiR+N/w==} cpu: [arm64] os: [darwin] - '@rollup/rollup-darwin-x64@4.34.8': - resolution: {integrity: sha512-qIP/elwR/tq/dYRx3lgwK31jkZvMiD6qUtOycLhTzCvrjbZ3LjQnEM9rNhSGpbLXVJYQ3rq39A6Re0h9tU2ynw==} + '@rollup/rollup-darwin-x64@4.40.2': + resolution: {integrity: sha512-47N4hxa01a4x6XnJoskMKTS8XZ0CZMd8YTbINbi+w03A2w4j1RTlnGHOz/P0+Bg1LaVL6ufZyNprSg+fW5nYQQ==} cpu: [x64] os: [darwin] - '@rollup/rollup-freebsd-arm64@4.34.8': - resolution: {integrity: sha512-IQNVXL9iY6NniYbTaOKdrlVP3XIqazBgJOVkddzJlqnCpRi/yAeSOa8PLcECFSQochzqApIOE1GHNu3pCz+BDA==} + '@rollup/rollup-freebsd-arm64@4.40.2': + resolution: {integrity: sha512-8t6aL4MD+rXSHHZUR1z19+9OFJ2rl1wGKvckN47XFRVO+QL/dUSpKA2SLRo4vMg7ELA8pzGpC+W9OEd1Z/ZqoQ==} cpu: [arm64] os: [freebsd] - '@rollup/rollup-freebsd-x64@4.34.8': - resolution: {integrity: sha512-TYXcHghgnCqYFiE3FT5QwXtOZqDj5GmaFNTNt3jNC+vh22dc/ukG2cG+pi75QO4kACohZzidsq7yKTKwq/Jq7Q==} + '@rollup/rollup-freebsd-x64@4.40.2': + resolution: {integrity: sha512-C+AyHBzfpsOEYRFjztcYUFsH4S7UsE9cDtHCtma5BK8+ydOZYgMmWg1d/4KBytQspJCld8ZIujFMAdKG1xyr4Q==} cpu: [x64] os: [freebsd] - '@rollup/rollup-linux-arm-gnueabihf@4.34.8': - resolution: {integrity: sha512-A4iphFGNkWRd+5m3VIGuqHnG3MVnqKe7Al57u9mwgbyZ2/xF9Jio72MaY7xxh+Y87VAHmGQr73qoKL9HPbXj1g==} + '@rollup/rollup-linux-arm-gnueabihf@4.40.2': + resolution: {integrity: sha512-de6TFZYIvJwRNjmW3+gaXiZ2DaWL5D5yGmSYzkdzjBDS3W+B9JQ48oZEsmMvemqjtAFzE16DIBLqd6IQQRuG9Q==} cpu: [arm] os: [linux] - '@rollup/rollup-linux-arm-musleabihf@4.34.8': - resolution: {integrity: sha512-S0lqKLfTm5u+QTxlFiAnb2J/2dgQqRy/XvziPtDd1rKZFXHTyYLoVL58M/XFwDI01AQCDIevGLbQrMAtdyanpA==} + '@rollup/rollup-linux-arm-musleabihf@4.40.2': + resolution: {integrity: sha512-urjaEZubdIkacKc930hUDOfQPysezKla/O9qV+O89enqsqUmQm8Xj8O/vh0gHg4LYfv7Y7UsE3QjzLQzDYN1qg==} cpu: [arm] os: [linux] - '@rollup/rollup-linux-arm64-gnu@4.34.8': - resolution: {integrity: sha512-jpz9YOuPiSkL4G4pqKrus0pn9aYwpImGkosRKwNi+sJSkz+WU3anZe6hi73StLOQdfXYXC7hUfsQlTnjMd3s1A==} + '@rollup/rollup-linux-arm64-gnu@4.40.2': + resolution: {integrity: sha512-KlE8IC0HFOC33taNt1zR8qNlBYHj31qGT1UqWqtvR/+NuCVhfufAq9fxO8BMFC22Wu0rxOwGVWxtCMvZVLmhQg==} cpu: [arm64] os: [linux] - '@rollup/rollup-linux-arm64-musl@4.34.8': - resolution: {integrity: sha512-KdSfaROOUJXgTVxJNAZ3KwkRc5nggDk+06P6lgi1HLv1hskgvxHUKZ4xtwHkVYJ1Rep4GNo+uEfycCRRxht7+Q==} + '@rollup/rollup-linux-arm64-musl@4.40.2': + resolution: {integrity: sha512-j8CgxvfM0kbnhu4XgjnCWJQyyBOeBI1Zq91Z850aUddUmPeQvuAy6OiMdPS46gNFgy8gN1xkYyLgwLYZG3rBOg==} cpu: [arm64] os: [linux] - '@rollup/rollup-linux-loongarch64-gnu@4.34.8': - resolution: {integrity: sha512-NyF4gcxwkMFRjgXBM6g2lkT58OWztZvw5KkV2K0qqSnUEqCVcqdh2jN4gQrTn/YUpAcNKyFHfoOZEer9nwo6uQ==} + '@rollup/rollup-linux-loongarch64-gnu@4.40.2': + resolution: {integrity: sha512-Ybc/1qUampKuRF4tQXc7G7QY9YRyeVSykfK36Y5Qc5dmrIxwFhrOzqaVTNoZygqZ1ZieSWTibfFhQ5qK8jpWxw==} cpu: [loong64] os: [linux] - '@rollup/rollup-linux-powerpc64le-gnu@4.34.8': - resolution: {integrity: sha512-LMJc999GkhGvktHU85zNTDImZVUCJ1z/MbAJTnviiWmmjyckP5aQsHtcujMjpNdMZPT2rQEDBlJfubhs3jsMfw==} + '@rollup/rollup-linux-powerpc64le-gnu@4.40.2': + resolution: {integrity: sha512-3FCIrnrt03CCsZqSYAOW/k9n625pjpuMzVfeI+ZBUSDT3MVIFDSPfSUgIl9FqUftxcUXInvFah79hE1c9abD+Q==} cpu: [ppc64] os: [linux] - '@rollup/rollup-linux-riscv64-gnu@4.34.8': - resolution: {integrity: sha512-xAQCAHPj8nJq1PI3z8CIZzXuXCstquz7cIOL73HHdXiRcKk8Ywwqtx2wrIy23EcTn4aZ2fLJNBB8d0tQENPCmw==} + '@rollup/rollup-linux-riscv64-gnu@4.40.2': + resolution: {integrity: sha512-QNU7BFHEvHMp2ESSY3SozIkBPaPBDTsfVNGx3Xhv+TdvWXFGOSH2NJvhD1zKAT6AyuuErJgbdvaJhYVhVqrWTg==} cpu: [riscv64] os: [linux] - '@rollup/rollup-linux-s390x-gnu@4.34.8': - resolution: {integrity: sha512-DdePVk1NDEuc3fOe3dPPTb+rjMtuFw89gw6gVWxQFAuEqqSdDKnrwzZHrUYdac7A7dXl9Q2Vflxpme15gUWQFA==} + '@rollup/rollup-linux-riscv64-musl@4.40.2': + resolution: {integrity: sha512-5W6vNYkhgfh7URiXTO1E9a0cy4fSgfE4+Hl5agb/U1sa0kjOLMLC1wObxwKxecE17j0URxuTrYZZME4/VH57Hg==} + cpu: [riscv64] + os: [linux] + + '@rollup/rollup-linux-s390x-gnu@4.40.2': + resolution: {integrity: sha512-B7LKIz+0+p348JoAL4X/YxGx9zOx3sR+o6Hj15Y3aaApNfAshK8+mWZEf759DXfRLeL2vg5LYJBB7DdcleYCoQ==} cpu: [s390x] os: [linux] - '@rollup/rollup-linux-x64-gnu@4.34.8': - resolution: {integrity: sha512-8y7ED8gjxITUltTUEJLQdgpbPh1sUQ0kMTmufRF/Ns5tI9TNMNlhWtmPKKHCU0SilX+3MJkZ0zERYYGIVBYHIA==} + '@rollup/rollup-linux-x64-gnu@4.40.2': + resolution: {integrity: sha512-lG7Xa+BmBNwpjmVUbmyKxdQJ3Q6whHjMjzQplOs5Z+Gj7mxPtWakGHqzMqNER68G67kmCX9qX57aRsW5V0VOng==} cpu: [x64] os: [linux] - '@rollup/rollup-linux-x64-musl@4.34.8': - resolution: {integrity: sha512-SCXcP0ZpGFIe7Ge+McxY5zKxiEI5ra+GT3QRxL0pMMtxPfpyLAKleZODi1zdRHkz5/BhueUrYtYVgubqe9JBNQ==} + '@rollup/rollup-linux-x64-musl@4.40.2': + resolution: {integrity: sha512-tD46wKHd+KJvsmije4bUskNuvWKFcTOIM9tZ/RrmIvcXnbi0YK/cKS9FzFtAm7Oxi2EhV5N2OpfFB348vSQRXA==} cpu: [x64] os: [linux] - '@rollup/rollup-win32-arm64-msvc@4.34.8': - resolution: {integrity: sha512-YHYsgzZgFJzTRbth4h7Or0m5O74Yda+hLin0irAIobkLQFRQd1qWmnoVfwmKm9TXIZVAD0nZ+GEb2ICicLyCnQ==} + '@rollup/rollup-win32-arm64-msvc@4.40.2': + resolution: {integrity: sha512-Bjv/HG8RRWLNkXwQQemdsWw4Mg+IJ29LK+bJPW2SCzPKOUaMmPEppQlu/Fqk1d7+DX3V7JbFdbkh/NMmurT6Pg==} cpu: [arm64] os: [win32] - '@rollup/rollup-win32-ia32-msvc@4.34.8': - resolution: {integrity: sha512-r3NRQrXkHr4uWy5TOjTpTYojR9XmF0j/RYgKCef+Ag46FWUTltm5ziticv8LdNsDMehjJ543x/+TJAek/xBA2w==} + '@rollup/rollup-win32-ia32-msvc@4.40.2': + resolution: {integrity: sha512-dt1llVSGEsGKvzeIO76HToiYPNPYPkmjhMHhP00T9S4rDern8P2ZWvWAQUEJ+R1UdMWJ/42i/QqJ2WV765GZcA==} cpu: [ia32] os: [win32] - '@rollup/rollup-win32-x64-msvc@4.34.8': - resolution: {integrity: sha512-U0FaE5O1BCpZSeE6gBl3c5ObhePQSfk9vDRToMmTkbhCOgW4jqvtS5LGyQ76L1fH8sM0keRp4uDTsbjiUyjk0g==} + '@rollup/rollup-win32-x64-msvc@4.40.2': + resolution: {integrity: sha512-bwspbWB04XJpeElvsp+DCylKfF4trJDa2Y9Go8O6A7YLX2LIKGcNK/CYImJN6ZP4DcuOHB4Utl3iCbnR62DudA==} cpu: [x64] os: [win32] - '@schematics/angular@19.2.14': - resolution: {integrity: sha512-p/jvMwth67g7tOrziTx+yWRagIPtjx21TF2uU2Pv5bqTY+JjRTczJs3yHPmVpzJN+ptmw47K4/NeLJmVUGuBgA==} - engines: {node: ^18.19.1 || ^20.11.1 || >=22.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} + '@schematics/angular@20.0.4': + resolution: {integrity: sha512-cQw0ATQW/GTcYo5wmzMJrKlQsafNKeL3vduV6q0rILfp8P3OnJk7CtlWf9sfZnpEo0PNu28viMts3/p7ZUS8nQ==} + engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} '@sigstore/bundle@3.1.0': resolution: {integrity: sha512-Mm1E3/CmDDCz3nDhFKTuYdB47EdRFRQMOE/EAbiG1MJW77/w1b3P7Qx7JSrVJs8PfwOLOVcKQCHErIwCTyPbag==} @@ -2371,10 +2404,6 @@ packages: '@sinclair/typebox@0.27.8': resolution: {integrity: sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==} - '@sindresorhus/merge-streams@2.3.0': - resolution: {integrity: sha512-LtoMMhxAlorcGhmFYI+LhPgbPZCkgP6ra1YL604EeF6U98pLlQ3iWIGMdWSC+vWmPBWBNgmDBAhnAobLROJmwg==} - engines: {node: '>=18'} - '@sinonjs/commons@3.0.0': resolution: {integrity: sha512-jXBtWAF4vmdNmZgD5FoKsVLv3rPgDnLgPbU84LIJ3otV44vJlDRokVng5v8NFJdCf/da9legHcKaRuZs4L7faA==} @@ -2417,8 +2446,8 @@ packages: '@types/babel__traverse@7.20.7': resolution: {integrity: sha512-dkO5fhS7+/oos4ciWxyEyjWe48zmG6wbCheo/G2ZnHx4fs3EU6YC6UM8rk56gAjNJ9P3MTH2jo5jb92/K6wbng==} - '@types/body-parser@1.19.5': - resolution: {integrity: sha512-fB3Zu92ucau0iQ0JMCFQE7b/dv8Ot07NI3KaZIkIUNXq82k4eBAqUaneXfleGY9JWskeS9y+u0nXMyspcuQrCg==} + '@types/body-parser@1.19.6': + resolution: {integrity: sha512-HLFeCYgz89uk22N5Qg3dvGvsv46B8GLvKKo1zKG4NybA8U2DiEO3w9lqGg29t/tfLRJpJ6iQxnVw4OnB7MoM9g==} '@types/bonjour@3.5.13': resolution: {integrity: sha512-z9fJ5Im06zvUL548KvYNecEVlA7cVDkGUi6kZusb04mpyEFKCIZJvloCcmpmLaIahDpOQGHaHmG6imtPMmPXGQ==} @@ -2435,26 +2464,26 @@ packages: '@types/eslint@9.6.1': resolution: {integrity: sha512-FXx2pKgId/WyYo2jXw63kk7/+TY7u7AziEJxJAnSFzHlqTAS3Ync6SvgYAN/k4/PQpnnVuzoMuVnByKK2qp0ag==} - '@types/estree@1.0.6': - resolution: {integrity: sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==} - '@types/estree@1.0.7': resolution: {integrity: sha512-w28IoSUCJpidD/TGviZwwMJckNESJZXFu7NBZ5YJ4mEUnNraUn9Pm8HSZm/jDF1pDWYKspWE7oVphigUPRakIQ==} + '@types/estree@1.0.8': + resolution: {integrity: sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==} + '@types/express-serve-static-core@4.19.6': resolution: {integrity: sha512-N4LZ2xG7DatVqhCZzOGb1Yi5lMbXSZcmdLDe9EzSndPV2HpWYWzRbaerl2n27irrm94EPpprqa8KpskPT085+A==} '@types/express-serve-static-core@5.0.6': resolution: {integrity: sha512-3xhRnjJPkULekpSzgtoNYYcTWgEZkp4myc+Saevii5JPnHNvHMRlBSHDbs7Bh1iPPoVTERHEZXyhyLbMEsExsA==} - '@types/express@4.17.22': - resolution: {integrity: sha512-eZUmSnhRX9YRSkplpz0N+k6NljUUn5l3EWZIKZvYzhvMphEuNiyyy1viH/ejgt66JWgALwC/gtSUAeQKtSwW/w==} + '@types/express@4.17.23': + resolution: {integrity: sha512-Crp6WY9aTYP3qPi2wGDo9iUe/rceX01UMhnF1jmwDcKCFM6cx7YhGP/Mpr3y9AASpfHixIG0E6azCcL5OcDHsQ==} '@types/graceful-fs@4.1.9': resolution: {integrity: sha512-olP3sd1qOEe5dXTSaFvQG+02VdRXcdytWLAZsAq1PecU8uqQAhkrnbli7DagjtXKW/Bl7YJbUsa8MPcuc8LHEQ==} - '@types/http-errors@2.0.4': - resolution: {integrity: sha512-D0CFMMtydbJAegzOyHjtiKPLlvnm3iTZyZRSZoLq2mRhDdmLfIWOCYPfQJ4cu2erKghU++QvjcUjp/5h7hESpA==} + '@types/http-errors@2.0.5': + resolution: {integrity: sha512-r8Tayk8HJnX0FztbZN7oVqGccWgw98T/0neJphO91KkmOzug1KkofZURD4UaD5uH8AqcFLfdPErnBod0u71/qg==} '@types/http-proxy@1.17.16': resolution: {integrity: sha512-sdWoUajOB1cd0A8cRRQ1cfyWNbmFKLAqBB89Y8x5iYyG/mkJHc0YUH8pdWBy2omi9qtCpiIgGjuwO0dQST2l5w==} @@ -2486,6 +2515,9 @@ packages: '@types/node@22.15.29': resolution: {integrity: sha512-LNdjOkUDlU1RZb8e1kOIUpN1qQUlzGkEtbVNo53vbrwDg5om6oduhm4SiUaPW5ASTXhAiP0jInWG8Qx9fVlOeQ==} + '@types/node@22.15.33': + resolution: {integrity: sha512-wzoocdnnpSxZ+6CjW4ADCK1jVmd1S/J3ArNWfn8FDDQtRm8dkDg7TA+mvek2wNrfCgwuZxqEOiB9B1XCJ6+dbw==} + '@types/qs@6.14.0': resolution: {integrity: sha512-eOunJqu0K1923aExK6y8p6fsihYEn/BYuQ4g0CxAAgFc4b/ZLN4CrsRZ55srTdqoiLzU2B2evC+apEIxprEzkQ==} @@ -2495,14 +2527,14 @@ packages: '@types/retry@0.12.2': resolution: {integrity: sha512-XISRgDJ2Tc5q4TRqvgJtzsRkFYNJzZrhTdtMoGVBttwzzQJkPnS3WWTFc7kuDRoPtPakl+T+OfdEUjYJj7Jbow==} - '@types/send@0.17.4': - resolution: {integrity: sha512-x2EM6TJOybec7c52BX0ZspPodMsQUd5L6PRwOunVyVUhXiBSKf3AezDL8Dgvgt5o0UfKNfuA0eMLr2wLT4AiBA==} + '@types/send@0.17.5': + resolution: {integrity: sha512-z6F2D3cOStZvuk2SaP6YrwkNO65iTZcwA2ZkSABegdkAh/lf+Aa/YQndZVfmEXT5vgAp6zv06VQ3ejSVjAny4w==} '@types/serve-index@1.9.4': resolution: {integrity: sha512-qLpGZ/c2fhSs5gnYsQxtDEq3Oy8SXPClIXkW5ghvAvsNuVSA8k+gCONcUCS/UjLEYvYps+e8uBtfgXgvhwfNug==} - '@types/serve-static@1.15.7': - resolution: {integrity: sha512-W8Ym+h8nhuRwaKPaDw34QUkwsGi6Rc4yYqvKFo5rm2FUEhCFbzVWrxXUxuKK8TASjWsysJY0nsmNCGhCOIsrOw==} + '@types/serve-static@1.15.8': + resolution: {integrity: sha512-roei0UY3LhpOJvjbIP6ZZFngyLKl5dskOtDhxY5THRSpO+ZI+nzJ+m5yUMzGrp89YRa7lvknKkMYjqQFGwA7Sg==} '@types/sockjs@0.3.36': resolution: {integrity: sha512-MK9V6NzAS1+Ud7JV9lJLFqW85VbC9dq3LmwZCuBe4wBDgKC0Kj/jd8Xl+nSviU+Qc3+m7umHHyHg//2KSa0a0Q==} @@ -2522,68 +2554,70 @@ packages: '@types/yargs@17.0.32': resolution: {integrity: sha512-xQ67Yc/laOG5uMfX/093MRlGGCIBzZMarVa+gfNKJxWAIgykYpVGkBdbqEzGDDfCrVUj6Hiff4mTZ5BA6TmAog==} - '@typescript-eslint/eslint-plugin@8.33.0': - resolution: {integrity: sha512-CACyQuqSHt7ma3Ns601xykeBK/rDeZa3w6IS6UtMQbixO5DWy+8TilKkviGDH6jtWCo8FGRKEK5cLLkPvEammQ==} + '@typescript-eslint/eslint-plugin@8.35.0': + resolution: {integrity: sha512-ijItUYaiWuce0N1SoSMrEd0b6b6lYkYt99pqCPfybd+HKVXtEvYhICfLdwp42MhiI5mp0oq7PKEL+g1cNiz/Eg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - '@typescript-eslint/parser': ^8.33.0 + '@typescript-eslint/parser': ^8.35.0 eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <5.9.0' - '@typescript-eslint/parser@8.33.0': - resolution: {integrity: sha512-JaehZvf6m0yqYp34+RVnihBAChkqeH+tqqhS0GuX1qgPpwLvmTPheKEs6OeCK6hVJgXZHJ2vbjnC9j119auStQ==} + '@typescript-eslint/parser@8.35.0': + resolution: {integrity: sha512-6sMvZePQrnZH2/cJkwRpkT7DxoAWh+g6+GFRK6bV3YQo7ogi3SX5rgF6099r5Q53Ma5qeT7LGmOmuIutF4t3lA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <5.9.0' - '@typescript-eslint/project-service@8.33.0': - resolution: {integrity: sha512-d1hz0u9l6N+u/gcrk6s6gYdl7/+pp8yHheRTqP6X5hVDKALEaTn8WfGiit7G511yueBEL3OpOEpD+3/MBdoN+A==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - - '@typescript-eslint/scope-manager@8.33.0': - resolution: {integrity: sha512-LMi/oqrzpqxyO72ltP+dBSP6V0xiUb4saY7WLtxSfiNEBI8m321LLVFU9/QDJxjDQG9/tjSqKz/E3380TEqSTw==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - - '@typescript-eslint/tsconfig-utils@8.33.0': - resolution: {integrity: sha512-sTkETlbqhEoiFmGr1gsdq5HyVbSOF0145SYDJ/EQmXHtKViCaGvnyLqWFFHtEXoS0J1yU8Wyou2UGmgW88fEug==} + '@typescript-eslint/project-service@8.35.0': + resolution: {integrity: sha512-41xatqRwWZuhUMF/aZm2fcUsOFKNcG28xqRSS6ZVr9BVJtGExosLAm5A1OxTjRMagx8nJqva+P5zNIGt8RIgbQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <5.9.0' - '@typescript-eslint/type-utils@8.33.0': - resolution: {integrity: sha512-lScnHNCBqL1QayuSrWeqAL5GmqNdVUQAAMTaCwdYEdWfIrSrOGzyLGRCHXcCixa5NK6i5l0AfSO2oBSjCjf4XQ==} + '@typescript-eslint/scope-manager@8.35.0': + resolution: {integrity: sha512-+AgL5+mcoLxl1vGjwNfiWq5fLDZM1TmTPYs2UkyHfFhgERxBbqHlNjRzhThJqz+ktBqTChRYY6zwbMwy0591AA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@typescript-eslint/tsconfig-utils@8.35.0': + resolution: {integrity: sha512-04k/7247kZzFraweuEirmvUj+W3bJLI9fX6fbo1Qm2YykuBvEhRTPl8tcxlYO8kZZW+HIXfkZNoasVb8EV4jpA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + typescript: '>=4.8.4 <5.9.0' + + '@typescript-eslint/type-utils@8.35.0': + resolution: {integrity: sha512-ceNNttjfmSEoM9PW87bWLDEIaLAyR+E6BoYJQ5PfaDau37UGca9Nyq3lBk8Bw2ad0AKvYabz6wxc7DMTO2jnNA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <5.9.0' - '@typescript-eslint/types@8.33.0': - resolution: {integrity: sha512-DKuXOKpM5IDT1FA2g9x9x1Ug81YuKrzf4mYX8FAVSNu5Wo/LELHWQyM1pQaDkI42bX15PWl0vNPt1uGiIFUOpg==} + '@typescript-eslint/types@8.35.0': + resolution: {integrity: sha512-0mYH3emanku0vHw2aRLNGqe7EXh9WHEhi7kZzscrMDf6IIRUQ5Jk4wp1QrledE/36KtdZrVfKnE32eZCf/vaVQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/typescript-estree@8.33.0': - resolution: {integrity: sha512-vegY4FQoB6jL97Tu/lWRsAiUUp8qJTqzAmENH2k59SJhw0Th1oszb9Idq/FyyONLuNqT1OADJPXfyUNOR8SzAQ==} + '@typescript-eslint/typescript-estree@8.35.0': + resolution: {integrity: sha512-F+BhnaBemgu1Qf8oHrxyw14wq6vbL8xwWKKMwTMwYIRmFFY/1n/9T/jpbobZL8vp7QyEUcC6xGrnAO4ua8Kp7w==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <5.9.0' - '@typescript-eslint/utils@8.33.0': - resolution: {integrity: sha512-lPFuQaLA9aSNa7D5u2EpRiqdAUhzShwGg/nhpBlc4GR6kcTABttCuyjFs8BcEZ8VWrjCBof/bePhP3Q3fS+Yrw==} + '@typescript-eslint/utils@8.35.0': + resolution: {integrity: sha512-nqoMu7WWM7ki5tPgLVsmPM8CkqtoPUG6xXGeefM5t4x3XumOEKMoUZPdi+7F+/EotukN4R9OWdmDxN80fqoZeg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <5.9.0' - '@typescript-eslint/visitor-keys@8.33.0': - resolution: {integrity: sha512-7RW7CMYoskiz5OOGAWjJFxgb7c5UNjTG292gYhWeOAcFmYCtVCSqjqSBj5zMhxbXo2JOW95YYrUWJfU0zrpaGQ==} + '@typescript-eslint/visitor-keys@8.35.0': + resolution: {integrity: sha512-zTh2+1Y8ZpmeQaQVIc/ZZxsx8UzgKJyNg1PTvjzC7WMhPSVS8bfDX34k1SrwOf016qd5RU3az2UxUNue3IfQ5g==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@vitejs/plugin-basic-ssl@1.2.0': - resolution: {integrity: sha512-mkQnxTkcldAzIsomk1UuLfAu9n+kpQ3JbHcpCp7d2Oo6ITtji8pHS3QToOWjhPFvNQSnhlkAjmGbhv2QvwO/7Q==} - engines: {node: '>=14.21.3'} + '@vitejs/plugin-basic-ssl@2.0.0': + resolution: {integrity: sha512-gc9Tjg8bUxBVSTzeWT3Njc0Cl3PakHFKdNfABnZWiUgbxqmHDEn7uECv3fHVylxoYgNzAcmU7ZrILz+BwSo3sA==} + engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} peerDependencies: - vite: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 + vite: ^6.0.0 '@webassemblyjs/ast@1.14.1': resolution: {integrity: sha512-nuBEDgQfm1ccRp/8bCQrx1frohyufl4JlbMMZ4P1wpeOfDhF6FQkxZJ1b/e+PLwr6X1Nhw6OLme5usuBWYBvuQ==} @@ -2673,6 +2707,11 @@ packages: engines: {node: '>=0.4.0'} hasBin: true + acorn@8.15.0: + resolution: {integrity: sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==} + engines: {node: '>=0.4.0'} + hasBin: true + adjust-sourcemap-loader@4.0.0: resolution: {integrity: sha512-OXwN5b9pCUXNQHJpwwD2qP40byEmSgzj8B4ydSN0uMNYWiFmJ6x6KwUllMmfk8Rwu/HJDFR7U8ubsWBoN0Xp0A==} engines: {node: '>=8.9'} @@ -2775,8 +2814,8 @@ packages: asynckit@0.4.0: resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} - autoprefixer@10.4.20: - resolution: {integrity: sha512-XY25y5xSv/wEoqzDyXXME4AFfkZI0P23z6Fs3YgymDnKJkCGOnkL0iTxCa85UTqaSgfcqyf3UA6+c7wUvx/16g==} + autoprefixer@10.4.21: + resolution: {integrity: sha512-O+A6LWV5LDHSJD3LjHYoNi4VLsj/Whi7k6zG12xTYaU4cQ8oxQGckXNX8cRHK5yOZ/ppVHe0ZBXGzSV9jXdVbQ==} engines: {node: ^10 || ^12 || >=14} hasBin: true peerDependencies: @@ -2792,12 +2831,12 @@ packages: peerDependencies: '@babel/core': ^7.8.0 - babel-loader@9.2.1: - resolution: {integrity: sha512-fqe8naHt46e0yIdkjUZYqddSXfej3AHajX+CSO5X7oy0EmPc6o5Xh+RClNoHjnieWz9AW4kZxW9yyFMhVB1QLA==} - engines: {node: '>= 14.15.0'} + babel-loader@10.0.0: + resolution: {integrity: sha512-z8jt+EdS61AMw22nSfoNJAZ0vrtmhPRVi6ghL3rCeRZI8cdNYFiV5xeV3HbE7rlZZNmGH8BVccwWt8/ED0QOHA==} + engines: {node: ^18.20.0 || ^20.10.0 || >=22.0.0} peerDependencies: '@babel/core': ^7.12.0 - webpack: '>=5' + webpack: '>=5.61.0' babel-plugin-istanbul@6.1.1: resolution: {integrity: sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==} @@ -2842,8 +2881,8 @@ packages: batch@0.6.1: resolution: {integrity: sha512-x+VAiMRL6UPkx+kudNvxTl6hB2XNNCG2r+7wixVfIYwu/2HKRXimwQyaumLjMveWvT2Hkd/cAJw+QBMfJ/EKVw==} - beasties@0.3.2: - resolution: {integrity: sha512-p4AF8uYzm9Fwu8m/hSVTCPXrRBPmB34hQpHsec2KOaR9CZmgoU8IOv4Cvwq4hgz2p4hLMNbsdNl5XeA6XbAQwA==} + beasties@0.3.4: + resolution: {integrity: sha512-NmzN1zN1cvGccXFyZ73335+ASXwBlVWcUPssiUDIlFdfyatHPRRufjCd5w8oPaQPvVnf9ELklaCGb1gi9FBwIw==} engines: {node: '>=14.0.0'} before-after-hook@2.2.3: @@ -2937,6 +2976,9 @@ packages: caniuse-lite@1.0.30001720: resolution: {integrity: sha512-Ec/2yV2nNPwb4DnTANEV99ZWwm3ZWfdlfkQbWSDDt+PsXEVYwlhPH8tdMaPunYTKKmz7AnHi2oNEi1GcmKCD8g==} + caniuse-lite@1.0.30001726: + resolution: {integrity: sha512-VQAUIUzBiZ/UnlM28fSp2CRF3ivUn1BWEvxMcVTNwpw91Py1pGbPIyIKtd+tzct9C3ouceCVdGAXxZOpZAsgdw==} + canvas@3.0.0: resolution: {integrity: sha512-NtcIBY88FjymQy+g2g5qnuP5IslrbWCQ3A6rSr1PeuYxVRapRZ3BZCrDyAakvI6CuDYidgZaf55ygulFVwROdg==} engines: {node: ^18.12.0 || >= 20.9.0} @@ -2945,6 +2987,10 @@ packages: resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} engines: {node: '>=10'} + chalk@5.4.1: + resolution: {integrity: sha512-zgVZuo2WcZgfUEmsn6eO3kINexW8RAE4maiQ8QNs8CtpPCSyMiYsULR3HQYkm3w8FIA3SberyMJMSldGsW+U3w==} + engines: {node: ^12.17.0 || ^14.13 || >=16.0.0} + char-regex@1.0.2: resolution: {integrity: sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==} engines: {node: '>=10'} @@ -2982,10 +3028,6 @@ packages: cjs-module-lexer@1.2.3: resolution: {integrity: sha512-0TNiGstbQmCFwt4akjjBg5pLRTSyj/PkWQ1ZoO2zntmg9yLqSRxwEa4iCfQLGjqhiqBfOJa7W/E8wfGrTDmlZQ==} - cli-cursor@3.1.0: - resolution: {integrity: sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==} - engines: {node: '>=8'} - cli-cursor@5.0.0: resolution: {integrity: sha512-aCj4O5wKyszjMmDT4tZj93kxyydN/K5zPWSCe6/0AV/AA1pqe5ZBIw0a2ZfPQV7lL5/yb5HsUreJ6UFAF1tEQw==} engines: {node: '>=18'} @@ -3006,14 +3048,14 @@ packages: resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==} engines: {node: '>=12'} + cliui@9.0.1: + resolution: {integrity: sha512-k7ndgKhwoQveBL+/1tqGJYNz097I7WOvwbmmU2AR5+magtbjPWQTS1C5vzGkBC8Ym8UWRzfKUzUUqFLypY4Q+w==} + engines: {node: '>=20'} + clone-deep@4.0.1: resolution: {integrity: sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==} engines: {node: '>=6'} - clone@1.0.4: - resolution: {integrity: sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==} - engines: {node: '>=0.8'} - co@4.6.0: resolution: {integrity: sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==} engines: {iojs: '>= 1.0.0', node: '>= 0.12.0'} @@ -3038,9 +3080,6 @@ packages: commander@2.20.3: resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==} - common-path-prefix@3.0.0: - resolution: {integrity: sha512-QE33hToZseCH3jS0qN96O/bSh3kaw/h+Tq7ngyY9eWDUnTlTNUyqfqvCXioLe5Na5jFsL78ra/wuBU4iuEgd4w==} - compressible@2.0.18: resolution: {integrity: sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==} engines: {node: '>= 0.6'} @@ -3080,14 +3119,14 @@ packages: copy-anything@2.0.6: resolution: {integrity: sha512-1j20GZTsvKNkc4BY3NpMOM8tt///wY3FpIzozTOFO2ffuZcV61nojHXVKIy3WM+7ADCy5FVhdZYHYDdgTU0yJw==} - copy-webpack-plugin@12.0.2: - resolution: {integrity: sha512-SNwdBeHyII+rWvee/bTnAYyO8vfVdcSTud4EIb6jcZ8inLeWucJE0DnxXQBjlQ5zlteuuvooGQy3LIyGxhvlOA==} + copy-webpack-plugin@13.0.0: + resolution: {integrity: sha512-FgR/h5a6hzJqATDGd9YG41SeDViH+0bkHn6WNXCi5zKAZkeESeSxLySSsFLHqLEVCh0E+rITmCf0dusXWYukeQ==} engines: {node: '>= 18.12.0'} peerDependencies: webpack: ^5.1.0 - core-js-compat@3.42.0: - resolution: {integrity: sha512-bQasjMfyDGyaeWKBIu33lHh9qlSR0MFE/Nmc6nMjf/iU9b3rSMdAYz1Baxrv4lPdGUsTqZudHA4jIGSJy0SWZQ==} + core-js-compat@3.43.0: + resolution: {integrity: sha512-2GML2ZsCc5LR7hZYz4AXmjQw8zuy2T//2QntwdnpuYI7jteT6GVYJL7F6C2C57R7gSYrcqVW3lAALefdbhBLDA==} core-util-is@1.0.3: resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==} @@ -3206,9 +3245,6 @@ packages: resolution: {integrity: sha512-WY/3TUME0x3KPYdRRxEJJvXRHV4PyPoUsxtZa78lwItwRQRHhd2U9xOscaT/YTf8uCXIAjeJOFBVEh/7FtD8Xg==} engines: {node: '>=18'} - defaults@1.0.4: - resolution: {integrity: sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==} - define-lazy-prop@3.0.0: resolution: {integrity: sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg==} engines: {node: '>=12'} @@ -3331,6 +3367,10 @@ packages: resolution: {integrity: sha512-ZSW3ma5GkcQBIpwZTSRAI8N71Uuwgs93IezB7mf7R60tC8ZbJideoDNKjHn2O9KIlx6rkGTTEk1xUCK2E1Y2Yg==} engines: {node: '>=10.13.0'} + enhanced-resolve@5.18.2: + resolution: {integrity: sha512-6Jw4sE1maoRJo3q8MsSIn2onJFbLTOjY9hlx4DZXmOKvLRd1Ok2kXmAGXaafL2+ijsJZ1ClYbl/pmqr9+k4iUQ==} + engines: {node: '>=10.13.0'} + entities@4.5.0: resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==} engines: {node: '>=0.12'} @@ -3377,13 +3417,13 @@ packages: engines: {node: '>=18'} hasBin: true - esbuild-wasm@0.25.3: - resolution: {integrity: sha512-60mFpAU4iQMVIP9tSd5EEbxZUDsqSKAjAJ7r1OK073lG/ctnVidThvbcU+M2B55jMFntCFJlqksubXMpYIcbfg==} + esbuild-wasm@0.25.4: + resolution: {integrity: sha512-2HlCS6rNvKWaSKhWaG/YIyRsTsL3gUrMP2ToZMBIjw9LM7vVcIs+rz8kE2vExvTJgvM8OKPqNpcHawY/BQc/qQ==} engines: {node: '>=18'} hasBin: true - esbuild-wasm@0.25.4: - resolution: {integrity: sha512-2HlCS6rNvKWaSKhWaG/YIyRsTsL3gUrMP2ToZMBIjw9LM7vVcIs+rz8kE2vExvTJgvM8OKPqNpcHawY/BQc/qQ==} + esbuild-wasm@0.25.5: + resolution: {integrity: sha512-V/rbdOws2gDcnCAECfPrajhuafI0WY4WumUgc8ZHwOLnvmM0doLQ+dqvVFI2qkVxQsvo6880aC9IjpyDqcwwTw==} engines: {node: '>=18'} hasBin: true @@ -3392,13 +3432,13 @@ packages: engines: {node: '>=18'} hasBin: true - esbuild@0.25.3: - resolution: {integrity: sha512-qKA6Pvai73+M2FtftpNKRxJ78GIjmFXFxd/1DVBqGo/qNhLSfv+G12n9pNoWdytJC8U00TrViOwpjT0zgqQS8Q==} + esbuild@0.25.4: + resolution: {integrity: sha512-8pgjLUcUjcgDg+2Q4NYXnPbo/vncAY4UmyaCm0jZevERqCHZIaWwdJHkf8XQtu4AxSKCdvrUbT0XUr1IdZzI8Q==} engines: {node: '>=18'} hasBin: true - esbuild@0.25.4: - resolution: {integrity: sha512-8pgjLUcUjcgDg+2Q4NYXnPbo/vncAY4UmyaCm0jZevERqCHZIaWwdJHkf8XQtu4AxSKCdvrUbT0XUr1IdZzI8Q==} + esbuild@0.25.5: + resolution: {integrity: sha512-P8OtKZRv/5J5hhz0cUAdu/cLuPIKXpQl1R9pZtvmHWQvrAUVd0UNIPT4IB4W3rNOqVO0rlqHmCIbSwxh/c9yUQ==} engines: {node: '>=18'} hasBin: true @@ -3438,6 +3478,10 @@ packages: resolution: {integrity: sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + eslint-visitor-keys@4.2.1: + resolution: {integrity: sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + eslint@9.28.0: resolution: {integrity: sha512-ocgh41VhRlf9+fVpe7QKzwLj9c92fDiqOj8Y3Sd4/ZmVA4Btx4PlUYPq4pp9JDyupkf1upbEXecxL2mwNV7jPQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -3570,10 +3614,6 @@ packages: resolution: {integrity: sha512-6BN9trH7bp3qvnrRyzsBz+g3lZxTNZTbVO2EV1CS0WIcDbawYVdYvGflME/9QP0h0pYlCDBCTjYa9nZzMDpyxQ==} engines: {node: '>= 0.8'} - find-cache-dir@4.0.0: - resolution: {integrity: sha512-9ZonPT4ZAK4a+1pUPVPZJapbi7O5qbbJPdYw/NOQWZZbVLdDTYM3A4R9z/DpAM08IDaFGsvPgiGZ82WEwUDWjg==} - engines: {node: '>=14.16'} - find-up@4.1.0: resolution: {integrity: sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==} engines: {node: '>=8'} @@ -3582,10 +3622,6 @@ packages: resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} engines: {node: '>=10'} - find-up@6.3.0: - resolution: {integrity: sha512-v2ZsoEuVHYy8ZIlYqwPe/39Cy+cFDzp4dXPaxNvkEuouymu+2Jbz0PxpKarJHYJTmv2HWT3O382qY8l4jMWthw==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - flat-cache@4.0.1: resolution: {integrity: sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==} engines: {node: '>=16'} @@ -3710,10 +3746,6 @@ packages: resolution: {integrity: sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==} engines: {node: '>=18'} - globby@14.1.0: - resolution: {integrity: sha512-0Ia46fDOaT7k4og1PDW4YbodWWr3scS2vAr2lTbsplOt2WkKp0vQbkI9wKis/T5LV/dqPjO3bpS/z6GTJB82LA==} - engines: {node: '>=18'} - gopd@1.2.0: resolution: {integrity: sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==} engines: {node: '>= 0.4'} @@ -3938,9 +3970,9 @@ packages: engines: {node: '>=14.16'} hasBin: true - is-interactive@1.0.0: - resolution: {integrity: sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==} - engines: {node: '>=8'} + is-interactive@2.0.0: + resolution: {integrity: sha512-qP1vozQRI+BMOPcjFzrjXuQvdak2pHNUMZoeG2eRbiSqyvbEf/wQtEOTOX1guk6E3t36RkaqiSt8A/6YElNxLQ==} + engines: {node: '>=12'} is-network-error@1.1.0: resolution: {integrity: sha512-tUdRRAnhT+OtCZR/LxZelH/C7QtjtFrTu5tXCA8pl55eTUElUHT+GPYV8MBMBvea/j+NxQqVt3LbWMRir7Gx9g==} @@ -3969,9 +4001,13 @@ packages: resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==} engines: {node: '>=8'} - is-unicode-supported@0.1.0: - resolution: {integrity: sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==} - engines: {node: '>=10'} + is-unicode-supported@1.3.0: + resolution: {integrity: sha512-43r2mRvz+8JRIKnWJ+3j8JtjRKZ6GmjzfaE/qiBJnikNnYv/6bagRJ1kUhNk8R5EX/GkobD+r+sfxCPJsiKBLQ==} + engines: {node: '>=12'} + + is-unicode-supported@2.1.0: + resolution: {integrity: sha512-mE00Gnza5EEB3Ds0HfMyllZzbBrmLOX3vfWoj9A9PEnTfratQ/BcaJOuMhnkhjXvb2+FkY3VuHqtAGpTPmglFQ==} + engines: {node: '>=18'} is-what@3.14.1: resolution: {integrity: sha512-sNxgpk9793nzSs7bA6JQJGeIuRBQhAaNGG77kzYQgMkrID+lS6SlK07K5LaptscDlSaIgH+GPFzf+d75FVxozA==} @@ -4118,8 +4154,8 @@ packages: jest-resolve: optional: true - jest-preset-angular@14.5.4: - resolution: {integrity: sha512-vbil9qTrZljzVJNsDIxEhWVb4r6BQumXEgIHCAVkHJjpF1fYkIB4bczPAe58lBZH2gKeRHBSj8/IoGpGBI1qiQ==} + jest-preset-angular@14.5.5: + resolution: {integrity: sha512-PUykbixXEYSltKQE4450YuBiO8SMo2SwdGRHAdArRuV06Igq8gaLRVt9j8suj/4qtm2xRqoKnh5j52R0PfQxFw==} engines: {node: ^14.15.0 || >=16.10.0} peerDependencies: '@angular/compiler-cli': '>=15.0.0 <20.0.0' @@ -4132,13 +4168,13 @@ packages: jsdom: optional: true - jest-preset-angular@14.5.5: - resolution: {integrity: sha512-PUykbixXEYSltKQE4450YuBiO8SMo2SwdGRHAdArRuV06Igq8gaLRVt9j8suj/4qtm2xRqoKnh5j52R0PfQxFw==} + jest-preset-angular@14.6.0: + resolution: {integrity: sha512-LGSKLCsUhtrs2dw6f7ega/HOS8/Ni/1gV+oXmxPHmJDLHFpM6cI78Monmz8Z1P87a/A4OwnKilxgPRr+6Pzmgg==} engines: {node: ^14.15.0 || >=16.10.0} peerDependencies: - '@angular/compiler-cli': '>=15.0.0 <20.0.0' - '@angular/core': '>=15.0.0 <20.0.0' - '@angular/platform-browser-dynamic': '>=15.0.0 <20.0.0' + '@angular/compiler-cli': '>=15.0.0 <21.0.0' + '@angular/core': '>=15.0.0 <21.0.0' + '@angular/platform-browser-dynamic': '>=15.0.0 <21.0.0' jest: ^29.0.0 jsdom: '>=20.0.0' typescript: '>=4.8' @@ -4288,8 +4324,8 @@ packages: launch-editor@2.10.0: resolution: {integrity: sha512-D7dBRJo/qcGX9xlvt/6wUYzQxjh5G1RvZPgPv8vi4KRU99DVQL/oW7tnVOCCTm2HGeo3C5HvGE5Yrh6UBoZ0vA==} - less-loader@12.2.0: - resolution: {integrity: sha512-MYUxjSQSBUQmowc0l5nPieOYwMzGPUaTzB6inNW/bdPEG9zOL3eAAD1Qw5ZxSPk7we5dMojHwNODYMV1hq4EVg==} + less-loader@12.3.0: + resolution: {integrity: sha512-0M6+uYulvYIWs52y0LqN4+QM9TqWAohYSNTo4htE8Z7Cn3G/qQMEmktfHmyJT23k+20kU9zHH2wrfFXkxNLtVw==} engines: {node: '>= 18.12.0'} peerDependencies: '@rspack/core': 0.x || 1.x @@ -4301,9 +4337,9 @@ packages: webpack: optional: true - less@4.2.2: - resolution: {integrity: sha512-tkuLHQlvWUTeQ3doAqnHbNn8T6WX1KA8yvbKG9x4VtKtIjHsVKQZCH11zRgAfbDAXC2UNIg/K9BYAAcEzUIrNg==} - engines: {node: '>=6'} + less@4.3.0: + resolution: {integrity: sha512-X9RyH9fvemArzfdP8Pi3irr7lor2Ok4rOttDXBhlwDg+wKQsXOXgHWduAJE1EsF7JJx0w0bcO6BC6tCKKYnXKA==} + engines: {node: '>=14'} hasBin: true leven@3.1.0: @@ -4325,12 +4361,12 @@ packages: lines-and-columns@1.2.4: resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} - listr2@8.2.5: - resolution: {integrity: sha512-iyAZCeyD+c1gPyE9qpFu8af0Y+MRtmKOncdGoA2S5EY8iFq99dmmvkNnHiWo+pj0s7yH7l3KPIgee77tKpXPWQ==} + listr2@8.3.3: + resolution: {integrity: sha512-LWzX2KsqcB1wqQ4AHgYb4RsDXauQiqhjLk+6hjbaeHG4zpjjVAB6wC/gz6X0l+Du1cN3pUB5ZlrvTbhGSNnUQQ==} engines: {node: '>=18.0.0'} - lmdb@3.2.6: - resolution: {integrity: sha512-SuHqzPl7mYStna8WRotY8XX/EUZBjjv3QyKIByeCLFfC9uXT/OIHByEcA07PzbMfQAM0KYJtLgtpMRlIe5dErQ==} + lmdb@3.3.0: + resolution: {integrity: sha512-MgJocUI6QEiSXQBFWLeyo1R7eQj8Rke5dlPxX0KFwli8/bsCxpM/KbXO5y0qmV/5llQ3wpneDWcTYxa+4vn8iQ==} hasBin: true loader-runner@4.3.0: @@ -4353,10 +4389,6 @@ packages: resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} engines: {node: '>=10'} - locate-path@7.2.0: - resolution: {integrity: sha512-gvVijfZvn7R+2qyPX8mAuKcFGDf6Nc61GdvGafQsHL0sBIxfKzA+usWn4GFC/bk+QdwPUD4kWFJLhElipq+0VA==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - lodash-es@4.17.21: resolution: {integrity: sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==} @@ -4372,9 +4404,9 @@ packages: lodash@4.17.21: resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} - log-symbols@4.1.0: - resolution: {integrity: sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==} - engines: {node: '>=10'} + log-symbols@6.0.0: + resolution: {integrity: sha512-i24m8rpwhmPIS4zscNzK6MSEhk0DUWa/8iYQWxhffV8jkI4Phvs3F+quL5xvS0gdQR0FyTCMMH33Y78dDTzzIw==} + engines: {node: '>=18'} log-update@6.1.0: resolution: {integrity: sha512-9ie8ItPR6tjY5uYJh8K/Zrv/RMZ5VOlOWvtZdEHYSTFKZfIBPQa9tOAEeAWhd+AnIneLJ22w5fjOYtoutpWq5w==} @@ -4644,20 +4676,20 @@ packages: '@angular/common': ^19.0.0 '@angular/core': ^19.0.0 - ngx-ui-tour-core@14.0.0: - resolution: {integrity: sha512-6pzzEwxn/gCS3puEXDqgINBRbhvhzHYjmiA9DTCNEx1dPfYwjZVmPqNvNeZIVHucVnVZViAAKvA6MTc3Gm7aOw==} + ngx-ui-tour-core@15.0.0: + resolution: {integrity: sha512-ECFU+aELgXpltveC7rtoQn72bzhmQB/bpqPUcfr2G+WjT2nUPMsbRRDbK5RfngslM0cNl5JJ1N0Z/KR39FJ7oA==} peerDependencies: - '@angular/common': ^19.0.0 - '@angular/core': ^19.0.0 - '@angular/router': ^19.0.0 + '@angular/common': ^20.0.0 + '@angular/core': ^20.0.0 + '@angular/router': ^20.0.0 rxjs: ^7.4.0 - ngx-ui-tour-ng-bootstrap@16.0.0: - resolution: {integrity: sha512-BUQI3TM6y9Ku2uBlW1mhljBYh+Pi0yoh9WNjudrRBjUYFW/SgMm0qMbblcKqSYeY+Et4MJplL5cUKxCmdwPU7A==} + ngx-ui-tour-ng-bootstrap@17.0.0: + resolution: {integrity: sha512-KDdvataZA0F9RLWE3hgYYB9yZpia59cqx5UnaSUuCq2GX19jxhUHCFIt83s2NTvp+BRbmxdFZuiusrITPQPyHg==} peerDependencies: - '@angular/common': ^19.0.0 - '@angular/core': ^19.0.0 - '@ng-bootstrap/ng-bootstrap': ^18.0.0 + '@angular/common': ^20.0.0 + '@angular/core': ^20.0.0 + '@ng-bootstrap/ng-bootstrap': ^19.0.0 node-abi@3.71.0: resolution: {integrity: sha512-SZ40vRiy/+wRTf21hxkkEjPJZpARzUMVcJoQse2EF8qkUWbbO2z7vd5oA/H6bVH6SZQ5STGcu0KRDS7biNRfxw==} @@ -4717,9 +4749,9 @@ packages: resolution: {integrity: sha512-f1NpFjNI9O4VbKMOlA5QoBq/vSQPORHcTZ2feJpFkTHJ9eQkdlmZEKSjcAhxTGInC7RlEyScT9ui67NaOsjFWA==} engines: {node: ^18.17.0 || >=20.5.0} - npm-packlist@9.0.0: - resolution: {integrity: sha512-8qSayfmHJQTx3nJWYbbUmflpyarbLMBc6LCAjYsiGtXxDB68HaZpb8re6zeaLGxZzDuMdhsg70jryJe+RrItVQ==} - engines: {node: ^18.17.0 || >=20.5.0} + npm-packlist@10.0.0: + resolution: {integrity: sha512-rht9U6nS8WOBDc53eipZNPo5qkAV4X2rhKE2Oj1DYUQ3DieXfj0mKkVmjnf3iuNdtMd8WfLdi2L6ASkD/8a+Kg==} + engines: {node: ^20.17.0 || >=22.9.0} npm-pick-manifest@10.0.0: resolution: {integrity: sha512-r4fFa4FqYY8xaM7fHecQ9Z2nE9hgNfJR+EmoKv0+chvzWkBcORX3r0FpTByP+CbOVJDladMXnPQGVN8PBLGuTQ==} @@ -4765,17 +4797,17 @@ packages: resolution: {integrity: sha512-VXJjc87FScF88uafS3JllDgvAm+c/Slfz06lorj2uAY34rlUu0Nt+v8wreiImcrgAjjIHp1rXpTDlLOGw29WwQ==} engines: {node: '>=18'} - open@10.1.0: - resolution: {integrity: sha512-mnkeQ1qP5Ue2wd+aivTD3NHd/lZ96Lu0jgf0pwktLPtx6cTZiH7tyeGRRHs0zX0rbrahXPnXlUnbeXyaBBuIaw==} + open@10.1.2: + resolution: {integrity: sha512-cxN6aIDPz6rm8hbebcP7vrQNhvRcveZoJU72Y7vskh4oIm+BZwBECnx5nTmrlres1Qapvx27Qo1Auukpf8PKXw==} engines: {node: '>=18'} optionator@0.9.4: resolution: {integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==} engines: {node: '>= 0.8.0'} - ora@5.4.1: - resolution: {integrity: sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==} - engines: {node: '>=10'} + ora@8.2.0: + resolution: {integrity: sha512-weP+BZ8MVNnlCm8c0Qdc1WSWq4Qn7I+9CJGm7Qali6g44e/PUzbjNqJX5NJ9ljlNMosfJvg1fKEGILklK9cwnw==} + engines: {node: '>=18'} ordered-binary@1.5.3: resolution: {integrity: sha512-oGFr3T+pYdTGJ+YFEILMpS3es+GiIbs9h/XQrclBXUtd44ey7XwfsMzM31f64I1SQOawDoDr/D823kNCADI8TA==} @@ -4792,10 +4824,6 @@ packages: resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} engines: {node: '>=10'} - p-limit@4.0.0: - resolution: {integrity: sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - p-locate@4.1.0: resolution: {integrity: sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==} engines: {node: '>=8'} @@ -4804,10 +4832,6 @@ packages: resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} engines: {node: '>=10'} - p-locate@6.0.0: - resolution: {integrity: sha512-wPrq66Llhl7/4AGC6I+cqxT07LhXvWL08LNXz1fENOw0Ap4sRZZ/gZpTTJ5jpurzzzfS2W/Ge9BY3LgLjCShcw==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - p-map@7.0.3: resolution: {integrity: sha512-VkndIv2fIB99swvQoA65bm+fsmt6UNdGeIB0oxBs+WhAhdh08QA04JXpI7rbB9r08/nkbysKoya9rtDERYOYMA==} engines: {node: '>=18'} @@ -4823,9 +4847,9 @@ packages: package-json-from-dist@1.0.1: resolution: {integrity: sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==} - pacote@20.0.0: - resolution: {integrity: sha512-pRjC5UFwZCgx9kUFDVM9YEahv4guZ1nSLqwmWiLUnDbGsjs+U5w7z6Uc8HNR1a6x8qnu5y9xtGE6D1uAuYz+0A==} - engines: {node: ^18.17.0 || >=20.5.0} + pacote@21.0.0: + resolution: {integrity: sha512-lcqexq73AMv6QNLo7SOpz0JJoaGdS3rBFgF122NZVl1bApo2mfu+XzUBU/X/XsiJu+iUmKpekRayqQYAs+PhkA==} + engines: {node: ^20.17.0 || >=22.9.0} hasBin: true pako@1.0.11: @@ -4843,8 +4867,8 @@ packages: resolution: {integrity: sha512-3YHlOa/JgH6Mnpr05jP9eDG254US9ek25LyIxZlDItp2iJtwyaXQb57lBYLdT3MowkUFYEV2XXNAYIPlESvJlA==} engines: {node: '>= 0.10'} - parse5-html-rewriting-stream@7.0.0: - resolution: {integrity: sha512-mazCyGWkmCRWDI15Zp+UiCqMp/0dgEmkZRvhlsqqKYr4SsVm/TvnSpD9fCvqCA2zoWJcfRym846ejWBBHRiYEg==} + parse5-html-rewriting-stream@7.1.0: + resolution: {integrity: sha512-2ifK6Jb+ONoqOy5f+cYHsqvx1obHQdvIk13Jmt/5ezxP0U9p+fqd+R6O73KblGswyuzBYfetmsfK9ThMgnuPPg==} parse5-sax-parser@7.0.0: resolution: {integrity: sha512-5A+v2SNsq8T6/mG3ahcz8ZtQ0OUFTatxPbeidoMB7tkJSGDY3tdfl4MHovtLQHkEn5CGxijNWRQHhRQ6IRpXKg==} @@ -4860,10 +4884,6 @@ packages: resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} engines: {node: '>=8'} - path-exists@5.0.0: - resolution: {integrity: sha512-RjhtfwJOxzcFmNOi6ltcbcu4Iu+FL3zEj83dk4kAS+fVpTxXLO1b38RvJgT/0QwvV/L3aY9TAnyv0EOqW4GoMQ==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - path-is-absolute@1.0.1: resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} engines: {node: '>=0.10.0'} @@ -4882,10 +4902,6 @@ packages: path-to-regexp@0.1.12: resolution: {integrity: sha512-RA1GjUVMnvYFxuqovrEqZoxxW5NUZqbwKtYz/Tt7nXerk0LbLblQmrsgdeOxV5SFHf0UDggjS/bSeOZwt1pmEQ==} - path-type@6.0.0: - resolution: {integrity: sha512-Vj7sf++t5pBD637NSfkxpHSMfWaeig5+DKWLhcqIYx6mWQz5hdJTGDVMQiJcw1ZYkhs7AazKDGpRVji1LJCZUQ==} - engines: {node: '>=18'} - path2d@0.2.2: resolution: {integrity: sha512-+vnG6S4dYcYxZd+CZxzXCNKdELYZSKfohrk98yajCo1PtRoDgCTrrwOvK1GT0UoAdVszagDVllQc0U1vaX4NUQ==} engines: {node: '>=6'} @@ -4913,17 +4929,14 @@ packages: resolution: {integrity: sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==} engines: {node: '>= 6'} - piscina@4.8.0: - resolution: {integrity: sha512-EZJb+ZxDrQf3dihsUL7p42pjNyrNIFJCrRHPMgxu/svsj+P3xS3fuEWp7k2+rfsavfl1N0G29b1HGs7J0m8rZA==} + piscina@5.1.1: + resolution: {integrity: sha512-9rPDIPsCwOivatEZGM8+apgM7AiTDLSnpwMmLaSmdm2PeND8bFJzZLZZxyrJjLH8Xx/MpKoVaKf+vZOWALNHbw==} + engines: {node: '>=20.x'} pkg-dir@4.2.0: resolution: {integrity: sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==} engines: {node: '>=8'} - pkg-dir@7.0.0: - resolution: {integrity: sha512-Ie9z/WINcxxLp27BKOCHGde4ITq9UklYKDzVo1nhk5sqGEXU3FpkwP5GM2voTGJkGd9B3Otl+Q4uwSOeSUtOBA==} - engines: {node: '>=14.16'} - playwright-core@1.51.1: resolution: {integrity: sha512-/crRMj8+j/Nq5s8QcvegseuyeZPxpQCZb6HNk3Sos3BlZyAknRjoyJPFWkpNn8v0+P3WiwqFF8P+zQo4eqiNuw==} engines: {node: '>=18'} @@ -4981,8 +4994,8 @@ packages: postcss-value-parser@4.2.0: resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==} - postcss@8.5.2: - resolution: {integrity: sha512-MjOadfU3Ys9KYoX0AdkBlFEF1Vx37uCCeN4ZHnmwm9FfpbsGWMZeBLMmmpY+6Ocqod7mkdZ0DT31OlbsFrLlkA==} + postcss@8.5.3: + resolution: {integrity: sha512-dle9A3yYxlBSrt8Fu+IpjGT8SY8hN0mlaA6GY8t0P5PjIOZemULz/E2Bnm/2dcUOena75OTNkHI76uZBNUUq3A==} engines: {node: ^10 || ^12 || >=14} postcss@8.5.4: @@ -5105,9 +5118,6 @@ packages: regenerate@1.4.2: resolution: {integrity: sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==} - regenerator-runtime@0.14.1: - resolution: {integrity: sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==} - regex-parser@2.3.1: resolution: {integrity: sha512-yXLRqatcCuKtVHsWrNg0JL3l1zGfdXeEvDa0bdu4tCDQw0RpMDZsqbkyRTUnKMR0tXF627V2oEWjBEaEdqTwtQ==} @@ -5158,10 +5168,6 @@ packages: engines: {node: '>= 0.4'} hasBin: true - restore-cursor@3.1.0: - resolution: {integrity: sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==} - engines: {node: '>=8'} - restore-cursor@5.1.0: resolution: {integrity: sha512-oMA2dcrw6u0YfxJQXm342bFKX/E4sG9rbTzO9ptUcR/e8A33cHuvStiYOwH7fszkZlZ1z/ta9AAoPk2F4qIOHA==} engines: {node: '>=18'} @@ -5181,8 +5187,8 @@ packages: rfdc@1.4.1: resolution: {integrity: sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA==} - rollup@4.34.8: - resolution: {integrity: sha512-489gTVMzAYdiZHFVA/ig/iYFllCcWFHMvUHI1rpFmkoUtRlQxqh6/yiNqnYibjMZ2b/+FUQwldG+aLsEt6bglQ==} + rollup@4.40.2: + resolution: {integrity: sha512-tfUOg6DTP4rhQ3VjOO6B4wyrJnGOX85requAXvqYTHsOgb2TFJdZ3aWpT8W2kPoypSGP7dZUyzxJ9ee4buM5Fg==} engines: {node: '>=18.0.0', npm: '>=8.0.0'} hasBin: true @@ -5193,9 +5199,6 @@ packages: run-parallel@1.2.0: resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} - rxjs@7.8.1: - resolution: {integrity: sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==} - rxjs@7.8.2: resolution: {integrity: sha512-dhKf903U/PQZY6boNNtAGdWbG85WAbjT/1xYoZIC7FAY0yWapOBQVsVrDl58W86//e1VpMNBtRV4MaXfdMySFA==} @@ -5229,8 +5232,8 @@ packages: webpack: optional: true - sass@1.85.0: - resolution: {integrity: sha512-3ToiC1xZ1Y8aU7+CkgCI/tqyuPXEmYGJXO7H4uqp0xkLXUqp88rQQ4j1HmP37xSJLbCJPaIiv+cT1y+grssrww==} + sass@1.88.0: + resolution: {integrity: sha512-sF6TWQqjFvr4JILXzG4ucGOLELkESHL+I5QJhh7CNaE+Yge0SI+ehCatsXhJ7ymU1hAFcIS3/PBpjdIbXoyVbg==} engines: {node: '>=14.0.0'} hasBin: true @@ -5260,11 +5263,6 @@ packages: resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} hasBin: true - semver@7.7.1: - resolution: {integrity: sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==} - engines: {node: '>=10'} - hasBin: true - semver@7.7.2: resolution: {integrity: sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==} engines: {node: '>=10'} @@ -5350,10 +5348,6 @@ packages: resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} engines: {node: '>=8'} - slash@5.1.0: - resolution: {integrity: sha512-ZA6oR3T/pEyuqwMgAKT0/hAv8oAXckzbkmR0UkUosQ+Mc4RxGoJkRmwHgHufaenlyAgE1Mxgpdcrf75y6XcnDg==} - engines: {node: '>=14.16'} - slice-ansi@5.0.0: resolution: {integrity: sha512-FC+lgizVPfie0kkhqUScwRu1O/lF6NOgJmlCgK+/LYxDCTk8sGelYaHDhFcDN+Sn3Cv+3VSa4Byeo+IMCzpMgQ==} engines: {node: '>=12'} @@ -5442,6 +5436,10 @@ packages: resolution: {integrity: sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==} engines: {node: '>= 0.8'} + stdin-discarder@0.2.2: + resolution: {integrity: sha512-UhDfHmA92YAlNnCfhmq0VeNL5bDbiZGg7sZ2IvPsXubGkiNa9EC+tUTsjBRsYUAz87btI6/1wf4XoVvQ3uRnmQ==} + engines: {node: '>=18'} + string-length@4.0.2: resolution: {integrity: sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==} engines: {node: '>=10'} @@ -5504,10 +5502,6 @@ packages: resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} engines: {node: '>= 0.4'} - symbol-observable@4.0.0: - resolution: {integrity: sha512-b19dMThMV4HVFynSAM1++gBHAbk2Tc/osgLIBZMKsyqh34jb2e8Os7T6ZW/Bt3pJFdBTd2JwAnAAEQV7rSNvcQ==} - engines: {node: '>=0.10'} - symbol-tree@3.2.4: resolution: {integrity: sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==} @@ -5551,6 +5545,11 @@ packages: engines: {node: '>=10'} hasBin: true + terser@5.39.1: + resolution: {integrity: sha512-Mm6+uad0ZuDtcV8/4uOZQDQ8RuiC5Pu+iZRedJtF7yA/27sPL7d++In/AJKpWZlU3SYMPPkVfwetn6sgZ66pUA==} + engines: {node: '>=10'} + hasBin: true + test-exclude@6.0.0: resolution: {integrity: sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==} engines: {node: '>=8'} @@ -5564,6 +5563,10 @@ packages: thunky@1.1.0: resolution: {integrity: sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==} + tinyglobby@0.2.13: + resolution: {integrity: sha512-mEwzpUgrLySlveBwEVDMKk5B57bhLPYovRfPAXD5gA/98Opn0rCDj3GtLwFvCvH5RK9uPCExUROW5NjDwvqkxw==} + engines: {node: '>=12.0.0'} + tinyglobby@0.2.14: resolution: {integrity: sha512-tX5e7OM1HnYr2+a2C/4V0htOcSQcoSTH9KgJnVvNm5zm/cyEWKJ7j7YutsH9CxMdtOkkLFy2AHrMci9IM8IPZQ==} engines: {node: '>=12.0.0'} @@ -5686,8 +5689,8 @@ packages: typed-assert@1.0.9: resolution: {integrity: sha512-KNNZtayBCtmnNmbo5mG47p1XsCyrx6iVqomjcZnec/1Y5GGARaxPs6r49RnSPeUP3YjNYiU9sQHAtY4BBvnZwg==} - typescript@5.5.4: - resolution: {integrity: sha512-Mtq29sKDAEYP7aljRgtPOpTvOfbwRWlS6dPRzwjdE+C0R4brX/GUyhHSecbHMFLNBLcJIPt9nl9yG5TZ1weH+Q==} + typescript@5.8.3: + resolution: {integrity: sha512-p1diW6TqL9L07nNxvRMM7hMMw4c5XOo/1ibL4aAIGmSAt9slTE1Xgw5KWuof2uTOvCg9BY7ZRi+GaF+7sfgPeQ==} engines: {node: '>=14.17'} hasBin: true @@ -5714,10 +5717,6 @@ packages: resolution: {integrity: sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==} engines: {node: '>=4'} - unicorn-magic@0.3.0: - resolution: {integrity: sha512-+QBBXBCvifc56fsbuxZQ6Sic3wqqc3WWaqxs58gvJrcOuN83HGTCwz3oS5phzU9LthRNE9VrJCFCLUgHeeFnfA==} - engines: {node: '>=18'} - unique-filename@4.0.0: resolution: {integrity: sha512-XSnEewXmQ+veP7xX2dS5Q4yZAvO40cBN2MWkJ7D/6sW4Dg6wYBNwM1Vrnz1FhH5AdeLIlUXRI9e28z1YZi71NQ==} engines: {node: ^18.17.0 || >=20.5.0} @@ -5789,8 +5788,8 @@ packages: resolution: {integrity: sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==} engines: {node: '>= 0.8'} - vite@6.2.7: - resolution: {integrity: sha512-qg3LkeuinTrZoJHHF94coSaTfIPyBYoywp+ys4qu20oSJFbKMYoIJo0FWJT9q6Vp49l6z9IsJRbHdcGtiKbGoQ==} + vite@6.3.5: + resolution: {integrity: sha512-cZn6NDFE7wdTpINgs++ZJ4N49W2vRp8LCKrn3Ob1kYNtOo21vfDoaV5GzBfLU4MovSAB8uNRm4jgzVQZ+mBzPQ==} engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} hasBin: true peerDependencies: @@ -5847,9 +5846,6 @@ packages: wbuf@1.7.3: resolution: {integrity: sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA==} - wcwidth@1.0.1: - resolution: {integrity: sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==} - weak-lru-cache@1.2.2: resolution: {integrity: sha512-DEAoo25RfSYMuTGc9vPJzZcZullwIqRDSI9LOy+fkCJPi6hykCnfKaXTuPBDuXAUcqHXyOgFtHNp/kB2FjYHbw==} @@ -5866,8 +5862,8 @@ packages: webpack: optional: true - webpack-dev-server@5.2.0: - resolution: {integrity: sha512-90SqqYXA2SK36KcT6o1bvwvZfJFcmoamqeJY7+boioffX9g9C0wjjJRGUrQIuh43pb0ttX7+ssavmj/WN2RHtA==} + webpack-dev-server@5.2.1: + resolution: {integrity: sha512-ml/0HIj9NLpVKOMq+SuBPLHcmbG+TGIjXRHsYfZwocUBIqEvws8NnS/V9AFQ5FKP+tgn5adwVwRrTEpGL33QFQ==} engines: {node: '>= 18.12.0'} hasBin: true peerDependencies: @@ -5887,6 +5883,10 @@ packages: resolution: {integrity: sha512-ykKKus8lqlgXX/1WjudpIEjqsafjOTcOJqxnAbMLAu/KCsDCJ6GBtvscewvTkrn24HsnvFwrSCbenFrhtcCsAA==} engines: {node: '>=10.13.0'} + webpack-sources@3.3.3: + resolution: {integrity: sha512-yd1RBzSGanHkitROoPFd6qsrxt+oFhg/129YzheDGqeustzX0vTZJZsSsQjVQC4yzBQ56K55XU8gaNCtIzOnTg==} + engines: {node: '>=10.13.0'} + webpack-subresource-integrity@5.1.0: resolution: {integrity: sha512-sacXoX+xd8r4WKsy9MvH/q/vBtEHr86cpImXwyg74pFIpERKt6FmB8cXpeuh0ZLgclOlHI4Wcll7+R5L02xk9Q==} engines: {node: '>= 12'} @@ -5910,6 +5910,16 @@ packages: webpack-cli: optional: true + webpack@5.99.8: + resolution: {integrity: sha512-lQ3CPiSTpfOnrEGeXDwoq5hIGzSjmwD72GdfVzF7CQAI7t47rJG9eDWvcEkEn3CUQymAElVvDg3YNTlCYj+qUQ==} + engines: {node: '>=10.13.0'} + hasBin: true + peerDependencies: + webpack-cli: '*' + peerDependenciesMeta: + webpack-cli: + optional: true + websocket-driver@0.7.4: resolution: {integrity: sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg==} engines: {node: '>=0.8.0'} @@ -6027,10 +6037,18 @@ packages: resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==} engines: {node: '>=12'} + yargs-parser@22.0.0: + resolution: {integrity: sha512-rwu/ClNdSMpkSrUb+d6BRsSkLUq1fmfsY6TOpYzTwvwkg1/NRG85KBy3kq++A8LKQwX6lsu+aWad+2khvuXrqw==} + engines: {node: ^20.19.0 || ^22.12.0 || >=23} + yargs@17.7.2: resolution: {integrity: sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==} engines: {node: '>=12'} + yargs@18.0.0: + resolution: {integrity: sha512-4UEqdc2RYGHZc7Doyqkrqiln3p9X2DZVxaGbwhn2pi7MrRagKaOcIKe8L3OxYcbhXLgLFUS3zAYuQjKBQgmuNg==} + engines: {node: ^20.19.0 || ^22.12.0 || >=23} + yn@3.1.1: resolution: {integrity: sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==} engines: {node: '>=6'} @@ -6039,10 +6057,6 @@ packages: resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} engines: {node: '>=10'} - yocto-queue@1.2.1: - resolution: {integrity: sha512-AyeEbWOu/TAXdxlV9wmGcR0+yh2j3vYPGOECcIj2S7MkrLyC7ne+oye2BKTItt0ii2PHk4cDy+95+LshzbXnGg==} - engines: {node: '>=12.20'} - yoctocolors-cjs@2.1.2: resolution: {integrity: sha512-cYVsTjKl8b+FrnidjibDWskAv7UKOfcwaVZdp/it9n1s9fU3IkgDbhdIRKCW4JDsAlECJY0ytoVPT3sK6kideA==} engines: {node: '>=18'} @@ -6086,10 +6100,10 @@ snapshots: '@jridgewell/gen-mapping': 0.3.8 '@jridgewell/trace-mapping': 0.3.25 - '@angular-builders/common@3.0.1(@types/node@22.15.29)(chokidar@4.0.3)(typescript@5.5.4)': + '@angular-builders/common@4.0.0(@types/node@22.15.29)(chokidar@4.0.3)(typescript@5.8.3)': dependencies: - '@angular-devkit/core': 19.2.14(chokidar@4.0.3) - ts-node: 10.9.2(@types/node@22.15.29)(typescript@5.5.4) + '@angular-devkit/core': 20.0.4(chokidar@4.0.3) + ts-node: 10.9.2(@types/node@22.15.29)(typescript@5.8.3) tsconfig-paths: 4.2.0 transitivePeerDependencies: - '@swc/core' @@ -6098,18 +6112,21 @@ snapshots: - chokidar - typescript - '@angular-builders/custom-webpack@19.0.1(@angular/compiler-cli@19.2.14(@angular/compiler@19.2.14)(typescript@5.5.4))(@angular/compiler@19.2.14)(@angular/localize@19.2.14(@angular/compiler-cli@19.2.14(@angular/compiler@19.2.14)(typescript@5.5.4))(@angular/compiler@19.2.14))(@types/node@22.15.29)(chokidar@4.0.3)(jest-environment-jsdom@29.7.0)(jest@29.7.0(@types/node@22.15.29)(ts-node@10.9.2(@types/node@22.15.29)(typescript@5.5.4)))(jiti@1.21.7)(typescript@5.5.4)(vite@6.2.7(@types/node@22.15.29)(jiti@1.21.7)(less@4.2.2)(sass@1.85.0)(terser@5.39.0)(yaml@2.7.0))(yaml@2.7.0)': + '@angular-builders/custom-webpack@20.0.0(@angular/compiler-cli@20.0.5(@angular/compiler@20.0.5)(typescript@5.8.3))(@angular/compiler@20.0.5)(@angular/core@20.0.5(@angular/compiler@20.0.5)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/localize@20.0.5(@angular/compiler-cli@20.0.5(@angular/compiler@20.0.5)(typescript@5.8.3))(@angular/compiler@20.0.5))(@angular/platform-browser@20.0.5(@angular/common@20.0.5(@angular/core@20.0.5(@angular/compiler@20.0.5)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.0.5(@angular/compiler@20.0.5)(rxjs@7.8.2)(zone.js@0.15.1)))(@types/node@22.15.29)(chokidar@4.0.3)(jest-environment-jsdom@29.7.0)(jest@29.7.0(@types/node@22.15.29)(ts-node@10.9.2(@types/node@22.15.29)(typescript@5.8.3)))(jiti@1.21.7)(less@4.3.0)(postcss@8.5.3)(terser@5.39.1)(tslib@2.8.1)(typescript@5.8.3)(vite@6.3.5(@types/node@22.15.29)(jiti@1.21.7)(less@4.3.0)(sass@1.88.0)(terser@5.39.1)(yaml@2.7.0))(yaml@2.7.0)': dependencies: - '@angular-builders/common': 3.0.1(@types/node@22.15.29)(chokidar@4.0.3)(typescript@5.5.4) - '@angular-devkit/architect': 0.1902.8(chokidar@4.0.3) - '@angular-devkit/build-angular': 19.2.14(@angular/compiler-cli@19.2.14(@angular/compiler@19.2.14)(typescript@5.5.4))(@angular/compiler@19.2.14)(@angular/localize@19.2.14(@angular/compiler-cli@19.2.14(@angular/compiler@19.2.14)(typescript@5.5.4))(@angular/compiler@19.2.14))(@types/node@22.15.29)(chokidar@4.0.3)(jest-environment-jsdom@29.7.0)(jest@29.7.0(@types/node@22.15.29)(ts-node@10.9.2(@types/node@22.15.29)(typescript@5.5.4)))(jiti@1.21.7)(typescript@5.5.4)(vite@6.2.7(@types/node@22.15.29)(jiti@1.21.7)(less@4.2.2)(sass@1.85.0)(terser@5.39.0)(yaml@2.7.0))(yaml@2.7.0) - '@angular-devkit/core': 19.2.14(chokidar@4.0.3) - '@angular/compiler-cli': 19.2.14(@angular/compiler@19.2.14)(typescript@5.5.4) + '@angular-builders/common': 4.0.0(@types/node@22.15.29)(chokidar@4.0.3)(typescript@5.8.3) + '@angular-devkit/architect': 0.2000.4(chokidar@4.0.3) + '@angular-devkit/build-angular': 20.0.4(@angular/compiler-cli@20.0.5(@angular/compiler@20.0.5)(typescript@5.8.3))(@angular/compiler@20.0.5)(@angular/core@20.0.5(@angular/compiler@20.0.5)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/localize@20.0.5(@angular/compiler-cli@20.0.5(@angular/compiler@20.0.5)(typescript@5.8.3))(@angular/compiler@20.0.5))(@angular/platform-browser@20.0.5(@angular/common@20.0.5(@angular/core@20.0.5(@angular/compiler@20.0.5)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.0.5(@angular/compiler@20.0.5)(rxjs@7.8.2)(zone.js@0.15.1)))(@types/node@22.15.29)(chokidar@4.0.3)(jest-environment-jsdom@29.7.0)(jest@29.7.0(@types/node@22.15.29)(ts-node@10.9.2(@types/node@22.15.29)(typescript@5.8.3)))(jiti@1.21.7)(typescript@5.8.3)(vite@6.3.5(@types/node@22.15.29)(jiti@1.21.7)(less@4.3.0)(sass@1.88.0)(terser@5.39.1)(yaml@2.7.0))(yaml@2.7.0) + '@angular-devkit/core': 20.0.4(chokidar@4.0.3) + '@angular/build': 20.0.4(@angular/compiler-cli@20.0.5(@angular/compiler@20.0.5)(typescript@5.8.3))(@angular/compiler@20.0.5)(@angular/core@20.0.5(@angular/compiler@20.0.5)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/localize@20.0.5(@angular/compiler-cli@20.0.5(@angular/compiler@20.0.5)(typescript@5.8.3))(@angular/compiler@20.0.5))(@angular/platform-browser@20.0.5(@angular/common@20.0.5(@angular/core@20.0.5(@angular/compiler@20.0.5)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.0.5(@angular/compiler@20.0.5)(rxjs@7.8.2)(zone.js@0.15.1)))(@types/node@22.15.29)(chokidar@4.0.3)(jiti@1.21.7)(less@4.3.0)(postcss@8.5.3)(terser@5.39.1)(tslib@2.8.1)(typescript@5.8.3)(yaml@2.7.0) + '@angular/compiler-cli': 20.0.5(@angular/compiler@20.0.5)(typescript@5.8.3) lodash: 4.17.21 webpack-merge: 6.0.1 transitivePeerDependencies: - '@angular/compiler' + - '@angular/core' - '@angular/localize' + - '@angular/platform-browser' - '@angular/platform-server' - '@angular/service-worker' - '@angular/ssr' @@ -6127,34 +6144,39 @@ snapshots: - jest-environment-jsdom - jiti - karma + - less - lightningcss - ng-packagr - node-sass + - postcss - protractor - sass-embedded - stylus - sugarss - supports-color - tailwindcss + - terser + - tslib - tsx - typescript - uglify-js - utf-8-validate - vite + - vitest - webpack-cli - yaml - '@angular-builders/jest@19.0.1(4b49eb59c0a92e3dbc1542019395d573)': + '@angular-builders/jest@20.0.0(1a9e198a3f9bea260cecd5aa12aea346)': dependencies: - '@angular-builders/common': 3.0.1(@types/node@22.15.29)(chokidar@4.0.3)(typescript@5.5.4) - '@angular-devkit/architect': 0.1902.8(chokidar@4.0.3) - '@angular-devkit/build-angular': 19.2.14(@angular/compiler-cli@19.2.14(@angular/compiler@19.2.14)(typescript@5.5.4))(@angular/compiler@19.2.14)(@angular/localize@19.2.14(@angular/compiler-cli@19.2.14(@angular/compiler@19.2.14)(typescript@5.5.4))(@angular/compiler@19.2.14))(@types/node@22.15.29)(chokidar@4.0.3)(jest-environment-jsdom@29.7.0)(jest@29.7.0(@types/node@22.15.29)(ts-node@10.9.2(@types/node@22.15.29)(typescript@5.5.4)))(jiti@1.21.7)(typescript@5.5.4)(vite@6.2.7(@types/node@22.15.29)(jiti@1.21.7)(less@4.2.2)(sass@1.85.0)(terser@5.39.0)(yaml@2.7.0))(yaml@2.7.0) - '@angular-devkit/core': 19.2.14(chokidar@4.0.3) - '@angular/compiler-cli': 19.2.14(@angular/compiler@19.2.14)(typescript@5.5.4) - '@angular/core': 19.2.14(rxjs@7.8.2)(zone.js@0.15.1) - '@angular/platform-browser-dynamic': 19.2.14(@angular/common@19.2.14(@angular/core@19.2.14(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/compiler@19.2.14)(@angular/core@19.2.14(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@19.2.14(@angular/common@19.2.14(@angular/core@19.2.14(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@19.2.14(rxjs@7.8.2)(zone.js@0.15.1))) - jest: 29.7.0(@types/node@22.15.29)(ts-node@10.9.2(@types/node@22.15.29)(typescript@5.5.4)) - jest-preset-angular: 14.5.4(@angular/compiler-cli@19.2.14(@angular/compiler@19.2.14)(typescript@5.5.4))(@angular/core@19.2.14(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser-dynamic@19.2.14(@angular/common@19.2.14(@angular/core@19.2.14(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/compiler@19.2.14)(@angular/core@19.2.14(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@19.2.14(@angular/common@19.2.14(@angular/core@19.2.14(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@19.2.14(rxjs@7.8.2)(zone.js@0.15.1))))(@babel/core@7.27.4)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.27.4))(jest@29.7.0(@types/node@22.15.29)(ts-node@10.9.2(@types/node@22.15.29)(typescript@5.5.4)))(jsdom@20.0.3)(typescript@5.5.4) + '@angular-builders/common': 4.0.0(@types/node@22.15.29)(chokidar@4.0.3)(typescript@5.8.3) + '@angular-devkit/architect': 0.2000.4(chokidar@4.0.3) + '@angular-devkit/build-angular': 20.0.4(@angular/compiler-cli@20.0.5(@angular/compiler@20.0.5)(typescript@5.8.3))(@angular/compiler@20.0.5)(@angular/core@20.0.5(@angular/compiler@20.0.5)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/localize@20.0.5(@angular/compiler-cli@20.0.5(@angular/compiler@20.0.5)(typescript@5.8.3))(@angular/compiler@20.0.5))(@angular/platform-browser@20.0.5(@angular/common@20.0.5(@angular/core@20.0.5(@angular/compiler@20.0.5)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.0.5(@angular/compiler@20.0.5)(rxjs@7.8.2)(zone.js@0.15.1)))(@types/node@22.15.29)(chokidar@4.0.3)(jest-environment-jsdom@29.7.0)(jest@29.7.0(@types/node@22.15.29)(ts-node@10.9.2(@types/node@22.15.29)(typescript@5.8.3)))(jiti@1.21.7)(typescript@5.8.3)(vite@6.3.5(@types/node@22.15.29)(jiti@1.21.7)(less@4.3.0)(sass@1.88.0)(terser@5.39.1)(yaml@2.7.0))(yaml@2.7.0) + '@angular-devkit/core': 20.0.4(chokidar@4.0.3) + '@angular/compiler-cli': 20.0.5(@angular/compiler@20.0.5)(typescript@5.8.3) + '@angular/core': 20.0.5(@angular/compiler@20.0.5)(rxjs@7.8.2)(zone.js@0.15.1) + '@angular/platform-browser-dynamic': 20.0.5(@angular/common@20.0.5(@angular/core@20.0.5(@angular/compiler@20.0.5)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/compiler@20.0.5)(@angular/core@20.0.5(@angular/compiler@20.0.5)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@20.0.5(@angular/common@20.0.5(@angular/core@20.0.5(@angular/compiler@20.0.5)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.0.5(@angular/compiler@20.0.5)(rxjs@7.8.2)(zone.js@0.15.1))) + jest: 29.7.0(@types/node@22.15.29)(ts-node@10.9.2(@types/node@22.15.29)(typescript@5.8.3)) + jest-preset-angular: 14.6.0(@angular/compiler-cli@20.0.5(@angular/compiler@20.0.5)(typescript@5.8.3))(@angular/core@20.0.5(@angular/compiler@20.0.5)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser-dynamic@20.0.5(@angular/common@20.0.5(@angular/core@20.0.5(@angular/compiler@20.0.5)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/compiler@20.0.5)(@angular/core@20.0.5(@angular/compiler@20.0.5)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@20.0.5(@angular/common@20.0.5(@angular/core@20.0.5(@angular/compiler@20.0.5)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.0.5(@angular/compiler@20.0.5)(rxjs@7.8.2)(zone.js@0.15.1))))(@babel/core@7.27.4)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.27.4))(jest@29.7.0(@types/node@22.15.29)(ts-node@10.9.2(@types/node@22.15.29)(typescript@5.8.3)))(jsdom@20.0.3)(typescript@5.8.3) lodash: 4.17.21 transitivePeerDependencies: - '@babel/core' @@ -6172,83 +6194,78 @@ snapshots: - typescript - utf-8-validate - '@angular-devkit/architect@0.1902.14(chokidar@4.0.3)': + '@angular-devkit/architect@0.2000.4(chokidar@4.0.3)': dependencies: - '@angular-devkit/core': 19.2.14(chokidar@4.0.3) - rxjs: 7.8.1 + '@angular-devkit/core': 20.0.4(chokidar@4.0.3) + rxjs: 7.8.2 transitivePeerDependencies: - chokidar - '@angular-devkit/architect@0.1902.8(chokidar@4.0.3)': - dependencies: - '@angular-devkit/core': 19.2.8(chokidar@4.0.3) - rxjs: 7.8.1 - transitivePeerDependencies: - - chokidar - - '@angular-devkit/build-angular@19.2.14(@angular/compiler-cli@19.2.14(@angular/compiler@19.2.14)(typescript@5.5.4))(@angular/compiler@19.2.14)(@angular/localize@19.2.14(@angular/compiler-cli@19.2.14(@angular/compiler@19.2.14)(typescript@5.5.4))(@angular/compiler@19.2.14))(@types/node@22.15.29)(chokidar@4.0.3)(jest-environment-jsdom@29.7.0)(jest@29.7.0(@types/node@22.15.29)(ts-node@10.9.2(@types/node@22.15.29)(typescript@5.5.4)))(jiti@1.21.7)(typescript@5.5.4)(vite@6.2.7(@types/node@22.15.29)(jiti@1.21.7)(less@4.2.2)(sass@1.85.0)(terser@5.39.0)(yaml@2.7.0))(yaml@2.7.0)': + '@angular-devkit/build-angular@20.0.4(@angular/compiler-cli@20.0.5(@angular/compiler@20.0.5)(typescript@5.8.3))(@angular/compiler@20.0.5)(@angular/core@20.0.5(@angular/compiler@20.0.5)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/localize@20.0.5(@angular/compiler-cli@20.0.5(@angular/compiler@20.0.5)(typescript@5.8.3))(@angular/compiler@20.0.5))(@angular/platform-browser@20.0.5(@angular/common@20.0.5(@angular/core@20.0.5(@angular/compiler@20.0.5)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.0.5(@angular/compiler@20.0.5)(rxjs@7.8.2)(zone.js@0.15.1)))(@types/node@22.15.29)(chokidar@4.0.3)(jest-environment-jsdom@29.7.0)(jest@29.7.0(@types/node@22.15.29)(ts-node@10.9.2(@types/node@22.15.29)(typescript@5.8.3)))(jiti@1.21.7)(typescript@5.8.3)(vite@6.3.5(@types/node@22.15.29)(jiti@1.21.7)(less@4.3.0)(sass@1.88.0)(terser@5.39.1)(yaml@2.7.0))(yaml@2.7.0)': dependencies: '@ampproject/remapping': 2.3.0 - '@angular-devkit/architect': 0.1902.14(chokidar@4.0.3) - '@angular-devkit/build-webpack': 0.1902.14(chokidar@4.0.3)(webpack-dev-server@5.2.0(webpack@5.98.0))(webpack@5.98.0) - '@angular-devkit/core': 19.2.14(chokidar@4.0.3) - '@angular/build': 19.2.14(@angular/compiler-cli@19.2.14(@angular/compiler@19.2.14)(typescript@5.5.4))(@angular/compiler@19.2.14)(@angular/localize@19.2.14(@angular/compiler-cli@19.2.14(@angular/compiler@19.2.14)(typescript@5.5.4))(@angular/compiler@19.2.14))(@types/node@22.15.29)(chokidar@4.0.3)(jiti@1.21.7)(less@4.2.2)(postcss@8.5.2)(terser@5.39.0)(typescript@5.5.4)(yaml@2.7.0) - '@angular/compiler-cli': 19.2.14(@angular/compiler@19.2.14)(typescript@5.5.4) - '@babel/core': 7.26.10 - '@babel/generator': 7.26.10 - '@babel/helper-annotate-as-pure': 7.25.9 + '@angular-devkit/architect': 0.2000.4(chokidar@4.0.3) + '@angular-devkit/build-webpack': 0.2000.4(chokidar@4.0.3)(webpack-dev-server@5.2.1(webpack@5.98.0))(webpack@5.99.8(esbuild@0.25.5)) + '@angular-devkit/core': 20.0.4(chokidar@4.0.3) + '@angular/build': 20.0.4(@angular/compiler-cli@20.0.5(@angular/compiler@20.0.5)(typescript@5.8.3))(@angular/compiler@20.0.5)(@angular/core@20.0.5(@angular/compiler@20.0.5)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/localize@20.0.5(@angular/compiler-cli@20.0.5(@angular/compiler@20.0.5)(typescript@5.8.3))(@angular/compiler@20.0.5))(@angular/platform-browser@20.0.5(@angular/common@20.0.5(@angular/core@20.0.5(@angular/compiler@20.0.5)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.0.5(@angular/compiler@20.0.5)(rxjs@7.8.2)(zone.js@0.15.1)))(@types/node@22.15.29)(chokidar@4.0.3)(jiti@1.21.7)(less@4.3.0)(postcss@8.5.3)(terser@5.39.1)(tslib@2.8.1)(typescript@5.8.3)(yaml@2.7.0) + '@angular/compiler-cli': 20.0.5(@angular/compiler@20.0.5)(typescript@5.8.3) + '@babel/core': 7.27.1 + '@babel/generator': 7.27.1 + '@babel/helper-annotate-as-pure': 7.27.1 '@babel/helper-split-export-declaration': 7.24.7 - '@babel/plugin-transform-async-generator-functions': 7.26.8(@babel/core@7.26.10) - '@babel/plugin-transform-async-to-generator': 7.25.9(@babel/core@7.26.10) - '@babel/plugin-transform-runtime': 7.26.10(@babel/core@7.26.10) - '@babel/preset-env': 7.26.9(@babel/core@7.26.10) - '@babel/runtime': 7.26.10 + '@babel/plugin-transform-async-generator-functions': 7.27.1(@babel/core@7.27.1) + '@babel/plugin-transform-async-to-generator': 7.27.1(@babel/core@7.27.1) + '@babel/plugin-transform-runtime': 7.27.1(@babel/core@7.27.1) + '@babel/preset-env': 7.27.2(@babel/core@7.27.1) + '@babel/runtime': 7.27.1 '@discoveryjs/json-ext': 0.6.3 - '@ngtools/webpack': 19.2.14(@angular/compiler-cli@19.2.14(@angular/compiler@19.2.14)(typescript@5.5.4))(typescript@5.5.4)(webpack@5.98.0) - '@vitejs/plugin-basic-ssl': 1.2.0(vite@6.2.7(@types/node@22.15.29)(jiti@1.21.7)(less@4.2.2)(sass@1.85.0)(terser@5.39.0)(yaml@2.7.0)) + '@ngtools/webpack': 20.0.4(@angular/compiler-cli@20.0.5(@angular/compiler@20.0.5)(typescript@5.8.3))(typescript@5.8.3)(webpack@5.99.8(esbuild@0.25.5)) + '@vitejs/plugin-basic-ssl': 2.0.0(vite@6.3.5(@types/node@22.15.29)(jiti@1.21.7)(less@4.3.0)(sass@1.88.0)(terser@5.39.1)(yaml@2.7.0)) ansi-colors: 4.1.3 - autoprefixer: 10.4.20(postcss@8.5.2) - babel-loader: 9.2.1(@babel/core@7.26.10)(webpack@5.98.0) + autoprefixer: 10.4.21(postcss@8.5.3) + babel-loader: 10.0.0(@babel/core@7.27.1)(webpack@5.99.8(esbuild@0.25.5)) browserslist: 4.25.0 - copy-webpack-plugin: 12.0.2(webpack@5.98.0) - css-loader: 7.1.2(webpack@5.98.0) - esbuild-wasm: 0.25.4 + copy-webpack-plugin: 13.0.0(webpack@5.99.8(esbuild@0.25.5)) + css-loader: 7.1.2(webpack@5.99.8(esbuild@0.25.5)) + esbuild-wasm: 0.25.5 fast-glob: 3.3.3 http-proxy-middleware: 3.0.5 istanbul-lib-instrument: 6.0.3 jsonc-parser: 3.3.1 karma-source-map-support: 1.4.0 - less: 4.2.2 - less-loader: 12.2.0(less@4.2.2)(webpack@5.98.0) - license-webpack-plugin: 4.0.2(webpack@5.98.0) + less: 4.3.0 + less-loader: 12.3.0(less@4.3.0)(webpack@5.99.8(esbuild@0.25.5)) + license-webpack-plugin: 4.0.2(webpack@5.99.8(esbuild@0.25.5)) loader-utils: 3.3.1 - mini-css-extract-plugin: 2.9.2(webpack@5.98.0) - open: 10.1.0 - ora: 5.4.1 + mini-css-extract-plugin: 2.9.2(webpack@5.99.8(esbuild@0.25.5)) + open: 10.1.2 + ora: 8.2.0 picomatch: 4.0.2 - piscina: 4.8.0 - postcss: 8.5.2 - postcss-loader: 8.1.1(postcss@8.5.2)(typescript@5.5.4)(webpack@5.98.0) + piscina: 5.1.1 + postcss: 8.5.3 + postcss-loader: 8.1.1(postcss@8.5.3)(typescript@5.8.3)(webpack@5.99.8(esbuild@0.25.5)) resolve-url-loader: 5.0.0 - rxjs: 7.8.1 - sass: 1.85.0 - sass-loader: 16.0.5(sass@1.85.0)(webpack@5.98.0) - semver: 7.7.1 - source-map-loader: 5.0.0(webpack@5.98.0) + rxjs: 7.8.2 + sass: 1.88.0 + sass-loader: 16.0.5(sass@1.88.0)(webpack@5.99.8(esbuild@0.25.5)) + semver: 7.7.2 + source-map-loader: 5.0.0(webpack@5.99.8(esbuild@0.25.5)) source-map-support: 0.5.21 - terser: 5.39.0 + terser: 5.39.1 tree-kill: 1.2.2 tslib: 2.8.1 - typescript: 5.5.4 - webpack: 5.98.0(esbuild@0.25.4) - webpack-dev-middleware: 7.4.2(webpack@5.98.0) - webpack-dev-server: 5.2.0(webpack@5.98.0) + typescript: 5.8.3 + webpack: 5.99.8(esbuild@0.25.5) + webpack-dev-middleware: 7.4.2(webpack@5.99.8(esbuild@0.25.5)) + webpack-dev-server: 5.2.1(webpack@5.99.8(esbuild@0.25.5)) webpack-merge: 6.0.1 - webpack-subresource-integrity: 5.1.0(webpack@5.98.0) + webpack-subresource-integrity: 5.1.0(webpack@5.99.8(esbuild@0.25.5)) optionalDependencies: - '@angular/localize': 19.2.14(@angular/compiler-cli@19.2.14(@angular/compiler@19.2.14)(typescript@5.5.4))(@angular/compiler@19.2.14) - esbuild: 0.25.4 - jest: 29.7.0(@types/node@22.15.29)(ts-node@10.9.2(@types/node@22.15.29)(typescript@5.5.4)) + '@angular/core': 20.0.5(@angular/compiler@20.0.5)(rxjs@7.8.2)(zone.js@0.15.1) + '@angular/localize': 20.0.5(@angular/compiler-cli@20.0.5(@angular/compiler@20.0.5)(typescript@5.8.3))(@angular/compiler@20.0.5) + '@angular/platform-browser': 20.0.5(@angular/common@20.0.5(@angular/core@20.0.5(@angular/compiler@20.0.5)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.0.5(@angular/compiler@20.0.5)(rxjs@7.8.2)(zone.js@0.15.1)) + esbuild: 0.25.5 + jest: 29.7.0(@types/node@22.15.29)(ts-node@10.9.2(@types/node@22.15.29)(typescript@5.8.3)) jest-environment-jsdom: 29.7.0 transitivePeerDependencies: - '@angular/compiler' @@ -6270,87 +6287,78 @@ snapshots: - uglify-js - utf-8-validate - vite + - vitest - webpack-cli - yaml - '@angular-devkit/build-webpack@0.1902.14(chokidar@4.0.3)(webpack-dev-server@5.2.0(webpack@5.98.0))(webpack@5.98.0)': + '@angular-devkit/build-webpack@0.2000.4(chokidar@4.0.3)(webpack-dev-server@5.2.1(webpack@5.98.0))(webpack@5.99.8(esbuild@0.25.5))': dependencies: - '@angular-devkit/architect': 0.1902.14(chokidar@4.0.3) - rxjs: 7.8.1 - webpack: 5.98.0(esbuild@0.25.4) - webpack-dev-server: 5.2.0(webpack@5.98.0) + '@angular-devkit/architect': 0.2000.4(chokidar@4.0.3) + rxjs: 7.8.2 + webpack: 5.99.8(esbuild@0.25.5) + webpack-dev-server: 5.2.1(webpack@5.98.0) transitivePeerDependencies: - chokidar - '@angular-devkit/core@19.2.14(chokidar@4.0.3)': + '@angular-devkit/core@20.0.4(chokidar@4.0.3)': dependencies: ajv: 8.17.1 ajv-formats: 3.0.1(ajv@8.17.1) jsonc-parser: 3.3.1 picomatch: 4.0.2 - rxjs: 7.8.1 + rxjs: 7.8.2 source-map: 0.7.4 optionalDependencies: chokidar: 4.0.3 - '@angular-devkit/core@19.2.8(chokidar@4.0.3)': + '@angular-devkit/schematics@20.0.4(chokidar@4.0.3)': dependencies: - ajv: 8.17.1 - ajv-formats: 3.0.1(ajv@8.17.1) - jsonc-parser: 3.3.1 - picomatch: 4.0.2 - rxjs: 7.8.1 - source-map: 0.7.4 - optionalDependencies: - chokidar: 4.0.3 - - '@angular-devkit/schematics@19.2.14(chokidar@4.0.3)': - dependencies: - '@angular-devkit/core': 19.2.14(chokidar@4.0.3) + '@angular-devkit/core': 20.0.4(chokidar@4.0.3) jsonc-parser: 3.3.1 magic-string: 0.30.17 - ora: 5.4.1 - rxjs: 7.8.1 + ora: 8.2.0 + rxjs: 7.8.2 transitivePeerDependencies: - chokidar - '@angular-eslint/builder@19.7.0(chokidar@4.0.3)(eslint@9.28.0(jiti@1.21.7))(typescript@5.5.4)': + '@angular-eslint/builder@20.1.1(chokidar@4.0.3)(eslint@9.28.0(jiti@1.21.7))(typescript@5.8.3)': dependencies: - '@angular-devkit/architect': 0.1902.14(chokidar@4.0.3) - '@angular-devkit/core': 19.2.14(chokidar@4.0.3) + '@angular-devkit/architect': 0.2000.4(chokidar@4.0.3) + '@angular-devkit/core': 20.0.4(chokidar@4.0.3) eslint: 9.28.0(jiti@1.21.7) - typescript: 5.5.4 + typescript: 5.8.3 transitivePeerDependencies: - chokidar - '@angular-eslint/bundled-angular-compiler@19.7.0': {} + '@angular-eslint/bundled-angular-compiler@20.1.1': {} - '@angular-eslint/eslint-plugin-template@19.7.0(@angular-eslint/template-parser@19.7.0(eslint@9.28.0(jiti@1.21.7))(typescript@5.5.4))(@typescript-eslint/types@8.33.0)(@typescript-eslint/utils@8.33.0(eslint@9.28.0(jiti@1.21.7))(typescript@5.5.4))(eslint@9.28.0(jiti@1.21.7))(typescript@5.5.4)': + '@angular-eslint/eslint-plugin-template@20.1.1(@angular-eslint/template-parser@20.1.1(eslint@9.28.0(jiti@1.21.7))(typescript@5.8.3))(@typescript-eslint/types@8.35.0)(@typescript-eslint/utils@8.35.0(eslint@9.28.0(jiti@1.21.7))(typescript@5.8.3))(eslint@9.28.0(jiti@1.21.7))(typescript@5.8.3)': dependencies: - '@angular-eslint/bundled-angular-compiler': 19.7.0 - '@angular-eslint/template-parser': 19.7.0(eslint@9.28.0(jiti@1.21.7))(typescript@5.5.4) - '@angular-eslint/utils': 19.7.0(@typescript-eslint/utils@8.33.0(eslint@9.28.0(jiti@1.21.7))(typescript@5.5.4))(eslint@9.28.0(jiti@1.21.7))(typescript@5.5.4) - '@typescript-eslint/types': 8.33.0 - '@typescript-eslint/utils': 8.33.0(eslint@9.28.0(jiti@1.21.7))(typescript@5.5.4) + '@angular-eslint/bundled-angular-compiler': 20.1.1 + '@angular-eslint/template-parser': 20.1.1(eslint@9.28.0(jiti@1.21.7))(typescript@5.8.3) + '@angular-eslint/utils': 20.1.1(@typescript-eslint/utils@8.35.0(eslint@9.28.0(jiti@1.21.7))(typescript@5.8.3))(eslint@9.28.0(jiti@1.21.7))(typescript@5.8.3) + '@typescript-eslint/types': 8.35.0 + '@typescript-eslint/utils': 8.35.0(eslint@9.28.0(jiti@1.21.7))(typescript@5.8.3) aria-query: 5.3.2 axobject-query: 4.1.0 eslint: 9.28.0(jiti@1.21.7) - typescript: 5.5.4 + typescript: 5.8.3 - '@angular-eslint/eslint-plugin@19.7.0(@typescript-eslint/utils@8.33.0(eslint@9.28.0(jiti@1.21.7))(typescript@5.5.4))(eslint@9.28.0(jiti@1.21.7))(typescript@5.5.4)': + '@angular-eslint/eslint-plugin@20.1.1(@typescript-eslint/utils@8.35.0(eslint@9.28.0(jiti@1.21.7))(typescript@5.8.3))(eslint@9.28.0(jiti@1.21.7))(typescript@5.8.3)': dependencies: - '@angular-eslint/bundled-angular-compiler': 19.7.0 - '@angular-eslint/utils': 19.7.0(@typescript-eslint/utils@8.33.0(eslint@9.28.0(jiti@1.21.7))(typescript@5.5.4))(eslint@9.28.0(jiti@1.21.7))(typescript@5.5.4) - '@typescript-eslint/utils': 8.33.0(eslint@9.28.0(jiti@1.21.7))(typescript@5.5.4) + '@angular-eslint/bundled-angular-compiler': 20.1.1 + '@angular-eslint/utils': 20.1.1(@typescript-eslint/utils@8.35.0(eslint@9.28.0(jiti@1.21.7))(typescript@5.8.3))(eslint@9.28.0(jiti@1.21.7))(typescript@5.8.3) + '@typescript-eslint/utils': 8.35.0(eslint@9.28.0(jiti@1.21.7))(typescript@5.8.3) eslint: 9.28.0(jiti@1.21.7) - typescript: 5.5.4 + ts-api-utils: 2.1.0(typescript@5.8.3) + typescript: 5.8.3 - '@angular-eslint/schematics@19.7.0(@angular-eslint/template-parser@19.7.0(eslint@9.28.0(jiti@1.21.7))(typescript@5.5.4))(@typescript-eslint/types@8.33.0)(@typescript-eslint/utils@8.33.0(eslint@9.28.0(jiti@1.21.7))(typescript@5.5.4))(chokidar@4.0.3)(eslint@9.28.0(jiti@1.21.7))(typescript@5.5.4)': + '@angular-eslint/schematics@20.1.1(@angular-eslint/template-parser@20.1.1(eslint@9.28.0(jiti@1.21.7))(typescript@5.8.3))(@typescript-eslint/types@8.35.0)(@typescript-eslint/utils@8.35.0(eslint@9.28.0(jiti@1.21.7))(typescript@5.8.3))(chokidar@4.0.3)(eslint@9.28.0(jiti@1.21.7))(typescript@5.8.3)': dependencies: - '@angular-devkit/core': 19.2.14(chokidar@4.0.3) - '@angular-devkit/schematics': 19.2.14(chokidar@4.0.3) - '@angular-eslint/eslint-plugin': 19.7.0(@typescript-eslint/utils@8.33.0(eslint@9.28.0(jiti@1.21.7))(typescript@5.5.4))(eslint@9.28.0(jiti@1.21.7))(typescript@5.5.4) - '@angular-eslint/eslint-plugin-template': 19.7.0(@angular-eslint/template-parser@19.7.0(eslint@9.28.0(jiti@1.21.7))(typescript@5.5.4))(@typescript-eslint/types@8.33.0)(@typescript-eslint/utils@8.33.0(eslint@9.28.0(jiti@1.21.7))(typescript@5.5.4))(eslint@9.28.0(jiti@1.21.7))(typescript@5.5.4) + '@angular-devkit/core': 20.0.4(chokidar@4.0.3) + '@angular-devkit/schematics': 20.0.4(chokidar@4.0.3) + '@angular-eslint/eslint-plugin': 20.1.1(@typescript-eslint/utils@8.35.0(eslint@9.28.0(jiti@1.21.7))(typescript@5.8.3))(eslint@9.28.0(jiti@1.21.7))(typescript@5.8.3) + '@angular-eslint/eslint-plugin-template': 20.1.1(@angular-eslint/template-parser@20.1.1(eslint@9.28.0(jiti@1.21.7))(typescript@5.8.3))(@typescript-eslint/types@8.35.0)(@typescript-eslint/utils@8.35.0(eslint@9.28.0(jiti@1.21.7))(typescript@5.8.3))(eslint@9.28.0(jiti@1.21.7))(typescript@5.8.3) ignore: 7.0.5 semver: 7.7.2 strip-json-comments: 3.1.1 @@ -6362,56 +6370,59 @@ snapshots: - eslint - typescript - '@angular-eslint/template-parser@19.7.0(eslint@9.28.0(jiti@1.21.7))(typescript@5.5.4)': + '@angular-eslint/template-parser@20.1.1(eslint@9.28.0(jiti@1.21.7))(typescript@5.8.3)': dependencies: - '@angular-eslint/bundled-angular-compiler': 19.7.0 + '@angular-eslint/bundled-angular-compiler': 20.1.1 eslint: 9.28.0(jiti@1.21.7) eslint-scope: 8.3.0 - typescript: 5.5.4 + typescript: 5.8.3 - '@angular-eslint/utils@19.7.0(@typescript-eslint/utils@8.33.0(eslint@9.28.0(jiti@1.21.7))(typescript@5.5.4))(eslint@9.28.0(jiti@1.21.7))(typescript@5.5.4)': + '@angular-eslint/utils@20.1.1(@typescript-eslint/utils@8.35.0(eslint@9.28.0(jiti@1.21.7))(typescript@5.8.3))(eslint@9.28.0(jiti@1.21.7))(typescript@5.8.3)': dependencies: - '@angular-eslint/bundled-angular-compiler': 19.7.0 - '@typescript-eslint/utils': 8.33.0(eslint@9.28.0(jiti@1.21.7))(typescript@5.5.4) + '@angular-eslint/bundled-angular-compiler': 20.1.1 + '@typescript-eslint/utils': 8.35.0(eslint@9.28.0(jiti@1.21.7))(typescript@5.8.3) eslint: 9.28.0(jiti@1.21.7) - typescript: 5.5.4 + typescript: 5.8.3 - '@angular/build@19.2.14(@angular/compiler-cli@19.2.14(@angular/compiler@19.2.14)(typescript@5.5.4))(@angular/compiler@19.2.14)(@angular/localize@19.2.14(@angular/compiler-cli@19.2.14(@angular/compiler@19.2.14)(typescript@5.5.4))(@angular/compiler@19.2.14))(@types/node@22.15.29)(chokidar@4.0.3)(jiti@1.21.7)(less@4.2.2)(postcss@8.5.2)(terser@5.39.0)(typescript@5.5.4)(yaml@2.7.0)': + '@angular/build@20.0.4(@angular/compiler-cli@20.0.5(@angular/compiler@20.0.5)(typescript@5.8.3))(@angular/compiler@20.0.5)(@angular/core@20.0.5(@angular/compiler@20.0.5)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/localize@20.0.5(@angular/compiler-cli@20.0.5(@angular/compiler@20.0.5)(typescript@5.8.3))(@angular/compiler@20.0.5))(@angular/platform-browser@20.0.5(@angular/common@20.0.5(@angular/core@20.0.5(@angular/compiler@20.0.5)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.0.5(@angular/compiler@20.0.5)(rxjs@7.8.2)(zone.js@0.15.1)))(@types/node@22.15.29)(chokidar@4.0.3)(jiti@1.21.7)(less@4.3.0)(postcss@8.5.3)(terser@5.39.1)(tslib@2.8.1)(typescript@5.8.3)(yaml@2.7.0)': dependencies: '@ampproject/remapping': 2.3.0 - '@angular-devkit/architect': 0.1902.14(chokidar@4.0.3) - '@angular/compiler': 19.2.14 - '@angular/compiler-cli': 19.2.14(@angular/compiler@19.2.14)(typescript@5.5.4) - '@babel/core': 7.26.10 - '@babel/helper-annotate-as-pure': 7.25.9 + '@angular-devkit/architect': 0.2000.4(chokidar@4.0.3) + '@angular/compiler': 20.0.5 + '@angular/compiler-cli': 20.0.5(@angular/compiler@20.0.5)(typescript@5.8.3) + '@babel/core': 7.27.1 + '@babel/helper-annotate-as-pure': 7.27.1 '@babel/helper-split-export-declaration': 7.24.7 - '@babel/plugin-syntax-import-attributes': 7.26.0(@babel/core@7.26.10) - '@inquirer/confirm': 5.1.6(@types/node@22.15.29) - '@vitejs/plugin-basic-ssl': 1.2.0(vite@6.2.7(@types/node@22.15.29)(jiti@1.21.7)(less@4.2.2)(sass@1.85.0)(terser@5.39.0)(yaml@2.7.0)) - beasties: 0.3.2 + '@inquirer/confirm': 5.1.10(@types/node@22.15.29) + '@vitejs/plugin-basic-ssl': 2.0.0(vite@6.3.5(@types/node@22.15.29)(jiti@1.21.7)(less@4.3.0)(sass@1.88.0)(terser@5.39.1)(yaml@2.7.0)) + beasties: 0.3.4 browserslist: 4.25.0 - esbuild: 0.25.4 - fast-glob: 3.3.3 + esbuild: 0.25.5 https-proxy-agent: 7.0.6 istanbul-lib-instrument: 6.0.3 - listr2: 8.2.5 + jsonc-parser: 3.3.1 + listr2: 8.3.3 magic-string: 0.30.17 mrmime: 2.0.1 - parse5-html-rewriting-stream: 7.0.0 + parse5-html-rewriting-stream: 7.1.0 picomatch: 4.0.2 - piscina: 4.8.0 - rollup: 4.34.8 - sass: 1.85.0 - semver: 7.7.1 + piscina: 5.1.1 + rollup: 4.40.2 + sass: 1.88.0 + semver: 7.7.2 source-map-support: 0.5.21 - typescript: 5.5.4 - vite: 6.2.7(@types/node@22.15.29)(jiti@1.21.7)(less@4.2.2)(sass@1.85.0)(terser@5.39.0)(yaml@2.7.0) + tinyglobby: 0.2.13 + tslib: 2.8.1 + typescript: 5.8.3 + vite: 6.3.5(@types/node@22.15.29)(jiti@1.21.7)(less@4.3.0)(sass@1.88.0)(terser@5.39.1)(yaml@2.7.0) watchpack: 2.4.2 optionalDependencies: - '@angular/localize': 19.2.14(@angular/compiler-cli@19.2.14(@angular/compiler@19.2.14)(typescript@5.5.4))(@angular/compiler@19.2.14) - less: 4.2.2 - lmdb: 3.2.6 - postcss: 8.5.2 + '@angular/core': 20.0.5(@angular/compiler@20.0.5)(rxjs@7.8.2)(zone.js@0.15.1) + '@angular/localize': 20.0.5(@angular/compiler-cli@20.0.5(@angular/compiler@20.0.5)(typescript@5.8.3))(@angular/compiler@20.0.5) + '@angular/platform-browser': 20.0.5(@angular/common@20.0.5(@angular/core@20.0.5(@angular/compiler@20.0.5)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.0.5(@angular/compiler@20.0.5)(rxjs@7.8.2)(zone.js@0.15.1)) + less: 4.3.0 + lmdb: 3.3.0 + postcss: 8.5.3 transitivePeerDependencies: - '@types/node' - chokidar @@ -6425,107 +6436,109 @@ snapshots: - tsx - yaml - '@angular/cdk@19.2.14(@angular/common@19.2.14(@angular/core@19.2.14(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@19.2.14(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2)': + '@angular/cdk@20.0.4(@angular/common@20.0.5(@angular/core@20.0.5(@angular/compiler@20.0.5)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.0.5(@angular/compiler@20.0.5)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2)': dependencies: - '@angular/common': 19.2.14(@angular/core@19.2.14(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2) - '@angular/core': 19.2.14(rxjs@7.8.2)(zone.js@0.15.1) + '@angular/common': 20.0.5(@angular/core@20.0.5(@angular/compiler@20.0.5)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2) + '@angular/core': 20.0.5(@angular/compiler@20.0.5)(rxjs@7.8.2)(zone.js@0.15.1) parse5: 7.3.0 rxjs: 7.8.2 tslib: 2.8.1 - '@angular/cli@19.2.14(@types/node@22.15.29)(chokidar@4.0.3)': + '@angular/cli@20.0.4(@types/node@22.15.29)(chokidar@4.0.3)': dependencies: - '@angular-devkit/architect': 0.1902.14(chokidar@4.0.3) - '@angular-devkit/core': 19.2.14(chokidar@4.0.3) - '@angular-devkit/schematics': 19.2.14(chokidar@4.0.3) - '@inquirer/prompts': 7.3.2(@types/node@22.15.29) - '@listr2/prompt-adapter-inquirer': 2.0.18(@inquirer/prompts@7.3.2(@types/node@22.15.29)) - '@schematics/angular': 19.2.14(chokidar@4.0.3) + '@angular-devkit/architect': 0.2000.4(chokidar@4.0.3) + '@angular-devkit/core': 20.0.4(chokidar@4.0.3) + '@angular-devkit/schematics': 20.0.4(chokidar@4.0.3) + '@inquirer/prompts': 7.5.1(@types/node@22.15.29) + '@listr2/prompt-adapter-inquirer': 2.0.22(@inquirer/prompts@7.5.1(@types/node@22.15.29)) + '@schematics/angular': 20.0.4(chokidar@4.0.3) '@yarnpkg/lockfile': 1.1.0 ini: 5.0.0 jsonc-parser: 3.3.1 - listr2: 8.2.5 + listr2: 8.3.3 npm-package-arg: 12.0.2 npm-pick-manifest: 10.0.0 - pacote: 20.0.0 + pacote: 21.0.0 resolve: 1.22.10 - semver: 7.7.1 - symbol-observable: 4.0.0 + semver: 7.7.2 yargs: 17.7.2 transitivePeerDependencies: - '@types/node' - chokidar - supports-color - '@angular/common@19.2.14(@angular/core@19.2.14(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2)': + '@angular/common@20.0.5(@angular/core@20.0.5(@angular/compiler@20.0.5)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2)': dependencies: - '@angular/core': 19.2.14(rxjs@7.8.2)(zone.js@0.15.1) + '@angular/core': 20.0.5(@angular/compiler@20.0.5)(rxjs@7.8.2)(zone.js@0.15.1) rxjs: 7.8.2 tslib: 2.8.1 - '@angular/compiler-cli@19.2.14(@angular/compiler@19.2.14)(typescript@5.5.4)': + '@angular/compiler-cli@20.0.5(@angular/compiler@20.0.5)(typescript@5.8.3)': dependencies: - '@angular/compiler': 19.2.14 - '@babel/core': 7.26.9 + '@angular/compiler': 20.0.5 + '@babel/core': 7.27.4 '@jridgewell/sourcemap-codec': 1.5.0 chokidar: 4.0.3 convert-source-map: 1.9.0 reflect-metadata: 0.2.2 semver: 7.7.2 tslib: 2.8.1 - typescript: 5.5.4 - yargs: 17.7.2 + yargs: 18.0.0 + optionalDependencies: + typescript: 5.8.3 transitivePeerDependencies: - supports-color - '@angular/compiler@19.2.14': + '@angular/compiler@20.0.5': dependencies: tslib: 2.8.1 - '@angular/core@19.2.14(rxjs@7.8.2)(zone.js@0.15.1)': + '@angular/core@20.0.5(@angular/compiler@20.0.5)(rxjs@7.8.2)(zone.js@0.15.1)': dependencies: rxjs: 7.8.2 tslib: 2.8.1 + optionalDependencies: + '@angular/compiler': 20.0.5 zone.js: 0.15.1 - '@angular/forms@19.2.14(@angular/common@19.2.14(@angular/core@19.2.14(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@19.2.14(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@19.2.14(@angular/common@19.2.14(@angular/core@19.2.14(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@19.2.14(rxjs@7.8.2)(zone.js@0.15.1)))(rxjs@7.8.2)': + '@angular/forms@20.0.5(@angular/common@20.0.5(@angular/core@20.0.5(@angular/compiler@20.0.5)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.0.5(@angular/compiler@20.0.5)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@20.0.5(@angular/common@20.0.5(@angular/core@20.0.5(@angular/compiler@20.0.5)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.0.5(@angular/compiler@20.0.5)(rxjs@7.8.2)(zone.js@0.15.1)))(rxjs@7.8.2)': dependencies: - '@angular/common': 19.2.14(@angular/core@19.2.14(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2) - '@angular/core': 19.2.14(rxjs@7.8.2)(zone.js@0.15.1) - '@angular/platform-browser': 19.2.14(@angular/common@19.2.14(@angular/core@19.2.14(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@19.2.14(rxjs@7.8.2)(zone.js@0.15.1)) + '@angular/common': 20.0.5(@angular/core@20.0.5(@angular/compiler@20.0.5)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2) + '@angular/core': 20.0.5(@angular/compiler@20.0.5)(rxjs@7.8.2)(zone.js@0.15.1) + '@angular/platform-browser': 20.0.5(@angular/common@20.0.5(@angular/core@20.0.5(@angular/compiler@20.0.5)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.0.5(@angular/compiler@20.0.5)(rxjs@7.8.2)(zone.js@0.15.1)) rxjs: 7.8.2 tslib: 2.8.1 - '@angular/localize@19.2.14(@angular/compiler-cli@19.2.14(@angular/compiler@19.2.14)(typescript@5.5.4))(@angular/compiler@19.2.14)': + '@angular/localize@20.0.5(@angular/compiler-cli@20.0.5(@angular/compiler@20.0.5)(typescript@5.8.3))(@angular/compiler@20.0.5)': dependencies: - '@angular/compiler': 19.2.14 - '@angular/compiler-cli': 19.2.14(@angular/compiler@19.2.14)(typescript@5.5.4) - '@babel/core': 7.26.9 + '@angular/compiler': 20.0.5 + '@angular/compiler-cli': 20.0.5(@angular/compiler@20.0.5)(typescript@5.8.3) + '@babel/core': 7.27.4 '@types/babel__core': 7.20.5 - fast-glob: 3.3.3 - yargs: 17.7.2 + tinyglobby: 0.2.14 + yargs: 18.0.0 transitivePeerDependencies: - supports-color - '@angular/platform-browser-dynamic@19.2.14(@angular/common@19.2.14(@angular/core@19.2.14(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/compiler@19.2.14)(@angular/core@19.2.14(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@19.2.14(@angular/common@19.2.14(@angular/core@19.2.14(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@19.2.14(rxjs@7.8.2)(zone.js@0.15.1)))': + '@angular/platform-browser-dynamic@20.0.5(@angular/common@20.0.5(@angular/core@20.0.5(@angular/compiler@20.0.5)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/compiler@20.0.5)(@angular/core@20.0.5(@angular/compiler@20.0.5)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@20.0.5(@angular/common@20.0.5(@angular/core@20.0.5(@angular/compiler@20.0.5)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.0.5(@angular/compiler@20.0.5)(rxjs@7.8.2)(zone.js@0.15.1)))': dependencies: - '@angular/common': 19.2.14(@angular/core@19.2.14(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2) - '@angular/compiler': 19.2.14 - '@angular/core': 19.2.14(rxjs@7.8.2)(zone.js@0.15.1) - '@angular/platform-browser': 19.2.14(@angular/common@19.2.14(@angular/core@19.2.14(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@19.2.14(rxjs@7.8.2)(zone.js@0.15.1)) + '@angular/common': 20.0.5(@angular/core@20.0.5(@angular/compiler@20.0.5)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2) + '@angular/compiler': 20.0.5 + '@angular/core': 20.0.5(@angular/compiler@20.0.5)(rxjs@7.8.2)(zone.js@0.15.1) + '@angular/platform-browser': 20.0.5(@angular/common@20.0.5(@angular/core@20.0.5(@angular/compiler@20.0.5)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.0.5(@angular/compiler@20.0.5)(rxjs@7.8.2)(zone.js@0.15.1)) tslib: 2.8.1 - '@angular/platform-browser@19.2.14(@angular/common@19.2.14(@angular/core@19.2.14(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@19.2.14(rxjs@7.8.2)(zone.js@0.15.1))': + '@angular/platform-browser@20.0.5(@angular/common@20.0.5(@angular/core@20.0.5(@angular/compiler@20.0.5)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.0.5(@angular/compiler@20.0.5)(rxjs@7.8.2)(zone.js@0.15.1))': dependencies: - '@angular/common': 19.2.14(@angular/core@19.2.14(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2) - '@angular/core': 19.2.14(rxjs@7.8.2)(zone.js@0.15.1) + '@angular/common': 20.0.5(@angular/core@20.0.5(@angular/compiler@20.0.5)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2) + '@angular/core': 20.0.5(@angular/compiler@20.0.5)(rxjs@7.8.2)(zone.js@0.15.1) tslib: 2.8.1 - '@angular/router@19.2.14(@angular/common@19.2.14(@angular/core@19.2.14(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@19.2.14(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@19.2.14(@angular/common@19.2.14(@angular/core@19.2.14(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@19.2.14(rxjs@7.8.2)(zone.js@0.15.1)))(rxjs@7.8.2)': + '@angular/router@20.0.5(@angular/common@20.0.5(@angular/core@20.0.5(@angular/compiler@20.0.5)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.0.5(@angular/compiler@20.0.5)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@20.0.5(@angular/common@20.0.5(@angular/core@20.0.5(@angular/compiler@20.0.5)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.0.5(@angular/compiler@20.0.5)(rxjs@7.8.2)(zone.js@0.15.1)))(rxjs@7.8.2)': dependencies: - '@angular/common': 19.2.14(@angular/core@19.2.14(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2) - '@angular/core': 19.2.14(rxjs@7.8.2)(zone.js@0.15.1) - '@angular/platform-browser': 19.2.14(@angular/common@19.2.14(@angular/core@19.2.14(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@19.2.14(rxjs@7.8.2)(zone.js@0.15.1)) + '@angular/common': 20.0.5(@angular/core@20.0.5(@angular/compiler@20.0.5)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2) + '@angular/core': 20.0.5(@angular/compiler@20.0.5)(rxjs@7.8.2)(zone.js@0.15.1) + '@angular/platform-browser': 20.0.5(@angular/common@20.0.5(@angular/core@20.0.5(@angular/compiler@20.0.5)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.0.5(@angular/compiler@20.0.5)(rxjs@7.8.2)(zone.js@0.15.1)) rxjs: 7.8.2 tslib: 2.8.1 @@ -6537,33 +6550,15 @@ snapshots: '@babel/compat-data@7.27.3': {} - '@babel/core@7.26.10': - dependencies: - '@ampproject/remapping': 2.3.0 - '@babel/code-frame': 7.27.1 - '@babel/generator': 7.26.10 - '@babel/helper-compilation-targets': 7.27.2 - '@babel/helper-module-transforms': 7.27.3(@babel/core@7.26.10) - '@babel/helpers': 7.27.4 - '@babel/parser': 7.27.4 - '@babel/template': 7.27.2 - '@babel/traverse': 7.27.4 - '@babel/types': 7.27.3 - convert-source-map: 2.0.0 - debug: 4.4.1 - gensync: 1.0.0-beta.2 - json5: 2.2.3 - semver: 6.3.1 - transitivePeerDependencies: - - supports-color + '@babel/compat-data@7.27.7': {} - '@babel/core@7.26.9': + '@babel/core@7.27.1': dependencies: '@ampproject/remapping': 2.3.0 '@babel/code-frame': 7.27.1 '@babel/generator': 7.27.3 '@babel/helper-compilation-targets': 7.27.2 - '@babel/helper-module-transforms': 7.27.3(@babel/core@7.26.9) + '@babel/helper-module-transforms': 7.27.3(@babel/core@7.27.1) '@babel/helpers': 7.27.4 '@babel/parser': 7.27.4 '@babel/template': 7.27.2 @@ -6597,10 +6592,10 @@ snapshots: transitivePeerDependencies: - supports-color - '@babel/generator@7.26.10': + '@babel/generator@7.27.1': dependencies: - '@babel/parser': 7.27.4 - '@babel/types': 7.27.3 + '@babel/parser': 7.27.7 + '@babel/types': 7.27.7 '@jridgewell/gen-mapping': 0.3.8 '@jridgewell/trace-mapping': 0.3.25 jsesc: 3.1.0 @@ -6613,13 +6608,21 @@ snapshots: '@jridgewell/trace-mapping': 0.3.25 jsesc: 3.1.0 - '@babel/helper-annotate-as-pure@7.25.9': + '@babel/generator@7.27.5': + dependencies: + '@babel/parser': 7.27.7 + '@babel/types': 7.27.7 + '@jridgewell/gen-mapping': 0.3.8 + '@jridgewell/trace-mapping': 0.3.25 + jsesc: 3.1.0 + + '@babel/helper-annotate-as-pure@7.27.1': dependencies: '@babel/types': 7.27.3 '@babel/helper-annotate-as-pure@7.27.3': dependencies: - '@babel/types': 7.27.3 + '@babel/types': 7.27.7 '@babel/helper-compilation-targets@7.27.2': dependencies: @@ -6629,29 +6632,29 @@ snapshots: lru-cache: 5.1.1 semver: 6.3.1 - '@babel/helper-create-class-features-plugin@7.27.1(@babel/core@7.26.10)': + '@babel/helper-create-class-features-plugin@7.27.1(@babel/core@7.27.1)': dependencies: - '@babel/core': 7.26.10 + '@babel/core': 7.27.1 '@babel/helper-annotate-as-pure': 7.27.3 '@babel/helper-member-expression-to-functions': 7.27.1 '@babel/helper-optimise-call-expression': 7.27.1 - '@babel/helper-replace-supers': 7.27.1(@babel/core@7.26.10) + '@babel/helper-replace-supers': 7.27.1(@babel/core@7.27.1) '@babel/helper-skip-transparent-expression-wrappers': 7.27.1 - '@babel/traverse': 7.27.4 + '@babel/traverse': 7.27.7 semver: 6.3.1 transitivePeerDependencies: - supports-color - '@babel/helper-create-regexp-features-plugin@7.27.1(@babel/core@7.26.10)': + '@babel/helper-create-regexp-features-plugin@7.27.1(@babel/core@7.27.1)': dependencies: - '@babel/core': 7.26.10 + '@babel/core': 7.27.1 '@babel/helper-annotate-as-pure': 7.27.3 regexpu-core: 6.2.0 semver: 6.3.1 - '@babel/helper-define-polyfill-provider@0.6.4(@babel/core@7.26.10)': + '@babel/helper-define-polyfill-provider@0.6.4(@babel/core@7.27.1)': dependencies: - '@babel/core': 7.26.10 + '@babel/core': 7.27.1 '@babel/helper-compilation-targets': 7.27.2 '@babel/helper-plugin-utils': 7.27.1 debug: 4.4.1 @@ -6662,8 +6665,8 @@ snapshots: '@babel/helper-member-expression-to-functions@7.27.1': dependencies: - '@babel/traverse': 7.27.4 - '@babel/types': 7.27.3 + '@babel/traverse': 7.27.7 + '@babel/types': 7.27.7 transitivePeerDependencies: - supports-color @@ -6674,18 +6677,9 @@ snapshots: transitivePeerDependencies: - supports-color - '@babel/helper-module-transforms@7.27.3(@babel/core@7.26.10)': + '@babel/helper-module-transforms@7.27.3(@babel/core@7.27.1)': dependencies: - '@babel/core': 7.26.10 - '@babel/helper-module-imports': 7.27.1 - '@babel/helper-validator-identifier': 7.27.1 - '@babel/traverse': 7.27.4 - transitivePeerDependencies: - - supports-color - - '@babel/helper-module-transforms@7.27.3(@babel/core@7.26.9)': - dependencies: - '@babel/core': 7.26.9 + '@babel/core': 7.27.1 '@babel/helper-module-imports': 7.27.1 '@babel/helper-validator-identifier': 7.27.1 '@babel/traverse': 7.27.4 @@ -6703,32 +6697,32 @@ snapshots: '@babel/helper-optimise-call-expression@7.27.1': dependencies: - '@babel/types': 7.27.3 + '@babel/types': 7.27.7 '@babel/helper-plugin-utils@7.27.1': {} - '@babel/helper-remap-async-to-generator@7.27.1(@babel/core@7.26.10)': + '@babel/helper-remap-async-to-generator@7.27.1(@babel/core@7.27.1)': dependencies: - '@babel/core': 7.26.10 + '@babel/core': 7.27.1 '@babel/helper-annotate-as-pure': 7.27.3 '@babel/helper-wrap-function': 7.27.1 - '@babel/traverse': 7.27.4 + '@babel/traverse': 7.27.7 transitivePeerDependencies: - supports-color - '@babel/helper-replace-supers@7.27.1(@babel/core@7.26.10)': + '@babel/helper-replace-supers@7.27.1(@babel/core@7.27.1)': dependencies: - '@babel/core': 7.26.10 + '@babel/core': 7.27.1 '@babel/helper-member-expression-to-functions': 7.27.1 '@babel/helper-optimise-call-expression': 7.27.1 - '@babel/traverse': 7.27.4 + '@babel/traverse': 7.27.7 transitivePeerDependencies: - supports-color '@babel/helper-skip-transparent-expression-wrappers@7.27.1': dependencies: - '@babel/traverse': 7.27.4 - '@babel/types': 7.27.3 + '@babel/traverse': 7.27.7 + '@babel/types': 7.27.7 transitivePeerDependencies: - supports-color @@ -6745,8 +6739,8 @@ snapshots: '@babel/helper-wrap-function@7.27.1': dependencies: '@babel/template': 7.27.2 - '@babel/traverse': 7.27.4 - '@babel/types': 7.27.3 + '@babel/traverse': 7.27.7 + '@babel/types': 7.27.7 transitivePeerDependencies: - supports-color @@ -6759,44 +6753,48 @@ snapshots: dependencies: '@babel/types': 7.27.3 - '@babel/plugin-bugfix-firefox-class-in-computed-class-key@7.27.1(@babel/core@7.26.10)': + '@babel/parser@7.27.7': dependencies: - '@babel/core': 7.26.10 + '@babel/types': 7.27.7 + + '@babel/plugin-bugfix-firefox-class-in-computed-class-key@7.27.1(@babel/core@7.27.1)': + dependencies: + '@babel/core': 7.27.1 '@babel/helper-plugin-utils': 7.27.1 - '@babel/traverse': 7.27.4 + '@babel/traverse': 7.27.7 transitivePeerDependencies: - supports-color - '@babel/plugin-bugfix-safari-class-field-initializer-scope@7.27.1(@babel/core@7.26.10)': + '@babel/plugin-bugfix-safari-class-field-initializer-scope@7.27.1(@babel/core@7.27.1)': dependencies: - '@babel/core': 7.26.10 + '@babel/core': 7.27.1 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.27.1(@babel/core@7.26.10)': + '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.27.1(@babel/core@7.27.1)': dependencies: - '@babel/core': 7.26.10 + '@babel/core': 7.27.1 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.27.1(@babel/core@7.26.10)': + '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.27.1(@babel/core@7.27.1)': dependencies: - '@babel/core': 7.26.10 + '@babel/core': 7.27.1 '@babel/helper-plugin-utils': 7.27.1 '@babel/helper-skip-transparent-expression-wrappers': 7.27.1 - '@babel/plugin-transform-optional-chaining': 7.27.1(@babel/core@7.26.10) + '@babel/plugin-transform-optional-chaining': 7.27.1(@babel/core@7.27.1) transitivePeerDependencies: - supports-color - '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@7.27.1(@babel/core@7.26.10)': + '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@7.27.1(@babel/core@7.27.1)': dependencies: - '@babel/core': 7.26.10 + '@babel/core': 7.27.1 '@babel/helper-plugin-utils': 7.27.1 - '@babel/traverse': 7.27.4 + '@babel/traverse': 7.27.7 transitivePeerDependencies: - supports-color - '@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2(@babel/core@7.26.10)': + '@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2(@babel/core@7.27.1)': dependencies: - '@babel/core': 7.26.10 + '@babel/core': 7.27.1 '@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.27.4)': dependencies: @@ -6813,19 +6811,14 @@ snapshots: '@babel/core': 7.27.4 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-syntax-import-assertions@7.27.1(@babel/core@7.26.10)': + '@babel/plugin-syntax-import-assertions@7.27.1(@babel/core@7.27.1)': dependencies: - '@babel/core': 7.26.10 + '@babel/core': 7.27.1 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-syntax-import-attributes@7.26.0(@babel/core@7.26.10)': + '@babel/plugin-syntax-import-attributes@7.27.1(@babel/core@7.27.1)': dependencies: - '@babel/core': 7.26.10 - '@babel/helper-plugin-utils': 7.27.1 - - '@babel/plugin-syntax-import-attributes@7.27.1(@babel/core@7.26.10)': - dependencies: - '@babel/core': 7.26.10 + '@babel/core': 7.27.1 '@babel/helper-plugin-utils': 7.27.1 '@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.27.4)': @@ -6883,428 +6876,432 @@ snapshots: '@babel/core': 7.27.4 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-syntax-unicode-sets-regex@7.18.6(@babel/core@7.26.10)': + '@babel/plugin-syntax-unicode-sets-regex@7.18.6(@babel/core@7.27.1)': dependencies: - '@babel/core': 7.26.10 - '@babel/helper-create-regexp-features-plugin': 7.27.1(@babel/core@7.26.10) + '@babel/core': 7.27.1 + '@babel/helper-create-regexp-features-plugin': 7.27.1(@babel/core@7.27.1) '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-arrow-functions@7.27.1(@babel/core@7.26.10)': + '@babel/plugin-transform-arrow-functions@7.27.1(@babel/core@7.27.1)': dependencies: - '@babel/core': 7.26.10 + '@babel/core': 7.27.1 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-async-generator-functions@7.26.8(@babel/core@7.26.10)': + '@babel/plugin-transform-async-generator-functions@7.27.1(@babel/core@7.27.1)': dependencies: - '@babel/core': 7.26.10 + '@babel/core': 7.27.1 '@babel/helper-plugin-utils': 7.27.1 - '@babel/helper-remap-async-to-generator': 7.27.1(@babel/core@7.26.10) - '@babel/traverse': 7.27.4 + '@babel/helper-remap-async-to-generator': 7.27.1(@babel/core@7.27.1) + '@babel/traverse': 7.27.7 transitivePeerDependencies: - supports-color - '@babel/plugin-transform-async-to-generator@7.25.9(@babel/core@7.26.10)': + '@babel/plugin-transform-async-to-generator@7.27.1(@babel/core@7.27.1)': dependencies: - '@babel/core': 7.26.10 + '@babel/core': 7.27.1 '@babel/helper-module-imports': 7.27.1 '@babel/helper-plugin-utils': 7.27.1 - '@babel/helper-remap-async-to-generator': 7.27.1(@babel/core@7.26.10) + '@babel/helper-remap-async-to-generator': 7.27.1(@babel/core@7.27.1) transitivePeerDependencies: - supports-color - '@babel/plugin-transform-block-scoped-functions@7.27.1(@babel/core@7.26.10)': + '@babel/plugin-transform-block-scoped-functions@7.27.1(@babel/core@7.27.1)': dependencies: - '@babel/core': 7.26.10 + '@babel/core': 7.27.1 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-block-scoping@7.27.3(@babel/core@7.26.10)': + '@babel/plugin-transform-block-scoping@7.27.5(@babel/core@7.27.1)': dependencies: - '@babel/core': 7.26.10 + '@babel/core': 7.27.1 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-class-properties@7.27.1(@babel/core@7.26.10)': + '@babel/plugin-transform-class-properties@7.27.1(@babel/core@7.27.1)': dependencies: - '@babel/core': 7.26.10 - '@babel/helper-create-class-features-plugin': 7.27.1(@babel/core@7.26.10) + '@babel/core': 7.27.1 + '@babel/helper-create-class-features-plugin': 7.27.1(@babel/core@7.27.1) '@babel/helper-plugin-utils': 7.27.1 transitivePeerDependencies: - supports-color - '@babel/plugin-transform-class-static-block@7.27.1(@babel/core@7.26.10)': + '@babel/plugin-transform-class-static-block@7.27.1(@babel/core@7.27.1)': dependencies: - '@babel/core': 7.26.10 - '@babel/helper-create-class-features-plugin': 7.27.1(@babel/core@7.26.10) + '@babel/core': 7.27.1 + '@babel/helper-create-class-features-plugin': 7.27.1(@babel/core@7.27.1) '@babel/helper-plugin-utils': 7.27.1 transitivePeerDependencies: - supports-color - '@babel/plugin-transform-classes@7.27.1(@babel/core@7.26.10)': + '@babel/plugin-transform-classes@7.27.7(@babel/core@7.27.1)': dependencies: - '@babel/core': 7.26.10 + '@babel/core': 7.27.1 '@babel/helper-annotate-as-pure': 7.27.3 '@babel/helper-compilation-targets': 7.27.2 '@babel/helper-plugin-utils': 7.27.1 - '@babel/helper-replace-supers': 7.27.1(@babel/core@7.26.10) - '@babel/traverse': 7.27.4 + '@babel/helper-replace-supers': 7.27.1(@babel/core@7.27.1) + '@babel/traverse': 7.27.7 globals: 11.12.0 transitivePeerDependencies: - supports-color - '@babel/plugin-transform-computed-properties@7.27.1(@babel/core@7.26.10)': + '@babel/plugin-transform-computed-properties@7.27.1(@babel/core@7.27.1)': dependencies: - '@babel/core': 7.26.10 + '@babel/core': 7.27.1 '@babel/helper-plugin-utils': 7.27.1 '@babel/template': 7.27.2 - '@babel/plugin-transform-destructuring@7.27.3(@babel/core@7.26.10)': + '@babel/plugin-transform-destructuring@7.27.7(@babel/core@7.27.1)': dependencies: - '@babel/core': 7.26.10 + '@babel/core': 7.27.1 + '@babel/helper-plugin-utils': 7.27.1 + '@babel/traverse': 7.27.7 + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-dotall-regex@7.27.1(@babel/core@7.27.1)': + dependencies: + '@babel/core': 7.27.1 + '@babel/helper-create-regexp-features-plugin': 7.27.1(@babel/core@7.27.1) '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-dotall-regex@7.27.1(@babel/core@7.26.10)': + '@babel/plugin-transform-duplicate-keys@7.27.1(@babel/core@7.27.1)': dependencies: - '@babel/core': 7.26.10 - '@babel/helper-create-regexp-features-plugin': 7.27.1(@babel/core@7.26.10) + '@babel/core': 7.27.1 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-duplicate-keys@7.27.1(@babel/core@7.26.10)': + '@babel/plugin-transform-duplicate-named-capturing-groups-regex@7.27.1(@babel/core@7.27.1)': dependencies: - '@babel/core': 7.26.10 + '@babel/core': 7.27.1 + '@babel/helper-create-regexp-features-plugin': 7.27.1(@babel/core@7.27.1) '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-duplicate-named-capturing-groups-regex@7.27.1(@babel/core@7.26.10)': + '@babel/plugin-transform-dynamic-import@7.27.1(@babel/core@7.27.1)': dependencies: - '@babel/core': 7.26.10 - '@babel/helper-create-regexp-features-plugin': 7.27.1(@babel/core@7.26.10) + '@babel/core': 7.27.1 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-dynamic-import@7.27.1(@babel/core@7.26.10)': + '@babel/plugin-transform-exponentiation-operator@7.27.1(@babel/core@7.27.1)': dependencies: - '@babel/core': 7.26.10 + '@babel/core': 7.27.1 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-exponentiation-operator@7.27.1(@babel/core@7.26.10)': + '@babel/plugin-transform-export-namespace-from@7.27.1(@babel/core@7.27.1)': dependencies: - '@babel/core': 7.26.10 + '@babel/core': 7.27.1 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-export-namespace-from@7.27.1(@babel/core@7.26.10)': + '@babel/plugin-transform-for-of@7.27.1(@babel/core@7.27.1)': dependencies: - '@babel/core': 7.26.10 - '@babel/helper-plugin-utils': 7.27.1 - - '@babel/plugin-transform-for-of@7.27.1(@babel/core@7.26.10)': - dependencies: - '@babel/core': 7.26.10 + '@babel/core': 7.27.1 '@babel/helper-plugin-utils': 7.27.1 '@babel/helper-skip-transparent-expression-wrappers': 7.27.1 transitivePeerDependencies: - supports-color - '@babel/plugin-transform-function-name@7.27.1(@babel/core@7.26.10)': + '@babel/plugin-transform-function-name@7.27.1(@babel/core@7.27.1)': dependencies: - '@babel/core': 7.26.10 + '@babel/core': 7.27.1 '@babel/helper-compilation-targets': 7.27.2 '@babel/helper-plugin-utils': 7.27.1 - '@babel/traverse': 7.27.4 + '@babel/traverse': 7.27.7 transitivePeerDependencies: - supports-color - '@babel/plugin-transform-json-strings@7.27.1(@babel/core@7.26.10)': + '@babel/plugin-transform-json-strings@7.27.1(@babel/core@7.27.1)': dependencies: - '@babel/core': 7.26.10 + '@babel/core': 7.27.1 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-literals@7.27.1(@babel/core@7.26.10)': + '@babel/plugin-transform-literals@7.27.1(@babel/core@7.27.1)': dependencies: - '@babel/core': 7.26.10 + '@babel/core': 7.27.1 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-logical-assignment-operators@7.27.1(@babel/core@7.26.10)': + '@babel/plugin-transform-logical-assignment-operators@7.27.1(@babel/core@7.27.1)': dependencies: - '@babel/core': 7.26.10 + '@babel/core': 7.27.1 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-member-expression-literals@7.27.1(@babel/core@7.26.10)': + '@babel/plugin-transform-member-expression-literals@7.27.1(@babel/core@7.27.1)': dependencies: - '@babel/core': 7.26.10 + '@babel/core': 7.27.1 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-modules-amd@7.27.1(@babel/core@7.26.10)': + '@babel/plugin-transform-modules-amd@7.27.1(@babel/core@7.27.1)': dependencies: - '@babel/core': 7.26.10 - '@babel/helper-module-transforms': 7.27.3(@babel/core@7.26.10) + '@babel/core': 7.27.1 + '@babel/helper-module-transforms': 7.27.3(@babel/core@7.27.1) '@babel/helper-plugin-utils': 7.27.1 transitivePeerDependencies: - supports-color - '@babel/plugin-transform-modules-commonjs@7.27.1(@babel/core@7.26.10)': + '@babel/plugin-transform-modules-commonjs@7.27.1(@babel/core@7.27.1)': dependencies: - '@babel/core': 7.26.10 - '@babel/helper-module-transforms': 7.27.3(@babel/core@7.26.10) + '@babel/core': 7.27.1 + '@babel/helper-module-transforms': 7.27.3(@babel/core@7.27.1) '@babel/helper-plugin-utils': 7.27.1 transitivePeerDependencies: - supports-color - '@babel/plugin-transform-modules-systemjs@7.27.1(@babel/core@7.26.10)': + '@babel/plugin-transform-modules-systemjs@7.27.1(@babel/core@7.27.1)': dependencies: - '@babel/core': 7.26.10 - '@babel/helper-module-transforms': 7.27.3(@babel/core@7.26.10) + '@babel/core': 7.27.1 + '@babel/helper-module-transforms': 7.27.3(@babel/core@7.27.1) '@babel/helper-plugin-utils': 7.27.1 '@babel/helper-validator-identifier': 7.27.1 - '@babel/traverse': 7.27.4 + '@babel/traverse': 7.27.7 transitivePeerDependencies: - supports-color - '@babel/plugin-transform-modules-umd@7.27.1(@babel/core@7.26.10)': + '@babel/plugin-transform-modules-umd@7.27.1(@babel/core@7.27.1)': dependencies: - '@babel/core': 7.26.10 - '@babel/helper-module-transforms': 7.27.3(@babel/core@7.26.10) + '@babel/core': 7.27.1 + '@babel/helper-module-transforms': 7.27.3(@babel/core@7.27.1) '@babel/helper-plugin-utils': 7.27.1 transitivePeerDependencies: - supports-color - '@babel/plugin-transform-named-capturing-groups-regex@7.27.1(@babel/core@7.26.10)': + '@babel/plugin-transform-named-capturing-groups-regex@7.27.1(@babel/core@7.27.1)': dependencies: - '@babel/core': 7.26.10 - '@babel/helper-create-regexp-features-plugin': 7.27.1(@babel/core@7.26.10) + '@babel/core': 7.27.1 + '@babel/helper-create-regexp-features-plugin': 7.27.1(@babel/core@7.27.1) '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-new-target@7.27.1(@babel/core@7.26.10)': + '@babel/plugin-transform-new-target@7.27.1(@babel/core@7.27.1)': dependencies: - '@babel/core': 7.26.10 + '@babel/core': 7.27.1 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-nullish-coalescing-operator@7.27.1(@babel/core@7.26.10)': + '@babel/plugin-transform-nullish-coalescing-operator@7.27.1(@babel/core@7.27.1)': dependencies: - '@babel/core': 7.26.10 + '@babel/core': 7.27.1 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-numeric-separator@7.27.1(@babel/core@7.26.10)': + '@babel/plugin-transform-numeric-separator@7.27.1(@babel/core@7.27.1)': dependencies: - '@babel/core': 7.26.10 + '@babel/core': 7.27.1 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-object-rest-spread@7.27.3(@babel/core@7.26.10)': + '@babel/plugin-transform-object-rest-spread@7.27.7(@babel/core@7.27.1)': dependencies: - '@babel/core': 7.26.10 + '@babel/core': 7.27.1 '@babel/helper-compilation-targets': 7.27.2 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-destructuring': 7.27.3(@babel/core@7.26.10) - '@babel/plugin-transform-parameters': 7.27.1(@babel/core@7.26.10) - - '@babel/plugin-transform-object-super@7.27.1(@babel/core@7.26.10)': - dependencies: - '@babel/core': 7.26.10 - '@babel/helper-plugin-utils': 7.27.1 - '@babel/helper-replace-supers': 7.27.1(@babel/core@7.26.10) + '@babel/plugin-transform-destructuring': 7.27.7(@babel/core@7.27.1) + '@babel/plugin-transform-parameters': 7.27.7(@babel/core@7.27.1) + '@babel/traverse': 7.27.7 transitivePeerDependencies: - supports-color - '@babel/plugin-transform-optional-catch-binding@7.27.1(@babel/core@7.26.10)': + '@babel/plugin-transform-object-super@7.27.1(@babel/core@7.27.1)': dependencies: - '@babel/core': 7.26.10 + '@babel/core': 7.27.1 + '@babel/helper-plugin-utils': 7.27.1 + '@babel/helper-replace-supers': 7.27.1(@babel/core@7.27.1) + transitivePeerDependencies: + - supports-color + + '@babel/plugin-transform-optional-catch-binding@7.27.1(@babel/core@7.27.1)': + dependencies: + '@babel/core': 7.27.1 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-optional-chaining@7.27.1(@babel/core@7.26.10)': + '@babel/plugin-transform-optional-chaining@7.27.1(@babel/core@7.27.1)': dependencies: - '@babel/core': 7.26.10 + '@babel/core': 7.27.1 '@babel/helper-plugin-utils': 7.27.1 '@babel/helper-skip-transparent-expression-wrappers': 7.27.1 transitivePeerDependencies: - supports-color - '@babel/plugin-transform-parameters@7.27.1(@babel/core@7.26.10)': + '@babel/plugin-transform-parameters@7.27.7(@babel/core@7.27.1)': dependencies: - '@babel/core': 7.26.10 + '@babel/core': 7.27.1 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-private-methods@7.27.1(@babel/core@7.26.10)': + '@babel/plugin-transform-private-methods@7.27.1(@babel/core@7.27.1)': dependencies: - '@babel/core': 7.26.10 - '@babel/helper-create-class-features-plugin': 7.27.1(@babel/core@7.26.10) + '@babel/core': 7.27.1 + '@babel/helper-create-class-features-plugin': 7.27.1(@babel/core@7.27.1) '@babel/helper-plugin-utils': 7.27.1 transitivePeerDependencies: - supports-color - '@babel/plugin-transform-private-property-in-object@7.27.1(@babel/core@7.26.10)': + '@babel/plugin-transform-private-property-in-object@7.27.1(@babel/core@7.27.1)': dependencies: - '@babel/core': 7.26.10 + '@babel/core': 7.27.1 '@babel/helper-annotate-as-pure': 7.27.3 - '@babel/helper-create-class-features-plugin': 7.27.1(@babel/core@7.26.10) + '@babel/helper-create-class-features-plugin': 7.27.1(@babel/core@7.27.1) '@babel/helper-plugin-utils': 7.27.1 transitivePeerDependencies: - supports-color - '@babel/plugin-transform-property-literals@7.27.1(@babel/core@7.26.10)': + '@babel/plugin-transform-property-literals@7.27.1(@babel/core@7.27.1)': dependencies: - '@babel/core': 7.26.10 + '@babel/core': 7.27.1 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-regenerator@7.27.4(@babel/core@7.26.10)': + '@babel/plugin-transform-regenerator@7.27.5(@babel/core@7.27.1)': dependencies: - '@babel/core': 7.26.10 + '@babel/core': 7.27.1 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-regexp-modifiers@7.27.1(@babel/core@7.26.10)': + '@babel/plugin-transform-regexp-modifiers@7.27.1(@babel/core@7.27.1)': dependencies: - '@babel/core': 7.26.10 - '@babel/helper-create-regexp-features-plugin': 7.27.1(@babel/core@7.26.10) + '@babel/core': 7.27.1 + '@babel/helper-create-regexp-features-plugin': 7.27.1(@babel/core@7.27.1) '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-reserved-words@7.27.1(@babel/core@7.26.10)': + '@babel/plugin-transform-reserved-words@7.27.1(@babel/core@7.27.1)': dependencies: - '@babel/core': 7.26.10 + '@babel/core': 7.27.1 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-runtime@7.26.10(@babel/core@7.26.10)': + '@babel/plugin-transform-runtime@7.27.1(@babel/core@7.27.1)': dependencies: - '@babel/core': 7.26.10 + '@babel/core': 7.27.1 '@babel/helper-module-imports': 7.27.1 '@babel/helper-plugin-utils': 7.27.1 - babel-plugin-polyfill-corejs2: 0.4.13(@babel/core@7.26.10) - babel-plugin-polyfill-corejs3: 0.11.1(@babel/core@7.26.10) - babel-plugin-polyfill-regenerator: 0.6.4(@babel/core@7.26.10) + babel-plugin-polyfill-corejs2: 0.4.13(@babel/core@7.27.1) + babel-plugin-polyfill-corejs3: 0.11.1(@babel/core@7.27.1) + babel-plugin-polyfill-regenerator: 0.6.4(@babel/core@7.27.1) semver: 6.3.1 transitivePeerDependencies: - supports-color - '@babel/plugin-transform-shorthand-properties@7.27.1(@babel/core@7.26.10)': + '@babel/plugin-transform-shorthand-properties@7.27.1(@babel/core@7.27.1)': dependencies: - '@babel/core': 7.26.10 + '@babel/core': 7.27.1 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-spread@7.27.1(@babel/core@7.26.10)': + '@babel/plugin-transform-spread@7.27.1(@babel/core@7.27.1)': dependencies: - '@babel/core': 7.26.10 + '@babel/core': 7.27.1 '@babel/helper-plugin-utils': 7.27.1 '@babel/helper-skip-transparent-expression-wrappers': 7.27.1 transitivePeerDependencies: - supports-color - '@babel/plugin-transform-sticky-regex@7.27.1(@babel/core@7.26.10)': + '@babel/plugin-transform-sticky-regex@7.27.1(@babel/core@7.27.1)': dependencies: - '@babel/core': 7.26.10 + '@babel/core': 7.27.1 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-template-literals@7.27.1(@babel/core@7.26.10)': + '@babel/plugin-transform-template-literals@7.27.1(@babel/core@7.27.1)': dependencies: - '@babel/core': 7.26.10 + '@babel/core': 7.27.1 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-typeof-symbol@7.27.1(@babel/core@7.26.10)': + '@babel/plugin-transform-typeof-symbol@7.27.1(@babel/core@7.27.1)': dependencies: - '@babel/core': 7.26.10 + '@babel/core': 7.27.1 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-unicode-escapes@7.27.1(@babel/core@7.26.10)': + '@babel/plugin-transform-unicode-escapes@7.27.1(@babel/core@7.27.1)': dependencies: - '@babel/core': 7.26.10 + '@babel/core': 7.27.1 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-unicode-property-regex@7.27.1(@babel/core@7.26.10)': + '@babel/plugin-transform-unicode-property-regex@7.27.1(@babel/core@7.27.1)': dependencies: - '@babel/core': 7.26.10 - '@babel/helper-create-regexp-features-plugin': 7.27.1(@babel/core@7.26.10) + '@babel/core': 7.27.1 + '@babel/helper-create-regexp-features-plugin': 7.27.1(@babel/core@7.27.1) '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-unicode-regex@7.27.1(@babel/core@7.26.10)': + '@babel/plugin-transform-unicode-regex@7.27.1(@babel/core@7.27.1)': dependencies: - '@babel/core': 7.26.10 - '@babel/helper-create-regexp-features-plugin': 7.27.1(@babel/core@7.26.10) + '@babel/core': 7.27.1 + '@babel/helper-create-regexp-features-plugin': 7.27.1(@babel/core@7.27.1) '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-unicode-sets-regex@7.27.1(@babel/core@7.26.10)': + '@babel/plugin-transform-unicode-sets-regex@7.27.1(@babel/core@7.27.1)': dependencies: - '@babel/core': 7.26.10 - '@babel/helper-create-regexp-features-plugin': 7.27.1(@babel/core@7.26.10) + '@babel/core': 7.27.1 + '@babel/helper-create-regexp-features-plugin': 7.27.1(@babel/core@7.27.1) '@babel/helper-plugin-utils': 7.27.1 - '@babel/preset-env@7.26.9(@babel/core@7.26.10)': + '@babel/preset-env@7.27.2(@babel/core@7.27.1)': dependencies: - '@babel/compat-data': 7.27.3 - '@babel/core': 7.26.10 + '@babel/compat-data': 7.27.7 + '@babel/core': 7.27.1 '@babel/helper-compilation-targets': 7.27.2 '@babel/helper-plugin-utils': 7.27.1 '@babel/helper-validator-option': 7.27.1 - '@babel/plugin-bugfix-firefox-class-in-computed-class-key': 7.27.1(@babel/core@7.26.10) - '@babel/plugin-bugfix-safari-class-field-initializer-scope': 7.27.1(@babel/core@7.26.10) - '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression': 7.27.1(@babel/core@7.26.10) - '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining': 7.27.1(@babel/core@7.26.10) - '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly': 7.27.1(@babel/core@7.26.10) - '@babel/plugin-proposal-private-property-in-object': 7.21.0-placeholder-for-preset-env.2(@babel/core@7.26.10) - '@babel/plugin-syntax-import-assertions': 7.27.1(@babel/core@7.26.10) - '@babel/plugin-syntax-import-attributes': 7.27.1(@babel/core@7.26.10) - '@babel/plugin-syntax-unicode-sets-regex': 7.18.6(@babel/core@7.26.10) - '@babel/plugin-transform-arrow-functions': 7.27.1(@babel/core@7.26.10) - '@babel/plugin-transform-async-generator-functions': 7.26.8(@babel/core@7.26.10) - '@babel/plugin-transform-async-to-generator': 7.25.9(@babel/core@7.26.10) - '@babel/plugin-transform-block-scoped-functions': 7.27.1(@babel/core@7.26.10) - '@babel/plugin-transform-block-scoping': 7.27.3(@babel/core@7.26.10) - '@babel/plugin-transform-class-properties': 7.27.1(@babel/core@7.26.10) - '@babel/plugin-transform-class-static-block': 7.27.1(@babel/core@7.26.10) - '@babel/plugin-transform-classes': 7.27.1(@babel/core@7.26.10) - '@babel/plugin-transform-computed-properties': 7.27.1(@babel/core@7.26.10) - '@babel/plugin-transform-destructuring': 7.27.3(@babel/core@7.26.10) - '@babel/plugin-transform-dotall-regex': 7.27.1(@babel/core@7.26.10) - '@babel/plugin-transform-duplicate-keys': 7.27.1(@babel/core@7.26.10) - '@babel/plugin-transform-duplicate-named-capturing-groups-regex': 7.27.1(@babel/core@7.26.10) - '@babel/plugin-transform-dynamic-import': 7.27.1(@babel/core@7.26.10) - '@babel/plugin-transform-exponentiation-operator': 7.27.1(@babel/core@7.26.10) - '@babel/plugin-transform-export-namespace-from': 7.27.1(@babel/core@7.26.10) - '@babel/plugin-transform-for-of': 7.27.1(@babel/core@7.26.10) - '@babel/plugin-transform-function-name': 7.27.1(@babel/core@7.26.10) - '@babel/plugin-transform-json-strings': 7.27.1(@babel/core@7.26.10) - '@babel/plugin-transform-literals': 7.27.1(@babel/core@7.26.10) - '@babel/plugin-transform-logical-assignment-operators': 7.27.1(@babel/core@7.26.10) - '@babel/plugin-transform-member-expression-literals': 7.27.1(@babel/core@7.26.10) - '@babel/plugin-transform-modules-amd': 7.27.1(@babel/core@7.26.10) - '@babel/plugin-transform-modules-commonjs': 7.27.1(@babel/core@7.26.10) - '@babel/plugin-transform-modules-systemjs': 7.27.1(@babel/core@7.26.10) - '@babel/plugin-transform-modules-umd': 7.27.1(@babel/core@7.26.10) - '@babel/plugin-transform-named-capturing-groups-regex': 7.27.1(@babel/core@7.26.10) - '@babel/plugin-transform-new-target': 7.27.1(@babel/core@7.26.10) - '@babel/plugin-transform-nullish-coalescing-operator': 7.27.1(@babel/core@7.26.10) - '@babel/plugin-transform-numeric-separator': 7.27.1(@babel/core@7.26.10) - '@babel/plugin-transform-object-rest-spread': 7.27.3(@babel/core@7.26.10) - '@babel/plugin-transform-object-super': 7.27.1(@babel/core@7.26.10) - '@babel/plugin-transform-optional-catch-binding': 7.27.1(@babel/core@7.26.10) - '@babel/plugin-transform-optional-chaining': 7.27.1(@babel/core@7.26.10) - '@babel/plugin-transform-parameters': 7.27.1(@babel/core@7.26.10) - '@babel/plugin-transform-private-methods': 7.27.1(@babel/core@7.26.10) - '@babel/plugin-transform-private-property-in-object': 7.27.1(@babel/core@7.26.10) - '@babel/plugin-transform-property-literals': 7.27.1(@babel/core@7.26.10) - '@babel/plugin-transform-regenerator': 7.27.4(@babel/core@7.26.10) - '@babel/plugin-transform-regexp-modifiers': 7.27.1(@babel/core@7.26.10) - '@babel/plugin-transform-reserved-words': 7.27.1(@babel/core@7.26.10) - '@babel/plugin-transform-shorthand-properties': 7.27.1(@babel/core@7.26.10) - '@babel/plugin-transform-spread': 7.27.1(@babel/core@7.26.10) - '@babel/plugin-transform-sticky-regex': 7.27.1(@babel/core@7.26.10) - '@babel/plugin-transform-template-literals': 7.27.1(@babel/core@7.26.10) - '@babel/plugin-transform-typeof-symbol': 7.27.1(@babel/core@7.26.10) - '@babel/plugin-transform-unicode-escapes': 7.27.1(@babel/core@7.26.10) - '@babel/plugin-transform-unicode-property-regex': 7.27.1(@babel/core@7.26.10) - '@babel/plugin-transform-unicode-regex': 7.27.1(@babel/core@7.26.10) - '@babel/plugin-transform-unicode-sets-regex': 7.27.1(@babel/core@7.26.10) - '@babel/preset-modules': 0.1.6-no-external-plugins(@babel/core@7.26.10) - babel-plugin-polyfill-corejs2: 0.4.13(@babel/core@7.26.10) - babel-plugin-polyfill-corejs3: 0.11.1(@babel/core@7.26.10) - babel-plugin-polyfill-regenerator: 0.6.4(@babel/core@7.26.10) - core-js-compat: 3.42.0 + '@babel/plugin-bugfix-firefox-class-in-computed-class-key': 7.27.1(@babel/core@7.27.1) + '@babel/plugin-bugfix-safari-class-field-initializer-scope': 7.27.1(@babel/core@7.27.1) + '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression': 7.27.1(@babel/core@7.27.1) + '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining': 7.27.1(@babel/core@7.27.1) + '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly': 7.27.1(@babel/core@7.27.1) + '@babel/plugin-proposal-private-property-in-object': 7.21.0-placeholder-for-preset-env.2(@babel/core@7.27.1) + '@babel/plugin-syntax-import-assertions': 7.27.1(@babel/core@7.27.1) + '@babel/plugin-syntax-import-attributes': 7.27.1(@babel/core@7.27.1) + '@babel/plugin-syntax-unicode-sets-regex': 7.18.6(@babel/core@7.27.1) + '@babel/plugin-transform-arrow-functions': 7.27.1(@babel/core@7.27.1) + '@babel/plugin-transform-async-generator-functions': 7.27.1(@babel/core@7.27.1) + '@babel/plugin-transform-async-to-generator': 7.27.1(@babel/core@7.27.1) + '@babel/plugin-transform-block-scoped-functions': 7.27.1(@babel/core@7.27.1) + '@babel/plugin-transform-block-scoping': 7.27.5(@babel/core@7.27.1) + '@babel/plugin-transform-class-properties': 7.27.1(@babel/core@7.27.1) + '@babel/plugin-transform-class-static-block': 7.27.1(@babel/core@7.27.1) + '@babel/plugin-transform-classes': 7.27.7(@babel/core@7.27.1) + '@babel/plugin-transform-computed-properties': 7.27.1(@babel/core@7.27.1) + '@babel/plugin-transform-destructuring': 7.27.7(@babel/core@7.27.1) + '@babel/plugin-transform-dotall-regex': 7.27.1(@babel/core@7.27.1) + '@babel/plugin-transform-duplicate-keys': 7.27.1(@babel/core@7.27.1) + '@babel/plugin-transform-duplicate-named-capturing-groups-regex': 7.27.1(@babel/core@7.27.1) + '@babel/plugin-transform-dynamic-import': 7.27.1(@babel/core@7.27.1) + '@babel/plugin-transform-exponentiation-operator': 7.27.1(@babel/core@7.27.1) + '@babel/plugin-transform-export-namespace-from': 7.27.1(@babel/core@7.27.1) + '@babel/plugin-transform-for-of': 7.27.1(@babel/core@7.27.1) + '@babel/plugin-transform-function-name': 7.27.1(@babel/core@7.27.1) + '@babel/plugin-transform-json-strings': 7.27.1(@babel/core@7.27.1) + '@babel/plugin-transform-literals': 7.27.1(@babel/core@7.27.1) + '@babel/plugin-transform-logical-assignment-operators': 7.27.1(@babel/core@7.27.1) + '@babel/plugin-transform-member-expression-literals': 7.27.1(@babel/core@7.27.1) + '@babel/plugin-transform-modules-amd': 7.27.1(@babel/core@7.27.1) + '@babel/plugin-transform-modules-commonjs': 7.27.1(@babel/core@7.27.1) + '@babel/plugin-transform-modules-systemjs': 7.27.1(@babel/core@7.27.1) + '@babel/plugin-transform-modules-umd': 7.27.1(@babel/core@7.27.1) + '@babel/plugin-transform-named-capturing-groups-regex': 7.27.1(@babel/core@7.27.1) + '@babel/plugin-transform-new-target': 7.27.1(@babel/core@7.27.1) + '@babel/plugin-transform-nullish-coalescing-operator': 7.27.1(@babel/core@7.27.1) + '@babel/plugin-transform-numeric-separator': 7.27.1(@babel/core@7.27.1) + '@babel/plugin-transform-object-rest-spread': 7.27.7(@babel/core@7.27.1) + '@babel/plugin-transform-object-super': 7.27.1(@babel/core@7.27.1) + '@babel/plugin-transform-optional-catch-binding': 7.27.1(@babel/core@7.27.1) + '@babel/plugin-transform-optional-chaining': 7.27.1(@babel/core@7.27.1) + '@babel/plugin-transform-parameters': 7.27.7(@babel/core@7.27.1) + '@babel/plugin-transform-private-methods': 7.27.1(@babel/core@7.27.1) + '@babel/plugin-transform-private-property-in-object': 7.27.1(@babel/core@7.27.1) + '@babel/plugin-transform-property-literals': 7.27.1(@babel/core@7.27.1) + '@babel/plugin-transform-regenerator': 7.27.5(@babel/core@7.27.1) + '@babel/plugin-transform-regexp-modifiers': 7.27.1(@babel/core@7.27.1) + '@babel/plugin-transform-reserved-words': 7.27.1(@babel/core@7.27.1) + '@babel/plugin-transform-shorthand-properties': 7.27.1(@babel/core@7.27.1) + '@babel/plugin-transform-spread': 7.27.1(@babel/core@7.27.1) + '@babel/plugin-transform-sticky-regex': 7.27.1(@babel/core@7.27.1) + '@babel/plugin-transform-template-literals': 7.27.1(@babel/core@7.27.1) + '@babel/plugin-transform-typeof-symbol': 7.27.1(@babel/core@7.27.1) + '@babel/plugin-transform-unicode-escapes': 7.27.1(@babel/core@7.27.1) + '@babel/plugin-transform-unicode-property-regex': 7.27.1(@babel/core@7.27.1) + '@babel/plugin-transform-unicode-regex': 7.27.1(@babel/core@7.27.1) + '@babel/plugin-transform-unicode-sets-regex': 7.27.1(@babel/core@7.27.1) + '@babel/preset-modules': 0.1.6-no-external-plugins(@babel/core@7.27.1) + babel-plugin-polyfill-corejs2: 0.4.13(@babel/core@7.27.1) + babel-plugin-polyfill-corejs3: 0.11.1(@babel/core@7.27.1) + babel-plugin-polyfill-regenerator: 0.6.4(@babel/core@7.27.1) + core-js-compat: 3.43.0 semver: 6.3.1 transitivePeerDependencies: - supports-color - '@babel/preset-modules@0.1.6-no-external-plugins(@babel/core@7.26.10)': + '@babel/preset-modules@0.1.6-no-external-plugins(@babel/core@7.27.1)': dependencies: - '@babel/core': 7.26.10 + '@babel/core': 7.27.1 '@babel/helper-plugin-utils': 7.27.1 - '@babel/types': 7.27.3 + '@babel/types': 7.27.7 esutils: 2.0.3 - '@babel/runtime@7.26.10': - dependencies: - regenerator-runtime: 0.14.1 + '@babel/runtime@7.27.1': {} '@babel/template@7.27.2': dependencies: @@ -7324,11 +7321,28 @@ snapshots: transitivePeerDependencies: - supports-color + '@babel/traverse@7.27.7': + dependencies: + '@babel/code-frame': 7.27.1 + '@babel/generator': 7.27.5 + '@babel/parser': 7.27.7 + '@babel/template': 7.27.2 + '@babel/types': 7.27.7 + debug: 4.4.1 + globals: 11.12.0 + transitivePeerDependencies: + - supports-color + '@babel/types@7.27.3': dependencies: '@babel/helper-string-parser': 7.27.1 '@babel/helper-validator-identifier': 7.27.1 + '@babel/types@7.27.7': + dependencies: + '@babel/helper-string-parser': 7.27.1 + '@babel/helper-validator-identifier': 7.27.1 + '@bcoe/v8-coverage@0.2.3': {} '@codecov/bundler-plugin-core@1.9.1': @@ -7344,7 +7358,7 @@ snapshots: dependencies: '@codecov/bundler-plugin-core': 1.9.1 unplugin: 1.16.1 - webpack: 5.98.0(esbuild@0.25.4) + webpack: 5.98.0 '@cspotcode/source-map-support@0.8.1': dependencies: @@ -7357,226 +7371,226 @@ snapshots: '@esbuild/aix-ppc64@0.25.2': optional: true - '@esbuild/aix-ppc64@0.25.3': + '@esbuild/aix-ppc64@0.25.4': optional: true - '@esbuild/aix-ppc64@0.25.4': + '@esbuild/aix-ppc64@0.25.5': optional: true '@esbuild/android-arm64@0.25.2': optional: true - '@esbuild/android-arm64@0.25.3': + '@esbuild/android-arm64@0.25.4': optional: true - '@esbuild/android-arm64@0.25.4': + '@esbuild/android-arm64@0.25.5': optional: true '@esbuild/android-arm@0.25.2': optional: true - '@esbuild/android-arm@0.25.3': + '@esbuild/android-arm@0.25.4': optional: true - '@esbuild/android-arm@0.25.4': + '@esbuild/android-arm@0.25.5': optional: true '@esbuild/android-x64@0.25.2': optional: true - '@esbuild/android-x64@0.25.3': + '@esbuild/android-x64@0.25.4': optional: true - '@esbuild/android-x64@0.25.4': + '@esbuild/android-x64@0.25.5': optional: true '@esbuild/darwin-arm64@0.25.2': optional: true - '@esbuild/darwin-arm64@0.25.3': + '@esbuild/darwin-arm64@0.25.4': optional: true - '@esbuild/darwin-arm64@0.25.4': + '@esbuild/darwin-arm64@0.25.5': optional: true '@esbuild/darwin-x64@0.25.2': optional: true - '@esbuild/darwin-x64@0.25.3': + '@esbuild/darwin-x64@0.25.4': optional: true - '@esbuild/darwin-x64@0.25.4': + '@esbuild/darwin-x64@0.25.5': optional: true '@esbuild/freebsd-arm64@0.25.2': optional: true - '@esbuild/freebsd-arm64@0.25.3': + '@esbuild/freebsd-arm64@0.25.4': optional: true - '@esbuild/freebsd-arm64@0.25.4': + '@esbuild/freebsd-arm64@0.25.5': optional: true '@esbuild/freebsd-x64@0.25.2': optional: true - '@esbuild/freebsd-x64@0.25.3': + '@esbuild/freebsd-x64@0.25.4': optional: true - '@esbuild/freebsd-x64@0.25.4': + '@esbuild/freebsd-x64@0.25.5': optional: true '@esbuild/linux-arm64@0.25.2': optional: true - '@esbuild/linux-arm64@0.25.3': + '@esbuild/linux-arm64@0.25.4': optional: true - '@esbuild/linux-arm64@0.25.4': + '@esbuild/linux-arm64@0.25.5': optional: true '@esbuild/linux-arm@0.25.2': optional: true - '@esbuild/linux-arm@0.25.3': + '@esbuild/linux-arm@0.25.4': optional: true - '@esbuild/linux-arm@0.25.4': + '@esbuild/linux-arm@0.25.5': optional: true '@esbuild/linux-ia32@0.25.2': optional: true - '@esbuild/linux-ia32@0.25.3': + '@esbuild/linux-ia32@0.25.4': optional: true - '@esbuild/linux-ia32@0.25.4': + '@esbuild/linux-ia32@0.25.5': optional: true '@esbuild/linux-loong64@0.25.2': optional: true - '@esbuild/linux-loong64@0.25.3': + '@esbuild/linux-loong64@0.25.4': optional: true - '@esbuild/linux-loong64@0.25.4': + '@esbuild/linux-loong64@0.25.5': optional: true '@esbuild/linux-mips64el@0.25.2': optional: true - '@esbuild/linux-mips64el@0.25.3': + '@esbuild/linux-mips64el@0.25.4': optional: true - '@esbuild/linux-mips64el@0.25.4': + '@esbuild/linux-mips64el@0.25.5': optional: true '@esbuild/linux-ppc64@0.25.2': optional: true - '@esbuild/linux-ppc64@0.25.3': + '@esbuild/linux-ppc64@0.25.4': optional: true - '@esbuild/linux-ppc64@0.25.4': + '@esbuild/linux-ppc64@0.25.5': optional: true '@esbuild/linux-riscv64@0.25.2': optional: true - '@esbuild/linux-riscv64@0.25.3': + '@esbuild/linux-riscv64@0.25.4': optional: true - '@esbuild/linux-riscv64@0.25.4': + '@esbuild/linux-riscv64@0.25.5': optional: true '@esbuild/linux-s390x@0.25.2': optional: true - '@esbuild/linux-s390x@0.25.3': + '@esbuild/linux-s390x@0.25.4': optional: true - '@esbuild/linux-s390x@0.25.4': + '@esbuild/linux-s390x@0.25.5': optional: true '@esbuild/linux-x64@0.25.2': optional: true - '@esbuild/linux-x64@0.25.3': + '@esbuild/linux-x64@0.25.4': optional: true - '@esbuild/linux-x64@0.25.4': + '@esbuild/linux-x64@0.25.5': optional: true '@esbuild/netbsd-arm64@0.25.2': optional: true - '@esbuild/netbsd-arm64@0.25.3': + '@esbuild/netbsd-arm64@0.25.4': optional: true - '@esbuild/netbsd-arm64@0.25.4': + '@esbuild/netbsd-arm64@0.25.5': optional: true '@esbuild/netbsd-x64@0.25.2': optional: true - '@esbuild/netbsd-x64@0.25.3': + '@esbuild/netbsd-x64@0.25.4': optional: true - '@esbuild/netbsd-x64@0.25.4': + '@esbuild/netbsd-x64@0.25.5': optional: true '@esbuild/openbsd-arm64@0.25.2': optional: true - '@esbuild/openbsd-arm64@0.25.3': + '@esbuild/openbsd-arm64@0.25.4': optional: true - '@esbuild/openbsd-arm64@0.25.4': + '@esbuild/openbsd-arm64@0.25.5': optional: true '@esbuild/openbsd-x64@0.25.2': optional: true - '@esbuild/openbsd-x64@0.25.3': + '@esbuild/openbsd-x64@0.25.4': optional: true - '@esbuild/openbsd-x64@0.25.4': + '@esbuild/openbsd-x64@0.25.5': optional: true '@esbuild/sunos-x64@0.25.2': optional: true - '@esbuild/sunos-x64@0.25.3': + '@esbuild/sunos-x64@0.25.4': optional: true - '@esbuild/sunos-x64@0.25.4': + '@esbuild/sunos-x64@0.25.5': optional: true '@esbuild/win32-arm64@0.25.2': optional: true - '@esbuild/win32-arm64@0.25.3': + '@esbuild/win32-arm64@0.25.4': optional: true - '@esbuild/win32-arm64@0.25.4': + '@esbuild/win32-arm64@0.25.5': optional: true '@esbuild/win32-ia32@0.25.2': optional: true - '@esbuild/win32-ia32@0.25.3': + '@esbuild/win32-ia32@0.25.4': optional: true - '@esbuild/win32-ia32@0.25.4': + '@esbuild/win32-ia32@0.25.5': optional: true '@esbuild/win32-x64@0.25.2': optional: true - '@esbuild/win32-x64@0.25.3': + '@esbuild/win32-x64@0.25.4': optional: true - '@esbuild/win32-x64@0.25.4': + '@esbuild/win32-x64@0.25.5': optional: true '@eslint-community/eslint-utils@4.7.0(eslint@9.28.0(jiti@1.21.7))': @@ -7648,14 +7662,14 @@ snapshots: optionalDependencies: '@types/node': 22.15.29 - '@inquirer/confirm@5.1.12(@types/node@22.15.29)': + '@inquirer/confirm@5.1.10(@types/node@22.15.29)': dependencies: '@inquirer/core': 10.1.13(@types/node@22.15.29) '@inquirer/type': 3.0.7(@types/node@22.15.29) optionalDependencies: '@types/node': 22.15.29 - '@inquirer/confirm@5.1.6(@types/node@22.15.29)': + '@inquirer/confirm@5.1.12(@types/node@22.15.29)': dependencies: '@inquirer/core': 10.1.13(@types/node@22.15.29) '@inquirer/type': 3.0.7(@types/node@22.15.29) @@ -7715,7 +7729,7 @@ snapshots: optionalDependencies: '@types/node': 22.15.29 - '@inquirer/prompts@7.3.2(@types/node@22.15.29)': + '@inquirer/prompts@7.5.1(@types/node@22.15.29)': dependencies: '@inquirer/checkbox': 4.1.8(@types/node@22.15.29) '@inquirer/confirm': 5.1.12(@types/node@22.15.29) @@ -7797,7 +7811,7 @@ snapshots: jest-util: 29.7.0 slash: 3.0.0 - '@jest/core@29.7.0(ts-node@10.9.2(@types/node@22.15.29)(typescript@5.5.4))': + '@jest/core@29.7.0(ts-node@10.9.2(@types/node@22.15.29)(typescript@5.8.3))': dependencies: '@jest/console': 29.7.0 '@jest/reporters': 29.7.0 @@ -7811,7 +7825,7 @@ snapshots: exit: 0.1.2 graceful-fs: 4.2.11 jest-changed-files: 29.7.0 - jest-config: 29.7.0(@types/node@22.15.29)(ts-node@10.9.2(@types/node@22.15.29)(typescript@5.5.4)) + jest-config: 29.7.0(@types/node@22.15.29)(ts-node@10.9.2(@types/node@22.15.29)(typescript@5.8.3)) jest-haste-map: 29.7.0 jest-message-util: 29.7.0 jest-regex-util: 29.6.3 @@ -7997,27 +8011,30 @@ snapshots: '@leichtgewicht/ip-codec@2.0.5': {} - '@listr2/prompt-adapter-inquirer@2.0.18(@inquirer/prompts@7.3.2(@types/node@22.15.29))': + '@listr2/prompt-adapter-inquirer@2.0.22(@inquirer/prompts@7.5.1(@types/node@22.15.29))': dependencies: - '@inquirer/prompts': 7.3.2(@types/node@22.15.29) + '@inquirer/prompts': 7.5.1(@types/node@22.15.29) '@inquirer/type': 1.5.5 - '@lmdb/lmdb-darwin-arm64@3.2.6': + '@lmdb/lmdb-darwin-arm64@3.3.0': optional: true - '@lmdb/lmdb-darwin-x64@3.2.6': + '@lmdb/lmdb-darwin-x64@3.3.0': optional: true - '@lmdb/lmdb-linux-arm64@3.2.6': + '@lmdb/lmdb-linux-arm64@3.3.0': optional: true - '@lmdb/lmdb-linux-arm@3.2.6': + '@lmdb/lmdb-linux-arm@3.3.0': optional: true - '@lmdb/lmdb-linux-x64@3.2.6': + '@lmdb/lmdb-linux-x64@3.3.0': optional: true - '@lmdb/lmdb-win32-x64@3.2.6': + '@lmdb/lmdb-win32-arm64@3.3.0': + optional: true + + '@lmdb/lmdb-win32-x64@3.3.0': optional: true '@msgpackr-extract/msgpackr-extract-darwin-arm64@3.0.3': @@ -8106,37 +8123,37 @@ snapshots: '@napi-rs/nice-win32-x64-msvc': 1.0.1 optional: true - '@ng-bootstrap/ng-bootstrap@18.0.0(@angular/common@19.2.14(@angular/core@19.2.14(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@19.2.14(rxjs@7.8.2)(zone.js@0.15.1))(@angular/forms@19.2.14(@angular/common@19.2.14(@angular/core@19.2.14(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@19.2.14(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@19.2.14(@angular/common@19.2.14(@angular/core@19.2.14(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@19.2.14(rxjs@7.8.2)(zone.js@0.15.1)))(rxjs@7.8.2))(@angular/localize@19.2.14(@angular/compiler-cli@19.2.14(@angular/compiler@19.2.14)(typescript@5.5.4))(@angular/compiler@19.2.14))(@popperjs/core@2.11.8)(rxjs@7.8.2)': + '@ng-bootstrap/ng-bootstrap@19.0.0(@angular/common@20.0.5(@angular/core@20.0.5(@angular/compiler@20.0.5)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.0.5(@angular/compiler@20.0.5)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/forms@20.0.5(@angular/common@20.0.5(@angular/core@20.0.5(@angular/compiler@20.0.5)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.0.5(@angular/compiler@20.0.5)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@20.0.5(@angular/common@20.0.5(@angular/core@20.0.5(@angular/compiler@20.0.5)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.0.5(@angular/compiler@20.0.5)(rxjs@7.8.2)(zone.js@0.15.1)))(rxjs@7.8.2))(@angular/localize@20.0.5(@angular/compiler-cli@20.0.5(@angular/compiler@20.0.5)(typescript@5.8.3))(@angular/compiler@20.0.5))(@popperjs/core@2.11.8)(rxjs@7.8.2)': dependencies: - '@angular/common': 19.2.14(@angular/core@19.2.14(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2) - '@angular/core': 19.2.14(rxjs@7.8.2)(zone.js@0.15.1) - '@angular/forms': 19.2.14(@angular/common@19.2.14(@angular/core@19.2.14(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@19.2.14(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@19.2.14(@angular/common@19.2.14(@angular/core@19.2.14(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@19.2.14(rxjs@7.8.2)(zone.js@0.15.1)))(rxjs@7.8.2) - '@angular/localize': 19.2.14(@angular/compiler-cli@19.2.14(@angular/compiler@19.2.14)(typescript@5.5.4))(@angular/compiler@19.2.14) + '@angular/common': 20.0.5(@angular/core@20.0.5(@angular/compiler@20.0.5)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2) + '@angular/core': 20.0.5(@angular/compiler@20.0.5)(rxjs@7.8.2)(zone.js@0.15.1) + '@angular/forms': 20.0.5(@angular/common@20.0.5(@angular/core@20.0.5(@angular/compiler@20.0.5)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.0.5(@angular/compiler@20.0.5)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@20.0.5(@angular/common@20.0.5(@angular/core@20.0.5(@angular/compiler@20.0.5)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.0.5(@angular/compiler@20.0.5)(rxjs@7.8.2)(zone.js@0.15.1)))(rxjs@7.8.2) + '@angular/localize': 20.0.5(@angular/compiler-cli@20.0.5(@angular/compiler@20.0.5)(typescript@5.8.3))(@angular/compiler@20.0.5) '@popperjs/core': 2.11.8 rxjs: 7.8.2 tslib: 2.8.1 - '@ng-select/ng-select@14.9.0(@angular/common@19.2.14(@angular/core@19.2.14(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@19.2.14(rxjs@7.8.2)(zone.js@0.15.1))(@angular/forms@19.2.14(@angular/common@19.2.14(@angular/core@19.2.14(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@19.2.14(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@19.2.14(@angular/common@19.2.14(@angular/core@19.2.14(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@19.2.14(rxjs@7.8.2)(zone.js@0.15.1)))(rxjs@7.8.2))': + '@ng-select/ng-select@15.1.2(@angular/common@20.0.5(@angular/core@20.0.5(@angular/compiler@20.0.5)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.0.5(@angular/compiler@20.0.5)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/forms@20.0.5(@angular/common@20.0.5(@angular/core@20.0.5(@angular/compiler@20.0.5)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.0.5(@angular/compiler@20.0.5)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@20.0.5(@angular/common@20.0.5(@angular/core@20.0.5(@angular/compiler@20.0.5)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.0.5(@angular/compiler@20.0.5)(rxjs@7.8.2)(zone.js@0.15.1)))(rxjs@7.8.2))': dependencies: - '@angular/common': 19.2.14(@angular/core@19.2.14(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2) - '@angular/core': 19.2.14(rxjs@7.8.2)(zone.js@0.15.1) - '@angular/forms': 19.2.14(@angular/common@19.2.14(@angular/core@19.2.14(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@19.2.14(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@19.2.14(@angular/common@19.2.14(@angular/core@19.2.14(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@19.2.14(rxjs@7.8.2)(zone.js@0.15.1)))(rxjs@7.8.2) + '@angular/common': 20.0.5(@angular/core@20.0.5(@angular/compiler@20.0.5)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2) + '@angular/core': 20.0.5(@angular/compiler@20.0.5)(rxjs@7.8.2)(zone.js@0.15.1) + '@angular/forms': 20.0.5(@angular/common@20.0.5(@angular/core@20.0.5(@angular/compiler@20.0.5)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.0.5(@angular/compiler@20.0.5)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@20.0.5(@angular/common@20.0.5(@angular/core@20.0.5(@angular/compiler@20.0.5)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.0.5(@angular/compiler@20.0.5)(rxjs@7.8.2)(zone.js@0.15.1)))(rxjs@7.8.2) tslib: 2.8.1 - '@ngneat/dirty-check-forms@3.0.3(@angular/core@19.2.14(rxjs@7.8.2)(zone.js@0.15.1))(@angular/forms@19.2.14(@angular/common@19.2.14(@angular/core@19.2.14(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@19.2.14(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@19.2.14(@angular/common@19.2.14(@angular/core@19.2.14(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@19.2.14(rxjs@7.8.2)(zone.js@0.15.1)))(rxjs@7.8.2))(@angular/router@19.2.14(@angular/common@19.2.14(@angular/core@19.2.14(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@19.2.14(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@19.2.14(@angular/common@19.2.14(@angular/core@19.2.14(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@19.2.14(rxjs@7.8.2)(zone.js@0.15.1)))(rxjs@7.8.2))(lodash-es@4.17.21)(rxjs@7.8.2)': - dependencies: - '@angular/core': 19.2.14(rxjs@7.8.2)(zone.js@0.15.1) - '@angular/forms': 19.2.14(@angular/common@19.2.14(@angular/core@19.2.14(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@19.2.14(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@19.2.14(@angular/common@19.2.14(@angular/core@19.2.14(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@19.2.14(rxjs@7.8.2)(zone.js@0.15.1)))(rxjs@7.8.2) - '@angular/router': 19.2.14(@angular/common@19.2.14(@angular/core@19.2.14(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@19.2.14(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@19.2.14(@angular/common@19.2.14(@angular/core@19.2.14(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@19.2.14(rxjs@7.8.2)(zone.js@0.15.1)))(rxjs@7.8.2) + ? '@ngneat/dirty-check-forms@3.0.3(@angular/core@20.0.5(@angular/compiler@20.0.5)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/forms@20.0.5(@angular/common@20.0.5(@angular/core@20.0.5(@angular/compiler@20.0.5)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.0.5(@angular/compiler@20.0.5)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@20.0.5(@angular/common@20.0.5(@angular/core@20.0.5(@angular/compiler@20.0.5)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.0.5(@angular/compiler@20.0.5)(rxjs@7.8.2)(zone.js@0.15.1)))(rxjs@7.8.2))(@angular/router@20.0.5(@angular/common@20.0.5(@angular/core@20.0.5(@angular/compiler@20.0.5)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.0.5(@angular/compiler@20.0.5)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@20.0.5(@angular/common@20.0.5(@angular/core@20.0.5(@angular/compiler@20.0.5)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.0.5(@angular/compiler@20.0.5)(rxjs@7.8.2)(zone.js@0.15.1)))(rxjs@7.8.2))(lodash-es@4.17.21)(rxjs@7.8.2)' + : dependencies: + '@angular/core': 20.0.5(@angular/compiler@20.0.5)(rxjs@7.8.2)(zone.js@0.15.1) + '@angular/forms': 20.0.5(@angular/common@20.0.5(@angular/core@20.0.5(@angular/compiler@20.0.5)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.0.5(@angular/compiler@20.0.5)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@20.0.5(@angular/common@20.0.5(@angular/core@20.0.5(@angular/compiler@20.0.5)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.0.5(@angular/compiler@20.0.5)(rxjs@7.8.2)(zone.js@0.15.1)))(rxjs@7.8.2) + '@angular/router': 20.0.5(@angular/common@20.0.5(@angular/core@20.0.5(@angular/compiler@20.0.5)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.0.5(@angular/compiler@20.0.5)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@20.0.5(@angular/common@20.0.5(@angular/core@20.0.5(@angular/compiler@20.0.5)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.0.5(@angular/compiler@20.0.5)(rxjs@7.8.2)(zone.js@0.15.1)))(rxjs@7.8.2) lodash-es: 4.17.21 rxjs: 7.8.2 tslib: 2.8.1 - '@ngtools/webpack@19.2.14(@angular/compiler-cli@19.2.14(@angular/compiler@19.2.14)(typescript@5.5.4))(typescript@5.5.4)(webpack@5.98.0)': + '@ngtools/webpack@20.0.4(@angular/compiler-cli@20.0.5(@angular/compiler@20.0.5)(typescript@5.8.3))(typescript@5.8.3)(webpack@5.99.8(esbuild@0.25.5))': dependencies: - '@angular/compiler-cli': 19.2.14(@angular/compiler@19.2.14)(typescript@5.5.4) - typescript: 5.5.4 - webpack: 5.98.0(esbuild@0.25.4) + '@angular/compiler-cli': 20.0.5(@angular/compiler@20.0.5)(typescript@5.8.3) + typescript: 5.8.3 + webpack: 5.99.8(esbuild@0.25.5) '@nodelib/fs.scandir@2.1.5': dependencies: @@ -8162,7 +8179,7 @@ snapshots: '@npmcli/fs@4.0.0': dependencies: - semver: 7.7.1 + semver: 7.7.2 '@npmcli/git@6.0.3': dependencies: @@ -8172,7 +8189,7 @@ snapshots: npm-pick-manifest: 10.0.0 proc-log: 5.0.0 promise-retry: 2.0.1 - semver: 7.7.1 + semver: 7.7.2 which: 5.0.0 '@npmcli/installed-package-contents@3.0.0': @@ -8189,7 +8206,7 @@ snapshots: hosted-git-info: 8.1.0 json-parse-even-better-errors: 4.0.0 proc-log: 5.0.0 - semver: 7.7.1 + semver: 7.7.2 validate-npm-package-license: 3.0.4 '@npmcli/promise-spawn@8.0.2': @@ -8337,67 +8354,70 @@ snapshots: '@popperjs/core@2.11.8': {} - '@rollup/rollup-android-arm-eabi@4.34.8': + '@rollup/rollup-android-arm-eabi@4.40.2': optional: true - '@rollup/rollup-android-arm64@4.34.8': + '@rollup/rollup-android-arm64@4.40.2': optional: true - '@rollup/rollup-darwin-arm64@4.34.8': + '@rollup/rollup-darwin-arm64@4.40.2': optional: true - '@rollup/rollup-darwin-x64@4.34.8': + '@rollup/rollup-darwin-x64@4.40.2': optional: true - '@rollup/rollup-freebsd-arm64@4.34.8': + '@rollup/rollup-freebsd-arm64@4.40.2': optional: true - '@rollup/rollup-freebsd-x64@4.34.8': + '@rollup/rollup-freebsd-x64@4.40.2': optional: true - '@rollup/rollup-linux-arm-gnueabihf@4.34.8': + '@rollup/rollup-linux-arm-gnueabihf@4.40.2': optional: true - '@rollup/rollup-linux-arm-musleabihf@4.34.8': + '@rollup/rollup-linux-arm-musleabihf@4.40.2': optional: true - '@rollup/rollup-linux-arm64-gnu@4.34.8': + '@rollup/rollup-linux-arm64-gnu@4.40.2': optional: true - '@rollup/rollup-linux-arm64-musl@4.34.8': + '@rollup/rollup-linux-arm64-musl@4.40.2': optional: true - '@rollup/rollup-linux-loongarch64-gnu@4.34.8': + '@rollup/rollup-linux-loongarch64-gnu@4.40.2': optional: true - '@rollup/rollup-linux-powerpc64le-gnu@4.34.8': + '@rollup/rollup-linux-powerpc64le-gnu@4.40.2': optional: true - '@rollup/rollup-linux-riscv64-gnu@4.34.8': + '@rollup/rollup-linux-riscv64-gnu@4.40.2': optional: true - '@rollup/rollup-linux-s390x-gnu@4.34.8': + '@rollup/rollup-linux-riscv64-musl@4.40.2': optional: true - '@rollup/rollup-linux-x64-gnu@4.34.8': + '@rollup/rollup-linux-s390x-gnu@4.40.2': optional: true - '@rollup/rollup-linux-x64-musl@4.34.8': + '@rollup/rollup-linux-x64-gnu@4.40.2': optional: true - '@rollup/rollup-win32-arm64-msvc@4.34.8': + '@rollup/rollup-linux-x64-musl@4.40.2': optional: true - '@rollup/rollup-win32-ia32-msvc@4.34.8': + '@rollup/rollup-win32-arm64-msvc@4.40.2': optional: true - '@rollup/rollup-win32-x64-msvc@4.34.8': + '@rollup/rollup-win32-ia32-msvc@4.40.2': optional: true - '@schematics/angular@19.2.14(chokidar@4.0.3)': + '@rollup/rollup-win32-x64-msvc@4.40.2': + optional: true + + '@schematics/angular@20.0.4(chokidar@4.0.3)': dependencies: - '@angular-devkit/core': 19.2.14(chokidar@4.0.3) - '@angular-devkit/schematics': 19.2.14(chokidar@4.0.3) + '@angular-devkit/core': 20.0.4(chokidar@4.0.3) + '@angular-devkit/schematics': 20.0.4(chokidar@4.0.3) jsonc-parser: 3.3.1 transitivePeerDependencies: - chokidar @@ -8436,8 +8456,6 @@ snapshots: '@sinclair/typebox@0.27.8': {} - '@sindresorhus/merge-streams@2.3.0': {} - '@sinonjs/commons@3.0.0': dependencies: type-detect: 4.0.8 @@ -8484,23 +8502,23 @@ snapshots: dependencies: '@babel/types': 7.27.3 - '@types/body-parser@1.19.5': + '@types/body-parser@1.19.6': dependencies: '@types/connect': 3.4.38 - '@types/node': 22.15.29 + '@types/node': 22.15.33 '@types/bonjour@3.5.13': dependencies: - '@types/node': 22.15.29 + '@types/node': 22.15.33 '@types/connect-history-api-fallback@1.5.4': dependencies: '@types/express-serve-static-core': 5.0.6 - '@types/node': 22.15.29 + '@types/node': 22.15.33 '@types/connect@3.4.38': dependencies: - '@types/node': 22.15.29 + '@types/node': 22.15.33 '@types/eslint-scope@3.7.7': dependencies: @@ -8512,40 +8530,40 @@ snapshots: '@types/estree': 1.0.7 '@types/json-schema': 7.0.15 - '@types/estree@1.0.6': {} - '@types/estree@1.0.7': {} + '@types/estree@1.0.8': {} + '@types/express-serve-static-core@4.19.6': dependencies: - '@types/node': 22.15.29 + '@types/node': 22.15.33 '@types/qs': 6.14.0 '@types/range-parser': 1.2.7 - '@types/send': 0.17.4 + '@types/send': 0.17.5 '@types/express-serve-static-core@5.0.6': dependencies: - '@types/node': 22.15.29 + '@types/node': 22.15.33 '@types/qs': 6.14.0 '@types/range-parser': 1.2.7 - '@types/send': 0.17.4 + '@types/send': 0.17.5 - '@types/express@4.17.22': + '@types/express@4.17.23': dependencies: - '@types/body-parser': 1.19.5 + '@types/body-parser': 1.19.6 '@types/express-serve-static-core': 4.19.6 '@types/qs': 6.14.0 - '@types/serve-static': 1.15.7 + '@types/serve-static': 1.15.8 '@types/graceful-fs@4.1.9': dependencies: '@types/node': 22.15.29 - '@types/http-errors@2.0.4': {} + '@types/http-errors@2.0.5': {} '@types/http-proxy@1.17.16': dependencies: - '@types/node': 22.15.29 + '@types/node': 22.15.33 '@types/istanbul-lib-coverage@2.0.6': {} @@ -8574,36 +8592,40 @@ snapshots: '@types/node-forge@1.3.11': dependencies: - '@types/node': 22.15.29 + '@types/node': 22.15.33 '@types/node@22.15.29': dependencies: undici-types: 6.21.0 + '@types/node@22.15.33': + dependencies: + undici-types: 6.21.0 + '@types/qs@6.14.0': {} '@types/range-parser@1.2.7': {} '@types/retry@0.12.2': {} - '@types/send@0.17.4': + '@types/send@0.17.5': dependencies: '@types/mime': 1.3.5 - '@types/node': 22.15.29 + '@types/node': 22.15.33 '@types/serve-index@1.9.4': dependencies: - '@types/express': 4.17.22 + '@types/express': 4.17.23 - '@types/serve-static@1.15.7': + '@types/serve-static@1.15.8': dependencies: - '@types/http-errors': 2.0.4 - '@types/node': 22.15.29 - '@types/send': 0.17.4 + '@types/http-errors': 2.0.5 + '@types/node': 22.15.33 + '@types/send': 0.17.5 '@types/sockjs@0.3.36': dependencies: - '@types/node': 22.15.29 + '@types/node': 22.15.33 '@types/stack-utils@2.0.3': {} @@ -8611,7 +8633,7 @@ snapshots: '@types/ws@8.18.1': dependencies: - '@types/node': 22.15.29 + '@types/node': 22.15.33 '@types/yargs-parser@21.0.3': {} @@ -8619,101 +8641,101 @@ snapshots: dependencies: '@types/yargs-parser': 21.0.3 - '@typescript-eslint/eslint-plugin@8.33.0(@typescript-eslint/parser@8.33.0(eslint@9.28.0(jiti@1.21.7))(typescript@5.5.4))(eslint@9.28.0(jiti@1.21.7))(typescript@5.5.4)': + '@typescript-eslint/eslint-plugin@8.35.0(@typescript-eslint/parser@8.35.0(eslint@9.28.0(jiti@1.21.7))(typescript@5.8.3))(eslint@9.28.0(jiti@1.21.7))(typescript@5.8.3)': dependencies: '@eslint-community/regexpp': 4.12.1 - '@typescript-eslint/parser': 8.33.0(eslint@9.28.0(jiti@1.21.7))(typescript@5.5.4) - '@typescript-eslint/scope-manager': 8.33.0 - '@typescript-eslint/type-utils': 8.33.0(eslint@9.28.0(jiti@1.21.7))(typescript@5.5.4) - '@typescript-eslint/utils': 8.33.0(eslint@9.28.0(jiti@1.21.7))(typescript@5.5.4) - '@typescript-eslint/visitor-keys': 8.33.0 + '@typescript-eslint/parser': 8.35.0(eslint@9.28.0(jiti@1.21.7))(typescript@5.8.3) + '@typescript-eslint/scope-manager': 8.35.0 + '@typescript-eslint/type-utils': 8.35.0(eslint@9.28.0(jiti@1.21.7))(typescript@5.8.3) + '@typescript-eslint/utils': 8.35.0(eslint@9.28.0(jiti@1.21.7))(typescript@5.8.3) + '@typescript-eslint/visitor-keys': 8.35.0 eslint: 9.28.0(jiti@1.21.7) graphemer: 1.4.0 ignore: 7.0.5 natural-compare: 1.4.0 - ts-api-utils: 2.1.0(typescript@5.5.4) - typescript: 5.5.4 + ts-api-utils: 2.1.0(typescript@5.8.3) + typescript: 5.8.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/parser@8.33.0(eslint@9.28.0(jiti@1.21.7))(typescript@5.5.4)': + '@typescript-eslint/parser@8.35.0(eslint@9.28.0(jiti@1.21.7))(typescript@5.8.3)': dependencies: - '@typescript-eslint/scope-manager': 8.33.0 - '@typescript-eslint/types': 8.33.0 - '@typescript-eslint/typescript-estree': 8.33.0(typescript@5.5.4) - '@typescript-eslint/visitor-keys': 8.33.0 + '@typescript-eslint/scope-manager': 8.35.0 + '@typescript-eslint/types': 8.35.0 + '@typescript-eslint/typescript-estree': 8.35.0(typescript@5.8.3) + '@typescript-eslint/visitor-keys': 8.35.0 debug: 4.4.1 eslint: 9.28.0(jiti@1.21.7) - typescript: 5.5.4 + typescript: 5.8.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/project-service@8.33.0(typescript@5.5.4)': + '@typescript-eslint/project-service@8.35.0(typescript@5.8.3)': dependencies: - '@typescript-eslint/tsconfig-utils': 8.33.0(typescript@5.5.4) - '@typescript-eslint/types': 8.33.0 + '@typescript-eslint/tsconfig-utils': 8.35.0(typescript@5.8.3) + '@typescript-eslint/types': 8.35.0 debug: 4.4.1 + typescript: 5.8.3 transitivePeerDependencies: - supports-color - - typescript - '@typescript-eslint/scope-manager@8.33.0': + '@typescript-eslint/scope-manager@8.35.0': dependencies: - '@typescript-eslint/types': 8.33.0 - '@typescript-eslint/visitor-keys': 8.33.0 + '@typescript-eslint/types': 8.35.0 + '@typescript-eslint/visitor-keys': 8.35.0 - '@typescript-eslint/tsconfig-utils@8.33.0(typescript@5.5.4)': + '@typescript-eslint/tsconfig-utils@8.35.0(typescript@5.8.3)': dependencies: - typescript: 5.5.4 + typescript: 5.8.3 - '@typescript-eslint/type-utils@8.33.0(eslint@9.28.0(jiti@1.21.7))(typescript@5.5.4)': + '@typescript-eslint/type-utils@8.35.0(eslint@9.28.0(jiti@1.21.7))(typescript@5.8.3)': dependencies: - '@typescript-eslint/typescript-estree': 8.33.0(typescript@5.5.4) - '@typescript-eslint/utils': 8.33.0(eslint@9.28.0(jiti@1.21.7))(typescript@5.5.4) + '@typescript-eslint/typescript-estree': 8.35.0(typescript@5.8.3) + '@typescript-eslint/utils': 8.35.0(eslint@9.28.0(jiti@1.21.7))(typescript@5.8.3) debug: 4.4.1 eslint: 9.28.0(jiti@1.21.7) - ts-api-utils: 2.1.0(typescript@5.5.4) - typescript: 5.5.4 + ts-api-utils: 2.1.0(typescript@5.8.3) + typescript: 5.8.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/types@8.33.0': {} + '@typescript-eslint/types@8.35.0': {} - '@typescript-eslint/typescript-estree@8.33.0(typescript@5.5.4)': + '@typescript-eslint/typescript-estree@8.35.0(typescript@5.8.3)': dependencies: - '@typescript-eslint/project-service': 8.33.0(typescript@5.5.4) - '@typescript-eslint/tsconfig-utils': 8.33.0(typescript@5.5.4) - '@typescript-eslint/types': 8.33.0 - '@typescript-eslint/visitor-keys': 8.33.0 + '@typescript-eslint/project-service': 8.35.0(typescript@5.8.3) + '@typescript-eslint/tsconfig-utils': 8.35.0(typescript@5.8.3) + '@typescript-eslint/types': 8.35.0 + '@typescript-eslint/visitor-keys': 8.35.0 debug: 4.4.1 fast-glob: 3.3.3 is-glob: 4.0.3 minimatch: 9.0.5 semver: 7.7.2 - ts-api-utils: 2.1.0(typescript@5.5.4) - typescript: 5.5.4 + ts-api-utils: 2.1.0(typescript@5.8.3) + typescript: 5.8.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/utils@8.33.0(eslint@9.28.0(jiti@1.21.7))(typescript@5.5.4)': + '@typescript-eslint/utils@8.35.0(eslint@9.28.0(jiti@1.21.7))(typescript@5.8.3)': dependencies: '@eslint-community/eslint-utils': 4.7.0(eslint@9.28.0(jiti@1.21.7)) - '@typescript-eslint/scope-manager': 8.33.0 - '@typescript-eslint/types': 8.33.0 - '@typescript-eslint/typescript-estree': 8.33.0(typescript@5.5.4) + '@typescript-eslint/scope-manager': 8.35.0 + '@typescript-eslint/types': 8.35.0 + '@typescript-eslint/typescript-estree': 8.35.0(typescript@5.8.3) eslint: 9.28.0(jiti@1.21.7) - typescript: 5.5.4 + typescript: 5.8.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/visitor-keys@8.33.0': + '@typescript-eslint/visitor-keys@8.35.0': dependencies: - '@typescript-eslint/types': 8.33.0 - eslint-visitor-keys: 4.2.0 + '@typescript-eslint/types': 8.35.0 + eslint-visitor-keys: 4.2.1 - '@vitejs/plugin-basic-ssl@1.2.0(vite@6.2.7(@types/node@22.15.29)(jiti@1.21.7)(less@4.2.2)(sass@1.85.0)(terser@5.39.0)(yaml@2.7.0))': + '@vitejs/plugin-basic-ssl@2.0.0(vite@6.3.5(@types/node@22.15.29)(jiti@1.21.7)(less@4.3.0)(sass@1.88.0)(terser@5.39.1)(yaml@2.7.0))': dependencies: - vite: 6.2.7(@types/node@22.15.29)(jiti@1.21.7)(less@4.2.2)(sass@1.85.0)(terser@5.39.0)(yaml@2.7.0) + vite: 6.3.5(@types/node@22.15.29)(jiti@1.21.7)(less@4.3.0)(sass@1.88.0)(terser@5.39.1)(yaml@2.7.0) '@webassemblyjs/ast@1.14.1': dependencies: @@ -8821,6 +8843,8 @@ snapshots: acorn@8.14.1: {} + acorn@8.15.0: {} + adjust-sourcemap-loader@4.0.0: dependencies: loader-utils: 2.0.4 @@ -8906,14 +8930,14 @@ snapshots: asynckit@0.4.0: {} - autoprefixer@10.4.20(postcss@8.5.2): + autoprefixer@10.4.21(postcss@8.5.3): dependencies: browserslist: 4.25.0 - caniuse-lite: 1.0.30001720 + caniuse-lite: 1.0.30001726 fraction.js: 4.3.7 normalize-range: 0.1.2 picocolors: 1.1.1 - postcss: 8.5.2 + postcss: 8.5.3 postcss-value-parser: 4.2.0 axobject-query@4.1.0: {} @@ -8931,12 +8955,11 @@ snapshots: transitivePeerDependencies: - supports-color - babel-loader@9.2.1(@babel/core@7.26.10)(webpack@5.98.0): + babel-loader@10.0.0(@babel/core@7.27.1)(webpack@5.99.8(esbuild@0.25.5)): dependencies: - '@babel/core': 7.26.10 - find-cache-dir: 4.0.0 - schema-utils: 4.3.2 - webpack: 5.98.0(esbuild@0.25.4) + '@babel/core': 7.27.1 + find-up: 5.0.0 + webpack: 5.99.8(esbuild@0.25.5) babel-plugin-istanbul@6.1.1: dependencies: @@ -8955,27 +8978,27 @@ snapshots: '@types/babel__core': 7.20.5 '@types/babel__traverse': 7.20.7 - babel-plugin-polyfill-corejs2@0.4.13(@babel/core@7.26.10): + babel-plugin-polyfill-corejs2@0.4.13(@babel/core@7.27.1): dependencies: - '@babel/compat-data': 7.27.3 - '@babel/core': 7.26.10 - '@babel/helper-define-polyfill-provider': 0.6.4(@babel/core@7.26.10) + '@babel/compat-data': 7.27.7 + '@babel/core': 7.27.1 + '@babel/helper-define-polyfill-provider': 0.6.4(@babel/core@7.27.1) semver: 6.3.1 transitivePeerDependencies: - supports-color - babel-plugin-polyfill-corejs3@0.11.1(@babel/core@7.26.10): + babel-plugin-polyfill-corejs3@0.11.1(@babel/core@7.27.1): dependencies: - '@babel/core': 7.26.10 - '@babel/helper-define-polyfill-provider': 0.6.4(@babel/core@7.26.10) - core-js-compat: 3.42.0 + '@babel/core': 7.27.1 + '@babel/helper-define-polyfill-provider': 0.6.4(@babel/core@7.27.1) + core-js-compat: 3.43.0 transitivePeerDependencies: - supports-color - babel-plugin-polyfill-regenerator@0.6.4(@babel/core@7.26.10): + babel-plugin-polyfill-regenerator@0.6.4(@babel/core@7.27.1): dependencies: - '@babel/core': 7.26.10 - '@babel/helper-define-polyfill-provider': 0.6.4(@babel/core@7.26.10) + '@babel/core': 7.27.1 + '@babel/helper-define-polyfill-provider': 0.6.4(@babel/core@7.27.1) transitivePeerDependencies: - supports-color @@ -9003,11 +9026,12 @@ snapshots: balanced-match@1.0.2: {} - base64-js@1.5.1: {} + base64-js@1.5.1: + optional: true batch@0.6.1: {} - beasties@0.3.2: + beasties@0.3.4: dependencies: css-select: 5.1.0 css-what: 6.1.0 @@ -9015,7 +9039,7 @@ snapshots: domhandler: 5.0.3 htmlparser2: 10.0.0 picocolors: 1.1.1 - postcss: 8.5.2 + postcss: 8.5.4 postcss-media-query-parser: 0.2.3 before-after-hook@2.2.3: {} @@ -9029,6 +9053,7 @@ snapshots: buffer: 5.7.1 inherits: 2.0.4 readable-stream: 3.6.2 + optional: true body-parser@1.20.3: dependencies: @@ -9092,6 +9117,7 @@ snapshots: dependencies: base64-js: 1.5.1 ieee754: 1.2.1 + optional: true bundle-name@4.1.0: dependencies: @@ -9132,6 +9158,8 @@ snapshots: caniuse-lite@1.0.30001720: {} + caniuse-lite@1.0.30001726: {} + canvas@3.0.0: dependencies: node-addon-api: 7.1.1 @@ -9144,6 +9172,8 @@ snapshots: ansi-styles: 4.3.0 supports-color: 7.2.0 + chalk@5.4.1: {} + char-regex@1.0.2: {} chardet@0.7.0: {} @@ -9177,10 +9207,6 @@ snapshots: cjs-module-lexer@1.2.3: {} - cli-cursor@3.1.0: - dependencies: - restore-cursor: 3.1.0 - cli-cursor@5.0.0: dependencies: restore-cursor: 5.1.0 @@ -9200,14 +9226,18 @@ snapshots: strip-ansi: 6.0.1 wrap-ansi: 7.0.0 + cliui@9.0.1: + dependencies: + string-width: 7.2.0 + strip-ansi: 7.1.0 + wrap-ansi: 9.0.0 + clone-deep@4.0.1: dependencies: is-plain-object: 2.0.4 kind-of: 6.0.3 shallow-clone: 3.0.1 - clone@1.0.4: {} - co@4.6.0: {} collect-v8-coverage@1.0.2: {} @@ -9226,8 +9256,6 @@ snapshots: commander@2.20.3: {} - common-path-prefix@3.0.0: {} - compressible@2.0.18: dependencies: mime-db: 1.54.0 @@ -9266,38 +9294,37 @@ snapshots: dependencies: is-what: 3.14.1 - copy-webpack-plugin@12.0.2(webpack@5.98.0): + copy-webpack-plugin@13.0.0(webpack@5.99.8(esbuild@0.25.5)): dependencies: - fast-glob: 3.3.3 glob-parent: 6.0.2 - globby: 14.1.0 normalize-path: 3.0.0 schema-utils: 4.3.2 serialize-javascript: 6.0.2 - webpack: 5.98.0(esbuild@0.25.4) + tinyglobby: 0.2.14 + webpack: 5.99.8(esbuild@0.25.5) - core-js-compat@3.42.0: + core-js-compat@3.43.0: dependencies: browserslist: 4.25.0 core-util-is@1.0.3: {} - cosmiconfig@9.0.0(typescript@5.5.4): + cosmiconfig@9.0.0(typescript@5.8.3): dependencies: env-paths: 2.2.1 import-fresh: 3.3.1 js-yaml: 4.1.0 parse-json: 5.2.0 optionalDependencies: - typescript: 5.5.4 + typescript: 5.8.3 - create-jest@29.7.0(@types/node@22.15.29)(ts-node@10.9.2(@types/node@22.15.29)(typescript@5.5.4)): + create-jest@29.7.0(@types/node@22.15.29)(ts-node@10.9.2(@types/node@22.15.29)(typescript@5.8.3)): dependencies: '@jest/types': 29.6.3 chalk: 4.1.2 exit: 0.1.2 graceful-fs: 4.2.11 - jest-config: 29.7.0(@types/node@22.15.29)(ts-node@10.9.2(@types/node@22.15.29)(typescript@5.5.4)) + jest-config: 29.7.0(@types/node@22.15.29)(ts-node@10.9.2(@types/node@22.15.29)(typescript@5.8.3)) jest-util: 29.7.0 prompts: 2.4.2 transitivePeerDependencies: @@ -9314,18 +9341,18 @@ snapshots: shebang-command: 2.0.0 which: 2.0.2 - css-loader@7.1.2(webpack@5.98.0): + css-loader@7.1.2(webpack@5.99.8(esbuild@0.25.5)): dependencies: - icss-utils: 5.1.0(postcss@8.5.2) - postcss: 8.5.2 - postcss-modules-extract-imports: 3.1.0(postcss@8.5.2) - postcss-modules-local-by-default: 4.2.0(postcss@8.5.2) - postcss-modules-scope: 3.2.1(postcss@8.5.2) - postcss-modules-values: 4.0.0(postcss@8.5.2) + icss-utils: 5.1.0(postcss@8.5.4) + postcss: 8.5.4 + postcss-modules-extract-imports: 3.1.0(postcss@8.5.4) + postcss-modules-local-by-default: 4.2.0(postcss@8.5.4) + postcss-modules-scope: 3.2.1(postcss@8.5.4) + postcss-modules-values: 4.0.0(postcss@8.5.4) postcss-value-parser: 4.2.0 - semver: 7.7.1 + semver: 7.7.2 optionalDependencies: - webpack: 5.98.0(esbuild@0.25.4) + webpack: 5.99.8(esbuild@0.25.5) css-select@5.1.0: dependencies: @@ -9389,10 +9416,6 @@ snapshots: bundle-name: 4.1.0 default-browser-id: 5.0.0 - defaults@1.0.4: - dependencies: - clone: 1.0.4 - define-lazy-prop@3.0.0: {} delayed-stream@1.0.0: {} @@ -9490,6 +9513,11 @@ snapshots: graceful-fs: 4.2.11 tapable: 2.2.2 + enhanced-resolve@5.18.2: + dependencies: + graceful-fs: 4.2.11 + tapable: 2.2.2 + entities@4.5.0: {} entities@6.0.0: {} @@ -9521,10 +9549,10 @@ snapshots: esbuild-wasm@0.25.2: {} - esbuild-wasm@0.25.3: {} - esbuild-wasm@0.25.4: {} + esbuild-wasm@0.25.5: {} + esbuild@0.25.2: optionalDependencies: '@esbuild/aix-ppc64': 0.25.2 @@ -9554,35 +9582,6 @@ snapshots: '@esbuild/win32-x64': 0.25.2 optional: true - esbuild@0.25.3: - optionalDependencies: - '@esbuild/aix-ppc64': 0.25.3 - '@esbuild/android-arm': 0.25.3 - '@esbuild/android-arm64': 0.25.3 - '@esbuild/android-x64': 0.25.3 - '@esbuild/darwin-arm64': 0.25.3 - '@esbuild/darwin-x64': 0.25.3 - '@esbuild/freebsd-arm64': 0.25.3 - '@esbuild/freebsd-x64': 0.25.3 - '@esbuild/linux-arm': 0.25.3 - '@esbuild/linux-arm64': 0.25.3 - '@esbuild/linux-ia32': 0.25.3 - '@esbuild/linux-loong64': 0.25.3 - '@esbuild/linux-mips64el': 0.25.3 - '@esbuild/linux-ppc64': 0.25.3 - '@esbuild/linux-riscv64': 0.25.3 - '@esbuild/linux-s390x': 0.25.3 - '@esbuild/linux-x64': 0.25.3 - '@esbuild/netbsd-arm64': 0.25.3 - '@esbuild/netbsd-x64': 0.25.3 - '@esbuild/openbsd-arm64': 0.25.3 - '@esbuild/openbsd-x64': 0.25.3 - '@esbuild/sunos-x64': 0.25.3 - '@esbuild/win32-arm64': 0.25.3 - '@esbuild/win32-ia32': 0.25.3 - '@esbuild/win32-x64': 0.25.3 - optional: true - esbuild@0.25.4: optionalDependencies: '@esbuild/aix-ppc64': 0.25.4 @@ -9610,6 +9609,35 @@ snapshots: '@esbuild/win32-arm64': 0.25.4 '@esbuild/win32-ia32': 0.25.4 '@esbuild/win32-x64': 0.25.4 + optional: true + + esbuild@0.25.5: + optionalDependencies: + '@esbuild/aix-ppc64': 0.25.5 + '@esbuild/android-arm': 0.25.5 + '@esbuild/android-arm64': 0.25.5 + '@esbuild/android-x64': 0.25.5 + '@esbuild/darwin-arm64': 0.25.5 + '@esbuild/darwin-x64': 0.25.5 + '@esbuild/freebsd-arm64': 0.25.5 + '@esbuild/freebsd-x64': 0.25.5 + '@esbuild/linux-arm': 0.25.5 + '@esbuild/linux-arm64': 0.25.5 + '@esbuild/linux-ia32': 0.25.5 + '@esbuild/linux-loong64': 0.25.5 + '@esbuild/linux-mips64el': 0.25.5 + '@esbuild/linux-ppc64': 0.25.5 + '@esbuild/linux-riscv64': 0.25.5 + '@esbuild/linux-s390x': 0.25.5 + '@esbuild/linux-x64': 0.25.5 + '@esbuild/netbsd-arm64': 0.25.5 + '@esbuild/netbsd-x64': 0.25.5 + '@esbuild/openbsd-arm64': 0.25.5 + '@esbuild/openbsd-x64': 0.25.5 + '@esbuild/sunos-x64': 0.25.5 + '@esbuild/win32-arm64': 0.25.5 + '@esbuild/win32-ia32': 0.25.5 + '@esbuild/win32-x64': 0.25.5 escalade@3.2.0: {} @@ -9641,6 +9669,8 @@ snapshots: eslint-visitor-keys@4.2.0: {} + eslint-visitor-keys@4.2.1: {} + eslint@9.28.0(jiti@1.21.7): dependencies: '@eslint-community/eslint-utils': 4.7.0(eslint@9.28.0(jiti@1.21.7)) @@ -9840,11 +9870,6 @@ snapshots: transitivePeerDependencies: - supports-color - find-cache-dir@4.0.0: - dependencies: - common-path-prefix: 3.0.0 - pkg-dir: 7.0.0 - find-up@4.1.0: dependencies: locate-path: 5.0.0 @@ -9855,11 +9880,6 @@ snapshots: locate-path: 6.0.0 path-exists: 4.0.0 - find-up@6.3.0: - dependencies: - locate-path: 7.2.0 - path-exists: 5.0.0 - flat-cache@4.0.1: dependencies: flatted: 3.3.3 @@ -9974,15 +9994,6 @@ snapshots: globals@14.0.0: {} - globby@14.1.0: - dependencies: - '@sindresorhus/merge-streams': 2.3.0 - fast-glob: 3.3.3 - ignore: 7.0.5 - path-type: 6.0.0 - slash: 5.1.0 - unicorn-magic: 0.3.0 - gopd@1.2.0: {} graceful-fs@4.2.11: {} @@ -10059,7 +10070,7 @@ snapshots: transitivePeerDependencies: - supports-color - http-proxy-middleware@2.0.9(@types/express@4.17.22): + http-proxy-middleware@2.0.9(@types/express@4.17.23): dependencies: '@types/http-proxy': 1.17.16 http-proxy: 1.18.1(debug@4.4.1) @@ -10067,7 +10078,7 @@ snapshots: is-plain-obj: 3.0.0 micromatch: 4.0.8 optionalDependencies: - '@types/express': 4.17.22 + '@types/express': 4.17.23 transitivePeerDependencies: - debug @@ -10116,11 +10127,12 @@ snapshots: dependencies: safer-buffer: 2.1.2 - icss-utils@5.1.0(postcss@8.5.2): + icss-utils@5.1.0(postcss@8.5.4): dependencies: - postcss: 8.5.2 + postcss: 8.5.4 - ieee754@1.2.1: {} + ieee754@1.2.1: + optional: true ignore-walk@7.0.0: dependencies: @@ -10202,7 +10214,7 @@ snapshots: dependencies: is-docker: 3.0.0 - is-interactive@1.0.0: {} + is-interactive@2.0.0: {} is-network-error@1.1.0: {} @@ -10220,7 +10232,9 @@ snapshots: is-stream@2.0.1: {} - is-unicode-supported@0.1.0: {} + is-unicode-supported@1.3.0: {} + + is-unicode-supported@2.1.0: {} is-what@3.14.1: {} @@ -10250,11 +10264,11 @@ snapshots: istanbul-lib-instrument@6.0.3: dependencies: - '@babel/core': 7.26.10 + '@babel/core': 7.27.4 '@babel/parser': 7.27.4 '@istanbuljs/schema': 0.1.3 istanbul-lib-coverage: 3.2.2 - semver: 7.7.1 + semver: 7.7.2 transitivePeerDependencies: - supports-color @@ -10322,16 +10336,16 @@ snapshots: - babel-plugin-macros - supports-color - jest-cli@29.7.0(@types/node@22.15.29)(ts-node@10.9.2(@types/node@22.15.29)(typescript@5.5.4)): + jest-cli@29.7.0(@types/node@22.15.29)(ts-node@10.9.2(@types/node@22.15.29)(typescript@5.8.3)): dependencies: - '@jest/core': 29.7.0(ts-node@10.9.2(@types/node@22.15.29)(typescript@5.5.4)) + '@jest/core': 29.7.0(ts-node@10.9.2(@types/node@22.15.29)(typescript@5.8.3)) '@jest/test-result': 29.7.0 '@jest/types': 29.6.3 chalk: 4.1.2 - create-jest: 29.7.0(@types/node@22.15.29)(ts-node@10.9.2(@types/node@22.15.29)(typescript@5.5.4)) + create-jest: 29.7.0(@types/node@22.15.29)(ts-node@10.9.2(@types/node@22.15.29)(typescript@5.8.3)) exit: 0.1.2 import-local: 3.1.0 - jest-config: 29.7.0(@types/node@22.15.29)(ts-node@10.9.2(@types/node@22.15.29)(typescript@5.5.4)) + jest-config: 29.7.0(@types/node@22.15.29)(ts-node@10.9.2(@types/node@22.15.29)(typescript@5.8.3)) jest-util: 29.7.0 jest-validate: 29.7.0 yargs: 17.7.2 @@ -10341,7 +10355,7 @@ snapshots: - supports-color - ts-node - jest-config@29.7.0(@types/node@22.15.29)(ts-node@10.9.2(@types/node@22.15.29)(typescript@5.5.4)): + jest-config@29.7.0(@types/node@22.15.29)(ts-node@10.9.2(@types/node@22.15.29)(typescript@5.8.3)): dependencies: '@babel/core': 7.27.4 '@jest/test-sequencer': 29.7.0 @@ -10367,7 +10381,7 @@ snapshots: strip-json-comments: 3.1.1 optionalDependencies: '@types/node': 22.15.29 - ts-node: 10.9.2(@types/node@22.15.29)(typescript@5.5.4) + ts-node: 10.9.2(@types/node@22.15.29)(typescript@5.8.3) transitivePeerDependencies: - babel-plugin-macros - supports-color @@ -10474,21 +10488,21 @@ snapshots: optionalDependencies: jest-resolve: 29.7.0 - jest-preset-angular@14.5.4(@angular/compiler-cli@19.2.14(@angular/compiler@19.2.14)(typescript@5.5.4))(@angular/core@19.2.14(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser-dynamic@19.2.14(@angular/common@19.2.14(@angular/core@19.2.14(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/compiler@19.2.14)(@angular/core@19.2.14(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@19.2.14(@angular/common@19.2.14(@angular/core@19.2.14(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@19.2.14(rxjs@7.8.2)(zone.js@0.15.1))))(@babel/core@7.27.4)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.27.4))(jest@29.7.0(@types/node@22.15.29)(ts-node@10.9.2(@types/node@22.15.29)(typescript@5.5.4)))(jsdom@20.0.3)(typescript@5.5.4): + jest-preset-angular@14.5.5(@angular/compiler-cli@20.0.5(@angular/compiler@20.0.5)(typescript@5.8.3))(@angular/core@20.0.5(@angular/compiler@20.0.5)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser-dynamic@20.0.5(@angular/common@20.0.5(@angular/core@20.0.5(@angular/compiler@20.0.5)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/compiler@20.0.5)(@angular/core@20.0.5(@angular/compiler@20.0.5)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@20.0.5(@angular/common@20.0.5(@angular/core@20.0.5(@angular/compiler@20.0.5)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.0.5(@angular/compiler@20.0.5)(rxjs@7.8.2)(zone.js@0.15.1))))(@babel/core@7.27.4)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.27.4))(jest@29.7.0(@types/node@22.15.29)(ts-node@10.9.2(@types/node@22.15.29)(typescript@5.8.3)))(jsdom@20.0.3)(typescript@5.8.3): dependencies: - '@angular/compiler-cli': 19.2.14(@angular/compiler@19.2.14)(typescript@5.5.4) - '@angular/core': 19.2.14(rxjs@7.8.2)(zone.js@0.15.1) - '@angular/platform-browser-dynamic': 19.2.14(@angular/common@19.2.14(@angular/core@19.2.14(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/compiler@19.2.14)(@angular/core@19.2.14(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@19.2.14(@angular/common@19.2.14(@angular/core@19.2.14(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@19.2.14(rxjs@7.8.2)(zone.js@0.15.1))) + '@angular/compiler-cli': 20.0.5(@angular/compiler@20.0.5)(typescript@5.8.3) + '@angular/core': 20.0.5(@angular/compiler@20.0.5)(rxjs@7.8.2)(zone.js@0.15.1) + '@angular/platform-browser-dynamic': 20.0.5(@angular/common@20.0.5(@angular/core@20.0.5(@angular/compiler@20.0.5)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/compiler@20.0.5)(@angular/core@20.0.5(@angular/compiler@20.0.5)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@20.0.5(@angular/common@20.0.5(@angular/core@20.0.5(@angular/compiler@20.0.5)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.0.5(@angular/compiler@20.0.5)(rxjs@7.8.2)(zone.js@0.15.1))) bs-logger: 0.2.6 - esbuild-wasm: 0.25.3 - jest: 29.7.0(@types/node@22.15.29)(ts-node@10.9.2(@types/node@22.15.29)(typescript@5.5.4)) + esbuild-wasm: 0.25.2 + jest: 29.7.0(@types/node@22.15.29)(ts-node@10.9.2(@types/node@22.15.29)(typescript@5.8.3)) jest-environment-jsdom: 29.7.0 jest-util: 29.7.0 pretty-format: 29.7.0 - ts-jest: 29.3.2(@babel/core@7.27.4)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.27.4))(esbuild@0.25.3)(jest@29.7.0(@types/node@22.15.29)(ts-node@10.9.2(@types/node@22.15.29)(typescript@5.5.4)))(typescript@5.5.4) - typescript: 5.5.4 + ts-jest: 29.3.2(@babel/core@7.27.4)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.27.4))(esbuild@0.25.2)(jest@29.7.0(@types/node@22.15.29)(ts-node@10.9.2(@types/node@22.15.29)(typescript@5.8.3)))(typescript@5.8.3) + typescript: 5.8.3 optionalDependencies: - esbuild: 0.25.3 + esbuild: 0.25.2 jsdom: 20.0.3 transitivePeerDependencies: - '@babel/core' @@ -10500,21 +10514,21 @@ snapshots: - supports-color - utf-8-validate - jest-preset-angular@14.5.5(@angular/compiler-cli@19.2.14(@angular/compiler@19.2.14)(typescript@5.5.4))(@angular/core@19.2.14(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser-dynamic@19.2.14(@angular/common@19.2.14(@angular/core@19.2.14(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/compiler@19.2.14)(@angular/core@19.2.14(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@19.2.14(@angular/common@19.2.14(@angular/core@19.2.14(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@19.2.14(rxjs@7.8.2)(zone.js@0.15.1))))(@babel/core@7.27.4)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.27.4))(jest@29.7.0(@types/node@22.15.29)(ts-node@10.9.2(@types/node@22.15.29)(typescript@5.5.4)))(jsdom@20.0.3)(typescript@5.5.4): + jest-preset-angular@14.6.0(@angular/compiler-cli@20.0.5(@angular/compiler@20.0.5)(typescript@5.8.3))(@angular/core@20.0.5(@angular/compiler@20.0.5)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser-dynamic@20.0.5(@angular/common@20.0.5(@angular/core@20.0.5(@angular/compiler@20.0.5)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/compiler@20.0.5)(@angular/core@20.0.5(@angular/compiler@20.0.5)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@20.0.5(@angular/common@20.0.5(@angular/core@20.0.5(@angular/compiler@20.0.5)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.0.5(@angular/compiler@20.0.5)(rxjs@7.8.2)(zone.js@0.15.1))))(@babel/core@7.27.4)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.27.4))(jest@29.7.0(@types/node@22.15.29)(ts-node@10.9.2(@types/node@22.15.29)(typescript@5.8.3)))(jsdom@20.0.3)(typescript@5.8.3): dependencies: - '@angular/compiler-cli': 19.2.14(@angular/compiler@19.2.14)(typescript@5.5.4) - '@angular/core': 19.2.14(rxjs@7.8.2)(zone.js@0.15.1) - '@angular/platform-browser-dynamic': 19.2.14(@angular/common@19.2.14(@angular/core@19.2.14(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/compiler@19.2.14)(@angular/core@19.2.14(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@19.2.14(@angular/common@19.2.14(@angular/core@19.2.14(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@19.2.14(rxjs@7.8.2)(zone.js@0.15.1))) + '@angular/compiler-cli': 20.0.5(@angular/compiler@20.0.5)(typescript@5.8.3) + '@angular/core': 20.0.5(@angular/compiler@20.0.5)(rxjs@7.8.2)(zone.js@0.15.1) + '@angular/platform-browser-dynamic': 20.0.5(@angular/common@20.0.5(@angular/core@20.0.5(@angular/compiler@20.0.5)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/compiler@20.0.5)(@angular/core@20.0.5(@angular/compiler@20.0.5)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@20.0.5(@angular/common@20.0.5(@angular/core@20.0.5(@angular/compiler@20.0.5)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.0.5(@angular/compiler@20.0.5)(rxjs@7.8.2)(zone.js@0.15.1))) bs-logger: 0.2.6 - esbuild-wasm: 0.25.2 - jest: 29.7.0(@types/node@22.15.29)(ts-node@10.9.2(@types/node@22.15.29)(typescript@5.5.4)) + esbuild-wasm: 0.25.4 + jest: 29.7.0(@types/node@22.15.29)(ts-node@10.9.2(@types/node@22.15.29)(typescript@5.8.3)) jest-environment-jsdom: 29.7.0 jest-util: 29.7.0 pretty-format: 29.7.0 - ts-jest: 29.3.2(@babel/core@7.27.4)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.27.4))(esbuild@0.25.2)(jest@29.7.0(@types/node@22.15.29)(ts-node@10.9.2(@types/node@22.15.29)(typescript@5.5.4)))(typescript@5.5.4) - typescript: 5.5.4 + ts-jest: 29.3.2(@babel/core@7.27.4)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.27.4))(esbuild@0.25.4)(jest@29.7.0(@types/node@22.15.29)(ts-node@10.9.2(@types/node@22.15.29)(typescript@5.8.3)))(typescript@5.8.3) + typescript: 5.8.3 optionalDependencies: - esbuild: 0.25.2 + esbuild: 0.25.4 jsdom: 20.0.3 transitivePeerDependencies: - '@babel/core' @@ -10672,12 +10686,12 @@ snapshots: merge-stream: 2.0.0 supports-color: 8.1.1 - jest@29.7.0(@types/node@22.15.29)(ts-node@10.9.2(@types/node@22.15.29)(typescript@5.5.4)): + jest@29.7.0(@types/node@22.15.29)(ts-node@10.9.2(@types/node@22.15.29)(typescript@5.8.3)): dependencies: - '@jest/core': 29.7.0(ts-node@10.9.2(@types/node@22.15.29)(typescript@5.5.4)) + '@jest/core': 29.7.0(ts-node@10.9.2(@types/node@22.15.29)(typescript@5.8.3)) '@jest/types': 29.6.3 import-local: 3.1.0 - jest-cli: 29.7.0(@types/node@22.15.29)(ts-node@10.9.2(@types/node@22.15.29)(typescript@5.5.4)) + jest-cli: 29.7.0(@types/node@22.15.29)(ts-node@10.9.2(@types/node@22.15.29)(typescript@5.8.3)) transitivePeerDependencies: - '@types/node' - babel-plugin-macros @@ -10771,13 +10785,13 @@ snapshots: picocolors: 1.1.1 shell-quote: 1.8.3 - less-loader@12.2.0(less@4.2.2)(webpack@5.98.0): + less-loader@12.3.0(less@4.3.0)(webpack@5.99.8(esbuild@0.25.5)): dependencies: - less: 4.2.2 + less: 4.3.0 optionalDependencies: - webpack: 5.98.0(esbuild@0.25.4) + webpack: 5.99.8(esbuild@0.25.5) - less@4.2.2: + less@4.3.0: dependencies: copy-anything: 2.0.6 parse-node-version: 1.0.1 @@ -10798,15 +10812,15 @@ snapshots: prelude-ls: 1.2.1 type-check: 0.4.0 - license-webpack-plugin@4.0.2(webpack@5.98.0): + license-webpack-plugin@4.0.2(webpack@5.99.8(esbuild@0.25.5)): dependencies: - webpack-sources: 3.3.2 + webpack-sources: 3.3.3 optionalDependencies: - webpack: 5.98.0(esbuild@0.25.4) + webpack: 5.99.8(esbuild@0.25.5) lines-and-columns@1.2.4: {} - listr2@8.2.5: + listr2@8.3.3: dependencies: cli-truncate: 4.0.0 colorette: 2.0.20 @@ -10815,7 +10829,7 @@ snapshots: rfdc: 1.4.1 wrap-ansi: 9.0.0 - lmdb@3.2.6: + lmdb@3.3.0: dependencies: msgpackr: 1.11.4 node-addon-api: 6.1.0 @@ -10823,12 +10837,13 @@ snapshots: ordered-binary: 1.5.3 weak-lru-cache: 1.2.2 optionalDependencies: - '@lmdb/lmdb-darwin-arm64': 3.2.6 - '@lmdb/lmdb-darwin-x64': 3.2.6 - '@lmdb/lmdb-linux-arm': 3.2.6 - '@lmdb/lmdb-linux-arm64': 3.2.6 - '@lmdb/lmdb-linux-x64': 3.2.6 - '@lmdb/lmdb-win32-x64': 3.2.6 + '@lmdb/lmdb-darwin-arm64': 3.3.0 + '@lmdb/lmdb-darwin-x64': 3.3.0 + '@lmdb/lmdb-linux-arm': 3.3.0 + '@lmdb/lmdb-linux-arm64': 3.3.0 + '@lmdb/lmdb-linux-x64': 3.3.0 + '@lmdb/lmdb-win32-arm64': 3.3.0 + '@lmdb/lmdb-win32-x64': 3.3.0 optional: true loader-runner@4.3.0: {} @@ -10849,10 +10864,6 @@ snapshots: dependencies: p-locate: 5.0.0 - locate-path@7.2.0: - dependencies: - p-locate: 6.0.0 - lodash-es@4.17.21: {} lodash.debounce@4.0.8: {} @@ -10863,10 +10874,10 @@ snapshots: lodash@4.17.21: {} - log-symbols@4.1.0: + log-symbols@6.0.0: dependencies: - chalk: 4.1.2 - is-unicode-supported: 0.1.0 + chalk: 5.4.1 + is-unicode-supported: 1.3.0 log-update@6.1.0: dependencies: @@ -10966,11 +10977,11 @@ snapshots: mimic-response@3.1.0: optional: true - mini-css-extract-plugin@2.9.2(webpack@5.98.0): + mini-css-extract-plugin@2.9.2(webpack@5.99.8(esbuild@0.25.5)): dependencies: schema-utils: 4.3.2 tapable: 2.2.2 - webpack: 5.98.0(esbuild@0.25.4) + webpack: 5.99.8(esbuild@0.25.5) minimalistic-assert@1.0.1: {} @@ -11096,46 +11107,46 @@ snapshots: pdfjs-dist: 4.8.69 tslib: 2.8.1 - ngx-bootstrap-icons@1.9.3(@angular/common@19.2.14(@angular/core@19.2.14(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@19.2.14(rxjs@7.8.2)(zone.js@0.15.1)): + ngx-bootstrap-icons@1.9.3(@angular/common@20.0.5(@angular/core@20.0.5(@angular/compiler@20.0.5)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.0.5(@angular/compiler@20.0.5)(rxjs@7.8.2)(zone.js@0.15.1)): dependencies: - '@angular/common': 19.2.14(@angular/core@19.2.14(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2) - '@angular/core': 19.2.14(rxjs@7.8.2)(zone.js@0.15.1) + '@angular/common': 20.0.5(@angular/core@20.0.5(@angular/compiler@20.0.5)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2) + '@angular/core': 20.0.5(@angular/compiler@20.0.5)(rxjs@7.8.2)(zone.js@0.15.1) tslib: 2.8.1 - ngx-color@10.0.0(@angular/common@19.2.14(@angular/core@19.2.14(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@19.2.14(rxjs@7.8.2)(zone.js@0.15.1)): + ngx-color@10.0.0(@angular/common@20.0.5(@angular/core@20.0.5(@angular/compiler@20.0.5)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.0.5(@angular/compiler@20.0.5)(rxjs@7.8.2)(zone.js@0.15.1)): dependencies: - '@angular/common': 19.2.14(@angular/core@19.2.14(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2) - '@angular/core': 19.2.14(rxjs@7.8.2)(zone.js@0.15.1) + '@angular/common': 20.0.5(@angular/core@20.0.5(@angular/compiler@20.0.5)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2) + '@angular/core': 20.0.5(@angular/compiler@20.0.5)(rxjs@7.8.2)(zone.js@0.15.1) '@ctrl/tinycolor': 4.1.0 material-colors: 1.2.6 tslib: 2.8.1 - ngx-cookie-service@19.1.2(@angular/common@19.2.14(@angular/core@19.2.14(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@19.2.14(rxjs@7.8.2)(zone.js@0.15.1)): + ngx-cookie-service@19.1.2(@angular/common@20.0.5(@angular/core@20.0.5(@angular/compiler@20.0.5)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.0.5(@angular/compiler@20.0.5)(rxjs@7.8.2)(zone.js@0.15.1)): dependencies: - '@angular/common': 19.2.14(@angular/core@19.2.14(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2) - '@angular/core': 19.2.14(rxjs@7.8.2)(zone.js@0.15.1) + '@angular/common': 20.0.5(@angular/core@20.0.5(@angular/compiler@20.0.5)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2) + '@angular/core': 20.0.5(@angular/compiler@20.0.5)(rxjs@7.8.2)(zone.js@0.15.1) tslib: 2.8.1 - ngx-device-detector@9.0.0(@angular/common@19.2.14(@angular/core@19.2.14(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@19.2.14(rxjs@7.8.2)(zone.js@0.15.1)): + ngx-device-detector@9.0.0(@angular/common@20.0.5(@angular/core@20.0.5(@angular/compiler@20.0.5)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.0.5(@angular/compiler@20.0.5)(rxjs@7.8.2)(zone.js@0.15.1)): dependencies: - '@angular/common': 19.2.14(@angular/core@19.2.14(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2) - '@angular/core': 19.2.14(rxjs@7.8.2)(zone.js@0.15.1) + '@angular/common': 20.0.5(@angular/core@20.0.5(@angular/compiler@20.0.5)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2) + '@angular/core': 20.0.5(@angular/compiler@20.0.5)(rxjs@7.8.2)(zone.js@0.15.1) tslib: 2.8.1 - ngx-ui-tour-core@14.0.0(@angular/common@19.2.14(@angular/core@19.2.14(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@19.2.14(rxjs@7.8.2)(zone.js@0.15.1))(@angular/router@19.2.14(@angular/common@19.2.14(@angular/core@19.2.14(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@19.2.14(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@19.2.14(@angular/common@19.2.14(@angular/core@19.2.14(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@19.2.14(rxjs@7.8.2)(zone.js@0.15.1)))(rxjs@7.8.2))(rxjs@7.8.2): + ngx-ui-tour-core@15.0.0(@angular/common@20.0.5(@angular/core@20.0.5(@angular/compiler@20.0.5)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.0.5(@angular/compiler@20.0.5)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/router@20.0.5(@angular/common@20.0.5(@angular/core@20.0.5(@angular/compiler@20.0.5)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.0.5(@angular/compiler@20.0.5)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@20.0.5(@angular/common@20.0.5(@angular/core@20.0.5(@angular/compiler@20.0.5)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.0.5(@angular/compiler@20.0.5)(rxjs@7.8.2)(zone.js@0.15.1)))(rxjs@7.8.2))(rxjs@7.8.2): dependencies: - '@angular/common': 19.2.14(@angular/core@19.2.14(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2) - '@angular/core': 19.2.14(rxjs@7.8.2)(zone.js@0.15.1) - '@angular/router': 19.2.14(@angular/common@19.2.14(@angular/core@19.2.14(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@19.2.14(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@19.2.14(@angular/common@19.2.14(@angular/core@19.2.14(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@19.2.14(rxjs@7.8.2)(zone.js@0.15.1)))(rxjs@7.8.2) + '@angular/common': 20.0.5(@angular/core@20.0.5(@angular/compiler@20.0.5)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2) + '@angular/core': 20.0.5(@angular/compiler@20.0.5)(rxjs@7.8.2)(zone.js@0.15.1) + '@angular/router': 20.0.5(@angular/common@20.0.5(@angular/core@20.0.5(@angular/compiler@20.0.5)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.0.5(@angular/compiler@20.0.5)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@20.0.5(@angular/common@20.0.5(@angular/core@20.0.5(@angular/compiler@20.0.5)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.0.5(@angular/compiler@20.0.5)(rxjs@7.8.2)(zone.js@0.15.1)))(rxjs@7.8.2) rxjs: 7.8.2 tslib: 2.8.1 - ngx-ui-tour-ng-bootstrap@16.0.0(b22d6d97efbc9cb8f9e09ff61a244f2e): + ngx-ui-tour-ng-bootstrap@17.0.0(d39044206fc345e584b8fbeeeb8ce06e): dependencies: - '@angular/common': 19.2.14(@angular/core@19.2.14(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2) - '@angular/core': 19.2.14(rxjs@7.8.2)(zone.js@0.15.1) - '@ng-bootstrap/ng-bootstrap': 18.0.0(@angular/common@19.2.14(@angular/core@19.2.14(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@19.2.14(rxjs@7.8.2)(zone.js@0.15.1))(@angular/forms@19.2.14(@angular/common@19.2.14(@angular/core@19.2.14(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@19.2.14(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@19.2.14(@angular/common@19.2.14(@angular/core@19.2.14(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@19.2.14(rxjs@7.8.2)(zone.js@0.15.1)))(rxjs@7.8.2))(@angular/localize@19.2.14(@angular/compiler-cli@19.2.14(@angular/compiler@19.2.14)(typescript@5.5.4))(@angular/compiler@19.2.14))(@popperjs/core@2.11.8)(rxjs@7.8.2) - ngx-ui-tour-core: 14.0.0(@angular/common@19.2.14(@angular/core@19.2.14(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@19.2.14(rxjs@7.8.2)(zone.js@0.15.1))(@angular/router@19.2.14(@angular/common@19.2.14(@angular/core@19.2.14(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@19.2.14(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@19.2.14(@angular/common@19.2.14(@angular/core@19.2.14(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@19.2.14(rxjs@7.8.2)(zone.js@0.15.1)))(rxjs@7.8.2))(rxjs@7.8.2) + '@angular/common': 20.0.5(@angular/core@20.0.5(@angular/compiler@20.0.5)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2) + '@angular/core': 20.0.5(@angular/compiler@20.0.5)(rxjs@7.8.2)(zone.js@0.15.1) + '@ng-bootstrap/ng-bootstrap': 19.0.0(@angular/common@20.0.5(@angular/core@20.0.5(@angular/compiler@20.0.5)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.0.5(@angular/compiler@20.0.5)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/forms@20.0.5(@angular/common@20.0.5(@angular/core@20.0.5(@angular/compiler@20.0.5)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.0.5(@angular/compiler@20.0.5)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@20.0.5(@angular/common@20.0.5(@angular/core@20.0.5(@angular/compiler@20.0.5)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.0.5(@angular/compiler@20.0.5)(rxjs@7.8.2)(zone.js@0.15.1)))(rxjs@7.8.2))(@angular/localize@20.0.5(@angular/compiler-cli@20.0.5(@angular/compiler@20.0.5)(typescript@5.8.3))(@angular/compiler@20.0.5))(@popperjs/core@2.11.8)(rxjs@7.8.2) + ngx-ui-tour-core: 15.0.0(@angular/common@20.0.5(@angular/core@20.0.5(@angular/compiler@20.0.5)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.0.5(@angular/compiler@20.0.5)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/router@20.0.5(@angular/common@20.0.5(@angular/core@20.0.5(@angular/compiler@20.0.5)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.0.5(@angular/compiler@20.0.5)(rxjs@7.8.2)(zone.js@0.15.1))(@angular/platform-browser@20.0.5(@angular/common@20.0.5(@angular/core@20.0.5(@angular/compiler@20.0.5)(rxjs@7.8.2)(zone.js@0.15.1))(rxjs@7.8.2))(@angular/core@20.0.5(@angular/compiler@20.0.5)(rxjs@7.8.2)(zone.js@0.15.1)))(rxjs@7.8.2))(rxjs@7.8.2) tslib: 2.8.1 transitivePeerDependencies: - '@angular/router' @@ -11167,7 +11178,7 @@ snapshots: make-fetch-happen: 14.0.3 nopt: 8.1.0 proc-log: 5.0.0 - semver: 7.7.1 + semver: 7.7.2 tar: 7.4.3 tinyglobby: 0.2.14 which: 5.0.0 @@ -11192,7 +11203,7 @@ snapshots: npm-install-checks@7.1.1: dependencies: - semver: 7.7.1 + semver: 7.7.2 npm-normalize-package-bin@4.0.0: {} @@ -11200,10 +11211,10 @@ snapshots: dependencies: hosted-git-info: 8.1.0 proc-log: 5.0.0 - semver: 7.7.1 + semver: 7.7.2 validate-npm-package-name: 6.0.0 - npm-packlist@9.0.0: + npm-packlist@10.0.0: dependencies: ignore-walk: 7.0.0 @@ -11212,7 +11223,7 @@ snapshots: npm-install-checks: 7.1.1 npm-normalize-package-bin: 4.0.0 npm-package-arg: 12.0.2 - semver: 7.7.1 + semver: 7.7.2 npm-registry-fetch@18.0.2: dependencies: @@ -11259,7 +11270,7 @@ snapshots: dependencies: mimic-function: 5.0.1 - open@10.1.0: + open@10.1.2: dependencies: default-browser: 5.2.1 define-lazy-prop: 3.0.0 @@ -11275,17 +11286,17 @@ snapshots: type-check: 0.4.0 word-wrap: 1.2.5 - ora@5.4.1: + ora@8.2.0: dependencies: - bl: 4.1.0 - chalk: 4.1.2 - cli-cursor: 3.1.0 + chalk: 5.4.1 + cli-cursor: 5.0.0 cli-spinners: 2.9.2 - is-interactive: 1.0.0 - is-unicode-supported: 0.1.0 - log-symbols: 4.1.0 - strip-ansi: 6.0.1 - wcwidth: 1.0.1 + is-interactive: 2.0.0 + is-unicode-supported: 2.1.0 + log-symbols: 6.0.0 + stdin-discarder: 0.2.2 + string-width: 7.2.0 + strip-ansi: 7.1.0 ordered-binary@1.5.3: optional: true @@ -11300,10 +11311,6 @@ snapshots: dependencies: yocto-queue: 0.1.0 - p-limit@4.0.0: - dependencies: - yocto-queue: 1.2.1 - p-locate@4.1.0: dependencies: p-limit: 2.3.0 @@ -11312,10 +11319,6 @@ snapshots: dependencies: p-limit: 3.1.0 - p-locate@6.0.0: - dependencies: - p-limit: 4.0.0 - p-map@7.0.3: {} p-retry@6.2.1: @@ -11328,7 +11331,7 @@ snapshots: package-json-from-dist@1.0.1: {} - pacote@20.0.0: + pacote@21.0.0: dependencies: '@npmcli/git': 6.0.3 '@npmcli/installed-package-contents': 3.0.0 @@ -11339,7 +11342,7 @@ snapshots: fs-minipass: 3.0.3 minipass: 7.1.2 npm-package-arg: 12.0.2 - npm-packlist: 9.0.0 + npm-packlist: 10.0.0 npm-pick-manifest: 10.0.0 npm-registry-fetch: 18.0.2 proc-log: 5.0.0 @@ -11365,9 +11368,9 @@ snapshots: parse-node-version@1.0.1: {} - parse5-html-rewriting-stream@7.0.0: + parse5-html-rewriting-stream@7.1.0: dependencies: - entities: 4.5.0 + entities: 6.0.0 parse5: 7.3.0 parse5-sax-parser: 7.0.0 @@ -11383,8 +11386,6 @@ snapshots: path-exists@4.0.0: {} - path-exists@5.0.0: {} - path-is-absolute@1.0.1: {} path-key@3.1.1: {} @@ -11398,8 +11399,6 @@ snapshots: path-to-regexp@0.1.12: {} - path-type@6.0.0: {} - path2d@0.2.2: optional: true @@ -11419,7 +11418,7 @@ snapshots: pirates@4.0.6: {} - piscina@4.8.0: + piscina@5.1.1: optionalDependencies: '@napi-rs/nice': 1.0.1 @@ -11427,10 +11426,6 @@ snapshots: dependencies: find-up: 4.1.0 - pkg-dir@7.0.0: - dependencies: - find-up: 6.3.0 - playwright-core@1.51.1: {} playwright@1.51.1: @@ -11439,39 +11434,39 @@ snapshots: optionalDependencies: fsevents: 2.3.2 - postcss-loader@8.1.1(postcss@8.5.2)(typescript@5.5.4)(webpack@5.98.0): + postcss-loader@8.1.1(postcss@8.5.3)(typescript@5.8.3)(webpack@5.99.8(esbuild@0.25.5)): dependencies: - cosmiconfig: 9.0.0(typescript@5.5.4) + cosmiconfig: 9.0.0(typescript@5.8.3) jiti: 1.21.7 - postcss: 8.5.2 - semver: 7.7.1 + postcss: 8.5.3 + semver: 7.7.2 optionalDependencies: - webpack: 5.98.0(esbuild@0.25.4) + webpack: 5.99.8(esbuild@0.25.5) transitivePeerDependencies: - typescript postcss-media-query-parser@0.2.3: {} - postcss-modules-extract-imports@3.1.0(postcss@8.5.2): + postcss-modules-extract-imports@3.1.0(postcss@8.5.4): dependencies: - postcss: 8.5.2 + postcss: 8.5.4 - postcss-modules-local-by-default@4.2.0(postcss@8.5.2): + postcss-modules-local-by-default@4.2.0(postcss@8.5.4): dependencies: - icss-utils: 5.1.0(postcss@8.5.2) - postcss: 8.5.2 + icss-utils: 5.1.0(postcss@8.5.4) + postcss: 8.5.4 postcss-selector-parser: 7.1.0 postcss-value-parser: 4.2.0 - postcss-modules-scope@3.2.1(postcss@8.5.2): + postcss-modules-scope@3.2.1(postcss@8.5.4): dependencies: - postcss: 8.5.2 + postcss: 8.5.4 postcss-selector-parser: 7.1.0 - postcss-modules-values@4.0.0(postcss@8.5.2): + postcss-modules-values@4.0.0(postcss@8.5.4): dependencies: - icss-utils: 5.1.0(postcss@8.5.2) - postcss: 8.5.2 + icss-utils: 5.1.0(postcss@8.5.4) + postcss: 8.5.4 postcss-selector-parser@7.1.0: dependencies: @@ -11480,7 +11475,7 @@ snapshots: postcss-value-parser@4.2.0: {} - postcss@8.5.2: + postcss@8.5.3: dependencies: nanoid: 3.3.11 picocolors: 1.1.1 @@ -11510,10 +11505,10 @@ snapshots: prelude-ls@1.2.1: {} - prettier-plugin-organize-imports@4.1.0(prettier@3.4.2)(typescript@5.5.4): + prettier-plugin-organize-imports@4.1.0(prettier@3.4.2)(typescript@5.8.3): dependencies: prettier: 3.4.2 - typescript: 5.5.4 + typescript: 5.8.3 prettier@3.4.2: {} @@ -11618,8 +11613,6 @@ snapshots: regenerate@1.4.2: {} - regenerator-runtime@0.14.1: {} - regex-parser@2.3.1: {} regexpu-core@6.2.0: @@ -11656,7 +11649,7 @@ snapshots: adjust-sourcemap-loader: 4.0.0 convert-source-map: 1.9.0 loader-utils: 2.0.4 - postcss: 8.5.2 + postcss: 8.5.4 source-map: 0.6.1 resolve.exports@2.0.2: {} @@ -11667,11 +11660,6 @@ snapshots: path-parse: 1.0.7 supports-preserve-symlinks-flag: 1.0.0 - restore-cursor@3.1.0: - dependencies: - onetime: 5.1.2 - signal-exit: 3.0.7 - restore-cursor@5.1.0: dependencies: onetime: 7.0.0 @@ -11685,29 +11673,30 @@ snapshots: rfdc@1.4.1: {} - rollup@4.34.8: + rollup@4.40.2: dependencies: - '@types/estree': 1.0.6 + '@types/estree': 1.0.7 optionalDependencies: - '@rollup/rollup-android-arm-eabi': 4.34.8 - '@rollup/rollup-android-arm64': 4.34.8 - '@rollup/rollup-darwin-arm64': 4.34.8 - '@rollup/rollup-darwin-x64': 4.34.8 - '@rollup/rollup-freebsd-arm64': 4.34.8 - '@rollup/rollup-freebsd-x64': 4.34.8 - '@rollup/rollup-linux-arm-gnueabihf': 4.34.8 - '@rollup/rollup-linux-arm-musleabihf': 4.34.8 - '@rollup/rollup-linux-arm64-gnu': 4.34.8 - '@rollup/rollup-linux-arm64-musl': 4.34.8 - '@rollup/rollup-linux-loongarch64-gnu': 4.34.8 - '@rollup/rollup-linux-powerpc64le-gnu': 4.34.8 - '@rollup/rollup-linux-riscv64-gnu': 4.34.8 - '@rollup/rollup-linux-s390x-gnu': 4.34.8 - '@rollup/rollup-linux-x64-gnu': 4.34.8 - '@rollup/rollup-linux-x64-musl': 4.34.8 - '@rollup/rollup-win32-arm64-msvc': 4.34.8 - '@rollup/rollup-win32-ia32-msvc': 4.34.8 - '@rollup/rollup-win32-x64-msvc': 4.34.8 + '@rollup/rollup-android-arm-eabi': 4.40.2 + '@rollup/rollup-android-arm64': 4.40.2 + '@rollup/rollup-darwin-arm64': 4.40.2 + '@rollup/rollup-darwin-x64': 4.40.2 + '@rollup/rollup-freebsd-arm64': 4.40.2 + '@rollup/rollup-freebsd-x64': 4.40.2 + '@rollup/rollup-linux-arm-gnueabihf': 4.40.2 + '@rollup/rollup-linux-arm-musleabihf': 4.40.2 + '@rollup/rollup-linux-arm64-gnu': 4.40.2 + '@rollup/rollup-linux-arm64-musl': 4.40.2 + '@rollup/rollup-linux-loongarch64-gnu': 4.40.2 + '@rollup/rollup-linux-powerpc64le-gnu': 4.40.2 + '@rollup/rollup-linux-riscv64-gnu': 4.40.2 + '@rollup/rollup-linux-riscv64-musl': 4.40.2 + '@rollup/rollup-linux-s390x-gnu': 4.40.2 + '@rollup/rollup-linux-x64-gnu': 4.40.2 + '@rollup/rollup-linux-x64-musl': 4.40.2 + '@rollup/rollup-win32-arm64-msvc': 4.40.2 + '@rollup/rollup-win32-ia32-msvc': 4.40.2 + '@rollup/rollup-win32-x64-msvc': 4.40.2 fsevents: 2.3.3 run-applescript@7.0.0: {} @@ -11716,10 +11705,6 @@ snapshots: dependencies: queue-microtask: 1.2.3 - rxjs@7.8.1: - dependencies: - tslib: 2.8.1 - rxjs@7.8.2: dependencies: tslib: 2.8.1 @@ -11730,14 +11715,14 @@ snapshots: safer-buffer@2.1.2: {} - sass-loader@16.0.5(sass@1.85.0)(webpack@5.98.0): + sass-loader@16.0.5(sass@1.88.0)(webpack@5.99.8(esbuild@0.25.5)): dependencies: neo-async: 2.6.2 optionalDependencies: - sass: 1.85.0 - webpack: 5.98.0(esbuild@0.25.4) + sass: 1.88.0 + webpack: 5.99.8(esbuild@0.25.5) - sass@1.85.0: + sass@1.88.0: dependencies: chokidar: 4.0.3 immutable: 5.1.2 @@ -11771,8 +11756,6 @@ snapshots: semver@6.3.1: {} - semver@7.7.1: {} - semver@7.7.2: {} send@0.19.0: @@ -11898,8 +11881,6 @@ snapshots: slash@3.0.0: {} - slash@5.1.0: {} - slice-ansi@5.0.0: dependencies: ansi-styles: 6.2.1 @@ -11933,11 +11914,11 @@ snapshots: source-map-js@1.2.1: {} - source-map-loader@5.0.0(webpack@5.98.0): + source-map-loader@5.0.0(webpack@5.99.8(esbuild@0.25.5)): dependencies: iconv-lite: 0.6.3 source-map-js: 1.2.1 - webpack: 5.98.0(esbuild@0.25.4) + webpack: 5.99.8(esbuild@0.25.5) source-map-support@0.5.13: dependencies: @@ -12004,6 +11985,8 @@ snapshots: statuses@2.0.1: {} + stdin-discarder@0.2.2: {} + string-length@4.0.2: dependencies: char-regex: 1.0.2 @@ -12064,8 +12047,6 @@ snapshots: supports-preserve-symlinks-flag@1.0.0: {} - symbol-observable@4.0.0: {} - symbol-tree@3.2.4: {} tapable@2.2.2: {} @@ -12105,16 +12086,25 @@ snapshots: mkdirp: 3.0.1 yallist: 5.0.0 - terser-webpack-plugin@5.3.14(esbuild@0.25.4)(webpack@5.98.0): + terser-webpack-plugin@5.3.14(esbuild@0.25.5)(webpack@5.99.8(esbuild@0.25.5)): dependencies: '@jridgewell/trace-mapping': 0.3.25 jest-worker: 27.5.1 schema-utils: 4.3.2 serialize-javascript: 6.0.2 terser: 5.39.0 - webpack: 5.98.0(esbuild@0.25.4) + webpack: 5.99.8(esbuild@0.25.5) optionalDependencies: - esbuild: 0.25.4 + esbuild: 0.25.5 + + terser-webpack-plugin@5.3.14(webpack@5.98.0): + dependencies: + '@jridgewell/trace-mapping': 0.3.25 + jest-worker: 27.5.1 + schema-utils: 4.3.2 + serialize-javascript: 6.0.2 + terser: 5.39.0 + webpack: 5.98.0 terser@5.39.0: dependencies: @@ -12123,6 +12113,13 @@ snapshots: commander: 2.20.3 source-map-support: 0.5.21 + terser@5.39.1: + dependencies: + '@jridgewell/source-map': 0.3.6 + acorn: 8.15.0 + commander: 2.20.3 + source-map-support: 0.5.21 + test-exclude@6.0.0: dependencies: '@istanbuljs/schema': 0.1.3 @@ -12135,6 +12132,11 @@ snapshots: thunky@1.1.0: {} + tinyglobby@0.2.13: + dependencies: + fdir: 6.4.5(picomatch@4.0.2) + picomatch: 4.0.2 + tinyglobby@0.2.14: dependencies: fdir: 6.4.5(picomatch@4.0.2) @@ -12169,23 +12171,23 @@ snapshots: tree-kill@1.2.2: {} - ts-api-utils@2.1.0(typescript@5.5.4): + ts-api-utils@2.1.0(typescript@5.8.3): dependencies: - typescript: 5.5.4 + typescript: 5.8.3 - ts-jest@29.3.2(@babel/core@7.27.4)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.27.4))(esbuild@0.25.2)(jest@29.7.0(@types/node@22.15.29)(ts-node@10.9.2(@types/node@22.15.29)(typescript@5.5.4)))(typescript@5.5.4): + ts-jest@29.3.2(@babel/core@7.27.4)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.27.4))(esbuild@0.25.2)(jest@29.7.0(@types/node@22.15.29)(ts-node@10.9.2(@types/node@22.15.29)(typescript@5.8.3)))(typescript@5.8.3): dependencies: bs-logger: 0.2.6 ejs: 3.1.10 fast-json-stable-stringify: 2.1.0 - jest: 29.7.0(@types/node@22.15.29)(ts-node@10.9.2(@types/node@22.15.29)(typescript@5.5.4)) + jest: 29.7.0(@types/node@22.15.29)(ts-node@10.9.2(@types/node@22.15.29)(typescript@5.8.3)) jest-util: 29.7.0 json5: 2.2.3 lodash.memoize: 4.1.2 make-error: 1.3.6 semver: 7.7.2 type-fest: 4.40.0 - typescript: 5.5.4 + typescript: 5.8.3 yargs-parser: 21.1.1 optionalDependencies: '@babel/core': 7.27.4 @@ -12194,28 +12196,28 @@ snapshots: babel-jest: 29.7.0(@babel/core@7.27.4) esbuild: 0.25.2 - ts-jest@29.3.2(@babel/core@7.27.4)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.27.4))(esbuild@0.25.3)(jest@29.7.0(@types/node@22.15.29)(ts-node@10.9.2(@types/node@22.15.29)(typescript@5.5.4)))(typescript@5.5.4): + ts-jest@29.3.2(@babel/core@7.27.4)(@jest/transform@29.7.0)(@jest/types@29.6.3)(babel-jest@29.7.0(@babel/core@7.27.4))(esbuild@0.25.4)(jest@29.7.0(@types/node@22.15.29)(ts-node@10.9.2(@types/node@22.15.29)(typescript@5.8.3)))(typescript@5.8.3): dependencies: bs-logger: 0.2.6 ejs: 3.1.10 fast-json-stable-stringify: 2.1.0 - jest: 29.7.0(@types/node@22.15.29)(ts-node@10.9.2(@types/node@22.15.29)(typescript@5.5.4)) + jest: 29.7.0(@types/node@22.15.29)(ts-node@10.9.2(@types/node@22.15.29)(typescript@5.8.3)) jest-util: 29.7.0 json5: 2.2.3 lodash.memoize: 4.1.2 make-error: 1.3.6 semver: 7.7.2 type-fest: 4.40.0 - typescript: 5.5.4 + typescript: 5.8.3 yargs-parser: 21.1.1 optionalDependencies: '@babel/core': 7.27.4 '@jest/transform': 29.7.0 '@jest/types': 29.6.3 babel-jest: 29.7.0(@babel/core@7.27.4) - esbuild: 0.25.3 + esbuild: 0.25.4 - ts-node@10.9.2(@types/node@22.15.29)(typescript@5.5.4): + ts-node@10.9.2(@types/node@22.15.29)(typescript@5.8.3): dependencies: '@cspotcode/source-map-support': 0.8.1 '@tsconfig/node10': 1.0.9 @@ -12229,7 +12231,7 @@ snapshots: create-require: 1.1.1 diff: 4.0.2 make-error: 1.3.6 - typescript: 5.5.4 + typescript: 5.8.3 v8-compile-cache-lib: 3.0.1 yn: 3.1.1 @@ -12273,7 +12275,7 @@ snapshots: typed-assert@1.0.9: {} - typescript@5.5.4: {} + typescript@5.8.3: {} undici-types@6.21.0: {} @@ -12292,8 +12294,6 @@ snapshots: unicode-property-aliases-ecmascript@2.1.0: {} - unicorn-magic@0.3.0: {} - unique-filename@4.0.0: dependencies: unique-slug: 5.0.0 @@ -12357,18 +12357,21 @@ snapshots: vary@1.1.2: {} - vite@6.2.7(@types/node@22.15.29)(jiti@1.21.7)(less@4.2.2)(sass@1.85.0)(terser@5.39.0)(yaml@2.7.0): + vite@6.3.5(@types/node@22.15.29)(jiti@1.21.7)(less@4.3.0)(sass@1.88.0)(terser@5.39.1)(yaml@2.7.0): dependencies: - esbuild: 0.25.4 + esbuild: 0.25.5 + fdir: 6.4.5(picomatch@4.0.2) + picomatch: 4.0.2 postcss: 8.5.4 - rollup: 4.34.8 + rollup: 4.40.2 + tinyglobby: 0.2.14 optionalDependencies: '@types/node': 22.15.29 fsevents: 2.3.3 jiti: 1.21.7 - less: 4.2.2 - sass: 1.85.0 - terser: 5.39.0 + less: 4.3.0 + sass: 1.88.0 + terser: 5.39.1 yaml: 2.7.0 w3c-xmlserializer@4.0.0: @@ -12393,10 +12396,6 @@ snapshots: dependencies: minimalistic-assert: 1.0.1 - wcwidth@1.0.1: - dependencies: - defaults: 1.0.4 - weak-lru-cache@1.2.2: optional: true @@ -12411,15 +12410,27 @@ snapshots: range-parser: 1.2.1 schema-utils: 4.3.2 optionalDependencies: - webpack: 5.98.0(esbuild@0.25.4) + webpack: 5.98.0 - webpack-dev-server@5.2.0(webpack@5.98.0): + webpack-dev-middleware@7.4.2(webpack@5.99.8(esbuild@0.25.5)): + dependencies: + colorette: 2.0.20 + memfs: 4.17.2 + mime-types: 2.1.35 + on-finished: 2.4.1 + range-parser: 1.2.1 + schema-utils: 4.3.2 + optionalDependencies: + webpack: 5.99.8(esbuild@0.25.5) + + webpack-dev-server@5.2.1(webpack@5.98.0): dependencies: '@types/bonjour': 3.5.13 '@types/connect-history-api-fallback': 1.5.4 - '@types/express': 4.17.22 + '@types/express': 4.17.23 + '@types/express-serve-static-core': 4.19.6 '@types/serve-index': 1.9.4 - '@types/serve-static': 1.15.7 + '@types/serve-static': 1.15.8 '@types/sockjs': 0.3.36 '@types/ws': 8.18.1 ansi-html-community: 0.0.8 @@ -12430,10 +12441,10 @@ snapshots: connect-history-api-fallback: 2.0.0 express: 4.21.2 graceful-fs: 4.2.11 - http-proxy-middleware: 2.0.9(@types/express@4.17.22) + http-proxy-middleware: 2.0.9(@types/express@4.17.23) ipaddr.js: 2.2.0 launch-editor: 2.10.0 - open: 10.1.0 + open: 10.1.2 p-retry: 6.2.1 schema-utils: 4.3.2 selfsigned: 2.4.1 @@ -12443,7 +12454,45 @@ snapshots: webpack-dev-middleware: 7.4.2(webpack@5.98.0) ws: 8.18.2 optionalDependencies: - webpack: 5.98.0(esbuild@0.25.4) + webpack: 5.98.0 + transitivePeerDependencies: + - bufferutil + - debug + - supports-color + - utf-8-validate + + webpack-dev-server@5.2.1(webpack@5.99.8(esbuild@0.25.5)): + dependencies: + '@types/bonjour': 3.5.13 + '@types/connect-history-api-fallback': 1.5.4 + '@types/express': 4.17.23 + '@types/express-serve-static-core': 4.19.6 + '@types/serve-index': 1.9.4 + '@types/serve-static': 1.15.8 + '@types/sockjs': 0.3.36 + '@types/ws': 8.18.1 + ansi-html-community: 0.0.8 + bonjour-service: 1.3.0 + chokidar: 3.6.0 + colorette: 2.0.20 + compression: 1.8.0 + connect-history-api-fallback: 2.0.0 + express: 4.21.2 + graceful-fs: 4.2.11 + http-proxy-middleware: 2.0.9(@types/express@4.17.23) + ipaddr.js: 2.2.0 + launch-editor: 2.10.0 + open: 10.1.2 + p-retry: 6.2.1 + schema-utils: 4.3.2 + selfsigned: 2.4.1 + serve-index: 1.9.1 + sockjs: 0.3.24 + spdy: 4.0.2 + webpack-dev-middleware: 7.4.2(webpack@5.99.8(esbuild@0.25.5)) + ws: 8.18.2 + optionalDependencies: + webpack: 5.99.8(esbuild@0.25.5) transitivePeerDependencies: - bufferutil - debug @@ -12458,14 +12507,16 @@ snapshots: webpack-sources@3.3.2: {} - webpack-subresource-integrity@5.1.0(webpack@5.98.0): + webpack-sources@3.3.3: {} + + webpack-subresource-integrity@5.1.0(webpack@5.99.8(esbuild@0.25.5)): dependencies: typed-assert: 1.0.9 - webpack: 5.98.0(esbuild@0.25.4) + webpack: 5.99.8(esbuild@0.25.5) webpack-virtual-modules@0.6.2: {} - webpack@5.98.0(esbuild@0.25.4): + webpack@5.98.0: dependencies: '@types/eslint-scope': 3.7.7 '@types/estree': 1.0.7 @@ -12487,7 +12538,7 @@ snapshots: neo-async: 2.6.2 schema-utils: 4.3.2 tapable: 2.2.2 - terser-webpack-plugin: 5.3.14(esbuild@0.25.4)(webpack@5.98.0) + terser-webpack-plugin: 5.3.14(webpack@5.98.0) watchpack: 2.4.4 webpack-sources: 3.3.2 transitivePeerDependencies: @@ -12495,6 +12546,37 @@ snapshots: - esbuild - uglify-js + webpack@5.99.8(esbuild@0.25.5): + dependencies: + '@types/eslint-scope': 3.7.7 + '@types/estree': 1.0.8 + '@types/json-schema': 7.0.15 + '@webassemblyjs/ast': 1.14.1 + '@webassemblyjs/wasm-edit': 1.14.1 + '@webassemblyjs/wasm-parser': 1.14.1 + acorn: 8.15.0 + browserslist: 4.25.0 + chrome-trace-event: 1.0.4 + enhanced-resolve: 5.18.2 + es-module-lexer: 1.7.0 + eslint-scope: 5.1.1 + events: 3.3.0 + glob-to-regexp: 0.4.1 + graceful-fs: 4.2.11 + json-parse-even-better-errors: 2.3.1 + loader-runner: 4.3.0 + mime-types: 2.1.35 + neo-async: 2.6.2 + schema-utils: 4.3.2 + tapable: 2.2.2 + terser-webpack-plugin: 5.3.14(esbuild@0.25.5)(webpack@5.99.8(esbuild@0.25.5)) + watchpack: 2.4.4 + webpack-sources: 3.3.3 + transitivePeerDependencies: + - '@swc/core' + - esbuild + - uglify-js + websocket-driver@0.7.4: dependencies: http-parser-js: 0.5.10 @@ -12580,6 +12662,8 @@ snapshots: yargs-parser@21.1.1: {} + yargs-parser@22.0.0: {} + yargs@17.7.2: dependencies: cliui: 8.0.1 @@ -12590,12 +12674,19 @@ snapshots: y18n: 5.0.8 yargs-parser: 21.1.1 + yargs@18.0.0: + dependencies: + cliui: 9.0.1 + escalade: 3.2.0 + get-caller-file: 2.0.5 + string-width: 7.2.0 + y18n: 5.0.8 + yargs-parser: 22.0.0 + yn@3.1.1: {} yocto-queue@0.1.0: {} - yocto-queue@1.2.1: {} - yoctocolors-cjs@2.1.2: {} zod@3.25.48: {} diff --git a/src-ui/src/app/app.component.ts b/src-ui/src/app/app.component.ts index a6c4702b7..b782e62b5 100644 --- a/src-ui/src/app/app.component.ts +++ b/src-ui/src/app/app.component.ts @@ -1,4 +1,4 @@ -import { Component, OnDestroy, OnInit, Renderer2 } from '@angular/core' +import { Component, inject, OnDestroy, OnInit, Renderer2 } from '@angular/core' import { Router, RouterOutlet } from '@angular/router' import { TourNgBootstrapModule, TourService } from 'ngx-ui-tour-ng-bootstrap' import { first, Subscription } from 'rxjs' @@ -29,22 +29,22 @@ import { WebsocketStatusService } from './services/websocket-status.service' ], }) export class AppComponent implements OnInit, OnDestroy { + private settings = inject(SettingsService) + private websocketStatusService = inject(WebsocketStatusService) + private toastService = inject(ToastService) + private router = inject(Router) + private tasksService = inject(TasksService) + tourService = inject(TourService) + private renderer = inject(Renderer2) + private permissionsService = inject(PermissionsService) + private hotKeyService = inject(HotKeyService) + private componentRouterService = inject(ComponentRouterService) + newDocumentSubscription: Subscription successSubscription: Subscription failedSubscription: Subscription - constructor( - private settings: SettingsService, - private websocketStatusService: WebsocketStatusService, - private toastService: ToastService, - private router: Router, - private tasksService: TasksService, - public tourService: TourService, - private renderer: Renderer2, - private permissionsService: PermissionsService, - private hotKeyService: HotKeyService, - private componentRouterService: ComponentRouterService - ) { + constructor() { let anyWindow = window as any anyWindow.pdfWorkerSrc = 'assets/js/pdf.worker.min.mjs' this.settings.updateAppearanceSettings() diff --git a/src-ui/src/app/components/admin/config/config.component.ts b/src-ui/src/app/components/admin/config/config.component.ts index 76f6b8795..eee617310 100644 --- a/src-ui/src/app/components/admin/config/config.component.ts +++ b/src-ui/src/app/components/admin/config/config.component.ts @@ -1,5 +1,5 @@ import { AsyncPipe } from '@angular/common' -import { Component, OnDestroy, OnInit } from '@angular/core' +import { Component, OnDestroy, OnInit, inject } from '@angular/core' import { AbstractControl, FormControl, @@ -57,6 +57,10 @@ export class ConfigComponent extends LoadingComponentWithPermissions implements OnInit, OnDestroy, DirtyComponent { + private configService = inject(ConfigService) + private toastService = inject(ToastService) + private settingsService = inject(SettingsService) + public readonly ConfigOptionType = ConfigOptionType // generated dynamically @@ -77,11 +81,7 @@ export class ConfigComponent storeSub: Subscription isDirty$: Observable - constructor( - private configService: ConfigService, - private toastService: ToastService, - private settingsService: SettingsService - ) { + constructor() { super() this.configForm.addControl('id', new FormControl()) PaperlessConfigOptions.forEach((option) => { diff --git a/src-ui/src/app/components/admin/logs/logs.component.ts b/src-ui/src/app/components/admin/logs/logs.component.ts index 90a1715db..4799b6125 100644 --- a/src-ui/src/app/components/admin/logs/logs.component.ts +++ b/src-ui/src/app/components/admin/logs/logs.component.ts @@ -5,6 +5,7 @@ import { OnDestroy, OnInit, ViewChild, + inject, } from '@angular/core' import { FormsModule, ReactiveFormsModule } from '@angular/forms' import { NgbNavModule } from '@ng-bootstrap/ng-bootstrap' @@ -28,12 +29,8 @@ export class LogsComponent extends LoadingComponentWithPermissions implements OnInit, OnDestroy { - constructor( - private logService: LogService, - private changedetectorRef: ChangeDetectorRef - ) { - super() - } + private logService = inject(LogService) + private changedetectorRef = inject(ChangeDetectorRef) public logs: string[] = [] diff --git a/src-ui/src/app/components/admin/settings/settings.component.ts b/src-ui/src/app/components/admin/settings/settings.component.ts index 8737be160..7cfe926ad 100644 --- a/src-ui/src/app/components/admin/settings/settings.component.ts +++ b/src-ui/src/app/components/admin/settings/settings.component.ts @@ -2,10 +2,10 @@ import { AsyncPipe, ViewportScroller } from '@angular/common' import { AfterViewInit, Component, - Inject, LOCALE_ID, OnDestroy, OnInit, + inject, } from '@angular/core' import { FormControl, @@ -104,6 +104,20 @@ export class SettingsComponent extends ComponentWithPermissions implements OnInit, AfterViewInit, OnDestroy, DirtyComponent { + private documentListViewService = inject(DocumentListViewService) + private toastService = inject(ToastService) + private settings = inject(SettingsService) + currentLocale = inject(LOCALE_ID) + private viewportScroller = inject(ViewportScroller) + private activatedRoute = inject(ActivatedRoute) + readonly tourService = inject(TourService) + private usersService = inject(UserService) + private groupsService = inject(GroupService) + private router = inject(Router) + permissionsService = inject(PermissionsService) + private modalService = inject(NgbModal) + private systemStatusService = inject(SystemStatusService) + activeNavID: number settingsForm = new FormGroup({ @@ -179,21 +193,7 @@ export class SettingsComponent ) } - constructor( - private documentListViewService: DocumentListViewService, - private toastService: ToastService, - private settings: SettingsService, - @Inject(LOCALE_ID) public currentLocale: string, - private viewportScroller: ViewportScroller, - private activatedRoute: ActivatedRoute, - public readonly tourService: TourService, - private usersService: UserService, - private groupsService: GroupService, - private router: Router, - public permissionsService: PermissionsService, - private modalService: NgbModal, - private systemStatusService: SystemStatusService - ) { + constructor() { super() this.settings.settingsSaved.subscribe(() => { if (!this.savePending) this.initialize() diff --git a/src-ui/src/app/components/admin/tasks/tasks.component.ts b/src-ui/src/app/components/admin/tasks/tasks.component.ts index d97bdc29b..eb7263137 100644 --- a/src-ui/src/app/components/admin/tasks/tasks.component.ts +++ b/src-ui/src/app/components/admin/tasks/tasks.component.ts @@ -1,5 +1,5 @@ import { NgTemplateOutlet, SlicePipe } from '@angular/common' -import { Component, OnDestroy, OnInit } from '@angular/core' +import { Component, inject, OnDestroy, OnInit } from '@angular/core' import { FormsModule, ReactiveFormsModule } from '@angular/forms' import { Router } from '@angular/router' import { @@ -69,6 +69,10 @@ export class TasksComponent extends LoadingComponentWithPermissions implements OnInit, OnDestroy { + tasksService = inject(TasksService) + private modalService = inject(NgbModal) + private readonly router = inject(Router) + public activeTab: TaskTab public selectedTasks: Set = new Set() public togggleAll: boolean = false @@ -105,14 +109,6 @@ export class TasksComponent : $localize`Dismiss all` } - constructor( - public tasksService: TasksService, - private modalService: NgbModal, - private readonly router: Router - ) { - super() - } - ngOnInit() { this.tasksService.reload() timer(5000, 5000) diff --git a/src-ui/src/app/components/admin/trash/trash.component.ts b/src-ui/src/app/components/admin/trash/trash.component.ts index 1df6ceff4..dce6a6e88 100644 --- a/src-ui/src/app/components/admin/trash/trash.component.ts +++ b/src-ui/src/app/components/admin/trash/trash.component.ts @@ -1,4 +1,4 @@ -import { Component, OnDestroy } from '@angular/core' +import { Component, OnDestroy, inject } from '@angular/core' import { FormsModule, ReactiveFormsModule } from '@angular/forms' import { Router } from '@angular/router' import { @@ -36,19 +36,19 @@ export class TrashComponent extends LoadingComponentWithPermissions implements OnDestroy { + private trashService = inject(TrashService) + private toastService = inject(ToastService) + private modalService = inject(NgbModal) + private settingsService = inject(SettingsService) + private router = inject(Router) + public documentsInTrash: Document[] = [] public selectedDocuments: Set = new Set() public allToggled: boolean = false public page: number = 1 public totalDocuments: number - constructor( - private trashService: TrashService, - private toastService: ToastService, - private modalService: NgbModal, - private settingsService: SettingsService, - private router: Router - ) { + constructor() { super() this.reload() } diff --git a/src-ui/src/app/components/admin/users-groups/users-groups.component.ts b/src-ui/src/app/components/admin/users-groups/users-groups.component.ts index 9ed73cde4..75dc87cf5 100644 --- a/src-ui/src/app/components/admin/users-groups/users-groups.component.ts +++ b/src-ui/src/app/components/admin/users-groups/users-groups.component.ts @@ -1,4 +1,4 @@ -import { Component, OnDestroy, OnInit } from '@angular/core' +import { Component, OnDestroy, OnInit, inject } from '@angular/core' import { NgbModal } from '@ng-bootstrap/ng-bootstrap' import { NgxBootstrapIconsModule } from 'ngx-bootstrap-icons' import { Subject, first, takeUntil } from 'rxjs' @@ -31,22 +31,18 @@ export class UsersAndGroupsComponent extends ComponentWithPermissions implements OnInit, OnDestroy { + private usersService = inject(UserService) + private groupsService = inject(GroupService) + private toastService = inject(ToastService) + private modalService = inject(NgbModal) + permissionsService = inject(PermissionsService) + private settings = inject(SettingsService) + users: User[] groups: Group[] unsubscribeNotifier: Subject = new Subject() - constructor( - private usersService: UserService, - private groupsService: GroupService, - private toastService: ToastService, - private modalService: NgbModal, - public permissionsService: PermissionsService, - private settings: SettingsService - ) { - super() - } - ngOnInit(): void { this.usersService .listAll(null, null, { full_perms: true }) diff --git a/src-ui/src/app/components/app-frame/app-frame.component.ts b/src-ui/src/app/components/app-frame/app-frame.component.ts index 09252fe19..df3732969 100644 --- a/src-ui/src/app/components/app-frame/app-frame.component.ts +++ b/src-ui/src/app/components/app-frame/app-frame.component.ts @@ -6,7 +6,7 @@ import { moveItemInArray, } from '@angular/cdk/drag-drop' import { NgClass } from '@angular/common' -import { Component, HostListener, OnInit } from '@angular/core' +import { Component, HostListener, inject, OnInit } from '@angular/core' import { ActivatedRoute, Router, RouterModule } from '@angular/router' import { NgbCollapseModule, @@ -74,26 +74,27 @@ export class AppFrameComponent extends ComponentWithPermissions implements OnInit, ComponentCanDeactivate { + router = inject(Router) + private activatedRoute = inject(ActivatedRoute) + private openDocumentsService = inject(OpenDocumentsService) + savedViewService = inject(SavedViewService) + private remoteVersionService = inject(RemoteVersionService) + settingsService = inject(SettingsService) + tasksService = inject(TasksService) + private readonly toastService = inject(ToastService) + private modalService = inject(NgbModal) + permissionsService = inject(PermissionsService) + private djangoMessagesService = inject(DjangoMessagesService) + appRemoteVersion: AppRemoteVersion isMenuCollapsed: boolean = true slimSidebarAnimating: boolean = false - constructor( - public router: Router, - private activatedRoute: ActivatedRoute, - private openDocumentsService: OpenDocumentsService, - public savedViewService: SavedViewService, - private remoteVersionService: RemoteVersionService, - public settingsService: SettingsService, - public tasksService: TasksService, - private readonly toastService: ToastService, - private modalService: NgbModal, - public permissionsService: PermissionsService, - private djangoMessagesService: DjangoMessagesService - ) { + constructor() { super() + const permissionsService = this.permissionsService if ( permissionsService.currentUserCan( diff --git a/src-ui/src/app/components/app-frame/global-search/global-search.component.ts b/src-ui/src/app/components/app-frame/global-search/global-search.component.ts index 36f2ed0b9..fed452bfb 100644 --- a/src-ui/src/app/components/app-frame/global-search/global-search.component.ts +++ b/src-ui/src/app/components/app-frame/global-search/global-search.component.ts @@ -6,6 +6,7 @@ import { QueryList, ViewChild, ViewChildren, + inject, } from '@angular/core' import { FormsModule, ReactiveFormsModule } from '@angular/forms' import { Router } from '@angular/router' @@ -69,6 +70,17 @@ import { WorkflowEditDialogComponent } from '../../common/edit-dialog/workflow-e ], }) export class GlobalSearchComponent implements OnInit { + searchService = inject(SearchService) + private router = inject(Router) + private modalService = inject(NgbModal) + private documentService = inject(DocumentService) + private documentListViewService = inject(DocumentListViewService) + private permissionsService = inject(PermissionsService) + private toastService = inject(ToastService) + private hotkeyService = inject(HotKeyService) + private settingsService = inject(SettingsService) + private locationStrategy = inject(LocationStrategy) + public DataType = DataType public query: string public queryDebounce: Subject @@ -90,18 +102,7 @@ export class GlobalSearchComponent implements OnInit { ) } - constructor( - public searchService: SearchService, - private router: Router, - private modalService: NgbModal, - private documentService: DocumentService, - private documentListViewService: DocumentListViewService, - private permissionsService: PermissionsService, - private toastService: ToastService, - private hotkeyService: HotKeyService, - private settingsService: SettingsService, - private locationStrategy: LocationStrategy - ) { + constructor() { this.queryDebounce = new Subject() this.queryDebounce diff --git a/src-ui/src/app/components/app-frame/toasts-dropdown/toasts-dropdown.component.ts b/src-ui/src/app/components/app-frame/toasts-dropdown/toasts-dropdown.component.ts index c04d758af..7274f2b53 100644 --- a/src-ui/src/app/components/app-frame/toasts-dropdown/toasts-dropdown.component.ts +++ b/src-ui/src/app/components/app-frame/toasts-dropdown/toasts-dropdown.component.ts @@ -1,4 +1,4 @@ -import { Component, OnDestroy, OnInit } from '@angular/core' +import { Component, OnDestroy, OnInit, inject } from '@angular/core' import { NgbDropdownModule, NgbProgressbarModule, @@ -20,7 +20,7 @@ import { ToastComponent } from '../../common/toast/toast.component' ], }) export class ToastsDropdownComponent implements OnInit, OnDestroy { - constructor(public toastService: ToastService) {} + toastService = inject(ToastService) private subscription: Subscription diff --git a/src-ui/src/app/components/common/confirm-dialog/confirm-dialog.component.ts b/src-ui/src/app/components/common/confirm-dialog/confirm-dialog.component.ts index ce1440048..191954742 100644 --- a/src-ui/src/app/components/common/confirm-dialog/confirm-dialog.component.ts +++ b/src-ui/src/app/components/common/confirm-dialog/confirm-dialog.component.ts @@ -1,5 +1,5 @@ import { DecimalPipe } from '@angular/common' -import { Component, EventEmitter, Input, Output } from '@angular/core' +import { Component, EventEmitter, Input, Output, inject } from '@angular/core' import { NgbActiveModal } from '@ng-bootstrap/ng-bootstrap' import { Subject } from 'rxjs' import { SafeHtmlPipe } from 'src/app/pipes/safehtml.pipe' @@ -12,9 +12,7 @@ import { LoadingComponentWithPermissions } from '../../loading-component/loading imports: [DecimalPipe, SafeHtmlPipe], }) export class ConfirmDialogComponent extends LoadingComponentWithPermissions { - constructor(public activeModal: NgbActiveModal) { - super() - } + activeModal = inject(NgbActiveModal) @Output() public confirmClicked = new EventEmitter() diff --git a/src-ui/src/app/components/common/confirm-dialog/delete-pages-confirm-dialog/delete-pages-confirm-dialog.component.ts b/src-ui/src/app/components/common/confirm-dialog/delete-pages-confirm-dialog/delete-pages-confirm-dialog.component.ts index a73f35aeb..6d49a110e 100644 --- a/src-ui/src/app/components/common/confirm-dialog/delete-pages-confirm-dialog/delete-pages-confirm-dialog.component.ts +++ b/src-ui/src/app/components/common/confirm-dialog/delete-pages-confirm-dialog/delete-pages-confirm-dialog.component.ts @@ -1,6 +1,5 @@ -import { Component, TemplateRef, ViewChild } from '@angular/core' +import { Component, TemplateRef, ViewChild, inject } from '@angular/core' import { FormsModule, ReactiveFormsModule } from '@angular/forms' -import { NgbActiveModal } from '@ng-bootstrap/ng-bootstrap' import { PDFDocumentProxy, PdfViewerComponent, @@ -17,6 +16,8 @@ import { ConfirmDialogComponent } from '../confirm-dialog.component' imports: [PdfViewerModule, FormsModule, ReactiveFormsModule, SafeHtmlPipe], }) export class DeletePagesConfirmDialogComponent extends ConfirmDialogComponent { + private documentService = inject(DocumentService) + public documentID: number public pages: number[] = [] public currentPage: number = 1 @@ -34,11 +35,8 @@ export class DeletePagesConfirmDialogComponent extends ConfirmDialogComponent { return this.documentService.getPreviewUrl(this.documentID) } - constructor( - activeModal: NgbActiveModal, - private documentService: DocumentService - ) { - super(activeModal) + constructor() { + super() } public pdfPreviewLoaded(pdf: PDFDocumentProxy) { diff --git a/src-ui/src/app/components/common/confirm-dialog/merge-confirm-dialog/merge-confirm-dialog.component.ts b/src-ui/src/app/components/common/confirm-dialog/merge-confirm-dialog/merge-confirm-dialog.component.ts index 0438a33e7..309db8e9e 100644 --- a/src-ui/src/app/components/common/confirm-dialog/merge-confirm-dialog/merge-confirm-dialog.component.ts +++ b/src-ui/src/app/components/common/confirm-dialog/merge-confirm-dialog/merge-confirm-dialog.component.ts @@ -3,9 +3,8 @@ import { DragDropModule, moveItemInArray, } from '@angular/cdk/drag-drop' -import { Component, OnInit } from '@angular/core' +import { Component, OnInit, inject } from '@angular/core' import { FormsModule, ReactiveFormsModule } from '@angular/forms' -import { NgbActiveModal } from '@ng-bootstrap/ng-bootstrap' import { NgxBootstrapIconsModule } from 'ngx-bootstrap-icons' import { takeUntil } from 'rxjs' import { Document } from 'src/app/data/document' @@ -28,6 +27,9 @@ export class MergeConfirmDialogComponent extends ConfirmDialogComponent implements OnInit { + private documentService = inject(DocumentService) + private permissionService = inject(PermissionsService) + public documentIDs: number[] = [] public archiveFallback: boolean = false public deleteOriginals: boolean = false @@ -38,12 +40,8 @@ export class MergeConfirmDialogComponent public metadataDocumentID: number = -1 - constructor( - activeModal: NgbActiveModal, - private documentService: DocumentService, - private permissionService: PermissionsService - ) { - super(activeModal) + constructor() { + super() } ngOnInit() { diff --git a/src-ui/src/app/components/common/confirm-dialog/rotate-confirm-dialog/rotate-confirm-dialog.component.ts b/src-ui/src/app/components/common/confirm-dialog/rotate-confirm-dialog/rotate-confirm-dialog.component.ts index 3d6844d76..b8b1f3ea3 100644 --- a/src-ui/src/app/components/common/confirm-dialog/rotate-confirm-dialog/rotate-confirm-dialog.component.ts +++ b/src-ui/src/app/components/common/confirm-dialog/rotate-confirm-dialog/rotate-confirm-dialog.component.ts @@ -1,6 +1,5 @@ import { NgStyle } from '@angular/common' -import { Component } from '@angular/core' -import { NgbActiveModal } from '@ng-bootstrap/ng-bootstrap' +import { Component, inject } from '@angular/core' import { NgxBootstrapIconsModule } from 'ngx-bootstrap-icons' import { SafeHtmlPipe } from 'src/app/pipes/safehtml.pipe' import { DocumentService } from 'src/app/services/rest/document.service' @@ -13,6 +12,8 @@ import { ConfirmDialogComponent } from '../confirm-dialog.component' imports: [NgStyle, NgxBootstrapIconsModule, SafeHtmlPipe], }) export class RotateConfirmDialogComponent extends ConfirmDialogComponent { + documentService = inject(DocumentService) + public documentID: number public showPDFNote: boolean = true @@ -25,11 +26,8 @@ export class RotateConfirmDialogComponent extends ConfirmDialogComponent { return degrees } - constructor( - activeModal: NgbActiveModal, - public documentService: DocumentService - ) { - super(activeModal) + constructor() { + super() } rotate(clockwise: boolean = true) { diff --git a/src-ui/src/app/components/common/confirm-dialog/split-confirm-dialog/split-confirm-dialog.component.ts b/src-ui/src/app/components/common/confirm-dialog/split-confirm-dialog/split-confirm-dialog.component.ts index 437418367..656666be6 100644 --- a/src-ui/src/app/components/common/confirm-dialog/split-confirm-dialog/split-confirm-dialog.component.ts +++ b/src-ui/src/app/components/common/confirm-dialog/split-confirm-dialog/split-confirm-dialog.component.ts @@ -1,6 +1,5 @@ -import { Component, OnInit } from '@angular/core' +import { Component, OnInit, inject } from '@angular/core' import { FormsModule, ReactiveFormsModule } from '@angular/forms' -import { NgbActiveModal } from '@ng-bootstrap/ng-bootstrap' import { PDFDocumentProxy, PdfViewerModule } from 'ng2-pdf-viewer' import { NgxBootstrapIconsModule } from 'ngx-bootstrap-icons' import { Document } from 'src/app/data/document' @@ -23,6 +22,9 @@ export class SplitConfirmDialogComponent extends ConfirmDialogComponent implements OnInit { + private documentService = inject(DocumentService) + private permissionService = inject(PermissionsService) + public get pagesString(): string { let pagesStr = '' @@ -62,12 +64,8 @@ export class SplitConfirmDialogComponent return this.documentService.getPreviewUrl(this.documentID) } - constructor( - activeModal: NgbActiveModal, - private documentService: DocumentService, - private permissionService: PermissionsService - ) { - super(activeModal) + constructor() { + super() this.confirmButtonEnabled = this.pages.size > 0 } diff --git a/src-ui/src/app/components/common/custom-field-display/custom-field-display.component.ts b/src-ui/src/app/components/common/custom-field-display/custom-field-display.component.ts index 7c7d2f14f..44ec0bdaa 100644 --- a/src-ui/src/app/components/common/custom-field-display/custom-field-display.component.ts +++ b/src-ui/src/app/components/common/custom-field-display/custom-field-display.component.ts @@ -1,5 +1,5 @@ import { CurrencyPipe, getLocaleCurrencyCode } from '@angular/common' -import { Component, Inject, Input, LOCALE_ID, OnInit } from '@angular/core' +import { Component, Input, LOCALE_ID, OnInit, inject } from '@angular/core' import { NgbTooltipModule } from '@ng-bootstrap/ng-bootstrap' import { takeUntil } from 'rxjs' import { CustomField, CustomFieldDataType } from 'src/app/data/custom-field' @@ -20,6 +20,9 @@ export class CustomFieldDisplayComponent extends LoadingComponentWithPermissions implements OnInit { + private customFieldService = inject(CustomFieldsService) + private documentService = inject(DocumentService) + CustomFieldDataType = CustomFieldDataType private _document: Document @@ -63,11 +66,9 @@ export class CustomFieldDisplayComponent private defaultCurrencyCode: any - constructor( - private customFieldService: CustomFieldsService, - private documentService: DocumentService, - @Inject(LOCALE_ID) currentLocale: string - ) { + constructor() { + const currentLocale = inject(LOCALE_ID) + super() this.defaultCurrencyCode = getLocaleCurrencyCode(currentLocale) this.customFieldService.listAll().subscribe((r) => { diff --git a/src-ui/src/app/components/common/custom-fields-dropdown/custom-fields-dropdown.component.ts b/src-ui/src/app/components/common/custom-fields-dropdown/custom-fields-dropdown.component.ts index 2339373bb..b0fcd48b8 100644 --- a/src-ui/src/app/components/common/custom-fields-dropdown/custom-fields-dropdown.component.ts +++ b/src-ui/src/app/components/common/custom-fields-dropdown/custom-fields-dropdown.component.ts @@ -7,6 +7,7 @@ import { QueryList, ViewChild, ViewChildren, + inject, } from '@angular/core' import { FormsModule, ReactiveFormsModule } from '@angular/forms' import { NgbDropdownModule, NgbModal } from '@ng-bootstrap/ng-bootstrap' @@ -37,6 +38,11 @@ import { CustomFieldEditDialogComponent } from '../edit-dialog/custom-field-edit ], }) export class CustomFieldsDropdownComponent extends LoadingComponentWithPermissions { + private customFieldsService = inject(CustomFieldsService) + private modalService = inject(NgbModal) + private toastService = inject(ToastService) + private permissionsService = inject(PermissionsService) + public popperOptions = pngxPopperOptions @Input() @@ -78,12 +84,7 @@ export class CustomFieldsDropdownComponent extends LoadingComponentWithPermissio ) } - constructor( - private customFieldsService: CustomFieldsService, - private modalService: NgbModal, - private toastService: ToastService, - private permissionsService: PermissionsService - ) { + constructor() { super() this.getFields() } diff --git a/src-ui/src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.ts b/src-ui/src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.ts index 479f072a1..e3f7153b4 100644 --- a/src-ui/src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.ts +++ b/src-ui/src/app/components/common/custom-fields-query-dropdown/custom-fields-query-dropdown.component.ts @@ -2,6 +2,7 @@ import { NgTemplateOutlet } from '@angular/common' import { Component, EventEmitter, + inject, Input, Output, QueryList, @@ -178,6 +179,8 @@ export class CustomFieldQueriesModel { ], }) export class CustomFieldsQueryDropdownComponent extends LoadingComponentWithPermissions { + protected customFieldsService = inject(CustomFieldsService) + public CustomFieldQueryComponentType = CustomFieldQueryElementType public CustomFieldQueryOperator = CustomFieldQueryOperator public CustomFieldDataType = CustomFieldDataType @@ -245,7 +248,7 @@ export class CustomFieldsQueryDropdownComponent extends LoadingComponentWithPerm public readonly today: string = new Date().toISOString().split('T')[0] - constructor(protected customFieldsService: CustomFieldsService) { + constructor() { super() this.selectionModel = new CustomFieldQueriesModel() this.getFields() diff --git a/src-ui/src/app/components/common/dates-dropdown/dates-dropdown.component.ts b/src-ui/src/app/components/common/dates-dropdown/dates-dropdown.component.ts index c220262a4..20683a2d1 100644 --- a/src-ui/src/app/components/common/dates-dropdown/dates-dropdown.component.ts +++ b/src-ui/src/app/components/common/dates-dropdown/dates-dropdown.component.ts @@ -6,6 +6,7 @@ import { OnDestroy, OnInit, Output, + inject, } from '@angular/core' import { FormsModule, ReactiveFormsModule } from '@angular/forms' import { @@ -63,7 +64,9 @@ export enum RelativeDate { export class DatesDropdownComponent implements OnInit, OnDestroy { public popperOptions = pngxPopperOptions - constructor(settings: SettingsService) { + constructor() { + const settings = inject(SettingsService) + this.datePlaceHolder = settings.getLocalizedDateInputFormat() } diff --git a/src-ui/src/app/components/common/edit-dialog/correspondent-edit-dialog/correspondent-edit-dialog.component.html b/src-ui/src/app/components/common/edit-dialog/correspondent-edit-dialog/correspondent-edit-dialog.component.html index 120988826..89cbeae62 100644 --- a/src-ui/src/app/components/common/edit-dialog/correspondent-edit-dialog/correspondent-edit-dialog.component.html +++ b/src-ui/src/app/components/common/edit-dialog/correspondent-edit-dialog/correspondent-edit-dialog.component.html @@ -13,8 +13,6 @@ @if (patternRequired) { - } - @if (patternRequired) { } diff --git a/src-ui/src/app/components/common/edit-dialog/correspondent-edit-dialog/correspondent-edit-dialog.component.ts b/src-ui/src/app/components/common/edit-dialog/correspondent-edit-dialog/correspondent-edit-dialog.component.ts index 37ac4ff65..e860a0ef6 100644 --- a/src-ui/src/app/components/common/edit-dialog/correspondent-edit-dialog/correspondent-edit-dialog.component.ts +++ b/src-ui/src/app/components/common/edit-dialog/correspondent-edit-dialog/correspondent-edit-dialog.component.ts @@ -1,11 +1,10 @@ -import { Component } from '@angular/core' +import { Component, inject } from '@angular/core' import { FormControl, FormGroup, FormsModule, ReactiveFormsModule, } from '@angular/forms' -import { NgbActiveModal } from '@ng-bootstrap/ng-bootstrap' import { EditDialogComponent } from 'src/app/components/common/edit-dialog/edit-dialog.component' import { Correspondent } from 'src/app/data/correspondent' import { DEFAULT_MATCHING_ALGORITHM } from 'src/app/data/matching-model' @@ -13,6 +12,7 @@ import { IfOwnerDirective } from 'src/app/directives/if-owner.directive' import { CorrespondentService } from 'src/app/services/rest/correspondent.service' import { UserService } from 'src/app/services/rest/user.service' import { SettingsService } from 'src/app/services/settings.service' +import { CheckComponent } from '../../input/check/check.component' import { PermissionsFormComponent } from '../../input/permissions/permissions-form/permissions-form.component' import { SelectComponent } from '../../input/select/select.component' import { TextComponent } from '../../input/text/text.component' @@ -22,6 +22,7 @@ import { TextComponent } from '../../input/text/text.component' templateUrl: './correspondent-edit-dialog.component.html', styleUrls: ['./correspondent-edit-dialog.component.scss'], imports: [ + CheckComponent, SelectComponent, PermissionsFormComponent, TextComponent, @@ -31,13 +32,11 @@ import { TextComponent } from '../../input/text/text.component' ], }) export class CorrespondentEditDialogComponent extends EditDialogComponent { - constructor( - service: CorrespondentService, - activeModal: NgbActiveModal, - userService: UserService, - settingsService: SettingsService - ) { - super(service, activeModal, userService, settingsService) + constructor() { + super() + this.service = inject(CorrespondentService) + this.userService = inject(UserService) + this.settingsService = inject(SettingsService) } getCreateTitle() { diff --git a/src-ui/src/app/components/common/edit-dialog/custom-field-edit-dialog/custom-field-edit-dialog.component.ts b/src-ui/src/app/components/common/edit-dialog/custom-field-edit-dialog/custom-field-edit-dialog.component.ts index 384bf7b68..ce3be7e66 100644 --- a/src-ui/src/app/components/common/edit-dialog/custom-field-edit-dialog/custom-field-edit-dialog.component.ts +++ b/src-ui/src/app/components/common/edit-dialog/custom-field-edit-dialog/custom-field-edit-dialog.component.ts @@ -5,6 +5,7 @@ import { OnInit, QueryList, ViewChildren, + inject, } from '@angular/core' import { FormArray, @@ -13,7 +14,6 @@ import { FormsModule, ReactiveFormsModule, } from '@angular/forms' -import { NgbActiveModal } from '@ng-bootstrap/ng-bootstrap' import { NgxBootstrapIconsModule } from 'ngx-bootstrap-icons' import { takeUntil } from 'rxjs' import { @@ -54,13 +54,11 @@ export class CustomFieldEditDialogComponent .select_options as FormArray } - constructor( - service: CustomFieldsService, - activeModal: NgbActiveModal, - userService: UserService, - settingsService: SettingsService - ) { - super(service, activeModal, userService, settingsService) + constructor() { + super() + this.service = inject(CustomFieldsService) + this.userService = inject(UserService) + this.settingsService = inject(SettingsService) } ngOnInit(): void { diff --git a/src-ui/src/app/components/common/edit-dialog/document-type-edit-dialog/document-type-edit-dialog.component.html b/src-ui/src/app/components/common/edit-dialog/document-type-edit-dialog/document-type-edit-dialog.component.html index 2dc5fe2a4..def871e1c 100644 --- a/src-ui/src/app/components/common/edit-dialog/document-type-edit-dialog/document-type-edit-dialog.component.html +++ b/src-ui/src/app/components/common/edit-dialog/document-type-edit-dialog/document-type-edit-dialog.component.html @@ -14,8 +14,6 @@ @if (patternRequired) { - } - @if (patternRequired) { } diff --git a/src-ui/src/app/components/common/edit-dialog/document-type-edit-dialog/document-type-edit-dialog.component.ts b/src-ui/src/app/components/common/edit-dialog/document-type-edit-dialog/document-type-edit-dialog.component.ts index 48c347068..cfd9a060f 100644 --- a/src-ui/src/app/components/common/edit-dialog/document-type-edit-dialog/document-type-edit-dialog.component.ts +++ b/src-ui/src/app/components/common/edit-dialog/document-type-edit-dialog/document-type-edit-dialog.component.ts @@ -1,11 +1,10 @@ -import { Component } from '@angular/core' +import { Component, inject } from '@angular/core' import { FormControl, FormGroup, FormsModule, ReactiveFormsModule, } from '@angular/forms' -import { NgbActiveModal } from '@ng-bootstrap/ng-bootstrap' import { EditDialogComponent } from 'src/app/components/common/edit-dialog/edit-dialog.component' import { DocumentType } from 'src/app/data/document-type' import { DEFAULT_MATCHING_ALGORITHM } from 'src/app/data/matching-model' @@ -13,6 +12,7 @@ import { IfOwnerDirective } from 'src/app/directives/if-owner.directive' import { DocumentTypeService } from 'src/app/services/rest/document-type.service' import { UserService } from 'src/app/services/rest/user.service' import { SettingsService } from 'src/app/services/settings.service' +import { CheckComponent } from '../../input/check/check.component' import { PermissionsFormComponent } from '../../input/permissions/permissions-form/permissions-form.component' import { SelectComponent } from '../../input/select/select.component' import { TextComponent } from '../../input/text/text.component' @@ -22,6 +22,7 @@ import { TextComponent } from '../../input/text/text.component' templateUrl: './document-type-edit-dialog.component.html', styleUrls: ['./document-type-edit-dialog.component.scss'], imports: [ + CheckComponent, SelectComponent, PermissionsFormComponent, TextComponent, @@ -31,13 +32,11 @@ import { TextComponent } from '../../input/text/text.component' ], }) export class DocumentTypeEditDialogComponent extends EditDialogComponent { - constructor( - service: DocumentTypeService, - activeModal: NgbActiveModal, - userService: UserService, - settingsService: SettingsService - ) { - super(service, activeModal, userService, settingsService) + constructor() { + super() + this.service = inject(DocumentTypeService) + this.userService = inject(UserService) + this.settingsService = inject(SettingsService) } getCreateTitle() { diff --git a/src-ui/src/app/components/common/edit-dialog/edit-dialog.component.spec.ts b/src-ui/src/app/components/common/edit-dialog/edit-dialog.component.spec.ts index d16a22f31..fa845f369 100644 --- a/src-ui/src/app/components/common/edit-dialog/edit-dialog.component.spec.ts +++ b/src-ui/src/app/components/common/edit-dialog/edit-dialog.component.spec.ts @@ -41,13 +41,9 @@ import { EditDialogComponent, EditDialogMode } from './edit-dialog.component' imports: [FormsModule, ReactiveFormsModule], }) class TestComponent extends EditDialogComponent { - constructor( - service: TagService, - activeModal: NgbActiveModal, - userService: UserService, - settingsService: SettingsService - ) { - super(service, activeModal, userService, settingsService) + constructor() { + super() + this.service = TestBed.inject(TagService) } getForm(): FormGroup { diff --git a/src-ui/src/app/components/common/edit-dialog/edit-dialog.component.ts b/src-ui/src/app/components/common/edit-dialog/edit-dialog.component.ts index 86f0fd4dd..fa35dc6bf 100644 --- a/src-ui/src/app/components/common/edit-dialog/edit-dialog.component.ts +++ b/src-ui/src/app/components/common/edit-dialog/edit-dialog.component.ts @@ -1,4 +1,11 @@ -import { Directive, EventEmitter, Input, OnInit, Output } from '@angular/core' +import { + Directive, + EventEmitter, + Input, + OnInit, + Output, + inject, +} from '@angular/core' import { FormGroup } from '@angular/forms' import { NgbActiveModal } from '@ng-bootstrap/ng-bootstrap' import { Observable } from 'rxjs' @@ -29,14 +36,12 @@ export abstract class EditDialogComponent< extends LoadingComponentWithPermissions implements OnInit { - constructor( - protected service: AbstractPaperlessService, - private activeModal: NgbActiveModal, - private userService: UserService, - protected settingsService: SettingsService - ) { - super() - } + protected service = inject>( + AbstractPaperlessService + ) + protected activeModal = inject(NgbActiveModal) + protected userService = inject(UserService) + protected settingsService = inject(SettingsService) users: User[] diff --git a/src-ui/src/app/components/common/edit-dialog/group-edit-dialog/group-edit-dialog.component.ts b/src-ui/src/app/components/common/edit-dialog/group-edit-dialog/group-edit-dialog.component.ts index 07e696d58..bdb8f6d62 100644 --- a/src-ui/src/app/components/common/edit-dialog/group-edit-dialog/group-edit-dialog.component.ts +++ b/src-ui/src/app/components/common/edit-dialog/group-edit-dialog/group-edit-dialog.component.ts @@ -1,11 +1,10 @@ -import { Component } from '@angular/core' +import { Component, inject } from '@angular/core' import { FormControl, FormGroup, FormsModule, ReactiveFormsModule, } from '@angular/forms' -import { NgbActiveModal } from '@ng-bootstrap/ng-bootstrap' import { EditDialogComponent } from 'src/app/components/common/edit-dialog/edit-dialog.component' import { Group } from 'src/app/data/group' import { GroupService } from 'src/app/services/rest/group.service' @@ -26,13 +25,11 @@ import { PermissionsSelectComponent } from '../../permissions-select/permissions ], }) export class GroupEditDialogComponent extends EditDialogComponent { - constructor( - service: GroupService, - activeModal: NgbActiveModal, - userService: UserService, - settingsService: SettingsService - ) { - super(service, activeModal, userService, settingsService) + constructor() { + super() + this.service = inject(GroupService) + this.userService = inject(UserService) + this.settingsService = inject(SettingsService) } getCreateTitle() { diff --git a/src-ui/src/app/components/common/edit-dialog/mail-account-edit-dialog/mail-account-edit-dialog.component.ts b/src-ui/src/app/components/common/edit-dialog/mail-account-edit-dialog/mail-account-edit-dialog.component.ts index a165a0c13..855a79a4e 100644 --- a/src-ui/src/app/components/common/edit-dialog/mail-account-edit-dialog/mail-account-edit-dialog.component.ts +++ b/src-ui/src/app/components/common/edit-dialog/mail-account-edit-dialog/mail-account-edit-dialog.component.ts @@ -1,15 +1,11 @@ -import { Component, ViewChild } from '@angular/core' +import { Component, ViewChild, inject } from '@angular/core' import { FormControl, FormGroup, FormsModule, ReactiveFormsModule, } from '@angular/forms' -import { - NgbActiveModal, - NgbAlert, - NgbAlertModule, -} from '@ng-bootstrap/ng-bootstrap' +import { NgbAlert, NgbAlertModule } from '@ng-bootstrap/ng-bootstrap' import { EditDialogComponent } from 'src/app/components/common/edit-dialog/edit-dialog.component' import { IMAPSecurity, MailAccount } from 'src/app/data/mail-account' import { MailAccountService } from 'src/app/services/rest/mail-account.service' @@ -47,13 +43,11 @@ export class MailAccountEditDialogComponent extends EditDialogComponent { + private accountService: MailAccountService + private correspondentService: CorrespondentService + private documentTypeService: DocumentTypeService + accounts: MailAccount[] correspondents: Correspondent[] documentTypes: DocumentType[] - constructor( - service: MailRuleService, - activeModal: NgbActiveModal, - accountService: MailAccountService, - correspondentService: CorrespondentService, - documentTypeService: DocumentTypeService, - userService: UserService, - settingsService: SettingsService - ) { - super(service, activeModal, userService, settingsService) + constructor() { + super() + this.service = inject(MailRuleService) + this.accountService = inject(MailAccountService) + this.correspondentService = inject(CorrespondentService) + this.documentTypeService = inject(DocumentTypeService) + this.userService = inject(UserService) + this.settingsService = inject(SettingsService) - accountService + this.accountService .listAll() .pipe(first()) .subscribe((result) => (this.accounts = result.results)) - correspondentService + this.correspondentService .listAll() .pipe(first()) .subscribe((result) => (this.correspondents = result.results)) - documentTypeService + this.documentTypeService .listAll() .pipe(first()) .subscribe((result) => (this.documentTypes = result.results)) diff --git a/src-ui/src/app/components/common/edit-dialog/storage-path-edit-dialog/storage-path-edit-dialog.component.html b/src-ui/src/app/components/common/edit-dialog/storage-path-edit-dialog/storage-path-edit-dialog.component.html index 45b2bc5e9..625c73776 100644 --- a/src-ui/src/app/components/common/edit-dialog/storage-path-edit-dialog/storage-path-edit-dialog.component.html +++ b/src-ui/src/app/components/common/edit-dialog/storage-path-edit-dialog/storage-path-edit-dialog.component.html @@ -64,8 +64,6 @@ @if (patternRequired) { - } - @if (patternRequired) { } diff --git a/src-ui/src/app/components/common/edit-dialog/storage-path-edit-dialog/storage-path-edit-dialog.component.ts b/src-ui/src/app/components/common/edit-dialog/storage-path-edit-dialog/storage-path-edit-dialog.component.ts index 1699e5324..f06831588 100644 --- a/src-ui/src/app/components/common/edit-dialog/storage-path-edit-dialog/storage-path-edit-dialog.component.ts +++ b/src-ui/src/app/components/common/edit-dialog/storage-path-edit-dialog/storage-path-edit-dialog.component.ts @@ -1,12 +1,12 @@ import { AsyncPipe, NgTemplateOutlet } from '@angular/common' -import { Component, OnDestroy } from '@angular/core' +import { Component, OnDestroy, inject } from '@angular/core' import { FormControl, FormGroup, FormsModule, ReactiveFormsModule, } from '@angular/forms' -import { NgbAccordionModule, NgbActiveModal } from '@ng-bootstrap/ng-bootstrap' +import { NgbAccordionModule } from '@ng-bootstrap/ng-bootstrap' import { NgSelectComponent } from '@ng-select/ng-select' import { Observable, @@ -60,6 +60,8 @@ export class StoragePathEditDialogComponent extends EditDialogComponent implements OnDestroy { + private documentsService = inject(DocumentService) + public documentsInput$ = new Subject() public foundDocuments$: Observable private testDocument: Document @@ -68,14 +70,11 @@ export class StoragePathEditDialogComponent public loading = false public testLoading = false - constructor( - service: StoragePathService, - activeModal: NgbActiveModal, - userService: UserService, - settingsService: SettingsService, - private documentsService: DocumentService - ) { - super(service, activeModal, userService, settingsService) + constructor() { + super() + this.service = inject(StoragePathService) + this.userService = inject(UserService) + this.settingsService = inject(SettingsService) this.initPathObservables() } diff --git a/src-ui/src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.html b/src-ui/src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.html index 7aac54606..1024560d3 100644 --- a/src-ui/src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.html +++ b/src-ui/src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.html @@ -16,8 +16,6 @@ @if (patternRequired) { - } - @if (patternRequired) { } diff --git a/src-ui/src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.ts b/src-ui/src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.ts index 63a99e2f2..aa0572213 100644 --- a/src-ui/src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.ts +++ b/src-ui/src/app/components/common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component.ts @@ -1,11 +1,10 @@ -import { Component } from '@angular/core' +import { Component, inject } from '@angular/core' import { FormControl, FormGroup, FormsModule, ReactiveFormsModule, } from '@angular/forms' -import { NgbActiveModal } from '@ng-bootstrap/ng-bootstrap' import { EditDialogComponent } from 'src/app/components/common/edit-dialog/edit-dialog.component' import { DEFAULT_MATCHING_ALGORITHM } from 'src/app/data/matching-model' import { Tag } from 'src/app/data/tag' @@ -36,13 +35,11 @@ import { TextComponent } from '../../input/text/text.component' ], }) export class TagEditDialogComponent extends EditDialogComponent { - constructor( - service: TagService, - activeModal: NgbActiveModal, - userService: UserService, - settingsService: SettingsService - ) { - super(service, activeModal, userService, settingsService) + constructor() { + super() + this.service = inject(TagService) + this.userService = inject(UserService) + this.settingsService = inject(SettingsService) } getCreateTitle() { diff --git a/src-ui/src/app/components/common/edit-dialog/user-edit-dialog/user-edit-dialog.component.ts b/src-ui/src/app/components/common/edit-dialog/user-edit-dialog/user-edit-dialog.component.ts index 7ba0f5ceb..86e60151b 100644 --- a/src-ui/src/app/components/common/edit-dialog/user-edit-dialog/user-edit-dialog.component.ts +++ b/src-ui/src/app/components/common/edit-dialog/user-edit-dialog/user-edit-dialog.component.ts @@ -1,11 +1,10 @@ -import { Component, OnInit } from '@angular/core' +import { Component, OnInit, inject } from '@angular/core' import { FormControl, FormGroup, FormsModule, ReactiveFormsModule, } from '@angular/forms' -import { NgbActiveModal } from '@ng-bootstrap/ng-bootstrap' import { first } from 'rxjs' import { EditDialogComponent } from 'src/app/components/common/edit-dialog/edit-dialog.component' import { Group } from 'src/app/data/group' @@ -37,21 +36,21 @@ export class UserEditDialogComponent extends EditDialogComponent implements OnInit { + private toastService = inject(ToastService) + private permissionsService = inject(PermissionsService) + private groupsService: GroupService + groups: Group[] passwordIsSet: boolean = false public totpLoading: boolean = false - constructor( - service: UserService, - activeModal: NgbActiveModal, - groupsService: GroupService, - settingsService: SettingsService, - private toastService: ToastService, - private permissionsService: PermissionsService - ) { - super(service, activeModal, service, settingsService) + constructor() { + super() + this.service = inject(UserService) + this.groupsService = inject(GroupService) + this.settingsService = inject(SettingsService) - groupsService + this.groupsService .listAll() .pipe(first()) .subscribe((result) => (this.groups = result.results)) diff --git a/src-ui/src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts b/src-ui/src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts index a4a06ba04..015b40113 100644 --- a/src-ui/src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts +++ b/src-ui/src/app/components/common/edit-dialog/workflow-edit-dialog/workflow-edit-dialog.component.ts @@ -4,7 +4,7 @@ import { moveItemInArray, } from '@angular/cdk/drag-drop' import { NgTemplateOutlet } from '@angular/common' -import { Component, OnInit } from '@angular/core' +import { Component, OnInit, inject } from '@angular/core' import { FormArray, FormControl, @@ -12,7 +12,7 @@ import { FormsModule, ReactiveFormsModule, } from '@angular/forms' -import { NgbAccordionModule, NgbActiveModal } from '@ng-bootstrap/ng-bootstrap' +import { NgbAccordionModule } from '@ng-bootstrap/ng-bootstrap' import { NgxBootstrapIconsModule } from 'ngx-bootstrap-icons' import { first } from 'rxjs' import { Correspondent } from 'src/app/data/correspondent' @@ -171,6 +171,12 @@ export class WorkflowEditDialogComponent public WorkflowTriggerType = WorkflowTriggerType public WorkflowActionType = WorkflowActionType + private correspondentService: CorrespondentService + private documentTypeService: DocumentTypeService + private storagePathService: StoragePathService + private mailRuleService: MailRuleService + private customFieldsService: CustomFieldsService + templates: Workflow[] correspondents: Correspondent[] documentTypes: DocumentType[] @@ -183,40 +189,38 @@ export class WorkflowEditDialogComponent private allowedActionTypes = [] - constructor( - service: WorkflowService, - activeModal: NgbActiveModal, - correspondentService: CorrespondentService, - documentTypeService: DocumentTypeService, - storagePathService: StoragePathService, - mailRuleService: MailRuleService, - userService: UserService, - settingsService: SettingsService, - customFieldsService: CustomFieldsService - ) { - super(service, activeModal, userService, settingsService) + constructor() { + super() + this.service = inject(WorkflowService) + this.correspondentService = inject(CorrespondentService) + this.documentTypeService = inject(DocumentTypeService) + this.storagePathService = inject(StoragePathService) + this.mailRuleService = inject(MailRuleService) + this.userService = inject(UserService) + this.settingsService = inject(SettingsService) + this.customFieldsService = inject(CustomFieldsService) - correspondentService + this.correspondentService .listAll() .pipe(first()) .subscribe((result) => (this.correspondents = result.results)) - documentTypeService + this.documentTypeService .listAll() .pipe(first()) .subscribe((result) => (this.documentTypes = result.results)) - storagePathService + this.storagePathService .listAll() .pipe(first()) .subscribe((result) => (this.storagePaths = result.results)) - mailRuleService + this.mailRuleService .listAll() .pipe(first()) .subscribe((result) => (this.mailRules = result.results)) - customFieldsService + this.customFieldsService .listAll() .pipe(first()) .subscribe((result) => { diff --git a/src-ui/src/app/components/common/email-document-dialog/email-document-dialog.component.ts b/src-ui/src/app/components/common/email-document-dialog/email-document-dialog.component.ts index 73fa38b56..dc9455330 100644 --- a/src-ui/src/app/components/common/email-document-dialog/email-document-dialog.component.ts +++ b/src-ui/src/app/components/common/email-document-dialog/email-document-dialog.component.ts @@ -1,4 +1,4 @@ -import { Component, Input } from '@angular/core' +import { Component, Input, inject } from '@angular/core' import { FormsModule } from '@angular/forms' import { NgbActiveModal } from '@ng-bootstrap/ng-bootstrap' import { NgxBootstrapIconsModule } from 'ngx-bootstrap-icons' @@ -13,6 +13,10 @@ import { LoadingComponentWithPermissions } from '../../loading-component/loading imports: [FormsModule, NgxBootstrapIconsModule], }) export class EmailDocumentDialogComponent extends LoadingComponentWithPermissions { + private activeModal = inject(NgbActiveModal) + private documentService = inject(DocumentService) + private toastService = inject(ToastService) + @Input() title = $localize`Email Document` @@ -37,11 +41,7 @@ export class EmailDocumentDialogComponent extends LoadingComponentWithPermission public emailSubject: string = '' public emailMessage: string = '' - constructor( - private activeModal: NgbActiveModal, - private documentService: DocumentService, - private toastService: ToastService - ) { + constructor() { super() this.loading = false } diff --git a/src-ui/src/app/components/common/filterable-dropdown/filterable-dropdown.component.ts b/src-ui/src/app/components/common/filterable-dropdown/filterable-dropdown.component.ts index 4af3d6d9c..ce1137d2a 100644 --- a/src-ui/src/app/components/common/filterable-dropdown/filterable-dropdown.component.ts +++ b/src-ui/src/app/components/common/filterable-dropdown/filterable-dropdown.component.ts @@ -7,6 +7,7 @@ import { OnInit, Output, ViewChild, + inject, } from '@angular/core' import { FormsModule, ReactiveFormsModule } from '@angular/forms' import { NgbDropdown, NgbDropdownModule } from '@ng-bootstrap/ng-bootstrap' @@ -434,6 +435,9 @@ export class FilterableDropdownComponent extends LoadingComponentWithPermissions implements OnInit { + private filterPipe = inject(FilterPipe) + private hotkeyService = inject(HotKeyService) + @ViewChild('listFilterTextInput') listFilterTextInput: ElementRef @ViewChild('dropdown') dropdown: NgbDropdown @ViewChild('buttonItems') buttonItems: ElementRef @@ -536,10 +540,7 @@ export class FilterableDropdownComponent private keyboardIndex: number - constructor( - private filterPipe: FilterPipe, - private hotkeyService: HotKeyService - ) { + constructor() { super() this.selectionModelChange.subscribe((updatedModel) => { this.modelIsDirty = updatedModel.isDirty() diff --git a/src-ui/src/app/components/common/hotkey-dialog/hotkey-dialog.component.ts b/src-ui/src/app/components/common/hotkey-dialog/hotkey-dialog.component.ts index 429e2db17..180fc1005 100644 --- a/src-ui/src/app/components/common/hotkey-dialog/hotkey-dialog.component.ts +++ b/src-ui/src/app/components/common/hotkey-dialog/hotkey-dialog.component.ts @@ -1,4 +1,4 @@ -import { Component } from '@angular/core' +import { Component, inject } from '@angular/core' import { NgbActiveModal } from '@ng-bootstrap/ng-bootstrap' const SYMBOLS = { @@ -19,11 +19,11 @@ const SYMBOLS = { styleUrl: './hotkey-dialog.component.scss', }) export class HotkeyDialogComponent { + activeModal = inject(NgbActiveModal) + public title: string = $localize`Keyboard shortcuts` public hotkeys: Map = new Map() - constructor(public activeModal: NgbActiveModal) {} - public close(): void { this.activeModal.close() } diff --git a/src-ui/src/app/components/common/input/custom-fields-values/custom-fields-values.component.ts b/src-ui/src/app/components/common/input/custom-fields-values/custom-fields-values.component.ts index 477a3398a..e318a35a7 100644 --- a/src-ui/src/app/components/common/input/custom-fields-values/custom-fields-values.component.ts +++ b/src-ui/src/app/components/common/input/custom-fields-values/custom-fields-values.component.ts @@ -2,6 +2,7 @@ import { Component, EventEmitter, forwardRef, + inject, Input, Output, } from '@angular/core' @@ -55,7 +56,9 @@ import { UrlComponent } from '../url/url.component' export class CustomFieldsValuesComponent extends AbstractInputComponent { public CustomFieldDataType = CustomFieldDataType - constructor(customFieldsService: CustomFieldsService) { + constructor() { + const customFieldsService = inject(CustomFieldsService) + super() customFieldsService.listAll().subscribe((items) => { this.fields = items.results diff --git a/src-ui/src/app/components/common/input/date/date.component.ts b/src-ui/src/app/components/common/input/date/date.component.ts index 176b468f6..3320ff7ab 100644 --- a/src-ui/src/app/components/common/input/date/date.component.ts +++ b/src-ui/src/app/components/common/input/date/date.component.ts @@ -2,6 +2,7 @@ import { Component, EventEmitter, forwardRef, + inject, Input, OnInit, Output, @@ -45,13 +46,9 @@ export class DateComponent extends AbstractInputComponent implements OnInit { - constructor( - private settings: SettingsService, - private ngbDateParserFormatter: NgbDateParserFormatter, - private isoDateAdapter: NgbDateAdapter - ) { - super() - } + private settings = inject(SettingsService) + private ngbDateParserFormatter = inject(NgbDateParserFormatter) + private isoDateAdapter = inject>(NgbDateAdapter) @Input() suggestions: string[] diff --git a/src-ui/src/app/components/common/input/document-link/document-link.component.ts b/src-ui/src/app/components/common/input/document-link/document-link.component.ts index afe539b69..b50f5701d 100644 --- a/src-ui/src/app/components/common/input/document-link/document-link.component.ts +++ b/src-ui/src/app/components/common/input/document-link/document-link.component.ts @@ -1,5 +1,12 @@ import { AsyncPipe, NgTemplateOutlet } from '@angular/common' -import { Component, forwardRef, Input, OnDestroy, OnInit } from '@angular/core' +import { + Component, + forwardRef, + inject, + Input, + OnDestroy, + OnInit, +} from '@angular/core' import { FormsModule, NG_VALUE_ACCESSOR, @@ -52,6 +59,8 @@ export class DocumentLinkComponent extends AbstractInputComponent implements OnInit, OnDestroy { + private documentsService = inject(DocumentService) + documentsInput$ = new Subject() foundDocuments$: Observable loading = false @@ -75,10 +84,6 @@ export class DocumentLinkComponent return this.selectedDocuments.map((d) => d.id) } - constructor(private documentsService: DocumentService) { - super() - } - ngOnInit() { this.loadDocs() } diff --git a/src-ui/src/app/components/common/input/monetary/monetary.component.spec.ts b/src-ui/src/app/components/common/input/monetary/monetary.component.spec.ts index 7c0194641..1299dcd62 100644 --- a/src-ui/src/app/components/common/input/monetary/monetary.component.spec.ts +++ b/src-ui/src/app/components/common/input/monetary/monetary.component.spec.ts @@ -1,5 +1,6 @@ import { provideHttpClient, withInterceptorsFromDi } from '@angular/common/http' import { provideHttpClientTesting } from '@angular/common/http/testing' +import { LOCALE_ID } from '@angular/core' import { ComponentFixture, TestBed } from '@angular/core/testing' import { NG_VALUE_ACCESSOR } from '@angular/forms' import { MonetaryComponent } from './monetary.component' @@ -41,8 +42,6 @@ describe('MonetaryComponent', () => { it('should set the default currency code based on LOCALE_ID', () => { expect(component.defaultCurrencyCode).toEqual('USD') // default - component = new MonetaryComponent('pt-BR') - expect(component.defaultCurrencyCode).toEqual('BRL') }) it('should support setting a default currency code', () => { @@ -87,3 +86,28 @@ describe('MonetaryComponent', () => { expect(component.value).toEqual('USD0.00') }) }) + +describe('MonetaryComponent (Alternate Locale)', () => { + let component: MonetaryComponent + let fixture: ComponentFixture + + beforeEach(async () => { + await TestBed.configureTestingModule({ + imports: [MonetaryComponent], + providers: [ + { provide: LOCALE_ID, useValue: 'pt-BR' }, // Brazilian Portuguese + provideHttpClient(withInterceptorsFromDi()), + provideHttpClientTesting(), + ], + }).compileComponents() + + fixture = TestBed.createComponent(MonetaryComponent) + fixture.debugElement.injector.get(NG_VALUE_ACCESSOR) + component = fixture.componentInstance + fixture.detectChanges() + }) + + it('should set the default currency code based on LOCALE_ID', () => { + expect(component.defaultCurrencyCode).toEqual('BRL') + }) +}) diff --git a/src-ui/src/app/components/common/input/monetary/monetary.component.ts b/src-ui/src/app/components/common/input/monetary/monetary.component.ts index cca3ab4b9..b0d6c5b09 100644 --- a/src-ui/src/app/components/common/input/monetary/monetary.component.ts +++ b/src-ui/src/app/components/common/input/monetary/monetary.component.ts @@ -1,5 +1,5 @@ import { CurrencyPipe, getLocaleCurrencyCode } from '@angular/common' -import { Component, forwardRef, Inject, Input, LOCALE_ID } from '@angular/core' +import { Component, forwardRef, inject, Input, LOCALE_ID } from '@angular/core' import { FormsModule, NG_VALUE_ACCESSOR, @@ -27,6 +27,8 @@ import { AbstractInputComponent } from '../abstract-input' ], }) export class MonetaryComponent extends AbstractInputComponent { + currentLocale = inject(LOCALE_ID) + public currency: string = '' public _monetaryValue: string = '' @@ -45,11 +47,10 @@ export class MonetaryComponent extends AbstractInputComponent { if (currency) this.defaultCurrencyCode = currency } - constructor(@Inject(LOCALE_ID) currentLocale: string) { + constructor() { super() - this.currency = this.defaultCurrencyCode = - this.defaultCurrency ?? getLocaleCurrencyCode(currentLocale) + this.defaultCurrency ?? getLocaleCurrencyCode(this.currentLocale) } writeValue(newValue: any): void { diff --git a/src-ui/src/app/components/common/input/number/number.component.ts b/src-ui/src/app/components/common/input/number/number.component.ts index 127574334..1090b3c43 100644 --- a/src-ui/src/app/components/common/input/number/number.component.ts +++ b/src-ui/src/app/components/common/input/number/number.component.ts @@ -1,4 +1,4 @@ -import { Component, forwardRef, Input } from '@angular/core' +import { Component, forwardRef, inject, Input } from '@angular/core' import { FormsModule, NG_VALUE_ACCESSOR, @@ -22,16 +22,14 @@ import { AbstractInputComponent } from '../abstract-input' imports: [FormsModule, ReactiveFormsModule, NgxBootstrapIconsModule], }) export class NumberComponent extends AbstractInputComponent { + private documentService = inject(DocumentService) + @Input() showAdd: boolean = true @Input() step: number = 1 - constructor(private documentService: DocumentService) { - super() - } - nextAsn() { if (this.value) { return diff --git a/src-ui/src/app/components/common/input/permissions/permissions-group/permissions-group.component.ts b/src-ui/src/app/components/common/input/permissions/permissions-group/permissions-group.component.ts index 1c157c121..005dc5477 100644 --- a/src-ui/src/app/components/common/input/permissions/permissions-group/permissions-group.component.ts +++ b/src-ui/src/app/components/common/input/permissions/permissions-group/permissions-group.component.ts @@ -1,4 +1,4 @@ -import { Component, forwardRef } from '@angular/core' +import { Component, forwardRef, inject } from '@angular/core' import { FormsModule, NG_VALUE_ACCESSOR, @@ -26,7 +26,9 @@ import { AbstractInputComponent } from '../../abstract-input' export class PermissionsGroupComponent extends AbstractInputComponent { groups: Group[] - constructor(groupService: GroupService) { + constructor() { + const groupService = inject(GroupService) + super() groupService .listAll() diff --git a/src-ui/src/app/components/common/input/permissions/permissions-user/permissions-user.component.ts b/src-ui/src/app/components/common/input/permissions/permissions-user/permissions-user.component.ts index 42e553890..8a071c1c1 100644 --- a/src-ui/src/app/components/common/input/permissions/permissions-user/permissions-user.component.ts +++ b/src-ui/src/app/components/common/input/permissions/permissions-user/permissions-user.component.ts @@ -1,4 +1,4 @@ -import { Component, forwardRef } from '@angular/core' +import { Component, forwardRef, inject } from '@angular/core' import { FormsModule, NG_VALUE_ACCESSOR, @@ -8,7 +8,6 @@ import { NgSelectComponent } from '@ng-select/ng-select' import { first } from 'rxjs/operators' import { User } from 'src/app/data/user' import { UserService } from 'src/app/services/rest/user.service' -import { SettingsService } from 'src/app/services/settings.service' import { AbstractInputComponent } from '../../abstract-input' @Component({ @@ -27,7 +26,9 @@ import { AbstractInputComponent } from '../../abstract-input' export class PermissionsUserComponent extends AbstractInputComponent { users: User[] - constructor(userService: UserService, settings: SettingsService) { + constructor() { + const userService = inject(UserService) + super() userService .listAll() diff --git a/src-ui/src/app/components/common/input/tags/tags.component.ts b/src-ui/src/app/components/common/input/tags/tags.component.ts index 50e221c39..3ad4106b1 100644 --- a/src-ui/src/app/components/common/input/tags/tags.component.ts +++ b/src-ui/src/app/components/common/input/tags/tags.component.ts @@ -2,6 +2,7 @@ import { Component, EventEmitter, forwardRef, + inject, Input, OnInit, Output, @@ -45,10 +46,10 @@ import { TagComponent } from '../../tag/tag.component' ], }) export class TagsComponent implements OnInit, ControlValueAccessor { - constructor( - private tagService: TagService, - private modalService: NgbModal - ) { + private tagService = inject(TagService) + private modalService = inject(NgbModal) + + constructor() { this.createTagRef = this.createTag.bind(this) } diff --git a/src-ui/src/app/components/common/logo/logo.component.ts b/src-ui/src/app/components/common/logo/logo.component.ts index 7404ea865..e15be24bf 100644 --- a/src-ui/src/app/components/common/logo/logo.component.ts +++ b/src-ui/src/app/components/common/logo/logo.component.ts @@ -1,4 +1,4 @@ -import { Component, Input } from '@angular/core' +import { Component, Input, inject } from '@angular/core' import { SETTINGS_KEYS } from 'src/app/data/ui-settings' import { SettingsService } from 'src/app/services/settings.service' import { environment } from 'src/environments/environment' @@ -9,6 +9,8 @@ import { environment } from 'src/environments/environment' styleUrls: ['./logo.component.scss'], }) export class LogoComponent { + private settingsService = inject(SettingsService) + @Input() extra_classes: string @@ -24,8 +26,6 @@ export class LogoComponent { : null } - constructor(private settingsService: SettingsService) {} - getClasses() { return ['logo'].concat(this.extra_classes).join(' ') } diff --git a/src-ui/src/app/components/common/page-header/page-header.component.ts b/src-ui/src/app/components/common/page-header/page-header.component.ts index 1bec482b6..d5d397641 100644 --- a/src-ui/src/app/components/common/page-header/page-header.component.ts +++ b/src-ui/src/app/components/common/page-header/page-header.component.ts @@ -1,4 +1,4 @@ -import { Component, Input } from '@angular/core' +import { Component, Input, inject } from '@angular/core' import { Title } from '@angular/platform-browser' import { NgbPopoverModule } from '@ng-bootstrap/ng-bootstrap' import { NgxBootstrapIconsModule } from 'ngx-bootstrap-icons' @@ -12,7 +12,7 @@ import { environment } from 'src/environments/environment' imports: [NgbPopoverModule, NgxBootstrapIconsModule, TourNgBootstrapModule], }) export class PageHeaderComponent { - constructor(private titleService: Title) {} + private titleService = inject(Title) _title = '' diff --git a/src-ui/src/app/components/common/permissions-dialog/permissions-dialog.component.ts b/src-ui/src/app/components/common/permissions-dialog/permissions-dialog.component.ts index 5574a7c60..a11a3cfaf 100644 --- a/src-ui/src/app/components/common/permissions-dialog/permissions-dialog.component.ts +++ b/src-ui/src/app/components/common/permissions-dialog/permissions-dialog.component.ts @@ -1,4 +1,4 @@ -import { Component, EventEmitter, Input, Output } from '@angular/core' +import { Component, EventEmitter, Input, Output, inject } from '@angular/core' import { FormControl, FormGroup, @@ -24,13 +24,13 @@ import { SwitchComponent } from '../input/switch/switch.component' ], }) export class PermissionsDialogComponent { + activeModal = inject(NgbActiveModal) + private userService = inject(UserService) + users: User[] private o: ObjectWithPermissions = undefined - constructor( - public activeModal: NgbActiveModal, - private userService: UserService - ) { + constructor() { this.userService.listAll().subscribe((r) => (this.users = r.results)) } diff --git a/src-ui/src/app/components/common/permissions-filter-dropdown/permissions-filter-dropdown.component.ts b/src-ui/src/app/components/common/permissions-filter-dropdown/permissions-filter-dropdown.component.ts index 505a1a723..83e632b68 100644 --- a/src-ui/src/app/components/common/permissions-filter-dropdown/permissions-filter-dropdown.component.ts +++ b/src-ui/src/app/components/common/permissions-filter-dropdown/permissions-filter-dropdown.component.ts @@ -1,5 +1,5 @@ import { NgClass } from '@angular/common' -import { Component, EventEmitter, Input, Output } from '@angular/core' +import { Component, EventEmitter, Input, Output, inject } from '@angular/core' import { FormsModule, ReactiveFormsModule } from '@angular/forms' import { NgbDropdownModule } from '@ng-bootstrap/ng-bootstrap' import { NgSelectComponent } from '@ng-select/ng-select' @@ -58,6 +58,9 @@ export enum OwnerFilterType { ], }) export class PermissionsFilterDropdownComponent extends ComponentWithPermissions { + permissionsService = inject(PermissionsService) + private settingsService = inject(SettingsService) + public OwnerFilterType = OwnerFilterType @Input() @@ -83,12 +86,12 @@ export class PermissionsFilterDropdownComponent extends ComponentWithPermissions ) } - constructor( - public permissionsService: PermissionsService, - userService: UserService, - private settingsService: SettingsService - ) { + constructor() { + const userService = inject(UserService) + super() + const permissionsService = this.permissionsService + if ( permissionsService.currentUserCan( PermissionAction.View, diff --git a/src-ui/src/app/components/common/permissions-select/permissions-select.component.ts b/src-ui/src/app/components/common/permissions-select/permissions-select.component.ts index bca4eb628..689fefa17 100644 --- a/src-ui/src/app/components/common/permissions-select/permissions-select.component.ts +++ b/src-ui/src/app/components/common/permissions-select/permissions-select.component.ts @@ -1,5 +1,5 @@ import { KeyValuePipe } from '@angular/common' -import { Component, forwardRef, Input, OnInit } from '@angular/core' +import { Component, forwardRef, inject, Input, OnInit } from '@angular/core' import { AbstractControl, ControlValueAccessor, @@ -43,6 +43,9 @@ export class PermissionsSelectComponent extends ComponentWithPermissions implements OnInit, ControlValueAccessor { + private readonly permissionsService = inject(PermissionsService) + private readonly settingsService = inject(SettingsService) + @Input() title: string = 'Permissions' @@ -76,10 +79,7 @@ export class PermissionsSelectComponent public allowedTypes = Object.keys(PermissionType) - constructor( - private readonly permissionsService: PermissionsService, - private readonly settingsService: SettingsService - ) { + constructor() { super() if (!this.settingsService.get(SETTINGS_KEYS.AUDITLOG_ENABLED)) { this.allowedTypes.splice(this.allowedTypes.indexOf('History'), 1) diff --git a/src-ui/src/app/components/common/preview-popup/preview-popup.component.ts b/src-ui/src/app/components/common/preview-popup/preview-popup.component.ts index 2fa1760ec..70161a02a 100644 --- a/src-ui/src/app/components/common/preview-popup/preview-popup.component.ts +++ b/src-ui/src/app/components/common/preview-popup/preview-popup.component.ts @@ -1,5 +1,5 @@ import { HttpClient } from '@angular/common/http' -import { Component, Input, OnDestroy, ViewChild } from '@angular/core' +import { Component, inject, Input, OnDestroy, ViewChild } from '@angular/core' import { NgbPopover, NgbPopoverModule } from '@ng-bootstrap/ng-bootstrap' import { PdfViewerComponent, PdfViewerModule } from 'ng2-pdf-viewer' import { NgxBootstrapIconsModule } from 'ngx-bootstrap-icons' @@ -24,6 +24,10 @@ import { SettingsService } from 'src/app/services/settings.service' ], }) export class PreviewPopupComponent implements OnDestroy { + private settingsService = inject(SettingsService) + private documentService = inject(DocumentService) + private http = inject(HttpClient) + private _document: Document @Input() set document(document: Document) { @@ -82,12 +86,6 @@ export class PreviewPopupComponent implements OnDestroy { ) } - constructor( - private settingsService: SettingsService, - private documentService: DocumentService, - private http: HttpClient - ) {} - ngOnDestroy(): void { this.unsubscribeNotifier.next(this) } diff --git a/src-ui/src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts b/src-ui/src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts index afffa7693..caa509791 100644 --- a/src-ui/src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts +++ b/src-ui/src/app/components/common/profile-edit-dialog/profile-edit-dialog.component.ts @@ -1,5 +1,5 @@ import { Clipboard } from '@angular/cdk/clipboard' -import { Component, OnInit } from '@angular/core' +import { Component, OnInit, inject } from '@angular/core' import { FormControl, FormGroup, @@ -46,6 +46,11 @@ export class ProfileEditDialogComponent extends LoadingComponentWithPermissions implements OnInit { + private profileService = inject(ProfileService) + activeModal = inject(NgbActiveModal) + private toastService = inject(ToastService) + private clipboard = inject(Clipboard) + public networkActive: boolean = false public error: any @@ -83,15 +88,6 @@ export class ProfileEditDialogComponent public socialAccounts: SocialAccount[] = [] public socialAccountProviders: SocialAccountProvider[] = [] - constructor( - private profileService: ProfileService, - public activeModal: NgbActiveModal, - private toastService: ToastService, - private clipboard: Clipboard - ) { - super() - } - ngOnInit(): void { this.networkActive = true this.profileService diff --git a/src-ui/src/app/components/common/share-links-dialog/share-links-dialog.component.spec.ts b/src-ui/src/app/components/common/share-links-dialog/share-links-dialog.component.spec.ts index 3f60b6733..05915c09e 100644 --- a/src-ui/src/app/components/common/share-links-dialog/share-links-dialog.component.spec.ts +++ b/src-ui/src/app/components/common/share-links-dialog/share-links-dialog.component.spec.ts @@ -10,6 +10,7 @@ import { fakeAsync, tick, } from '@angular/core/testing' +import { FormsModule, ReactiveFormsModule } from '@angular/forms' import { By } from '@angular/platform-browser' import { NgbActiveModal } from '@ng-bootstrap/ng-bootstrap' import { NgxBootstrapIconsModule, allIcons } from 'ngx-bootstrap-icons' @@ -33,6 +34,8 @@ describe('ShareLinksDialogComponent', () => { imports: [ ShareLinksDialogComponent, NgxBootstrapIconsModule.pick(allIcons), + FormsModule, + ReactiveFormsModule, ], providers: [ provideHttpClient(withInterceptorsFromDi()), @@ -223,16 +226,18 @@ describe('ShareLinksDialogComponent', () => { ) }) - it('should disable archive switch & option if no archive available', () => { + it('should disable archive switch & option if no archive available', (done) => { component.hasArchiveVersion = false component.ngOnInit() fixture.detectChanges() expect(component.useArchiveVersion).toBeFalsy() - expect( - fixture.debugElement.query(By.css("input[type='checkbox']")).attributes[ - 'ng-reflect-is-disabled' - ] - ).toBeTruthy() + setTimeout(() => { + // some stupid change detection issue + const inputEl = fixture.debugElement.query(By.css('#versionSwitch')) + .nativeElement as HTMLInputElement + expect(inputEl.disabled).toBeTruthy() + done() + }) }) it('should support close', () => { diff --git a/src-ui/src/app/components/common/share-links-dialog/share-links-dialog.component.ts b/src-ui/src/app/components/common/share-links-dialog/share-links-dialog.component.ts index 19123f73e..ffe11808c 100644 --- a/src-ui/src/app/components/common/share-links-dialog/share-links-dialog.component.ts +++ b/src-ui/src/app/components/common/share-links-dialog/share-links-dialog.component.ts @@ -1,5 +1,5 @@ import { Clipboard } from '@angular/cdk/clipboard' -import { Component, Input, OnInit } from '@angular/core' +import { Component, Input, OnInit, inject } from '@angular/core' import { FormsModule, ReactiveFormsModule } from '@angular/forms' import { NgbActiveModal } from '@ng-bootstrap/ng-bootstrap' import { NgxBootstrapIconsModule } from 'ngx-bootstrap-icons' @@ -16,6 +16,11 @@ import { environment } from 'src/environments/environment' imports: [FormsModule, ReactiveFormsModule, NgxBootstrapIconsModule], }) export class ShareLinksDialogComponent implements OnInit { + private activeModal = inject(NgbActiveModal) + private shareLinkService = inject(ShareLinkService) + private toastService = inject(ToastService) + private clipboard = inject(Clipboard) + EXPIRATION_OPTIONS = [ { label: $localize`1 day`, value: 1 }, { label: $localize`7 days`, value: 7 }, @@ -58,13 +63,6 @@ export class ShareLinksDialogComponent implements OnInit { useArchiveVersion: boolean = true - constructor( - private activeModal: NgbActiveModal, - private shareLinkService: ShareLinkService, - private toastService: ToastService, - private clipboard: Clipboard - ) {} - ngOnInit(): void { if (this._documentId !== undefined) this.refresh() } diff --git a/src-ui/src/app/components/common/system-status-dialog/system-status-dialog.component.ts b/src-ui/src/app/components/common/system-status-dialog/system-status-dialog.component.ts index 9585aa6b8..bc027ebbf 100644 --- a/src-ui/src/app/components/common/system-status-dialog/system-status-dialog.component.ts +++ b/src-ui/src/app/components/common/system-status-dialog/system-status-dialog.component.ts @@ -1,5 +1,5 @@ import { Clipboard, ClipboardModule } from '@angular/cdk/clipboard' -import { Component, OnInit } from '@angular/core' +import { Component, OnInit, inject } from '@angular/core' import { NgbActiveModal, NgbModalModule, @@ -35,6 +35,13 @@ import { environment } from 'src/environments/environment' ], }) export class SystemStatusDialogComponent implements OnInit { + activeModal = inject(NgbActiveModal) + private clipboard = inject(Clipboard) + private systemStatusService = inject(SystemStatusService) + private tasksService = inject(TasksService) + private toastService = inject(ToastService) + private permissionsService = inject(PermissionsService) + public SystemStatusItemStatus = SystemStatusItemStatus public PaperlessTaskName = PaperlessTaskName public status: SystemStatus @@ -49,15 +56,6 @@ export class SystemStatusDialogComponent implements OnInit { return this.permissionsService.isSuperUser() } - constructor( - public activeModal: NgbActiveModal, - private clipboard: Clipboard, - private systemStatusService: SystemStatusService, - private tasksService: TasksService, - private toastService: ToastService, - private permissionsService: PermissionsService - ) {} - public ngOnInit() { this.versionMismatch = environment.production && diff --git a/src-ui/src/app/components/common/tag/tag.component.ts b/src-ui/src/app/components/common/tag/tag.component.ts index 97d9710ef..d922b62ac 100644 --- a/src-ui/src/app/components/common/tag/tag.component.ts +++ b/src-ui/src/app/components/common/tag/tag.component.ts @@ -1,4 +1,4 @@ -import { Component, Input } from '@angular/core' +import { Component, inject, Input } from '@angular/core' import { Tag } from 'src/app/data/tag' import { PermissionAction, @@ -13,14 +13,12 @@ import { TagService } from 'src/app/services/rest/tag.service' styleUrls: ['./tag.component.scss'], }) export class TagComponent { + private permissionsService = inject(PermissionsService) + private tagService = inject(TagService) + private _tag: Tag private _tagID: number - constructor( - private permissionsService: PermissionsService, - private tagService: TagService - ) {} - @Input() public set tag(tag: Tag) { this._tag = tag diff --git a/src-ui/src/app/components/common/toast/toast.component.ts b/src-ui/src/app/components/common/toast/toast.component.ts index 5ce027a42..02b347f06 100644 --- a/src-ui/src/app/components/common/toast/toast.component.ts +++ b/src-ui/src/app/components/common/toast/toast.component.ts @@ -1,6 +1,6 @@ import { Clipboard } from '@angular/cdk/clipboard' import { DecimalPipe } from '@angular/common' -import { Component, EventEmitter, Input, Output } from '@angular/core' +import { Component, EventEmitter, Input, Output, inject } from '@angular/core' import { NgbProgressbarModule, NgbToastModule, @@ -21,6 +21,8 @@ import { Toast } from 'src/app/services/toast.service' styleUrl: './toast.component.scss', }) export class ToastComponent { + private clipboard = inject(Clipboard) + @Input() toast: Toast @Input() autohide: boolean = true @@ -31,8 +33,6 @@ export class ToastComponent { public copied: boolean = false - constructor(private clipboard: Clipboard) {} - onShown(toast: Toast) { if (!this.autohide) return diff --git a/src-ui/src/app/components/common/toasts/toasts.component.ts b/src-ui/src/app/components/common/toasts/toasts.component.ts index 53b6e1895..e4da0dfd3 100644 --- a/src-ui/src/app/components/common/toasts/toasts.component.ts +++ b/src-ui/src/app/components/common/toasts/toasts.component.ts @@ -1,4 +1,4 @@ -import { Component, OnDestroy, OnInit } from '@angular/core' +import { Component, OnDestroy, OnInit, inject } from '@angular/core' import { NgbAccordionModule, NgbProgressbarModule, @@ -20,7 +20,7 @@ import { ToastComponent } from '../toast/toast.component' ], }) export class ToastsComponent implements OnInit, OnDestroy { - constructor(public toastService: ToastService) {} + toastService = inject(ToastService) private subscription: Subscription diff --git a/src-ui/src/app/components/dashboard/dashboard.component.ts b/src-ui/src/app/components/dashboard/dashboard.component.ts index 5a0f6c69d..b70acaad6 100644 --- a/src-ui/src/app/components/dashboard/dashboard.component.ts +++ b/src-ui/src/app/components/dashboard/dashboard.component.ts @@ -5,7 +5,7 @@ import { DragDropModule, moveItemInArray, } from '@angular/cdk/drag-drop' -import { Component } from '@angular/core' +import { Component, inject } from '@angular/core' import { RouterModule } from '@angular/router' import { NgxBootstrapIconsModule } from 'ngx-bootstrap-icons' import { TourNgBootstrapModule, TourService } from 'ngx-ui-tour-ng-bootstrap' @@ -42,13 +42,13 @@ import { WelcomeWidgetComponent } from './widgets/welcome-widget/welcome-widget. ], }) export class DashboardComponent extends ComponentWithPermissions { + settingsService = inject(SettingsService) + savedViewService = inject(SavedViewService) + private tourService = inject(TourService) + private toastService = inject(ToastService) + public dashboardViews: SavedView[] = [] - constructor( - public settingsService: SettingsService, - public savedViewService: SavedViewService, - private tourService: TourService, - private toastService: ToastService - ) { + constructor() { super() this.savedViewService.listAll().subscribe(() => { diff --git a/src-ui/src/app/components/dashboard/widgets/saved-view-widget/saved-view-widget.component.ts b/src-ui/src/app/components/dashboard/widgets/saved-view-widget/saved-view-widget.component.ts index 8399b06e1..3a808bf9a 100644 --- a/src-ui/src/app/components/dashboard/widgets/saved-view-widget/saved-view-widget.component.ts +++ b/src-ui/src/app/components/dashboard/widgets/saved-view-widget/saved-view-widget.component.ts @@ -1,6 +1,7 @@ import { AsyncPipe, NgClass, NgStyle } from '@angular/common' import { Component, + inject, Input, OnDestroy, OnInit, @@ -84,26 +85,22 @@ export class SavedViewWidgetComponent extends LoadingComponentWithPermissions implements OnInit, OnDestroy { + private documentService = inject(DocumentService) + private router = inject(Router) + private list = inject(DocumentListViewService) + private websocketStatusService = inject(WebsocketStatusService) + openDocumentsService = inject(OpenDocumentsService) + documentListViewService = inject(DocumentListViewService) + permissionsService = inject(PermissionsService) + private settingsService = inject(SettingsService) + private customFieldService = inject(CustomFieldsService) + public DisplayMode = DisplayMode public DisplayField = DisplayField public CustomFieldDataType = CustomFieldDataType private customFields: CustomField[] = [] - constructor( - private documentService: DocumentService, - private router: Router, - private list: DocumentListViewService, - private websocketStatusService: WebsocketStatusService, - public openDocumentsService: OpenDocumentsService, - public documentListViewService: DocumentListViewService, - public permissionsService: PermissionsService, - private settingsService: SettingsService, - private customFieldService: CustomFieldsService - ) { - super() - } - @Input() savedView: SavedView diff --git a/src-ui/src/app/components/dashboard/widgets/statistics-widget/statistics-widget.component.ts b/src-ui/src/app/components/dashboard/widgets/statistics-widget/statistics-widget.component.ts index 95bd4e6ce..8b26690db 100644 --- a/src-ui/src/app/components/dashboard/widgets/statistics-widget/statistics-widget.component.ts +++ b/src-ui/src/app/components/dashboard/widgets/statistics-widget/statistics-widget.component.ts @@ -1,6 +1,6 @@ import { DecimalPipe } from '@angular/common' import { HttpClient } from '@angular/common/http' -import { Component, OnDestroy, OnInit } from '@angular/core' +import { Component, inject, OnDestroy, OnInit } from '@angular/core' import { RouterModule } from '@angular/router' import { NgbPopoverModule } from '@ng-bootstrap/ng-bootstrap' import * as mimeTypeNames from 'mime-names' @@ -51,15 +51,11 @@ export class StatisticsWidgetComponent extends ComponentWithPermissions implements OnInit, OnDestroy { - loading: boolean = false + private http = inject(HttpClient) + private websocketConnectionService = inject(WebsocketStatusService) + private documentListViewService = inject(DocumentListViewService) - constructor( - private http: HttpClient, - private websocketConnectionService: WebsocketStatusService, - private documentListViewService: DocumentListViewService - ) { - super() - } + loading: boolean = false statistics: Statistics = {} diff --git a/src-ui/src/app/components/dashboard/widgets/upload-file-widget/upload-file-widget.component.ts b/src-ui/src/app/components/dashboard/widgets/upload-file-widget/upload-file-widget.component.ts index 2970e13a4..c440f4b21 100644 --- a/src-ui/src/app/components/dashboard/widgets/upload-file-widget/upload-file-widget.component.ts +++ b/src-ui/src/app/components/dashboard/widgets/upload-file-widget/upload-file-widget.component.ts @@ -1,5 +1,5 @@ import { NgClass, NgTemplateOutlet } from '@angular/common' -import { Component, QueryList, ViewChildren } from '@angular/core' +import { Component, QueryList, ViewChildren, inject } from '@angular/core' import { RouterModule } from '@angular/router' import { NgbAlert, @@ -37,15 +37,11 @@ import { WidgetFrameComponent } from '../widget-frame/widget-frame.component' ], }) export class UploadFileWidgetComponent extends ComponentWithPermissions { - @ViewChildren(NgbAlert) alerts: QueryList + private websocketStatusService = inject(WebsocketStatusService) + private uploadDocumentsService = inject(UploadDocumentsService) + settingsService = inject(SettingsService) - constructor( - private websocketStatusService: WebsocketStatusService, - private uploadDocumentsService: UploadDocumentsService, - public settingsService: SettingsService - ) { - super() - } + @ViewChildren(NgbAlert) alerts: QueryList getStatus() { return this.websocketStatusService.getConsumerStatus() diff --git a/src-ui/src/app/components/dashboard/widgets/welcome-widget/welcome-widget.component.ts b/src-ui/src/app/components/dashboard/widgets/welcome-widget/welcome-widget.component.ts index 37de0865a..7bcc160f3 100644 --- a/src-ui/src/app/components/dashboard/widgets/welcome-widget/welcome-widget.component.ts +++ b/src-ui/src/app/components/dashboard/widgets/welcome-widget/welcome-widget.component.ts @@ -1,4 +1,4 @@ -import { Component, EventEmitter, Output } from '@angular/core' +import { Component, EventEmitter, Output, inject } from '@angular/core' import { NgbAlertModule } from '@ng-bootstrap/ng-bootstrap' import { TourService } from 'ngx-ui-tour-ng-bootstrap' @@ -9,7 +9,7 @@ import { TourService } from 'ngx-ui-tour-ng-bootstrap' imports: [NgbAlertModule], }) export class WelcomeWidgetComponent { - constructor(public readonly tourService: TourService) {} + readonly tourService = inject(TourService) @Output() dismiss: EventEmitter = new EventEmitter() diff --git a/src-ui/src/app/components/document-asn/document-asn.component.ts b/src-ui/src/app/components/document-asn/document-asn.component.ts index d2001cc37..4a3d92db2 100644 --- a/src-ui/src/app/components/document-asn/document-asn.component.ts +++ b/src-ui/src/app/components/document-asn/document-asn.component.ts @@ -1,4 +1,4 @@ -import { Component, OnInit } from '@angular/core' +import { Component, OnInit, inject } from '@angular/core' import { ActivatedRoute, Router } from '@angular/router' import { FILTER_ASN } from '../../data/filter-rule-type' import { DocumentService } from '../../services/rest/document.service' @@ -9,12 +9,11 @@ import { DocumentService } from '../../services/rest/document.service' styleUrls: ['./document-asn.component.scss'], }) export class DocumentAsnComponent implements OnInit { + private documentsService = inject(DocumentService) + private route = inject(ActivatedRoute) + private router = inject(Router) + asn: string - constructor( - private documentsService: DocumentService, - private route: ActivatedRoute, - private router: Router - ) {} ngOnInit(): void { this.route.paramMap.subscribe((paramMap) => { diff --git a/src-ui/src/app/components/document-detail/document-detail.component.ts b/src-ui/src/app/components/document-detail/document-detail.component.ts index 1bfac60f0..e8a05962c 100644 --- a/src-ui/src/app/components/document-detail/document-detail.component.ts +++ b/src-ui/src/app/components/document-detail/document-detail.component.ts @@ -1,6 +1,6 @@ import { AsyncPipe, NgTemplateOutlet } from '@angular/common' import { HttpClient, HttpResponse } from '@angular/common/http' -import { Component, OnDestroy, OnInit, ViewChild } from '@angular/core' +import { Component, inject, OnDestroy, OnInit, ViewChild } from '@angular/core' import { FormArray, FormControl, @@ -176,6 +176,26 @@ export class DocumentDetailComponent extends ComponentWithPermissions implements OnInit, OnDestroy, DirtyComponent { + private documentsService = inject(DocumentService) + private route = inject(ActivatedRoute) + private correspondentService = inject(CorrespondentService) + private documentTypeService = inject(DocumentTypeService) + private router = inject(Router) + private modalService = inject(NgbModal) + private openDocumentService = inject(OpenDocumentsService) + private documentListViewService = inject(DocumentListViewService) + private documentTitlePipe = inject(DocumentTitlePipe) + private toastService = inject(ToastService) + private settings = inject(SettingsService) + private storagePathService = inject(StoragePathService) + private permissionsService = inject(PermissionsService) + private userService = inject(UserService) + private customFieldsService = inject(CustomFieldsService) + private http = inject(HttpClient) + private hotKeyService = inject(HotKeyService) + private componentRouterService = inject(ComponentRouterService) + private deviceDetectorService = inject(DeviceDetectorService) + @ViewChild('inputTitle') titleInput: TextComponent @@ -259,30 +279,6 @@ export class DocumentDetailComponent DocumentDetailNavIDs = DocumentDetailNavIDs activeNavID: number - constructor( - private documentsService: DocumentService, - private route: ActivatedRoute, - private correspondentService: CorrespondentService, - private documentTypeService: DocumentTypeService, - private router: Router, - private modalService: NgbModal, - private openDocumentService: OpenDocumentsService, - private documentListViewService: DocumentListViewService, - private documentTitlePipe: DocumentTitlePipe, - private toastService: ToastService, - private settings: SettingsService, - private storagePathService: StoragePathService, - private permissionsService: PermissionsService, - private userService: UserService, - private customFieldsService: CustomFieldsService, - private http: HttpClient, - private hotKeyService: HotKeyService, - private componentRouterService: ComponentRouterService, - private deviceDetectorService: DeviceDetectorService - ) { - super() - } - titleKeyUp(event) { this.titleSubject.next(event.target?.value) } diff --git a/src-ui/src/app/components/document-history/document-history.component.ts b/src-ui/src/app/components/document-history/document-history.component.ts index 58ce8cb8b..d57db1056 100644 --- a/src-ui/src/app/components/document-history/document-history.component.ts +++ b/src-ui/src/app/components/document-history/document-history.component.ts @@ -1,5 +1,5 @@ import { AsyncPipe, KeyValuePipe, TitleCasePipe } from '@angular/common' -import { Component, Input, OnInit } from '@angular/core' +import { Component, Input, OnInit, inject } from '@angular/core' import { NgbTooltipModule } from '@ng-bootstrap/ng-bootstrap' import { NgxBootstrapIconsModule } from 'ngx-bootstrap-icons' import { Observable, first, map, of } from 'rxjs' @@ -26,6 +26,12 @@ import { UserService } from 'src/app/services/rest/user.service' ], }) export class DocumentHistoryComponent implements OnInit { + private documentService = inject(DocumentService) + private correspondentService = inject(CorrespondentService) + private storagePathService = inject(StoragePathService) + private documentTypeService = inject(DocumentTypeService) + private userService = inject(UserService) + public AuditLogAction = AuditLogAction private _documentId: number @@ -38,14 +44,6 @@ export class DocumentHistoryComponent implements OnInit { public loading: boolean = true public entries: AuditLogEntry[] = [] - constructor( - private documentService: DocumentService, - private correspondentService: CorrespondentService, - private storagePathService: StoragePathService, - private documentTypeService: DocumentTypeService, - private userService: UserService - ) {} - ngOnInit(): void { if (this._documentId) { this.loading = true diff --git a/src-ui/src/app/components/document-list/bulk-editor/bulk-editor.component.ts b/src-ui/src/app/components/document-list/bulk-editor/bulk-editor.component.ts index bf6d06cd4..5d31eb1aa 100644 --- a/src-ui/src/app/components/document-list/bulk-editor/bulk-editor.component.ts +++ b/src-ui/src/app/components/document-list/bulk-editor/bulk-editor.component.ts @@ -1,4 +1,4 @@ -import { Component, Input, OnDestroy, OnInit } from '@angular/core' +import { Component, inject, Input, OnDestroy, OnInit } from '@angular/core' import { FormControl, FormGroup, @@ -71,6 +71,19 @@ export class BulkEditorComponent extends ComponentWithPermissions implements OnInit, OnDestroy { + private documentTypeService = inject(DocumentTypeService) + private tagService = inject(TagService) + private correspondentService = inject(CorrespondentService) + list = inject(DocumentListViewService) + private documentService = inject(DocumentService) + private modalService = inject(NgbModal) + private openDocumentService = inject(OpenDocumentsService) + private settings = inject(SettingsService) + private toastService = inject(ToastService) + private storagePathService = inject(StoragePathService) + private customFieldService = inject(CustomFieldsService) + private permissionService = inject(PermissionsService) + tagSelectionModel = new FilterableDropdownSelectionModel(true) correspondentSelectionModel = new FilterableDropdownSelectionModel() documentTypeSelectionModel = new FilterableDropdownSelectionModel() @@ -94,23 +107,6 @@ export class BulkEditorComponent @Input() public disabled: boolean = false - constructor( - private documentTypeService: DocumentTypeService, - private tagService: TagService, - private correspondentService: CorrespondentService, - public list: DocumentListViewService, - private documentService: DocumentService, - private modalService: NgbModal, - private openDocumentService: OpenDocumentsService, - private settings: SettingsService, - private toastService: ToastService, - private storagePathService: StoragePathService, - private customFieldService: CustomFieldsService, - private permissionService: PermissionsService - ) { - super() - } - applyOnClose: boolean = this.settings.get( SETTINGS_KEYS.BULK_EDIT_APPLY_ON_CLOSE ) diff --git a/src-ui/src/app/components/document-list/bulk-editor/custom-fields-bulk-edit-dialog/custom-fields-bulk-edit-dialog.component.ts b/src-ui/src/app/components/document-list/bulk-editor/custom-fields-bulk-edit-dialog/custom-fields-bulk-edit-dialog.component.ts index 132fc5a36..ea5104539 100644 --- a/src-ui/src/app/components/document-list/bulk-editor/custom-fields-bulk-edit-dialog/custom-fields-bulk-edit-dialog.component.ts +++ b/src-ui/src/app/components/document-list/bulk-editor/custom-fields-bulk-edit-dialog/custom-fields-bulk-edit-dialog.component.ts @@ -1,4 +1,4 @@ -import { Component, EventEmitter, Output } from '@angular/core' +import { Component, EventEmitter, Output, inject } from '@angular/core' import { FormControl, FormGroup, @@ -38,6 +38,9 @@ import { DocumentService } from 'src/app/services/rest/document.service' ], }) export class CustomFieldsBulkEditDialogComponent { + private activeModal = inject(NgbActiveModal) + private documentService = inject(DocumentService) + CustomFieldDataType = CustomFieldDataType @Output() @@ -73,11 +76,6 @@ export class CustomFieldsBulkEditDialogComponent { public documents: number[] = [] - constructor( - private activeModal: NgbActiveModal, - private documentService: DocumentService - ) {} - initForm() { Object.keys(this.form.controls).forEach((key) => { if (!this._fieldsToAddIds.includes(parseInt(key))) { diff --git a/src-ui/src/app/components/document-list/document-card-large/document-card-large.component.ts b/src-ui/src/app/components/document-list/document-card-large/document-card-large.component.ts index a179b450a..74dccfaf3 100644 --- a/src-ui/src/app/components/document-list/document-card-large/document-card-large.component.ts +++ b/src-ui/src/app/components/document-list/document-card-large/document-card-large.component.ts @@ -6,6 +6,7 @@ import { Input, Output, ViewChild, + inject, } from '@angular/core' import { RouterModule } from '@angular/router' import { @@ -62,14 +63,10 @@ export class DocumentCardLargeComponent extends LoadingComponentWithPermissions implements AfterViewInit { - DisplayField = DisplayField + private documentService = inject(DocumentService) + settingsService = inject(SettingsService) - constructor( - private documentService: DocumentService, - public settingsService: SettingsService - ) { - super() - } + DisplayField = DisplayField @Input() selected = false diff --git a/src-ui/src/app/components/document-list/document-card-small/document-card-small.component.html b/src-ui/src/app/components/document-list/document-card-small/document-card-small.component.html index 662bb9bab..b154324c7 100644 --- a/src-ui/src/app/components/document-list/document-card-small/document-card-small.component.html +++ b/src-ui/src/app/components/document-list/document-card-small/document-card-small.component.html @@ -71,14 +71,14 @@ } @if (displayFields.includes(DisplayField.CREATED)) {
- +
Created: {{ document.created | customDate }} Added: {{ document.added | customDate }} Modified: {{ document.modified | customDate }}
-
+
{{document.created | customDate:'mediumDate'}}
@@ -86,14 +86,14 @@ } @if (displayFields.includes(DisplayField.ADDED)) {
- +
Created: {{ document.created | customDate }} Added: {{ document.added | customDate }} Modified: {{ document.modified | customDate }}
-
+
{{document.added | customDate:'mediumDate'}}
diff --git a/src-ui/src/app/components/document-list/document-card-small/document-card-small.component.ts b/src-ui/src/app/components/document-list/document-card-small/document-card-small.component.ts index 6e4e3943e..ad428dfab 100644 --- a/src-ui/src/app/components/document-list/document-card-small/document-card-small.component.ts +++ b/src-ui/src/app/components/document-list/document-card-small/document-card-small.component.ts @@ -6,6 +6,7 @@ import { Input, Output, ViewChild, + inject, } from '@angular/core' import { RouterModule } from '@angular/router' import { @@ -63,14 +64,10 @@ export class DocumentCardSmallComponent extends LoadingComponentWithPermissions implements AfterViewInit { - DisplayField = DisplayField + private documentService = inject(DocumentService) + settingsService = inject(SettingsService) - constructor( - private documentService: DocumentService, - public settingsService: SettingsService - ) { - super() - } + DisplayField = DisplayField @Input() selected = false diff --git a/src-ui/src/app/components/document-list/document-list.component.ts b/src-ui/src/app/components/document-list/document-list.component.ts index f6b7c181b..8a31f9e9f 100644 --- a/src-ui/src/app/components/document-list/document-list.component.ts +++ b/src-ui/src/app/components/document-list/document-list.component.ts @@ -1,6 +1,7 @@ import { AsyncPipe, NgClass, NgTemplateOutlet } from '@angular/common' import { Component, + inject, OnDestroy, OnInit, QueryList, @@ -103,25 +104,21 @@ export class DocumentListComponent extends ComponentWithPermissions implements OnInit, OnDestroy { + list = inject(DocumentListViewService) + savedViewService = inject(SavedViewService) + route = inject(ActivatedRoute) + private router = inject(Router) + private toastService = inject(ToastService) + private modalService = inject(NgbModal) + private websocketStatusService = inject(WebsocketStatusService) + openDocumentsService = inject(OpenDocumentsService) + settingsService = inject(SettingsService) + private hotKeyService = inject(HotKeyService) + permissionService = inject(PermissionsService) + DisplayField = DisplayField DisplayMode = DisplayMode - constructor( - public list: DocumentListViewService, - public savedViewService: SavedViewService, - public route: ActivatedRoute, - private router: Router, - private toastService: ToastService, - private modalService: NgbModal, - private websocketStatusService: WebsocketStatusService, - public openDocumentsService: OpenDocumentsService, - public settingsService: SettingsService, - private hotKeyService: HotKeyService, - public permissionService: PermissionsService - ) { - super() - } - @ViewChild('filterEditor') private filterEditor: FilterEditorComponent diff --git a/src-ui/src/app/components/document-list/filter-editor/filter-editor.component.ts b/src-ui/src/app/components/document-list/filter-editor/filter-editor.component.ts index 88f1be48b..d99959df2 100644 --- a/src-ui/src/app/components/document-list/filter-editor/filter-editor.component.ts +++ b/src-ui/src/app/components/document-list/filter-editor/filter-editor.component.ts @@ -8,6 +8,7 @@ import { OnInit, Output, ViewChild, + inject, } from '@angular/core' import { FormsModule, ReactiveFormsModule } from '@angular/forms' import { @@ -240,6 +241,15 @@ export class FilterEditorComponent extends LoadingComponentWithPermissions implements OnInit, OnDestroy, AfterViewInit { + private documentTypeService = inject(DocumentTypeService) + private tagService = inject(TagService) + private correspondentService = inject(CorrespondentService) + private documentService = inject(DocumentService) + private storagePathService = inject(StoragePathService) + permissionsService = inject(PermissionsService) + private customFieldService = inject(CustomFieldsService) + private searchService = inject(SearchService) + generateFilterName() { if (this.filterRules.length == 1) { let rule = this.filterRules[0] @@ -313,19 +323,6 @@ export class FilterEditorComponent return '' } - constructor( - private documentTypeService: DocumentTypeService, - private tagService: TagService, - private correspondentService: CorrespondentService, - private documentService: DocumentService, - private storagePathService: StoragePathService, - public permissionsService: PermissionsService, - private customFieldService: CustomFieldsService, - private searchService: SearchService - ) { - super() - } - @ViewChild('textFilterInput') textFilterInput: ElementRef diff --git a/src-ui/src/app/components/document-list/save-view-config-dialog/save-view-config-dialog.component.ts b/src-ui/src/app/components/document-list/save-view-config-dialog/save-view-config-dialog.component.ts index 675b43e98..c0c43fd39 100644 --- a/src-ui/src/app/components/document-list/save-view-config-dialog/save-view-config-dialog.component.ts +++ b/src-ui/src/app/components/document-list/save-view-config-dialog/save-view-config-dialog.component.ts @@ -1,4 +1,11 @@ -import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core' +import { + Component, + EventEmitter, + Input, + OnInit, + Output, + inject, +} from '@angular/core' import { FormControl, FormGroup, @@ -16,7 +23,7 @@ import { TextComponent } from '../../common/input/text/text.component' imports: [CheckComponent, TextComponent, FormsModule, ReactiveFormsModule], }) export class SaveViewConfigDialogComponent implements OnInit { - constructor(private modal: NgbActiveModal) {} + private modal = inject(NgbActiveModal) @Output() public saveClicked = new EventEmitter() diff --git a/src-ui/src/app/components/document-notes/document-notes.component.ts b/src-ui/src/app/components/document-notes/document-notes.component.ts index 685d2d93e..43530ce7c 100644 --- a/src-ui/src/app/components/document-notes/document-notes.component.ts +++ b/src-ui/src/app/components/document-notes/document-notes.component.ts @@ -1,4 +1,4 @@ -import { Component, EventEmitter, Input, Output } from '@angular/core' +import { Component, EventEmitter, Input, Output, inject } from '@angular/core' import { FormControl, FormGroup, @@ -28,6 +28,10 @@ import { ComponentWithPermissions } from '../with-permissions/with-permissions.c ], }) export class DocumentNotesComponent extends ComponentWithPermissions { + private notesService = inject(DocumentNotesService) + private toastService = inject(ToastService) + private usersService = inject(UserService) + noteForm: FormGroup = new FormGroup({ newNote: new FormControl(''), }) @@ -48,11 +52,7 @@ export class DocumentNotesComponent extends ComponentWithPermissions { updated: EventEmitter = new EventEmitter() users: User[] - constructor( - private notesService: DocumentNotesService, - private toastService: ToastService, - private usersService: UserService - ) { + constructor() { super() this.usersService.listAll().subscribe({ next: (users) => { diff --git a/src-ui/src/app/components/file-drop/file-drop.component.ts b/src-ui/src/app/components/file-drop/file-drop.component.ts index 62d738122..3576971b8 100644 --- a/src-ui/src/app/components/file-drop/file-drop.component.ts +++ b/src-ui/src/app/components/file-drop/file-drop.component.ts @@ -1,4 +1,4 @@ -import { Component, HostListener } from '@angular/core' +import { Component, HostListener, inject } from '@angular/core' import { PermissionAction, PermissionsService, @@ -15,17 +15,15 @@ import { UploadDocumentsService } from 'src/app/services/upload-documents.servic imports: [], }) export class FileDropComponent { + private settings = inject(SettingsService) + private toastService = inject(ToastService) + private uploadDocumentsService = inject(UploadDocumentsService) + private permissionsService = inject(PermissionsService) + private fileLeaveTimeoutID: any fileIsOver: boolean = false hidden: boolean = true - constructor( - private settings: SettingsService, - private toastService: ToastService, - private uploadDocumentsService: UploadDocumentsService, - private permissionsService: PermissionsService - ) {} - public get dragDropEnabled(): boolean { return ( this.settings.globalDropzoneEnabled && diff --git a/src-ui/src/app/components/manage/correspondent-list/correspondent-list.component.ts b/src-ui/src/app/components/manage/correspondent-list/correspondent-list.component.ts index 62427f5b4..4ba7de689 100644 --- a/src-ui/src/app/components/manage/correspondent-list/correspondent-list.component.ts +++ b/src-ui/src/app/components/manage/correspondent-list/correspondent-list.component.ts @@ -1,9 +1,8 @@ import { NgClass, TitleCasePipe } from '@angular/common' -import { Component } from '@angular/core' +import { Component, inject } from '@angular/core' import { FormsModule, ReactiveFormsModule } from '@angular/forms' import { NgbDropdownModule, - NgbModal, NgbPaginationModule, } from '@ng-bootstrap/ng-bootstrap' import { NgxBootstrapIconsModule } from 'ngx-bootstrap-icons' @@ -12,13 +11,8 @@ import { FILTER_HAS_CORRESPONDENT_ANY } from 'src/app/data/filter-rule-type' import { IfPermissionsDirective } from 'src/app/directives/if-permissions.directive' import { SortableDirective } from 'src/app/directives/sortable.directive' import { CustomDatePipe } from 'src/app/pipes/custom-date.pipe' -import { DocumentListViewService } from 'src/app/services/document-list-view.service' -import { - PermissionsService, - PermissionType, -} from 'src/app/services/permissions.service' +import { PermissionType } from 'src/app/services/permissions.service' import { CorrespondentService } from 'src/app/services/rest/correspondent.service' -import { ToastService } from 'src/app/services/toast.service' import { CorrespondentEditDialogComponent } from '../../common/edit-dialog/correspondent-edit-dialog/correspondent-edit-dialog.component' import { PageHeaderComponent } from '../../common/page-header/page-header.component' import { ManagementListComponent } from '../management-list/management-list.component' @@ -42,47 +36,37 @@ import { ManagementListComponent } from '../management-list/management-list.comp ], }) export class CorrespondentListComponent extends ManagementListComponent { - constructor( - correspondentsService: CorrespondentService, - modalService: NgbModal, - toastService: ToastService, - documentListViewService: DocumentListViewService, - permissionsService: PermissionsService, - private datePipe: CustomDatePipe - ) { - super( - correspondentsService, - modalService, - CorrespondentEditDialogComponent, - toastService, - documentListViewService, - permissionsService, - FILTER_HAS_CORRESPONDENT_ANY, - $localize`correspondent`, - $localize`correspondents`, - PermissionType.Correspondent, - [ - { - key: 'last_correspondence', - name: $localize`Last used`, - valueFn: (c: Correspondent) => { - if (c.last_correspondence) { - let date = new Date(c.last_correspondence) - if (date.toString() == 'Invalid Date') { - // very old date strings are unable to be parsed - date = new Date( - c.last_correspondence - ?.toString() - .replace(/([-+])(\d\d):\d\d:\d\d/gm, `$1$2:00`) - ) - } - return this.datePipe.transform(date) + private datePipe = inject(CustomDatePipe) + + constructor() { + super() + this.service = inject(CorrespondentService) + this.editDialogComponent = CorrespondentEditDialogComponent + this.filterRuleType = FILTER_HAS_CORRESPONDENT_ANY + this.typeName = $localize`correspondent` + this.typeNamePlural = $localize`correspondents` + this.permissionType = PermissionType.Correspondent + this.extraColumns = [ + { + key: 'last_correspondence', + name: $localize`Last used`, + valueFn: (c: Correspondent) => { + if (c.last_correspondence) { + let date = new Date(c.last_correspondence) + if (date.toString() == 'Invalid Date') { + // very old date strings are unable to be parsed + date = new Date( + c.last_correspondence + ?.toString() + .replace(/([-+])(\d\d):\d\d:\d\d/gm, `$1$2:00`) + ) } - return '' - }, + return this.datePipe.transform(date) + } + return '' }, - ] - ) + }, + ] } public reloadData(): void { diff --git a/src-ui/src/app/components/manage/custom-fields/custom-fields.component.ts b/src-ui/src/app/components/manage/custom-fields/custom-fields.component.ts index b4fd9738d..9e7ecf78a 100644 --- a/src-ui/src/app/components/manage/custom-fields/custom-fields.component.ts +++ b/src-ui/src/app/components/manage/custom-fields/custom-fields.component.ts @@ -1,4 +1,4 @@ -import { Component, OnInit } from '@angular/core' +import { Component, OnInit, inject } from '@angular/core' import { NgbDropdownModule, NgbModal, @@ -42,20 +42,16 @@ export class CustomFieldsComponent extends LoadingComponentWithPermissions implements OnInit { - public fields: CustomField[] = [] + private customFieldsService = inject(CustomFieldsService) + permissionsService = inject(PermissionsService) + private modalService = inject(NgbModal) + private toastService = inject(ToastService) + private documentListViewService = inject(DocumentListViewService) + private settingsService = inject(SettingsService) + private documentService = inject(DocumentService) + private savedViewService = inject(SavedViewService) - constructor( - private customFieldsService: CustomFieldsService, - public permissionsService: PermissionsService, - private modalService: NgbModal, - private toastService: ToastService, - private documentListViewService: DocumentListViewService, - private settingsService: SettingsService, - private documentService: DocumentService, - private savedViewService: SavedViewService - ) { - super() - } + public fields: CustomField[] = [] ngOnInit() { this.reload() diff --git a/src-ui/src/app/components/manage/document-type-list/document-type-list.component.ts b/src-ui/src/app/components/manage/document-type-list/document-type-list.component.ts index 0bca3df1b..cbb2c576e 100644 --- a/src-ui/src/app/components/manage/document-type-list/document-type-list.component.ts +++ b/src-ui/src/app/components/manage/document-type-list/document-type-list.component.ts @@ -1,9 +1,8 @@ import { NgClass, TitleCasePipe } from '@angular/common' -import { Component } from '@angular/core' +import { Component, inject } from '@angular/core' import { FormsModule, ReactiveFormsModule } from '@angular/forms' import { NgbDropdownModule, - NgbModal, NgbPaginationModule, } from '@ng-bootstrap/ng-bootstrap' import { NgxBootstrapIconsModule } from 'ngx-bootstrap-icons' @@ -11,13 +10,8 @@ import { DocumentType } from 'src/app/data/document-type' import { FILTER_HAS_DOCUMENT_TYPE_ANY } from 'src/app/data/filter-rule-type' import { IfPermissionsDirective } from 'src/app/directives/if-permissions.directive' import { SortableDirective } from 'src/app/directives/sortable.directive' -import { DocumentListViewService } from 'src/app/services/document-list-view.service' -import { - PermissionsService, - PermissionType, -} from 'src/app/services/permissions.service' +import { PermissionType } from 'src/app/services/permissions.service' import { DocumentTypeService } from 'src/app/services/rest/document-type.service' -import { ToastService } from 'src/app/services/toast.service' import { DocumentTypeEditDialogComponent } from '../../common/edit-dialog/document-type-edit-dialog/document-type-edit-dialog.component' import { PageHeaderComponent } from '../../common/page-header/page-header.component' import { ManagementListComponent } from '../management-list/management-list.component' @@ -40,26 +34,14 @@ import { ManagementListComponent } from '../management-list/management-list.comp ], }) export class DocumentTypeListComponent extends ManagementListComponent { - constructor( - documentTypeService: DocumentTypeService, - modalService: NgbModal, - toastService: ToastService, - documentListViewService: DocumentListViewService, - permissionsService: PermissionsService - ) { - super( - documentTypeService, - modalService, - DocumentTypeEditDialogComponent, - toastService, - documentListViewService, - permissionsService, - FILTER_HAS_DOCUMENT_TYPE_ANY, - $localize`document type`, - $localize`document types`, - PermissionType.DocumentType, - [] - ) + constructor() { + super() + this.service = inject(DocumentTypeService) + this.editDialogComponent = DocumentTypeEditDialogComponent + this.filterRuleType = FILTER_HAS_DOCUMENT_TYPE_ANY + this.typeName = $localize`document type` + this.typeNamePlural = $localize`document types` + this.permissionType = PermissionType.DocumentType } getDeleteMessage(object: DocumentType) { diff --git a/src-ui/src/app/components/manage/mail/mail.component.ts b/src-ui/src/app/components/manage/mail/mail.component.ts index 8d4222516..06e2570ee 100644 --- a/src-ui/src/app/components/manage/mail/mail.component.ts +++ b/src-ui/src/app/components/manage/mail/mail.component.ts @@ -1,5 +1,5 @@ import { AsyncPipe } from '@angular/common' -import { Component, OnDestroy, OnInit } from '@angular/core' +import { Component, OnDestroy, OnInit, inject } from '@angular/core' import { FormsModule, ReactiveFormsModule } from '@angular/forms' import { ActivatedRoute } from '@angular/router' import { NgbDropdownModule, NgbModal } from '@ng-bootstrap/ng-bootstrap' @@ -47,6 +47,14 @@ export class MailComponent extends ComponentWithPermissions implements OnInit, OnDestroy { + mailAccountService = inject(MailAccountService) + mailRuleService = inject(MailRuleService) + private toastService = inject(ToastService) + private modalService = inject(NgbModal) + permissionsService = inject(PermissionsService) + private settingsService = inject(SettingsService) + private route = inject(ActivatedRoute) + public MailAccountType = MailAccountType mailAccounts: MailAccount[] = [] @@ -68,18 +76,6 @@ export class MailComponent public loadingAccounts: boolean = true public showAccounts: boolean = false - constructor( - public mailAccountService: MailAccountService, - public mailRuleService: MailRuleService, - private toastService: ToastService, - private modalService: NgbModal, - public permissionsService: PermissionsService, - private settingsService: SettingsService, - private route: ActivatedRoute - ) { - super() - } - ngOnInit(): void { this.mailAccountService .listAll(null, null, { full_perms: true }) diff --git a/src-ui/src/app/components/manage/management-list/management-list.component.ts b/src-ui/src/app/components/manage/management-list/management-list.component.ts index 7f7721485..670de2699 100644 --- a/src-ui/src/app/components/manage/management-list/management-list.component.ts +++ b/src-ui/src/app/components/manage/management-list/management-list.component.ts @@ -1,6 +1,7 @@ import { HttpErrorResponse } from '@angular/common/http' import { Directive, + inject, OnDestroy, OnInit, QueryList, @@ -59,21 +60,19 @@ export abstract class ManagementListComponent extends LoadingComponentWithPermissions implements OnInit, OnDestroy { - constructor( - protected service: AbstractNameFilterService, - private modalService: NgbModal, - private editDialogComponent: any, - private toastService: ToastService, - private documentListViewService: DocumentListViewService, - private permissionsService: PermissionsService, - protected filterRuleType: number, - public typeName: string, - public typeNamePlural: string, - public permissionType: PermissionType, - public extraColumns: ManagementListColumn[] - ) { - super() - } + protected service: AbstractNameFilterService + private modalService: NgbModal = inject(NgbModal) + protected editDialogComponent: any + private toastService: ToastService = inject(ToastService) + private documentListViewService: DocumentListViewService = inject( + DocumentListViewService + ) + private permissionsService: PermissionsService = inject(PermissionsService) + protected filterRuleType: number + public typeName: string + public typeNamePlural: string + public permissionType: PermissionType + public extraColumns: ManagementListColumn[] @ViewChildren(SortableDirective) headers: QueryList diff --git a/src-ui/src/app/components/manage/saved-views/saved-views.component.ts b/src-ui/src/app/components/manage/saved-views/saved-views.component.ts index ee2b00c2b..015f9b486 100644 --- a/src-ui/src/app/components/manage/saved-views/saved-views.component.ts +++ b/src-ui/src/app/components/manage/saved-views/saved-views.component.ts @@ -1,5 +1,5 @@ import { AsyncPipe } from '@angular/common' -import { Component, OnDestroy, OnInit } from '@angular/core' +import { Component, OnDestroy, OnInit, inject } from '@angular/core' import { FormControl, FormGroup, @@ -40,6 +40,10 @@ export class SavedViewsComponent extends LoadingComponentWithPermissions implements OnInit, OnDestroy { + private savedViewService = inject(SavedViewService) + private settings = inject(SettingsService) + private toastService = inject(ToastService) + DisplayMode = DisplayMode public savedViews: SavedView[] @@ -55,11 +59,7 @@ export class SavedViewsComponent return this.settings.allDisplayFields } - constructor( - private savedViewService: SavedViewService, - private settings: SettingsService, - private toastService: ToastService - ) { + constructor() { super() this.settings.organizingSidebarSavedViews = true } diff --git a/src-ui/src/app/components/manage/storage-path-list/storage-path-list.component.ts b/src-ui/src/app/components/manage/storage-path-list/storage-path-list.component.ts index 89a243324..f14ba9aa3 100644 --- a/src-ui/src/app/components/manage/storage-path-list/storage-path-list.component.ts +++ b/src-ui/src/app/components/manage/storage-path-list/storage-path-list.component.ts @@ -1,9 +1,8 @@ import { NgClass, TitleCasePipe } from '@angular/common' -import { Component } from '@angular/core' +import { Component, inject } from '@angular/core' import { FormsModule, ReactiveFormsModule } from '@angular/forms' import { NgbDropdownModule, - NgbModal, NgbPaginationModule, } from '@ng-bootstrap/ng-bootstrap' import { NgxBootstrapIconsModule } from 'ngx-bootstrap-icons' @@ -12,13 +11,8 @@ import { StoragePath } from 'src/app/data/storage-path' import { IfPermissionsDirective } from 'src/app/directives/if-permissions.directive' import { SortableDirective } from 'src/app/directives/sortable.directive' import { SafeHtmlPipe } from 'src/app/pipes/safehtml.pipe' -import { DocumentListViewService } from 'src/app/services/document-list-view.service' -import { - PermissionsService, - PermissionType, -} from 'src/app/services/permissions.service' +import { PermissionType } from 'src/app/services/permissions.service' import { StoragePathService } from 'src/app/services/rest/storage-path.service' -import { ToastService } from 'src/app/services/toast.service' import { StoragePathEditDialogComponent } from '../../common/edit-dialog/storage-path-edit-dialog/storage-path-edit-dialog.component' import { PageHeaderComponent } from '../../common/page-header/page-header.component' import { ManagementListComponent } from '../management-list/management-list.component' @@ -42,36 +36,25 @@ import { ManagementListComponent } from '../management-list/management-list.comp ], }) export class StoragePathListComponent extends ManagementListComponent { - constructor( - directoryService: StoragePathService, - modalService: NgbModal, - toastService: ToastService, - documentListViewService: DocumentListViewService, - permissionsService: PermissionsService - ) { - super( - directoryService, - modalService, - StoragePathEditDialogComponent, - toastService, - documentListViewService, - permissionsService, - FILTER_HAS_STORAGE_PATH_ANY, - $localize`storage path`, - $localize`storage paths`, - PermissionType.StoragePath, - [ - { - key: 'path', - name: $localize`Path`, - rendersHtml: true, - hideOnMobile: true, - valueFn: (c: StoragePath) => { - return `${c.path?.slice(0, 49)}${c.path?.length > 50 ? '...' : ''}` - }, + constructor() { + super() + this.service = inject(StoragePathService) + this.editDialogComponent = StoragePathEditDialogComponent + this.filterRuleType = FILTER_HAS_STORAGE_PATH_ANY + this.typeName = $localize`storage path` + this.typeNamePlural = $localize`storage paths` + this.permissionType = PermissionType.StoragePath + this.extraColumns = [ + { + key: 'path', + name: $localize`Path`, + rendersHtml: true, + hideOnMobile: true, + valueFn: (c: StoragePath) => { + return `${c.path?.slice(0, 49)}${c.path?.length > 50 ? '...' : ''}` }, - ] - ) + }, + ] } getDeleteMessage(object: StoragePath) { diff --git a/src-ui/src/app/components/manage/tag-list/tag-list.component.ts b/src-ui/src/app/components/manage/tag-list/tag-list.component.ts index f0d7e7959..58a0fed34 100644 --- a/src-ui/src/app/components/manage/tag-list/tag-list.component.ts +++ b/src-ui/src/app/components/manage/tag-list/tag-list.component.ts @@ -1,9 +1,8 @@ import { NgClass, TitleCasePipe } from '@angular/common' -import { Component } from '@angular/core' +import { Component, inject } from '@angular/core' import { FormsModule, ReactiveFormsModule } from '@angular/forms' import { NgbDropdownModule, - NgbModal, NgbPaginationModule, } from '@ng-bootstrap/ng-bootstrap' import { NgxBootstrapIconsModule } from 'ngx-bootstrap-icons' @@ -12,13 +11,8 @@ import { Tag } from 'src/app/data/tag' import { IfPermissionsDirective } from 'src/app/directives/if-permissions.directive' import { SortableDirective } from 'src/app/directives/sortable.directive' import { SafeHtmlPipe } from 'src/app/pipes/safehtml.pipe' -import { DocumentListViewService } from 'src/app/services/document-list-view.service' -import { - PermissionsService, - PermissionType, -} from 'src/app/services/permissions.service' +import { PermissionType } from 'src/app/services/permissions.service' import { TagService } from 'src/app/services/rest/tag.service' -import { ToastService } from 'src/app/services/toast.service' import { TagEditDialogComponent } from '../../common/edit-dialog/tag-edit-dialog/tag-edit-dialog.component' import { PageHeaderComponent } from '../../common/page-header/page-header.component' import { ManagementListComponent } from '../management-list/management-list.component' @@ -42,35 +36,24 @@ import { ManagementListComponent } from '../management-list/management-list.comp ], }) export class TagListComponent extends ManagementListComponent { - constructor( - tagService: TagService, - modalService: NgbModal, - toastService: ToastService, - documentListViewService: DocumentListViewService, - permissionsService: PermissionsService - ) { - super( - tagService, - modalService, - TagEditDialogComponent, - toastService, - documentListViewService, - permissionsService, - FILTER_HAS_TAGS_ALL, - $localize`tag`, - $localize`tags`, - PermissionType.Tag, - [ - { - key: 'color', - name: $localize`Color`, - rendersHtml: true, - valueFn: (t: Tag) => { - return `${t.color}` - }, + constructor() { + super() + this.service = inject(TagService) + this.editDialogComponent = TagEditDialogComponent + this.filterRuleType = FILTER_HAS_TAGS_ALL + this.typeName = $localize`tag` + this.typeNamePlural = $localize`tags` + this.permissionType = PermissionType.Tag + this.extraColumns = [ + { + key: 'color', + name: $localize`Color`, + rendersHtml: true, + valueFn: (t: Tag) => { + return `${t.color}` }, - ] - ) + }, + ] } getDeleteMessage(object: Tag) { diff --git a/src-ui/src/app/components/manage/workflows/workflows.component.ts b/src-ui/src/app/components/manage/workflows/workflows.component.ts index edbca44c8..710eb3aa3 100644 --- a/src-ui/src/app/components/manage/workflows/workflows.component.ts +++ b/src-ui/src/app/components/manage/workflows/workflows.component.ts @@ -1,4 +1,4 @@ -import { Component, OnInit } from '@angular/core' +import { Component, OnInit, inject } from '@angular/core' import { FormsModule, ReactiveFormsModule } from '@angular/forms' import { NgbDropdownModule, NgbModal } from '@ng-bootstrap/ng-bootstrap' import { NgxBootstrapIconsModule } from 'ngx-bootstrap-icons' @@ -34,16 +34,12 @@ export class WorkflowsComponent extends LoadingComponentWithPermissions implements OnInit { - public workflows: Workflow[] = [] + private workflowService = inject(WorkflowService) + permissionsService = inject(PermissionsService) + private modalService = inject(NgbModal) + private toastService = inject(ToastService) - constructor( - private workflowService: WorkflowService, - public permissionsService: PermissionsService, - private modalService: NgbModal, - private toastService: ToastService - ) { - super() - } + public workflows: Workflow[] = [] ngOnInit() { this.reload() diff --git a/src-ui/src/app/directives/if-object-permissions.directive.ts b/src-ui/src/app/directives/if-object-permissions.directive.ts index 72256da68..121f7656b 100644 --- a/src-ui/src/app/directives/if-object-permissions.directive.ts +++ b/src-ui/src/app/directives/if-object-permissions.directive.ts @@ -6,6 +6,7 @@ import { OnInit, TemplateRef, ViewContainerRef, + inject, } from '@angular/core' import { ObjectWithPermissions } from '../data/object-with-permissions' import { @@ -17,6 +18,10 @@ import { selector: '[pngxIfObjectPermissions]', }) export class IfObjectPermissionsDirective implements OnInit, OnChanges { + private viewContainerRef = inject(ViewContainerRef) + private templateRef = inject>(TemplateRef) + private permissionsService = inject(PermissionsService) + // The role the user must have @Input() pngxIfObjectPermissions: { @@ -26,17 +31,6 @@ export class IfObjectPermissionsDirective implements OnInit, OnChanges { createdView: EmbeddedViewRef - /** - * @param {ViewContainerRef} viewContainerRef -- The location where we need to render the templateRef - * @param {TemplateRef} templateRef -- The templateRef to be potentially rendered - * @param {PermissionsService} permissionsService -- Will give us access to the permissions a user has - */ - constructor( - private viewContainerRef: ViewContainerRef, - private templateRef: TemplateRef, - private permissionsService: PermissionsService - ) {} - public ngOnInit(): void { if ( !this.pngxIfObjectPermissions?.object || diff --git a/src-ui/src/app/directives/if-owner.directive.ts b/src-ui/src/app/directives/if-owner.directive.ts index 7c9743fd6..8affa2518 100644 --- a/src-ui/src/app/directives/if-owner.directive.ts +++ b/src-ui/src/app/directives/if-owner.directive.ts @@ -6,6 +6,7 @@ import { OnInit, TemplateRef, ViewContainerRef, + inject, } from '@angular/core' import { ObjectWithPermissions } from '../data/object-with-permissions' import { PermissionsService } from '../services/permissions.service' @@ -14,23 +15,16 @@ import { PermissionsService } from '../services/permissions.service' selector: '[pngxIfOwner]', }) export class IfOwnerDirective implements OnInit, OnChanges { + private viewContainerRef = inject(ViewContainerRef) + private templateRef = inject>(TemplateRef) + private permissionsService = inject(PermissionsService) + // The role the user must have @Input() pngxIfOwner: ObjectWithPermissions createdView: EmbeddedViewRef - /** - * @param {ViewContainerRef} viewContainerRef -- The location where we need to render the templateRef - * @param {TemplateRef} templateRef -- The templateRef to be potentially rendered - * @param {PermissionsService} permissionsService -- Will give us access to the permissions a user has - */ - constructor( - private viewContainerRef: ViewContainerRef, - private templateRef: TemplateRef, - private permissionsService: PermissionsService - ) {} - public ngOnInit(): void { if (this.permissionsService.currentUserOwnsObject(this.pngxIfOwner)) { if (!this.createdView) diff --git a/src-ui/src/app/directives/if-permissions.directive.ts b/src-ui/src/app/directives/if-permissions.directive.ts index f3a6e3376..97d6d3c64 100644 --- a/src-ui/src/app/directives/if-permissions.directive.ts +++ b/src-ui/src/app/directives/if-permissions.directive.ts @@ -1,5 +1,6 @@ import { Directive, + inject, Input, OnInit, TemplateRef, @@ -15,22 +16,15 @@ import { selector: '[pngxIfPermissions]', }) export class IfPermissionsDirective implements OnInit { + private viewContainerRef = inject(ViewContainerRef) + private templateRef = inject>(TemplateRef) + private permissionsService = inject(PermissionsService) + @Input() pngxIfPermissions: | Array<{ action: PermissionAction; type: PermissionType }> | { action: PermissionAction; type: PermissionType } - /** - * @param {ViewContainerRef} viewContainerRef -- The location where we need to render the templateRef - * @param {TemplateRef} templateRef -- The templateRef to be potentially rendered - * @param {PermissionsService} permissionsService -- Will give us access to the permissions a user has - */ - constructor( - private viewContainerRef: ViewContainerRef, - private templateRef: TemplateRef, - private permissionsService: PermissionsService - ) {} - public ngOnInit(): void { if ( [] diff --git a/src-ui/src/app/guards/dirty-form.guard.ts b/src-ui/src/app/guards/dirty-form.guard.ts index 4f27de89a..73b7595d4 100644 --- a/src-ui/src/app/guards/dirty-form.guard.ts +++ b/src-ui/src/app/guards/dirty-form.guard.ts @@ -1,4 +1,4 @@ -import { Injectable } from '@angular/core' +import { Injectable, inject } from '@angular/core' import { NgbModal } from '@ng-bootstrap/ng-bootstrap' import { DirtyCheckGuard } from '@ngneat/dirty-check-forms' import { Observable, Subject } from 'rxjs' @@ -6,9 +6,7 @@ import { ConfirmDialogComponent } from 'src/app/components/common/confirm-dialog @Injectable({ providedIn: 'root' }) export class DirtyFormGuard extends DirtyCheckGuard { - constructor(private modalService: NgbModal) { - super() - } + private modalService = inject(NgbModal) confirmChanges(): Observable { let modal = this.modalService.open(ConfirmDialogComponent, { diff --git a/src-ui/src/app/guards/dirty-saved-view.guard.ts b/src-ui/src/app/guards/dirty-saved-view.guard.ts index 709acfa09..4f0a811c3 100644 --- a/src-ui/src/app/guards/dirty-saved-view.guard.ts +++ b/src-ui/src/app/guards/dirty-saved-view.guard.ts @@ -1,4 +1,4 @@ -import { Injectable } from '@angular/core' +import { inject, Injectable } from '@angular/core' import { NgbModal } from '@ng-bootstrap/ng-bootstrap' import { first, Observable, Subject } from 'rxjs' import { ConfirmDialogComponent } from '../components/common/confirm-dialog/confirm-dialog.component' @@ -8,10 +8,8 @@ import { SettingsService } from '../services/settings.service' @Injectable() export class DirtySavedViewGuard { - constructor( - private modalService: NgbModal, - private settings: SettingsService - ) {} + private modalService = inject(NgbModal) + private settings = inject(SettingsService) canDeactivate( component: DocumentListComponent diff --git a/src-ui/src/app/guards/permissions.guard.ts b/src-ui/src/app/guards/permissions.guard.ts index c820edea2..ddac8e035 100644 --- a/src-ui/src/app/guards/permissions.guard.ts +++ b/src-ui/src/app/guards/permissions.guard.ts @@ -1,4 +1,4 @@ -import { Injectable } from '@angular/core' +import { Injectable, inject } from '@angular/core' import { ActivatedRouteSnapshot, Router, @@ -11,12 +11,10 @@ import { ToastService } from '../services/toast.service' @Injectable() export class PermissionsGuard { - constructor( - private permissionsService: PermissionsService, - private router: Router, - private toastService: ToastService, - private tourService: TourService - ) {} + private permissionsService = inject(PermissionsService) + private router = inject(Router) + private toastService = inject(ToastService) + private tourService = inject(TourService) canActivate( route: ActivatedRouteSnapshot, diff --git a/src-ui/src/app/interceptors/csrf.interceptor.ts b/src-ui/src/app/interceptors/csrf.interceptor.ts index 2febf2014..2f590c5eb 100644 --- a/src-ui/src/app/interceptors/csrf.interceptor.ts +++ b/src-ui/src/app/interceptors/csrf.interceptor.ts @@ -4,17 +4,15 @@ import { HttpInterceptor, HttpRequest, } from '@angular/common/http' -import { Injectable } from '@angular/core' +import { Injectable, inject } from '@angular/core' import { Meta } from '@angular/platform-browser' import { CookieService } from 'ngx-cookie-service' import { Observable } from 'rxjs' @Injectable() export class CsrfInterceptor implements HttpInterceptor { - constructor( - private cookieService: CookieService, - private meta: Meta - ) {} + private cookieService = inject(CookieService) + private meta = inject(Meta) intercept( request: HttpRequest, diff --git a/src-ui/src/app/pipes/correspondent-name.pipe.spec.ts b/src-ui/src/app/pipes/correspondent-name.pipe.spec.ts index 701011c5b..12568157e 100644 --- a/src-ui/src/app/pipes/correspondent-name.pipe.spec.ts +++ b/src-ui/src/app/pipes/correspondent-name.pipe.spec.ts @@ -2,7 +2,7 @@ import { provideHttpClient, withInterceptorsFromDi } from '@angular/common/http' import { provideHttpClientTesting } from '@angular/common/http/testing' import { TestBed } from '@angular/core/testing' import { PermissionsService } from '../services/permissions.service' -import { CorrespondentService } from '../services/rest/correspondent.service' +import { AbstractNameFilterService } from '../services/rest/abstract-name-filter-service' import { CorrespondentNamePipe } from './correspondent-name.pipe' describe('CorrespondentNamePipe', () => { @@ -11,6 +11,9 @@ describe('CorrespondentNamePipe', () => { beforeEach(() => { TestBed.configureTestingModule({ providers: [ + CorrespondentNamePipe, + { provide: PermissionsService }, + { provide: AbstractNameFilterService }, provideHttpClient(withInterceptorsFromDi()), provideHttpClientTesting(), ], @@ -19,10 +22,7 @@ describe('CorrespondentNamePipe', () => { // The pipe is a simple wrapper around ObjectNamePipe, see ObjectNamePipe for the actual tests. it('should be created', () => { - pipe = new CorrespondentNamePipe( - TestBed.inject(PermissionsService), - TestBed.inject(CorrespondentService) - ) + pipe = TestBed.inject(CorrespondentNamePipe) expect(pipe).toBeTruthy() }) }) diff --git a/src-ui/src/app/pipes/correspondent-name.pipe.ts b/src-ui/src/app/pipes/correspondent-name.pipe.ts index c068c5ccf..93074e011 100644 --- a/src-ui/src/app/pipes/correspondent-name.pipe.ts +++ b/src-ui/src/app/pipes/correspondent-name.pipe.ts @@ -1,4 +1,4 @@ -import { Pipe, PipeTransform } from '@angular/core' +import { inject, Pipe, PipeTransform } from '@angular/core' import { PermissionsService, PermissionType, @@ -13,10 +13,10 @@ export class CorrespondentNamePipe extends ObjectNamePipe implements PipeTransform { - constructor( - permissionsService: PermissionsService, - objectService: CorrespondentService - ) { - super(permissionsService, PermissionType.Correspondent, objectService) + constructor() { + super() + this.permissionsService = inject(PermissionsService) + this.permissionType = PermissionType.Correspondent + this.objectService = inject(CorrespondentService) } } diff --git a/src-ui/src/app/pipes/custom-date.pipe.ts b/src-ui/src/app/pipes/custom-date.pipe.ts index 69e054a84..e42b3d553 100644 --- a/src-ui/src/app/pipes/custom-date.pipe.ts +++ b/src-ui/src/app/pipes/custom-date.pipe.ts @@ -1,5 +1,5 @@ import { DatePipe } from '@angular/common' -import { Inject, LOCALE_ID, Pipe, PipeTransform } from '@angular/core' +import { LOCALE_ID, Pipe, PipeTransform, inject } from '@angular/core' import { SETTINGS_KEYS } from '../data/ui-settings' import { SettingsService } from '../services/settings.service' @@ -46,13 +46,14 @@ const INTERVALS = { name: 'customDate', }) export class CustomDatePipe implements PipeTransform { + private datePipe = inject(DatePipe) + private settings = inject(SettingsService) + private defaultLocale: string - constructor( - @Inject(LOCALE_ID) locale: string, - private datePipe: DatePipe, - private settings: SettingsService - ) { + constructor() { + const locale = inject(LOCALE_ID) + this.defaultLocale = locale } diff --git a/src-ui/src/app/pipes/document-type-name.pipe.spec.ts b/src-ui/src/app/pipes/document-type-name.pipe.spec.ts index 20219dc92..51e0158ca 100644 --- a/src-ui/src/app/pipes/document-type-name.pipe.spec.ts +++ b/src-ui/src/app/pipes/document-type-name.pipe.spec.ts @@ -2,7 +2,7 @@ import { provideHttpClient, withInterceptorsFromDi } from '@angular/common/http' import { provideHttpClientTesting } from '@angular/common/http/testing' import { TestBed } from '@angular/core/testing' import { PermissionsService } from '../services/permissions.service' -import { DocumentTypeService } from '../services/rest/document-type.service' +import { AbstractNameFilterService } from '../services/rest/abstract-name-filter-service' import { DocumentTypeNamePipe } from './document-type-name.pipe' describe('DocumentTypeNamePipe', () => { @@ -11,6 +11,9 @@ describe('DocumentTypeNamePipe', () => { beforeEach(() => { TestBed.configureTestingModule({ providers: [ + DocumentTypeNamePipe, + { provide: PermissionsService }, + { provide: AbstractNameFilterService }, provideHttpClient(withInterceptorsFromDi()), provideHttpClientTesting(), ], @@ -19,10 +22,7 @@ describe('DocumentTypeNamePipe', () => { // The pipe is a simple wrapper around ObjectNamePipe, see ObjectNamePipe for the actual tests. it('should be created', () => { - pipe = new DocumentTypeNamePipe( - TestBed.inject(PermissionsService), - TestBed.inject(DocumentTypeService) - ) + pipe = TestBed.inject(DocumentTypeNamePipe) expect(pipe).toBeTruthy() }) }) diff --git a/src-ui/src/app/pipes/document-type-name.pipe.ts b/src-ui/src/app/pipes/document-type-name.pipe.ts index 8bb65206a..c650206f4 100644 --- a/src-ui/src/app/pipes/document-type-name.pipe.ts +++ b/src-ui/src/app/pipes/document-type-name.pipe.ts @@ -1,4 +1,4 @@ -import { Pipe, PipeTransform } from '@angular/core' +import { inject, Pipe, PipeTransform } from '@angular/core' import { PermissionsService, PermissionType, @@ -13,10 +13,10 @@ export class DocumentTypeNamePipe extends ObjectNamePipe implements PipeTransform { - constructor( - permissionsService: PermissionsService, - objectService: DocumentTypeService - ) { - super(permissionsService, PermissionType.DocumentType, objectService) + constructor() { + super() + this.permissionsService = inject(PermissionsService) + this.permissionType = PermissionType.DocumentType + this.objectService = inject(DocumentTypeService) } } diff --git a/src-ui/src/app/pipes/object-name.pipe.spec.ts b/src-ui/src/app/pipes/object-name.pipe.spec.ts index 85505d254..036969019 100644 --- a/src-ui/src/app/pipes/object-name.pipe.spec.ts +++ b/src-ui/src/app/pipes/object-name.pipe.spec.ts @@ -7,7 +7,6 @@ import { PermissionsService } from '../services/permissions.service' import { AbstractNameFilterService } from '../services/rest/abstract-name-filter-service' import { CorrespondentService } from '../services/rest/correspondent.service' import { CorrespondentNamePipe } from './correspondent-name.pipe' -import { ObjectNamePipe } from './object-name.pipe' describe('ObjectNamePipe', () => { /* @@ -21,7 +20,9 @@ describe('ObjectNamePipe', () => { beforeEach(() => { TestBed.configureTestingModule({ providers: [ - ObjectNamePipe, + CorrespondentNamePipe, + { provide: PermissionsService }, + { provide: CorrespondentService }, provideHttpClient(withInterceptorsFromDi()), provideHttpClientTesting(), ], @@ -29,7 +30,7 @@ describe('ObjectNamePipe', () => { permissionsService = TestBed.inject(PermissionsService) objectService = TestBed.inject(CorrespondentService) - pipe = new CorrespondentNamePipe(permissionsService, objectService) + pipe = TestBed.inject(CorrespondentNamePipe) }) it('should return object name if user has permission', (done) => { diff --git a/src-ui/src/app/pipes/object-name.pipe.ts b/src-ui/src/app/pipes/object-name.pipe.ts index 5590ed342..f9d71e632 100644 --- a/src-ui/src/app/pipes/object-name.pipe.ts +++ b/src-ui/src/app/pipes/object-name.pipe.ts @@ -1,4 +1,4 @@ -import { Pipe, PipeTransform } from '@angular/core' +import { inject, Pipe, PipeTransform } from '@angular/core' import { catchError, map, Observable, of } from 'rxjs' import { MatchingModel } from '../data/matching-model' import { @@ -12,6 +12,12 @@ import { AbstractNameFilterService } from '../services/rest/abstract-name-filter name: 'objectName', }) export abstract class ObjectNamePipe implements PipeTransform { + protected permissionsService = inject(PermissionsService) + protected permissionType: PermissionType + protected objectService = inject>( + AbstractNameFilterService + ) + /* ObjectNamePipe is an abstract class to prevent instantiation, object-specific pipes extend this class and provide the @@ -19,12 +25,6 @@ export abstract class ObjectNamePipe implements PipeTransform { */ protected objects: MatchingModel[] - constructor( - protected permissionsService: PermissionsService, - protected permissionType: PermissionType, - protected objectService: AbstractNameFilterService - ) {} - transform(obejctId: number): Observable { if ( this.permissionsService.currentUserCan( diff --git a/src-ui/src/app/pipes/safehtml.pipe.ts b/src-ui/src/app/pipes/safehtml.pipe.ts index 6fba1e75e..1001b8dbf 100644 --- a/src-ui/src/app/pipes/safehtml.pipe.ts +++ b/src-ui/src/app/pipes/safehtml.pipe.ts @@ -1,11 +1,11 @@ -import { Pipe, PipeTransform } from '@angular/core' +import { Pipe, PipeTransform, inject } from '@angular/core' import { DomSanitizer } from '@angular/platform-browser' @Pipe({ name: 'safeHtml', }) export class SafeHtmlPipe implements PipeTransform { - constructor(private sanitizer: DomSanitizer) {} + private sanitizer = inject(DomSanitizer) transform(html) { return this.sanitizer.bypassSecurityTrustHtml(html) diff --git a/src-ui/src/app/pipes/safeurl.pipe.ts b/src-ui/src/app/pipes/safeurl.pipe.ts index 4d19d099f..37fdd743b 100644 --- a/src-ui/src/app/pipes/safeurl.pipe.ts +++ b/src-ui/src/app/pipes/safeurl.pipe.ts @@ -1,11 +1,11 @@ -import { Pipe, PipeTransform } from '@angular/core' +import { Pipe, PipeTransform, inject } from '@angular/core' import { DomSanitizer } from '@angular/platform-browser' @Pipe({ name: 'safeUrl', }) export class SafeUrlPipe implements PipeTransform { - constructor(private sanitizer: DomSanitizer) {} + private sanitizer = inject(DomSanitizer) transform(url) { if (url == null) { diff --git a/src-ui/src/app/pipes/storage-path-name.pipe.spec.ts b/src-ui/src/app/pipes/storage-path-name.pipe.spec.ts index d49f99080..a115b5390 100644 --- a/src-ui/src/app/pipes/storage-path-name.pipe.spec.ts +++ b/src-ui/src/app/pipes/storage-path-name.pipe.spec.ts @@ -2,7 +2,7 @@ import { provideHttpClient, withInterceptorsFromDi } from '@angular/common/http' import { provideHttpClientTesting } from '@angular/common/http/testing' import { TestBed } from '@angular/core/testing' import { PermissionsService } from '../services/permissions.service' -import { StoragePathService } from '../services/rest/storage-path.service' +import { AbstractNameFilterService } from '../services/rest/abstract-name-filter-service' import { StoragePathNamePipe } from './storage-path-name.pipe' describe('StoragePathNamePipe', () => { @@ -11,6 +11,9 @@ describe('StoragePathNamePipe', () => { beforeEach(() => { TestBed.configureTestingModule({ providers: [ + StoragePathNamePipe, + { provide: PermissionsService }, + { provide: AbstractNameFilterService }, provideHttpClient(withInterceptorsFromDi()), provideHttpClientTesting(), ], @@ -19,10 +22,7 @@ describe('StoragePathNamePipe', () => { // The pipe is a simple wrapper around ObjectNamePipe, see ObjectNamePipe for the actual tests. it('should be created', () => { - pipe = new StoragePathNamePipe( - TestBed.inject(PermissionsService), - TestBed.inject(StoragePathService) - ) + pipe = TestBed.inject(StoragePathNamePipe) expect(pipe).toBeTruthy() }) }) diff --git a/src-ui/src/app/pipes/storage-path-name.pipe.ts b/src-ui/src/app/pipes/storage-path-name.pipe.ts index 5a166857e..c3a8fe156 100644 --- a/src-ui/src/app/pipes/storage-path-name.pipe.ts +++ b/src-ui/src/app/pipes/storage-path-name.pipe.ts @@ -1,4 +1,4 @@ -import { Pipe, PipeTransform } from '@angular/core' +import { inject, Pipe, PipeTransform } from '@angular/core' import { PermissionsService, PermissionType, @@ -13,10 +13,10 @@ export class StoragePathNamePipe extends ObjectNamePipe implements PipeTransform { - constructor( - permissionsService: PermissionsService, - objectService: StoragePathService - ) { - super(permissionsService, PermissionType.StoragePath, objectService) + constructor() { + super() + this.permissionsService = inject(PermissionsService) + this.permissionType = PermissionType.StoragePath + this.objectService = inject(StoragePathService) } } diff --git a/src-ui/src/app/pipes/username.pipe.ts b/src-ui/src/app/pipes/username.pipe.ts index f8a3be987..549a83fcc 100644 --- a/src-ui/src/app/pipes/username.pipe.ts +++ b/src-ui/src/app/pipes/username.pipe.ts @@ -1,4 +1,4 @@ -import { Pipe, PipeTransform } from '@angular/core' +import { inject, Pipe, PipeTransform } from '@angular/core' import { catchError, map, Observable, of } from 'rxjs' import { User } from '../data/user' import { @@ -12,12 +12,10 @@ import { UserService } from '../services/rest/user.service' name: 'username', }) export class UsernamePipe implements PipeTransform { - users: User[] + private permissionsService = inject(PermissionsService) + private userService = inject(UserService) - constructor( - private permissionsService: PermissionsService, - private userService: UserService - ) {} + users: User[] transform(userID: number): Observable { if ( diff --git a/src-ui/src/app/services/component-router.service.ts b/src-ui/src/app/services/component-router.service.ts index d520c36f2..dfe82bd73 100644 --- a/src-ui/src/app/services/component-router.service.ts +++ b/src-ui/src/app/services/component-router.service.ts @@ -1,4 +1,4 @@ -import { Injectable } from '@angular/core' +import { Injectable, inject } from '@angular/core' import { ActivationStart, Event, Router } from '@angular/router' import { filter } from 'rxjs' @@ -8,10 +8,12 @@ const EXCLUDE_COMPONENTS = ['AppFrameComponent'] providedIn: 'root', }) export class ComponentRouterService { + private router = inject(Router) + private history: string[] = [] private componentHistory: any[] = [] - constructor(private router: Router) { + constructor() { this.router.events .pipe(filter((event: Event) => event instanceof ActivationStart)) .subscribe((event: ActivationStart) => { diff --git a/src-ui/src/app/services/config.service.ts b/src-ui/src/app/services/config.service.ts index 538aafbdd..1ca217f1c 100644 --- a/src-ui/src/app/services/config.service.ts +++ b/src-ui/src/app/services/config.service.ts @@ -1,5 +1,5 @@ import { HttpClient } from '@angular/common/http' -import { Injectable } from '@angular/core' +import { Injectable, inject } from '@angular/core' import { Observable, first, map } from 'rxjs' import { environment } from 'src/environments/environment' import { PaperlessConfig } from '../data/paperless-config' @@ -8,9 +8,9 @@ import { PaperlessConfig } from '../data/paperless-config' providedIn: 'root', }) export class ConfigService { - protected baseUrl: string = environment.apiBaseUrl + 'config/' + protected http = inject(HttpClient) - constructor(protected http: HttpClient) {} + protected baseUrl: string = environment.apiBaseUrl + 'config/' getConfig(): Observable { return this.http.get<[PaperlessConfig]>(this.baseUrl).pipe( diff --git a/src-ui/src/app/services/document-list-view.service.ts b/src-ui/src/app/services/document-list-view.service.ts index 0c7d9f9e7..9c64a7641 100644 --- a/src-ui/src/app/services/document-list-view.service.ts +++ b/src-ui/src/app/services/document-list-view.service.ts @@ -1,4 +1,4 @@ -import { Injectable } from '@angular/core' +import { Injectable, inject } from '@angular/core' import { ParamMap, Router } from '@angular/router' import { Observable, Subject, first, takeUntil } from 'rxjs' import { @@ -91,6 +91,10 @@ export interface ListViewState { providedIn: 'root', }) export class DocumentListViewService { + private documentService = inject(DocumentService) + private settings = inject(SettingsService) + private router = inject(Router) + isReloading: boolean = false initialized: boolean = false error: string = null @@ -116,11 +120,7 @@ export class DocumentListViewService { return this.activeListViewState.title } - constructor( - private documentService: DocumentService, - private settings: SettingsService, - private router: Router - ) { + constructor() { let documentListViewConfigJson = localStorage.getItem( DOCUMENT_LIST_SERVICE.CURRENT_VIEW_CONFIG ) diff --git a/src-ui/src/app/services/hot-key.service.spec.ts b/src-ui/src/app/services/hot-key.service.spec.ts index 76dcb6dce..367f78c96 100644 --- a/src-ui/src/app/services/hot-key.service.spec.ts +++ b/src-ui/src/app/services/hot-key.service.spec.ts @@ -1,7 +1,7 @@ -import { DOCUMENT } from '@angular/common' import { TestBed } from '@angular/core/testing' import { EventManager } from '@angular/platform-browser' +import { DOCUMENT } from '@angular/core' import { NgbModal, NgbModalModule } from '@ng-bootstrap/ng-bootstrap' import { HotKeyService } from './hot-key.service' diff --git a/src-ui/src/app/services/hot-key.service.ts b/src-ui/src/app/services/hot-key.service.ts index e30364fc1..0623e8f87 100644 --- a/src-ui/src/app/services/hot-key.service.ts +++ b/src-ui/src/app/services/hot-key.service.ts @@ -1,5 +1,4 @@ -import { DOCUMENT } from '@angular/common' -import { Inject, Injectable } from '@angular/core' +import { DOCUMENT, Injectable, inject } from '@angular/core' import { EventManager } from '@angular/platform-browser' import { NgbModal } from '@ng-bootstrap/ng-bootstrap' import { Observable } from 'rxjs' @@ -15,17 +14,17 @@ export interface ShortcutOptions { providedIn: 'root', }) export class HotKeyService { + private eventManager = inject(EventManager) + private document = inject(DOCUMENT) + private modalService = inject(NgbModal) + private defaults: Partial = { element: this.document, } private hotkeys: Map = new Map() - constructor( - private eventManager: EventManager, - @Inject(DOCUMENT) private document: Document, - private modalService: NgbModal - ) { + constructor() { this.addShortcut({ keys: 'shift.?' }).subscribe(() => { this.openHelpModal() }) diff --git a/src-ui/src/app/services/open-documents.service.spec.ts b/src-ui/src/app/services/open-documents.service.spec.ts index 73e452d5a..70c416bf8 100644 --- a/src-ui/src/app/services/open-documents.service.spec.ts +++ b/src-ui/src/app/services/open-documents.service.spec.ts @@ -176,22 +176,16 @@ describe('OpenDocumentsService', () => { OPEN_DOCUMENT_SERVICE.DOCUMENTS, JSON.stringify(documents) ) - const testOpenDocumentsService = new OpenDocumentsService( - null, - modalService - ) - expect(testOpenDocumentsService.getOpenDocuments()).toHaveLength( + openDocumentsService.load() + expect(openDocumentsService.getOpenDocuments()).toHaveLength( documents.length ) }) it('should remove open documents from localStorage on error', () => { sessionStorage.setItem(OPEN_DOCUMENT_SERVICE.DOCUMENTS, 'hello world') - const testOpenDocumentsService = new OpenDocumentsService( - null, - modalService - ) - expect(testOpenDocumentsService.getOpenDocuments()).toHaveLength(0) + openDocumentsService.load() + expect(openDocumentsService.getOpenDocuments()).toHaveLength(0) expect(sessionStorage.getItem(OPEN_DOCUMENT_SERVICE.DOCUMENTS)).toBeNull() }) diff --git a/src-ui/src/app/services/open-documents.service.ts b/src-ui/src/app/services/open-documents.service.ts index e9a3c7a70..92c137fec 100644 --- a/src-ui/src/app/services/open-documents.service.ts +++ b/src-ui/src/app/services/open-documents.service.ts @@ -1,4 +1,4 @@ -import { Injectable } from '@angular/core' +import { Injectable, inject } from '@angular/core' import { NgbModal } from '@ng-bootstrap/ng-bootstrap' import { Observable, Subject, of } from 'rxjs' import { first } from 'rxjs/operators' @@ -11,12 +11,16 @@ import { DocumentService } from './rest/document.service' providedIn: 'root', }) export class OpenDocumentsService { + private documentService = inject(DocumentService) + private modalService = inject(NgbModal) + private MAX_OPEN_DOCUMENTS = 5 - constructor( - private documentService: DocumentService, - private modalService: NgbModal - ) { + constructor() { + this.load() + } + + public load() { if (sessionStorage.getItem(OPEN_DOCUMENT_SERVICE.DOCUMENTS)) { try { this.openDocuments = JSON.parse( diff --git a/src-ui/src/app/services/profile.service.ts b/src-ui/src/app/services/profile.service.ts index 42075674b..05cca4d60 100644 --- a/src-ui/src/app/services/profile.service.ts +++ b/src-ui/src/app/services/profile.service.ts @@ -1,5 +1,5 @@ import { HttpClient } from '@angular/common/http' -import { Injectable } from '@angular/core' +import { Injectable, inject } from '@angular/core' import { Observable } from 'rxjs' import { environment } from 'src/environments/environment' import { @@ -12,9 +12,9 @@ import { providedIn: 'root', }) export class ProfileService { - private endpoint = 'profile' + private http = inject(HttpClient) - constructor(private http: HttpClient) {} + private endpoint = 'profile' get(): Observable { return this.http.get( diff --git a/src-ui/src/app/services/rest/abstract-name-filter-service.ts b/src-ui/src/app/services/rest/abstract-name-filter-service.ts index a43e8f84a..4a26da91a 100644 --- a/src-ui/src/app/services/rest/abstract-name-filter-service.ts +++ b/src-ui/src/app/services/rest/abstract-name-filter-service.ts @@ -1,3 +1,4 @@ +import { Injectable } from '@angular/core' import { Observable } from 'rxjs' import { ObjectWithId } from 'src/app/data/object-with-id' import { PermissionsObject } from 'src/app/data/object-with-permissions' @@ -7,7 +8,9 @@ export enum BulkEditObjectOperation { SetPermissions = 'set_permissions', Delete = 'delete', } - +@Injectable({ + providedIn: 'root', +}) export abstract class AbstractNameFilterService< T extends ObjectWithId, > extends AbstractPaperlessService { diff --git a/src-ui/src/app/services/rest/abstract-paperless-service.ts b/src-ui/src/app/services/rest/abstract-paperless-service.ts index ca1c4edad..34e2c8aea 100644 --- a/src-ui/src/app/services/rest/abstract-paperless-service.ts +++ b/src-ui/src/app/services/rest/abstract-paperless-service.ts @@ -1,17 +1,21 @@ import { HttpClient, HttpParams } from '@angular/common/http' +import { inject, Injectable } from '@angular/core' import { Observable } from 'rxjs' import { map, publishReplay, refCount } from 'rxjs/operators' import { ObjectWithId } from 'src/app/data/object-with-id' import { Results } from 'src/app/data/results' import { environment } from 'src/environments/environment' - +@Injectable({ + providedIn: 'root', +}) export abstract class AbstractPaperlessService { protected baseUrl: string = environment.apiBaseUrl + protected http: HttpClient + protected resourceName: string - constructor( - protected http: HttpClient, - protected resourceName: string - ) {} + constructor() { + this.http = inject(HttpClient) + } protected getResourceUrl(id: number = null, action: string = null): string { let url = `${this.baseUrl}${this.resourceName}/` diff --git a/src-ui/src/app/services/rest/correspondent.service.ts b/src-ui/src/app/services/rest/correspondent.service.ts index 04f1513a2..b63818af0 100644 --- a/src-ui/src/app/services/rest/correspondent.service.ts +++ b/src-ui/src/app/services/rest/correspondent.service.ts @@ -1,4 +1,3 @@ -import { HttpClient } from '@angular/common/http' import { Injectable } from '@angular/core' import { Correspondent } from 'src/app/data/correspondent' import { AbstractNameFilterService } from './abstract-name-filter-service' @@ -7,7 +6,8 @@ import { AbstractNameFilterService } from './abstract-name-filter-service' providedIn: 'root', }) export class CorrespondentService extends AbstractNameFilterService { - constructor(http: HttpClient) { - super(http, 'correspondents') + constructor() { + super() + this.resourceName = 'correspondents' } } diff --git a/src-ui/src/app/services/rest/custom-fields.service.ts b/src-ui/src/app/services/rest/custom-fields.service.ts index 0ac31eefd..235319010 100644 --- a/src-ui/src/app/services/rest/custom-fields.service.ts +++ b/src-ui/src/app/services/rest/custom-fields.service.ts @@ -1,4 +1,3 @@ -import { HttpClient } from '@angular/common/http' import { Injectable } from '@angular/core' import { CustomField } from 'src/app/data/custom-field' import { AbstractPaperlessService } from './abstract-paperless-service' @@ -7,7 +6,8 @@ import { AbstractPaperlessService } from './abstract-paperless-service' providedIn: 'root', }) export class CustomFieldsService extends AbstractPaperlessService { - constructor(http: HttpClient) { - super(http, 'custom_fields') + constructor() { + super() + this.resourceName = 'custom_fields' } } diff --git a/src-ui/src/app/services/rest/document-notes.service.ts b/src-ui/src/app/services/rest/document-notes.service.ts index 3d3d6dacf..4a058b184 100644 --- a/src-ui/src/app/services/rest/document-notes.service.ts +++ b/src-ui/src/app/services/rest/document-notes.service.ts @@ -1,4 +1,4 @@ -import { HttpClient, HttpParams } from '@angular/common/http' +import { HttpParams } from '@angular/common/http' import { Injectable } from '@angular/core' import { Observable } from 'rxjs' import { DocumentNote } from 'src/app/data/document-note' @@ -8,8 +8,9 @@ import { AbstractPaperlessService } from './abstract-paperless-service' providedIn: 'root', }) export class DocumentNotesService extends AbstractPaperlessService { - constructor(http: HttpClient) { - super(http, 'documents') + constructor() { + super() + this.resourceName = 'documents' } getNotes(documentId: number): Observable { diff --git a/src-ui/src/app/services/rest/document-type.service.ts b/src-ui/src/app/services/rest/document-type.service.ts index 649af0675..bed2216f4 100644 --- a/src-ui/src/app/services/rest/document-type.service.ts +++ b/src-ui/src/app/services/rest/document-type.service.ts @@ -1,4 +1,3 @@ -import { HttpClient } from '@angular/common/http' import { Injectable } from '@angular/core' import { DocumentType } from 'src/app/data/document-type' import { AbstractNameFilterService } from './abstract-name-filter-service' @@ -7,7 +6,8 @@ import { AbstractNameFilterService } from './abstract-name-filter-service' providedIn: 'root', }) export class DocumentTypeService extends AbstractNameFilterService { - constructor(http: HttpClient) { - super(http, 'document_types') + constructor() { + super() + this.resourceName = 'document_types' } } diff --git a/src-ui/src/app/services/rest/document.service.ts b/src-ui/src/app/services/rest/document.service.ts index 1f67a358b..4f52633ea 100644 --- a/src-ui/src/app/services/rest/document.service.ts +++ b/src-ui/src/app/services/rest/document.service.ts @@ -1,5 +1,4 @@ -import { HttpClient } from '@angular/common/http' -import { Injectable } from '@angular/core' +import { Injectable, inject } from '@angular/core' import { Observable } from 'rxjs' import { map } from 'rxjs/operators' import { AuditLogEntry } from 'src/app/data/auditlog-entry' @@ -41,6 +40,10 @@ export interface SelectionData { providedIn: 'root', }) export class DocumentService extends AbstractPaperlessService { + private permissionsService = inject(PermissionsService) + private settingsService = inject(SettingsService) + private customFieldService = inject(CustomFieldsService) + private _searchQuery: string private _sortFields @@ -55,13 +58,9 @@ export class DocumentService extends AbstractPaperlessService { private customFields: CustomField[] = [] - constructor( - http: HttpClient, - private permissionsService: PermissionsService, - private settingsService: SettingsService, - private customFieldService: CustomFieldsService - ) { - super(http, 'documents') + constructor() { + super() + this.resourceName = 'documents' this.reload() } diff --git a/src-ui/src/app/services/rest/group.service.ts b/src-ui/src/app/services/rest/group.service.ts index d12c6e938..df8cff453 100644 --- a/src-ui/src/app/services/rest/group.service.ts +++ b/src-ui/src/app/services/rest/group.service.ts @@ -1,5 +1,4 @@ -import { HttpClient } from '@angular/common/http' -import { Injectable } from '@angular/core' +import { Injectable, inject } from '@angular/core' import { Observable, switchMap } from 'rxjs' import { Group } from 'src/app/data/group' import { PermissionsService } from '../permissions.service' @@ -9,11 +8,11 @@ import { AbstractNameFilterService } from './abstract-name-filter-service' providedIn: 'root', }) export class GroupService extends AbstractNameFilterService { - constructor( - http: HttpClient, - private permissionService: PermissionsService - ) { - super(http, 'groups') + private permissionService = inject(PermissionsService) + + constructor() { + super() + this.resourceName = 'groups' } update(o: Group): Observable { diff --git a/src-ui/src/app/services/rest/log.service.ts b/src-ui/src/app/services/rest/log.service.ts index d1a797eeb..a836fa555 100644 --- a/src-ui/src/app/services/rest/log.service.ts +++ b/src-ui/src/app/services/rest/log.service.ts @@ -1,5 +1,5 @@ import { HttpClient } from '@angular/common/http' -import { Injectable } from '@angular/core' +import { Injectable, inject } from '@angular/core' import { Observable } from 'rxjs' import { environment } from 'src/environments/environment' @@ -7,7 +7,7 @@ import { environment } from 'src/environments/environment' providedIn: 'root', }) export class LogService { - constructor(private http: HttpClient) {} + private http = inject(HttpClient) list(): Observable { return this.http.get(`${environment.apiBaseUrl}logs/`) diff --git a/src-ui/src/app/services/rest/mail-account.service.ts b/src-ui/src/app/services/rest/mail-account.service.ts index e946b1399..d4511e2d6 100644 --- a/src-ui/src/app/services/rest/mail-account.service.ts +++ b/src-ui/src/app/services/rest/mail-account.service.ts @@ -1,4 +1,3 @@ -import { HttpClient } from '@angular/common/http' import { Injectable } from '@angular/core' import { tap } from 'rxjs/operators' import { MailAccount } from 'src/app/data/mail-account' @@ -10,8 +9,9 @@ import { AbstractPaperlessService } from './abstract-paperless-service' export class MailAccountService extends AbstractPaperlessService { loading: boolean - constructor(http: HttpClient) { - super(http, 'mail_accounts') + constructor() { + super() + this.resourceName = 'mail_accounts' } private reload() { diff --git a/src-ui/src/app/services/rest/mail-rule.service.ts b/src-ui/src/app/services/rest/mail-rule.service.ts index 85644cc25..bb92107a9 100644 --- a/src-ui/src/app/services/rest/mail-rule.service.ts +++ b/src-ui/src/app/services/rest/mail-rule.service.ts @@ -1,4 +1,3 @@ -import { HttpClient } from '@angular/common/http' import { Injectable } from '@angular/core' import { tap } from 'rxjs/operators' import { MailRule } from 'src/app/data/mail-rule' @@ -10,8 +9,9 @@ import { AbstractPaperlessService } from './abstract-paperless-service' export class MailRuleService extends AbstractPaperlessService { loading: boolean - constructor(http: HttpClient) { - super(http, 'mail_rules') + constructor() { + super() + this.resourceName = 'mail_rules' } private reload() { diff --git a/src-ui/src/app/services/rest/remote-version.service.ts b/src-ui/src/app/services/rest/remote-version.service.ts index efed538ce..0c100fd6c 100644 --- a/src-ui/src/app/services/rest/remote-version.service.ts +++ b/src-ui/src/app/services/rest/remote-version.service.ts @@ -1,5 +1,5 @@ import { HttpClient } from '@angular/common/http' -import { Injectable } from '@angular/core' +import { Injectable, inject } from '@angular/core' import { Observable } from 'rxjs' import { environment } from 'src/environments/environment' @@ -12,7 +12,7 @@ export interface AppRemoteVersion { providedIn: 'root', }) export class RemoteVersionService { - constructor(private http: HttpClient) {} + private http = inject(HttpClient) public checkForUpdates(): Observable { return this.http.get( diff --git a/src-ui/src/app/services/rest/saved-view.service.ts b/src-ui/src/app/services/rest/saved-view.service.ts index ef794ae06..11ebb6398 100644 --- a/src-ui/src/app/services/rest/saved-view.service.ts +++ b/src-ui/src/app/services/rest/saved-view.service.ts @@ -1,5 +1,5 @@ import { HttpClient } from '@angular/common/http' -import { Injectable } from '@angular/core' +import { inject, Injectable } from '@angular/core' import { combineLatest, Observable } from 'rxjs' import { tap } from 'rxjs/operators' import { Results } from 'src/app/data/results' @@ -12,14 +12,15 @@ import { AbstractPaperlessService } from './abstract-paperless-service' providedIn: 'root', }) export class SavedViewService extends AbstractPaperlessService { + protected http: HttpClient + private settingsService = inject(SettingsService) + public loading: boolean = true private savedViews: SavedView[] = [] - constructor( - protected http: HttpClient, - private settingsService: SettingsService - ) { - super(http, 'saved_views') + constructor() { + super() + this.resourceName = 'saved_views' } public list( diff --git a/src-ui/src/app/services/rest/search.service.ts b/src-ui/src/app/services/rest/search.service.ts index aea852dd1..0e7a6ddba 100644 --- a/src-ui/src/app/services/rest/search.service.ts +++ b/src-ui/src/app/services/rest/search.service.ts @@ -1,5 +1,5 @@ import { HttpClient, HttpParams } from '@angular/common/http' -import { Injectable } from '@angular/core' +import { Injectable, inject } from '@angular/core' import { Observable } from 'rxjs' import { Correspondent } from 'src/app/data/correspondent' import { CustomField } from 'src/app/data/custom-field' @@ -37,12 +37,10 @@ export interface GlobalSearchResult { providedIn: 'root', }) export class SearchService { - public readonly searchResultObjectLimit: number = 3 // documents/views.py GlobalSearchView > OBJECT_LIMIT + private http = inject(HttpClient) + private settingsService = inject(SettingsService) - constructor( - private http: HttpClient, - private settingsService: SettingsService - ) {} + public readonly searchResultObjectLimit: number = 3 autocomplete(term: string): Observable { return this.http.get( diff --git a/src-ui/src/app/services/rest/share-link.service.ts b/src-ui/src/app/services/rest/share-link.service.ts index 72421752b..ec692e689 100644 --- a/src-ui/src/app/services/rest/share-link.service.ts +++ b/src-ui/src/app/services/rest/share-link.service.ts @@ -1,4 +1,3 @@ -import { HttpClient } from '@angular/common/http' import { Injectable } from '@angular/core' import { Observable } from 'rxjs' import { FileVersion, ShareLink } from 'src/app/data/share-link' @@ -8,8 +7,9 @@ import { AbstractNameFilterService } from './abstract-name-filter-service' providedIn: 'root', }) export class ShareLinkService extends AbstractNameFilterService { - constructor(http: HttpClient) { - super(http, 'share_links') + constructor() { + super() + this.resourceName = 'share_links' } getLinksForDocument(documentId: number): Observable { diff --git a/src-ui/src/app/services/rest/storage-path.service.ts b/src-ui/src/app/services/rest/storage-path.service.ts index 9dcde86bd..2446fa104 100644 --- a/src-ui/src/app/services/rest/storage-path.service.ts +++ b/src-ui/src/app/services/rest/storage-path.service.ts @@ -1,4 +1,3 @@ -import { HttpClient } from '@angular/common/http' import { Injectable } from '@angular/core' import { Observable } from 'rxjs' import { StoragePath } from 'src/app/data/storage-path' @@ -8,8 +7,9 @@ import { AbstractNameFilterService } from './abstract-name-filter-service' providedIn: 'root', }) export class StoragePathService extends AbstractNameFilterService { - constructor(http: HttpClient) { - super(http, 'storage_paths') + constructor() { + super() + this.resourceName = 'storage_paths' } public testPath(path: string, documentID: number): Observable { diff --git a/src-ui/src/app/services/rest/tag.service.ts b/src-ui/src/app/services/rest/tag.service.ts index 31aa7d7fd..36c62b7f1 100644 --- a/src-ui/src/app/services/rest/tag.service.ts +++ b/src-ui/src/app/services/rest/tag.service.ts @@ -1,4 +1,3 @@ -import { HttpClient } from '@angular/common/http' import { Injectable } from '@angular/core' import { Tag } from 'src/app/data/tag' import { AbstractNameFilterService } from './abstract-name-filter-service' @@ -7,7 +6,8 @@ import { AbstractNameFilterService } from './abstract-name-filter-service' providedIn: 'root', }) export class TagService extends AbstractNameFilterService { - constructor(http: HttpClient) { - super(http, 'tags') + constructor() { + super() + this.resourceName = 'tags' } } diff --git a/src-ui/src/app/services/rest/user.service.ts b/src-ui/src/app/services/rest/user.service.ts index ded7ae248..8e9b90db2 100644 --- a/src-ui/src/app/services/rest/user.service.ts +++ b/src-ui/src/app/services/rest/user.service.ts @@ -1,5 +1,4 @@ -import { HttpClient } from '@angular/common/http' -import { Injectable } from '@angular/core' +import { Injectable, inject } from '@angular/core' import { Observable, switchMap } from 'rxjs' import { User } from 'src/app/data/user' import { PermissionsService } from '../permissions.service' @@ -10,11 +9,11 @@ const endpoint = 'users' providedIn: 'root', }) export class UserService extends AbstractNameFilterService { - constructor( - http: HttpClient, - private permissionService: PermissionsService - ) { - super(http, endpoint) + private permissionService = inject(PermissionsService) + + constructor() { + super() + this.resourceName = endpoint } update(o: User): Observable { diff --git a/src-ui/src/app/services/rest/workflow.service.ts b/src-ui/src/app/services/rest/workflow.service.ts index 0b489bc67..ecf564f06 100644 --- a/src-ui/src/app/services/rest/workflow.service.ts +++ b/src-ui/src/app/services/rest/workflow.service.ts @@ -1,4 +1,3 @@ -import { HttpClient } from '@angular/common/http' import { Injectable } from '@angular/core' import { tap } from 'rxjs' import { Workflow } from 'src/app/data/workflow' @@ -10,8 +9,9 @@ import { AbstractPaperlessService } from './abstract-paperless-service' export class WorkflowService extends AbstractPaperlessService { loading: boolean - constructor(http: HttpClient) { - super(http, 'workflows') + constructor() { + super() + this.resourceName = 'workflows' } public reload() { diff --git a/src-ui/src/app/services/settings.service.ts b/src-ui/src/app/services/settings.service.ts index 5d9ab9802..64a2aba8a 100644 --- a/src-ui/src/app/services/settings.service.ts +++ b/src-ui/src/app/services/settings.service.ts @@ -1,8 +1,8 @@ -import { DOCUMENT } from '@angular/common' import { HttpClient } from '@angular/common/http' import { + DOCUMENT, EventEmitter, - Inject, + inject, Injectable, LOCALE_ID, Renderer2, @@ -268,6 +268,15 @@ const ISO_LANGUAGE_OPTION: LanguageOption = { providedIn: 'root', }) export class SettingsService { + private document = inject(DOCUMENT) + private cookieService = inject(CookieService) + private meta = inject(Meta) + private localeId = inject(LOCALE_ID) + protected http = inject(HttpClient) + private toastService = inject(ToastService) + private permissionsService = inject(PermissionsService) + private customFieldsService = inject(CustomFieldsService) + protected baseUrl: string = environment.apiBaseUrl + 'ui_settings/' private settings: Object = {} @@ -293,17 +302,9 @@ export class SettingsService { } public displayFieldsInit: EventEmitter = new EventEmitter() - constructor( - rendererFactory: RendererFactory2, - @Inject(DOCUMENT) private document, - private cookieService: CookieService, - private meta: Meta, - @Inject(LOCALE_ID) private localeId: string, - protected http: HttpClient, - private toastService: ToastService, - private permissionsService: PermissionsService, - private customFieldsService: CustomFieldsService - ) { + constructor() { + const rendererFactory = inject(RendererFactory2) + this._renderer = rendererFactory.createRenderer(null, null) } diff --git a/src-ui/src/app/services/system-status.service.ts b/src-ui/src/app/services/system-status.service.ts index a0755b45d..ec91109e8 100644 --- a/src-ui/src/app/services/system-status.service.ts +++ b/src-ui/src/app/services/system-status.service.ts @@ -1,5 +1,5 @@ import { HttpClient } from '@angular/common/http' -import { Injectable } from '@angular/core' +import { Injectable, inject } from '@angular/core' import { Observable } from 'rxjs' import { environment } from 'src/environments/environment' import { SystemStatus } from '../data/system-status' @@ -8,9 +8,9 @@ import { SystemStatus } from '../data/system-status' providedIn: 'root', }) export class SystemStatusService { - private endpoint = 'status' + private http = inject(HttpClient) - constructor(private http: HttpClient) {} + private endpoint = 'status' get(): Observable { return this.http.get( diff --git a/src-ui/src/app/services/tasks.service.ts b/src-ui/src/app/services/tasks.service.ts index 3ecfffe38..d3a5224a1 100644 --- a/src-ui/src/app/services/tasks.service.ts +++ b/src-ui/src/app/services/tasks.service.ts @@ -1,5 +1,5 @@ import { HttpClient } from '@angular/common/http' -import { Injectable } from '@angular/core' +import { Injectable, inject } from '@angular/core' import { Observable, Subject } from 'rxjs' import { first, takeUntil } from 'rxjs/operators' import { @@ -13,6 +13,8 @@ import { environment } from 'src/environments/environment' providedIn: 'root', }) export class TasksService { + private http = inject(HttpClient) + private baseUrl: string = environment.apiBaseUrl private endpoint: string = 'tasks' @@ -48,8 +50,6 @@ export class TasksService { return this.fileTasks.filter((t) => t.status == PaperlessTaskStatus.Failed) } - constructor(private http: HttpClient) {} - public reload() { if (this.loading) return this.loading = true diff --git a/src-ui/src/app/services/trash.service.ts b/src-ui/src/app/services/trash.service.ts index 6a8bbf1f0..7d608e518 100644 --- a/src-ui/src/app/services/trash.service.ts +++ b/src-ui/src/app/services/trash.service.ts @@ -1,5 +1,5 @@ import { HttpClient, HttpParams } from '@angular/common/http' -import { Injectable } from '@angular/core' +import { Injectable, inject } from '@angular/core' import { Observable } from 'rxjs' import { environment } from 'src/environments/environment' import { Document } from '../data/document' @@ -9,7 +9,7 @@ import { Results } from '../data/results' providedIn: 'root', }) export class TrashService { - constructor(private http: HttpClient) {} + private http = inject(HttpClient) public getTrash(page: number = 1): Observable> { const httpParams = new HttpParams().set('page', page.toString()) diff --git a/src-ui/src/app/services/upload-documents.service.ts b/src-ui/src/app/services/upload-documents.service.ts index 393d7c682..700e1e91a 100644 --- a/src-ui/src/app/services/upload-documents.service.ts +++ b/src-ui/src/app/services/upload-documents.service.ts @@ -1,5 +1,5 @@ import { HttpEventType } from '@angular/common/http' -import { Injectable } from '@angular/core' +import { Injectable, inject } from '@angular/core' import { Subscription } from 'rxjs' import { DocumentService } from './rest/document.service' import { @@ -11,12 +11,10 @@ import { providedIn: 'root', }) export class UploadDocumentsService { - private uploadSubscriptions: Array = [] + private documentService = inject(DocumentService) + private websocketStatusService = inject(WebsocketStatusService) - constructor( - private documentService: DocumentService, - private websocketStatusService: WebsocketStatusService - ) {} + private uploadSubscriptions: Array = [] public uploadFile(file: File) { let formData = new FormData() diff --git a/src-ui/src/app/services/websocket-status.service.ts b/src-ui/src/app/services/websocket-status.service.ts index 676d36b42..1809e96f7 100644 --- a/src-ui/src/app/services/websocket-status.service.ts +++ b/src-ui/src/app/services/websocket-status.service.ts @@ -1,4 +1,4 @@ -import { Injectable } from '@angular/core' +import { Injectable, inject } from '@angular/core' import { Subject } from 'rxjs' import { environment } from 'src/environments/environment' import { User } from '../data/user' @@ -93,7 +93,7 @@ export class FileStatus { providedIn: 'root', }) export class WebsocketStatusService { - constructor(private settingsService: SettingsService) {} + private settingsService = inject(SettingsService) private statusWebSocket: WebSocket diff --git a/src-ui/src/app/utils/ngb-date-parser-formatter.ts b/src-ui/src/app/utils/ngb-date-parser-formatter.ts index eb909baef..99be6d88a 100644 --- a/src-ui/src/app/utils/ngb-date-parser-formatter.ts +++ b/src-ui/src/app/utils/ngb-date-parser-formatter.ts @@ -1,4 +1,4 @@ -import { Injectable } from '@angular/core' +import { Injectable, inject } from '@angular/core' import { NgbDateParserFormatter, NgbDateStruct, @@ -7,11 +7,9 @@ import { SettingsService } from '../services/settings.service' @Injectable() export class LocalizedDateParserFormatter extends NgbDateParserFormatter { - private separatorRegExp: RegExp = /[\.,\/-]+/ + private settings = inject(SettingsService) - constructor(private settings: SettingsService) { - super() - } + private separatorRegExp: RegExp = /[\.,\/-]+/ private getDateInputFormat() { return this.settings.getLocalizedDateInputFormat() diff --git a/src-ui/src/styles.scss b/src-ui/src/styles.scss index a3f385ed5..109e7b38f 100644 --- a/src-ui/src/styles.scss +++ b/src-ui/src/styles.scss @@ -9,7 +9,7 @@ $form-file-button-hover-bg: var(--pngx-bg-alt); @import "node_modules/bootstrap/dist/css/bootstrap.css"; @include meta.load-css("theme"); -@import "~@ng-select/ng-select/themes/default.theme.css"; +@import "@ng-select/ng-select/themes/default.theme.css"; @include meta.load-css("print"); // re-created bootstrap styles diff --git a/src-ui/src/typings.d.ts b/src-ui/src/typings.d.ts deleted file mode 100644 index d827fa8d0..000000000 --- a/src-ui/src/typings.d.ts +++ /dev/null @@ -1,2 +0,0 @@ -// see https://github.com/VadimDez/ng2-pdf-viewer/pull/1161#issuecomment-2521857488 -type SetIterator = Iterator diff --git a/src-ui/tsconfig.json b/src-ui/tsconfig.json index e9835158c..80af2f277 100644 --- a/src-ui/tsconfig.json +++ b/src-ui/tsconfig.json @@ -5,10 +5,10 @@ "baseUrl": "./", "outDir": "./dist/out-tsc", "sourceMap": true, + "esModuleInterop": true, "declaration": false, - "downlevelIteration": true, "experimentalDecorators": true, - "moduleResolution": "node", + "moduleResolution": "bundler", "importHelpers": true, "target": "ES2022", "module": "es2020",