Spaces:
Sleeping
Sleeping
Ahmad Shallouf
commited on
Commit
Β·
88bf46c
1
Parent(s):
4bb8324
added control pael
Browse files- .DS_Store +0 -0
- README.md +27 -11
- docker-compose.yaml +0 -9
- package-lock.json +275 -354
- src/.DS_Store +0 -0
- src/app/.DS_Store +0 -0
- src/app/app.routes.ts +3 -0
- src/{assets β app/components}/.DS_Store +0 -0
- src/app/components/body/control-panel/admin-login/admin-login.component.css +43 -0
- src/app/components/body/control-panel/admin-login/admin-login.component.html +23 -0
- src/app/components/body/control-panel/admin-login/admin-login.component.spec.ts +23 -0
- src/app/components/body/control-panel/admin-login/admin-login.component.ts +39 -0
- src/app/components/body/control-panel/control-panel.component.css +36 -0
- src/app/components/body/control-panel/control-panel.component.html +144 -0
- src/app/components/body/control-panel/control-panel.component.spec.ts +23 -0
- src/app/components/body/control-panel/control-panel.component.ts +110 -0
- src/app/state_management/models/control-panel-entry.model.ts +16 -0
- src/app/state_management/models/leaderboard-entry.model.ts +0 -2
- src/app/state_management/models/state.model.ts +4 -0
- src/app/state_management/services/app-state.service.ts +61 -3
- src/app/state_management/services/authentication.service.spec.ts +16 -0
- src/app/state_management/services/authentication.service.ts +74 -0
- src/styles.css +1 -3
.DS_Store
CHANGED
|
Binary files a/.DS_Store and b/.DS_Store differ
|
|
|
README.md
CHANGED
|
@@ -1,11 +1,27 @@
|
|
| 1 |
-
|
| 2 |
-
|
| 3 |
-
|
| 4 |
-
|
| 5 |
-
|
| 6 |
-
|
| 7 |
-
|
| 8 |
-
|
| 9 |
-
|
| 10 |
-
|
| 11 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
# CompugeFrontend
|
| 2 |
+
|
| 3 |
+
This project was generated with [Angular CLI](https://github.com/angular/angular-cli) version 17.3.4.
|
| 4 |
+
|
| 5 |
+
## Development server
|
| 6 |
+
|
| 7 |
+
Run `ng serve` for a dev server. Navigate to `http://localhost:4200/`. The application will automatically reload if you change any of the source files.
|
| 8 |
+
|
| 9 |
+
## Code scaffolding
|
| 10 |
+
|
| 11 |
+
Run `ng generate component component-name` to generate a new component. You can also use `ng generate directive|pipe|service|class|guard|interface|enum|module`.
|
| 12 |
+
|
| 13 |
+
## Build
|
| 14 |
+
|
| 15 |
+
Run `ng build` to build the project. The build artifacts will be stored in the `dist/` directory.
|
| 16 |
+
|
| 17 |
+
## Running unit tests
|
| 18 |
+
|
| 19 |
+
Run `ng test` to execute the unit tests via [Karma](https://karma-runner.github.io).
|
| 20 |
+
|
| 21 |
+
## Running end-to-end tests
|
| 22 |
+
|
| 23 |
+
Run `ng e2e` to execute the end-to-end tests via a platform of your choice. To use this command, you need to first add a package that implements end-to-end testing capabilities.
|
| 24 |
+
|
| 25 |
+
## Further help
|
| 26 |
+
|
| 27 |
+
To get more help on the Angular CLI use `ng help` or go check out the [Angular CLI Overview and Command Reference](https://angular.io/cli) page.
|
docker-compose.yaml
DELETED
|
@@ -1,9 +0,0 @@
|
|
| 1 |
-
version: '3.7'
|
| 2 |
-
services:
|
| 3 |
-
frontend:
|
| 4 |
-
build:
|
| 5 |
-
context: .
|
| 6 |
-
args:
|
| 7 |
-
PROFILE: production
|
| 8 |
-
ports:
|
| 9 |
-
- '4200:4200' # Port mapping
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
package-lock.json
CHANGED
|
@@ -266,9 +266,9 @@
|
|
| 266 |
}
|
| 267 |
},
|
| 268 |
"node_modules/@angular/animations": {
|
| 269 |
-
"version": "17.3.
|
| 270 |
-
"resolved": "https://registry.npmjs.org/@angular/animations/-/animations-17.3.
|
| 271 |
-
"integrity": "sha512-
|
| 272 |
"dependencies": {
|
| 273 |
"tslib": "^2.3.0"
|
| 274 |
},
|
|
@@ -276,7 +276,7 @@
|
|
| 276 |
"node": "^18.13.0 || >=20.9.0"
|
| 277 |
},
|
| 278 |
"peerDependencies": {
|
| 279 |
-
"@angular/core": "17.3.
|
| 280 |
}
|
| 281 |
},
|
| 282 |
"node_modules/@angular/cdk": {
|
|
@@ -330,9 +330,9 @@
|
|
| 330 |
}
|
| 331 |
},
|
| 332 |
"node_modules/@angular/common": {
|
| 333 |
-
"version": "17.3.
|
| 334 |
-
"resolved": "https://registry.npmjs.org/@angular/common/-/common-17.3.
|
| 335 |
-
"integrity": "sha512-
|
| 336 |
"dependencies": {
|
| 337 |
"tslib": "^2.3.0"
|
| 338 |
},
|
|
@@ -340,14 +340,14 @@
|
|
| 340 |
"node": "^18.13.0 || >=20.9.0"
|
| 341 |
},
|
| 342 |
"peerDependencies": {
|
| 343 |
-
"@angular/core": "17.3.
|
| 344 |
"rxjs": "^6.5.3 || ^7.4.0"
|
| 345 |
}
|
| 346 |
},
|
| 347 |
"node_modules/@angular/compiler": {
|
| 348 |
-
"version": "17.3.
|
| 349 |
-
"resolved": "https://registry.npmjs.org/@angular/compiler/-/compiler-17.3.
|
| 350 |
-
"integrity": "sha512-
|
| 351 |
"dependencies": {
|
| 352 |
"tslib": "^2.3.0"
|
| 353 |
},
|
|
@@ -355,7 +355,7 @@
|
|
| 355 |
"node": "^18.13.0 || >=20.9.0"
|
| 356 |
},
|
| 357 |
"peerDependencies": {
|
| 358 |
-
"@angular/core": "17.3.
|
| 359 |
},
|
| 360 |
"peerDependenciesMeta": {
|
| 361 |
"@angular/core": {
|
|
@@ -364,9 +364,9 @@
|
|
| 364 |
}
|
| 365 |
},
|
| 366 |
"node_modules/@angular/compiler-cli": {
|
| 367 |
-
"version": "17.3.
|
| 368 |
-
"resolved": "https://registry.npmjs.org/@angular/compiler-cli/-/compiler-cli-17.3.
|
| 369 |
-
"integrity": "sha512-
|
| 370 |
"dev": true,
|
| 371 |
"dependencies": {
|
| 372 |
"@babel/core": "7.23.9",
|
|
@@ -387,7 +387,7 @@
|
|
| 387 |
"node": "^18.13.0 || >=20.9.0"
|
| 388 |
},
|
| 389 |
"peerDependencies": {
|
| 390 |
-
"@angular/compiler": "17.3.
|
| 391 |
"typescript": ">=5.2 <5.5"
|
| 392 |
}
|
| 393 |
},
|
|
@@ -437,9 +437,9 @@
|
|
| 437 |
}
|
| 438 |
},
|
| 439 |
"node_modules/@angular/core": {
|
| 440 |
-
"version": "17.3.
|
| 441 |
-
"resolved": "https://registry.npmjs.org/@angular/core/-/core-17.3.
|
| 442 |
-
"integrity": "sha512-
|
| 443 |
"dependencies": {
|
| 444 |
"tslib": "^2.3.0"
|
| 445 |
},
|
|
@@ -468,9 +468,9 @@
|
|
| 468 |
}
|
| 469 |
},
|
| 470 |
"node_modules/@angular/forms": {
|
| 471 |
-
"version": "17.3.
|
| 472 |
-
"resolved": "https://registry.npmjs.org/@angular/forms/-/forms-17.3.
|
| 473 |
-
"integrity": "sha512-
|
| 474 |
"dependencies": {
|
| 475 |
"tslib": "^2.3.0"
|
| 476 |
},
|
|
@@ -478,9 +478,9 @@
|
|
| 478 |
"node": "^18.13.0 || >=20.9.0"
|
| 479 |
},
|
| 480 |
"peerDependencies": {
|
| 481 |
-
"@angular/common": "17.3.
|
| 482 |
-
"@angular/core": "17.3.
|
| 483 |
-
"@angular/platform-browser": "17.3.
|
| 484 |
"rxjs": "^6.5.3 || ^7.4.0"
|
| 485 |
}
|
| 486 |
},
|
|
@@ -549,9 +549,9 @@
|
|
| 549 |
}
|
| 550 |
},
|
| 551 |
"node_modules/@angular/platform-browser": {
|
| 552 |
-
"version": "17.3.
|
| 553 |
-
"resolved": "https://registry.npmjs.org/@angular/platform-browser/-/platform-browser-17.3.
|
| 554 |
-
"integrity": "sha512-
|
| 555 |
"dependencies": {
|
| 556 |
"tslib": "^2.3.0"
|
| 557 |
},
|
|
@@ -559,9 +559,9 @@
|
|
| 559 |
"node": "^18.13.0 || >=20.9.0"
|
| 560 |
},
|
| 561 |
"peerDependencies": {
|
| 562 |
-
"@angular/animations": "17.3.
|
| 563 |
-
"@angular/common": "17.3.
|
| 564 |
-
"@angular/core": "17.3.
|
| 565 |
},
|
| 566 |
"peerDependenciesMeta": {
|
| 567 |
"@angular/animations": {
|
|
@@ -570,9 +570,9 @@
|
|
| 570 |
}
|
| 571 |
},
|
| 572 |
"node_modules/@angular/platform-browser-dynamic": {
|
| 573 |
-
"version": "17.3.
|
| 574 |
-
"resolved": "https://registry.npmjs.org/@angular/platform-browser-dynamic/-/platform-browser-dynamic-17.3.
|
| 575 |
-
"integrity": "sha512-
|
| 576 |
"dependencies": {
|
| 577 |
"tslib": "^2.3.0"
|
| 578 |
},
|
|
@@ -580,16 +580,16 @@
|
|
| 580 |
"node": "^18.13.0 || >=20.9.0"
|
| 581 |
},
|
| 582 |
"peerDependencies": {
|
| 583 |
-
"@angular/common": "17.3.
|
| 584 |
-
"@angular/compiler": "17.3.
|
| 585 |
-
"@angular/core": "17.3.
|
| 586 |
-
"@angular/platform-browser": "17.3.
|
| 587 |
}
|
| 588 |
},
|
| 589 |
"node_modules/@angular/router": {
|
| 590 |
-
"version": "17.3.
|
| 591 |
-
"resolved": "https://registry.npmjs.org/@angular/router/-/router-17.3.
|
| 592 |
-
"integrity": "sha512-
|
| 593 |
"dependencies": {
|
| 594 |
"tslib": "^2.3.0"
|
| 595 |
},
|
|
@@ -597,9 +597,9 @@
|
|
| 597 |
"node": "^18.13.0 || >=20.9.0"
|
| 598 |
},
|
| 599 |
"peerDependencies": {
|
| 600 |
-
"@angular/common": "17.3.
|
| 601 |
-
"@angular/core": "17.3.
|
| 602 |
-
"@angular/platform-browser": "17.3.
|
| 603 |
"rxjs": "^6.5.3 || ^7.4.0"
|
| 604 |
}
|
| 605 |
},
|
|
@@ -617,9 +617,9 @@
|
|
| 617 |
}
|
| 618 |
},
|
| 619 |
"node_modules/@babel/compat-data": {
|
| 620 |
-
"version": "7.
|
| 621 |
-
"resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.
|
| 622 |
-
"integrity": "sha512-
|
| 623 |
"dev": true,
|
| 624 |
"engines": {
|
| 625 |
"node": ">=6.9.0"
|
|
@@ -711,12 +711,12 @@
|
|
| 711 |
}
|
| 712 |
},
|
| 713 |
"node_modules/@babel/helper-compilation-targets": {
|
| 714 |
-
"version": "7.
|
| 715 |
-
"resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.
|
| 716 |
-
"integrity": "sha512-
|
| 717 |
"dev": true,
|
| 718 |
"dependencies": {
|
| 719 |
-
"@babel/compat-data": "^7.
|
| 720 |
"@babel/helper-validator-option": "^7.24.8",
|
| 721 |
"browserslist": "^4.23.1",
|
| 722 |
"lru-cache": "^5.1.1",
|
|
@@ -736,19 +736,17 @@
|
|
| 736 |
}
|
| 737 |
},
|
| 738 |
"node_modules/@babel/helper-create-class-features-plugin": {
|
| 739 |
-
"version": "7.
|
| 740 |
-
"resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.
|
| 741 |
-
"integrity": "sha512-
|
| 742 |
"dev": true,
|
| 743 |
"dependencies": {
|
| 744 |
"@babel/helper-annotate-as-pure": "^7.24.7",
|
| 745 |
-
"@babel/helper-environment-visitor": "^7.24.7",
|
| 746 |
-
"@babel/helper-function-name": "^7.24.7",
|
| 747 |
"@babel/helper-member-expression-to-functions": "^7.24.8",
|
| 748 |
"@babel/helper-optimise-call-expression": "^7.24.7",
|
| 749 |
-
"@babel/helper-replace-supers": "^7.
|
| 750 |
"@babel/helper-skip-transparent-expression-wrappers": "^7.24.7",
|
| 751 |
-
"@babel/
|
| 752 |
"semver": "^6.3.1"
|
| 753 |
},
|
| 754 |
"engines": {
|
|
@@ -770,18 +768,6 @@
|
|
| 770 |
"node": ">=6.9.0"
|
| 771 |
}
|
| 772 |
},
|
| 773 |
-
"node_modules/@babel/helper-create-class-features-plugin/node_modules/@babel/helper-split-export-declaration": {
|
| 774 |
-
"version": "7.24.7",
|
| 775 |
-
"resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.24.7.tgz",
|
| 776 |
-
"integrity": "sha512-oy5V7pD+UvfkEATUKvIjvIAH/xCzfsFVw7ygW2SI6NClZzquT+mwdTfgfdbUiceh6iQO0CHtCPsyze/MZ2YbAA==",
|
| 777 |
-
"dev": true,
|
| 778 |
-
"dependencies": {
|
| 779 |
-
"@babel/types": "^7.24.7"
|
| 780 |
-
},
|
| 781 |
-
"engines": {
|
| 782 |
-
"node": ">=6.9.0"
|
| 783 |
-
}
|
| 784 |
-
},
|
| 785 |
"node_modules/@babel/helper-create-class-features-plugin/node_modules/semver": {
|
| 786 |
"version": "6.3.1",
|
| 787 |
"resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
|
|
@@ -792,9 +778,9 @@
|
|
| 792 |
}
|
| 793 |
},
|
| 794 |
"node_modules/@babel/helper-create-regexp-features-plugin": {
|
| 795 |
-
"version": "7.
|
| 796 |
-
"resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.
|
| 797 |
-
"integrity": "sha512
|
| 798 |
"dev": true,
|
| 799 |
"dependencies": {
|
| 800 |
"@babel/helper-annotate-as-pure": "^7.24.7",
|
|
@@ -857,31 +843,6 @@
|
|
| 857 |
"node": ">=6.9.0"
|
| 858 |
}
|
| 859 |
},
|
| 860 |
-
"node_modules/@babel/helper-function-name": {
|
| 861 |
-
"version": "7.24.7",
|
| 862 |
-
"resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.24.7.tgz",
|
| 863 |
-
"integrity": "sha512-FyoJTsj/PEUWu1/TYRiXTIHc8lbw+TDYkZuoE43opPS5TrI7MyONBE1oNvfguEXAD9yhQRrVBnXdXzSLQl9XnA==",
|
| 864 |
-
"dev": true,
|
| 865 |
-
"dependencies": {
|
| 866 |
-
"@babel/template": "^7.24.7",
|
| 867 |
-
"@babel/types": "^7.24.7"
|
| 868 |
-
},
|
| 869 |
-
"engines": {
|
| 870 |
-
"node": ">=6.9.0"
|
| 871 |
-
}
|
| 872 |
-
},
|
| 873 |
-
"node_modules/@babel/helper-hoist-variables": {
|
| 874 |
-
"version": "7.24.7",
|
| 875 |
-
"resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.24.7.tgz",
|
| 876 |
-
"integrity": "sha512-MJJwhkoGy5c4ehfoRyrJ/owKeMl19U54h27YYftT0o2teQ3FJ3nQUf/I3LlJsX4l3qlw7WRXUmiyajvHXoTubQ==",
|
| 877 |
-
"dev": true,
|
| 878 |
-
"dependencies": {
|
| 879 |
-
"@babel/types": "^7.24.7"
|
| 880 |
-
},
|
| 881 |
-
"engines": {
|
| 882 |
-
"node": ">=6.9.0"
|
| 883 |
-
}
|
| 884 |
-
},
|
| 885 |
"node_modules/@babel/helper-member-expression-to-functions": {
|
| 886 |
"version": "7.24.8",
|
| 887 |
"resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.24.8.tgz",
|
|
@@ -909,16 +870,15 @@
|
|
| 909 |
}
|
| 910 |
},
|
| 911 |
"node_modules/@babel/helper-module-transforms": {
|
| 912 |
-
"version": "7.
|
| 913 |
-
"resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.
|
| 914 |
-
"integrity": "sha512-
|
| 915 |
"dev": true,
|
| 916 |
"dependencies": {
|
| 917 |
-
"@babel/helper-environment-visitor": "^7.24.7",
|
| 918 |
"@babel/helper-module-imports": "^7.24.7",
|
| 919 |
"@babel/helper-simple-access": "^7.24.7",
|
| 920 |
-
"@babel/helper-
|
| 921 |
-
"@babel/
|
| 922 |
},
|
| 923 |
"engines": {
|
| 924 |
"node": ">=6.9.0"
|
|
@@ -927,18 +887,6 @@
|
|
| 927 |
"@babel/core": "^7.0.0"
|
| 928 |
}
|
| 929 |
},
|
| 930 |
-
"node_modules/@babel/helper-module-transforms/node_modules/@babel/helper-split-export-declaration": {
|
| 931 |
-
"version": "7.24.7",
|
| 932 |
-
"resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.24.7.tgz",
|
| 933 |
-
"integrity": "sha512-oy5V7pD+UvfkEATUKvIjvIAH/xCzfsFVw7ygW2SI6NClZzquT+mwdTfgfdbUiceh6iQO0CHtCPsyze/MZ2YbAA==",
|
| 934 |
-
"dev": true,
|
| 935 |
-
"dependencies": {
|
| 936 |
-
"@babel/types": "^7.24.7"
|
| 937 |
-
},
|
| 938 |
-
"engines": {
|
| 939 |
-
"node": ">=6.9.0"
|
| 940 |
-
}
|
| 941 |
-
},
|
| 942 |
"node_modules/@babel/helper-optimise-call-expression": {
|
| 943 |
"version": "7.24.7",
|
| 944 |
"resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.24.7.tgz",
|
|
@@ -961,14 +909,14 @@
|
|
| 961 |
}
|
| 962 |
},
|
| 963 |
"node_modules/@babel/helper-remap-async-to-generator": {
|
| 964 |
-
"version": "7.
|
| 965 |
-
"resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.
|
| 966 |
-
"integrity": "sha512-
|
| 967 |
"dev": true,
|
| 968 |
"dependencies": {
|
| 969 |
"@babel/helper-annotate-as-pure": "^7.24.7",
|
| 970 |
-
"@babel/helper-
|
| 971 |
-
"@babel/
|
| 972 |
},
|
| 973 |
"engines": {
|
| 974 |
"node": ">=6.9.0"
|
|
@@ -990,14 +938,14 @@
|
|
| 990 |
}
|
| 991 |
},
|
| 992 |
"node_modules/@babel/helper-replace-supers": {
|
| 993 |
-
"version": "7.
|
| 994 |
-
"resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.
|
| 995 |
-
"integrity": "sha512-
|
| 996 |
"dev": true,
|
| 997 |
"dependencies": {
|
| 998 |
-
"@babel/helper-
|
| 999 |
-
"@babel/helper-
|
| 1000 |
-
"@babel/
|
| 1001 |
},
|
| 1002 |
"engines": {
|
| 1003 |
"node": ">=6.9.0"
|
|
@@ -1072,28 +1020,27 @@
|
|
| 1072 |
}
|
| 1073 |
},
|
| 1074 |
"node_modules/@babel/helper-wrap-function": {
|
| 1075 |
-
"version": "7.
|
| 1076 |
-
"resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.
|
| 1077 |
-
"integrity": "sha512-
|
| 1078 |
"dev": true,
|
| 1079 |
"dependencies": {
|
| 1080 |
-
"@babel/
|
| 1081 |
-
"@babel/
|
| 1082 |
-
"@babel/
|
| 1083 |
-
"@babel/types": "^7.24.7"
|
| 1084 |
},
|
| 1085 |
"engines": {
|
| 1086 |
"node": ">=6.9.0"
|
| 1087 |
}
|
| 1088 |
},
|
| 1089 |
"node_modules/@babel/helpers": {
|
| 1090 |
-
"version": "7.
|
| 1091 |
-
"resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.
|
| 1092 |
-
"integrity": "sha512-
|
| 1093 |
"dev": true,
|
| 1094 |
"dependencies": {
|
| 1095 |
-
"@babel/template": "^7.
|
| 1096 |
-
"@babel/types": "^7.
|
| 1097 |
},
|
| 1098 |
"engines": {
|
| 1099 |
"node": ">=6.9.0"
|
|
@@ -1115,10 +1062,13 @@
|
|
| 1115 |
}
|
| 1116 |
},
|
| 1117 |
"node_modules/@babel/parser": {
|
| 1118 |
-
"version": "7.
|
| 1119 |
-
"resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.
|
| 1120 |
-
"integrity": "sha512-
|
| 1121 |
"dev": true,
|
|
|
|
|
|
|
|
|
|
| 1122 |
"bin": {
|
| 1123 |
"parser": "bin/babel-parser.js"
|
| 1124 |
},
|
|
@@ -1127,12 +1077,12 @@
|
|
| 1127 |
}
|
| 1128 |
},
|
| 1129 |
"node_modules/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": {
|
| 1130 |
-
"version": "7.
|
| 1131 |
-
"resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.
|
| 1132 |
-
"integrity": "sha512-
|
| 1133 |
"dev": true,
|
| 1134 |
"dependencies": {
|
| 1135 |
-
"@babel/helper-plugin-utils": "^7.24.
|
| 1136 |
},
|
| 1137 |
"engines": {
|
| 1138 |
"node": ">=6.9.0"
|
|
@@ -1159,13 +1109,13 @@
|
|
| 1159 |
}
|
| 1160 |
},
|
| 1161 |
"node_modules/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": {
|
| 1162 |
-
"version": "7.
|
| 1163 |
-
"resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.
|
| 1164 |
-
"integrity": "sha512-
|
| 1165 |
"dev": true,
|
| 1166 |
"dependencies": {
|
| 1167 |
-
"@babel/helper-
|
| 1168 |
-
"@babel/
|
| 1169 |
},
|
| 1170 |
"engines": {
|
| 1171 |
"node": ">=6.9.0"
|
|
@@ -1487,12 +1437,12 @@
|
|
| 1487 |
}
|
| 1488 |
},
|
| 1489 |
"node_modules/@babel/plugin-transform-block-scoping": {
|
| 1490 |
-
"version": "7.
|
| 1491 |
-
"resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.
|
| 1492 |
-
"integrity": "sha512-
|
| 1493 |
"dev": true,
|
| 1494 |
"dependencies": {
|
| 1495 |
-
"@babel/helper-plugin-utils": "^7.24.
|
| 1496 |
},
|
| 1497 |
"engines": {
|
| 1498 |
"node": ">=6.9.0"
|
|
@@ -1535,18 +1485,16 @@
|
|
| 1535 |
}
|
| 1536 |
},
|
| 1537 |
"node_modules/@babel/plugin-transform-classes": {
|
| 1538 |
-
"version": "7.
|
| 1539 |
-
"resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.
|
| 1540 |
-
"integrity": "sha512-
|
| 1541 |
"dev": true,
|
| 1542 |
"dependencies": {
|
| 1543 |
"@babel/helper-annotate-as-pure": "^7.24.7",
|
| 1544 |
"@babel/helper-compilation-targets": "^7.24.8",
|
| 1545 |
-
"@babel/helper-environment-visitor": "^7.24.7",
|
| 1546 |
-
"@babel/helper-function-name": "^7.24.7",
|
| 1547 |
"@babel/helper-plugin-utils": "^7.24.8",
|
| 1548 |
-
"@babel/helper-replace-supers": "^7.
|
| 1549 |
-
"@babel/
|
| 1550 |
"globals": "^11.1.0"
|
| 1551 |
},
|
| 1552 |
"engines": {
|
|
@@ -1568,18 +1516,6 @@
|
|
| 1568 |
"node": ">=6.9.0"
|
| 1569 |
}
|
| 1570 |
},
|
| 1571 |
-
"node_modules/@babel/plugin-transform-classes/node_modules/@babel/helper-split-export-declaration": {
|
| 1572 |
-
"version": "7.24.7",
|
| 1573 |
-
"resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.24.7.tgz",
|
| 1574 |
-
"integrity": "sha512-oy5V7pD+UvfkEATUKvIjvIAH/xCzfsFVw7ygW2SI6NClZzquT+mwdTfgfdbUiceh6iQO0CHtCPsyze/MZ2YbAA==",
|
| 1575 |
-
"dev": true,
|
| 1576 |
-
"dependencies": {
|
| 1577 |
-
"@babel/types": "^7.24.7"
|
| 1578 |
-
},
|
| 1579 |
-
"engines": {
|
| 1580 |
-
"node": ">=6.9.0"
|
| 1581 |
-
}
|
| 1582 |
-
},
|
| 1583 |
"node_modules/@babel/plugin-transform-computed-properties": {
|
| 1584 |
"version": "7.24.7",
|
| 1585 |
"resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.24.7.tgz",
|
|
@@ -1707,14 +1643,14 @@
|
|
| 1707 |
}
|
| 1708 |
},
|
| 1709 |
"node_modules/@babel/plugin-transform-function-name": {
|
| 1710 |
-
"version": "7.
|
| 1711 |
-
"resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.
|
| 1712 |
-
"integrity": "sha512-
|
| 1713 |
"dev": true,
|
| 1714 |
"dependencies": {
|
| 1715 |
-
"@babel/helper-compilation-targets": "^7.24.
|
| 1716 |
-
"@babel/helper-
|
| 1717 |
-
"@babel/
|
| 1718 |
},
|
| 1719 |
"engines": {
|
| 1720 |
"node": ">=6.9.0"
|
|
@@ -1740,12 +1676,12 @@
|
|
| 1740 |
}
|
| 1741 |
},
|
| 1742 |
"node_modules/@babel/plugin-transform-literals": {
|
| 1743 |
-
"version": "7.
|
| 1744 |
-
"resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.
|
| 1745 |
-
"integrity": "sha512-
|
| 1746 |
"dev": true,
|
| 1747 |
"dependencies": {
|
| 1748 |
-
"@babel/helper-plugin-utils": "^7.24.
|
| 1749 |
},
|
| 1750 |
"engines": {
|
| 1751 |
"node": ">=6.9.0"
|
|
@@ -1819,15 +1755,15 @@
|
|
| 1819 |
}
|
| 1820 |
},
|
| 1821 |
"node_modules/@babel/plugin-transform-modules-systemjs": {
|
| 1822 |
-
"version": "7.
|
| 1823 |
-
"resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.
|
| 1824 |
-
"integrity": "sha512-
|
| 1825 |
"dev": true,
|
| 1826 |
"dependencies": {
|
| 1827 |
-
"@babel/helper-
|
| 1828 |
-
"@babel/helper-
|
| 1829 |
-
"@babel/helper-
|
| 1830 |
-
"@babel/
|
| 1831 |
},
|
| 1832 |
"engines": {
|
| 1833 |
"node": ">=6.9.0"
|
|
@@ -2393,33 +2329,30 @@
|
|
| 2393 |
}
|
| 2394 |
},
|
| 2395 |
"node_modules/@babel/template": {
|
| 2396 |
-
"version": "7.
|
| 2397 |
-
"resolved": "https://registry.npmjs.org/@babel/template/-/template-7.
|
| 2398 |
-
"integrity": "sha512-
|
| 2399 |
"dev": true,
|
| 2400 |
"dependencies": {
|
| 2401 |
"@babel/code-frame": "^7.24.7",
|
| 2402 |
-
"@babel/parser": "^7.
|
| 2403 |
-
"@babel/types": "^7.
|
| 2404 |
},
|
| 2405 |
"engines": {
|
| 2406 |
"node": ">=6.9.0"
|
| 2407 |
}
|
| 2408 |
},
|
| 2409 |
"node_modules/@babel/traverse": {
|
| 2410 |
-
"version": "7.
|
| 2411 |
-
"resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.
|
| 2412 |
-
"integrity": "sha512-
|
| 2413 |
"dev": true,
|
| 2414 |
"dependencies": {
|
| 2415 |
"@babel/code-frame": "^7.24.7",
|
| 2416 |
-
"@babel/generator": "^7.
|
| 2417 |
-
"@babel/
|
| 2418 |
-
"@babel/
|
| 2419 |
-
"@babel/
|
| 2420 |
-
"@babel/helper-split-export-declaration": "^7.24.7",
|
| 2421 |
-
"@babel/parser": "^7.24.8",
|
| 2422 |
-
"@babel/types": "^7.24.8",
|
| 2423 |
"debug": "^4.3.1",
|
| 2424 |
"globals": "^11.1.0"
|
| 2425 |
},
|
|
@@ -2428,12 +2361,12 @@
|
|
| 2428 |
}
|
| 2429 |
},
|
| 2430 |
"node_modules/@babel/traverse/node_modules/@babel/generator": {
|
| 2431 |
-
"version": "7.
|
| 2432 |
-
"resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.
|
| 2433 |
-
"integrity": "sha512-
|
| 2434 |
"dev": true,
|
| 2435 |
"dependencies": {
|
| 2436 |
-
"@babel/types": "^7.
|
| 2437 |
"@jridgewell/gen-mapping": "^0.3.5",
|
| 2438 |
"@jridgewell/trace-mapping": "^0.3.25",
|
| 2439 |
"jsesc": "^2.5.1"
|
|
@@ -2442,22 +2375,10 @@
|
|
| 2442 |
"node": ">=6.9.0"
|
| 2443 |
}
|
| 2444 |
},
|
| 2445 |
-
"node_modules/@babel/traverse/node_modules/@babel/helper-split-export-declaration": {
|
| 2446 |
-
"version": "7.24.7",
|
| 2447 |
-
"resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.24.7.tgz",
|
| 2448 |
-
"integrity": "sha512-oy5V7pD+UvfkEATUKvIjvIAH/xCzfsFVw7ygW2SI6NClZzquT+mwdTfgfdbUiceh6iQO0CHtCPsyze/MZ2YbAA==",
|
| 2449 |
-
"dev": true,
|
| 2450 |
-
"dependencies": {
|
| 2451 |
-
"@babel/types": "^7.24.7"
|
| 2452 |
-
},
|
| 2453 |
-
"engines": {
|
| 2454 |
-
"node": ">=6.9.0"
|
| 2455 |
-
}
|
| 2456 |
-
},
|
| 2457 |
"node_modules/@babel/types": {
|
| 2458 |
-
"version": "7.
|
| 2459 |
-
"resolved": "https://registry.npmjs.org/@babel/types/-/types-7.
|
| 2460 |
-
"integrity": "sha512-
|
| 2461 |
"dev": true,
|
| 2462 |
"dependencies": {
|
| 2463 |
"@babel/helper-string-parser": "^7.24.8",
|
|
@@ -4148,9 +4069,9 @@
|
|
| 4148 |
}
|
| 4149 |
},
|
| 4150 |
"node_modules/@rollup/rollup-android-arm-eabi": {
|
| 4151 |
-
"version": "4.
|
| 4152 |
-
"resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.
|
| 4153 |
-
"integrity": "sha512-
|
| 4154 |
"cpu": [
|
| 4155 |
"arm"
|
| 4156 |
],
|
|
@@ -4161,9 +4082,9 @@
|
|
| 4161 |
]
|
| 4162 |
},
|
| 4163 |
"node_modules/@rollup/rollup-android-arm64": {
|
| 4164 |
-
"version": "4.
|
| 4165 |
-
"resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.
|
| 4166 |
-
"integrity": "sha512-
|
| 4167 |
"cpu": [
|
| 4168 |
"arm64"
|
| 4169 |
],
|
|
@@ -4174,9 +4095,9 @@
|
|
| 4174 |
]
|
| 4175 |
},
|
| 4176 |
"node_modules/@rollup/rollup-darwin-arm64": {
|
| 4177 |
-
"version": "4.
|
| 4178 |
-
"resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.
|
| 4179 |
-
"integrity": "sha512-
|
| 4180 |
"cpu": [
|
| 4181 |
"arm64"
|
| 4182 |
],
|
|
@@ -4187,9 +4108,9 @@
|
|
| 4187 |
]
|
| 4188 |
},
|
| 4189 |
"node_modules/@rollup/rollup-darwin-x64": {
|
| 4190 |
-
"version": "4.
|
| 4191 |
-
"resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.
|
| 4192 |
-
"integrity": "sha512-
|
| 4193 |
"cpu": [
|
| 4194 |
"x64"
|
| 4195 |
],
|
|
@@ -4200,9 +4121,9 @@
|
|
| 4200 |
]
|
| 4201 |
},
|
| 4202 |
"node_modules/@rollup/rollup-linux-arm-gnueabihf": {
|
| 4203 |
-
"version": "4.
|
| 4204 |
-
"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.
|
| 4205 |
-
"integrity": "sha512-
|
| 4206 |
"cpu": [
|
| 4207 |
"arm"
|
| 4208 |
],
|
|
@@ -4213,9 +4134,9 @@
|
|
| 4213 |
]
|
| 4214 |
},
|
| 4215 |
"node_modules/@rollup/rollup-linux-arm-musleabihf": {
|
| 4216 |
-
"version": "4.
|
| 4217 |
-
"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.
|
| 4218 |
-
"integrity": "sha512-
|
| 4219 |
"cpu": [
|
| 4220 |
"arm"
|
| 4221 |
],
|
|
@@ -4226,9 +4147,9 @@
|
|
| 4226 |
]
|
| 4227 |
},
|
| 4228 |
"node_modules/@rollup/rollup-linux-arm64-gnu": {
|
| 4229 |
-
"version": "4.
|
| 4230 |
-
"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.
|
| 4231 |
-
"integrity": "sha512-
|
| 4232 |
"cpu": [
|
| 4233 |
"arm64"
|
| 4234 |
],
|
|
@@ -4239,9 +4160,9 @@
|
|
| 4239 |
]
|
| 4240 |
},
|
| 4241 |
"node_modules/@rollup/rollup-linux-arm64-musl": {
|
| 4242 |
-
"version": "4.
|
| 4243 |
-
"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.
|
| 4244 |
-
"integrity": "sha512
|
| 4245 |
"cpu": [
|
| 4246 |
"arm64"
|
| 4247 |
],
|
|
@@ -4252,9 +4173,9 @@
|
|
| 4252 |
]
|
| 4253 |
},
|
| 4254 |
"node_modules/@rollup/rollup-linux-powerpc64le-gnu": {
|
| 4255 |
-
"version": "4.
|
| 4256 |
-
"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.
|
| 4257 |
-
"integrity": "sha512-
|
| 4258 |
"cpu": [
|
| 4259 |
"ppc64"
|
| 4260 |
],
|
|
@@ -4265,9 +4186,9 @@
|
|
| 4265 |
]
|
| 4266 |
},
|
| 4267 |
"node_modules/@rollup/rollup-linux-riscv64-gnu": {
|
| 4268 |
-
"version": "4.
|
| 4269 |
-
"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.
|
| 4270 |
-
"integrity": "sha512-
|
| 4271 |
"cpu": [
|
| 4272 |
"riscv64"
|
| 4273 |
],
|
|
@@ -4278,9 +4199,9 @@
|
|
| 4278 |
]
|
| 4279 |
},
|
| 4280 |
"node_modules/@rollup/rollup-linux-s390x-gnu": {
|
| 4281 |
-
"version": "4.
|
| 4282 |
-
"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.
|
| 4283 |
-
"integrity": "sha512-
|
| 4284 |
"cpu": [
|
| 4285 |
"s390x"
|
| 4286 |
],
|
|
@@ -4291,9 +4212,9 @@
|
|
| 4291 |
]
|
| 4292 |
},
|
| 4293 |
"node_modules/@rollup/rollup-linux-x64-gnu": {
|
| 4294 |
-
"version": "4.
|
| 4295 |
-
"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.
|
| 4296 |
-
"integrity": "sha512-
|
| 4297 |
"cpu": [
|
| 4298 |
"x64"
|
| 4299 |
],
|
|
@@ -4304,9 +4225,9 @@
|
|
| 4304 |
]
|
| 4305 |
},
|
| 4306 |
"node_modules/@rollup/rollup-linux-x64-musl": {
|
| 4307 |
-
"version": "4.
|
| 4308 |
-
"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.
|
| 4309 |
-
"integrity": "sha512-
|
| 4310 |
"cpu": [
|
| 4311 |
"x64"
|
| 4312 |
],
|
|
@@ -4317,9 +4238,9 @@
|
|
| 4317 |
]
|
| 4318 |
},
|
| 4319 |
"node_modules/@rollup/rollup-win32-arm64-msvc": {
|
| 4320 |
-
"version": "4.
|
| 4321 |
-
"resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.
|
| 4322 |
-
"integrity": "sha512-
|
| 4323 |
"cpu": [
|
| 4324 |
"arm64"
|
| 4325 |
],
|
|
@@ -4330,9 +4251,9 @@
|
|
| 4330 |
]
|
| 4331 |
},
|
| 4332 |
"node_modules/@rollup/rollup-win32-ia32-msvc": {
|
| 4333 |
-
"version": "4.
|
| 4334 |
-
"resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.
|
| 4335 |
-
"integrity": "sha512-
|
| 4336 |
"cpu": [
|
| 4337 |
"ia32"
|
| 4338 |
],
|
|
@@ -4343,9 +4264,9 @@
|
|
| 4343 |
]
|
| 4344 |
},
|
| 4345 |
"node_modules/@rollup/rollup-win32-x64-msvc": {
|
| 4346 |
-
"version": "4.
|
| 4347 |
-
"resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.
|
| 4348 |
-
"integrity": "sha512-
|
| 4349 |
"cpu": [
|
| 4350 |
"x64"
|
| 4351 |
],
|
|
@@ -4560,9 +4481,9 @@
|
|
| 4560 |
}
|
| 4561 |
},
|
| 4562 |
"node_modules/@types/eslint": {
|
| 4563 |
-
"version": "
|
| 4564 |
-
"resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-
|
| 4565 |
-
"integrity": "sha512-
|
| 4566 |
"dev": true,
|
| 4567 |
"dependencies": {
|
| 4568 |
"@types/estree": "*",
|
|
@@ -4616,9 +4537,9 @@
|
|
| 4616 |
"dev": true
|
| 4617 |
},
|
| 4618 |
"node_modules/@types/http-proxy": {
|
| 4619 |
-
"version": "1.17.
|
| 4620 |
-
"resolved": "https://registry.npmjs.org/@types/http-proxy/-/http-proxy-1.17.
|
| 4621 |
-
"integrity": "sha512-
|
| 4622 |
"dev": true,
|
| 4623 |
"dependencies": {
|
| 4624 |
"@types/node": "*"
|
|
@@ -4643,12 +4564,12 @@
|
|
| 4643 |
"dev": true
|
| 4644 |
},
|
| 4645 |
"node_modules/@types/node": {
|
| 4646 |
-
"version": "
|
| 4647 |
-
"resolved": "https://registry.npmjs.org/@types/node/-/node-
|
| 4648 |
-
"integrity": "sha512-
|
| 4649 |
"dev": true,
|
| 4650 |
"dependencies": {
|
| 4651 |
-
"undici-types": "~
|
| 4652 |
}
|
| 4653 |
},
|
| 4654 |
"node_modules/@types/node-forge": {
|
|
@@ -4718,9 +4639,9 @@
|
|
| 4718 |
}
|
| 4719 |
},
|
| 4720 |
"node_modules/@types/ws": {
|
| 4721 |
-
"version": "8.5.
|
| 4722 |
-
"resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.5.
|
| 4723 |
-
"integrity": "sha512-
|
| 4724 |
"dev": true,
|
| 4725 |
"dependencies": {
|
| 4726 |
"@types/node": "*"
|
|
@@ -5440,9 +5361,9 @@
|
|
| 5440 |
}
|
| 5441 |
},
|
| 5442 |
"node_modules/browserslist": {
|
| 5443 |
-
"version": "4.23.
|
| 5444 |
-
"resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.23.
|
| 5445 |
-
"integrity": "sha512-
|
| 5446 |
"dev": true,
|
| 5447 |
"funding": [
|
| 5448 |
{
|
|
@@ -5459,9 +5380,9 @@
|
|
| 5459 |
}
|
| 5460 |
],
|
| 5461 |
"dependencies": {
|
| 5462 |
-
"caniuse-lite": "^1.0.
|
| 5463 |
-
"electron-to-chromium": "^1.4
|
| 5464 |
-
"node-releases": "^2.0.
|
| 5465 |
"update-browserslist-db": "^1.1.0"
|
| 5466 |
},
|
| 5467 |
"bin": {
|
|
@@ -5621,9 +5542,9 @@
|
|
| 5621 |
}
|
| 5622 |
},
|
| 5623 |
"node_modules/caniuse-lite": {
|
| 5624 |
-
"version": "1.0.
|
| 5625 |
-
"resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.
|
| 5626 |
-
"integrity": "sha512-
|
| 5627 |
"dev": true,
|
| 5628 |
"funding": [
|
| 5629 |
{
|
|
@@ -6060,12 +5981,12 @@
|
|
| 6060 |
}
|
| 6061 |
},
|
| 6062 |
"node_modules/core-js-compat": {
|
| 6063 |
-
"version": "3.
|
| 6064 |
-
"resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.
|
| 6065 |
-
"integrity": "sha512-
|
| 6066 |
"dev": true,
|
| 6067 |
"dependencies": {
|
| 6068 |
-
"browserslist": "^4.23.
|
| 6069 |
},
|
| 6070 |
"funding": {
|
| 6071 |
"type": "opencollective",
|
|
@@ -6340,9 +6261,9 @@
|
|
| 6340 |
}
|
| 6341 |
},
|
| 6342 |
"node_modules/debug": {
|
| 6343 |
-
"version": "4.3.
|
| 6344 |
-
"resolved": "https://registry.npmjs.org/debug/-/debug-4.3.
|
| 6345 |
-
"integrity": "sha512-
|
| 6346 |
"dev": true,
|
| 6347 |
"dependencies": {
|
| 6348 |
"ms": "2.1.2"
|
|
@@ -6541,9 +6462,9 @@
|
|
| 6541 |
"dev": true
|
| 6542 |
},
|
| 6543 |
"node_modules/electron-to-chromium": {
|
| 6544 |
-
"version": "1.
|
| 6545 |
-
"resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.
|
| 6546 |
-
"integrity": "sha512-
|
| 6547 |
"dev": true
|
| 6548 |
},
|
| 6549 |
"node_modules/emoji-regex": {
|
|
@@ -6624,9 +6545,9 @@
|
|
| 6624 |
}
|
| 6625 |
},
|
| 6626 |
"node_modules/enhanced-resolve": {
|
| 6627 |
-
"version": "5.17.
|
| 6628 |
-
"resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.17.
|
| 6629 |
-
"integrity": "sha512-
|
| 6630 |
"dev": true,
|
| 6631 |
"dependencies": {
|
| 6632 |
"graceful-fs": "^4.2.4",
|
|
@@ -7216,9 +7137,9 @@
|
|
| 7216 |
}
|
| 7217 |
},
|
| 7218 |
"node_modules/foreground-child": {
|
| 7219 |
-
"version": "3.
|
| 7220 |
-
"resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.
|
| 7221 |
-
"integrity": "sha512-
|
| 7222 |
"dev": true,
|
| 7223 |
"dependencies": {
|
| 7224 |
"cross-spawn": "^7.0.0",
|
|
@@ -7861,9 +7782,9 @@
|
|
| 7861 |
}
|
| 7862 |
},
|
| 7863 |
"node_modules/immutable": {
|
| 7864 |
-
"version": "4.3.
|
| 7865 |
-
"resolved": "https://registry.npmjs.org/immutable/-/immutable-4.3.
|
| 7866 |
-
"integrity": "sha512-
|
| 7867 |
"dev": true
|
| 7868 |
},
|
| 7869 |
"node_modules/import-fresh": {
|
|
@@ -8020,9 +7941,9 @@
|
|
| 8020 |
}
|
| 8021 |
},
|
| 8022 |
"node_modules/is-core-module": {
|
| 8023 |
-
"version": "2.
|
| 8024 |
-
"resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.
|
| 8025 |
-
"integrity": "sha512-
|
| 8026 |
"dev": true,
|
| 8027 |
"dependencies": {
|
| 8028 |
"hasown": "^2.0.2"
|
|
@@ -8464,9 +8385,9 @@
|
|
| 8464 |
]
|
| 8465 |
},
|
| 8466 |
"node_modules/karma": {
|
| 8467 |
-
"version": "6.4.
|
| 8468 |
-
"resolved": "https://registry.npmjs.org/karma/-/karma-6.4.
|
| 8469 |
-
"integrity": "sha512-
|
| 8470 |
"dev": true,
|
| 8471 |
"dependencies": {
|
| 8472 |
"@colors/colors": "1.5.0",
|
|
@@ -8693,9 +8614,9 @@
|
|
| 8693 |
}
|
| 8694 |
},
|
| 8695 |
"node_modules/launch-editor": {
|
| 8696 |
-
"version": "2.8.
|
| 8697 |
-
"resolved": "https://registry.npmjs.org/launch-editor/-/launch-editor-2.8.
|
| 8698 |
-
"integrity": "sha512-
|
| 8699 |
"dev": true,
|
| 8700 |
"dependencies": {
|
| 8701 |
"picocolors": "^1.0.0",
|
|
@@ -9264,9 +9185,9 @@
|
|
| 9264 |
"dev": true
|
| 9265 |
},
|
| 9266 |
"node_modules/minipass-json-stream": {
|
| 9267 |
-
"version": "1.0.
|
| 9268 |
-
"resolved": "https://registry.npmjs.org/minipass-json-stream/-/minipass-json-stream-1.0.
|
| 9269 |
-
"integrity": "sha512-
|
| 9270 |
"dev": true,
|
| 9271 |
"dependencies": {
|
| 9272 |
"jsonparse": "^1.3.1",
|
|
@@ -9639,9 +9560,9 @@
|
|
| 9639 |
}
|
| 9640 |
},
|
| 9641 |
"node_modules/node-releases": {
|
| 9642 |
-
"version": "2.0.
|
| 9643 |
-
"resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.
|
| 9644 |
-
"integrity": "sha512-
|
| 9645 |
"dev": true
|
| 9646 |
},
|
| 9647 |
"node_modules/nopt": {
|
|
@@ -11031,9 +10952,9 @@
|
|
| 11031 |
}
|
| 11032 |
},
|
| 11033 |
"node_modules/rollup": {
|
| 11034 |
-
"version": "4.
|
| 11035 |
-
"resolved": "https://registry.npmjs.org/rollup/-/rollup-4.
|
| 11036 |
-
"integrity": "sha512-
|
| 11037 |
"dev": true,
|
| 11038 |
"dependencies": {
|
| 11039 |
"@types/estree": "1.0.5"
|
|
@@ -11046,22 +10967,22 @@
|
|
| 11046 |
"npm": ">=8.0.0"
|
| 11047 |
},
|
| 11048 |
"optionalDependencies": {
|
| 11049 |
-
"@rollup/rollup-android-arm-eabi": "4.
|
| 11050 |
-
"@rollup/rollup-android-arm64": "4.
|
| 11051 |
-
"@rollup/rollup-darwin-arm64": "4.
|
| 11052 |
-
"@rollup/rollup-darwin-x64": "4.
|
| 11053 |
-
"@rollup/rollup-linux-arm-gnueabihf": "4.
|
| 11054 |
-
"@rollup/rollup-linux-arm-musleabihf": "4.
|
| 11055 |
-
"@rollup/rollup-linux-arm64-gnu": "4.
|
| 11056 |
-
"@rollup/rollup-linux-arm64-musl": "4.
|
| 11057 |
-
"@rollup/rollup-linux-powerpc64le-gnu": "4.
|
| 11058 |
-
"@rollup/rollup-linux-riscv64-gnu": "4.
|
| 11059 |
-
"@rollup/rollup-linux-s390x-gnu": "4.
|
| 11060 |
-
"@rollup/rollup-linux-x64-gnu": "4.
|
| 11061 |
-
"@rollup/rollup-linux-x64-musl": "4.
|
| 11062 |
-
"@rollup/rollup-win32-arm64-msvc": "4.
|
| 11063 |
-
"@rollup/rollup-win32-ia32-msvc": "4.
|
| 11064 |
-
"@rollup/rollup-win32-x64-msvc": "4.
|
| 11065 |
"fsevents": "~2.3.2"
|
| 11066 |
}
|
| 11067 |
},
|
|
@@ -12265,9 +12186,9 @@
|
|
| 12265 |
}
|
| 12266 |
},
|
| 12267 |
"node_modules/undici-types": {
|
| 12268 |
-
"version": "
|
| 12269 |
-
"resolved": "https://registry.npmjs.org/undici-types/-/undici-types-
|
| 12270 |
-
"integrity": "sha512-
|
| 12271 |
"dev": true
|
| 12272 |
},
|
| 12273 |
"node_modules/unicode-canonical-property-names-ecmascript": {
|
|
@@ -13430,9 +13351,9 @@
|
|
| 13430 |
}
|
| 13431 |
},
|
| 13432 |
"node_modules/zone.js": {
|
| 13433 |
-
"version": "0.14.
|
| 13434 |
-
"resolved": "https://registry.npmjs.org/zone.js/-/zone.js-0.14.
|
| 13435 |
-
"integrity": "sha512-
|
| 13436 |
}
|
| 13437 |
}
|
| 13438 |
}
|
|
|
|
| 266 |
}
|
| 267 |
},
|
| 268 |
"node_modules/@angular/animations": {
|
| 269 |
+
"version": "17.3.12",
|
| 270 |
+
"resolved": "https://registry.npmjs.org/@angular/animations/-/animations-17.3.12.tgz",
|
| 271 |
+
"integrity": "sha512-9hsdWF4gRRcVJtPcCcYLaX1CIyM9wUu6r+xRl6zU5hq8qhl35hig6ounz7CXFAzLf0WDBdM16bPHouVGaG76lg==",
|
| 272 |
"dependencies": {
|
| 273 |
"tslib": "^2.3.0"
|
| 274 |
},
|
|
|
|
| 276 |
"node": "^18.13.0 || >=20.9.0"
|
| 277 |
},
|
| 278 |
"peerDependencies": {
|
| 279 |
+
"@angular/core": "17.3.12"
|
| 280 |
}
|
| 281 |
},
|
| 282 |
"node_modules/@angular/cdk": {
|
|
|
|
| 330 |
}
|
| 331 |
},
|
| 332 |
"node_modules/@angular/common": {
|
| 333 |
+
"version": "17.3.12",
|
| 334 |
+
"resolved": "https://registry.npmjs.org/@angular/common/-/common-17.3.12.tgz",
|
| 335 |
+
"integrity": "sha512-vabJzvrx76XXFrm1RJZ6o/CyG32piTB/1sfFfKHdlH1QrmArb8It4gyk9oEjZ1IkAD0HvBWlfWmn+T6Vx3pdUw==",
|
| 336 |
"dependencies": {
|
| 337 |
"tslib": "^2.3.0"
|
| 338 |
},
|
|
|
|
| 340 |
"node": "^18.13.0 || >=20.9.0"
|
| 341 |
},
|
| 342 |
"peerDependencies": {
|
| 343 |
+
"@angular/core": "17.3.12",
|
| 344 |
"rxjs": "^6.5.3 || ^7.4.0"
|
| 345 |
}
|
| 346 |
},
|
| 347 |
"node_modules/@angular/compiler": {
|
| 348 |
+
"version": "17.3.12",
|
| 349 |
+
"resolved": "https://registry.npmjs.org/@angular/compiler/-/compiler-17.3.12.tgz",
|
| 350 |
+
"integrity": "sha512-vwI8oOL/gM+wPnptOVeBbMfZYwzRxQsovojZf+Zol9szl0k3SZ3FycWlxxXZGFu3VIEfrP6pXplTmyODS/Lt1w==",
|
| 351 |
"dependencies": {
|
| 352 |
"tslib": "^2.3.0"
|
| 353 |
},
|
|
|
|
| 355 |
"node": "^18.13.0 || >=20.9.0"
|
| 356 |
},
|
| 357 |
"peerDependencies": {
|
| 358 |
+
"@angular/core": "17.3.12"
|
| 359 |
},
|
| 360 |
"peerDependenciesMeta": {
|
| 361 |
"@angular/core": {
|
|
|
|
| 364 |
}
|
| 365 |
},
|
| 366 |
"node_modules/@angular/compiler-cli": {
|
| 367 |
+
"version": "17.3.12",
|
| 368 |
+
"resolved": "https://registry.npmjs.org/@angular/compiler-cli/-/compiler-cli-17.3.12.tgz",
|
| 369 |
+
"integrity": "sha512-1F8M7nWfChzurb7obbvuE7mJXlHtY1UG58pcwcomVtpPb+kPavgAO8OEvJHYBMV+bzSxkXt5UIwL9lt9jHUxZA==",
|
| 370 |
"dev": true,
|
| 371 |
"dependencies": {
|
| 372 |
"@babel/core": "7.23.9",
|
|
|
|
| 387 |
"node": "^18.13.0 || >=20.9.0"
|
| 388 |
},
|
| 389 |
"peerDependencies": {
|
| 390 |
+
"@angular/compiler": "17.3.12",
|
| 391 |
"typescript": ">=5.2 <5.5"
|
| 392 |
}
|
| 393 |
},
|
|
|
|
| 437 |
}
|
| 438 |
},
|
| 439 |
"node_modules/@angular/core": {
|
| 440 |
+
"version": "17.3.12",
|
| 441 |
+
"resolved": "https://registry.npmjs.org/@angular/core/-/core-17.3.12.tgz",
|
| 442 |
+
"integrity": "sha512-MuFt5yKi161JmauUta4Dh0m8ofwoq6Ino+KoOtkYMBGsSx+A7dSm+DUxxNwdj7+DNyg3LjVGCFgBFnq4g8z06A==",
|
| 443 |
"dependencies": {
|
| 444 |
"tslib": "^2.3.0"
|
| 445 |
},
|
|
|
|
| 468 |
}
|
| 469 |
},
|
| 470 |
"node_modules/@angular/forms": {
|
| 471 |
+
"version": "17.3.12",
|
| 472 |
+
"resolved": "https://registry.npmjs.org/@angular/forms/-/forms-17.3.12.tgz",
|
| 473 |
+
"integrity": "sha512-tV6r12Q3yEUlXwpVko4E+XscunTIpPkLbaiDn/MTL3Vxi2LZnsLgHyd/i38HaHN+e/H3B0a1ToSOhV5wf3ay4Q==",
|
| 474 |
"dependencies": {
|
| 475 |
"tslib": "^2.3.0"
|
| 476 |
},
|
|
|
|
| 478 |
"node": "^18.13.0 || >=20.9.0"
|
| 479 |
},
|
| 480 |
"peerDependencies": {
|
| 481 |
+
"@angular/common": "17.3.12",
|
| 482 |
+
"@angular/core": "17.3.12",
|
| 483 |
+
"@angular/platform-browser": "17.3.12",
|
| 484 |
"rxjs": "^6.5.3 || ^7.4.0"
|
| 485 |
}
|
| 486 |
},
|
|
|
|
| 549 |
}
|
| 550 |
},
|
| 551 |
"node_modules/@angular/platform-browser": {
|
| 552 |
+
"version": "17.3.12",
|
| 553 |
+
"resolved": "https://registry.npmjs.org/@angular/platform-browser/-/platform-browser-17.3.12.tgz",
|
| 554 |
+
"integrity": "sha512-DYY04ptWh/ulMHzd+y52WCE8QnEYGeIiW3hEIFjCN8z0kbIdFdUtEB0IK5vjNL3ejyhUmphcpeT5PYf3YXtqWQ==",
|
| 555 |
"dependencies": {
|
| 556 |
"tslib": "^2.3.0"
|
| 557 |
},
|
|
|
|
| 559 |
"node": "^18.13.0 || >=20.9.0"
|
| 560 |
},
|
| 561 |
"peerDependencies": {
|
| 562 |
+
"@angular/animations": "17.3.12",
|
| 563 |
+
"@angular/common": "17.3.12",
|
| 564 |
+
"@angular/core": "17.3.12"
|
| 565 |
},
|
| 566 |
"peerDependenciesMeta": {
|
| 567 |
"@angular/animations": {
|
|
|
|
| 570 |
}
|
| 571 |
},
|
| 572 |
"node_modules/@angular/platform-browser-dynamic": {
|
| 573 |
+
"version": "17.3.12",
|
| 574 |
+
"resolved": "https://registry.npmjs.org/@angular/platform-browser-dynamic/-/platform-browser-dynamic-17.3.12.tgz",
|
| 575 |
+
"integrity": "sha512-DQwV7B2x/DRLRDSisngZRdLqHdYbbrqZv2Hmu4ZbnNYaWPC8qvzgE/0CvY+UkDat3nCcsfwsMnlDeB6TL7/IaA==",
|
| 576 |
"dependencies": {
|
| 577 |
"tslib": "^2.3.0"
|
| 578 |
},
|
|
|
|
| 580 |
"node": "^18.13.0 || >=20.9.0"
|
| 581 |
},
|
| 582 |
"peerDependencies": {
|
| 583 |
+
"@angular/common": "17.3.12",
|
| 584 |
+
"@angular/compiler": "17.3.12",
|
| 585 |
+
"@angular/core": "17.3.12",
|
| 586 |
+
"@angular/platform-browser": "17.3.12"
|
| 587 |
}
|
| 588 |
},
|
| 589 |
"node_modules/@angular/router": {
|
| 590 |
+
"version": "17.3.12",
|
| 591 |
+
"resolved": "https://registry.npmjs.org/@angular/router/-/router-17.3.12.tgz",
|
| 592 |
+
"integrity": "sha512-dg7PHBSW9fmPKTVzwvHEeHZPZdpnUqW/U7kj8D29HTP9ur8zZnx9QcnbplwPeYb8yYa62JMnZSEel2X4PxdYBg==",
|
| 593 |
"dependencies": {
|
| 594 |
"tslib": "^2.3.0"
|
| 595 |
},
|
|
|
|
| 597 |
"node": "^18.13.0 || >=20.9.0"
|
| 598 |
},
|
| 599 |
"peerDependencies": {
|
| 600 |
+
"@angular/common": "17.3.12",
|
| 601 |
+
"@angular/core": "17.3.12",
|
| 602 |
+
"@angular/platform-browser": "17.3.12",
|
| 603 |
"rxjs": "^6.5.3 || ^7.4.0"
|
| 604 |
}
|
| 605 |
},
|
|
|
|
| 617 |
}
|
| 618 |
},
|
| 619 |
"node_modules/@babel/compat-data": {
|
| 620 |
+
"version": "7.25.2",
|
| 621 |
+
"resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.25.2.tgz",
|
| 622 |
+
"integrity": "sha512-bYcppcpKBvX4znYaPEeFau03bp89ShqNMLs+rmdptMw+heSZh9+z84d2YG+K7cYLbWwzdjtDoW/uqZmPjulClQ==",
|
| 623 |
"dev": true,
|
| 624 |
"engines": {
|
| 625 |
"node": ">=6.9.0"
|
|
|
|
| 711 |
}
|
| 712 |
},
|
| 713 |
"node_modules/@babel/helper-compilation-targets": {
|
| 714 |
+
"version": "7.25.2",
|
| 715 |
+
"resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.25.2.tgz",
|
| 716 |
+
"integrity": "sha512-U2U5LsSaZ7TAt3cfaymQ8WHh0pxvdHoEk6HVpaexxixjyEquMh0L0YNJNM6CTGKMXV1iksi0iZkGw4AcFkPaaw==",
|
| 717 |
"dev": true,
|
| 718 |
"dependencies": {
|
| 719 |
+
"@babel/compat-data": "^7.25.2",
|
| 720 |
"@babel/helper-validator-option": "^7.24.8",
|
| 721 |
"browserslist": "^4.23.1",
|
| 722 |
"lru-cache": "^5.1.1",
|
|
|
|
| 736 |
}
|
| 737 |
},
|
| 738 |
"node_modules/@babel/helper-create-class-features-plugin": {
|
| 739 |
+
"version": "7.25.0",
|
| 740 |
+
"resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.25.0.tgz",
|
| 741 |
+
"integrity": "sha512-GYM6BxeQsETc9mnct+nIIpf63SAyzvyYN7UB/IlTyd+MBg06afFGp0mIeUqGyWgS2mxad6vqbMrHVlaL3m70sQ==",
|
| 742 |
"dev": true,
|
| 743 |
"dependencies": {
|
| 744 |
"@babel/helper-annotate-as-pure": "^7.24.7",
|
|
|
|
|
|
|
| 745 |
"@babel/helper-member-expression-to-functions": "^7.24.8",
|
| 746 |
"@babel/helper-optimise-call-expression": "^7.24.7",
|
| 747 |
+
"@babel/helper-replace-supers": "^7.25.0",
|
| 748 |
"@babel/helper-skip-transparent-expression-wrappers": "^7.24.7",
|
| 749 |
+
"@babel/traverse": "^7.25.0",
|
| 750 |
"semver": "^6.3.1"
|
| 751 |
},
|
| 752 |
"engines": {
|
|
|
|
| 768 |
"node": ">=6.9.0"
|
| 769 |
}
|
| 770 |
},
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 771 |
"node_modules/@babel/helper-create-class-features-plugin/node_modules/semver": {
|
| 772 |
"version": "6.3.1",
|
| 773 |
"resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
|
|
|
|
| 778 |
}
|
| 779 |
},
|
| 780 |
"node_modules/@babel/helper-create-regexp-features-plugin": {
|
| 781 |
+
"version": "7.25.2",
|
| 782 |
+
"resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.25.2.tgz",
|
| 783 |
+
"integrity": "sha512-+wqVGP+DFmqwFD3EH6TMTfUNeqDehV3E/dl+Sd54eaXqm17tEUNbEIn4sVivVowbvUpOtIGxdo3GoXyDH9N/9g==",
|
| 784 |
"dev": true,
|
| 785 |
"dependencies": {
|
| 786 |
"@babel/helper-annotate-as-pure": "^7.24.7",
|
|
|
|
| 843 |
"node": ">=6.9.0"
|
| 844 |
}
|
| 845 |
},
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 846 |
"node_modules/@babel/helper-member-expression-to-functions": {
|
| 847 |
"version": "7.24.8",
|
| 848 |
"resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.24.8.tgz",
|
|
|
|
| 870 |
}
|
| 871 |
},
|
| 872 |
"node_modules/@babel/helper-module-transforms": {
|
| 873 |
+
"version": "7.25.2",
|
| 874 |
+
"resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.25.2.tgz",
|
| 875 |
+
"integrity": "sha512-BjyRAbix6j/wv83ftcVJmBt72QtHI56C7JXZoG2xATiLpmoC7dpd8WnkikExHDVPpi/3qCmO6WY1EaXOluiecQ==",
|
| 876 |
"dev": true,
|
| 877 |
"dependencies": {
|
|
|
|
| 878 |
"@babel/helper-module-imports": "^7.24.7",
|
| 879 |
"@babel/helper-simple-access": "^7.24.7",
|
| 880 |
+
"@babel/helper-validator-identifier": "^7.24.7",
|
| 881 |
+
"@babel/traverse": "^7.25.2"
|
| 882 |
},
|
| 883 |
"engines": {
|
| 884 |
"node": ">=6.9.0"
|
|
|
|
| 887 |
"@babel/core": "^7.0.0"
|
| 888 |
}
|
| 889 |
},
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 890 |
"node_modules/@babel/helper-optimise-call-expression": {
|
| 891 |
"version": "7.24.7",
|
| 892 |
"resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.24.7.tgz",
|
|
|
|
| 909 |
}
|
| 910 |
},
|
| 911 |
"node_modules/@babel/helper-remap-async-to-generator": {
|
| 912 |
+
"version": "7.25.0",
|
| 913 |
+
"resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.25.0.tgz",
|
| 914 |
+
"integrity": "sha512-NhavI2eWEIz/H9dbrG0TuOicDhNexze43i5z7lEqwYm0WEZVTwnPpA0EafUTP7+6/W79HWIP2cTe3Z5NiSTVpw==",
|
| 915 |
"dev": true,
|
| 916 |
"dependencies": {
|
| 917 |
"@babel/helper-annotate-as-pure": "^7.24.7",
|
| 918 |
+
"@babel/helper-wrap-function": "^7.25.0",
|
| 919 |
+
"@babel/traverse": "^7.25.0"
|
| 920 |
},
|
| 921 |
"engines": {
|
| 922 |
"node": ">=6.9.0"
|
|
|
|
| 938 |
}
|
| 939 |
},
|
| 940 |
"node_modules/@babel/helper-replace-supers": {
|
| 941 |
+
"version": "7.25.0",
|
| 942 |
+
"resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.25.0.tgz",
|
| 943 |
+
"integrity": "sha512-q688zIvQVYtZu+i2PsdIu/uWGRpfxzr5WESsfpShfZECkO+d2o+WROWezCi/Q6kJ0tfPa5+pUGUlfx2HhrA3Bg==",
|
| 944 |
"dev": true,
|
| 945 |
"dependencies": {
|
| 946 |
+
"@babel/helper-member-expression-to-functions": "^7.24.8",
|
| 947 |
+
"@babel/helper-optimise-call-expression": "^7.24.7",
|
| 948 |
+
"@babel/traverse": "^7.25.0"
|
| 949 |
},
|
| 950 |
"engines": {
|
| 951 |
"node": ">=6.9.0"
|
|
|
|
| 1020 |
}
|
| 1021 |
},
|
| 1022 |
"node_modules/@babel/helper-wrap-function": {
|
| 1023 |
+
"version": "7.25.0",
|
| 1024 |
+
"resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.25.0.tgz",
|
| 1025 |
+
"integrity": "sha512-s6Q1ebqutSiZnEjaofc/UKDyC4SbzV5n5SrA2Gq8UawLycr3i04f1dX4OzoQVnexm6aOCh37SQNYlJ/8Ku+PMQ==",
|
| 1026 |
"dev": true,
|
| 1027 |
"dependencies": {
|
| 1028 |
+
"@babel/template": "^7.25.0",
|
| 1029 |
+
"@babel/traverse": "^7.25.0",
|
| 1030 |
+
"@babel/types": "^7.25.0"
|
|
|
|
| 1031 |
},
|
| 1032 |
"engines": {
|
| 1033 |
"node": ">=6.9.0"
|
| 1034 |
}
|
| 1035 |
},
|
| 1036 |
"node_modules/@babel/helpers": {
|
| 1037 |
+
"version": "7.25.0",
|
| 1038 |
+
"resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.25.0.tgz",
|
| 1039 |
+
"integrity": "sha512-MjgLZ42aCm0oGjJj8CtSM3DB8NOOf8h2l7DCTePJs29u+v7yO/RBX9nShlKMgFnRks/Q4tBAe7Hxnov9VkGwLw==",
|
| 1040 |
"dev": true,
|
| 1041 |
"dependencies": {
|
| 1042 |
+
"@babel/template": "^7.25.0",
|
| 1043 |
+
"@babel/types": "^7.25.0"
|
| 1044 |
},
|
| 1045 |
"engines": {
|
| 1046 |
"node": ">=6.9.0"
|
|
|
|
| 1062 |
}
|
| 1063 |
},
|
| 1064 |
"node_modules/@babel/parser": {
|
| 1065 |
+
"version": "7.25.3",
|
| 1066 |
+
"resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.25.3.tgz",
|
| 1067 |
+
"integrity": "sha512-iLTJKDbJ4hMvFPgQwwsVoxtHyWpKKPBrxkANrSYewDPaPpT5py5yeVkgPIJ7XYXhndxJpaA3PyALSXQ7u8e/Dw==",
|
| 1068 |
"dev": true,
|
| 1069 |
+
"dependencies": {
|
| 1070 |
+
"@babel/types": "^7.25.2"
|
| 1071 |
+
},
|
| 1072 |
"bin": {
|
| 1073 |
"parser": "bin/babel-parser.js"
|
| 1074 |
},
|
|
|
|
| 1077 |
}
|
| 1078 |
},
|
| 1079 |
"node_modules/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": {
|
| 1080 |
+
"version": "7.25.0",
|
| 1081 |
+
"resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.25.0.tgz",
|
| 1082 |
+
"integrity": "sha512-lXwdNZtTmeVOOFtwM/WDe7yg1PL8sYhRk/XH0FzbR2HDQ0xC+EnQ/JHeoMYSavtU115tnUk0q9CDyq8si+LMAA==",
|
| 1083 |
"dev": true,
|
| 1084 |
"dependencies": {
|
| 1085 |
+
"@babel/helper-plugin-utils": "^7.24.8"
|
| 1086 |
},
|
| 1087 |
"engines": {
|
| 1088 |
"node": ">=6.9.0"
|
|
|
|
| 1109 |
}
|
| 1110 |
},
|
| 1111 |
"node_modules/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": {
|
| 1112 |
+
"version": "7.25.0",
|
| 1113 |
+
"resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.25.0.tgz",
|
| 1114 |
+
"integrity": "sha512-tggFrk1AIShG/RUQbEwt2Tr/E+ObkfwrPjR6BjbRvsx24+PSjK8zrq0GWPNCjo8qpRx4DuJzlcvWJqlm+0h3kw==",
|
| 1115 |
"dev": true,
|
| 1116 |
"dependencies": {
|
| 1117 |
+
"@babel/helper-plugin-utils": "^7.24.8",
|
| 1118 |
+
"@babel/traverse": "^7.25.0"
|
| 1119 |
},
|
| 1120 |
"engines": {
|
| 1121 |
"node": ">=6.9.0"
|
|
|
|
| 1437 |
}
|
| 1438 |
},
|
| 1439 |
"node_modules/@babel/plugin-transform-block-scoping": {
|
| 1440 |
+
"version": "7.25.0",
|
| 1441 |
+
"resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.25.0.tgz",
|
| 1442 |
+
"integrity": "sha512-yBQjYoOjXlFv9nlXb3f1casSHOZkWr29NX+zChVanLg5Nc157CrbEX9D7hxxtTpuFy7Q0YzmmWfJxzvps4kXrQ==",
|
| 1443 |
"dev": true,
|
| 1444 |
"dependencies": {
|
| 1445 |
+
"@babel/helper-plugin-utils": "^7.24.8"
|
| 1446 |
},
|
| 1447 |
"engines": {
|
| 1448 |
"node": ">=6.9.0"
|
|
|
|
| 1485 |
}
|
| 1486 |
},
|
| 1487 |
"node_modules/@babel/plugin-transform-classes": {
|
| 1488 |
+
"version": "7.25.0",
|
| 1489 |
+
"resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.25.0.tgz",
|
| 1490 |
+
"integrity": "sha512-xyi6qjr/fYU304fiRwFbekzkqVJZ6A7hOjWZd+89FVcBqPV3S9Wuozz82xdpLspckeaafntbzglaW4pqpzvtSw==",
|
| 1491 |
"dev": true,
|
| 1492 |
"dependencies": {
|
| 1493 |
"@babel/helper-annotate-as-pure": "^7.24.7",
|
| 1494 |
"@babel/helper-compilation-targets": "^7.24.8",
|
|
|
|
|
|
|
| 1495 |
"@babel/helper-plugin-utils": "^7.24.8",
|
| 1496 |
+
"@babel/helper-replace-supers": "^7.25.0",
|
| 1497 |
+
"@babel/traverse": "^7.25.0",
|
| 1498 |
"globals": "^11.1.0"
|
| 1499 |
},
|
| 1500 |
"engines": {
|
|
|
|
| 1516 |
"node": ">=6.9.0"
|
| 1517 |
}
|
| 1518 |
},
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1519 |
"node_modules/@babel/plugin-transform-computed-properties": {
|
| 1520 |
"version": "7.24.7",
|
| 1521 |
"resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.24.7.tgz",
|
|
|
|
| 1643 |
}
|
| 1644 |
},
|
| 1645 |
"node_modules/@babel/plugin-transform-function-name": {
|
| 1646 |
+
"version": "7.25.1",
|
| 1647 |
+
"resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.25.1.tgz",
|
| 1648 |
+
"integrity": "sha512-TVVJVdW9RKMNgJJlLtHsKDTydjZAbwIsn6ySBPQaEAUU5+gVvlJt/9nRmqVbsV/IBanRjzWoaAQKLoamWVOUuA==",
|
| 1649 |
"dev": true,
|
| 1650 |
"dependencies": {
|
| 1651 |
+
"@babel/helper-compilation-targets": "^7.24.8",
|
| 1652 |
+
"@babel/helper-plugin-utils": "^7.24.8",
|
| 1653 |
+
"@babel/traverse": "^7.25.1"
|
| 1654 |
},
|
| 1655 |
"engines": {
|
| 1656 |
"node": ">=6.9.0"
|
|
|
|
| 1676 |
}
|
| 1677 |
},
|
| 1678 |
"node_modules/@babel/plugin-transform-literals": {
|
| 1679 |
+
"version": "7.25.2",
|
| 1680 |
+
"resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.25.2.tgz",
|
| 1681 |
+
"integrity": "sha512-HQI+HcTbm9ur3Z2DkO+jgESMAMcYLuN/A7NRw9juzxAezN9AvqvUTnpKP/9kkYANz6u7dFlAyOu44ejuGySlfw==",
|
| 1682 |
"dev": true,
|
| 1683 |
"dependencies": {
|
| 1684 |
+
"@babel/helper-plugin-utils": "^7.24.8"
|
| 1685 |
},
|
| 1686 |
"engines": {
|
| 1687 |
"node": ">=6.9.0"
|
|
|
|
| 1755 |
}
|
| 1756 |
},
|
| 1757 |
"node_modules/@babel/plugin-transform-modules-systemjs": {
|
| 1758 |
+
"version": "7.25.0",
|
| 1759 |
+
"resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.25.0.tgz",
|
| 1760 |
+
"integrity": "sha512-YPJfjQPDXxyQWg/0+jHKj1llnY5f/R6a0p/vP4lPymxLu7Lvl4k2WMitqi08yxwQcCVUUdG9LCUj4TNEgAp3Jw==",
|
| 1761 |
"dev": true,
|
| 1762 |
"dependencies": {
|
| 1763 |
+
"@babel/helper-module-transforms": "^7.25.0",
|
| 1764 |
+
"@babel/helper-plugin-utils": "^7.24.8",
|
| 1765 |
+
"@babel/helper-validator-identifier": "^7.24.7",
|
| 1766 |
+
"@babel/traverse": "^7.25.0"
|
| 1767 |
},
|
| 1768 |
"engines": {
|
| 1769 |
"node": ">=6.9.0"
|
|
|
|
| 2329 |
}
|
| 2330 |
},
|
| 2331 |
"node_modules/@babel/template": {
|
| 2332 |
+
"version": "7.25.0",
|
| 2333 |
+
"resolved": "https://registry.npmjs.org/@babel/template/-/template-7.25.0.tgz",
|
| 2334 |
+
"integrity": "sha512-aOOgh1/5XzKvg1jvVz7AVrx2piJ2XBi227DHmbY6y+bM9H2FlN+IfecYu4Xl0cNiiVejlsCri89LUsbj8vJD9Q==",
|
| 2335 |
"dev": true,
|
| 2336 |
"dependencies": {
|
| 2337 |
"@babel/code-frame": "^7.24.7",
|
| 2338 |
+
"@babel/parser": "^7.25.0",
|
| 2339 |
+
"@babel/types": "^7.25.0"
|
| 2340 |
},
|
| 2341 |
"engines": {
|
| 2342 |
"node": ">=6.9.0"
|
| 2343 |
}
|
| 2344 |
},
|
| 2345 |
"node_modules/@babel/traverse": {
|
| 2346 |
+
"version": "7.25.3",
|
| 2347 |
+
"resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.25.3.tgz",
|
| 2348 |
+
"integrity": "sha512-HefgyP1x754oGCsKmV5reSmtV7IXj/kpaE1XYY+D9G5PvKKoFfSbiS4M77MdjuwlZKDIKFCffq9rPU+H/s3ZdQ==",
|
| 2349 |
"dev": true,
|
| 2350 |
"dependencies": {
|
| 2351 |
"@babel/code-frame": "^7.24.7",
|
| 2352 |
+
"@babel/generator": "^7.25.0",
|
| 2353 |
+
"@babel/parser": "^7.25.3",
|
| 2354 |
+
"@babel/template": "^7.25.0",
|
| 2355 |
+
"@babel/types": "^7.25.2",
|
|
|
|
|
|
|
|
|
|
| 2356 |
"debug": "^4.3.1",
|
| 2357 |
"globals": "^11.1.0"
|
| 2358 |
},
|
|
|
|
| 2361 |
}
|
| 2362 |
},
|
| 2363 |
"node_modules/@babel/traverse/node_modules/@babel/generator": {
|
| 2364 |
+
"version": "7.25.0",
|
| 2365 |
+
"resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.25.0.tgz",
|
| 2366 |
+
"integrity": "sha512-3LEEcj3PVW8pW2R1SR1M89g/qrYk/m/mB/tLqn7dn4sbBUQyTqnlod+II2U4dqiGtUmkcnAmkMDralTFZttRiw==",
|
| 2367 |
"dev": true,
|
| 2368 |
"dependencies": {
|
| 2369 |
+
"@babel/types": "^7.25.0",
|
| 2370 |
"@jridgewell/gen-mapping": "^0.3.5",
|
| 2371 |
"@jridgewell/trace-mapping": "^0.3.25",
|
| 2372 |
"jsesc": "^2.5.1"
|
|
|
|
| 2375 |
"node": ">=6.9.0"
|
| 2376 |
}
|
| 2377 |
},
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 2378 |
"node_modules/@babel/types": {
|
| 2379 |
+
"version": "7.25.2",
|
| 2380 |
+
"resolved": "https://registry.npmjs.org/@babel/types/-/types-7.25.2.tgz",
|
| 2381 |
+
"integrity": "sha512-YTnYtra7W9e6/oAZEHj0bJehPRUlLH9/fbpT5LfB0NhQXyALCRkRs3zH9v07IYhkgpqX6Z78FnuccZr/l4Fs4Q==",
|
| 2382 |
"dev": true,
|
| 2383 |
"dependencies": {
|
| 2384 |
"@babel/helper-string-parser": "^7.24.8",
|
|
|
|
| 4069 |
}
|
| 4070 |
},
|
| 4071 |
"node_modules/@rollup/rollup-android-arm-eabi": {
|
| 4072 |
+
"version": "4.20.0",
|
| 4073 |
+
"resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.20.0.tgz",
|
| 4074 |
+
"integrity": "sha512-TSpWzflCc4VGAUJZlPpgAJE1+V60MePDQnBd7PPkpuEmOy8i87aL6tinFGKBFKuEDikYpig72QzdT3QPYIi+oA==",
|
| 4075 |
"cpu": [
|
| 4076 |
"arm"
|
| 4077 |
],
|
|
|
|
| 4082 |
]
|
| 4083 |
},
|
| 4084 |
"node_modules/@rollup/rollup-android-arm64": {
|
| 4085 |
+
"version": "4.20.0",
|
| 4086 |
+
"resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.20.0.tgz",
|
| 4087 |
+
"integrity": "sha512-u00Ro/nok7oGzVuh/FMYfNoGqxU5CPWz1mxV85S2w9LxHR8OoMQBuSk+3BKVIDYgkpeOET5yXkx90OYFc+ytpQ==",
|
| 4088 |
"cpu": [
|
| 4089 |
"arm64"
|
| 4090 |
],
|
|
|
|
| 4095 |
]
|
| 4096 |
},
|
| 4097 |
"node_modules/@rollup/rollup-darwin-arm64": {
|
| 4098 |
+
"version": "4.20.0",
|
| 4099 |
+
"resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.20.0.tgz",
|
| 4100 |
+
"integrity": "sha512-uFVfvzvsdGtlSLuL0ZlvPJvl6ZmrH4CBwLGEFPe7hUmf7htGAN+aXo43R/V6LATyxlKVC/m6UsLb7jbG+LG39Q==",
|
| 4101 |
"cpu": [
|
| 4102 |
"arm64"
|
| 4103 |
],
|
|
|
|
| 4108 |
]
|
| 4109 |
},
|
| 4110 |
"node_modules/@rollup/rollup-darwin-x64": {
|
| 4111 |
+
"version": "4.20.0",
|
| 4112 |
+
"resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.20.0.tgz",
|
| 4113 |
+
"integrity": "sha512-xbrMDdlev53vNXexEa6l0LffojxhqDTBeL+VUxuuIXys4x6xyvbKq5XqTXBCEUA8ty8iEJblHvFaWRJTk/icAQ==",
|
| 4114 |
"cpu": [
|
| 4115 |
"x64"
|
| 4116 |
],
|
|
|
|
| 4121 |
]
|
| 4122 |
},
|
| 4123 |
"node_modules/@rollup/rollup-linux-arm-gnueabihf": {
|
| 4124 |
+
"version": "4.20.0",
|
| 4125 |
+
"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.20.0.tgz",
|
| 4126 |
+
"integrity": "sha512-jMYvxZwGmoHFBTbr12Xc6wOdc2xA5tF5F2q6t7Rcfab68TT0n+r7dgawD4qhPEvasDsVpQi+MgDzj2faOLsZjA==",
|
| 4127 |
"cpu": [
|
| 4128 |
"arm"
|
| 4129 |
],
|
|
|
|
| 4134 |
]
|
| 4135 |
},
|
| 4136 |
"node_modules/@rollup/rollup-linux-arm-musleabihf": {
|
| 4137 |
+
"version": "4.20.0",
|
| 4138 |
+
"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.20.0.tgz",
|
| 4139 |
+
"integrity": "sha512-1asSTl4HKuIHIB1GcdFHNNZhxAYEdqML/MW4QmPS4G0ivbEcBr1JKlFLKsIRqjSwOBkdItn3/ZDlyvZ/N6KPlw==",
|
| 4140 |
"cpu": [
|
| 4141 |
"arm"
|
| 4142 |
],
|
|
|
|
| 4147 |
]
|
| 4148 |
},
|
| 4149 |
"node_modules/@rollup/rollup-linux-arm64-gnu": {
|
| 4150 |
+
"version": "4.20.0",
|
| 4151 |
+
"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.20.0.tgz",
|
| 4152 |
+
"integrity": "sha512-COBb8Bkx56KldOYJfMf6wKeYJrtJ9vEgBRAOkfw6Ens0tnmzPqvlpjZiLgkhg6cA3DGzCmLmmd319pmHvKWWlQ==",
|
| 4153 |
"cpu": [
|
| 4154 |
"arm64"
|
| 4155 |
],
|
|
|
|
| 4160 |
]
|
| 4161 |
},
|
| 4162 |
"node_modules/@rollup/rollup-linux-arm64-musl": {
|
| 4163 |
+
"version": "4.20.0",
|
| 4164 |
+
"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.20.0.tgz",
|
| 4165 |
+
"integrity": "sha512-+it+mBSyMslVQa8wSPvBx53fYuZK/oLTu5RJoXogjk6x7Q7sz1GNRsXWjn6SwyJm8E/oMjNVwPhmNdIjwP135Q==",
|
| 4166 |
"cpu": [
|
| 4167 |
"arm64"
|
| 4168 |
],
|
|
|
|
| 4173 |
]
|
| 4174 |
},
|
| 4175 |
"node_modules/@rollup/rollup-linux-powerpc64le-gnu": {
|
| 4176 |
+
"version": "4.20.0",
|
| 4177 |
+
"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.20.0.tgz",
|
| 4178 |
+
"integrity": "sha512-yAMvqhPfGKsAxHN8I4+jE0CpLWD8cv4z7CK7BMmhjDuz606Q2tFKkWRY8bHR9JQXYcoLfopo5TTqzxgPUjUMfw==",
|
| 4179 |
"cpu": [
|
| 4180 |
"ppc64"
|
| 4181 |
],
|
|
|
|
| 4186 |
]
|
| 4187 |
},
|
| 4188 |
"node_modules/@rollup/rollup-linux-riscv64-gnu": {
|
| 4189 |
+
"version": "4.20.0",
|
| 4190 |
+
"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.20.0.tgz",
|
| 4191 |
+
"integrity": "sha512-qmuxFpfmi/2SUkAw95TtNq/w/I7Gpjurx609OOOV7U4vhvUhBcftcmXwl3rqAek+ADBwSjIC4IVNLiszoj3dPA==",
|
| 4192 |
"cpu": [
|
| 4193 |
"riscv64"
|
| 4194 |
],
|
|
|
|
| 4199 |
]
|
| 4200 |
},
|
| 4201 |
"node_modules/@rollup/rollup-linux-s390x-gnu": {
|
| 4202 |
+
"version": "4.20.0",
|
| 4203 |
+
"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.20.0.tgz",
|
| 4204 |
+
"integrity": "sha512-I0BtGXddHSHjV1mqTNkgUZLnS3WtsqebAXv11D5BZE/gfw5KoyXSAXVqyJximQXNvNzUo4GKlCK/dIwXlz+jlg==",
|
| 4205 |
"cpu": [
|
| 4206 |
"s390x"
|
| 4207 |
],
|
|
|
|
| 4212 |
]
|
| 4213 |
},
|
| 4214 |
"node_modules/@rollup/rollup-linux-x64-gnu": {
|
| 4215 |
+
"version": "4.20.0",
|
| 4216 |
+
"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.20.0.tgz",
|
| 4217 |
+
"integrity": "sha512-y+eoL2I3iphUg9tN9GB6ku1FA8kOfmF4oUEWhztDJ4KXJy1agk/9+pejOuZkNFhRwHAOxMsBPLbXPd6mJiCwew==",
|
| 4218 |
"cpu": [
|
| 4219 |
"x64"
|
| 4220 |
],
|
|
|
|
| 4225 |
]
|
| 4226 |
},
|
| 4227 |
"node_modules/@rollup/rollup-linux-x64-musl": {
|
| 4228 |
+
"version": "4.20.0",
|
| 4229 |
+
"resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.20.0.tgz",
|
| 4230 |
+
"integrity": "sha512-hM3nhW40kBNYUkZb/r9k2FKK+/MnKglX7UYd4ZUy5DJs8/sMsIbqWK2piZtVGE3kcXVNj3B2IrUYROJMMCikNg==",
|
| 4231 |
"cpu": [
|
| 4232 |
"x64"
|
| 4233 |
],
|
|
|
|
| 4238 |
]
|
| 4239 |
},
|
| 4240 |
"node_modules/@rollup/rollup-win32-arm64-msvc": {
|
| 4241 |
+
"version": "4.20.0",
|
| 4242 |
+
"resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.20.0.tgz",
|
| 4243 |
+
"integrity": "sha512-psegMvP+Ik/Bg7QRJbv8w8PAytPA7Uo8fpFjXyCRHWm6Nt42L+JtoqH8eDQ5hRP7/XW2UiIriy1Z46jf0Oa1kA==",
|
| 4244 |
"cpu": [
|
| 4245 |
"arm64"
|
| 4246 |
],
|
|
|
|
| 4251 |
]
|
| 4252 |
},
|
| 4253 |
"node_modules/@rollup/rollup-win32-ia32-msvc": {
|
| 4254 |
+
"version": "4.20.0",
|
| 4255 |
+
"resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.20.0.tgz",
|
| 4256 |
+
"integrity": "sha512-GabekH3w4lgAJpVxkk7hUzUf2hICSQO0a/BLFA11/RMxQT92MabKAqyubzDZmMOC/hcJNlc+rrypzNzYl4Dx7A==",
|
| 4257 |
"cpu": [
|
| 4258 |
"ia32"
|
| 4259 |
],
|
|
|
|
| 4264 |
]
|
| 4265 |
},
|
| 4266 |
"node_modules/@rollup/rollup-win32-x64-msvc": {
|
| 4267 |
+
"version": "4.20.0",
|
| 4268 |
+
"resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.20.0.tgz",
|
| 4269 |
+
"integrity": "sha512-aJ1EJSuTdGnM6qbVC4B5DSmozPTqIag9fSzXRNNo+humQLG89XpPgdt16Ia56ORD7s+H8Pmyx44uczDQ0yDzpg==",
|
| 4270 |
"cpu": [
|
| 4271 |
"x64"
|
| 4272 |
],
|
|
|
|
| 4481 |
}
|
| 4482 |
},
|
| 4483 |
"node_modules/@types/eslint": {
|
| 4484 |
+
"version": "9.6.0",
|
| 4485 |
+
"resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-9.6.0.tgz",
|
| 4486 |
+
"integrity": "sha512-gi6WQJ7cHRgZxtkQEoyHMppPjq9Kxo5Tjn2prSKDSmZrCz8TZ3jSRCeTJm+WoM+oB0WG37bRqLzaaU3q7JypGg==",
|
| 4487 |
"dev": true,
|
| 4488 |
"dependencies": {
|
| 4489 |
"@types/estree": "*",
|
|
|
|
| 4537 |
"dev": true
|
| 4538 |
},
|
| 4539 |
"node_modules/@types/http-proxy": {
|
| 4540 |
+
"version": "1.17.15",
|
| 4541 |
+
"resolved": "https://registry.npmjs.org/@types/http-proxy/-/http-proxy-1.17.15.tgz",
|
| 4542 |
+
"integrity": "sha512-25g5atgiVNTIv0LBDTg1H74Hvayx0ajtJPLLcYE3whFv75J0pWNtOBzaXJQgDTmrX1bx5U9YC2w/n65BN1HwRQ==",
|
| 4543 |
"dev": true,
|
| 4544 |
"dependencies": {
|
| 4545 |
"@types/node": "*"
|
|
|
|
| 4564 |
"dev": true
|
| 4565 |
},
|
| 4566 |
"node_modules/@types/node": {
|
| 4567 |
+
"version": "22.2.0",
|
| 4568 |
+
"resolved": "https://registry.npmjs.org/@types/node/-/node-22.2.0.tgz",
|
| 4569 |
+
"integrity": "sha512-bm6EG6/pCpkxDf/0gDNDdtDILMOHgaQBVOJGdwsqClnxA3xL6jtMv76rLBc006RVMWbmaf0xbmom4Z/5o2nRkQ==",
|
| 4570 |
"dev": true,
|
| 4571 |
"dependencies": {
|
| 4572 |
+
"undici-types": "~6.13.0"
|
| 4573 |
}
|
| 4574 |
},
|
| 4575 |
"node_modules/@types/node-forge": {
|
|
|
|
| 4639 |
}
|
| 4640 |
},
|
| 4641 |
"node_modules/@types/ws": {
|
| 4642 |
+
"version": "8.5.12",
|
| 4643 |
+
"resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.5.12.tgz",
|
| 4644 |
+
"integrity": "sha512-3tPRkv1EtkDpzlgyKyI8pGsGZAGPEaXeu0DOj5DI25Ja91bdAYddYHbADRYVrZMRbfW+1l5YwXVDKohDJNQxkQ==",
|
| 4645 |
"dev": true,
|
| 4646 |
"dependencies": {
|
| 4647 |
"@types/node": "*"
|
|
|
|
| 5361 |
}
|
| 5362 |
},
|
| 5363 |
"node_modules/browserslist": {
|
| 5364 |
+
"version": "4.23.3",
|
| 5365 |
+
"resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.23.3.tgz",
|
| 5366 |
+
"integrity": "sha512-btwCFJVjI4YWDNfau8RhZ+B1Q/VLoUITrm3RlP6y1tYGWIOa+InuYiRGXUBXo8nA1qKmHMyLB/iVQg5TT4eFoA==",
|
| 5367 |
"dev": true,
|
| 5368 |
"funding": [
|
| 5369 |
{
|
|
|
|
| 5380 |
}
|
| 5381 |
],
|
| 5382 |
"dependencies": {
|
| 5383 |
+
"caniuse-lite": "^1.0.30001646",
|
| 5384 |
+
"electron-to-chromium": "^1.5.4",
|
| 5385 |
+
"node-releases": "^2.0.18",
|
| 5386 |
"update-browserslist-db": "^1.1.0"
|
| 5387 |
},
|
| 5388 |
"bin": {
|
|
|
|
| 5542 |
}
|
| 5543 |
},
|
| 5544 |
"node_modules/caniuse-lite": {
|
| 5545 |
+
"version": "1.0.30001651",
|
| 5546 |
+
"resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001651.tgz",
|
| 5547 |
+
"integrity": "sha512-9Cf+Xv1jJNe1xPZLGuUXLNkE1BoDkqRqYyFJ9TDYSqhduqA4hu4oR9HluGoWYQC/aj8WHjsGVV+bwkh0+tegRg==",
|
| 5548 |
"dev": true,
|
| 5549 |
"funding": [
|
| 5550 |
{
|
|
|
|
| 5981 |
}
|
| 5982 |
},
|
| 5983 |
"node_modules/core-js-compat": {
|
| 5984 |
+
"version": "3.38.0",
|
| 5985 |
+
"resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.38.0.tgz",
|
| 5986 |
+
"integrity": "sha512-75LAicdLa4OJVwFxFbQR3NdnZjNgX6ILpVcVzcC4T2smerB5lELMrJQQQoWV6TiuC/vlaFqgU2tKQx9w5s0e0A==",
|
| 5987 |
"dev": true,
|
| 5988 |
"dependencies": {
|
| 5989 |
+
"browserslist": "^4.23.3"
|
| 5990 |
},
|
| 5991 |
"funding": {
|
| 5992 |
"type": "opencollective",
|
|
|
|
| 6261 |
}
|
| 6262 |
},
|
| 6263 |
"node_modules/debug": {
|
| 6264 |
+
"version": "4.3.6",
|
| 6265 |
+
"resolved": "https://registry.npmjs.org/debug/-/debug-4.3.6.tgz",
|
| 6266 |
+
"integrity": "sha512-O/09Bd4Z1fBrU4VzkhFqVgpPzaGbw6Sm9FEkBT1A/YBXQFGuuSxa1dN2nxgxS34JmKXqYx8CZAwEVoJFImUXIg==",
|
| 6267 |
"dev": true,
|
| 6268 |
"dependencies": {
|
| 6269 |
"ms": "2.1.2"
|
|
|
|
| 6462 |
"dev": true
|
| 6463 |
},
|
| 6464 |
"node_modules/electron-to-chromium": {
|
| 6465 |
+
"version": "1.5.6",
|
| 6466 |
+
"resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.6.tgz",
|
| 6467 |
+
"integrity": "sha512-jwXWsM5RPf6j9dPYzaorcBSUg6AiqocPEyMpkchkvntaH9HGfOOMZwxMJjDY/XEs3T5dM7uyH1VhRMkqUU9qVw==",
|
| 6468 |
"dev": true
|
| 6469 |
},
|
| 6470 |
"node_modules/emoji-regex": {
|
|
|
|
| 6545 |
}
|
| 6546 |
},
|
| 6547 |
"node_modules/enhanced-resolve": {
|
| 6548 |
+
"version": "5.17.1",
|
| 6549 |
+
"resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.17.1.tgz",
|
| 6550 |
+
"integrity": "sha512-LMHl3dXhTcfv8gM4kEzIUeTQ+7fpdA0l2tUf34BddXPkz2A5xJ5L/Pchd5BL6rdccM9QGvu0sWZzK1Z1t4wwyg==",
|
| 6551 |
"dev": true,
|
| 6552 |
"dependencies": {
|
| 6553 |
"graceful-fs": "^4.2.4",
|
|
|
|
| 7137 |
}
|
| 7138 |
},
|
| 7139 |
"node_modules/foreground-child": {
|
| 7140 |
+
"version": "3.3.0",
|
| 7141 |
+
"resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.0.tgz",
|
| 7142 |
+
"integrity": "sha512-Ld2g8rrAyMYFXBhEqMz8ZAHBi4J4uS1i/CxGMDnjyFWddMXLVcDp051DZfu+t7+ab7Wv6SMqpWmyFIj5UbfFvg==",
|
| 7143 |
"dev": true,
|
| 7144 |
"dependencies": {
|
| 7145 |
"cross-spawn": "^7.0.0",
|
|
|
|
| 7782 |
}
|
| 7783 |
},
|
| 7784 |
"node_modules/immutable": {
|
| 7785 |
+
"version": "4.3.7",
|
| 7786 |
+
"resolved": "https://registry.npmjs.org/immutable/-/immutable-4.3.7.tgz",
|
| 7787 |
+
"integrity": "sha512-1hqclzwYwjRDFLjcFxOM5AYkkG0rpFPpr1RLPMEuGczoS7YA8gLhy8SWXYRAA/XwfEHpfo3cw5JGioS32fnMRw==",
|
| 7788 |
"dev": true
|
| 7789 |
},
|
| 7790 |
"node_modules/import-fresh": {
|
|
|
|
| 7941 |
}
|
| 7942 |
},
|
| 7943 |
"node_modules/is-core-module": {
|
| 7944 |
+
"version": "2.15.0",
|
| 7945 |
+
"resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.15.0.tgz",
|
| 7946 |
+
"integrity": "sha512-Dd+Lb2/zvk9SKy1TGCt1wFJFo/MWBPMX5x7KcvLajWTGuomczdQX61PvY5yK6SVACwpoexWo81IfFyoKY2QnTA==",
|
| 7947 |
"dev": true,
|
| 7948 |
"dependencies": {
|
| 7949 |
"hasown": "^2.0.2"
|
|
|
|
| 8385 |
]
|
| 8386 |
},
|
| 8387 |
"node_modules/karma": {
|
| 8388 |
+
"version": "6.4.4",
|
| 8389 |
+
"resolved": "https://registry.npmjs.org/karma/-/karma-6.4.4.tgz",
|
| 8390 |
+
"integrity": "sha512-LrtUxbdvt1gOpo3gxG+VAJlJAEMhbWlM4YrFQgql98FwF7+K8K12LYO4hnDdUkNjeztYrOXEMqgTajSWgmtI/w==",
|
| 8391 |
"dev": true,
|
| 8392 |
"dependencies": {
|
| 8393 |
"@colors/colors": "1.5.0",
|
|
|
|
| 8614 |
}
|
| 8615 |
},
|
| 8616 |
"node_modules/launch-editor": {
|
| 8617 |
+
"version": "2.8.1",
|
| 8618 |
+
"resolved": "https://registry.npmjs.org/launch-editor/-/launch-editor-2.8.1.tgz",
|
| 8619 |
+
"integrity": "sha512-elBx2l/tp9z99X5H/qev8uyDywVh0VXAwEbjk8kJhnc5grOFkGh7aW6q55me9xnYbss261XtnUrysZ+XvGbhQA==",
|
| 8620 |
"dev": true,
|
| 8621 |
"dependencies": {
|
| 8622 |
"picocolors": "^1.0.0",
|
|
|
|
| 9185 |
"dev": true
|
| 9186 |
},
|
| 9187 |
"node_modules/minipass-json-stream": {
|
| 9188 |
+
"version": "1.0.2",
|
| 9189 |
+
"resolved": "https://registry.npmjs.org/minipass-json-stream/-/minipass-json-stream-1.0.2.tgz",
|
| 9190 |
+
"integrity": "sha512-myxeeTm57lYs8pH2nxPzmEEg8DGIgW+9mv6D4JZD2pa81I/OBjeU7PtICXV6c9eRGTA5JMDsuIPUZRCyBMYNhg==",
|
| 9191 |
"dev": true,
|
| 9192 |
"dependencies": {
|
| 9193 |
"jsonparse": "^1.3.1",
|
|
|
|
| 9560 |
}
|
| 9561 |
},
|
| 9562 |
"node_modules/node-releases": {
|
| 9563 |
+
"version": "2.0.18",
|
| 9564 |
+
"resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.18.tgz",
|
| 9565 |
+
"integrity": "sha512-d9VeXT4SJ7ZeOqGX6R5EM022wpL+eWPooLI+5UpWn2jCT1aosUQEhQP214x33Wkwx3JQMvIm+tIoVOdodFS40g==",
|
| 9566 |
"dev": true
|
| 9567 |
},
|
| 9568 |
"node_modules/nopt": {
|
|
|
|
| 10952 |
}
|
| 10953 |
},
|
| 10954 |
"node_modules/rollup": {
|
| 10955 |
+
"version": "4.20.0",
|
| 10956 |
+
"resolved": "https://registry.npmjs.org/rollup/-/rollup-4.20.0.tgz",
|
| 10957 |
+
"integrity": "sha512-6rbWBChcnSGzIlXeIdNIZTopKYad8ZG8ajhl78lGRLsI2rX8IkaotQhVas2Ma+GPxJav19wrSzvRvuiv0YKzWw==",
|
| 10958 |
"dev": true,
|
| 10959 |
"dependencies": {
|
| 10960 |
"@types/estree": "1.0.5"
|
|
|
|
| 10967 |
"npm": ">=8.0.0"
|
| 10968 |
},
|
| 10969 |
"optionalDependencies": {
|
| 10970 |
+
"@rollup/rollup-android-arm-eabi": "4.20.0",
|
| 10971 |
+
"@rollup/rollup-android-arm64": "4.20.0",
|
| 10972 |
+
"@rollup/rollup-darwin-arm64": "4.20.0",
|
| 10973 |
+
"@rollup/rollup-darwin-x64": "4.20.0",
|
| 10974 |
+
"@rollup/rollup-linux-arm-gnueabihf": "4.20.0",
|
| 10975 |
+
"@rollup/rollup-linux-arm-musleabihf": "4.20.0",
|
| 10976 |
+
"@rollup/rollup-linux-arm64-gnu": "4.20.0",
|
| 10977 |
+
"@rollup/rollup-linux-arm64-musl": "4.20.0",
|
| 10978 |
+
"@rollup/rollup-linux-powerpc64le-gnu": "4.20.0",
|
| 10979 |
+
"@rollup/rollup-linux-riscv64-gnu": "4.20.0",
|
| 10980 |
+
"@rollup/rollup-linux-s390x-gnu": "4.20.0",
|
| 10981 |
+
"@rollup/rollup-linux-x64-gnu": "4.20.0",
|
| 10982 |
+
"@rollup/rollup-linux-x64-musl": "4.20.0",
|
| 10983 |
+
"@rollup/rollup-win32-arm64-msvc": "4.20.0",
|
| 10984 |
+
"@rollup/rollup-win32-ia32-msvc": "4.20.0",
|
| 10985 |
+
"@rollup/rollup-win32-x64-msvc": "4.20.0",
|
| 10986 |
"fsevents": "~2.3.2"
|
| 10987 |
}
|
| 10988 |
},
|
|
|
|
| 12186 |
}
|
| 12187 |
},
|
| 12188 |
"node_modules/undici-types": {
|
| 12189 |
+
"version": "6.13.0",
|
| 12190 |
+
"resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.13.0.tgz",
|
| 12191 |
+
"integrity": "sha512-xtFJHudx8S2DSoujjMd1WeWvn7KKWFRESZTMeL1RptAYERu29D6jphMjjY+vn96jvN3kVPDNxU/E13VTaXj6jg==",
|
| 12192 |
"dev": true
|
| 12193 |
},
|
| 12194 |
"node_modules/unicode-canonical-property-names-ecmascript": {
|
|
|
|
| 13351 |
}
|
| 13352 |
},
|
| 13353 |
"node_modules/zone.js": {
|
| 13354 |
+
"version": "0.14.10",
|
| 13355 |
+
"resolved": "https://registry.npmjs.org/zone.js/-/zone.js-0.14.10.tgz",
|
| 13356 |
+
"integrity": "sha512-YGAhaO7J5ywOXW6InXNlLmfU194F8lVgu7bRntUF3TiG8Y3nBK0x1UJJuHUP/e8IyihkjCYqhCScpSwnlaSRkQ=="
|
| 13357 |
}
|
| 13358 |
}
|
| 13359 |
}
|
src/.DS_Store
CHANGED
|
Binary files a/src/.DS_Store and b/src/.DS_Store differ
|
|
|
src/app/.DS_Store
ADDED
|
Binary file (6.15 kB). View file
|
|
|
src/app/app.routes.ts
CHANGED
|
@@ -7,6 +7,8 @@ import {DatasetsComponent} from "./components/body/datasets/datasets.component";
|
|
| 7 |
import {AboutComponent} from "./components/body/about/about.component";
|
| 8 |
import {TaskComponent} from "./components/body/tasks/task/task.component";
|
| 9 |
import {SubmittingComponent} from "./components/body/submitting/submitting.component";
|
|
|
|
|
|
|
| 10 |
|
| 11 |
export const routes: Routes = [
|
| 12 |
{path: '', component : BodyComponent},
|
|
@@ -18,4 +20,5 @@ export const routes: Routes = [
|
|
| 18 |
{path: 'about', component: AboutComponent},
|
| 19 |
{path: 'leaderboards', component: LeaderboardsComponent},
|
| 20 |
{path: 'leaderboards/:task', component: LeaderboardsComponent},
|
|
|
|
| 21 |
];
|
|
|
|
| 7 |
import {AboutComponent} from "./components/body/about/about.component";
|
| 8 |
import {TaskComponent} from "./components/body/tasks/task/task.component";
|
| 9 |
import {SubmittingComponent} from "./components/body/submitting/submitting.component";
|
| 10 |
+
import {ControlPanelComponent} from "./components/body/control-panel/control-panel.component";
|
| 11 |
+
import {AdminLoginComponent} from "./components/body/control-panel/admin-login/admin-login.component";
|
| 12 |
|
| 13 |
export const routes: Routes = [
|
| 14 |
{path: '', component : BodyComponent},
|
|
|
|
| 20 |
{path: 'about', component: AboutComponent},
|
| 21 |
{path: 'leaderboards', component: LeaderboardsComponent},
|
| 22 |
{path: 'leaderboards/:task', component: LeaderboardsComponent},
|
| 23 |
+
{path: 'control', component: ControlPanelComponent},
|
| 24 |
];
|
src/{assets β app/components}/.DS_Store
RENAMED
|
Binary files a/src/assets/.DS_Store and b/src/app/components/.DS_Store differ
|
|
|
src/app/components/body/control-panel/admin-login/admin-login.component.css
ADDED
|
@@ -0,0 +1,43 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
/* CSS for the Angular component */
|
| 2 |
+
|
| 3 |
+
.login-container {
|
| 4 |
+
display: flex;
|
| 5 |
+
justify-content: center;
|
| 6 |
+
align-items: center;
|
| 7 |
+
height: 100vh;
|
| 8 |
+
width: 100%;
|
| 9 |
+
padding: 16px;
|
| 10 |
+
box-sizing: border-box;
|
| 11 |
+
}
|
| 12 |
+
|
| 13 |
+
mat-card {
|
| 14 |
+
width: 100%;
|
| 15 |
+
max-width: 400px; /* Optional: Limit the maximum width of the card */
|
| 16 |
+
padding: 24px;
|
| 17 |
+
box-sizing: border-box;
|
| 18 |
+
display: flex;
|
| 19 |
+
justify-content: center;
|
| 20 |
+
align-items: center;
|
| 21 |
+
}
|
| 22 |
+
|
| 23 |
+
.login-content {
|
| 24 |
+
display: flex;
|
| 25 |
+
flex-direction: column;
|
| 26 |
+
align-items: center;
|
| 27 |
+
width: 100%;
|
| 28 |
+
}
|
| 29 |
+
|
| 30 |
+
mat-form-field {
|
| 31 |
+
width: 100%;
|
| 32 |
+
margin-bottom: 16px;
|
| 33 |
+
}
|
| 34 |
+
|
| 35 |
+
button {
|
| 36 |
+
width: 100%;
|
| 37 |
+
margin-top: 8px;
|
| 38 |
+
}
|
| 39 |
+
|
| 40 |
+
mat-label {
|
| 41 |
+
margin-top: 16px;
|
| 42 |
+
text-align: center;
|
| 43 |
+
}
|
src/app/components/body/control-panel/admin-login/admin-login.component.html
ADDED
|
@@ -0,0 +1,23 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<div class="login-container">
|
| 2 |
+
<mat-card>
|
| 3 |
+
<div class="login-content">
|
| 4 |
+
<h2>Login</h2>
|
| 5 |
+
<form (ngSubmit)="onSubmit()">
|
| 6 |
+
<mat-form-field appearance="fill">
|
| 7 |
+
<mat-label>Password</mat-label>
|
| 8 |
+
<input
|
| 9 |
+
matInput
|
| 10 |
+
type="password"
|
| 11 |
+
[(ngModel)]="password"
|
| 12 |
+
name="password"
|
| 13 |
+
required
|
| 14 |
+
/>
|
| 15 |
+
</mat-form-field>
|
| 16 |
+
<button mat-raised-button color="primary" type="submit">Login</button>
|
| 17 |
+
</form>
|
| 18 |
+
<mat-label *ngIf="(authenticationState | async)">
|
| 19 |
+
{{ (authenticationState | async) }}
|
| 20 |
+
</mat-label>
|
| 21 |
+
</div>
|
| 22 |
+
</mat-card>
|
| 23 |
+
</div>
|
src/app/components/body/control-panel/admin-login/admin-login.component.spec.ts
ADDED
|
@@ -0,0 +1,23 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
import { ComponentFixture, TestBed } from '@angular/core/testing';
|
| 2 |
+
|
| 3 |
+
import { AdminLoginComponent } from './admin-login.component';
|
| 4 |
+
|
| 5 |
+
describe('AdminLoginComponent', () => {
|
| 6 |
+
let component: AdminLoginComponent;
|
| 7 |
+
let fixture: ComponentFixture<AdminLoginComponent>;
|
| 8 |
+
|
| 9 |
+
beforeEach(async () => {
|
| 10 |
+
await TestBed.configureTestingModule({
|
| 11 |
+
imports: [AdminLoginComponent]
|
| 12 |
+
})
|
| 13 |
+
.compileComponents();
|
| 14 |
+
|
| 15 |
+
fixture = TestBed.createComponent(AdminLoginComponent);
|
| 16 |
+
component = fixture.componentInstance;
|
| 17 |
+
fixture.detectChanges();
|
| 18 |
+
});
|
| 19 |
+
|
| 20 |
+
it('should create', () => {
|
| 21 |
+
expect(component).toBeTruthy();
|
| 22 |
+
});
|
| 23 |
+
});
|
src/app/components/body/control-panel/admin-login/admin-login.component.ts
ADDED
|
@@ -0,0 +1,39 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
import { Component } from '@angular/core';
|
| 2 |
+
import {MatCard} from "@angular/material/card";
|
| 3 |
+
import {FormsModule} from "@angular/forms";
|
| 4 |
+
import {MatFormField, MatLabel} from "@angular/material/form-field";
|
| 5 |
+
import {MatButton} from "@angular/material/button";
|
| 6 |
+
import {MatInput} from "@angular/material/input";
|
| 7 |
+
import {AppStateService} from "../../../../state_management/services/app-state.service";
|
| 8 |
+
import {map} from "rxjs";
|
| 9 |
+
import {AsyncPipe, NgIf} from "@angular/common";
|
| 10 |
+
|
| 11 |
+
@Component({
|
| 12 |
+
selector: 'app-admin-login',
|
| 13 |
+
standalone: true,
|
| 14 |
+
imports: [
|
| 15 |
+
MatCard,
|
| 16 |
+
FormsModule,
|
| 17 |
+
MatFormField,
|
| 18 |
+
MatButton,
|
| 19 |
+
MatInput,
|
| 20 |
+
MatLabel,
|
| 21 |
+
NgIf,
|
| 22 |
+
AsyncPipe
|
| 23 |
+
],
|
| 24 |
+
templateUrl: './admin-login.component.html',
|
| 25 |
+
styleUrl: './admin-login.component.css'
|
| 26 |
+
})
|
| 27 |
+
export class AdminLoginComponent {
|
| 28 |
+
password: string = '';
|
| 29 |
+
|
| 30 |
+
constructor(private stateService: AppStateService) {}
|
| 31 |
+
|
| 32 |
+
authenticationState = this.stateService.state$.pipe(
|
| 33 |
+
map(state => state.adminSessionStatus)
|
| 34 |
+
);
|
| 35 |
+
|
| 36 |
+
onSubmit() {
|
| 37 |
+
this.stateService.authenticate(this.password);
|
| 38 |
+
}
|
| 39 |
+
}
|
src/app/components/body/control-panel/control-panel.component.css
ADDED
|
@@ -0,0 +1,36 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
.full-width {
|
| 2 |
+
width: 100%;
|
| 3 |
+
}
|
| 4 |
+
|
| 5 |
+
.table-container {
|
| 6 |
+
width: 100%;
|
| 7 |
+
overflow-x: auto;
|
| 8 |
+
margin-top: 16px;
|
| 9 |
+
}
|
| 10 |
+
|
| 11 |
+
.responsive-table {
|
| 12 |
+
min-width: 800px; /* Adjust based on your needs */
|
| 13 |
+
width: 100%;
|
| 14 |
+
table-layout: auto;
|
| 15 |
+
}
|
| 16 |
+
|
| 17 |
+
.mat-header-cell, .mat-cell {
|
| 18 |
+
padding: 8px;
|
| 19 |
+
text-align: left;
|
| 20 |
+
white-space: nowrap;
|
| 21 |
+
}
|
| 22 |
+
|
| 23 |
+
.actions-cell {
|
| 24 |
+
min-width: 220px; /* Adjust this value as necessary */
|
| 25 |
+
}
|
| 26 |
+
|
| 27 |
+
.mat-header-row, .mat-row {
|
| 28 |
+
display: table-row;
|
| 29 |
+
}
|
| 30 |
+
|
| 31 |
+
.mat-header-row.sticky {
|
| 32 |
+
background-color: white; /* Ensure the header has a background */
|
| 33 |
+
position: sticky;
|
| 34 |
+
top: 0;
|
| 35 |
+
z-index: 1;
|
| 36 |
+
}
|
src/app/components/body/control-panel/control-panel.component.html
ADDED
|
@@ -0,0 +1,144 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<app-admin-login *ngIf="(authenticationState | async) != 'authenticated'"></app-admin-login>
|
| 2 |
+
|
| 3 |
+
<div *ngIf="(authenticationState | async) == 'authenticated'">
|
| 4 |
+
<!-- Admin Control Panel -->
|
| 5 |
+
<mat-card>
|
| 6 |
+
<button mat-raised-button color="primary" class="full-width" (click)="refresh()">Refresh List</button>
|
| 7 |
+
|
| 8 |
+
<div class="table-container">
|
| 9 |
+
<table mat-table [dataSource]="dataSource" class="mat-elevation-z8 responsive-table">
|
| 10 |
+
|
| 11 |
+
<!-- Team Column -->
|
| 12 |
+
<ng-container matColumnDef="team">
|
| 13 |
+
<mat-header-cell *matHeaderCellDef> Team </mat-header-cell>
|
| 14 |
+
<mat-cell *matCellDef="let entry">
|
| 15 |
+
<span *ngIf="!isEditing(entry)">{{ entry.team }}</span>
|
| 16 |
+
<input *ngIf="isEditing(entry)" [(ngModel)]="entry.team" (keyup.enter)="saveEdit(entry)">
|
| 17 |
+
</mat-cell>
|
| 18 |
+
</ng-container>
|
| 19 |
+
|
| 20 |
+
<!-- Task Column -->
|
| 21 |
+
<ng-container matColumnDef="task">
|
| 22 |
+
<mat-header-cell *matHeaderCellDef> Task </mat-header-cell>
|
| 23 |
+
<mat-cell *matCellDef="let entry">
|
| 24 |
+
<span *ngIf="!isEditing(entry)">{{ entry.task }}</span>
|
| 25 |
+
<input *ngIf="isEditing(entry)" [(ngModel)]="entry.task" (keyup.enter)="saveEdit(entry)">
|
| 26 |
+
</mat-cell>
|
| 27 |
+
</ng-container>
|
| 28 |
+
|
| 29 |
+
<!-- Dataset Column -->
|
| 30 |
+
<ng-container matColumnDef="dataset">
|
| 31 |
+
<mat-header-cell *matHeaderCellDef> Dataset </mat-header-cell>
|
| 32 |
+
<mat-cell *matCellDef="let entry">
|
| 33 |
+
<span *ngIf="!isEditing(entry)">{{ entry.dataset }}</span>
|
| 34 |
+
<input *ngIf="isEditing(entry)" [(ngModel)]="entry.dataset" (keyup.enter)="saveEdit(entry)">
|
| 35 |
+
</mat-cell>
|
| 36 |
+
</ng-container>
|
| 37 |
+
|
| 38 |
+
<!-- Model Column -->
|
| 39 |
+
<ng-container matColumnDef="model">
|
| 40 |
+
<mat-header-cell *matHeaderCellDef> Model </mat-header-cell>
|
| 41 |
+
<mat-cell *matCellDef="let entry">
|
| 42 |
+
<span *ngIf="!isEditing(entry)">{{ entry.model }}</span>
|
| 43 |
+
<input *ngIf="isEditing(entry)" [(ngModel)]="entry.model" (keyup.enter)="saveEdit(entry)">
|
| 44 |
+
</mat-cell>
|
| 45 |
+
</ng-container>
|
| 46 |
+
|
| 47 |
+
<!-- Link Column -->
|
| 48 |
+
<ng-container matColumnDef="link">
|
| 49 |
+
<mat-header-cell *matHeaderCellDef> Link </mat-header-cell>
|
| 50 |
+
<mat-cell *matCellDef="let entry">
|
| 51 |
+
<a *ngIf="!isEditing(entry)" [href]="entry.link" target="_blank">{{ entry.link }}</a>
|
| 52 |
+
<input *ngIf="isEditing(entry)" [(ngModel)]="entry.link" (keyup.enter)="saveEdit(entry)">
|
| 53 |
+
</mat-cell>
|
| 54 |
+
</ng-container>
|
| 55 |
+
|
| 56 |
+
<!-- Email Column -->
|
| 57 |
+
<ng-container matColumnDef="email">
|
| 58 |
+
<mat-header-cell *matHeaderCellDef> Email </mat-header-cell>
|
| 59 |
+
<mat-cell *matCellDef="let entry">
|
| 60 |
+
<span *ngIf="!isEditing(entry)">{{ entry.email }}</span>
|
| 61 |
+
<input *ngIf="isEditing(entry)" [(ngModel)]="entry.email" (keyup.enter)="saveEdit(entry)">
|
| 62 |
+
</mat-cell>
|
| 63 |
+
</ng-container>
|
| 64 |
+
|
| 65 |
+
<!-- Status Column -->
|
| 66 |
+
<ng-container matColumnDef="status">
|
| 67 |
+
<mat-header-cell *matHeaderCellDef> Status </mat-header-cell>
|
| 68 |
+
<mat-cell *matCellDef="let entry">
|
| 69 |
+
<span *ngIf="!isEditing(entry)">{{ entry.status }}</span>
|
| 70 |
+
<input *ngIf="isEditing(entry)" [(ngModel)]="entry.status" (keyup.enter)="saveEdit(entry)">
|
| 71 |
+
</mat-cell>
|
| 72 |
+
</ng-container>
|
| 73 |
+
|
| 74 |
+
<!-- Time Column -->
|
| 75 |
+
<ng-container matColumnDef="time">
|
| 76 |
+
<mat-header-cell *matHeaderCellDef> Time </mat-header-cell>
|
| 77 |
+
<mat-cell *matCellDef="let entry">
|
| 78 |
+
<span *ngIf="!isEditing(entry)">{{ entry.time }}</span>
|
| 79 |
+
<input *ngIf="isEditing(entry)" [(ngModel)]="entry.time" (keyup.enter)="saveEdit(entry)">
|
| 80 |
+
</mat-cell>
|
| 81 |
+
</ng-container>
|
| 82 |
+
|
| 83 |
+
<!-- Is Public Column -->
|
| 84 |
+
<ng-container matColumnDef="is_public">
|
| 85 |
+
<mat-header-cell *matHeaderCellDef> Is Public </mat-header-cell>
|
| 86 |
+
<mat-cell *matCellDef="let entry">
|
| 87 |
+
<span *ngIf="!isEditing(entry)">{{ entry.is_public }}</span>
|
| 88 |
+
<input *ngIf="isEditing(entry)" type="checkbox" [(ngModel)]="entry.is_public" (keyup.enter)="saveEdit(entry)">
|
| 89 |
+
</mat-cell>
|
| 90 |
+
</ng-container>
|
| 91 |
+
|
| 92 |
+
<!-- Accuracy Column -->
|
| 93 |
+
<ng-container matColumnDef="accuracy">
|
| 94 |
+
<mat-header-cell *matHeaderCellDef> Accuracy </mat-header-cell>
|
| 95 |
+
<mat-cell *matCellDef="let entry">
|
| 96 |
+
<span *ngIf="!isEditing(entry)">{{ entry.accuracy | number: '1.2-2' }}</span>
|
| 97 |
+
<input *ngIf="isEditing(entry)" [(ngModel)]="entry.accuracy" (keyup.enter)="saveEdit(entry)">
|
| 98 |
+
</mat-cell>
|
| 99 |
+
</ng-container>
|
| 100 |
+
|
| 101 |
+
<!-- Precision Column -->
|
| 102 |
+
<ng-container matColumnDef="precision">
|
| 103 |
+
<mat-header-cell *matHeaderCellDef> Precision </mat-header-cell>
|
| 104 |
+
<mat-cell *matCellDef="let entry">
|
| 105 |
+
<span *ngIf="!isEditing(entry)">{{ entry.precision | number: '1.2-2' }}</span>
|
| 106 |
+
<input *ngIf="isEditing(entry)" [(ngModel)]="entry.precision" (keyup.enter)="saveEdit(entry)">
|
| 107 |
+
</mat-cell>
|
| 108 |
+
</ng-container>
|
| 109 |
+
|
| 110 |
+
<!-- Recall Column -->
|
| 111 |
+
<ng-container matColumnDef="recall">
|
| 112 |
+
<mat-header-cell *matHeaderCellDef> Recall </mat-header-cell>
|
| 113 |
+
<mat-cell *matCellDef="let entry">
|
| 114 |
+
<span *ngIf="!isEditing(entry)">{{ entry.recall | number: '1.2-2'}}</span>
|
| 115 |
+
<input *ngIf="isEditing(entry)" [(ngModel)]="entry.recall" (keyup.enter)="saveEdit(entry)">
|
| 116 |
+
</mat-cell>
|
| 117 |
+
</ng-container>
|
| 118 |
+
|
| 119 |
+
<!-- F1 Score Column -->
|
| 120 |
+
<ng-container matColumnDef="f1_score">
|
| 121 |
+
<mat-header-cell *matHeaderCellDef> F1 Score </mat-header-cell>
|
| 122 |
+
<mat-cell *matCellDef="let entry">
|
| 123 |
+
<span *ngIf="!isEditing(entry)">{{ entry.f1_score | number: '1.2-2' }}</span>
|
| 124 |
+
<input *ngIf="isEditing(entry)" [(ngModel)]="entry.f1_score" (keyup.enter)="saveEdit(entry)">
|
| 125 |
+
</mat-cell>
|
| 126 |
+
</ng-container>
|
| 127 |
+
|
| 128 |
+
<ng-container matColumnDef="actions">
|
| 129 |
+
<mat-header-cell *matHeaderCellDef class="actions-cell"> Actions </mat-header-cell>
|
| 130 |
+
<mat-cell *matCellDef="let entry" class="actions-cell">
|
| 131 |
+
<button *ngIf="!isEditing(entry)" mat-button (click)="editRow(entry)">Edit</button>
|
| 132 |
+
<button *ngIf="isEditing(entry)" mat-button (click)="saveEdit(entry)">Save</button>
|
| 133 |
+
<button *ngIf="isEditing(entry)" mat-button (click)="cancelEdit(entry)">Cancel</button>
|
| 134 |
+
<button mat-button color="warn" (click)="deleteRow(entry.id)">Delete</button>
|
| 135 |
+
</mat-cell>
|
| 136 |
+
</ng-container>
|
| 137 |
+
|
| 138 |
+
<mat-header-row *matHeaderRowDef="displayedColumns; sticky: true"></mat-header-row>
|
| 139 |
+
<mat-row *matRowDef="let row; columns: displayedColumns"></mat-row>
|
| 140 |
+
|
| 141 |
+
</table>
|
| 142 |
+
</div>
|
| 143 |
+
</mat-card>
|
| 144 |
+
</div>
|
src/app/components/body/control-panel/control-panel.component.spec.ts
ADDED
|
@@ -0,0 +1,23 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
import { ComponentFixture, TestBed } from '@angular/core/testing';
|
| 2 |
+
|
| 3 |
+
import { ControlPanelComponent } from './control-panel.component';
|
| 4 |
+
|
| 5 |
+
describe('ControlPanelComponent', () => {
|
| 6 |
+
let component: ControlPanelComponent;
|
| 7 |
+
let fixture: ComponentFixture<ControlPanelComponent>;
|
| 8 |
+
|
| 9 |
+
beforeEach(async () => {
|
| 10 |
+
await TestBed.configureTestingModule({
|
| 11 |
+
imports: [ControlPanelComponent]
|
| 12 |
+
})
|
| 13 |
+
.compileComponents();
|
| 14 |
+
|
| 15 |
+
fixture = TestBed.createComponent(ControlPanelComponent);
|
| 16 |
+
component = fixture.componentInstance;
|
| 17 |
+
fixture.detectChanges();
|
| 18 |
+
});
|
| 19 |
+
|
| 20 |
+
it('should create', () => {
|
| 21 |
+
expect(component).toBeTruthy();
|
| 22 |
+
});
|
| 23 |
+
});
|
src/app/components/body/control-panel/control-panel.component.ts
ADDED
|
@@ -0,0 +1,110 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
import {Component, OnInit} from '@angular/core';
|
| 2 |
+
import {AppStateService} from "../../../state_management/services/app-state.service";
|
| 3 |
+
import {map} from "rxjs";
|
| 4 |
+
import {AdminLoginComponent} from "./admin-login/admin-login.component";
|
| 5 |
+
import {AsyncPipe, DecimalPipe, NgIf} from "@angular/common";
|
| 6 |
+
import {MatButton} from "@angular/material/button";
|
| 7 |
+
import {MatCard, MatCardContent} from "@angular/material/card";
|
| 8 |
+
import {ControlPanelEntry} from "../../../state_management/models/control-panel-entry.model";
|
| 9 |
+
import {
|
| 10 |
+
MatCell,
|
| 11 |
+
MatCellDef,
|
| 12 |
+
MatColumnDef,
|
| 13 |
+
MatHeaderCell, MatHeaderCellDef,
|
| 14 |
+
MatHeaderRow,
|
| 15 |
+
MatHeaderRowDef,
|
| 16 |
+
MatRow, MatRowDef, MatTable, MatTableDataSource
|
| 17 |
+
} from "@angular/material/table";
|
| 18 |
+
import {FormsModule} from "@angular/forms";
|
| 19 |
+
|
| 20 |
+
@Component({
|
| 21 |
+
selector: 'app-control-panel',
|
| 22 |
+
standalone: true,
|
| 23 |
+
imports: [
|
| 24 |
+
AdminLoginComponent,
|
| 25 |
+
NgIf,
|
| 26 |
+
AsyncPipe,
|
| 27 |
+
MatButton,
|
| 28 |
+
MatCard,
|
| 29 |
+
MatCardContent,
|
| 30 |
+
MatCell,
|
| 31 |
+
MatCellDef,
|
| 32 |
+
MatColumnDef,
|
| 33 |
+
MatHeaderCell,
|
| 34 |
+
MatHeaderRow,
|
| 35 |
+
MatHeaderRowDef,
|
| 36 |
+
MatRow,
|
| 37 |
+
MatRowDef,
|
| 38 |
+
MatTable,
|
| 39 |
+
FormsModule,
|
| 40 |
+
MatHeaderCellDef,
|
| 41 |
+
DecimalPipe
|
| 42 |
+
],
|
| 43 |
+
templateUrl: './control-panel.component.html',
|
| 44 |
+
styleUrl: './control-panel.component.css'
|
| 45 |
+
})
|
| 46 |
+
export class ControlPanelComponent implements OnInit {
|
| 47 |
+
|
| 48 |
+
authenticationState = this.stateService.state$.pipe(
|
| 49 |
+
map(state => state.adminSessionStatus)
|
| 50 |
+
);
|
| 51 |
+
|
| 52 |
+
submissions = this.stateService.state$.pipe(
|
| 53 |
+
map(
|
| 54 |
+
state => state.controlPanelSubmissions
|
| 55 |
+
)
|
| 56 |
+
);
|
| 57 |
+
|
| 58 |
+
dataSource = new MatTableDataSource<ControlPanelEntry>();
|
| 59 |
+
|
| 60 |
+
displayedColumns: string[] = [
|
| 61 |
+
'team', 'task', 'dataset', 'model', 'link', 'email',
|
| 62 |
+
'status', 'time', 'is_public', 'accuracy', 'precision',
|
| 63 |
+
'recall', 'f1_score', 'actions' // Including 'actions' for edit/delete/save buttons
|
| 64 |
+
];
|
| 65 |
+
|
| 66 |
+
editingState: { [key: number]: boolean } = {};
|
| 67 |
+
|
| 68 |
+
constructor(private stateService: AppStateService) {
|
| 69 |
+
}
|
| 70 |
+
|
| 71 |
+
ngOnInit() {
|
| 72 |
+
this.submissions.subscribe(
|
| 73 |
+
data => {
|
| 74 |
+
this.dataSource.data = data;
|
| 75 |
+
}
|
| 76 |
+
)
|
| 77 |
+
this.refresh();
|
| 78 |
+
}
|
| 79 |
+
|
| 80 |
+
refresh() {
|
| 81 |
+
this.stateService.updateControlPanel();
|
| 82 |
+
}
|
| 83 |
+
|
| 84 |
+
editRow(entry: ControlPanelEntry) {
|
| 85 |
+
this.editingState[entry.id] = true;
|
| 86 |
+
}
|
| 87 |
+
|
| 88 |
+
saveEdit(entry: ControlPanelEntry) {
|
| 89 |
+
this.editingState[entry.id] = false;
|
| 90 |
+
// Modify the entry in the local data source
|
| 91 |
+
const index = this.dataSource.data.findIndex(e => e.id === entry.id);
|
| 92 |
+
this.dataSource.data[index] = entry;
|
| 93 |
+
this.stateService.forceUpdateSubmission(entry);
|
| 94 |
+
}
|
| 95 |
+
|
| 96 |
+
deleteRow(id: number) {
|
| 97 |
+
// remove the entry from the local data source
|
| 98 |
+
this.dataSource.data = this.dataSource.data.filter(entry => entry.id !== id);
|
| 99 |
+
this.stateService.deleteSubmission(id);
|
| 100 |
+
}
|
| 101 |
+
|
| 102 |
+
isEditing(entry: ControlPanelEntry): boolean {
|
| 103 |
+
return this.editingState[entry.id] || false;
|
| 104 |
+
}
|
| 105 |
+
|
| 106 |
+
cancelEdit(entry: ControlPanelEntry) {
|
| 107 |
+
this.editingState[entry.id] = false;
|
| 108 |
+
}
|
| 109 |
+
|
| 110 |
+
}
|
src/app/state_management/models/control-panel-entry.model.ts
ADDED
|
@@ -0,0 +1,16 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
export interface ControlPanelEntry {
|
| 2 |
+
id: number;
|
| 3 |
+
task: string;
|
| 4 |
+
dataset: string;
|
| 5 |
+
model: string;
|
| 6 |
+
link: string;
|
| 7 |
+
team: string;
|
| 8 |
+
email: string;
|
| 9 |
+
status: string;
|
| 10 |
+
time: string;
|
| 11 |
+
is_public: boolean;
|
| 12 |
+
accuracy: number;
|
| 13 |
+
precision: number;
|
| 14 |
+
recall: number;
|
| 15 |
+
f1_score: number;
|
| 16 |
+
}
|
src/app/state_management/models/leaderboard-entry.model.ts
CHANGED
|
@@ -2,10 +2,8 @@ export interface LeaderboardEntry {
|
|
| 2 |
task: string;
|
| 3 |
dataset: string;
|
| 4 |
model: string;
|
| 5 |
-
size: number;
|
| 6 |
accuracy: number;
|
| 7 |
precision: number;
|
| 8 |
recall: number;
|
| 9 |
f1_score: number;
|
| 10 |
-
overall_score: number;
|
| 11 |
}
|
|
|
|
| 2 |
task: string;
|
| 3 |
dataset: string;
|
| 4 |
model: string;
|
|
|
|
| 5 |
accuracy: number;
|
| 6 |
precision: number;
|
| 7 |
recall: number;
|
| 8 |
f1_score: number;
|
|
|
|
| 9 |
}
|
src/app/state_management/models/state.model.ts
CHANGED
|
@@ -2,10 +2,14 @@ import {TaskModel} from "./task.mode";
|
|
| 2 |
import {DatasetModel} from "./dataset.model";
|
| 3 |
import {SubmissionEntry} from "./submission-entry.model";
|
| 4 |
import {LeaderboardEntry} from "./leaderboard-entry.model";
|
|
|
|
|
|
|
| 5 |
|
| 6 |
export interface StateModel{
|
| 7 |
leaderboards: LeaderboardEntry[];
|
| 8 |
submissions: SubmissionEntry[];
|
| 9 |
datasets: DatasetModel[];
|
| 10 |
tasks: TaskModel[];
|
|
|
|
|
|
|
| 11 |
}
|
|
|
|
| 2 |
import {DatasetModel} from "./dataset.model";
|
| 3 |
import {SubmissionEntry} from "./submission-entry.model";
|
| 4 |
import {LeaderboardEntry} from "./leaderboard-entry.model";
|
| 5 |
+
import {ControlPanelEntry} from "./control-panel-entry.model";
|
| 6 |
+
import {Observable} from "rxjs";
|
| 7 |
|
| 8 |
export interface StateModel{
|
| 9 |
leaderboards: LeaderboardEntry[];
|
| 10 |
submissions: SubmissionEntry[];
|
| 11 |
datasets: DatasetModel[];
|
| 12 |
tasks: TaskModel[];
|
| 13 |
+
controlPanelSubmissions: ControlPanelEntry[];
|
| 14 |
+
adminSessionStatus: string;
|
| 15 |
}
|
src/app/state_management/services/app-state.service.ts
CHANGED
|
@@ -1,8 +1,9 @@
|
|
| 1 |
import { Injectable } from '@angular/core';
|
| 2 |
import {environment} from "../../../environments/environment";
|
| 3 |
-
import {BehaviorSubject, Observable} from "rxjs";
|
| 4 |
import {HttpClient} from "@angular/common/http";
|
| 5 |
import {StateModel} from "../models/state.model";
|
|
|
|
| 6 |
|
| 7 |
@Injectable({
|
| 8 |
providedIn: 'root'
|
|
@@ -15,19 +16,30 @@ export class AppStateService {
|
|
| 15 |
leaderboards: [],
|
| 16 |
submissions: [],
|
| 17 |
datasets: [],
|
| 18 |
-
tasks: []
|
|
|
|
|
|
|
| 19 |
}
|
| 20 |
);
|
| 21 |
|
| 22 |
public readonly state$ = this._state.asObservable();
|
| 23 |
|
| 24 |
-
constructor(public http: HttpClient
|
|
|
|
| 25 |
console.log('AppStateService created');
|
| 26 |
console.log(this._apiUrl)
|
| 27 |
this.updateTasks();
|
| 28 |
this.updateDatasets();
|
| 29 |
this.updateLeaderboards();
|
| 30 |
this.updateSubmissions();
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 31 |
}
|
| 32 |
|
| 33 |
private _setState(state: StateModel): void {
|
|
@@ -102,4 +114,50 @@ export class AppStateService {
|
|
| 102 |
}
|
| 103 |
);
|
| 104 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 105 |
}
|
|
|
|
| 1 |
import { Injectable } from '@angular/core';
|
| 2 |
import {environment} from "../../../environments/environment";
|
| 3 |
+
import {BehaviorSubject, catchError, Observable} from "rxjs";
|
| 4 |
import {HttpClient} from "@angular/common/http";
|
| 5 |
import {StateModel} from "../models/state.model";
|
| 6 |
+
import {AuthenticationService} from "./authentication.service";
|
| 7 |
|
| 8 |
@Injectable({
|
| 9 |
providedIn: 'root'
|
|
|
|
| 16 |
leaderboards: [],
|
| 17 |
submissions: [],
|
| 18 |
datasets: [],
|
| 19 |
+
tasks: [],
|
| 20 |
+
controlPanelSubmissions: [],
|
| 21 |
+
adminSessionStatus: ''
|
| 22 |
}
|
| 23 |
);
|
| 24 |
|
| 25 |
public readonly state$ = this._state.asObservable();
|
| 26 |
|
| 27 |
+
constructor(public http: HttpClient,
|
| 28 |
+
public authService: AuthenticationService) {
|
| 29 |
console.log('AppStateService created');
|
| 30 |
console.log(this._apiUrl)
|
| 31 |
this.updateTasks();
|
| 32 |
this.updateDatasets();
|
| 33 |
this.updateLeaderboards();
|
| 34 |
this.updateSubmissions();
|
| 35 |
+
authService.$authStatus.subscribe(
|
| 36 |
+
(status: string) => {
|
| 37 |
+
this._setState({
|
| 38 |
+
...this.getState(),
|
| 39 |
+
adminSessionStatus: status
|
| 40 |
+
});
|
| 41 |
+
}
|
| 42 |
+
);
|
| 43 |
}
|
| 44 |
|
| 45 |
private _setState(state: StateModel): void {
|
|
|
|
| 114 |
}
|
| 115 |
);
|
| 116 |
}
|
| 117 |
+
|
| 118 |
+
public authenticate(password : string) {
|
| 119 |
+
this.authService.login(password).subscribe(
|
| 120 |
+
() => {
|
| 121 |
+
this.updateControlPanel();
|
| 122 |
+
}
|
| 123 |
+
);
|
| 124 |
+
}
|
| 125 |
+
|
| 126 |
+
public updateControlPanel() {
|
| 127 |
+
const headers = this.authService.getAuthHeaders();
|
| 128 |
+
this.http.get(`${this._apiUrl}/controlPanelSubmissions`, { headers }).subscribe(
|
| 129 |
+
(data: any) => {
|
| 130 |
+
this._setState({
|
| 131 |
+
...this.getState(),
|
| 132 |
+
controlPanelSubmissions: data
|
| 133 |
+
});
|
| 134 |
+
}
|
| 135 |
+
);
|
| 136 |
+
}
|
| 137 |
+
|
| 138 |
+
public forceUpdateSubmission(entry: any){
|
| 139 |
+
const headers = this.authService.getAuthHeaders();
|
| 140 |
+
this.http.put(`${this._apiUrl}/controlPanelSubmission/${entry.id}`, entry, { headers }).subscribe(
|
| 141 |
+
() => {
|
| 142 |
+
this.updateControlPanel();
|
| 143 |
+
}
|
| 144 |
+
);
|
| 145 |
+
}
|
| 146 |
+
|
| 147 |
+
public deleteSubmission(id: number){
|
| 148 |
+
const headers = this.authService.getAuthHeaders();
|
| 149 |
+
console.log('Deleting submission with id: ' + id);
|
| 150 |
+
this.http.delete(`${this._apiUrl}/controlPanelSubmission/` + id, { headers })
|
| 151 |
+
.pipe(
|
| 152 |
+
catchError(error => {
|
| 153 |
+
console.log(error);
|
| 154 |
+
return error;
|
| 155 |
+
}
|
| 156 |
+
))
|
| 157 |
+
.subscribe(
|
| 158 |
+
() => {
|
| 159 |
+
this.updateControlPanel();
|
| 160 |
+
}
|
| 161 |
+
);
|
| 162 |
+
}
|
| 163 |
}
|
src/app/state_management/services/authentication.service.spec.ts
ADDED
|
@@ -0,0 +1,16 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
import { TestBed } from '@angular/core/testing';
|
| 2 |
+
|
| 3 |
+
import { AuthenticationService } from './authentication.service';
|
| 4 |
+
|
| 5 |
+
describe('AuthenticationService', () => {
|
| 6 |
+
let service: AuthenticationService;
|
| 7 |
+
|
| 8 |
+
beforeEach(() => {
|
| 9 |
+
TestBed.configureTestingModule({});
|
| 10 |
+
service = TestBed.inject(AuthenticationService);
|
| 11 |
+
});
|
| 12 |
+
|
| 13 |
+
it('should be created', () => {
|
| 14 |
+
expect(service).toBeTruthy();
|
| 15 |
+
});
|
| 16 |
+
});
|
src/app/state_management/services/authentication.service.ts
ADDED
|
@@ -0,0 +1,74 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
import {Injectable} from '@angular/core';
|
| 2 |
+
import {HttpClient, HttpHeaders} from "@angular/common/http";
|
| 3 |
+
import {BehaviorSubject, catchError, Observable, tap, throwError} from "rxjs";
|
| 4 |
+
import {environment} from "../../../environments/environment";
|
| 5 |
+
|
| 6 |
+
@Injectable({
|
| 7 |
+
providedIn: 'root'
|
| 8 |
+
})
|
| 9 |
+
export class AuthenticationService {
|
| 10 |
+
|
| 11 |
+
private readonly apiUrl = environment.apiUrl;
|
| 12 |
+
private token: string | null = this.getTokenFromLocalStorage();
|
| 13 |
+
public $authStatus = new BehaviorSubject<string>(
|
| 14 |
+
this.token !== null ? 'authenticated' : ''
|
| 15 |
+
);
|
| 16 |
+
|
| 17 |
+
|
| 18 |
+
constructor(
|
| 19 |
+
private http: HttpClient
|
| 20 |
+
) {
|
| 21 |
+
|
| 22 |
+
}
|
| 23 |
+
|
| 24 |
+
private getTokenFromLocalStorage(): string | null {
|
| 25 |
+
try {
|
| 26 |
+
return localStorage.getItem('auth_token');
|
| 27 |
+
} catch (e) {
|
| 28 |
+
return null;
|
| 29 |
+
}
|
| 30 |
+
}
|
| 31 |
+
|
| 32 |
+
public getAuthHeaders(): HttpHeaders {
|
| 33 |
+
return new HttpHeaders({
|
| 34 |
+
'Content-Type': 'application/json',
|
| 35 |
+
Authorization: `Bearer ${this.token}`,
|
| 36 |
+
});
|
| 37 |
+
}
|
| 38 |
+
|
| 39 |
+
public login(password: string): Observable<{ access_token: string; token_type: string }> {
|
| 40 |
+
// Create the request payload
|
| 41 |
+
const payload = new URLSearchParams();
|
| 42 |
+
payload.set('username', 'admin'); // Username is not used in this case
|
| 43 |
+
payload.set('password', password);
|
| 44 |
+
|
| 45 |
+
// Send POST request to the backend
|
| 46 |
+
return this.http.post<{ access_token: string; token_type: string }>
|
| 47 |
+
(
|
| 48 |
+
this.apiUrl + '/token', payload.toString(),
|
| 49 |
+
{
|
| 50 |
+
headers: {
|
| 51 |
+
'Content-Type': 'application/x-www-form-urlencoded', // Set content type for form data
|
| 52 |
+
},
|
| 53 |
+
}).pipe(
|
| 54 |
+
tap(response => {
|
| 55 |
+
this.token = response.access_token;
|
| 56 |
+
localStorage.setItem('auth_token', this.token);
|
| 57 |
+
this.$authStatus.next('authenticated');
|
| 58 |
+
}),
|
| 59 |
+
catchError(error => {
|
| 60 |
+
if (error.status === 401) {
|
| 61 |
+
this.$authStatus.next('wrong password');
|
| 62 |
+
} else {
|
| 63 |
+
this.$authStatus.next('server error');
|
| 64 |
+
}
|
| 65 |
+
// Return an observable to continue the stream
|
| 66 |
+
return throwError(() => error);
|
| 67 |
+
})
|
| 68 |
+
);
|
| 69 |
+
}
|
| 70 |
+
|
| 71 |
+
public isAuthenticated(): boolean {
|
| 72 |
+
return this.token !== null;
|
| 73 |
+
}
|
| 74 |
+
}
|
src/styles.css
CHANGED
|
@@ -2,9 +2,7 @@
|
|
| 2 |
|
| 3 |
html, body { height: 100%; }
|
| 4 |
body {
|
| 5 |
-
margin
|
| 6 |
-
margin-right: 3%;
|
| 7 |
-
margin-top: 0;
|
| 8 |
font-family: Roboto, "Helvetica Neue", sans-serif;
|
| 9 |
font-size: 15px;
|
| 10 |
}
|
|
|
|
| 2 |
|
| 3 |
html, body { height: 100%; }
|
| 4 |
body {
|
| 5 |
+
margin: 1%;
|
|
|
|
|
|
|
| 6 |
font-family: Roboto, "Helvetica Neue", sans-serif;
|
| 7 |
font-size: 15px;
|
| 8 |
}
|