providing statistic data in statistic component

This commit is contained in:
Marcel-Anker
2025-11-18 14:01:00 +01:00
parent bd56f3242e
commit bc274c0e0b
9 changed files with 212 additions and 159 deletions

284
package-lock.json generated
View File

@@ -16,7 +16,7 @@
"@angular/material": "^20.2.9", "@angular/material": "^20.2.9",
"@angular/platform-browser": "^20.3.0", "@angular/platform-browser": "^20.3.0",
"@angular/router": "^20.3.0", "@angular/router": "^20.3.0",
"@infinimotion/model-frontend": "^0.0.102", "@infinimotion/model-frontend": "^0.0.110",
"@tailwindcss/postcss": "^4.1.14", "@tailwindcss/postcss": "^4.1.14",
"angularx-qrcode": "^20.0.0", "angularx-qrcode": "^20.0.0",
"canvas-confetti": "^1.9.4", "canvas-confetti": "^1.9.4",
@@ -277,13 +277,13 @@
} }
}, },
"node_modules/@angular-devkit/architect": { "node_modules/@angular-devkit/architect": {
"version": "0.2003.9", "version": "0.2003.10",
"resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.2003.9.tgz", "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.2003.10.tgz",
"integrity": "sha512-p0GO2H8hiZjRHI9sm4tXTF3OpWaEnkqvB0GBGJfGp8RvpPfDA2t3j2NAUNtd75H+B0xdfyWLmNq9YJGpy6gznA==", "integrity": "sha512-2SWetxJzS8gRX6OKQstkWx37VRvZVgcEBDLsDSaeTjpnwh81A+niZQjAVRdwL0NEt1Wixk/RxfeUuCmdyyHvhQ==",
"dev": true, "dev": true,
"license": "MIT", "license": "MIT",
"dependencies": { "dependencies": {
"@angular-devkit/core": "20.3.9", "@angular-devkit/core": "20.3.10",
"rxjs": "7.8.2" "rxjs": "7.8.2"
}, },
"engines": { "engines": {
@@ -293,9 +293,9 @@
} }
}, },
"node_modules/@angular-devkit/core": { "node_modules/@angular-devkit/core": {
"version": "20.3.9", "version": "20.3.10",
"resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-20.3.9.tgz", "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-20.3.10.tgz",
"integrity": "sha512-bXsAGIUb4p60x548YmvnMvjwd3FwWz6re1uTM7dV0XH8nQn3XMhOQ3Q3sAckzJHxkDuaRhB3K/a4kupoOmVfTQ==", "integrity": "sha512-COOT2eVebDwHhwENk12VR6m0wjL8D7p0dncEHF15zaBt1IXEnVhGESjSrs5klnPnt5T55qCBKyCTaeK7i/cS8Q==",
"dev": true, "dev": true,
"license": "MIT", "license": "MIT",
"dependencies": { "dependencies": {
@@ -321,13 +321,13 @@
} }
}, },
"node_modules/@angular-devkit/schematics": { "node_modules/@angular-devkit/schematics": {
"version": "20.3.9", "version": "20.3.10",
"resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-20.3.9.tgz", "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-20.3.10.tgz",
"integrity": "sha512-oaIjAKPmHMZBTC0met5M7dbXBeZnCNwmHacT/kBHNVBAz/NI95fuAfb2P0Jxt7gWdQXejDSxWp0tL+sZIyO0xw==", "integrity": "sha512-2N2WF9lj+kr3uCG4+vFadYCL5hAT4dxMgzwScSdOqSd0O+GZD0CzKbDzlfvWIWC/ZealC5Sh4dFEQaRfmy72xA==",
"dev": true, "dev": true,
"license": "MIT", "license": "MIT",
"dependencies": { "dependencies": {
"@angular-devkit/core": "20.3.9", "@angular-devkit/core": "20.3.10",
"jsonc-parser": "3.3.1", "jsonc-parser": "3.3.1",
"magic-string": "0.30.17", "magic-string": "0.30.17",
"ora": "8.2.0", "ora": "8.2.0",
@@ -340,14 +340,14 @@
} }
}, },
"node_modules/@angular/build": { "node_modules/@angular/build": {
"version": "20.3.9", "version": "20.3.10",
"resolved": "https://registry.npmjs.org/@angular/build/-/build-20.3.9.tgz", "resolved": "https://registry.npmjs.org/@angular/build/-/build-20.3.10.tgz",
"integrity": "sha512-Ulimvg6twPSCraaZECEmENfKBlD4M1yqeHlg6dCzFNM4xcwaGUnuG6O3cIQD59DaEvaG73ceM2y8ftYdxAwFow==", "integrity": "sha512-nQrj1nMNZygYDilThc7hPrD6/NIWF/BOSgMfE4VkXQp8d0QronP3HFJ/h77MeoughMRFRhix0pqQSlXJQ2SGTQ==",
"dev": true, "dev": true,
"license": "MIT", "license": "MIT",
"dependencies": { "dependencies": {
"@ampproject/remapping": "2.3.0", "@ampproject/remapping": "2.3.0",
"@angular-devkit/architect": "0.2003.9", "@angular-devkit/architect": "0.2003.10",
"@babel/core": "7.28.3", "@babel/core": "7.28.3",
"@babel/helper-annotate-as-pure": "7.27.3", "@babel/helper-annotate-as-pure": "7.27.3",
"@babel/helper-split-export-declaration": "7.24.7", "@babel/helper-split-export-declaration": "7.24.7",
@@ -389,7 +389,7 @@
"@angular/platform-browser": "^20.0.0", "@angular/platform-browser": "^20.0.0",
"@angular/platform-server": "^20.0.0", "@angular/platform-server": "^20.0.0",
"@angular/service-worker": "^20.0.0", "@angular/service-worker": "^20.0.0",
"@angular/ssr": "^20.3.9", "@angular/ssr": "^20.3.10",
"karma": "^6.4.0", "karma": "^6.4.0",
"less": "^4.2.0", "less": "^4.2.0",
"ng-packagr": "^20.0.0", "ng-packagr": "^20.0.0",
@@ -439,11 +439,10 @@
} }
}, },
"node_modules/@angular/cdk": { "node_modules/@angular/cdk": {
"version": "20.2.12", "version": "20.2.13",
"resolved": "https://registry.npmjs.org/@angular/cdk/-/cdk-20.2.12.tgz", "resolved": "https://registry.npmjs.org/@angular/cdk/-/cdk-20.2.13.tgz",
"integrity": "sha512-hz8GtiMy3N9/e8407ZfrByHD5GEC4SkWtxyUknWuTM9P88AOie0jDZ6CfQg9gQ0OJX+6BAbJV3RpYZA1uzNUqA==", "integrity": "sha512-h1jTkCmJ/rEQQMkxgKFMCBOrMfjZEnppgdekNmSTerwdVp4vdosTDTzFH/kwiOGFeRClffmvqQ2XLG8mQOKOtA==",
"license": "MIT", "license": "MIT",
"peer": true,
"dependencies": { "dependencies": {
"parse5": "^8.0.0", "parse5": "^8.0.0",
"tslib": "^2.3.0" "tslib": "^2.3.0"
@@ -455,19 +454,19 @@
} }
}, },
"node_modules/@angular/cli": { "node_modules/@angular/cli": {
"version": "20.3.9", "version": "20.3.10",
"resolved": "https://registry.npmjs.org/@angular/cli/-/cli-20.3.9.tgz", "resolved": "https://registry.npmjs.org/@angular/cli/-/cli-20.3.10.tgz",
"integrity": "sha512-4eKpRDg96B20yrKJqjA24zgxYy1RiRd70FvF/KG1hqSowsWwtzydtEJ3VM6iFWS9t1D8truuVpKjMEnn1Y274A==", "integrity": "sha512-CQzXScurBXSuMMn0jf6UYDItdggaM3bHYERKL4cUG1z5JqSozVFin1+TB1EjWYkddwdgC10R5xQurdMb+ahRNw==",
"dev": true, "dev": true,
"license": "MIT", "license": "MIT",
"dependencies": { "dependencies": {
"@angular-devkit/architect": "0.2003.9", "@angular-devkit/architect": "0.2003.10",
"@angular-devkit/core": "20.3.9", "@angular-devkit/core": "20.3.10",
"@angular-devkit/schematics": "20.3.9", "@angular-devkit/schematics": "20.3.10",
"@inquirer/prompts": "7.8.2", "@inquirer/prompts": "7.8.2",
"@listr2/prompt-adapter-inquirer": "3.0.1", "@listr2/prompt-adapter-inquirer": "3.0.1",
"@modelcontextprotocol/sdk": "1.17.3", "@modelcontextprotocol/sdk": "1.17.3",
"@schematics/angular": "20.3.9", "@schematics/angular": "20.3.10",
"@yarnpkg/lockfile": "1.1.0", "@yarnpkg/lockfile": "1.1.0",
"algoliasearch": "5.35.0", "algoliasearch": "5.35.0",
"ini": "5.0.0", "ini": "5.0.0",
@@ -490,11 +489,10 @@
} }
}, },
"node_modules/@angular/common": { "node_modules/@angular/common": {
"version": "20.3.10", "version": "20.3.12",
"resolved": "https://registry.npmjs.org/@angular/common/-/common-20.3.10.tgz", "resolved": "https://registry.npmjs.org/@angular/common/-/common-20.3.12.tgz",
"integrity": "sha512-12fEzvKbEqjqy1fSk9DMYlJz6dF1MJVXuC5BB+oWWJpd+2lfh4xJ62pkvvLGAICI89hfM5n9Cy5kWnXwnqPZsA==", "integrity": "sha512-rFcDfe67ffrb435C6t2lc27WGbizeOcgce30tUhH0iezwEvU+kHHWezXXX6Ylx3TFgqGkhcxL0fliuFYrpM1Vw==",
"license": "MIT", "license": "MIT",
"peer": true,
"dependencies": { "dependencies": {
"tslib": "^2.3.0" "tslib": "^2.3.0"
}, },
@@ -502,16 +500,15 @@
"node": "^20.19.0 || ^22.12.0 || >=24.0.0" "node": "^20.19.0 || ^22.12.0 || >=24.0.0"
}, },
"peerDependencies": { "peerDependencies": {
"@angular/core": "20.3.10", "@angular/core": "20.3.12",
"rxjs": "^6.5.3 || ^7.4.0" "rxjs": "^6.5.3 || ^7.4.0"
} }
}, },
"node_modules/@angular/compiler": { "node_modules/@angular/compiler": {
"version": "20.3.10", "version": "20.3.12",
"resolved": "https://registry.npmjs.org/@angular/compiler/-/compiler-20.3.10.tgz", "resolved": "https://registry.npmjs.org/@angular/compiler/-/compiler-20.3.12.tgz",
"integrity": "sha512-cW939Lr8GZjPSYfbQKIDNrUaHWmn2M+zBbERThfq5skLuY+xM60bJFv4NqBekfX6YqKLCY62ilUZlnImYIXaqA==", "integrity": "sha512-bGESKz97nWiEQ/sydTq/Lzv3zlLvDb8t0msLG5Xti7Ch1EdLddXS8d2D/zFsjiGbAUKVsT6RgPCLHYoi4ocbhA==",
"license": "MIT", "license": "MIT",
"peer": true,
"dependencies": { "dependencies": {
"tslib": "^2.3.0" "tslib": "^2.3.0"
}, },
@@ -520,12 +517,11 @@
} }
}, },
"node_modules/@angular/compiler-cli": { "node_modules/@angular/compiler-cli": {
"version": "20.3.10", "version": "20.3.12",
"resolved": "https://registry.npmjs.org/@angular/compiler-cli/-/compiler-cli-20.3.10.tgz", "resolved": "https://registry.npmjs.org/@angular/compiler-cli/-/compiler-cli-20.3.12.tgz",
"integrity": "sha512-9BemvpFxA26yIVdu8ROffadMkEdlk/AQQ2Jb486w7RPkrvUQ0pbEJukhv9aryJvhbMopT66S5H/j4ipOUMzmzQ==", "integrity": "sha512-3SJkexqsydYjIs0iLiJr5AdwkvumpzvjJM6s76iaxXHkRll5k/vM0wqkXLlSIwieBrecO9D4J73lDLWDevXl5A==",
"dev": true, "dev": true,
"license": "MIT", "license": "MIT",
"peer": true,
"dependencies": { "dependencies": {
"@babel/core": "7.28.3", "@babel/core": "7.28.3",
"@jridgewell/sourcemap-codec": "^1.4.14", "@jridgewell/sourcemap-codec": "^1.4.14",
@@ -544,7 +540,7 @@
"node": "^20.19.0 || ^22.12.0 || >=24.0.0" "node": "^20.19.0 || ^22.12.0 || >=24.0.0"
}, },
"peerDependencies": { "peerDependencies": {
"@angular/compiler": "20.3.10", "@angular/compiler": "20.3.12",
"typescript": ">=5.8 <6.0" "typescript": ">=5.8 <6.0"
}, },
"peerDependenciesMeta": { "peerDependenciesMeta": {
@@ -554,11 +550,10 @@
} }
}, },
"node_modules/@angular/core": { "node_modules/@angular/core": {
"version": "20.3.10", "version": "20.3.12",
"resolved": "https://registry.npmjs.org/@angular/core/-/core-20.3.10.tgz", "resolved": "https://registry.npmjs.org/@angular/core/-/core-20.3.12.tgz",
"integrity": "sha512-g99Qe+NOVo72OLxowVF9NjCckswWYHmvO7MgeiZTDJbTjF9tXH96dMx7AWq76/GUinV10sNzDysVW16NoAbCRQ==", "integrity": "sha512-K7vibMr55a7+EsuDhkg4Pk+ELuMm12olllwqL/CiQUcHXZ9Zgc4KYGTUuxWB69qJCG90gdSZS7tm5Dx0wDcyjg==",
"license": "MIT", "license": "MIT",
"peer": true,
"dependencies": { "dependencies": {
"tslib": "^2.3.0" "tslib": "^2.3.0"
}, },
@@ -566,7 +561,7 @@
"node": "^20.19.0 || ^22.12.0 || >=24.0.0" "node": "^20.19.0 || ^22.12.0 || >=24.0.0"
}, },
"peerDependencies": { "peerDependencies": {
"@angular/compiler": "20.3.10", "@angular/compiler": "20.3.12",
"rxjs": "^6.5.3 || ^7.4.0", "rxjs": "^6.5.3 || ^7.4.0",
"zone.js": "~0.15.0" "zone.js": "~0.15.0"
}, },
@@ -580,11 +575,10 @@
} }
}, },
"node_modules/@angular/forms": { "node_modules/@angular/forms": {
"version": "20.3.10", "version": "20.3.12",
"resolved": "https://registry.npmjs.org/@angular/forms/-/forms-20.3.10.tgz", "resolved": "https://registry.npmjs.org/@angular/forms/-/forms-20.3.12.tgz",
"integrity": "sha512-9yWr51EUauTEINB745AaHwZNTHLpXIm4uxuykxzOg+g2QskEgVfH26uS8G2ogdNuwYpB8wnsXWr34qhM3qgOWw==", "integrity": "sha512-O0Jy8ScaN3qVipDfR4s0SIxGrz/+MbCdmR05ZYVWf1W5P3dvETKt9WNjX9fYYV47GdgSveyFjuCR2NvWlv94zA==",
"license": "MIT", "license": "MIT",
"peer": true,
"dependencies": { "dependencies": {
"tslib": "^2.3.0" "tslib": "^2.3.0"
}, },
@@ -592,22 +586,22 @@
"node": "^20.19.0 || ^22.12.0 || >=24.0.0" "node": "^20.19.0 || ^22.12.0 || >=24.0.0"
}, },
"peerDependencies": { "peerDependencies": {
"@angular/common": "20.3.10", "@angular/common": "20.3.12",
"@angular/core": "20.3.10", "@angular/core": "20.3.12",
"@angular/platform-browser": "20.3.10", "@angular/platform-browser": "20.3.12",
"rxjs": "^6.5.3 || ^7.4.0" "rxjs": "^6.5.3 || ^7.4.0"
} }
}, },
"node_modules/@angular/material": { "node_modules/@angular/material": {
"version": "20.2.12", "version": "20.2.13",
"resolved": "https://registry.npmjs.org/@angular/material/-/material-20.2.12.tgz", "resolved": "https://registry.npmjs.org/@angular/material/-/material-20.2.13.tgz",
"integrity": "sha512-DVenIZmV87qhDBlI2Xv3Z+b+IFI1s4wcZsFrzDi1FBMxKLsltJwMHf4SAmuqY0Mm/2Vw7HEZlfE130TuqjG8Ig==", "integrity": "sha512-9pjp2mULOxojYzOO7qdqt/gSVLrpYBwsIM3K0fxp+mNEcJgNjIxvmRKx46LY9+v0yrPY9puoQvP/T2C+o1+xsw==",
"license": "MIT", "license": "MIT",
"dependencies": { "dependencies": {
"tslib": "^2.3.0" "tslib": "^2.3.0"
}, },
"peerDependencies": { "peerDependencies": {
"@angular/cdk": "20.2.12", "@angular/cdk": "20.2.13",
"@angular/common": "^20.0.0 || ^21.0.0", "@angular/common": "^20.0.0 || ^21.0.0",
"@angular/core": "^20.0.0 || ^21.0.0", "@angular/core": "^20.0.0 || ^21.0.0",
"@angular/forms": "^20.0.0 || ^21.0.0", "@angular/forms": "^20.0.0 || ^21.0.0",
@@ -616,11 +610,10 @@
} }
}, },
"node_modules/@angular/platform-browser": { "node_modules/@angular/platform-browser": {
"version": "20.3.10", "version": "20.3.12",
"resolved": "https://registry.npmjs.org/@angular/platform-browser/-/platform-browser-20.3.10.tgz", "resolved": "https://registry.npmjs.org/@angular/platform-browser/-/platform-browser-20.3.12.tgz",
"integrity": "sha512-UV8CGoB5P3FmJciI3/I/n3L7C3NVgGh7bIlZ1BaB/qJDtv0Wq0rRAGwmT/Z3gwmrRtfHZWme7/CeQ2CYJmMyUQ==", "integrity": "sha512-14KQsXZyaQhbRwFz1W58CtbXQc9L+mfuHBgwQjQo99422Yk0ye5WVMb6DHH7dH671qFVqL0XL7zdOPBebaAnJQ==",
"license": "MIT", "license": "MIT",
"peer": true,
"dependencies": { "dependencies": {
"tslib": "^2.3.0" "tslib": "^2.3.0"
}, },
@@ -628,9 +621,9 @@
"node": "^20.19.0 || ^22.12.0 || >=24.0.0" "node": "^20.19.0 || ^22.12.0 || >=24.0.0"
}, },
"peerDependencies": { "peerDependencies": {
"@angular/animations": "20.3.10", "@angular/animations": "20.3.12",
"@angular/common": "20.3.10", "@angular/common": "20.3.12",
"@angular/core": "20.3.10" "@angular/core": "20.3.12"
}, },
"peerDependenciesMeta": { "peerDependenciesMeta": {
"@angular/animations": { "@angular/animations": {
@@ -639,9 +632,9 @@
} }
}, },
"node_modules/@angular/router": { "node_modules/@angular/router": {
"version": "20.3.10", "version": "20.3.12",
"resolved": "https://registry.npmjs.org/@angular/router/-/router-20.3.10.tgz", "resolved": "https://registry.npmjs.org/@angular/router/-/router-20.3.12.tgz",
"integrity": "sha512-Z03cfH1jgQ7XMDJj4R8qAGqivcvhdG3wYBwaiN1K1ODBgPhbFKNeD4stKqYp7xBNtswmM2O2jMxrL/Djwju4Gg==", "integrity": "sha512-hUipb9JI/Euy3bdlhzkcWlw3cTyssPTVTDwSvyGxWO4i+UKATQYmxh8EDOrDYzFp6Aexiy0Hff/H8umdsn6ZdA==",
"license": "MIT", "license": "MIT",
"dependencies": { "dependencies": {
"tslib": "^2.3.0" "tslib": "^2.3.0"
@@ -650,9 +643,9 @@
"node": "^20.19.0 || ^22.12.0 || >=24.0.0" "node": "^20.19.0 || ^22.12.0 || >=24.0.0"
}, },
"peerDependencies": { "peerDependencies": {
"@angular/common": "20.3.10", "@angular/common": "20.3.12",
"@angular/core": "20.3.10", "@angular/core": "20.3.12",
"@angular/platform-browser": "20.3.10", "@angular/platform-browser": "20.3.12",
"rxjs": "^6.5.3 || ^7.4.0" "rxjs": "^6.5.3 || ^7.4.0"
} }
}, },
@@ -687,7 +680,6 @@
"integrity": "sha512-yDBHV9kQNcr2/sUr9jghVyz9C3Y5G2zUM2H2lo+9mKv4sFgbA8s8Z9t8D1jiTkGoO/NoIfKMyKWr4s6CN23ZwQ==", "integrity": "sha512-yDBHV9kQNcr2/sUr9jghVyz9C3Y5G2zUM2H2lo+9mKv4sFgbA8s8Z9t8D1jiTkGoO/NoIfKMyKWr4s6CN23ZwQ==",
"dev": true, "dev": true,
"license": "MIT", "license": "MIT",
"peer": true,
"dependencies": { "dependencies": {
"@ampproject/remapping": "^2.2.0", "@ampproject/remapping": "^2.2.0",
"@babel/code-frame": "^7.27.1", "@babel/code-frame": "^7.27.1",
@@ -1403,9 +1395,9 @@
} }
}, },
"node_modules/@infinimotion/model-frontend": { "node_modules/@infinimotion/model-frontend": {
"version": "0.0.102", "version": "0.0.110",
"resolved": "https://git.infinimotion.de/api/packages/infinimotion/npm/%40infinimotion%2Fmodel-frontend/-/0.0.102/model-frontend-0.0.102.tgz", "resolved": "https://git.infinimotion.de/api/packages/infinimotion/npm/%40infinimotion%2Fmodel-frontend/-/0.0.110/model-frontend-0.0.110.tgz",
"integrity": "sha512-NJV9bSBubdOZ1GBIe9To3o/hh6AZscJcTyaZY2nGmMxH+GhtvO1AHmjhrQeRjwAKFiwZMEwEg4ktFiOAp3MTMQ==", "integrity": "sha512-MzHFDV8g2nOQ3p9UysB9HfoFzmycXIIaccN2do3gqIM9lkwsiN/htoGHr8fza9uv+OACifrDt4xp73nSy2Xf8w==",
"license": "ISC" "license": "ISC"
}, },
"node_modules/@inquirer/ansi": { "node_modules/@inquirer/ansi": {
@@ -1419,14 +1411,14 @@
} }
}, },
"node_modules/@inquirer/checkbox": { "node_modules/@inquirer/checkbox": {
"version": "4.3.1", "version": "4.3.2",
"resolved": "https://registry.npmjs.org/@inquirer/checkbox/-/checkbox-4.3.1.tgz", "resolved": "https://registry.npmjs.org/@inquirer/checkbox/-/checkbox-4.3.2.tgz",
"integrity": "sha512-rOcLotrptYIy59SGQhKlU0xBg1vvcVl2FdPIEclUvKHh0wo12OfGkId/01PIMJ/V+EimJ77t085YabgnQHBa5A==", "integrity": "sha512-VXukHf0RR1doGe6Sm4F0Em7SWYLTHSsbGfJdS9Ja2bX5/D5uwVOEjr07cncLROdBvmnvCATYEWlHqYmXv2IlQA==",
"dev": true, "dev": true,
"license": "MIT", "license": "MIT",
"dependencies": { "dependencies": {
"@inquirer/ansi": "^1.0.2", "@inquirer/ansi": "^1.0.2",
"@inquirer/core": "^10.3.1", "@inquirer/core": "^10.3.2",
"@inquirer/figures": "^1.0.15", "@inquirer/figures": "^1.0.15",
"@inquirer/type": "^3.0.10", "@inquirer/type": "^3.0.10",
"yoctocolors-cjs": "^2.1.3" "yoctocolors-cjs": "^2.1.3"
@@ -1466,9 +1458,9 @@
} }
}, },
"node_modules/@inquirer/core": { "node_modules/@inquirer/core": {
"version": "10.3.1", "version": "10.3.2",
"resolved": "https://registry.npmjs.org/@inquirer/core/-/core-10.3.1.tgz", "resolved": "https://registry.npmjs.org/@inquirer/core/-/core-10.3.2.tgz",
"integrity": "sha512-hzGKIkfomGFPgxKmnKEKeA+uCYBqC+TKtRx5LgyHRCrF6S2MliwRIjp3sUaWwVzMp7ZXVs8elB0Tfe682Rpg4w==", "integrity": "sha512-43RTuEbfP8MbKzedNqBrlhhNKVwoK//vUFNW3Q3vZ88BLcrs4kYpGg+B2mm5p2K/HfygoCxuKwJJiv8PbGmE0A==",
"dev": true, "dev": true,
"license": "MIT", "license": "MIT",
"dependencies": { "dependencies": {
@@ -1476,7 +1468,7 @@
"@inquirer/figures": "^1.0.15", "@inquirer/figures": "^1.0.15",
"@inquirer/type": "^3.0.10", "@inquirer/type": "^3.0.10",
"cli-width": "^4.1.0", "cli-width": "^4.1.0",
"mute-stream": "^3.0.0", "mute-stream": "^2.0.0",
"signal-exit": "^4.1.0", "signal-exit": "^4.1.0",
"wrap-ansi": "^6.2.0", "wrap-ansi": "^6.2.0",
"yoctocolors-cjs": "^2.1.3" "yoctocolors-cjs": "^2.1.3"
@@ -1494,13 +1486,13 @@
} }
}, },
"node_modules/@inquirer/editor": { "node_modules/@inquirer/editor": {
"version": "4.2.22", "version": "4.2.23",
"resolved": "https://registry.npmjs.org/@inquirer/editor/-/editor-4.2.22.tgz", "resolved": "https://registry.npmjs.org/@inquirer/editor/-/editor-4.2.23.tgz",
"integrity": "sha512-8yYZ9TCbBKoBkzHtVNMF6PV1RJEUvMlhvmS3GxH4UvXMEHlS45jFyqFy0DU+K42jBs5slOaA78xGqqqWAx3u6A==", "integrity": "sha512-aLSROkEwirotxZ1pBaP8tugXRFCxW94gwrQLxXfrZsKkfjOYC1aRvAZuhpJOb5cu4IBTJdsCigUlf2iCOu4ZDQ==",
"dev": true, "dev": true,
"license": "MIT", "license": "MIT",
"dependencies": { "dependencies": {
"@inquirer/core": "^10.3.1", "@inquirer/core": "^10.3.2",
"@inquirer/external-editor": "^1.0.3", "@inquirer/external-editor": "^1.0.3",
"@inquirer/type": "^3.0.10" "@inquirer/type": "^3.0.10"
}, },
@@ -1517,13 +1509,13 @@
} }
}, },
"node_modules/@inquirer/expand": { "node_modules/@inquirer/expand": {
"version": "4.0.22", "version": "4.0.23",
"resolved": "https://registry.npmjs.org/@inquirer/expand/-/expand-4.0.22.tgz", "resolved": "https://registry.npmjs.org/@inquirer/expand/-/expand-4.0.23.tgz",
"integrity": "sha512-9XOjCjvioLjwlq4S4yXzhvBmAXj5tG+jvva0uqedEsQ9VD8kZ+YT7ap23i0bIXOtow+di4+u3i6u26nDqEfY4Q==", "integrity": "sha512-nRzdOyFYnpeYTTR2qFwEVmIWypzdAx/sIkCMeTNTcflFOovfqUk+HcFhQQVBftAh9gmGrpFj6QcGEqrDMDOiew==",
"dev": true, "dev": true,
"license": "MIT", "license": "MIT",
"dependencies": { "dependencies": {
"@inquirer/core": "^10.3.1", "@inquirer/core": "^10.3.2",
"@inquirer/type": "^3.0.10", "@inquirer/type": "^3.0.10",
"yoctocolors-cjs": "^2.1.3" "yoctocolors-cjs": "^2.1.3"
}, },
@@ -1572,13 +1564,13 @@
} }
}, },
"node_modules/@inquirer/input": { "node_modules/@inquirer/input": {
"version": "4.3.0", "version": "4.3.1",
"resolved": "https://registry.npmjs.org/@inquirer/input/-/input-4.3.0.tgz", "resolved": "https://registry.npmjs.org/@inquirer/input/-/input-4.3.1.tgz",
"integrity": "sha512-h4fgse5zeGsBSW3cRQqu9a99OXRdRsNCvHoBqVmz40cjYjYFzcfwD0KA96BHIPlT7rZw0IpiefQIqXrjbzjS4Q==", "integrity": "sha512-kN0pAM4yPrLjJ1XJBjDxyfDduXOuQHrBB8aLDMueuwUGn+vNpF7Gq7TvyVxx8u4SHlFFj4trmj+a2cbpG4Jn1g==",
"dev": true, "dev": true,
"license": "MIT", "license": "MIT",
"dependencies": { "dependencies": {
"@inquirer/core": "^10.3.1", "@inquirer/core": "^10.3.2",
"@inquirer/type": "^3.0.10" "@inquirer/type": "^3.0.10"
}, },
"engines": { "engines": {
@@ -1594,13 +1586,13 @@
} }
}, },
"node_modules/@inquirer/number": { "node_modules/@inquirer/number": {
"version": "3.0.22", "version": "3.0.23",
"resolved": "https://registry.npmjs.org/@inquirer/number/-/number-3.0.22.tgz", "resolved": "https://registry.npmjs.org/@inquirer/number/-/number-3.0.23.tgz",
"integrity": "sha512-oAdMJXz++fX58HsIEYmvuf5EdE8CfBHHXjoi9cTcQzgFoHGZE+8+Y3P38MlaRMeBvAVnkWtAxMUF6urL2zYsbg==", "integrity": "sha512-5Smv0OK7K0KUzUfYUXDXQc9jrf8OHo4ktlEayFlelCjwMXz0299Y8OrI+lj7i4gCBY15UObk76q0QtxjzFcFcg==",
"dev": true, "dev": true,
"license": "MIT", "license": "MIT",
"dependencies": { "dependencies": {
"@inquirer/core": "^10.3.1", "@inquirer/core": "^10.3.2",
"@inquirer/type": "^3.0.10" "@inquirer/type": "^3.0.10"
}, },
"engines": { "engines": {
@@ -1616,14 +1608,14 @@
} }
}, },
"node_modules/@inquirer/password": { "node_modules/@inquirer/password": {
"version": "4.0.22", "version": "4.0.23",
"resolved": "https://registry.npmjs.org/@inquirer/password/-/password-4.0.22.tgz", "resolved": "https://registry.npmjs.org/@inquirer/password/-/password-4.0.23.tgz",
"integrity": "sha512-CbdqK1ioIr0Y3akx03k/+Twf+KSlHjn05hBL+rmubMll7PsDTGH0R4vfFkr+XrkB0FOHrjIwVP9crt49dgt+1g==", "integrity": "sha512-zREJHjhT5vJBMZX/IUbyI9zVtVfOLiTO66MrF/3GFZYZ7T4YILW5MSkEYHceSii/KtRk+4i3RE7E1CUXA2jHcA==",
"dev": true, "dev": true,
"license": "MIT", "license": "MIT",
"dependencies": { "dependencies": {
"@inquirer/ansi": "^1.0.2", "@inquirer/ansi": "^1.0.2",
"@inquirer/core": "^10.3.1", "@inquirer/core": "^10.3.2",
"@inquirer/type": "^3.0.10" "@inquirer/type": "^3.0.10"
}, },
"engines": { "engines": {
@@ -1644,7 +1636,6 @@
"integrity": "sha512-nqhDw2ZcAUrKNPwhjinJny903bRhI0rQhiDz1LksjeRxqa36i3l75+4iXbOy0rlDpLJGxqtgoPavQjmmyS5UJw==", "integrity": "sha512-nqhDw2ZcAUrKNPwhjinJny903bRhI0rQhiDz1LksjeRxqa36i3l75+4iXbOy0rlDpLJGxqtgoPavQjmmyS5UJw==",
"dev": true, "dev": true,
"license": "MIT", "license": "MIT",
"peer": true,
"dependencies": { "dependencies": {
"@inquirer/checkbox": "^4.2.1", "@inquirer/checkbox": "^4.2.1",
"@inquirer/confirm": "^5.1.14", "@inquirer/confirm": "^5.1.14",
@@ -1670,13 +1661,13 @@
} }
}, },
"node_modules/@inquirer/rawlist": { "node_modules/@inquirer/rawlist": {
"version": "4.1.10", "version": "4.1.11",
"resolved": "https://registry.npmjs.org/@inquirer/rawlist/-/rawlist-4.1.10.tgz", "resolved": "https://registry.npmjs.org/@inquirer/rawlist/-/rawlist-4.1.11.tgz",
"integrity": "sha512-Du4uidsgTMkoH5izgpfyauTL/ItVHOLsVdcY+wGeoGaG56BV+/JfmyoQGniyhegrDzXpfn3D+LFHaxMDRygcAw==", "integrity": "sha512-+LLQB8XGr3I5LZN/GuAHo+GpDJegQwuPARLChlMICNdwW7OwV2izlCSCxN6cqpL0sMXmbKbFcItJgdQq5EBXTw==",
"dev": true, "dev": true,
"license": "MIT", "license": "MIT",
"dependencies": { "dependencies": {
"@inquirer/core": "^10.3.1", "@inquirer/core": "^10.3.2",
"@inquirer/type": "^3.0.10", "@inquirer/type": "^3.0.10",
"yoctocolors-cjs": "^2.1.3" "yoctocolors-cjs": "^2.1.3"
}, },
@@ -1693,13 +1684,13 @@
} }
}, },
"node_modules/@inquirer/search": { "node_modules/@inquirer/search": {
"version": "3.2.1", "version": "3.2.2",
"resolved": "https://registry.npmjs.org/@inquirer/search/-/search-3.2.1.tgz", "resolved": "https://registry.npmjs.org/@inquirer/search/-/search-3.2.2.tgz",
"integrity": "sha512-cKiuUvETublmTmaOneEermfG2tI9ABpb7fW/LqzZAnSv4ZaJnbEis05lOkiBuYX5hNdnX0Q9ryOQyrNidb55WA==", "integrity": "sha512-p2bvRfENXCZdWF/U2BXvnSI9h+tuA8iNqtUKb9UWbmLYCRQxd8WkvwWvYn+3NgYaNwdUkHytJMGG4MMLucI1kA==",
"dev": true, "dev": true,
"license": "MIT", "license": "MIT",
"dependencies": { "dependencies": {
"@inquirer/core": "^10.3.1", "@inquirer/core": "^10.3.2",
"@inquirer/figures": "^1.0.15", "@inquirer/figures": "^1.0.15",
"@inquirer/type": "^3.0.10", "@inquirer/type": "^3.0.10",
"yoctocolors-cjs": "^2.1.3" "yoctocolors-cjs": "^2.1.3"
@@ -1717,14 +1708,14 @@
} }
}, },
"node_modules/@inquirer/select": { "node_modules/@inquirer/select": {
"version": "4.4.1", "version": "4.4.2",
"resolved": "https://registry.npmjs.org/@inquirer/select/-/select-4.4.1.tgz", "resolved": "https://registry.npmjs.org/@inquirer/select/-/select-4.4.2.tgz",
"integrity": "sha512-E9hbLU4XsNe2SAOSsFrtYtYQDVi1mfbqJrPDvXKnGlnRiApBdWMJz7r3J2Ff38AqULkPUD3XjQMD4492TymD7Q==", "integrity": "sha512-l4xMuJo55MAe+N7Qr4rX90vypFwCajSakx59qe/tMaC1aEHWLyw68wF4o0A4SLAY4E0nd+Vt+EyskeDIqu1M6w==",
"dev": true, "dev": true,
"license": "MIT", "license": "MIT",
"dependencies": { "dependencies": {
"@inquirer/ansi": "^1.0.2", "@inquirer/ansi": "^1.0.2",
"@inquirer/core": "^10.3.1", "@inquirer/core": "^10.3.2",
"@inquirer/figures": "^1.0.15", "@inquirer/figures": "^1.0.15",
"@inquirer/type": "^3.0.10", "@inquirer/type": "^3.0.10",
"yoctocolors-cjs": "^2.1.3" "yoctocolors-cjs": "^2.1.3"
@@ -3429,14 +3420,14 @@
] ]
}, },
"node_modules/@schematics/angular": { "node_modules/@schematics/angular": {
"version": "20.3.9", "version": "20.3.10",
"resolved": "https://registry.npmjs.org/@schematics/angular/-/angular-20.3.9.tgz", "resolved": "https://registry.npmjs.org/@schematics/angular/-/angular-20.3.10.tgz",
"integrity": "sha512-XkgTwGhhrx+MVi2+TFO32d6Es5Uezzx7Y7B/e2ulDlj08bizxQj+9wkeLt5+bR8JWODHpEntZn/Xd5WvXnODGA==", "integrity": "sha512-F9ntS2CElpoWlENf4b03nwdTcN9Ri0Nb4SAE/pfRw3In09h2UHxYyf1ex9jqQt70xltDg4wvyuc3mMs+JlSx9A==",
"dev": true, "dev": true,
"license": "MIT", "license": "MIT",
"dependencies": { "dependencies": {
"@angular-devkit/core": "20.3.9", "@angular-devkit/core": "20.3.10",
"@angular-devkit/schematics": "20.3.9", "@angular-devkit/schematics": "20.3.10",
"jsonc-parser": "3.3.1" "jsonc-parser": "3.3.1"
}, },
"engines": { "engines": {
@@ -3865,9 +3856,9 @@
"license": "MIT" "license": "MIT"
}, },
"node_modules/@types/jasmine": { "node_modules/@types/jasmine": {
"version": "5.1.12", "version": "5.1.13",
"resolved": "https://registry.npmjs.org/@types/jasmine/-/jasmine-5.1.12.tgz", "resolved": "https://registry.npmjs.org/@types/jasmine/-/jasmine-5.1.13.tgz",
"integrity": "sha512-1BzPxNsFDLDfj9InVR3IeY0ZVf4o9XV+4mDqoCfyPkbsA7dYyKAPAb2co6wLFlHcvxPlt1wShm7zQdV7uTfLGA==", "integrity": "sha512-MYCcDkruFc92LeYZux5BC0dmqo2jk+M5UIZ4/oFnAPCXN9mCcQhLyj7F3/Za7rocVyt5YRr1MmqJqFlvQ9LVcg==",
"dev": true, "dev": true,
"license": "MIT" "license": "MIT"
}, },
@@ -3877,7 +3868,6 @@
"integrity": "sha512-GNWcUTRBgIRJD5zj+Tq0fKOJ5XZajIiBroOF0yvj2bSU1WvNdYS/dn9UxwsujGW4JX06dnHyjV2y9rRaybH0iQ==", "integrity": "sha512-GNWcUTRBgIRJD5zj+Tq0fKOJ5XZajIiBroOF0yvj2bSU1WvNdYS/dn9UxwsujGW4JX06dnHyjV2y9rRaybH0iQ==",
"dev": true, "dev": true,
"license": "MIT", "license": "MIT",
"peer": true,
"dependencies": { "dependencies": {
"undici-types": "~7.16.0" "undici-types": "~7.16.0"
} }
@@ -4097,9 +4087,9 @@
} }
}, },
"node_modules/baseline-browser-mapping": { "node_modules/baseline-browser-mapping": {
"version": "2.8.26", "version": "2.8.29",
"resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.8.26.tgz", "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.8.29.tgz",
"integrity": "sha512-73lC1ugzwoaWCLJ1LvOgrR5xsMLTqSKIEoMHVtL9E/HNk0PXtTM76ZIm84856/SF7Nv8mPZxKoBsgpm0tR1u1Q==", "integrity": "sha512-sXdt2elaVnhpDNRDz+1BDx1JQoJRuNk7oVlAlbGiFkLikHCAQiccexF/9e91zVi6RCgqspl04aP+6Cnl9zRLrA==",
"dev": true, "dev": true,
"license": "Apache-2.0", "license": "Apache-2.0",
"bin": { "bin": {
@@ -4224,7 +4214,6 @@
} }
], ],
"license": "MIT", "license": "MIT",
"peer": true,
"dependencies": { "dependencies": {
"baseline-browser-mapping": "^2.8.25", "baseline-browser-mapping": "^2.8.25",
"caniuse-lite": "^1.0.30001754", "caniuse-lite": "^1.0.30001754",
@@ -4412,9 +4401,9 @@
} }
}, },
"node_modules/caniuse-lite": { "node_modules/caniuse-lite": {
"version": "1.0.30001754", "version": "1.0.30001755",
"resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001754.tgz", "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001755.tgz",
"integrity": "sha512-x6OeBXueoAceOmotzx3PO4Zpt4rzpeIFsSr6AAePTZxSkXiYDUmpypEl7e2+8NCd9bD7bXjqyef8CJYPC1jfxg==", "integrity": "sha512-44V+Jm6ctPj7R52Na4TLi3Zri4dWUljJd+RDm+j8LtNCc/ihLCT+X1TzoOAkRETEWqjuLnh9581Tl80FvK7jVA==",
"dev": true, "dev": true,
"funding": [ "funding": [
{ {
@@ -4992,9 +4981,9 @@
"license": "MIT" "license": "MIT"
}, },
"node_modules/electron-to-chromium": { "node_modules/electron-to-chromium": {
"version": "1.5.250", "version": "1.5.254",
"resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.250.tgz", "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.254.tgz",
"integrity": "sha512-/5UMj9IiGDMOFBnN4i7/Ry5onJrAGSbOGo3s9FEKmwobGq6xw832ccET0CE3CkkMBZ8GJSlUIesZofpyurqDXw==", "integrity": "sha512-DcUsWpVhv9svsKRxnSCZ86SjD+sp32SGidNB37KpqXJncp1mfUgKbHvBomE89WJDbfVKw1mdv5+ikrvd43r+Bg==",
"dev": true, "dev": true,
"license": "ISC" "license": "ISC"
}, },
@@ -5353,7 +5342,6 @@
"integrity": "sha512-DT9ck5YIRU+8GYzzU5kT3eHGA5iL+1Zd0EutOmTE9Dtk+Tvuzd23VBU+ec7HPNSTxXYO55gPV/hq4pSBJDjFpA==", "integrity": "sha512-DT9ck5YIRU+8GYzzU5kT3eHGA5iL+1Zd0EutOmTE9Dtk+Tvuzd23VBU+ec7HPNSTxXYO55gPV/hq4pSBJDjFpA==",
"dev": true, "dev": true,
"license": "MIT", "license": "MIT",
"peer": true,
"dependencies": { "dependencies": {
"accepts": "^2.0.0", "accepts": "^2.0.0",
"body-parser": "^2.2.0", "body-parser": "^2.2.0",
@@ -6317,8 +6305,7 @@
"resolved": "https://registry.npmjs.org/jasmine-core/-/jasmine-core-5.9.0.tgz", "resolved": "https://registry.npmjs.org/jasmine-core/-/jasmine-core-5.9.0.tgz",
"integrity": "sha512-OMUvF1iI6+gSRYOhMrH4QYothVLN9C3EJ6wm4g7zLJlnaTl8zbaPOr0bTw70l7QxkoM7sVFOWo83u9B2Fe2Zng==", "integrity": "sha512-OMUvF1iI6+gSRYOhMrH4QYothVLN9C3EJ6wm4g7zLJlnaTl8zbaPOr0bTw70l7QxkoM7sVFOWo83u9B2Fe2Zng==",
"dev": true, "dev": true,
"license": "MIT", "license": "MIT"
"peer": true
}, },
"node_modules/jiti": { "node_modules/jiti": {
"version": "2.6.1", "version": "2.6.1",
@@ -6412,7 +6399,6 @@
"integrity": "sha512-LrtUxbdvt1gOpo3gxG+VAJlJAEMhbWlM4YrFQgql98FwF7+K8K12LYO4hnDdUkNjeztYrOXEMqgTajSWgmtI/w==", "integrity": "sha512-LrtUxbdvt1gOpo3gxG+VAJlJAEMhbWlM4YrFQgql98FwF7+K8K12LYO4hnDdUkNjeztYrOXEMqgTajSWgmtI/w==",
"dev": true, "dev": true,
"license": "MIT", "license": "MIT",
"peer": true,
"dependencies": { "dependencies": {
"@colors/colors": "1.5.0", "@colors/colors": "1.5.0",
"body-parser": "^1.19.0", "body-parser": "^1.19.0",
@@ -7129,7 +7115,6 @@
"integrity": "sha512-SL0JY3DaxylDuo/MecFeiC+7pedM0zia33zl0vcjgwcq1q1FWWF1To9EIauPbl8GbMCU0R2e0uJ8bZunhYKD2g==", "integrity": "sha512-SL0JY3DaxylDuo/MecFeiC+7pedM0zia33zl0vcjgwcq1q1FWWF1To9EIauPbl8GbMCU0R2e0uJ8bZunhYKD2g==",
"dev": true, "dev": true,
"license": "MIT", "license": "MIT",
"peer": true,
"dependencies": { "dependencies": {
"cli-truncate": "^4.0.0", "cli-truncate": "^4.0.0",
"colorette": "^2.0.20", "colorette": "^2.0.20",
@@ -7743,13 +7728,13 @@
} }
}, },
"node_modules/mute-stream": { "node_modules/mute-stream": {
"version": "3.0.0", "version": "2.0.0",
"resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-3.0.0.tgz", "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-2.0.0.tgz",
"integrity": "sha512-dkEJPVvun4FryqBmZ5KhDo0K9iDXAwn08tMLDinNdRBNPcYEDiWYysLcc6k3mjTMlbP9KyylvRpd4wFtwrT9rw==", "integrity": "sha512-WWdIxpyjEn+FhQJQQv9aQAYlHoNVdzIzUySNV1gHUPDSdZJ3yZn7pAAbQcV7B56Mvu881q9FZV+0Vx2xC44VWA==",
"dev": true, "dev": true,
"license": "ISC", "license": "ISC",
"engines": { "engines": {
"node": "^20.17.0 || >=22.9.0" "node": "^18.17.0 || >=20.5.0"
} }
}, },
"node_modules/nanoid": { "node_modules/nanoid": {
@@ -8991,7 +8976,6 @@
"resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.2.tgz", "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.2.tgz",
"integrity": "sha512-dhKf903U/PQZY6boNNtAGdWbG85WAbjT/1xYoZIC7FAY0yWapOBQVsVrDl58W86//e1VpMNBtRV4MaXfdMySFA==", "integrity": "sha512-dhKf903U/PQZY6boNNtAGdWbG85WAbjT/1xYoZIC7FAY0yWapOBQVsVrDl58W86//e1VpMNBtRV4MaXfdMySFA==",
"license": "Apache-2.0", "license": "Apache-2.0",
"peer": true,
"dependencies": { "dependencies": {
"tslib": "^2.1.0" "tslib": "^2.1.0"
} }
@@ -9048,7 +9032,6 @@
"integrity": "sha512-9GUyuksjw70uNpb1MTYWsH9MQHOHY6kwfnkafC24+7aOMZn9+rVMBxRbLvw756mrBFbIsFg6Xw9IkR2Fnn3k+Q==", "integrity": "sha512-9GUyuksjw70uNpb1MTYWsH9MQHOHY6kwfnkafC24+7aOMZn9+rVMBxRbLvw756mrBFbIsFg6Xw9IkR2Fnn3k+Q==",
"dev": true, "dev": true,
"license": "MIT", "license": "MIT",
"peer": true,
"dependencies": { "dependencies": {
"chokidar": "^4.0.0", "chokidar": "^4.0.0",
"immutable": "^5.0.2", "immutable": "^5.0.2",
@@ -9903,8 +9886,7 @@
"version": "2.8.1", "version": "2.8.1",
"resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz",
"integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==",
"license": "0BSD", "license": "0BSD"
"peer": true
}, },
"node_modules/tuf-js": { "node_modules/tuf-js": {
"version": "3.1.0", "version": "3.1.0",
@@ -9942,7 +9924,6 @@
"integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==", "integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==",
"dev": true, "dev": true,
"license": "Apache-2.0", "license": "Apache-2.0",
"peer": true,
"bin": { "bin": {
"tsc": "bin/tsc", "tsc": "bin/tsc",
"tsserver": "bin/tsserver" "tsserver": "bin/tsserver"
@@ -10129,7 +10110,6 @@
"integrity": "sha512-uzcxnSDVjAopEUjljkWh8EIrg6tlzrjFUfMcR1EVsRDGwf/ccef0qQPRyOrROwhrTDaApueq+ja+KLPlzR/zdg==", "integrity": "sha512-uzcxnSDVjAopEUjljkWh8EIrg6tlzrjFUfMcR1EVsRDGwf/ccef0qQPRyOrROwhrTDaApueq+ja+KLPlzR/zdg==",
"dev": true, "dev": true,
"license": "MIT", "license": "MIT",
"peer": true,
"dependencies": { "dependencies": {
"esbuild": "^0.25.0", "esbuild": "^0.25.0",
"fdir": "^6.5.0", "fdir": "^6.5.0",
@@ -10532,7 +10512,6 @@
"integrity": "sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ==", "integrity": "sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ==",
"dev": true, "dev": true,
"license": "MIT", "license": "MIT",
"peer": true,
"funding": { "funding": {
"url": "https://github.com/sponsors/colinhacks" "url": "https://github.com/sponsors/colinhacks"
} }
@@ -10551,8 +10530,7 @@
"version": "0.15.1", "version": "0.15.1",
"resolved": "https://registry.npmjs.org/zone.js/-/zone.js-0.15.1.tgz", "resolved": "https://registry.npmjs.org/zone.js/-/zone.js-0.15.1.tgz",
"integrity": "sha512-XE96n56IQpJM7NAoXswY3XRLcWFW83xe0BiAOeMD7K5k5xecOeul3Qcpx6GqEeeHNkW5DWL5zOyTbEfB4eti8w==", "integrity": "sha512-XE96n56IQpJM7NAoXswY3XRLcWFW83xe0BiAOeMD7K5k5xecOeul3Qcpx6GqEeeHNkW5DWL5zOyTbEfB4eti8w==",
"license": "MIT", "license": "MIT"
"peer": true
} }
} }
} }

View File

@@ -30,7 +30,7 @@
"@angular/material": "^20.2.9", "@angular/material": "^20.2.9",
"@angular/platform-browser": "^20.3.0", "@angular/platform-browser": "^20.3.0",
"@angular/router": "^20.3.0", "@angular/router": "^20.3.0",
"@infinimotion/model-frontend": "^0.0.102", "@infinimotion/model-frontend": "^0.0.110",
"@tailwindcss/postcss": "^4.1.14", "@tailwindcss/postcss": "^4.1.14",
"angularx-qrcode": "^20.0.0", "angularx-qrcode": "^20.0.0",
"canvas-confetti": "^1.9.4", "canvas-confetti": "^1.9.4",

View File

@@ -62,6 +62,7 @@ import { PurchaseSuccessComponent } from './purchase-success/purchase-success.co
import { PurchaseFailedComponent } from './purchase-failed/purchase-failed.component'; import { PurchaseFailedComponent } from './purchase-failed/purchase-failed.component';
import { TicketSmallComponent } from './ticket-small/ticket-small.component'; import { TicketSmallComponent } from './ticket-small/ticket-small.component';
import { TicketListComponent } from './ticket-list/ticket-list.component'; import { TicketListComponent } from './ticket-list/ticket-list.component';
import { StatisticsComponent } from './statistics/statistics.component';
@NgModule({ @NgModule({
@@ -105,6 +106,7 @@ import { TicketListComponent } from './ticket-list/ticket-list.component';
PurchaseFailedComponent, PurchaseFailedComponent,
TicketSmallComponent, TicketSmallComponent,
TicketListComponent, TicketListComponent,
StatisticsComponent,
], ],
imports: [ imports: [
AppRoutingModule, AppRoutingModule,

View File

@@ -8,6 +8,7 @@ import { ScheduleComponent } from './schedule/schedule.component';
import { TheaterOverlayComponent} from './theater-overlay/theater-overlay.component'; import { TheaterOverlayComponent} from './theater-overlay/theater-overlay.component';
import { MovieImporterComponent } from './movie-importer/movie-importer.component'; import { MovieImporterComponent } from './movie-importer/movie-importer.component';
import { AuthGuard } from './auth.guard'; import { AuthGuard } from './auth.guard';
import {StatisticsComponent} from './statistics/statistics.component';
const routes: Routes = [ const routes: Routes = [
// Seiten ohne Layout // Seiten ohne Layout
@@ -28,6 +29,12 @@ const routes: Routes = [
data: { roles: ['admin'] }, // Array von erlaubten Rollen. Derzeit gäbe es 'admin' und 'employee' data: { roles: ['admin'] }, // Array von erlaubten Rollen. Derzeit gäbe es 'admin' und 'employee'
}, },
{ path: 'selection/performance/:id', component: TheaterOverlayComponent}, { path: 'selection/performance/:id', component: TheaterOverlayComponent},
{
path: 'admin/statistics',
component: StatisticsComponent,
canActivate: [AuthGuard],
data: { roles: ['admin'] }, // Array von erlaubten Rollen. Derzeit gäbe es 'admin' und 'employee'
},
], ],
}, },

View File

@@ -1,4 +1,13 @@
import { Kinosaal, Sitzplatz, Vorstellung, Film, OmdbSearch, Bestellung, Eintrittskarte } from '@infinimotion/model-frontend'; import {
Kinosaal,
Sitzplatz,
Vorstellung,
Film,
OmdbSearch,
Bestellung,
Eintrittskarte,
StatisticsReduced, StatisticsFilm
} from '@infinimotion/model-frontend';
import { HttpClient } from "@angular/common/http"; import { HttpClient } from "@angular/common/http";
import { inject, Injectable } from "@angular/core"; import { inject, Injectable } from "@angular/core";
import { Observable } from "rxjs"; import { Observable } from "rxjs";
@@ -155,7 +164,11 @@ export class HttpService {
/* GET /api/show-seats/{show} */ /* GET /api/show-seats/{show} */
getSeatsByShowId(show: number): Observable<{ seats: Sitzplatz[], reserved: Sitzplatz[], booked: Sitzplatz[] }> { getSeatsByShowId(show: number): Observable<{ seats: Sitzplatz[], reserved: Sitzplatz[], booked: Sitzplatz[] }> {
return this.http.get<{seats:Sitzplatz[], reserved:Sitzplatz[], booked:Sitzplatz[]}>(`${this.baseUrl}show-seats/${show}`); return this.http.get<{
seats: Sitzplatz[],
reserved: Sitzplatz[],
booked: Sitzplatz[]
}>(`${this.baseUrl}show-seats/${show}`);
} }
@@ -172,4 +185,12 @@ export class HttpService {
importMovie(imdbId: string): Observable<Film> { importMovie(imdbId: string): Observable<Film> {
return this.http.post<Film>(`${this.baseUrl}importer/import?id=${imdbId}`, {}) return this.http.post<Film>(`${this.baseUrl}importer/import?id=${imdbId}`, {})
} }
/* Statistics APIs */
/* GET /api/statistics/list */
getStatisticsList(): Observable<StatisticsReduced> {
return this.http.get<StatisticsReduced>(`${this.baseUrl}statistics/list`)
}
} }

View File

@@ -11,6 +11,7 @@ export class NavbarComponent {
navItems: { label:string, path:string }[] = [ navItems: { label:string, path:string }[] = [
{label: 'Programm', path: '/schedule'}, {label: 'Programm', path: '/schedule'},
{label: 'Film importieren', path: '/admin/movie-importer'}, {label: 'Film importieren', path: '/admin/movie-importer'},
{label: 'Statistiken', path: '/admin/statistics'},
] ]
private auth = inject(AuthService) private auth = inject(AuthService)

View File

@@ -0,0 +1,6 @@
<button
(click)="loadData()"
class="px-4 py-2 bg-indigo-500 text-white rounded hover:bg-indigo-600"
>
Liste laden
</button>

View File

@@ -0,0 +1,38 @@
import {Component, inject} from '@angular/core';
import {HttpService} from '../http.service';
import {
Eintrittskarte,
Film,
StatisticsFilm,
StatisticsFilmReduced,
StatisticsReduced, StatisticsVorstellungReduced,
Vorstellung
} from '@infinimotion/model-frontend';
@Component({
selector: 'app-statistics',
standalone: false,
templateUrl: './statistics.component.html',
styleUrl: './statistics.component.css',
})
export class StatisticsComponent {
private http = inject(HttpService);
private movies: StatisticsFilmReduced[] = []
private shows: StatisticsVorstellungReduced[] = []
ngOnInit(): void {
this.loadData();
}
loadData() {
this.http.getStatisticsList().subscribe({
next: (response) => {
this.movies = response.movies;
this.shows = response.shows;
console.log(this.movies)
console.log(this.shows)
},
error: (err) => console.error('Fehler beim Laden der Statistiken', err),
});
}
}