diff --git a/client/package-lock.json b/client/package-lock.json index 488aecb..3964a06 100644 --- a/client/package-lock.json +++ b/client/package-lock.json @@ -8,15 +8,15 @@ "name": "client", "version": "0.0.0", "dependencies": { - "@angular/animations": "^19.2.3", - "@angular/cdk": "^19.2.6", - "@angular/common": "^19.2.3", - "@angular/compiler": "^19.2.3", - "@angular/core": "^19.2.3", - "@angular/forms": "^19.2.3", - "@angular/platform-browser": "^19.2.3", - "@angular/platform-browser-dynamic": "^19.2.3", - "@angular/router": "^19.2.3", + "@angular/animations": "^19.2.6", + "@angular/cdk": "^19.2.9", + "@angular/common": "^19.2.6", + "@angular/compiler": "^19.2.6", + "@angular/core": "^19.2.6", + "@angular/forms": "^19.2.6", + "@angular/platform-browser": "^19.2.6", + "@angular/platform-browser-dynamic": "^19.2.6", + "@angular/router": "^19.2.6", "@fortawesome/fontawesome-free": "^6.7.2", "@microsoft/signalr": "^8.0.7", "bulma": "^1.0.3", @@ -28,23 +28,23 @@ "zone.js": "^0.15.0" }, "devDependencies": { - "@angular-eslint/builder": "19.2.1", - "@angular-eslint/eslint-plugin": "19.2.1", - "@angular-eslint/eslint-plugin-template": "19.2.1", - "@angular-eslint/schematics": "19.2.1", - "@angular-eslint/template-parser": "19.2.1", - "@angular/build": "^19.2.4", - "@angular/cli": "^19.2.4", - "@angular/compiler-cli": "^19.2.3", - "@angular/language-service": "^19.2.3", + "@angular-eslint/builder": "19.3.0", + "@angular-eslint/eslint-plugin": "19.3.0", + "@angular-eslint/eslint-plugin-template": "19.3.0", + "@angular-eslint/schematics": "19.3.0", + "@angular-eslint/template-parser": "19.3.0", + "@angular/build": "^19.2.7", + "@angular/cli": "^19.2.7", + "@angular/compiler-cli": "^19.2.6", + "@angular/language-service": "^19.2.6", "@types/file-saver": "^2.0.7", "@types/file-saver-es": "^2.0.3", - "@types/node": "^22.13.11", - "@typescript-eslint/eslint-plugin": "^8.27.0", - "@typescript-eslint/parser": "^8.27.0", - "eslint": "^9.23.0", + "@types/node": "^22.14.1", + "@typescript-eslint/eslint-plugin": "^8.29.1", + "@typescript-eslint/parser": "^8.29.1", + "eslint": "^9.24.0", "prettier": "^3.5.3", - "typescript": "5.8.2" + "typescript": "5.8.3" } }, "node_modules/@ampproject/remapping": { @@ -62,13 +62,13 @@ } }, "node_modules/@angular-devkit/architect": { - "version": "0.1902.4", - "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.1902.4.tgz", - "integrity": "sha512-YTLiJ7uVItZTAxRuSgASP0M5qILESWH8xGmfR+YWR1JiJem09DWEOpWeLdha1BFzUui5L+6j1btzh4FUHJOtAg==", + "version": "0.1902.7", + "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.1902.7.tgz", + "integrity": "sha512-XPKbesrGJ3qOHLcwb3y8X14NlBIwxnh9OvsfyqgBujByJq0LIg4CaU/GrX0Lo4RmX3UQBli668TjFgmIkMTL7Q==", "dev": true, "license": "MIT", "dependencies": { - "@angular-devkit/core": "19.2.4", + "@angular-devkit/core": "19.2.7", "rxjs": "7.8.1" }, "engines": { @@ -88,9 +88,9 @@ } }, "node_modules/@angular-devkit/core": { - "version": "19.2.4", - "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-19.2.4.tgz", - "integrity": "sha512-dL6AmCQsKh+CFVvO/jxX8qZpamVwt9r4iIo7fYcAI2+mTSDGxxBGWbS+onIfdPFuRp2HgKa+AT6WiHmRqu63AA==", + "version": "19.2.7", + "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-19.2.7.tgz", + "integrity": "sha512-WeX/7HuNooJ4UhvVdremj6it0cX3nreG0/5r3QfrQd5Tz3sCHnh/lO5TW31gHtSqVgPjBGmzSzsyZ1Mi0lI7FA==", "dev": true, "license": "MIT", "dependencies": { @@ -126,13 +126,13 @@ } }, "node_modules/@angular-devkit/schematics": { - "version": "19.2.4", - "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-19.2.4.tgz", - "integrity": "sha512-WaFe95ncm1A+QTlUHxQcFyGKIn67xgqGX7WCj8R0QlKOS0hLKx97SG4p19uwHlww0lmAcwk/QJP6G6sPL/CJ9w==", + "version": "19.2.7", + "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-19.2.7.tgz", + "integrity": "sha512-kE9W1MqfasumAYVD8egMHefyxmA93KfBYrWqcepZaFPQTPwg1AGTlID7YLHToLQquw4Iqen6Xv8Bzfv05IZ+tw==", "dev": true, "license": "MIT", "dependencies": { - "@angular-devkit/core": "19.2.4", + "@angular-devkit/core": "19.2.7", "jsonc-parser": "3.3.1", "magic-string": "0.30.17", "ora": "5.4.1", @@ -155,9 +155,9 @@ } }, "node_modules/@angular-eslint/builder": { - "version": "19.2.1", - "resolved": "https://registry.npmjs.org/@angular-eslint/builder/-/builder-19.2.1.tgz", - "integrity": "sha512-iBs/4ZpjyISBFYU+dbfJOJi4Efh7U1hXPgQwaebU9r9Y4dMdcTw7MsaG9MfJX1gQJkIeXasYTxfSfuqoMFl9nQ==", + "version": "19.3.0", + "resolved": "https://registry.npmjs.org/@angular-eslint/builder/-/builder-19.3.0.tgz", + "integrity": "sha512-j9xNrzZJq29ONSG6EaeQHve0Squkm6u6Dm8fZgWP7crTFOrtLXn7Wxgxuyl9eddpbWY1Ov1gjFuwBVnxIdyAqg==", "dev": true, "license": "MIT", "dependencies": { @@ -170,21 +170,21 @@ } }, "node_modules/@angular-eslint/bundled-angular-compiler": { - "version": "19.2.1", - "resolved": "https://registry.npmjs.org/@angular-eslint/bundled-angular-compiler/-/bundled-angular-compiler-19.2.1.tgz", - "integrity": "sha512-8/NY4OCpiRDSOaqnpIOW7kMirqqsTY1U751iuMH0z9gQImYZWubMLOI0tsLFWmz06pKpgiDZcjD2X9TK2b4Igg==", + "version": "19.3.0", + "resolved": "https://registry.npmjs.org/@angular-eslint/bundled-angular-compiler/-/bundled-angular-compiler-19.3.0.tgz", + "integrity": "sha512-63Zci4pvnUR1iSkikFlNbShF1tO5HOarYd8fvNfmOZwFfZ/1T3j3bCy9YbE+aM5SYrWqPaPP/OcwZ3wJ8WNvqA==", "dev": true, "license": "MIT" }, "node_modules/@angular-eslint/eslint-plugin": { - "version": "19.2.1", - "resolved": "https://registry.npmjs.org/@angular-eslint/eslint-plugin/-/eslint-plugin-19.2.1.tgz", - "integrity": "sha512-wCjyH5cJb4fBchEnt3L6dQ6syaLHD+xeHCSynD/Lw3K6BcVEnFa+82SfSscgXtYLRPHlkK5CmYYs3AlALhA+/w==", + "version": "19.3.0", + "resolved": "https://registry.npmjs.org/@angular-eslint/eslint-plugin/-/eslint-plugin-19.3.0.tgz", + "integrity": "sha512-nBLslLI20KnVbqlfNW7GcnI9R6cYCvRGjOE2QYhzxM316ciAQ62tvQuXP9ZVnRBLSKDAVnMeC0eTq9O4ysrxrQ==", "dev": true, "license": "MIT", "dependencies": { - "@angular-eslint/bundled-angular-compiler": "19.2.1", - "@angular-eslint/utils": "19.2.1" + "@angular-eslint/bundled-angular-compiler": "19.3.0", + "@angular-eslint/utils": "19.3.0" }, "peerDependencies": { "@typescript-eslint/utils": "^7.11.0 || ^8.0.0", @@ -193,14 +193,14 @@ } }, "node_modules/@angular-eslint/eslint-plugin-template": { - "version": "19.2.1", - "resolved": "https://registry.npmjs.org/@angular-eslint/eslint-plugin-template/-/eslint-plugin-template-19.2.1.tgz", - "integrity": "sha512-yBGut4PedTkZcGbm1sthQ671CXERkC72eXTaZlMRhKNQDf3R6zEVc60q5DQZoEIzvgeIbaZdWhZgsCLwlhfGrQ==", + "version": "19.3.0", + "resolved": "https://registry.npmjs.org/@angular-eslint/eslint-plugin-template/-/eslint-plugin-template-19.3.0.tgz", + "integrity": "sha512-WyouppTpOYut+wvv13wlqqZ8EHoDrCZxNfGKuEUYK1BPmQlTB8EIZfQH4iR1rFVS28Rw+XRIiXo1x3oC0SOfnA==", "dev": true, "license": "MIT", "dependencies": { - "@angular-eslint/bundled-angular-compiler": "19.2.1", - "@angular-eslint/utils": "19.2.1", + "@angular-eslint/bundled-angular-compiler": "19.3.0", + "@angular-eslint/utils": "19.3.0", "aria-query": "5.3.2", "axobject-query": "4.1.0" }, @@ -212,29 +212,29 @@ } }, "node_modules/@angular-eslint/schematics": { - "version": "19.2.1", - "resolved": "https://registry.npmjs.org/@angular-eslint/schematics/-/schematics-19.2.1.tgz", - "integrity": "sha512-rfIHIIiXfsShwNbrVoUVu2ZzHkXghuJj8L9pXkdy92DoYSof0lqGURoPb7hv4wvZXGB3yo6S17cbw3IkeYJkzA==", + "version": "19.3.0", + "resolved": "https://registry.npmjs.org/@angular-eslint/schematics/-/schematics-19.3.0.tgz", + "integrity": "sha512-Wl5sFQ4t84LUb8mJ2iVfhYFhtF55IugXu7rRhPHtgIu9Ty5s1v3HGUx4LKv51m2kWhPPeFOTmjeBv1APzFlmnQ==", "dev": true, "license": "MIT", "dependencies": { "@angular-devkit/core": ">= 19.0.0 < 20.0.0", "@angular-devkit/schematics": ">= 19.0.0 < 20.0.0", - "@angular-eslint/eslint-plugin": "19.2.1", - "@angular-eslint/eslint-plugin-template": "19.2.1", + "@angular-eslint/eslint-plugin": "19.3.0", + "@angular-eslint/eslint-plugin-template": "19.3.0", "ignore": "7.0.3", "semver": "7.7.1", "strip-json-comments": "3.1.1" } }, "node_modules/@angular-eslint/template-parser": { - "version": "19.2.1", - "resolved": "https://registry.npmjs.org/@angular-eslint/template-parser/-/template-parser-19.2.1.tgz", - "integrity": "sha512-fU16NUh8nY02zdkHRsAlGI9ruppsE1ko1Z1PIyB3oofYt4rCKsXb8yXWbXWn7qCjNPVqv4+oLx0BwhJQZwEX8w==", + "version": "19.3.0", + "resolved": "https://registry.npmjs.org/@angular-eslint/template-parser/-/template-parser-19.3.0.tgz", + "integrity": "sha512-VxMNgsHXMWbbmZeBuBX5i8pzsSSEaoACVpaE+j8Muk60Am4Mxc0PytJm4n3znBSvI3B7Kq2+vStSRYPkOER4lA==", "dev": true, "license": "MIT", "dependencies": { - "@angular-eslint/bundled-angular-compiler": "19.2.1", + "@angular-eslint/bundled-angular-compiler": "19.3.0", "eslint-scope": "^8.0.2" }, "peerDependencies": { @@ -243,13 +243,13 @@ } }, "node_modules/@angular-eslint/utils": { - "version": "19.2.1", - "resolved": "https://registry.npmjs.org/@angular-eslint/utils/-/utils-19.2.1.tgz", - "integrity": "sha512-TRIOtlDMbz1PqurLXPKMzSUl2iSs02c185g4EeOzTDX93sDvvVDLRj18jZ0IVcjQv5Vs21JK2KsKV/WdGe1OxA==", + "version": "19.3.0", + "resolved": "https://registry.npmjs.org/@angular-eslint/utils/-/utils-19.3.0.tgz", + "integrity": "sha512-ovvbQh96FIJfepHqLCMdKFkPXr3EbcvYc9kMj9hZyIxs/9/VxwPH7x25mMs4VsL6rXVgH2FgG5kR38UZlcTNNw==", "dev": true, "license": "MIT", "dependencies": { - "@angular-eslint/bundled-angular-compiler": "19.2.1" + "@angular-eslint/bundled-angular-compiler": "19.3.0" }, "peerDependencies": { "@typescript-eslint/utils": "^7.11.0 || ^8.0.0", @@ -258,9 +258,9 @@ } }, "node_modules/@angular/animations": { - "version": "19.2.3", - "resolved": "https://registry.npmjs.org/@angular/animations/-/animations-19.2.3.tgz", - "integrity": "sha512-HQexOmwEJFX3sHLspOCi7dVOdPW5Ad4jH6tJsf+zABkF0GjgIVf4jewe1uE5ZLKgoflr9f9vpcpy39IWl00kWw==", + "version": "19.2.6", + "resolved": "https://registry.npmjs.org/@angular/animations/-/animations-19.2.6.tgz", + "integrity": "sha512-0Ei7pKXpq0eoijakRB+TQCh2EB02ReYUzRkhdw5kbQLOlTftBWWnMNn2qRfKU6cra+RyRXU8c34ZkEw6K7hZAw==", "license": "MIT", "dependencies": { "tslib": "^2.3.0" @@ -269,25 +269,26 @@ "node": "^18.19.1 || ^20.11.1 || >=22.0.0" }, "peerDependencies": { - "@angular/core": "19.2.3" + "@angular/common": "19.2.6", + "@angular/core": "19.2.6" } }, "node_modules/@angular/build": { - "version": "19.2.4", - "resolved": "https://registry.npmjs.org/@angular/build/-/build-19.2.4.tgz", - "integrity": "sha512-poCXvmwKri3snWa9zVJ2sW7wyJatZjkwnH6GUBdJrM2dXRQ+LYLk/oXqEjlSRBYNna7P1ZcKNqBbzu0/SnnngA==", + "version": "19.2.7", + "resolved": "https://registry.npmjs.org/@angular/build/-/build-19.2.7.tgz", + "integrity": "sha512-a91gbY7jxXZinUXC5O7I4urUV2Omv4hI2zOY4ufq2tvTt8iRjU/0SbHdIU2xFvon8CI/9HyB1WBl0JuDjlJMfg==", "dev": true, "license": "MIT", "dependencies": { "@ampproject/remapping": "2.3.0", - "@angular-devkit/architect": "0.1902.4", + "@angular-devkit/architect": "0.1902.7", "@babel/core": "7.26.10", "@babel/helper-annotate-as-pure": "7.25.9", "@babel/helper-split-export-declaration": "7.24.7", "@babel/plugin-syntax-import-attributes": "7.26.0", "@inquirer/confirm": "5.1.6", "@vitejs/plugin-basic-ssl": "1.2.0", - "beasties": "0.2.0", + "beasties": "0.3.2", "browserslist": "^4.23.0", "esbuild": "0.25.1", "fast-glob": "3.3.3", @@ -303,7 +304,7 @@ "sass": "1.85.0", "semver": "7.7.1", "source-map-support": "0.5.21", - "vite": "6.2.0", + "vite": "6.2.5", "watchpack": "2.4.2" }, "engines": { @@ -320,7 +321,7 @@ "@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.4", + "@angular/ssr": "^19.2.7", "karma": "^6.4.0", "less": "^4.2.0", "ng-packagr": "^19.0.0 || ^19.2.0-next.0", @@ -359,16 +360,14 @@ } }, "node_modules/@angular/cdk": { - "version": "19.2.6", - "resolved": "https://registry.npmjs.org/@angular/cdk/-/cdk-19.2.6.tgz", - "integrity": "sha512-AneN/NeAYU4+AwzicTwtYE9CkMcWA0cAJ41SNfSyoHaaHNXSkryzwSmTYS3FO+taqd7OGnBePeWJbW2uJXcvfA==", + "version": "19.2.9", + "resolved": "https://registry.npmjs.org/@angular/cdk/-/cdk-19.2.9.tgz", + "integrity": "sha512-4If3BjWQPwW/xqRUCL7Mx0dHS0SuZY7Tq/Ocf7liwYTYCmSv8Ew7NqaiPA4RS3FnyUJcZW/UAd231uWI/ZHChg==", "license": "MIT", "dependencies": { + "parse5": "^7.1.2", "tslib": "^2.3.0" }, - "optionalDependencies": { - "parse5": "^7.1.2" - }, "peerDependencies": { "@angular/common": "^19.0.0 || ^20.0.0", "@angular/core": "^19.0.0 || ^20.0.0", @@ -376,18 +375,18 @@ } }, "node_modules/@angular/cli": { - "version": "19.2.4", - "resolved": "https://registry.npmjs.org/@angular/cli/-/cli-19.2.4.tgz", - "integrity": "sha512-YmZYrxdGBwSZsrnpS6vr9gQ8+PrZHzwyYW/3jU2NRAMtl0ZlipDyfpLIDgrfqYPeumzr7+SKtJYVvlsMnjkN4g==", + "version": "19.2.7", + "resolved": "https://registry.npmjs.org/@angular/cli/-/cli-19.2.7.tgz", + "integrity": "sha512-ZCLAXIm+ObxGZsO3QfVdrEoa/PV/WIAs7ZT4ejgVNXLq8OVpPXl69cYrFmVdv/OZTkkdxthGR02kn57DQ0FjYg==", "dev": true, "license": "MIT", "dependencies": { - "@angular-devkit/architect": "0.1902.4", - "@angular-devkit/core": "19.2.4", - "@angular-devkit/schematics": "19.2.4", + "@angular-devkit/architect": "0.1902.7", + "@angular-devkit/core": "19.2.7", + "@angular-devkit/schematics": "19.2.7", "@inquirer/prompts": "7.3.2", "@listr2/prompt-adapter-inquirer": "2.0.18", - "@schematics/angular": "19.2.4", + "@schematics/angular": "19.2.7", "@yarnpkg/lockfile": "1.1.0", "ini": "5.0.0", "jsonc-parser": "3.3.1", @@ -410,9 +409,9 @@ } }, "node_modules/@angular/common": { - "version": "19.2.3", - "resolved": "https://registry.npmjs.org/@angular/common/-/common-19.2.3.tgz", - "integrity": "sha512-cYOMRXFb6Sjtg9BI3bE/Ave+xU234jQmHYj7hBxr3MiqRSVJL4niy10KiA/Jiz6y76V5QfZfS+0aE65VuoqAvg==", + "version": "19.2.6", + "resolved": "https://registry.npmjs.org/@angular/common/-/common-19.2.6.tgz", + "integrity": "sha512-kqqjLwDUTpAv4m39AvlDFJhrxmBqblgzvXLm82F8UQ+505aleYpq/8P3tcfgJCRSCWZ1HXWki+JPHkdnHvhy0A==", "license": "MIT", "dependencies": { "tslib": "^2.3.0" @@ -421,14 +420,14 @@ "node": "^18.19.1 || ^20.11.1 || >=22.0.0" }, "peerDependencies": { - "@angular/core": "19.2.3", + "@angular/core": "19.2.6", "rxjs": "^6.5.3 || ^7.4.0" } }, "node_modules/@angular/compiler": { - "version": "19.2.3", - "resolved": "https://registry.npmjs.org/@angular/compiler/-/compiler-19.2.3.tgz", - "integrity": "sha512-TL/JIU7vzSWD+IrMq2PAiHZi7IUFSRhdHo8q6/WuZ8SQmbuXCK2pJvHZpTtUdLswdPeD/UVhkhTAhQzEyEdZVg==", + "version": "19.2.6", + "resolved": "https://registry.npmjs.org/@angular/compiler/-/compiler-19.2.6.tgz", + "integrity": "sha512-VivxKYyr3UjYGVrRbWRhBbOaKknxtwE+DVm7t5OhiND51eXyW+ZytdXcUwoUNCE6JGxhfP8XPujwJ9zGFklUug==", "license": "MIT", "dependencies": { "tslib": "^2.3.0" @@ -438,9 +437,9 @@ } }, "node_modules/@angular/compiler-cli": { - "version": "19.2.3", - "resolved": "https://registry.npmjs.org/@angular/compiler-cli/-/compiler-cli-19.2.3.tgz", - "integrity": "sha512-ePh/7A6eEDAyfVn8QgLcAvrxhXBAf6mTqB/3+HwQeXLaka1gtN6xvZ6cjLEegP4s6kcYGhdfdLwzCcy0kjsY5g==", + "version": "19.2.6", + "resolved": "https://registry.npmjs.org/@angular/compiler-cli/-/compiler-cli-19.2.6.tgz", + "integrity": "sha512-25ea4587AHlcXDjz7OJ0kGRcGLKZNM6NQbORkLgL0iqvvnrGrOrqqBnO8Fq1zwigb27RDGFtHzkOZs0wSpKHuA==", "dev": true, "license": "MIT", "dependencies": { @@ -462,7 +461,7 @@ "node": "^18.19.1 || ^20.11.1 || >=22.0.0" }, "peerDependencies": { - "@angular/compiler": "19.2.3", + "@angular/compiler": "19.2.6", "typescript": ">=5.5 <5.9" } }, @@ -515,9 +514,9 @@ } }, "node_modules/@angular/core": { - "version": "19.2.3", - "resolved": "https://registry.npmjs.org/@angular/core/-/core-19.2.3.tgz", - "integrity": "sha512-uNDbQBDWdAfL8JhgG2l9eTEbikovZ+SthLUKERyR4fL7AVGSx85LjNySRuq4WAL4eiD1cRN1UUgu8o+WKqF/ow==", + "version": "19.2.6", + "resolved": "https://registry.npmjs.org/@angular/core/-/core-19.2.6.tgz", + "integrity": "sha512-tmtdONYMg3PvhuCUlTHX17P7MZTLrbDNWpiTyZNRGDbRzQqc5fxK8IrZJXm7TWxx8imDrBZn+wvwCYNDmMD81g==", "license": "MIT", "dependencies": { "tslib": "^2.3.0" @@ -531,9 +530,9 @@ } }, "node_modules/@angular/forms": { - "version": "19.2.3", - "resolved": "https://registry.npmjs.org/@angular/forms/-/forms-19.2.3.tgz", - "integrity": "sha512-JEgNKiZd3taYBg9lsMvoana5cv1QGke8xkuryc9zesHPJjhw9QHllmDPOW2HyUuwPqXZ/YkHiuCMOk+4qPjsAw==", + "version": "19.2.6", + "resolved": "https://registry.npmjs.org/@angular/forms/-/forms-19.2.6.tgz", + "integrity": "sha512-cacGuc8MXe0Am3dEaDvGYrUwUTGBWecWIA1xpGXWj7mjwLf+FhLFIPc6LfLgiQyGGAYaRjyEaZ3HGTqefuI8lQ==", "license": "MIT", "dependencies": { "tslib": "^2.3.0" @@ -542,16 +541,16 @@ "node": "^18.19.1 || ^20.11.1 || >=22.0.0" }, "peerDependencies": { - "@angular/common": "19.2.3", - "@angular/core": "19.2.3", - "@angular/platform-browser": "19.2.3", + "@angular/common": "19.2.6", + "@angular/core": "19.2.6", + "@angular/platform-browser": "19.2.6", "rxjs": "^6.5.3 || ^7.4.0" } }, "node_modules/@angular/language-service": { - "version": "19.2.3", - "resolved": "https://registry.npmjs.org/@angular/language-service/-/language-service-19.2.3.tgz", - "integrity": "sha512-qq54VhRTk8jxnqXN6Q4wK1W7ewSkD0kdhii0Sif25gbkNvfDfqd1PjtnojelG81sN8XhBeMBcDhtbmEQX4nqHg==", + "version": "19.2.6", + "resolved": "https://registry.npmjs.org/@angular/language-service/-/language-service-19.2.6.tgz", + "integrity": "sha512-8ilcY4g2E0jt/IYEmmzD7RYFSMvLKiuh1aSLkpOYyKUSM9w2pK2CGZ1tldLAUfK9wuWHGCR24LDMTxRpZzt+OQ==", "dev": true, "license": "MIT", "engines": { @@ -559,9 +558,9 @@ } }, "node_modules/@angular/platform-browser": { - "version": "19.2.3", - "resolved": "https://registry.npmjs.org/@angular/platform-browser/-/platform-browser-19.2.3.tgz", - "integrity": "sha512-bz5mvUkCS8SxaMInjPgi/2dD7vpWkZePQesvr/bBRNQbYSE4cGTbovXcVl3X5hIxs5JoC6Het0lS2IxDq7j6qg==", + "version": "19.2.6", + "resolved": "https://registry.npmjs.org/@angular/platform-browser/-/platform-browser-19.2.6.tgz", + "integrity": "sha512-FfI642EbUU4RPu+zg2kPvlLCREhwzStgXFr7K4hfwCP+K9FPtgkY1Luw01mhqwySHfzj0oU0C1njZIBX66JBmw==", "license": "MIT", "dependencies": { "tslib": "^2.3.0" @@ -570,9 +569,9 @@ "node": "^18.19.1 || ^20.11.1 || >=22.0.0" }, "peerDependencies": { - "@angular/animations": "19.2.3", - "@angular/common": "19.2.3", - "@angular/core": "19.2.3" + "@angular/animations": "19.2.6", + "@angular/common": "19.2.6", + "@angular/core": "19.2.6" }, "peerDependenciesMeta": { "@angular/animations": { @@ -581,9 +580,9 @@ } }, "node_modules/@angular/platform-browser-dynamic": { - "version": "19.2.3", - "resolved": "https://registry.npmjs.org/@angular/platform-browser-dynamic/-/platform-browser-dynamic-19.2.3.tgz", - "integrity": "sha512-PHmmtdGxSfe9HL8xR4g3PspnEaPqTEOGyzNviAHugfkZCgXCdSbYs36d3i0nPwhExMAeuIVXbbJyouDn2kyeOw==", + "version": "19.2.6", + "resolved": "https://registry.npmjs.org/@angular/platform-browser-dynamic/-/platform-browser-dynamic-19.2.6.tgz", + "integrity": "sha512-6Jd0SPMkAauAKz1KlVFfDX5wDXGo0K2aK/3j+oUQ/dKvPBFTXIfyJPjPKOSIsuzm96cyo8GECP6SGYlGdaOEJA==", "license": "MIT", "dependencies": { "tslib": "^2.3.0" @@ -592,16 +591,16 @@ "node": "^18.19.1 || ^20.11.1 || >=22.0.0" }, "peerDependencies": { - "@angular/common": "19.2.3", - "@angular/compiler": "19.2.3", - "@angular/core": "19.2.3", - "@angular/platform-browser": "19.2.3" + "@angular/common": "19.2.6", + "@angular/compiler": "19.2.6", + "@angular/core": "19.2.6", + "@angular/platform-browser": "19.2.6" } }, "node_modules/@angular/router": { - "version": "19.2.3", - "resolved": "https://registry.npmjs.org/@angular/router/-/router-19.2.3.tgz", - "integrity": "sha512-yYVMT7CceKqE+fBXxkhkAqEQUEdY/BHtLQr1vP9rEnAf30vwKghDEresugfegY6Ch4IGKTBtDG/QGmxWszgUAQ==", + "version": "19.2.6", + "resolved": "https://registry.npmjs.org/@angular/router/-/router-19.2.6.tgz", + "integrity": "sha512-8GqQinEd2Merh1RrUwmPW0EI/1CSwTL6F1xo4tAidqGBIIS22XyjtRb4mGkhhG2a8e7lEnrbl72RmuTjgThmeA==", "license": "MIT", "dependencies": { "tslib": "^2.3.0" @@ -610,9 +609,9 @@ "node": "^18.19.1 || ^20.11.1 || >=22.0.0" }, "peerDependencies": { - "@angular/common": "19.2.3", - "@angular/core": "19.2.3", - "@angular/platform-browser": "19.2.3", + "@angular/common": "19.2.6", + "@angular/core": "19.2.6", + "@angular/platform-browser": "19.2.6", "rxjs": "^6.5.3 || ^7.4.0" } }, @@ -1380,9 +1379,9 @@ } }, "node_modules/@eslint/config-array": { - "version": "0.19.2", - "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.19.2.tgz", - "integrity": "sha512-GNKqxfHG2ySmJOBSHg7LxeUx4xpuCoFjacmlCoYWEbaPXLwvfIjixRI12xCQZeULksQb23uiA8F40w5TojpV7w==", + "version": "0.20.0", + "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.20.0.tgz", + "integrity": "sha512-fxlS1kkIjx8+vy2SjuCB94q3htSNrufYTXubwiBFeaQHbH6Ipi43gFJq2zCMt6PHhImH3Xmr0NksKDvchWlpQQ==", "dev": true, "license": "Apache-2.0", "dependencies": { @@ -1537,9 +1536,9 @@ } }, "node_modules/@eslint/js": { - "version": "9.23.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.23.0.tgz", - "integrity": "sha512-35MJ8vCPU0ZMxo7zfev2pypqTwWTofFZO6m4KAtdoFhRpLJUpHTZZ+KB3C7Hb1d7bULYwO4lJXGCi5Se+8OMbw==", + "version": "9.24.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.24.0.tgz", + "integrity": "sha512-uIY/y3z0uvOGX8cp1C2fiC4+ZmBhp6yZWkojtHL1YEMnRt1Y63HB9TM17proGEmeG7HeUY+UP36F0aknKYTpYA==", "dev": true, "license": "MIT", "engines": { @@ -3515,14 +3514,14 @@ ] }, "node_modules/@schematics/angular": { - "version": "19.2.4", - "resolved": "https://registry.npmjs.org/@schematics/angular/-/angular-19.2.4.tgz", - "integrity": "sha512-P7fphIPbqHHYRVRPiFl7RAHYPYhINGSUYOXrcThVBBsgKQBX18oNdUWvhZA6ylwK/9T21XB20VyLjNy0d78H1Q==", + "version": "19.2.7", + "resolved": "https://registry.npmjs.org/@schematics/angular/-/angular-19.2.7.tgz", + "integrity": "sha512-q1xbQYLG/JR0P0/jma3sUUWubw/6859WC5Y/+l2xGEvIqtoMKBYBzN4Nrud8rdLVEFfIDNEIbKQ4Rwr/JemO3g==", "dev": true, "license": "MIT", "dependencies": { - "@angular-devkit/core": "19.2.4", - "@angular-devkit/schematics": "19.2.4", + "@angular-devkit/core": "19.2.7", + "@angular-devkit/schematics": "19.2.7", "jsonc-parser": "3.3.1" }, "engines": { @@ -3664,27 +3663,27 @@ "license": "MIT" }, "node_modules/@types/node": { - "version": "22.13.11", - "resolved": "https://registry.npmjs.org/@types/node/-/node-22.13.11.tgz", - "integrity": "sha512-iEUCUJoU0i3VnrCmgoWCXttklWcvoCIx4jzcP22fioIVSdTmjgoEvmAO/QPw6TcS9k5FrNgn4w7q5lGOd1CT5g==", + "version": "22.14.1", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.14.1.tgz", + "integrity": "sha512-u0HuPQwe/dHrItgHHpmw3N2fYCR6x4ivMNbPHRkBVP4CvN+kiRrKHWk3i8tXiO/joPwXLMYvF9TTF0eqgHIuOw==", "dev": true, "license": "MIT", "dependencies": { - "undici-types": "~6.20.0" + "undici-types": "~6.21.0" } }, "node_modules/@typescript-eslint/eslint-plugin": { - "version": "8.27.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.27.0.tgz", - "integrity": "sha512-4henw4zkePi5p252c8ncBLzLce52SEUz2Ebj8faDnuUXz2UuHEONYcJ+G0oaCF+bYCWVZtrGzq3FD7YXetmnSA==", + "version": "8.29.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.29.1.tgz", + "integrity": "sha512-ba0rr4Wfvg23vERs3eB+P3lfj2E+2g3lhWcCVukUuhtcdUx5lSIFZlGFEBHKr+3zizDa/TvZTptdNHVZWAkSBg==", "dev": true, "license": "MIT", "dependencies": { "@eslint-community/regexpp": "^4.10.0", - "@typescript-eslint/scope-manager": "8.27.0", - "@typescript-eslint/type-utils": "8.27.0", - "@typescript-eslint/utils": "8.27.0", - "@typescript-eslint/visitor-keys": "8.27.0", + "@typescript-eslint/scope-manager": "8.29.1", + "@typescript-eslint/type-utils": "8.29.1", + "@typescript-eslint/utils": "8.29.1", + "@typescript-eslint/visitor-keys": "8.29.1", "graphemer": "^1.4.0", "ignore": "^5.3.1", "natural-compare": "^1.4.0", @@ -3714,16 +3713,16 @@ } }, "node_modules/@typescript-eslint/parser": { - "version": "8.27.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.27.0.tgz", - "integrity": "sha512-XGwIabPallYipmcOk45DpsBSgLC64A0yvdAkrwEzwZ2viqGqRUJ8eEYoPz0CWnutgAFbNMPdsGGvzjSmcWVlEA==", + "version": "8.29.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.29.1.tgz", + "integrity": "sha512-zczrHVEqEaTwh12gWBIJWj8nx+ayDcCJs06yoNMY0kwjMWDM6+kppljY+BxWI06d2Ja+h4+WdufDcwMnnMEWmg==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/scope-manager": "8.27.0", - "@typescript-eslint/types": "8.27.0", - "@typescript-eslint/typescript-estree": "8.27.0", - "@typescript-eslint/visitor-keys": "8.27.0", + "@typescript-eslint/scope-manager": "8.29.1", + "@typescript-eslint/types": "8.29.1", + "@typescript-eslint/typescript-estree": "8.29.1", + "@typescript-eslint/visitor-keys": "8.29.1", "debug": "^4.3.4" }, "engines": { @@ -3739,14 +3738,14 @@ } }, "node_modules/@typescript-eslint/scope-manager": { - "version": "8.27.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.27.0.tgz", - "integrity": "sha512-8oI9GwPMQmBryaaxG1tOZdxXVeMDte6NyJA4i7/TWa4fBwgnAXYlIQP+uYOeqAaLJ2JRxlG9CAyL+C+YE9Xknw==", + "version": "8.29.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.29.1.tgz", + "integrity": "sha512-2nggXGX5F3YrsGN08pw4XpMLO1Rgtnn4AzTegC2MDesv6q3QaTU5yU7IbS1tf1IwCR0Hv/1EFygLn9ms6LIpDA==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.27.0", - "@typescript-eslint/visitor-keys": "8.27.0" + "@typescript-eslint/types": "8.29.1", + "@typescript-eslint/visitor-keys": "8.29.1" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -3757,14 +3756,14 @@ } }, "node_modules/@typescript-eslint/type-utils": { - "version": "8.27.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.27.0.tgz", - "integrity": "sha512-wVArTVcz1oJOIEJxui/nRhV0TXzD/zMSOYi/ggCfNq78EIszddXcJb7r4RCp/oBrjt8n9A0BSxRMKxHftpDxDA==", + "version": "8.29.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.29.1.tgz", + "integrity": "sha512-DkDUSDwZVCYN71xA4wzySqqcZsHKic53A4BLqmrWFFpOpNSoxX233lwGu/2135ymTCR04PoKiEEEvN1gFYg4Tw==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/typescript-estree": "8.27.0", - "@typescript-eslint/utils": "8.27.0", + "@typescript-eslint/typescript-estree": "8.29.1", + "@typescript-eslint/utils": "8.29.1", "debug": "^4.3.4", "ts-api-utils": "^2.0.1" }, @@ -3781,9 +3780,9 @@ } }, "node_modules/@typescript-eslint/types": { - "version": "8.27.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.27.0.tgz", - "integrity": "sha512-/6cp9yL72yUHAYq9g6DsAU+vVfvQmd1a8KyA81uvfDE21O2DwQ/qxlM4AR8TSdAu+kJLBDrEHKC5/W2/nxsY0A==", + "version": "8.29.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.29.1.tgz", + "integrity": "sha512-VT7T1PuJF1hpYC3AGm2rCgJBjHL3nc+A/bhOp9sGMKfi5v0WufsX/sHCFBfNTx2F+zA6qBc/PD0/kLRLjdt8mQ==", "dev": true, "license": "MIT", "engines": { @@ -3795,14 +3794,14 @@ } }, "node_modules/@typescript-eslint/typescript-estree": { - "version": "8.27.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.27.0.tgz", - "integrity": "sha512-BnKq8cqPVoMw71O38a1tEb6iebEgGA80icSxW7g+kndx0o6ot6696HjG7NdgfuAVmVEtwXUr3L8R9ZuVjoQL6A==", + "version": "8.29.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.29.1.tgz", + "integrity": "sha512-l1enRoSaUkQxOQnbi0KPUtqeZkSiFlqrx9/3ns2rEDhGKfTa+88RmXqedC1zmVTOWrLc2e6DEJrTA51C9iLH5g==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.27.0", - "@typescript-eslint/visitor-keys": "8.27.0", + "@typescript-eslint/types": "8.29.1", + "@typescript-eslint/visitor-keys": "8.29.1", "debug": "^4.3.4", "fast-glob": "^3.3.2", "is-glob": "^4.0.3", @@ -3822,16 +3821,16 @@ } }, "node_modules/@typescript-eslint/utils": { - "version": "8.27.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.27.0.tgz", - "integrity": "sha512-njkodcwH1yvmo31YWgRHNb/x1Xhhq4/m81PhtvmRngD8iHPehxffz1SNCO+kwaePhATC+kOa/ggmvPoPza5i0Q==", + "version": "8.29.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.29.1.tgz", + "integrity": "sha512-QAkFEbytSaB8wnmB+DflhUPz6CLbFWE2SnSCrRMEa+KnXIzDYbpsn++1HGvnfAsUY44doDXmvRkO5shlM/3UfA==", "dev": true, "license": "MIT", "dependencies": { "@eslint-community/eslint-utils": "^4.4.0", - "@typescript-eslint/scope-manager": "8.27.0", - "@typescript-eslint/types": "8.27.0", - "@typescript-eslint/typescript-estree": "8.27.0" + "@typescript-eslint/scope-manager": "8.29.1", + "@typescript-eslint/types": "8.29.1", + "@typescript-eslint/typescript-estree": "8.29.1" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -3846,13 +3845,13 @@ } }, "node_modules/@typescript-eslint/visitor-keys": { - "version": "8.27.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.27.0.tgz", - "integrity": "sha512-WsXQwMkILJvffP6z4U3FYJPlbf/j07HIxmDjZpbNvBJkMfvwXj5ACRkkHwBDvLBbDbtX5TdU64/rcvKJ/vuInQ==", + "version": "8.29.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.29.1.tgz", + "integrity": "sha512-RGLh5CRaUEf02viP5c1Vh1cMGffQscyHe7HPAzGpfmfflFg1wUz2rYxd+OZqwpeypYvZ8UxSxuIpF++fmOzEcg==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.27.0", + "@typescript-eslint/types": "8.29.1", "eslint-visitor-keys": "^4.2.0" }, "engines": { @@ -4087,9 +4086,9 @@ "license": "MIT" }, "node_modules/beasties": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/beasties/-/beasties-0.2.0.tgz", - "integrity": "sha512-Ljqskqx/tbZagIglYoJIMzH5zgssyp+in9+9sAyh15N22AornBeIDnb8EZ6Rk+6ShfMxd92uO3gfpT0NtZbpow==", + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/beasties/-/beasties-0.3.2.tgz", + "integrity": "sha512-p4AF8uYzm9Fwu8m/hSVTCPXrRBPmB34hQpHsec2KOaR9CZmgoU8IOv4Cvwq4hgz2p4hLMNbsdNl5XeA6XbAQwA==", "dev": true, "license": "Apache-2.0", "dependencies": { @@ -4097,7 +4096,7 @@ "css-what": "^6.1.0", "dom-serializer": "^2.0.0", "domhandler": "^5.0.3", - "htmlparser2": "^9.1.0", + "htmlparser2": "^10.0.0", "picocolors": "^1.1.1", "postcss": "^8.4.49", "postcss-media-query-parser": "^0.2.3" @@ -4787,7 +4786,6 @@ "version": "4.5.0", "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", - "devOptional": true, "license": "BSD-2-Clause", "engines": { "node": ">=0.12" @@ -4891,19 +4889,19 @@ } }, "node_modules/eslint": { - "version": "9.23.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.23.0.tgz", - "integrity": "sha512-jV7AbNoFPAY1EkFYpLq5bslU9NLNO8xnEeQXwErNibVryjk67wHVmddTBilc5srIttJDBrB0eMHKZBFbSIABCw==", + "version": "9.24.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.24.0.tgz", + "integrity": "sha512-eh/jxIEJyZrvbWRe4XuVclLPDYSYYYgLy5zXGGxD6j8zjSAxFEzI2fL/8xNq6O2yKqVt+eF2YhV+hxjV6UKXwQ==", "dev": true, "license": "MIT", "dependencies": { "@eslint-community/eslint-utils": "^4.2.0", "@eslint-community/regexpp": "^4.12.1", - "@eslint/config-array": "^0.19.2", + "@eslint/config-array": "^0.20.0", "@eslint/config-helpers": "^0.2.0", "@eslint/core": "^0.12.0", "@eslint/eslintrc": "^3.3.1", - "@eslint/js": "9.23.0", + "@eslint/js": "9.24.0", "@eslint/plugin-kit": "^0.2.7", "@humanfs/node": "^0.16.6", "@humanwhocodes/module-importer": "^1.0.1", @@ -5540,9 +5538,9 @@ "license": "ISC" }, "node_modules/htmlparser2": { - "version": "9.1.0", - "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-9.1.0.tgz", - "integrity": "sha512-5zfg6mHUoaer/97TxnGpxmbR7zJtPwIYFMZ/H5ucTlPZhKvtum05yiPK3Mgai3a0DyVxv7qYqoweaEd2nrYQzQ==", + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-10.0.0.tgz", + "integrity": "sha512-TwAZM+zE5Tq3lrEHvOlvwgj1XLWQCtaaibSN11Q+gGBAS7Y1uZSWwXXRe4iF6OXnaq1riyQAPFOBtYc77Mxq0g==", "dev": true, "funding": [ "https://github.com/fb55/htmlparser2?sponsor=1", @@ -5555,8 +5553,21 @@ "dependencies": { "domelementtype": "^2.3.0", "domhandler": "^5.0.3", - "domutils": "^3.1.0", - "entities": "^4.5.0" + "domutils": "^3.2.1", + "entities": "^6.0.0" + } + }, + "node_modules/htmlparser2/node_modules/entities": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-6.0.0.tgz", + "integrity": "sha512-aKstq2TDOndCn4diEyp9Uq/Flu2i1GlLkc6XIDQSDMuaFE3OPW5OphLCyQ5SpSJZTb4reN+kTcYru5yIfXoRPw==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=0.12" + }, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" } }, "node_modules/http-cache-semantics": { @@ -7111,7 +7122,6 @@ "version": "7.2.1", "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.2.1.tgz", "integrity": "sha512-BuBYQYlv1ckiPdQi/ohiivi9Sagc9JG+Ozs0r7b/0iK3sKmrb0b9FdWdBbOdx6hBCM/F9Ir82ofnBhtZOjCRPQ==", - "devOptional": true, "license": "MIT", "dependencies": { "entities": "^4.5.0" @@ -8248,9 +8258,9 @@ } }, "node_modules/typescript": { - "version": "5.8.2", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.8.2.tgz", - "integrity": "sha512-aJn6wq13/afZp/jT9QZmwEjDqqvSGp1VT5GVg+f/t6/oVyrgXM6BY1h9BRh/O5p3PlUPAe+WuiEZOmb/49RqoQ==", + "version": "5.8.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.8.3.tgz", + "integrity": "sha512-p1diW6TqL9L07nNxvRMM7hMMw4c5XOo/1ibL4aAIGmSAt9slTE1Xgw5KWuof2uTOvCg9BY7ZRi+GaF+7sfgPeQ==", "dev": true, "license": "Apache-2.0", "bin": { @@ -8262,9 +8272,9 @@ } }, "node_modules/undici-types": { - "version": "6.20.0", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.20.0.tgz", - "integrity": "sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg==", + "version": "6.21.0", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.21.0.tgz", + "integrity": "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==", "dev": true, "license": "MIT" }, @@ -8383,9 +8393,9 @@ } }, "node_modules/vite": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/vite/-/vite-6.2.0.tgz", - "integrity": "sha512-7dPxoo+WsT/64rDcwoOjk76XHj+TqNTIvHKcuMQ1k4/SeHDaQt5GFAeLYzrimZrMpn/O6DtdI03WUjdxuPM0oQ==", + "version": "6.2.5", + "resolved": "https://registry.npmjs.org/vite/-/vite-6.2.5.tgz", + "integrity": "sha512-j023J/hCAa4pRIUH6J9HemwYfjB5llR2Ps0CWeikOtdR8+pAURAk0DoJC5/mm9kd+UgdnIy7d6HE4EAvlYhPhA==", "dev": true, "license": "MIT", "dependencies": { diff --git a/client/package.json b/client/package.json index 3e21da5..dc397ea 100644 --- a/client/package.json +++ b/client/package.json @@ -12,15 +12,15 @@ }, "private": true, "dependencies": { - "@angular/animations": "^19.2.3", - "@angular/cdk": "^19.2.6", - "@angular/common": "^19.2.3", - "@angular/compiler": "^19.2.3", - "@angular/core": "^19.2.3", - "@angular/forms": "^19.2.3", - "@angular/platform-browser": "^19.2.3", - "@angular/platform-browser-dynamic": "^19.2.3", - "@angular/router": "^19.2.3", + "@angular/animations": "^19.2.6", + "@angular/cdk": "^19.2.9", + "@angular/common": "^19.2.6", + "@angular/compiler": "^19.2.6", + "@angular/core": "^19.2.6", + "@angular/forms": "^19.2.6", + "@angular/platform-browser": "^19.2.6", + "@angular/platform-browser-dynamic": "^19.2.6", + "@angular/router": "^19.2.6", "@fortawesome/fontawesome-free": "^6.7.2", "@microsoft/signalr": "^8.0.7", "bulma": "^1.0.3", @@ -32,22 +32,22 @@ "zone.js": "^0.15.0" }, "devDependencies": { - "@angular-eslint/builder": "19.2.1", - "@angular-eslint/eslint-plugin": "19.2.1", - "@angular-eslint/eslint-plugin-template": "19.2.1", - "@angular-eslint/schematics": "19.2.1", - "@angular-eslint/template-parser": "19.2.1", - "@angular/build": "^19.2.4", - "@angular/cli": "^19.2.4", - "@angular/compiler-cli": "^19.2.3", - "@angular/language-service": "^19.2.3", + "@angular-eslint/builder": "19.3.0", + "@angular-eslint/eslint-plugin": "19.3.0", + "@angular-eslint/eslint-plugin-template": "19.3.0", + "@angular-eslint/schematics": "19.3.0", + "@angular-eslint/template-parser": "19.3.0", + "@angular/build": "^19.2.7", + "@angular/cli": "^19.2.7", + "@angular/compiler-cli": "^19.2.6", + "@angular/language-service": "^19.2.6", "@types/file-saver": "^2.0.7", "@types/file-saver-es": "^2.0.3", - "@types/node": "^22.13.11", - "@typescript-eslint/eslint-plugin": "^8.27.0", - "@typescript-eslint/parser": "^8.27.0", - "eslint": "^9.23.0", + "@types/node": "^22.14.1", + "@typescript-eslint/eslint-plugin": "^8.29.1", + "@typescript-eslint/parser": "^8.29.1", + "eslint": "^9.24.0", "prettier": "^3.5.3", - "typescript": "5.8.2" + "typescript": "5.8.3" } } diff --git a/server/RdtClient.Data/GlobalSuppressions.cs b/server/RdtClient.Data/GlobalSuppressions.cs new file mode 100644 index 0000000..4005fc7 --- /dev/null +++ b/server/RdtClient.Data/GlobalSuppressions.cs @@ -0,0 +1,8 @@ +// This file is used by Code Analysis to maintain SuppressMessage +// attributes that are applied to this project. +// Project-level suppressions either have no target or are given +// a specific target and scoped to a namespace, type, member, etc. + +using System.Diagnostics.CodeAnalysis; + +[assembly: SuppressMessage("Style", "IDE0305:Simplify collection initialization", Justification = "Code style", Scope = "NamespaceAndDescendants", Target = "N:RdtClient.Web")] diff --git a/server/RdtClient.Data/RdtClient.Data.csproj b/server/RdtClient.Data/RdtClient.Data.csproj index 62f4e74..2b92f24 100644 --- a/server/RdtClient.Data/RdtClient.Data.csproj +++ b/server/RdtClient.Data/RdtClient.Data.csproj @@ -8,11 +8,11 @@ - - - - - + + + + + all runtime; build; native; contentfiles; analyzers; buildtransitive diff --git a/server/RdtClient.Service.Test/RdtClient.Service.Test.csproj b/server/RdtClient.Service.Test/RdtClient.Service.Test.csproj index 760fceb..6cde8fa 100644 --- a/server/RdtClient.Service.Test/RdtClient.Service.Test.csproj +++ b/server/RdtClient.Service.Test/RdtClient.Service.Test.csproj @@ -17,9 +17,9 @@ - - - + + + all diff --git a/server/RdtClient.Service.Test/Services/TorrentClients/AllDebridTorrentClientTest.cs b/server/RdtClient.Service.Test/Services/TorrentClients/AllDebridTorrentClientTest.cs index 1ec1f88..5a0ec59 100644 --- a/server/RdtClient.Service.Test/Services/TorrentClients/AllDebridTorrentClientTest.cs +++ b/server/RdtClient.Service.Test/Services/TorrentClients/AllDebridTorrentClientTest.cs @@ -472,7 +472,7 @@ public class AllDebridTorrentClientTest // Assert Assert.NotNull(result); Assert.Single(result); - Assert.Single(result.Where(info => info.RestrictedLink == "https://fake.url/file1.txt")); + Assert.Single(result, info => info.RestrictedLink == "https://fake.url/file1.txt"); } [Fact] diff --git a/server/RdtClient.Service/BackgroundServices/ProviderUpdater.cs b/server/RdtClient.Service/BackgroundServices/ProviderUpdater.cs index 06007d8..82acd4f 100644 --- a/server/RdtClient.Service/BackgroundServices/ProviderUpdater.cs +++ b/server/RdtClient.Service/BackgroundServices/ProviderUpdater.cs @@ -53,12 +53,12 @@ public class ProviderUpdater(ILogger logger, IServiceProvider servic await torrentService.UpdateRdData(); - logger.LogDebug($"Finished updating torrent info from debrid provider, next update in {updateTime} seconds"); + logger.LogDebug("Finished updating torrent info from debrid provider, next update in {updateTime} seconds", updateTime); } } catch (Exception ex) { - logger.LogError(ex, $"Unexpected error occurred in ProviderUpdater: {ex.Message}"); + logger.LogError(ex, "Unexpected error occurred in ProviderUpdater: {ex.Message}", ex.Message); } await Task.Delay(TimeSpan.FromSeconds(1), stoppingToken); diff --git a/server/RdtClient.Service/BackgroundServices/Startup.cs b/server/RdtClient.Service/BackgroundServices/Startup.cs index fb62773..d5c359a 100644 --- a/server/RdtClient.Service/BackgroundServices/Startup.cs +++ b/server/RdtClient.Service/BackgroundServices/Startup.cs @@ -20,7 +20,7 @@ public class Startup(IServiceProvider serviceProvider) : IHostedService using var scope = serviceProvider.CreateScope(); var logger = scope.ServiceProvider.GetRequiredService>(); - logger.LogWarning($"Starting host on version {version}"); + logger.LogWarning("Starting host on version {version}", version); var dbContext = scope.ServiceProvider.GetRequiredService(); await dbContext.Database.MigrateAsync(cancellationToken); diff --git a/server/RdtClient.Service/BackgroundServices/UpdateChecker.cs b/server/RdtClient.Service/BackgroundServices/UpdateChecker.cs index 95de08b..3b40085 100644 --- a/server/RdtClient.Service/BackgroundServices/UpdateChecker.cs +++ b/server/RdtClient.Service/BackgroundServices/UpdateChecker.cs @@ -79,7 +79,7 @@ public class UpdateChecker(ILogger logger) : BackgroundService logger.LogInformation("UpdateChecker stopped."); } - private async Task GitHubRequest(String endpoint, CancellationToken cancellationToken) + private static async Task GitHubRequest(String endpoint, CancellationToken cancellationToken) { var httpClient = new HttpClient(); httpClient.DefaultRequestHeaders.UserAgent.Add(new("RdtClient", CurrentVersion)); diff --git a/server/RdtClient.Service/GlobalSuppressions.cs b/server/RdtClient.Service/GlobalSuppressions.cs index ce1143b..eac4adf 100644 --- a/server/RdtClient.Service/GlobalSuppressions.cs +++ b/server/RdtClient.Service/GlobalSuppressions.cs @@ -6,3 +6,4 @@ using System.Diagnostics.CodeAnalysis; [assembly: SuppressMessage("Usage", "CA2254:Template should be a static expression", Justification = "Bug in Serilog", Scope = "NamespaceAndDescendants", Target = "N:RdtClient.Service")] +[assembly: SuppressMessage("Style", "IDE0305:Simplify collection initialization", Justification = "Code style", Scope = "NamespaceAndDescendants", Target = "N:RdtClient.Service")] \ No newline at end of file diff --git a/server/RdtClient.Service/RdtClient.Service.csproj b/server/RdtClient.Service/RdtClient.Service.csproj index b57d597..487037c 100644 --- a/server/RdtClient.Service/RdtClient.Service.csproj +++ b/server/RdtClient.Service/RdtClient.Service.csproj @@ -14,8 +14,8 @@ - - + + @@ -24,8 +24,8 @@ - - + + diff --git a/server/RdtClient.Service/Services/QBittorrent.cs b/server/RdtClient.Service/Services/QBittorrent.cs index 3c12685..bf21802 100644 --- a/server/RdtClient.Service/Services/QBittorrent.cs +++ b/server/RdtClient.Service/Services/QBittorrent.cs @@ -411,11 +411,11 @@ public class QBittorrent(ILogger logger, Settings settings, Authent { if (deleteFiles) { - logger.LogDebug($"Delete {hash}, with files"); + logger.LogDebug("Delete {hash}, with files", hash); } else { - logger.LogDebug($"Delete {hash}, no files"); + logger.LogDebug("Delete {hash}, no files", hash); } var torrent = await torrents.GetByHash(hash); diff --git a/server/RdtClient.Service/Services/TorrentClients/AllDebridTorrentClient.cs b/server/RdtClient.Service/Services/TorrentClients/AllDebridTorrentClient.cs index b0f49d8..31eacee 100644 --- a/server/RdtClient.Service/Services/TorrentClients/AllDebridTorrentClient.cs +++ b/server/RdtClient.Service/Services/TorrentClients/AllDebridTorrentClient.cs @@ -199,7 +199,7 @@ public class AllDebridTorrentClient(ILogger logger, IAll torrent.RdSize = torrentClientTorrent.Bytes; } - if (torrentClientTorrent.Files != null && torrentClientTorrent.Files.Any()) + if (torrentClientTorrent.Files != null && torrentClientTorrent.Files.Count != 0) { torrent.RdFiles = JsonConvert.SerializeObject(torrentClientTorrent.Files); } diff --git a/server/RdtClient.Service/Services/TorrentClients/TorBoxTorrentClient.cs b/server/RdtClient.Service/Services/TorrentClients/TorBoxTorrentClient.cs index 98a4c12..f7cf37f 100644 --- a/server/RdtClient.Service/Services/TorrentClients/TorBoxTorrentClient.cs +++ b/server/RdtClient.Service/Services/TorrentClients/TorBoxTorrentClient.cs @@ -133,10 +133,8 @@ public class TorBoxTorrentClient(ILogger logger, IHttpClien var magnetLinkInfo = MonoTorrent.MagnetLink.Parse(magnetLink); return magnetLinkInfo.InfoHashes.V1!.ToHex().ToLowerInvariant(); } - else - { - return result.Data!.Hash!; - } + + return result.Data!.Hash!; } public async Task AddFile(Byte[] bytes) @@ -297,24 +295,22 @@ public class TorBoxTorrentClient(ILogger logger, IHttpClien return [ - new DownloadInfo + new() { RestrictedLink = $"https://torbox.app/fakedl/{torrentId?.Id}/zip", FileName = $"{torrent.RdName}.zip" } ]; } - else - { - logger.LogDebug("Downloading files from TorBox individually."); - return downloadableFiles.Select(file => new DownloadInfo - { - RestrictedLink = $"https://torbox.app/fakedl/{torrentId?.Id}/{file.Id}", - FileName = Path.GetFileName(file.Path) - }) - .ToList(); - } + logger.LogDebug("Downloading files from TorBox individually."); + + return downloadableFiles.Select(file => new DownloadInfo + { + RestrictedLink = $"https://torbox.app/fakedl/{torrentId?.Id}/{file.Id}", + FileName = Path.GetFileName(file.Path) + }) + .ToList(); } /// diff --git a/server/RdtClient.Service/Wrappers/Process.cs b/server/RdtClient.Service/Wrappers/Process.cs index fa0e211..ad18254 100644 --- a/server/RdtClient.Service/Wrappers/Process.cs +++ b/server/RdtClient.Service/Wrappers/Process.cs @@ -18,6 +18,7 @@ public class Process : IProcess public void Dispose() { _process.Dispose(); + GC.SuppressFinalize(this); } public void BeginOutputReadLine() diff --git a/server/RdtClient.Web/GlobalSuppressions.cs b/server/RdtClient.Web/GlobalSuppressions.cs new file mode 100644 index 0000000..4005fc7 --- /dev/null +++ b/server/RdtClient.Web/GlobalSuppressions.cs @@ -0,0 +1,8 @@ +// This file is used by Code Analysis to maintain SuppressMessage +// attributes that are applied to this project. +// Project-level suppressions either have no target or are given +// a specific target and scoped to a namespace, type, member, etc. + +using System.Diagnostics.CodeAnalysis; + +[assembly: SuppressMessage("Style", "IDE0305:Simplify collection initialization", Justification = "Code style", Scope = "NamespaceAndDescendants", Target = "N:RdtClient.Web")] diff --git a/server/RdtClient.Web/RdtClient.Web.csproj b/server/RdtClient.Web/RdtClient.Web.csproj index e62311f..eb94863 100644 --- a/server/RdtClient.Web/RdtClient.Web.csproj +++ b/server/RdtClient.Web/RdtClient.Web.csproj @@ -29,15 +29,15 @@ - - - - + + + + all runtime; build; native; contentfiles; analyzers; buildtransitive - - + +