diff --git a/angular/.editorconfig b/angular/.editorconfig new file mode 100644 index 0000000..59d9a3a --- /dev/null +++ b/angular/.editorconfig @@ -0,0 +1,16 @@ +# Editor configuration, see https://editorconfig.org +root = true + +[*] +charset = utf-8 +indent_style = space +indent_size = 2 +insert_final_newline = true +trim_trailing_whitespace = true + +[*.ts] +quote_type = single + +[*.md] +max_line_length = off +trim_trailing_whitespace = false diff --git a/angular/.gitignore b/angular/.gitignore new file mode 100644 index 0000000..0711527 --- /dev/null +++ b/angular/.gitignore @@ -0,0 +1,42 @@ +# See http://help.github.com/ignore-files/ for more about ignoring files. + +# Compiled output +/dist +/tmp +/out-tsc +/bazel-out + +# Node +/node_modules +npm-debug.log +yarn-error.log + +# IDEs and editors +.idea/ +.project +.classpath +.c9/ +*.launch +.settings/ +*.sublime-workspace + +# Visual Studio Code +.vscode/* +!.vscode/settings.json +!.vscode/tasks.json +!.vscode/launch.json +!.vscode/extensions.json +.history/* + +# Miscellaneous +/.angular/cache +.sass-cache/ +/connect.lock +/coverage +/libpeerconnection.log +testem.log +/typings + +# System files +.DS_Store +Thumbs.db diff --git a/angular/1deployMatsenFE.sh b/angular/1deployMatsenFE.sh new file mode 100644 index 0000000..adab1a7 --- /dev/null +++ b/angular/1deployMatsenFE.sh @@ -0,0 +1,65 @@ +#!/bin/bash + +export PATH=/opt/plesk/php/8.2/bin:$PATH; + +cd /var/www/vhosts/spawntree.de/git_repo_clones/futbase-fe/ +sudo git pull + +echo "$(tput setab 2)matsen frontend has been PULLED$(tput sgr 0)" + +rm -rf /var/www/vhosts/spawntree.de/matsen.spawntree.de/httpdocs/composer.lock +#cp -rf /var/www/vhosts/spawntree.de/git_repo_clones/futbase-fe/httpdocs/composer.lock /var/www/vhosts/spawntree.de/matsen.spawntree.de/httpdocs +rm -rf /var/www/vhosts/spawntree.de/matsen.spawntree.de/httpdocs/composer.json +cp -rf /var/www/vhosts/spawntree.de/git_repo_clones/futbase-fe/composer.json /var/www/vhosts/spawntree.de/matsen.spawntree.de/httpdocs + +rm -rf /var/www/vhosts/spawntree.de/matsen.spawntree.de/httpdocs/config +cp -rf /var/www/vhosts/spawntree.de/git_repo_clones/futbase-fe/config /var/www/vhosts/spawntree.de/matsen.spawntree.de/httpdocs + +rm -rf /var/www/vhosts/spawntree.de/matsen.spawntree.de/httpdocs/bin +cp -rf /var/www/vhosts/spawntree.de/git_repo_clones/futbase-fe/bin /var/www/vhosts/spawntree.de/matsen.spawntree.de/httpdocs + +rm -rf /var/www/vhosts/spawntree.de/matsen.spawntree.de/httpdocs/migrations +cp -rf /var/www/vhosts/spawntree.de/git_repo_clones/futbase-fe/migrations /var/www/vhosts/spawntree.de/matsen.spawntree.de/httpdocs + +rm -rf /var/www/vhosts/spawntree.de/matsen.spawntree.de/httpdocs/src +cp -rf /var/www/vhosts/spawntree.de/git_repo_clones/futbase-fe/src /var/www/vhosts/spawntree.de/matsen.spawntree.de/httpdocs + +rm -rf /var/www/vhosts/spawntree.de/matsen.spawntree.de/httpdocs/public/index.php +cp -rf /var/www/vhosts/spawntree.de/git_repo_clones/futbase-fe/public/index.php /var/www/vhosts/spawntree.de/matsen.spawntree.de/httpdocs/public + +echo "$(tput setab 2)Files have been copied$(tput sgr 0)" + +cd /var/www/vhosts/spawntree.de/matsen.spawntree.de/httpdocs +composer update --no-scripts + +echo "$(tput setab 2)COMPOSER UPDATED updated$(tput sgr 0)" + +php /var/www/vhosts/spawntree.de/matsen.spawntree.de/httpdocs/bin/console doctrine:migrations:migrate + +echo "$(tput setab 2)DATABASE SCHEMA updated$(tput sgr 0)" + +cd /var/www/vhosts/spawntree.de/ +sudo chmod 777 matsen.spawntree.de +cd /var/www/vhosts/spawntree.de/matsen.spawntree.de/ +sudo chmod 777 -R * + +cd /var/www/vhosts/spawntree.de/matsen.spawntree.de/httpdocs/var/cache/ +rm -R * + +php /var/www/vhosts/spawntree.de/matsen.spawntree.de/httpdocs/bin/console cache:clear +php /var/www/vhosts/spawntree.de/matsen.spawntree.de/httpdocs/bin/console cache:warmup + +echo "$(tput setab 2)CACHE HAS BEEN CLEARED$(tput sgr 0)" + +cd /var/www/vhosts/spawntree.de/matsen.spawntree.de/httpdocs/var/ +chmod 777 -R * +chmod 777 cache/ * +chmod 777 cache/ + +#service apache2 restart + +#echo "$(tput setab 2)CACHE cleared$(tput sgr 0)" + +echo "$(tput setab 7)$(tput setaf 1)THINK ABOUT POSSIBLE PATCHES!" + +echo "You have updated matsen api!$(tput sgr 0)" diff --git a/angular/README.md b/angular/README.md new file mode 100644 index 0000000..5b2f5b3 --- /dev/null +++ b/angular/README.md @@ -0,0 +1,88 @@ +# Futmachine + +This project was generated with [Angular CLI](https://github.com/angular/angular-cli) version 17.0.7. + +## Development server + +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. + +## Code scaffolding + +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`. + +## Build + +Run `ng build` to build the project. The build artifacts will be stored in the `dist/` directory. + +## Running unit tests + +Run `ng test` to execute the unit tests via [Karma](https://karma-runner.github.io). + +## Running end-to-end tests + +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. + +## Further help + +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. + + +############ + +# BEFORE Installation: +- npm -v (minimum is 8.0.0) +- node --version (minimum is 20.9.0) +- brew upgrade node +- npm install + +## Installation +- npm i -g @angular/cli + +### Only once +- ng new futbase --no-standalone + - Standalone is now the new default in v17 (no app.module.ts) + +- cd futbase -> ng serve + +## Install Bootstrap +- cd futbase +- npm i bootstrap @popperjs/core --save +- npm install bootstrap-icons + +## Install Angular Material +- cd futbase +- ng add @angular/material + +## Generate Dummy data +- cd futbase +- npm i @openapitools/openapi-generator-cli -D +- package.json: Scripts block: + - "generate:api": "openapi-generator-cli generate -i ./openapi.yaml -g typescript-angular -o src/app/core/api/v1 -p=removeOperationIdPrefix=true" +- Java must be installed +- cd futbase + +## Generate services from openapi.yaml +- run sh generateApi.sh +- (npm run generate:api + - Wenn es nicht geht: brew install java + - sudo ln -sfn /opt/homebrew/opt/openjdk/libexec/openjdk.jdk /Library/Java/JavaVirtualMachines/openjdk.jdk + - java -version) + - ACHTUNG: In Datei src/app/core/api/v1/model/partnerJsonId.ts diese zwei Zeilen löschen: + - readonly type?: string; + +## Module anlegen +- cd app +- ng g m registration --route register --module app.module + +## Interesting Links +- https://openapi-generator.tech/docs/installation +- https://www.kevinboosten.dev/how-i-use-an-openapi-spec-in-my-angular-projects + +- https://material.angular.io/ +- https://ng-bootstrap.github.io/#/home +- https://medium.com/ngconf/new-input-binding-for-ngcomponentoutlet-cb18a86a739d +- https://ng-bootstrap.github.io/#/components/typeahead/examples + +## Install for autogeneration of forms: +- brew install jq + diff --git a/angular/angular.json b/angular/angular.json new file mode 100644 index 0000000..0078e78 --- /dev/null +++ b/angular/angular.json @@ -0,0 +1,137 @@ +{ + "$schema": "./node_modules/@angular/cli/lib/config/schema.json", + "version": 1, + "newProjectRoot": "projects", + "projects": { + "futbase": { + "projectType": "application", + "schematics": { + "@schematics/angular:component": { + "style": "scss", + "standalone": false + }, + "@schematics/angular:directive": { + "standalone": false + }, + "@schematics/angular:pipe": { + "standalone": false + } + }, + "root": "", + "sourceRoot": "src", + "prefix": "app", + "architect": { + "build": { + "builder": "@angular-devkit/build-angular:application", + "options": { + "outputPath": "../httpdocs/public/client", + "baseHref": "/", + "index": "src/index.html", + "browser": "src/main.ts", + "polyfills": [ + "zone.js" + ], + "tsConfig": "tsconfig.app.json", + "inlineStyleLanguage": "scss", + "assets": [ + "src/favicon.ico", + "src/assets" + ], + "styles": [ + "@angular/material/prebuilt-themes/indigo-pink.css", + "node_modules/bootstrap/scss/bootstrap.scss", + "node_modules/bootstrap-icons/font/bootstrap-icons.css", + "src/styles.scss" + ], + "scripts": [ + "node_modules/bootstrap/dist/js/bootstrap.bundle.min.js" + ] + }, + "configurations": { + "production": { + "baseHref": "/client/", + "budgets": [ + { + "type": "initial", + "maximumWarning": "1mb", + "maximumError": "2mb" + }, + { + "type": "anyComponentStyle", + "maximumWarning": "2kb", + "maximumError": "4kb" + } + ], + "outputHashing": "all" + }, + "development": { + "optimization": false, + "extractLicenses": false, + "sourceMap": true, + "fileReplacements": [ + { + "replace": "src/environments/environment.ts", + "with": "src/environments/environment.development.ts" + } + ] + }, + "beta": { + "baseHref": "/client/", + "optimization": false, + "extractLicenses": false, + "sourceMap": true, + "fileReplacements": [ + { + "replace": "src/environments/environment.ts", + "with": "src/environments/environment.beta.ts" + } + ] + } + }, + "defaultConfiguration": "production" + }, + "serve": { + "builder": "@angular-devkit/build-angular:dev-server", + "configurations": { + "production": { + "buildTarget": "futbase:build:production" + }, + "development": { + "buildTarget": "futbase:build:development" + }, + "beta": { + "buildTarget": "futbase:build:beta" + } + }, + "defaultConfiguration": "development" + }, + "extract-i18n": { + "builder": "@angular-devkit/build-angular:extract-i18n", + "options": { + "buildTarget": "futbase:build" + } + }, + "test": { + "builder": "@angular-devkit/build-angular:karma", + "options": { + "polyfills": [ + "zone.js", + "zone.js/testing" + ], + "tsConfig": "tsconfig.spec.json", + "inlineStyleLanguage": "scss", + "assets": [ + "src/favicon.ico", + "src/assets" + ], + "styles": [ + "@angular/material/prebuilt-themes/indigo-pink.css", + "src/styles.scss" + ], + "scripts": [] + } + } + } + } + } +} \ No newline at end of file diff --git a/angular/buildClient.sh b/angular/buildClient.sh new file mode 100644 index 0000000..122a5a8 --- /dev/null +++ b/angular/buildClient.sh @@ -0,0 +1,34 @@ +#!/bin/bash + +rm -rf ../httpdocs/public/client/* + +# Run ng build +ng build + +# Check if ng build was successful +if [ $? -ne 0 ]; then + echo "ng build failed. Exiting script." + exit 1 +fi + + + +# Move files from ../httpdocs/public/client/browser to ../httpdocs/public/client +mv ../httpdocs/public/client/browser/* ../httpdocs/public/client/ + +# Check if move was successful +if [ $? -ne 0 ]; then + echo "Failed to move files. Exiting script." + exit 1 +fi + +# Remove the browser folder +rm -rf ../httpdocs/public/client/browser + +# Check if removal was successful +if [ $? -ne 0 ]; then + echo "Failed to remove browser folder. Exiting script." + exit 1 +fi + +echo "Build completed and files moved successfully." \ No newline at end of file diff --git a/angular/generateApi.sh b/angular/generateApi.sh new file mode 100644 index 0000000..1778373 --- /dev/null +++ b/angular/generateApi.sh @@ -0,0 +1,23 @@ +npm run generate:api + +find ./src/app/core/api/v1/model -type f -exec sed -i '' -e '' -e "s/hydramember/'hydra:member'/g" {} + +find ./src/app/core/api/v1/model -type f -exec sed -i '' -e '' -e "s/hydratotalItems/'hydra:totalItems'/g" {} + +find ./src/app/core/api/v1/model -type f -exec sed -i '' -e "s/hydraview/'hydra:view'/g" {} + +find ./src/app/core/api/v1/model -type f -exec sed -i '' -e "s/hydrasearch/'hydra:search'/g" {} + +find ./src/app/core/api/v1/model -type f -exec sed -i '' -e "s/hydratemplate/'hydra:template'/g" {} + +find ./src/app/core/api/v1/model -type f -exec sed -i '' -e "s/hydravariableRepresentation/'hydra:variableRepresentation'/g" {} + +find ./src/app/core/api/v1/model -type f -exec sed -i '' -e "s/hydramapping/'hydra:mapping'/g" {} + +find ./src/app/core/api/v1/model -type f -exec sed -i '' -e "s/hydrafirst/'hydra:first'/g" {} + +find ./src/app/core/api/v1/model -type f -exec sed -i '' -e "s/hydralast/'hydra:last'/g" {} + +find ./src/app/core/api/v1/model -type f -exec sed -i '' -e "s/hydranext/'hydra:next'/g" {} + +find ./src/app/core/api/v1/model -type f -exec sed -i '' -e "s/hydraprevious/'hydra:previous'/g" {} + + + +# https://dev.to/martinmcwhorter/generate-angular-reactiveforms-from-swagger-openapi-35h9 -> alternative +# https://github.com/Humbertda/ngx-openapi-form-generator -> alternative +# https://github.com/verizonconnect/ngx-form-generator -> we use this one + +cat openapi.json | jq 'walk(if type == "object" then with_entries(select(.key | test("^@") | not)) else . end)' > openapi_no_hydra.json +npx ngx-form-generator -i openapi_no_hydra.json -o src/app/_forms/ -f apiForms.ts + +rm openapi_no_hydra.json \ No newline at end of file diff --git a/angular/openapi.json b/angular/openapi.json new file mode 100644 index 0000000..ff3bd69 --- /dev/null +++ b/angular/openapi.json @@ -0,0 +1 @@ +{"openapi":"3.1.0","info":{"title":"Hello API Platform","description":"","version":"1.0.0"},"servers":[{"url":"\/","description":""}],"paths":{"\/api\/account_trade_pile_items":{"get":{"operationId":"api_account_trade_pile_items_get_collection","tags":["AccountTradePileItem"],"responses":{"200":{"description":"AccountTradePileItem collection","content":{"application\/ld+json":{"schema":{"type":"object","properties":{"hydra:member":{"type":"array","items":{"$ref":"#\/components\/schemas\/AccountTradePileItem.jsonld"}},"hydra:totalItems":{"type":"integer","minimum":0},"hydra:view":{"type":"object","properties":{"@id":{"type":"string","format":"iri-reference"},"@type":{"type":"string"},"hydra:first":{"type":"string","format":"iri-reference"},"hydra:last":{"type":"string","format":"iri-reference"},"hydra:previous":{"type":"string","format":"iri-reference"},"hydra:next":{"type":"string","format":"iri-reference"}},"example":{"@id":"string","type":"string","hydra:first":"string","hydra:last":"string","hydra:previous":"string","hydra:next":"string"}},"hydra:search":{"type":"object","properties":{"@type":{"type":"string"},"hydra:template":{"type":"string"},"hydra:variableRepresentation":{"type":"string"},"hydra:mapping":{"type":"array","items":{"type":"object","properties":{"@type":{"type":"string"},"variable":{"type":"string"},"property":{"type":["string","null"]},"required":{"type":"boolean"}}}}}}},"required":["hydra:member"]}}}}},"summary":"Retrieves the collection of AccountTradePileItem resources.","description":"Retrieves the collection of AccountTradePileItem resources.","parameters":[{"name":"page","in":"query","description":"The collection page number","required":false,"deprecated":false,"allowEmptyValue":true,"schema":{"type":"integer","default":1},"style":"form","explode":false,"allowReserved":false},{"name":"itemsPerPage","in":"query","description":"The number of items per page","required":false,"deprecated":false,"allowEmptyValue":true,"schema":{"type":"integer","default":50,"minimum":0,"maximum":100},"style":"form","explode":false,"allowReserved":false},{"name":"account","in":"query","description":"","required":false,"deprecated":false,"allowEmptyValue":true,"schema":{"type":"string"},"style":"form","explode":false,"allowReserved":false},{"name":"account[]","in":"query","description":"","required":false,"deprecated":false,"allowEmptyValue":true,"schema":{"type":"array","items":{"type":"string"}},"style":"form","explode":true,"allowReserved":false},{"name":"candidateItem","in":"query","description":"","required":false,"deprecated":false,"allowEmptyValue":true,"schema":{"type":"string"},"style":"form","explode":false,"allowReserved":false},{"name":"candidateItem[]","in":"query","description":"","required":false,"deprecated":false,"allowEmptyValue":true,"schema":{"type":"array","items":{"type":"string"}},"style":"form","explode":true,"allowReserved":false},{"name":"candidateNameSearch","in":"query","description":"","required":false,"deprecated":false,"allowEmptyValue":true,"schema":{"type":"string"},"style":"form","explode":false,"allowReserved":false},{"name":"accountTmOpenFilter","in":"query","description":"Filter items based on the tmOpen value of the associated account","required":false,"deprecated":false,"allowEmptyValue":true,"schema":{"type":"boolean"},"style":"form","explode":false,"allowReserved":false},{"name":"custom_json_filter","in":"query","description":"","required":false,"deprecated":false,"allowEmptyValue":true,"schema":{"type":"string"},"style":"form","explode":false,"allowReserved":false},{"name":"custom_json_order","in":"query","description":"","required":false,"deprecated":false,"allowEmptyValue":true,"schema":{"type":"string"},"style":"form","explode":false,"allowReserved":false,"example":"{\"active\":\"cntSoldItems\",\"direction\":\"desc\",\"listColDefinition\":{\"field\":\"cntSoldItems\",\"sortingSubResource\":\"tradePileItems\",\"countSortSubresource\":true,\"countSortSubresourceValue\":[\"closed\"],\"countSortSubresourceField\":\"tradeState\",\"countSortFilterSubResource\":\"account\",\"countSortFilterSubresourceField\":\"tmOpen\",\"countSortFilterSubresourceValue\":\"0\"}}"}],"deprecated":false},"parameters":[]},"\/api\/account_trade_pile_items\/{id}":{"get":{"operationId":"api_account_trade_pile_items_id_get","tags":["AccountTradePileItem"],"responses":{"200":{"description":"AccountTradePileItem resource","content":{"application\/ld+json":{"schema":{"$ref":"#\/components\/schemas\/AccountTradePileItem.jsonld"}}}},"404":{"description":"Resource not found"}},"summary":"Retrieves a AccountTradePileItem resource.","description":"Retrieves a AccountTradePileItem resource.","parameters":[{"name":"id","in":"path","description":"AccountTradePileItem identifier","required":true,"deprecated":false,"allowEmptyValue":false,"schema":{"type":"string"},"style":"simple","explode":false,"allowReserved":false}],"deprecated":false},"patch":{"operationId":"api_account_trade_pile_items_id_patch","tags":["AccountTradePileItem"],"responses":{"200":{"description":"AccountTradePileItem resource updated","content":{"application\/ld+json":{"schema":{"$ref":"#\/components\/schemas\/AccountTradePileItem.jsonld"}}},"links":{}},"400":{"description":"Invalid input"},"422":{"description":"Unprocessable entity"},"404":{"description":"Resource not found"}},"summary":"Updates the AccountTradePileItem resource.","description":"Updates the AccountTradePileItem resource.","parameters":[{"name":"id","in":"path","description":"AccountTradePileItem identifier","required":true,"deprecated":false,"allowEmptyValue":false,"schema":{"type":"string"},"style":"simple","explode":false,"allowReserved":false}],"requestBody":{"description":"The updated AccountTradePileItem resource","content":{"application\/merge-patch+json":{"schema":{"$ref":"#\/components\/schemas\/AccountTradePileItem"}}},"required":true},"deprecated":false},"parameters":[]},"\/api\/auth":{"post":{"operationId":"login_check_post","tags":["Login Check"],"responses":{"200":{"description":"User token created","content":{"application\/json":{"schema":{"type":"object","properties":{"token":{"readOnly":true,"type":"string","nullable":false}},"required":["token"]}}}}},"summary":"Creates a user token.","description":"Creates a user token.","requestBody":{"description":"The login data","content":{"application\/json":{"schema":{"type":"object","properties":{"email":{"type":"string","nullable":false},"password":{"type":"string","nullable":false}},"required":["email","password"]}}},"required":true}},"parameters":[]},"\/api\/candidate-items\/{id}\/stock-accounts":{"get":{"operationId":"api_candidate-items_idstock-accounts_get","tags":["CandidateStockAccounts"],"responses":{"200":{"description":"CandidateStockAccounts resource","content":{"application\/ld+json":{"schema":{"$ref":"#\/components\/schemas\/CandidateStockAccounts.jsonld"}}}},"404":{"description":"Resource not found"}},"summary":"Retrieves the stock and missing accounts for a candidate item","description":"Retrieves a CandidateStockAccounts resource.","parameters":[{"name":"id","in":"path","description":"Candidate Item ID","required":true,"deprecated":false,"allowEmptyValue":false,"schema":{"type":"integer"},"style":"simple","explode":false,"allowReserved":false}],"deprecated":false},"parameters":[]},"\/api\/candidate_stats":{"get":{"operationId":"api_candidate_stats_get_collection","tags":["CandidateStat"],"responses":{"200":{"description":"CandidateStat collection","content":{"application\/ld+json":{"schema":{"type":"object","properties":{"hydra:member":{"type":"array","items":{"$ref":"#\/components\/schemas\/CandidateStat.jsonld"}},"hydra:totalItems":{"type":"integer","minimum":0},"hydra:view":{"type":"object","properties":{"@id":{"type":"string","format":"iri-reference"},"@type":{"type":"string"},"hydra:first":{"type":"string","format":"iri-reference"},"hydra:last":{"type":"string","format":"iri-reference"},"hydra:previous":{"type":"string","format":"iri-reference"},"hydra:next":{"type":"string","format":"iri-reference"}},"example":{"@id":"string","type":"string","hydra:first":"string","hydra:last":"string","hydra:previous":"string","hydra:next":"string"}},"hydra:search":{"type":"object","properties":{"@type":{"type":"string"},"hydra:template":{"type":"string"},"hydra:variableRepresentation":{"type":"string"},"hydra:mapping":{"type":"array","items":{"type":"object","properties":{"@type":{"type":"string"},"variable":{"type":"string"},"property":{"type":["string","null"]},"required":{"type":"boolean"}}}}}}},"required":["hydra:member"]}}}}},"summary":"Retrieves the collection of CandidateStat resources.","description":"Retrieves the collection of CandidateStat resources.","parameters":[{"name":"page","in":"query","description":"The collection page number","required":false,"deprecated":false,"allowEmptyValue":true,"schema":{"type":"integer","default":1},"style":"form","explode":false,"allowReserved":false},{"name":"itemsPerPage","in":"query","description":"The number of items per page","required":false,"deprecated":false,"allowEmptyValue":true,"schema":{"type":"integer","default":50,"minimum":0,"maximum":100},"style":"form","explode":false,"allowReserved":false},{"name":"candidateNameSearch","in":"query","description":"","required":false,"deprecated":false,"allowEmptyValue":true,"schema":{"type":"string"},"style":"form","explode":false,"allowReserved":false},{"name":"custom_json_order","in":"query","description":"","required":false,"deprecated":false,"allowEmptyValue":true,"schema":{"type":"string"},"style":"form","explode":false,"allowReserved":false,"example":"{\"active\":\"cntSoldItems\",\"direction\":\"desc\",\"listColDefinition\":{\"field\":\"cntSoldItems\",\"sortingSubResource\":\"tradePileItems\",\"countSortSubresource\":true,\"countSortSubresourceValue\":[\"closed\"],\"countSortSubresourceField\":\"tradeState\",\"countSortFilterSubResource\":\"account\",\"countSortFilterSubresourceField\":\"tmOpen\",\"countSortFilterSubresourceValue\":\"0\"}}"}],"deprecated":false},"parameters":[]},"\/api\/candidate_stats\/{id}":{"get":{"operationId":"api_candidate_stats_id_get","tags":["CandidateStat"],"responses":{"200":{"description":"CandidateStat resource","content":{"application\/ld+json":{"schema":{"$ref":"#\/components\/schemas\/CandidateStat.jsonld"}}}},"404":{"description":"Resource not found"}},"summary":"Retrieves a CandidateStat resource.","description":"Retrieves a CandidateStat resource.","parameters":[{"name":"id","in":"path","description":"CandidateStat identifier","required":true,"deprecated":false,"allowEmptyValue":false,"schema":{"type":"string"},"style":"simple","explode":false,"allowReserved":false}],"deprecated":false},"parameters":[]},"\/api\/candidates":{"get":{"operationId":"api_candidates_get_collection","tags":["Candidate"],"responses":{"200":{"description":"Candidate collection","content":{"application\/ld+json":{"schema":{"type":"object","properties":{"hydra:member":{"type":"array","items":{"$ref":"#\/components\/schemas\/Candidate.jsonld"}},"hydra:totalItems":{"type":"integer","minimum":0},"hydra:view":{"type":"object","properties":{"@id":{"type":"string","format":"iri-reference"},"@type":{"type":"string"},"hydra:first":{"type":"string","format":"iri-reference"},"hydra:last":{"type":"string","format":"iri-reference"},"hydra:previous":{"type":"string","format":"iri-reference"},"hydra:next":{"type":"string","format":"iri-reference"}},"example":{"@id":"string","type":"string","hydra:first":"string","hydra:last":"string","hydra:previous":"string","hydra:next":"string"}},"hydra:search":{"type":"object","properties":{"@type":{"type":"string"},"hydra:template":{"type":"string"},"hydra:variableRepresentation":{"type":"string"},"hydra:mapping":{"type":"array","items":{"type":"object","properties":{"@type":{"type":"string"},"variable":{"type":"string"},"property":{"type":["string","null"]},"required":{"type":"boolean"}}}}}}},"required":["hydra:member"]}}}}},"summary":"Retrieves the collection of Candidate resources.","description":"Retrieves the collection of Candidate resources.","parameters":[{"name":"page","in":"query","description":"The collection page number","required":false,"deprecated":false,"allowEmptyValue":true,"schema":{"type":"integer","default":1},"style":"form","explode":false,"allowReserved":false},{"name":"itemsPerPage","in":"query","description":"The number of items per page","required":false,"deprecated":false,"allowEmptyValue":true,"schema":{"type":"integer","default":50,"minimum":0,"maximum":100},"style":"form","explode":false,"allowReserved":false},{"name":"candidateNameSearch","in":"query","description":"","required":false,"deprecated":false,"allowEmptyValue":true,"schema":{"type":"string"},"style":"form","explode":false,"allowReserved":false},{"name":"custom_json_filter","in":"query","description":"","required":false,"deprecated":false,"allowEmptyValue":true,"schema":{"type":"string"},"style":"form","explode":false,"allowReserved":false},{"name":"custom_json_order","in":"query","description":"","required":false,"deprecated":false,"allowEmptyValue":true,"schema":{"type":"string"},"style":"form","explode":false,"allowReserved":false,"example":"{\"active\":\"cntSoldItems\",\"direction\":\"desc\",\"listColDefinition\":{\"field\":\"cntSoldItems\",\"sortingSubResource\":\"tradePileItems\",\"countSortSubresource\":true,\"countSortSubresourceValue\":[\"closed\"],\"countSortSubresourceField\":\"tradeState\",\"countSortFilterSubResource\":\"account\",\"countSortFilterSubresourceField\":\"tmOpen\",\"countSortFilterSubresourceValue\":\"0\"}}"}],"deprecated":false},"post":{"operationId":"api_candidates_post","tags":["Candidate"],"responses":{"201":{"description":"Candidate resource created","content":{"application\/ld+json":{"schema":{"$ref":"#\/components\/schemas\/Candidate.jsonld"}}},"links":{}},"400":{"description":"Invalid input"},"422":{"description":"Unprocessable entity"}},"summary":"Creates a Candidate resource.","description":"Creates a Candidate resource.","parameters":[],"requestBody":{"description":"The new Candidate resource","content":{"application\/ld+json":{"schema":{"$ref":"#\/components\/schemas\/Candidate.jsonld"}}},"required":true},"deprecated":false},"parameters":[]},"\/api\/candidates\/{id}":{"get":{"operationId":"api_candidates_id_get","tags":["Candidate"],"responses":{"200":{"description":"Candidate resource","content":{"application\/ld+json":{"schema":{"$ref":"#\/components\/schemas\/Candidate.jsonld"}}}},"404":{"description":"Resource not found"}},"summary":"Retrieves a Candidate resource.","description":"Retrieves a Candidate resource.","parameters":[{"name":"id","in":"path","description":"Candidate identifier","required":true,"deprecated":false,"allowEmptyValue":false,"schema":{"type":"string"},"style":"simple","explode":false,"allowReserved":false}],"deprecated":false},"patch":{"operationId":"api_candidates_id_patch","tags":["Candidate"],"responses":{"200":{"description":"Candidate resource updated","content":{"application\/ld+json":{"schema":{"$ref":"#\/components\/schemas\/Candidate.jsonld"}}},"links":{}},"400":{"description":"Invalid input"},"422":{"description":"Unprocessable entity"},"404":{"description":"Resource not found"}},"summary":"Updates the Candidate resource.","description":"Updates the Candidate resource.","parameters":[{"name":"id","in":"path","description":"Candidate identifier","required":true,"deprecated":false,"allowEmptyValue":false,"schema":{"type":"string"},"style":"simple","explode":false,"allowReserved":false}],"requestBody":{"description":"The updated Candidate resource","content":{"application\/merge-patch+json":{"schema":{"$ref":"#\/components\/schemas\/Candidate"}}},"required":true},"deprecated":false},"parameters":[]},"\/api\/config":{"get":{"operationId":"api_config_get","tags":["Config"],"responses":{"200":{"description":"Config resource","content":{"application\/ld+json":{"schema":{"$ref":"#\/components\/schemas\/Config.jsonld"}}}},"404":{"description":"Resource not found"}},"summary":"Retrieves a Config resource.","description":"Retrieves a Config resource.","parameters":[],"deprecated":false},"patch":{"operationId":"api_config_patch","tags":["Config"],"responses":{"200":{"description":"Config resource updated","content":{"application\/ld+json":{"schema":{"$ref":"#\/components\/schemas\/Config.jsonld"}}},"links":{}},"400":{"description":"Invalid input"},"422":{"description":"Unprocessable entity"},"404":{"description":"Resource not found"}},"summary":"Updates the Config resource.","description":"Updates the Config resource.","parameters":[],"requestBody":{"description":"The updated Config resource","content":{"application\/merge-patch+json":{"schema":{"$ref":"#\/components\/schemas\/Config"}}},"required":true},"deprecated":false},"parameters":[]},"\/api\/game_accounts":{"get":{"operationId":"api_game_accounts_get_collection","tags":["GameAccount"],"responses":{"200":{"description":"GameAccount collection","content":{"application\/ld+json":{"schema":{"type":"object","properties":{"hydra:member":{"type":"array","items":{"$ref":"#\/components\/schemas\/GameAccount.jsonld"}},"hydra:totalItems":{"type":"integer","minimum":0},"hydra:view":{"type":"object","properties":{"@id":{"type":"string","format":"iri-reference"},"@type":{"type":"string"},"hydra:first":{"type":"string","format":"iri-reference"},"hydra:last":{"type":"string","format":"iri-reference"},"hydra:previous":{"type":"string","format":"iri-reference"},"hydra:next":{"type":"string","format":"iri-reference"}},"example":{"@id":"string","type":"string","hydra:first":"string","hydra:last":"string","hydra:previous":"string","hydra:next":"string"}},"hydra:search":{"type":"object","properties":{"@type":{"type":"string"},"hydra:template":{"type":"string"},"hydra:variableRepresentation":{"type":"string"},"hydra:mapping":{"type":"array","items":{"type":"object","properties":{"@type":{"type":"string"},"variable":{"type":"string"},"property":{"type":["string","null"]},"required":{"type":"boolean"}}}}}}},"required":["hydra:member"]}}}}},"summary":"Retrieves the collection of GameAccount resources.","description":"Retrieves the collection of GameAccount resources.","parameters":[{"name":"page","in":"query","description":"The collection page number","required":false,"deprecated":false,"allowEmptyValue":true,"schema":{"type":"integer","default":1},"style":"form","explode":false,"allowReserved":false},{"name":"itemsPerPage","in":"query","description":"The number of items per page","required":false,"deprecated":false,"allowEmptyValue":true,"schema":{"type":"integer","default":50,"minimum":0,"maximum":100},"style":"form","explode":false,"allowReserved":false},{"name":"owner","in":"query","description":"","required":false,"deprecated":false,"allowEmptyValue":true,"schema":{"type":"string"},"style":"form","explode":false,"allowReserved":false},{"name":"owner[]","in":"query","description":"","required":false,"deprecated":false,"allowEmptyValue":true,"schema":{"type":"array","items":{"type":"string"}},"style":"form","explode":true,"allowReserved":false},{"name":"email","in":"query","description":"","required":false,"deprecated":false,"allowEmptyValue":true,"schema":{"type":"string"},"style":"form","explode":false,"allowReserved":false},{"name":"profile","in":"query","description":"","required":false,"deprecated":false,"allowEmptyValue":true,"schema":{"type":"string"},"style":"form","explode":false,"allowReserved":false},{"name":"tmOpen","in":"query","description":"","required":false,"deprecated":false,"allowEmptyValue":true,"schema":{"type":"boolean"},"style":"form","explode":false,"allowReserved":false},{"name":"custom_json_filter","in":"query","description":"","required":false,"deprecated":false,"allowEmptyValue":true,"schema":{"type":"string"},"style":"form","explode":false,"allowReserved":false},{"name":"custom_json_order","in":"query","description":"","required":false,"deprecated":false,"allowEmptyValue":true,"schema":{"type":"string"},"style":"form","explode":false,"allowReserved":false,"example":"{\"active\":\"cntSoldItems\",\"direction\":\"desc\",\"listColDefinition\":{\"field\":\"cntSoldItems\",\"sortingSubResource\":\"tradePileItems\",\"countSortSubresource\":true,\"countSortSubresourceValue\":[\"closed\"],\"countSortSubresourceField\":\"tradeState\",\"countSortFilterSubResource\":\"account\",\"countSortFilterSubresourceField\":\"tmOpen\",\"countSortFilterSubresourceValue\":\"0\"}}"}],"deprecated":false},"post":{"operationId":"api_game_accounts_post","tags":["GameAccount"],"responses":{"201":{"description":"GameAccount resource created","content":{"application\/ld+json":{"schema":{"$ref":"#\/components\/schemas\/GameAccount.jsonld"}}},"links":{}},"400":{"description":"Invalid input"},"422":{"description":"Unprocessable entity"}},"summary":"Creates a GameAccount resource.","description":"Creates a GameAccount resource.","parameters":[],"requestBody":{"description":"The new GameAccount resource","content":{"application\/ld+json":{"schema":{"$ref":"#\/components\/schemas\/GameAccount.jsonld"}}},"required":true},"deprecated":false},"parameters":[]},"\/api\/game_accounts\/{id}":{"get":{"operationId":"api_game_accounts_id_get","tags":["GameAccount"],"responses":{"200":{"description":"GameAccount resource","content":{"application\/ld+json":{"schema":{"$ref":"#\/components\/schemas\/GameAccount.jsonld"}}}},"404":{"description":"Resource not found"}},"summary":"Retrieves a GameAccount resource.","description":"Retrieves a GameAccount resource.","parameters":[{"name":"id","in":"path","description":"GameAccount identifier","required":true,"deprecated":false,"allowEmptyValue":false,"schema":{"type":"string"},"style":"simple","explode":false,"allowReserved":false}],"deprecated":false},"patch":{"operationId":"api_game_accounts_id_patch","tags":["GameAccount"],"responses":{"200":{"description":"GameAccount resource updated","content":{"application\/ld+json":{"schema":{"$ref":"#\/components\/schemas\/GameAccount.jsonld"}}},"links":{}},"400":{"description":"Invalid input"},"422":{"description":"Unprocessable entity"},"404":{"description":"Resource not found"}},"summary":"Updates the GameAccount resource.","description":"Updates the GameAccount resource.","parameters":[{"name":"id","in":"path","description":"GameAccount identifier","required":true,"deprecated":false,"allowEmptyValue":false,"schema":{"type":"string"},"style":"simple","explode":false,"allowReserved":false}],"requestBody":{"description":"The updated GameAccount resource","content":{"application\/merge-patch+json":{"schema":{"$ref":"#\/components\/schemas\/GameAccount"}}},"required":true},"deprecated":false},"parameters":[]},"\/api\/log_account_credits":{"get":{"operationId":"api_log_account_credits_get_collection","tags":["LogAccountCredit"],"responses":{"200":{"description":"LogAccountCredit collection","content":{"application\/ld+json":{"schema":{"type":"object","properties":{"hydra:member":{"type":"array","items":{"$ref":"#\/components\/schemas\/LogAccountCredit.jsonld"}},"hydra:totalItems":{"type":"integer","minimum":0},"hydra:view":{"type":"object","properties":{"@id":{"type":"string","format":"iri-reference"},"@type":{"type":"string"},"hydra:first":{"type":"string","format":"iri-reference"},"hydra:last":{"type":"string","format":"iri-reference"},"hydra:previous":{"type":"string","format":"iri-reference"},"hydra:next":{"type":"string","format":"iri-reference"}},"example":{"@id":"string","type":"string","hydra:first":"string","hydra:last":"string","hydra:previous":"string","hydra:next":"string"}},"hydra:search":{"type":"object","properties":{"@type":{"type":"string"},"hydra:template":{"type":"string"},"hydra:variableRepresentation":{"type":"string"},"hydra:mapping":{"type":"array","items":{"type":"object","properties":{"@type":{"type":"string"},"variable":{"type":"string"},"property":{"type":["string","null"]},"required":{"type":"boolean"}}}}}}},"required":["hydra:member"]}}}}},"summary":"Retrieves the collection of LogAccountCredit resources.","description":"Retrieves the collection of LogAccountCredit resources.","parameters":[{"name":"page","in":"query","description":"The collection page number","required":false,"deprecated":false,"allowEmptyValue":true,"schema":{"type":"integer","default":1},"style":"form","explode":false,"allowReserved":false},{"name":"itemsPerPage","in":"query","description":"The number of items per page","required":false,"deprecated":false,"allowEmptyValue":true,"schema":{"type":"integer","default":50,"minimum":0,"maximum":100},"style":"form","explode":false,"allowReserved":false},{"name":"order[creationDate]","in":"query","description":"","required":false,"deprecated":false,"allowEmptyValue":true,"schema":{"type":"string","enum":["asc","desc"]},"style":"form","explode":false,"allowReserved":false},{"name":"order[credits]","in":"query","description":"","required":false,"deprecated":false,"allowEmptyValue":true,"schema":{"type":"string","enum":["asc","desc"]},"style":"form","explode":false,"allowReserved":false},{"name":"order[revenue]","in":"query","description":"","required":false,"deprecated":false,"allowEmptyValue":true,"schema":{"type":"string","enum":["asc","desc"]},"style":"form","explode":false,"allowReserved":false}],"deprecated":false},"parameters":[]},"\/api\/log_account_credits\/{id}":{"get":{"operationId":"api_log_account_credits_id_get","tags":["LogAccountCredit"],"responses":{"200":{"description":"LogAccountCredit resource","content":{"application\/ld+json":{"schema":{"$ref":"#\/components\/schemas\/LogAccountCredit.jsonld"}}}},"404":{"description":"Resource not found"}},"summary":"Retrieves a LogAccountCredit resource.","description":"Retrieves a LogAccountCredit resource.","parameters":[{"name":"id","in":"path","description":"LogAccountCredit identifier","required":true,"deprecated":false,"allowEmptyValue":false,"schema":{"type":"string"},"style":"simple","explode":false,"allowReserved":false}],"deprecated":false},"parameters":[]},"\/api\/log_account_profits":{"get":{"operationId":"api_log_account_profits_get_collection","tags":["LogAccountProfit"],"responses":{"200":{"description":"LogAccountProfit collection","content":{"application\/ld+json":{"schema":{"type":"object","properties":{"hydra:member":{"type":"array","items":{"$ref":"#\/components\/schemas\/LogAccountProfit.jsonld"}},"hydra:totalItems":{"type":"integer","minimum":0},"hydra:view":{"type":"object","properties":{"@id":{"type":"string","format":"iri-reference"},"@type":{"type":"string"},"hydra:first":{"type":"string","format":"iri-reference"},"hydra:last":{"type":"string","format":"iri-reference"},"hydra:previous":{"type":"string","format":"iri-reference"},"hydra:next":{"type":"string","format":"iri-reference"}},"example":{"@id":"string","type":"string","hydra:first":"string","hydra:last":"string","hydra:previous":"string","hydra:next":"string"}},"hydra:search":{"type":"object","properties":{"@type":{"type":"string"},"hydra:template":{"type":"string"},"hydra:variableRepresentation":{"type":"string"},"hydra:mapping":{"type":"array","items":{"type":"object","properties":{"@type":{"type":"string"},"variable":{"type":"string"},"property":{"type":["string","null"]},"required":{"type":"boolean"}}}}}}},"required":["hydra:member"]}}}}},"summary":"Retrieves the collection of LogAccountProfit resources.","description":"Retrieves the collection of LogAccountProfit resources.","parameters":[{"name":"page","in":"query","description":"The collection page number","required":false,"deprecated":false,"allowEmptyValue":true,"schema":{"type":"integer","default":1},"style":"form","explode":false,"allowReserved":false},{"name":"itemsPerPage","in":"query","description":"The number of items per page","required":false,"deprecated":false,"allowEmptyValue":true,"schema":{"type":"integer","default":50,"minimum":0,"maximum":100},"style":"form","explode":false,"allowReserved":false},{"name":"gameAccount","in":"query","description":"","required":false,"deprecated":false,"allowEmptyValue":true,"schema":{"type":"string"},"style":"form","explode":false,"allowReserved":false},{"name":"gameAccount[]","in":"query","description":"","required":false,"deprecated":false,"allowEmptyValue":true,"schema":{"type":"array","items":{"type":"string"}},"style":"form","explode":true,"allowReserved":false},{"name":"isDailyProfit","in":"query","description":"","required":false,"deprecated":false,"allowEmptyValue":true,"schema":{"type":"boolean"},"style":"form","explode":false,"allowReserved":false},{"name":"gameAccountProfile","in":"query","description":"","required":false,"deprecated":false,"allowEmptyValue":true,"schema":{"type":"string"},"style":"form","explode":false,"allowReserved":false},{"name":"custom_json_filter","in":"query","description":"","required":false,"deprecated":false,"allowEmptyValue":true,"schema":{"type":"string"},"style":"form","explode":false,"allowReserved":false},{"name":"custom_json_order","in":"query","description":"","required":false,"deprecated":false,"allowEmptyValue":true,"schema":{"type":"string"},"style":"form","explode":false,"allowReserved":false,"example":"{\"active\":\"cntSoldItems\",\"direction\":\"desc\",\"listColDefinition\":{\"field\":\"cntSoldItems\",\"sortingSubResource\":\"tradePileItems\",\"countSortSubresource\":true,\"countSortSubresourceValue\":[\"closed\"],\"countSortSubresourceField\":\"tradeState\",\"countSortFilterSubResource\":\"account\",\"countSortFilterSubresourceField\":\"tmOpen\",\"countSortFilterSubresourceValue\":\"0\"}}"}],"deprecated":false},"parameters":[]},"\/api\/log_account_profits\/{id}":{"get":{"operationId":"api_log_account_profits_id_get","tags":["LogAccountProfit"],"responses":{"200":{"description":"LogAccountProfit resource","content":{"application\/ld+json":{"schema":{"$ref":"#\/components\/schemas\/LogAccountProfit.jsonld"}}}},"404":{"description":"Resource not found"}},"summary":"Retrieves a LogAccountProfit resource.","description":"Retrieves a LogAccountProfit resource.","parameters":[{"name":"id","in":"path","description":"LogAccountProfit identifier","required":true,"deprecated":false,"allowEmptyValue":false,"schema":{"type":"string"},"style":"simple","explode":false,"allowReserved":false}],"deprecated":false},"parameters":[]},"\/api\/log_account_sold_items":{"get":{"operationId":"api_log_account_sold_items_get_collection","tags":["LogAccountSoldItem"],"responses":{"200":{"description":"LogAccountSoldItem collection","content":{"application\/ld+json":{"schema":{"type":"object","properties":{"hydra:member":{"type":"array","items":{"$ref":"#\/components\/schemas\/LogAccountSoldItem.jsonld"}},"hydra:totalItems":{"type":"integer","minimum":0},"hydra:view":{"type":"object","properties":{"@id":{"type":"string","format":"iri-reference"},"@type":{"type":"string"},"hydra:first":{"type":"string","format":"iri-reference"},"hydra:last":{"type":"string","format":"iri-reference"},"hydra:previous":{"type":"string","format":"iri-reference"},"hydra:next":{"type":"string","format":"iri-reference"}},"example":{"@id":"string","type":"string","hydra:first":"string","hydra:last":"string","hydra:previous":"string","hydra:next":"string"}},"hydra:search":{"type":"object","properties":{"@type":{"type":"string"},"hydra:template":{"type":"string"},"hydra:variableRepresentation":{"type":"string"},"hydra:mapping":{"type":"array","items":{"type":"object","properties":{"@type":{"type":"string"},"variable":{"type":"string"},"property":{"type":["string","null"]},"required":{"type":"boolean"}}}}}}},"required":["hydra:member"]}}}}},"summary":"Retrieves the collection of LogAccountSoldItem resources.","description":"Retrieves the collection of LogAccountSoldItem resources.","parameters":[{"name":"page","in":"query","description":"The collection page number","required":false,"deprecated":false,"allowEmptyValue":true,"schema":{"type":"integer","default":1},"style":"form","explode":false,"allowReserved":false},{"name":"itemsPerPage","in":"query","description":"The number of items per page","required":false,"deprecated":false,"allowEmptyValue":true,"schema":{"type":"integer","default":50,"minimum":0,"maximum":100},"style":"form","explode":false,"allowReserved":false},{"name":"account","in":"query","description":"","required":false,"deprecated":false,"allowEmptyValue":true,"schema":{"type":"string"},"style":"form","explode":false,"allowReserved":false},{"name":"account[]","in":"query","description":"","required":false,"deprecated":false,"allowEmptyValue":true,"schema":{"type":"array","items":{"type":"string"}},"style":"form","explode":true,"allowReserved":false},{"name":"candidateItem","in":"query","description":"","required":false,"deprecated":false,"allowEmptyValue":true,"schema":{"type":"string"},"style":"form","explode":false,"allowReserved":false},{"name":"candidateItem[]","in":"query","description":"","required":false,"deprecated":false,"allowEmptyValue":true,"schema":{"type":"array","items":{"type":"string"}},"style":"form","explode":true,"allowReserved":false},{"name":"candidateNameSearch","in":"query","description":"","required":false,"deprecated":false,"allowEmptyValue":true,"schema":{"type":"string"},"style":"form","explode":false,"allowReserved":false},{"name":"custom_json_filter","in":"query","description":"","required":false,"deprecated":false,"allowEmptyValue":true,"schema":{"type":"string"},"style":"form","explode":false,"allowReserved":false},{"name":"custom_json_order","in":"query","description":"","required":false,"deprecated":false,"allowEmptyValue":true,"schema":{"type":"string"},"style":"form","explode":false,"allowReserved":false,"example":"{\"active\":\"cntSoldItems\",\"direction\":\"desc\",\"listColDefinition\":{\"field\":\"cntSoldItems\",\"sortingSubResource\":\"tradePileItems\",\"countSortSubresource\":true,\"countSortSubresourceValue\":[\"closed\"],\"countSortSubresourceField\":\"tradeState\",\"countSortFilterSubResource\":\"account\",\"countSortFilterSubresourceField\":\"tmOpen\",\"countSortFilterSubresourceValue\":\"0\"}}"}],"deprecated":false},"parameters":[]},"\/api\/log_account_sold_items\/{id}":{"get":{"operationId":"api_log_account_sold_items_id_get","tags":["LogAccountSoldItem"],"responses":{"200":{"description":"LogAccountSoldItem resource","content":{"application\/ld+json":{"schema":{"$ref":"#\/components\/schemas\/LogAccountSoldItem.jsonld"}}}},"404":{"description":"Resource not found"}},"summary":"Retrieves a LogAccountSoldItem resource.","description":"Retrieves a LogAccountSoldItem resource.","parameters":[{"name":"id","in":"path","description":"LogAccountSoldItem identifier","required":true,"deprecated":false,"allowEmptyValue":false,"schema":{"type":"string"},"style":"simple","explode":false,"allowReserved":false}],"deprecated":false},"parameters":[]},"\/api\/log_generals":{"get":{"operationId":"api_log_generals_get_collection","tags":["LogGeneral"],"responses":{"200":{"description":"LogGeneral collection","content":{"application\/ld+json":{"schema":{"type":"object","properties":{"hydra:member":{"type":"array","items":{"$ref":"#\/components\/schemas\/LogGeneral.jsonld"}},"hydra:totalItems":{"type":"integer","minimum":0},"hydra:view":{"type":"object","properties":{"@id":{"type":"string","format":"iri-reference"},"@type":{"type":"string"},"hydra:first":{"type":"string","format":"iri-reference"},"hydra:last":{"type":"string","format":"iri-reference"},"hydra:previous":{"type":"string","format":"iri-reference"},"hydra:next":{"type":"string","format":"iri-reference"}},"example":{"@id":"string","type":"string","hydra:first":"string","hydra:last":"string","hydra:previous":"string","hydra:next":"string"}},"hydra:search":{"type":"object","properties":{"@type":{"type":"string"},"hydra:template":{"type":"string"},"hydra:variableRepresentation":{"type":"string"},"hydra:mapping":{"type":"array","items":{"type":"object","properties":{"@type":{"type":"string"},"variable":{"type":"string"},"property":{"type":["string","null"]},"required":{"type":"boolean"}}}}}}},"required":["hydra:member"]}}}}},"summary":"Retrieves the collection of LogGeneral resources.","description":"Retrieves the collection of LogGeneral resources.","parameters":[{"name":"page","in":"query","description":"The collection page number","required":false,"deprecated":false,"allowEmptyValue":true,"schema":{"type":"integer","default":1},"style":"form","explode":false,"allowReserved":false},{"name":"itemsPerPage","in":"query","description":"The number of items per page","required":false,"deprecated":false,"allowEmptyValue":true,"schema":{"type":"integer","default":50,"minimum":0,"maximum":100},"style":"form","explode":false,"allowReserved":false},{"name":"gameAccountProfile","in":"query","description":"","required":false,"deprecated":false,"allowEmptyValue":true,"schema":{"type":"string"},"style":"form","explode":false,"allowReserved":false},{"name":"custom_json_filter","in":"query","description":"","required":false,"deprecated":false,"allowEmptyValue":true,"schema":{"type":"string"},"style":"form","explode":false,"allowReserved":false},{"name":"custom_json_order","in":"query","description":"","required":false,"deprecated":false,"allowEmptyValue":true,"schema":{"type":"string"},"style":"form","explode":false,"allowReserved":false,"example":"{\"active\":\"cntSoldItems\",\"direction\":\"desc\",\"listColDefinition\":{\"field\":\"cntSoldItems\",\"sortingSubResource\":\"tradePileItems\",\"countSortSubresource\":true,\"countSortSubresourceValue\":[\"closed\"],\"countSortSubresourceField\":\"tradeState\",\"countSortFilterSubResource\":\"account\",\"countSortFilterSubresourceField\":\"tmOpen\",\"countSortFilterSubresourceValue\":\"0\"}}"}],"deprecated":false},"parameters":[]},"\/api\/log_generals\/{id}":{"get":{"operationId":"api_log_generals_id_get","tags":["LogGeneral"],"responses":{"200":{"description":"LogGeneral resource","content":{"application\/ld+json":{"schema":{"$ref":"#\/components\/schemas\/LogGeneral.jsonld"}}}},"404":{"description":"Resource not found"}},"summary":"Retrieves a LogGeneral resource.","description":"Retrieves a LogGeneral resource.","parameters":[{"name":"id","in":"path","description":"LogGeneral identifier","required":true,"deprecated":false,"allowEmptyValue":false,"schema":{"type":"string"},"style":"simple","explode":false,"allowReserved":false}],"deprecated":false},"parameters":[]},"\/api\/log_total_profits":{"get":{"operationId":"api_log_total_profits_get_collection","tags":["LogTotalProfit"],"responses":{"200":{"description":"LogTotalProfit collection","content":{"application\/ld+json":{"schema":{"type":"object","properties":{"hydra:member":{"type":"array","items":{"$ref":"#\/components\/schemas\/LogTotalProfit.jsonld"}},"hydra:totalItems":{"type":"integer","minimum":0},"hydra:view":{"type":"object","properties":{"@id":{"type":"string","format":"iri-reference"},"@type":{"type":"string"},"hydra:first":{"type":"string","format":"iri-reference"},"hydra:last":{"type":"string","format":"iri-reference"},"hydra:previous":{"type":"string","format":"iri-reference"},"hydra:next":{"type":"string","format":"iri-reference"}},"example":{"@id":"string","type":"string","hydra:first":"string","hydra:last":"string","hydra:previous":"string","hydra:next":"string"}},"hydra:search":{"type":"object","properties":{"@type":{"type":"string"},"hydra:template":{"type":"string"},"hydra:variableRepresentation":{"type":"string"},"hydra:mapping":{"type":"array","items":{"type":"object","properties":{"@type":{"type":"string"},"variable":{"type":"string"},"property":{"type":["string","null"]},"required":{"type":"boolean"}}}}}}},"required":["hydra:member"]}}}}},"summary":"Retrieves the collection of LogTotalProfit resources.","description":"Retrieves the collection of LogTotalProfit resources.","parameters":[{"name":"page","in":"query","description":"The collection page number","required":false,"deprecated":false,"allowEmptyValue":true,"schema":{"type":"integer","default":1},"style":"form","explode":false,"allowReserved":false},{"name":"itemsPerPage","in":"query","description":"The number of items per page","required":false,"deprecated":false,"allowEmptyValue":true,"schema":{"type":"integer","default":50,"minimum":0,"maximum":100},"style":"form","explode":false,"allowReserved":false}],"deprecated":false},"post":{"operationId":"api_log_total_profits_post","tags":["LogTotalProfit"],"responses":{"201":{"description":"LogTotalProfit resource created","content":{"application\/ld+json":{"schema":{"$ref":"#\/components\/schemas\/LogTotalProfit.jsonld"}}},"links":{}},"400":{"description":"Invalid input"},"422":{"description":"Unprocessable entity"}},"summary":"Creates a LogTotalProfit resource.","description":"Creates a LogTotalProfit resource.","parameters":[],"requestBody":{"description":"The new LogTotalProfit resource","content":{"application\/ld+json":{"schema":{"$ref":"#\/components\/schemas\/LogTotalProfit.jsonld"}}},"required":true},"deprecated":false},"parameters":[]},"\/api\/log_total_profits\/{id}":{"get":{"operationId":"api_log_total_profits_id_get","tags":["LogTotalProfit"],"responses":{"200":{"description":"LogTotalProfit resource","content":{"application\/ld+json":{"schema":{"$ref":"#\/components\/schemas\/LogTotalProfit.jsonld"}}}},"404":{"description":"Resource not found"}},"summary":"Retrieves a LogTotalProfit resource.","description":"Retrieves a LogTotalProfit resource.","parameters":[{"name":"id","in":"path","description":"LogTotalProfit identifier","required":true,"deprecated":false,"allowEmptyValue":false,"schema":{"type":"string"},"style":"simple","explode":false,"allowReserved":false}],"deprecated":false},"patch":{"operationId":"api_log_total_profits_id_patch","tags":["LogTotalProfit"],"responses":{"200":{"description":"LogTotalProfit resource updated","content":{"application\/ld+json":{"schema":{"$ref":"#\/components\/schemas\/LogTotalProfit.jsonld"}}},"links":{}},"400":{"description":"Invalid input"},"422":{"description":"Unprocessable entity"},"404":{"description":"Resource not found"}},"summary":"Updates the LogTotalProfit resource.","description":"Updates the LogTotalProfit resource.","parameters":[{"name":"id","in":"path","description":"LogTotalProfit identifier","required":true,"deprecated":false,"allowEmptyValue":false,"schema":{"type":"string"},"style":"simple","explode":false,"allowReserved":false}],"requestBody":{"description":"The updated LogTotalProfit resource","content":{"application\/merge-patch+json":{"schema":{"$ref":"#\/components\/schemas\/LogTotalProfit"}}},"required":true},"deprecated":false},"parameters":[]},"\/api\/media_objects":{"get":{"operationId":"api_media_objects_get_collection","tags":["MediaObject"],"responses":{"200":{"description":"MediaObject collection","content":{"application\/ld+json":{"schema":{"type":"object","properties":{"hydra:member":{"type":"array","items":{"$ref":"#\/components\/schemas\/MediaObject.jsonld-media_object.read"}},"hydra:totalItems":{"type":"integer","minimum":0},"hydra:view":{"type":"object","properties":{"@id":{"type":"string","format":"iri-reference"},"@type":{"type":"string"},"hydra:first":{"type":"string","format":"iri-reference"},"hydra:last":{"type":"string","format":"iri-reference"},"hydra:previous":{"type":"string","format":"iri-reference"},"hydra:next":{"type":"string","format":"iri-reference"}},"example":{"@id":"string","type":"string","hydra:first":"string","hydra:last":"string","hydra:previous":"string","hydra:next":"string"}},"hydra:search":{"type":"object","properties":{"@type":{"type":"string"},"hydra:template":{"type":"string"},"hydra:variableRepresentation":{"type":"string"},"hydra:mapping":{"type":"array","items":{"type":"object","properties":{"@type":{"type":"string"},"variable":{"type":"string"},"property":{"type":["string","null"]},"required":{"type":"boolean"}}}}}}},"required":["hydra:member"]}}}}},"summary":"Retrieves the collection of MediaObject resources.","description":"Retrieves the collection of MediaObject resources.","parameters":[{"name":"page","in":"query","description":"The collection page number","required":false,"deprecated":false,"allowEmptyValue":true,"schema":{"type":"integer","default":1},"style":"form","explode":false,"allowReserved":false},{"name":"itemsPerPage","in":"query","description":"The number of items per page","required":false,"deprecated":false,"allowEmptyValue":true,"schema":{"type":"integer","default":50,"minimum":0,"maximum":100},"style":"form","explode":false,"allowReserved":false}],"deprecated":false},"post":{"operationId":"api_media_objects_post","tags":["MediaObject"],"responses":{"201":{"description":"MediaObject resource created","content":{"application\/ld+json":{"schema":{"$ref":"#\/components\/schemas\/MediaObject.jsonld-media_object.read"}}},"links":{}},"400":{"description":"Invalid input"},"422":{"description":"Unprocessable entity"}},"summary":"Creates a MediaObject resource.","description":"Creates a MediaObject resource.","parameters":[],"requestBody":{"description":"","content":{"multipart\/form-data":{"schema":{"type":"object","properties":{"file":{"type":"string","format":"binary"}}}}},"required":false},"deprecated":false},"parameters":[]},"\/api\/media_objects\/{id}":{"get":{"operationId":"api_media_objects_id_get","tags":["MediaObject"],"responses":{"200":{"description":"MediaObject resource","content":{"application\/ld+json":{"schema":{"$ref":"#\/components\/schemas\/MediaObject.jsonld-media_object.read"}}}},"404":{"description":"Resource not found"}},"summary":"Retrieves a MediaObject resource.","description":"Retrieves a MediaObject resource.","parameters":[{"name":"id","in":"path","description":"MediaObject identifier","required":true,"deprecated":false,"allowEmptyValue":false,"schema":{"type":"string"},"style":"simple","explode":false,"allowReserved":false}],"deprecated":false},"delete":{"operationId":"api_media_objects_id_delete","tags":["MediaObject"],"responses":{"204":{"description":"MediaObject resource deleted"},"404":{"description":"Resource not found"}},"summary":"Removes the MediaObject resource.","description":"Removes the MediaObject resource.","parameters":[{"name":"id","in":"path","description":"MediaObject identifier","required":true,"deprecated":false,"allowEmptyValue":false,"schema":{"type":"string"},"style":"simple","explode":false,"allowReserved":false}],"deprecated":false},"parameters":[]},"\/api\/mode_config":{"get":{"operationId":"api_mode_config_get","tags":["ModeConfig"],"responses":{"200":{"description":"ModeConfig resource","content":{"application\/ld+json":{"schema":{"$ref":"#\/components\/schemas\/ModeConfig.jsonld"}}}},"404":{"description":"Resource not found"}},"summary":"Retrieves a ModeConfig resource.","description":"Retrieves a ModeConfig resource.","parameters":[],"deprecated":false},"patch":{"operationId":"api_mode_config_patch","tags":["ModeConfig"],"responses":{"200":{"description":"ModeConfig resource updated","content":{"application\/ld+json":{"schema":{"$ref":"#\/components\/schemas\/ModeConfig.jsonld"}}},"links":{}},"400":{"description":"Invalid input"},"422":{"description":"Unprocessable entity"},"404":{"description":"Resource not found"}},"summary":"Updates the ModeConfig resource.","description":"Updates the ModeConfig resource.","parameters":[],"requestBody":{"description":"The updated ModeConfig resource","content":{"application\/merge-patch+json":{"schema":{"$ref":"#\/components\/schemas\/ModeConfig"}}},"required":true},"deprecated":false},"parameters":[]},"\/api\/players":{"get":{"operationId":"api_players_get_collection","tags":["Player"],"responses":{"200":{"description":"Player collection","content":{"application\/ld+json":{"schema":{"type":"object","properties":{"hydra:member":{"type":"array","items":{"$ref":"#\/components\/schemas\/Player.jsonld"}},"hydra:totalItems":{"type":"integer","minimum":0},"hydra:view":{"type":"object","properties":{"@id":{"type":"string","format":"iri-reference"},"@type":{"type":"string"},"hydra:first":{"type":"string","format":"iri-reference"},"hydra:last":{"type":"string","format":"iri-reference"},"hydra:previous":{"type":"string","format":"iri-reference"},"hydra:next":{"type":"string","format":"iri-reference"}},"example":{"@id":"string","type":"string","hydra:first":"string","hydra:last":"string","hydra:previous":"string","hydra:next":"string"}},"hydra:search":{"type":"object","properties":{"@type":{"type":"string"},"hydra:template":{"type":"string"},"hydra:variableRepresentation":{"type":"string"},"hydra:mapping":{"type":"array","items":{"type":"object","properties":{"@type":{"type":"string"},"variable":{"type":"string"},"property":{"type":["string","null"]},"required":{"type":"boolean"}}}}}}},"required":["hydra:member"]}}}}},"summary":"Retrieves the collection of Player resources.","description":"Retrieves the collection of Player resources.","parameters":[{"name":"page","in":"query","description":"The collection page number","required":false,"deprecated":false,"allowEmptyValue":true,"schema":{"type":"integer","default":1},"style":"form","explode":false,"allowReserved":false},{"name":"itemsPerPage","in":"query","description":"The number of items per page","required":false,"deprecated":false,"allowEmptyValue":true,"schema":{"type":"integer","default":50,"minimum":0,"maximum":100},"style":"form","explode":false,"allowReserved":false},{"name":"custom_json_order","in":"query","description":"","required":false,"deprecated":false,"allowEmptyValue":true,"schema":{"type":"string"},"style":"form","explode":false,"allowReserved":false,"example":"{\"active\":\"cntSoldItems\",\"direction\":\"desc\",\"listColDefinition\":{\"field\":\"cntSoldItems\",\"sortingSubResource\":\"tradePileItems\",\"countSortSubresource\":true,\"countSortSubresourceValue\":[\"closed\"],\"countSortSubresourceField\":\"tradeState\",\"countSortFilterSubResource\":\"account\",\"countSortFilterSubresourceField\":\"tmOpen\",\"countSortFilterSubresourceValue\":\"0\"}}"}],"deprecated":false},"post":{"operationId":"api_players_post","tags":["Player"],"responses":{"201":{"description":"Player resource created","content":{"application\/ld+json":{"schema":{"$ref":"#\/components\/schemas\/Player.jsonld"}}},"links":{}},"400":{"description":"Invalid input"},"422":{"description":"Unprocessable entity"}},"summary":"Creates a Player resource.","description":"Creates a Player resource.","parameters":[],"requestBody":{"description":"The new Player resource","content":{"application\/ld+json":{"schema":{"$ref":"#\/components\/schemas\/Player.jsonld"}}},"required":true},"deprecated":false},"parameters":[]},"\/api\/players\/{id}":{"get":{"operationId":"api_players_id_get","tags":["Player"],"responses":{"200":{"description":"Player resource","content":{"application\/ld+json":{"schema":{"$ref":"#\/components\/schemas\/Player.jsonld"}}}},"404":{"description":"Resource not found"}},"summary":"Retrieves a Player resource.","description":"Retrieves a Player resource.","parameters":[{"name":"id","in":"path","description":"Player identifier","required":true,"deprecated":false,"allowEmptyValue":false,"schema":{"type":"string"},"style":"simple","explode":false,"allowReserved":false}],"deprecated":false},"patch":{"operationId":"api_players_id_patch","tags":["Player"],"responses":{"200":{"description":"Player resource updated","content":{"application\/ld+json":{"schema":{"$ref":"#\/components\/schemas\/Player.jsonld"}}},"links":{}},"400":{"description":"Invalid input"},"422":{"description":"Unprocessable entity"},"404":{"description":"Resource not found"}},"summary":"Updates the Player resource.","description":"Updates the Player resource.","parameters":[{"name":"id","in":"path","description":"Player identifier","required":true,"deprecated":false,"allowEmptyValue":false,"schema":{"type":"string"},"style":"simple","explode":false,"allowReserved":false}],"requestBody":{"description":"The updated Player resource","content":{"application\/merge-patch+json":{"schema":{"$ref":"#\/components\/schemas\/Player"}}},"required":true},"deprecated":false},"parameters":[]},"\/api\/rarities":{"get":{"operationId":"api_rarities_get_collection","tags":["Rarity"],"responses":{"200":{"description":"Rarity collection","content":{"application\/ld+json":{"schema":{"type":"object","properties":{"hydra:member":{"type":"array","items":{"$ref":"#\/components\/schemas\/Rarity.jsonld"}},"hydra:totalItems":{"type":"integer","minimum":0},"hydra:view":{"type":"object","properties":{"@id":{"type":"string","format":"iri-reference"},"@type":{"type":"string"},"hydra:first":{"type":"string","format":"iri-reference"},"hydra:last":{"type":"string","format":"iri-reference"},"hydra:previous":{"type":"string","format":"iri-reference"},"hydra:next":{"type":"string","format":"iri-reference"}},"example":{"@id":"string","type":"string","hydra:first":"string","hydra:last":"string","hydra:previous":"string","hydra:next":"string"}},"hydra:search":{"type":"object","properties":{"@type":{"type":"string"},"hydra:template":{"type":"string"},"hydra:variableRepresentation":{"type":"string"},"hydra:mapping":{"type":"array","items":{"type":"object","properties":{"@type":{"type":"string"},"variable":{"type":"string"},"property":{"type":["string","null"]},"required":{"type":"boolean"}}}}}}},"required":["hydra:member"]}}}}},"summary":"Retrieves the collection of Rarity resources.","description":"Retrieves the collection of Rarity resources.","parameters":[{"name":"page","in":"query","description":"The collection page number","required":false,"deprecated":false,"allowEmptyValue":true,"schema":{"type":"integer","default":1},"style":"form","explode":false,"allowReserved":false},{"name":"itemsPerPage","in":"query","description":"The number of items per page","required":false,"deprecated":false,"allowEmptyValue":true,"schema":{"type":"integer","default":50,"minimum":0,"maximum":100},"style":"form","explode":false,"allowReserved":false},{"name":"custom_json_order","in":"query","description":"","required":false,"deprecated":false,"allowEmptyValue":true,"schema":{"type":"string"},"style":"form","explode":false,"allowReserved":false,"example":"{\"active\":\"cntSoldItems\",\"direction\":\"desc\",\"listColDefinition\":{\"field\":\"cntSoldItems\",\"sortingSubResource\":\"tradePileItems\",\"countSortSubresource\":true,\"countSortSubresourceValue\":[\"closed\"],\"countSortSubresourceField\":\"tradeState\",\"countSortFilterSubResource\":\"account\",\"countSortFilterSubresourceField\":\"tmOpen\",\"countSortFilterSubresourceValue\":\"0\"}}"}],"deprecated":false},"post":{"operationId":"api_rarities_post","tags":["Rarity"],"responses":{"201":{"description":"Rarity resource created","content":{"application\/ld+json":{"schema":{"$ref":"#\/components\/schemas\/Rarity.jsonld"}}},"links":{}},"400":{"description":"Invalid input"},"422":{"description":"Unprocessable entity"}},"summary":"Creates a Rarity resource.","description":"Creates a Rarity resource.","parameters":[],"requestBody":{"description":"The new Rarity resource","content":{"application\/ld+json":{"schema":{"$ref":"#\/components\/schemas\/Rarity.jsonld"}}},"required":true},"deprecated":false},"parameters":[]},"\/api\/rarities\/{id}":{"get":{"operationId":"api_rarities_id_get","tags":["Rarity"],"responses":{"200":{"description":"Rarity resource","content":{"application\/ld+json":{"schema":{"$ref":"#\/components\/schemas\/Rarity.jsonld"}}}},"404":{"description":"Resource not found"}},"summary":"Retrieves a Rarity resource.","description":"Retrieves a Rarity resource.","parameters":[{"name":"id","in":"path","description":"Rarity identifier","required":true,"deprecated":false,"allowEmptyValue":false,"schema":{"type":"string"},"style":"simple","explode":false,"allowReserved":false}],"deprecated":false},"patch":{"operationId":"api_rarities_id_patch","tags":["Rarity"],"responses":{"200":{"description":"Rarity resource updated","content":{"application\/ld+json":{"schema":{"$ref":"#\/components\/schemas\/Rarity.jsonld"}}},"links":{}},"400":{"description":"Invalid input"},"422":{"description":"Unprocessable entity"},"404":{"description":"Resource not found"}},"summary":"Updates the Rarity resource.","description":"Updates the Rarity resource.","parameters":[{"name":"id","in":"path","description":"Rarity identifier","required":true,"deprecated":false,"allowEmptyValue":false,"schema":{"type":"string"},"style":"simple","explode":false,"allowReserved":false}],"requestBody":{"description":"The updated Rarity resource","content":{"application\/merge-patch+json":{"schema":{"$ref":"#\/components\/schemas\/Rarity"}}},"required":true},"deprecated":false},"parameters":[]},"\/api\/system_stats":{"get":{"operationId":"api_system_stats_get","tags":["SystemStat"],"responses":{"200":{"description":"SystemStat resource","content":{"application\/ld+json":{"schema":{"$ref":"#\/components\/schemas\/SystemStat.jsonld"}}}},"404":{"description":"Resource not found"}},"summary":"Retrieves a SystemStat resource.","description":"Retrieves a SystemStat resource.","parameters":[],"deprecated":false},"parameters":[]},"\/api\/users":{"get":{"operationId":"api_users_get_collection","tags":["User"],"responses":{"200":{"description":"User collection","content":{"application\/ld+json":{"schema":{"type":"object","properties":{"hydra:member":{"type":"array","items":{"$ref":"#\/components\/schemas\/User.jsonld"}},"hydra:totalItems":{"type":"integer","minimum":0},"hydra:view":{"type":"object","properties":{"@id":{"type":"string","format":"iri-reference"},"@type":{"type":"string"},"hydra:first":{"type":"string","format":"iri-reference"},"hydra:last":{"type":"string","format":"iri-reference"},"hydra:previous":{"type":"string","format":"iri-reference"},"hydra:next":{"type":"string","format":"iri-reference"}},"example":{"@id":"string","type":"string","hydra:first":"string","hydra:last":"string","hydra:previous":"string","hydra:next":"string"}},"hydra:search":{"type":"object","properties":{"@type":{"type":"string"},"hydra:template":{"type":"string"},"hydra:variableRepresentation":{"type":"string"},"hydra:mapping":{"type":"array","items":{"type":"object","properties":{"@type":{"type":"string"},"variable":{"type":"string"},"property":{"type":["string","null"]},"required":{"type":"boolean"}}}}}}},"required":["hydra:member"]}}}}},"summary":"Retrieves the collection of User resources.","description":"Retrieves the collection of User resources.","parameters":[{"name":"page","in":"query","description":"The collection page number","required":false,"deprecated":false,"allowEmptyValue":true,"schema":{"type":"integer","default":1},"style":"form","explode":false,"allowReserved":false},{"name":"itemsPerPage","in":"query","description":"The number of items per page","required":false,"deprecated":false,"allowEmptyValue":true,"schema":{"type":"integer","default":50,"minimum":0,"maximum":100},"style":"form","explode":false,"allowReserved":false},{"name":"firstName","in":"query","description":"","required":false,"deprecated":false,"allowEmptyValue":true,"schema":{"type":"string"},"style":"form","explode":false,"allowReserved":false},{"name":"lastName","in":"query","description":"","required":false,"deprecated":false,"allowEmptyValue":true,"schema":{"type":"string"},"style":"form","explode":false,"allowReserved":false},{"name":"userNameSearch","in":"query","description":"","required":false,"deprecated":false,"allowEmptyValue":true,"schema":{"type":"string"},"style":"form","explode":false,"allowReserved":false},{"name":"custom_json_order","in":"query","description":"","required":false,"deprecated":false,"allowEmptyValue":true,"schema":{"type":"string"},"style":"form","explode":false,"allowReserved":false,"example":"{\"active\":\"cntSoldItems\",\"direction\":\"desc\",\"listColDefinition\":{\"field\":\"cntSoldItems\",\"sortingSubResource\":\"tradePileItems\",\"countSortSubresource\":true,\"countSortSubresourceValue\":[\"closed\"],\"countSortSubresourceField\":\"tradeState\",\"countSortFilterSubResource\":\"account\",\"countSortFilterSubresourceField\":\"tmOpen\",\"countSortFilterSubresourceValue\":\"0\"}}"}],"deprecated":false},"post":{"operationId":"api_users_post","tags":["User"],"responses":{"201":{"description":"User resource created","content":{"application\/ld+json":{"schema":{"$ref":"#\/components\/schemas\/User.jsonld"}}},"links":{}},"400":{"description":"Invalid input"},"422":{"description":"Unprocessable entity"}},"summary":"Creates a User resource.","description":"Creates a User resource.","parameters":[],"requestBody":{"description":"The new User resource","content":{"application\/ld+json":{"schema":{"$ref":"#\/components\/schemas\/User.jsonld"}}},"required":true},"deprecated":false},"parameters":[]},"\/api\/users\/{id}":{"get":{"operationId":"api_users_id_get","tags":["User"],"responses":{"200":{"description":"User resource","content":{"application\/ld+json":{"schema":{"$ref":"#\/components\/schemas\/User.jsonld"}}}},"404":{"description":"Resource not found"}},"summary":"Retrieves a User resource.","description":"Retrieves a User resource.","parameters":[{"name":"id","in":"path","description":"User identifier","required":true,"deprecated":false,"allowEmptyValue":false,"schema":{"type":"string"},"style":"simple","explode":false,"allowReserved":false}],"deprecated":false},"parameters":[]}},"components":{"schemas":{"AccountTradePileItem":{"type":"object","description":"","deprecated":false,"properties":{"dbId":{"readOnly":true,"type":["integer","null"]},"account":{"readOnly":true,"type":"string","format":"iri-reference","example":"https:\/\/example.com\/"},"candidateItem":{"readOnly":true,"type":"string","format":"iri-reference","example":"https:\/\/example.com\/"},"eaId":{"readOnly":true,"type":"integer"},"eaAssetId":{"readOnly":true,"type":"integer"},"eaResourceId":{"readOnly":true,"type":"integer"},"rareFlag":{"readOnly":true,"type":"integer"},"itemType":{"readOnly":true,"type":"string"},"rating":{"readOnly":true,"type":"integer"},"contracts":{"readOnly":true,"type":["integer","null"]},"playStyle":{"readOnly":true,"type":["integer","null"]},"startingBid":{"type":"integer"},"binPrice":{"type":"integer"},"individualPrice":{"default":true,"example":true,"type":"boolean"},"minRange":{"readOnly":true,"type":"integer"},"maxRange":{"readOnly":true,"type":"integer"},"lastSalePrice":{"readOnly":true,"type":"integer"},"tradeState":{"readOnly":true,"type":["string","null"]},"eaTradeId":{"readOnly":true,"type":["integer","null"]},"rebuy":{"readOnly":true,"default":true,"example":true,"type":"boolean"},"leagueId":{"readOnly":true,"type":["integer","null"]},"teamId":{"readOnly":true,"type":["integer","null"]},"nationId":{"readOnly":true,"type":["integer","null"]},"listCnt":{"readOnly":true,"type":"integer"},"openBidCnt":{"readOnly":true,"type":["integer","null"]},"snipedItem":{"readOnly":true,"default":true,"example":true,"type":"boolean"},"marketAverage":{"readOnly":true,"type":["integer","null"]},"creationDate":{"readOnly":true,"type":"string","format":"date-time"}}},"AccountTradePileItem.jsonld":{"type":"object","description":"","deprecated":false,"properties":{"@context":{"readOnly":true,"oneOf":[{"type":"string"},{"type":"object","properties":{"@vocab":{"type":"string"},"hydra":{"type":"string","enum":["http:\/\/www.w3.org\/ns\/hydra\/core#"]}},"required":["@vocab","hydra"],"additionalProperties":true}]},"@id":{"readOnly":true,"type":"string"},"@type":{"readOnly":true,"type":"string"},"dbId":{"readOnly":true,"type":["integer","null"]},"account":{"readOnly":true,"$ref":"#\/components\/schemas\/GameAccount.jsonld"},"candidateItem":{"readOnly":true,"$ref":"#\/components\/schemas\/Candidate.jsonld"},"eaId":{"readOnly":true,"type":"integer"},"eaAssetId":{"readOnly":true,"type":"integer"},"eaResourceId":{"readOnly":true,"type":"integer"},"rareFlag":{"readOnly":true,"type":"integer"},"itemType":{"readOnly":true,"type":"string"},"rating":{"readOnly":true,"type":"integer"},"contracts":{"readOnly":true,"type":["integer","null"]},"playStyle":{"readOnly":true,"type":["integer","null"]},"startingBid":{"type":"integer"},"binPrice":{"type":"integer"},"individualPrice":{"default":true,"example":true,"type":"boolean"},"minRange":{"readOnly":true,"type":"integer"},"maxRange":{"readOnly":true,"type":"integer"},"lastSalePrice":{"readOnly":true,"type":"integer"},"tradeState":{"readOnly":true,"type":["string","null"]},"eaTradeId":{"readOnly":true,"type":["integer","null"]},"rebuy":{"readOnly":true,"default":true,"example":true,"type":"boolean"},"leagueId":{"readOnly":true,"type":["integer","null"]},"teamId":{"readOnly":true,"type":["integer","null"]},"nationId":{"readOnly":true,"type":["integer","null"]},"listCnt":{"readOnly":true,"type":"integer"},"openBidCnt":{"readOnly":true,"type":["integer","null"]},"snipedItem":{"readOnly":true,"default":true,"example":true,"type":"boolean"},"marketAverage":{"readOnly":true,"type":["integer","null"]},"creationDate":{"readOnly":true,"type":"string","format":"date-time"}}},"Candidate":{"type":"object","description":"","deprecated":false,"properties":{"dbId":{"readOnly":true,"type":["integer","null"]},"rarity":{"readOnly":true,"type":"string","format":"iri-reference","example":"https:\/\/example.com\/"},"candidateStat":{"readOnly":true,"type":"string","format":"iri-reference","example":"https:\/\/example.com\/"},"player":{"readOnly":true,"type":"string","format":"iri-reference","example":"https:\/\/example.com\/"},"firstname":{"readOnly":true,"type":["string","null"]},"lastname":{"readOnly":true,"type":["string","null"]},"nickname":{"readOnly":true,"type":["string","null"]},"fullDisplayInfo":{"readOnly":true,"type":["string","null"]},"eaAssetId":{"readOnly":true,"type":["integer","null"]},"eaResourceId":{"readOnly":true,"type":["integer","null"]},"rareFlag":{"readOnly":true,"type":["integer","null"]},"rarityName":{"readOnly":true,"type":["string","null"]},"image":{"readOnly":true,"type":["string","null"],"format":"iri-reference","example":"https:\/\/example.com\/"},"imageUrl":{"readOnly":true,"type":["string","null"]},"cardImageUrl":{"readOnly":true,"type":["string","null"]},"stockCountTotal":{"readOnly":true,"type":["integer","null"]},"stockCountReal":{"readOnly":true,"type":["integer","null"]},"futBinId":{"type":["integer","null"]},"futBinName":{"type":["string","null"]},"futBinPrice":{"type":["integer","null"]},"futBinSellingPrice":{"type":["integer","null"]},"lastFutBinUpdate":{"readOnly":true,"type":["string","null"],"format":"date-time"},"futWizId":{"type":["integer","null"]},"futWizPrice":{"type":["integer","null"]},"futwizName":{"type":["string","null"]},"futWizSellingPrice":{"type":["integer","null"]},"lastFutWizUpdate":{"readOnly":true,"type":["string","null"],"format":"date-time"},"rating":{"type":["integer","null"]},"highestBuyBinPrice":{"type":["integer","null"]},"sellStartingBid":{"type":["integer","null"]},"sellBinPrice":{"type":["integer","null"]},"lastFoundMinRange":{"type":["integer","null"]},"lastFoundMaxRange":{"type":["integer","null"]},"lastFoundLowestBin":{"type":["integer","null"]},"lowestBinUpdateDate":{"readOnly":true,"type":["string","null"],"format":"date-time"},"buy":{"type":["boolean","null"]},"maxBuyPrice":{"type":["integer","null"]},"buyStyle":{"type":["integer","null"]},"newBuySelective":{"type":["boolean","null"]},"remove":{"type":["boolean","null"]},"leagueId":{"type":["integer","null"]},"nationId":{"type":["integer","null"]},"prio":{"type":["integer","null"]},"listCnt":{"type":["integer","null"]},"soldCnt":{"type":["integer","null"]},"note":{"type":["string","null"]},"relevant":{"type":["boolean","null"]},"adjust100":{"type":["boolean","null"]},"directReBuy":{"type":["boolean","null"]},"marketAverage":{"readOnly":true,"type":["integer","null"]},"creationDate":{"readOnly":true,"type":["string","null"],"format":"date-time"}},"required":["eaAssetId","eaResourceId","rareFlag","rating","buy","buyStyle","newBuySelective","remove","listCnt","soldCnt","relevant","adjust100","directReBuy","creationDate"]},"Candidate.jsonld":{"type":"object","description":"","deprecated":false,"properties":{"@context":{"readOnly":true,"oneOf":[{"type":"string"},{"type":"object","properties":{"@vocab":{"type":"string"},"hydra":{"type":"string","enum":["http:\/\/www.w3.org\/ns\/hydra\/core#"]}},"required":["@vocab","hydra"],"additionalProperties":true}]},"@id":{"readOnly":true,"type":"string"},"@type":{"readOnly":true,"type":"string"},"dbId":{"readOnly":true,"type":["integer","null"]},"rarity":{"readOnly":true,"$ref":"#\/components\/schemas\/Rarity.jsonld"},"candidateStat":{"readOnly":true,"$ref":"#\/components\/schemas\/CandidateStat.jsonld"},"player":{"readOnly":true,"$ref":"#\/components\/schemas\/Player.jsonld"},"firstname":{"readOnly":true,"type":["string","null"]},"lastname":{"readOnly":true,"type":["string","null"]},"nickname":{"readOnly":true,"type":["string","null"]},"fullDisplayInfo":{"readOnly":true,"type":["string","null"]},"eaAssetId":{"readOnly":true,"type":["integer","null"]},"eaResourceId":{"readOnly":true,"type":["integer","null"]},"rareFlag":{"readOnly":true,"type":["integer","null"]},"rarityName":{"readOnly":true,"type":["string","null"]},"image":{"readOnly":true,"type":["string","null"],"format":"iri-reference","example":"https:\/\/example.com\/"},"imageUrl":{"readOnly":true,"type":["string","null"]},"cardImageUrl":{"readOnly":true,"type":["string","null"]},"stockCountTotal":{"readOnly":true,"type":["integer","null"]},"stockCountReal":{"readOnly":true,"type":["integer","null"]},"futBinId":{"type":["integer","null"]},"futBinName":{"type":["string","null"]},"futBinPrice":{"type":["integer","null"]},"futBinSellingPrice":{"type":["integer","null"]},"lastFutBinUpdate":{"readOnly":true,"type":["string","null"],"format":"date-time"},"futWizId":{"type":["integer","null"]},"futWizPrice":{"type":["integer","null"]},"futwizName":{"type":["string","null"]},"futWizSellingPrice":{"type":["integer","null"]},"lastFutWizUpdate":{"readOnly":true,"type":["string","null"],"format":"date-time"},"rating":{"type":["integer","null"]},"highestBuyBinPrice":{"type":["integer","null"]},"sellStartingBid":{"type":["integer","null"]},"sellBinPrice":{"type":["integer","null"]},"lastFoundMinRange":{"type":["integer","null"]},"lastFoundMaxRange":{"type":["integer","null"]},"lastFoundLowestBin":{"type":["integer","null"]},"lowestBinUpdateDate":{"readOnly":true,"type":["string","null"],"format":"date-time"},"buy":{"type":["boolean","null"]},"maxBuyPrice":{"type":["integer","null"]},"buyStyle":{"type":["integer","null"]},"newBuySelective":{"type":["boolean","null"]},"remove":{"type":["boolean","null"]},"leagueId":{"type":["integer","null"]},"nationId":{"type":["integer","null"]},"prio":{"type":["integer","null"]},"listCnt":{"type":["integer","null"]},"soldCnt":{"type":["integer","null"]},"note":{"type":["string","null"]},"relevant":{"type":["boolean","null"]},"adjust100":{"type":["boolean","null"]},"directReBuy":{"type":["boolean","null"]},"marketAverage":{"readOnly":true,"type":["integer","null"]},"creationDate":{"readOnly":true,"type":["string","null"],"format":"date-time"}},"required":["eaAssetId","eaResourceId","rareFlag","rating","buy","buyStyle","newBuySelective","remove","listCnt","soldCnt","relevant","adjust100","directReBuy","creationDate"]},"CandidateStat.jsonld":{"type":"object","description":"","deprecated":false,"properties":{"@id":{"readOnly":true,"type":"string"},"@type":{"readOnly":true,"type":"string"},"@context":{"readOnly":true,"oneOf":[{"type":"string"},{"type":"object","properties":{"@vocab":{"type":"string"},"hydra":{"type":"string","enum":["http:\/\/www.w3.org\/ns\/hydra\/core#"]}},"required":["@vocab","hydra"],"additionalProperties":true}]},"candidateItem":{"readOnly":true,"$ref":"#\/components\/schemas\/Candidate.jsonld"},"revRl6":{"type":"number"},"rl6":{"type":"integer"},"sold6":{"type":"integer"},"rat6":{"type":"number"},"rev6":{"type":"integer"},"revRl12":{"type":"number"},"rl12":{"type":"integer"},"sold12":{"type":"integer"},"rat12":{"type":"number"},"rev12":{"type":"integer"},"revRl24":{"type":"number"},"rl24":{"type":"integer"},"sold24":{"type":"integer"},"rat24":{"type":"number"},"rev24":{"type":"integer"},"revRl3d":{"type":"number"},"rl3d":{"type":"integer"},"sold3d":{"type":"integer"},"rat3d":{"type":"number"},"rev3d":{"type":"integer"},"revRl1w":{"type":"number"},"rl1w":{"type":"integer"},"sold1w":{"type":"integer"},"rat1w":{"type":"number"},"rev1w":{"type":"integer"},"revRl2w":{"type":"number"},"rl2w":{"type":"integer"},"sold2w":{"type":"integer"},"rat2w":{"type":"number"},"rev2w":{"type":"integer"},"revRl3w":{"type":"number"},"rl3w":{"type":"integer"},"sold3w":{"type":"integer"},"rat3w":{"type":"number"},"rev3w":{"type":"integer"},"revRl4w":{"type":"number"},"rl4w":{"type":"integer"},"sold4w":{"type":"integer"},"rat4w":{"type":"number"},"rev4w":{"type":"integer"},"revRl":{"type":"number"},"rl":{"type":"integer"},"sold":{"type":"integer"},"rat":{"type":"number"},"rev":{"type":"integer"},"snipingRev":{"type":"integer"},"creationDate":{"readOnly":true,"type":["string","null"],"format":"date-time"},"lastUpdateDate":{"readOnly":true,"type":["string","null"],"format":"date-time"}}},"CandidateStockAccounts.jsonld":{"type":"object","description":"","deprecated":false,"properties":{"@context":{"readOnly":true,"oneOf":[{"type":"string"},{"type":"object","properties":{"@vocab":{"type":"string"},"hydra":{"type":"string","enum":["http:\/\/www.w3.org\/ns\/hydra\/core#"]}},"required":["@vocab","hydra"],"additionalProperties":true}]},"@id":{"readOnly":true,"type":"string"},"@type":{"readOnly":true,"type":"string"},"candidatesStockAccounts":{"type":"array","items":{"$ref":"#\/components\/schemas\/GameAccount.jsonld"}},"candidatesMissingAccounts":{"type":"array","items":{"$ref":"#\/components\/schemas\/GameAccount.jsonld"}}}},"Config":{"type":"object","description":"","deprecated":false,"properties":{"systemActive":{"type":"boolean"},"systemRunning":{"type":"boolean"},"lastUpdateDate":{"readOnly":true,"type":"string","format":"date-time"},"lastCheckDate":{"readOnly":true,"type":"string","format":"date-time"},"processCnt":{"readOnly":true,"type":"integer"},"sleepHourStart":{"minimum":0,"maximum":23,"type":["integer","null"]},"sleepHourEnd":{"minimum":0,"maximum":23,"type":["integer","null"]},"checkMaxSales":{"type":"boolean"},"numMaxSales":{"minimum":0,"maximum":20,"type":["integer","null"]}}},"Config.jsonld":{"type":"object","description":"","deprecated":false,"properties":{"@context":{"readOnly":true,"oneOf":[{"type":"string"},{"type":"object","properties":{"@vocab":{"type":"string"},"hydra":{"type":"string","enum":["http:\/\/www.w3.org\/ns\/hydra\/core#"]}},"required":["@vocab","hydra"],"additionalProperties":true}]},"@id":{"readOnly":true,"type":"string"},"@type":{"readOnly":true,"type":"string"},"systemActive":{"type":"boolean"},"systemRunning":{"type":"boolean"},"lastUpdateDate":{"readOnly":true,"type":"string","format":"date-time"},"lastCheckDate":{"readOnly":true,"type":"string","format":"date-time"},"processCnt":{"readOnly":true,"type":"integer"},"sleepHourStart":{"minimum":0,"maximum":23,"type":["integer","null"]},"sleepHourEnd":{"minimum":0,"maximum":23,"type":["integer","null"]},"checkMaxSales":{"type":"boolean"},"numMaxSales":{"minimum":0,"maximum":20,"type":["integer","null"]}}},"GameAccount":{"type":"object","description":"","deprecated":false,"properties":{"dbId":{"readOnly":true,"type":["integer","null"]},"email":{"format":"email","externalDocs":{"url":"https:\/\/schema.org\/email"},"type":["string","null"]},"profile":{"type":["string","null"]},"password":{"type":["string","null"]},"emailPw":{"type":["string","null"]},"credits":{"readOnly":true,"type":["integer","null"]},"cntItems":{"readOnly":true,"type":["integer","null"]},"cntSoldItems":{"readOnly":true,"type":["integer","null"]},"cntInactiveItems":{"readOnly":true,"type":["integer","null"]},"active":{"type":["boolean","null"]},"running":{"type":["boolean","null"]},"relist":{"type":["boolean","null"]},"relistDate":{"type":["string","null"],"format":"date-time"},"blocked":{"type":["boolean","null"]},"sniping":{"type":["boolean","null"]},"snipingDate":{"readOnly":true,"type":["string","null"],"format":"date-time"},"tmOpen":{"type":["boolean","null"]},"tmState":{"type":["integer","null"]},"dead":{"type":["boolean","null"]},"lockedMsg":{"type":["boolean","null"]},"dynPrices":{"type":["boolean","null"]},"newBuy":{"type":["boolean","null"]},"newBuyDate":{"readOnly":true,"type":["string","null"],"format":"date-time"},"newBuySelective":{"type":["boolean","null"]},"reBuy":{"type":["boolean","null"]},"rebuyDate":{"readOnly":true,"type":["string","null"],"format":"date-time"},"connectionDate":{"readOnly":true,"type":["string","null"],"format":"date-time"},"importWatchlist":{"type":["boolean","null"]},"autoReBuy":{"type":["boolean","null"]},"directReBuy":{"type":["boolean","null"]},"itemMaxBuyPrice":{"minimum":0,"maximum":15000000,"type":["integer","null"]},"revenue":{"readOnly":true,"type":["integer","null"]},"futWizValue":{"readOnly":true,"type":["integer","null"]},"eaMarketAvgValue":{"readOnly":true,"type":["integer","null"]},"mfaCode":{"type":["string","null"]},"twoFactorAuthKey":{"type":["string","null"]},"login2FaViaApp":{"type":["boolean","null"]},"eaCode1":{"type":["string","null"]},"eaCode2":{"type":["string","null"]},"eaCode3":{"type":["string","null"]},"eaCode4":{"type":["string","null"]},"eaCode5":{"type":["string","null"]},"eaCode6":{"type":["string","null"]},"snipingCnt1h":{"type":["integer","null"]},"snipingCnt3h":{"type":["integer","null"]},"snipingCnt6h":{"type":["integer","null"]},"snipingCnt12h":{"type":["integer","null"]},"snipingCnt24h":{"type":["integer","null"]},"snipingCnt3d":{"type":["integer","null"]},"snipingCnt1w":{"type":["integer","null"]},"note":{"type":["string","null"]},"loopStartDate":{"readOnly":true,"type":["string","null"],"format":"date-time"},"loopFinishDate":{"readOnly":true,"type":["string","null"],"format":"date-time"},"creationDate":{"readOnly":true,"type":["string","null"],"format":"date-time"},"owner":{"readOnly":true,"type":"string","format":"iri-reference","example":"https:\/\/example.com\/"}},"required":["email","profile","password","active","running","relist","blocked","sniping","tmOpen","dead","lockedMsg","dynPrices","newBuy","newBuySelective","reBuy","importWatchlist","autoReBuy","directReBuy"]},"GameAccount.jsonld":{"type":"object","description":"","deprecated":false,"properties":{"@context":{"readOnly":true,"oneOf":[{"type":"string"},{"type":"object","properties":{"@vocab":{"type":"string"},"hydra":{"type":"string","enum":["http:\/\/www.w3.org\/ns\/hydra\/core#"]}},"required":["@vocab","hydra"],"additionalProperties":true}]},"@id":{"readOnly":true,"type":"string"},"@type":{"readOnly":true,"type":"string"},"dbId":{"readOnly":true,"type":["integer","null"]},"email":{"format":"email","externalDocs":{"url":"https:\/\/schema.org\/email"},"type":["string","null"]},"profile":{"type":["string","null"]},"password":{"type":["string","null"]},"emailPw":{"type":["string","null"]},"credits":{"readOnly":true,"type":["integer","null"]},"cntItems":{"readOnly":true,"type":["integer","null"]},"cntSoldItems":{"readOnly":true,"type":["integer","null"]},"cntInactiveItems":{"readOnly":true,"type":["integer","null"]},"active":{"type":["boolean","null"]},"running":{"type":["boolean","null"]},"relist":{"type":["boolean","null"]},"relistDate":{"type":["string","null"],"format":"date-time"},"blocked":{"type":["boolean","null"]},"sniping":{"type":["boolean","null"]},"snipingDate":{"readOnly":true,"type":["string","null"],"format":"date-time"},"tmOpen":{"type":["boolean","null"]},"tmState":{"type":["integer","null"]},"dead":{"type":["boolean","null"]},"lockedMsg":{"type":["boolean","null"]},"dynPrices":{"type":["boolean","null"]},"newBuy":{"type":["boolean","null"]},"newBuyDate":{"readOnly":true,"type":["string","null"],"format":"date-time"},"newBuySelective":{"type":["boolean","null"]},"reBuy":{"type":["boolean","null"]},"rebuyDate":{"readOnly":true,"type":["string","null"],"format":"date-time"},"connectionDate":{"readOnly":true,"type":["string","null"],"format":"date-time"},"importWatchlist":{"type":["boolean","null"]},"autoReBuy":{"type":["boolean","null"]},"directReBuy":{"type":["boolean","null"]},"itemMaxBuyPrice":{"minimum":0,"maximum":15000000,"type":["integer","null"]},"revenue":{"readOnly":true,"type":["integer","null"]},"futWizValue":{"readOnly":true,"type":["integer","null"]},"eaMarketAvgValue":{"readOnly":true,"type":["integer","null"]},"mfaCode":{"type":["string","null"]},"twoFactorAuthKey":{"type":["string","null"]},"login2FaViaApp":{"type":["boolean","null"]},"eaCode1":{"type":["string","null"]},"eaCode2":{"type":["string","null"]},"eaCode3":{"type":["string","null"]},"eaCode4":{"type":["string","null"]},"eaCode5":{"type":["string","null"]},"eaCode6":{"type":["string","null"]},"snipingCnt1h":{"type":["integer","null"]},"snipingCnt3h":{"type":["integer","null"]},"snipingCnt6h":{"type":["integer","null"]},"snipingCnt12h":{"type":["integer","null"]},"snipingCnt24h":{"type":["integer","null"]},"snipingCnt3d":{"type":["integer","null"]},"snipingCnt1w":{"type":["integer","null"]},"note":{"type":["string","null"]},"loopStartDate":{"readOnly":true,"type":["string","null"],"format":"date-time"},"loopFinishDate":{"readOnly":true,"type":["string","null"],"format":"date-time"},"creationDate":{"readOnly":true,"type":["string","null"],"format":"date-time"},"owner":{"readOnly":true,"$ref":"#\/components\/schemas\/User.jsonld"}},"required":["email","profile","password","active","running","relist","blocked","sniping","tmOpen","dead","lockedMsg","dynPrices","newBuy","newBuySelective","reBuy","importWatchlist","autoReBuy","directReBuy"]},"LogAccountCredit.jsonld":{"type":"object","description":"","deprecated":false,"properties":{"@id":{"readOnly":true,"type":"string"},"@type":{"readOnly":true,"type":"string"},"@context":{"readOnly":true,"oneOf":[{"type":"string"},{"type":"object","properties":{"@vocab":{"type":"string"},"hydra":{"type":"string","enum":["http:\/\/www.w3.org\/ns\/hydra\/core#"]}},"required":["@vocab","hydra"],"additionalProperties":true}]},"gameAccount":{"readOnly":true,"$ref":"#\/components\/schemas\/GameAccount.jsonld"},"credits":{"readOnly":true,"type":["integer","null"]},"revenue":{"readOnly":true,"type":["integer","null"]},"creationDate":{"readOnly":true,"type":["string","null"],"format":"date-time"}}},"LogAccountProfit.jsonld":{"type":"object","description":"","deprecated":false,"properties":{"@id":{"readOnly":true,"type":"string"},"@type":{"readOnly":true,"type":"string"},"@context":{"readOnly":true,"oneOf":[{"type":"string"},{"type":"object","properties":{"@vocab":{"type":"string"},"hydra":{"type":"string","enum":["http:\/\/www.w3.org\/ns\/hydra\/core#"]}},"required":["@vocab","hydra"],"additionalProperties":true}]},"gameAccount":{"readOnly":true,"$ref":"#\/components\/schemas\/GameAccount.jsonld"},"credits":{"type":["integer","null"]},"revenue":{"type":["integer","null"]},"tpValue":{"type":["integer","null"]},"revToday":{"type":["integer","null"]},"rev3hours":{"type":["integer","null"]},"rev6hours":{"type":["integer","null"]},"rev12hours":{"type":["integer","null"]},"rev24hours":{"type":["integer","null"]},"rev3days":{"type":["integer","null"]},"rev1week":{"type":["integer","null"]},"rev2weeks":{"type":["integer","null"]},"rev3weeks":{"type":["integer","null"]},"rev4weeks":{"type":["integer","null"]},"rev2months":{"type":["integer","null"]},"rev3months":{"type":["integer","null"]},"revTotal":{"type":["integer","null"]},"numSalesToday":{"type":["integer","null"]},"numSales3hours":{"type":["integer","null"]},"numSales6hours":{"type":["integer","null"]},"numSales12hours":{"type":["integer","null"]},"numSales24hours":{"type":["integer","null"]},"numSales3days":{"type":["integer","null"]},"numSales1week":{"type":["integer","null"]},"numSales2weeks":{"type":["integer","null"]},"numSales3weeks":{"type":["integer","null"]},"numSales4weeks":{"type":["integer","null"]},"numSales2months":{"type":["integer","null"]},"numSales3months":{"type":["integer","null"]},"numSalesTotal":{"type":["integer","null"]},"isDailyProfit":{"type":["boolean","null"]},"creationDate":{"type":["string","null"],"format":"date-time"}}},"LogAccountSoldItem.jsonld":{"type":"object","description":"","deprecated":false,"properties":{"@id":{"readOnly":true,"type":"string"},"@type":{"readOnly":true,"type":"string"},"@context":{"readOnly":true,"oneOf":[{"type":"string"},{"type":"object","properties":{"@vocab":{"type":"string"},"hydra":{"type":"string","enum":["http:\/\/www.w3.org\/ns\/hydra\/core#"]}},"required":["@vocab","hydra"],"additionalProperties":true}]},"dbId":{"readOnly":true,"type":["integer","null"]},"gameAccount":{"readOnly":true,"$ref":"#\/components\/schemas\/GameAccount.jsonld"},"candidateItem":{"readOnly":true,"$ref":"#\/components\/schemas\/Candidate.jsonld"},"eaId":{"readOnly":true,"type":"integer"},"contracts":{"readOnly":true,"type":["integer","null"]},"playStyle":{"readOnly":true,"type":["integer","null"]},"lastSalePrice":{"readOnly":true,"type":"integer"},"currentBid":{"readOnly":true,"type":"integer"},"startingBid":{"readOnly":true,"type":"integer"},"binPrice":{"readOnly":true,"type":"integer"},"minRange":{"readOnly":true,"type":"integer"},"maxRange":{"readOnly":true,"type":"integer"},"tradeState":{"readOnly":true,"type":"string"},"eaTradeId":{"readOnly":true,"type":"integer"},"listCnt":{"readOnly":true,"type":"integer"},"revenue":{"readOnly":true,"type":"integer"},"reBought":{"readOnly":true,"type":"boolean"},"snipedItem":{"readOnly":true,"type":"boolean"},"firstListDate":{"readOnly":true,"type":["string","null"],"format":"date-time"},"creationDate":{"readOnly":true,"type":"string","format":"date-time"}}},"LogGeneral.jsonld":{"type":"object","description":"","deprecated":false,"properties":{"@id":{"readOnly":true,"type":"string"},"@type":{"readOnly":true,"type":"string"},"@context":{"readOnly":true,"oneOf":[{"type":"string"},{"type":"object","properties":{"@vocab":{"type":"string"},"hydra":{"type":"string","enum":["http:\/\/www.w3.org\/ns\/hydra\/core#"]}},"required":["@vocab","hydra"],"additionalProperties":true}]},"dbId":{"readOnly":true,"type":"integer"},"gameAccount":{"readOnly":true,"$ref":"#\/components\/schemas\/GameAccount.jsonld"},"candidateItem":{"readOnly":true,"$ref":"#\/components\/schemas\/Candidate.jsonld"},"logType":{"type":"string","enum":["alert","alert_low","cant_buy","debug","debug_server_logs","info","moved_to_club","new_buy","player_price_changed","preview_pack","preview_pack_alert","price_range_errors","profit_overview","removed","rebuy","sales","server_logs","stats","hourly_stats"]},"message":{"readOnly":true,"type":["string","null"]},"creationDate":{"readOnly":true,"type":["string","null"],"format":"date-time"}},"required":["logType"]},"LogTotalProfit":{"type":"object","description":"","deprecated":false,"properties":{"credits":{"type":["integer","null"]},"revenue":{"type":["integer","null"]},"tpValueFutwiz":{"type":["integer","null"]},"tpValueEaAverage":{"type":["integer","null"]},"revToday":{"type":["integer","null"]},"rev3hours":{"type":["integer","null"]},"rev6hours":{"type":["integer","null"]},"rev12hours":{"type":["integer","null"]},"rev24hours":{"type":["integer","null"]},"rev3days":{"type":["integer","null"]},"rev1week":{"type":["integer","null"]},"rev2weeks":{"type":["integer","null"]},"rev3weeks":{"type":["integer","null"]},"rev4weeks":{"type":["integer","null"]},"rev2months":{"type":["integer","null"]},"rev3months":{"type":["integer","null"]},"revTotal":{"type":["integer","null"]},"numSalesToday":{"type":["integer","null"]},"numSales3hours":{"type":["integer","null"]},"numSales6hours":{"type":["integer","null"]},"numSales12hours":{"type":["integer","null"]},"numSales24hours":{"type":["integer","null"]},"numSales3days":{"type":["integer","null"]},"numSales1week":{"type":["integer","null"]},"numSales2weeks":{"type":["integer","null"]},"numSales3weeks":{"type":["integer","null"]},"numSales4weeks":{"type":["integer","null"]},"numSales2months":{"type":["integer","null"]},"numSales3months":{"type":["integer","null"]},"numSalesTotal":{"type":["integer","null"]},"isDailyProfit":{"type":["boolean","null"]},"creationDate":{"type":["string","null"],"format":"date-time"}}},"LogTotalProfit.jsonld":{"type":"object","description":"","deprecated":false,"properties":{"@context":{"readOnly":true,"oneOf":[{"type":"string"},{"type":"object","properties":{"@vocab":{"type":"string"},"hydra":{"type":"string","enum":["http:\/\/www.w3.org\/ns\/hydra\/core#"]}},"required":["@vocab","hydra"],"additionalProperties":true}]},"@id":{"readOnly":true,"type":"string"},"@type":{"readOnly":true,"type":"string"},"credits":{"type":["integer","null"]},"revenue":{"type":["integer","null"]},"tpValueFutwiz":{"type":["integer","null"]},"tpValueEaAverage":{"type":["integer","null"]},"revToday":{"type":["integer","null"]},"rev3hours":{"type":["integer","null"]},"rev6hours":{"type":["integer","null"]},"rev12hours":{"type":["integer","null"]},"rev24hours":{"type":["integer","null"]},"rev3days":{"type":["integer","null"]},"rev1week":{"type":["integer","null"]},"rev2weeks":{"type":["integer","null"]},"rev3weeks":{"type":["integer","null"]},"rev4weeks":{"type":["integer","null"]},"rev2months":{"type":["integer","null"]},"rev3months":{"type":["integer","null"]},"revTotal":{"type":["integer","null"]},"numSalesToday":{"type":["integer","null"]},"numSales3hours":{"type":["integer","null"]},"numSales6hours":{"type":["integer","null"]},"numSales12hours":{"type":["integer","null"]},"numSales24hours":{"type":["integer","null"]},"numSales3days":{"type":["integer","null"]},"numSales1week":{"type":["integer","null"]},"numSales2weeks":{"type":["integer","null"]},"numSales3weeks":{"type":["integer","null"]},"numSales4weeks":{"type":["integer","null"]},"numSales2months":{"type":["integer","null"]},"numSales3months":{"type":["integer","null"]},"numSalesTotal":{"type":["integer","null"]},"isDailyProfit":{"type":["boolean","null"]},"creationDate":{"type":["string","null"],"format":"date-time"}}},"MediaObject.jsonld-media_object.read":{"type":"object","description":"","deprecated":false,"externalDocs":{"url":"https:\/\/schema.org\/MediaObject"},"properties":{"@context":{"readOnly":true,"oneOf":[{"type":"string"},{"type":"object","properties":{"@vocab":{"type":"string"},"hydra":{"type":"string","enum":["http:\/\/www.w3.org\/ns\/hydra\/core#"]}},"required":["@vocab","hydra"],"additionalProperties":true}]},"@id":{"readOnly":true,"type":"string"},"@type":{"readOnly":true,"type":"string"},"contentUrl":{"externalDocs":{"url":"https:\/\/schema.org\/contentUrl"},"type":["string","null"]}}},"ModeConfig":{"type":"object","description":"","deprecated":false,"properties":{"autoReBuyMinSoldItems":{"minimum":0,"maximum":20,"default":3,"example":3,"type":"integer"},"autoReBuyMinLastHours":{"minimum":0,"maximum":20,"default":3,"example":3,"type":"integer"}}},"ModeConfig.jsonld":{"type":"object","description":"","deprecated":false,"properties":{"@context":{"readOnly":true,"oneOf":[{"type":"string"},{"type":"object","properties":{"@vocab":{"type":"string"},"hydra":{"type":"string","enum":["http:\/\/www.w3.org\/ns\/hydra\/core#"]}},"required":["@vocab","hydra"],"additionalProperties":true}]},"@id":{"readOnly":true,"type":"string"},"@type":{"readOnly":true,"type":"string"},"autoReBuyMinSoldItems":{"minimum":0,"maximum":20,"default":3,"example":3,"type":"integer"},"autoReBuyMinLastHours":{"minimum":0,"maximum":20,"default":3,"example":3,"type":"integer"}}},"Player":{"type":"object","description":"","deprecated":false,"properties":{"eaAssetId":{"type":"integer"},"firstname":{"type":["string","null"]},"lastname":{"type":["string","null"]},"nickname":{"type":["string","null"]},"rating":{"type":"integer"},"creationDate":{"readOnly":true,"type":"string","format":"date-time"}}},"Player.jsonld":{"type":"object","description":"","deprecated":false,"properties":{"@context":{"readOnly":true,"oneOf":[{"type":"string"},{"type":"object","properties":{"@vocab":{"type":"string"},"hydra":{"type":"string","enum":["http:\/\/www.w3.org\/ns\/hydra\/core#"]}},"required":["@vocab","hydra"],"additionalProperties":true}]},"@id":{"readOnly":true,"type":"string"},"@type":{"readOnly":true,"type":"string"},"eaAssetId":{"type":"integer"},"firstname":{"type":["string","null"]},"lastname":{"type":["string","null"]},"nickname":{"type":["string","null"]},"rating":{"type":"integer"},"creationDate":{"readOnly":true,"type":"string","format":"date-time"}}},"Rarity":{"type":"object","description":"","deprecated":false,"properties":{"rareFlag":{"readOnly":true,"type":"integer"},"name":{"type":["string","null"]},"untradable":{"readOnly":true,"type":"boolean"},"image":{"readOnly":true,"type":["string","null"],"format":"iri-reference","example":"https:\/\/example.com\/"},"imageUrl":{"readOnly":true,"type":["string","null"]},"imageBronze":{"readOnly":true,"type":["string","null"],"format":"iri-reference","example":"https:\/\/example.com\/"}}},"Rarity.jsonld":{"type":"object","description":"","deprecated":false,"properties":{"@context":{"readOnly":true,"oneOf":[{"type":"string"},{"type":"object","properties":{"@vocab":{"type":"string"},"hydra":{"type":"string","enum":["http:\/\/www.w3.org\/ns\/hydra\/core#"]}},"required":["@vocab","hydra"],"additionalProperties":true}]},"@id":{"readOnly":true,"type":"string"},"@type":{"readOnly":true,"type":"string"},"rareFlag":{"readOnly":true,"type":"integer"},"name":{"type":["string","null"]},"untradable":{"readOnly":true,"type":"boolean"},"image":{"readOnly":true,"type":["string","null"],"format":"iri-reference","example":"https:\/\/example.com\/"},"imageUrl":{"readOnly":true,"type":["string","null"]},"imageBronze":{"readOnly":true,"type":["string","null"],"format":"iri-reference","example":"https:\/\/example.com\/"}}},"SystemStat.jsonld":{"type":"object","description":"","deprecated":false,"properties":{"@context":{"readOnly":true,"oneOf":[{"type":"string"},{"type":"object","properties":{"@vocab":{"type":"string"},"hydra":{"type":"string","enum":["http:\/\/www.w3.org\/ns\/hydra\/core#"]}},"required":["@vocab","hydra"],"additionalProperties":true}]},"@id":{"readOnly":true,"type":"string"},"@type":{"readOnly":true,"type":"string"},"totalLogProfit":{"readOnly":true,"$ref":"#\/components\/schemas\/LogTotalProfit.jsonld"},"config":{"readOnly":true,"$ref":"#\/components\/schemas\/Config.jsonld"},"modeConfig":{"readOnly":true,"$ref":"#\/components\/schemas\/ModeConfig.jsonld"},"numAccounts":{"type":["integer","null"]},"numDeadAccounts":{"type":["integer","null"]},"numActiveAccounts":{"type":["integer","null"]},"numTmOpenAccounts":{"type":["integer","null"]},"numTmClosedAccounts":{"type":["integer","null"]},"numBlockedAccounts":{"type":["integer","null"]},"numRunningAccounts":{"type":["integer","null"]},"numTradepileItems":{"type":["integer","null"]},"numSoldTradepileItems":{"type":["integer","null"]},"numActiveTradepileItems":{"type":["integer","null"]},"numExpiredTradepileItems":{"type":["integer","null"]},"numInactiveTradepileItems":{"type":["integer","null"]},"numCandidates":{"type":["integer","null"]},"numRelevantCandidates":{"type":["integer","null"]},"numBuyCandidates":{"type":["integer","null"]},"totalSnipingRev":{"type":["integer","null"]}}},"User.jsonld":{"type":"object","description":"","deprecated":false,"required":["email","firstName","lastName"],"properties":{"@context":{"readOnly":true,"oneOf":[{"type":"string"},{"type":"object","properties":{"@vocab":{"type":"string"},"hydra":{"type":"string","enum":["http:\/\/www.w3.org\/ns\/hydra\/core#"]}},"required":["@vocab","hydra"],"additionalProperties":true}]},"@id":{"readOnly":true,"type":"string"},"@type":{"readOnly":true,"type":"string"},"email":{"format":"email","externalDocs":{"url":"https:\/\/schema.org\/email"},"type":["string","null"]},"firstName":{"type":["string","null"]},"lastName":{"type":["string","null"]},"image":{"type":["string","null"],"format":"iri-reference","example":"https:\/\/example.com\/"},"imageUrl":{"readOnly":true,"type":["string","null"]},"fullName":{"readOnly":true,"type":["string","null"]},"password":{"writeOnly":true,"description":"The plaintext password when being set or changed.","type":["string","null"]},"active":{"type":"boolean"},"createdAt":{"readOnly":true,"type":["string","null"],"format":"date-time"}}}},"responses":{},"parameters":{},"examples":{},"requestBodies":{},"headers":{},"securitySchemes":{"JWT":{"type":"http","scheme":"bearer","bearerFormat":"JWT"}}},"security":[{"JWT":[]}],"tags":[]} \ No newline at end of file diff --git a/angular/openapi.yaml b/angular/openapi.yaml new file mode 100644 index 0000000..61a0f90 --- /dev/null +++ b/angular/openapi.yaml @@ -0,0 +1,5037 @@ +openapi: 3.1.0 +info: + title: 'Hello API Platform' + description: '' + version: 1.0.0 +servers: + - + url: / + description: '' +paths: + /api/account_trade_pile_items: + get: + operationId: api_account_trade_pile_items_get_collection + tags: + - AccountTradePileItem + responses: + 200: + description: 'AccountTradePileItem collection' + content: + application/ld+json: + schema: + type: object + properties: + 'hydra:member': { type: array, items: { $ref: '#/components/schemas/AccountTradePileItem.jsonld' } } + 'hydra:totalItems': { type: integer, minimum: 0 } + 'hydra:view': { type: object, properties: { '@id': { type: string, format: iri-reference }, '@type': { type: string }, 'hydra:first': { type: string, format: iri-reference }, 'hydra:last': { type: string, format: iri-reference }, 'hydra:previous': { type: string, format: iri-reference }, 'hydra:next': { type: string, format: iri-reference } }, example: { '@id': string, type: string, 'hydra:first': string, 'hydra:last': string, 'hydra:previous': string, 'hydra:next': string } } + 'hydra:search': { type: object, properties: { '@type': { type: string }, 'hydra:template': { type: string }, 'hydra:variableRepresentation': { type: string }, 'hydra:mapping': { type: array, items: { type: object, properties: { '@type': { type: string }, variable: { type: string }, property: { type: [string, 'null'] }, required: { type: boolean } } } } } } + required: + - 'hydra:member' + summary: 'Retrieves the collection of AccountTradePileItem resources.' + description: 'Retrieves the collection of AccountTradePileItem resources.' + parameters: + - + name: page + in: query + description: 'The collection page number' + required: false + deprecated: false + allowEmptyValue: true + schema: + type: integer + default: 1 + style: form + explode: false + allowReserved: false + - + name: itemsPerPage + in: query + description: 'The number of items per page' + required: false + deprecated: false + allowEmptyValue: true + schema: + type: integer + default: 50 + minimum: 0 + maximum: 100 + style: form + explode: false + allowReserved: false + - + name: account + in: query + description: '' + required: false + deprecated: false + allowEmptyValue: true + schema: + type: string + style: form + explode: false + allowReserved: false + - + name: 'account[]' + in: query + description: '' + required: false + deprecated: false + allowEmptyValue: true + schema: + type: array + items: + type: string + style: form + explode: true + allowReserved: false + - + name: candidateItem + in: query + description: '' + required: false + deprecated: false + allowEmptyValue: true + schema: + type: string + style: form + explode: false + allowReserved: false + - + name: 'candidateItem[]' + in: query + description: '' + required: false + deprecated: false + allowEmptyValue: true + schema: + type: array + items: + type: string + style: form + explode: true + allowReserved: false + - + name: candidateNameSearch + in: query + description: '' + required: false + deprecated: false + allowEmptyValue: true + schema: + type: string + style: form + explode: false + allowReserved: false + - + name: accountTmOpenFilter + in: query + description: 'Filter items based on the tmOpen value of the associated account' + required: false + deprecated: false + allowEmptyValue: true + schema: + type: boolean + style: form + explode: false + allowReserved: false + - + name: custom_json_filter + in: query + description: '' + required: false + deprecated: false + allowEmptyValue: true + schema: + type: string + style: form + explode: false + allowReserved: false + - + name: custom_json_order + in: query + description: '' + required: false + deprecated: false + allowEmptyValue: true + schema: + type: string + style: form + explode: false + allowReserved: false + example: '{"active":"cntSoldItems","direction":"desc","listColDefinition":{"field":"cntSoldItems","sortingSubResource":"tradePileItems","countSortSubresource":true,"countSortSubresourceValue":["closed"],"countSortSubresourceField":"tradeState","countSortFilterSubResource":"account","countSortFilterSubresourceField":"tmOpen","countSortFilterSubresourceValue":"0"}}' + deprecated: false + parameters: [] + '/api/account_trade_pile_items/{id}': + get: + operationId: api_account_trade_pile_items_id_get + tags: + - AccountTradePileItem + responses: + 200: + description: 'AccountTradePileItem resource' + content: + application/ld+json: + schema: + $ref: '#/components/schemas/AccountTradePileItem.jsonld' + 404: + description: 'Resource not found' + summary: 'Retrieves a AccountTradePileItem resource.' + description: 'Retrieves a AccountTradePileItem resource.' + parameters: + - + name: id + in: path + description: 'AccountTradePileItem identifier' + required: true + deprecated: false + allowEmptyValue: false + schema: + type: string + style: simple + explode: false + allowReserved: false + deprecated: false + patch: + operationId: api_account_trade_pile_items_id_patch + tags: + - AccountTradePileItem + responses: + 200: + description: 'AccountTradePileItem resource updated' + content: + application/ld+json: + schema: + $ref: '#/components/schemas/AccountTradePileItem.jsonld' + links: { } + 400: + description: 'Invalid input' + 422: + description: 'Unprocessable entity' + 404: + description: 'Resource not found' + summary: 'Updates the AccountTradePileItem resource.' + description: 'Updates the AccountTradePileItem resource.' + parameters: + - + name: id + in: path + description: 'AccountTradePileItem identifier' + required: true + deprecated: false + allowEmptyValue: false + schema: + type: string + style: simple + explode: false + allowReserved: false + requestBody: + description: 'The updated AccountTradePileItem resource' + content: + application/merge-patch+json: + schema: + $ref: '#/components/schemas/AccountTradePileItem' + required: true + deprecated: false + parameters: [] + /api/auth: + post: + operationId: login_check_post + tags: + - 'Login Check' + responses: + 200: + description: 'User token created' + content: + application/json: + schema: + type: object + properties: + token: { readOnly: true, type: string, nullable: false } + required: + - token + summary: 'Creates a user token.' + description: 'Creates a user token.' + requestBody: + description: 'The login data' + content: + application/json: + schema: + type: object + properties: + email: + type: string + nullable: false + password: + type: string + nullable: false + required: + - email + - password + required: true + parameters: [] + '/api/candidate-items/{id}/stock-accounts': + get: + operationId: api_candidate-items_idstock-accounts_get + tags: + - CandidateStockAccounts + responses: + 200: + description: 'CandidateStockAccounts resource' + content: + application/ld+json: + schema: + $ref: '#/components/schemas/CandidateStockAccounts.jsonld' + 404: + description: 'Resource not found' + summary: 'Retrieves the stock and missing accounts for a candidate item' + description: 'Retrieves a CandidateStockAccounts resource.' + parameters: + - + name: id + in: path + description: 'Candidate Item ID' + required: true + deprecated: false + allowEmptyValue: false + schema: + type: integer + style: simple + explode: false + allowReserved: false + deprecated: false + parameters: [] + /api/candidate_stats: + get: + operationId: api_candidate_stats_get_collection + tags: + - CandidateStat + responses: + 200: + description: 'CandidateStat collection' + content: + application/ld+json: + schema: + type: object + properties: + 'hydra:member': { type: array, items: { $ref: '#/components/schemas/CandidateStat.jsonld' } } + 'hydra:totalItems': { type: integer, minimum: 0 } + 'hydra:view': { type: object, properties: { '@id': { type: string, format: iri-reference }, '@type': { type: string }, 'hydra:first': { type: string, format: iri-reference }, 'hydra:last': { type: string, format: iri-reference }, 'hydra:previous': { type: string, format: iri-reference }, 'hydra:next': { type: string, format: iri-reference } }, example: { '@id': string, type: string, 'hydra:first': string, 'hydra:last': string, 'hydra:previous': string, 'hydra:next': string } } + 'hydra:search': { type: object, properties: { '@type': { type: string }, 'hydra:template': { type: string }, 'hydra:variableRepresentation': { type: string }, 'hydra:mapping': { type: array, items: { type: object, properties: { '@type': { type: string }, variable: { type: string }, property: { type: [string, 'null'] }, required: { type: boolean } } } } } } + required: + - 'hydra:member' + summary: 'Retrieves the collection of CandidateStat resources.' + description: 'Retrieves the collection of CandidateStat resources.' + parameters: + - + name: page + in: query + description: 'The collection page number' + required: false + deprecated: false + allowEmptyValue: true + schema: + type: integer + default: 1 + style: form + explode: false + allowReserved: false + - + name: itemsPerPage + in: query + description: 'The number of items per page' + required: false + deprecated: false + allowEmptyValue: true + schema: + type: integer + default: 50 + minimum: 0 + maximum: 100 + style: form + explode: false + allowReserved: false + - + name: candidateNameSearch + in: query + description: '' + required: false + deprecated: false + allowEmptyValue: true + schema: + type: string + style: form + explode: false + allowReserved: false + - + name: custom_json_order + in: query + description: '' + required: false + deprecated: false + allowEmptyValue: true + schema: + type: string + style: form + explode: false + allowReserved: false + example: '{"active":"cntSoldItems","direction":"desc","listColDefinition":{"field":"cntSoldItems","sortingSubResource":"tradePileItems","countSortSubresource":true,"countSortSubresourceValue":["closed"],"countSortSubresourceField":"tradeState","countSortFilterSubResource":"account","countSortFilterSubresourceField":"tmOpen","countSortFilterSubresourceValue":"0"}}' + deprecated: false + parameters: [] + '/api/candidate_stats/{id}': + get: + operationId: api_candidate_stats_id_get + tags: + - CandidateStat + responses: + 200: + description: 'CandidateStat resource' + content: + application/ld+json: + schema: + $ref: '#/components/schemas/CandidateStat.jsonld' + 404: + description: 'Resource not found' + summary: 'Retrieves a CandidateStat resource.' + description: 'Retrieves a CandidateStat resource.' + parameters: + - + name: id + in: path + description: 'CandidateStat identifier' + required: true + deprecated: false + allowEmptyValue: false + schema: + type: string + style: simple + explode: false + allowReserved: false + deprecated: false + parameters: [] + /api/candidates: + get: + operationId: api_candidates_get_collection + tags: + - Candidate + responses: + 200: + description: 'Candidate collection' + content: + application/ld+json: + schema: + type: object + properties: + 'hydra:member': { type: array, items: { $ref: '#/components/schemas/Candidate.jsonld' } } + 'hydra:totalItems': { type: integer, minimum: 0 } + 'hydra:view': { type: object, properties: { '@id': { type: string, format: iri-reference }, '@type': { type: string }, 'hydra:first': { type: string, format: iri-reference }, 'hydra:last': { type: string, format: iri-reference }, 'hydra:previous': { type: string, format: iri-reference }, 'hydra:next': { type: string, format: iri-reference } }, example: { '@id': string, type: string, 'hydra:first': string, 'hydra:last': string, 'hydra:previous': string, 'hydra:next': string } } + 'hydra:search': { type: object, properties: { '@type': { type: string }, 'hydra:template': { type: string }, 'hydra:variableRepresentation': { type: string }, 'hydra:mapping': { type: array, items: { type: object, properties: { '@type': { type: string }, variable: { type: string }, property: { type: [string, 'null'] }, required: { type: boolean } } } } } } + required: + - 'hydra:member' + summary: 'Retrieves the collection of Candidate resources.' + description: 'Retrieves the collection of Candidate resources.' + parameters: + - + name: page + in: query + description: 'The collection page number' + required: false + deprecated: false + allowEmptyValue: true + schema: + type: integer + default: 1 + style: form + explode: false + allowReserved: false + - + name: itemsPerPage + in: query + description: 'The number of items per page' + required: false + deprecated: false + allowEmptyValue: true + schema: + type: integer + default: 50 + minimum: 0 + maximum: 100 + style: form + explode: false + allowReserved: false + - + name: candidateNameSearch + in: query + description: '' + required: false + deprecated: false + allowEmptyValue: true + schema: + type: string + style: form + explode: false + allowReserved: false + - + name: custom_json_filter + in: query + description: '' + required: false + deprecated: false + allowEmptyValue: true + schema: + type: string + style: form + explode: false + allowReserved: false + - + name: custom_json_order + in: query + description: '' + required: false + deprecated: false + allowEmptyValue: true + schema: + type: string + style: form + explode: false + allowReserved: false + example: '{"active":"cntSoldItems","direction":"desc","listColDefinition":{"field":"cntSoldItems","sortingSubResource":"tradePileItems","countSortSubresource":true,"countSortSubresourceValue":["closed"],"countSortSubresourceField":"tradeState","countSortFilterSubResource":"account","countSortFilterSubresourceField":"tmOpen","countSortFilterSubresourceValue":"0"}}' + deprecated: false + post: + operationId: api_candidates_post + tags: + - Candidate + responses: + 201: + description: 'Candidate resource created' + content: + application/ld+json: + schema: + $ref: '#/components/schemas/Candidate.jsonld' + links: { } + 400: + description: 'Invalid input' + 422: + description: 'Unprocessable entity' + summary: 'Creates a Candidate resource.' + description: 'Creates a Candidate resource.' + parameters: [] + requestBody: + description: 'The new Candidate resource' + content: + application/ld+json: + schema: + $ref: '#/components/schemas/Candidate.jsonld' + required: true + deprecated: false + parameters: [] + '/api/candidates/{id}': + get: + operationId: api_candidates_id_get + tags: + - Candidate + responses: + 200: + description: 'Candidate resource' + content: + application/ld+json: + schema: + $ref: '#/components/schemas/Candidate.jsonld' + 404: + description: 'Resource not found' + summary: 'Retrieves a Candidate resource.' + description: 'Retrieves a Candidate resource.' + parameters: + - + name: id + in: path + description: 'Candidate identifier' + required: true + deprecated: false + allowEmptyValue: false + schema: + type: string + style: simple + explode: false + allowReserved: false + deprecated: false + patch: + operationId: api_candidates_id_patch + tags: + - Candidate + responses: + 200: + description: 'Candidate resource updated' + content: + application/ld+json: + schema: + $ref: '#/components/schemas/Candidate.jsonld' + links: { } + 400: + description: 'Invalid input' + 422: + description: 'Unprocessable entity' + 404: + description: 'Resource not found' + summary: 'Updates the Candidate resource.' + description: 'Updates the Candidate resource.' + parameters: + - + name: id + in: path + description: 'Candidate identifier' + required: true + deprecated: false + allowEmptyValue: false + schema: + type: string + style: simple + explode: false + allowReserved: false + requestBody: + description: 'The updated Candidate resource' + content: + application/merge-patch+json: + schema: + $ref: '#/components/schemas/Candidate' + required: true + deprecated: false + parameters: [] + /api/config: + get: + operationId: api_config_get + tags: + - Config + responses: + 200: + description: 'Config resource' + content: + application/ld+json: + schema: + $ref: '#/components/schemas/Config.jsonld' + 404: + description: 'Resource not found' + summary: 'Retrieves a Config resource.' + description: 'Retrieves a Config resource.' + parameters: [] + deprecated: false + patch: + operationId: api_config_patch + tags: + - Config + responses: + 200: + description: 'Config resource updated' + content: + application/ld+json: + schema: + $ref: '#/components/schemas/Config.jsonld' + links: { } + 400: + description: 'Invalid input' + 422: + description: 'Unprocessable entity' + 404: + description: 'Resource not found' + summary: 'Updates the Config resource.' + description: 'Updates the Config resource.' + parameters: [] + requestBody: + description: 'The updated Config resource' + content: + application/merge-patch+json: + schema: + $ref: '#/components/schemas/Config' + required: true + deprecated: false + parameters: [] + /api/game_accounts: + get: + operationId: api_game_accounts_get_collection + tags: + - GameAccount + responses: + 200: + description: 'GameAccount collection' + content: + application/ld+json: + schema: + type: object + properties: + 'hydra:member': { type: array, items: { $ref: '#/components/schemas/GameAccount.jsonld' } } + 'hydra:totalItems': { type: integer, minimum: 0 } + 'hydra:view': { type: object, properties: { '@id': { type: string, format: iri-reference }, '@type': { type: string }, 'hydra:first': { type: string, format: iri-reference }, 'hydra:last': { type: string, format: iri-reference }, 'hydra:previous': { type: string, format: iri-reference }, 'hydra:next': { type: string, format: iri-reference } }, example: { '@id': string, type: string, 'hydra:first': string, 'hydra:last': string, 'hydra:previous': string, 'hydra:next': string } } + 'hydra:search': { type: object, properties: { '@type': { type: string }, 'hydra:template': { type: string }, 'hydra:variableRepresentation': { type: string }, 'hydra:mapping': { type: array, items: { type: object, properties: { '@type': { type: string }, variable: { type: string }, property: { type: [string, 'null'] }, required: { type: boolean } } } } } } + required: + - 'hydra:member' + summary: 'Retrieves the collection of GameAccount resources.' + description: 'Retrieves the collection of GameAccount resources.' + parameters: + - + name: page + in: query + description: 'The collection page number' + required: false + deprecated: false + allowEmptyValue: true + schema: + type: integer + default: 1 + style: form + explode: false + allowReserved: false + - + name: itemsPerPage + in: query + description: 'The number of items per page' + required: false + deprecated: false + allowEmptyValue: true + schema: + type: integer + default: 50 + minimum: 0 + maximum: 100 + style: form + explode: false + allowReserved: false + - + name: owner + in: query + description: '' + required: false + deprecated: false + allowEmptyValue: true + schema: + type: string + style: form + explode: false + allowReserved: false + - + name: 'owner[]' + in: query + description: '' + required: false + deprecated: false + allowEmptyValue: true + schema: + type: array + items: + type: string + style: form + explode: true + allowReserved: false + - + name: email + in: query + description: '' + required: false + deprecated: false + allowEmptyValue: true + schema: + type: string + style: form + explode: false + allowReserved: false + - + name: profile + in: query + description: '' + required: false + deprecated: false + allowEmptyValue: true + schema: + type: string + style: form + explode: false + allowReserved: false + - + name: tmOpen + in: query + description: '' + required: false + deprecated: false + allowEmptyValue: true + schema: + type: boolean + style: form + explode: false + allowReserved: false + - + name: custom_json_filter + in: query + description: '' + required: false + deprecated: false + allowEmptyValue: true + schema: + type: string + style: form + explode: false + allowReserved: false + - + name: custom_json_order + in: query + description: '' + required: false + deprecated: false + allowEmptyValue: true + schema: + type: string + style: form + explode: false + allowReserved: false + example: '{"active":"cntSoldItems","direction":"desc","listColDefinition":{"field":"cntSoldItems","sortingSubResource":"tradePileItems","countSortSubresource":true,"countSortSubresourceValue":["closed"],"countSortSubresourceField":"tradeState","countSortFilterSubResource":"account","countSortFilterSubresourceField":"tmOpen","countSortFilterSubresourceValue":"0"}}' + deprecated: false + post: + operationId: api_game_accounts_post + tags: + - GameAccount + responses: + 201: + description: 'GameAccount resource created' + content: + application/ld+json: + schema: + $ref: '#/components/schemas/GameAccount.jsonld' + links: { } + 400: + description: 'Invalid input' + 422: + description: 'Unprocessable entity' + summary: 'Creates a GameAccount resource.' + description: 'Creates a GameAccount resource.' + parameters: [] + requestBody: + description: 'The new GameAccount resource' + content: + application/ld+json: + schema: + $ref: '#/components/schemas/GameAccount.jsonld' + required: true + deprecated: false + parameters: [] + '/api/game_accounts/{id}': + get: + operationId: api_game_accounts_id_get + tags: + - GameAccount + responses: + 200: + description: 'GameAccount resource' + content: + application/ld+json: + schema: + $ref: '#/components/schemas/GameAccount.jsonld' + 404: + description: 'Resource not found' + summary: 'Retrieves a GameAccount resource.' + description: 'Retrieves a GameAccount resource.' + parameters: + - + name: id + in: path + description: 'GameAccount identifier' + required: true + deprecated: false + allowEmptyValue: false + schema: + type: string + style: simple + explode: false + allowReserved: false + deprecated: false + patch: + operationId: api_game_accounts_id_patch + tags: + - GameAccount + responses: + 200: + description: 'GameAccount resource updated' + content: + application/ld+json: + schema: + $ref: '#/components/schemas/GameAccount.jsonld' + links: { } + 400: + description: 'Invalid input' + 422: + description: 'Unprocessable entity' + 404: + description: 'Resource not found' + summary: 'Updates the GameAccount resource.' + description: 'Updates the GameAccount resource.' + parameters: + - + name: id + in: path + description: 'GameAccount identifier' + required: true + deprecated: false + allowEmptyValue: false + schema: + type: string + style: simple + explode: false + allowReserved: false + requestBody: + description: 'The updated GameAccount resource' + content: + application/merge-patch+json: + schema: + $ref: '#/components/schemas/GameAccount' + required: true + deprecated: false + parameters: [] + /api/log_account_credits: + get: + operationId: api_log_account_credits_get_collection + tags: + - LogAccountCredit + responses: + 200: + description: 'LogAccountCredit collection' + content: + application/ld+json: + schema: + type: object + properties: + 'hydra:member': { type: array, items: { $ref: '#/components/schemas/LogAccountCredit.jsonld' } } + 'hydra:totalItems': { type: integer, minimum: 0 } + 'hydra:view': { type: object, properties: { '@id': { type: string, format: iri-reference }, '@type': { type: string }, 'hydra:first': { type: string, format: iri-reference }, 'hydra:last': { type: string, format: iri-reference }, 'hydra:previous': { type: string, format: iri-reference }, 'hydra:next': { type: string, format: iri-reference } }, example: { '@id': string, type: string, 'hydra:first': string, 'hydra:last': string, 'hydra:previous': string, 'hydra:next': string } } + 'hydra:search': { type: object, properties: { '@type': { type: string }, 'hydra:template': { type: string }, 'hydra:variableRepresentation': { type: string }, 'hydra:mapping': { type: array, items: { type: object, properties: { '@type': { type: string }, variable: { type: string }, property: { type: [string, 'null'] }, required: { type: boolean } } } } } } + required: + - 'hydra:member' + summary: 'Retrieves the collection of LogAccountCredit resources.' + description: 'Retrieves the collection of LogAccountCredit resources.' + parameters: + - + name: page + in: query + description: 'The collection page number' + required: false + deprecated: false + allowEmptyValue: true + schema: + type: integer + default: 1 + style: form + explode: false + allowReserved: false + - + name: itemsPerPage + in: query + description: 'The number of items per page' + required: false + deprecated: false + allowEmptyValue: true + schema: + type: integer + default: 50 + minimum: 0 + maximum: 100 + style: form + explode: false + allowReserved: false + - + name: 'order[creationDate]' + in: query + description: '' + required: false + deprecated: false + allowEmptyValue: true + schema: + type: string + enum: + - asc + - desc + style: form + explode: false + allowReserved: false + - + name: 'order[credits]' + in: query + description: '' + required: false + deprecated: false + allowEmptyValue: true + schema: + type: string + enum: + - asc + - desc + style: form + explode: false + allowReserved: false + - + name: 'order[revenue]' + in: query + description: '' + required: false + deprecated: false + allowEmptyValue: true + schema: + type: string + enum: + - asc + - desc + style: form + explode: false + allowReserved: false + deprecated: false + parameters: [] + '/api/log_account_credits/{id}': + get: + operationId: api_log_account_credits_id_get + tags: + - LogAccountCredit + responses: + 200: + description: 'LogAccountCredit resource' + content: + application/ld+json: + schema: + $ref: '#/components/schemas/LogAccountCredit.jsonld' + 404: + description: 'Resource not found' + summary: 'Retrieves a LogAccountCredit resource.' + description: 'Retrieves a LogAccountCredit resource.' + parameters: + - + name: id + in: path + description: 'LogAccountCredit identifier' + required: true + deprecated: false + allowEmptyValue: false + schema: + type: string + style: simple + explode: false + allowReserved: false + deprecated: false + parameters: [] + /api/log_account_profits: + get: + operationId: api_log_account_profits_get_collection + tags: + - LogAccountProfit + responses: + 200: + description: 'LogAccountProfit collection' + content: + application/ld+json: + schema: + type: object + properties: + 'hydra:member': { type: array, items: { $ref: '#/components/schemas/LogAccountProfit.jsonld' } } + 'hydra:totalItems': { type: integer, minimum: 0 } + 'hydra:view': { type: object, properties: { '@id': { type: string, format: iri-reference }, '@type': { type: string }, 'hydra:first': { type: string, format: iri-reference }, 'hydra:last': { type: string, format: iri-reference }, 'hydra:previous': { type: string, format: iri-reference }, 'hydra:next': { type: string, format: iri-reference } }, example: { '@id': string, type: string, 'hydra:first': string, 'hydra:last': string, 'hydra:previous': string, 'hydra:next': string } } + 'hydra:search': { type: object, properties: { '@type': { type: string }, 'hydra:template': { type: string }, 'hydra:variableRepresentation': { type: string }, 'hydra:mapping': { type: array, items: { type: object, properties: { '@type': { type: string }, variable: { type: string }, property: { type: [string, 'null'] }, required: { type: boolean } } } } } } + required: + - 'hydra:member' + summary: 'Retrieves the collection of LogAccountProfit resources.' + description: 'Retrieves the collection of LogAccountProfit resources.' + parameters: + - + name: page + in: query + description: 'The collection page number' + required: false + deprecated: false + allowEmptyValue: true + schema: + type: integer + default: 1 + style: form + explode: false + allowReserved: false + - + name: itemsPerPage + in: query + description: 'The number of items per page' + required: false + deprecated: false + allowEmptyValue: true + schema: + type: integer + default: 50 + minimum: 0 + maximum: 100 + style: form + explode: false + allowReserved: false + - + name: gameAccount + in: query + description: '' + required: false + deprecated: false + allowEmptyValue: true + schema: + type: string + style: form + explode: false + allowReserved: false + - + name: 'gameAccount[]' + in: query + description: '' + required: false + deprecated: false + allowEmptyValue: true + schema: + type: array + items: + type: string + style: form + explode: true + allowReserved: false + - + name: isDailyProfit + in: query + description: '' + required: false + deprecated: false + allowEmptyValue: true + schema: + type: boolean + style: form + explode: false + allowReserved: false + - + name: gameAccountProfile + in: query + description: '' + required: false + deprecated: false + allowEmptyValue: true + schema: + type: string + style: form + explode: false + allowReserved: false + - + name: custom_json_filter + in: query + description: '' + required: false + deprecated: false + allowEmptyValue: true + schema: + type: string + style: form + explode: false + allowReserved: false + - + name: custom_json_order + in: query + description: '' + required: false + deprecated: false + allowEmptyValue: true + schema: + type: string + style: form + explode: false + allowReserved: false + example: '{"active":"cntSoldItems","direction":"desc","listColDefinition":{"field":"cntSoldItems","sortingSubResource":"tradePileItems","countSortSubresource":true,"countSortSubresourceValue":["closed"],"countSortSubresourceField":"tradeState","countSortFilterSubResource":"account","countSortFilterSubresourceField":"tmOpen","countSortFilterSubresourceValue":"0"}}' + deprecated: false + parameters: [] + '/api/log_account_profits/{id}': + get: + operationId: api_log_account_profits_id_get + tags: + - LogAccountProfit + responses: + 200: + description: 'LogAccountProfit resource' + content: + application/ld+json: + schema: + $ref: '#/components/schemas/LogAccountProfit.jsonld' + 404: + description: 'Resource not found' + summary: 'Retrieves a LogAccountProfit resource.' + description: 'Retrieves a LogAccountProfit resource.' + parameters: + - + name: id + in: path + description: 'LogAccountProfit identifier' + required: true + deprecated: false + allowEmptyValue: false + schema: + type: string + style: simple + explode: false + allowReserved: false + deprecated: false + parameters: [] + /api/log_account_sold_items: + get: + operationId: api_log_account_sold_items_get_collection + tags: + - LogAccountSoldItem + responses: + 200: + description: 'LogAccountSoldItem collection' + content: + application/ld+json: + schema: + type: object + properties: + 'hydra:member': { type: array, items: { $ref: '#/components/schemas/LogAccountSoldItem.jsonld' } } + 'hydra:totalItems': { type: integer, minimum: 0 } + 'hydra:view': { type: object, properties: { '@id': { type: string, format: iri-reference }, '@type': { type: string }, 'hydra:first': { type: string, format: iri-reference }, 'hydra:last': { type: string, format: iri-reference }, 'hydra:previous': { type: string, format: iri-reference }, 'hydra:next': { type: string, format: iri-reference } }, example: { '@id': string, type: string, 'hydra:first': string, 'hydra:last': string, 'hydra:previous': string, 'hydra:next': string } } + 'hydra:search': { type: object, properties: { '@type': { type: string }, 'hydra:template': { type: string }, 'hydra:variableRepresentation': { type: string }, 'hydra:mapping': { type: array, items: { type: object, properties: { '@type': { type: string }, variable: { type: string }, property: { type: [string, 'null'] }, required: { type: boolean } } } } } } + required: + - 'hydra:member' + summary: 'Retrieves the collection of LogAccountSoldItem resources.' + description: 'Retrieves the collection of LogAccountSoldItem resources.' + parameters: + - + name: page + in: query + description: 'The collection page number' + required: false + deprecated: false + allowEmptyValue: true + schema: + type: integer + default: 1 + style: form + explode: false + allowReserved: false + - + name: itemsPerPage + in: query + description: 'The number of items per page' + required: false + deprecated: false + allowEmptyValue: true + schema: + type: integer + default: 50 + minimum: 0 + maximum: 100 + style: form + explode: false + allowReserved: false + - + name: account + in: query + description: '' + required: false + deprecated: false + allowEmptyValue: true + schema: + type: string + style: form + explode: false + allowReserved: false + - + name: 'account[]' + in: query + description: '' + required: false + deprecated: false + allowEmptyValue: true + schema: + type: array + items: + type: string + style: form + explode: true + allowReserved: false + - + name: candidateItem + in: query + description: '' + required: false + deprecated: false + allowEmptyValue: true + schema: + type: string + style: form + explode: false + allowReserved: false + - + name: 'candidateItem[]' + in: query + description: '' + required: false + deprecated: false + allowEmptyValue: true + schema: + type: array + items: + type: string + style: form + explode: true + allowReserved: false + - + name: candidateNameSearch + in: query + description: '' + required: false + deprecated: false + allowEmptyValue: true + schema: + type: string + style: form + explode: false + allowReserved: false + - + name: custom_json_filter + in: query + description: '' + required: false + deprecated: false + allowEmptyValue: true + schema: + type: string + style: form + explode: false + allowReserved: false + - + name: custom_json_order + in: query + description: '' + required: false + deprecated: false + allowEmptyValue: true + schema: + type: string + style: form + explode: false + allowReserved: false + example: '{"active":"cntSoldItems","direction":"desc","listColDefinition":{"field":"cntSoldItems","sortingSubResource":"tradePileItems","countSortSubresource":true,"countSortSubresourceValue":["closed"],"countSortSubresourceField":"tradeState","countSortFilterSubResource":"account","countSortFilterSubresourceField":"tmOpen","countSortFilterSubresourceValue":"0"}}' + deprecated: false + parameters: [] + '/api/log_account_sold_items/{id}': + get: + operationId: api_log_account_sold_items_id_get + tags: + - LogAccountSoldItem + responses: + 200: + description: 'LogAccountSoldItem resource' + content: + application/ld+json: + schema: + $ref: '#/components/schemas/LogAccountSoldItem.jsonld' + 404: + description: 'Resource not found' + summary: 'Retrieves a LogAccountSoldItem resource.' + description: 'Retrieves a LogAccountSoldItem resource.' + parameters: + - + name: id + in: path + description: 'LogAccountSoldItem identifier' + required: true + deprecated: false + allowEmptyValue: false + schema: + type: string + style: simple + explode: false + allowReserved: false + deprecated: false + parameters: [] + /api/log_generals: + get: + operationId: api_log_generals_get_collection + tags: + - LogGeneral + responses: + 200: + description: 'LogGeneral collection' + content: + application/ld+json: + schema: + type: object + properties: + 'hydra:member': { type: array, items: { $ref: '#/components/schemas/LogGeneral.jsonld' } } + 'hydra:totalItems': { type: integer, minimum: 0 } + 'hydra:view': { type: object, properties: { '@id': { type: string, format: iri-reference }, '@type': { type: string }, 'hydra:first': { type: string, format: iri-reference }, 'hydra:last': { type: string, format: iri-reference }, 'hydra:previous': { type: string, format: iri-reference }, 'hydra:next': { type: string, format: iri-reference } }, example: { '@id': string, type: string, 'hydra:first': string, 'hydra:last': string, 'hydra:previous': string, 'hydra:next': string } } + 'hydra:search': { type: object, properties: { '@type': { type: string }, 'hydra:template': { type: string }, 'hydra:variableRepresentation': { type: string }, 'hydra:mapping': { type: array, items: { type: object, properties: { '@type': { type: string }, variable: { type: string }, property: { type: [string, 'null'] }, required: { type: boolean } } } } } } + required: + - 'hydra:member' + summary: 'Retrieves the collection of LogGeneral resources.' + description: 'Retrieves the collection of LogGeneral resources.' + parameters: + - + name: page + in: query + description: 'The collection page number' + required: false + deprecated: false + allowEmptyValue: true + schema: + type: integer + default: 1 + style: form + explode: false + allowReserved: false + - + name: itemsPerPage + in: query + description: 'The number of items per page' + required: false + deprecated: false + allowEmptyValue: true + schema: + type: integer + default: 50 + minimum: 0 + maximum: 100 + style: form + explode: false + allowReserved: false + - + name: gameAccountProfile + in: query + description: '' + required: false + deprecated: false + allowEmptyValue: true + schema: + type: string + style: form + explode: false + allowReserved: false + - + name: custom_json_filter + in: query + description: '' + required: false + deprecated: false + allowEmptyValue: true + schema: + type: string + style: form + explode: false + allowReserved: false + - + name: custom_json_order + in: query + description: '' + required: false + deprecated: false + allowEmptyValue: true + schema: + type: string + style: form + explode: false + allowReserved: false + example: '{"active":"cntSoldItems","direction":"desc","listColDefinition":{"field":"cntSoldItems","sortingSubResource":"tradePileItems","countSortSubresource":true,"countSortSubresourceValue":["closed"],"countSortSubresourceField":"tradeState","countSortFilterSubResource":"account","countSortFilterSubresourceField":"tmOpen","countSortFilterSubresourceValue":"0"}}' + deprecated: false + parameters: [] + '/api/log_generals/{id}': + get: + operationId: api_log_generals_id_get + tags: + - LogGeneral + responses: + 200: + description: 'LogGeneral resource' + content: + application/ld+json: + schema: + $ref: '#/components/schemas/LogGeneral.jsonld' + 404: + description: 'Resource not found' + summary: 'Retrieves a LogGeneral resource.' + description: 'Retrieves a LogGeneral resource.' + parameters: + - + name: id + in: path + description: 'LogGeneral identifier' + required: true + deprecated: false + allowEmptyValue: false + schema: + type: string + style: simple + explode: false + allowReserved: false + deprecated: false + parameters: [] + /api/log_total_profits: + get: + operationId: api_log_total_profits_get_collection + tags: + - LogTotalProfit + responses: + 200: + description: 'LogTotalProfit collection' + content: + application/ld+json: + schema: + type: object + properties: + 'hydra:member': { type: array, items: { $ref: '#/components/schemas/LogTotalProfit.jsonld' } } + 'hydra:totalItems': { type: integer, minimum: 0 } + 'hydra:view': { type: object, properties: { '@id': { type: string, format: iri-reference }, '@type': { type: string }, 'hydra:first': { type: string, format: iri-reference }, 'hydra:last': { type: string, format: iri-reference }, 'hydra:previous': { type: string, format: iri-reference }, 'hydra:next': { type: string, format: iri-reference } }, example: { '@id': string, type: string, 'hydra:first': string, 'hydra:last': string, 'hydra:previous': string, 'hydra:next': string } } + 'hydra:search': { type: object, properties: { '@type': { type: string }, 'hydra:template': { type: string }, 'hydra:variableRepresentation': { type: string }, 'hydra:mapping': { type: array, items: { type: object, properties: { '@type': { type: string }, variable: { type: string }, property: { type: [string, 'null'] }, required: { type: boolean } } } } } } + required: + - 'hydra:member' + summary: 'Retrieves the collection of LogTotalProfit resources.' + description: 'Retrieves the collection of LogTotalProfit resources.' + parameters: + - + name: page + in: query + description: 'The collection page number' + required: false + deprecated: false + allowEmptyValue: true + schema: + type: integer + default: 1 + style: form + explode: false + allowReserved: false + - + name: itemsPerPage + in: query + description: 'The number of items per page' + required: false + deprecated: false + allowEmptyValue: true + schema: + type: integer + default: 50 + minimum: 0 + maximum: 100 + style: form + explode: false + allowReserved: false + deprecated: false + post: + operationId: api_log_total_profits_post + tags: + - LogTotalProfit + responses: + 201: + description: 'LogTotalProfit resource created' + content: + application/ld+json: + schema: + $ref: '#/components/schemas/LogTotalProfit.jsonld' + links: { } + 400: + description: 'Invalid input' + 422: + description: 'Unprocessable entity' + summary: 'Creates a LogTotalProfit resource.' + description: 'Creates a LogTotalProfit resource.' + parameters: [] + requestBody: + description: 'The new LogTotalProfit resource' + content: + application/ld+json: + schema: + $ref: '#/components/schemas/LogTotalProfit.jsonld' + required: true + deprecated: false + parameters: [] + '/api/log_total_profits/{id}': + get: + operationId: api_log_total_profits_id_get + tags: + - LogTotalProfit + responses: + 200: + description: 'LogTotalProfit resource' + content: + application/ld+json: + schema: + $ref: '#/components/schemas/LogTotalProfit.jsonld' + 404: + description: 'Resource not found' + summary: 'Retrieves a LogTotalProfit resource.' + description: 'Retrieves a LogTotalProfit resource.' + parameters: + - + name: id + in: path + description: 'LogTotalProfit identifier' + required: true + deprecated: false + allowEmptyValue: false + schema: + type: string + style: simple + explode: false + allowReserved: false + deprecated: false + patch: + operationId: api_log_total_profits_id_patch + tags: + - LogTotalProfit + responses: + 200: + description: 'LogTotalProfit resource updated' + content: + application/ld+json: + schema: + $ref: '#/components/schemas/LogTotalProfit.jsonld' + links: { } + 400: + description: 'Invalid input' + 422: + description: 'Unprocessable entity' + 404: + description: 'Resource not found' + summary: 'Updates the LogTotalProfit resource.' + description: 'Updates the LogTotalProfit resource.' + parameters: + - + name: id + in: path + description: 'LogTotalProfit identifier' + required: true + deprecated: false + allowEmptyValue: false + schema: + type: string + style: simple + explode: false + allowReserved: false + requestBody: + description: 'The updated LogTotalProfit resource' + content: + application/merge-patch+json: + schema: + $ref: '#/components/schemas/LogTotalProfit' + required: true + deprecated: false + parameters: [] + /api/media_objects: + get: + operationId: api_media_objects_get_collection + tags: + - MediaObject + responses: + 200: + description: 'MediaObject collection' + content: + application/ld+json: + schema: + type: object + properties: + 'hydra:member': { type: array, items: { $ref: '#/components/schemas/MediaObject.jsonld-media_object.read' } } + 'hydra:totalItems': { type: integer, minimum: 0 } + 'hydra:view': { type: object, properties: { '@id': { type: string, format: iri-reference }, '@type': { type: string }, 'hydra:first': { type: string, format: iri-reference }, 'hydra:last': { type: string, format: iri-reference }, 'hydra:previous': { type: string, format: iri-reference }, 'hydra:next': { type: string, format: iri-reference } }, example: { '@id': string, type: string, 'hydra:first': string, 'hydra:last': string, 'hydra:previous': string, 'hydra:next': string } } + 'hydra:search': { type: object, properties: { '@type': { type: string }, 'hydra:template': { type: string }, 'hydra:variableRepresentation': { type: string }, 'hydra:mapping': { type: array, items: { type: object, properties: { '@type': { type: string }, variable: { type: string }, property: { type: [string, 'null'] }, required: { type: boolean } } } } } } + required: + - 'hydra:member' + summary: 'Retrieves the collection of MediaObject resources.' + description: 'Retrieves the collection of MediaObject resources.' + parameters: + - + name: page + in: query + description: 'The collection page number' + required: false + deprecated: false + allowEmptyValue: true + schema: + type: integer + default: 1 + style: form + explode: false + allowReserved: false + - + name: itemsPerPage + in: query + description: 'The number of items per page' + required: false + deprecated: false + allowEmptyValue: true + schema: + type: integer + default: 50 + minimum: 0 + maximum: 100 + style: form + explode: false + allowReserved: false + deprecated: false + post: + operationId: api_media_objects_post + tags: + - MediaObject + responses: + 201: + description: 'MediaObject resource created' + content: + application/ld+json: + schema: + $ref: '#/components/schemas/MediaObject.jsonld-media_object.read' + links: { } + 400: + description: 'Invalid input' + 422: + description: 'Unprocessable entity' + summary: 'Creates a MediaObject resource.' + description: 'Creates a MediaObject resource.' + parameters: [] + requestBody: + description: '' + content: + multipart/form-data: + schema: + type: object + properties: + file: + type: string + format: binary + required: false + deprecated: false + parameters: [] + '/api/media_objects/{id}': + get: + operationId: api_media_objects_id_get + tags: + - MediaObject + responses: + 200: + description: 'MediaObject resource' + content: + application/ld+json: + schema: + $ref: '#/components/schemas/MediaObject.jsonld-media_object.read' + 404: + description: 'Resource not found' + summary: 'Retrieves a MediaObject resource.' + description: 'Retrieves a MediaObject resource.' + parameters: + - + name: id + in: path + description: 'MediaObject identifier' + required: true + deprecated: false + allowEmptyValue: false + schema: + type: string + style: simple + explode: false + allowReserved: false + deprecated: false + delete: + operationId: api_media_objects_id_delete + tags: + - MediaObject + responses: + 204: + description: 'MediaObject resource deleted' + 404: + description: 'Resource not found' + summary: 'Removes the MediaObject resource.' + description: 'Removes the MediaObject resource.' + parameters: + - + name: id + in: path + description: 'MediaObject identifier' + required: true + deprecated: false + allowEmptyValue: false + schema: + type: string + style: simple + explode: false + allowReserved: false + deprecated: false + parameters: [] + /api/mode_config: + get: + operationId: api_mode_config_get + tags: + - ModeConfig + responses: + 200: + description: 'ModeConfig resource' + content: + application/ld+json: + schema: + $ref: '#/components/schemas/ModeConfig.jsonld' + 404: + description: 'Resource not found' + summary: 'Retrieves a ModeConfig resource.' + description: 'Retrieves a ModeConfig resource.' + parameters: [] + deprecated: false + patch: + operationId: api_mode_config_patch + tags: + - ModeConfig + responses: + 200: + description: 'ModeConfig resource updated' + content: + application/ld+json: + schema: + $ref: '#/components/schemas/ModeConfig.jsonld' + links: { } + 400: + description: 'Invalid input' + 422: + description: 'Unprocessable entity' + 404: + description: 'Resource not found' + summary: 'Updates the ModeConfig resource.' + description: 'Updates the ModeConfig resource.' + parameters: [] + requestBody: + description: 'The updated ModeConfig resource' + content: + application/merge-patch+json: + schema: + $ref: '#/components/schemas/ModeConfig' + required: true + deprecated: false + parameters: [] + /api/players: + get: + operationId: api_players_get_collection + tags: + - Player + responses: + 200: + description: 'Player collection' + content: + application/ld+json: + schema: + type: object + properties: + 'hydra:member': { type: array, items: { $ref: '#/components/schemas/Player.jsonld' } } + 'hydra:totalItems': { type: integer, minimum: 0 } + 'hydra:view': { type: object, properties: { '@id': { type: string, format: iri-reference }, '@type': { type: string }, 'hydra:first': { type: string, format: iri-reference }, 'hydra:last': { type: string, format: iri-reference }, 'hydra:previous': { type: string, format: iri-reference }, 'hydra:next': { type: string, format: iri-reference } }, example: { '@id': string, type: string, 'hydra:first': string, 'hydra:last': string, 'hydra:previous': string, 'hydra:next': string } } + 'hydra:search': { type: object, properties: { '@type': { type: string }, 'hydra:template': { type: string }, 'hydra:variableRepresentation': { type: string }, 'hydra:mapping': { type: array, items: { type: object, properties: { '@type': { type: string }, variable: { type: string }, property: { type: [string, 'null'] }, required: { type: boolean } } } } } } + required: + - 'hydra:member' + summary: 'Retrieves the collection of Player resources.' + description: 'Retrieves the collection of Player resources.' + parameters: + - + name: page + in: query + description: 'The collection page number' + required: false + deprecated: false + allowEmptyValue: true + schema: + type: integer + default: 1 + style: form + explode: false + allowReserved: false + - + name: itemsPerPage + in: query + description: 'The number of items per page' + required: false + deprecated: false + allowEmptyValue: true + schema: + type: integer + default: 50 + minimum: 0 + maximum: 100 + style: form + explode: false + allowReserved: false + - + name: custom_json_order + in: query + description: '' + required: false + deprecated: false + allowEmptyValue: true + schema: + type: string + style: form + explode: false + allowReserved: false + example: '{"active":"cntSoldItems","direction":"desc","listColDefinition":{"field":"cntSoldItems","sortingSubResource":"tradePileItems","countSortSubresource":true,"countSortSubresourceValue":["closed"],"countSortSubresourceField":"tradeState","countSortFilterSubResource":"account","countSortFilterSubresourceField":"tmOpen","countSortFilterSubresourceValue":"0"}}' + deprecated: false + post: + operationId: api_players_post + tags: + - Player + responses: + 201: + description: 'Player resource created' + content: + application/ld+json: + schema: + $ref: '#/components/schemas/Player.jsonld' + links: { } + 400: + description: 'Invalid input' + 422: + description: 'Unprocessable entity' + summary: 'Creates a Player resource.' + description: 'Creates a Player resource.' + parameters: [] + requestBody: + description: 'The new Player resource' + content: + application/ld+json: + schema: + $ref: '#/components/schemas/Player.jsonld' + required: true + deprecated: false + parameters: [] + '/api/players/{id}': + get: + operationId: api_players_id_get + tags: + - Player + responses: + 200: + description: 'Player resource' + content: + application/ld+json: + schema: + $ref: '#/components/schemas/Player.jsonld' + 404: + description: 'Resource not found' + summary: 'Retrieves a Player resource.' + description: 'Retrieves a Player resource.' + parameters: + - + name: id + in: path + description: 'Player identifier' + required: true + deprecated: false + allowEmptyValue: false + schema: + type: string + style: simple + explode: false + allowReserved: false + deprecated: false + patch: + operationId: api_players_id_patch + tags: + - Player + responses: + 200: + description: 'Player resource updated' + content: + application/ld+json: + schema: + $ref: '#/components/schemas/Player.jsonld' + links: { } + 400: + description: 'Invalid input' + 422: + description: 'Unprocessable entity' + 404: + description: 'Resource not found' + summary: 'Updates the Player resource.' + description: 'Updates the Player resource.' + parameters: + - + name: id + in: path + description: 'Player identifier' + required: true + deprecated: false + allowEmptyValue: false + schema: + type: string + style: simple + explode: false + allowReserved: false + requestBody: + description: 'The updated Player resource' + content: + application/merge-patch+json: + schema: + $ref: '#/components/schemas/Player' + required: true + deprecated: false + parameters: [] + /api/rarities: + get: + operationId: api_rarities_get_collection + tags: + - Rarity + responses: + 200: + description: 'Rarity collection' + content: + application/ld+json: + schema: + type: object + properties: + 'hydra:member': { type: array, items: { $ref: '#/components/schemas/Rarity.jsonld' } } + 'hydra:totalItems': { type: integer, minimum: 0 } + 'hydra:view': { type: object, properties: { '@id': { type: string, format: iri-reference }, '@type': { type: string }, 'hydra:first': { type: string, format: iri-reference }, 'hydra:last': { type: string, format: iri-reference }, 'hydra:previous': { type: string, format: iri-reference }, 'hydra:next': { type: string, format: iri-reference } }, example: { '@id': string, type: string, 'hydra:first': string, 'hydra:last': string, 'hydra:previous': string, 'hydra:next': string } } + 'hydra:search': { type: object, properties: { '@type': { type: string }, 'hydra:template': { type: string }, 'hydra:variableRepresentation': { type: string }, 'hydra:mapping': { type: array, items: { type: object, properties: { '@type': { type: string }, variable: { type: string }, property: { type: [string, 'null'] }, required: { type: boolean } } } } } } + required: + - 'hydra:member' + summary: 'Retrieves the collection of Rarity resources.' + description: 'Retrieves the collection of Rarity resources.' + parameters: + - + name: page + in: query + description: 'The collection page number' + required: false + deprecated: false + allowEmptyValue: true + schema: + type: integer + default: 1 + style: form + explode: false + allowReserved: false + - + name: itemsPerPage + in: query + description: 'The number of items per page' + required: false + deprecated: false + allowEmptyValue: true + schema: + type: integer + default: 50 + minimum: 0 + maximum: 100 + style: form + explode: false + allowReserved: false + - + name: custom_json_order + in: query + description: '' + required: false + deprecated: false + allowEmptyValue: true + schema: + type: string + style: form + explode: false + allowReserved: false + example: '{"active":"cntSoldItems","direction":"desc","listColDefinition":{"field":"cntSoldItems","sortingSubResource":"tradePileItems","countSortSubresource":true,"countSortSubresourceValue":["closed"],"countSortSubresourceField":"tradeState","countSortFilterSubResource":"account","countSortFilterSubresourceField":"tmOpen","countSortFilterSubresourceValue":"0"}}' + deprecated: false + post: + operationId: api_rarities_post + tags: + - Rarity + responses: + 201: + description: 'Rarity resource created' + content: + application/ld+json: + schema: + $ref: '#/components/schemas/Rarity.jsonld' + links: { } + 400: + description: 'Invalid input' + 422: + description: 'Unprocessable entity' + summary: 'Creates a Rarity resource.' + description: 'Creates a Rarity resource.' + parameters: [] + requestBody: + description: 'The new Rarity resource' + content: + application/ld+json: + schema: + $ref: '#/components/schemas/Rarity.jsonld' + required: true + deprecated: false + parameters: [] + '/api/rarities/{id}': + get: + operationId: api_rarities_id_get + tags: + - Rarity + responses: + 200: + description: 'Rarity resource' + content: + application/ld+json: + schema: + $ref: '#/components/schemas/Rarity.jsonld' + 404: + description: 'Resource not found' + summary: 'Retrieves a Rarity resource.' + description: 'Retrieves a Rarity resource.' + parameters: + - + name: id + in: path + description: 'Rarity identifier' + required: true + deprecated: false + allowEmptyValue: false + schema: + type: string + style: simple + explode: false + allowReserved: false + deprecated: false + patch: + operationId: api_rarities_id_patch + tags: + - Rarity + responses: + 200: + description: 'Rarity resource updated' + content: + application/ld+json: + schema: + $ref: '#/components/schemas/Rarity.jsonld' + links: { } + 400: + description: 'Invalid input' + 422: + description: 'Unprocessable entity' + 404: + description: 'Resource not found' + summary: 'Updates the Rarity resource.' + description: 'Updates the Rarity resource.' + parameters: + - + name: id + in: path + description: 'Rarity identifier' + required: true + deprecated: false + allowEmptyValue: false + schema: + type: string + style: simple + explode: false + allowReserved: false + requestBody: + description: 'The updated Rarity resource' + content: + application/merge-patch+json: + schema: + $ref: '#/components/schemas/Rarity' + required: true + deprecated: false + parameters: [] + /api/system_stats: + get: + operationId: api_system_stats_get + tags: + - SystemStat + responses: + 200: + description: 'SystemStat resource' + content: + application/ld+json: + schema: + $ref: '#/components/schemas/SystemStat.jsonld' + 404: + description: 'Resource not found' + summary: 'Retrieves a SystemStat resource.' + description: 'Retrieves a SystemStat resource.' + parameters: [] + deprecated: false + parameters: [] + /api/users: + get: + operationId: api_users_get_collection + tags: + - User + responses: + 200: + description: 'User collection' + content: + application/ld+json: + schema: + type: object + properties: + 'hydra:member': { type: array, items: { $ref: '#/components/schemas/User.jsonld' } } + 'hydra:totalItems': { type: integer, minimum: 0 } + 'hydra:view': { type: object, properties: { '@id': { type: string, format: iri-reference }, '@type': { type: string }, 'hydra:first': { type: string, format: iri-reference }, 'hydra:last': { type: string, format: iri-reference }, 'hydra:previous': { type: string, format: iri-reference }, 'hydra:next': { type: string, format: iri-reference } }, example: { '@id': string, type: string, 'hydra:first': string, 'hydra:last': string, 'hydra:previous': string, 'hydra:next': string } } + 'hydra:search': { type: object, properties: { '@type': { type: string }, 'hydra:template': { type: string }, 'hydra:variableRepresentation': { type: string }, 'hydra:mapping': { type: array, items: { type: object, properties: { '@type': { type: string }, variable: { type: string }, property: { type: [string, 'null'] }, required: { type: boolean } } } } } } + required: + - 'hydra:member' + summary: 'Retrieves the collection of User resources.' + description: 'Retrieves the collection of User resources.' + parameters: + - + name: page + in: query + description: 'The collection page number' + required: false + deprecated: false + allowEmptyValue: true + schema: + type: integer + default: 1 + style: form + explode: false + allowReserved: false + - + name: itemsPerPage + in: query + description: 'The number of items per page' + required: false + deprecated: false + allowEmptyValue: true + schema: + type: integer + default: 50 + minimum: 0 + maximum: 100 + style: form + explode: false + allowReserved: false + - + name: firstName + in: query + description: '' + required: false + deprecated: false + allowEmptyValue: true + schema: + type: string + style: form + explode: false + allowReserved: false + - + name: lastName + in: query + description: '' + required: false + deprecated: false + allowEmptyValue: true + schema: + type: string + style: form + explode: false + allowReserved: false + - + name: userNameSearch + in: query + description: '' + required: false + deprecated: false + allowEmptyValue: true + schema: + type: string + style: form + explode: false + allowReserved: false + - + name: custom_json_order + in: query + description: '' + required: false + deprecated: false + allowEmptyValue: true + schema: + type: string + style: form + explode: false + allowReserved: false + example: '{"active":"cntSoldItems","direction":"desc","listColDefinition":{"field":"cntSoldItems","sortingSubResource":"tradePileItems","countSortSubresource":true,"countSortSubresourceValue":["closed"],"countSortSubresourceField":"tradeState","countSortFilterSubResource":"account","countSortFilterSubresourceField":"tmOpen","countSortFilterSubresourceValue":"0"}}' + deprecated: false + post: + operationId: api_users_post + tags: + - User + responses: + 201: + description: 'User resource created' + content: + application/ld+json: + schema: + $ref: '#/components/schemas/User.jsonld' + links: { } + 400: + description: 'Invalid input' + 422: + description: 'Unprocessable entity' + summary: 'Creates a User resource.' + description: 'Creates a User resource.' + parameters: [] + requestBody: + description: 'The new User resource' + content: + application/ld+json: + schema: + $ref: '#/components/schemas/User.jsonld' + required: true + deprecated: false + parameters: [] + '/api/users/{id}': + get: + operationId: api_users_id_get + tags: + - User + responses: + 200: + description: 'User resource' + content: + application/ld+json: + schema: + $ref: '#/components/schemas/User.jsonld' + 404: + description: 'Resource not found' + summary: 'Retrieves a User resource.' + description: 'Retrieves a User resource.' + parameters: + - + name: id + in: path + description: 'User identifier' + required: true + deprecated: false + allowEmptyValue: false + schema: + type: string + style: simple + explode: false + allowReserved: false + deprecated: false + parameters: [] +components: + schemas: + AccountTradePileItem: + type: object + description: '' + deprecated: false + properties: + dbId: + readOnly: true + type: + - integer + - 'null' + account: + readOnly: true + type: string + format: iri-reference + example: 'https://example.com/' + candidateItem: + readOnly: true + type: string + format: iri-reference + example: 'https://example.com/' + eaId: + readOnly: true + type: integer + eaAssetId: + readOnly: true + type: integer + eaResourceId: + readOnly: true + type: integer + rareFlag: + readOnly: true + type: integer + itemType: + readOnly: true + type: string + rating: + readOnly: true + type: integer + contracts: + readOnly: true + type: + - integer + - 'null' + playStyle: + readOnly: true + type: + - integer + - 'null' + startingBid: + type: integer + binPrice: + type: integer + individualPrice: + default: true + example: true + type: boolean + minRange: + readOnly: true + type: integer + maxRange: + readOnly: true + type: integer + lastSalePrice: + readOnly: true + type: integer + tradeState: + readOnly: true + type: + - string + - 'null' + eaTradeId: + readOnly: true + type: + - integer + - 'null' + rebuy: + readOnly: true + default: true + example: true + type: boolean + leagueId: + readOnly: true + type: + - integer + - 'null' + teamId: + readOnly: true + type: + - integer + - 'null' + nationId: + readOnly: true + type: + - integer + - 'null' + listCnt: + readOnly: true + type: integer + openBidCnt: + readOnly: true + type: + - integer + - 'null' + snipedItem: + readOnly: true + default: true + example: true + type: boolean + marketAverage: + readOnly: true + type: + - integer + - 'null' + creationDate: + readOnly: true + type: string + format: date-time + AccountTradePileItem.jsonld: + type: object + description: '' + deprecated: false + properties: + '@context': + readOnly: true + oneOf: + - + type: string + - + type: object + properties: + '@vocab': + type: string + hydra: + type: string + enum: ['http://www.w3.org/ns/hydra/core#'] + required: + - '@vocab' + - hydra + additionalProperties: true + '@id': + readOnly: true + type: string + '@type': + readOnly: true + type: string + dbId: + readOnly: true + type: + - integer + - 'null' + account: + readOnly: true + $ref: '#/components/schemas/GameAccount.jsonld' + candidateItem: + readOnly: true + $ref: '#/components/schemas/Candidate.jsonld' + eaId: + readOnly: true + type: integer + eaAssetId: + readOnly: true + type: integer + eaResourceId: + readOnly: true + type: integer + rareFlag: + readOnly: true + type: integer + itemType: + readOnly: true + type: string + rating: + readOnly: true + type: integer + contracts: + readOnly: true + type: + - integer + - 'null' + playStyle: + readOnly: true + type: + - integer + - 'null' + startingBid: + type: integer + binPrice: + type: integer + individualPrice: + default: true + example: true + type: boolean + minRange: + readOnly: true + type: integer + maxRange: + readOnly: true + type: integer + lastSalePrice: + readOnly: true + type: integer + tradeState: + readOnly: true + type: + - string + - 'null' + eaTradeId: + readOnly: true + type: + - integer + - 'null' + rebuy: + readOnly: true + default: true + example: true + type: boolean + leagueId: + readOnly: true + type: + - integer + - 'null' + teamId: + readOnly: true + type: + - integer + - 'null' + nationId: + readOnly: true + type: + - integer + - 'null' + listCnt: + readOnly: true + type: integer + openBidCnt: + readOnly: true + type: + - integer + - 'null' + snipedItem: + readOnly: true + default: true + example: true + type: boolean + marketAverage: + readOnly: true + type: + - integer + - 'null' + creationDate: + readOnly: true + type: string + format: date-time + Candidate: + type: object + description: '' + deprecated: false + properties: + dbId: + readOnly: true + type: + - integer + - 'null' + rarity: + readOnly: true + type: string + format: iri-reference + example: 'https://example.com/' + candidateStat: + readOnly: true + type: string + format: iri-reference + example: 'https://example.com/' + player: + readOnly: true + type: string + format: iri-reference + example: 'https://example.com/' + firstname: + readOnly: true + type: + - string + - 'null' + lastname: + readOnly: true + type: + - string + - 'null' + nickname: + readOnly: true + type: + - string + - 'null' + fullDisplayInfo: + readOnly: true + type: + - string + - 'null' + eaAssetId: + readOnly: true + type: + - integer + - 'null' + eaResourceId: + readOnly: true + type: + - integer + - 'null' + rareFlag: + readOnly: true + type: + - integer + - 'null' + rarityName: + readOnly: true + type: + - string + - 'null' + image: + readOnly: true + type: + - string + - 'null' + format: iri-reference + example: 'https://example.com/' + imageUrl: + readOnly: true + type: + - string + - 'null' + cardImageUrl: + readOnly: true + type: + - string + - 'null' + stockCountTotal: + readOnly: true + type: + - integer + - 'null' + stockCountReal: + readOnly: true + type: + - integer + - 'null' + futBinId: + type: + - integer + - 'null' + futBinName: + type: + - string + - 'null' + futBinPrice: + type: + - integer + - 'null' + futBinSellingPrice: + type: + - integer + - 'null' + lastFutBinUpdate: + readOnly: true + type: + - string + - 'null' + format: date-time + futWizId: + type: + - integer + - 'null' + futWizPrice: + type: + - integer + - 'null' + futwizName: + type: + - string + - 'null' + futWizSellingPrice: + type: + - integer + - 'null' + lastFutWizUpdate: + readOnly: true + type: + - string + - 'null' + format: date-time + rating: + type: + - integer + - 'null' + highestBuyBinPrice: + type: + - integer + - 'null' + sellStartingBid: + type: + - integer + - 'null' + sellBinPrice: + type: + - integer + - 'null' + lastFoundMinRange: + type: + - integer + - 'null' + lastFoundMaxRange: + type: + - integer + - 'null' + lastFoundLowestBin: + type: + - integer + - 'null' + lowestBinUpdateDate: + readOnly: true + type: + - string + - 'null' + format: date-time + buy: + type: + - boolean + - 'null' + maxBuyPrice: + type: + - integer + - 'null' + buyStyle: + type: + - integer + - 'null' + newBuySelective: + type: + - boolean + - 'null' + remove: + type: + - boolean + - 'null' + leagueId: + type: + - integer + - 'null' + nationId: + type: + - integer + - 'null' + prio: + type: + - integer + - 'null' + listCnt: + type: + - integer + - 'null' + soldCnt: + type: + - integer + - 'null' + note: + type: + - string + - 'null' + relevant: + type: + - boolean + - 'null' + adjust100: + type: + - boolean + - 'null' + directReBuy: + type: + - boolean + - 'null' + marketAverage: + readOnly: true + type: + - integer + - 'null' + creationDate: + readOnly: true + type: + - string + - 'null' + format: date-time + required: + - eaAssetId + - eaResourceId + - rareFlag + - rating + - buy + - buyStyle + - newBuySelective + - remove + - listCnt + - soldCnt + - relevant + - adjust100 + - directReBuy + - creationDate + Candidate.jsonld: + type: object + description: '' + deprecated: false + properties: + '@context': + readOnly: true + oneOf: + - + type: string + - + type: object + properties: + '@vocab': + type: string + hydra: + type: string + enum: ['http://www.w3.org/ns/hydra/core#'] + required: + - '@vocab' + - hydra + additionalProperties: true + '@id': + readOnly: true + type: string + '@type': + readOnly: true + type: string + dbId: + readOnly: true + type: + - integer + - 'null' + rarity: + readOnly: true + $ref: '#/components/schemas/Rarity.jsonld' + candidateStat: + readOnly: true + $ref: '#/components/schemas/CandidateStat.jsonld' + player: + readOnly: true + $ref: '#/components/schemas/Player.jsonld' + firstname: + readOnly: true + type: + - string + - 'null' + lastname: + readOnly: true + type: + - string + - 'null' + nickname: + readOnly: true + type: + - string + - 'null' + fullDisplayInfo: + readOnly: true + type: + - string + - 'null' + eaAssetId: + readOnly: true + type: + - integer + - 'null' + eaResourceId: + readOnly: true + type: + - integer + - 'null' + rareFlag: + readOnly: true + type: + - integer + - 'null' + rarityName: + readOnly: true + type: + - string + - 'null' + image: + readOnly: true + type: + - string + - 'null' + format: iri-reference + example: 'https://example.com/' + imageUrl: + readOnly: true + type: + - string + - 'null' + cardImageUrl: + readOnly: true + type: + - string + - 'null' + stockCountTotal: + readOnly: true + type: + - integer + - 'null' + stockCountReal: + readOnly: true + type: + - integer + - 'null' + futBinId: + type: + - integer + - 'null' + futBinName: + type: + - string + - 'null' + futBinPrice: + type: + - integer + - 'null' + futBinSellingPrice: + type: + - integer + - 'null' + lastFutBinUpdate: + readOnly: true + type: + - string + - 'null' + format: date-time + futWizId: + type: + - integer + - 'null' + futWizPrice: + type: + - integer + - 'null' + futwizName: + type: + - string + - 'null' + futWizSellingPrice: + type: + - integer + - 'null' + lastFutWizUpdate: + readOnly: true + type: + - string + - 'null' + format: date-time + rating: + type: + - integer + - 'null' + highestBuyBinPrice: + type: + - integer + - 'null' + sellStartingBid: + type: + - integer + - 'null' + sellBinPrice: + type: + - integer + - 'null' + lastFoundMinRange: + type: + - integer + - 'null' + lastFoundMaxRange: + type: + - integer + - 'null' + lastFoundLowestBin: + type: + - integer + - 'null' + lowestBinUpdateDate: + readOnly: true + type: + - string + - 'null' + format: date-time + buy: + type: + - boolean + - 'null' + maxBuyPrice: + type: + - integer + - 'null' + buyStyle: + type: + - integer + - 'null' + newBuySelective: + type: + - boolean + - 'null' + remove: + type: + - boolean + - 'null' + leagueId: + type: + - integer + - 'null' + nationId: + type: + - integer + - 'null' + prio: + type: + - integer + - 'null' + listCnt: + type: + - integer + - 'null' + soldCnt: + type: + - integer + - 'null' + note: + type: + - string + - 'null' + relevant: + type: + - boolean + - 'null' + adjust100: + type: + - boolean + - 'null' + directReBuy: + type: + - boolean + - 'null' + marketAverage: + readOnly: true + type: + - integer + - 'null' + creationDate: + readOnly: true + type: + - string + - 'null' + format: date-time + required: + - eaAssetId + - eaResourceId + - rareFlag + - rating + - buy + - buyStyle + - newBuySelective + - remove + - listCnt + - soldCnt + - relevant + - adjust100 + - directReBuy + - creationDate + CandidateStat.jsonld: + type: object + description: '' + deprecated: false + properties: + '@id': + readOnly: true + type: string + '@type': + readOnly: true + type: string + '@context': + readOnly: true + oneOf: + - + type: string + - + type: object + properties: + '@vocab': + type: string + hydra: + type: string + enum: ['http://www.w3.org/ns/hydra/core#'] + required: + - '@vocab' + - hydra + additionalProperties: true + candidateItem: + readOnly: true + $ref: '#/components/schemas/Candidate.jsonld' + revRl6: + type: number + rl6: + type: integer + sold6: + type: integer + rat6: + type: number + rev6: + type: integer + revRl12: + type: number + rl12: + type: integer + sold12: + type: integer + rat12: + type: number + rev12: + type: integer + revRl24: + type: number + rl24: + type: integer + sold24: + type: integer + rat24: + type: number + rev24: + type: integer + revRl3d: + type: number + rl3d: + type: integer + sold3d: + type: integer + rat3d: + type: number + rev3d: + type: integer + revRl1w: + type: number + rl1w: + type: integer + sold1w: + type: integer + rat1w: + type: number + rev1w: + type: integer + revRl2w: + type: number + rl2w: + type: integer + sold2w: + type: integer + rat2w: + type: number + rev2w: + type: integer + revRl3w: + type: number + rl3w: + type: integer + sold3w: + type: integer + rat3w: + type: number + rev3w: + type: integer + revRl4w: + type: number + rl4w: + type: integer + sold4w: + type: integer + rat4w: + type: number + rev4w: + type: integer + revRl: + type: number + rl: + type: integer + sold: + type: integer + rat: + type: number + rev: + type: integer + snipingRev: + type: integer + creationDate: + readOnly: true + type: + - string + - 'null' + format: date-time + lastUpdateDate: + readOnly: true + type: + - string + - 'null' + format: date-time + CandidateStockAccounts.jsonld: + type: object + description: '' + deprecated: false + properties: + '@context': + readOnly: true + oneOf: + - + type: string + - + type: object + properties: + '@vocab': + type: string + hydra: + type: string + enum: ['http://www.w3.org/ns/hydra/core#'] + required: + - '@vocab' + - hydra + additionalProperties: true + '@id': + readOnly: true + type: string + '@type': + readOnly: true + type: string + candidatesStockAccounts: + type: array + items: + $ref: '#/components/schemas/GameAccount.jsonld' + candidatesMissingAccounts: + type: array + items: + $ref: '#/components/schemas/GameAccount.jsonld' + Config: + type: object + description: '' + deprecated: false + properties: + systemActive: + type: boolean + systemRunning: + type: boolean + lastUpdateDate: + readOnly: true + type: string + format: date-time + lastCheckDate: + readOnly: true + type: string + format: date-time + processCnt: + readOnly: true + type: integer + sleepHourStart: + minimum: 0 + maximum: 23 + type: + - integer + - 'null' + sleepHourEnd: + minimum: 0 + maximum: 23 + type: + - integer + - 'null' + checkMaxSales: + type: boolean + numMaxSales: + minimum: 0 + maximum: 20 + type: + - integer + - 'null' + Config.jsonld: + type: object + description: '' + deprecated: false + properties: + '@context': + readOnly: true + oneOf: + - + type: string + - + type: object + properties: + '@vocab': + type: string + hydra: + type: string + enum: ['http://www.w3.org/ns/hydra/core#'] + required: + - '@vocab' + - hydra + additionalProperties: true + '@id': + readOnly: true + type: string + '@type': + readOnly: true + type: string + systemActive: + type: boolean + systemRunning: + type: boolean + lastUpdateDate: + readOnly: true + type: string + format: date-time + lastCheckDate: + readOnly: true + type: string + format: date-time + processCnt: + readOnly: true + type: integer + sleepHourStart: + minimum: 0 + maximum: 23 + type: + - integer + - 'null' + sleepHourEnd: + minimum: 0 + maximum: 23 + type: + - integer + - 'null' + checkMaxSales: + type: boolean + numMaxSales: + minimum: 0 + maximum: 20 + type: + - integer + - 'null' + GameAccount: + type: object + description: '' + deprecated: false + properties: + dbId: + readOnly: true + type: + - integer + - 'null' + email: + format: email + externalDocs: + url: 'https://schema.org/email' + type: + - string + - 'null' + profile: + type: + - string + - 'null' + password: + type: + - string + - 'null' + emailPw: + type: + - string + - 'null' + credits: + readOnly: true + type: + - integer + - 'null' + cntItems: + readOnly: true + type: + - integer + - 'null' + cntSoldItems: + readOnly: true + type: + - integer + - 'null' + cntInactiveItems: + readOnly: true + type: + - integer + - 'null' + active: + type: + - boolean + - 'null' + running: + type: + - boolean + - 'null' + relist: + type: + - boolean + - 'null' + relistDate: + type: + - string + - 'null' + format: date-time + blocked: + type: + - boolean + - 'null' + sniping: + type: + - boolean + - 'null' + snipingDate: + readOnly: true + type: + - string + - 'null' + format: date-time + tmOpen: + type: + - boolean + - 'null' + tmState: + type: + - integer + - 'null' + dead: + type: + - boolean + - 'null' + lockedMsg: + type: + - boolean + - 'null' + dynPrices: + type: + - boolean + - 'null' + newBuy: + type: + - boolean + - 'null' + newBuyDate: + readOnly: true + type: + - string + - 'null' + format: date-time + newBuySelective: + type: + - boolean + - 'null' + reBuy: + type: + - boolean + - 'null' + rebuyDate: + readOnly: true + type: + - string + - 'null' + format: date-time + connectionDate: + readOnly: true + type: + - string + - 'null' + format: date-time + importWatchlist: + type: + - boolean + - 'null' + autoReBuy: + type: + - boolean + - 'null' + directReBuy: + type: + - boolean + - 'null' + itemMaxBuyPrice: + minimum: 0 + maximum: 15000000 + type: + - integer + - 'null' + revenue: + readOnly: true + type: + - integer + - 'null' + futWizValue: + readOnly: true + type: + - integer + - 'null' + eaMarketAvgValue: + readOnly: true + type: + - integer + - 'null' + mfaCode: + type: + - string + - 'null' + twoFactorAuthKey: + type: + - string + - 'null' + login2FaViaApp: + type: + - boolean + - 'null' + eaCode1: + type: + - string + - 'null' + eaCode2: + type: + - string + - 'null' + eaCode3: + type: + - string + - 'null' + eaCode4: + type: + - string + - 'null' + eaCode5: + type: + - string + - 'null' + eaCode6: + type: + - string + - 'null' + snipingCnt1h: + type: + - integer + - 'null' + snipingCnt3h: + type: + - integer + - 'null' + snipingCnt6h: + type: + - integer + - 'null' + snipingCnt12h: + type: + - integer + - 'null' + snipingCnt24h: + type: + - integer + - 'null' + snipingCnt3d: + type: + - integer + - 'null' + snipingCnt1w: + type: + - integer + - 'null' + note: + type: + - string + - 'null' + loopStartDate: + readOnly: true + type: + - string + - 'null' + format: date-time + loopFinishDate: + readOnly: true + type: + - string + - 'null' + format: date-time + creationDate: + readOnly: true + type: + - string + - 'null' + format: date-time + owner: + readOnly: true + type: string + format: iri-reference + example: 'https://example.com/' + required: + - email + - profile + - password + - active + - running + - relist + - blocked + - sniping + - tmOpen + - dead + - lockedMsg + - dynPrices + - newBuy + - newBuySelective + - reBuy + - importWatchlist + - autoReBuy + - directReBuy + GameAccount.jsonld: + type: object + description: '' + deprecated: false + properties: + '@context': + readOnly: true + oneOf: + - + type: string + - + type: object + properties: + '@vocab': + type: string + hydra: + type: string + enum: ['http://www.w3.org/ns/hydra/core#'] + required: + - '@vocab' + - hydra + additionalProperties: true + '@id': + readOnly: true + type: string + '@type': + readOnly: true + type: string + dbId: + readOnly: true + type: + - integer + - 'null' + email: + format: email + externalDocs: + url: 'https://schema.org/email' + type: + - string + - 'null' + profile: + type: + - string + - 'null' + password: + type: + - string + - 'null' + emailPw: + type: + - string + - 'null' + credits: + readOnly: true + type: + - integer + - 'null' + cntItems: + readOnly: true + type: + - integer + - 'null' + cntSoldItems: + readOnly: true + type: + - integer + - 'null' + cntInactiveItems: + readOnly: true + type: + - integer + - 'null' + active: + type: + - boolean + - 'null' + running: + type: + - boolean + - 'null' + relist: + type: + - boolean + - 'null' + relistDate: + type: + - string + - 'null' + format: date-time + blocked: + type: + - boolean + - 'null' + sniping: + type: + - boolean + - 'null' + snipingDate: + readOnly: true + type: + - string + - 'null' + format: date-time + tmOpen: + type: + - boolean + - 'null' + tmState: + type: + - integer + - 'null' + dead: + type: + - boolean + - 'null' + lockedMsg: + type: + - boolean + - 'null' + dynPrices: + type: + - boolean + - 'null' + newBuy: + type: + - boolean + - 'null' + newBuyDate: + readOnly: true + type: + - string + - 'null' + format: date-time + newBuySelective: + type: + - boolean + - 'null' + reBuy: + type: + - boolean + - 'null' + rebuyDate: + readOnly: true + type: + - string + - 'null' + format: date-time + connectionDate: + readOnly: true + type: + - string + - 'null' + format: date-time + importWatchlist: + type: + - boolean + - 'null' + autoReBuy: + type: + - boolean + - 'null' + directReBuy: + type: + - boolean + - 'null' + itemMaxBuyPrice: + minimum: 0 + maximum: 15000000 + type: + - integer + - 'null' + revenue: + readOnly: true + type: + - integer + - 'null' + futWizValue: + readOnly: true + type: + - integer + - 'null' + eaMarketAvgValue: + readOnly: true + type: + - integer + - 'null' + mfaCode: + type: + - string + - 'null' + twoFactorAuthKey: + type: + - string + - 'null' + login2FaViaApp: + type: + - boolean + - 'null' + eaCode1: + type: + - string + - 'null' + eaCode2: + type: + - string + - 'null' + eaCode3: + type: + - string + - 'null' + eaCode4: + type: + - string + - 'null' + eaCode5: + type: + - string + - 'null' + eaCode6: + type: + - string + - 'null' + snipingCnt1h: + type: + - integer + - 'null' + snipingCnt3h: + type: + - integer + - 'null' + snipingCnt6h: + type: + - integer + - 'null' + snipingCnt12h: + type: + - integer + - 'null' + snipingCnt24h: + type: + - integer + - 'null' + snipingCnt3d: + type: + - integer + - 'null' + snipingCnt1w: + type: + - integer + - 'null' + note: + type: + - string + - 'null' + loopStartDate: + readOnly: true + type: + - string + - 'null' + format: date-time + loopFinishDate: + readOnly: true + type: + - string + - 'null' + format: date-time + creationDate: + readOnly: true + type: + - string + - 'null' + format: date-time + owner: + readOnly: true + $ref: '#/components/schemas/User.jsonld' + required: + - email + - profile + - password + - active + - running + - relist + - blocked + - sniping + - tmOpen + - dead + - lockedMsg + - dynPrices + - newBuy + - newBuySelective + - reBuy + - importWatchlist + - autoReBuy + - directReBuy + LogAccountCredit.jsonld: + type: object + description: '' + deprecated: false + properties: + '@id': + readOnly: true + type: string + '@type': + readOnly: true + type: string + '@context': + readOnly: true + oneOf: + - + type: string + - + type: object + properties: + '@vocab': + type: string + hydra: + type: string + enum: ['http://www.w3.org/ns/hydra/core#'] + required: + - '@vocab' + - hydra + additionalProperties: true + gameAccount: + readOnly: true + $ref: '#/components/schemas/GameAccount.jsonld' + credits: + readOnly: true + type: + - integer + - 'null' + revenue: + readOnly: true + type: + - integer + - 'null' + creationDate: + readOnly: true + type: + - string + - 'null' + format: date-time + LogAccountProfit.jsonld: + type: object + description: '' + deprecated: false + properties: + '@id': + readOnly: true + type: string + '@type': + readOnly: true + type: string + '@context': + readOnly: true + oneOf: + - + type: string + - + type: object + properties: + '@vocab': + type: string + hydra: + type: string + enum: ['http://www.w3.org/ns/hydra/core#'] + required: + - '@vocab' + - hydra + additionalProperties: true + gameAccount: + readOnly: true + $ref: '#/components/schemas/GameAccount.jsonld' + credits: + type: + - integer + - 'null' + revenue: + type: + - integer + - 'null' + tpValue: + type: + - integer + - 'null' + revToday: + type: + - integer + - 'null' + rev3hours: + type: + - integer + - 'null' + rev6hours: + type: + - integer + - 'null' + rev12hours: + type: + - integer + - 'null' + rev24hours: + type: + - integer + - 'null' + rev3days: + type: + - integer + - 'null' + rev1week: + type: + - integer + - 'null' + rev2weeks: + type: + - integer + - 'null' + rev3weeks: + type: + - integer + - 'null' + rev4weeks: + type: + - integer + - 'null' + rev2months: + type: + - integer + - 'null' + rev3months: + type: + - integer + - 'null' + revTotal: + type: + - integer + - 'null' + numSalesToday: + type: + - integer + - 'null' + numSales3hours: + type: + - integer + - 'null' + numSales6hours: + type: + - integer + - 'null' + numSales12hours: + type: + - integer + - 'null' + numSales24hours: + type: + - integer + - 'null' + numSales3days: + type: + - integer + - 'null' + numSales1week: + type: + - integer + - 'null' + numSales2weeks: + type: + - integer + - 'null' + numSales3weeks: + type: + - integer + - 'null' + numSales4weeks: + type: + - integer + - 'null' + numSales2months: + type: + - integer + - 'null' + numSales3months: + type: + - integer + - 'null' + numSalesTotal: + type: + - integer + - 'null' + isDailyProfit: + type: + - boolean + - 'null' + creationDate: + type: + - string + - 'null' + format: date-time + LogAccountSoldItem.jsonld: + type: object + description: '' + deprecated: false + properties: + '@id': + readOnly: true + type: string + '@type': + readOnly: true + type: string + '@context': + readOnly: true + oneOf: + - + type: string + - + type: object + properties: + '@vocab': + type: string + hydra: + type: string + enum: ['http://www.w3.org/ns/hydra/core#'] + required: + - '@vocab' + - hydra + additionalProperties: true + dbId: + readOnly: true + type: + - integer + - 'null' + gameAccount: + readOnly: true + $ref: '#/components/schemas/GameAccount.jsonld' + candidateItem: + readOnly: true + $ref: '#/components/schemas/Candidate.jsonld' + eaId: + readOnly: true + type: integer + contracts: + readOnly: true + type: + - integer + - 'null' + playStyle: + readOnly: true + type: + - integer + - 'null' + lastSalePrice: + readOnly: true + type: integer + currentBid: + readOnly: true + type: integer + startingBid: + readOnly: true + type: integer + binPrice: + readOnly: true + type: integer + minRange: + readOnly: true + type: integer + maxRange: + readOnly: true + type: integer + tradeState: + readOnly: true + type: string + eaTradeId: + readOnly: true + type: integer + listCnt: + readOnly: true + type: integer + revenue: + readOnly: true + type: integer + reBought: + readOnly: true + type: boolean + snipedItem: + readOnly: true + type: boolean + firstListDate: + readOnly: true + type: + - string + - 'null' + format: date-time + creationDate: + readOnly: true + type: string + format: date-time + LogGeneral.jsonld: + type: object + description: '' + deprecated: false + properties: + '@id': + readOnly: true + type: string + '@type': + readOnly: true + type: string + '@context': + readOnly: true + oneOf: + - + type: string + - + type: object + properties: + '@vocab': + type: string + hydra: + type: string + enum: ['http://www.w3.org/ns/hydra/core#'] + required: + - '@vocab' + - hydra + additionalProperties: true + dbId: + readOnly: true + type: integer + gameAccount: + readOnly: true + $ref: '#/components/schemas/GameAccount.jsonld' + candidateItem: + readOnly: true + $ref: '#/components/schemas/Candidate.jsonld' + logType: + type: string + enum: + - alert + - alert_low + - cant_buy + - debug + - debug_server_logs + - info + - moved_to_club + - new_buy + - player_price_changed + - preview_pack + - preview_pack_alert + - price_range_errors + - profit_overview + - removed + - rebuy + - sales + - server_logs + - stats + - hourly_stats + message: + readOnly: true + type: + - string + - 'null' + creationDate: + readOnly: true + type: + - string + - 'null' + format: date-time + required: + - logType + LogTotalProfit: + type: object + description: '' + deprecated: false + properties: + credits: + type: + - integer + - 'null' + revenue: + type: + - integer + - 'null' + tpValueFutwiz: + type: + - integer + - 'null' + tpValueEaAverage: + type: + - integer + - 'null' + revToday: + type: + - integer + - 'null' + rev3hours: + type: + - integer + - 'null' + rev6hours: + type: + - integer + - 'null' + rev12hours: + type: + - integer + - 'null' + rev24hours: + type: + - integer + - 'null' + rev3days: + type: + - integer + - 'null' + rev1week: + type: + - integer + - 'null' + rev2weeks: + type: + - integer + - 'null' + rev3weeks: + type: + - integer + - 'null' + rev4weeks: + type: + - integer + - 'null' + rev2months: + type: + - integer + - 'null' + rev3months: + type: + - integer + - 'null' + revTotal: + type: + - integer + - 'null' + numSalesToday: + type: + - integer + - 'null' + numSales3hours: + type: + - integer + - 'null' + numSales6hours: + type: + - integer + - 'null' + numSales12hours: + type: + - integer + - 'null' + numSales24hours: + type: + - integer + - 'null' + numSales3days: + type: + - integer + - 'null' + numSales1week: + type: + - integer + - 'null' + numSales2weeks: + type: + - integer + - 'null' + numSales3weeks: + type: + - integer + - 'null' + numSales4weeks: + type: + - integer + - 'null' + numSales2months: + type: + - integer + - 'null' + numSales3months: + type: + - integer + - 'null' + numSalesTotal: + type: + - integer + - 'null' + isDailyProfit: + type: + - boolean + - 'null' + creationDate: + type: + - string + - 'null' + format: date-time + LogTotalProfit.jsonld: + type: object + description: '' + deprecated: false + properties: + '@context': + readOnly: true + oneOf: + - + type: string + - + type: object + properties: + '@vocab': + type: string + hydra: + type: string + enum: ['http://www.w3.org/ns/hydra/core#'] + required: + - '@vocab' + - hydra + additionalProperties: true + '@id': + readOnly: true + type: string + '@type': + readOnly: true + type: string + credits: + type: + - integer + - 'null' + revenue: + type: + - integer + - 'null' + tpValueFutwiz: + type: + - integer + - 'null' + tpValueEaAverage: + type: + - integer + - 'null' + revToday: + type: + - integer + - 'null' + rev3hours: + type: + - integer + - 'null' + rev6hours: + type: + - integer + - 'null' + rev12hours: + type: + - integer + - 'null' + rev24hours: + type: + - integer + - 'null' + rev3days: + type: + - integer + - 'null' + rev1week: + type: + - integer + - 'null' + rev2weeks: + type: + - integer + - 'null' + rev3weeks: + type: + - integer + - 'null' + rev4weeks: + type: + - integer + - 'null' + rev2months: + type: + - integer + - 'null' + rev3months: + type: + - integer + - 'null' + revTotal: + type: + - integer + - 'null' + numSalesToday: + type: + - integer + - 'null' + numSales3hours: + type: + - integer + - 'null' + numSales6hours: + type: + - integer + - 'null' + numSales12hours: + type: + - integer + - 'null' + numSales24hours: + type: + - integer + - 'null' + numSales3days: + type: + - integer + - 'null' + numSales1week: + type: + - integer + - 'null' + numSales2weeks: + type: + - integer + - 'null' + numSales3weeks: + type: + - integer + - 'null' + numSales4weeks: + type: + - integer + - 'null' + numSales2months: + type: + - integer + - 'null' + numSales3months: + type: + - integer + - 'null' + numSalesTotal: + type: + - integer + - 'null' + isDailyProfit: + type: + - boolean + - 'null' + creationDate: + type: + - string + - 'null' + format: date-time + MediaObject.jsonld-media_object.read: + type: object + description: '' + deprecated: false + externalDocs: + url: 'https://schema.org/MediaObject' + properties: + '@context': + readOnly: true + oneOf: + - + type: string + - + type: object + properties: + '@vocab': + type: string + hydra: + type: string + enum: ['http://www.w3.org/ns/hydra/core#'] + required: + - '@vocab' + - hydra + additionalProperties: true + '@id': + readOnly: true + type: string + '@type': + readOnly: true + type: string + contentUrl: + externalDocs: + url: 'https://schema.org/contentUrl' + type: + - string + - 'null' + ModeConfig: + type: object + description: '' + deprecated: false + properties: + autoReBuyMinSoldItems: + minimum: 0 + maximum: 20 + default: 3 + example: 3 + type: integer + autoReBuyMinLastHours: + minimum: 0 + maximum: 20 + default: 3 + example: 3 + type: integer + ModeConfig.jsonld: + type: object + description: '' + deprecated: false + properties: + '@context': + readOnly: true + oneOf: + - + type: string + - + type: object + properties: + '@vocab': + type: string + hydra: + type: string + enum: ['http://www.w3.org/ns/hydra/core#'] + required: + - '@vocab' + - hydra + additionalProperties: true + '@id': + readOnly: true + type: string + '@type': + readOnly: true + type: string + autoReBuyMinSoldItems: + minimum: 0 + maximum: 20 + default: 3 + example: 3 + type: integer + autoReBuyMinLastHours: + minimum: 0 + maximum: 20 + default: 3 + example: 3 + type: integer + Player: + type: object + description: '' + deprecated: false + properties: + eaAssetId: + type: integer + firstname: + type: + - string + - 'null' + lastname: + type: + - string + - 'null' + nickname: + type: + - string + - 'null' + rating: + type: integer + creationDate: + readOnly: true + type: string + format: date-time + Player.jsonld: + type: object + description: '' + deprecated: false + properties: + '@context': + readOnly: true + oneOf: + - + type: string + - + type: object + properties: + '@vocab': + type: string + hydra: + type: string + enum: ['http://www.w3.org/ns/hydra/core#'] + required: + - '@vocab' + - hydra + additionalProperties: true + '@id': + readOnly: true + type: string + '@type': + readOnly: true + type: string + eaAssetId: + type: integer + firstname: + type: + - string + - 'null' + lastname: + type: + - string + - 'null' + nickname: + type: + - string + - 'null' + rating: + type: integer + creationDate: + readOnly: true + type: string + format: date-time + Rarity: + type: object + description: '' + deprecated: false + properties: + rareFlag: + readOnly: true + type: integer + name: + type: + - string + - 'null' + untradable: + readOnly: true + type: boolean + image: + readOnly: true + type: + - string + - 'null' + format: iri-reference + example: 'https://example.com/' + imageUrl: + readOnly: true + type: + - string + - 'null' + imageBronze: + readOnly: true + type: + - string + - 'null' + format: iri-reference + example: 'https://example.com/' + Rarity.jsonld: + type: object + description: '' + deprecated: false + properties: + '@context': + readOnly: true + oneOf: + - + type: string + - + type: object + properties: + '@vocab': + type: string + hydra: + type: string + enum: ['http://www.w3.org/ns/hydra/core#'] + required: + - '@vocab' + - hydra + additionalProperties: true + '@id': + readOnly: true + type: string + '@type': + readOnly: true + type: string + rareFlag: + readOnly: true + type: integer + name: + type: + - string + - 'null' + untradable: + readOnly: true + type: boolean + image: + readOnly: true + type: + - string + - 'null' + format: iri-reference + example: 'https://example.com/' + imageUrl: + readOnly: true + type: + - string + - 'null' + imageBronze: + readOnly: true + type: + - string + - 'null' + format: iri-reference + example: 'https://example.com/' + SystemStat.jsonld: + type: object + description: '' + deprecated: false + properties: + '@context': + readOnly: true + oneOf: + - + type: string + - + type: object + properties: + '@vocab': + type: string + hydra: + type: string + enum: ['http://www.w3.org/ns/hydra/core#'] + required: + - '@vocab' + - hydra + additionalProperties: true + '@id': + readOnly: true + type: string + '@type': + readOnly: true + type: string + totalLogProfit: + readOnly: true + $ref: '#/components/schemas/LogTotalProfit.jsonld' + config: + readOnly: true + $ref: '#/components/schemas/Config.jsonld' + modeConfig: + readOnly: true + $ref: '#/components/schemas/ModeConfig.jsonld' + numAccounts: + type: + - integer + - 'null' + numDeadAccounts: + type: + - integer + - 'null' + numActiveAccounts: + type: + - integer + - 'null' + numTmOpenAccounts: + type: + - integer + - 'null' + numTmClosedAccounts: + type: + - integer + - 'null' + numBlockedAccounts: + type: + - integer + - 'null' + numRunningAccounts: + type: + - integer + - 'null' + numTradepileItems: + type: + - integer + - 'null' + numSoldTradepileItems: + type: + - integer + - 'null' + numActiveTradepileItems: + type: + - integer + - 'null' + numExpiredTradepileItems: + type: + - integer + - 'null' + numInactiveTradepileItems: + type: + - integer + - 'null' + numCandidates: + type: + - integer + - 'null' + numRelevantCandidates: + type: + - integer + - 'null' + numBuyCandidates: + type: + - integer + - 'null' + totalSnipingRev: + type: + - integer + - 'null' + User.jsonld: + type: object + description: '' + deprecated: false + required: + - email + - firstName + - lastName + properties: + '@context': + readOnly: true + oneOf: + - + type: string + - + type: object + properties: + '@vocab': + type: string + hydra: + type: string + enum: ['http://www.w3.org/ns/hydra/core#'] + required: + - '@vocab' + - hydra + additionalProperties: true + '@id': + readOnly: true + type: string + '@type': + readOnly: true + type: string + email: + format: email + externalDocs: + url: 'https://schema.org/email' + type: + - string + - 'null' + firstName: + type: + - string + - 'null' + lastName: + type: + - string + - 'null' + image: + type: + - string + - 'null' + format: iri-reference + example: 'https://example.com/' + imageUrl: + readOnly: true + type: + - string + - 'null' + fullName: + readOnly: true + type: + - string + - 'null' + password: + writeOnly: true + description: 'The plaintext password when being set or changed.' + type: + - string + - 'null' + active: + type: boolean + createdAt: + readOnly: true + type: + - string + - 'null' + format: date-time + responses: { } + parameters: { } + examples: { } + requestBodies: { } + headers: { } + securitySchemes: + JWT: + type: http + scheme: bearer + bearerFormat: JWT +security: + - + JWT: [] +tags: [] + diff --git a/angular/openapitools.json b/angular/openapitools.json new file mode 100644 index 0000000..9841a49 --- /dev/null +++ b/angular/openapitools.json @@ -0,0 +1,7 @@ +{ + "$schema": "./node_modules/@openapitools/openapi-generator-cli/config.schema.json", + "spaces": 2, + "generator-cli": { + "version": "7.3.0" + } +} diff --git a/angular/package-lock.json b/angular/package-lock.json new file mode 100644 index 0000000..349eba0 --- /dev/null +++ b/angular/package-lock.json @@ -0,0 +1,14699 @@ +{ + "name": "futbase", + "version": "0.0.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "futbase", + "version": "0.0.0", + "license": "ISC", + "dependencies": { + "@angular/animations": "^17.0.0", + "@angular/cdk": "^17.0.4", + "@angular/common": "^17.0.0", + "@angular/compiler": "^17.0.0", + "@angular/core": "^17.0.0", + "@angular/forms": "^17.0.0", + "@angular/material": "^17.0.4", + "@angular/platform-browser": "^17.0.0", + "@angular/platform-browser-dynamic": "^17.0.0", + "@angular/router": "^17.0.0", + "@ng-bootstrap/ng-bootstrap": "^16.0.0-rc.2", + "@ngx-translate/core": "^15.0.0", + "@ngx-translate/http-loader": "^8.0.0", + "@popperjs/core": "^2.11.8", + "@types/node": "^20.11.5", + "bootstrap": "^5.3.2", + "bootstrap-icons": "^1.11.2", + "rxjs": "~7.8.0", + "tslib": "^2.3.0", + "uuid": "^9.0.1", + "zone.js": "~0.14.2" + }, + "devDependencies": { + "@angular-devkit/build-angular": "^17.0.7", + "@angular/cli": "^17.0.7", + "@angular/compiler-cli": "^17.0.0", + "@openapitools/openapi-generator-cli": "^2.7.0", + "@types/jasmine": "~5.1.0", + "@types/uuid": "^9.0.8", + "@verizonconnect/ngx-form-generator": "^1.2.0", + "jasmine-core": "~5.1.0", + "karma": "~6.4.0", + "karma-chrome-launcher": "~3.2.0", + "karma-coverage": "~2.2.0", + "karma-jasmine": "~5.1.0", + "karma-jasmine-html-reporter": "~2.1.0", + "typescript": "~5.2.2" + } + }, + "node_modules/@ampproject/remapping": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.3.0.tgz", + "integrity": "sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==", + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.24" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@angular-devkit/architect": { + "version": "0.1703.8", + "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.1703.8.tgz", + "integrity": "sha512-lKxwG4/QABXZvJpqeSIn/kAwnY6MM9HdHZUV+o5o3UiTi+vO8rZApG4CCaITH3Bxebm7Nam7Xbk8RuukC5rq6g==", + "dev": true, + "dependencies": { + "@angular-devkit/core": "17.3.8", + "rxjs": "7.8.1" + }, + "engines": { + "node": "^18.13.0 || >=20.9.0", + "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", + "yarn": ">= 1.13.0" + } + }, + "node_modules/@angular-devkit/build-angular": { + "version": "17.3.8", + "resolved": "https://registry.npmjs.org/@angular-devkit/build-angular/-/build-angular-17.3.8.tgz", + "integrity": "sha512-ixsdXggWaFRP7Jvxd0AMukImnePuGflT9Yy7NJ9/y0cL/k//S/3RnkQv5i411KzN+7D4RIbNkRGGTYeqH24zlg==", + "dev": true, + "dependencies": { + "@ampproject/remapping": "2.3.0", + "@angular-devkit/architect": "0.1703.8", + "@angular-devkit/build-webpack": "0.1703.8", + "@angular-devkit/core": "17.3.8", + "@babel/core": "7.24.0", + "@babel/generator": "7.23.6", + "@babel/helper-annotate-as-pure": "7.22.5", + "@babel/helper-split-export-declaration": "7.22.6", + "@babel/plugin-transform-async-generator-functions": "7.23.9", + "@babel/plugin-transform-async-to-generator": "7.23.3", + "@babel/plugin-transform-runtime": "7.24.0", + "@babel/preset-env": "7.24.0", + "@babel/runtime": "7.24.0", + "@discoveryjs/json-ext": "0.5.7", + "@ngtools/webpack": "17.3.8", + "@vitejs/plugin-basic-ssl": "1.1.0", + "ansi-colors": "4.1.3", + "autoprefixer": "10.4.18", + "babel-loader": "9.1.3", + "babel-plugin-istanbul": "6.1.1", + "browserslist": "^4.21.5", + "copy-webpack-plugin": "11.0.0", + "critters": "0.0.22", + "css-loader": "6.10.0", + "esbuild-wasm": "0.20.1", + "fast-glob": "3.3.2", + "http-proxy-middleware": "2.0.6", + "https-proxy-agent": "7.0.4", + "inquirer": "9.2.15", + "jsonc-parser": "3.2.1", + "karma-source-map-support": "1.4.0", + "less": "4.2.0", + "less-loader": "11.1.0", + "license-webpack-plugin": "4.0.2", + "loader-utils": "3.2.1", + "magic-string": "0.30.8", + "mini-css-extract-plugin": "2.8.1", + "mrmime": "2.0.0", + "open": "8.4.2", + "ora": "5.4.1", + "parse5-html-rewriting-stream": "7.0.0", + "picomatch": "4.0.1", + "piscina": "4.4.0", + "postcss": "8.4.35", + "postcss-loader": "8.1.1", + "resolve-url-loader": "5.0.0", + "rxjs": "7.8.1", + "sass": "1.71.1", + "sass-loader": "14.1.1", + "semver": "7.6.0", + "source-map-loader": "5.0.0", + "source-map-support": "0.5.21", + "terser": "5.29.1", + "tree-kill": "1.2.2", + "tslib": "2.6.2", + "undici": "6.11.1", + "vite": "5.1.7", + "watchpack": "2.4.0", + "webpack": "5.90.3", + "webpack-dev-middleware": "6.1.2", + "webpack-dev-server": "4.15.1", + "webpack-merge": "5.10.0", + "webpack-subresource-integrity": "5.1.0" + }, + "engines": { + "node": "^18.13.0 || >=20.9.0", + "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", + "yarn": ">= 1.13.0" + }, + "optionalDependencies": { + "esbuild": "0.20.1" + }, + "peerDependencies": { + "@angular/compiler-cli": "^17.0.0", + "@angular/localize": "^17.0.0", + "@angular/platform-server": "^17.0.0", + "@angular/service-worker": "^17.0.0", + "@web/test-runner": "^0.18.0", + "browser-sync": "^3.0.2", + "jest": "^29.5.0", + "jest-environment-jsdom": "^29.5.0", + "karma": "^6.3.0", + "ng-packagr": "^17.0.0", + "protractor": "^7.0.0", + "tailwindcss": "^2.0.0 || ^3.0.0", + "typescript": ">=5.2 <5.5" + }, + "peerDependenciesMeta": { + "@angular/localize": { + "optional": true + }, + "@angular/platform-server": { + "optional": true + }, + "@angular/service-worker": { + "optional": true + }, + "@web/test-runner": { + "optional": true + }, + "browser-sync": { + "optional": true + }, + "jest": { + "optional": true + }, + "jest-environment-jsdom": { + "optional": true + }, + "karma": { + "optional": true + }, + "ng-packagr": { + "optional": true + }, + "protractor": { + "optional": true + }, + "tailwindcss": { + "optional": true + } + } + }, + "node_modules/@angular-devkit/build-angular/node_modules/tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "dev": true + }, + "node_modules/@angular-devkit/build-webpack": { + "version": "0.1703.8", + "resolved": "https://registry.npmjs.org/@angular-devkit/build-webpack/-/build-webpack-0.1703.8.tgz", + "integrity": "sha512-9u6fl8VVOxcLOEMzrUeaybSvi9hSLSRucHnybneYrabsgreDo32tuy/4G8p6YAHQjpWEj9jvF9Um13ertdni5Q==", + "dev": true, + "dependencies": { + "@angular-devkit/architect": "0.1703.8", + "rxjs": "7.8.1" + }, + "engines": { + "node": "^18.13.0 || >=20.9.0", + "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", + "yarn": ">= 1.13.0" + }, + "peerDependencies": { + "webpack": "^5.30.0", + "webpack-dev-server": "^4.0.0" + } + }, + "node_modules/@angular-devkit/core": { + "version": "17.3.8", + "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-17.3.8.tgz", + "integrity": "sha512-Q8q0voCGudbdCgJ7lXdnyaxKHbNQBARH68zPQV72WT8NWy+Gw/tys870i6L58NWbBaCJEUcIj/kb6KoakSRu+Q==", + "dev": true, + "dependencies": { + "ajv": "8.12.0", + "ajv-formats": "2.1.1", + "jsonc-parser": "3.2.1", + "picomatch": "4.0.1", + "rxjs": "7.8.1", + "source-map": "0.7.4" + }, + "engines": { + "node": "^18.13.0 || >=20.9.0", + "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", + "yarn": ">= 1.13.0" + }, + "peerDependencies": { + "chokidar": "^3.5.2" + }, + "peerDependenciesMeta": { + "chokidar": { + "optional": true + } + } + }, + "node_modules/@angular-devkit/schematics": { + "version": "17.3.8", + "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-17.3.8.tgz", + "integrity": "sha512-QRVEYpIfgkprNHc916JlPuNbLzOgrm9DZalHasnLUz4P6g7pR21olb8YCyM2OTJjombNhya9ZpckcADU5Qyvlg==", + "dev": true, + "dependencies": { + "@angular-devkit/core": "17.3.8", + "jsonc-parser": "3.2.1", + "magic-string": "0.30.8", + "ora": "5.4.1", + "rxjs": "7.8.1" + }, + "engines": { + "node": "^18.13.0 || >=20.9.0", + "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", + "yarn": ">= 1.13.0" + } + }, + "node_modules/@angular/animations": { + "version": "17.3.11", + "resolved": "https://registry.npmjs.org/@angular/animations/-/animations-17.3.11.tgz", + "integrity": "sha512-1y1Egag5jbdUSUWVK+KA39N9VFDrzq9ObjbAhrXFlXKa0npBRw5bprEEeLFQMETMP9Mpjbmj2PoASfl4vqj/Iw==", + "dependencies": { + "tslib": "^2.3.0" + }, + "engines": { + "node": "^18.13.0 || >=20.9.0" + }, + "peerDependencies": { + "@angular/core": "17.3.11" + } + }, + "node_modules/@angular/cdk": { + "version": "17.3.10", + "resolved": "https://registry.npmjs.org/@angular/cdk/-/cdk-17.3.10.tgz", + "integrity": "sha512-b1qktT2c1TTTe5nTji/kFAVW92fULK0YhYAvJ+BjZTPKu2FniZNe8o4qqQ0pUuvtMu+ZQxp/QqFYoidIVCjScg==", + "dependencies": { + "tslib": "^2.3.0" + }, + "optionalDependencies": { + "parse5": "^7.1.2" + }, + "peerDependencies": { + "@angular/common": "^17.0.0 || ^18.0.0", + "@angular/core": "^17.0.0 || ^18.0.0", + "rxjs": "^6.5.3 || ^7.4.0" + } + }, + "node_modules/@angular/cli": { + "version": "17.3.8", + "resolved": "https://registry.npmjs.org/@angular/cli/-/cli-17.3.8.tgz", + "integrity": "sha512-X5ZOQ6ZTKVHjhIsfl32ZRqbs+FUoeHLbT7x4fh2Os/8ObDDwrUcCJPqxe2b2RB5E2d0vepYigknHeLE7gwzlNQ==", + "dev": true, + "dependencies": { + "@angular-devkit/architect": "0.1703.8", + "@angular-devkit/core": "17.3.8", + "@angular-devkit/schematics": "17.3.8", + "@schematics/angular": "17.3.8", + "@yarnpkg/lockfile": "1.1.0", + "ansi-colors": "4.1.3", + "ini": "4.1.2", + "inquirer": "9.2.15", + "jsonc-parser": "3.2.1", + "npm-package-arg": "11.0.1", + "npm-pick-manifest": "9.0.0", + "open": "8.4.2", + "ora": "5.4.1", + "pacote": "17.0.6", + "resolve": "1.22.8", + "semver": "7.6.0", + "symbol-observable": "4.0.0", + "yargs": "17.7.2" + }, + "bin": { + "ng": "bin/ng.js" + }, + "engines": { + "node": "^18.13.0 || >=20.9.0", + "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", + "yarn": ">= 1.13.0" + } + }, + "node_modules/@angular/common": { + "version": "17.3.11", + "resolved": "https://registry.npmjs.org/@angular/common/-/common-17.3.11.tgz", + "integrity": "sha512-WG+HQjUaQziYLGdbcv2aW+G73uroN5VF9yk4qWYcolW+VB8SV/DOAol8uFVgCF21cIOl5+wfJZvA4r5oG3dYaw==", + "dependencies": { + "tslib": "^2.3.0" + }, + "engines": { + "node": "^18.13.0 || >=20.9.0" + }, + "peerDependencies": { + "@angular/core": "17.3.11", + "rxjs": "^6.5.3 || ^7.4.0" + } + }, + "node_modules/@angular/compiler": { + "version": "17.3.11", + "resolved": "https://registry.npmjs.org/@angular/compiler/-/compiler-17.3.11.tgz", + "integrity": "sha512-ingRoREDPkeZGSa13DlztSjZgGArNcmsAWjj+f+vQgQekTjkfQD/N+Bix/LSt5ZdbSjHMtrkDMyRPwbNyk5Keg==", + "dependencies": { + "tslib": "^2.3.0" + }, + "engines": { + "node": "^18.13.0 || >=20.9.0" + }, + "peerDependencies": { + "@angular/core": "17.3.11" + }, + "peerDependenciesMeta": { + "@angular/core": { + "optional": true + } + } + }, + "node_modules/@angular/compiler-cli": { + "version": "17.3.11", + "resolved": "https://registry.npmjs.org/@angular/compiler-cli/-/compiler-cli-17.3.11.tgz", + "integrity": "sha512-O44H/BKGw0TYq0aNTOKYZfQiTrfjbmcTl8y4UX6C9Xey8hXvijzZOAsjA0TGvvDJxeLR+sxaRF4i9Ihoatnd8g==", + "dependencies": { + "@babel/core": "7.23.9", + "@jridgewell/sourcemap-codec": "^1.4.14", + "chokidar": "^3.0.0", + "convert-source-map": "^1.5.1", + "reflect-metadata": "^0.2.0", + "semver": "^7.0.0", + "tslib": "^2.3.0", + "yargs": "^17.2.1" + }, + "bin": { + "ng-xi18n": "bundles/src/bin/ng_xi18n.js", + "ngc": "bundles/src/bin/ngc.js", + "ngcc": "bundles/ngcc/index.js" + }, + "engines": { + "node": "^18.13.0 || >=20.9.0" + }, + "peerDependencies": { + "@angular/compiler": "17.3.11", + "typescript": ">=5.2 <5.5" + } + }, + "node_modules/@angular/compiler-cli/node_modules/@babel/core": { + "version": "7.23.9", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.23.9.tgz", + "integrity": "sha512-5q0175NOjddqpvvzU+kDiSOAk4PfdO6FvwCWoQ6RO7rTzEe8vlo+4HVfcnAREhD4npMs0e9uZypjTwzZPCf/cw==", + "dependencies": { + "@ampproject/remapping": "^2.2.0", + "@babel/code-frame": "^7.23.5", + "@babel/generator": "^7.23.6", + "@babel/helper-compilation-targets": "^7.23.6", + "@babel/helper-module-transforms": "^7.23.3", + "@babel/helpers": "^7.23.9", + "@babel/parser": "^7.23.9", + "@babel/template": "^7.23.9", + "@babel/traverse": "^7.23.9", + "@babel/types": "^7.23.9", + "convert-source-map": "^2.0.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.2.3", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/babel" + } + }, + "node_modules/@angular/compiler-cli/node_modules/@babel/core/node_modules/convert-source-map": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", + "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==" + }, + "node_modules/@angular/compiler-cli/node_modules/@babel/core/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@angular/core": { + "version": "17.3.11", + "resolved": "https://registry.npmjs.org/@angular/core/-/core-17.3.11.tgz", + "integrity": "sha512-2wPZwXFei3kVxK2ylIH6CdGebrC4kvooFx7qoX+250OITAEFMODJGdh/e3x0DpFUjlRvQtIFQ+YpQlfC5JnL4g==", + "dependencies": { + "tslib": "^2.3.0" + }, + "engines": { + "node": "^18.13.0 || >=20.9.0" + }, + "peerDependencies": { + "rxjs": "^6.5.3 || ^7.4.0", + "zone.js": "~0.14.0" + } + }, + "node_modules/@angular/forms": { + "version": "17.3.11", + "resolved": "https://registry.npmjs.org/@angular/forms/-/forms-17.3.11.tgz", + "integrity": "sha512-719flo/1L64YOAxL3pzszTK+7bczVVOQDXT1khnjb48GVZdBUBwW2D+cFbqSW1VMuWWr2Amwy1lL4YM5S7qPJQ==", + "dependencies": { + "tslib": "^2.3.0" + }, + "engines": { + "node": "^18.13.0 || >=20.9.0" + }, + "peerDependencies": { + "@angular/common": "17.3.11", + "@angular/core": "17.3.11", + "@angular/platform-browser": "17.3.11", + "rxjs": "^6.5.3 || ^7.4.0" + } + }, + "node_modules/@angular/localize": { + "version": "17.3.11", + "resolved": "https://registry.npmjs.org/@angular/localize/-/localize-17.3.11.tgz", + "integrity": "sha512-uc38JfGpIEb13rDZu7wZfEvLxBpWbhfsOR+yI21M4zIiKYQxI7RGgtH9GbCKZDEZmeTUSz/idA4zwRiiX8wNvQ==", + "peer": true, + "dependencies": { + "@babel/core": "7.23.9", + "@types/babel__core": "7.20.5", + "fast-glob": "3.3.2", + "yargs": "^17.2.1" + }, + "bin": { + "localize-extract": "tools/bundles/src/extract/cli.js", + "localize-migrate": "tools/bundles/src/migrate/cli.js", + "localize-translate": "tools/bundles/src/translate/cli.js" + }, + "engines": { + "node": "^18.13.0 || >=20.9.0" + }, + "peerDependencies": { + "@angular/compiler": "17.3.11", + "@angular/compiler-cli": "17.3.11" + } + }, + "node_modules/@angular/localize/node_modules/@babel/core": { + "version": "7.23.9", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.23.9.tgz", + "integrity": "sha512-5q0175NOjddqpvvzU+kDiSOAk4PfdO6FvwCWoQ6RO7rTzEe8vlo+4HVfcnAREhD4npMs0e9uZypjTwzZPCf/cw==", + "peer": true, + "dependencies": { + "@ampproject/remapping": "^2.2.0", + "@babel/code-frame": "^7.23.5", + "@babel/generator": "^7.23.6", + "@babel/helper-compilation-targets": "^7.23.6", + "@babel/helper-module-transforms": "^7.23.3", + "@babel/helpers": "^7.23.9", + "@babel/parser": "^7.23.9", + "@babel/template": "^7.23.9", + "@babel/traverse": "^7.23.9", + "@babel/types": "^7.23.9", + "convert-source-map": "^2.0.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.2.3", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/babel" + } + }, + "node_modules/@angular/localize/node_modules/convert-source-map": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", + "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", + "peer": true + }, + "node_modules/@angular/localize/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "peer": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@angular/material": { + "version": "17.3.10", + "resolved": "https://registry.npmjs.org/@angular/material/-/material-17.3.10.tgz", + "integrity": "sha512-hHMQES0tQPH5JW33W+mpBPuM8ybsloDTqFPuRV8cboDjosAWfJhzAKF3ozICpNlUrs62La/2Wu/756GcQrxebg==", + "dependencies": { + "@material/animation": "15.0.0-canary.7f224ddd4.0", + "@material/auto-init": "15.0.0-canary.7f224ddd4.0", + "@material/banner": "15.0.0-canary.7f224ddd4.0", + "@material/base": "15.0.0-canary.7f224ddd4.0", + "@material/button": "15.0.0-canary.7f224ddd4.0", + "@material/card": "15.0.0-canary.7f224ddd4.0", + "@material/checkbox": "15.0.0-canary.7f224ddd4.0", + "@material/chips": "15.0.0-canary.7f224ddd4.0", + "@material/circular-progress": "15.0.0-canary.7f224ddd4.0", + "@material/data-table": "15.0.0-canary.7f224ddd4.0", + "@material/density": "15.0.0-canary.7f224ddd4.0", + "@material/dialog": "15.0.0-canary.7f224ddd4.0", + "@material/dom": "15.0.0-canary.7f224ddd4.0", + "@material/drawer": "15.0.0-canary.7f224ddd4.0", + "@material/elevation": "15.0.0-canary.7f224ddd4.0", + "@material/fab": "15.0.0-canary.7f224ddd4.0", + "@material/feature-targeting": "15.0.0-canary.7f224ddd4.0", + "@material/floating-label": "15.0.0-canary.7f224ddd4.0", + "@material/form-field": "15.0.0-canary.7f224ddd4.0", + "@material/icon-button": "15.0.0-canary.7f224ddd4.0", + "@material/image-list": "15.0.0-canary.7f224ddd4.0", + "@material/layout-grid": "15.0.0-canary.7f224ddd4.0", + "@material/line-ripple": "15.0.0-canary.7f224ddd4.0", + "@material/linear-progress": "15.0.0-canary.7f224ddd4.0", + "@material/list": "15.0.0-canary.7f224ddd4.0", + "@material/menu": "15.0.0-canary.7f224ddd4.0", + "@material/menu-surface": "15.0.0-canary.7f224ddd4.0", + "@material/notched-outline": "15.0.0-canary.7f224ddd4.0", + "@material/radio": "15.0.0-canary.7f224ddd4.0", + "@material/ripple": "15.0.0-canary.7f224ddd4.0", + "@material/rtl": "15.0.0-canary.7f224ddd4.0", + "@material/segmented-button": "15.0.0-canary.7f224ddd4.0", + "@material/select": "15.0.0-canary.7f224ddd4.0", + "@material/shape": "15.0.0-canary.7f224ddd4.0", + "@material/slider": "15.0.0-canary.7f224ddd4.0", + "@material/snackbar": "15.0.0-canary.7f224ddd4.0", + "@material/switch": "15.0.0-canary.7f224ddd4.0", + "@material/tab": "15.0.0-canary.7f224ddd4.0", + "@material/tab-bar": "15.0.0-canary.7f224ddd4.0", + "@material/tab-indicator": "15.0.0-canary.7f224ddd4.0", + "@material/tab-scroller": "15.0.0-canary.7f224ddd4.0", + "@material/textfield": "15.0.0-canary.7f224ddd4.0", + "@material/theme": "15.0.0-canary.7f224ddd4.0", + "@material/tooltip": "15.0.0-canary.7f224ddd4.0", + "@material/top-app-bar": "15.0.0-canary.7f224ddd4.0", + "@material/touch-target": "15.0.0-canary.7f224ddd4.0", + "@material/typography": "15.0.0-canary.7f224ddd4.0", + "tslib": "^2.3.0" + }, + "peerDependencies": { + "@angular/animations": "^17.0.0 || ^18.0.0", + "@angular/cdk": "17.3.10", + "@angular/common": "^17.0.0 || ^18.0.0", + "@angular/core": "^17.0.0 || ^18.0.0", + "@angular/forms": "^17.0.0 || ^18.0.0", + "@angular/platform-browser": "^17.0.0 || ^18.0.0", + "rxjs": "^6.5.3 || ^7.4.0" + } + }, + "node_modules/@angular/platform-browser": { + "version": "17.3.11", + "resolved": "https://registry.npmjs.org/@angular/platform-browser/-/platform-browser-17.3.11.tgz", + "integrity": "sha512-sWjMy8qKH6AOt5YV4OMoPhExCbGdRIPjNSwUrxCm8a8Zz5DamoX3Sib9yRk1etjBuRj+oJySSxISJim2OYXJQQ==", + "dependencies": { + "tslib": "^2.3.0" + }, + "engines": { + "node": "^18.13.0 || >=20.9.0" + }, + "peerDependencies": { + "@angular/animations": "17.3.11", + "@angular/common": "17.3.11", + "@angular/core": "17.3.11" + }, + "peerDependenciesMeta": { + "@angular/animations": { + "optional": true + } + } + }, + "node_modules/@angular/platform-browser-dynamic": { + "version": "17.3.11", + "resolved": "https://registry.npmjs.org/@angular/platform-browser-dynamic/-/platform-browser-dynamic-17.3.11.tgz", + "integrity": "sha512-JPA0enJyJQ5H340WQ2wfXbCCHzjBiAljEDMr/Siw/CzSe0XI8aQYDqKMLUMtRyCdYhNCEYjnBWgXBi9Za9blZg==", + "dependencies": { + "tslib": "^2.3.0" + }, + "engines": { + "node": "^18.13.0 || >=20.9.0" + }, + "peerDependencies": { + "@angular/common": "17.3.11", + "@angular/compiler": "17.3.11", + "@angular/core": "17.3.11", + "@angular/platform-browser": "17.3.11" + } + }, + "node_modules/@angular/router": { + "version": "17.3.11", + "resolved": "https://registry.npmjs.org/@angular/router/-/router-17.3.11.tgz", + "integrity": "sha512-A3aU6uHAeJfsfCw1dgNXHn2Kjw/UieRMnFwENkzz96YFCvFPCEZjy/mODuE3zHludMuqVsJhM/uUxWu8ATRTcA==", + "dependencies": { + "tslib": "^2.3.0" + }, + "engines": { + "node": "^18.13.0 || >=20.9.0" + }, + "peerDependencies": { + "@angular/common": "17.3.11", + "@angular/core": "17.3.11", + "@angular/platform-browser": "17.3.11", + "rxjs": "^6.5.3 || ^7.4.0" + } + }, + "node_modules/@apidevtools/json-schema-ref-parser": { + "version": "9.0.6", + "resolved": "https://registry.npmjs.org/@apidevtools/json-schema-ref-parser/-/json-schema-ref-parser-9.0.6.tgz", + "integrity": "sha512-M3YgsLjI0lZxvrpeGVk9Ap032W6TPQkH6pRAZz81Ac3WUNF79VQooAFnp8umjvVzUmD93NkogxEwbSce7qMsUg==", + "dev": true, + "dependencies": { + "@jsdevtools/ono": "^7.1.3", + "call-me-maybe": "^1.0.1", + "js-yaml": "^3.13.1" + } + }, + "node_modules/@apidevtools/openapi-schemas": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@apidevtools/openapi-schemas/-/openapi-schemas-2.1.0.tgz", + "integrity": "sha512-Zc1AlqrJlX3SlpupFGpiLi2EbteyP7fXmUOGup6/DnkRgjP9bgMM/ag+n91rsv0U1Gpz0H3VILA/o3bW7Ua6BQ==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/@apidevtools/swagger-methods": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@apidevtools/swagger-methods/-/swagger-methods-3.0.2.tgz", + "integrity": "sha512-QAkD5kK2b1WfjDS/UQn/qQkbwF31uqRjPTrsCs5ZG9BQGAkjwvqGFjjPqAuzac/IYzpPtRzjCP1WrTuAIjMrXg==", + "dev": true + }, + "node_modules/@apidevtools/swagger-parser": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/@apidevtools/swagger-parser/-/swagger-parser-10.1.0.tgz", + "integrity": "sha512-9Kt7EuS/7WbMAUv2gSziqjvxwDbFSg3Xeyfuj5laUODX8o/k/CpsAKiQ8W7/R88eXFTMbJYg6+7uAmOWNKmwnw==", + "dev": true, + "dependencies": { + "@apidevtools/json-schema-ref-parser": "9.0.6", + "@apidevtools/openapi-schemas": "^2.1.0", + "@apidevtools/swagger-methods": "^3.0.2", + "@jsdevtools/ono": "^7.1.3", + "ajv": "^8.6.3", + "ajv-draft-04": "^1.0.0", + "call-me-maybe": "^1.0.1" + }, + "peerDependencies": { + "openapi-types": ">=7" + } + }, + "node_modules/@babel/code-frame": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.24.7.tgz", + "integrity": "sha512-BcYH1CVJBO9tvyIZ2jVeXgSIMvGZ2FDRvDdOIVQyuklNKSsx+eppDEBq/g47Ayw+RqNFE+URvOShmf+f/qwAlA==", + "dependencies": { + "@babel/highlight": "^7.24.7", + "picocolors": "^1.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/compat-data": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.24.7.tgz", + "integrity": "sha512-qJzAIcv03PyaWqxRgO4mSU3lihncDT296vnyuE2O8uA4w3UHWI4S3hgeZd1L8W1Bft40w9JxJ2b412iDUFFRhw==", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/core": { + "version": "7.24.0", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.24.0.tgz", + "integrity": "sha512-fQfkg0Gjkza3nf0c7/w6Xf34BW4YvzNfACRLmmb7XRLa6XHdR+K9AlJlxneFfWYf6uhOzuzZVTjF/8KfndZANw==", + "dependencies": { + "@ampproject/remapping": "^2.2.0", + "@babel/code-frame": "^7.23.5", + "@babel/generator": "^7.23.6", + "@babel/helper-compilation-targets": "^7.23.6", + "@babel/helper-module-transforms": "^7.23.3", + "@babel/helpers": "^7.24.0", + "@babel/parser": "^7.24.0", + "@babel/template": "^7.24.0", + "@babel/traverse": "^7.24.0", + "@babel/types": "^7.24.0", + "convert-source-map": "^2.0.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.2.3", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/babel" + } + }, + "node_modules/@babel/core/node_modules/convert-source-map": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", + "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==" + }, + "node_modules/@babel/core/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/generator": { + "version": "7.23.6", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.23.6.tgz", + "integrity": "sha512-qrSfCYxYQB5owCmGLbl8XRpX1ytXlpueOb0N0UmQwA073KZxejgQTzAmJezxvpwQD9uGtK2shHdi55QT+MbjIw==", + "dependencies": { + "@babel/types": "^7.23.6", + "@jridgewell/gen-mapping": "^0.3.2", + "@jridgewell/trace-mapping": "^0.3.17", + "jsesc": "^2.5.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-annotate-as-pure": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.22.5.tgz", + "integrity": "sha512-LvBTxu8bQSQkcyKOU+a1btnNFQ1dMAd0R6PyW3arXes06F6QLWLIrd681bxRPIXlrMGR3XYnW9JyML7dP3qgxg==", + "dev": true, + "dependencies": { + "@babel/types": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-builder-binary-assignment-operator-visitor": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.24.7.tgz", + "integrity": "sha512-xZeCVVdwb4MsDBkkyZ64tReWYrLRHlMN72vP7Bdm3OUOuyFZExhsHUUnuWnm2/XOlAJzR0LfPpB56WXZn0X/lA==", + "dev": true, + "dependencies": { + "@babel/traverse": "^7.24.7", + "@babel/types": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-compilation-targets": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.24.7.tgz", + "integrity": "sha512-ctSdRHBi20qWOfy27RUb4Fhp07KSJ3sXcuSvTrXrc4aG8NSYDo1ici3Vhg9bg69y5bj0Mr1lh0aeEgTvc12rMg==", + "dependencies": { + "@babel/compat-data": "^7.24.7", + "@babel/helper-validator-option": "^7.24.7", + "browserslist": "^4.22.2", + "lru-cache": "^5.1.1", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-compilation-targets/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/helper-create-class-features-plugin": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.24.7.tgz", + "integrity": "sha512-kTkaDl7c9vO80zeX1rJxnuRpEsD5tA81yh11X1gQo+PhSti3JS+7qeZo9U4RHobKRiFPKaGK3svUAeb8D0Q7eg==", + "dev": true, + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.24.7", + "@babel/helper-environment-visitor": "^7.24.7", + "@babel/helper-function-name": "^7.24.7", + "@babel/helper-member-expression-to-functions": "^7.24.7", + "@babel/helper-optimise-call-expression": "^7.24.7", + "@babel/helper-replace-supers": "^7.24.7", + "@babel/helper-skip-transparent-expression-wrappers": "^7.24.7", + "@babel/helper-split-export-declaration": "^7.24.7", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-create-class-features-plugin/node_modules/@babel/helper-annotate-as-pure": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.24.7.tgz", + "integrity": "sha512-BaDeOonYvhdKw+JoMVkAixAAJzG2jVPIwWoKBPdYuY9b452e2rPuI9QPYh3KpofZ3pW2akOmwZLOiOsHMiqRAg==", + "dev": true, + "dependencies": { + "@babel/types": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-create-class-features-plugin/node_modules/@babel/helper-split-export-declaration": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.24.7.tgz", + "integrity": "sha512-oy5V7pD+UvfkEATUKvIjvIAH/xCzfsFVw7ygW2SI6NClZzquT+mwdTfgfdbUiceh6iQO0CHtCPsyze/MZ2YbAA==", + "dev": true, + "dependencies": { + "@babel/types": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-create-class-features-plugin/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/helper-create-regexp-features-plugin": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.24.7.tgz", + "integrity": "sha512-03TCmXy2FtXJEZfbXDTSqq1fRJArk7lX9DOFC/47VthYcxyIOx+eXQmdo6DOQvrbpIix+KfXwvuXdFDZHxt+rA==", + "dev": true, + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.24.7", + "regexpu-core": "^5.3.1", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-create-regexp-features-plugin/node_modules/@babel/helper-annotate-as-pure": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.24.7.tgz", + "integrity": "sha512-BaDeOonYvhdKw+JoMVkAixAAJzG2jVPIwWoKBPdYuY9b452e2rPuI9QPYh3KpofZ3pW2akOmwZLOiOsHMiqRAg==", + "dev": true, + "dependencies": { + "@babel/types": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-create-regexp-features-plugin/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/helper-define-polyfill-provider": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.6.2.tgz", + "integrity": "sha512-LV76g+C502biUK6AyZ3LK10vDpDyCzZnhZFXkH1L75zHPj68+qc8Zfpx2th+gzwA2MzyK+1g/3EPl62yFnVttQ==", + "dev": true, + "dependencies": { + "@babel/helper-compilation-targets": "^7.22.6", + "@babel/helper-plugin-utils": "^7.22.5", + "debug": "^4.1.1", + "lodash.debounce": "^4.0.8", + "resolve": "^1.14.2" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/@babel/helper-environment-visitor": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.24.7.tgz", + "integrity": "sha512-DoiN84+4Gnd0ncbBOM9AZENV4a5ZiL39HYMyZJGZ/AZEykHYdJw0wW3kdcsh9/Kn+BRXHLkkklZ51ecPKmI1CQ==", + "dependencies": { + "@babel/types": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-function-name": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.24.7.tgz", + "integrity": "sha512-FyoJTsj/PEUWu1/TYRiXTIHc8lbw+TDYkZuoE43opPS5TrI7MyONBE1oNvfguEXAD9yhQRrVBnXdXzSLQl9XnA==", + "dependencies": { + "@babel/template": "^7.24.7", + "@babel/types": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-hoist-variables": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.24.7.tgz", + "integrity": "sha512-MJJwhkoGy5c4ehfoRyrJ/owKeMl19U54h27YYftT0o2teQ3FJ3nQUf/I3LlJsX4l3qlw7WRXUmiyajvHXoTubQ==", + "dependencies": { + "@babel/types": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-member-expression-to-functions": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.24.7.tgz", + "integrity": "sha512-LGeMaf5JN4hAT471eJdBs/GK1DoYIJ5GCtZN/EsL6KUiiDZOvO/eKE11AMZJa2zP4zk4qe9V2O/hxAmkRc8p6w==", + "dev": true, + "dependencies": { + "@babel/traverse": "^7.24.7", + "@babel/types": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-imports": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.24.7.tgz", + "integrity": "sha512-8AyH3C+74cgCVVXow/myrynrAGv+nTVg5vKu2nZph9x7RcRwzmh0VFallJuFTZ9mx6u4eSdXZfcOzSqTUm0HCA==", + "dependencies": { + "@babel/traverse": "^7.24.7", + "@babel/types": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-transforms": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.24.7.tgz", + "integrity": "sha512-1fuJEwIrp+97rM4RWdO+qrRsZlAeL1lQJoPqtCYWv0NL115XM93hIH4CSRln2w52SqvmY5hqdtauB6QFCDiZNQ==", + "dependencies": { + "@babel/helper-environment-visitor": "^7.24.7", + "@babel/helper-module-imports": "^7.24.7", + "@babel/helper-simple-access": "^7.24.7", + "@babel/helper-split-export-declaration": "^7.24.7", + "@babel/helper-validator-identifier": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-module-transforms/node_modules/@babel/helper-split-export-declaration": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.24.7.tgz", + "integrity": "sha512-oy5V7pD+UvfkEATUKvIjvIAH/xCzfsFVw7ygW2SI6NClZzquT+mwdTfgfdbUiceh6iQO0CHtCPsyze/MZ2YbAA==", + "dependencies": { + "@babel/types": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-optimise-call-expression": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.24.7.tgz", + "integrity": "sha512-jKiTsW2xmWwxT1ixIdfXUZp+P5yURx2suzLZr5Hi64rURpDYdMW0pv+Uf17EYk2Rd428Lx4tLsnjGJzYKDM/6A==", + "dev": true, + "dependencies": { + "@babel/types": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-plugin-utils": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.24.7.tgz", + "integrity": "sha512-Rq76wjt7yz9AAc1KnlRKNAi/dMSVWgDRx43FHoJEbcYU6xOWaE2dVPwcdTukJrjxS65GITyfbvEYHvkirZ6uEg==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-remap-async-to-generator": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.24.7.tgz", + "integrity": "sha512-9pKLcTlZ92hNZMQfGCHImUpDOlAgkkpqalWEeftW5FBya75k8Li2ilerxkM/uBEj01iBZXcCIB/bwvDYgWyibA==", + "dev": true, + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.24.7", + "@babel/helper-environment-visitor": "^7.24.7", + "@babel/helper-wrap-function": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-remap-async-to-generator/node_modules/@babel/helper-annotate-as-pure": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.24.7.tgz", + "integrity": "sha512-BaDeOonYvhdKw+JoMVkAixAAJzG2jVPIwWoKBPdYuY9b452e2rPuI9QPYh3KpofZ3pW2akOmwZLOiOsHMiqRAg==", + "dev": true, + "dependencies": { + "@babel/types": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-replace-supers": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.24.7.tgz", + "integrity": "sha512-qTAxxBM81VEyoAY0TtLrx1oAEJc09ZK67Q9ljQToqCnA+55eNwCORaxlKyu+rNfX86o8OXRUSNUnrtsAZXM9sg==", + "dev": true, + "dependencies": { + "@babel/helper-environment-visitor": "^7.24.7", + "@babel/helper-member-expression-to-functions": "^7.24.7", + "@babel/helper-optimise-call-expression": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-simple-access": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.24.7.tgz", + "integrity": "sha512-zBAIvbCMh5Ts+b86r/CjU+4XGYIs+R1j951gxI3KmmxBMhCg4oQMsv6ZXQ64XOm/cvzfU1FmoCyt6+owc5QMYg==", + "dependencies": { + "@babel/traverse": "^7.24.7", + "@babel/types": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-skip-transparent-expression-wrappers": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.24.7.tgz", + "integrity": "sha512-IO+DLT3LQUElMbpzlatRASEyQtfhSE0+m465v++3jyyXeBTBUjtVZg28/gHeV5mrTJqvEKhKroBGAvhW+qPHiQ==", + "dev": true, + "dependencies": { + "@babel/traverse": "^7.24.7", + "@babel/types": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-split-export-declaration": { + "version": "7.22.6", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz", + "integrity": "sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==", + "dev": true, + "dependencies": { + "@babel/types": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-string-parser": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.24.7.tgz", + "integrity": "sha512-7MbVt6xrwFQbunH2DNQsAP5sTGxfqQtErvBIvIMi6EQnbgUOuVYanvREcmFrOPhoXBrTtjhhP+lW+o5UfK+tDg==", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.24.7.tgz", + "integrity": "sha512-rR+PBcQ1SMQDDyF6X0wxtG8QyLCgUB0eRAGguqRLfkCA87l7yAP7ehq8SNj96OOGTO8OBV70KhuFYcIkHXOg0w==", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-option": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.24.7.tgz", + "integrity": "sha512-yy1/KvjhV/ZCL+SM7hBrvnZJ3ZuT9OuZgIJAGpPEToANvc3iM6iDvBnRjtElWibHU6n8/LPR/EjX9EtIEYO3pw==", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-wrap-function": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.24.7.tgz", + "integrity": "sha512-N9JIYk3TD+1vq/wn77YnJOqMtfWhNewNE+DJV4puD2X7Ew9J4JvrzrFDfTfyv5EgEXVy9/Wt8QiOErzEmv5Ifw==", + "dev": true, + "dependencies": { + "@babel/helper-function-name": "^7.24.7", + "@babel/template": "^7.24.7", + "@babel/traverse": "^7.24.7", + "@babel/types": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helpers": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.24.7.tgz", + "integrity": "sha512-NlmJJtvcw72yRJRcnCmGvSi+3jDEg8qFu3z0AFoymmzLx5ERVWyzd9kVXr7Th9/8yIJi2Zc6av4Tqz3wFs8QWg==", + "dependencies": { + "@babel/template": "^7.24.7", + "@babel/types": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/highlight": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.24.7.tgz", + "integrity": "sha512-EStJpq4OuY8xYfhGVXngigBJRWxftKX9ksiGDnmlY3o7B/V7KIAc9X4oiK87uPJSc/vs5L869bem5fhZa8caZw==", + "dependencies": { + "@babel/helper-validator-identifier": "^7.24.7", + "chalk": "^2.4.2", + "js-tokens": "^4.0.0", + "picocolors": "^1.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/parser": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.24.7.tgz", + "integrity": "sha512-9uUYRm6OqQrCqQdG1iCBwBPZgN8ciDBro2nIOFaiRz1/BCxaI7CNvQbDHvsArAC7Tw9Hda/B3U+6ui9u4HWXPw==", + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { + "version": "7.24.7", + "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.24.7.tgz", + "integrity": "sha512-unaQgZ/iRu/By6tsjMZzpeBZjChYfLYry6HrEXPoz3KmfF0sVBQ1l8zKMQ4xRGLWVsjuvB8nQfjNP/DcfEOCsg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.24.7.tgz", + "integrity": "sha512-+izXIbke1T33mY4MSNnrqhPXDz01WYhEf3yF5NbnUtkiNnm+XBZJl3kNfoK6NKmYlz/D07+l2GWVK/QfDkNCuQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.7", + "@babel/helper-skip-transparent-expression-wrappers": "^7.24.7", + "@babel/plugin-transform-optional-chaining": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.13.0" + } + }, + "node_modules/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.24.7.tgz", + "integrity": "sha512-utA4HuR6F4Vvcr+o4DnjL8fCOlgRFGbeeBEGNg3ZTrLFw6VWG5XmUrvcQ0FjIYMU2ST4XcR2Wsp7t9qOAPnxMg==", + "dev": true, + "dependencies": { + "@babel/helper-environment-visitor": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-proposal-private-property-in-object": { + "version": "7.21.0-placeholder-for-preset-env.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.21.0-placeholder-for-preset-env.2.tgz", + "integrity": "sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w==", + "dev": true, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-async-generators": { + "version": "7.8.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", + "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-class-properties": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", + "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-class-static-block": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz", + "integrity": "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-dynamic-import": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz", + "integrity": "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-export-namespace-from": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz", + "integrity": "sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.3" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-import-assertions": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.24.7.tgz", + "integrity": "sha512-Ec3NRUMoi8gskrkBe3fNmEQfxDvY8bgfQpz6jlk/41kX9eUjvpyqWU7PBP/pLAvMaSQjbMNKJmvX57jP+M6bPg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-import-attributes": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.24.7.tgz", + "integrity": "sha512-hbX+lKKeUMGihnK8nvKqmXBInriT3GVjzXKFriV3YC6APGxMbP8RZNFwy91+hocLXq90Mta+HshoB31802bb8A==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-import-meta": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz", + "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-json-strings": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", + "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-logical-assignment-operators": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", + "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-nullish-coalescing-operator": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", + "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-numeric-separator": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", + "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-object-rest-spread": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", + "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-optional-catch-binding": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", + "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-optional-chaining": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", + "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-private-property-in-object": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz", + "integrity": "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-top-level-await": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", + "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-unicode-sets-regex": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-unicode-sets-regex/-/plugin-syntax-unicode-sets-regex-7.18.6.tgz", + "integrity": "sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg==", + "dev": true, + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-transform-arrow-functions": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.24.7.tgz", + "integrity": "sha512-Dt9LQs6iEY++gXUwY03DNFat5C2NbO48jj+j/bSAz6b3HgPs39qcPiYt77fDObIcFwj3/C2ICX9YMwGflUoSHQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-async-generator-functions": { + "version": "7.23.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.23.9.tgz", + "integrity": "sha512-8Q3veQEDGe14dTYuwagbRtwxQDnytyg1JFu4/HwEMETeofocrB0U0ejBJIXoeG/t2oXZ8kzCyI0ZZfbT80VFNQ==", + "dev": true, + "dependencies": { + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-remap-async-to-generator": "^7.22.20", + "@babel/plugin-syntax-async-generators": "^7.8.4" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-async-to-generator": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.23.3.tgz", + "integrity": "sha512-A7LFsKi4U4fomjqXJlZg/u0ft/n8/7n7lpffUP/ZULx/DtV9SGlNKZolHH6PE8Xl1ngCc0M11OaeZptXVkfKSw==", + "dev": true, + "dependencies": { + "@babel/helper-module-imports": "^7.22.15", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-remap-async-to-generator": "^7.22.20" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-block-scoped-functions": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.24.7.tgz", + "integrity": "sha512-yO7RAz6EsVQDaBH18IDJcMB1HnrUn2FJ/Jslc/WtPPWcjhpUJXU/rjbwmluzp7v/ZzWcEhTMXELnnsz8djWDwQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-block-scoping": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.24.7.tgz", + "integrity": "sha512-Nd5CvgMbWc+oWzBsuaMcbwjJWAcp5qzrbg69SZdHSP7AMY0AbWFqFO0WTFCA1jxhMCwodRwvRec8k0QUbZk7RQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-class-properties": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.24.7.tgz", + "integrity": "sha512-vKbfawVYayKcSeSR5YYzzyXvsDFWU2mD8U5TFeXtbCPLFUqe7GyCgvO6XDHzje862ODrOwy6WCPmKeWHbCFJ4w==", + "dev": true, + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-class-static-block": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.24.7.tgz", + "integrity": "sha512-HMXK3WbBPpZQufbMG4B46A90PkuuhN9vBCb5T8+VAHqvAqvcLi+2cKoukcpmUYkszLhScU3l1iudhrks3DggRQ==", + "dev": true, + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7", + "@babel/plugin-syntax-class-static-block": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.12.0" + } + }, + "node_modules/@babel/plugin-transform-classes": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.24.7.tgz", + "integrity": "sha512-CFbbBigp8ln4FU6Bpy6g7sE8B/WmCmzvivzUC6xDAdWVsjYTXijpuuGJmYkAaoWAzcItGKT3IOAbxRItZ5HTjw==", + "dev": true, + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.24.7", + "@babel/helper-compilation-targets": "^7.24.7", + "@babel/helper-environment-visitor": "^7.24.7", + "@babel/helper-function-name": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7", + "@babel/helper-replace-supers": "^7.24.7", + "@babel/helper-split-export-declaration": "^7.24.7", + "globals": "^11.1.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-classes/node_modules/@babel/helper-annotate-as-pure": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.24.7.tgz", + "integrity": "sha512-BaDeOonYvhdKw+JoMVkAixAAJzG2jVPIwWoKBPdYuY9b452e2rPuI9QPYh3KpofZ3pW2akOmwZLOiOsHMiqRAg==", + "dev": true, + "dependencies": { + "@babel/types": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/plugin-transform-classes/node_modules/@babel/helper-split-export-declaration": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.24.7.tgz", + "integrity": "sha512-oy5V7pD+UvfkEATUKvIjvIAH/xCzfsFVw7ygW2SI6NClZzquT+mwdTfgfdbUiceh6iQO0CHtCPsyze/MZ2YbAA==", + "dev": true, + "dependencies": { + "@babel/types": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/plugin-transform-computed-properties": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.24.7.tgz", + "integrity": "sha512-25cS7v+707Gu6Ds2oY6tCkUwsJ9YIDbggd9+cu9jzzDgiNq7hR/8dkzxWfKWnTic26vsI3EsCXNd4iEB6e8esQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.7", + "@babel/template": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-destructuring": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.24.7.tgz", + "integrity": "sha512-19eJO/8kdCQ9zISOf+SEUJM/bAUIsvY3YDnXZTupUCQ8LgrWnsG/gFB9dvXqdXnRXMAM8fvt7b0CBKQHNGy1mw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-dotall-regex": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.24.7.tgz", + "integrity": "sha512-ZOA3W+1RRTSWvyqcMJDLqbchh7U4NRGqwRfFSVbOLS/ePIP4vHB5e8T8eXcuqyN1QkgKyj5wuW0lcS85v4CrSw==", + "dev": true, + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-duplicate-keys": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.24.7.tgz", + "integrity": "sha512-JdYfXyCRihAe46jUIliuL2/s0x0wObgwwiGxw/UbgJBr20gQBThrokO4nYKgWkD7uBaqM7+9x5TU7NkExZJyzw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-dynamic-import": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.24.7.tgz", + "integrity": "sha512-sc3X26PhZQDb3JhORmakcbvkeInvxz+A8oda99lj7J60QRuPZvNAk9wQlTBS1ZynelDrDmTU4pw1tyc5d5ZMUg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.7", + "@babel/plugin-syntax-dynamic-import": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-exponentiation-operator": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.24.7.tgz", + "integrity": "sha512-Rqe/vSc9OYgDajNIK35u7ot+KeCoetqQYFXM4Epf7M7ez3lWlOjrDjrwMei6caCVhfdw+mIKD4cgdGNy5JQotQ==", + "dev": true, + "dependencies": { + "@babel/helper-builder-binary-assignment-operator-visitor": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-export-namespace-from": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.24.7.tgz", + "integrity": "sha512-v0K9uNYsPL3oXZ/7F9NNIbAj2jv1whUEtyA6aujhekLs56R++JDQuzRcP2/z4WX5Vg/c5lE9uWZA0/iUoFhLTA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.7", + "@babel/plugin-syntax-export-namespace-from": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-for-of": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.24.7.tgz", + "integrity": "sha512-wo9ogrDG1ITTTBsy46oGiN1dS9A7MROBTcYsfS8DtsImMkHk9JXJ3EWQM6X2SUw4x80uGPlwj0o00Uoc6nEE3g==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.7", + "@babel/helper-skip-transparent-expression-wrappers": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-function-name": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.24.7.tgz", + "integrity": "sha512-U9FcnA821YoILngSmYkW6FjyQe2TyZD5pHt4EVIhmcTkrJw/3KqcrRSxuOo5tFZJi7TE19iDyI1u+weTI7bn2w==", + "dev": true, + "dependencies": { + "@babel/helper-compilation-targets": "^7.24.7", + "@babel/helper-function-name": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-json-strings": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.24.7.tgz", + "integrity": "sha512-2yFnBGDvRuxAaE/f0vfBKvtnvvqU8tGpMHqMNpTN2oWMKIR3NqFkjaAgGwawhqK/pIN2T3XdjGPdaG0vDhOBGw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.7", + "@babel/plugin-syntax-json-strings": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-literals": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.24.7.tgz", + "integrity": "sha512-vcwCbb4HDH+hWi8Pqenwnjy+UiklO4Kt1vfspcQYFhJdpthSnW8XvWGyDZWKNVrVbVViI/S7K9PDJZiUmP2fYQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-logical-assignment-operators": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.24.7.tgz", + "integrity": "sha512-4D2tpwlQ1odXmTEIFWy9ELJcZHqrStlzK/dAOWYyxX3zT0iXQB6banjgeOJQXzEc4S0E0a5A+hahxPaEFYftsw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.7", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-member-expression-literals": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.24.7.tgz", + "integrity": "sha512-T/hRC1uqrzXMKLQ6UCwMT85S3EvqaBXDGf0FaMf4446Qx9vKwlghvee0+uuZcDUCZU5RuNi4781UQ7R308zzBw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-amd": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.24.7.tgz", + "integrity": "sha512-9+pB1qxV3vs/8Hdmz/CulFB8w2tuu6EB94JZFsjdqxQokwGa9Unap7Bo2gGBGIvPmDIVvQrom7r5m/TCDMURhg==", + "dev": true, + "dependencies": { + "@babel/helper-module-transforms": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-commonjs": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.24.7.tgz", + "integrity": "sha512-iFI8GDxtevHJ/Z22J5xQpVqFLlMNstcLXh994xifFwxxGslr2ZXXLWgtBeLctOD63UFDArdvN6Tg8RFw+aEmjQ==", + "dev": true, + "dependencies": { + "@babel/helper-module-transforms": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7", + "@babel/helper-simple-access": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-systemjs": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.24.7.tgz", + "integrity": "sha512-GYQE0tW7YoaN13qFh3O1NCY4MPkUiAH3fiF7UcV/I3ajmDKEdG3l+UOcbAm4zUE3gnvUU+Eni7XrVKo9eO9auw==", + "dev": true, + "dependencies": { + "@babel/helper-hoist-variables": "^7.24.7", + "@babel/helper-module-transforms": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7", + "@babel/helper-validator-identifier": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-umd": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.24.7.tgz", + "integrity": "sha512-3aytQvqJ/h9z4g8AsKPLvD4Zqi2qT+L3j7XoFFu1XBlZWEl2/1kWnhmAbxpLgPrHSY0M6UA02jyTiwUVtiKR6A==", + "dev": true, + "dependencies": { + "@babel/helper-module-transforms": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-named-capturing-groups-regex": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.24.7.tgz", + "integrity": "sha512-/jr7h/EWeJtk1U/uz2jlsCioHkZk1JJZVcc8oQsJ1dUlaJD83f4/6Zeh2aHt9BIFokHIsSeDfhUmju0+1GPd6g==", + "dev": true, + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-transform-new-target": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.24.7.tgz", + "integrity": "sha512-RNKwfRIXg4Ls/8mMTza5oPF5RkOW8Wy/WgMAp1/F1yZ8mMbtwXW+HDoJiOsagWrAhI5f57Vncrmr9XeT4CVapA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-nullish-coalescing-operator": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.24.7.tgz", + "integrity": "sha512-Ts7xQVk1OEocqzm8rHMXHlxvsfZ0cEF2yomUqpKENHWMF4zKk175Y4q8H5knJes6PgYad50uuRmt3UJuhBw8pQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.7", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-numeric-separator": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.24.7.tgz", + "integrity": "sha512-e6q1TiVUzvH9KRvicuxdBTUj4AdKSRwzIyFFnfnezpCfP2/7Qmbb8qbU2j7GODbl4JMkblitCQjKYUaX/qkkwA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.7", + "@babel/plugin-syntax-numeric-separator": "^7.10.4" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-object-rest-spread": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.24.7.tgz", + "integrity": "sha512-4QrHAr0aXQCEFni2q4DqKLD31n2DL+RxcwnNjDFkSG0eNQ/xCavnRkfCUjsyqGC2OviNJvZOF/mQqZBw7i2C5Q==", + "dev": true, + "dependencies": { + "@babel/helper-compilation-targets": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-transform-parameters": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-object-super": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.24.7.tgz", + "integrity": "sha512-A/vVLwN6lBrMFmMDmPPz0jnE6ZGx7Jq7d6sT/Ev4H65RER6pZ+kczlf1DthF5N0qaPHBsI7UXiE8Zy66nmAovg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.7", + "@babel/helper-replace-supers": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-optional-catch-binding": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.24.7.tgz", + "integrity": "sha512-uLEndKqP5BfBbC/5jTwPxLh9kqPWWgzN/f8w6UwAIirAEqiIVJWWY312X72Eub09g5KF9+Zn7+hT7sDxmhRuKA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.7", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-optional-chaining": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.24.7.tgz", + "integrity": "sha512-tK+0N9yd4j+x/4hxF3F0e0fu/VdcxU18y5SevtyM/PCFlQvXbR0Zmlo2eBrKtVipGNFzpq56o8WsIIKcJFUCRQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.7", + "@babel/helper-skip-transparent-expression-wrappers": "^7.24.7", + "@babel/plugin-syntax-optional-chaining": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-parameters": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.24.7.tgz", + "integrity": "sha512-yGWW5Rr+sQOhK0Ot8hjDJuxU3XLRQGflvT4lhlSY0DFvdb3TwKaY26CJzHtYllU0vT9j58hc37ndFPsqT1SrzA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-private-methods": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.24.7.tgz", + "integrity": "sha512-COTCOkG2hn4JKGEKBADkA8WNb35TGkkRbI5iT845dB+NyqgO8Hn+ajPbSnIQznneJTa3d30scb6iz/DhH8GsJQ==", + "dev": true, + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-private-property-in-object": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.24.7.tgz", + "integrity": "sha512-9z76mxwnwFxMyxZWEgdgECQglF2Q7cFLm0kMf8pGwt+GSJsY0cONKj/UuO4bOH0w/uAel3ekS4ra5CEAyJRmDA==", + "dev": true, + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.24.7", + "@babel/helper-create-class-features-plugin": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7", + "@babel/plugin-syntax-private-property-in-object": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-private-property-in-object/node_modules/@babel/helper-annotate-as-pure": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.24.7.tgz", + "integrity": "sha512-BaDeOonYvhdKw+JoMVkAixAAJzG2jVPIwWoKBPdYuY9b452e2rPuI9QPYh3KpofZ3pW2akOmwZLOiOsHMiqRAg==", + "dev": true, + "dependencies": { + "@babel/types": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/plugin-transform-property-literals": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.24.7.tgz", + "integrity": "sha512-EMi4MLQSHfd2nrCqQEWxFdha2gBCqU4ZcCng4WBGZ5CJL4bBRW0ptdqqDdeirGZcpALazVVNJqRmsO8/+oNCBA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-regenerator": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.24.7.tgz", + "integrity": "sha512-lq3fvXPdimDrlg6LWBoqj+r/DEWgONuwjuOuQCSYgRroXDH/IdM1C0IZf59fL5cHLpjEH/O6opIRBbqv7ELnuA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.7", + "regenerator-transform": "^0.15.2" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-reserved-words": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.24.7.tgz", + "integrity": "sha512-0DUq0pHcPKbjFZCfTss/pGkYMfy3vFWydkUBd9r0GHpIyfs2eCDENvqadMycRS9wZCXR41wucAfJHJmwA0UmoQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-runtime": { + "version": "7.24.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.24.0.tgz", + "integrity": "sha512-zc0GA5IitLKJrSfXlXmp8KDqLrnGECK7YRfQBmEKg1NmBOQ7e+KuclBEKJgzifQeUYLdNiAw4B4bjyvzWVLiSA==", + "dev": true, + "dependencies": { + "@babel/helper-module-imports": "^7.22.15", + "@babel/helper-plugin-utils": "^7.24.0", + "babel-plugin-polyfill-corejs2": "^0.4.8", + "babel-plugin-polyfill-corejs3": "^0.9.0", + "babel-plugin-polyfill-regenerator": "^0.5.5", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-runtime/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/plugin-transform-shorthand-properties": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.24.7.tgz", + "integrity": "sha512-KsDsevZMDsigzbA09+vacnLpmPH4aWjcZjXdyFKGzpplxhbeB4wYtury3vglQkg6KM/xEPKt73eCjPPf1PgXBA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-spread": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.24.7.tgz", + "integrity": "sha512-x96oO0I09dgMDxJaANcRyD4ellXFLLiWhuwDxKZX5g2rWP1bTPkBSwCYv96VDXVT1bD9aPj8tppr5ITIh8hBng==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.7", + "@babel/helper-skip-transparent-expression-wrappers": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-sticky-regex": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.24.7.tgz", + "integrity": "sha512-kHPSIJc9v24zEml5geKg9Mjx5ULpfncj0wRpYtxbvKyTtHCYDkVE3aHQ03FrpEo4gEe2vrJJS1Y9CJTaThA52g==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-template-literals": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.24.7.tgz", + "integrity": "sha512-AfDTQmClklHCOLxtGoP7HkeMw56k1/bTQjwsfhL6pppo/M4TOBSq+jjBUBLmV/4oeFg4GWMavIl44ZeCtmmZTw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-typeof-symbol": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.24.7.tgz", + "integrity": "sha512-VtR8hDy7YLB7+Pet9IarXjg/zgCMSF+1mNS/EQEiEaUPoFXCVsHG64SIxcaaI2zJgRiv+YmgaQESUfWAdbjzgg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-escapes": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.24.7.tgz", + "integrity": "sha512-U3ap1gm5+4edc2Q/P+9VrBNhGkfnf+8ZqppY71Bo/pzZmXhhLdqgaUl6cuB07O1+AQJtCLfaOmswiNbSQ9ivhw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-property-regex": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.24.7.tgz", + "integrity": "sha512-uH2O4OV5M9FZYQrwc7NdVmMxQJOCCzFeYudlZSzUAHRFeOujQefa92E74TQDVskNHCzOXoigEuoyzHDhaEaK5w==", + "dev": true, + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-regex": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.24.7.tgz", + "integrity": "sha512-hlQ96MBZSAXUq7ltkjtu3FJCCSMx/j629ns3hA3pXnBXjanNP0LHi+JpPeA81zaWgVK1VGH95Xuy7u0RyQ8kMg==", + "dev": true, + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-sets-regex": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.24.7.tgz", + "integrity": "sha512-2G8aAvF4wy1w/AGZkemprdGMRg5o6zPNhbHVImRz3lss55TYCBd6xStN19rt8XJHq20sqV0JbyWjOWwQRwV/wg==", + "dev": true, + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/preset-env": { + "version": "7.24.0", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.24.0.tgz", + "integrity": "sha512-ZxPEzV9IgvGn73iK0E6VB9/95Nd7aMFpbE0l8KQFDG70cOV9IxRP7Y2FUPmlK0v6ImlLqYX50iuZ3ZTVhOF2lA==", + "dev": true, + "dependencies": { + "@babel/compat-data": "^7.23.5", + "@babel/helper-compilation-targets": "^7.23.6", + "@babel/helper-plugin-utils": "^7.24.0", + "@babel/helper-validator-option": "^7.23.5", + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.23.3", + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.23.3", + "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": "^7.23.7", + "@babel/plugin-proposal-private-property-in-object": "7.21.0-placeholder-for-preset-env.2", + "@babel/plugin-syntax-async-generators": "^7.8.4", + "@babel/plugin-syntax-class-properties": "^7.12.13", + "@babel/plugin-syntax-class-static-block": "^7.14.5", + "@babel/plugin-syntax-dynamic-import": "^7.8.3", + "@babel/plugin-syntax-export-namespace-from": "^7.8.3", + "@babel/plugin-syntax-import-assertions": "^7.23.3", + "@babel/plugin-syntax-import-attributes": "^7.23.3", + "@babel/plugin-syntax-import-meta": "^7.10.4", + "@babel/plugin-syntax-json-strings": "^7.8.3", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", + "@babel/plugin-syntax-numeric-separator": "^7.10.4", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", + "@babel/plugin-syntax-optional-chaining": "^7.8.3", + "@babel/plugin-syntax-private-property-in-object": "^7.14.5", + "@babel/plugin-syntax-top-level-await": "^7.14.5", + "@babel/plugin-syntax-unicode-sets-regex": "^7.18.6", + "@babel/plugin-transform-arrow-functions": "^7.23.3", + "@babel/plugin-transform-async-generator-functions": "^7.23.9", + "@babel/plugin-transform-async-to-generator": "^7.23.3", + "@babel/plugin-transform-block-scoped-functions": "^7.23.3", + "@babel/plugin-transform-block-scoping": "^7.23.4", + "@babel/plugin-transform-class-properties": "^7.23.3", + "@babel/plugin-transform-class-static-block": "^7.23.4", + "@babel/plugin-transform-classes": "^7.23.8", + "@babel/plugin-transform-computed-properties": "^7.23.3", + "@babel/plugin-transform-destructuring": "^7.23.3", + "@babel/plugin-transform-dotall-regex": "^7.23.3", + "@babel/plugin-transform-duplicate-keys": "^7.23.3", + "@babel/plugin-transform-dynamic-import": "^7.23.4", + "@babel/plugin-transform-exponentiation-operator": "^7.23.3", + "@babel/plugin-transform-export-namespace-from": "^7.23.4", + "@babel/plugin-transform-for-of": "^7.23.6", + "@babel/plugin-transform-function-name": "^7.23.3", + "@babel/plugin-transform-json-strings": "^7.23.4", + "@babel/plugin-transform-literals": "^7.23.3", + "@babel/plugin-transform-logical-assignment-operators": "^7.23.4", + "@babel/plugin-transform-member-expression-literals": "^7.23.3", + "@babel/plugin-transform-modules-amd": "^7.23.3", + "@babel/plugin-transform-modules-commonjs": "^7.23.3", + "@babel/plugin-transform-modules-systemjs": "^7.23.9", + "@babel/plugin-transform-modules-umd": "^7.23.3", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.22.5", + "@babel/plugin-transform-new-target": "^7.23.3", + "@babel/plugin-transform-nullish-coalescing-operator": "^7.23.4", + "@babel/plugin-transform-numeric-separator": "^7.23.4", + "@babel/plugin-transform-object-rest-spread": "^7.24.0", + "@babel/plugin-transform-object-super": "^7.23.3", + "@babel/plugin-transform-optional-catch-binding": "^7.23.4", + "@babel/plugin-transform-optional-chaining": "^7.23.4", + "@babel/plugin-transform-parameters": "^7.23.3", + "@babel/plugin-transform-private-methods": "^7.23.3", + "@babel/plugin-transform-private-property-in-object": "^7.23.4", + "@babel/plugin-transform-property-literals": "^7.23.3", + "@babel/plugin-transform-regenerator": "^7.23.3", + "@babel/plugin-transform-reserved-words": "^7.23.3", + "@babel/plugin-transform-shorthand-properties": "^7.23.3", + "@babel/plugin-transform-spread": "^7.23.3", + "@babel/plugin-transform-sticky-regex": "^7.23.3", + "@babel/plugin-transform-template-literals": "^7.23.3", + "@babel/plugin-transform-typeof-symbol": "^7.23.3", + "@babel/plugin-transform-unicode-escapes": "^7.23.3", + "@babel/plugin-transform-unicode-property-regex": "^7.23.3", + "@babel/plugin-transform-unicode-regex": "^7.23.3", + "@babel/plugin-transform-unicode-sets-regex": "^7.23.3", + "@babel/preset-modules": "0.1.6-no-external-plugins", + "babel-plugin-polyfill-corejs2": "^0.4.8", + "babel-plugin-polyfill-corejs3": "^0.9.0", + "babel-plugin-polyfill-regenerator": "^0.5.5", + "core-js-compat": "^3.31.0", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/preset-env/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/preset-modules": { + "version": "0.1.6-no-external-plugins", + "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.6-no-external-plugins.tgz", + "integrity": "sha512-HrcgcIESLm9aIR842yhJ5RWan/gebQUJ6E/E5+rf0y9o6oj7w0Br+sWuL6kEQ/o/AdfvR1Je9jG18/gnpwjEyA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/types": "^7.4.4", + "esutils": "^2.0.2" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/@babel/regjsgen": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/@babel/regjsgen/-/regjsgen-0.8.0.tgz", + "integrity": "sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA==", + "dev": true + }, + "node_modules/@babel/runtime": { + "version": "7.24.0", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.24.0.tgz", + "integrity": "sha512-Chk32uHMg6TnQdvw2e9IlqPpFX/6NLuK0Ys2PqLb7/gL5uFn9mXvK715FGLlOLQrcO4qIkNHkvPGktzzXexsFw==", + "dev": true, + "dependencies": { + "regenerator-runtime": "^0.14.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/template": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.24.7.tgz", + "integrity": "sha512-jYqfPrU9JTF0PmPy1tLYHW4Mp4KlgxJD9l2nP9fD6yT/ICi554DmrWBAEYpIelzjHf1msDP3PxJIRt/nFNfBig==", + "dependencies": { + "@babel/code-frame": "^7.24.7", + "@babel/parser": "^7.24.7", + "@babel/types": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/traverse": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.24.7.tgz", + "integrity": "sha512-yb65Ed5S/QAcewNPh0nZczy9JdYXkkAbIsEo+P7BE7yO3txAY30Y/oPa3QkQ5It3xVG2kpKMg9MsdxZaO31uKA==", + "dependencies": { + "@babel/code-frame": "^7.24.7", + "@babel/generator": "^7.24.7", + "@babel/helper-environment-visitor": "^7.24.7", + "@babel/helper-function-name": "^7.24.7", + "@babel/helper-hoist-variables": "^7.24.7", + "@babel/helper-split-export-declaration": "^7.24.7", + "@babel/parser": "^7.24.7", + "@babel/types": "^7.24.7", + "debug": "^4.3.1", + "globals": "^11.1.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/traverse/node_modules/@babel/generator": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.24.7.tgz", + "integrity": "sha512-oipXieGC3i45Y1A41t4tAqpnEZWgB/lC6Ehh6+rOviR5XWpTtMmLN+fGjz9vOiNRt0p6RtO6DtD0pdU3vpqdSA==", + "dependencies": { + "@babel/types": "^7.24.7", + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.25", + "jsesc": "^2.5.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/traverse/node_modules/@babel/helper-split-export-declaration": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.24.7.tgz", + "integrity": "sha512-oy5V7pD+UvfkEATUKvIjvIAH/xCzfsFVw7ygW2SI6NClZzquT+mwdTfgfdbUiceh6iQO0CHtCPsyze/MZ2YbAA==", + "dependencies": { + "@babel/types": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/types": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.24.7.tgz", + "integrity": "sha512-XEFXSlxiG5td2EJRe8vOmRbaXVgfcBlszKujvVmWIK/UpywWljQCfzAv3RQCGujWQ1RD4YYWEAqDXfuJiy8f5Q==", + "dependencies": { + "@babel/helper-string-parser": "^7.24.7", + "@babel/helper-validator-identifier": "^7.24.7", + "to-fast-properties": "^2.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@colors/colors": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@colors/colors/-/colors-1.5.0.tgz", + "integrity": "sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==", + "dev": true, + "engines": { + "node": ">=0.1.90" + } + }, + "node_modules/@discoveryjs/json-ext": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz", + "integrity": "sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw==", + "dev": true, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/@dsherret/to-absolute-glob": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@dsherret/to-absolute-glob/-/to-absolute-glob-2.0.2.tgz", + "integrity": "sha512-InCaQ/KEOcFtAFztn47wadritBLP2nT6m/ucbBnIgI5YwxuMzKKCHtqazR2+D1yR6y1ZTnPea9aLFEUrTttUSQ==", + "dev": true, + "dependencies": { + "is-absolute": "^1.0.0", + "is-negated-glob": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/@esbuild/aix-ppc64": { + "version": "0.20.1", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.20.1.tgz", + "integrity": "sha512-m55cpeupQ2DbuRGQMMZDzbv9J9PgVelPjlcmM5kxHnrBdBx6REaEd7LamYV7Dm8N7rCyR/XwU6rVP8ploKtIkA==", + "cpu": [ + "ppc64" + ], + "dev": true, + "optional": true, + "os": [ + "aix" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-arm": { + "version": "0.20.1", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.20.1.tgz", + "integrity": "sha512-4j0+G27/2ZXGWR5okcJi7pQYhmkVgb4D7UKwxcqrjhvp5TKWx3cUjgB1CGj1mfdmJBQ9VnUGgUhign+FPF2Zgw==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-arm64": { + "version": "0.20.1", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.20.1.tgz", + "integrity": "sha512-hCnXNF0HM6AjowP+Zou0ZJMWWa1VkD77BXe959zERgGJBBxB+sV+J9f/rcjeg2c5bsukD/n17RKWXGFCO5dD5A==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-x64": { + "version": "0.20.1", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.20.1.tgz", + "integrity": "sha512-MSfZMBoAsnhpS+2yMFYIQUPs8Z19ajwfuaSZx+tSl09xrHZCjbeXXMsUF/0oq7ojxYEpsSo4c0SfjxOYXRbpaA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/darwin-arm64": { + "version": "0.20.1", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.20.1.tgz", + "integrity": "sha512-Ylk6rzgMD8klUklGPzS414UQLa5NPXZD5tf8JmQU8GQrj6BrFA/Ic9tb2zRe1kOZyCbGl+e8VMbDRazCEBqPvA==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/darwin-x64": { + "version": "0.20.1", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.20.1.tgz", + "integrity": "sha512-pFIfj7U2w5sMp52wTY1XVOdoxw+GDwy9FsK3OFz4BpMAjvZVs0dT1VXs8aQm22nhwoIWUmIRaE+4xow8xfIDZA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/freebsd-arm64": { + "version": "0.20.1", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.20.1.tgz", + "integrity": "sha512-UyW1WZvHDuM4xDz0jWun4qtQFauNdXjXOtIy7SYdf7pbxSWWVlqhnR/T2TpX6LX5NI62spt0a3ldIIEkPM6RHw==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/freebsd-x64": { + "version": "0.20.1", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.20.1.tgz", + "integrity": "sha512-itPwCw5C+Jh/c624vcDd9kRCCZVpzpQn8dtwoYIt2TJF3S9xJLiRohnnNrKwREvcZYx0n8sCSbvGH349XkcQeg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-arm": { + "version": "0.20.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.20.1.tgz", + "integrity": "sha512-LojC28v3+IhIbfQ+Vu4Ut5n3wKcgTu6POKIHN9Wpt0HnfgUGlBuyDDQR4jWZUZFyYLiz4RBBBmfU6sNfn6RhLw==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-arm64": { + "version": "0.20.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.20.1.tgz", + "integrity": "sha512-cX8WdlF6Cnvw/DO9/X7XLH2J6CkBnz7Twjpk56cshk9sjYVcuh4sXQBy5bmTwzBjNVZze2yaV1vtcJS04LbN8w==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-ia32": { + "version": "0.20.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.20.1.tgz", + "integrity": "sha512-4H/sQCy1mnnGkUt/xszaLlYJVTz3W9ep52xEefGtd6yXDQbz/5fZE5dFLUgsPdbUOQANcVUa5iO6g3nyy5BJiw==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-loong64": { + "version": "0.20.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.20.1.tgz", + "integrity": "sha512-c0jgtB+sRHCciVXlyjDcWb2FUuzlGVRwGXgI+3WqKOIuoo8AmZAddzeOHeYLtD+dmtHw3B4Xo9wAUdjlfW5yYA==", + "cpu": [ + "loong64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-mips64el": { + "version": "0.20.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.20.1.tgz", + "integrity": "sha512-TgFyCfIxSujyuqdZKDZ3yTwWiGv+KnlOeXXitCQ+trDODJ+ZtGOzLkSWngynP0HZnTsDyBbPy7GWVXWaEl6lhA==", + "cpu": [ + "mips64el" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-ppc64": { + "version": "0.20.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.20.1.tgz", + "integrity": "sha512-b+yuD1IUeL+Y93PmFZDZFIElwbmFfIKLKlYI8M6tRyzE6u7oEP7onGk0vZRh8wfVGC2dZoy0EqX1V8qok4qHaw==", + "cpu": [ + "ppc64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-riscv64": { + "version": "0.20.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.20.1.tgz", + "integrity": "sha512-wpDlpE0oRKZwX+GfomcALcouqjjV8MIX8DyTrxfyCfXxoKQSDm45CZr9fanJ4F6ckD4yDEPT98SrjvLwIqUCgg==", + "cpu": [ + "riscv64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-s390x": { + "version": "0.20.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.20.1.tgz", + "integrity": "sha512-5BepC2Au80EohQ2dBpyTquqGCES7++p7G+7lXe1bAIvMdXm4YYcEfZtQrP4gaoZ96Wv1Ute61CEHFU7h4FMueQ==", + "cpu": [ + "s390x" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-x64": { + "version": "0.20.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.20.1.tgz", + "integrity": "sha512-5gRPk7pKuaIB+tmH+yKd2aQTRpqlf1E4f/mC+tawIm/CGJemZcHZpp2ic8oD83nKgUPMEd0fNanrnFljiruuyA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/netbsd-x64": { + "version": "0.20.1", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.20.1.tgz", + "integrity": "sha512-4fL68JdrLV2nVW2AaWZBv3XEm3Ae3NZn/7qy2KGAt3dexAgSVT+Hc97JKSZnqezgMlv9x6KV0ZkZY7UO5cNLCg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/openbsd-x64": { + "version": "0.20.1", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.20.1.tgz", + "integrity": "sha512-GhRuXlvRE+twf2ES+8REbeCb/zeikNqwD3+6S5y5/x+DYbAQUNl0HNBs4RQJqrechS4v4MruEr8ZtAin/hK5iw==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/sunos-x64": { + "version": "0.20.1", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.20.1.tgz", + "integrity": "sha512-ZnWEyCM0G1Ex6JtsygvC3KUUrlDXqOihw8RicRuQAzw+c4f1D66YlPNNV3rkjVW90zXVsHwZYWbJh3v+oQFM9Q==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-arm64": { + "version": "0.20.1", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.20.1.tgz", + "integrity": "sha512-QZ6gXue0vVQY2Oon9WyLFCdSuYbXSoxaZrPuJ4c20j6ICedfsDilNPYfHLlMH7vGfU5DQR0czHLmJvH4Nzis/A==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-ia32": { + "version": "0.20.1", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.20.1.tgz", + "integrity": "sha512-HzcJa1NcSWTAU0MJIxOho8JftNp9YALui3o+Ny7hCh0v5f90nprly1U3Sj1Ldj/CvKKdvvFsCRvDkpsEMp4DNw==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-x64": { + "version": "0.20.1", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.20.1.tgz", + "integrity": "sha512-0MBh53o6XtI6ctDnRMeQ+xoCN8kD2qI1rY1KgF/xdWQwoFeKou7puvDfV8/Wv4Ctx2rRpET/gGdz3YlNtNACSA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@isaacs/cliui": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", + "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", + "dev": true, + "dependencies": { + "string-width": "^5.1.2", + "string-width-cjs": "npm:string-width@^4.2.0", + "strip-ansi": "^7.0.1", + "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", + "wrap-ansi": "^8.1.0", + "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@isaacs/cliui/node_modules/ansi-regex": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", + "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/@isaacs/cliui/node_modules/ansi-styles": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", + "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@isaacs/cliui/node_modules/emoji-regex": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", + "dev": true + }, + "node_modules/@isaacs/cliui/node_modules/string-width": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", + "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", + "dev": true, + "dependencies": { + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@isaacs/cliui/node_modules/strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "dev": true, + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "node_modules/@isaacs/cliui/node_modules/wrap-ansi": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", + "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^6.1.0", + "string-width": "^5.0.1", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/@istanbuljs/load-nyc-config": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz", + "integrity": "sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==", + "dev": true, + "dependencies": { + "camelcase": "^5.3.1", + "find-up": "^4.1.0", + "get-package-type": "^0.1.0", + "js-yaml": "^3.13.1", + "resolve-from": "^5.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@istanbuljs/schema": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz", + "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz", + "integrity": "sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==", + "dependencies": { + "@jridgewell/set-array": "^1.2.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.24" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", + "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/set-array": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz", + "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/source-map": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.6.tgz", + "integrity": "sha512-1ZJTZebgqllO79ue2bm3rIGud/bOe0pP5BjSRCRxxYkEZS8STV7zN84UBbiYu7jy+eCKSnVIUgoWWE/tt+shMQ==", + "dev": true, + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.25" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.4.15", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", + "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==" + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.25", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", + "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", + "dependencies": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } + }, + "node_modules/@jsdevtools/ono": { + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/@jsdevtools/ono/-/ono-7.1.3.tgz", + "integrity": "sha512-4JQNk+3mVzK3xh2rqd6RB4J46qUR19azEHBneZyTZM+c456qOrbbM/5xcR8huNCCcbVt7+UmizG6GuUvPvKUYg==", + "dev": true + }, + "node_modules/@leichtgewicht/ip-codec": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@leichtgewicht/ip-codec/-/ip-codec-2.0.5.tgz", + "integrity": "sha512-Vo+PSpZG2/fmgmiNzYK9qWRh8h/CHrwD0mo1h1DzL4yzHNSfWYujGTYsWGreD000gcgmZ7K4Ys6Tx9TxtsKdDw==", + "dev": true + }, + "node_modules/@ljharb/through": { + "version": "2.3.13", + "resolved": "https://registry.npmjs.org/@ljharb/through/-/through-2.3.13.tgz", + "integrity": "sha512-/gKJun8NNiWGZJkGzI/Ragc53cOdcLNdzjLaIa+GEjguQs0ulsurx8WN0jijdK9yPqDvziX995sMRLyLt1uZMQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/@lukeed/csprng": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@lukeed/csprng/-/csprng-1.1.0.tgz", + "integrity": "sha512-Z7C/xXCiGWsg0KuKsHTKJxbWhpI3Vs5GwLfOean7MGyVFGqdRgBbAjOCh6u4bbjPc/8MJ2pZmK/0DLdCbivLDA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@material/animation": { + "version": "15.0.0-canary.7f224ddd4.0", + "resolved": "https://registry.npmjs.org/@material/animation/-/animation-15.0.0-canary.7f224ddd4.0.tgz", + "integrity": "sha512-1GSJaPKef+7HRuV+HusVZHps64cmZuOItDbt40tjJVaikcaZvwmHlcTxRIqzcRoCdt5ZKHh3NoO7GB9Khg4Jnw==", + "dependencies": { + "tslib": "^2.1.0" + } + }, + "node_modules/@material/auto-init": { + "version": "15.0.0-canary.7f224ddd4.0", + "resolved": "https://registry.npmjs.org/@material/auto-init/-/auto-init-15.0.0-canary.7f224ddd4.0.tgz", + "integrity": "sha512-t7ZGpRJ3ec0QDUO0nJu/SMgLW7qcuG2KqIsEYD1Ej8qhI2xpdR2ydSDQOkVEitXmKoGol1oq4nYSBjTlB65GqA==", + "dependencies": { + "@material/base": "15.0.0-canary.7f224ddd4.0", + "tslib": "^2.1.0" + } + }, + "node_modules/@material/banner": { + "version": "15.0.0-canary.7f224ddd4.0", + "resolved": "https://registry.npmjs.org/@material/banner/-/banner-15.0.0-canary.7f224ddd4.0.tgz", + "integrity": "sha512-g9wBUZzYBizyBcBQXTIafnRUUPi7efU9gPJfzeGgkynXiccP/vh5XMmH+PBxl5v+4MlP/d4cZ2NUYoAN7UTqSA==", + "dependencies": { + "@material/base": "15.0.0-canary.7f224ddd4.0", + "@material/button": "15.0.0-canary.7f224ddd4.0", + "@material/dom": "15.0.0-canary.7f224ddd4.0", + "@material/elevation": "15.0.0-canary.7f224ddd4.0", + "@material/feature-targeting": "15.0.0-canary.7f224ddd4.0", + "@material/ripple": "15.0.0-canary.7f224ddd4.0", + "@material/rtl": "15.0.0-canary.7f224ddd4.0", + "@material/shape": "15.0.0-canary.7f224ddd4.0", + "@material/theme": "15.0.0-canary.7f224ddd4.0", + "@material/tokens": "15.0.0-canary.7f224ddd4.0", + "@material/typography": "15.0.0-canary.7f224ddd4.0", + "tslib": "^2.1.0" + } + }, + "node_modules/@material/base": { + "version": "15.0.0-canary.7f224ddd4.0", + "resolved": "https://registry.npmjs.org/@material/base/-/base-15.0.0-canary.7f224ddd4.0.tgz", + "integrity": "sha512-I9KQOKXpLfJkP8MqZyr8wZIzdPHrwPjFvGd9zSK91/vPyE4hzHRJc/0njsh9g8Lm9PRYLbifXX+719uTbHxx+A==", + "dependencies": { + "tslib": "^2.1.0" + } + }, + "node_modules/@material/button": { + "version": "15.0.0-canary.7f224ddd4.0", + "resolved": "https://registry.npmjs.org/@material/button/-/button-15.0.0-canary.7f224ddd4.0.tgz", + "integrity": "sha512-BHB7iyHgRVH+JF16+iscR+Qaic+p7LU1FOLgP8KucRlpF9tTwIxQA6mJwGRi5gUtcG+vyCmzVS+hIQ6DqT/7BA==", + "dependencies": { + "@material/density": "15.0.0-canary.7f224ddd4.0", + "@material/dom": "15.0.0-canary.7f224ddd4.0", + "@material/elevation": "15.0.0-canary.7f224ddd4.0", + "@material/feature-targeting": "15.0.0-canary.7f224ddd4.0", + "@material/focus-ring": "15.0.0-canary.7f224ddd4.0", + "@material/ripple": "15.0.0-canary.7f224ddd4.0", + "@material/rtl": "15.0.0-canary.7f224ddd4.0", + "@material/shape": "15.0.0-canary.7f224ddd4.0", + "@material/theme": "15.0.0-canary.7f224ddd4.0", + "@material/tokens": "15.0.0-canary.7f224ddd4.0", + "@material/touch-target": "15.0.0-canary.7f224ddd4.0", + "@material/typography": "15.0.0-canary.7f224ddd4.0", + "tslib": "^2.1.0" + } + }, + "node_modules/@material/card": { + "version": "15.0.0-canary.7f224ddd4.0", + "resolved": "https://registry.npmjs.org/@material/card/-/card-15.0.0-canary.7f224ddd4.0.tgz", + "integrity": "sha512-kt7y9/IWOtJTr3Z/AoWJT3ZLN7CLlzXhx2udCLP9ootZU2bfGK0lzNwmo80bv/pJfrY9ihQKCtuGTtNxUy+vIw==", + "dependencies": { + "@material/dom": "15.0.0-canary.7f224ddd4.0", + "@material/elevation": "15.0.0-canary.7f224ddd4.0", + "@material/feature-targeting": "15.0.0-canary.7f224ddd4.0", + "@material/ripple": "15.0.0-canary.7f224ddd4.0", + "@material/rtl": "15.0.0-canary.7f224ddd4.0", + "@material/shape": "15.0.0-canary.7f224ddd4.0", + "@material/theme": "15.0.0-canary.7f224ddd4.0", + "@material/tokens": "15.0.0-canary.7f224ddd4.0", + "tslib": "^2.1.0" + } + }, + "node_modules/@material/checkbox": { + "version": "15.0.0-canary.7f224ddd4.0", + "resolved": "https://registry.npmjs.org/@material/checkbox/-/checkbox-15.0.0-canary.7f224ddd4.0.tgz", + "integrity": "sha512-rURcrL5O1u6hzWR+dNgiQ/n89vk6tdmdP3mZgnxJx61q4I/k1yijKqNJSLrkXH7Rto3bM5NRKMOlgvMvVd7UMQ==", + "dependencies": { + "@material/animation": "15.0.0-canary.7f224ddd4.0", + "@material/base": "15.0.0-canary.7f224ddd4.0", + "@material/density": "15.0.0-canary.7f224ddd4.0", + "@material/dom": "15.0.0-canary.7f224ddd4.0", + "@material/feature-targeting": "15.0.0-canary.7f224ddd4.0", + "@material/focus-ring": "15.0.0-canary.7f224ddd4.0", + "@material/ripple": "15.0.0-canary.7f224ddd4.0", + "@material/rtl": "15.0.0-canary.7f224ddd4.0", + "@material/theme": "15.0.0-canary.7f224ddd4.0", + "@material/touch-target": "15.0.0-canary.7f224ddd4.0", + "tslib": "^2.1.0" + } + }, + "node_modules/@material/chips": { + "version": "15.0.0-canary.7f224ddd4.0", + "resolved": "https://registry.npmjs.org/@material/chips/-/chips-15.0.0-canary.7f224ddd4.0.tgz", + "integrity": "sha512-AYAivV3GSk/T/nRIpH27sOHFPaSMrE3L0WYbnb5Wa93FgY8a0fbsFYtSH2QmtwnzXveg+B1zGTt7/xIIcynKdQ==", + "dependencies": { + "@material/animation": "15.0.0-canary.7f224ddd4.0", + "@material/base": "15.0.0-canary.7f224ddd4.0", + "@material/checkbox": "15.0.0-canary.7f224ddd4.0", + "@material/density": "15.0.0-canary.7f224ddd4.0", + "@material/dom": "15.0.0-canary.7f224ddd4.0", + "@material/elevation": "15.0.0-canary.7f224ddd4.0", + "@material/feature-targeting": "15.0.0-canary.7f224ddd4.0", + "@material/focus-ring": "15.0.0-canary.7f224ddd4.0", + "@material/ripple": "15.0.0-canary.7f224ddd4.0", + "@material/rtl": "15.0.0-canary.7f224ddd4.0", + "@material/shape": "15.0.0-canary.7f224ddd4.0", + "@material/theme": "15.0.0-canary.7f224ddd4.0", + "@material/tokens": "15.0.0-canary.7f224ddd4.0", + "@material/touch-target": "15.0.0-canary.7f224ddd4.0", + "@material/typography": "15.0.0-canary.7f224ddd4.0", + "safevalues": "^0.3.4", + "tslib": "^2.1.0" + } + }, + "node_modules/@material/circular-progress": { + "version": "15.0.0-canary.7f224ddd4.0", + "resolved": "https://registry.npmjs.org/@material/circular-progress/-/circular-progress-15.0.0-canary.7f224ddd4.0.tgz", + "integrity": "sha512-DJrqCKb+LuGtjNvKl8XigvyK02y36GRkfhMUYTcJEi3PrOE00bwXtyj7ilhzEVshQiXg6AHGWXtf5UqwNrx3Ow==", + "dependencies": { + "@material/animation": "15.0.0-canary.7f224ddd4.0", + "@material/base": "15.0.0-canary.7f224ddd4.0", + "@material/dom": "15.0.0-canary.7f224ddd4.0", + "@material/feature-targeting": "15.0.0-canary.7f224ddd4.0", + "@material/progress-indicator": "15.0.0-canary.7f224ddd4.0", + "@material/rtl": "15.0.0-canary.7f224ddd4.0", + "@material/theme": "15.0.0-canary.7f224ddd4.0", + "tslib": "^2.1.0" + } + }, + "node_modules/@material/data-table": { + "version": "15.0.0-canary.7f224ddd4.0", + "resolved": "https://registry.npmjs.org/@material/data-table/-/data-table-15.0.0-canary.7f224ddd4.0.tgz", + "integrity": "sha512-/2WZsuBIq9z9RWYF5Jo6b7P6u0fwit+29/mN7rmAZ6akqUR54nXyNfoSNiyydMkzPlZZsep5KrSHododDhBZbA==", + "dependencies": { + "@material/animation": "15.0.0-canary.7f224ddd4.0", + "@material/base": "15.0.0-canary.7f224ddd4.0", + "@material/checkbox": "15.0.0-canary.7f224ddd4.0", + "@material/density": "15.0.0-canary.7f224ddd4.0", + "@material/dom": "15.0.0-canary.7f224ddd4.0", + "@material/elevation": "15.0.0-canary.7f224ddd4.0", + "@material/feature-targeting": "15.0.0-canary.7f224ddd4.0", + "@material/icon-button": "15.0.0-canary.7f224ddd4.0", + "@material/linear-progress": "15.0.0-canary.7f224ddd4.0", + "@material/list": "15.0.0-canary.7f224ddd4.0", + "@material/menu": "15.0.0-canary.7f224ddd4.0", + "@material/rtl": "15.0.0-canary.7f224ddd4.0", + "@material/select": "15.0.0-canary.7f224ddd4.0", + "@material/shape": "15.0.0-canary.7f224ddd4.0", + "@material/theme": "15.0.0-canary.7f224ddd4.0", + "@material/tokens": "15.0.0-canary.7f224ddd4.0", + "@material/touch-target": "15.0.0-canary.7f224ddd4.0", + "@material/typography": "15.0.0-canary.7f224ddd4.0", + "tslib": "^2.1.0" + } + }, + "node_modules/@material/density": { + "version": "15.0.0-canary.7f224ddd4.0", + "resolved": "https://registry.npmjs.org/@material/density/-/density-15.0.0-canary.7f224ddd4.0.tgz", + "integrity": "sha512-o9EXmGKVpiQ6mHhyV3oDDzc78Ow3E7v8dlaOhgaDSXgmqaE8v5sIlLNa/LKSyUga83/fpGk3QViSGXotpQx0jA==", + "dependencies": { + "tslib": "^2.1.0" + } + }, + "node_modules/@material/dialog": { + "version": "15.0.0-canary.7f224ddd4.0", + "resolved": "https://registry.npmjs.org/@material/dialog/-/dialog-15.0.0-canary.7f224ddd4.0.tgz", + "integrity": "sha512-u0XpTlv1JqWC/bQ3DavJ1JguofTelLT2wloj59l3/1b60jv42JQ6Am7jU3I8/SIUB1MKaW7dYocXjDWtWJakLA==", + "dependencies": { + "@material/animation": "15.0.0-canary.7f224ddd4.0", + "@material/base": "15.0.0-canary.7f224ddd4.0", + "@material/button": "15.0.0-canary.7f224ddd4.0", + "@material/dom": "15.0.0-canary.7f224ddd4.0", + "@material/elevation": "15.0.0-canary.7f224ddd4.0", + "@material/feature-targeting": "15.0.0-canary.7f224ddd4.0", + "@material/icon-button": "15.0.0-canary.7f224ddd4.0", + "@material/ripple": "15.0.0-canary.7f224ddd4.0", + "@material/rtl": "15.0.0-canary.7f224ddd4.0", + "@material/shape": "15.0.0-canary.7f224ddd4.0", + "@material/theme": "15.0.0-canary.7f224ddd4.0", + "@material/tokens": "15.0.0-canary.7f224ddd4.0", + "@material/touch-target": "15.0.0-canary.7f224ddd4.0", + "@material/typography": "15.0.0-canary.7f224ddd4.0", + "tslib": "^2.1.0" + } + }, + "node_modules/@material/dom": { + "version": "15.0.0-canary.7f224ddd4.0", + "resolved": "https://registry.npmjs.org/@material/dom/-/dom-15.0.0-canary.7f224ddd4.0.tgz", + "integrity": "sha512-mQ1HT186GPQSkRg5S18i70typ5ZytfjL09R0gJ2Qg5/G+MLCGi7TAjZZSH65tuD/QGOjel4rDdWOTmYbPYV6HA==", + "dependencies": { + "@material/feature-targeting": "15.0.0-canary.7f224ddd4.0", + "@material/rtl": "15.0.0-canary.7f224ddd4.0", + "tslib": "^2.1.0" + } + }, + "node_modules/@material/drawer": { + "version": "15.0.0-canary.7f224ddd4.0", + "resolved": "https://registry.npmjs.org/@material/drawer/-/drawer-15.0.0-canary.7f224ddd4.0.tgz", + "integrity": "sha512-qyO0W0KBftfH8dlLR0gVAgv7ZHNvU8ae11Ao6zJif/YxcvK4+gph1z8AO4H410YmC2kZiwpSKyxM1iQCCzbb4g==", + "dependencies": { + "@material/animation": "15.0.0-canary.7f224ddd4.0", + "@material/base": "15.0.0-canary.7f224ddd4.0", + "@material/dom": "15.0.0-canary.7f224ddd4.0", + "@material/elevation": "15.0.0-canary.7f224ddd4.0", + "@material/feature-targeting": "15.0.0-canary.7f224ddd4.0", + "@material/list": "15.0.0-canary.7f224ddd4.0", + "@material/ripple": "15.0.0-canary.7f224ddd4.0", + "@material/rtl": "15.0.0-canary.7f224ddd4.0", + "@material/shape": "15.0.0-canary.7f224ddd4.0", + "@material/theme": "15.0.0-canary.7f224ddd4.0", + "@material/typography": "15.0.0-canary.7f224ddd4.0", + "tslib": "^2.1.0" + } + }, + "node_modules/@material/elevation": { + "version": "15.0.0-canary.7f224ddd4.0", + "resolved": "https://registry.npmjs.org/@material/elevation/-/elevation-15.0.0-canary.7f224ddd4.0.tgz", + "integrity": "sha512-tV6s4/pUBECedaI36Yj18KmRCk1vfue/JP/5yYRlFNnLMRVISePbZaKkn/BHXVf+26I3W879+XqIGlDVdmOoMA==", + "dependencies": { + "@material/animation": "15.0.0-canary.7f224ddd4.0", + "@material/base": "15.0.0-canary.7f224ddd4.0", + "@material/feature-targeting": "15.0.0-canary.7f224ddd4.0", + "@material/rtl": "15.0.0-canary.7f224ddd4.0", + "@material/theme": "15.0.0-canary.7f224ddd4.0", + "tslib": "^2.1.0" + } + }, + "node_modules/@material/fab": { + "version": "15.0.0-canary.7f224ddd4.0", + "resolved": "https://registry.npmjs.org/@material/fab/-/fab-15.0.0-canary.7f224ddd4.0.tgz", + "integrity": "sha512-4h76QrzfZTcPdd+awDPZ4Q0YdSqsXQnS540TPtyXUJ/5G99V6VwGpjMPIxAsW0y+pmI9UkLL/srrMaJec+7r4Q==", + "dependencies": { + "@material/animation": "15.0.0-canary.7f224ddd4.0", + "@material/dom": "15.0.0-canary.7f224ddd4.0", + "@material/elevation": "15.0.0-canary.7f224ddd4.0", + "@material/feature-targeting": "15.0.0-canary.7f224ddd4.0", + "@material/focus-ring": "15.0.0-canary.7f224ddd4.0", + "@material/ripple": "15.0.0-canary.7f224ddd4.0", + "@material/rtl": "15.0.0-canary.7f224ddd4.0", + "@material/shape": "15.0.0-canary.7f224ddd4.0", + "@material/theme": "15.0.0-canary.7f224ddd4.0", + "@material/tokens": "15.0.0-canary.7f224ddd4.0", + "@material/touch-target": "15.0.0-canary.7f224ddd4.0", + "@material/typography": "15.0.0-canary.7f224ddd4.0", + "tslib": "^2.1.0" + } + }, + "node_modules/@material/feature-targeting": { + "version": "15.0.0-canary.7f224ddd4.0", + "resolved": "https://registry.npmjs.org/@material/feature-targeting/-/feature-targeting-15.0.0-canary.7f224ddd4.0.tgz", + "integrity": "sha512-SAjtxYh6YlKZriU83diDEQ7jNSP2MnxKsER0TvFeyG1vX/DWsUyYDOIJTOEa9K1N+fgJEBkNK8hY55QhQaspew==", + "dependencies": { + "tslib": "^2.1.0" + } + }, + "node_modules/@material/floating-label": { + "version": "15.0.0-canary.7f224ddd4.0", + "resolved": "https://registry.npmjs.org/@material/floating-label/-/floating-label-15.0.0-canary.7f224ddd4.0.tgz", + "integrity": "sha512-0KMo5ijjYaEHPiZ2pCVIcbaTS2LycvH9zEhEMKwPPGssBCX7iz5ffYQFk7e5yrQand1r3jnQQgYfHAwtykArnQ==", + "dependencies": { + "@material/animation": "15.0.0-canary.7f224ddd4.0", + "@material/base": "15.0.0-canary.7f224ddd4.0", + "@material/dom": "15.0.0-canary.7f224ddd4.0", + "@material/feature-targeting": "15.0.0-canary.7f224ddd4.0", + "@material/rtl": "15.0.0-canary.7f224ddd4.0", + "@material/theme": "15.0.0-canary.7f224ddd4.0", + "@material/typography": "15.0.0-canary.7f224ddd4.0", + "tslib": "^2.1.0" + } + }, + "node_modules/@material/focus-ring": { + "version": "15.0.0-canary.7f224ddd4.0", + "resolved": "https://registry.npmjs.org/@material/focus-ring/-/focus-ring-15.0.0-canary.7f224ddd4.0.tgz", + "integrity": "sha512-Jmg1nltq4J6S6A10EGMZnvufrvU3YTi+8R8ZD9lkSbun0Fm2TVdICQt/Auyi6An9zP66oQN6c31eqO6KfIPsDg==", + "dependencies": { + "@material/dom": "15.0.0-canary.7f224ddd4.0", + "@material/feature-targeting": "15.0.0-canary.7f224ddd4.0", + "@material/rtl": "15.0.0-canary.7f224ddd4.0" + } + }, + "node_modules/@material/form-field": { + "version": "15.0.0-canary.7f224ddd4.0", + "resolved": "https://registry.npmjs.org/@material/form-field/-/form-field-15.0.0-canary.7f224ddd4.0.tgz", + "integrity": "sha512-fEPWgDQEPJ6WF7hNnIStxucHR9LE4DoDSMqCsGWS2Yu+NLZYLuCEecgR0UqQsl1EQdNRaFh8VH93KuxGd2hiPg==", + "dependencies": { + "@material/base": "15.0.0-canary.7f224ddd4.0", + "@material/feature-targeting": "15.0.0-canary.7f224ddd4.0", + "@material/ripple": "15.0.0-canary.7f224ddd4.0", + "@material/rtl": "15.0.0-canary.7f224ddd4.0", + "@material/theme": "15.0.0-canary.7f224ddd4.0", + "@material/typography": "15.0.0-canary.7f224ddd4.0", + "tslib": "^2.1.0" + } + }, + "node_modules/@material/icon-button": { + "version": "15.0.0-canary.7f224ddd4.0", + "resolved": "https://registry.npmjs.org/@material/icon-button/-/icon-button-15.0.0-canary.7f224ddd4.0.tgz", + "integrity": "sha512-DcK7IL4ICY/DW+48YQZZs9g0U1kRaW0Wb0BxhvppDMYziHo/CTpFdle4gjyuTyRxPOdHQz5a97ru48Z9O4muTw==", + "dependencies": { + "@material/base": "15.0.0-canary.7f224ddd4.0", + "@material/density": "15.0.0-canary.7f224ddd4.0", + "@material/dom": "15.0.0-canary.7f224ddd4.0", + "@material/elevation": "15.0.0-canary.7f224ddd4.0", + "@material/feature-targeting": "15.0.0-canary.7f224ddd4.0", + "@material/focus-ring": "15.0.0-canary.7f224ddd4.0", + "@material/ripple": "15.0.0-canary.7f224ddd4.0", + "@material/rtl": "15.0.0-canary.7f224ddd4.0", + "@material/theme": "15.0.0-canary.7f224ddd4.0", + "@material/touch-target": "15.0.0-canary.7f224ddd4.0", + "tslib": "^2.1.0" + } + }, + "node_modules/@material/image-list": { + "version": "15.0.0-canary.7f224ddd4.0", + "resolved": "https://registry.npmjs.org/@material/image-list/-/image-list-15.0.0-canary.7f224ddd4.0.tgz", + "integrity": "sha512-voMjG2p80XbjL1B2lmF65zO5gEgJOVKClLdqh4wbYzYfwY/SR9c8eLvlYG7DLdFaFBl/7gGxD8TvvZ329HUFPw==", + "dependencies": { + "@material/feature-targeting": "15.0.0-canary.7f224ddd4.0", + "@material/shape": "15.0.0-canary.7f224ddd4.0", + "@material/theme": "15.0.0-canary.7f224ddd4.0", + "@material/typography": "15.0.0-canary.7f224ddd4.0", + "tslib": "^2.1.0" + } + }, + "node_modules/@material/layout-grid": { + "version": "15.0.0-canary.7f224ddd4.0", + "resolved": "https://registry.npmjs.org/@material/layout-grid/-/layout-grid-15.0.0-canary.7f224ddd4.0.tgz", + "integrity": "sha512-veDABLxMn2RmvfnUO2RUmC1OFfWr4cU+MrxKPoDD2hl3l3eDYv5fxws6r5T1JoSyXoaN+oEZpheS0+M9Ure8Pg==", + "dependencies": { + "tslib": "^2.1.0" + } + }, + "node_modules/@material/line-ripple": { + "version": "15.0.0-canary.7f224ddd4.0", + "resolved": "https://registry.npmjs.org/@material/line-ripple/-/line-ripple-15.0.0-canary.7f224ddd4.0.tgz", + "integrity": "sha512-f60hVJhIU6I3/17Tqqzch1emUKEcfVVgHVqADbU14JD+oEIz429ZX9ksZ3VChoU3+eejFl+jVdZMLE/LrAuwpg==", + "dependencies": { + "@material/animation": "15.0.0-canary.7f224ddd4.0", + "@material/base": "15.0.0-canary.7f224ddd4.0", + "@material/feature-targeting": "15.0.0-canary.7f224ddd4.0", + "@material/theme": "15.0.0-canary.7f224ddd4.0", + "tslib": "^2.1.0" + } + }, + "node_modules/@material/linear-progress": { + "version": "15.0.0-canary.7f224ddd4.0", + "resolved": "https://registry.npmjs.org/@material/linear-progress/-/linear-progress-15.0.0-canary.7f224ddd4.0.tgz", + "integrity": "sha512-pRDEwPQielDiC9Sc5XhCXrGxP8wWOnAO8sQlMebfBYHYqy5hhiIzibezS8CSaW4MFQFyXmCmpmqWlbqGYRmiyg==", + "dependencies": { + "@material/animation": "15.0.0-canary.7f224ddd4.0", + "@material/base": "15.0.0-canary.7f224ddd4.0", + "@material/dom": "15.0.0-canary.7f224ddd4.0", + "@material/feature-targeting": "15.0.0-canary.7f224ddd4.0", + "@material/progress-indicator": "15.0.0-canary.7f224ddd4.0", + "@material/rtl": "15.0.0-canary.7f224ddd4.0", + "@material/theme": "15.0.0-canary.7f224ddd4.0", + "tslib": "^2.1.0" + } + }, + "node_modules/@material/list": { + "version": "15.0.0-canary.7f224ddd4.0", + "resolved": "https://registry.npmjs.org/@material/list/-/list-15.0.0-canary.7f224ddd4.0.tgz", + "integrity": "sha512-Is0NV91sJlXF5pOebYAtWLF4wU2MJDbYqztML/zQNENkQxDOvEXu3nWNb3YScMIYJJXvARO0Liur5K4yPagS1Q==", + "dependencies": { + "@material/base": "15.0.0-canary.7f224ddd4.0", + "@material/density": "15.0.0-canary.7f224ddd4.0", + "@material/dom": "15.0.0-canary.7f224ddd4.0", + "@material/feature-targeting": "15.0.0-canary.7f224ddd4.0", + "@material/ripple": "15.0.0-canary.7f224ddd4.0", + "@material/rtl": "15.0.0-canary.7f224ddd4.0", + "@material/shape": "15.0.0-canary.7f224ddd4.0", + "@material/theme": "15.0.0-canary.7f224ddd4.0", + "@material/tokens": "15.0.0-canary.7f224ddd4.0", + "@material/typography": "15.0.0-canary.7f224ddd4.0", + "tslib": "^2.1.0" + } + }, + "node_modules/@material/menu": { + "version": "15.0.0-canary.7f224ddd4.0", + "resolved": "https://registry.npmjs.org/@material/menu/-/menu-15.0.0-canary.7f224ddd4.0.tgz", + "integrity": "sha512-D11QU1dXqLbh5X1zKlEhS3QWh0b5BPNXlafc5MXfkdJHhOiieb7LC9hMJhbrHtj24FadJ7evaFW/T2ugJbJNnQ==", + "dependencies": { + "@material/base": "15.0.0-canary.7f224ddd4.0", + "@material/dom": "15.0.0-canary.7f224ddd4.0", + "@material/elevation": "15.0.0-canary.7f224ddd4.0", + "@material/feature-targeting": "15.0.0-canary.7f224ddd4.0", + "@material/list": "15.0.0-canary.7f224ddd4.0", + "@material/menu-surface": "15.0.0-canary.7f224ddd4.0", + "@material/ripple": "15.0.0-canary.7f224ddd4.0", + "@material/rtl": "15.0.0-canary.7f224ddd4.0", + "@material/shape": "15.0.0-canary.7f224ddd4.0", + "@material/theme": "15.0.0-canary.7f224ddd4.0", + "@material/tokens": "15.0.0-canary.7f224ddd4.0", + "tslib": "^2.1.0" + } + }, + "node_modules/@material/menu-surface": { + "version": "15.0.0-canary.7f224ddd4.0", + "resolved": "https://registry.npmjs.org/@material/menu-surface/-/menu-surface-15.0.0-canary.7f224ddd4.0.tgz", + "integrity": "sha512-7RZHvw0gbwppaAJ/Oh5SWmfAKJ62aw1IMB3+3MRwsb5PLoV666wInYa+zJfE4i7qBeOn904xqT2Nko5hY0ssrg==", + "dependencies": { + "@material/animation": "15.0.0-canary.7f224ddd4.0", + "@material/base": "15.0.0-canary.7f224ddd4.0", + "@material/elevation": "15.0.0-canary.7f224ddd4.0", + "@material/feature-targeting": "15.0.0-canary.7f224ddd4.0", + "@material/rtl": "15.0.0-canary.7f224ddd4.0", + "@material/shape": "15.0.0-canary.7f224ddd4.0", + "@material/theme": "15.0.0-canary.7f224ddd4.0", + "tslib": "^2.1.0" + } + }, + "node_modules/@material/notched-outline": { + "version": "15.0.0-canary.7f224ddd4.0", + "resolved": "https://registry.npmjs.org/@material/notched-outline/-/notched-outline-15.0.0-canary.7f224ddd4.0.tgz", + "integrity": "sha512-Yg2usuKB2DKlKIBISbie9BFsOVuffF71xjbxPbybvqemxqUBd+bD5/t6H1fLE+F8/NCu5JMigho4ewUU+0RCiw==", + "dependencies": { + "@material/base": "15.0.0-canary.7f224ddd4.0", + "@material/feature-targeting": "15.0.0-canary.7f224ddd4.0", + "@material/floating-label": "15.0.0-canary.7f224ddd4.0", + "@material/rtl": "15.0.0-canary.7f224ddd4.0", + "@material/shape": "15.0.0-canary.7f224ddd4.0", + "@material/theme": "15.0.0-canary.7f224ddd4.0", + "tslib": "^2.1.0" + } + }, + "node_modules/@material/progress-indicator": { + "version": "15.0.0-canary.7f224ddd4.0", + "resolved": "https://registry.npmjs.org/@material/progress-indicator/-/progress-indicator-15.0.0-canary.7f224ddd4.0.tgz", + "integrity": "sha512-UPbDjE5CqT+SqTs0mNFG6uFEw7wBlgYmh+noSkQ6ty/EURm8lF125dmi4dv4kW0+octonMXqkGtAoZwLIHKf/w==", + "dependencies": { + "tslib": "^2.1.0" + } + }, + "node_modules/@material/radio": { + "version": "15.0.0-canary.7f224ddd4.0", + "resolved": "https://registry.npmjs.org/@material/radio/-/radio-15.0.0-canary.7f224ddd4.0.tgz", + "integrity": "sha512-wR1X0Sr0KmQLu6+YOFKAI84G3L6psqd7Kys5kfb8WKBM36zxO5HQXC5nJm/Y0rdn22ixzsIz2GBo0MNU4V4k1A==", + "dependencies": { + "@material/animation": "15.0.0-canary.7f224ddd4.0", + "@material/base": "15.0.0-canary.7f224ddd4.0", + "@material/density": "15.0.0-canary.7f224ddd4.0", + "@material/dom": "15.0.0-canary.7f224ddd4.0", + "@material/feature-targeting": "15.0.0-canary.7f224ddd4.0", + "@material/focus-ring": "15.0.0-canary.7f224ddd4.0", + "@material/ripple": "15.0.0-canary.7f224ddd4.0", + "@material/theme": "15.0.0-canary.7f224ddd4.0", + "@material/touch-target": "15.0.0-canary.7f224ddd4.0", + "tslib": "^2.1.0" + } + }, + "node_modules/@material/ripple": { + "version": "15.0.0-canary.7f224ddd4.0", + "resolved": "https://registry.npmjs.org/@material/ripple/-/ripple-15.0.0-canary.7f224ddd4.0.tgz", + "integrity": "sha512-JqOsWM1f4aGdotP0rh1vZlPZTg6lZgh39FIYHFMfOwfhR+LAikUJ+37ciqZuewgzXB6iiRO6a8aUH6HR5SJYPg==", + "dependencies": { + "@material/animation": "15.0.0-canary.7f224ddd4.0", + "@material/base": "15.0.0-canary.7f224ddd4.0", + "@material/dom": "15.0.0-canary.7f224ddd4.0", + "@material/feature-targeting": "15.0.0-canary.7f224ddd4.0", + "@material/rtl": "15.0.0-canary.7f224ddd4.0", + "@material/theme": "15.0.0-canary.7f224ddd4.0", + "tslib": "^2.1.0" + } + }, + "node_modules/@material/rtl": { + "version": "15.0.0-canary.7f224ddd4.0", + "resolved": "https://registry.npmjs.org/@material/rtl/-/rtl-15.0.0-canary.7f224ddd4.0.tgz", + "integrity": "sha512-UVf14qAtmPiaaZjuJtmN36HETyoKWmsZM/qn1L5ciR2URb8O035dFWnz4ZWFMmAYBno/L7JiZaCkPurv2ZNrGA==", + "dependencies": { + "@material/theme": "15.0.0-canary.7f224ddd4.0", + "tslib": "^2.1.0" + } + }, + "node_modules/@material/segmented-button": { + "version": "15.0.0-canary.7f224ddd4.0", + "resolved": "https://registry.npmjs.org/@material/segmented-button/-/segmented-button-15.0.0-canary.7f224ddd4.0.tgz", + "integrity": "sha512-LCnVRUSAhELTKI/9hSvyvIvQIpPpqF29BV+O9yM4WoNNmNWqTulvuiv7grHZl6Z+kJuxSg4BGbsPxxb9dXozPg==", + "dependencies": { + "@material/base": "15.0.0-canary.7f224ddd4.0", + "@material/elevation": "15.0.0-canary.7f224ddd4.0", + "@material/feature-targeting": "15.0.0-canary.7f224ddd4.0", + "@material/ripple": "15.0.0-canary.7f224ddd4.0", + "@material/theme": "15.0.0-canary.7f224ddd4.0", + "@material/touch-target": "15.0.0-canary.7f224ddd4.0", + "@material/typography": "15.0.0-canary.7f224ddd4.0", + "tslib": "^2.1.0" + } + }, + "node_modules/@material/select": { + "version": "15.0.0-canary.7f224ddd4.0", + "resolved": "https://registry.npmjs.org/@material/select/-/select-15.0.0-canary.7f224ddd4.0.tgz", + "integrity": "sha512-WioZtQEXRpglum0cMSzSqocnhsGRr+ZIhvKb3FlaNrTaK8H3Y4QA7rVjv3emRtrLOOjaT6/RiIaUMTo9AGzWQQ==", + "dependencies": { + "@material/animation": "15.0.0-canary.7f224ddd4.0", + "@material/base": "15.0.0-canary.7f224ddd4.0", + "@material/density": "15.0.0-canary.7f224ddd4.0", + "@material/dom": "15.0.0-canary.7f224ddd4.0", + "@material/elevation": "15.0.0-canary.7f224ddd4.0", + "@material/feature-targeting": "15.0.0-canary.7f224ddd4.0", + "@material/floating-label": "15.0.0-canary.7f224ddd4.0", + "@material/line-ripple": "15.0.0-canary.7f224ddd4.0", + "@material/list": "15.0.0-canary.7f224ddd4.0", + "@material/menu": "15.0.0-canary.7f224ddd4.0", + "@material/menu-surface": "15.0.0-canary.7f224ddd4.0", + "@material/notched-outline": "15.0.0-canary.7f224ddd4.0", + "@material/ripple": "15.0.0-canary.7f224ddd4.0", + "@material/rtl": "15.0.0-canary.7f224ddd4.0", + "@material/shape": "15.0.0-canary.7f224ddd4.0", + "@material/theme": "15.0.0-canary.7f224ddd4.0", + "@material/tokens": "15.0.0-canary.7f224ddd4.0", + "@material/typography": "15.0.0-canary.7f224ddd4.0", + "tslib": "^2.1.0" + } + }, + "node_modules/@material/shape": { + "version": "15.0.0-canary.7f224ddd4.0", + "resolved": "https://registry.npmjs.org/@material/shape/-/shape-15.0.0-canary.7f224ddd4.0.tgz", + "integrity": "sha512-8z8l1W3+cymObunJoRhwFPKZ+FyECfJ4MJykNiaZq7XJFZkV6xNmqAVrrbQj93FtLsECn9g4PjjIomguVn/OEw==", + "dependencies": { + "@material/feature-targeting": "15.0.0-canary.7f224ddd4.0", + "@material/rtl": "15.0.0-canary.7f224ddd4.0", + "@material/theme": "15.0.0-canary.7f224ddd4.0", + "tslib": "^2.1.0" + } + }, + "node_modules/@material/slider": { + "version": "15.0.0-canary.7f224ddd4.0", + "resolved": "https://registry.npmjs.org/@material/slider/-/slider-15.0.0-canary.7f224ddd4.0.tgz", + "integrity": "sha512-QU/WSaSWlLKQRqOhJrPgm29wqvvzRusMqwAcrCh1JTrCl+xwJ43q5WLDfjYhubeKtrEEgGu9tekkAiYfMG7EBw==", + "dependencies": { + "@material/animation": "15.0.0-canary.7f224ddd4.0", + "@material/base": "15.0.0-canary.7f224ddd4.0", + "@material/dom": "15.0.0-canary.7f224ddd4.0", + "@material/elevation": "15.0.0-canary.7f224ddd4.0", + "@material/feature-targeting": "15.0.0-canary.7f224ddd4.0", + "@material/ripple": "15.0.0-canary.7f224ddd4.0", + "@material/rtl": "15.0.0-canary.7f224ddd4.0", + "@material/theme": "15.0.0-canary.7f224ddd4.0", + "@material/tokens": "15.0.0-canary.7f224ddd4.0", + "@material/typography": "15.0.0-canary.7f224ddd4.0", + "tslib": "^2.1.0" + } + }, + "node_modules/@material/snackbar": { + "version": "15.0.0-canary.7f224ddd4.0", + "resolved": "https://registry.npmjs.org/@material/snackbar/-/snackbar-15.0.0-canary.7f224ddd4.0.tgz", + "integrity": "sha512-sm7EbVKddaXpT/aXAYBdPoN0k8yeg9+dprgBUkrdqGzWJAeCkxb4fv2B3He88YiCtvkTz2KLY4CThPQBSEsMFQ==", + "dependencies": { + "@material/animation": "15.0.0-canary.7f224ddd4.0", + "@material/base": "15.0.0-canary.7f224ddd4.0", + "@material/button": "15.0.0-canary.7f224ddd4.0", + "@material/dom": "15.0.0-canary.7f224ddd4.0", + "@material/elevation": "15.0.0-canary.7f224ddd4.0", + "@material/feature-targeting": "15.0.0-canary.7f224ddd4.0", + "@material/icon-button": "15.0.0-canary.7f224ddd4.0", + "@material/ripple": "15.0.0-canary.7f224ddd4.0", + "@material/rtl": "15.0.0-canary.7f224ddd4.0", + "@material/shape": "15.0.0-canary.7f224ddd4.0", + "@material/theme": "15.0.0-canary.7f224ddd4.0", + "@material/tokens": "15.0.0-canary.7f224ddd4.0", + "@material/typography": "15.0.0-canary.7f224ddd4.0", + "tslib": "^2.1.0" + } + }, + "node_modules/@material/switch": { + "version": "15.0.0-canary.7f224ddd4.0", + "resolved": "https://registry.npmjs.org/@material/switch/-/switch-15.0.0-canary.7f224ddd4.0.tgz", + "integrity": "sha512-lEDJfRvkVyyeHWIBfoxYjJVl+WlEAE2kZ/+6OqB1FW0OV8ftTODZGhHRSzjVBA1/p4FPuhAtKtoK9jTpa4AZjA==", + "dependencies": { + "@material/animation": "15.0.0-canary.7f224ddd4.0", + "@material/base": "15.0.0-canary.7f224ddd4.0", + "@material/density": "15.0.0-canary.7f224ddd4.0", + "@material/dom": "15.0.0-canary.7f224ddd4.0", + "@material/elevation": "15.0.0-canary.7f224ddd4.0", + "@material/feature-targeting": "15.0.0-canary.7f224ddd4.0", + "@material/focus-ring": "15.0.0-canary.7f224ddd4.0", + "@material/ripple": "15.0.0-canary.7f224ddd4.0", + "@material/rtl": "15.0.0-canary.7f224ddd4.0", + "@material/shape": "15.0.0-canary.7f224ddd4.0", + "@material/theme": "15.0.0-canary.7f224ddd4.0", + "@material/tokens": "15.0.0-canary.7f224ddd4.0", + "safevalues": "^0.3.4", + "tslib": "^2.1.0" + } + }, + "node_modules/@material/tab": { + "version": "15.0.0-canary.7f224ddd4.0", + "resolved": "https://registry.npmjs.org/@material/tab/-/tab-15.0.0-canary.7f224ddd4.0.tgz", + "integrity": "sha512-E1xGACImyCLurhnizyOTCgOiVezce4HlBFAI6YhJo/AyVwjN2Dtas4ZLQMvvWWqpyhITNkeYdOchwCC1mrz3AQ==", + "dependencies": { + "@material/base": "15.0.0-canary.7f224ddd4.0", + "@material/elevation": "15.0.0-canary.7f224ddd4.0", + "@material/feature-targeting": "15.0.0-canary.7f224ddd4.0", + "@material/focus-ring": "15.0.0-canary.7f224ddd4.0", + "@material/ripple": "15.0.0-canary.7f224ddd4.0", + "@material/rtl": "15.0.0-canary.7f224ddd4.0", + "@material/tab-indicator": "15.0.0-canary.7f224ddd4.0", + "@material/theme": "15.0.0-canary.7f224ddd4.0", + "@material/tokens": "15.0.0-canary.7f224ddd4.0", + "@material/typography": "15.0.0-canary.7f224ddd4.0", + "tslib": "^2.1.0" + } + }, + "node_modules/@material/tab-bar": { + "version": "15.0.0-canary.7f224ddd4.0", + "resolved": "https://registry.npmjs.org/@material/tab-bar/-/tab-bar-15.0.0-canary.7f224ddd4.0.tgz", + "integrity": "sha512-p1Asb2NzrcECvAQU3b2SYrpyJGyJLQWR+nXTYzDKE8WOpLIRCXap2audNqD7fvN/A20UJ1J8U01ptrvCkwJ4eA==", + "dependencies": { + "@material/animation": "15.0.0-canary.7f224ddd4.0", + "@material/base": "15.0.0-canary.7f224ddd4.0", + "@material/density": "15.0.0-canary.7f224ddd4.0", + "@material/elevation": "15.0.0-canary.7f224ddd4.0", + "@material/feature-targeting": "15.0.0-canary.7f224ddd4.0", + "@material/tab": "15.0.0-canary.7f224ddd4.0", + "@material/tab-indicator": "15.0.0-canary.7f224ddd4.0", + "@material/tab-scroller": "15.0.0-canary.7f224ddd4.0", + "@material/theme": "15.0.0-canary.7f224ddd4.0", + "@material/tokens": "15.0.0-canary.7f224ddd4.0", + "@material/typography": "15.0.0-canary.7f224ddd4.0", + "tslib": "^2.1.0" + } + }, + "node_modules/@material/tab-indicator": { + "version": "15.0.0-canary.7f224ddd4.0", + "resolved": "https://registry.npmjs.org/@material/tab-indicator/-/tab-indicator-15.0.0-canary.7f224ddd4.0.tgz", + "integrity": "sha512-h9Td3MPqbs33spcPS7ecByRHraYgU4tNCZpZzZXw31RypjKvISDv/PS5wcA4RmWqNGih78T7xg4QIGsZg4Pk4w==", + "dependencies": { + "@material/animation": "15.0.0-canary.7f224ddd4.0", + "@material/base": "15.0.0-canary.7f224ddd4.0", + "@material/feature-targeting": "15.0.0-canary.7f224ddd4.0", + "@material/theme": "15.0.0-canary.7f224ddd4.0", + "tslib": "^2.1.0" + } + }, + "node_modules/@material/tab-scroller": { + "version": "15.0.0-canary.7f224ddd4.0", + "resolved": "https://registry.npmjs.org/@material/tab-scroller/-/tab-scroller-15.0.0-canary.7f224ddd4.0.tgz", + "integrity": "sha512-LFeYNjQpdXecwECd8UaqHYbhscDCwhGln5Yh+3ctvcEgvmDPNjhKn/DL3sWprWvG8NAhP6sHMrsGhQFVdCWtTg==", + "dependencies": { + "@material/animation": "15.0.0-canary.7f224ddd4.0", + "@material/base": "15.0.0-canary.7f224ddd4.0", + "@material/dom": "15.0.0-canary.7f224ddd4.0", + "@material/feature-targeting": "15.0.0-canary.7f224ddd4.0", + "@material/tab": "15.0.0-canary.7f224ddd4.0", + "tslib": "^2.1.0" + } + }, + "node_modules/@material/textfield": { + "version": "15.0.0-canary.7f224ddd4.0", + "resolved": "https://registry.npmjs.org/@material/textfield/-/textfield-15.0.0-canary.7f224ddd4.0.tgz", + "integrity": "sha512-AExmFvgE5nNF0UA4l2cSzPghtxSUQeeoyRjFLHLy+oAaE4eKZFrSy0zEpqPeWPQpEMDZk+6Y+6T3cOFYBeSvsw==", + "dependencies": { + "@material/animation": "15.0.0-canary.7f224ddd4.0", + "@material/base": "15.0.0-canary.7f224ddd4.0", + "@material/density": "15.0.0-canary.7f224ddd4.0", + "@material/dom": "15.0.0-canary.7f224ddd4.0", + "@material/feature-targeting": "15.0.0-canary.7f224ddd4.0", + "@material/floating-label": "15.0.0-canary.7f224ddd4.0", + "@material/line-ripple": "15.0.0-canary.7f224ddd4.0", + "@material/notched-outline": "15.0.0-canary.7f224ddd4.0", + "@material/ripple": "15.0.0-canary.7f224ddd4.0", + "@material/rtl": "15.0.0-canary.7f224ddd4.0", + "@material/shape": "15.0.0-canary.7f224ddd4.0", + "@material/theme": "15.0.0-canary.7f224ddd4.0", + "@material/tokens": "15.0.0-canary.7f224ddd4.0", + "@material/typography": "15.0.0-canary.7f224ddd4.0", + "tslib": "^2.1.0" + } + }, + "node_modules/@material/theme": { + "version": "15.0.0-canary.7f224ddd4.0", + "resolved": "https://registry.npmjs.org/@material/theme/-/theme-15.0.0-canary.7f224ddd4.0.tgz", + "integrity": "sha512-hs45hJoE9yVnoVOcsN1jklyOa51U4lzWsEnQEuJTPOk2+0HqCQ0yv/q0InpSnm2i69fNSyZC60+8HADZGF8ugQ==", + "dependencies": { + "@material/feature-targeting": "15.0.0-canary.7f224ddd4.0", + "tslib": "^2.1.0" + } + }, + "node_modules/@material/tokens": { + "version": "15.0.0-canary.7f224ddd4.0", + "resolved": "https://registry.npmjs.org/@material/tokens/-/tokens-15.0.0-canary.7f224ddd4.0.tgz", + "integrity": "sha512-r9TDoicmcT7FhUXC4eYMFnt9TZsz0G8T3wXvkKncLppYvZ517gPyD/1+yhuGfGOxAzxTrM66S/oEc1fFE2q4hw==", + "dependencies": { + "@material/elevation": "15.0.0-canary.7f224ddd4.0" + } + }, + "node_modules/@material/tooltip": { + "version": "15.0.0-canary.7f224ddd4.0", + "resolved": "https://registry.npmjs.org/@material/tooltip/-/tooltip-15.0.0-canary.7f224ddd4.0.tgz", + "integrity": "sha512-8qNk3pmPLTnam3XYC1sZuplQXW9xLn4Z4MI3D+U17Q7pfNZfoOugGr+d2cLA9yWAEjVJYB0mj8Yu86+udo4N9w==", + "dependencies": { + "@material/animation": "15.0.0-canary.7f224ddd4.0", + "@material/base": "15.0.0-canary.7f224ddd4.0", + "@material/button": "15.0.0-canary.7f224ddd4.0", + "@material/dom": "15.0.0-canary.7f224ddd4.0", + "@material/elevation": "15.0.0-canary.7f224ddd4.0", + "@material/feature-targeting": "15.0.0-canary.7f224ddd4.0", + "@material/rtl": "15.0.0-canary.7f224ddd4.0", + "@material/shape": "15.0.0-canary.7f224ddd4.0", + "@material/theme": "15.0.0-canary.7f224ddd4.0", + "@material/tokens": "15.0.0-canary.7f224ddd4.0", + "@material/typography": "15.0.0-canary.7f224ddd4.0", + "safevalues": "^0.3.4", + "tslib": "^2.1.0" + } + }, + "node_modules/@material/top-app-bar": { + "version": "15.0.0-canary.7f224ddd4.0", + "resolved": "https://registry.npmjs.org/@material/top-app-bar/-/top-app-bar-15.0.0-canary.7f224ddd4.0.tgz", + "integrity": "sha512-SARR5/ClYT4CLe9qAXakbr0i0cMY0V3V4pe3ElIJPfL2Z2c4wGR1mTR8m2LxU1MfGKK8aRoUdtfKaxWejp+eNA==", + "dependencies": { + "@material/animation": "15.0.0-canary.7f224ddd4.0", + "@material/base": "15.0.0-canary.7f224ddd4.0", + "@material/elevation": "15.0.0-canary.7f224ddd4.0", + "@material/ripple": "15.0.0-canary.7f224ddd4.0", + "@material/rtl": "15.0.0-canary.7f224ddd4.0", + "@material/shape": "15.0.0-canary.7f224ddd4.0", + "@material/theme": "15.0.0-canary.7f224ddd4.0", + "@material/typography": "15.0.0-canary.7f224ddd4.0", + "tslib": "^2.1.0" + } + }, + "node_modules/@material/touch-target": { + "version": "15.0.0-canary.7f224ddd4.0", + "resolved": "https://registry.npmjs.org/@material/touch-target/-/touch-target-15.0.0-canary.7f224ddd4.0.tgz", + "integrity": "sha512-BJo/wFKHPYLGsRaIpd7vsQwKr02LtO2e89Psv0on/p0OephlNIgeB9dD9W+bQmaeZsZ6liKSKRl6wJWDiK71PA==", + "dependencies": { + "@material/base": "15.0.0-canary.7f224ddd4.0", + "@material/feature-targeting": "15.0.0-canary.7f224ddd4.0", + "@material/rtl": "15.0.0-canary.7f224ddd4.0", + "@material/theme": "15.0.0-canary.7f224ddd4.0", + "tslib": "^2.1.0" + } + }, + "node_modules/@material/typography": { + "version": "15.0.0-canary.7f224ddd4.0", + "resolved": "https://registry.npmjs.org/@material/typography/-/typography-15.0.0-canary.7f224ddd4.0.tgz", + "integrity": "sha512-kBaZeCGD50iq1DeRRH5OM5Jl7Gdk+/NOfKArkY4ksBZvJiStJ7ACAhpvb8MEGm4s3jvDInQFLsDq3hL+SA79sQ==", + "dependencies": { + "@material/feature-targeting": "15.0.0-canary.7f224ddd4.0", + "@material/theme": "15.0.0-canary.7f224ddd4.0", + "tslib": "^2.1.0" + } + }, + "node_modules/@ng-bootstrap/ng-bootstrap": { + "version": "16.0.0", + "resolved": "https://registry.npmjs.org/@ng-bootstrap/ng-bootstrap/-/ng-bootstrap-16.0.0.tgz", + "integrity": "sha512-+FJ3e6cX9DW2t7021Ji3oz433rk3+4jLfqzU+Jyx6/vJz1dIOaML3EAY6lYuW4TLiXgMPOMvs6KzPFALGh4Lag==", + "dependencies": { + "tslib": "^2.3.0" + }, + "peerDependencies": { + "@angular/common": "^17.0.0", + "@angular/core": "^17.0.0", + "@angular/forms": "^17.0.0", + "@angular/localize": "^17.0.0", + "@popperjs/core": "^2.11.8", + "rxjs": "^6.5.3 || ^7.4.0" + } + }, + "node_modules/@ngtools/webpack": { + "version": "17.3.8", + "resolved": "https://registry.npmjs.org/@ngtools/webpack/-/webpack-17.3.8.tgz", + "integrity": "sha512-CjSVVa/9fzMpEDQP01SC4colKCbZwj7vUq0H2bivp8jVsmd21x9Fu0gDBH0Y9NdfAIm4eGZvmiZKMII3vIOaYQ==", + "dev": true, + "engines": { + "node": "^18.13.0 || >=20.9.0", + "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", + "yarn": ">= 1.13.0" + }, + "peerDependencies": { + "@angular/compiler-cli": "^17.0.0", + "typescript": ">=5.2 <5.5", + "webpack": "^5.54.0" + } + }, + "node_modules/@ngx-translate/core": { + "version": "15.0.0", + "resolved": "https://registry.npmjs.org/@ngx-translate/core/-/core-15.0.0.tgz", + "integrity": "sha512-Am5uiuR0bOOxyoercDnAA3rJVizo4RRqJHo8N3RqJ+XfzVP/I845yEnMADykOHvM6HkVm4SZSnJBOiz0Anx5BA==", + "engines": { + "node": "^16.13.0 || >=18.10.0" + }, + "peerDependencies": { + "@angular/common": ">=16.0.0", + "@angular/core": ">=16.0.0", + "rxjs": "^6.5.5 || ^7.4.0" + } + }, + "node_modules/@ngx-translate/http-loader": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@ngx-translate/http-loader/-/http-loader-8.0.0.tgz", + "integrity": "sha512-SFMsdUcmHF5OdZkL1CHEoSAwbP5EbAOPTLLboOCRRoOg21P4GJx+51jxGdJeGve6LSKLf4Pay7BkTwmE6vxYlg==", + "engines": { + "node": "^16.13.0 || >=18.10.0" + }, + "peerDependencies": { + "@angular/common": ">=16.0.0", + "@angular/core": ">=16.0.0", + "@ngx-translate/core": ">=15.0.0", + "rxjs": "^6.5.5 || ^7.4.0" + } + }, + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "dependencies": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "dependencies": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@npmcli/agent": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/@npmcli/agent/-/agent-2.2.2.tgz", + "integrity": "sha512-OrcNPXdpSl9UX7qPVRWbmWMCSXrcDa2M9DvrbOTj7ao1S4PlqVFYv9/yLKMkrJKZ/V5A/kDBC690or307i26Og==", + "dev": true, + "dependencies": { + "agent-base": "^7.1.0", + "http-proxy-agent": "^7.0.0", + "https-proxy-agent": "^7.0.1", + "lru-cache": "^10.0.1", + "socks-proxy-agent": "^8.0.3" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/@npmcli/agent/node_modules/lru-cache": { + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.3.0.tgz", + "integrity": "sha512-CQl19J/g+Hbjbv4Y3mFNNXFEL/5t/KCg8POCuUqd4rMKjGG+j1ybER83hxV58zL+dFI1PTkt3GNFSHRt+d8qEQ==", + "dev": true, + "engines": { + "node": "14 || >=16.14" + } + }, + "node_modules/@npmcli/fs": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-3.1.1.tgz", + "integrity": "sha512-q9CRWjpHCMIh5sVyefoD1cA7PkvILqCZsnSOEUUivORLjxCO/Irmue2DprETiNgEqktDBZaM1Bi+jrarx1XdCg==", + "dev": true, + "dependencies": { + "semver": "^7.3.5" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/@npmcli/git": { + "version": "5.0.7", + "resolved": "https://registry.npmjs.org/@npmcli/git/-/git-5.0.7.tgz", + "integrity": "sha512-WaOVvto604d5IpdCRV2KjQu8PzkfE96d50CQGKgywXh2GxXmDeUO5EWcBC4V57uFyrNqx83+MewuJh3WTR3xPA==", + "dev": true, + "dependencies": { + "@npmcli/promise-spawn": "^7.0.0", + "lru-cache": "^10.0.1", + "npm-pick-manifest": "^9.0.0", + "proc-log": "^4.0.0", + "promise-inflight": "^1.0.1", + "promise-retry": "^2.0.1", + "semver": "^7.3.5", + "which": "^4.0.0" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/@npmcli/git/node_modules/isexe": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-3.1.1.tgz", + "integrity": "sha512-LpB/54B+/2J5hqQ7imZHfdU31OlgQqx7ZicVlkm9kzg9/w8GKLEcFfJl/t7DCEDueOyBAD6zCCwTO6Fzs0NoEQ==", + "dev": true, + "engines": { + "node": ">=16" + } + }, + "node_modules/@npmcli/git/node_modules/lru-cache": { + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.3.0.tgz", + "integrity": "sha512-CQl19J/g+Hbjbv4Y3mFNNXFEL/5t/KCg8POCuUqd4rMKjGG+j1ybER83hxV58zL+dFI1PTkt3GNFSHRt+d8qEQ==", + "dev": true, + "engines": { + "node": "14 || >=16.14" + } + }, + "node_modules/@npmcli/git/node_modules/proc-log": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/proc-log/-/proc-log-4.2.0.tgz", + "integrity": "sha512-g8+OnU/L2v+wyiVK+D5fA34J7EH8jZ8DDlvwhRCMxmMj7UCBvxiO1mGeN+36JXIKF4zevU4kRBd8lVgG9vLelA==", + "dev": true, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/@npmcli/git/node_modules/which": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/which/-/which-4.0.0.tgz", + "integrity": "sha512-GlaYyEb07DPxYCKhKzplCWBJtvxZcZMrL+4UkrTSJHHPyZU4mYYTv3qaOe77H7EODLSSopAUFAc6W8U4yqvscg==", + "dev": true, + "dependencies": { + "isexe": "^3.1.1" + }, + "bin": { + "node-which": "bin/which.js" + }, + "engines": { + "node": "^16.13.0 || >=18.0.0" + } + }, + "node_modules/@npmcli/installed-package-contents": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@npmcli/installed-package-contents/-/installed-package-contents-2.1.0.tgz", + "integrity": "sha512-c8UuGLeZpm69BryRykLuKRyKFZYJsZSCT4aVY5ds4omyZqJ172ApzgfKJ5eV/r3HgLdUYgFVe54KSFVjKoe27w==", + "dev": true, + "dependencies": { + "npm-bundled": "^3.0.0", + "npm-normalize-package-bin": "^3.0.0" + }, + "bin": { + "installed-package-contents": "bin/index.js" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/@npmcli/node-gyp": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@npmcli/node-gyp/-/node-gyp-3.0.0.tgz", + "integrity": "sha512-gp8pRXC2oOxu0DUE1/M3bYtb1b3/DbJ5aM113+XJBgfXdussRAsX0YOrOhdd8WvnAR6auDBvJomGAkLKA5ydxA==", + "dev": true, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/@npmcli/package-json": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@npmcli/package-json/-/package-json-5.2.0.tgz", + "integrity": "sha512-qe/kiqqkW0AGtvBjL8TJKZk/eBBSpnJkUWvHdQ9jM2lKHXRYYJuyNpJPlJw3c8QjC2ow6NZYiLExhUaeJelbxQ==", + "dev": true, + "dependencies": { + "@npmcli/git": "^5.0.0", + "glob": "^10.2.2", + "hosted-git-info": "^7.0.0", + "json-parse-even-better-errors": "^3.0.0", + "normalize-package-data": "^6.0.0", + "proc-log": "^4.0.0", + "semver": "^7.5.3" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/@npmcli/package-json/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/@npmcli/package-json/node_modules/glob": { + "version": "10.4.2", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.2.tgz", + "integrity": "sha512-GwMlUF6PkPo3Gk21UxkCohOv0PLcIXVtKyLlpEI28R/cO/4eNOdmLk3CMW1wROV/WR/EsZOWAfBbBOqYvs88/w==", + "dev": true, + "dependencies": { + "foreground-child": "^3.1.0", + "jackspeak": "^3.1.2", + "minimatch": "^9.0.4", + "minipass": "^7.1.2", + "package-json-from-dist": "^1.0.0", + "path-scurry": "^1.11.1" + }, + "bin": { + "glob": "dist/esm/bin.mjs" + }, + "engines": { + "node": ">=16 || 14 >=14.18" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@npmcli/package-json/node_modules/minimatch": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", + "dev": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@npmcli/package-json/node_modules/proc-log": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/proc-log/-/proc-log-4.2.0.tgz", + "integrity": "sha512-g8+OnU/L2v+wyiVK+D5fA34J7EH8jZ8DDlvwhRCMxmMj7UCBvxiO1mGeN+36JXIKF4zevU4kRBd8lVgG9vLelA==", + "dev": true, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/@npmcli/promise-spawn": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/@npmcli/promise-spawn/-/promise-spawn-7.0.2.tgz", + "integrity": "sha512-xhfYPXoV5Dy4UkY0D+v2KkwvnDfiA/8Mt3sWCGI/hM03NsYIH8ZaG6QzS9x7pje5vHZBZJ2v6VRFVTWACnqcmQ==", + "dev": true, + "dependencies": { + "which": "^4.0.0" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/@npmcli/promise-spawn/node_modules/isexe": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-3.1.1.tgz", + "integrity": "sha512-LpB/54B+/2J5hqQ7imZHfdU31OlgQqx7ZicVlkm9kzg9/w8GKLEcFfJl/t7DCEDueOyBAD6zCCwTO6Fzs0NoEQ==", + "dev": true, + "engines": { + "node": ">=16" + } + }, + "node_modules/@npmcli/promise-spawn/node_modules/which": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/which/-/which-4.0.0.tgz", + "integrity": "sha512-GlaYyEb07DPxYCKhKzplCWBJtvxZcZMrL+4UkrTSJHHPyZU4mYYTv3qaOe77H7EODLSSopAUFAc6W8U4yqvscg==", + "dev": true, + "dependencies": { + "isexe": "^3.1.1" + }, + "bin": { + "node-which": "bin/which.js" + }, + "engines": { + "node": "^16.13.0 || >=18.0.0" + } + }, + "node_modules/@npmcli/redact": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@npmcli/redact/-/redact-1.1.0.tgz", + "integrity": "sha512-PfnWuOkQgu7gCbnSsAisaX7hKOdZ4wSAhAzH3/ph5dSGau52kCRrMMGbiSQLwyTZpgldkZ49b0brkOr1AzGBHQ==", + "dev": true, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/@npmcli/run-script": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/@npmcli/run-script/-/run-script-7.0.4.tgz", + "integrity": "sha512-9ApYM/3+rBt9V80aYg6tZfzj3UWdiYyCt7gJUD1VJKvWF5nwKDSICXbYIQbspFTq6TOpbsEtIC0LArB8d9PFmg==", + "dev": true, + "dependencies": { + "@npmcli/node-gyp": "^3.0.0", + "@npmcli/package-json": "^5.0.0", + "@npmcli/promise-spawn": "^7.0.0", + "node-gyp": "^10.0.0", + "which": "^4.0.0" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/@npmcli/run-script/node_modules/isexe": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-3.1.1.tgz", + "integrity": "sha512-LpB/54B+/2J5hqQ7imZHfdU31OlgQqx7ZicVlkm9kzg9/w8GKLEcFfJl/t7DCEDueOyBAD6zCCwTO6Fzs0NoEQ==", + "dev": true, + "engines": { + "node": ">=16" + } + }, + "node_modules/@npmcli/run-script/node_modules/which": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/which/-/which-4.0.0.tgz", + "integrity": "sha512-GlaYyEb07DPxYCKhKzplCWBJtvxZcZMrL+4UkrTSJHHPyZU4mYYTv3qaOe77H7EODLSSopAUFAc6W8U4yqvscg==", + "dev": true, + "dependencies": { + "isexe": "^3.1.1" + }, + "bin": { + "node-which": "bin/which.js" + }, + "engines": { + "node": "^16.13.0 || >=18.0.0" + } + }, + "node_modules/@nuxtjs/opencollective": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/@nuxtjs/opencollective/-/opencollective-0.3.2.tgz", + "integrity": "sha512-um0xL3fO7Mf4fDxcqx9KryrB7zgRM5JSlvGN5AGkP6JLM5XEKyjeAiPbNxdXVXQ16isuAhYpvP88NgL2BGd6aA==", + "dev": true, + "dependencies": { + "chalk": "^4.1.0", + "consola": "^2.15.0", + "node-fetch": "^2.6.1" + }, + "bin": { + "opencollective": "bin/opencollective.js" + }, + "engines": { + "node": ">=8.0.0", + "npm": ">=5.0.0" + } + }, + "node_modules/@nuxtjs/opencollective/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@nuxtjs/opencollective/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/@nuxtjs/opencollective/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/@nuxtjs/opencollective/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/@nuxtjs/opencollective/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@nuxtjs/opencollective/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@openapitools/openapi-generator-cli": { + "version": "2.13.4", + "resolved": "https://registry.npmjs.org/@openapitools/openapi-generator-cli/-/openapi-generator-cli-2.13.4.tgz", + "integrity": "sha512-4JKyrk55ohQK2FcuZbPdNvxdyXD14jjOIvE8hYjJ+E1cHbRbfXQXbYnjTODFE52Gx8eAxz8C9icuhDYDLn7nww==", + "dev": true, + "hasInstallScript": true, + "dependencies": { + "@nestjs/axios": "3.0.2", + "@nestjs/common": "10.3.0", + "@nestjs/core": "10.3.0", + "@nuxtjs/opencollective": "0.3.2", + "axios": "1.6.8", + "chalk": "4.1.2", + "commander": "8.3.0", + "compare-versions": "4.1.4", + "concurrently": "6.5.1", + "console.table": "0.10.0", + "fs-extra": "10.1.0", + "glob": "7.2.3", + "https-proxy-agent": "7.0.4", + "inquirer": "8.2.6", + "lodash": "4.17.21", + "reflect-metadata": "0.1.13", + "rxjs": "7.8.1", + "tslib": "2.6.2" + }, + "bin": { + "openapi-generator-cli": "main.js" + }, + "engines": { + "node": ">=10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/openapi_generator" + } + }, + "node_modules/@openapitools/openapi-generator-cli/node_modules/@nestjs/axios": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@nestjs/axios/-/axios-3.0.2.tgz", + "integrity": "sha512-Z6GuOUdNQjP7FX+OuV2Ybyamse+/e0BFdTWBX5JxpBDKA+YkdLynDgG6HTF04zy6e9zPa19UX0WA2VDoehwhXQ==", + "dev": true, + "peerDependencies": { + "@nestjs/common": "^7.0.0 || ^8.0.0 || ^9.0.0 || ^10.0.0", + "axios": "^1.3.1", + "rxjs": "^6.0.0 || ^7.0.0" + } + }, + "node_modules/@openapitools/openapi-generator-cli/node_modules/@nestjs/common": { + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/@nestjs/common/-/common-10.3.0.tgz", + "integrity": "sha512-DGv34UHsZBxCM3H5QGE2XE/+oLJzz5+714JQjBhjD9VccFlQs3LRxo/epso4l7nJIiNlZkPyIUC8WzfU/5RTsQ==", + "dev": true, + "dependencies": { + "iterare": "1.2.1", + "tslib": "2.6.2", + "uid": "2.0.2" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/nest" + }, + "peerDependencies": { + "class-transformer": "*", + "class-validator": "*", + "reflect-metadata": "^0.1.12", + "rxjs": "^7.1.0" + }, + "peerDependenciesMeta": { + "class-transformer": { + "optional": true + }, + "class-validator": { + "optional": true + } + } + }, + "node_modules/@openapitools/openapi-generator-cli/node_modules/@nestjs/core": { + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/@nestjs/core/-/core-10.3.0.tgz", + "integrity": "sha512-N06P5ncknW/Pm8bj964WvLIZn2gNhHliCBoAO1LeBvNImYkecqKcrmLbY49Fa1rmMfEM3MuBHeDys3edeuYAOA==", + "dev": true, + "hasInstallScript": true, + "dependencies": { + "@nuxtjs/opencollective": "0.3.2", + "fast-safe-stringify": "2.1.1", + "iterare": "1.2.1", + "path-to-regexp": "3.2.0", + "tslib": "2.6.2", + "uid": "2.0.2" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/nest" + }, + "peerDependencies": { + "@nestjs/common": "^10.0.0", + "@nestjs/microservices": "^10.0.0", + "@nestjs/platform-express": "^10.0.0", + "@nestjs/websockets": "^10.0.0", + "reflect-metadata": "^0.1.12", + "rxjs": "^7.1.0" + }, + "peerDependenciesMeta": { + "@nestjs/microservices": { + "optional": true + }, + "@nestjs/platform-express": { + "optional": true + }, + "@nestjs/websockets": { + "optional": true + } + } + }, + "node_modules/@openapitools/openapi-generator-cli/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@openapitools/openapi-generator-cli/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/@openapitools/openapi-generator-cli/node_modules/cli-width": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-3.0.0.tgz", + "integrity": "sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==", + "dev": true, + "engines": { + "node": ">= 10" + } + }, + "node_modules/@openapitools/openapi-generator-cli/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/@openapitools/openapi-generator-cli/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/@openapitools/openapi-generator-cli/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@openapitools/openapi-generator-cli/node_modules/inquirer": { + "version": "8.2.6", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-8.2.6.tgz", + "integrity": "sha512-M1WuAmb7pn9zdFRtQYk26ZBoY043Sse0wVDdk4Bppr+JOXyQYybdtvK+l9wUibhtjdjvtoiNy8tk+EgsYIUqKg==", + "dev": true, + "dependencies": { + "ansi-escapes": "^4.2.1", + "chalk": "^4.1.1", + "cli-cursor": "^3.1.0", + "cli-width": "^3.0.0", + "external-editor": "^3.0.3", + "figures": "^3.0.0", + "lodash": "^4.17.21", + "mute-stream": "0.0.8", + "ora": "^5.4.1", + "run-async": "^2.4.0", + "rxjs": "^7.5.5", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0", + "through": "^2.3.6", + "wrap-ansi": "^6.0.1" + }, + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/@openapitools/openapi-generator-cli/node_modules/mute-stream": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz", + "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==", + "dev": true + }, + "node_modules/@openapitools/openapi-generator-cli/node_modules/path-to-regexp": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-3.2.0.tgz", + "integrity": "sha512-jczvQbCUS7XmS7o+y1aEO9OBVFeZBQ1MDSEqmO7xSoPgOPoowY/SxLpZ6Vh97/8qHZOteiCKb7gkG9gA2ZUxJA==", + "dev": true + }, + "node_modules/@openapitools/openapi-generator-cli/node_modules/reflect-metadata": { + "version": "0.1.13", + "resolved": "https://registry.npmjs.org/reflect-metadata/-/reflect-metadata-0.1.13.tgz", + "integrity": "sha512-Ts1Y/anZELhSsjMcU605fU9RE4Oi3p5ORujwbIKXfWa+0Zxs510Qrmrce5/Jowq3cHSZSJqBjypxmHarc+vEWg==", + "dev": true + }, + "node_modules/@openapitools/openapi-generator-cli/node_modules/run-async": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz", + "integrity": "sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==", + "dev": true, + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/@openapitools/openapi-generator-cli/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@openapitools/openapi-generator-cli/node_modules/tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "dev": true + }, + "node_modules/@pkgjs/parseargs": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", + "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", + "dev": true, + "optional": true, + "engines": { + "node": ">=14" + } + }, + "node_modules/@popperjs/core": { + "version": "2.11.8", + "resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.11.8.tgz", + "integrity": "sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A==", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/popperjs" + } + }, + "node_modules/@rollup/rollup-android-arm-eabi": { + "version": "4.18.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.18.0.tgz", + "integrity": "sha512-Tya6xypR10giZV1XzxmH5wr25VcZSncG0pZIjfePT0OVBvqNEurzValetGNarVrGiq66EBVAFn15iYX4w6FKgQ==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-android-arm64": { + "version": "4.18.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.18.0.tgz", + "integrity": "sha512-avCea0RAP03lTsDhEyfy+hpfr85KfyTctMADqHVhLAF3MlIkq83CP8UfAHUssgXTYd+6er6PaAhx/QGv4L1EiA==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-darwin-arm64": { + "version": "4.18.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.18.0.tgz", + "integrity": "sha512-IWfdwU7KDSm07Ty0PuA/W2JYoZ4iTj3TUQjkVsO/6U+4I1jN5lcR71ZEvRh52sDOERdnNhhHU57UITXz5jC1/w==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-darwin-x64": { + "version": "4.18.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.18.0.tgz", + "integrity": "sha512-n2LMsUz7Ynu7DoQrSQkBf8iNrjOGyPLrdSg802vk6XT3FtsgX6JbE8IHRvposskFm9SNxzkLYGSq9QdpLYpRNA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-linux-arm-gnueabihf": { + "version": "4.18.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.18.0.tgz", + "integrity": "sha512-C/zbRYRXFjWvz9Z4haRxcTdnkPt1BtCkz+7RtBSuNmKzMzp3ZxdM28Mpccn6pt28/UWUCTXa+b0Mx1k3g6NOMA==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm-musleabihf": { + "version": "4.18.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.18.0.tgz", + "integrity": "sha512-l3m9ewPgjQSXrUMHg93vt0hYCGnrMOcUpTz6FLtbwljo2HluS4zTXFy2571YQbisTnfTKPZ01u/ukJdQTLGh9A==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-gnu": { + "version": "4.18.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.18.0.tgz", + "integrity": "sha512-rJ5D47d8WD7J+7STKdCUAgmQk49xuFrRi9pZkWoRD1UeSMakbcepWXPF8ycChBoAqs1pb2wzvbY6Q33WmN2ftw==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-musl": { + "version": "4.18.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.18.0.tgz", + "integrity": "sha512-be6Yx37b24ZwxQ+wOQXXLZqpq4jTckJhtGlWGZs68TgdKXJgw54lUUoFYrg6Zs/kjzAQwEwYbp8JxZVzZLRepQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-powerpc64le-gnu": { + "version": "4.18.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.18.0.tgz", + "integrity": "sha512-hNVMQK+qrA9Todu9+wqrXOHxFiD5YmdEi3paj6vP02Kx1hjd2LLYR2eaN7DsEshg09+9uzWi2W18MJDlG0cxJA==", + "cpu": [ + "ppc64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-riscv64-gnu": { + "version": "4.18.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.18.0.tgz", + "integrity": "sha512-ROCM7i+m1NfdrsmvwSzoxp9HFtmKGHEqu5NNDiZWQtXLA8S5HBCkVvKAxJ8U+CVctHwV2Gb5VUaK7UAkzhDjlg==", + "cpu": [ + "riscv64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-s390x-gnu": { + "version": "4.18.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.18.0.tgz", + "integrity": "sha512-0UyyRHyDN42QL+NbqevXIIUnKA47A+45WyasO+y2bGJ1mhQrfrtXUpTxCOrfxCR4esV3/RLYyucGVPiUsO8xjg==", + "cpu": [ + "s390x" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-gnu": { + "version": "4.18.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.18.0.tgz", + "integrity": "sha512-xuglR2rBVHA5UsI8h8UbX4VJ470PtGCf5Vpswh7p2ukaqBGFTnsfzxUBetoWBWymHMxbIG0Cmx7Y9qDZzr648w==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-musl": { + "version": "4.18.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.18.0.tgz", + "integrity": "sha512-LKaqQL9osY/ir2geuLVvRRs+utWUNilzdE90TpyoX0eNqPzWjRm14oMEE+YLve4k/NAqCdPkGYDaDF5Sw+xBfg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-win32-arm64-msvc": { + "version": "4.18.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.18.0.tgz", + "integrity": "sha512-7J6TkZQFGo9qBKH0pk2cEVSRhJbL6MtfWxth7Y5YmZs57Pi+4x6c2dStAUvaQkHQLnEQv1jzBUW43GvZW8OFqA==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-ia32-msvc": { + "version": "4.18.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.18.0.tgz", + "integrity": "sha512-Txjh+IxBPbkUB9+SXZMpv+b/vnTEtFyfWZgJ6iyCmt2tdx0OF5WhFowLmnh8ENGNpfUlUZkdI//4IEmhwPieNg==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-x64-msvc": { + "version": "4.18.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.18.0.tgz", + "integrity": "sha512-UOo5FdvOL0+eIVTgS4tIdbW+TtnBLWg1YBCcU2KWM7nuNwRz9bksDX1bekJJCpu25N1DVWaCwnT39dVQxzqS8g==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@schematics/angular": { + "version": "17.3.8", + "resolved": "https://registry.npmjs.org/@schematics/angular/-/angular-17.3.8.tgz", + "integrity": "sha512-2g4OmSyE9YGq50Uj7fNI26P/TSAFJ7ZuirwTF2O7Xc4XRQ29/tYIIqhezpNlTb6rlYblcQuMcUZBrMfWJHcqJw==", + "dev": true, + "dependencies": { + "@angular-devkit/core": "17.3.8", + "@angular-devkit/schematics": "17.3.8", + "jsonc-parser": "3.2.1" + }, + "engines": { + "node": "^18.13.0 || >=20.9.0", + "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", + "yarn": ">= 1.13.0" + } + }, + "node_modules/@sigstore/bundle": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/@sigstore/bundle/-/bundle-2.3.2.tgz", + "integrity": "sha512-wueKWDk70QixNLB363yHc2D2ItTgYiMTdPwK8D9dKQMR3ZQ0c35IxP5xnwQ8cNLoCgCRcHf14kE+CLIvNX1zmA==", + "dev": true, + "dependencies": { + "@sigstore/protobuf-specs": "^0.3.2" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/@sigstore/core": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@sigstore/core/-/core-1.1.0.tgz", + "integrity": "sha512-JzBqdVIyqm2FRQCulY6nbQzMpJJpSiJ8XXWMhtOX9eKgaXXpfNOF53lzQEjIydlStnd/eFtuC1dW4VYdD93oRg==", + "dev": true, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/@sigstore/protobuf-specs": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/@sigstore/protobuf-specs/-/protobuf-specs-0.3.2.tgz", + "integrity": "sha512-c6B0ehIWxMI8wiS/bj6rHMPqeFvngFV7cDU/MY+B16P9Z3Mp9k8L93eYZ7BYzSickzuqAQqAq0V956b3Ju6mLw==", + "dev": true, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/@sigstore/sign": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/@sigstore/sign/-/sign-2.3.2.tgz", + "integrity": "sha512-5Vz5dPVuunIIvC5vBb0APwo7qKA4G9yM48kPWJT+OEERs40md5GoUR1yedwpekWZ4m0Hhw44m6zU+ObsON+iDA==", + "dev": true, + "dependencies": { + "@sigstore/bundle": "^2.3.2", + "@sigstore/core": "^1.0.0", + "@sigstore/protobuf-specs": "^0.3.2", + "make-fetch-happen": "^13.0.1", + "proc-log": "^4.2.0", + "promise-retry": "^2.0.1" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/@sigstore/sign/node_modules/proc-log": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/proc-log/-/proc-log-4.2.0.tgz", + "integrity": "sha512-g8+OnU/L2v+wyiVK+D5fA34J7EH8jZ8DDlvwhRCMxmMj7UCBvxiO1mGeN+36JXIKF4zevU4kRBd8lVgG9vLelA==", + "dev": true, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/@sigstore/tuf": { + "version": "2.3.4", + "resolved": "https://registry.npmjs.org/@sigstore/tuf/-/tuf-2.3.4.tgz", + "integrity": "sha512-44vtsveTPUpqhm9NCrbU8CWLe3Vck2HO1PNLw7RIajbB7xhtn5RBPm1VNSCMwqGYHhDsBJG8gDF0q4lgydsJvw==", + "dev": true, + "dependencies": { + "@sigstore/protobuf-specs": "^0.3.2", + "tuf-js": "^2.2.1" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/@sigstore/verify": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@sigstore/verify/-/verify-1.2.1.tgz", + "integrity": "sha512-8iKx79/F73DKbGfRf7+t4dqrc0bRr0thdPrxAtCKWRm/F0tG71i6O1rvlnScncJLLBZHn3h8M3c1BSUAb9yu8g==", + "dev": true, + "dependencies": { + "@sigstore/bundle": "^2.3.2", + "@sigstore/core": "^1.1.0", + "@sigstore/protobuf-specs": "^0.3.2" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/@socket.io/component-emitter": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@socket.io/component-emitter/-/component-emitter-3.1.2.tgz", + "integrity": "sha512-9BCxFwvbGg/RsZK9tjXd8s4UcwR0MWeFQ1XEKIQVVvAGJyINdrqKMcTRyLoK8Rse1GjzLV9cwjWV1olXRWEXVA==", + "dev": true + }, + "node_modules/@ts-morph/common": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/@ts-morph/common/-/common-0.2.2.tgz", + "integrity": "sha512-cMUlKTWvrfE5RYJn2VvM67iwIPl3aXm4xfm8oHzCCi2YaWp+NlSuiqj5cUMh+Lse2y84BqjAVOxAv1AY1Ncf+w==", + "dev": true, + "dependencies": { + "@dsherret/to-absolute-glob": "^2.0.2", + "fast-glob": "^3.1.0", + "fs-extra": "^8.1.0", + "is-negated-glob": "^1.0.0", + "multimatch": "^4.0.0", + "typescript": "~3.7.2" + } + }, + "node_modules/@ts-morph/common/node_modules/fs-extra": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", + "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + }, + "engines": { + "node": ">=6 <7 || >=8" + } + }, + "node_modules/@ts-morph/common/node_modules/jsonfile": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", + "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==", + "dev": true, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/@ts-morph/common/node_modules/typescript": { + "version": "3.7.7", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.7.7.tgz", + "integrity": "sha512-MmQdgo/XenfZPvVLtKZOq9jQQvzaUAUpcKW8Z43x9B2fOm4S5g//tPtMweZUIP+SoBqrVPEIm+dJeQ9dfO0QdA==", + "dev": true, + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=4.2.0" + } + }, + "node_modules/@ts-morph/common/node_modules/universalify": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", + "dev": true, + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/@tufjs/canonical-json": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@tufjs/canonical-json/-/canonical-json-2.0.0.tgz", + "integrity": "sha512-yVtV8zsdo8qFHe+/3kw81dSLyF7D576A5cCFCi4X7B39tWT7SekaEFUnvnWJHz+9qO7qJTah1JbrDjWKqFtdWA==", + "dev": true, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/@tufjs/models": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@tufjs/models/-/models-2.0.1.tgz", + "integrity": "sha512-92F7/SFyufn4DXsha9+QfKnN03JGqtMFMXgSHbZOo8JG59WkTni7UzAouNQDf7AuP9OAMxVOPQcqG3sB7w+kkg==", + "dev": true, + "dependencies": { + "@tufjs/canonical-json": "2.0.0", + "minimatch": "^9.0.4" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/@tufjs/models/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/@tufjs/models/node_modules/minimatch": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", + "dev": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@types/babel__core": { + "version": "7.20.5", + "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz", + "integrity": "sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==", + "peer": true, + "dependencies": { + "@babel/parser": "^7.20.7", + "@babel/types": "^7.20.7", + "@types/babel__generator": "*", + "@types/babel__template": "*", + "@types/babel__traverse": "*" + } + }, + "node_modules/@types/babel__generator": { + "version": "7.6.8", + "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.8.tgz", + "integrity": "sha512-ASsj+tpEDsEiFr1arWrlN6V3mdfjRMZt6LtK/Vp/kreFLnr5QH5+DhvD5nINYZXzwJvXeGq+05iUXcAzVrqWtw==", + "peer": true, + "dependencies": { + "@babel/types": "^7.0.0" + } + }, + "node_modules/@types/babel__template": { + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.4.tgz", + "integrity": "sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==", + "peer": true, + "dependencies": { + "@babel/parser": "^7.1.0", + "@babel/types": "^7.0.0" + } + }, + "node_modules/@types/babel__traverse": { + "version": "7.20.6", + "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.20.6.tgz", + "integrity": "sha512-r1bzfrm0tomOI8g1SzvCaQHo6Lcv6zu0EA+W2kHrt8dyrHQxGzBBL4kdkzIS+jBMV+EYcMAEAqXqYaLJq5rOZg==", + "peer": true, + "dependencies": { + "@babel/types": "^7.20.7" + } + }, + "node_modules/@types/body-parser": { + "version": "1.19.5", + "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.5.tgz", + "integrity": "sha512-fB3Zu92ucau0iQ0JMCFQE7b/dv8Ot07NI3KaZIkIUNXq82k4eBAqUaneXfleGY9JWskeS9y+u0nXMyspcuQrCg==", + "dev": true, + "dependencies": { + "@types/connect": "*", + "@types/node": "*" + } + }, + "node_modules/@types/bonjour": { + "version": "3.5.13", + "resolved": "https://registry.npmjs.org/@types/bonjour/-/bonjour-3.5.13.tgz", + "integrity": "sha512-z9fJ5Im06zvUL548KvYNecEVlA7cVDkGUi6kZusb04mpyEFKCIZJvloCcmpmLaIahDpOQGHaHmG6imtPMmPXGQ==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/connect": { + "version": "3.4.38", + "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.38.tgz", + "integrity": "sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/connect-history-api-fallback": { + "version": "1.5.4", + "resolved": "https://registry.npmjs.org/@types/connect-history-api-fallback/-/connect-history-api-fallback-1.5.4.tgz", + "integrity": "sha512-n6Cr2xS1h4uAulPRdlw6Jl6s1oG8KrVilPN2yUITEs+K48EzMJJ3W1xy8K5eWuFvjp3R74AOIGSmp2UfBJ8HFw==", + "dev": true, + "dependencies": { + "@types/express-serve-static-core": "*", + "@types/node": "*" + } + }, + "node_modules/@types/cookie": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/@types/cookie/-/cookie-0.4.1.tgz", + "integrity": "sha512-XW/Aa8APYr6jSVVA1y/DEIZX0/GMKLEVekNG727R8cs56ahETkRAy/3DR7+fJyh7oUgGwNQaRfXCun0+KbWY7Q==", + "dev": true + }, + "node_modules/@types/cors": { + "version": "2.8.17", + "resolved": "https://registry.npmjs.org/@types/cors/-/cors-2.8.17.tgz", + "integrity": "sha512-8CGDvrBj1zgo2qE+oS3pOCyYNqCPryMWY2bGfwA0dcfopWGgxs+78df0Rs3rc9THP4JkOhLsAa+15VdpAqkcUA==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/eslint": { + "version": "8.56.10", + "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.56.10.tgz", + "integrity": "sha512-Shavhk87gCtY2fhXDctcfS3e6FdxWkCx1iUZ9eEUbh7rTqlZT0/IzOkCOVt0fCjcFuZ9FPYfuezTBImfHCDBGQ==", + "dev": true, + "dependencies": { + "@types/estree": "*", + "@types/json-schema": "*" + } + }, + "node_modules/@types/eslint-scope": { + "version": "3.7.7", + "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.7.tgz", + "integrity": "sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg==", + "dev": true, + "dependencies": { + "@types/eslint": "*", + "@types/estree": "*" + } + }, + "node_modules/@types/estree": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.5.tgz", + "integrity": "sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==", + "dev": true + }, + "node_modules/@types/express": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.21.tgz", + "integrity": "sha512-ejlPM315qwLpaQlQDTjPdsUFSc6ZsP4AN6AlWnogPjQ7CVi7PYF3YVz+CY3jE2pwYf7E/7HlDAN0rV2GxTG0HQ==", + "dev": true, + "dependencies": { + "@types/body-parser": "*", + "@types/express-serve-static-core": "^4.17.33", + "@types/qs": "*", + "@types/serve-static": "*" + } + }, + "node_modules/@types/express-serve-static-core": { + "version": "4.19.5", + "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.19.5.tgz", + "integrity": "sha512-y6W03tvrACO72aijJ5uF02FRq5cgDR9lUxddQ8vyF+GvmjJQqbzDcJngEjURc+ZsG31VI3hODNZJ2URj86pzmg==", + "dev": true, + "dependencies": { + "@types/node": "*", + "@types/qs": "*", + "@types/range-parser": "*", + "@types/send": "*" + } + }, + "node_modules/@types/http-errors": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@types/http-errors/-/http-errors-2.0.4.tgz", + "integrity": "sha512-D0CFMMtydbJAegzOyHjtiKPLlvnm3iTZyZRSZoLq2mRhDdmLfIWOCYPfQJ4cu2erKghU++QvjcUjp/5h7hESpA==", + "dev": true + }, + "node_modules/@types/http-proxy": { + "version": "1.17.14", + "resolved": "https://registry.npmjs.org/@types/http-proxy/-/http-proxy-1.17.14.tgz", + "integrity": "sha512-SSrD0c1OQzlFX7pGu1eXxSEjemej64aaNPRhhVYUGqXh0BtldAAx37MG8btcumvpgKyZp1F5Gn3JkktdxiFv6w==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/jasmine": { + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/@types/jasmine/-/jasmine-5.1.4.tgz", + "integrity": "sha512-px7OMFO/ncXxixDe1zR13V1iycqWae0MxTaw62RpFlksUi5QuNWgQJFkTQjIOvrmutJbI7Fp2Y2N1F6D2R4G6w==", + "dev": true + }, + "node_modules/@types/json-schema": { + "version": "7.0.15", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", + "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", + "dev": true + }, + "node_modules/@types/mime": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.5.tgz", + "integrity": "sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w==", + "dev": true + }, + "node_modules/@types/minimatch": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.5.tgz", + "integrity": "sha512-Klz949h02Gz2uZCMGwDUSDS1YBlTdDDgbWHi+81l29tQALUtvz4rAYi5uoVhE5Lagoq6DeqAUlbrHvW/mXDgdQ==", + "dev": true + }, + "node_modules/@types/node": { + "version": "20.14.9", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.14.9.tgz", + "integrity": "sha512-06OCtnTXtWOZBJlRApleWndH4JsRVs1pDCc8dLSQp+7PpUpX3ePdHyeNSFTeSe7FtKyQkrlPvHwJOW3SLd8Oyg==", + "dependencies": { + "undici-types": "~5.26.4" + } + }, + "node_modules/@types/node-forge": { + "version": "1.3.11", + "resolved": "https://registry.npmjs.org/@types/node-forge/-/node-forge-1.3.11.tgz", + "integrity": "sha512-FQx220y22OKNTqaByeBGqHWYz4cl94tpcxeFdvBo3wjG6XPBuZ0BNgNZRV5J5TFmmcsJ4IzsLkmGRiQbnYsBEQ==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/qs": { + "version": "6.9.15", + "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.15.tgz", + "integrity": "sha512-uXHQKES6DQKKCLh441Xv/dwxOq1TVS3JPUMlEqoEglvlhR6Mxnlew/Xq/LRVHpLyk7iK3zODe1qYHIMltO7XGg==", + "dev": true + }, + "node_modules/@types/range-parser": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.7.tgz", + "integrity": "sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ==", + "dev": true + }, + "node_modules/@types/retry": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/@types/retry/-/retry-0.12.0.tgz", + "integrity": "sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA==", + "dev": true + }, + "node_modules/@types/send": { + "version": "0.17.4", + "resolved": "https://registry.npmjs.org/@types/send/-/send-0.17.4.tgz", + "integrity": "sha512-x2EM6TJOybec7c52BX0ZspPodMsQUd5L6PRwOunVyVUhXiBSKf3AezDL8Dgvgt5o0UfKNfuA0eMLr2wLT4AiBA==", + "dev": true, + "dependencies": { + "@types/mime": "^1", + "@types/node": "*" + } + }, + "node_modules/@types/serve-index": { + "version": "1.9.4", + "resolved": "https://registry.npmjs.org/@types/serve-index/-/serve-index-1.9.4.tgz", + "integrity": "sha512-qLpGZ/c2fhSs5gnYsQxtDEq3Oy8SXPClIXkW5ghvAvsNuVSA8k+gCONcUCS/UjLEYvYps+e8uBtfgXgvhwfNug==", + "dev": true, + "dependencies": { + "@types/express": "*" + } + }, + "node_modules/@types/serve-static": { + "version": "1.15.7", + "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.7.tgz", + "integrity": "sha512-W8Ym+h8nhuRwaKPaDw34QUkwsGi6Rc4yYqvKFo5rm2FUEhCFbzVWrxXUxuKK8TASjWsysJY0nsmNCGhCOIsrOw==", + "dev": true, + "dependencies": { + "@types/http-errors": "*", + "@types/node": "*", + "@types/send": "*" + } + }, + "node_modules/@types/sockjs": { + "version": "0.3.36", + "resolved": "https://registry.npmjs.org/@types/sockjs/-/sockjs-0.3.36.tgz", + "integrity": "sha512-MK9V6NzAS1+Ud7JV9lJLFqW85VbC9dq3LmwZCuBe4wBDgKC0Kj/jd8Xl+nSviU+Qc3+m7umHHyHg//2KSa0a0Q==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/uuid": { + "version": "9.0.8", + "resolved": "https://registry.npmjs.org/@types/uuid/-/uuid-9.0.8.tgz", + "integrity": "sha512-jg+97EGIcY9AGHJJRaaPVgetKDsrTgbRjQ5Msgjh/DQKEFl0DtyRr/VCOyD1T2R1MNeWPK/u7JoGhlDZnKBAfA==", + "dev": true + }, + "node_modules/@types/ws": { + "version": "8.5.10", + "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.5.10.tgz", + "integrity": "sha512-vmQSUcfalpIq0R9q7uTo2lXs6eGIpt9wtnLdMv9LVpIjCA/+ufZRozlVoVelIYixx1ugCBKDhn89vnsEGOCx9A==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@verizonconnect/ngx-form-generator": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@verizonconnect/ngx-form-generator/-/ngx-form-generator-1.2.0.tgz", + "integrity": "sha512-r8bNEDl0d9O2seJissQ8LeYwEL7kPNYWUkg8dYtNgfAZNBsb3Q/HB+YKmcOtPftZA5LbAgCIzj9XHxnPs8pCSg==", + "dev": true, + "dependencies": { + "@apidevtools/swagger-parser": "^10.0.2", + "camelcase": "^5.0.0", + "prettier": "^1.19.1", + "ts-morph": "^6.0.3", + "yaml": "^1.8.3", + "yargs": "^15.3.1" + }, + "bin": { + "ngx-form-generator": "dist/generator-cli.js" + } + }, + "node_modules/@verizonconnect/ngx-form-generator/node_modules/cliui": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz", + "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==", + "dev": true, + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^6.2.0" + } + }, + "node_modules/@verizonconnect/ngx-form-generator/node_modules/y18n": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", + "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==", + "dev": true + }, + "node_modules/@verizonconnect/ngx-form-generator/node_modules/yargs": { + "version": "15.4.1", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz", + "integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==", + "dev": true, + "dependencies": { + "cliui": "^6.0.0", + "decamelize": "^1.2.0", + "find-up": "^4.1.0", + "get-caller-file": "^2.0.1", + "require-directory": "^2.1.1", + "require-main-filename": "^2.0.0", + "set-blocking": "^2.0.0", + "string-width": "^4.2.0", + "which-module": "^2.0.0", + "y18n": "^4.0.0", + "yargs-parser": "^18.1.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@verizonconnect/ngx-form-generator/node_modules/yargs-parser": { + "version": "18.1.3", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz", + "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==", + "dev": true, + "dependencies": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/@vitejs/plugin-basic-ssl": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@vitejs/plugin-basic-ssl/-/plugin-basic-ssl-1.1.0.tgz", + "integrity": "sha512-wO4Dk/rm8u7RNhOf95ZzcEmC9rYOncYgvq4z3duaJrCgjN8BxAnDVyndanfcJZ0O6XZzHz6Q0hTimxTg8Y9g/A==", + "dev": true, + "engines": { + "node": ">=14.6.0" + }, + "peerDependencies": { + "vite": "^3.0.0 || ^4.0.0 || ^5.0.0" + } + }, + "node_modules/@webassemblyjs/ast": { + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.12.1.tgz", + "integrity": "sha512-EKfMUOPRRUTy5UII4qJDGPpqfwjOmZ5jeGFwid9mnoqIFK+e0vqoi1qH56JpmZSzEL53jKnNzScdmftJyG5xWg==", + "dev": true, + "dependencies": { + "@webassemblyjs/helper-numbers": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6" + } + }, + "node_modules/@webassemblyjs/floating-point-hex-parser": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.6.tgz", + "integrity": "sha512-ejAj9hfRJ2XMsNHk/v6Fu2dGS+i4UaXBXGemOfQ/JfQ6mdQg/WXtwleQRLLS4OvfDhv8rYnVwH27YJLMyYsxhw==", + "dev": true + }, + "node_modules/@webassemblyjs/helper-api-error": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.6.tgz", + "integrity": "sha512-o0YkoP4pVu4rN8aTJgAyj9hC2Sv5UlkzCHhxqWj8butaLvnpdc2jOwh4ewE6CX0txSfLn/UYaV/pheS2Txg//Q==", + "dev": true + }, + "node_modules/@webassemblyjs/helper-buffer": { + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.12.1.tgz", + "integrity": "sha512-nzJwQw99DNDKr9BVCOZcLuJJUlqkJh+kVzVl6Fmq/tI5ZtEyWT1KZMyOXltXLZJmDtvLCDgwsyrkohEtopTXCw==", + "dev": true + }, + "node_modules/@webassemblyjs/helper-numbers": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.6.tgz", + "integrity": "sha512-vUIhZ8LZoIWHBohiEObxVm6hwP034jwmc9kuq5GdHZH0wiLVLIPcMCdpJzG4C11cHoQ25TFIQj9kaVADVX7N3g==", + "dev": true, + "dependencies": { + "@webassemblyjs/floating-point-hex-parser": "1.11.6", + "@webassemblyjs/helper-api-error": "1.11.6", + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@webassemblyjs/helper-wasm-bytecode": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.6.tgz", + "integrity": "sha512-sFFHKwcmBprO9e7Icf0+gddyWYDViL8bpPjJJl0WHxCdETktXdmtWLGVzoHbqUcY4Be1LkNfwTmXOJUFZYSJdA==", + "dev": true + }, + "node_modules/@webassemblyjs/helper-wasm-section": { + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.12.1.tgz", + "integrity": "sha512-Jif4vfB6FJlUlSbgEMHUyk1j234GTNG9dBJ4XJdOySoj518Xj0oGsNi59cUQF4RRMS9ouBUxDDdyBVfPTypa5g==", + "dev": true, + "dependencies": { + "@webassemblyjs/ast": "1.12.1", + "@webassemblyjs/helper-buffer": "1.12.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/wasm-gen": "1.12.1" + } + }, + "node_modules/@webassemblyjs/ieee754": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.6.tgz", + "integrity": "sha512-LM4p2csPNvbij6U1f19v6WR56QZ8JcHg3QIJTlSwzFcmx6WSORicYj6I63f9yU1kEUtrpG+kjkiIAkevHpDXrg==", + "dev": true, + "dependencies": { + "@xtuc/ieee754": "^1.2.0" + } + }, + "node_modules/@webassemblyjs/leb128": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.6.tgz", + "integrity": "sha512-m7a0FhE67DQXgouf1tbN5XQcdWoNgaAuoULHIfGFIEVKA6tu/edls6XnIlkmS6FrXAquJRPni3ZZKjw6FSPjPQ==", + "dev": true, + "dependencies": { + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@webassemblyjs/utf8": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.6.tgz", + "integrity": "sha512-vtXf2wTQ3+up9Zsg8sa2yWiQpzSsMyXj0qViVP6xKGCUT8p8YJ6HqI7l5eCnWx1T/FYdsv07HQs2wTFbbof/RA==", + "dev": true + }, + "node_modules/@webassemblyjs/wasm-edit": { + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.12.1.tgz", + "integrity": "sha512-1DuwbVvADvS5mGnXbE+c9NfA8QRcZ6iKquqjjmR10k6o+zzsRVesil54DKexiowcFCPdr/Q0qaMgB01+SQ1u6g==", + "dev": true, + "dependencies": { + "@webassemblyjs/ast": "1.12.1", + "@webassemblyjs/helper-buffer": "1.12.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/helper-wasm-section": "1.12.1", + "@webassemblyjs/wasm-gen": "1.12.1", + "@webassemblyjs/wasm-opt": "1.12.1", + "@webassemblyjs/wasm-parser": "1.12.1", + "@webassemblyjs/wast-printer": "1.12.1" + } + }, + "node_modules/@webassemblyjs/wasm-gen": { + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.12.1.tgz", + "integrity": "sha512-TDq4Ojh9fcohAw6OIMXqiIcTq5KUXTGRkVxbSo1hQnSy6lAM5GSdfwWeSxpAo0YzgsgF182E/U0mDNhuA0tW7w==", + "dev": true, + "dependencies": { + "@webassemblyjs/ast": "1.12.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/ieee754": "1.11.6", + "@webassemblyjs/leb128": "1.11.6", + "@webassemblyjs/utf8": "1.11.6" + } + }, + "node_modules/@webassemblyjs/wasm-opt": { + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.12.1.tgz", + "integrity": "sha512-Jg99j/2gG2iaz3hijw857AVYekZe2SAskcqlWIZXjji5WStnOpVoat3gQfT/Q5tb2djnCjBtMocY/Su1GfxPBg==", + "dev": true, + "dependencies": { + "@webassemblyjs/ast": "1.12.1", + "@webassemblyjs/helper-buffer": "1.12.1", + "@webassemblyjs/wasm-gen": "1.12.1", + "@webassemblyjs/wasm-parser": "1.12.1" + } + }, + "node_modules/@webassemblyjs/wasm-parser": { + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.12.1.tgz", + "integrity": "sha512-xikIi7c2FHXysxXe3COrVUPSheuBtpcfhbpFj4gmu7KRLYOzANztwUU0IbsqvMqzuNK2+glRGWCEqZo1WCLyAQ==", + "dev": true, + "dependencies": { + "@webassemblyjs/ast": "1.12.1", + "@webassemblyjs/helper-api-error": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/ieee754": "1.11.6", + "@webassemblyjs/leb128": "1.11.6", + "@webassemblyjs/utf8": "1.11.6" + } + }, + "node_modules/@webassemblyjs/wast-printer": { + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.12.1.tgz", + "integrity": "sha512-+X4WAlOisVWQMikjbcvY2e0rwPsKQ9F688lksZhBcPycBBuii3O7m8FACbDMWDojpAqvjIncrG8J0XHKyQfVeA==", + "dev": true, + "dependencies": { + "@webassemblyjs/ast": "1.12.1", + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@xtuc/ieee754": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", + "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==", + "dev": true + }, + "node_modules/@xtuc/long": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", + "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==", + "dev": true + }, + "node_modules/@yarnpkg/lockfile": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@yarnpkg/lockfile/-/lockfile-1.1.0.tgz", + "integrity": "sha512-GpSwvyXOcOOlV70vbnzjj4fW5xW/FdUF6nQEt1ENy7m4ZCczi1+/buVUPAqmGfqznsORNFzUMjctTIp8a9tuCQ==", + "dev": true + }, + "node_modules/abbrev": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-2.0.0.tgz", + "integrity": "sha512-6/mh1E2u2YgEsCHdY0Yx5oW+61gZU+1vXaoiHHrpKeuRNNgFvS+/jrwHiQhB5apAf5oB7UB7E19ol2R2LKH8hQ==", + "dev": true, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/accepts": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", + "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", + "dev": true, + "dependencies": { + "mime-types": "~2.1.34", + "negotiator": "0.6.3" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/acorn": { + "version": "8.12.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.12.0.tgz", + "integrity": "sha512-RTvkC4w+KNXrM39/lWCUaG0IbRkWdCv7W/IOW9oU6SawyxulvkQy5HQPVTKxEjczcUvapcrw3cFx/60VN/NRNw==", + "dev": true, + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-import-assertions": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.9.0.tgz", + "integrity": "sha512-cmMwop9x+8KFhxvKrKfPYmN6/pKTYYHBqLa0DfvVZcKMJWNyWLnaqND7dx/qn66R7ewM1UX5XMaDVP5wlVTaVA==", + "dev": true, + "peerDependencies": { + "acorn": "^8" + } + }, + "node_modules/adjust-sourcemap-loader": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/adjust-sourcemap-loader/-/adjust-sourcemap-loader-4.0.0.tgz", + "integrity": "sha512-OXwN5b9pCUXNQHJpwwD2qP40byEmSgzj8B4ydSN0uMNYWiFmJ6x6KwUllMmfk8Rwu/HJDFR7U8ubsWBoN0Xp0A==", + "dev": true, + "dependencies": { + "loader-utils": "^2.0.0", + "regex-parser": "^2.2.11" + }, + "engines": { + "node": ">=8.9" + } + }, + "node_modules/adjust-sourcemap-loader/node_modules/loader-utils": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.4.tgz", + "integrity": "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==", + "dev": true, + "dependencies": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^2.1.2" + }, + "engines": { + "node": ">=8.9.0" + } + }, + "node_modules/agent-base": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.1.tgz", + "integrity": "sha512-H0TSyFNDMomMNJQBn8wFV5YC/2eJ+VXECwOadZJT554xP6cODZHPX3H9QMQECxvrgiSOP1pHjy1sMWQVYJOUOA==", + "dev": true, + "dependencies": { + "debug": "^4.3.4" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/aggregate-error": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", + "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", + "dev": true, + "dependencies": { + "clean-stack": "^2.0.0", + "indent-string": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/ajv": { + "version": "8.12.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz", + "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/ajv-draft-04": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/ajv-draft-04/-/ajv-draft-04-1.0.0.tgz", + "integrity": "sha512-mv00Te6nmYbRp5DCwclxtt7yV/joXJPGS7nM+97GdxvuttCOfgI3K4U25zboyeX0O+myI8ERluxQe5wljMmVIw==", + "dev": true, + "peerDependencies": { + "ajv": "^8.5.0" + }, + "peerDependenciesMeta": { + "ajv": { + "optional": true + } + } + }, + "node_modules/ajv-formats": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz", + "integrity": "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==", + "dev": true, + "dependencies": { + "ajv": "^8.0.0" + }, + "peerDependencies": { + "ajv": "^8.0.0" + }, + "peerDependenciesMeta": { + "ajv": { + "optional": true + } + } + }, + "node_modules/ajv-keywords": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", + "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.3" + }, + "peerDependencies": { + "ajv": "^8.8.2" + } + }, + "node_modules/ansi-colors": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.3.tgz", + "integrity": "sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/ansi-escapes": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", + "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", + "dev": true, + "dependencies": { + "type-fest": "^0.21.3" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/ansi-html-community": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/ansi-html-community/-/ansi-html-community-0.0.8.tgz", + "integrity": "sha512-1APHAyr3+PCamwNw3bXCPp4HFLONZt/yIH0sZp0/469KWNTEy+qN5jQ3GVX6DMZ1UXAi34yVwtTeaG/HpBuuzw==", + "dev": true, + "engines": [ + "node >= 0.8.0" + ], + "bin": { + "ansi-html": "bin/ansi-html" + } + }, + "node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/anymatch": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/anymatch/node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dev": true, + "dependencies": { + "sprintf-js": "~1.0.2" + } + }, + "node_modules/array-differ": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/array-differ/-/array-differ-3.0.0.tgz", + "integrity": "sha512-THtfYS6KtME/yIAhKjZ2ul7XI96lQGHRputJQHO80LAWQnuGP4iCIN8vdMRboGbIEYBwU33q8Tch1os2+X0kMg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/array-flatten": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", + "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==", + "dev": true + }, + "node_modules/array-union": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/arrify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/arrify/-/arrify-2.0.1.tgz", + "integrity": "sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", + "dev": true + }, + "node_modules/autoprefixer": { + "version": "10.4.18", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.18.tgz", + "integrity": "sha512-1DKbDfsr6KUElM6wg+0zRNkB/Q7WcKYAaK+pzXn+Xqmszm/5Xa9coeNdtP88Vi+dPzZnMjhge8GIV49ZQkDa+g==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/autoprefixer" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "browserslist": "^4.23.0", + "caniuse-lite": "^1.0.30001591", + "fraction.js": "^4.3.7", + "normalize-range": "^0.1.2", + "picocolors": "^1.0.0", + "postcss-value-parser": "^4.2.0" + }, + "bin": { + "autoprefixer": "bin/autoprefixer" + }, + "engines": { + "node": "^10 || ^12 || >=14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/axios": { + "version": "1.6.8", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.6.8.tgz", + "integrity": "sha512-v/ZHtJDU39mDpyBoFVkETcd/uNdxrWRrg3bKpOKzXFA6Bvqopts6ALSMU3y6ijYxbw2B+wPrIv46egTzJXCLGQ==", + "dev": true, + "dependencies": { + "follow-redirects": "^1.15.6", + "form-data": "^4.0.0", + "proxy-from-env": "^1.1.0" + } + }, + "node_modules/babel-loader": { + "version": "9.1.3", + "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-9.1.3.tgz", + "integrity": "sha512-xG3ST4DglodGf8qSwv0MdeWLhrDsw/32QMdTO5T1ZIp9gQur0HkCyFs7Awskr10JKXFXwpAhiCuYX5oGXnRGbw==", + "dev": true, + "dependencies": { + "find-cache-dir": "^4.0.0", + "schema-utils": "^4.0.0" + }, + "engines": { + "node": ">= 14.15.0" + }, + "peerDependencies": { + "@babel/core": "^7.12.0", + "webpack": ">=5" + } + }, + "node_modules/babel-plugin-istanbul": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz", + "integrity": "sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.0.0", + "@istanbuljs/load-nyc-config": "^1.0.0", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-instrument": "^5.0.4", + "test-exclude": "^6.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/babel-plugin-polyfill-corejs2": { + "version": "0.4.11", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.11.tgz", + "integrity": "sha512-sMEJ27L0gRHShOh5G54uAAPaiCOygY/5ratXuiyb2G46FmlSpc9eFCzYVyDiPxfNbwzA7mYahmjQc5q+CZQ09Q==", + "dev": true, + "dependencies": { + "@babel/compat-data": "^7.22.6", + "@babel/helper-define-polyfill-provider": "^0.6.2", + "semver": "^6.3.1" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/babel-plugin-polyfill-corejs2/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/babel-plugin-polyfill-corejs3": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.9.0.tgz", + "integrity": "sha512-7nZPG1uzK2Ymhy/NbaOWTg3uibM2BmGASS4vHS4szRZAIR8R6GwA/xAujpdrXU5iyklrimWnLWU+BLF9suPTqg==", + "dev": true, + "dependencies": { + "@babel/helper-define-polyfill-provider": "^0.5.0", + "core-js-compat": "^3.34.0" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/babel-plugin-polyfill-corejs3/node_modules/@babel/helper-define-polyfill-provider": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.5.0.tgz", + "integrity": "sha512-NovQquuQLAQ5HuyjCz7WQP9MjRj7dx++yspwiyUiGl9ZyadHRSql1HZh5ogRd8W8w6YM6EQ/NTB8rgjLt5W65Q==", + "dev": true, + "dependencies": { + "@babel/helper-compilation-targets": "^7.22.6", + "@babel/helper-plugin-utils": "^7.22.5", + "debug": "^4.1.1", + "lodash.debounce": "^4.0.8", + "resolve": "^1.14.2" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/babel-plugin-polyfill-regenerator": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.5.5.tgz", + "integrity": "sha512-OJGYZlhLqBh2DDHeqAxWB1XIvr49CxiJ2gIt61/PU55CQK4Z58OzMqjDe1zwQdQk+rBYsRc+1rJmdajM3gimHg==", + "dev": true, + "dependencies": { + "@babel/helper-define-polyfill-provider": "^0.5.0" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/babel-plugin-polyfill-regenerator/node_modules/@babel/helper-define-polyfill-provider": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.5.0.tgz", + "integrity": "sha512-NovQquuQLAQ5HuyjCz7WQP9MjRj7dx++yspwiyUiGl9ZyadHRSql1HZh5ogRd8W8w6YM6EQ/NTB8rgjLt5W65Q==", + "dev": true, + "dependencies": { + "@babel/helper-compilation-targets": "^7.22.6", + "@babel/helper-plugin-utils": "^7.22.5", + "debug": "^4.1.1", + "lodash.debounce": "^4.0.8", + "resolve": "^1.14.2" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true + }, + "node_modules/base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/base64id": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/base64id/-/base64id-2.0.0.tgz", + "integrity": "sha512-lGe34o6EHj9y3Kts9R4ZYs/Gr+6N7MCaMlIFA3F1R2O5/m7K06AxfSeO5530PEERE6/WyEg3lsuyw4GHlPZHog==", + "dev": true, + "engines": { + "node": "^4.5.0 || >= 5.9" + } + }, + "node_modules/batch": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz", + "integrity": "sha512-x+VAiMRL6UPkx+kudNvxTl6hB2XNNCG2r+7wixVfIYwu/2HKRXimwQyaumLjMveWvT2Hkd/cAJw+QBMfJ/EKVw==", + "dev": true + }, + "node_modules/big.js": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", + "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/binary-extensions": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz", + "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/bl": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", + "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", + "dev": true, + "dependencies": { + "buffer": "^5.5.0", + "inherits": "^2.0.4", + "readable-stream": "^3.4.0" + } + }, + "node_modules/body-parser": { + "version": "1.20.2", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.2.tgz", + "integrity": "sha512-ml9pReCu3M61kGlqoTm2umSXTlRTuGTx0bfYj+uIUKKYycG5NtSbeetV3faSU6R7ajOPw0g/J1PvK4qNy7s5bA==", + "dev": true, + "dependencies": { + "bytes": "3.1.2", + "content-type": "~1.0.5", + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "on-finished": "2.4.1", + "qs": "6.11.0", + "raw-body": "2.5.2", + "type-is": "~1.6.18", + "unpipe": "1.0.0" + }, + "engines": { + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" + } + }, + "node_modules/body-parser/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/body-parser/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + }, + "node_modules/bonjour-service": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/bonjour-service/-/bonjour-service-1.2.1.tgz", + "integrity": "sha512-oSzCS2zV14bh2kji6vNe7vrpJYCHGvcZnlffFQ1MEoX/WOeQ/teD8SYWKR942OI3INjq8OMNJlbPK5LLLUxFDw==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.3", + "multicast-dns": "^7.2.5" + } + }, + "node_modules/boolbase": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", + "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==", + "dev": true + }, + "node_modules/bootstrap": { + "version": "5.3.3", + "resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-5.3.3.tgz", + "integrity": "sha512-8HLCdWgyoMguSO9o+aH+iuZ+aht+mzW0u3HIMzVu7Srrpv7EBBxTnrFlSCskwdY1+EOFQSm7uMJhNQHkdPcmjg==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/twbs" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/bootstrap" + } + ], + "peerDependencies": { + "@popperjs/core": "^2.11.8" + } + }, + "node_modules/bootstrap-icons": { + "version": "1.11.3", + "resolved": "https://registry.npmjs.org/bootstrap-icons/-/bootstrap-icons-1.11.3.tgz", + "integrity": "sha512-+3lpHrCw/it2/7lBL15VR0HEumaBss0+f/Lb6ZvHISn1mlK83jjFpooTLsMWbIjJMDjDjOExMsTxnXSIT4k4ww==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/twbs" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/bootstrap" + } + ] + }, + "node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/braces": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", + "dependencies": { + "fill-range": "^7.1.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/browserslist": { + "version": "4.23.1", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.23.1.tgz", + "integrity": "sha512-TUfofFo/KsK/bWZ9TWQ5O26tsWW4Uhmt8IYklbnUa70udB6P2wA7w7o4PY4muaEPBQaAX+CEnmmIA41NVHtPVw==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "caniuse-lite": "^1.0.30001629", + "electron-to-chromium": "^1.4.796", + "node-releases": "^2.0.14", + "update-browserslist-db": "^1.0.16" + }, + "bin": { + "browserslist": "cli.js" + }, + "engines": { + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + } + }, + "node_modules/buffer": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" + } + }, + "node_modules/buffer-from": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", + "dev": true + }, + "node_modules/bytes": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/cacache": { + "version": "18.0.3", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-18.0.3.tgz", + "integrity": "sha512-qXCd4rh6I07cnDqh8V48/94Tc/WSfj+o3Gn6NZ0aZovS255bUx8O13uKxRFd2eWG0xgsco7+YItQNPaa5E85hg==", + "dev": true, + "dependencies": { + "@npmcli/fs": "^3.1.0", + "fs-minipass": "^3.0.0", + "glob": "^10.2.2", + "lru-cache": "^10.0.1", + "minipass": "^7.0.3", + "minipass-collect": "^2.0.1", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.4", + "p-map": "^4.0.0", + "ssri": "^10.0.0", + "tar": "^6.1.11", + "unique-filename": "^3.0.0" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/cacache/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/cacache/node_modules/glob": { + "version": "10.4.2", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.2.tgz", + "integrity": "sha512-GwMlUF6PkPo3Gk21UxkCohOv0PLcIXVtKyLlpEI28R/cO/4eNOdmLk3CMW1wROV/WR/EsZOWAfBbBOqYvs88/w==", + "dev": true, + "dependencies": { + "foreground-child": "^3.1.0", + "jackspeak": "^3.1.2", + "minimatch": "^9.0.4", + "minipass": "^7.1.2", + "package-json-from-dist": "^1.0.0", + "path-scurry": "^1.11.1" + }, + "bin": { + "glob": "dist/esm/bin.mjs" + }, + "engines": { + "node": ">=16 || 14 >=14.18" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/cacache/node_modules/lru-cache": { + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.3.0.tgz", + "integrity": "sha512-CQl19J/g+Hbjbv4Y3mFNNXFEL/5t/KCg8POCuUqd4rMKjGG+j1ybER83hxV58zL+dFI1PTkt3GNFSHRt+d8qEQ==", + "dev": true, + "engines": { + "node": "14 || >=16.14" + } + }, + "node_modules/cacache/node_modules/minimatch": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", + "dev": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/call-bind": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz", + "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==", + "dev": true, + "dependencies": { + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "set-function-length": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/call-me-maybe": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-me-maybe/-/call-me-maybe-1.0.2.tgz", + "integrity": "sha512-HpX65o1Hnr9HH25ojC1YGs7HCQLq0GCOibSaWER0eNpgJ/Z1MZv2mTc7+xh6WOPxbRVcmgbv4hGU+uSQ/2xFZQ==", + "dev": true + }, + "node_modules/callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/caniuse-lite": { + "version": "1.0.30001638", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001638.tgz", + "integrity": "sha512-5SuJUJ7cZnhPpeLHaH0c/HPAnAHZvS6ElWyHK9GSIbVOQABLzowiI2pjmpvZ1WEbkyz46iFd4UXlOHR5SqgfMQ==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ] + }, + "node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/chardet": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz", + "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==", + "dev": true + }, + "node_modules/chokidar": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", + "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", + "dependencies": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + }, + "engines": { + "node": ">= 8.10.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/chownr": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz", + "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/chrome-trace-event": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.4.tgz", + "integrity": "sha512-rNjApaLzuwaOTjCiT8lSDdGN1APCiqkChLMJxJPWLunPAt5fy8xgU9/jNOchV84wfIxrA0lRQB7oCT8jrn/wrQ==", + "dev": true, + "engines": { + "node": ">=6.0" + } + }, + "node_modules/clean-stack": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", + "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/cli-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", + "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", + "dev": true, + "dependencies": { + "restore-cursor": "^3.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/cli-spinners": { + "version": "2.9.2", + "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.9.2.tgz", + "integrity": "sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==", + "dev": true, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/cli-width": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-4.1.0.tgz", + "integrity": "sha512-ouuZd4/dm2Sw5Gmqy6bGyNNNe1qt9RpmxveLSO7KcgsTnU7RXfsw+/bukWGo1abgBiMAic068rclZsO4IWmmxQ==", + "dev": true, + "engines": { + "node": ">= 12" + } + }, + "node_modules/cliui": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", + "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.1", + "wrap-ansi": "^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/cliui/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/cliui/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/cliui/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "node_modules/cliui/node_modules/wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/clone": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", + "integrity": "sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==", + "dev": true, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/clone-deep": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz", + "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==", + "dev": true, + "dependencies": { + "is-plain-object": "^2.0.4", + "kind-of": "^6.0.2", + "shallow-clone": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/code-block-writer": { + "version": "10.1.1", + "resolved": "https://registry.npmjs.org/code-block-writer/-/code-block-writer-10.1.1.tgz", + "integrity": "sha512-67ueh2IRGst/51p0n6FvPrnRjAGHY5F8xdjkgrYE7DDzpJe6qA07RYQ9VcoUeo5ATOjSOiWpSL3SWBRRbempMw==", + "dev": true + }, + "node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==" + }, + "node_modules/colorette": { + "version": "2.0.20", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.20.tgz", + "integrity": "sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==", + "dev": true + }, + "node_modules/combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "dev": true, + "dependencies": { + "delayed-stream": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/commander": { + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz", + "integrity": "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==", + "dev": true, + "engines": { + "node": ">= 12" + } + }, + "node_modules/common-path-prefix": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/common-path-prefix/-/common-path-prefix-3.0.0.tgz", + "integrity": "sha512-QE33hToZseCH3jS0qN96O/bSh3kaw/h+Tq7ngyY9eWDUnTlTNUyqfqvCXioLe5Na5jFsL78ra/wuBU4iuEgd4w==", + "dev": true + }, + "node_modules/compare-versions": { + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/compare-versions/-/compare-versions-4.1.4.tgz", + "integrity": "sha512-FemMreK9xNyL8gQevsdRMrvO4lFCkQP7qbuktn1q8ndcNk1+0mz7lgE7b/sNvbhVgY4w6tMN1FDp6aADjqw2rw==", + "dev": true + }, + "node_modules/compressible": { + "version": "2.0.18", + "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz", + "integrity": "sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==", + "dev": true, + "dependencies": { + "mime-db": ">= 1.43.0 < 2" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/compression": { + "version": "1.7.4", + "resolved": "https://registry.npmjs.org/compression/-/compression-1.7.4.tgz", + "integrity": "sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==", + "dev": true, + "dependencies": { + "accepts": "~1.3.5", + "bytes": "3.0.0", + "compressible": "~2.0.16", + "debug": "2.6.9", + "on-headers": "~1.0.2", + "safe-buffer": "5.1.2", + "vary": "~1.1.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/compression/node_modules/bytes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", + "integrity": "sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/compression/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/compression/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + }, + "node_modules/compression/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "dev": true + }, + "node_modules/concurrently": { + "version": "6.5.1", + "resolved": "https://registry.npmjs.org/concurrently/-/concurrently-6.5.1.tgz", + "integrity": "sha512-FlSwNpGjWQfRwPLXvJ/OgysbBxPkWpiVjy1042b0U7on7S7qwwMIILRj7WTN1mTgqa582bG6NFuScOoh6Zgdag==", + "dev": true, + "dependencies": { + "chalk": "^4.1.0", + "date-fns": "^2.16.1", + "lodash": "^4.17.21", + "rxjs": "^6.6.3", + "spawn-command": "^0.0.2-1", + "supports-color": "^8.1.0", + "tree-kill": "^1.2.2", + "yargs": "^16.2.0" + }, + "bin": { + "concurrently": "bin/concurrently.js" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/concurrently/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/concurrently/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/concurrently/node_modules/chalk/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/concurrently/node_modules/cliui": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", + "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", + "dev": true, + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^7.0.0" + } + }, + "node_modules/concurrently/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/concurrently/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/concurrently/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/concurrently/node_modules/rxjs": { + "version": "6.6.7", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz", + "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==", + "dev": true, + "dependencies": { + "tslib": "^1.9.0" + }, + "engines": { + "npm": ">=2.0.0" + } + }, + "node_modules/concurrently/node_modules/supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" + } + }, + "node_modules/concurrently/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true + }, + "node_modules/concurrently/node_modules/wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/concurrently/node_modules/yargs": { + "version": "16.2.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", + "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", + "dev": true, + "dependencies": { + "cliui": "^7.0.2", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.0", + "y18n": "^5.0.5", + "yargs-parser": "^20.2.2" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/concurrently/node_modules/yargs-parser": { + "version": "20.2.9", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", + "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/connect": { + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/connect/-/connect-3.7.0.tgz", + "integrity": "sha512-ZqRXc+tZukToSNmh5C2iWMSoV3X1YUcPbqEM4DkEG5tNQXrQUZCNVGGv3IuicnkMtPfGf3Xtp8WCXs295iQ1pQ==", + "dev": true, + "dependencies": { + "debug": "2.6.9", + "finalhandler": "1.1.2", + "parseurl": "~1.3.3", + "utils-merge": "1.0.1" + }, + "engines": { + "node": ">= 0.10.0" + } + }, + "node_modules/connect-history-api-fallback": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-2.0.0.tgz", + "integrity": "sha512-U73+6lQFmfiNPrYbXqr6kZ1i1wiRqXnp2nhMsINseWXO8lDau0LGEffJ8kQi4EjLZympVgRdvqjAgiZ1tgzDDA==", + "dev": true, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/connect/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/connect/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + }, + "node_modules/consola": { + "version": "2.15.3", + "resolved": "https://registry.npmjs.org/consola/-/consola-2.15.3.tgz", + "integrity": "sha512-9vAdYbHj6x2fLKC4+oPH0kFzY/orMZyG2Aj+kNylHxKGJ/Ed4dpNyAQYwJOdqO4zdM7XpVHmyejQDcQHrnuXbw==", + "dev": true + }, + "node_modules/console.table": { + "version": "0.10.0", + "resolved": "https://registry.npmjs.org/console.table/-/console.table-0.10.0.tgz", + "integrity": "sha512-dPyZofqggxuvSf7WXvNjuRfnsOk1YazkVP8FdxH4tcH2c37wc79/Yl6Bhr7Lsu00KMgy2ql/qCMuNu8xctZM8g==", + "dev": true, + "dependencies": { + "easy-table": "1.1.0" + }, + "engines": { + "node": "> 0.10" + } + }, + "node_modules/content-disposition": { + "version": "0.5.4", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", + "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", + "dev": true, + "dependencies": { + "safe-buffer": "5.2.1" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/content-type": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz", + "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/convert-source-map": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", + "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==" + }, + "node_modules/cookie": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.2.tgz", + "integrity": "sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/cookie-signature": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", + "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==", + "dev": true + }, + "node_modules/copy-anything": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/copy-anything/-/copy-anything-2.0.6.tgz", + "integrity": "sha512-1j20GZTsvKNkc4BY3NpMOM8tt///wY3FpIzozTOFO2ffuZcV61nojHXVKIy3WM+7ADCy5FVhdZYHYDdgTU0yJw==", + "dev": true, + "dependencies": { + "is-what": "^3.14.1" + }, + "funding": { + "url": "https://github.com/sponsors/mesqueeb" + } + }, + "node_modules/copy-webpack-plugin": { + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/copy-webpack-plugin/-/copy-webpack-plugin-11.0.0.tgz", + "integrity": "sha512-fX2MWpamkW0hZxMEg0+mYnA40LTosOSa5TqZ9GYIBzyJa9C3QUaMPSE2xAi/buNr8u89SfD9wHSQVBzrRa/SOQ==", + "dev": true, + "dependencies": { + "fast-glob": "^3.2.11", + "glob-parent": "^6.0.1", + "globby": "^13.1.1", + "normalize-path": "^3.0.0", + "schema-utils": "^4.0.0", + "serialize-javascript": "^6.0.0" + }, + "engines": { + "node": ">= 14.15.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.1.0" + } + }, + "node_modules/copy-webpack-plugin/node_modules/glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.3" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/core-js-compat": { + "version": "3.37.1", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.37.1.tgz", + "integrity": "sha512-9TNiImhKvQqSUkOvk/mMRZzOANTiEVC7WaBNhHcKM7x+/5E1l5NvsysR19zuDQScE8k+kfQXWRN3AtS/eOSHpg==", + "dev": true, + "dependencies": { + "browserslist": "^4.23.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/core-js" + } + }, + "node_modules/core-util-is": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", + "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", + "dev": true + }, + "node_modules/cors": { + "version": "2.8.5", + "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz", + "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==", + "dev": true, + "dependencies": { + "object-assign": "^4", + "vary": "^1" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/cosmiconfig": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-9.0.0.tgz", + "integrity": "sha512-itvL5h8RETACmOTFc4UfIyB2RfEHi71Ax6E/PivVxq9NseKbOWpeyHEOIbmAw1rs8Ak0VursQNww7lf7YtUwzg==", + "dev": true, + "dependencies": { + "env-paths": "^2.2.1", + "import-fresh": "^3.3.0", + "js-yaml": "^4.1.0", + "parse-json": "^5.2.0" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/d-fischer" + }, + "peerDependencies": { + "typescript": ">=4.9.5" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/cosmiconfig/node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true + }, + "node_modules/cosmiconfig/node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dev": true, + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/critters": { + "version": "0.0.22", + "resolved": "https://registry.npmjs.org/critters/-/critters-0.0.22.tgz", + "integrity": "sha512-NU7DEcQZM2Dy8XTKFHxtdnIM/drE312j2T4PCVaSUcS0oBeyT/NImpRw/Ap0zOr/1SE7SgPK9tGPg1WK/sVakw==", + "dev": true, + "dependencies": { + "chalk": "^4.1.0", + "css-select": "^5.1.0", + "dom-serializer": "^2.0.0", + "domhandler": "^5.0.2", + "htmlparser2": "^8.0.2", + "postcss": "^8.4.23", + "postcss-media-query-parser": "^0.2.3" + } + }, + "node_modules/critters/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/critters/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/critters/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/critters/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/critters/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/critters/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/cross-spawn/node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/css-loader": { + "version": "6.10.0", + "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-6.10.0.tgz", + "integrity": "sha512-LTSA/jWbwdMlk+rhmElbDR2vbtQoTBPr7fkJE+mxrHj+7ru0hUmHafDRzWIjIHTwpitWVaqY2/UWGRca3yUgRw==", + "dev": true, + "dependencies": { + "icss-utils": "^5.1.0", + "postcss": "^8.4.33", + "postcss-modules-extract-imports": "^3.0.0", + "postcss-modules-local-by-default": "^4.0.4", + "postcss-modules-scope": "^3.1.1", + "postcss-modules-values": "^4.0.0", + "postcss-value-parser": "^4.2.0", + "semver": "^7.5.4" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "@rspack/core": "0.x || 1.x", + "webpack": "^5.0.0" + }, + "peerDependenciesMeta": { + "@rspack/core": { + "optional": true + }, + "webpack": { + "optional": true + } + } + }, + "node_modules/css-select": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-5.1.0.tgz", + "integrity": "sha512-nwoRF1rvRRnnCqqY7updORDsuqKzqYJ28+oSMaJMMgOauh3fvwHqMS7EZpIPqK8GL+g9mKxF1vP/ZjSeNjEVHg==", + "dev": true, + "dependencies": { + "boolbase": "^1.0.0", + "css-what": "^6.1.0", + "domhandler": "^5.0.2", + "domutils": "^3.0.1", + "nth-check": "^2.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" + } + }, + "node_modules/css-what": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.1.0.tgz", + "integrity": "sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==", + "dev": true, + "engines": { + "node": ">= 6" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" + } + }, + "node_modules/cssesc": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", + "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", + "dev": true, + "bin": { + "cssesc": "bin/cssesc" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/custom-event": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/custom-event/-/custom-event-1.0.1.tgz", + "integrity": "sha512-GAj5FOq0Hd+RsCGVJxZuKaIDXDf3h6GQoNEjFgbLLI/trgtavwUbSnZ5pVfg27DVCaWjIohryS0JFwIJyT2cMg==", + "dev": true + }, + "node_modules/date-fns": { + "version": "2.30.0", + "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-2.30.0.tgz", + "integrity": "sha512-fnULvOpxnC5/Vg3NCiWelDsLiUc9bRwAPs/+LfTLNvetFCtCTN+yQz15C/fs4AwX1R9K5GLtLfn8QW+dWisaAw==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.21.0" + }, + "engines": { + "node": ">=0.11" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/date-fns" + } + }, + "node_modules/date-format": { + "version": "4.0.14", + "resolved": "https://registry.npmjs.org/date-format/-/date-format-4.0.14.tgz", + "integrity": "sha512-39BOQLs9ZjKh0/patS9nrT8wc3ioX3/eA/zgbKNopnF2wCqJEoxywwwElATYvRsXdnOxA/OQeQoFZ3rFjVajhg==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/debug": { + "version": "4.3.5", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.5.tgz", + "integrity": "sha512-pt0bNEmneDIvdL1Xsd9oDQ/wrQRkXDT4AUWlNZNPKvW5x/jyO9VFXkJUP07vQ2upmw5PlaITaPKc31jK13V+jg==", + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/default-gateway": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/default-gateway/-/default-gateway-6.0.3.tgz", + "integrity": "sha512-fwSOJsbbNzZ/CUFpqFBqYfYNLj1NbMPm8MMCIzHjC83iSJRBEGmDUxU+WP661BaBQImeC2yHwXtz+P/O9o+XEg==", + "dev": true, + "dependencies": { + "execa": "^5.0.0" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/defaults": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.4.tgz", + "integrity": "sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==", + "dev": true, + "dependencies": { + "clone": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/define-data-property": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", + "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", + "dev": true, + "dependencies": { + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "gopd": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/define-lazy-prop": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz", + "integrity": "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", + "dev": true, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/depd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/destroy": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", + "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", + "dev": true, + "engines": { + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" + } + }, + "node_modules/detect-node": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.1.0.tgz", + "integrity": "sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==", + "dev": true + }, + "node_modules/di": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/di/-/di-0.0.1.tgz", + "integrity": "sha512-uJaamHkagcZtHPqCIHZxnFrXlunQXgBOsZSUOWwFw31QJCAbyTBoHMW75YOTur5ZNx8pIeAKgf6GWIgaqqiLhA==", + "dev": true + }, + "node_modules/dir-glob": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", + "dev": true, + "dependencies": { + "path-type": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/dns-packet": { + "version": "5.6.1", + "resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-5.6.1.tgz", + "integrity": "sha512-l4gcSouhcgIKRvyy99RNVOgxXiicE+2jZoNmaNmZ6JXiGajBOJAesk1OBlJuM5k2c+eudGdLxDqXuPCKIj6kpw==", + "dev": true, + "dependencies": { + "@leichtgewicht/ip-codec": "^2.0.1" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/dom-serialize": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/dom-serialize/-/dom-serialize-2.2.1.tgz", + "integrity": "sha512-Yra4DbvoW7/Z6LBN560ZwXMjoNOSAN2wRsKFGc4iBeso+mpIA6qj1vfdf9HpMaKAqG6wXTy+1SYEzmNpKXOSsQ==", + "dev": true, + "dependencies": { + "custom-event": "~1.0.0", + "ent": "~2.2.0", + "extend": "^3.0.0", + "void-elements": "^2.0.0" + } + }, + "node_modules/dom-serializer": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-2.0.0.tgz", + "integrity": "sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==", + "dev": true, + "dependencies": { + "domelementtype": "^2.3.0", + "domhandler": "^5.0.2", + "entities": "^4.2.0" + }, + "funding": { + "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" + } + }, + "node_modules/domelementtype": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", + "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ] + }, + "node_modules/domhandler": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-5.0.3.tgz", + "integrity": "sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==", + "dev": true, + "dependencies": { + "domelementtype": "^2.3.0" + }, + "engines": { + "node": ">= 4" + }, + "funding": { + "url": "https://github.com/fb55/domhandler?sponsor=1" + } + }, + "node_modules/domutils": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-3.1.0.tgz", + "integrity": "sha512-H78uMmQtI2AhgDJjWeQmHwJJ2bLPD3GMmO7Zja/ZZh84wkm+4ut+IUnUdRa8uCGX88DiVx1j6FRe1XfxEgjEZA==", + "dev": true, + "dependencies": { + "dom-serializer": "^2.0.0", + "domelementtype": "^2.3.0", + "domhandler": "^5.0.3" + }, + "funding": { + "url": "https://github.com/fb55/domutils?sponsor=1" + } + }, + "node_modules/eastasianwidth": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", + "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", + "dev": true + }, + "node_modules/easy-table": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/easy-table/-/easy-table-1.1.0.tgz", + "integrity": "sha512-oq33hWOSSnl2Hoh00tZWaIPi1ievrD9aFG82/IgjlycAnW9hHx5PkJiXpxPsgEE+H7BsbVQXFVFST8TEXS6/pA==", + "dev": true, + "optionalDependencies": { + "wcwidth": ">=1.0.1" + } + }, + "node_modules/ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==", + "dev": true + }, + "node_modules/electron-to-chromium": { + "version": "1.4.814", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.814.tgz", + "integrity": "sha512-GVulpHjFu1Y9ZvikvbArHmAhZXtm3wHlpjTMcXNGKl4IQ4jMQjlnz8yMQYYqdLHKi/jEL2+CBC2akWVCoIGUdw==" + }, + "node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" + }, + "node_modules/emojis-list": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz", + "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/encoding": { + "version": "0.1.13", + "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.13.tgz", + "integrity": "sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==", + "dev": true, + "optional": true, + "dependencies": { + "iconv-lite": "^0.6.2" + } + }, + "node_modules/encoding/node_modules/iconv-lite": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "dev": true, + "optional": true, + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/engine.io": { + "version": "6.5.5", + "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-6.5.5.tgz", + "integrity": "sha512-C5Pn8Wk+1vKBoHghJODM63yk8MvrO9EWZUfkAt5HAqIgPE4/8FF0PEGHXtEd40l223+cE5ABWuPzm38PHFXfMA==", + "dev": true, + "dependencies": { + "@types/cookie": "^0.4.1", + "@types/cors": "^2.8.12", + "@types/node": ">=10.0.0", + "accepts": "~1.3.4", + "base64id": "2.0.0", + "cookie": "~0.4.1", + "cors": "~2.8.5", + "debug": "~4.3.1", + "engine.io-parser": "~5.2.1", + "ws": "~8.17.1" + }, + "engines": { + "node": ">=10.2.0" + } + }, + "node_modules/engine.io-parser": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-5.2.2.tgz", + "integrity": "sha512-RcyUFKA93/CXH20l4SoVvzZfrSDMOTUS3bWVpTt2FuFP+XYrL8i8oonHP7WInRyVHXh0n/ORtoeiE1os+8qkSw==", + "dev": true, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/enhanced-resolve": { + "version": "5.17.0", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.17.0.tgz", + "integrity": "sha512-dwDPwZL0dmye8Txp2gzFmA6sxALaSvdRDjPH0viLcKrtlOL3tw62nWWweVD1SdILDTJrbrL6tdWVN58Wo6U3eA==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.2.4", + "tapable": "^2.2.0" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/ent": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ent/-/ent-2.2.1.tgz", + "integrity": "sha512-QHuXVeZx9d+tIQAz/XztU0ZwZf2Agg9CcXcgE1rurqvdBeDBrpSwjl8/6XUqMg7tw2Y7uAdKb2sRv+bSEFqQ5A==", + "dev": true, + "dependencies": { + "punycode": "^1.4.1" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/entities": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", + "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", + "devOptional": true, + "engines": { + "node": ">=0.12" + }, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/env-paths": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz", + "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/err-code": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/err-code/-/err-code-2.0.3.tgz", + "integrity": "sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA==", + "dev": true + }, + "node_modules/errno": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.8.tgz", + "integrity": "sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==", + "dev": true, + "optional": true, + "dependencies": { + "prr": "~1.0.1" + }, + "bin": { + "errno": "cli.js" + } + }, + "node_modules/error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "dev": true, + "dependencies": { + "is-arrayish": "^0.2.1" + } + }, + "node_modules/es-define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.0.tgz", + "integrity": "sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==", + "dev": true, + "dependencies": { + "get-intrinsic": "^1.2.4" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-errors": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", + "dev": true, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-module-lexer": { + "version": "1.5.4", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.5.4.tgz", + "integrity": "sha512-MVNK56NiMrOwitFB7cqDwq0CQutbw+0BvLshJSse0MUNU+y1FC3bUS/AQg7oUng+/wKrrki7JfmwtVHkVfPLlw==", + "dev": true + }, + "node_modules/esbuild": { + "version": "0.20.1", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.20.1.tgz", + "integrity": "sha512-OJwEgrpWm/PCMsLVWXKqvcjme3bHNpOgN7Tb6cQnR5n0TPbQx1/Xrn7rqM+wn17bYeT6MGB5sn1Bh5YiGi70nA==", + "dev": true, + "hasInstallScript": true, + "optional": true, + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=12" + }, + "optionalDependencies": { + "@esbuild/aix-ppc64": "0.20.1", + "@esbuild/android-arm": "0.20.1", + "@esbuild/android-arm64": "0.20.1", + "@esbuild/android-x64": "0.20.1", + "@esbuild/darwin-arm64": "0.20.1", + "@esbuild/darwin-x64": "0.20.1", + "@esbuild/freebsd-arm64": "0.20.1", + "@esbuild/freebsd-x64": "0.20.1", + "@esbuild/linux-arm": "0.20.1", + "@esbuild/linux-arm64": "0.20.1", + "@esbuild/linux-ia32": "0.20.1", + "@esbuild/linux-loong64": "0.20.1", + "@esbuild/linux-mips64el": "0.20.1", + "@esbuild/linux-ppc64": "0.20.1", + "@esbuild/linux-riscv64": "0.20.1", + "@esbuild/linux-s390x": "0.20.1", + "@esbuild/linux-x64": "0.20.1", + "@esbuild/netbsd-x64": "0.20.1", + "@esbuild/openbsd-x64": "0.20.1", + "@esbuild/sunos-x64": "0.20.1", + "@esbuild/win32-arm64": "0.20.1", + "@esbuild/win32-ia32": "0.20.1", + "@esbuild/win32-x64": "0.20.1" + } + }, + "node_modules/esbuild-wasm": { + "version": "0.20.1", + "resolved": "https://registry.npmjs.org/esbuild-wasm/-/esbuild-wasm-0.20.1.tgz", + "integrity": "sha512-6v/WJubRsjxBbQdz6izgvx7LsVFvVaGmSdwrFHmEzoVgfXL89hkKPoQHsnVI2ngOkcBUQT9kmAM1hVL1k/Av4A==", + "dev": true, + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/escalade": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.2.tgz", + "integrity": "sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==", + "engines": { + "node": ">=6" + } + }, + "node_modules/escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==", + "dev": true + }, + "node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/eslint-scope": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "dev": true, + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "dev": true, + "bin": { + "esparse": "bin/esparse.js", + "esvalidate": "bin/esvalidate.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dev": true, + "dependencies": { + "estraverse": "^5.2.0" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esrecurse/node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/eventemitter3": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", + "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==", + "dev": true + }, + "node_modules/events": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", + "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", + "dev": true, + "engines": { + "node": ">=0.8.x" + } + }, + "node_modules/execa": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", + "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", + "dev": true, + "dependencies": { + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.0", + "human-signals": "^2.1.0", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.1", + "onetime": "^5.1.2", + "signal-exit": "^3.0.3", + "strip-final-newline": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" + } + }, + "node_modules/exponential-backoff": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/exponential-backoff/-/exponential-backoff-3.1.1.tgz", + "integrity": "sha512-dX7e/LHVJ6W3DE1MHWi9S1EYzDESENfLrYohG2G++ovZrYOkm4Knwa0mc1cn84xJOR4KEU0WSchhLbd0UklbHw==", + "dev": true + }, + "node_modules/express": { + "version": "4.19.2", + "resolved": "https://registry.npmjs.org/express/-/express-4.19.2.tgz", + "integrity": "sha512-5T6nhjsT+EOMzuck8JjBHARTHfMht0POzlA60WV2pMD3gyXw2LZnZ+ueGdNxG+0calOJcWKbpFcuzLZ91YWq9Q==", + "dev": true, + "dependencies": { + "accepts": "~1.3.8", + "array-flatten": "1.1.1", + "body-parser": "1.20.2", + "content-disposition": "0.5.4", + "content-type": "~1.0.4", + "cookie": "0.6.0", + "cookie-signature": "1.0.6", + "debug": "2.6.9", + "depd": "2.0.0", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "finalhandler": "1.2.0", + "fresh": "0.5.2", + "http-errors": "2.0.0", + "merge-descriptors": "1.0.1", + "methods": "~1.1.2", + "on-finished": "2.4.1", + "parseurl": "~1.3.3", + "path-to-regexp": "0.1.7", + "proxy-addr": "~2.0.7", + "qs": "6.11.0", + "range-parser": "~1.2.1", + "safe-buffer": "5.2.1", + "send": "0.18.0", + "serve-static": "1.15.0", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "type-is": "~1.6.18", + "utils-merge": "1.0.1", + "vary": "~1.1.2" + }, + "engines": { + "node": ">= 0.10.0" + } + }, + "node_modules/express/node_modules/cookie": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.6.0.tgz", + "integrity": "sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/express/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/express/node_modules/finalhandler": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz", + "integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==", + "dev": true, + "dependencies": { + "debug": "2.6.9", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "on-finished": "2.4.1", + "parseurl": "~1.3.3", + "statuses": "2.0.1", + "unpipe": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/express/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + }, + "node_modules/express/node_modules/statuses": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/extend": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", + "dev": true + }, + "node_modules/external-editor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz", + "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==", + "dev": true, + "dependencies": { + "chardet": "^0.7.0", + "iconv-lite": "^0.4.24", + "tmp": "^0.0.33" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true + }, + "node_modules/fast-glob": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz", + "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==", + "dependencies": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" + }, + "engines": { + "node": ">=8.6.0" + } + }, + "node_modules/fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true + }, + "node_modules/fast-safe-stringify": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/fast-safe-stringify/-/fast-safe-stringify-2.1.1.tgz", + "integrity": "sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA==", + "dev": true + }, + "node_modules/fastq": { + "version": "1.17.1", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.17.1.tgz", + "integrity": "sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==", + "dependencies": { + "reusify": "^1.0.4" + } + }, + "node_modules/faye-websocket": { + "version": "0.11.4", + "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.4.tgz", + "integrity": "sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g==", + "dev": true, + "dependencies": { + "websocket-driver": ">=0.5.1" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/figures": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz", + "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==", + "dev": true, + "dependencies": { + "escape-string-regexp": "^1.0.5" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/fill-range": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/finalhandler": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", + "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==", + "dev": true, + "dependencies": { + "debug": "2.6.9", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "on-finished": "~2.3.0", + "parseurl": "~1.3.3", + "statuses": "~1.5.0", + "unpipe": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/finalhandler/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/finalhandler/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + }, + "node_modules/finalhandler/node_modules/on-finished": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", + "integrity": "sha512-ikqdkGAAyf/X/gPhXGvfgAytDZtDbr+bkNUJ0N9h5MI/dmdgCs3l6hoHrcUv41sRKew3jIwrp4qQDXiK99Utww==", + "dev": true, + "dependencies": { + "ee-first": "1.1.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/find-cache-dir": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-4.0.0.tgz", + "integrity": "sha512-9ZonPT4ZAK4a+1pUPVPZJapbi7O5qbbJPdYw/NOQWZZbVLdDTYM3A4R9z/DpAM08IDaFGsvPgiGZ82WEwUDWjg==", + "dev": true, + "dependencies": { + "common-path-prefix": "^3.0.0", + "pkg-dir": "^7.0.0" + }, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/flat": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz", + "integrity": "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==", + "dev": true, + "bin": { + "flat": "cli.js" + } + }, + "node_modules/flatted": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.1.tgz", + "integrity": "sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==", + "dev": true + }, + "node_modules/follow-redirects": { + "version": "1.15.6", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.6.tgz", + "integrity": "sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/RubenVerborgh" + } + ], + "engines": { + "node": ">=4.0" + }, + "peerDependenciesMeta": { + "debug": { + "optional": true + } + } + }, + "node_modules/foreground-child": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.2.1.tgz", + "integrity": "sha512-PXUUyLqrR2XCWICfv6ukppP96sdFwWbNEnfEMt7jNsISjMsvaLNinAHNDYyvkyU+SZG2BTSbT5NjG+vZslfGTA==", + "dev": true, + "dependencies": { + "cross-spawn": "^7.0.0", + "signal-exit": "^4.0.1" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/foreground-child/node_modules/signal-exit": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + "dev": true, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/form-data": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", + "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", + "dev": true, + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/forwarded": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", + "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/fraction.js": { + "version": "4.3.7", + "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.3.7.tgz", + "integrity": "sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==", + "dev": true, + "engines": { + "node": "*" + }, + "funding": { + "type": "patreon", + "url": "https://github.com/sponsors/rawify" + } + }, + "node_modules/fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/fs-extra": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", + "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/fs-minipass": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-3.0.3.tgz", + "integrity": "sha512-XUBA9XClHbnJWSfBzjkm6RvPsyg3sryZt06BEQoXcF7EK/xpGaQYJgQKDJSUH5SGZ76Y7pFx1QBnXz09rU5Fbw==", + "dev": true, + "dependencies": { + "minipass": "^7.0.3" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/fs-monkey": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/fs-monkey/-/fs-monkey-1.0.6.tgz", + "integrity": "sha512-b1FMfwetIKymC0eioW7mTywihSQE4oLzQn1dB6rZB5fx/3NpNEdAWeCSMB+60/AeT0TCXsxzAlcYVEFCTAksWg==", + "dev": true + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", + "dev": true + }, + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/gensync": { + "version": "1.0.0-beta.2", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "engines": { + "node": "6.* || 8.* || >= 10.*" + } + }, + "node_modules/get-intrinsic": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz", + "integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==", + "dev": true, + "dependencies": { + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3", + "hasown": "^2.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-package-type": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz", + "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==", + "dev": true, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/get-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "deprecated": "Glob versions prior to v9 are no longer supported", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/glob-to-regexp": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", + "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==", + "dev": true + }, + "node_modules/globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "engines": { + "node": ">=4" + } + }, + "node_modules/globby": { + "version": "13.2.2", + "resolved": "https://registry.npmjs.org/globby/-/globby-13.2.2.tgz", + "integrity": "sha512-Y1zNGV+pzQdh7H39l9zgB4PJqjRNqydvdYCDG4HFXM4XuvSaQQlEc91IU1yALL8gUTDomgBAfz3XJdmUS+oo0w==", + "dev": true, + "dependencies": { + "dir-glob": "^3.0.1", + "fast-glob": "^3.3.0", + "ignore": "^5.2.4", + "merge2": "^1.4.1", + "slash": "^4.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/gopd": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", + "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", + "dev": true, + "dependencies": { + "get-intrinsic": "^1.1.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/graceful-fs": { + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", + "dev": true + }, + "node_modules/handle-thing": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/handle-thing/-/handle-thing-2.0.1.tgz", + "integrity": "sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg==", + "dev": true + }, + "node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "engines": { + "node": ">=4" + } + }, + "node_modules/has-property-descriptors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", + "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", + "dev": true, + "dependencies": { + "es-define-property": "^1.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-proto": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.3.tgz", + "integrity": "sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-symbols": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/hasown": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/hosted-git-info": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-7.0.2.tgz", + "integrity": "sha512-puUZAUKT5m8Zzvs72XWy3HtvVbTWljRE66cP60bxJzAqf2DgICo7lYTY2IHUmLnNpjYvw5bvmoHvPc0QO2a62w==", + "dev": true, + "dependencies": { + "lru-cache": "^10.0.1" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/hosted-git-info/node_modules/lru-cache": { + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.3.0.tgz", + "integrity": "sha512-CQl19J/g+Hbjbv4Y3mFNNXFEL/5t/KCg8POCuUqd4rMKjGG+j1ybER83hxV58zL+dFI1PTkt3GNFSHRt+d8qEQ==", + "dev": true, + "engines": { + "node": "14 || >=16.14" + } + }, + "node_modules/hpack.js": { + "version": "2.1.6", + "resolved": "https://registry.npmjs.org/hpack.js/-/hpack.js-2.1.6.tgz", + "integrity": "sha512-zJxVehUdMGIKsRaNt7apO2Gqp0BdqW5yaiGHXXmbpvxgBYVZnAql+BJb4RO5ad2MgpbZKn5G6nMnegrH1FcNYQ==", + "dev": true, + "dependencies": { + "inherits": "^2.0.1", + "obuf": "^1.0.0", + "readable-stream": "^2.0.1", + "wbuf": "^1.1.0" + } + }, + "node_modules/hpack.js/node_modules/readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "dev": true, + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/hpack.js/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, + "node_modules/hpack.js/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/html-entities": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-2.5.2.tgz", + "integrity": "sha512-K//PSRMQk4FZ78Kyau+mZurHn3FH0Vwr+H36eE0rPbeYkRRi9YxceYPhuN60UwWorxyKHhqoAJl2OFKa4BVtaA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/mdevils" + }, + { + "type": "patreon", + "url": "https://patreon.com/mdevils" + } + ] + }, + "node_modules/html-escaper": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", + "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", + "dev": true + }, + "node_modules/htmlparser2": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-8.0.2.tgz", + "integrity": "sha512-GYdjWKDkbRLkZ5geuHs5NY1puJ+PXwP7+fHPRz06Eirsb9ugf6d8kkXav6ADhcODhFFPMIXyxkxSuMf3D6NCFA==", + "dev": true, + "funding": [ + "https://github.com/fb55/htmlparser2?sponsor=1", + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ], + "dependencies": { + "domelementtype": "^2.3.0", + "domhandler": "^5.0.3", + "domutils": "^3.0.1", + "entities": "^4.4.0" + } + }, + "node_modules/http-cache-semantics": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.1.tgz", + "integrity": "sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==", + "dev": true + }, + "node_modules/http-deceiver": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/http-deceiver/-/http-deceiver-1.2.7.tgz", + "integrity": "sha512-LmpOGxTfbpgtGVxJrj5k7asXHCgNZp5nLfp+hWc8QQRqtb7fUy6kRY3BO1h9ddF6yIPYUARgxGOwB42DnxIaNw==", + "dev": true + }, + "node_modules/http-errors": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", + "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", + "dev": true, + "dependencies": { + "depd": "2.0.0", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "toidentifier": "1.0.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/http-errors/node_modules/statuses": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/http-parser-js": { + "version": "0.5.8", + "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.8.tgz", + "integrity": "sha512-SGeBX54F94Wgu5RH3X5jsDtf4eHyRogWX1XGT3b4HuW3tQPM4AaBzoUji/4AAJNXCEOWZ5O0DgZmJw1947gD5Q==", + "dev": true + }, + "node_modules/http-proxy": { + "version": "1.18.1", + "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz", + "integrity": "sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==", + "dev": true, + "dependencies": { + "eventemitter3": "^4.0.0", + "follow-redirects": "^1.0.0", + "requires-port": "^1.0.0" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/http-proxy-agent": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz", + "integrity": "sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==", + "dev": true, + "dependencies": { + "agent-base": "^7.1.0", + "debug": "^4.3.4" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/http-proxy-middleware": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-2.0.6.tgz", + "integrity": "sha512-ya/UeJ6HVBYxrgYotAZo1KvPWlgB48kUJLDePFeneHsVujFaW5WNj2NgWCAE//B1Dl02BIfYlpNgBy8Kf8Rjmw==", + "dev": true, + "dependencies": { + "@types/http-proxy": "^1.17.8", + "http-proxy": "^1.18.1", + "is-glob": "^4.0.1", + "is-plain-obj": "^3.0.0", + "micromatch": "^4.0.2" + }, + "engines": { + "node": ">=12.0.0" + }, + "peerDependencies": { + "@types/express": "^4.17.13" + }, + "peerDependenciesMeta": { + "@types/express": { + "optional": true + } + } + }, + "node_modules/https-proxy-agent": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.4.tgz", + "integrity": "sha512-wlwpilI7YdjSkWaQ/7omYBMTliDcmCN8OLihO6I9B86g06lMyAoqgoDpV0XqoaPOKj+0DIdAvnsWfyAAhmimcg==", + "dev": true, + "dependencies": { + "agent-base": "^7.0.2", + "debug": "4" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/human-signals": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", + "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", + "dev": true, + "engines": { + "node": ">=10.17.0" + } + }, + "node_modules/iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "dev": true, + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/icss-utils": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-5.1.0.tgz", + "integrity": "sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==", + "dev": true, + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/ignore": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.1.tgz", + "integrity": "sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/ignore-walk": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/ignore-walk/-/ignore-walk-6.0.5.tgz", + "integrity": "sha512-VuuG0wCnjhnylG1ABXT3dAuIpTNDs/G8jlpmwXY03fXoXy/8ZK8/T+hMzt8L4WnrLCJgdybqgPagnF/f97cg3A==", + "dev": true, + "dependencies": { + "minimatch": "^9.0.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/ignore-walk/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/ignore-walk/node_modules/minimatch": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", + "dev": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/image-size": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/image-size/-/image-size-0.5.5.tgz", + "integrity": "sha512-6TDAlDPZxUFCv+fuOkIoXT/V/f3Qbq8e37p+YOiYrUv3v9cc3/6x78VdfPgFVaB9dZYeLUfKgHRebpkm/oP2VQ==", + "dev": true, + "optional": true, + "bin": { + "image-size": "bin/image-size.js" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/immutable": { + "version": "4.3.6", + "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.3.6.tgz", + "integrity": "sha512-Ju0+lEMyzMVZarkTn/gqRpdqd5dOPaz1mCZ0SH3JV6iFw81PldE/PEB1hWVEA288HPt4WXW8O7AWxB10M+03QQ==", + "dev": true + }, + "node_modules/import-fresh": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "dev": true, + "dependencies": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/import-fresh/node_modules/resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "dev": true, + "engines": { + "node": ">=0.8.19" + } + }, + "node_modules/indent-string": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", + "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "deprecated": "This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.", + "dev": true, + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true + }, + "node_modules/ini": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/ini/-/ini-4.1.2.tgz", + "integrity": "sha512-AMB1mvwR1pyBFY/nSevUX6y8nJWS63/SzUKD3JyQn97s4xgIdgQPT75IRouIiBAN4yLQBUShNYVW0+UG25daCw==", + "dev": true, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/inquirer": { + "version": "9.2.15", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-9.2.15.tgz", + "integrity": "sha512-vI2w4zl/mDluHt9YEQ/543VTCwPKWiHzKtm9dM2V0NdFcqEexDAjUHzO1oA60HRNaVifGXXM1tRRNluLVHa0Kg==", + "dev": true, + "dependencies": { + "@ljharb/through": "^2.3.12", + "ansi-escapes": "^4.3.2", + "chalk": "^5.3.0", + "cli-cursor": "^3.1.0", + "cli-width": "^4.1.0", + "external-editor": "^3.1.0", + "figures": "^3.2.0", + "lodash": "^4.17.21", + "mute-stream": "1.0.0", + "ora": "^5.4.1", + "run-async": "^3.0.0", + "rxjs": "^7.8.1", + "string-width": "^4.2.3", + "strip-ansi": "^6.0.1", + "wrap-ansi": "^6.2.0" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/inquirer/node_modules/chalk": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.3.0.tgz", + "integrity": "sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==", + "dev": true, + "engines": { + "node": "^12.17.0 || ^14.13 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/ip-address": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/ip-address/-/ip-address-9.0.5.tgz", + "integrity": "sha512-zHtQzGojZXTwZTHQqra+ETKd4Sn3vgi7uBmlPoXVWZqYvuKmtI0l/VZTjqGmJY9x88GGOaZ9+G9ES8hC4T4X8g==", + "dev": true, + "dependencies": { + "jsbn": "1.1.0", + "sprintf-js": "^1.1.3" + }, + "engines": { + "node": ">= 12" + } + }, + "node_modules/ip-address/node_modules/sprintf-js": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.3.tgz", + "integrity": "sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA==", + "dev": true + }, + "node_modules/ipaddr.js": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-2.2.0.tgz", + "integrity": "sha512-Ag3wB2o37wslZS19hZqorUnrnzSkpOVy+IiiDEiTqNubEYpYuHWIf6K4psgN2ZWKExS4xhVCrRVfb/wfW8fWJA==", + "dev": true, + "engines": { + "node": ">= 10" + } + }, + "node_modules/is-absolute": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-absolute/-/is-absolute-1.0.0.tgz", + "integrity": "sha512-dOWoqflvcydARa360Gvv18DZ/gRuHKi2NU/wU5X1ZFzdYfH29nkiNZsF3mp4OJ3H4yo9Mx8A/uAGNzpzPN3yBA==", + "dev": true, + "dependencies": { + "is-relative": "^1.0.0", + "is-windows": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", + "dev": true + }, + "node_modules/is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dependencies": { + "binary-extensions": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-core-module": { + "version": "2.14.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.14.0.tgz", + "integrity": "sha512-a5dFJih5ZLYlRtDc0dZWP7RiKr6xIKzmn/oAYCDvdLThadVgyJwlaoQPmRtMSpz+rk0OGAgIu+TcM9HUF0fk1A==", + "dev": true, + "dependencies": { + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-docker": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", + "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", + "dev": true, + "bin": { + "is-docker": "cli.js" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "engines": { + "node": ">=8" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-interactive": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-1.0.0.tgz", + "integrity": "sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-lambda": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-lambda/-/is-lambda-1.0.1.tgz", + "integrity": "sha512-z7CMFGNrENq5iFB9Bqo64Xk6Y9sg+epq1myIcdHaGnbMTYOxvzsEtdYqQUylB7LxfkvgrrjP32T6Ywciio9UIQ==", + "dev": true + }, + "node_modules/is-negated-glob": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-negated-glob/-/is-negated-glob-1.0.0.tgz", + "integrity": "sha512-czXVVn/QEmgvej1f50BZ648vUI+em0xqMq2Sn+QncCLN4zj1UAxlT+kw/6ggQTOaZPd1HqKQGEqbpQVtJucWug==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/is-plain-obj": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-3.0.0.tgz", + "integrity": "sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "dev": true, + "dependencies": { + "isobject": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-relative": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-relative/-/is-relative-1.0.0.tgz", + "integrity": "sha512-Kw/ReK0iqwKeu0MITLFuj0jbPAmEiOsIwyIXvvbfa6QfmN9pkD1M+8pdk7Rl/dTKbH34/XBFMbgD4iMJhLQbGA==", + "dev": true, + "dependencies": { + "is-unc-path": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-unc-path": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-unc-path/-/is-unc-path-1.0.0.tgz", + "integrity": "sha512-mrGpVd0fs7WWLfVsStvgF6iEJnbjDFZh9/emhRDcGWTduTfNHd9CHeUwH3gYIjdbwo4On6hunkztwOaAw0yllQ==", + "dev": true, + "dependencies": { + "unc-path-regex": "^0.1.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-unicode-supported": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", + "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-what": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/is-what/-/is-what-3.14.1.tgz", + "integrity": "sha512-sNxgpk9793nzSs7bA6JQJGeIuRBQhAaNGG77kzYQgMkrID+lS6SlK07K5LaptscDlSaIgH+GPFzf+d75FVxozA==", + "dev": true + }, + "node_modules/is-windows": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", + "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-wsl": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", + "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", + "dev": true, + "dependencies": { + "is-docker": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", + "dev": true + }, + "node_modules/isbinaryfile": { + "version": "4.0.10", + "resolved": "https://registry.npmjs.org/isbinaryfile/-/isbinaryfile-4.0.10.tgz", + "integrity": "sha512-iHrqe5shvBUcFbmZq9zOQHBoeOhZJu6RQGrDpBgenUm/Am+F3JM2MgQj+rK3Z601fzrL5gLZWtAPH2OBaSVcyw==", + "dev": true, + "engines": { + "node": ">= 8.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/gjtorikian/" + } + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true + }, + "node_modules/isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/istanbul-lib-coverage": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.2.tgz", + "integrity": "sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/istanbul-lib-instrument": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz", + "integrity": "sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==", + "dev": true, + "dependencies": { + "@babel/core": "^7.12.3", + "@babel/parser": "^7.14.7", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-coverage": "^3.2.0", + "semver": "^6.3.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/istanbul-lib-instrument/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/istanbul-lib-report": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz", + "integrity": "sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==", + "dev": true, + "dependencies": { + "istanbul-lib-coverage": "^3.0.0", + "make-dir": "^4.0.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/istanbul-lib-report/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/istanbul-lib-report/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/istanbul-lib-source-maps": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz", + "integrity": "sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==", + "dev": true, + "dependencies": { + "debug": "^4.1.1", + "istanbul-lib-coverage": "^3.0.0", + "source-map": "^0.6.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/istanbul-lib-source-maps/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/istanbul-reports": { + "version": "3.1.7", + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.7.tgz", + "integrity": "sha512-BewmUXImeuRk2YY0PVbxgKAysvhRPUQE0h5QRM++nVWyubKGV0l8qQ5op8+B2DOmwSe63Jivj0BjkPQVf8fP5g==", + "dev": true, + "dependencies": { + "html-escaper": "^2.0.0", + "istanbul-lib-report": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/iterare": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/iterare/-/iterare-1.2.1.tgz", + "integrity": "sha512-RKYVTCjAnRthyJes037NX/IiqeidgN1xc3j1RjFfECFp28A1GVwK9nA+i0rJPaHqSZwygLzRnFlzUuHFoWWy+Q==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/jackspeak": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.0.tgz", + "integrity": "sha512-JVYhQnN59LVPFCEcVa2C3CrEKYacvjRfqIQl+h8oi91aLYQVWRYbxjPcv1bUiUy/kLmQaANrYfNMCO3kuEDHfw==", + "dev": true, + "dependencies": { + "@isaacs/cliui": "^8.0.2" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + }, + "optionalDependencies": { + "@pkgjs/parseargs": "^0.11.0" + } + }, + "node_modules/jasmine-core": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/jasmine-core/-/jasmine-core-5.1.2.tgz", + "integrity": "sha512-2oIUMGn00FdUiqz6epiiJr7xcFyNYj3rDcfmnzfkBnHyBQ3cBQUs4mmyGsOb7TTLb9kxk7dBcmEmqhDKkBoDyA==", + "dev": true + }, + "node_modules/jest-worker": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", + "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==", + "dev": true, + "dependencies": { + "@types/node": "*", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" + }, + "engines": { + "node": ">= 10.13.0" + } + }, + "node_modules/jest-worker/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-worker/node_modules/supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" + } + }, + "node_modules/jiti": { + "version": "1.21.6", + "resolved": "https://registry.npmjs.org/jiti/-/jiti-1.21.6.tgz", + "integrity": "sha512-2yTgeWTWzMWkHu6Jp9NKgePDaYHbntiwvYuuJLbbN9vl7DC9DvXKOB2BC3ZZ92D3cvV/aflH0osDfwpHepQ53w==", + "dev": true, + "bin": { + "jiti": "bin/jiti.js" + } + }, + "node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" + }, + "node_modules/js-yaml": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "dev": true, + "dependencies": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/jsbn": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-1.1.0.tgz", + "integrity": "sha512-4bYVV3aAMtDTTu4+xsDYa6sy9GyJ69/amsu9sYF2zqjiEoZA5xJi3BrfX3uY+/IekIu7MwdObdbDWpoZdBv3/A==", + "dev": true + }, + "node_modules/jsesc": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", + "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", + "bin": { + "jsesc": "bin/jsesc" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/json-parse-even-better-errors": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-3.0.2.tgz", + "integrity": "sha512-fi0NG4bPjCHunUJffmLd0gxssIgkNmArMvis4iNah6Owg1MCJjWhEcDLmsK6iGkJq3tHwbDkTlce70/tmXN4cQ==", + "dev": true, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true + }, + "node_modules/json5": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", + "bin": { + "json5": "lib/cli.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/jsonc-parser": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.2.1.tgz", + "integrity": "sha512-AilxAyFOAcK5wA1+LeaySVBrHsGQvUFCDWXKpZjzaL0PqW+xfBOttn8GNtWKFWqneyMZj41MWF9Kl6iPWLwgOA==", + "dev": true + }, + "node_modules/jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dev": true, + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/jsonparse": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/jsonparse/-/jsonparse-1.3.1.tgz", + "integrity": "sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg==", + "dev": true, + "engines": [ + "node >= 0.2.0" + ] + }, + "node_modules/karma": { + "version": "6.4.3", + "resolved": "https://registry.npmjs.org/karma/-/karma-6.4.3.tgz", + "integrity": "sha512-LuucC/RE92tJ8mlCwqEoRWXP38UMAqpnq98vktmS9SznSoUPPUJQbc91dHcxcunROvfQjdORVA/YFviH+Xci9Q==", + "dev": true, + "dependencies": { + "@colors/colors": "1.5.0", + "body-parser": "^1.19.0", + "braces": "^3.0.2", + "chokidar": "^3.5.1", + "connect": "^3.7.0", + "di": "^0.0.1", + "dom-serialize": "^2.2.1", + "glob": "^7.1.7", + "graceful-fs": "^4.2.6", + "http-proxy": "^1.18.1", + "isbinaryfile": "^4.0.8", + "lodash": "^4.17.21", + "log4js": "^6.4.1", + "mime": "^2.5.2", + "minimatch": "^3.0.4", + "mkdirp": "^0.5.5", + "qjobs": "^1.2.0", + "range-parser": "^1.2.1", + "rimraf": "^3.0.2", + "socket.io": "^4.7.2", + "source-map": "^0.6.1", + "tmp": "^0.2.1", + "ua-parser-js": "^0.7.30", + "yargs": "^16.1.1" + }, + "bin": { + "karma": "bin/karma" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/karma-chrome-launcher": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/karma-chrome-launcher/-/karma-chrome-launcher-3.2.0.tgz", + "integrity": "sha512-rE9RkUPI7I9mAxByQWkGJFXfFD6lE4gC5nPuZdobf/QdTEJI6EU4yIay/cfU/xV4ZxlM5JiTv7zWYgA64NpS5Q==", + "dev": true, + "dependencies": { + "which": "^1.2.1" + } + }, + "node_modules/karma-coverage": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/karma-coverage/-/karma-coverage-2.2.1.tgz", + "integrity": "sha512-yj7hbequkQP2qOSb20GuNSIyE//PgJWHwC2IydLE6XRtsnaflv+/OSGNssPjobYUlhVVagy99TQpqUt3vAUG7A==", + "dev": true, + "dependencies": { + "istanbul-lib-coverage": "^3.2.0", + "istanbul-lib-instrument": "^5.1.0", + "istanbul-lib-report": "^3.0.0", + "istanbul-lib-source-maps": "^4.0.1", + "istanbul-reports": "^3.0.5", + "minimatch": "^3.0.4" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/karma-jasmine": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/karma-jasmine/-/karma-jasmine-5.1.0.tgz", + "integrity": "sha512-i/zQLFrfEpRyQoJF9fsCdTMOF5c2dK7C7OmsuKg2D0YSsuZSfQDiLuaiktbuio6F2wiCsZSnSnieIQ0ant/uzQ==", + "dev": true, + "dependencies": { + "jasmine-core": "^4.1.0" + }, + "engines": { + "node": ">=12" + }, + "peerDependencies": { + "karma": "^6.0.0" + } + }, + "node_modules/karma-jasmine-html-reporter": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/karma-jasmine-html-reporter/-/karma-jasmine-html-reporter-2.1.0.tgz", + "integrity": "sha512-sPQE1+nlsn6Hwb5t+HHwyy0A1FNCVKuL1192b+XNauMYWThz2kweiBVW1DqloRpVvZIJkIoHVB7XRpK78n1xbQ==", + "dev": true, + "peerDependencies": { + "jasmine-core": "^4.0.0 || ^5.0.0", + "karma": "^6.0.0", + "karma-jasmine": "^5.0.0" + } + }, + "node_modules/karma-jasmine/node_modules/jasmine-core": { + "version": "4.6.1", + "resolved": "https://registry.npmjs.org/jasmine-core/-/jasmine-core-4.6.1.tgz", + "integrity": "sha512-VYz/BjjmC3klLJlLwA4Kw8ytk0zDSmbbDLNs794VnWmkcCB7I9aAL/D48VNQtmITyPvea2C3jdUMfc3kAoy0PQ==", + "dev": true + }, + "node_modules/karma-source-map-support": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/karma-source-map-support/-/karma-source-map-support-1.4.0.tgz", + "integrity": "sha512-RsBECncGO17KAoJCYXjv+ckIz+Ii9NCi+9enk+rq6XC81ezYkb4/RHE6CTXdA7IOJqoF3wcaLfVG0CPmE5ca6A==", + "dev": true, + "dependencies": { + "source-map-support": "^0.5.5" + } + }, + "node_modules/karma/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/karma/node_modules/cliui": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", + "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", + "dev": true, + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^7.0.0" + } + }, + "node_modules/karma/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/karma/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/karma/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/karma/node_modules/tmp": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.3.tgz", + "integrity": "sha512-nZD7m9iCPC5g0pYmcaxogYKggSfLsdxl8of3Q/oIbqCqLLIO9IAF0GWjX1z9NZRHPiXv8Wex4yDCaZsgEw0Y8w==", + "dev": true, + "engines": { + "node": ">=14.14" + } + }, + "node_modules/karma/node_modules/wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/karma/node_modules/yargs": { + "version": "16.2.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", + "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", + "dev": true, + "dependencies": { + "cliui": "^7.0.2", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.0", + "y18n": "^5.0.5", + "yargs-parser": "^20.2.2" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/karma/node_modules/yargs-parser": { + "version": "20.2.9", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", + "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/klona": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/klona/-/klona-2.0.6.tgz", + "integrity": "sha512-dhG34DXATL5hSxJbIexCft8FChFXtmskoZYnoPWjXQuebWYCNkVeV3KkGegCK9CP1oswI/vQibS2GY7Em/sJJA==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/launch-editor": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/launch-editor/-/launch-editor-2.8.0.tgz", + "integrity": "sha512-vJranOAJrI/llyWGRQqiDM+adrw+k83fvmmx3+nV47g3+36xM15jE+zyZ6Ffel02+xSvuM0b2GDRosXZkbb6wA==", + "dev": true, + "dependencies": { + "picocolors": "^1.0.0", + "shell-quote": "^1.8.1" + } + }, + "node_modules/less": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/less/-/less-4.2.0.tgz", + "integrity": "sha512-P3b3HJDBtSzsXUl0im2L7gTO5Ubg8mEN6G8qoTS77iXxXX4Hvu4Qj540PZDvQ8V6DmX6iXo98k7Md0Cm1PrLaA==", + "dev": true, + "dependencies": { + "copy-anything": "^2.0.1", + "parse-node-version": "^1.0.1", + "tslib": "^2.3.0" + }, + "bin": { + "lessc": "bin/lessc" + }, + "engines": { + "node": ">=6" + }, + "optionalDependencies": { + "errno": "^0.1.1", + "graceful-fs": "^4.1.2", + "image-size": "~0.5.0", + "make-dir": "^2.1.0", + "mime": "^1.4.1", + "needle": "^3.1.0", + "source-map": "~0.6.0" + } + }, + "node_modules/less-loader": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/less-loader/-/less-loader-11.1.0.tgz", + "integrity": "sha512-C+uDBV7kS7W5fJlUjq5mPBeBVhYpTIm5gB09APT9o3n/ILeaXVsiSFTbZpTJCJwQ/Crczfn3DmfQFwxYusWFug==", + "dev": true, + "dependencies": { + "klona": "^2.0.4" + }, + "engines": { + "node": ">= 14.15.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "less": "^3.5.0 || ^4.0.0", + "webpack": "^5.0.0" + } + }, + "node_modules/less/node_modules/make-dir": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", + "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", + "dev": true, + "optional": true, + "dependencies": { + "pify": "^4.0.1", + "semver": "^5.6.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/less/node_modules/mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + "dev": true, + "optional": true, + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/less/node_modules/semver": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", + "dev": true, + "optional": true, + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/less/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "optional": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/license-webpack-plugin": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/license-webpack-plugin/-/license-webpack-plugin-4.0.2.tgz", + "integrity": "sha512-771TFWFD70G1wLTC4oU2Cw4qvtmNrIw+wRvBtn+okgHl7slJVi7zfNcdmqDL72BojM30VNJ2UHylr1o77U37Jw==", + "dev": true, + "dependencies": { + "webpack-sources": "^3.0.0" + }, + "peerDependenciesMeta": { + "webpack": { + "optional": true + }, + "webpack-sources": { + "optional": true + } + } + }, + "node_modules/lines-and-columns": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", + "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", + "dev": true + }, + "node_modules/loader-runner": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.0.tgz", + "integrity": "sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==", + "dev": true, + "engines": { + "node": ">=6.11.5" + } + }, + "node_modules/loader-utils": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-3.2.1.tgz", + "integrity": "sha512-ZvFw1KWS3GVyYBYb7qkmRM/WwL2TQQBxgCK62rlvm4WpVQ23Nb4tYjApUlfjrEGvOs7KHEsmyUn75OHZrJMWPw==", + "dev": true, + "engines": { + "node": ">= 12.13.0" + } + }, + "node_modules/locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "dependencies": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "dev": true + }, + "node_modules/lodash.debounce": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", + "integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==", + "dev": true + }, + "node_modules/log-symbols": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", + "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", + "dev": true, + "dependencies": { + "chalk": "^4.1.0", + "is-unicode-supported": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/log-symbols/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/log-symbols/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/log-symbols/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/log-symbols/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/log-symbols/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/log-symbols/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/log4js": { + "version": "6.9.1", + "resolved": "https://registry.npmjs.org/log4js/-/log4js-6.9.1.tgz", + "integrity": "sha512-1somDdy9sChrr9/f4UlzhdaGfDR2c/SaD2a4T7qEkG4jTS57/B3qmnjLYePwQ8cqWnUHZI0iAKxMBpCZICiZ2g==", + "dev": true, + "dependencies": { + "date-format": "^4.0.14", + "debug": "^4.3.4", + "flatted": "^3.2.7", + "rfdc": "^1.3.0", + "streamroller": "^3.1.5" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "dependencies": { + "yallist": "^3.0.2" + } + }, + "node_modules/magic-string": { + "version": "0.30.8", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.8.tgz", + "integrity": "sha512-ISQTe55T2ao7XtlAStud6qwYPZjE4GK1S/BeVPus4jrq6JuOnQ00YKQC581RWhR122W7msZV263KzVeLoqidyQ==", + "dev": true, + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.4.15" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/make-dir": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-4.0.0.tgz", + "integrity": "sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==", + "dev": true, + "dependencies": { + "semver": "^7.5.3" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/make-fetch-happen": { + "version": "13.0.1", + "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-13.0.1.tgz", + "integrity": "sha512-cKTUFc/rbKUd/9meOvgrpJ2WrNzymt6jfRDdwg5UCnVzv9dTpEj9JS5m3wtziXVCjluIXyL8pcaukYqezIzZQA==", + "dev": true, + "dependencies": { + "@npmcli/agent": "^2.0.0", + "cacache": "^18.0.0", + "http-cache-semantics": "^4.1.1", + "is-lambda": "^1.0.1", + "minipass": "^7.0.2", + "minipass-fetch": "^3.0.0", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.4", + "negotiator": "^0.6.3", + "proc-log": "^4.2.0", + "promise-retry": "^2.0.1", + "ssri": "^10.0.0" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/make-fetch-happen/node_modules/proc-log": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/proc-log/-/proc-log-4.2.0.tgz", + "integrity": "sha512-g8+OnU/L2v+wyiVK+D5fA34J7EH8jZ8DDlvwhRCMxmMj7UCBvxiO1mGeN+36JXIKF4zevU4kRBd8lVgG9vLelA==", + "dev": true, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/media-typer": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", + "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/memfs": { + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/memfs/-/memfs-3.5.3.tgz", + "integrity": "sha512-UERzLsxzllchadvbPs5aolHh65ISpKpM+ccLbOJ8/vvpBKmAWf+la7dXFy7Mr0ySHbdHrFv5kGFCUHHe6GFEmw==", + "dev": true, + "dependencies": { + "fs-monkey": "^1.0.4" + }, + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/merge-descriptors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", + "integrity": "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==", + "dev": true + }, + "node_modules/merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", + "dev": true + }, + "node_modules/merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "engines": { + "node": ">= 8" + } + }, + "node_modules/methods": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", + "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/micromatch": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.7.tgz", + "integrity": "sha512-LPP/3KorzCwBxfeUuZmaR6bG2kdeHSbe0P2tY3FLRU4vYrjYz5hI4QZwV0njUx3jeuKe67YukQ1LSPZBKDqO/Q==", + "dependencies": { + "braces": "^3.0.3", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/micromatch/node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/mime": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-2.6.0.tgz", + "integrity": "sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==", + "dev": true, + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "dev": true, + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/mini-css-extract-plugin": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-2.8.1.tgz", + "integrity": "sha512-/1HDlyFRxWIZPI1ZpgqlZ8jMw/1Dp/dl3P0L1jtZ+zVcHqwPhGwaJwKL00WVgfnBy6PWCde9W65or7IIETImuA==", + "dev": true, + "dependencies": { + "schema-utils": "^4.0.0", + "tapable": "^2.2.1" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.0.0" + } + }, + "node_modules/minimalistic-assert": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", + "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==", + "dev": true + }, + "node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/minimist": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/minipass": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", + "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", + "dev": true, + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "node_modules/minipass-collect": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/minipass-collect/-/minipass-collect-2.0.1.tgz", + "integrity": "sha512-D7V8PO9oaz7PWGLbCACuI1qEOsq7UKfLotx/C0Aet43fCUB/wfQ7DYeq2oR/svFJGYDHPr38SHATeaj/ZoKHKw==", + "dev": true, + "dependencies": { + "minipass": "^7.0.3" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "node_modules/minipass-fetch": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-3.0.5.tgz", + "integrity": "sha512-2N8elDQAtSnFV0Dk7gt15KHsS0Fyz6CbYZ360h0WTYV1Ty46li3rAXVOQj1THMNLdmrD9Vt5pBPtWtVkpwGBqg==", + "dev": true, + "dependencies": { + "minipass": "^7.0.3", + "minipass-sized": "^1.0.3", + "minizlib": "^2.1.2" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + }, + "optionalDependencies": { + "encoding": "^0.1.13" + } + }, + "node_modules/minipass-flush": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/minipass-flush/-/minipass-flush-1.0.5.tgz", + "integrity": "sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw==", + "dev": true, + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/minipass-flush/node_modules/minipass": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/minipass-flush/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, + "node_modules/minipass-json-stream": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minipass-json-stream/-/minipass-json-stream-1.0.1.tgz", + "integrity": "sha512-ODqY18UZt/I8k+b7rl2AENgbWE8IDYam+undIJONvigAz8KR5GWblsFTEfQs0WODsjbSXWlm+JHEv8Gr6Tfdbg==", + "dev": true, + "dependencies": { + "jsonparse": "^1.3.1", + "minipass": "^3.0.0" + } + }, + "node_modules/minipass-json-stream/node_modules/minipass": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/minipass-json-stream/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, + "node_modules/minipass-pipeline": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/minipass-pipeline/-/minipass-pipeline-1.2.4.tgz", + "integrity": "sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A==", + "dev": true, + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/minipass-pipeline/node_modules/minipass": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/minipass-pipeline/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, + "node_modules/minipass-sized": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/minipass-sized/-/minipass-sized-1.0.3.tgz", + "integrity": "sha512-MbkQQ2CTiBMlA2Dm/5cY+9SWFEN8pzzOXi6rlM5Xxq0Yqbda5ZQy9sU75a673FE9ZK0Zsbr6Y5iP6u9nktfg2g==", + "dev": true, + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/minipass-sized/node_modules/minipass": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/minipass-sized/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, + "node_modules/minizlib": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz", + "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==", + "dev": true, + "dependencies": { + "minipass": "^3.0.0", + "yallist": "^4.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/minizlib/node_modules/minipass": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/minizlib/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, + "node_modules/mkdirp": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", + "dev": true, + "dependencies": { + "minimist": "^1.2.6" + }, + "bin": { + "mkdirp": "bin/cmd.js" + } + }, + "node_modules/mrmime": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mrmime/-/mrmime-2.0.0.tgz", + "integrity": "sha512-eu38+hdgojoyq63s+yTpN4XMBdt5l8HhMhc4VKLO9KM5caLIBvUm4thi7fFaxyTmCKeNnXZ5pAlBwCUnhA09uw==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, + "node_modules/multicast-dns": { + "version": "7.2.5", + "resolved": "https://registry.npmjs.org/multicast-dns/-/multicast-dns-7.2.5.tgz", + "integrity": "sha512-2eznPJP8z2BFLX50tf0LuODrpINqP1RVIm/CObbTcBRITQgmC/TjcREF1NeTBzIcR5XO/ukWo+YHOjBbFwIupg==", + "dev": true, + "dependencies": { + "dns-packet": "^5.2.2", + "thunky": "^1.0.2" + }, + "bin": { + "multicast-dns": "cli.js" + } + }, + "node_modules/multimatch": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/multimatch/-/multimatch-4.0.0.tgz", + "integrity": "sha512-lDmx79y1z6i7RNx0ZGCPq1bzJ6ZoDDKbvh7jxr9SJcWLkShMzXrHbYVpTdnhNM5MXpDUxCQ4DgqVttVXlBgiBQ==", + "dev": true, + "dependencies": { + "@types/minimatch": "^3.0.3", + "array-differ": "^3.0.0", + "array-union": "^2.1.0", + "arrify": "^2.0.1", + "minimatch": "^3.0.4" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/mute-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-1.0.0.tgz", + "integrity": "sha512-avsJQhyd+680gKXyG/sQc0nXaC6rBkPOfyHYcFb9+hdkqQkR9bdnkJ0AMZhke0oesPqIO+mFFJ+IdBc7mst4IA==", + "dev": true, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/nanoid": { + "version": "3.3.7", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz", + "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/needle": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/needle/-/needle-3.3.1.tgz", + "integrity": "sha512-6k0YULvhpw+RoLNiQCRKOl09Rv1dPLr8hHnVjHqdolKwDrdNyk+Hmrthi4lIGPPz3r39dLx0hsF5s40sZ3Us4Q==", + "dev": true, + "optional": true, + "dependencies": { + "iconv-lite": "^0.6.3", + "sax": "^1.2.4" + }, + "bin": { + "needle": "bin/needle" + }, + "engines": { + "node": ">= 4.4.x" + } + }, + "node_modules/needle/node_modules/iconv-lite": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "dev": true, + "optional": true, + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/negotiator": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", + "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/neo-async": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", + "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", + "dev": true + }, + "node_modules/nice-napi": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/nice-napi/-/nice-napi-1.0.2.tgz", + "integrity": "sha512-px/KnJAJZf5RuBGcfD+Sp2pAKq0ytz8j+1NehvgIGFkvtvFrDM3T8E4x/JJODXK9WZow8RRGrbA9QQ3hs+pDhA==", + "dev": true, + "hasInstallScript": true, + "optional": true, + "os": [ + "!win32" + ], + "dependencies": { + "node-addon-api": "^3.0.0", + "node-gyp-build": "^4.2.2" + } + }, + "node_modules/node-addon-api": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-3.2.1.tgz", + "integrity": "sha512-mmcei9JghVNDYydghQmeDX8KoAm0FAiYyIcUt/N4nhyAipB17pllZQDOJD2fotxABnt4Mdz+dKTO7eftLg4d0A==", + "dev": true, + "optional": true + }, + "node_modules/node-fetch": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz", + "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==", + "dev": true, + "dependencies": { + "whatwg-url": "^5.0.0" + }, + "engines": { + "node": "4.x || >=6.0.0" + }, + "peerDependencies": { + "encoding": "^0.1.0" + }, + "peerDependenciesMeta": { + "encoding": { + "optional": true + } + } + }, + "node_modules/node-forge": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-1.3.1.tgz", + "integrity": "sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA==", + "dev": true, + "engines": { + "node": ">= 6.13.0" + } + }, + "node_modules/node-gyp": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-10.1.0.tgz", + "integrity": "sha512-B4J5M1cABxPc5PwfjhbV5hoy2DP9p8lFXASnEN6hugXOa61416tnTZ29x9sSwAd0o99XNIcpvDDy1swAExsVKA==", + "dev": true, + "dependencies": { + "env-paths": "^2.2.0", + "exponential-backoff": "^3.1.1", + "glob": "^10.3.10", + "graceful-fs": "^4.2.6", + "make-fetch-happen": "^13.0.0", + "nopt": "^7.0.0", + "proc-log": "^3.0.0", + "semver": "^7.3.5", + "tar": "^6.1.2", + "which": "^4.0.0" + }, + "bin": { + "node-gyp": "bin/node-gyp.js" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/node-gyp-build": { + "version": "4.8.1", + "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.8.1.tgz", + "integrity": "sha512-OSs33Z9yWr148JZcbZd5WiAXhh/n9z8TxQcdMhIOlpN9AhWpLfvVFO73+m77bBABQMaY9XSvIa+qk0jlI7Gcaw==", + "dev": true, + "optional": true, + "bin": { + "node-gyp-build": "bin.js", + "node-gyp-build-optional": "optional.js", + "node-gyp-build-test": "build-test.js" + } + }, + "node_modules/node-gyp/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/node-gyp/node_modules/glob": { + "version": "10.4.2", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.2.tgz", + "integrity": "sha512-GwMlUF6PkPo3Gk21UxkCohOv0PLcIXVtKyLlpEI28R/cO/4eNOdmLk3CMW1wROV/WR/EsZOWAfBbBOqYvs88/w==", + "dev": true, + "dependencies": { + "foreground-child": "^3.1.0", + "jackspeak": "^3.1.2", + "minimatch": "^9.0.4", + "minipass": "^7.1.2", + "package-json-from-dist": "^1.0.0", + "path-scurry": "^1.11.1" + }, + "bin": { + "glob": "dist/esm/bin.mjs" + }, + "engines": { + "node": ">=16 || 14 >=14.18" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/node-gyp/node_modules/isexe": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-3.1.1.tgz", + "integrity": "sha512-LpB/54B+/2J5hqQ7imZHfdU31OlgQqx7ZicVlkm9kzg9/w8GKLEcFfJl/t7DCEDueOyBAD6zCCwTO6Fzs0NoEQ==", + "dev": true, + "engines": { + "node": ">=16" + } + }, + "node_modules/node-gyp/node_modules/minimatch": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", + "dev": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/node-gyp/node_modules/which": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/which/-/which-4.0.0.tgz", + "integrity": "sha512-GlaYyEb07DPxYCKhKzplCWBJtvxZcZMrL+4UkrTSJHHPyZU4mYYTv3qaOe77H7EODLSSopAUFAc6W8U4yqvscg==", + "dev": true, + "dependencies": { + "isexe": "^3.1.1" + }, + "bin": { + "node-which": "bin/which.js" + }, + "engines": { + "node": "^16.13.0 || >=18.0.0" + } + }, + "node_modules/node-releases": { + "version": "2.0.14", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.14.tgz", + "integrity": "sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==" + }, + "node_modules/nopt": { + "version": "7.2.1", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-7.2.1.tgz", + "integrity": "sha512-taM24ViiimT/XntxbPyJQzCG+p4EKOpgD3mxFwW38mGjVUrfERQOeY4EDHjdnptttfHuHQXFx+lTP08Q+mLa/w==", + "dev": true, + "dependencies": { + "abbrev": "^2.0.0" + }, + "bin": { + "nopt": "bin/nopt.js" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/normalize-package-data": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-6.0.2.tgz", + "integrity": "sha512-V6gygoYb/5EmNI+MEGrWkC+e6+Rr7mTmfHrxDbLzxQogBkgzo76rkok0Am6thgSF7Mv2nLOajAJj5vDJZEFn7g==", + "dev": true, + "dependencies": { + "hosted-git-info": "^7.0.0", + "semver": "^7.3.5", + "validate-npm-package-license": "^3.0.4" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/normalize-range": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", + "integrity": "sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/npm-bundled": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/npm-bundled/-/npm-bundled-3.0.1.tgz", + "integrity": "sha512-+AvaheE/ww1JEwRHOrn4WHNzOxGtVp+adrg2AeZS/7KuxGUYFuBta98wYpfHBbJp6Tg6j1NKSEVHNcfZzJHQwQ==", + "dev": true, + "dependencies": { + "npm-normalize-package-bin": "^3.0.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm-install-checks": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/npm-install-checks/-/npm-install-checks-6.3.0.tgz", + "integrity": "sha512-W29RiK/xtpCGqn6f3ixfRYGk+zRyr+Ew9F2E20BfXxT5/euLdA/Nm7fO7OeTGuAmTs30cpgInyJ0cYe708YTZw==", + "dev": true, + "dependencies": { + "semver": "^7.1.1" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm-normalize-package-bin": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-3.0.1.tgz", + "integrity": "sha512-dMxCf+zZ+3zeQZXKxmyuCKlIDPGuv8EF940xbkC4kQVDTtqoh6rJFO+JTKSA6/Rwi0getWmtuy4Itup0AMcaDQ==", + "dev": true, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm-package-arg": { + "version": "11.0.1", + "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-11.0.1.tgz", + "integrity": "sha512-M7s1BD4NxdAvBKUPqqRW957Xwcl/4Zvo8Aj+ANrzvIPzGJZElrH7Z//rSaec2ORcND6FHHLnZeY8qgTpXDMFQQ==", + "dev": true, + "dependencies": { + "hosted-git-info": "^7.0.0", + "proc-log": "^3.0.0", + "semver": "^7.3.5", + "validate-npm-package-name": "^5.0.0" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/npm-packlist": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/npm-packlist/-/npm-packlist-8.0.2.tgz", + "integrity": "sha512-shYrPFIS/JLP4oQmAwDyk5HcyysKW8/JLTEA32S0Z5TzvpaeeX2yMFfoK1fjEBnCBvVyIB/Jj/GBFdm0wsgzbA==", + "dev": true, + "dependencies": { + "ignore-walk": "^6.0.4" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm-pick-manifest": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/npm-pick-manifest/-/npm-pick-manifest-9.0.0.tgz", + "integrity": "sha512-VfvRSs/b6n9ol4Qb+bDwNGUXutpy76x6MARw/XssevE0TnctIKcmklJZM5Z7nqs5z5aW+0S63pgCNbpkUNNXBg==", + "dev": true, + "dependencies": { + "npm-install-checks": "^6.0.0", + "npm-normalize-package-bin": "^3.0.0", + "npm-package-arg": "^11.0.0", + "semver": "^7.3.5" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/npm-registry-fetch": { + "version": "16.2.1", + "resolved": "https://registry.npmjs.org/npm-registry-fetch/-/npm-registry-fetch-16.2.1.tgz", + "integrity": "sha512-8l+7jxhim55S85fjiDGJ1rZXBWGtRLi1OSb4Z3BPLObPuIaeKRlPRiYMSHU4/81ck3t71Z+UwDDl47gcpmfQQA==", + "dev": true, + "dependencies": { + "@npmcli/redact": "^1.1.0", + "make-fetch-happen": "^13.0.0", + "minipass": "^7.0.2", + "minipass-fetch": "^3.0.0", + "minipass-json-stream": "^1.0.1", + "minizlib": "^2.1.2", + "npm-package-arg": "^11.0.0", + "proc-log": "^4.0.0" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/npm-registry-fetch/node_modules/proc-log": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/proc-log/-/proc-log-4.2.0.tgz", + "integrity": "sha512-g8+OnU/L2v+wyiVK+D5fA34J7EH8jZ8DDlvwhRCMxmMj7UCBvxiO1mGeN+36JXIKF4zevU4kRBd8lVgG9vLelA==", + "dev": true, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm-run-path": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "dev": true, + "dependencies": { + "path-key": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/nth-check": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz", + "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==", + "dev": true, + "dependencies": { + "boolbase": "^1.0.0" + }, + "funding": { + "url": "https://github.com/fb55/nth-check?sponsor=1" + } + }, + "node_modules/object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-inspect": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.2.tgz", + "integrity": "sha512-IRZSRuzJiynemAXPYtPe5BoI/RESNYR7TYm50MC5Mqbd3Jmw5y790sErYw3V6SryFJD64b74qQQs9wn5Bg/k3g==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/obuf": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/obuf/-/obuf-1.1.2.tgz", + "integrity": "sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==", + "dev": true + }, + "node_modules/on-finished": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", + "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", + "dev": true, + "dependencies": { + "ee-first": "1.1.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/on-headers": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz", + "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "dev": true, + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "dev": true, + "dependencies": { + "mimic-fn": "^2.1.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/open": { + "version": "8.4.2", + "resolved": "https://registry.npmjs.org/open/-/open-8.4.2.tgz", + "integrity": "sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==", + "dev": true, + "dependencies": { + "define-lazy-prop": "^2.0.0", + "is-docker": "^2.1.1", + "is-wsl": "^2.2.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/openapi-types": { + "version": "12.1.3", + "resolved": "https://registry.npmjs.org/openapi-types/-/openapi-types-12.1.3.tgz", + "integrity": "sha512-N4YtSYJqghVu4iek2ZUvcN/0aqH1kRDuNqzcycDxhOUpg7GdvLa2F3DgS6yBNhInhv2r/6I0Flkn7CqL8+nIcw==", + "dev": true, + "peer": true + }, + "node_modules/ora": { + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/ora/-/ora-5.4.1.tgz", + "integrity": "sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==", + "dev": true, + "dependencies": { + "bl": "^4.1.0", + "chalk": "^4.1.0", + "cli-cursor": "^3.1.0", + "cli-spinners": "^2.5.0", + "is-interactive": "^1.0.0", + "is-unicode-supported": "^0.1.0", + "log-symbols": "^4.1.0", + "strip-ansi": "^6.0.0", + "wcwidth": "^1.0.1" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/ora/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/ora/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/ora/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/ora/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/ora/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/ora/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/os-tmpdir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", + "integrity": "sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "dependencies": { + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/p-map": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", + "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", + "dev": true, + "dependencies": { + "aggregate-error": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-retry": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-4.6.2.tgz", + "integrity": "sha512-312Id396EbJdvRONlngUx0NydfrIQ5lsYu0znKVUzVvArzEIt08V1qhtyESbGVd1FGX7UKtiFp5uwKZdM8wIuQ==", + "dev": true, + "dependencies": { + "@types/retry": "0.12.0", + "retry": "^0.13.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/p-retry/node_modules/retry": { + "version": "0.13.1", + "resolved": "https://registry.npmjs.org/retry/-/retry-0.13.1.tgz", + "integrity": "sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/package-json-from-dist": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.0.tgz", + "integrity": "sha512-dATvCeZN/8wQsGywez1mzHtTlP22H8OEfPrVMLNr4/eGa+ijtLn/6M5f0dY8UKNrC2O9UCU6SSoG3qRKnt7STw==", + "dev": true + }, + "node_modules/pacote": { + "version": "17.0.6", + "resolved": "https://registry.npmjs.org/pacote/-/pacote-17.0.6.tgz", + "integrity": "sha512-cJKrW21VRE8vVTRskJo78c/RCvwJCn1f4qgfxL4w77SOWrTCRcmfkYHlHtS0gqpgjv3zhXflRtgsrUCX5xwNnQ==", + "dev": true, + "dependencies": { + "@npmcli/git": "^5.0.0", + "@npmcli/installed-package-contents": "^2.0.1", + "@npmcli/promise-spawn": "^7.0.0", + "@npmcli/run-script": "^7.0.0", + "cacache": "^18.0.0", + "fs-minipass": "^3.0.0", + "minipass": "^7.0.2", + "npm-package-arg": "^11.0.0", + "npm-packlist": "^8.0.0", + "npm-pick-manifest": "^9.0.0", + "npm-registry-fetch": "^16.0.0", + "proc-log": "^3.0.0", + "promise-retry": "^2.0.1", + "read-package-json": "^7.0.0", + "read-package-json-fast": "^3.0.0", + "sigstore": "^2.2.0", + "ssri": "^10.0.0", + "tar": "^6.1.11" + }, + "bin": { + "pacote": "lib/bin.js" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dev": true, + "dependencies": { + "callsites": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/parse-json": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", + "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-even-better-errors": "^2.3.0", + "lines-and-columns": "^1.1.6" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/parse-json/node_modules/json-parse-even-better-errors": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", + "dev": true + }, + "node_modules/parse-node-version": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parse-node-version/-/parse-node-version-1.0.1.tgz", + "integrity": "sha512-3YHlOa/JgH6Mnpr05jP9eDG254US9ek25LyIxZlDItp2iJtwyaXQb57lBYLdT3MowkUFYEV2XXNAYIPlESvJlA==", + "dev": true, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/parse5": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.1.2.tgz", + "integrity": "sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==", + "devOptional": true, + "dependencies": { + "entities": "^4.4.0" + }, + "funding": { + "url": "https://github.com/inikulin/parse5?sponsor=1" + } + }, + "node_modules/parse5-html-rewriting-stream": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/parse5-html-rewriting-stream/-/parse5-html-rewriting-stream-7.0.0.tgz", + "integrity": "sha512-mazCyGWkmCRWDI15Zp+UiCqMp/0dgEmkZRvhlsqqKYr4SsVm/TvnSpD9fCvqCA2zoWJcfRym846ejWBBHRiYEg==", + "dev": true, + "dependencies": { + "entities": "^4.3.0", + "parse5": "^7.0.0", + "parse5-sax-parser": "^7.0.0" + }, + "funding": { + "url": "https://github.com/inikulin/parse5?sponsor=1" + } + }, + "node_modules/parse5-sax-parser": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/parse5-sax-parser/-/parse5-sax-parser-7.0.0.tgz", + "integrity": "sha512-5A+v2SNsq8T6/mG3ahcz8ZtQ0OUFTatxPbeidoMB7tkJSGDY3tdfl4MHovtLQHkEn5CGxijNWRQHhRQ6IRpXKg==", + "dev": true, + "dependencies": { + "parse5": "^7.0.0" + }, + "funding": { + "url": "https://github.com/inikulin/parse5?sponsor=1" + } + }, + "node_modules/parseurl": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "dev": true + }, + "node_modules/path-scurry": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz", + "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==", + "dev": true, + "dependencies": { + "lru-cache": "^10.2.0", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" + }, + "engines": { + "node": ">=16 || 14 >=14.18" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/path-scurry/node_modules/lru-cache": { + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.3.0.tgz", + "integrity": "sha512-CQl19J/g+Hbjbv4Y3mFNNXFEL/5t/KCg8POCuUqd4rMKjGG+j1ybER83hxV58zL+dFI1PTkt3GNFSHRt+d8qEQ==", + "dev": true, + "engines": { + "node": "14 || >=16.14" + } + }, + "node_modules/path-to-regexp": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", + "integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==", + "dev": true + }, + "node_modules/path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/picocolors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.1.tgz", + "integrity": "sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew==" + }, + "node_modules/picomatch": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.1.tgz", + "integrity": "sha512-xUXwsxNjwTQ8K3GnT4pCJm+xq3RUPQbmkYJTP5aFIfNIvbcc/4MUxgBaaRSZJ6yGJZiGSyYlM6MzwTsRk8SYCg==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/pify": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", + "dev": true, + "optional": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/piscina": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/piscina/-/piscina-4.4.0.tgz", + "integrity": "sha512-+AQduEJefrOApE4bV7KRmp3N2JnnyErlVqq4P/jmko4FPz9Z877BCccl/iB3FdrWSUkvbGV9Kan/KllJgat3Vg==", + "dev": true, + "optionalDependencies": { + "nice-napi": "^1.0.2" + } + }, + "node_modules/pkg-dir": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-7.0.0.tgz", + "integrity": "sha512-Ie9z/WINcxxLp27BKOCHGde4ITq9UklYKDzVo1nhk5sqGEXU3FpkwP5GM2voTGJkGd9B3Otl+Q4uwSOeSUtOBA==", + "dev": true, + "dependencies": { + "find-up": "^6.3.0" + }, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/pkg-dir/node_modules/find-up": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-6.3.0.tgz", + "integrity": "sha512-v2ZsoEuVHYy8ZIlYqwPe/39Cy+cFDzp4dXPaxNvkEuouymu+2Jbz0PxpKarJHYJTmv2HWT3O382qY8l4jMWthw==", + "dev": true, + "dependencies": { + "locate-path": "^7.1.0", + "path-exists": "^5.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/pkg-dir/node_modules/locate-path": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-7.2.0.tgz", + "integrity": "sha512-gvVijfZvn7R+2qyPX8mAuKcFGDf6Nc61GdvGafQsHL0sBIxfKzA+usWn4GFC/bk+QdwPUD4kWFJLhElipq+0VA==", + "dev": true, + "dependencies": { + "p-locate": "^6.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/pkg-dir/node_modules/p-limit": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-4.0.0.tgz", + "integrity": "sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==", + "dev": true, + "dependencies": { + "yocto-queue": "^1.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/pkg-dir/node_modules/p-locate": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-6.0.0.tgz", + "integrity": "sha512-wPrq66Llhl7/4AGC6I+cqxT07LhXvWL08LNXz1fENOw0Ap4sRZZ/gZpTTJ5jpurzzzfS2W/Ge9BY3LgLjCShcw==", + "dev": true, + "dependencies": { + "p-limit": "^4.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/pkg-dir/node_modules/path-exists": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-5.0.0.tgz", + "integrity": "sha512-RjhtfwJOxzcFmNOi6ltcbcu4Iu+FL3zEj83dk4kAS+fVpTxXLO1b38RvJgT/0QwvV/L3aY9TAnyv0EOqW4GoMQ==", + "dev": true, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + } + }, + "node_modules/postcss": { + "version": "8.4.35", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.35.tgz", + "integrity": "sha512-u5U8qYpBCpN13BsiEB0CbR1Hhh4Gc0zLFuedrHJKMctHCHAGrMdG0PRM/KErzAL3CU6/eckEtmHNB3x6e3c0vA==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "nanoid": "^3.3.7", + "picocolors": "^1.0.0", + "source-map-js": "^1.0.2" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/postcss-loader": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/postcss-loader/-/postcss-loader-8.1.1.tgz", + "integrity": "sha512-0IeqyAsG6tYiDRCYKQJLAmgQr47DX6N7sFSWvQxt6AcupX8DIdmykuk/o/tx0Lze3ErGHJEp5OSRxrelC6+NdQ==", + "dev": true, + "dependencies": { + "cosmiconfig": "^9.0.0", + "jiti": "^1.20.0", + "semver": "^7.5.4" + }, + "engines": { + "node": ">= 18.12.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "@rspack/core": "0.x || 1.x", + "postcss": "^7.0.0 || ^8.0.1", + "webpack": "^5.0.0" + }, + "peerDependenciesMeta": { + "@rspack/core": { + "optional": true + }, + "webpack": { + "optional": true + } + } + }, + "node_modules/postcss-media-query-parser": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/postcss-media-query-parser/-/postcss-media-query-parser-0.2.3.tgz", + "integrity": "sha512-3sOlxmbKcSHMjlUXQZKQ06jOswE7oVkXPxmZdoB1r5l0q6gTFTQSHxNxOrCccElbW7dxNytifNEo8qidX2Vsig==", + "dev": true + }, + "node_modules/postcss-modules-extract-imports": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.1.0.tgz", + "integrity": "sha512-k3kNe0aNFQDAZGbin48pL2VNidTF0w4/eASDsxlyspobzU3wZQLOGj7L9gfRe0Jo9/4uud09DsjFNH7winGv8Q==", + "dev": true, + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/postcss-modules-local-by-default": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.0.5.tgz", + "integrity": "sha512-6MieY7sIfTK0hYfafw1OMEG+2bg8Q1ocHCpoWLqOKj3JXlKu4G7btkmM/B7lFubYkYWmRSPLZi5chid63ZaZYw==", + "dev": true, + "dependencies": { + "icss-utils": "^5.0.0", + "postcss-selector-parser": "^6.0.2", + "postcss-value-parser": "^4.1.0" + }, + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/postcss-modules-scope": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-3.2.0.tgz", + "integrity": "sha512-oq+g1ssrsZOsx9M96c5w8laRmvEu9C3adDSjI8oTcbfkrTE8hx/zfyobUoWIxaKPO8bt6S62kxpw5GqypEw1QQ==", + "dev": true, + "dependencies": { + "postcss-selector-parser": "^6.0.4" + }, + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/postcss-modules-values": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-4.0.0.tgz", + "integrity": "sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ==", + "dev": true, + "dependencies": { + "icss-utils": "^5.0.0" + }, + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/postcss-selector-parser": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.1.0.tgz", + "integrity": "sha512-UMz42UD0UY0EApS0ZL9o1XnLhSTtvvvLe5Dc2H2O56fvRZi+KulDyf5ctDhhtYJBGKStV2FL1fy6253cmLgqVQ==", + "dev": true, + "dependencies": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-value-parser": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", + "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==", + "dev": true + }, + "node_modules/prettier": { + "version": "1.19.1", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-1.19.1.tgz", + "integrity": "sha512-s7PoyDv/II1ObgQunCbB9PdLmUcBZcnWOcxDh7O0N/UwDEsHyqkW+Qh28jW+mVuCdx7gLB0BotYI1Y6uI9iyew==", + "dev": true, + "bin": { + "prettier": "bin-prettier.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/proc-log": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/proc-log/-/proc-log-3.0.0.tgz", + "integrity": "sha512-++Vn7NS4Xf9NacaU9Xq3URUuqZETPsf8L4j5/ckhaRYsfPeRyzGw+iDjFhV/Jr3uNmTvvddEJFWh5R1gRgUH8A==", + "dev": true, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", + "dev": true + }, + "node_modules/promise-inflight": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz", + "integrity": "sha512-6zWPyEOFaQBJYcGMHBKTKJ3u6TBsnMFOIZSa6ce1e/ZrrsOlnHRHbabMjLiBYKp+n44X9eUI6VUPaukCXHuG4g==", + "dev": true + }, + "node_modules/promise-retry": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/promise-retry/-/promise-retry-2.0.1.tgz", + "integrity": "sha512-y+WKFlBR8BGXnsNlIHFGPZmyDf3DFMoLhaflAnyZgV6rG6xu+JwesTo2Q9R6XwYmtmwAFCkAk3e35jEdoeh/3g==", + "dev": true, + "dependencies": { + "err-code": "^2.0.2", + "retry": "^0.12.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/proxy-addr": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", + "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", + "dev": true, + "dependencies": { + "forwarded": "0.2.0", + "ipaddr.js": "1.9.1" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/proxy-addr/node_modules/ipaddr.js": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", + "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", + "dev": true, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/proxy-from-env": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", + "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==", + "dev": true + }, + "node_modules/prr": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz", + "integrity": "sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw==", + "dev": true, + "optional": true + }, + "node_modules/punycode": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", + "integrity": "sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ==", + "dev": true + }, + "node_modules/qjobs": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/qjobs/-/qjobs-1.2.0.tgz", + "integrity": "sha512-8YOJEHtxpySA3fFDyCRxA+UUV+fA+rTWnuWvylOK/NCjhY+b4ocCtmu8TtsWb+mYeU+GCHf/S66KZF/AsteKHg==", + "dev": true, + "engines": { + "node": ">=0.9" + } + }, + "node_modules/qs": { + "version": "6.11.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz", + "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==", + "dev": true, + "dependencies": { + "side-channel": "^1.0.4" + }, + "engines": { + "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "dev": true, + "dependencies": { + "safe-buffer": "^5.1.0" + } + }, + "node_modules/range-parser": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/raw-body": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.2.tgz", + "integrity": "sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==", + "dev": true, + "dependencies": { + "bytes": "3.1.2", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/read-package-json": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/read-package-json/-/read-package-json-7.0.1.tgz", + "integrity": "sha512-8PcDiZ8DXUjLf687Ol4BR8Bpm2umR7vhoZOzNRt+uxD9GpBh/K+CAAALVIiYFknmvlmyg7hM7BSNUXPaCCqd0Q==", + "deprecated": "This package is no longer supported. Please use @npmcli/package-json instead.", + "dev": true, + "dependencies": { + "glob": "^10.2.2", + "json-parse-even-better-errors": "^3.0.0", + "normalize-package-data": "^6.0.0", + "npm-normalize-package-bin": "^3.0.0" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/read-package-json-fast": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/read-package-json-fast/-/read-package-json-fast-3.0.2.tgz", + "integrity": "sha512-0J+Msgym3vrLOUB3hzQCuZHII0xkNGCtz/HJH9xZshwv9DbDwkw1KaE3gx/e2J5rpEY5rtOy6cyhKOPrkP7FZw==", + "dev": true, + "dependencies": { + "json-parse-even-better-errors": "^3.0.0", + "npm-normalize-package-bin": "^3.0.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/read-package-json/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/read-package-json/node_modules/glob": { + "version": "10.4.2", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.2.tgz", + "integrity": "sha512-GwMlUF6PkPo3Gk21UxkCohOv0PLcIXVtKyLlpEI28R/cO/4eNOdmLk3CMW1wROV/WR/EsZOWAfBbBOqYvs88/w==", + "dev": true, + "dependencies": { + "foreground-child": "^3.1.0", + "jackspeak": "^3.1.2", + "minimatch": "^9.0.4", + "minipass": "^7.1.2", + "package-json-from-dist": "^1.0.0", + "path-scurry": "^1.11.1" + }, + "bin": { + "glob": "dist/esm/bin.mjs" + }, + "engines": { + "node": ">=16 || 14 >=14.18" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/read-package-json/node_modules/minimatch": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", + "dev": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "dev": true, + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "dependencies": { + "picomatch": "^2.2.1" + }, + "engines": { + "node": ">=8.10.0" + } + }, + "node_modules/readdirp/node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/reflect-metadata": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/reflect-metadata/-/reflect-metadata-0.2.2.tgz", + "integrity": "sha512-urBwgfrvVP/eAyXx4hluJivBKzuEbSQs9rKWCrCkbSxNv8mxPcUZKeuoF3Uy4mJl3Lwprp6yy5/39VWigZ4K6Q==" + }, + "node_modules/regenerate": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz", + "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==", + "dev": true + }, + "node_modules/regenerate-unicode-properties": { + "version": "10.1.1", + "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.1.1.tgz", + "integrity": "sha512-X007RyZLsCJVVrjgEFVpLUTZwyOZk3oiL75ZcuYjlIWd6rNJtOjkBwQc5AsRrpbKVkxN6sklw/k/9m2jJYOf8Q==", + "dev": true, + "dependencies": { + "regenerate": "^1.4.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/regenerator-runtime": { + "version": "0.14.1", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz", + "integrity": "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==", + "dev": true + }, + "node_modules/regenerator-transform": { + "version": "0.15.2", + "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.15.2.tgz", + "integrity": "sha512-hfMp2BoF0qOk3uc5V20ALGDS2ddjQaLrdl7xrGXvAIow7qeWRM2VA2HuCHkUKk9slq3VwEwLNK3DFBqDfPGYtg==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.8.4" + } + }, + "node_modules/regex-parser": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/regex-parser/-/regex-parser-2.3.0.tgz", + "integrity": "sha512-TVILVSz2jY5D47F4mA4MppkBrafEaiUWJO/TcZHEIuI13AqoZMkK1WMA4Om1YkYbTx+9Ki1/tSUXbceyr9saRg==", + "dev": true + }, + "node_modules/regexpu-core": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.3.2.tgz", + "integrity": "sha512-RAM5FlZz+Lhmo7db9L298p2vHP5ZywrVXmVXpmAD9GuL5MPH6t9ROw1iA/wfHkQ76Qe7AaPF0nGuim96/IrQMQ==", + "dev": true, + "dependencies": { + "@babel/regjsgen": "^0.8.0", + "regenerate": "^1.4.2", + "regenerate-unicode-properties": "^10.1.0", + "regjsparser": "^0.9.1", + "unicode-match-property-ecmascript": "^2.0.0", + "unicode-match-property-value-ecmascript": "^2.1.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/regjsparser": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.9.1.tgz", + "integrity": "sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ==", + "dev": true, + "dependencies": { + "jsesc": "~0.5.0" + }, + "bin": { + "regjsparser": "bin/parser" + } + }, + "node_modules/regjsparser/node_modules/jsesc": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", + "integrity": "sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==", + "dev": true, + "bin": { + "jsesc": "bin/jsesc" + } + }, + "node_modules/require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/require-from-string": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", + "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/require-main-filename": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", + "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", + "dev": true + }, + "node_modules/requires-port": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", + "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==", + "dev": true + }, + "node_modules/resolve": { + "version": "1.22.8", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", + "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", + "dev": true, + "dependencies": { + "is-core-module": "^2.13.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/resolve-url-loader": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-url-loader/-/resolve-url-loader-5.0.0.tgz", + "integrity": "sha512-uZtduh8/8srhBoMx//5bwqjQ+rfYOUq8zC9NrMUGtjBiGTtFJM42s58/36+hTqeqINcnYe08Nj3LkK9lW4N8Xg==", + "dev": true, + "dependencies": { + "adjust-sourcemap-loader": "^4.0.0", + "convert-source-map": "^1.7.0", + "loader-utils": "^2.0.0", + "postcss": "^8.2.14", + "source-map": "0.6.1" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/resolve-url-loader/node_modules/loader-utils": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.4.tgz", + "integrity": "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==", + "dev": true, + "dependencies": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^2.1.2" + }, + "engines": { + "node": ">=8.9.0" + } + }, + "node_modules/resolve-url-loader/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/restore-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", + "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", + "dev": true, + "dependencies": { + "onetime": "^5.1.0", + "signal-exit": "^3.0.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/retry": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz", + "integrity": "sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" + } + }, + "node_modules/rfdc": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.4.1.tgz", + "integrity": "sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA==", + "dev": true + }, + "node_modules/rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "deprecated": "Rimraf versions prior to v4 are no longer supported", + "dev": true, + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/rollup": { + "version": "4.18.0", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.18.0.tgz", + "integrity": "sha512-QmJz14PX3rzbJCN1SG4Xe/bAAX2a6NpCP8ab2vfu2GiUr8AQcr2nCV/oEO3yneFarB67zk8ShlIyWb2LGTb3Sg==", + "dev": true, + "dependencies": { + "@types/estree": "1.0.5" + }, + "bin": { + "rollup": "dist/bin/rollup" + }, + "engines": { + "node": ">=18.0.0", + "npm": ">=8.0.0" + }, + "optionalDependencies": { + "@rollup/rollup-android-arm-eabi": "4.18.0", + "@rollup/rollup-android-arm64": "4.18.0", + "@rollup/rollup-darwin-arm64": "4.18.0", + "@rollup/rollup-darwin-x64": "4.18.0", + "@rollup/rollup-linux-arm-gnueabihf": "4.18.0", + "@rollup/rollup-linux-arm-musleabihf": "4.18.0", + "@rollup/rollup-linux-arm64-gnu": "4.18.0", + "@rollup/rollup-linux-arm64-musl": "4.18.0", + "@rollup/rollup-linux-powerpc64le-gnu": "4.18.0", + "@rollup/rollup-linux-riscv64-gnu": "4.18.0", + "@rollup/rollup-linux-s390x-gnu": "4.18.0", + "@rollup/rollup-linux-x64-gnu": "4.18.0", + "@rollup/rollup-linux-x64-musl": "4.18.0", + "@rollup/rollup-win32-arm64-msvc": "4.18.0", + "@rollup/rollup-win32-ia32-msvc": "4.18.0", + "@rollup/rollup-win32-x64-msvc": "4.18.0", + "fsevents": "~2.3.2" + } + }, + "node_modules/run-async": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/run-async/-/run-async-3.0.0.tgz", + "integrity": "sha512-540WwVDOMxA6dN6We19EcT9sc3hkXPw5mzRNGM3FkdN/vtE9NFvj5lFAPNwUDmJjXidm3v7TC1cTE7t17Ulm1Q==", + "dev": true, + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "queue-microtask": "^1.2.2" + } + }, + "node_modules/rxjs": { + "version": "7.8.1", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.1.tgz", + "integrity": "sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==", + "dependencies": { + "tslib": "^2.1.0" + } + }, + "node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "dev": true + }, + "node_modules/safevalues": { + "version": "0.3.4", + "resolved": "https://registry.npmjs.org/safevalues/-/safevalues-0.3.4.tgz", + "integrity": "sha512-LRneZZRXNgjzwG4bDQdOTSbze3fHm1EAKN/8bePxnlEZiBmkYEDggaHbuvHI9/hoqHbGfsEA7tWS9GhYHZBBsw==" + }, + "node_modules/sass": { + "version": "1.71.1", + "resolved": "https://registry.npmjs.org/sass/-/sass-1.71.1.tgz", + "integrity": "sha512-wovtnV2PxzteLlfNzbgm1tFXPLoZILYAMJtvoXXkD7/+1uP41eKkIt1ypWq5/q2uT94qHjXehEYfmjKOvjL9sg==", + "dev": true, + "dependencies": { + "chokidar": ">=3.0.0 <4.0.0", + "immutable": "^4.0.0", + "source-map-js": ">=0.6.2 <2.0.0" + }, + "bin": { + "sass": "sass.js" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/sass-loader": { + "version": "14.1.1", + "resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-14.1.1.tgz", + "integrity": "sha512-QX8AasDg75monlybel38BZ49JP5Z+uSKfKwF2rO7S74BywaRmGQMUBw9dtkS+ekyM/QnP+NOrRYq8ABMZ9G8jw==", + "dev": true, + "dependencies": { + "neo-async": "^2.6.2" + }, + "engines": { + "node": ">= 18.12.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "@rspack/core": "0.x || 1.x", + "node-sass": "^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0 || ^9.0.0", + "sass": "^1.3.0", + "sass-embedded": "*", + "webpack": "^5.0.0" + }, + "peerDependenciesMeta": { + "@rspack/core": { + "optional": true + }, + "node-sass": { + "optional": true + }, + "sass": { + "optional": true + }, + "sass-embedded": { + "optional": true + }, + "webpack": { + "optional": true + } + } + }, + "node_modules/sax": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.4.1.tgz", + "integrity": "sha512-+aWOz7yVScEGoKNd4PA10LZ8sk0A/z5+nXQG5giUO5rprX9jgYsTdov9qCchZiPIZezbZH+jRut8nPodFAX4Jg==", + "dev": true, + "optional": true + }, + "node_modules/schema-utils": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.2.0.tgz", + "integrity": "sha512-L0jRsrPpjdckP3oPug3/VxNKt2trR8TcabrM6FOAAlvC/9Phcmm+cuAgTlxBqdBR1WJx7Naj9WHw+aOmheSVbw==", + "dev": true, + "dependencies": { + "@types/json-schema": "^7.0.9", + "ajv": "^8.9.0", + "ajv-formats": "^2.1.1", + "ajv-keywords": "^5.1.0" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/select-hose": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/select-hose/-/select-hose-2.0.0.tgz", + "integrity": "sha512-mEugaLK+YfkijB4fx0e6kImuJdCIt2LxCRcbEYPqRGCs4F2ogyfZU5IAZRdjCP8JPq2AtdNoC/Dux63d9Kiryg==", + "dev": true + }, + "node_modules/selfsigned": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-2.4.1.tgz", + "integrity": "sha512-th5B4L2U+eGLq1TVh7zNRGBapioSORUeymIydxgFpwww9d2qyKvtuPU2jJuHvYAwwqi2Y596QBL3eEqcPEYL8Q==", + "dev": true, + "dependencies": { + "@types/node-forge": "^1.3.0", + "node-forge": "^1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/semver": { + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", + "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/semver/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/semver/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" + }, + "node_modules/send": { + "version": "0.18.0", + "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz", + "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==", + "dev": true, + "dependencies": { + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "fresh": "0.5.2", + "http-errors": "2.0.0", + "mime": "1.6.0", + "ms": "2.1.3", + "on-finished": "2.4.1", + "range-parser": "~1.2.1", + "statuses": "2.0.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/send/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/send/node_modules/debug/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + }, + "node_modules/send/node_modules/mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + "dev": true, + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/send/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true + }, + "node_modules/send/node_modules/statuses": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/serialize-javascript": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.2.tgz", + "integrity": "sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==", + "dev": true, + "dependencies": { + "randombytes": "^2.1.0" + } + }, + "node_modules/serve-index": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.9.1.tgz", + "integrity": "sha512-pXHfKNP4qujrtteMrSBb0rc8HJ9Ms/GrXwcUtUtD5s4ewDJI8bT3Cz2zTVRMKtri49pLx2e0Ya8ziP5Ya2pZZw==", + "dev": true, + "dependencies": { + "accepts": "~1.3.4", + "batch": "0.6.1", + "debug": "2.6.9", + "escape-html": "~1.0.3", + "http-errors": "~1.6.2", + "mime-types": "~2.1.17", + "parseurl": "~1.3.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/serve-index/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/serve-index/node_modules/depd": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/serve-index/node_modules/http-errors": { + "version": "1.6.3", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", + "integrity": "sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A==", + "dev": true, + "dependencies": { + "depd": "~1.1.2", + "inherits": "2.0.3", + "setprototypeof": "1.1.0", + "statuses": ">= 1.4.0 < 2" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/serve-index/node_modules/inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==", + "dev": true + }, + "node_modules/serve-index/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + }, + "node_modules/serve-index/node_modules/setprototypeof": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", + "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==", + "dev": true + }, + "node_modules/serve-static": { + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz", + "integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==", + "dev": true, + "dependencies": { + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "parseurl": "~1.3.3", + "send": "0.18.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/set-blocking": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==", + "dev": true + }, + "node_modules/set-function-length": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", + "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", + "dev": true, + "dependencies": { + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/setprototypeof": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", + "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", + "dev": true + }, + "node_modules/shallow-clone": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz", + "integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==", + "dev": true, + "dependencies": { + "kind-of": "^6.0.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/shell-quote": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.8.1.tgz", + "integrity": "sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.6.tgz", + "integrity": "sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.4", + "object-inspect": "^1.13.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "dev": true + }, + "node_modules/sigstore": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/sigstore/-/sigstore-2.3.1.tgz", + "integrity": "sha512-8G+/XDU8wNsJOQS5ysDVO0Etg9/2uA5gR9l4ZwijjlwxBcrU6RPfwi2+jJmbP+Ap1Hlp/nVAaEO4Fj22/SL2gQ==", + "dev": true, + "dependencies": { + "@sigstore/bundle": "^2.3.2", + "@sigstore/core": "^1.0.0", + "@sigstore/protobuf-specs": "^0.3.2", + "@sigstore/sign": "^2.3.2", + "@sigstore/tuf": "^2.3.4", + "@sigstore/verify": "^1.2.1" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/slash": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-4.0.0.tgz", + "integrity": "sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/smart-buffer": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz", + "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==", + "dev": true, + "engines": { + "node": ">= 6.0.0", + "npm": ">= 3.0.0" + } + }, + "node_modules/socket.io": { + "version": "4.7.5", + "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-4.7.5.tgz", + "integrity": "sha512-DmeAkF6cwM9jSfmp6Dr/5/mfMwb5Z5qRrSXLpo3Fq5SqyU8CMF15jIN4ZhfSwu35ksM1qmHZDQ/DK5XTccSTvA==", + "dev": true, + "dependencies": { + "accepts": "~1.3.4", + "base64id": "~2.0.0", + "cors": "~2.8.5", + "debug": "~4.3.2", + "engine.io": "~6.5.2", + "socket.io-adapter": "~2.5.2", + "socket.io-parser": "~4.2.4" + }, + "engines": { + "node": ">=10.2.0" + } + }, + "node_modules/socket.io-adapter": { + "version": "2.5.5", + "resolved": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-2.5.5.tgz", + "integrity": "sha512-eLDQas5dzPgOWCk9GuuJC2lBqItuhKI4uxGgo9aIV7MYbk2h9Q6uULEh8WBzThoI7l+qU9Ast9fVUmkqPP9wYg==", + "dev": true, + "dependencies": { + "debug": "~4.3.4", + "ws": "~8.17.1" + } + }, + "node_modules/socket.io-parser": { + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-4.2.4.tgz", + "integrity": "sha512-/GbIKmo8ioc+NIWIhwdecY0ge+qVBSMdgxGygevmdHj24bsfgtCmcUUcQ5ZzcylGFHsN3k4HB4Cgkl96KVnuew==", + "dev": true, + "dependencies": { + "@socket.io/component-emitter": "~3.1.0", + "debug": "~4.3.1" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/sockjs": { + "version": "0.3.24", + "resolved": "https://registry.npmjs.org/sockjs/-/sockjs-0.3.24.tgz", + "integrity": "sha512-GJgLTZ7vYb/JtPSSZ10hsOYIvEYsjbNU+zPdIHcUaWVNUEPivzxku31865sSSud0Da0W4lEeOPlmw93zLQchuQ==", + "dev": true, + "dependencies": { + "faye-websocket": "^0.11.3", + "uuid": "^8.3.2", + "websocket-driver": "^0.7.4" + } + }, + "node_modules/sockjs/node_modules/uuid": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", + "dev": true, + "bin": { + "uuid": "dist/bin/uuid" + } + }, + "node_modules/socks": { + "version": "2.8.3", + "resolved": "https://registry.npmjs.org/socks/-/socks-2.8.3.tgz", + "integrity": "sha512-l5x7VUUWbjVFbafGLxPWkYsHIhEvmF85tbIeFZWc8ZPtoMyybuEhL7Jye/ooC4/d48FgOjSJXgsF/AJPYCW8Zw==", + "dev": true, + "dependencies": { + "ip-address": "^9.0.5", + "smart-buffer": "^4.2.0" + }, + "engines": { + "node": ">= 10.0.0", + "npm": ">= 3.0.0" + } + }, + "node_modules/socks-proxy-agent": { + "version": "8.0.4", + "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-8.0.4.tgz", + "integrity": "sha512-GNAq/eg8Udq2x0eNiFkr9gRg5bA7PXEWagQdeRX4cPSG+X/8V38v637gim9bjFptMk1QWsCTr0ttrJEiXbNnRw==", + "dev": true, + "dependencies": { + "agent-base": "^7.1.1", + "debug": "^4.3.4", + "socks": "^2.8.3" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/source-map": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz", + "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/source-map-js": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.0.tgz", + "integrity": "sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-loader": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/source-map-loader/-/source-map-loader-5.0.0.tgz", + "integrity": "sha512-k2Dur7CbSLcAH73sBcIkV5xjPV4SzqO1NJ7+XaQl8if3VODDUj3FNchNGpqgJSKbvUfJuhVdv8K2Eu8/TNl2eA==", + "dev": true, + "dependencies": { + "iconv-lite": "^0.6.3", + "source-map-js": "^1.0.2" + }, + "engines": { + "node": ">= 18.12.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.72.1" + } + }, + "node_modules/source-map-loader/node_modules/iconv-lite": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "dev": true, + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-support": { + "version": "0.5.21", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", + "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", + "dev": true, + "dependencies": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "node_modules/source-map-support/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/spawn-command": { + "version": "0.0.2-1", + "resolved": "https://registry.npmjs.org/spawn-command/-/spawn-command-0.0.2-1.tgz", + "integrity": "sha512-n98l9E2RMSJ9ON1AKisHzz7V42VDiBQGY6PB1BwRglz99wpVsSuGzQ+jOi6lFXBGVTCrRpltvjm+/XA+tpeJrg==", + "dev": true + }, + "node_modules/spdx-correct": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.2.0.tgz", + "integrity": "sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==", + "dev": true, + "dependencies": { + "spdx-expression-parse": "^3.0.0", + "spdx-license-ids": "^3.0.0" + } + }, + "node_modules/spdx-exceptions": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.5.0.tgz", + "integrity": "sha512-PiU42r+xO4UbUS1buo3LPJkjlO7430Xn5SVAhdpzzsPHsjbYVflnnFdATgabnLude+Cqu25p6N+g2lw/PFsa4w==", + "dev": true + }, + "node_modules/spdx-expression-parse": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", + "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", + "dev": true, + "dependencies": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + }, + "node_modules/spdx-license-ids": { + "version": "3.0.18", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.18.tgz", + "integrity": "sha512-xxRs31BqRYHwiMzudOrpSiHtZ8i/GeionCBDSilhYRj+9gIcI8wCZTlXZKu9vZIVqViP3dcp9qE5G6AlIaD+TQ==", + "dev": true + }, + "node_modules/spdy": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/spdy/-/spdy-4.0.2.tgz", + "integrity": "sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA==", + "dev": true, + "dependencies": { + "debug": "^4.1.0", + "handle-thing": "^2.0.0", + "http-deceiver": "^1.2.7", + "select-hose": "^2.0.0", + "spdy-transport": "^3.0.0" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/spdy-transport": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/spdy-transport/-/spdy-transport-3.0.0.tgz", + "integrity": "sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw==", + "dev": true, + "dependencies": { + "debug": "^4.1.0", + "detect-node": "^2.0.4", + "hpack.js": "^2.1.6", + "obuf": "^1.1.2", + "readable-stream": "^3.0.6", + "wbuf": "^1.7.3" + } + }, + "node_modules/sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", + "dev": true + }, + "node_modules/ssri": { + "version": "10.0.6", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-10.0.6.tgz", + "integrity": "sha512-MGrFH9Z4NP9Iyhqn16sDtBpRRNJ0Y2hNa6D65h736fVSaPCHr4DM4sWUNvVaSuC+0OBGhwsrydQwmgfg5LncqQ==", + "dev": true, + "dependencies": { + "minipass": "^7.0.3" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/statuses": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", + "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/streamroller": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/streamroller/-/streamroller-3.1.5.tgz", + "integrity": "sha512-KFxaM7XT+irxvdqSP1LGLgNWbYN7ay5owZ3r/8t77p+EtSUAfUgtl7be3xtqtOmGUl9K9YPO2ca8133RlTjvKw==", + "dev": true, + "dependencies": { + "date-format": "^4.0.14", + "debug": "^4.3.4", + "fs-extra": "^8.1.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/streamroller/node_modules/fs-extra": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", + "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + }, + "engines": { + "node": ">=6 <7 || >=8" + } + }, + "node_modules/streamroller/node_modules/jsonfile": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", + "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==", + "dev": true, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/streamroller/node_modules/universalify": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", + "dev": true, + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "dev": true, + "dependencies": { + "safe-buffer": "~5.2.0" + } + }, + "node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/string-width-cjs": { + "name": "string-width", + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-ansi-cjs": { + "name": "strip-ansi", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-final-newline": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", + "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/symbol-observable": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-4.0.0.tgz", + "integrity": "sha512-b19dMThMV4HVFynSAM1++gBHAbk2Tc/osgLIBZMKsyqh34jb2e8Os7T6ZW/Bt3pJFdBTd2JwAnAAEQV7rSNvcQ==", + "dev": true, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/tapable": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", + "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/tar": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/tar/-/tar-6.2.1.tgz", + "integrity": "sha512-DZ4yORTwrbTj/7MZYq2w+/ZFdI6OZ/f9SFHR+71gIVUZhOQPHzVCLpvRnPgyaMpfWxxk/4ONva3GQSyNIKRv6A==", + "dev": true, + "dependencies": { + "chownr": "^2.0.0", + "fs-minipass": "^2.0.0", + "minipass": "^5.0.0", + "minizlib": "^2.1.1", + "mkdirp": "^1.0.3", + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/tar/node_modules/fs-minipass": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz", + "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", + "dev": true, + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/tar/node_modules/fs-minipass/node_modules/minipass": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/tar/node_modules/minipass": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz", + "integrity": "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/tar/node_modules/mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "dev": true, + "bin": { + "mkdirp": "bin/cmd.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/tar/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, + "node_modules/terser": { + "version": "5.29.1", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.29.1.tgz", + "integrity": "sha512-lZQ/fyaIGxsbGxApKmoPTODIzELy3++mXhS5hOqaAWZjQtpq/hFHAc+rm29NND1rYRxRWKcjuARNwULNXa5RtQ==", + "dev": true, + "dependencies": { + "@jridgewell/source-map": "^0.3.3", + "acorn": "^8.8.2", + "commander": "^2.20.0", + "source-map-support": "~0.5.20" + }, + "bin": { + "terser": "bin/terser" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/terser-webpack-plugin": { + "version": "5.3.10", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.10.tgz", + "integrity": "sha512-BKFPWlPDndPs+NGGCr1U59t0XScL5317Y0UReNrHaw9/FwhPENlq6bfgs+4yPfyP51vqC1bQ4rp1EfXW5ZSH9w==", + "dev": true, + "dependencies": { + "@jridgewell/trace-mapping": "^0.3.20", + "jest-worker": "^27.4.5", + "schema-utils": "^3.1.1", + "serialize-javascript": "^6.0.1", + "terser": "^5.26.0" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.1.0" + }, + "peerDependenciesMeta": { + "@swc/core": { + "optional": true + }, + "esbuild": { + "optional": true + }, + "uglify-js": { + "optional": true + } + } + }, + "node_modules/terser-webpack-plugin/node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/terser-webpack-plugin/node_modules/ajv-keywords": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", + "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", + "dev": true, + "peerDependencies": { + "ajv": "^6.9.1" + } + }, + "node_modules/terser-webpack-plugin/node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "node_modules/terser-webpack-plugin/node_modules/schema-utils": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz", + "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==", + "dev": true, + "dependencies": { + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/terser/node_modules/commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "dev": true + }, + "node_modules/test-exclude": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", + "integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==", + "dev": true, + "dependencies": { + "@istanbuljs/schema": "^0.1.2", + "glob": "^7.1.4", + "minimatch": "^3.0.4" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/through": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==", + "dev": true + }, + "node_modules/thunky": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/thunky/-/thunky-1.1.0.tgz", + "integrity": "sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==", + "dev": true + }, + "node_modules/tmp": { + "version": "0.0.33", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", + "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", + "dev": true, + "dependencies": { + "os-tmpdir": "~1.0.2" + }, + "engines": { + "node": ">=0.6.0" + } + }, + "node_modules/to-fast-properties": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", + "engines": { + "node": ">=4" + } + }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/toidentifier": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", + "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", + "dev": true, + "engines": { + "node": ">=0.6" + } + }, + "node_modules/tr46": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==", + "dev": true + }, + "node_modules/tree-kill": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.2.tgz", + "integrity": "sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==", + "dev": true, + "bin": { + "tree-kill": "cli.js" + } + }, + "node_modules/ts-morph": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/ts-morph/-/ts-morph-6.0.3.tgz", + "integrity": "sha512-Pq4AQvwIZoEgnZiYjMcUbuQi8SrLrFGnRM3gwBaIstPg7cFqknt1Hm1q8od9ng37y0bErHASG6tyWlx/yXPMuQ==", + "dev": true, + "dependencies": { + "@dsherret/to-absolute-glob": "^2.0.2", + "@ts-morph/common": "~0.2.2", + "code-block-writer": "^10.1.0" + } + }, + "node_modules/tslib": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.3.tgz", + "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==" + }, + "node_modules/tuf-js": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/tuf-js/-/tuf-js-2.2.1.tgz", + "integrity": "sha512-GwIJau9XaA8nLVbUXsN3IlFi7WmQ48gBUrl3FTkkL/XLu/POhBzfmX9hd33FNMX1qAsfl6ozO1iMmW9NC8YniA==", + "dev": true, + "dependencies": { + "@tufjs/models": "2.0.1", + "debug": "^4.3.4", + "make-fetch-happen": "^13.0.1" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/type-fest": { + "version": "0.21.3", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", + "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/type-is": { + "version": "1.6.18", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", + "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", + "dev": true, + "dependencies": { + "media-typer": "0.3.0", + "mime-types": "~2.1.24" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/typed-assert": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/typed-assert/-/typed-assert-1.0.9.tgz", + "integrity": "sha512-KNNZtayBCtmnNmbo5mG47p1XsCyrx6iVqomjcZnec/1Y5GGARaxPs6r49RnSPeUP3YjNYiU9sQHAtY4BBvnZwg==", + "dev": true + }, + "node_modules/typescript": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.2.2.tgz", + "integrity": "sha512-mI4WrpHsbCIcwT9cF4FZvr80QUeKvsUsUvKDoR+X/7XHQH98xYD8YHZg7ANtz2GtZt/CBq2QJ0thkGJMHfqc1w==", + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" + } + }, + "node_modules/ua-parser-js": { + "version": "0.7.38", + "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.38.tgz", + "integrity": "sha512-fYmIy7fKTSFAhG3fuPlubeGaMoAd6r0rSnfEsO5nEY55i26KSLt9EH7PLQiiqPUhNqYIJvSkTy1oArIcXAbPbA==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/ua-parser-js" + }, + { + "type": "paypal", + "url": "https://paypal.me/faisalman" + }, + { + "type": "github", + "url": "https://github.com/sponsors/faisalman" + } + ], + "engines": { + "node": "*" + } + }, + "node_modules/uid": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/uid/-/uid-2.0.2.tgz", + "integrity": "sha512-u3xV3X7uzvi5b1MncmZo3i2Aw222Zk1keqLA1YkHldREkAhAqi65wuPfe7lHx8H/Wzy+8CE7S7uS3jekIM5s8g==", + "dev": true, + "dependencies": { + "@lukeed/csprng": "^1.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/unc-path-regex": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/unc-path-regex/-/unc-path-regex-0.1.2.tgz", + "integrity": "sha512-eXL4nmJT7oCpkZsHZUOJo8hcX3GbsiDOa0Qu9F646fi8dT3XuSVopVqAcEiVzSKKH7UoDti23wNX3qGFxcW5Qg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/undici": { + "version": "6.11.1", + "resolved": "https://registry.npmjs.org/undici/-/undici-6.11.1.tgz", + "integrity": "sha512-KyhzaLJnV1qa3BSHdj4AZ2ndqI0QWPxYzaIOio0WzcEJB9gvuysprJSLtpvc2D9mhR9jPDUk7xlJlZbH2KR5iw==", + "dev": true, + "engines": { + "node": ">=18.0" + } + }, + "node_modules/undici-types": { + "version": "5.26.5", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", + "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==" + }, + "node_modules/unicode-canonical-property-names-ecmascript": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz", + "integrity": "sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/unicode-match-property-ecmascript": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz", + "integrity": "sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==", + "dev": true, + "dependencies": { + "unicode-canonical-property-names-ecmascript": "^2.0.0", + "unicode-property-aliases-ecmascript": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/unicode-match-property-value-ecmascript": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.1.0.tgz", + "integrity": "sha512-qxkjQt6qjg/mYscYMC0XKRn3Rh0wFPlfxB0xkt9CfyTvpX1Ra0+rAmdX2QyAobptSEvuy4RtpPRui6XkV+8wjA==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/unicode-property-aliases-ecmascript": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.1.0.tgz", + "integrity": "sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/unique-filename": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-3.0.0.tgz", + "integrity": "sha512-afXhuC55wkAmZ0P18QsVE6kp8JaxrEokN2HGIoIVv2ijHQd419H0+6EigAFcIzXeMIkcIkNBpB3L/DXB3cTS/g==", + "dev": true, + "dependencies": { + "unique-slug": "^4.0.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/unique-slug": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-4.0.0.tgz", + "integrity": "sha512-WrcA6AyEfqDX5bWige/4NQfPZMtASNVxdmWR76WESYQVAACSgWcR6e9i0mofqqBxYFtL4oAxPIptY73/0YE1DQ==", + "dev": true, + "dependencies": { + "imurmurhash": "^0.1.4" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/universalify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", + "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", + "dev": true, + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/update-browserslist-db": { + "version": "1.0.16", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.16.tgz", + "integrity": "sha512-KVbTxlBYlckhF5wgfyZXTWnMn7MMZjMu9XG8bPlliUOP9ThaF4QnhP8qrjrH7DRzHfSk0oQv1wToW+iA5GajEQ==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "escalade": "^3.1.2", + "picocolors": "^1.0.1" + }, + "bin": { + "update-browserslist-db": "cli.js" + }, + "peerDependencies": { + "browserslist": ">= 4.21.0" + } + }, + "node_modules/uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/uri-js/node_modules/punycode": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", + "dev": true + }, + "node_modules/utils-merge": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", + "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==", + "dev": true, + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/uuid": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz", + "integrity": "sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==", + "funding": [ + "https://github.com/sponsors/broofa", + "https://github.com/sponsors/ctavan" + ], + "bin": { + "uuid": "dist/bin/uuid" + } + }, + "node_modules/validate-npm-package-license": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", + "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", + "dev": true, + "dependencies": { + "spdx-correct": "^3.0.0", + "spdx-expression-parse": "^3.0.0" + } + }, + "node_modules/validate-npm-package-name": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/validate-npm-package-name/-/validate-npm-package-name-5.0.1.tgz", + "integrity": "sha512-OljLrQ9SQdOUqTaQxqL5dEfZWrXExyyWsozYlAWFawPVNuD83igl7uJD2RTkNMbniIYgt8l81eCJGIdQF7avLQ==", + "dev": true, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/vary": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/vite": { + "version": "5.1.7", + "resolved": "https://registry.npmjs.org/vite/-/vite-5.1.7.tgz", + "integrity": "sha512-sgnEEFTZYMui/sTlH1/XEnVNHMujOahPLGMxn1+5sIT45Xjng1Ec1K78jRP15dSmVgg5WBin9yO81j3o9OxofA==", + "dev": true, + "dependencies": { + "esbuild": "^0.19.3", + "postcss": "^8.4.35", + "rollup": "^4.2.0" + }, + "bin": { + "vite": "bin/vite.js" + }, + "engines": { + "node": "^18.0.0 || >=20.0.0" + }, + "funding": { + "url": "https://github.com/vitejs/vite?sponsor=1" + }, + "optionalDependencies": { + "fsevents": "~2.3.3" + }, + "peerDependencies": { + "@types/node": "^18.0.0 || >=20.0.0", + "less": "*", + "lightningcss": "^1.21.0", + "sass": "*", + "stylus": "*", + "sugarss": "*", + "terser": "^5.4.0" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + }, + "less": { + "optional": true + }, + "lightningcss": { + "optional": true + }, + "sass": { + "optional": true + }, + "stylus": { + "optional": true + }, + "sugarss": { + "optional": true + }, + "terser": { + "optional": true + } + } + }, + "node_modules/vite/node_modules/@esbuild/aix-ppc64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.19.12.tgz", + "integrity": "sha512-bmoCYyWdEL3wDQIVbcyzRyeKLgk2WtWLTWz1ZIAZF/EGbNOwSA6ew3PftJ1PqMiOOGu0OyFMzG53L0zqIpPeNA==", + "cpu": [ + "ppc64" + ], + "dev": true, + "optional": true, + "os": [ + "aix" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/android-arm": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.19.12.tgz", + "integrity": "sha512-qg/Lj1mu3CdQlDEEiWrlC4eaPZ1KztwGJ9B6J+/6G+/4ewxJg7gqj8eVYWvao1bXrqGiW2rsBZFSX3q2lcW05w==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/android-arm64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.19.12.tgz", + "integrity": "sha512-P0UVNGIienjZv3f5zq0DP3Nt2IE/3plFzuaS96vihvD0Hd6H/q4WXUGpCxD/E8YrSXfNyRPbpTq+T8ZQioSuPA==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/android-x64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.19.12.tgz", + "integrity": "sha512-3k7ZoUW6Q6YqhdhIaq/WZ7HwBpnFBlW905Fa4s4qWJyiNOgT1dOqDiVAQFwBH7gBRZr17gLrlFCRzF6jFh7Kew==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/darwin-arm64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.19.12.tgz", + "integrity": "sha512-B6IeSgZgtEzGC42jsI+YYu9Z3HKRxp8ZT3cqhvliEHovq8HSX2YX8lNocDn79gCKJXOSaEot9MVYky7AKjCs8g==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/darwin-x64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.19.12.tgz", + "integrity": "sha512-hKoVkKzFiToTgn+41qGhsUJXFlIjxI/jSYeZf3ugemDYZldIXIxhvwN6erJGlX4t5h417iFuheZ7l+YVn05N3A==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/freebsd-arm64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.19.12.tgz", + "integrity": "sha512-4aRvFIXmwAcDBw9AueDQ2YnGmz5L6obe5kmPT8Vd+/+x/JMVKCgdcRwH6APrbpNXsPz+K653Qg8HB/oXvXVukA==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/freebsd-x64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.19.12.tgz", + "integrity": "sha512-EYoXZ4d8xtBoVN7CEwWY2IN4ho76xjYXqSXMNccFSx2lgqOG/1TBPW0yPx1bJZk94qu3tX0fycJeeQsKovA8gg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/linux-arm": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.19.12.tgz", + "integrity": "sha512-J5jPms//KhSNv+LO1S1TX1UWp1ucM6N6XuL6ITdKWElCu8wXP72l9MM0zDTzzeikVyqFE6U8YAV9/tFyj0ti+w==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/linux-arm64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.19.12.tgz", + "integrity": "sha512-EoTjyYyLuVPfdPLsGVVVC8a0p1BFFvtpQDB/YLEhaXyf/5bczaGeN15QkR+O4S5LeJ92Tqotve7i1jn35qwvdA==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/linux-ia32": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.19.12.tgz", + "integrity": "sha512-Thsa42rrP1+UIGaWz47uydHSBOgTUnwBwNq59khgIwktK6x60Hivfbux9iNR0eHCHzOLjLMLfUMLCypBkZXMHA==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/linux-loong64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.19.12.tgz", + "integrity": "sha512-LiXdXA0s3IqRRjm6rV6XaWATScKAXjI4R4LoDlvO7+yQqFdlr1Bax62sRwkVvRIrwXxvtYEHHI4dm50jAXkuAA==", + "cpu": [ + "loong64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/linux-mips64el": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.19.12.tgz", + "integrity": "sha512-fEnAuj5VGTanfJ07ff0gOA6IPsvrVHLVb6Lyd1g2/ed67oU1eFzL0r9WL7ZzscD+/N6i3dWumGE1Un4f7Amf+w==", + "cpu": [ + "mips64el" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/linux-ppc64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.19.12.tgz", + "integrity": "sha512-nYJA2/QPimDQOh1rKWedNOe3Gfc8PabU7HT3iXWtNUbRzXS9+vgB0Fjaqr//XNbd82mCxHzik2qotuI89cfixg==", + "cpu": [ + "ppc64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/linux-riscv64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.19.12.tgz", + "integrity": "sha512-2MueBrlPQCw5dVJJpQdUYgeqIzDQgw3QtiAHUC4RBz9FXPrskyyU3VI1hw7C0BSKB9OduwSJ79FTCqtGMWqJHg==", + "cpu": [ + "riscv64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/linux-s390x": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.19.12.tgz", + "integrity": "sha512-+Pil1Nv3Umes4m3AZKqA2anfhJiVmNCYkPchwFJNEJN5QxmTs1uzyy4TvmDrCRNT2ApwSari7ZIgrPeUx4UZDg==", + "cpu": [ + "s390x" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/linux-x64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.19.12.tgz", + "integrity": "sha512-B71g1QpxfwBvNrfyJdVDexenDIt1CiDN1TIXLbhOw0KhJzE78KIFGX6OJ9MrtC0oOqMWf+0xop4qEU8JrJTwCg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/netbsd-x64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.19.12.tgz", + "integrity": "sha512-3ltjQ7n1owJgFbuC61Oj++XhtzmymoCihNFgT84UAmJnxJfm4sYCiSLTXZtE00VWYpPMYc+ZQmB6xbSdVh0JWA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/openbsd-x64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.19.12.tgz", + "integrity": "sha512-RbrfTB9SWsr0kWmb9srfF+L933uMDdu9BIzdA7os2t0TXhCRjrQyCeOt6wVxr79CKD4c+p+YhCj31HBkYcXebw==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/sunos-x64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.19.12.tgz", + "integrity": "sha512-HKjJwRrW8uWtCQnQOz9qcU3mUZhTUQvi56Q8DPTLLB+DawoiQdjsYq+j+D3s9I8VFtDr+F9CjgXKKC4ss89IeA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/win32-arm64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.19.12.tgz", + "integrity": "sha512-URgtR1dJnmGvX864pn1B2YUYNzjmXkuJOIqG2HdU62MVS4EHpU2946OZoTMnRUHklGtJdJZ33QfzdjGACXhn1A==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/win32-ia32": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.19.12.tgz", + "integrity": "sha512-+ZOE6pUkMOJfmxmBZElNOx72NKpIa/HFOMGzu8fqzQJ5kgf6aTGrcJaFsNiVMH4JKpMipyK+7k0n2UXN7a8YKQ==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/win32-x64": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.19.12.tgz", + "integrity": "sha512-T1QyPSDCyMXaO3pzBkF96E8xMkiRYbUEZADd29SyPGabqxMViNoii+NcK7eWJAEoU6RZyEm5lVSIjTmcdoB9HA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/esbuild": { + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.19.12.tgz", + "integrity": "sha512-aARqgq8roFBj054KvQr5f1sFu0D65G+miZRCuJyJ0G13Zwx7vRar5Zhn2tkQNzIXcBrNVsv/8stehpj+GAjgbg==", + "dev": true, + "hasInstallScript": true, + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=12" + }, + "optionalDependencies": { + "@esbuild/aix-ppc64": "0.19.12", + "@esbuild/android-arm": "0.19.12", + "@esbuild/android-arm64": "0.19.12", + "@esbuild/android-x64": "0.19.12", + "@esbuild/darwin-arm64": "0.19.12", + "@esbuild/darwin-x64": "0.19.12", + "@esbuild/freebsd-arm64": "0.19.12", + "@esbuild/freebsd-x64": "0.19.12", + "@esbuild/linux-arm": "0.19.12", + "@esbuild/linux-arm64": "0.19.12", + "@esbuild/linux-ia32": "0.19.12", + "@esbuild/linux-loong64": "0.19.12", + "@esbuild/linux-mips64el": "0.19.12", + "@esbuild/linux-ppc64": "0.19.12", + "@esbuild/linux-riscv64": "0.19.12", + "@esbuild/linux-s390x": "0.19.12", + "@esbuild/linux-x64": "0.19.12", + "@esbuild/netbsd-x64": "0.19.12", + "@esbuild/openbsd-x64": "0.19.12", + "@esbuild/sunos-x64": "0.19.12", + "@esbuild/win32-arm64": "0.19.12", + "@esbuild/win32-ia32": "0.19.12", + "@esbuild/win32-x64": "0.19.12" + } + }, + "node_modules/void-elements": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/void-elements/-/void-elements-2.0.1.tgz", + "integrity": "sha512-qZKX4RnBzH2ugr8Lxa7x+0V6XD9Sb/ouARtiasEQCHB1EVU4NXtmHsDDrx1dO4ne5fc3J6EW05BP1Dl0z0iung==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/watchpack": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.0.tgz", + "integrity": "sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg==", + "dev": true, + "dependencies": { + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.1.2" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/wbuf": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/wbuf/-/wbuf-1.7.3.tgz", + "integrity": "sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA==", + "dev": true, + "dependencies": { + "minimalistic-assert": "^1.0.0" + } + }, + "node_modules/wcwidth": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz", + "integrity": "sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==", + "dev": true, + "dependencies": { + "defaults": "^1.0.3" + } + }, + "node_modules/webidl-conversions": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", + "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==", + "dev": true + }, + "node_modules/webpack": { + "version": "5.90.3", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.90.3.tgz", + "integrity": "sha512-h6uDYlWCctQRuXBs1oYpVe6sFcWedl0dpcVaTf/YF67J9bKvwJajFulMVSYKHrksMB3I/pIagRzDxwxkebuzKA==", + "dev": true, + "dependencies": { + "@types/eslint-scope": "^3.7.3", + "@types/estree": "^1.0.5", + "@webassemblyjs/ast": "^1.11.5", + "@webassemblyjs/wasm-edit": "^1.11.5", + "@webassemblyjs/wasm-parser": "^1.11.5", + "acorn": "^8.7.1", + "acorn-import-assertions": "^1.9.0", + "browserslist": "^4.21.10", + "chrome-trace-event": "^1.0.2", + "enhanced-resolve": "^5.15.0", + "es-module-lexer": "^1.2.1", + "eslint-scope": "5.1.1", + "events": "^3.2.0", + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.2.9", + "json-parse-even-better-errors": "^2.3.1", + "loader-runner": "^4.2.0", + "mime-types": "^2.1.27", + "neo-async": "^2.6.2", + "schema-utils": "^3.2.0", + "tapable": "^2.1.1", + "terser-webpack-plugin": "^5.3.10", + "watchpack": "^2.4.0", + "webpack-sources": "^3.2.3" + }, + "bin": { + "webpack": "bin/webpack.js" + }, + "engines": { + "node": ">=10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependenciesMeta": { + "webpack-cli": { + "optional": true + } + } + }, + "node_modules/webpack-dev-middleware": { + "version": "6.1.2", + "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-6.1.2.tgz", + "integrity": "sha512-Wu+EHmX326YPYUpQLKmKbTyZZJIB8/n6R09pTmB03kJmnMsVPTo9COzHZFr01txwaCAuZvfBJE4ZCHRcKs5JaQ==", + "dev": true, + "dependencies": { + "colorette": "^2.0.10", + "memfs": "^3.4.12", + "mime-types": "^2.1.31", + "range-parser": "^1.2.1", + "schema-utils": "^4.0.0" + }, + "engines": { + "node": ">= 14.15.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.0.0" + }, + "peerDependenciesMeta": { + "webpack": { + "optional": true + } + } + }, + "node_modules/webpack-dev-server": { + "version": "4.15.1", + "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-4.15.1.tgz", + "integrity": "sha512-5hbAst3h3C3L8w6W4P96L5vaV0PxSmJhxZvWKYIdgxOQm8pNZ5dEOmmSLBVpP85ReeyRt6AS1QJNyo/oFFPeVA==", + "dev": true, + "dependencies": { + "@types/bonjour": "^3.5.9", + "@types/connect-history-api-fallback": "^1.3.5", + "@types/express": "^4.17.13", + "@types/serve-index": "^1.9.1", + "@types/serve-static": "^1.13.10", + "@types/sockjs": "^0.3.33", + "@types/ws": "^8.5.5", + "ansi-html-community": "^0.0.8", + "bonjour-service": "^1.0.11", + "chokidar": "^3.5.3", + "colorette": "^2.0.10", + "compression": "^1.7.4", + "connect-history-api-fallback": "^2.0.0", + "default-gateway": "^6.0.3", + "express": "^4.17.3", + "graceful-fs": "^4.2.6", + "html-entities": "^2.3.2", + "http-proxy-middleware": "^2.0.3", + "ipaddr.js": "^2.0.1", + "launch-editor": "^2.6.0", + "open": "^8.0.9", + "p-retry": "^4.5.0", + "rimraf": "^3.0.2", + "schema-utils": "^4.0.0", + "selfsigned": "^2.1.1", + "serve-index": "^1.9.1", + "sockjs": "^0.3.24", + "spdy": "^4.0.2", + "webpack-dev-middleware": "^5.3.1", + "ws": "^8.13.0" + }, + "bin": { + "webpack-dev-server": "bin/webpack-dev-server.js" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^4.37.0 || ^5.0.0" + }, + "peerDependenciesMeta": { + "webpack": { + "optional": true + }, + "webpack-cli": { + "optional": true + } + } + }, + "node_modules/webpack-dev-server/node_modules/webpack-dev-middleware": { + "version": "5.3.4", + "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-5.3.4.tgz", + "integrity": "sha512-BVdTqhhs+0IfoeAf7EoH5WE+exCmqGerHfDM0IL096Px60Tq2Mn9MAbnaGUe6HiMa41KMCYF19gyzZmBcq/o4Q==", + "dev": true, + "dependencies": { + "colorette": "^2.0.10", + "memfs": "^3.4.3", + "mime-types": "^2.1.31", + "range-parser": "^1.2.1", + "schema-utils": "^4.0.0" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^4.0.0 || ^5.0.0" + } + }, + "node_modules/webpack-merge": { + "version": "5.10.0", + "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-5.10.0.tgz", + "integrity": "sha512-+4zXKdx7UnO+1jaN4l2lHVD+mFvnlZQP/6ljaJVb4SZiwIKeUnrT5l0gkT8z+n4hKpC+jpOv6O9R+gLtag7pSA==", + "dev": true, + "dependencies": { + "clone-deep": "^4.0.1", + "flat": "^5.0.2", + "wildcard": "^2.0.0" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/webpack-sources": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz", + "integrity": "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==", + "dev": true, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/webpack-subresource-integrity": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/webpack-subresource-integrity/-/webpack-subresource-integrity-5.1.0.tgz", + "integrity": "sha512-sacXoX+xd8r4WKsy9MvH/q/vBtEHr86cpImXwyg74pFIpERKt6FmB8cXpeuh0ZLgclOlHI4Wcll7+R5L02xk9Q==", + "dev": true, + "dependencies": { + "typed-assert": "^1.0.8" + }, + "engines": { + "node": ">= 12" + }, + "peerDependencies": { + "html-webpack-plugin": ">= 5.0.0-beta.1 < 6", + "webpack": "^5.12.0" + }, + "peerDependenciesMeta": { + "html-webpack-plugin": { + "optional": true + } + } + }, + "node_modules/webpack/node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/webpack/node_modules/ajv-keywords": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", + "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", + "dev": true, + "peerDependencies": { + "ajv": "^6.9.1" + } + }, + "node_modules/webpack/node_modules/json-parse-even-better-errors": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", + "dev": true + }, + "node_modules/webpack/node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "node_modules/webpack/node_modules/schema-utils": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz", + "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==", + "dev": true, + "dependencies": { + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/websocket-driver": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.4.tgz", + "integrity": "sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg==", + "dev": true, + "dependencies": { + "http-parser-js": ">=0.5.1", + "safe-buffer": ">=5.1.0", + "websocket-extensions": ">=0.1.1" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/websocket-extensions": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.4.tgz", + "integrity": "sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==", + "dev": true, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/whatwg-url": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", + "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", + "dev": true, + "dependencies": { + "tr46": "~0.0.3", + "webidl-conversions": "^3.0.0" + } + }, + "node_modules/which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "which": "bin/which" + } + }, + "node_modules/which-module": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.1.tgz", + "integrity": "sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ==", + "dev": true + }, + "node_modules/wildcard": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/wildcard/-/wildcard-2.0.1.tgz", + "integrity": "sha512-CC1bOL87PIWSBhDcTrdeLo6eGT7mCFtrg0uIJtqJUFyK+eJnzl8A1niH56uu7KMa5XFrtiV+AQuHO3n7DsHnLQ==", + "dev": true + }, + "node_modules/wrap-ansi": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", + "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/wrap-ansi-cjs": { + "name": "wrap-ansi", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrap-ansi-cjs/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/wrap-ansi-cjs/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/wrap-ansi-cjs/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/wrap-ansi/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/wrap-ansi/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/wrap-ansi/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "dev": true + }, + "node_modules/ws": { + "version": "8.17.1", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.17.1.tgz", + "integrity": "sha512-6XQFvXTkbfUOZOKKILFG1PDK2NDQs4azKQl26T0YS5CxqWLgXajbPZ+h4gZekJyRqFU8pvnbAbbs/3TgRPy+GQ==", + "dev": true, + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": ">=5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, + "node_modules/y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "engines": { + "node": ">=10" + } + }, + "node_modules/yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==" + }, + "node_modules/yaml": { + "version": "1.10.2", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", + "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", + "dev": true, + "engines": { + "node": ">= 6" + } + }, + "node_modules/yargs": { + "version": "17.7.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", + "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", + "dependencies": { + "cliui": "^8.0.1", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.3", + "y18n": "^5.0.5", + "yargs-parser": "^21.1.1" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/yargs-parser": { + "version": "21.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", + "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", + "engines": { + "node": ">=12" + } + }, + "node_modules/yocto-queue": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-1.0.0.tgz", + "integrity": "sha512-9bnSc/HEW2uRy67wc+T8UwauLuPJVn28jb+GtJY16iiKWyvmYJRXVT4UamsAEGQfPohgr2q4Tq0sQbQlxTfi1g==", + "dev": true, + "engines": { + "node": ">=12.20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/zone.js": { + "version": "0.14.7", + "resolved": "https://registry.npmjs.org/zone.js/-/zone.js-0.14.7.tgz", + "integrity": "sha512-0w6DGkX2BPuiK/NLf+4A8FLE43QwBfuqz2dVgi/40Rj1WmqUskCqj329O/pwrqFJLG5X8wkeG2RhIAro441xtg==" + } + } +} diff --git a/angular/package.json b/angular/package.json new file mode 100644 index 0000000..0611720 --- /dev/null +++ b/angular/package.json @@ -0,0 +1,56 @@ +{ + "name": "futbase", + "version": "0.0.0", + "scripts": { + "ng": "ng", + "start": "ng serve", + "build": "ng build", + "watch": "ng build --watch --configuration development", + "test": "ng test", + "generate:api": "openapi-generator-cli generate -i ./openapi.yaml -g typescript-angular -o src/app/core/api/v1 -p=removeOperationIdPrefix=true" + }, + "private": true, + "dependencies": { + "@angular/animations": "^17.0.0", + "@angular/cdk": "^17.0.4", + "@angular/common": "^17.0.0", + "@angular/compiler": "^17.0.0", + "@angular/core": "^17.0.0", + "@angular/forms": "^17.0.0", + "@angular/material": "^17.0.4", + "@angular/platform-browser": "^17.0.0", + "@angular/platform-browser-dynamic": "^17.0.0", + "@angular/router": "^17.0.0", + "@ng-bootstrap/ng-bootstrap": "^16.0.0-rc.2", + "@ngx-translate/core": "^15.0.0", + "@ngx-translate/http-loader": "^8.0.0", + "@popperjs/core": "^2.11.8", + "@types/node": "^20.11.5", + "bootstrap": "^5.3.2", + "bootstrap-icons": "^1.11.2", + "rxjs": "~7.8.0", + "tslib": "^2.3.0", + "uuid": "^9.0.1", + "zone.js": "~0.14.2" + }, + "devDependencies": { + "@angular-devkit/build-angular": "^17.0.7", + "@angular/cli": "^17.0.7", + "@angular/compiler-cli": "^17.0.0", + "@openapitools/openapi-generator-cli": "^2.7.0", + "@types/jasmine": "~5.1.0", + "@types/uuid": "^9.0.8", + "@verizonconnect/ngx-form-generator": "^1.2.0", + "jasmine-core": "~5.1.0", + "karma": "~6.4.0", + "karma-chrome-launcher": "~3.2.0", + "karma-coverage": "~2.2.0", + "karma-jasmine": "~5.1.0", + "karma-jasmine-html-reporter": "~2.1.0", + "typescript": "~5.2.2" + }, + "description": "This project was generated with [Angular CLI](https://github.com/angular/angular-cli) version 17.0.7.", + "main": "index.js", + "author": "", + "license": "ISC" +} diff --git a/angular/src/app/_components/alert.component.html b/angular/src/app/_components/alert.component.html new file mode 100644 index 0000000..b140a7c --- /dev/null +++ b/angular/src/app/_components/alert.component.html @@ -0,0 +1,7 @@ +
+
+ + +
+
Click here to remove all
+
diff --git a/angular/src/app/_components/alert.component.ts b/angular/src/app/_components/alert.component.ts new file mode 100644 index 0000000..383c264 --- /dev/null +++ b/angular/src/app/_components/alert.component.ts @@ -0,0 +1,100 @@ +import { Component, OnInit, OnDestroy, Input } from '@angular/core'; +import { Router, NavigationStart } from '@angular/router'; +import { Subscription } from 'rxjs'; + +import { Alert, AlertType } from '@app/_models'; +import { AlertService } from '@app/_services'; + +@Component({ selector: 'alert', templateUrl: 'alert.component.html' }) +export class AlertComponent implements OnInit, OnDestroy { + @Input() id = 'default-alert'; + @Input() fade = true; + + alerts: Alert[] = []; + alertSubscription!: Subscription; + routeSubscription!: Subscription; + + constructor(private router: Router, private alertService: AlertService) { } + + ngOnInit() { + // subscribe to new alert notifications + this.alertSubscription = this.alertService.onAlert(this.id) + .subscribe(alert => { + // clear alerts when an empty alert is received + if (!alert.message) { + // filter out alerts without 'keepAfterRouteChange' flag + this.alerts = this.alerts.filter(x => x.keepAfterRouteChange); + + // remove 'keepAfterRouteChange' flag on the rest + this.alerts.forEach(x => delete x.keepAfterRouteChange); + return; + } + + // add alert to array + this.alerts.push(alert); + + // auto close alert if required + if (alert.autoClose) { + setTimeout(() => this.removeAlert(alert), 1000); + } + }); + + // clear alerts on location change + this.routeSubscription = this.router.events.subscribe(event => { + if (event instanceof NavigationStart) { + this.alertService.clear(this.id); + } + }); + } + + ngOnDestroy() { + // unsubscribe to avoid memory leaks + this.alertSubscription.unsubscribe(); + this.routeSubscription.unsubscribe(); + } + + removeAlert(alert: Alert) { + // check if already removed to prevent error on auto close + if (!this.alerts.includes(alert)) return; + + if (this.fade) { + // fade out alert + alert.fade = true; + + // remove alert after faded out + setTimeout(() => { + this.alerts = this.alerts.filter(x => x !== alert); + }, 250); + } else { + // remove alert + this.alerts = this.alerts.filter(x => x !== alert); + } + } + + removeAllAlerts() { + this.alerts.forEach((alert) => this.removeAlert(alert)); + } + + cssClass(alert: Alert) { + if (!alert) return; + + const classes = ['alert', 'alert-dismissible', 'mb-2', 'container']; + + const alertTypeClass = { + [AlertType.Success]: 'alert-success', + [AlertType.Error]: 'alert-danger', + [AlertType.Info]: 'alert-info', + [AlertType.Warning]: 'alert-warning' + } + + if (alert.type !== undefined) { + classes.push(alertTypeClass[alert.type]); + } + + if (alert.fade) { + classes.push('fade'); + } + + return classes.join(' '); + } +} \ No newline at end of file diff --git a/angular/src/app/_components/datetime-picker/datetime-picker.component.html b/angular/src/app/_components/datetime-picker/datetime-picker.component.html new file mode 100644 index 0000000..ea43799 --- /dev/null +++ b/angular/src/app/_components/datetime-picker/datetime-picker.component.html @@ -0,0 +1,10 @@ +
+
+ + +
+
+ + +
+
\ No newline at end of file diff --git a/angular/src/app/_components/datetime-picker/datetime-picker.component.scss b/angular/src/app/_components/datetime-picker/datetime-picker.component.scss new file mode 100644 index 0000000..e69de29 diff --git a/angular/src/app/_components/datetime-picker/datetime-picker.component.spec.ts b/angular/src/app/_components/datetime-picker/datetime-picker.component.spec.ts new file mode 100644 index 0000000..3f941e1 --- /dev/null +++ b/angular/src/app/_components/datetime-picker/datetime-picker.component.spec.ts @@ -0,0 +1,23 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { DatetimePickerComponent } from './datetime-picker.component'; + +describe('DatetimePickerComponent', () => { + let component: DatetimePickerComponent; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + declarations: [DatetimePickerComponent] + }) + .compileComponents(); + + fixture = TestBed.createComponent(DatetimePickerComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/angular/src/app/_components/datetime-picker/datetime-picker.component.ts b/angular/src/app/_components/datetime-picker/datetime-picker.component.ts new file mode 100644 index 0000000..1ba0a30 --- /dev/null +++ b/angular/src/app/_components/datetime-picker/datetime-picker.component.ts @@ -0,0 +1,70 @@ +import {Component, EventEmitter, Input, OnInit, Output} from '@angular/core'; +import {FormBuilder, FormGroup} from "@angular/forms"; + +@Component({ + selector: 'app-datetime-picker', + templateUrl: './datetime-picker.component.html', + styleUrl: './datetime-picker.component.scss' +}) +export class DatetimePickerComponent implements OnInit { + @Input() label: string = 'Date and Time'; + @Input() inputId: string = 'myId'; + @Input() initialValue: string | null = null; + @Input() readonly: boolean = false; + @Output() dateTimeChange = new EventEmitter(); + + form: FormGroup; + + constructor(private fb: FormBuilder) { + this.form = this.fb.group({ + date: [''], + time: [''] + }); + } + + ngOnInit() { + if (this.initialValue) { + const date = new Date(this.initialValue); + this.form.patchValue({ + date: this.formatDate(date), + time: this.formatTime(date) + }); + } + + if (this.readonly) { + this.form.disable(); + } + + this.form.valueChanges.subscribe(() => { + if (!this.readonly) { + this.emitDateTime(); + } + }); + } + + private formatDate(date: Date): string { + return date.toLocaleDateString('en-CA'); + } + + private formatTime(date: Date): string { + return date.toLocaleTimeString('en-GB', { hour12: false }); + } + + private emitDateTime() { + const { date, time } = this.form.value; + if (date && time) { + const [year, month, day] = date.split('-'); + const [hours, minutes, seconds] = time.split(':'); + const dateTime = new Date(Number(year), Number(month) - 1, Number(day), Number(hours), Number(minutes), Number(seconds)); + + // Format the date to match the loaded format + const formattedDate = dateTime.toLocaleString('sv-SE', { timeZone: 'Europe/Berlin' }).replace(' ', 'T') + '+02:00'; + + console.log('Emitting datetime:', formattedDate); + this.dateTimeChange.emit(formattedDate); + } else { + console.log('Emitting null datetime'); + this.dateTimeChange.emit(null); + } + } +} diff --git a/angular/src/app/_components/filter-bar/filter-bar.component.html b/angular/src/app/_components/filter-bar/filter-bar.component.html new file mode 100644 index 0000000..b08de56 --- /dev/null +++ b/angular/src/app/_components/filter-bar/filter-bar.component.html @@ -0,0 +1,141 @@ +
+
+ + + + +
+
+ +

{{ getColumnText(filter.field) | translate }}

+
+ +
+
+ + + +
+
+ + +
+ +
+
+ + + +
+
+ + +
+
+
+ +
+
+ +
+
+
+
+ + + +
+
+ + +
+
+
+ +
+
+ +
+
+
+
+ +
+
+ +

{{ getColumnText(filter.field) | translate }}

+
+
+
+
+

{{ option }}

+
+ +
+
+
+ + + + + + + + + + +
+
+
+
+
+
+ + +
+
+
diff --git a/angular/src/app/_components/filter-bar/filter-bar.component.scss b/angular/src/app/_components/filter-bar/filter-bar.component.scss new file mode 100644 index 0000000..e69de29 diff --git a/angular/src/app/_components/filter-bar/filter-bar.component.spec.ts b/angular/src/app/_components/filter-bar/filter-bar.component.spec.ts new file mode 100644 index 0000000..aac1ab3 --- /dev/null +++ b/angular/src/app/_components/filter-bar/filter-bar.component.spec.ts @@ -0,0 +1,23 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { FilterBarComponent } from './filter-bar.component'; + +describe('FilterBarComponent', () => { + let component: FilterBarComponent; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + declarations: [FilterBarComponent] + }) + .compileComponents(); + + fixture = TestBed.createComponent(FilterBarComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/angular/src/app/_components/filter-bar/filter-bar.component.ts b/angular/src/app/_components/filter-bar/filter-bar.component.ts new file mode 100644 index 0000000..4cd3913 --- /dev/null +++ b/angular/src/app/_components/filter-bar/filter-bar.component.ts @@ -0,0 +1,301 @@ +import { Component, EventEmitter, Input, OnInit, OnDestroy, Output } from '@angular/core'; +import { ListColDefinition } from "@app/_components/list/list-col-definition"; +import { Subject, debounceTime, takeUntil } from 'rxjs'; +import {filter} from "rxjs/operators"; + +interface FilterState { + field: string; + type: string; + value: any; + active: boolean; + subResource?: string; + options?: string[]; +} + +interface NumberInput { + field: string; + boundType: 'min' | 'max'; + value: number | null; + subResource?: string; +} + +@Component({ + selector: 'app-filter-bar', + templateUrl: './filter-bar.component.html', + styleUrls: ['./filter-bar.component.scss'] +}) +export class FilterBarComponent implements OnInit, OnDestroy { + @Input() public listColDefinitions!: ListColDefinition[]; + @Input() public filterConfig!: string | null; + @Output() public filterInit = new EventEmitter<{filters: Record, activeCount: number}>(); + @Output() public filterChanged = new EventEmitter<{filters: Record, activeCount: number}>(); + @Output() public filterSave = new EventEmitter(); + + public static readonly FILTER_TYPE_BOOLEAN: string = 'boolean'; + public static readonly FILTER_TYPE_TEXT: string = 'text'; + public static readonly FILTER_TYPE_DATE: string = 'date'; + public static readonly FILTER_TYPE_NUMBER: string = 'number'; + public static readonly FILTER_TYPE_CHECKBOXES: string = 'checkboxes'; + + public filterStates: FilterState[] = []; + + private numberInputSubject = new Subject(); + private textInputSubject = new Subject<{field: string, value: string, subResource?: string}>(); + private destroy$ = new Subject(); + + ngOnInit(): void { + this.initializeFilterStates(); + this.setupNumberInputDebounce(); + this.setupTextInputDebounce(); + } + + ngOnDestroy(): void { + this.destroy$.next(); + this.destroy$.complete(); + } + + private countActiveFilters(): number { + return this.filterStates.filter(state => state.active).length; + } + + private initializeFilterStates(): void { + let filterSettingsObj: { [key: string]: any } = {}; + if (this.filterConfig !== null) { + filterSettingsObj = JSON.parse(this.filterConfig); + } + this.filterStates = this.listColDefinitions + .filter(col => col.filterType) + .map(col => { + let value = this.getInitialValueForType(col.filterType || ''); + let active = false; + if (col.field !== undefined && filterSettingsObj.hasOwnProperty(col.field)) { + value = filterSettingsObj[col.field]; + active = true; + } + const filterState: FilterState = { + field: col.field || '', + type: col.filterType || '', + value: value, + active: active, + subResource: col.subResource, + options: col.filterOptions + }; + return filterState; + }); + const activeFilters: Record = this.getActiveFilters(); + const activeCount = this.countActiveFilters(); + this.filterInit.emit({ filters: activeFilters, activeCount }); + } + + private setupNumberInputDebounce(): void { + this.numberInputSubject.pipe( + debounceTime(300), + takeUntil(this.destroy$) + ).subscribe(input => { + this.updateNumberFilter(input.field, input.boundType, input.value, input.subResource); + }); + } + + private setupTextInputDebounce(): void { + this.textInputSubject.pipe( + debounceTime(300), + takeUntil(this.destroy$) + ).subscribe(({field, value, subResource}) => { + this.updateTextFilter(field, value, subResource); + }); + } + + private getInitialValueForType(type: string, options?: string[]): any { + switch (type) { + case FilterBarComponent.FILTER_TYPE_BOOLEAN: + return false; + case FilterBarComponent.FILTER_TYPE_TEXT: + return ''; + case FilterBarComponent.FILTER_TYPE_DATE: + return { start: null, end: null }; + case FilterBarComponent.FILTER_TYPE_NUMBER: + return { min: null, max: null }; + case FilterBarComponent.FILTER_TYPE_CHECKBOXES: + if (options) { + return options.reduce((acc, option) => { + acc[option] = false; + return acc; + }, {} as {[key: string]: boolean}); + } + return {}; + default: + return null; + } + } + + private findFilterState(field: string, subResource?: string): FilterState | undefined { + return this.filterStates.find(state => + state.field === field && state.subResource === subResource + ); + } + + onBooleanFilterChanged(field: string, event: Event, subResource?: string): void { + const target = event.target as HTMLInputElement; + this.onFilterChanged(field, target.checked, subResource); + } + + onTextFilterChanged(field: string, event: Event, subResource?: string): void { + const target = event.target as HTMLInputElement; + this.textInputSubject.next({ field, value: target.value, subResource }); + } + + private updateTextFilter(field: string, value: string, subResource?: string): void { + const filterState = this.findFilterState(field, subResource); + if (filterState && filterState.type === FilterBarComponent.FILTER_TYPE_TEXT) { + filterState.value = value; + this.emitActiveFilters(); + } + } + + onDateFilterChanged(field: string, dateType: 'start' | 'end', event: Event, subResource?: string): void { + const target = event.target as HTMLInputElement; + const filterState = this.findFilterState(field, subResource); + if (filterState && filterState.type === FilterBarComponent.FILTER_TYPE_DATE) { + filterState.value = { ...filterState.value, [dateType]: target.value }; + this.emitActiveFilters(); + } + } + + onNumberFilterChanged(field: string, boundType: 'min' | 'max', event: Event, subResource?: string): void { + const target = event.target as HTMLInputElement; + const numValue = target.value === '' ? null : Number(target.value); + this.numberInputSubject.next({ field, boundType, value: numValue, subResource }); + } + + onCheckboxesFilterChanged(field: string, option: string, event: Event, subResource?: string): void { + const target = event.target as HTMLInputElement; + const filterState = this.findFilterState(field, subResource); + console.log(filterState); + if (filterState && filterState.type === FilterBarComponent.FILTER_TYPE_CHECKBOXES) { + filterState.value[option] = target.checked; + console.log('jojoj'); + this.emitActiveFilters(); + } + } + + private updateNumberFilter(field: string, boundType: 'min' | 'max', value: number | null, subResource?: string): void { + const filterState = this.findFilterState(field, subResource); + if (filterState && filterState.type === FilterBarComponent.FILTER_TYPE_NUMBER) { + filterState.value = { ...filterState.value, [boundType]: value }; + this.emitActiveFilters(); + } + } + + onFilterChanged(field: string, value: any, subResource?: string): void { + const filterState = this.findFilterState(field, subResource); + if (filterState) { + filterState.value = value; + this.emitActiveFilters(); + } + } + + onFilterActiveChanged(field: string, event: Event, subResource?: string): void { + const target = event.target as HTMLInputElement; + const filterState = this.findFilterState(field, subResource); + if (filterState) { + filterState.active = target.checked; + if (filterState.type === FilterBarComponent.FILTER_TYPE_CHECKBOXES) { + // Reset all checkbox values when the filter is deactivated + if (!filterState.active) { + for (const option in filterState.value) { + filterState.value[option] = false; + } + } + } + this.emitActiveFilters(); + } + } + + resetAllFilters(): void { + this.filterStates.forEach(state => { + state.active = false; + state.value = this.getInitialValueForType(state.type); + }); + this.emitActiveFilters(); + } + + private getActiveFilters(): Record { + const activeFilters: Record = {}; + this.filterStates + .filter(state => state.active) + .forEach(state => { + if (state.subResource) { + if (!activeFilters[state.subResource]) { + activeFilters[state.subResource] = {}; + } + this.setFilterValue(activeFilters[state.subResource], state); + } else { + this.setFilterValue(activeFilters, state); + } + }); + return activeFilters; + } + + private emitActiveFilters(): void { + const activeFilters: Record = this.getActiveFilters(); + const activeCount = this.countActiveFilters(); + this.filterChanged.emit({ filters: activeFilters, activeCount }); + } + + private setFilterValue(obj: Record, state: FilterState): void { + if (state.type === FilterBarComponent.FILTER_TYPE_BOOLEAN) { + obj[state.field] = state.value; + } else if (state.type === FilterBarComponent.FILTER_TYPE_TEXT) { + obj[state.field] = state.value; + } else if (state.type === FilterBarComponent.FILTER_TYPE_DATE) { + if (state.value.start !== null || state.value.end !== null) { + obj[state.field] = state.value; + } else { + obj[state.field] = {}; + } + } else if (state.type === FilterBarComponent.FILTER_TYPE_NUMBER) { + if (state.value.min !== null || state.value.max !== null) { + obj[state.field] = state.value; + } else { + obj[state.field] = {}; + } + } else if (state.type === FilterBarComponent.FILTER_TYPE_CHECKBOXES) { + // Add this block to handle checkbox filters + const selectedOptions = Object.entries(state.value) + .filter(([_, isChecked]) => isChecked) + .map(([option, _]) => option); + if (selectedOptions.length > 0) { + obj[state.field] = selectedOptions; + } + } + } + + saveFilterConfig(): void { + this.filterSave.emit(); + } + + getColumnText(field: string): string { + const column = this.listColDefinitions.find(col => col.field === field); + return column ? column.text : ''; + } + + get FILTER_TYPE_BOOLEAN(): string { + return FilterBarComponent.FILTER_TYPE_BOOLEAN; + } + + get FILTER_TYPE_TEXT(): string { + return FilterBarComponent.FILTER_TYPE_TEXT; + } + + get FILTER_TYPE_DATE(): string { + return FilterBarComponent.FILTER_TYPE_DATE; + } + + get FILTER_TYPE_NUMBER(): string { + return FilterBarComponent.FILTER_TYPE_NUMBER; + } + + get FILTER_TYPE_CHECKBOXES(): string { + return FilterBarComponent.FILTER_TYPE_CHECKBOXES; + } +} \ No newline at end of file diff --git a/angular/src/app/_components/index.ts b/angular/src/app/_components/index.ts new file mode 100644 index 0000000..d221c1b --- /dev/null +++ b/angular/src/app/_components/index.ts @@ -0,0 +1 @@ +export * from './alert.component'; diff --git a/angular/src/app/_components/layout/two-column/two-column.component.html b/angular/src/app/_components/layout/two-column/two-column.component.html new file mode 100644 index 0000000..061377a --- /dev/null +++ b/angular/src/app/_components/layout/two-column/two-column.component.html @@ -0,0 +1,83 @@ + \ No newline at end of file diff --git a/angular/src/app/_components/layout/two-column/two-column.component.scss b/angular/src/app/_components/layout/two-column/two-column.component.scss new file mode 100644 index 0000000..e69de29 diff --git a/angular/src/app/_components/layout/two-column/two-column.component.spec.ts b/angular/src/app/_components/layout/two-column/two-column.component.spec.ts new file mode 100644 index 0000000..713cb97 --- /dev/null +++ b/angular/src/app/_components/layout/two-column/two-column.component.spec.ts @@ -0,0 +1,23 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { TwoColumnComponent } from './two-column.component'; + +describe('TwoColumnComponent', () => { + let component: TwoColumnComponent; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + declarations: [TwoColumnComponent] + }) + .compileComponents(); + + fixture = TestBed.createComponent(TwoColumnComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/angular/src/app/_components/layout/two-column/two-column.component.ts b/angular/src/app/_components/layout/two-column/two-column.component.ts new file mode 100644 index 0000000..7b8f51c --- /dev/null +++ b/angular/src/app/_components/layout/two-column/two-column.component.ts @@ -0,0 +1,26 @@ +import {Component} from '@angular/core'; +import {Location} from "@angular/common"; + +@Component({ + selector: 'app-two-column', + templateUrl: './two-column.component.html', + styleUrl: './two-column.component.scss' +}) +export class TwoColumnComponent { + + public navOpen: boolean; + constructor(private _location: Location) { + this.navOpen = false; + } + + goBack() { + this._location.back(); + } + + toggleSidebar() { + this.navOpen = !this.navOpen; + } + + + +} diff --git a/angular/src/app/_components/linked-label/linked-label.component.html b/angular/src/app/_components/linked-label/linked-label.component.html new file mode 100644 index 0000000..8db6cbd --- /dev/null +++ b/angular/src/app/_components/linked-label/linked-label.component.html @@ -0,0 +1,4 @@ + + {{ user.firstName }} {{ user.lastName }} + diff --git a/angular/src/app/_components/linked-label/linked-label.component.scss b/angular/src/app/_components/linked-label/linked-label.component.scss new file mode 100644 index 0000000..e69de29 diff --git a/angular/src/app/_components/linked-label/linked-label.component.spec.ts b/angular/src/app/_components/linked-label/linked-label.component.spec.ts new file mode 100644 index 0000000..5c4f982 --- /dev/null +++ b/angular/src/app/_components/linked-label/linked-label.component.spec.ts @@ -0,0 +1,23 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { LinkedLabelComponent } from './linked-label.component'; + +describe('LinkedLabelComponent', () => { + let component: LinkedLabelComponent; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + declarations: [LinkedLabelComponent] + }) + .compileComponents(); + + fixture = TestBed.createComponent(LinkedLabelComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/angular/src/app/_components/linked-label/linked-label.component.ts b/angular/src/app/_components/linked-label/linked-label.component.ts new file mode 100644 index 0000000..0820afd --- /dev/null +++ b/angular/src/app/_components/linked-label/linked-label.component.ts @@ -0,0 +1,21 @@ +import {Component, Input} from '@angular/core'; +import {UserJsonld} from "@app/core/api/v1"; +import {AppHelperService} from "@app/_helpers/app-helper.service"; + +@Component({ + selector: 'app-linked-label', + templateUrl: './linked-label.component.html', + styleUrl: './linked-label.component.scss' +}) +export class LinkedLabelComponent { + @Input() public user!: UserJsonld; + + + constructor( + protected appHelperService: AppHelperService + ) { + + } + + +} diff --git a/angular/src/app/_components/list/list-col-definition.ts b/angular/src/app/_components/list/list-col-definition.ts new file mode 100644 index 0000000..0f21705 --- /dev/null +++ b/angular/src/app/_components/list/list-col-definition.ts @@ -0,0 +1,30 @@ +import {ListColTypeAddress} from "@app/_components/list/list-col-type-address"; +import {OrderFilter} from "@app/_models/orderFilter"; + +export interface ListColDefinition { + name: string, + text: string, + type: string, + field?: string, + multipleFields?: any[], + address?: ListColTypeAddress, + sortable?: boolean, + subResource?: string, + sortingFieldName?: string, + sortingSubResource?: string, + countSortSubresource?: boolean, + countSortSubresourceField?: string, + countSortSubresourceValue?: any[] | null, + countSortFilterSubResource?: string, + countSortFilterSubresourceField?: string, + countSortFilterSubresourceValue?: string | null, + length?: number, + displayedLength?: number, + groups?: string[], + onClickFunction?: Function, + updateBooleanOnClick?: boolean, + filterType?: string, + visible?: boolean, + url?: string, + filterOptions?: string[], +} \ No newline at end of file diff --git a/angular/src/app/_components/list/list-col-type-address.ts b/angular/src/app/_components/list/list-col-type-address.ts new file mode 100644 index 0000000..5fcb369 --- /dev/null +++ b/angular/src/app/_components/list/list-col-type-address.ts @@ -0,0 +1,8 @@ +export interface ListColTypeAddress { + street: string, + streetNo: string, + zip: string, + city: string, + country: string, + _type: 'address', +} \ No newline at end of file diff --git a/angular/src/app/_components/list/list-get-data-function-type.ts b/angular/src/app/_components/list/list-get-data-function-type.ts new file mode 100644 index 0000000..8a04814 --- /dev/null +++ b/angular/src/app/_components/list/list-get-data-function-type.ts @@ -0,0 +1,4 @@ +// types.ts +import { Observable } from 'rxjs'; + +export type ListGetDataFunctionType = (index: number, pageSize: number, term?: string) => Observable; diff --git a/angular/src/app/_components/list/list-update-element-function-type.ts b/angular/src/app/_components/list/list-update-element-function-type.ts new file mode 100644 index 0000000..5093ab9 --- /dev/null +++ b/angular/src/app/_components/list/list-update-element-function-type.ts @@ -0,0 +1,4 @@ +// types.ts +import { Observable } from 'rxjs'; + +export type ListUpdateElementFunctionType = (element: any) => Observable; diff --git a/angular/src/app/_components/list/list.component.html b/angular/src/app/_components/list/list.component.html new file mode 100644 index 0000000..83526a3 --- /dev/null +++ b/angular/src/app/_components/list/list.component.html @@ -0,0 +1,171 @@ + + + + + +
+ +
+

{{ column.text | translate }}

+ +
+
+
+
+
+ + +
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + +
+ {{ column.text | translate }} + + {{ column.text | translate }} + + + + +
+
+ + + + + + + {{ getElementValue(element, column) | currency: 'EUR' }} + + + + + + + + + + + + + + + + {{ getElementValue(element, column) | date:'dd.MM.YYYY - HH:mm':'GMT+0200' }} + + + + {{ getElementValue(element, column) }} + + + + + + + + + + + + + + + + + + {{ pagingComponent.getPageSize() * (pagingComponent.getPageIndex() - 1) + dataSource.filteredData.indexOf(element) + 1 }} + + + + {{ getElementValue(element, column) }} + + + + {{ getElementValue(element, column) | number:'1.0-0':'de-DE' }} + + + + {{ getElementValue(element, column) }} + + + + {{ getElementValue(element, column) | number:'1.0-0':'de-DE' }} + + + + {{ getElementValue(element, column) }} + + + + + {{ getElementValue(element, column) }} + + + + {{ getElementValue(element, column) }} + + +
+
+
+ +
\ No newline at end of file diff --git a/angular/src/app/_components/list/list.component.scss b/angular/src/app/_components/list/list.component.scss new file mode 100644 index 0000000..e69de29 diff --git a/angular/src/app/_components/list/list.component.spec.ts b/angular/src/app/_components/list/list.component.spec.ts new file mode 100644 index 0000000..a82ee22 --- /dev/null +++ b/angular/src/app/_components/list/list.component.spec.ts @@ -0,0 +1,23 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { ListComponent } from './list.component'; + +describe('ListComponent', () => { + let component: ListComponent; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + declarations: [ListComponent] + }) + .compileComponents(); + + fixture = TestBed.createComponent(ListComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/angular/src/app/_components/list/list.component.ts b/angular/src/app/_components/list/list.component.ts new file mode 100644 index 0000000..18e5865 --- /dev/null +++ b/angular/src/app/_components/list/list.component.ts @@ -0,0 +1,474 @@ +import {AfterViewInit, Component, Input, OnDestroy, OnInit, ViewChild} from '@angular/core'; +import {MatSort, Sort} from "@angular/material/sort"; +import {PagingComponent} from "@app/_components/paging/paging.component"; +import {MatTableDataSource} from "@angular/material/table"; +import {ListColDefinition} from "@app/_components/list/list-col-definition"; +import {AppHelperService} from "@app/_helpers/app-helper.service"; +import {ListGetDataFunctionType} from "@app/_components/list/list-get-data-function-type"; +import {ListUpdateElementFunctionType} from "@app/_components/list/list-update-element-function-type"; +import {FilterBarComponent} from "@app/_components/filter-bar/filter-bar.component"; +import { Router } from '@angular/router'; +import {interval, Subscription} from "rxjs"; + +@Component({ + selector: 'app-list', + templateUrl: './list.component.html', + styleUrl: './list.component.scss' +}) + +export class ListComponent implements OnInit, AfterViewInit, OnDestroy { + @Input() public listId!: string; + @Input() public getDataFunction!: ListGetDataFunctionType; + @Input() public onSortFunction!: Function; + @Input() public onNavigateToDetailsFunction!: Function; + @Input() public onRemoveItemFunction!: Function; + @Input() public onEditFunction!: Function; + @Input() public onDownloadFunction!: Function; + @Input() public onRowSelectedFunction!: Function; + @Input() public onUpdateBooleanStateFunction!: ListUpdateElementFunctionType; + @Input() public searchable: boolean; + @Input() public showDetailButton: boolean; + @Input() public showPosition: boolean; + @Input() public showFilterBar: boolean; + @Input() public listColDefinitions!: ListColDefinition[]; + @Input() public hidePageSize: boolean; + @Input() public displayOptions!: { [key: string]: string }; + @Input() public defaultDisplayOption!: string; + @Input() public refreshIntervalSeconds?: number; + @ViewChild(MatSort) sort; + @ViewChild("pagingComponent", {static: false}) protected pagingComponent!: PagingComponent; + @ViewChild("filterBarComponent", {static: false}) protected filterBarComponent!: FilterBarComponent; + + public static COLUMN_TYPE_ADDRESS: string = 'address'; + public static COLUMN_TYPE_BOOLEAN: string = 'boolean'; + public static COLUMN_TYPE_BTN_DOWNLOAD: string = 'btn_download'; + public static COLUMN_TYPE_BTN_EDIT: string = 'btn_edit'; + public static COLUMN_TYPE_BTN_REMOVE: string = 'btn_remove'; + public static COLUMN_TYPE_CURRENCY: string = 'euro'; + public static COLUMN_TYPE_DATE: string = 'date'; + public static COLUMN_TYPE_DETAIL: string = 'detail'; + public static COLUMN_TYPE_DETAIL_LINK: string = 'detail_link'; + public static COLUMN_TYPE_EMAIL: string = 'email'; + public static COLUMN_TYPE_IMAGE: string = 'image'; + public static COLUMN_TYPE_COMBINED_IMAGES: string = 'combined_images'; + public static COLUMN_TYPE_NUMBER: string = 'number'; + public static COLUMN_TYPE_NUMBER_UNFORMATTED: string = 'number_unformatted'; + public static COLUMN_TYPE_NUMBER_BOLD: string = 'number_bold'; + public static COLUMN_TYPE_POSITION: string = 'position'; + public static COLUMN_TYPE_TEXT: string = 'text'; + public static COLUMN_TYPE_TEXT_BOLD: string = 'text_bold'; + public static COLUMN_TYPE_TEXT_LINKED: string = 'text_linked'; + public static COLUMN_TYPE_WEBSITE: string = 'website'; + + public activeFilterCount: number = 0; + + protected displayedColumns!: string[]; + protected selectedRowIndex: number | null = null; + protected dataSource; + protected currentGroup!: string; + protected filterExists!: boolean; + protected sortObj!: any; + protected filterObj!: any; + protected listColDefinitionsByField!: any; + protected filterConfig: string | null; + private refreshSubscription?: Subscription; + + constructor( + protected appHelperService: AppHelperService, + private router: Router, + ) { + this.searchable = true; + this.showDetailButton = true; + this.showPosition = true; + this.showFilterBar = true; + this.filterExists = false; + this.filterObj = {}; + this.sort = new MatSort(); + this.hidePageSize = false; + this.dataSource = new MatTableDataSource(); + this.filterConfig = null; + + } + + ngOnInit(): void { + this.loadColumnConfig(); + if (this.showPosition) { + this.listColDefinitions.unshift(ListComponent.getDefaultColPosition()); + } + if (this.showDetailButton) { + // this.listColDefinitions.unshift(ListComponent.getDefaultColDetailBtn()); + this.listColDefinitions.unshift(ListComponent.getDefaultColDetailBtnLink(this.router.routerState.snapshot.url)); + } + if (this.displayOptions !== undefined) { + this.currentGroup = this.defaultDisplayOption || Object.keys(this.displayOptions)[0] || ''; + } + + this.listColDefinitionsByField = {}; + this.listColDefinitions.forEach((value, index) => { + if (value.visible === undefined) { + value.visible = true; + } + this.listColDefinitionsByField[value['name']] = value; + if (value.filterType !== undefined) { + this.filterExists = true; + } + }) + this.updateDisplayedColumns(); + this.filterConfig = this.loadFilterConfig(); + this.setupAutoRefresh(); + } + + private setupAutoRefresh(): void { + this.clearAutoRefresh(); + if (this.refreshIntervalSeconds && this.refreshIntervalSeconds > 0) { + this.refreshSubscription = interval(this.refreshIntervalSeconds * 1000).subscribe(() => { + this.getData(); + }); + } + } + + private clearAutoRefresh(): void { + if (this.refreshSubscription) { + this.refreshSubscription.unsubscribe(); + } + } + + saveFilterConfig(): void { + localStorage.setItem(`filterConfig_${this.listId}`, this.getFilterJsonString()); + } + + loadFilterConfig(): string | null { + return localStorage.getItem(`filterConfig_${this.listId}`); + } + + saveColumnConfig(): void { + const config = this.listColDefinitions.map(col => ({ + name: col.name, + visible: col.visible + })); + localStorage.setItem(`listConfig_${this.listId}`, JSON.stringify(config)); + } + + loadColumnConfig(): void { + const savedConfig = localStorage.getItem(`listConfig_${this.listId}`); + if (savedConfig) { + const config = JSON.parse(savedConfig); + this.listColDefinitions.forEach(col => { + const savedCol = config.find((c: any) => c.name === col.name); + if (savedCol) { + col.visible = savedCol.visible; + } + }); + this.updateDisplayedColumns(); + } + } + + updateDisplayedColumns(): void { + this.displayedColumns = this.listColDefinitions + .filter(col => col.visible !== false && + (this.displayOptions === undefined || + col.groups?.includes(this.currentGroup) || + col.type === ListComponent.COLUMN_TYPE_DETAIL || + col.type === ListComponent.COLUMN_TYPE_POSITION)) + .map(col => col.name); + } + + onDisplayOptionChange(option: string): void { + this.currentGroup = option; + this.updateDisplayedColumns(); + } + + onToggleColumnVisibility(columnName: string): void { + const column = this.listColDefinitions.find(col => col.name === columnName); + if (column) { + column.visible = !column.visible; + this.updateDisplayedColumns(); + } + } + + showAllColumns() { + this.listColDefinitions.forEach((value, index) => { + value.visible = true; + }); + this.updateDisplayedColumns(); + } + + getColumnVisibility(): { [key: string]: boolean } { + const visibility: { [key: string]: boolean } = {}; + this.listColDefinitions.forEach(col => { + visibility[col.name] = col.visible !== false; + }); + return visibility; + } + + ngAfterViewInit(): void { + } + + getData = (): void => { + this.getDataFunction( + this.pagingComponent.getPageIndex(), + this.pagingComponent.getPageSize(), + this.pagingComponent.getSearchValue() + ).subscribe( + data => { + this.dataSource = new MatTableDataSource(data['hydra:member']); + this.pagingComponent.setDataLength(data["hydra:totalItems"]); + } + ) + } + + onSortChange = (sortState: Sort) => { + let listColDefinition: any = this.listColDefinitionsByField[sortState.active]; + this.sortObj = sortState; + this.sortObj['listColDefinition'] = listColDefinition; + this.pagingComponent.resetPageIndex(); + this.onSortFunction(sortState); + this.getData(); + } + + onRowSelected(row: any, index: number) { + this.selectedRowIndex = index; + if (this.onRowSelectedFunction !== undefined) { + this.onRowSelectedFunction(row, index); + } + } + + getElementValue(element: any, column: ListColDefinition, multipleFieldIndex?: number): any | null { + element = column.subResource !== undefined ? element[column.subResource] : element; + if (element === undefined) { + return null; + } + if (column.field !== undefined) { + if ( + column.displayedLength !== undefined && + element[column.field] !== undefined && + element[column.field].length > column.displayedLength + ) { + return element[column.field]?.slice(0, column.displayedLength) + '...'; + } + return element[column.field]; + } + if (column.multipleFields !== undefined) { + if (multipleFieldIndex !== undefined) { + return element[column.multipleFields[multipleFieldIndex]]; + } + let res: any[] = []; + column.multipleFields.forEach((field, index) => { + res.push(element[field]); + }) + return res; + } + if (column.address !== undefined) { + const field = column.address; + let addressString = ''; + if (element[field.street] !== undefined && element[field.street] !== null) { + addressString += `${element[field.street].trim()} `; + } + if (element[field.streetNo] !== undefined && element[field.streetNo] !== null) { + addressString += `${element[field.streetNo].trim()} `; + } + addressString += '
'; + if (element[field.zip] !== undefined && element[field.zip] !== null) { + addressString += `${element[field.zip].trim()} `; + } + if (element[field.city] !== undefined && element[field.city] !== null) { + addressString += `${element[field.city].trim()}`; + } + addressString += '
'; + + if (element[field.country] !== undefined && element[field.country] !== null) { + addressString += `${element[field.country].trim()}`; + } + return addressString; + } + return element; + } + + getElementImage(element: any, column: ListColDefinition): any { + let elementValue = this.getElementValue(element, column); + if (elementValue !== undefined && elementValue !== null) { + return elementValue; + } + return "/assets/images/icons/dummy-product.png" + } + + + getColCssClass(column: ListColDefinition): string { + switch (column.type) { + case ListComponent.COLUMN_TYPE_DETAIL: + return "spt-button-td"; + case ListComponent.COLUMN_TYPE_BTN_REMOVE: + return "spt-button-td text-end"; + case ListComponent.COLUMN_TYPE_TEXT: + return "spt-version-td"; + default: + return ""; + } + } + + public getPageIndex() { + return this.pagingComponent.getPageIndex(); + } + + public getPageSize() { + return this.pagingComponent.getPageSize(); + } + + public static getDefaultColDetailBtn(): ListColDefinition { + return { + name: 'detail', + text: '', + type: ListComponent.COLUMN_TYPE_DETAIL + } as ListColDefinition; + } + + public static getDefaultColDetailBtnLink(currentUrl: string): ListColDefinition { + return { + name: 'detaillink', + text: '', + url: currentUrl, + type: ListComponent.COLUMN_TYPE_DETAIL_LINK + } as ListColDefinition; + } + + public static getDefaultColPosition(): ListColDefinition { + return { + name: 'pos', + text: 'overview.number', + type: ListComponent.COLUMN_TYPE_POSITION + } as ListColDefinition; + } + + public getSortingJsonString(): any + { + return JSON.stringify(this.sortObj); + } + + public updateBooleanState = (element: any, index: number, column: ListColDefinition) => { + if (this.onUpdateBooleanStateFunction === undefined) { + throw new Error('no onUpdateBooleanStateFunction given'); + } + if (column.field !== undefined) { + element[column.field] = !element[column.field]; + } else { + throw new Error('column.field is undefined'); + } + this.onUpdateBooleanStateFunction(element).subscribe( + data => { + this.updateRow(data, index); + } + ) + } + + public updateRow(element: any, index: number) { + const data = this.dataSource.data as any; + data[index] = element; + this.dataSource.data = data; + } + + public onFilterInit(filterData: {filters: any, activeCount: number}) { + this.filterObj = filterData.filters; + this.activeFilterCount = filterData.activeCount; + } + + public onFilterChanged(filterData: {filters: any, activeCount: number}) { + console.log(filterData); + const filterJson = JSON.stringify(filterData.filters); + const currentFilterJson = JSON.stringify(this.filterObj); + + if (filterJson !== currentFilterJson) { + this.filterObj = filterData.filters; + this.activeFilterCount = filterData.activeCount; + this.getData(); + } + } + + public getFilterJsonString(): any + { + return JSON.stringify(this.filterObj); + } + + get COLUMN_TYPE_ADDRESS(): string { + return ListComponent.COLUMN_TYPE_ADDRESS; + } + + get COLUMN_TYPE_BOOLEAN(): string { + return ListComponent.COLUMN_TYPE_BOOLEAN; + } + + get COLUMN_TYPE_BTN_DOWNLOAD(): string { + return ListComponent.COLUMN_TYPE_BTN_DOWNLOAD; + } + + get COLUMN_TYPE_BTN_EDIT(): string { + return ListComponent.COLUMN_TYPE_BTN_EDIT; + } + + get COLUMN_TYPE_BTN_REMOVE(): string { + return ListComponent.COLUMN_TYPE_BTN_REMOVE; + } + + get COLUMN_TYPE_CURRENCY(): string { + return ListComponent.COLUMN_TYPE_CURRENCY; + } + + get COLUMN_TYPE_DATE(): string { + return ListComponent.COLUMN_TYPE_DATE; + } + + get COLUMN_TYPE_DETAIL(): string { + return ListComponent.COLUMN_TYPE_DETAIL; + } + + get COLUMN_TYPE_DETAIL_LINK(): string { + return ListComponent.COLUMN_TYPE_DETAIL_LINK; + } + + get COLUMN_TYPE_EMAIL(): string { + return ListComponent.COLUMN_TYPE_EMAIL; + } + + get COLUMN_TYPE_POSITION(): string { + return ListComponent.COLUMN_TYPE_POSITION; + } + + get COLUMN_TYPE_IMAGE(): string { + return ListComponent.COLUMN_TYPE_IMAGE; + } + + get COLUMN_TYPE_COMBINED_IMAGES(): string { + return ListComponent.COLUMN_TYPE_COMBINED_IMAGES; + } + + get COLUMN_TYPE_TEXT(): string { + return ListComponent.COLUMN_TYPE_TEXT; + } + + get COLUMN_TYPE_NUMBER(): string { + return ListComponent.COLUMN_TYPE_NUMBER; + } + + get COLUMN_TYPE_NUMBER_UNFORMATTED(): string { + return ListComponent.COLUMN_TYPE_NUMBER_UNFORMATTED; + } + + get COLUMN_TYPE_NUMBER_BOLD(): string { + return ListComponent.COLUMN_TYPE_NUMBER_BOLD; + } + + get COLUMN_TYPE_TEXT_BOLD(): string { + return ListComponent.COLUMN_TYPE_TEXT_BOLD; + } + + get COLUMN_TYPE_TEXT_LINKED(): string { + return ListComponent.COLUMN_TYPE_TEXT_LINKED; + } + + get COLUMN_TYPE_WEBSITE(): string { + return ListComponent.COLUMN_TYPE_WEBSITE; + } + + ngOnDestroy(): void { + this.clearAutoRefresh(); + } +} \ No newline at end of file diff --git a/angular/src/app/_components/paging/paging.component.html b/angular/src/app/_components/paging/paging.component.html new file mode 100644 index 0000000..0602474 --- /dev/null +++ b/angular/src/app/_components/paging/paging.component.html @@ -0,0 +1,52 @@ +
+ +
+
+
+
+ + +
+
+
+
+
+ +
+ +
+ +
+ + + +
+
+ +
{{'form.no_data' | translate}}
+
+ + +
diff --git a/angular/src/app/_components/paging/paging.component.scss b/angular/src/app/_components/paging/paging.component.scss new file mode 100644 index 0000000..e69de29 diff --git a/angular/src/app/_components/paging/paging.component.spec.ts b/angular/src/app/_components/paging/paging.component.spec.ts new file mode 100644 index 0000000..f7c8e7d --- /dev/null +++ b/angular/src/app/_components/paging/paging.component.spec.ts @@ -0,0 +1,23 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { PagingComponent } from './paging.component'; + +describe('ListComponent', () => { + let component: PagingComponent; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + declarations: [PagingComponent] + }) + .compileComponents(); + + fixture = TestBed.createComponent(PagingComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/angular/src/app/_components/paging/paging.component.ts b/angular/src/app/_components/paging/paging.component.ts new file mode 100644 index 0000000..e7a40a7 --- /dev/null +++ b/angular/src/app/_components/paging/paging.component.ts @@ -0,0 +1,132 @@ +import { + AfterViewInit, + ChangeDetectorRef, + Component, + EventEmitter, + Input, + OnInit, + Output, + ViewChild +} from '@angular/core'; +import {MatPaginator, MatPaginatorIntl, PageEvent} from "@angular/material/paginator"; +import {FormBuilder, FormGroup} from "@angular/forms"; +import {debounceTime, distinctUntilChanged} from "rxjs"; + +@Component({ + selector: 'app-paging', + templateUrl: './paging.component.html', + styleUrl: './paging.component.scss' +}) +export class PagingComponent implements OnInit, AfterViewInit { + + @Input() public dataSource!: any; + @Input() public getDataFunction!: Function; + @Input() public pageSize!: number; + @Input() public pageSizeOptions!: number[]; + @Input() public searchable: boolean; + @Input() public hidePageSize: boolean; + @Input() public displayOptions!: { [key: string]: any }; + @Input() public defaultDisplayOption!: string; + @Output() public displayOptionChange = new EventEmitter(); + + @ViewChild(MatPaginator) public paginator!: MatPaginator; + + protected defaultPageSize: number = 50; + protected defaultPageSizeOptions: number[] = [20, 50, 100]; + + protected dataLength: number; + protected pageEvent: PageEvent; + protected pageIndex: number; + protected searchForm!: FormGroup; + protected dataInitialized: boolean = false; + protected selectedDisplayOption: string = ''; + protected displayOptionKeys: string[] = []; + + constructor( + private fb: FormBuilder + ) { + this.dataLength = 0; + this.pageEvent = new PageEvent(); + this.pageIndex = 0; + this.searchable = false; + this.hidePageSize = false; + } + + ngOnInit() { + this.pageSize = this.pageSize !== undefined ? this.pageSize : this.defaultPageSize; + this.pageSizeOptions = this.pageSizeOptions !== undefined ? this.pageSizeOptions : this.defaultPageSizeOptions; + this.paginator = new MatPaginator(new MatPaginatorIntl(), ChangeDetectorRef.prototype); + + if (this.searchable) { + this.searchForm = this.fb.group({ + inputText: [''] + }); + this.searchForm.get('inputText')?.valueChanges.pipe( + debounceTime(1000), + distinctUntilChanged() + ).subscribe(value => { + this.resetPageIndex(); + this.getData(); + }); + } + if (this.displayOptions !== undefined) { + this.displayOptionKeys = Object.keys(this.displayOptions); + this.selectedDisplayOption = this.defaultDisplayOption || Object.keys(this.displayOptions)[0] || ''; + } + + } + + ngAfterViewInit() { + + } + + getData() { + this.getDataFunction( + this.getPageIndex(), + this.getPageSize(), + this.searchForm ? this.searchForm.get('inputText')?.value : undefined + ); + } + + handlePageEvent(e: PageEvent) { + this.pageEvent = e; + this.dataLength = e.length; + this.pageIndex = e.pageIndex.valueOf(); + this.pageSize = e.pageSize.valueOf(); + this.getData(); + } + + resetPageIndex(): void { + this.pageIndex = 0; + } + + getPageIndex(): number { + return this.pageIndex + 1; + } + + getPageSize(): number { + return this.pageSize; + } + + setDataLength(dataLength: number): void { + this.dataInitialized = true; + this.dataLength = dataLength; + } + + clearForm() { + this.searchForm.get('inputText')!.setValue(''); + } + + getSearchValue() { + if (this.searchable) { + return this.searchForm.get('inputText')!.value; + } + return undefined; + } + + onDisplayOptionChange(event: Event): void { + this.displayOptionChange.emit(String(event)); + } + + protected readonly Object = Object; +} diff --git a/angular/src/app/_components/search-input/search-input-col-def.ts b/angular/src/app/_components/search-input/search-input-col-def.ts new file mode 100644 index 0000000..195fa52 --- /dev/null +++ b/angular/src/app/_components/search-input/search-input-col-def.ts @@ -0,0 +1,7 @@ +export interface SearchInputColDef { + column: string, + columnHeader: string, + columnType: string, + field?: string + subResource?: string +} \ No newline at end of file diff --git a/angular/src/app/_components/search-input/search-input.component.html b/angular/src/app/_components/search-input/search-input.component.html new file mode 100644 index 0000000..d2c655a --- /dev/null +++ b/angular/src/app/_components/search-input/search-input.component.html @@ -0,0 +1,11 @@ + + diff --git a/angular/src/app/_components/search-input/search-input.component.scss b/angular/src/app/_components/search-input/search-input.component.scss new file mode 100644 index 0000000..e69de29 diff --git a/angular/src/app/_components/search-input/search-input.component.spec.ts b/angular/src/app/_components/search-input/search-input.component.spec.ts new file mode 100644 index 0000000..0e2124c --- /dev/null +++ b/angular/src/app/_components/search-input/search-input.component.spec.ts @@ -0,0 +1,23 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { SearchInputComponent } from './search-input.component'; + +describe('SearchInputComponent', () => { + let component: SearchInputComponent; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + declarations: [SearchInputComponent] + }) + .compileComponents(); + + fixture = TestBed.createComponent(SearchInputComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/angular/src/app/_components/search-input/search-input.component.ts b/angular/src/app/_components/search-input/search-input.component.ts new file mode 100644 index 0000000..25e30f6 --- /dev/null +++ b/angular/src/app/_components/search-input/search-input.component.ts @@ -0,0 +1,38 @@ +import {Component, Input} from '@angular/core'; +import {FormGroup} from "@angular/forms"; +import {debounceTime, distinctUntilChanged, Observable, OperatorFunction, switchMap} from "rxjs"; +import {filter, map} from "rxjs/operators"; + +@Component({ + selector: 'app-search-input', + templateUrl: './search-input.component.html', + styleUrl: './search-input.component.scss' +}) +export class SearchInputComponent { + + @Input() public formId!: string; + @Input() public formLabelLangKey!: string; + @Input() public dataField!: string; + @Input() public documentForm!: FormGroup; + @Input() public documentFormField!: string; + @Input() public fetchFunction!: (term: string) => Observable<{ id: any; name: any }[]>; + + + protected formatter = (apiData: any) => apiData.name; + + protected searchItem: OperatorFunction = (text$: Observable) => + text$.pipe( + debounceTime(200), + distinctUntilChanged(), + filter((term) => term.length >= 2), + switchMap((term) => this.fetchFunction(term)), + map((items: {id: any, name: any}[]) => items.slice(0, 10)), + ); + + protected onItemSelect(selectedItem: any): void { + this.documentForm.get(this.formId)?.setValue(selectedItem.item.id); + } +} diff --git a/angular/src/app/_components/search-select/search-select.component.html b/angular/src/app/_components/search-select/search-select.component.html new file mode 100644 index 0000000..9bca4b7 --- /dev/null +++ b/angular/src/app/_components/search-select/search-select.component.html @@ -0,0 +1,19 @@ +
+
+

+ +
+
{{ 'basic.pleaseChoose' | translate }}
+
+ + +
+
diff --git a/angular/src/app/_components/search-select/search-select.component.scss b/angular/src/app/_components/search-select/search-select.component.scss new file mode 100644 index 0000000..e69de29 diff --git a/angular/src/app/_components/search-select/search-select.component.spec.ts b/angular/src/app/_components/search-select/search-select.component.spec.ts new file mode 100644 index 0000000..78691b5 --- /dev/null +++ b/angular/src/app/_components/search-select/search-select.component.spec.ts @@ -0,0 +1,23 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { SearchSelectComponent } from './search-select.component'; + +describe('SearchSelectComponent', () => { + let component: SearchSelectComponent; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + declarations: [SearchSelectComponent] + }) + .compileComponents(); + + fixture = TestBed.createComponent(SearchSelectComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/angular/src/app/_components/search-select/search-select.component.ts b/angular/src/app/_components/search-select/search-select.component.ts new file mode 100644 index 0000000..72ef45d --- /dev/null +++ b/angular/src/app/_components/search-select/search-select.component.ts @@ -0,0 +1,253 @@ +import {AfterViewInit, Component, ElementRef, EventEmitter, Input, OnInit, Output, ViewChild} from '@angular/core'; +import {FormGroup} from "@angular/forms"; +import {ListComponent} from "@app/_components/list/list.component"; +import {ListColDefinition} from "@app/_components/list/list-col-definition"; +import {Observable} from "rxjs"; +import {Sort} from "@angular/material/sort"; +import {FilterBarComponent} from "@app/_components/filter-bar/filter-bar.component"; + +@Component({ + selector: 'app-search-select', + templateUrl: './search-select.component.html', + styleUrl: './search-select.component.scss' +}) +export class SearchSelectComponent implements OnInit, AfterViewInit { + @Input() public formId!: string; + @Input() public resultField!: string; + @Input() public formLabelLangKey!: string; + @Input() public documentForm!: FormGroup; + @Input() public documentFormField!: string; + @Input() public getDataFunction!: (index: number, pageSize: number, term?: string) => Observable; + @Input() public onRowSelectedFunction!: Function; + @Input() public dataSet!: any; + @Input() public displayedDataField!: string; + @Input() public displayedDataSubResource!: string; + @Input() public listColDefinitions!: ListColDefinition[]; + @Input() public displayAsButton: boolean; + @Input() public showHeader: boolean; + @Output() rowSelected = new EventEmitter(); + @ViewChild('paragraphRef', {static: false}) paragraphRef!: ElementRef; + @ViewChild("listComponent", {static: false}) listComponent!: ListComponent; + protected readonly SearchSelectComponent = SearchSelectComponent; + + protected selectedRowIndex: number | null = null; + protected searchBoxOpen: boolean; + protected searchBoxInitialized: boolean; + protected searchBoxFilled: boolean; + + constructor() { + this.searchBoxOpen = false; + this.searchBoxInitialized = false; + this.searchBoxFilled = false; + this.displayAsButton = false; + this.showHeader = false; + } + + ngOnInit(): void { + if (this.dataSet !== undefined) { + this.searchBoxFilled = true; + } + } + + ngAfterViewInit(): void { + if (this.dataSet !== undefined) { + this.paragraphRef.nativeElement.textContent = this.dataSet[this.displayedDataField]; + } + } + + onRowSelected = (row: any, index: number) => { + if (this.onRowSelectedFunction !== undefined) { + this.onRowSelectedFunction(row, index); + } else { + this.selectedRowIndex = index; + + const value = this.resultField !== undefined ? row[this.resultField] : row.id; + this.documentForm.get(this.formId)?.setValue(value); + if (this.displayedDataSubResource !== undefined) { + this.paragraphRef.nativeElement.textContent = row[this.displayedDataSubResource][this.displayedDataField]; + } else { + this.paragraphRef.nativeElement.textContent = row[this.displayedDataField]; + } + this.searchBoxFilled = true; + this.searchBoxOpen = false; + } + } + + openSearchBox() { + this.searchBoxOpen = !this.searchBoxOpen; + if (this.searchBoxOpen && !this.searchBoxInitialized) { + this.listComponent.getData(); + this.searchBoxInitialized = true; + } + } + + clearSearch() { + this.paragraphRef.nativeElement.textContent = ''; + this.searchBoxFilled = false; + this.documentForm.get(this.formId)?.setValue(null); + } + + public getPageIndex() { + return this.listComponent.getPageIndex(); + } + + public getPageSize() { + return this.listComponent.getPageSize(); + } + + onSortChange = (sortState: Sort) => { + } + + public static getDefaultColDefAccountsSniping(subResource?: string): ListColDefinition[] { + return [ + ListComponent.getDefaultColPosition(), + { + name: 'profile', + text: 'game_account.profile', + type: ListComponent.COLUMN_TYPE_TEXT_BOLD, + field: 'profile', + sortable: true, + //subResource: subResource, + } as ListColDefinition, + { + name: 'credits', + text: 'game_account.credits', + type: ListComponent.COLUMN_TYPE_NUMBER_BOLD, + field: 'credits', + //subResource: subResource, + sortable: true, + } as ListColDefinition, + { + name: 'running', + text: 'sniping.running', + type: ListComponent.COLUMN_TYPE_BOOLEAN, + field: 'running', + sortable: true, + filterType: FilterBarComponent.FILTER_TYPE_BOOLEAN, + } as ListColDefinition, + { + name: 'blocked', + text: 'sniping.blocked', + type: ListComponent.COLUMN_TYPE_BOOLEAN, + field: 'blocked', + sortable: true, + filterType: FilterBarComponent.FILTER_TYPE_BOOLEAN, + } as ListColDefinition, + { + name: 'snipingCnt1h', + text: 'sniping.snipingCnt1h', + type: ListComponent.COLUMN_TYPE_NUMBER, + field: 'snipingCnt1h', + sortable: true, + } as ListColDefinition, + { + name: 'snipingCnt3h', + text: 'sniping.snipingCnt3h', + type: ListComponent.COLUMN_TYPE_NUMBER, + field: 'snipingCnt3h', + sortable: true, + } as ListColDefinition, + { + name: 'snipingCnt6h', + text: 'sniping.snipingCnt6h', + type: ListComponent.COLUMN_TYPE_NUMBER, + field: 'snipingCnt6h', + sortable: true, + } as ListColDefinition, + { + name: 'snipingCnt12h', + text: 'sniping.snipingCnt12h', + type: ListComponent.COLUMN_TYPE_NUMBER, + field: 'snipingCnt12h', + sortable: true, + } as ListColDefinition, + { + name: 'snipingCnt24h', + text: 'sniping.snipingCnt24h', + type: ListComponent.COLUMN_TYPE_NUMBER, + field: 'snipingCnt24h', + sortable: true, + } as ListColDefinition, + { + name: 'snipingCnt3d', + text: 'sniping.snipingCnt3d', + type: ListComponent.COLUMN_TYPE_NUMBER, + field: 'snipingCnt3d', + sortable: true, + } as ListColDefinition, + { + name: 'snipingCnt1w', + text: 'sniping.snipingCnt1w', + type: ListComponent.COLUMN_TYPE_NUMBER, + field: 'snipingCnt1w', + sortable: true, + } as ListColDefinition, + { + name: 'snipingDate', + text: 'game_account.snipingDate', + type: ListComponent.COLUMN_TYPE_DATE, + field: 'snipingDate', + sortable: true, + } as ListColDefinition, + { + name: 'relistDate', + text: 'game_account.relistDate', + type: ListComponent.COLUMN_TYPE_DATE, + field: 'relistDate', + sortable: true, + } as ListColDefinition, + ]; + } + + public static getDefaultColDefCandidates(subResource?: string): ListColDefinition[] { + return [ + ListComponent.getDefaultColPosition(), + { + name: 'image', + text: 'basic.image', + type: ListComponent.COLUMN_TYPE_COMBINED_IMAGES, + multipleFields: ['cardImageUrl', 'imageUrl', 'rating'], + } as ListColDefinition, + { + name: 'firstname', + text: 'candidate.firstname', + type: ListComponent.COLUMN_TYPE_TEXT_BOLD, + field: 'firstname', + sortingSubResource: 'player', + sortable: true, + } as ListColDefinition, + { + name: 'lastname', + text: 'candidate.lastname', + type: ListComponent.COLUMN_TYPE_TEXT_BOLD, + field: 'lastname', + sortingSubResource: 'player', + sortable: true, + } as ListColDefinition, + { + name: 'nickname', + text: 'candidate.nickname', + type: ListComponent.COLUMN_TYPE_TEXT_BOLD, + field: 'nickname', + sortingSubResource: 'player', + sortable: true, + } as ListColDefinition, + { + name: 'rating', + text: 'candidate.rating', + type: ListComponent.COLUMN_TYPE_TEXT_BOLD, + field: 'rating', + sortable: true, + } as ListColDefinition, + { + name: 'rarityName', + text: 'candidate.rarityName', + type: ListComponent.COLUMN_TYPE_TEXT, + field: 'name', + subResource: 'rarity', + sortingSubResource: 'rarity', + sortable: true, + } as ListColDefinition, + ]; + } +} diff --git a/angular/src/app/_components/toggle/toggle.component.html b/angular/src/app/_components/toggle/toggle.component.html new file mode 100644 index 0000000..310ca90 --- /dev/null +++ b/angular/src/app/_components/toggle/toggle.component.html @@ -0,0 +1,9 @@ +
+ +
+ +
+
\ No newline at end of file diff --git a/angular/src/app/_components/toggle/toggle.component.scss b/angular/src/app/_components/toggle/toggle.component.scss new file mode 100644 index 0000000..e69de29 diff --git a/angular/src/app/_components/toggle/toggle.component.spec.ts b/angular/src/app/_components/toggle/toggle.component.spec.ts new file mode 100644 index 0000000..d11a5b2 --- /dev/null +++ b/angular/src/app/_components/toggle/toggle.component.spec.ts @@ -0,0 +1,23 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { ToggleComponent } from './toggle.component'; + +describe('ToggleComponent', () => { + let component: ToggleComponent; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + declarations: [ToggleComponent] + }) + .compileComponents(); + + fixture = TestBed.createComponent(ToggleComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/angular/src/app/_components/toggle/toggle.component.ts b/angular/src/app/_components/toggle/toggle.component.ts new file mode 100644 index 0000000..491165f --- /dev/null +++ b/angular/src/app/_components/toggle/toggle.component.ts @@ -0,0 +1,23 @@ +import {Component, Input} from '@angular/core'; +import { v4 as uuidv4 } from 'uuid'; +@Component({ + selector: 'app-toggle', + templateUrl: './toggle.component.html', + styleUrl: './toggle.component.scss' +}) +export class ToggleComponent { + @Input() public headline!: string; + @Input() small: boolean = false; + @Input() activeFilterCount: number = 0; + + public isOpened: boolean = false; + protected toggleId: string; + + constructor() { + this.toggleId = uuidv4(); + } + + openToggle() { + this.isOpened = true; + } +} diff --git a/angular/src/app/_forms/apiForms.ts b/angular/src/app/_forms/apiForms.ts new file mode 100644 index 0000000..aea914b --- /dev/null +++ b/angular/src/app/_forms/apiForms.ts @@ -0,0 +1,620 @@ +import { FormGroup, FormControl, Validators } from '@angular/forms'; + +export const accountTradePileItemForm = new FormGroup({ + dbId: new FormControl(null, []), + account: new FormControl(null, []), + candidateItem: new FormControl(null, []), + eaId: new FormControl(null, []), + eaAssetId: new FormControl(null, []), + eaResourceId: new FormControl(null, []), + rareFlag: new FormControl(null, []), + itemType: new FormControl(null, []), + rating: new FormControl(null, []), + contracts: new FormControl(null, []), + playStyle: new FormControl(null, []), + startingBid: new FormControl(null, []), + binPrice: new FormControl(null, []), + individualPrice: new FormControl(null, []), + minRange: new FormControl(null, []), + maxRange: new FormControl(null, []), + lastSalePrice: new FormControl(null, []), + tradeState: new FormControl(null, []), + eaTradeId: new FormControl(null, []), + rebuy: new FormControl(null, []), + leagueId: new FormControl(null, []), + teamId: new FormControl(null, []), + nationId: new FormControl(null, []), + listCnt: new FormControl(null, []), + openBidCnt: new FormControl(null, []), + snipedItem: new FormControl(null, []), + marketAverage: new FormControl(null, []), + creationDate: new FormControl(null, []) +}); + +export const accountTradePileItemJsonldForm = new FormGroup({ + dbId: new FormControl(null, []), + account: new FormControl(null, []), + candidateItem: new FormControl(null, []), + eaId: new FormControl(null, []), + eaAssetId: new FormControl(null, []), + eaResourceId: new FormControl(null, []), + rareFlag: new FormControl(null, []), + itemType: new FormControl(null, []), + rating: new FormControl(null, []), + contracts: new FormControl(null, []), + playStyle: new FormControl(null, []), + startingBid: new FormControl(null, []), + binPrice: new FormControl(null, []), + individualPrice: new FormControl(null, []), + minRange: new FormControl(null, []), + maxRange: new FormControl(null, []), + lastSalePrice: new FormControl(null, []), + tradeState: new FormControl(null, []), + eaTradeId: new FormControl(null, []), + rebuy: new FormControl(null, []), + leagueId: new FormControl(null, []), + teamId: new FormControl(null, []), + nationId: new FormControl(null, []), + listCnt: new FormControl(null, []), + openBidCnt: new FormControl(null, []), + snipedItem: new FormControl(null, []), + marketAverage: new FormControl(null, []), + creationDate: new FormControl(null, []) +}); + +export const candidateForm = new FormGroup({ + dbId: new FormControl(null, []), + rarity: new FormControl(null, []), + candidateStat: new FormControl(null, []), + player: new FormControl(null, []), + firstname: new FormControl(null, []), + lastname: new FormControl(null, []), + nickname: new FormControl(null, []), + fullDisplayInfo: new FormControl(null, []), + eaAssetId: new FormControl(null, [Validators.required]), + eaResourceId: new FormControl(null, [Validators.required]), + rareFlag: new FormControl(null, [Validators.required]), + rarityName: new FormControl(null, []), + image: new FormControl(null, []), + imageUrl: new FormControl(null, []), + cardImageUrl: new FormControl(null, []), + stockCountTotal: new FormControl(null, []), + stockCountReal: new FormControl(null, []), + futBinId: new FormControl(null, []), + futBinName: new FormControl(null, []), + futBinPrice: new FormControl(null, []), + futBinSellingPrice: new FormControl(null, []), + lastFutBinUpdate: new FormControl(null, []), + futWizId: new FormControl(null, []), + futWizPrice: new FormControl(null, []), + futwizName: new FormControl(null, []), + futWizSellingPrice: new FormControl(null, []), + lastFutWizUpdate: new FormControl(null, []), + rating: new FormControl(null, [Validators.required]), + highestBuyBinPrice: new FormControl(null, []), + sellStartingBid: new FormControl(null, []), + sellBinPrice: new FormControl(null, []), + lastFoundMinRange: new FormControl(null, []), + lastFoundMaxRange: new FormControl(null, []), + lastFoundLowestBin: new FormControl(null, []), + lowestBinUpdateDate: new FormControl(null, []), + buy: new FormControl(null, [Validators.required]), + maxBuyPrice: new FormControl(null, []), + buyStyle: new FormControl(null, [Validators.required]), + newBuySelective: new FormControl(null, [Validators.required]), + remove: new FormControl(null, [Validators.required]), + leagueId: new FormControl(null, []), + nationId: new FormControl(null, []), + prio: new FormControl(null, []), + listCnt: new FormControl(null, [Validators.required]), + soldCnt: new FormControl(null, [Validators.required]), + note: new FormControl(null, []), + relevant: new FormControl(null, [Validators.required]), + adjust100: new FormControl(null, [Validators.required]), + directReBuy: new FormControl(null, [Validators.required]), + marketAverage: new FormControl(null, []), + creationDate: new FormControl(null, [Validators.required]) +}); + +export const candidateJsonldForm = new FormGroup({ + dbId: new FormControl(null, []), + rarity: new FormControl(null, []), + candidateStat: new FormControl(null, []), + player: new FormControl(null, []), + firstname: new FormControl(null, []), + lastname: new FormControl(null, []), + nickname: new FormControl(null, []), + fullDisplayInfo: new FormControl(null, []), + eaAssetId: new FormControl(null, [Validators.required]), + eaResourceId: new FormControl(null, [Validators.required]), + rareFlag: new FormControl(null, [Validators.required]), + rarityName: new FormControl(null, []), + image: new FormControl(null, []), + imageUrl: new FormControl(null, []), + cardImageUrl: new FormControl(null, []), + stockCountTotal: new FormControl(null, []), + stockCountReal: new FormControl(null, []), + futBinId: new FormControl(null, []), + futBinName: new FormControl(null, []), + futBinPrice: new FormControl(null, []), + futBinSellingPrice: new FormControl(null, []), + lastFutBinUpdate: new FormControl(null, []), + futWizId: new FormControl(null, []), + futWizPrice: new FormControl(null, []), + futwizName: new FormControl(null, []), + futWizSellingPrice: new FormControl(null, []), + lastFutWizUpdate: new FormControl(null, []), + rating: new FormControl(null, [Validators.required]), + highestBuyBinPrice: new FormControl(null, []), + sellStartingBid: new FormControl(null, []), + sellBinPrice: new FormControl(null, []), + lastFoundMinRange: new FormControl(null, []), + lastFoundMaxRange: new FormControl(null, []), + lastFoundLowestBin: new FormControl(null, []), + lowestBinUpdateDate: new FormControl(null, []), + buy: new FormControl(null, [Validators.required]), + maxBuyPrice: new FormControl(null, []), + buyStyle: new FormControl(null, [Validators.required]), + newBuySelective: new FormControl(null, [Validators.required]), + remove: new FormControl(null, [Validators.required]), + leagueId: new FormControl(null, []), + nationId: new FormControl(null, []), + prio: new FormControl(null, []), + listCnt: new FormControl(null, [Validators.required]), + soldCnt: new FormControl(null, [Validators.required]), + note: new FormControl(null, []), + relevant: new FormControl(null, [Validators.required]), + adjust100: new FormControl(null, [Validators.required]), + directReBuy: new FormControl(null, [Validators.required]), + marketAverage: new FormControl(null, []), + creationDate: new FormControl(null, [Validators.required]) +}); + +export const candidateStatJsonldForm = new FormGroup({ + candidateItem: new FormControl(null, []), + revRl6: new FormControl(null, []), + rl6: new FormControl(null, []), + sold6: new FormControl(null, []), + rat6: new FormControl(null, []), + rev6: new FormControl(null, []), + revRl12: new FormControl(null, []), + rl12: new FormControl(null, []), + sold12: new FormControl(null, []), + rat12: new FormControl(null, []), + rev12: new FormControl(null, []), + revRl24: new FormControl(null, []), + rl24: new FormControl(null, []), + sold24: new FormControl(null, []), + rat24: new FormControl(null, []), + rev24: new FormControl(null, []), + revRl3d: new FormControl(null, []), + rl3d: new FormControl(null, []), + sold3d: new FormControl(null, []), + rat3d: new FormControl(null, []), + rev3d: new FormControl(null, []), + revRl1w: new FormControl(null, []), + rl1w: new FormControl(null, []), + sold1w: new FormControl(null, []), + rat1w: new FormControl(null, []), + rev1w: new FormControl(null, []), + revRl2w: new FormControl(null, []), + rl2w: new FormControl(null, []), + sold2w: new FormControl(null, []), + rat2w: new FormControl(null, []), + rev2w: new FormControl(null, []), + revRl3w: new FormControl(null, []), + rl3w: new FormControl(null, []), + sold3w: new FormControl(null, []), + rat3w: new FormControl(null, []), + rev3w: new FormControl(null, []), + revRl4w: new FormControl(null, []), + rl4w: new FormControl(null, []), + sold4w: new FormControl(null, []), + rat4w: new FormControl(null, []), + rev4w: new FormControl(null, []), + revRl: new FormControl(null, []), + rl: new FormControl(null, []), + sold: new FormControl(null, []), + rat: new FormControl(null, []), + rev: new FormControl(null, []), + snipingRev: new FormControl(null, []), + creationDate: new FormControl(null, []), + lastUpdateDate: new FormControl(null, []) +}); + +export const candidateStockAccountsJsonldForm = new FormGroup({ + candidatesStockAccounts: new FormControl(null, []), + candidatesMissingAccounts: new FormControl(null, []) +}); + +export const configForm = new FormGroup({ + systemActive: new FormControl(null, []), + systemRunning: new FormControl(null, []), + lastUpdateDate: new FormControl(null, []), + lastCheckDate: new FormControl(null, []), + processCnt: new FormControl(null, []), + sleepHourStart: new FormControl(null, [ + Validators.min(0), + Validators.max(23) + ]), + sleepHourEnd: new FormControl(null, [Validators.min(0), Validators.max(23)]), + checkMaxSales: new FormControl(null, []), + numMaxSales: new FormControl(null, [Validators.min(0), Validators.max(20)]) +}); + +export const configJsonldForm = new FormGroup({ + systemActive: new FormControl(null, []), + systemRunning: new FormControl(null, []), + lastUpdateDate: new FormControl(null, []), + lastCheckDate: new FormControl(null, []), + processCnt: new FormControl(null, []), + sleepHourStart: new FormControl(null, [ + Validators.min(0), + Validators.max(23) + ]), + sleepHourEnd: new FormControl(null, [Validators.min(0), Validators.max(23)]), + checkMaxSales: new FormControl(null, []), + numMaxSales: new FormControl(null, [Validators.min(0), Validators.max(20)]) +}); + +export const gameAccountForm = new FormGroup({ + dbId: new FormControl(null, []), + email: new FormControl(null, [Validators.required, Validators.email]), + profile: new FormControl(null, [Validators.required]), + password: new FormControl(null, [Validators.required]), + emailPw: new FormControl(null, []), + credits: new FormControl(null, []), + cntItems: new FormControl(null, []), + cntSoldItems: new FormControl(null, []), + cntInactiveItems: new FormControl(null, []), + active: new FormControl(null, [Validators.required]), + running: new FormControl(null, [Validators.required]), + relist: new FormControl(null, [Validators.required]), + relistDate: new FormControl(null, []), + blocked: new FormControl(null, [Validators.required]), + sniping: new FormControl(null, [Validators.required]), + snipingDate: new FormControl(null, []), + tmOpen: new FormControl(null, [Validators.required]), + tmState: new FormControl(null, []), + dead: new FormControl(null, [Validators.required]), + lockedMsg: new FormControl(null, [Validators.required]), + dynPrices: new FormControl(null, [Validators.required]), + newBuy: new FormControl(null, [Validators.required]), + newBuyDate: new FormControl(null, []), + newBuySelective: new FormControl(null, [Validators.required]), + reBuy: new FormControl(null, [Validators.required]), + rebuyDate: new FormControl(null, []), + connectionDate: new FormControl(null, []), + importWatchlist: new FormControl(null, [Validators.required]), + autoReBuy: new FormControl(null, [Validators.required]), + directReBuy: new FormControl(null, [Validators.required]), + itemMaxBuyPrice: new FormControl(null, [ + Validators.min(0), + Validators.max(15000000) + ]), + revenue: new FormControl(null, []), + futWizValue: new FormControl(null, []), + eaMarketAvgValue: new FormControl(null, []), + mfaCode: new FormControl(null, []), + twoFactorAuthKey: new FormControl(null, []), + login2FaViaApp: new FormControl(null, []), + eaCode1: new FormControl(null, []), + eaCode2: new FormControl(null, []), + eaCode3: new FormControl(null, []), + eaCode4: new FormControl(null, []), + eaCode5: new FormControl(null, []), + eaCode6: new FormControl(null, []), + snipingCnt1h: new FormControl(null, []), + snipingCnt3h: new FormControl(null, []), + snipingCnt6h: new FormControl(null, []), + snipingCnt12h: new FormControl(null, []), + snipingCnt24h: new FormControl(null, []), + snipingCnt3d: new FormControl(null, []), + snipingCnt1w: new FormControl(null, []), + note: new FormControl(null, []), + loopStartDate: new FormControl(null, []), + loopFinishDate: new FormControl(null, []), + creationDate: new FormControl(null, []), + owner: new FormControl(null, []) +}); + +export const gameAccountJsonldForm = new FormGroup({ + dbId: new FormControl(null, []), + email: new FormControl(null, [Validators.required, Validators.email]), + profile: new FormControl(null, [Validators.required]), + password: new FormControl(null, [Validators.required]), + emailPw: new FormControl(null, []), + credits: new FormControl(null, []), + cntItems: new FormControl(null, []), + cntSoldItems: new FormControl(null, []), + cntInactiveItems: new FormControl(null, []), + active: new FormControl(null, [Validators.required]), + running: new FormControl(null, [Validators.required]), + relist: new FormControl(null, [Validators.required]), + relistDate: new FormControl(null, []), + blocked: new FormControl(null, [Validators.required]), + sniping: new FormControl(null, [Validators.required]), + snipingDate: new FormControl(null, []), + tmOpen: new FormControl(null, [Validators.required]), + tmState: new FormControl(null, []), + dead: new FormControl(null, [Validators.required]), + lockedMsg: new FormControl(null, [Validators.required]), + dynPrices: new FormControl(null, [Validators.required]), + newBuy: new FormControl(null, [Validators.required]), + newBuyDate: new FormControl(null, []), + newBuySelective: new FormControl(null, [Validators.required]), + reBuy: new FormControl(null, [Validators.required]), + rebuyDate: new FormControl(null, []), + connectionDate: new FormControl(null, []), + importWatchlist: new FormControl(null, [Validators.required]), + autoReBuy: new FormControl(null, [Validators.required]), + directReBuy: new FormControl(null, [Validators.required]), + itemMaxBuyPrice: new FormControl(null, [ + Validators.min(0), + Validators.max(15000000) + ]), + revenue: new FormControl(null, []), + futWizValue: new FormControl(null, []), + eaMarketAvgValue: new FormControl(null, []), + mfaCode: new FormControl(null, []), + twoFactorAuthKey: new FormControl(null, []), + login2FaViaApp: new FormControl(null, []), + eaCode1: new FormControl(null, []), + eaCode2: new FormControl(null, []), + eaCode3: new FormControl(null, []), + eaCode4: new FormControl(null, []), + eaCode5: new FormControl(null, []), + eaCode6: new FormControl(null, []), + snipingCnt1h: new FormControl(null, []), + snipingCnt3h: new FormControl(null, []), + snipingCnt6h: new FormControl(null, []), + snipingCnt12h: new FormControl(null, []), + snipingCnt24h: new FormControl(null, []), + snipingCnt3d: new FormControl(null, []), + snipingCnt1w: new FormControl(null, []), + note: new FormControl(null, []), + loopStartDate: new FormControl(null, []), + loopFinishDate: new FormControl(null, []), + creationDate: new FormControl(null, []), + owner: new FormControl(null, []) +}); + +export const logAccountCreditJsonldForm = new FormGroup({ + gameAccount: new FormControl(null, []), + credits: new FormControl(null, []), + revenue: new FormControl(null, []), + creationDate: new FormControl(null, []) +}); + +export const logAccountProfitJsonldForm = new FormGroup({ + gameAccount: new FormControl(null, []), + credits: new FormControl(null, []), + revenue: new FormControl(null, []), + tpValue: new FormControl(null, []), + revToday: new FormControl(null, []), + rev3hours: new FormControl(null, []), + rev6hours: new FormControl(null, []), + rev12hours: new FormControl(null, []), + rev24hours: new FormControl(null, []), + rev3days: new FormControl(null, []), + rev1week: new FormControl(null, []), + rev2weeks: new FormControl(null, []), + rev3weeks: new FormControl(null, []), + rev4weeks: new FormControl(null, []), + rev2months: new FormControl(null, []), + rev3months: new FormControl(null, []), + revTotal: new FormControl(null, []), + numSalesToday: new FormControl(null, []), + numSales3hours: new FormControl(null, []), + numSales6hours: new FormControl(null, []), + numSales12hours: new FormControl(null, []), + numSales24hours: new FormControl(null, []), + numSales3days: new FormControl(null, []), + numSales1week: new FormControl(null, []), + numSales2weeks: new FormControl(null, []), + numSales3weeks: new FormControl(null, []), + numSales4weeks: new FormControl(null, []), + numSales2months: new FormControl(null, []), + numSales3months: new FormControl(null, []), + numSalesTotal: new FormControl(null, []), + isDailyProfit: new FormControl(null, []), + creationDate: new FormControl(null, []) +}); + +export const logAccountSoldItemJsonldForm = new FormGroup({ + dbId: new FormControl(null, []), + gameAccount: new FormControl(null, []), + candidateItem: new FormControl(null, []), + eaId: new FormControl(null, []), + contracts: new FormControl(null, []), + playStyle: new FormControl(null, []), + lastSalePrice: new FormControl(null, []), + currentBid: new FormControl(null, []), + startingBid: new FormControl(null, []), + binPrice: new FormControl(null, []), + minRange: new FormControl(null, []), + maxRange: new FormControl(null, []), + tradeState: new FormControl(null, []), + eaTradeId: new FormControl(null, []), + listCnt: new FormControl(null, []), + revenue: new FormControl(null, []), + reBought: new FormControl(null, []), + snipedItem: new FormControl(null, []), + firstListDate: new FormControl(null, []), + creationDate: new FormControl(null, []) +}); + +export const logGeneralJsonldForm = new FormGroup({ + dbId: new FormControl(null, []), + gameAccount: new FormControl(null, []), + candidateItem: new FormControl(null, []), + logType: new FormControl(null, [Validators.required]), + message: new FormControl(null, []), + creationDate: new FormControl(null, []) +}); + +export const logTotalProfitForm = new FormGroup({ + credits: new FormControl(null, []), + revenue: new FormControl(null, []), + tpValueFutwiz: new FormControl(null, []), + tpValueEaAverage: new FormControl(null, []), + revToday: new FormControl(null, []), + rev3hours: new FormControl(null, []), + rev6hours: new FormControl(null, []), + rev12hours: new FormControl(null, []), + rev24hours: new FormControl(null, []), + rev3days: new FormControl(null, []), + rev1week: new FormControl(null, []), + rev2weeks: new FormControl(null, []), + rev3weeks: new FormControl(null, []), + rev4weeks: new FormControl(null, []), + rev2months: new FormControl(null, []), + rev3months: new FormControl(null, []), + revTotal: new FormControl(null, []), + numSalesToday: new FormControl(null, []), + numSales3hours: new FormControl(null, []), + numSales6hours: new FormControl(null, []), + numSales12hours: new FormControl(null, []), + numSales24hours: new FormControl(null, []), + numSales3days: new FormControl(null, []), + numSales1week: new FormControl(null, []), + numSales2weeks: new FormControl(null, []), + numSales3weeks: new FormControl(null, []), + numSales4weeks: new FormControl(null, []), + numSales2months: new FormControl(null, []), + numSales3months: new FormControl(null, []), + numSalesTotal: new FormControl(null, []), + isDailyProfit: new FormControl(null, []), + creationDate: new FormControl(null, []) +}); + +export const logTotalProfitJsonldForm = new FormGroup({ + credits: new FormControl(null, []), + revenue: new FormControl(null, []), + tpValueFutwiz: new FormControl(null, []), + tpValueEaAverage: new FormControl(null, []), + revToday: new FormControl(null, []), + rev3hours: new FormControl(null, []), + rev6hours: new FormControl(null, []), + rev12hours: new FormControl(null, []), + rev24hours: new FormControl(null, []), + rev3days: new FormControl(null, []), + rev1week: new FormControl(null, []), + rev2weeks: new FormControl(null, []), + rev3weeks: new FormControl(null, []), + rev4weeks: new FormControl(null, []), + rev2months: new FormControl(null, []), + rev3months: new FormControl(null, []), + revTotal: new FormControl(null, []), + numSalesToday: new FormControl(null, []), + numSales3hours: new FormControl(null, []), + numSales6hours: new FormControl(null, []), + numSales12hours: new FormControl(null, []), + numSales24hours: new FormControl(null, []), + numSales3days: new FormControl(null, []), + numSales1week: new FormControl(null, []), + numSales2weeks: new FormControl(null, []), + numSales3weeks: new FormControl(null, []), + numSales4weeks: new FormControl(null, []), + numSales2months: new FormControl(null, []), + numSales3months: new FormControl(null, []), + numSalesTotal: new FormControl(null, []), + isDailyProfit: new FormControl(null, []), + creationDate: new FormControl(null, []) +}); + +export const mediaObjectJsonldMediaObjectReadForm = new FormGroup({ + contentUrl: new FormControl(null, []) +}); + +export const modeConfigForm = new FormGroup({ + autoReBuyMinSoldItems: new FormControl(null, [ + Validators.min(0), + Validators.max(20) + ]), + autoReBuyMinLastHours: new FormControl(null, [ + Validators.min(0), + Validators.max(20) + ]) +}); + +export const modeConfigJsonldForm = new FormGroup({ + autoReBuyMinSoldItems: new FormControl(null, [ + Validators.min(0), + Validators.max(20) + ]), + autoReBuyMinLastHours: new FormControl(null, [ + Validators.min(0), + Validators.max(20) + ]) +}); + +export const playerForm = new FormGroup({ + eaAssetId: new FormControl(null, []), + firstname: new FormControl(null, []), + lastname: new FormControl(null, []), + nickname: new FormControl(null, []), + rating: new FormControl(null, []), + creationDate: new FormControl(null, []) +}); + +export const playerJsonldForm = new FormGroup({ + eaAssetId: new FormControl(null, []), + firstname: new FormControl(null, []), + lastname: new FormControl(null, []), + nickname: new FormControl(null, []), + rating: new FormControl(null, []), + creationDate: new FormControl(null, []) +}); + +export const rarityForm = new FormGroup({ + rareFlag: new FormControl(null, []), + name: new FormControl(null, []), + untradable: new FormControl(null, []), + image: new FormControl(null, []), + imageUrl: new FormControl(null, []), + imageBronze: new FormControl(null, []) +}); + +export const rarityJsonldForm = new FormGroup({ + rareFlag: new FormControl(null, []), + name: new FormControl(null, []), + untradable: new FormControl(null, []), + image: new FormControl(null, []), + imageUrl: new FormControl(null, []), + imageBronze: new FormControl(null, []) +}); + +export const systemStatJsonldForm = new FormGroup({ + totalLogProfit: new FormControl(null, []), + config: new FormControl(null, []), + modeConfig: new FormControl(null, []), + numAccounts: new FormControl(null, []), + numDeadAccounts: new FormControl(null, []), + numActiveAccounts: new FormControl(null, []), + numTmOpenAccounts: new FormControl(null, []), + numTmClosedAccounts: new FormControl(null, []), + numBlockedAccounts: new FormControl(null, []), + numRunningAccounts: new FormControl(null, []), + numTradepileItems: new FormControl(null, []), + numSoldTradepileItems: new FormControl(null, []), + numActiveTradepileItems: new FormControl(null, []), + numExpiredTradepileItems: new FormControl(null, []), + numInactiveTradepileItems: new FormControl(null, []), + numCandidates: new FormControl(null, []), + numRelevantCandidates: new FormControl(null, []), + numBuyCandidates: new FormControl(null, []), + totalSnipingRev: new FormControl(null, []) +}); + +export const userJsonldForm = new FormGroup({ + email: new FormControl(null, [Validators.required, Validators.email]), + firstName: new FormControl(null, [Validators.required]), + lastName: new FormControl(null, [Validators.required]), + image: new FormControl(null, []), + imageUrl: new FormControl(null, []), + fullName: new FormControl(null, []), + password: new FormControl(null, []), + active: new FormControl(null, []), + createdAt: new FormControl(null, []) +}); diff --git a/angular/src/app/_guards/admin.guard.spec.ts b/angular/src/app/_guards/admin.guard.spec.ts new file mode 100644 index 0000000..0cb3634 --- /dev/null +++ b/angular/src/app/_guards/admin.guard.spec.ts @@ -0,0 +1,17 @@ +import { TestBed } from '@angular/core/testing'; +import { CanActivateFn } from '@angular/router'; + +import { adminGuard } from './admin.guard'; + +describe('adminGuard', () => { + const executeGuard: CanActivateFn = (...guardParameters) => + TestBed.runInInjectionContext(() => adminGuard(...guardParameters)); + + beforeEach(() => { + TestBed.configureTestingModule({}); + }); + + it('should be created', () => { + expect(executeGuard).toBeTruthy(); + }); +}); diff --git a/angular/src/app/_guards/admin.guard.ts b/angular/src/app/_guards/admin.guard.ts new file mode 100644 index 0000000..bcb4241 --- /dev/null +++ b/angular/src/app/_guards/admin.guard.ts @@ -0,0 +1,12 @@ +import {CanActivateFn, Router} from '@angular/router'; +import {inject} from "@angular/core"; +import {AccountService} from "@app/_services"; + +export const adminGuard: CanActivateFn = (route, state) => { + const accountService = inject(AccountService); + if (accountService.isLoggedIn() && accountService.isUserAdmin()) { + return true; + } + inject(Router).navigate(['/account/login'], { queryParams: { returnUrl: state.url }}); + return false; +}; diff --git a/angular/src/app/_guards/game-account-owner.guard.spec.ts b/angular/src/app/_guards/game-account-owner.guard.spec.ts new file mode 100644 index 0000000..3c1c27e --- /dev/null +++ b/angular/src/app/_guards/game-account-owner.guard.spec.ts @@ -0,0 +1,17 @@ +import { TestBed } from '@angular/core/testing'; +import { CanActivateFn } from '@angular/router'; + +import { gameAccountOwnerGuard } from './game-account-owner.guard'; + +describe('gameAccountOwnerGuard', () => { + const executeGuard: CanActivateFn = (...guardParameters) => + TestBed.runInInjectionContext(() => gameAccountOwnerGuard(...guardParameters)); + + beforeEach(() => { + TestBed.configureTestingModule({}); + }); + + it('should be created', () => { + expect(executeGuard).toBeTruthy(); + }); +}); diff --git a/angular/src/app/_guards/game-account-owner.guard.ts b/angular/src/app/_guards/game-account-owner.guard.ts new file mode 100644 index 0000000..b9a6b7d --- /dev/null +++ b/angular/src/app/_guards/game-account-owner.guard.ts @@ -0,0 +1,27 @@ +import { CanActivateFn, Router } from '@angular/router'; +import { inject } from "@angular/core"; +import { map } from 'rxjs/operators'; +import {GameAccountService} from "@app/core/api/v1"; + +export const gameAccountOwnerGuard: CanActivateFn = (route, state) => { + const gameAccountService = inject(GameAccountService); + const router = inject(Router); + const gameAccountId = route.paramMap.get('id'); + + if (!gameAccountId) { + router.navigate(['/error']); // Oder eine andere geeignete Route + return false; + } + + return gameAccountService.gameAccountsIdGet(gameAccountId).pipe( + map(gameAccount => { + return true; + // if (isOwner) { + // return true; + // } else { + // router.navigate(['/' + ROUTE_DASHBOARD]); // Oder eine andere geeignete Route + // return false; + // } + }) + ); +}; \ No newline at end of file diff --git a/angular/src/app/_guards/sales.guard.spec.ts b/angular/src/app/_guards/sales.guard.spec.ts new file mode 100644 index 0000000..d78c234 --- /dev/null +++ b/angular/src/app/_guards/sales.guard.spec.ts @@ -0,0 +1,17 @@ +import { TestBed } from '@angular/core/testing'; +import { CanActivateFn } from '@angular/router'; + +import { salesGuard } from './sales.guard'; + +describe('salesGuard', () => { + const executeGuard: CanActivateFn = (...guardParameters) => + TestBed.runInInjectionContext(() => salesGuard(...guardParameters)); + + beforeEach(() => { + TestBed.configureTestingModule({}); + }); + + it('should be created', () => { + expect(executeGuard).toBeTruthy(); + }); +}); diff --git a/angular/src/app/_guards/sales.guard.ts b/angular/src/app/_guards/sales.guard.ts new file mode 100644 index 0000000..7941907 --- /dev/null +++ b/angular/src/app/_guards/sales.guard.ts @@ -0,0 +1,13 @@ +import {CanActivateFn, Router} from '@angular/router'; +import {inject} from "@angular/core"; +import {AccountService} from "@app/_services"; +import {Role} from "@app/_helpers/role"; + +export const salesGuard: CanActivateFn = (route, state) => { + const accountService = inject(AccountService); + if (accountService.isLoggedIn() && accountService.userHasRole(Role.ROLE_ADMIN)) { + return true; + } + inject(Router).navigate(['/account/login'], { queryParams: { returnUrl: state.url }}); + return false; +}; diff --git a/angular/src/app/_guards/user.guard.spec.ts b/angular/src/app/_guards/user.guard.spec.ts new file mode 100644 index 0000000..202419b --- /dev/null +++ b/angular/src/app/_guards/user.guard.spec.ts @@ -0,0 +1,17 @@ +import { TestBed } from '@angular/core/testing'; +import { CanActivateFn } from '@angular/router'; + +import { userGuard } from './user.guard'; + +describe('userGuardGuard', () => { + const executeGuard: CanActivateFn = (...guardParameters) => + TestBed.runInInjectionContext(() => userGuard(...guardParameters)); + + beforeEach(() => { + TestBed.configureTestingModule({}); + }); + + it('should be created', () => { + expect(executeGuard).toBeTruthy(); + }); +}); diff --git a/angular/src/app/_guards/user.guard.ts b/angular/src/app/_guards/user.guard.ts new file mode 100644 index 0000000..5e1c4ed --- /dev/null +++ b/angular/src/app/_guards/user.guard.ts @@ -0,0 +1,13 @@ +import {CanActivateFn, Router} from '@angular/router'; +import {inject} from "@angular/core"; +import {AccountService} from "@app/_services"; +import {Role} from "@app/_helpers/role"; + +export const userGuard: CanActivateFn = (route, state) => { + const accountService = inject(AccountService); + if (accountService.isLoggedIn() && accountService.userHasRole(Role.ROLE_USER)) { + return true; + } + inject(Router).navigate(['/account/login'], { queryParams: { returnUrl: state.url }}); + return false; +}; diff --git a/angular/src/app/_helpers/app-helper.service.ts b/angular/src/app/_helpers/app-helper.service.ts new file mode 100644 index 0000000..0e1f240 --- /dev/null +++ b/angular/src/app/_helpers/app-helper.service.ts @@ -0,0 +1,86 @@ +import {DomSanitizer, SafeHtml} from "@angular/platform-browser"; +import {Injectable} from "@angular/core"; +import {NgbModal, NgbModalOptions} from "@ng-bootstrap/ng-bootstrap"; +import {ModalStatus} from "@app/_helpers/modal.states"; + +@Injectable({providedIn: 'root'}) +export class AppHelperService { + + constructor( + private sanitizer: DomSanitizer, + private modalService: NgbModal, + ) { + } + + public extractId(iri: string | undefined | null): string { + if (iri !== undefined && iri !== null) { + const iriRegex = /\/(\d+)$/; + const match = iri.match(iriRegex); + if (match && match[1]) { + return match[1]; + } + } + return ""; + } + + public convertDate(dateString: string | null, withTime = false) { + // number 10 for input date (2024-03-15) + // number 16 for input datetime-local (2024-04-28T03:22) + if (dateString !== null) { + const date = new Date(dateString); + return date.toISOString().slice(0, withTime ? 16 : 10); + } + return ""; + } + + public getSafeLongtext(longtext: any): SafeHtml { + if (longtext) { + return this.sanitizer.bypassSecurityTrustHtml(longtext.replace(/\n/g, '
')); + } + return false; + } + + public getModalOptions(): NgbModalOptions { + return {centered: true} as NgbModalOptions; + } + + public openModal(component: any, data: any, callback?: (callbackParam?: any) => void, callbackParam?: any): Promise { + const modalRef = this.modalService.open(component); + for (const key in data) { + modalRef.componentInstance[key] = data[key]; + } + + return modalRef.componentInstance.submit.subscribe((modalStatus: ModalStatus) => { + if (modalStatus === ModalStatus.Submitted) { + modalRef.dismiss(); + if (callback) { + callback(callbackParam); + } + } + }); + } + + public assertType(value: any, type: string): asserts value is T { + if (typeof value !== type) { + throw new Error(`Expected ${type} but received ${typeof value}`); + } + } + + public getResourceLink(element: any, subResource?: any): string | null { + let resourceLink: string = '/'; + element = subResource !== undefined ? element[subResource] : element; + if (element === undefined) { + return null; + } + return resourceLink + '/' + this.extractId(element['id']); + } + + public getLink(element: any, url: any): string { + return url + "/" + this.extractId(element['id']); + } + + public dumpObject(obj: any): string { + return JSON.stringify(obj, null, 2); // Das `null, 2` formatiert das JSON mit Einrückungen + } + +} \ No newline at end of file diff --git a/angular/src/app/_helpers/error.interceptor.ts b/angular/src/app/_helpers/error.interceptor.ts new file mode 100644 index 0000000..d914796 --- /dev/null +++ b/angular/src/app/_helpers/error.interceptor.ts @@ -0,0 +1,38 @@ +import { Injectable } from '@angular/core'; +import { HttpRequest, HttpHandler, HttpEvent, HttpInterceptor, HttpResponse } from '@angular/common/http'; +import { Observable, throwError } from 'rxjs'; +import { catchError, tap } from 'rxjs/operators'; + +import { AccountService, AlertService } from '@app/_services'; + +@Injectable() +export class ErrorInterceptor implements HttpInterceptor { + constructor( + private accountService: AccountService, + private alertService: AlertService, + ) {} + + intercept(request: HttpRequest, next: HttpHandler): Observable> { + return next.handle(request).pipe( + tap(evt => { + if (evt instanceof HttpResponse) { + if ((request.method === 'POST' || request.method === 'PATCH') && evt.status === 200) { + // Erfolgsmeldung für POST und PATCH + this.alertService.success('Saved', {autoClose: true}); + } + } + }), + catchError(err => { + if ([401, 403].includes(err.status) && this.accountService.userValue) { + // auto logout if 401 or 403 response returned from api + this.accountService.logout(); + } + console.log(err); + this.alertService.error(err.message + ' - ' + err.error); + + const error = err.error?.message || err.statusText; + return throwError(() => error); + }) + ); + } +} \ No newline at end of file diff --git a/angular/src/app/_helpers/formgroup.initializer.ts b/angular/src/app/_helpers/formgroup.initializer.ts new file mode 100644 index 0000000..b308ee1 --- /dev/null +++ b/angular/src/app/_helpers/formgroup.initializer.ts @@ -0,0 +1,12 @@ +import {FormGroup} from "@angular/forms"; + +export class FormGroupInitializer { + public static initFormGroup(formGroup: FormGroup, model: any) { + for (const controlName in formGroup.controls) { + if (formGroup.controls.hasOwnProperty(controlName)) { + formGroup.patchValue({[controlName]: model[controlName] ?? null}); + } + } + return formGroup; + } +} \ No newline at end of file diff --git a/angular/src/app/_helpers/index.ts b/angular/src/app/_helpers/index.ts new file mode 100644 index 0000000..baef006 --- /dev/null +++ b/angular/src/app/_helpers/index.ts @@ -0,0 +1,2 @@ +export * from './error.interceptor'; +export * from './jwt.interceptor'; diff --git a/angular/src/app/_helpers/jwt.interceptor.ts b/angular/src/app/_helpers/jwt.interceptor.ts new file mode 100644 index 0000000..85a2550 --- /dev/null +++ b/angular/src/app/_helpers/jwt.interceptor.ts @@ -0,0 +1,27 @@ +import { Injectable } from '@angular/core'; +import { HttpRequest, HttpHandler, HttpEvent, HttpInterceptor } from '@angular/common/http'; +import { Observable } from 'rxjs'; + +import { environment } from '@environments/environment'; +import { AccountService } from '@app/_services'; + +@Injectable() +export class JwtInterceptor implements HttpInterceptor { + constructor(private accountService: AccountService) { } + + intercept(request: HttpRequest, next: HttpHandler): Observable> { + // add auth header with jwt if user is logged in and request is to the api url + const user = this.accountService.userValue; + const isLoggedIn = user && user.token; + const isApiUrl = request.url.startsWith(environment.apiUrl); + if (isLoggedIn && isApiUrl) { + request = request.clone({ + setHeaders: { + Authorization: `Bearer ${user.token}` + } + }); + } + + return next.handle(request); + } +} \ No newline at end of file diff --git a/angular/src/app/_helpers/loading-interceptor.service.ts b/angular/src/app/_helpers/loading-interceptor.service.ts new file mode 100644 index 0000000..175c0fa --- /dev/null +++ b/angular/src/app/_helpers/loading-interceptor.service.ts @@ -0,0 +1,21 @@ +import { Injectable } from '@angular/core'; +import { HttpRequest, HttpHandler, HttpEvent, HttpInterceptor } from '@angular/common/http'; +import {finalize, Observable} from 'rxjs'; + +import {LoadingService} from "@app/_services/loading.service"; + +@Injectable() +export class LoadingInterceptor implements HttpInterceptor { + constructor( + private loadingService: LoadingService + ) { } + + intercept(request: HttpRequest, next: HttpHandler): Observable> { + this.loadingService.setLoading(true); + return next.handle(request).pipe( + finalize(() => { + this.loadingService.setLoading(false); + }) + ); + } +} \ No newline at end of file diff --git a/angular/src/app/_helpers/modal.states.ts b/angular/src/app/_helpers/modal.states.ts new file mode 100644 index 0000000..31a5f71 --- /dev/null +++ b/angular/src/app/_helpers/modal.states.ts @@ -0,0 +1,4 @@ +export enum ModalStatus { + Cancelled = 'Cancelled', + Submitted = 'Submitted' +} \ No newline at end of file diff --git a/angular/src/app/_helpers/price-calculator.service.ts b/angular/src/app/_helpers/price-calculator.service.ts new file mode 100644 index 0000000..d9ddd69 --- /dev/null +++ b/angular/src/app/_helpers/price-calculator.service.ts @@ -0,0 +1,116 @@ +import { Injectable } from '@angular/core'; +import {FormGroup} from "@angular/forms"; +import {TranslateService} from "@ngx-translate/core"; +import {PriceError} from "@app/_models/priceError"; + +@Injectable({ + providedIn: 'root' +}) +export class PriceCalculatorService { + + + constructor( + protected translateService: TranslateService, + ) { + } + + public getCorrectPrice(event: FocusEvent, form: FormGroup) { + const eventElement = event.target as HTMLInputElement; + if (form.get(eventElement.id)?.value !== null && form.get(eventElement.id)?.value !== '') { + let validPrice = this.calculateValidPrice(Number(eventElement.value)); + form.get(eventElement.id)?.setValue(validPrice); + } + } + + + public calculateValidPrice(price: number): number { + price = Math.floor(price); + + if (price < 150) return 150; + if (price < 1000) return price - (price % 50); + if (price < 10000) return price - (price % 100); + if (price < 50000) return price - (price % 250); + if (price < 100000) return price - (price % 500); + return price - (price % 1000); + } + + public checkPriceConstellation( + sellStartingBid: number | string, + sellPriceBin: number | string, + lastFoundMinRange: number | string | undefined, + lastFoundMaxRange: number | string | undefined, + ): PriceError { + + let res = { + message: '', + error: false + } as PriceError; + + if ((sellStartingBid !== null && sellStartingBid !== '') && (sellPriceBin === null || sellPriceBin === '')) { + res.error = true; + res.message = this.translateService.instant('errors.sellPriceBinSellStartingBid'); + return res; + } + + if ((sellPriceBin !== null && sellPriceBin !== '') && (sellStartingBid === null || sellStartingBid === '')) { + res.error = true; + res.message = this.translateService.instant('errors.sellStartingBidSellPriceBin'); + return res; + } + + if (sellPriceBin <= sellStartingBid && (sellStartingBid !== null && sellStartingBid !== '') && (sellPriceBin !== null && sellPriceBin !== '')) { + res.error = true; + res.message = this.translateService.instant('errors.sellPriceBinSmallerSellStartingBid'); + return res; + } + + if (sellStartingBid >= sellPriceBin && (sellStartingBid !== null && sellStartingBid !== '') && (sellPriceBin !== null && sellPriceBin !== '')) { + res.error = true; + res.message = this.translateService.instant('errors.sellStartingBidLargerSellPriceBin'); + return res; + } + + if (lastFoundMinRange) { + if (sellStartingBid < lastFoundMinRange && (sellStartingBid !== null && sellStartingBid !== '')) { + res.error = true; + res.message = this.translateService.instant('errors.sellStartingBidSmallerLastFoundMinRange'); + return res; + } + } + + if (lastFoundMaxRange) { + if (sellPriceBin > lastFoundMaxRange && (sellPriceBin !== null && sellPriceBin !== '')) { + res.error = true; + res.message = this.translateService.instant('errors.sellPriceBinLargerLastFoundMaxRange'); + return res; + } + } + + if (lastFoundMinRange && lastFoundMaxRange) { + if (lastFoundMaxRange <= lastFoundMinRange) { + res.error = true; + res.message = this.translateService.instant('errors.sellStartingBidSellPriceBin'); + return res; + } + + if (lastFoundMinRange >= lastFoundMaxRange) { + res.error = true; + res.message = this.translateService.instant('errors.lastFoundMinRangeLargerLastFoundMaxRange'); + return res; + } + if ((lastFoundMinRange !== '') && (lastFoundMaxRange === '')) { + res.error = true; + res.message = this.translateService.instant('errors.lastFoundMaxRangeLastFoundMinRange'); + return res; + } + + if ((lastFoundMaxRange !== null && lastFoundMaxRange !== '') && (lastFoundMinRange === '')) { + res.error = true; + res.message = this.translateService.instant('errors.lastFoundMinRangeLastFoundMaxRange'); + return res; + } + } + + return res; + } +} \ No newline at end of file diff --git a/angular/src/app/_helpers/property.interceptor.ts b/angular/src/app/_helpers/property.interceptor.ts new file mode 100644 index 0000000..4fef097 --- /dev/null +++ b/angular/src/app/_helpers/property.interceptor.ts @@ -0,0 +1,75 @@ +import { Injectable } from '@angular/core'; +import { + HttpInterceptor, + HttpRequest, + HttpHandler, + HttpEvent, HttpResponse, +} from '@angular/common/http'; +import { Observable } from 'rxjs'; +import { map } from 'rxjs/operators'; + +@Injectable() +export class PropertyInterceptor implements HttpInterceptor { + intercept( + request: HttpRequest, + next: HttpHandler + ): Observable> { + return next.handle(request).pipe( + map((event) => { + if (event instanceof HttpResponse && event.body) { + let modifiedBody; + + if (Array.isArray(event.body)) { + // Wenn es sich um ein Array von Ressourcen handelt + modifiedBody = this.mapDataItems(event.body); + } else if (event.body['hydra:member']) { + // Wenn es sich um eine Ressourcenkollektion handelt + modifiedBody = { + ...event.body, + 'hydra:member': this.mapDataItems( + event.body['hydra:member'] + ), + }; + } else { + // Wenn es sich um eine einzelne Ressource handelt + modifiedBody = this.mapDataItem(event.body); + } + + return event.clone({ + body: modifiedBody, + }); + } + + return event; + }) + ); + } + + private mapDataItems(items: any[]): any[] { + return items.map((item) => this.mapDataItem(item)); + } + + private mapDataItem(item: any): any { + if (item && typeof item === 'object') { + // Wenn es ein Objekt ist, überprüfe rekursiv + const mappedItem = { ...item }; + + for (const key in mappedItem) { + if (mappedItem.hasOwnProperty(key) && key === '@id') { + mappedItem['id'] = mappedItem[key]; + delete mappedItem[key]; + } else if (Array.isArray(mappedItem[key])) { + // Wenn es sich um ein Array handelt, überprüfe rekursiv jedes Element + mappedItem[key] = this.mapDataItems(mappedItem[key]); + } else if (mappedItem[key] && typeof mappedItem[key] === 'object') { + // Wenn es ein Objekt ist, überprüfe rekursiv + mappedItem[key] = this.mapDataItem(mappedItem[key]); + } + } + + return mappedItem; + } + + return item; + } +} diff --git a/angular/src/app/_helpers/role.ts b/angular/src/app/_helpers/role.ts new file mode 100644 index 0000000..59b9774 --- /dev/null +++ b/angular/src/app/_helpers/role.ts @@ -0,0 +1,6 @@ + +export class Role { + public static ROLE_ADMIN: string = 'ROLE_ADMIN'; + public static ROLE_USER: string = 'ROLE_USER'; + public static ROLE_SALES: string = 'ROLE_SALES'; +} diff --git a/angular/src/app/_models/alert.ts b/angular/src/app/_models/alert.ts new file mode 100644 index 0000000..e623372 --- /dev/null +++ b/angular/src/app/_models/alert.ts @@ -0,0 +1,25 @@ +export class Alert { + id?: string; + type?: AlertType; + message?: string; + autoClose?: boolean; + keepAfterRouteChange?: boolean; + fade?: boolean; + + constructor(init?:Partial) { + Object.assign(this, init); + } +} + +export enum AlertType { + Success, + Error, + Info, + Warning +} + +export class AlertOptions { + id?: string; + autoClose?: boolean; + keepAfterRouteChange?: boolean; +} \ No newline at end of file diff --git a/angular/src/app/_models/index.ts b/angular/src/app/_models/index.ts new file mode 100644 index 0000000..a039b12 --- /dev/null +++ b/angular/src/app/_models/index.ts @@ -0,0 +1,2 @@ +export * from './alert'; +export * from './user'; \ No newline at end of file diff --git a/angular/src/app/_models/orderFilter.ts b/angular/src/app/_models/orderFilter.ts new file mode 100644 index 0000000..d4c88d1 --- /dev/null +++ b/angular/src/app/_models/orderFilter.ts @@ -0,0 +1,6 @@ +export type OrderFilter = 'asc' | 'desc' | undefined; +export const OrderFilter = { + Asc: 'asc' as OrderFilter, + Desc: 'desc' as OrderFilter, + Undefined: undefined as OrderFilter +} \ No newline at end of file diff --git a/angular/src/app/_models/priceError.ts b/angular/src/app/_models/priceError.ts new file mode 100644 index 0000000..b54f310 --- /dev/null +++ b/angular/src/app/_models/priceError.ts @@ -0,0 +1,4 @@ +export interface PriceError { + message: string; + error: boolean; +} \ No newline at end of file diff --git a/angular/src/app/_models/snipingResponse.ts b/angular/src/app/_models/snipingResponse.ts new file mode 100644 index 0000000..fa06b50 --- /dev/null +++ b/angular/src/app/_models/snipingResponse.ts @@ -0,0 +1,11 @@ +export interface SnipingResponse { + messages: string[]; + excludedAccountIds: number[], + errorAccountIds: number[], + snipingAccountIds: number[], + abortSniping: boolean, + boughtItems: number; + priceCheckFoundItems: number; + priceCheckFoundPrices: number[]; + priceCheckMessages: string[]; +} \ No newline at end of file diff --git a/angular/src/app/_models/user.ts b/angular/src/app/_models/user.ts new file mode 100644 index 0000000..e2c3bd7 --- /dev/null +++ b/angular/src/app/_models/user.ts @@ -0,0 +1,12 @@ +import {UserJsonld} from "@app/core/api/v1"; + +export class User { + id?: string; + email?: string; + password?: string; + firstName?: string; + lastName?: string; + roles?: string[]; + token?: string; + userResource?: UserJsonld; +} diff --git a/angular/src/app/_services/account.service.ts b/angular/src/app/_services/account.service.ts new file mode 100644 index 0000000..84defb6 --- /dev/null +++ b/angular/src/app/_services/account.service.ts @@ -0,0 +1,101 @@ +import { Injectable } from '@angular/core'; +import { Router } from '@angular/router'; +import { HttpClient } from '@angular/common/http'; +import { BehaviorSubject, Observable } from 'rxjs'; +import { map } from 'rxjs/operators'; + +import { environment } from '@environments/environment'; +import { User } from '@app/_models'; + +@Injectable({ providedIn: 'root' }) +export class AccountService { + + private userSubject: BehaviorSubject; + public user: Observable; + + constructor( + private router: Router, + private http: HttpClient + ) { + this.userSubject = new BehaviorSubject(JSON.parse(localStorage.getItem('user')!)); + this.user = this.userSubject.asObservable(); + } + + public get userValue() { + return this.userSubject.value; + } + + login(email: string, password: string) { + return this.http.post(`${environment.apiUrl}/auth`, { email, password }) + .pipe(map(user => { + // store user details and jwt token in local storage to keep user logged in between page refreshes + localStorage.setItem('user', JSON.stringify(user)); + this.userSubject.next(user); + return user; + })); + } + + logout() { + // remove user from local storage and set current user to null + localStorage.removeItem('user'); + this.userSubject.next(null); + this.router.navigate(['/account/login']); + } + + isLoggedIn() { + return this.userValue !== null; + } + + isUserAdmin(): boolean { + if (this.userValue && this.userValue?.roles) { + return this.userValue?.roles?.includes('ROLE_ADMIN'); + } + return false; + } + + userHasRole(role: string): boolean { + if (this.userValue && this.userValue?.roles) { + return this.userValue?.roles?.includes(role); + } + return false; + } + + register(user: User) { + return this.http.post(`${environment.apiUrl}/users/register`, user); + } + + getAll() { + return this.http.get(`${environment.apiUrl}/users`); + } + + getById(id: string) { + return this.http.get(`${environment.apiUrl}/users/${id}`); + } + + update(id: string, params: any) { + return this.http.put(`${environment.apiUrl}/users/${id}`, params) + .pipe(map(x => { + // update stored user if the logged in user updated their own record + if (id == this.userValue?.id) { + // update local storage + const user = { ...this.userValue, ...params }; + localStorage.setItem('user', JSON.stringify(user)); + + // publish updated user to subscribers + this.userSubject.next(user); + } + return x; + })); + } + + delete(id: string) { + return this.http.delete(`${environment.apiUrl}/users/${id}`) + .pipe(map(x => { + // auto logout if the logged in user deleted their own record + if (id == this.userValue?.id) { + this.logout(); + } + return x; + })); + } +} diff --git a/angular/src/app/_services/alert.service.ts b/angular/src/app/_services/alert.service.ts new file mode 100644 index 0000000..9ecd8c4 --- /dev/null +++ b/angular/src/app/_services/alert.service.ts @@ -0,0 +1,44 @@ +import { Injectable } from '@angular/core'; +import { Observable, Subject } from 'rxjs'; +import { filter } from 'rxjs/operators'; + +import { Alert, AlertType, AlertOptions } from '@app/_models'; + +@Injectable({ providedIn: 'root' }) +export class AlertService { + private subject = new Subject(); + private defaultId = 'default-alert'; + + // enable subscribing to alerts observable + onAlert(id = this.defaultId): Observable { + return this.subject.asObservable().pipe(filter(x => x && x.id === id)); + } + + // convenience methods + success(message: string, options?: AlertOptions) { + this.alert(new Alert({ ...options, type: AlertType.Success, message })); + } + + error(message: string, options?: AlertOptions) { + this.alert(new Alert({ ...options, type: AlertType.Error, message })); + } + + info(message: string, options?: AlertOptions) { + this.alert(new Alert({ ...options, type: AlertType.Info, message })); + } + + warn(message: string, options?: AlertOptions) { + this.alert(new Alert({ ...options, type: AlertType.Warning, message })); + } + + // main alert method + alert(alert: Alert) { + alert.id = alert.id || this.defaultId; + this.subject.next(alert); + } + + // clear alerts + clear(id = this.defaultId) { + this.subject.next(new Alert({ id })); + } +} \ No newline at end of file diff --git a/angular/src/app/_services/data-import.service.ts b/angular/src/app/_services/data-import.service.ts new file mode 100644 index 0000000..76a8231 --- /dev/null +++ b/angular/src/app/_services/data-import.service.ts @@ -0,0 +1,65 @@ +import { Injectable } from '@angular/core'; +import {HttpClient, HttpHeaders} from "@angular/common/http"; +import {User} from "@app/_models"; +import {environment} from "@environments/environment"; + +@Injectable({ + providedIn: 'root' +}) +export class DataImportService { + + constructor( + private httpClient: HttpClient + ) { + + } + + futwizImport( + futwizCandidateUrl: string, + futbinCandidateUrl: string, + updateCandidate: boolean = false, + buyCandidate: boolean = false, + relevantCandidate: boolean = false, + futwizCandidateHtml: string | null, + bid: number | null, + bin: number | null, + optionalEaResourceId: number | null, + ) { + const formData = new FormData(); + formData.append('futwizCandidateUrl', futwizCandidateUrl); + formData.append('futbinCandidateUrl', futbinCandidateUrl); + formData.append('updateCandidate', updateCandidate ? '1' : '0'); + formData.append('buyCandidate', buyCandidate ? '1' : '0'); + formData.append('relevantCandidate', relevantCandidate ? '1' : '0'); + if (futwizCandidateHtml !== null && futwizCandidateHtml !== "") { + formData.append('futwizCandidateHtml', futwizCandidateHtml); + } + if (bid !== null) { + formData.append('bid', bid.toString()); + } + if (bin !== null) { + formData.append('bin', bin.toString()); + } + if (optionalEaResourceId !== null) { + formData.append('optionalEaResourceId', optionalEaResourceId.toString()); + } + + return this.httpClient.post( + `${environment.apiUrl}/data-import/import-futwiz-player`, + formData + ); + } + + eaDataImport() { + return this.httpClient.get( + `${environment.apiUrl}/data-import/import-ea-data` + ); + } + + futwizRaritiesImport() { + return this.httpClient.get( + `${environment.apiUrl}/data-import/import-futwiz-rarities` + ); + } + +} diff --git a/angular/src/app/_services/ea-data-connect.service.ts b/angular/src/app/_services/ea-data-connect.service.ts new file mode 100644 index 0000000..e21d1ba --- /dev/null +++ b/angular/src/app/_services/ea-data-connect.service.ts @@ -0,0 +1,35 @@ +import { Injectable } from '@angular/core'; +import {HttpClient, HttpHeaders} from "@angular/common/http"; +import {User} from "@app/_models"; +import {environment} from "@environments/environment"; + +@Injectable({ + providedIn: 'root' +}) +export class EaDataConnectService { + + constructor( + private httpClient: HttpClient + ) { + + } + + connectAccount(accountId: string) { + const formData = new FormData(); + formData.append('accountId', accountId.toString()); + return this.httpClient.post( + `${environment.apiUrl}/ea-data-connect/connect-account`, + formData + ); + } + + deleteCachefile(accountId: string) { + const formData = new FormData(); + formData.append('accountId', accountId.toString()); + return this.httpClient.post( + `${environment.apiUrl}/ea-data-connect/delete-cache-file`, + formData + ); + } + +} diff --git a/angular/src/app/_services/index.ts b/angular/src/app/_services/index.ts new file mode 100644 index 0000000..a2b99f0 --- /dev/null +++ b/angular/src/app/_services/index.ts @@ -0,0 +1,2 @@ +export * from './account.service'; +export * from './alert.service'; diff --git a/angular/src/app/_services/loading.service.ts b/angular/src/app/_services/loading.service.ts new file mode 100644 index 0000000..61517ea --- /dev/null +++ b/angular/src/app/_services/loading.service.ts @@ -0,0 +1,20 @@ +import { Injectable } from '@angular/core'; +import { BehaviorSubject, Observable } from 'rxjs'; + +@Injectable({ + providedIn: 'root' +}) +export class LoadingService { + private loadingSubject: BehaviorSubject = new BehaviorSubject(false); + public loading: Observable = this.loadingSubject.asObservable(); + + constructor() { } + + setLoading(loading: boolean): void { + this.loadingSubject.next(loading); + } + + getLoading(): Observable { + return this.loading; + } +} \ No newline at end of file diff --git a/angular/src/app/_services/log.service.ts b/angular/src/app/_services/log.service.ts new file mode 100644 index 0000000..6dc254f --- /dev/null +++ b/angular/src/app/_services/log.service.ts @@ -0,0 +1,23 @@ +import { Injectable } from '@angular/core'; +import {HttpClient, HttpHeaders} from "@angular/common/http"; +import {User} from "@app/_models"; +import {environment} from "@environments/environment"; + +@Injectable({ + providedIn: 'root' +}) +export class LogService { + + constructor( + private httpClient: HttpClient + ) { + + } + + getLogs(lines: number) { + return this.httpClient.get( + `${environment.apiUrl}/logs/logs/${lines}`, + ); + } + +} diff --git a/angular/src/app/_services/sniping.service.ts b/angular/src/app/_services/sniping.service.ts new file mode 100644 index 0000000..462d447 --- /dev/null +++ b/angular/src/app/_services/sniping.service.ts @@ -0,0 +1,100 @@ +import { Injectable } from '@angular/core'; +import {HttpClient, HttpHeaders} from "@angular/common/http"; +import {User} from "@app/_models"; +import {environment} from "@environments/environment"; + +@Injectable({ + providedIn: 'root' +}) +export class SnipingService { + + constructor( + private httpClient: HttpClient + ) { + + } + + snipingPrepare( + accountIdsJson: number[] + ) { + const formData = new FormData(); + formData.append('accountIdsJson', JSON.stringify(accountIdsJson)); + return this.httpClient.post( + `${environment.apiUrl}/sniping/prepare`, + formData + ); + } + + snipingExecute( + eaResourceId: number, + snipeTimeMin: number, + snipeTimeMax: number, + buyItemsMax: number, + buyBin: number, + sellBin: number, + accountIdsJson: number[], + round: number, + gapTimeMin: number, + gapTimeMax: number, + putOnTpOnly: boolean, + priceCheckBin: number | undefined, + doPriceCheck: boolean, + ) { + const formData = new FormData(); + formData.append('eaResourceId', eaResourceId.toString()); + formData.append('snipeTimeMin', snipeTimeMin.toString()); + formData.append('snipeTimeMax', snipeTimeMax.toString()); + formData.append('buyItemsMax', buyItemsMax.toString()); + formData.append('buyBin', buyBin.toString()); + formData.append('sellBin', sellBin.toString()); + formData.append('accountIdsJson', JSON.stringify(accountIdsJson)); + formData.append('round', round.toString()); + formData.append('gapTimeMin', gapTimeMin.toString()); + formData.append('gapTimeMax', gapTimeMax.toString()); + formData.append('putOnTpOnly', putOnTpOnly ? "1" : "0"); + if (priceCheckBin) { + formData.append('priceCheckBin', priceCheckBin.toString()); + } + formData.append('doPriceCheck', doPriceCheck ? "1" : "0"); + return this.httpClient.post( + `${environment.apiUrl}/sniping/execute`, + formData + ); + + } + + snipingStop( + accountIdsJson: number[] + ) { + const formData = new FormData(); + formData.append('accountIdsJson', JSON.stringify(accountIdsJson)); + return this.httpClient.post( + `${environment.apiUrl}/sniping/stop`, + formData + ); + } + + checkPrice( + accountId: number, + eaResourceId: number, + priceCheckBin: number, + ) { + const formData = new FormData(); + formData.append('accountId', accountId.toString()); + formData.append('eaResourceId', eaResourceId.toString()); + formData.append('priceCheckBin', priceCheckBin.toString()); + return this.httpClient.post( + `${environment.apiUrl}/sniping/check-bin-price`, + formData + ); + } + + updateAccountSnipingCounts() { + const formData = new FormData(); + return this.httpClient.post( + `${environment.apiUrl}/sniping/update-account-sniping-counts`, + formData + ); + } + +} diff --git a/angular/src/app/_validators/minMaxValidator.ts b/angular/src/app/_validators/minMaxValidator.ts new file mode 100644 index 0000000..71930c9 --- /dev/null +++ b/angular/src/app/_validators/minMaxValidator.ts @@ -0,0 +1,16 @@ +import { AbstractControl, ValidationErrors, ValidatorFn } from '@angular/forms'; + +export function minMaxValidator(minKey: string, maxKey: string, errorKey: string): ValidatorFn { + return (formGroup: AbstractControl): ValidationErrors | null => { + const minControl = formGroup.get(minKey); + const maxControl = formGroup.get(maxKey); + if (minControl && maxControl && minControl.value > maxControl.value) { + return { + [errorKey]: { + message: `${minKey} (${minControl.value}) must be less than or equal to ${maxKey} (${maxControl.value})` + } + }; + } + return null; + }; +} \ No newline at end of file diff --git a/angular/src/app/_views/account/account-routing.module.ts b/angular/src/app/_views/account/account-routing.module.ts new file mode 100644 index 0000000..05b795b --- /dev/null +++ b/angular/src/app/_views/account/account-routing.module.ts @@ -0,0 +1,22 @@ +import { NgModule } from '@angular/core'; +import { Routes, RouterModule } from '@angular/router'; + +import { LayoutComponent } from './layout.component'; +import { LoginComponent } from './login.component'; +import { RegisterComponent } from './register.component'; + +const routes: Routes = [ + { + path: '', component: LayoutComponent, + children: [ + { path: 'login', component: LoginComponent }, + { path: 'register', component: RegisterComponent } + ] + } +]; + +@NgModule({ + imports: [RouterModule.forChild(routes)], + exports: [RouterModule] +}) +export class AccountRoutingModule { } \ No newline at end of file diff --git a/angular/src/app/_views/account/account.module.ts b/angular/src/app/_views/account/account.module.ts new file mode 100644 index 0000000..1276469 --- /dev/null +++ b/angular/src/app/_views/account/account.module.ts @@ -0,0 +1,22 @@ +import { NgModule } from '@angular/core'; +import { ReactiveFormsModule } from '@angular/forms'; +import { CommonModule } from '@angular/common'; + +import { AccountRoutingModule } from './account-routing.module'; +import { LayoutComponent } from './layout.component'; +import { LoginComponent } from './login.component'; +import { RegisterComponent } from './register.component'; + +@NgModule({ + imports: [ + CommonModule, + ReactiveFormsModule, + AccountRoutingModule + ], + declarations: [ + LayoutComponent, + LoginComponent, + RegisterComponent + ] +}) +export class AccountModule { } \ No newline at end of file diff --git a/angular/src/app/_views/account/layout.component.html b/angular/src/app/_views/account/layout.component.html new file mode 100644 index 0000000..7e3b7ce --- /dev/null +++ b/angular/src/app/_views/account/layout.component.html @@ -0,0 +1,3 @@ +
+ +
diff --git a/angular/src/app/_views/account/layout.component.ts b/angular/src/app/_views/account/layout.component.ts new file mode 100644 index 0000000..f94aaf8 --- /dev/null +++ b/angular/src/app/_views/account/layout.component.ts @@ -0,0 +1,17 @@ +import { Component } from '@angular/core'; +import { Router } from '@angular/router'; + +import { AccountService } from '@app/_services'; + +@Component({ templateUrl: 'layout.component.html' }) +export class LayoutComponent { + constructor( + private router: Router, + private accountService: AccountService + ) { + // redirect to home if already logged in + if (this.accountService.userValue) { + this.router.navigate(['/']); + } + } +} \ No newline at end of file diff --git a/angular/src/app/_views/account/login.component.html b/angular/src/app/_views/account/login.component.html new file mode 100644 index 0000000..fb13da6 --- /dev/null +++ b/angular/src/app/_views/account/login.component.html @@ -0,0 +1,28 @@ + diff --git a/angular/src/app/_views/account/login.component.ts b/angular/src/app/_views/account/login.component.ts new file mode 100644 index 0000000..8f5a526 --- /dev/null +++ b/angular/src/app/_views/account/login.component.ts @@ -0,0 +1,58 @@ +import { Component, OnInit } from '@angular/core'; +import { Router, ActivatedRoute } from '@angular/router'; +import { FormBuilder, FormGroup, Validators } from '@angular/forms'; +import { first } from 'rxjs/operators'; + +import { AccountService, AlertService } from '@app/_services'; + +@Component({ templateUrl: 'login.component.html' }) +export class LoginComponent implements OnInit { + form!: FormGroup; + loading = false; + submitted = false; + + constructor( + private formBuilder: FormBuilder, + private route: ActivatedRoute, + private router: Router, + private accountService: AccountService, + private alertService: AlertService + ) { } + + ngOnInit() { + this.form = this.formBuilder.group({ + username: ['', Validators.required], + password: ['', Validators.required] + }); + } + + // convenience getter for easy access to form fields + get f() { return this.form.controls; } + + onSubmit() { + this.submitted = true; + + // reset alerts on submit + this.alertService.clear(); + + // stop here if form is invalid + if (this.form.invalid) { + return; + } + + this.loading = true; + this.accountService.login(this.f['username'].value, this.f['password'].value) + .pipe(first()) + .subscribe({ + next: () => { + // get return url from query parameters or default to home page + const returnUrl = this.route.snapshot.queryParams['returnUrl'] || '/'; + this.router.navigateByUrl(returnUrl); + }, + error: error => { + this.alertService.error(error); + this.loading = false; + } + }); + } +} diff --git a/angular/src/app/_views/account/register.component.html b/angular/src/app/_views/account/register.component.html new file mode 100644 index 0000000..3c31d7b --- /dev/null +++ b/angular/src/app/_views/account/register.component.html @@ -0,0 +1,43 @@ +
+

Register

+
+
+
+ + +
+
First Name is required
+
+
+
+ + +
+
Last Name is required
+
+
+
+ + +
+
Username is required
+
+
+
+ + +
+
Password is required
+
Password must be at least 6 characters
+
+
+
+ + Cancel +
+
+
+
diff --git a/angular/src/app/_views/account/register.component.ts b/angular/src/app/_views/account/register.component.ts new file mode 100644 index 0000000..1b24209 --- /dev/null +++ b/angular/src/app/_views/account/register.component.ts @@ -0,0 +1,59 @@ +import { Component, OnInit } from '@angular/core'; +import { Router, ActivatedRoute } from '@angular/router'; +import { FormBuilder, FormGroup, Validators } from '@angular/forms'; +import { first } from 'rxjs/operators'; + +import { AccountService, AlertService } from '@app/_services'; + +@Component({ templateUrl: 'register.component.html' }) +export class RegisterComponent implements OnInit { + form!: FormGroup; + loading = false; + submitted = false; + + constructor( + private formBuilder: FormBuilder, + private route: ActivatedRoute, + private router: Router, + private accountService: AccountService, + private alertService: AlertService + ) { } + + ngOnInit() { + this.form = this.formBuilder.group({ + firstName: ['', Validators.required], + lastName: ['', Validators.required], + username: ['', Validators.required], + password: ['', [Validators.required, Validators.minLength(6)]] + }); + } + + // convenience getter for easy access to form fields + get f() { return this.form.controls; } + + onSubmit() { + this.submitted = true; + + // reset alerts on submit + this.alertService.clear(); + + // stop here if form is invalid + if (this.form.invalid) { + return; + } + + this.loading = true; + this.accountService.register(this.form.value) + .pipe(first()) + .subscribe({ + next: () => { + this.alertService.success('Registration successful', { keepAfterRouteChange: true }); + this.router.navigate(['../login'], { relativeTo: this.route }); + }, + error: error => { + this.alertService.error(error); + this.loading = false; + } + }); + } +} \ No newline at end of file diff --git a/angular/src/app/_views/dashboard/dashboard.component.html b/angular/src/app/_views/dashboard/dashboard.component.html new file mode 100644 index 0000000..3400001 --- /dev/null +++ b/angular/src/app/_views/dashboard/dashboard.component.html @@ -0,0 +1,13 @@ +
+
+

{{ 'dashboard.view' | translate }}

+
+ + + OVERVIEW + + + OVERVIEW 2 + + +
diff --git a/angular/src/app/_views/dashboard/dashboard.component.scss b/angular/src/app/_views/dashboard/dashboard.component.scss new file mode 100644 index 0000000..10a0256 --- /dev/null +++ b/angular/src/app/_views/dashboard/dashboard.component.scss @@ -0,0 +1,5 @@ +pre { + white-space: pre-wrap; /* Erlaubt Zeilenumbrüche */ + word-wrap: break-word; /* Bricht lange Wörter um */ + overflow-wrap: break-word; /* Sicherstellt, dass Wörter, die zu lang sind, auch umgebrochen werden */ +} \ No newline at end of file diff --git a/angular/src/app/_views/dashboard/dashboard.component.spec.ts b/angular/src/app/_views/dashboard/dashboard.component.spec.ts new file mode 100644 index 0000000..0571781 --- /dev/null +++ b/angular/src/app/_views/dashboard/dashboard.component.spec.ts @@ -0,0 +1,23 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { DashboardComponent } from './dashboard.component'; + +describe('DashboardComponent', () => { + let component: DashboardComponent; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + declarations: [DashboardComponent] + }) + .compileComponents(); + + fixture = TestBed.createComponent(DashboardComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/angular/src/app/_views/dashboard/dashboard.component.ts b/angular/src/app/_views/dashboard/dashboard.component.ts new file mode 100644 index 0000000..56120f4 --- /dev/null +++ b/angular/src/app/_views/dashboard/dashboard.component.ts @@ -0,0 +1,30 @@ +import {AfterViewInit, Component, OnInit, ViewChild} from '@angular/core'; +import {SystemStatService, SystemStatJsonld} from "@app/core/api/v1"; +import {LogService} from "@app/_services/log.service"; +import {FormControl} from "@angular/forms"; + +@Component({ + selector: 'app-dashboard', + templateUrl: './dashboard.component.html', + styleUrl: './dashboard.component.scss' +}) +export class DashboardComponent implements OnInit, AfterViewInit { + + + protected logs: string[] = []; + protected error: string | null = null; + protected linesControl = new FormControl(100); + + constructor( + ) { + + } + + ngOnInit() { + } + + ngAfterViewInit(): void { + + } + +} diff --git a/angular/src/app/_views/home/home.component.html b/angular/src/app/_views/home/home.component.html new file mode 100644 index 0000000..1fc40ed --- /dev/null +++ b/angular/src/app/_views/home/home.component.html @@ -0,0 +1,78 @@ + diff --git a/angular/src/app/_views/home/home.component.scss b/angular/src/app/_views/home/home.component.scss new file mode 100644 index 0000000..f9cb343 --- /dev/null +++ b/angular/src/app/_views/home/home.component.scss @@ -0,0 +1,92 @@ +.home-container { + max-width: 1100px; + margin-left: auto; + margin-right: auto; +} +.spt-home-cards { + .card { + width: 100%; + text-decoration: none; + border-top: 3px solid #c1c1c1; + } + .card-body { + min-height: 200px; + text-transform: uppercase; + text-align: right; + &:after { + content: ">"; + position: absolute; + right: 0; + bottom: 0; + background: rgba(229,38,30,1); + width: 40px; + height: 40px; + color: #fff; + font-family: Helvetica; + font-size: 20px; + line-height: 40px; + text-align: center; + } + &:before { + content: ""; + position: absolute; + left: 50%; + top: 50%; + transform: translate(-50%,-50%); + width: 95px; + height: 95px; + border: 2px solid #2b3b44; + border-radius: 50%; + } + &[data-cat="customer"]:before { + background: transparent url("/assets/images/icons/customer.svg") no-repeat center center; + background-size: 50% auto; + } + &[data-cat="supplier"]:before { + background: transparent url("/assets/images/icons/supplier.svg") no-repeat center center; + background-size: 50% auto; + } + &[data-cat="service"]:before { + background: transparent url("/assets/images/icons/service.svg") no-repeat center center; + background-size: 50% auto; + } + &[data-cat="product"]:before { + background: transparent url("/assets/images/icons/product.svg") no-repeat center center; + background-size: 50% auto; + } + &[data-cat="task"]:before { + background: transparent url("/assets/images/icons/task.svg") no-repeat center center; + background-size: 50% auto; + } + &[data-cat="document"]:before { + background: transparent url("/assets/images/icons/document.svg") no-repeat center center; + background-size: 50% auto; + } + &[data-cat="sale"]:before { + background: transparent url("/assets/images/icons/sale.svg") no-repeat center center; + background-size: 50% auto; + } + &[data-cat="profile"]:before { + background: transparent url("/assets/images/icons/profile.svg") no-repeat center center; + background-size: 50% auto; + } + &[data-cat="user"]:before { + background: transparent url("/assets/images/icons/user.svg") no-repeat center center; + background-size: 50% auto; + } + + //&.bi { + // &:before { + // position: absolute; + // left: 50%; + // top: 50%; + // transform: translate(-50%,-50%); + // font-size: 50px; + // } + //} + h3 { + left: 30px; + bottom: 10px; + } + } +} \ No newline at end of file diff --git a/angular/src/app/_views/home/home.component.ts b/angular/src/app/_views/home/home.component.ts new file mode 100644 index 0000000..f42e9ab --- /dev/null +++ b/angular/src/app/_views/home/home.component.ts @@ -0,0 +1,27 @@ +import {AfterViewInit, Component, OnInit} from '@angular/core'; + +import {User} from '@app/_models'; +import {AccountService} from '@app/_services'; +import {AppHelperService} from "@app/_helpers/app-helper.service"; + +@Component({ + templateUrl: 'home.component.html', + styleUrl: 'home.component.scss' +}) +export class HomeComponent implements OnInit, AfterViewInit { + + protected user: User | null; + + constructor( + private accountService: AccountService, + protected appHelperService: AppHelperService + ) { + this.user = this.accountService.userValue; + } + + ngOnInit(): void { + } + + ngAfterViewInit() { + } +} diff --git a/angular/src/app/_views/home/index.ts b/angular/src/app/_views/home/index.ts new file mode 100644 index 0000000..1c212fb --- /dev/null +++ b/angular/src/app/_views/home/index.ts @@ -0,0 +1 @@ +export * from './home.component'; \ No newline at end of file diff --git a/angular/src/app/_views/profile/profile.component.html b/angular/src/app/_views/profile/profile.component.html new file mode 100644 index 0000000..3846160 --- /dev/null +++ b/angular/src/app/_views/profile/profile.component.html @@ -0,0 +1,3 @@ + \ No newline at end of file diff --git a/angular/src/app/_views/profile/profile.component.scss b/angular/src/app/_views/profile/profile.component.scss new file mode 100644 index 0000000..e69de29 diff --git a/angular/src/app/_views/profile/profile.component.spec.ts b/angular/src/app/_views/profile/profile.component.spec.ts new file mode 100644 index 0000000..7d6e545 --- /dev/null +++ b/angular/src/app/_views/profile/profile.component.spec.ts @@ -0,0 +1,23 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { ProfileComponent } from './profile.component'; + +describe('ProfileComponent', () => { + let component: ProfileComponent; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + declarations: [ProfileComponent] + }) + .compileComponents(); + + fixture = TestBed.createComponent(ProfileComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/angular/src/app/_views/profile/profile.component.ts b/angular/src/app/_views/profile/profile.component.ts new file mode 100644 index 0000000..6a7d254 --- /dev/null +++ b/angular/src/app/_views/profile/profile.component.ts @@ -0,0 +1,43 @@ +import {AfterViewInit, Component, OnInit, ViewChild} from '@angular/core'; +import {AccountService} from "@app/_services"; +import {UserJsonld, UserService} from "@app/core/api/v1"; +import {UserDetailComponent} from "@app/_views/user/user-detail/user-detail.component"; +import {AppHelperService} from "@app/_helpers/app-helper.service"; + +@Component({ + selector: 'app-profile', + templateUrl: './profile.component.html', + styleUrl: './profile.component.scss' +}) +export class ProfileComponent implements OnInit, AfterViewInit { + + @ViewChild("userDetailComponent", {static: false}) userDetailComponent!: UserDetailComponent; + + protected user!: UserJsonld; + + constructor( + private accountService: AccountService, + private userService: UserService, + private appHelperService: AppHelperService + ) { + const user = this.accountService.userValue; + if (user?.id !== null && user?.id !== undefined) { + this.userService.usersIdGet( + this.appHelperService.extractId(user.id) + ).subscribe( + data => { + this.user = data; + } + ); + } + } + + ngOnInit() { + + } + + ngAfterViewInit(): void { + } + + +} diff --git a/angular/src/app/_views/user/user-detail/user-detail.component.html b/angular/src/app/_views/user/user-detail/user-detail.component.html new file mode 100644 index 0000000..4ea9e7b --- /dev/null +++ b/angular/src/app/_views/user/user-detail/user-detail.component.html @@ -0,0 +1,18 @@ +
+
+
+
+

{{ user.firstName }} {{ user.lastName }}

+
+
{{ ('user.email' | translate) }}
+
{{ user.email }}
+
+
+
+ + + +
+
+
+
diff --git a/angular/src/app/_views/user/user-detail/user-detail.component.scss b/angular/src/app/_views/user/user-detail/user-detail.component.scss new file mode 100644 index 0000000..e69de29 diff --git a/angular/src/app/_views/user/user-detail/user-detail.component.spec.ts b/angular/src/app/_views/user/user-detail/user-detail.component.spec.ts new file mode 100644 index 0000000..80a4877 --- /dev/null +++ b/angular/src/app/_views/user/user-detail/user-detail.component.spec.ts @@ -0,0 +1,23 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { UserDetailComponent } from './user-detail.component'; + +describe('UserDetailComponent', () => { + let component: UserDetailComponent; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + declarations: [UserDetailComponent] + }) + .compileComponents(); + + fixture = TestBed.createComponent(UserDetailComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/angular/src/app/_views/user/user-detail/user-detail.component.ts b/angular/src/app/_views/user/user-detail/user-detail.component.ts new file mode 100644 index 0000000..11e7569 --- /dev/null +++ b/angular/src/app/_views/user/user-detail/user-detail.component.ts @@ -0,0 +1,57 @@ +import {AfterViewInit, Component, Input, OnInit, ViewChild} from '@angular/core'; +import {UserJsonld, UserService} from "@app/core/api/v1"; +import {AccountService} from "@app/_services"; +import {AppHelperService} from "@app/_helpers/app-helper.service"; +import {ActivatedRoute} from "@angular/router"; + +@Component({ + selector: 'app-user-detail', + templateUrl: './user-detail.component.html', + styleUrl: './user-detail.component.scss' +}) +export class UserDetailComponent implements OnInit, AfterViewInit { + @Input() public user!: UserJsonld; + + protected isCurrentUser: boolean; + + constructor( + private accountService: AccountService, + private userService: UserService, + protected appHelperService: AppHelperService, + private route: ActivatedRoute, + ) { + this.isCurrentUser = false; + } + + ngOnInit() { + if (this.user === undefined) { + this.route.params.subscribe(params => { + this.getUserData(params['id']); + }); + } else { + this.setIsCurrentUser(); + } + } + + ngAfterViewInit(): void { + + } + + getUserData(userId: string) { + this.userService.usersIdGet( + userId + ).subscribe( + data => { + this.user = data; + this.setIsCurrentUser(); + } + ); + } + + setIsCurrentUser() { + if (this.accountService.userValue?.userResource) { + let user = this.accountService.userValue?.userResource; + this.isCurrentUser = this.appHelperService.extractId(this.user.id) == user?.id; + } + } +} diff --git a/angular/src/app/_views/user/user-list/user-list.component.html b/angular/src/app/_views/user/user-list/user-list.component.html new file mode 100644 index 0000000..835ee42 --- /dev/null +++ b/angular/src/app/_views/user/user-list/user-list.component.html @@ -0,0 +1,9 @@ +
+ +
diff --git a/angular/src/app/_views/user/user-list/user-list.component.scss b/angular/src/app/_views/user/user-list/user-list.component.scss new file mode 100644 index 0000000..e69de29 diff --git a/angular/src/app/_views/user/user-list/user-list.component.spec.ts b/angular/src/app/_views/user/user-list/user-list.component.spec.ts new file mode 100644 index 0000000..c2d437e --- /dev/null +++ b/angular/src/app/_views/user/user-list/user-list.component.spec.ts @@ -0,0 +1,23 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { UserListComponent } from './user-list.component'; + +describe('UserListComponent', () => { + let component: UserListComponent; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + declarations: [UserListComponent] + }) + .compileComponents(); + + fixture = TestBed.createComponent(UserListComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/angular/src/app/_views/user/user-list/user-list.component.ts b/angular/src/app/_views/user/user-list/user-list.component.ts new file mode 100644 index 0000000..64433ba --- /dev/null +++ b/angular/src/app/_views/user/user-list/user-list.component.ts @@ -0,0 +1,98 @@ +import {AfterViewInit, Component, OnInit, ViewChild} from '@angular/core'; +import {Sort} from "@angular/material/sort"; +import {UserJsonld, UserService} from "@app/core/api/v1"; +import {OrderFilter} from "@app/_models/orderFilter"; +import {Router} from "@angular/router"; +import {AppHelperService} from "@app/_helpers/app-helper.service"; +import {ListComponent} from "@app/_components/list/list.component"; +import {ListColDefinition} from "@app/_components/list/list-col-definition"; +import {ListGetDataFunctionType} from "@app/_components/list/list-get-data-function-type"; + +@Component({ + selector: 'app-user-list', + templateUrl: './user-list.component.html', + styleUrl: './user-list.component.scss' +}) +export class UserListComponent implements OnInit, AfterViewInit { + + @ViewChild("listComponent", {static: false}) listComponent!: ListComponent; + + protected firstNameOrderFilter: OrderFilter; + protected lastNameOrderFilter: OrderFilter; + protected listColDefinitions!: ListColDefinition[]; + + constructor( + private userService: UserService, + private router: Router, + protected appHelperService: AppHelperService, + ) { + this.firstNameOrderFilter = OrderFilter.Undefined; + this.lastNameOrderFilter = OrderFilter.Asc; + + this.listColDefinitions = [ + { + name: 'image', + text: 'overview.image', + type: ListComponent.COLUMN_TYPE_IMAGE, + field: 'imageUrl', + } as ListColDefinition, + { + name: 'firstName', + text: 'overview.firstName', + type: ListComponent.COLUMN_TYPE_TEXT, + field: 'firstName', + sortable: true, + } as ListColDefinition, + { + name: 'lastName', + text: 'overview.lastName', + type: ListComponent.COLUMN_TYPE_TEXT, + field: 'lastName', + sortable: true, + } as ListColDefinition, + { + name: 'email', + text: 'overview.email', + type: ListComponent.COLUMN_TYPE_EMAIL, + field: 'email', + } as ListColDefinition, + ]; + } + + ngOnInit() { + + } + + ngAfterViewInit() { + this.listComponent.getData(); + } + + getData: ListGetDataFunctionType = (index: number, pageSize: number, term?: string) => { + return this.userService.usersGetCollection( + index, + pageSize, + undefined, + undefined, + term, + this.listComponent.getSortingJsonString() + ); + } + + onSortChange = (sortState: Sort) => { + this.firstNameOrderFilter = OrderFilter.Undefined; + this.lastNameOrderFilter = OrderFilter.Undefined; + switch (sortState.active) { + case "firstName": + this.firstNameOrderFilter = sortState.direction as OrderFilter; + break; + case "lastName": + this.lastNameOrderFilter = sortState.direction as OrderFilter; + break; + } + } + + navigateToUserDetails = (element: any) => { + const user: UserJsonld = element as UserJsonld; + this.router.navigate(['/user', this.appHelperService.extractId(user.id)]); + } +} diff --git a/angular/src/app/_views/user/users.component.html b/angular/src/app/_views/user/users.component.html new file mode 100644 index 0000000..36eebb5 --- /dev/null +++ b/angular/src/app/_views/user/users.component.html @@ -0,0 +1,6 @@ +
+
+

{{ 'basic.users' | translate }}

+
+ +
diff --git a/angular/src/app/_views/user/users.component.scss b/angular/src/app/_views/user/users.component.scss new file mode 100644 index 0000000..e69de29 diff --git a/angular/src/app/_views/user/users.component.spec.ts b/angular/src/app/_views/user/users.component.spec.ts new file mode 100644 index 0000000..fd55374 --- /dev/null +++ b/angular/src/app/_views/user/users.component.spec.ts @@ -0,0 +1,23 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { UsersComponent } from './users.component'; + +describe('UserComponent', () => { + let component: UsersComponent; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + declarations: [UsersComponent] + }) + .compileComponents(); + + fixture = TestBed.createComponent(UsersComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/angular/src/app/_views/user/users.component.ts b/angular/src/app/_views/user/users.component.ts new file mode 100644 index 0000000..5bd470f --- /dev/null +++ b/angular/src/app/_views/user/users.component.ts @@ -0,0 +1,43 @@ +import {AfterViewInit, Component, Input, OnInit} from '@angular/core'; +import {UserJsonld, UserService} from "@app/core/api/v1"; +import {AccountService} from "@app/_services"; +import {AppHelperService} from "@app/_helpers/app-helper.service"; + +@Component({ + selector: 'app-users', + templateUrl: './users.component.html', + styleUrl: './users.component.scss' +}) +export class UsersComponent implements OnInit, AfterViewInit { + + @Input() public user!: UserJsonld; + + constructor( + private accountService: AccountService, + private userService: UserService, + protected appHelperService: AppHelperService + ) { + } + + ngOnInit() { + + } + + ngAfterViewInit(): void { + this.getData(); + } + + getData() { + const user = this.accountService.userValue; + if (user?.id !== null && user?.id !== undefined) { + this.userService.usersIdGet( + this.appHelperService.extractId(user.id) + ).subscribe( + data => { + this.user = data; + } + ); + } + } + +} diff --git a/angular/src/app/app-routing.module.ts b/angular/src/app/app-routing.module.ts new file mode 100644 index 0000000..7b906b4 --- /dev/null +++ b/angular/src/app/app-routing.module.ts @@ -0,0 +1,60 @@ +import {NgModule} from '@angular/core'; +import {Routes, RouterModule} from '@angular/router'; +import {ProfileComponent} from "@app/_views/profile/profile.component"; +import {UserDetailComponent} from "@app/_views/user/user-detail/user-detail.component"; +import {userGuard} from "@app/_guards/user.guard"; +import {adminGuard} from "@app/_guards/admin.guard"; +import {UsersComponent} from "@app/_views/user/users.component"; +import {TwoColumnComponent} from "@app/_components/layout/two-column/two-column.component"; +import {DashboardComponent} from "@app/_views/dashboard/dashboard.component"; + +const accountModule = () => import('@app/_views/account/account.module').then(x => x.AccountModule); + +export const ROUTE_DASHBOARD = 'dashboard'; +export const ROUTE_PROFILE = 'profile'; +export const ROUTE_USERS = 'users'; + +const routes: Routes = [ + { + path: 'account', + loadChildren: + accountModule + }, + { + path: ROUTE_DASHBOARD, + component: TwoColumnComponent, + canActivate: [userGuard], + children: [ + {path: '', component: DashboardComponent}, + ] + }, + { + path: ROUTE_PROFILE, + component: TwoColumnComponent, + canActivate: [userGuard], + children: [ + {path: '', component: ProfileComponent}, + ] + }, + { + path: ROUTE_USERS, + component: TwoColumnComponent, + canActivate: [userGuard, adminGuard], + children: [ + {path: '', component: UsersComponent}, + {path: ':id', component: UserDetailComponent}, + ] + }, + // otherwise redirect to home + { + path: '**', + redirectTo: ROUTE_DASHBOARD + } +]; + +@NgModule({ + imports: [RouterModule.forRoot(routes, {scrollPositionRestoration: 'enabled'})], + exports: [RouterModule] +}) +export class AppRoutingModule { +} diff --git a/angular/src/app/app.component.html b/angular/src/app/app.component.html new file mode 100644 index 0000000..c14c871 --- /dev/null +++ b/angular/src/app/app.component.html @@ -0,0 +1,38 @@ + + + + +
+ + +
+
+ +
\ No newline at end of file diff --git a/angular/src/app/app.component.scss b/angular/src/app/app.component.scss new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/angular/src/app/app.component.scss @@ -0,0 +1 @@ + diff --git a/angular/src/app/app.component.ts b/angular/src/app/app.component.ts new file mode 100644 index 0000000..6729ef5 --- /dev/null +++ b/angular/src/app/app.component.ts @@ -0,0 +1,105 @@ +import {ChangeDetectorRef, Component, Inject, OnInit, Renderer2} from '@angular/core'; +import {AccountService} from './_services'; +import {User} from './_models'; +import {TranslateService} from "@ngx-translate/core"; +import {environment} from "@environments/environment"; +import {Subscription} from "rxjs"; +import {LoadingService} from "@app/_services/loading.service"; +import {DOCUMENT} from "@angular/common"; + +@Component({ + selector: 'app-root', + templateUrl: 'app.component.html', + styleUrl: 'app.component.scss' +}) +export class AppComponent implements OnInit { + protected readonly environment = environment; + protected user?: User | null; + protected loadingSub: Subscription; + protected loading: boolean = false; + protected isLeftHanded = false; + protected isDarkMode = false; + + constructor( + private accountService: AccountService, + private translate: TranslateService, + private loadingService: LoadingService, + private cdr: ChangeDetectorRef, + private renderer: Renderer2, + @Inject(DOCUMENT) private document: Document + ) { + translate.setDefaultLang('en'); + translate.use('en'); + this.accountService.user.subscribe(x => this.user = x); + this.loadingSub = new Subscription(); + this.isLeftHanded = localStorage.getItem('isLeftHanded') === 'true'; + this.isDarkMode = localStorage.getItem('isDarkMode') === 'true'; + this.updateLeftHandedState(); + this.updateDarkModeState(); + } + + ngOnInit(): void { + this.loadingSub = this.loadingService.getLoading().subscribe( + loading => { + this.loading = loading; + // To avoid Error: NG0100 + this.cdr.detectChanges(); + } + ); + } + + logout() { + this.accountService.logout(); + } + + // TODO: Hilfsfunktion - entfernen + copyTokenToClipboard() { + const el = document.createElement('textarea'); + el.value = this.user?.token !== undefined ? this.user.token : ""; + document.body.appendChild(el); + el.select(); + document.execCommand('copy'); + document.body.removeChild(el); + } + + // For our left handed friends + leftHanded() { + this.isLeftHanded = !this.isLeftHanded; + this.updateLeftHandedState(); + } + + private updateLeftHandedState() { + if (this.isLeftHanded) { + this.renderer.addClass(this.document.body, 'left-handed'); + } else { + this.renderer.removeClass(this.document.body, 'left-handed'); + } + + // Save the state to localStorage + localStorage.setItem('isLeftHanded', this.isLeftHanded.toString()); + } + + darkMode() { + this.isDarkMode = !this.isDarkMode; + this.updateDarkModeState(); + } + + private updateDarkModeState() { + if (this.isDarkMode) { + this.renderer.addClass(this.document.body, 'dark-mode'); + } else { + this.renderer.removeClass(this.document.body, 'dark-mode'); + } + + // Save the state to localStorage + localStorage.setItem('isDarkMode', this.isDarkMode.toString()); + } + + get buttonClassLefties(): string { + return this.isLeftHanded ? 'btn-primary' : 'btn-secondary'; + } + + get buttonClassDarkMode(): string { + return this.isDarkMode ? 'btn-primary' : 'btn-secondary'; + } +} diff --git a/angular/src/app/app.config.server.ts b/angular/src/app/app.config.server.ts new file mode 100644 index 0000000..85967a6 --- /dev/null +++ b/angular/src/app/app.config.server.ts @@ -0,0 +1,10 @@ +import {mergeApplicationConfig, ApplicationConfig} from '@angular/core'; +import {appConfig} from './app.config'; + +const serverConfig: ApplicationConfig = { + providers: [ + // provideServerRendering() + ] +}; + +export const config = mergeApplicationConfig(appConfig, serverConfig); diff --git a/angular/src/app/app.config.ts b/angular/src/app/app.config.ts new file mode 100644 index 0000000..ae86af5 --- /dev/null +++ b/angular/src/app/app.config.ts @@ -0,0 +1,10 @@ +import {ApplicationConfig} from '@angular/core'; +import {provideRouter} from '@angular/router'; + +import {routes} from './app.routes'; +import {provideClientHydration} from '@angular/platform-browser'; +import {provideAnimations} from '@angular/platform-browser/animations'; + +export const appConfig: ApplicationConfig = { + providers: [provideRouter(routes), provideClientHydration(), provideAnimations()] +}; diff --git a/angular/src/app/app.module.server.ts b/angular/src/app/app.module.server.ts new file mode 100644 index 0000000..795380c --- /dev/null +++ b/angular/src/app/app.module.server.ts @@ -0,0 +1,14 @@ +import { NgModule } from '@angular/core'; +import { ServerModule } from '@angular/platform-server'; + +import { AppModule } from './app.module'; +import { AppComponent } from './app.component'; + +@NgModule({ + imports: [ + AppModule, + ServerModule, + ], + bootstrap: [AppComponent], +}) +export class AppServerModule {} diff --git a/angular/src/app/app.module.ts b/angular/src/app/app.module.ts new file mode 100644 index 0000000..12a234f --- /dev/null +++ b/angular/src/app/app.module.ts @@ -0,0 +1,118 @@ +import {LOCALE_ID, NgModule} from '@angular/core'; +import {BrowserModule} from '@angular/platform-browser'; +import {FormsModule, ReactiveFormsModule} from '@angular/forms'; +import {HttpClientModule, HTTP_INTERCEPTORS, HttpClient} from '@angular/common/http'; + +import {AppRoutingModule} from './app-routing.module'; +import {JwtInterceptor, ErrorInterceptor} from './_helpers'; +import {AppComponent} from './app.component'; +import {AlertComponent} from './_components'; +import {HomeComponent} from './_views/home'; +import {NgbModule} from "@ng-bootstrap/ng-bootstrap"; + +import {environment} from "@environments/environment"; +import {MatCardModule} from "@angular/material/card"; +import {TranslateLoader, TranslateModule} from "@ngx-translate/core"; +import {TranslateHttpLoader} from "@ngx-translate/http-loader"; +import {NgOptimizedImage, registerLocaleData} from "@angular/common"; +import {BrowserAnimationsModule} from "@angular/platform-browser/animations"; +import {TwoColumnComponent} from "./_components/layout/two-column/two-column.component"; +import {PropertyInterceptor} from "@app/_helpers/property.interceptor"; +import {MatPaginatorModule} from "@angular/material/paginator"; +import {MatSortModule} from "@angular/material/sort"; +import {MatTableModule} from "@angular/material/table"; +import {MatOptionModule} from "@angular/material/core"; +import {MatAutocompleteModule} from "@angular/material/autocomplete"; +import {MatFormFieldModule} from "@angular/material/form-field"; +import {MatInputModule} from "@angular/material/input"; +import {ToggleComponent} from './_components/toggle/toggle.component'; +import {ProfileComponent} from './_views/profile/profile.component'; +import {ApiModule, Configuration, ConfigurationParameters} from "@app/core/api/v1"; +import {SearchInputComponent} from './_components/search-input/search-input.component'; +import {PagingComponent} from '@app/_components/paging/paging.component'; +import {UsersComponent} from './_views/user/users.component'; +import {UserDetailComponent} from './_views/user/user-detail/user-detail.component'; +import {UserListComponent} from './_views/user/user-list/user-list.component'; +import {LinkedLabelComponent} from './_components/linked-label/linked-label.component'; +import {LoadingInterceptor} from "@app/_helpers/loading-interceptor.service"; +import {SearchSelectComponent} from './_components/search-select/search-select.component'; +import {ListComponent} from './_components/list/list.component'; +import {MatTabsModule} from "@angular/material/tabs"; +import {DashboardComponent} from './_views/dashboard/dashboard.component'; +import localeDe from '@angular/common/locales/de'; +import { FilterBarComponent } from './_components/filter-bar/filter-bar.component'; + +registerLocaleData(localeDe, 'de-DE'); + +export function apiConfigFactory(): Configuration { + const params: ConfigurationParameters = { + basePath: environment.basePath, + withCredentials: false + }; + return new Configuration(params); +} + +// AoT requires an exported function for factories +export function HttpLoaderFactory(http: HttpClient) { + return new TranslateHttpLoader(http); +} + +@NgModule({ + imports: [ + ApiModule.forRoot(apiConfigFactory), + BrowserModule, + BrowserAnimationsModule, + TranslateModule.forRoot({ + defaultLanguage: 'en', + loader: { + provide: TranslateLoader, + useFactory: HttpLoaderFactory, + deps: [HttpClient] + } + }), + ReactiveFormsModule, + HttpClientModule, + NgbModule, + AppRoutingModule, + MatCardModule, + NgOptimizedImage, + MatPaginatorModule, + MatSortModule, + MatTableModule, + MatOptionModule, + MatAutocompleteModule, + MatFormFieldModule, + MatInputModule, + MatTabsModule, + TranslateModule, + FormsModule, + ], + declarations: [ + AppComponent, + AlertComponent, + HomeComponent, + TwoColumnComponent, + ToggleComponent, + ProfileComponent, + SearchInputComponent, + PagingComponent, + UsersComponent, + UserDetailComponent, + UserListComponent, + LinkedLabelComponent, + SearchSelectComponent, + ListComponent, + DashboardComponent, + FilterBarComponent, + ], + providers: [ + {provide: HTTP_INTERCEPTORS, useClass: JwtInterceptor, multi: true}, + {provide: HTTP_INTERCEPTORS, useClass: ErrorInterceptor, multi: true}, + {provide: HTTP_INTERCEPTORS, useClass: PropertyInterceptor, multi: true}, + {provide: HTTP_INTERCEPTORS, useClass: LoadingInterceptor, multi: true}, + {provide: LOCALE_ID, useValue: 'de-DE'}, + ], + bootstrap: [AppComponent] +}) +export class AppModule { +} diff --git a/angular/src/app/app.routes.ts b/angular/src/app/app.routes.ts new file mode 100644 index 0000000..dc39edb --- /dev/null +++ b/angular/src/app/app.routes.ts @@ -0,0 +1,3 @@ +import { Routes } from '@angular/router'; + +export const routes: Routes = []; diff --git a/angular/src/app/core/api/v1/.gitignore b/angular/src/app/core/api/v1/.gitignore new file mode 100644 index 0000000..149b576 --- /dev/null +++ b/angular/src/app/core/api/v1/.gitignore @@ -0,0 +1,4 @@ +wwwroot/*.js +node_modules +typings +dist diff --git a/angular/src/app/core/api/v1/.openapi-generator-ignore b/angular/src/app/core/api/v1/.openapi-generator-ignore new file mode 100644 index 0000000..7484ee5 --- /dev/null +++ b/angular/src/app/core/api/v1/.openapi-generator-ignore @@ -0,0 +1,23 @@ +# OpenAPI Generator Ignore +# Generated by openapi-generator https://github.com/openapitools/openapi-generator + +# Use this file to prevent files from being overwritten by the generator. +# The patterns follow closely to .gitignore or .dockerignore. + +# As an example, the C# client generator defines ApiClient.cs. +# You can make changes and tell OpenAPI Generator to ignore just this file by uncommenting the following line: +#ApiClient.cs + +# You can match any string of characters against a directory, file or extension with a single asterisk (*): +#foo/*/qux +# The above matches foo/bar/qux and foo/baz/qux, but not foo/bar/baz/qux + +# You can recursively match patterns against a directory, file or extension with a double asterisk (**): +#foo/**/qux +# This matches foo/bar/qux, foo/baz/qux, and foo/bar/baz/qux + +# You can also negate patterns with an exclamation (!). +# For example, you can ignore all files in a docs folder with the file extension .md: +#docs/*.md +# Then explicitly reverse the ignore rule for a single file: +#!docs/README.md diff --git a/angular/src/app/core/api/v1/.openapi-generator/FILES b/angular/src/app/core/api/v1/.openapi-generator/FILES new file mode 100644 index 0000000..e0382e8 --- /dev/null +++ b/angular/src/app/core/api/v1/.openapi-generator/FILES @@ -0,0 +1,74 @@ +.gitignore +README.md +api.module.ts +api/accountTradePileItem.service.ts +api/api.ts +api/candidate.service.ts +api/candidateStat.service.ts +api/candidateStockAccounts.service.ts +api/config.service.ts +api/gameAccount.service.ts +api/logAccountCredit.service.ts +api/logAccountProfit.service.ts +api/logAccountSoldItem.service.ts +api/logGeneral.service.ts +api/logTotalProfit.service.ts +api/loginCheck.service.ts +api/mediaObject.service.ts +api/modeConfig.service.ts +api/player.service.ts +api/rarity.service.ts +api/systemStat.service.ts +api/user.service.ts +configuration.ts +encoder.ts +git_push.sh +index.ts +model/accountTradePileItem.ts +model/accountTradePileItemJsonld.ts +model/accountTradePileItemJsonldContext.ts +model/accountTradePileItemJsonldContextOneOf.ts +model/apiAccountTradePileItemsGetCollection200Response.ts +model/apiAccountTradePileItemsGetCollection200ResponseHydraSearch.ts +model/apiAccountTradePileItemsGetCollection200ResponseHydraSearchHydraMappingInner.ts +model/apiAccountTradePileItemsGetCollection200ResponseHydraView.ts +model/apiCandidateStatsGetCollection200Response.ts +model/apiCandidatesGetCollection200Response.ts +model/apiGameAccountsGetCollection200Response.ts +model/apiLogAccountCreditsGetCollection200Response.ts +model/apiLogAccountProfitsGetCollection200Response.ts +model/apiLogAccountSoldItemsGetCollection200Response.ts +model/apiLogGeneralsGetCollection200Response.ts +model/apiLogTotalProfitsGetCollection200Response.ts +model/apiMediaObjectsGetCollection200Response.ts +model/apiPlayersGetCollection200Response.ts +model/apiRaritiesGetCollection200Response.ts +model/apiUsersGetCollection200Response.ts +model/candidate.ts +model/candidateJsonld.ts +model/candidateStatJsonld.ts +model/candidateStockAccountsJsonld.ts +model/config.ts +model/configJsonld.ts +model/gameAccount.ts +model/gameAccountJsonld.ts +model/logAccountCreditJsonld.ts +model/logAccountProfitJsonld.ts +model/logAccountSoldItemJsonld.ts +model/logGeneralJsonld.ts +model/logTotalProfit.ts +model/logTotalProfitJsonld.ts +model/loginCheckPost200Response.ts +model/loginCheckPostRequest.ts +model/mediaObjectJsonldMediaObjectRead.ts +model/modeConfig.ts +model/modeConfigJsonld.ts +model/models.ts +model/player.ts +model/playerJsonld.ts +model/rarity.ts +model/rarityJsonld.ts +model/systemStatJsonld.ts +model/userJsonld.ts +param.ts +variables.ts diff --git a/angular/src/app/core/api/v1/.openapi-generator/VERSION b/angular/src/app/core/api/v1/.openapi-generator/VERSION new file mode 100644 index 0000000..8b23b8d --- /dev/null +++ b/angular/src/app/core/api/v1/.openapi-generator/VERSION @@ -0,0 +1 @@ +7.3.0 \ No newline at end of file diff --git a/angular/src/app/core/api/v1/README.md b/angular/src/app/core/api/v1/README.md new file mode 100644 index 0000000..de16f95 --- /dev/null +++ b/angular/src/app/core/api/v1/README.md @@ -0,0 +1,226 @@ +## @ + +### Building + +To install the required dependencies and to build the typescript sources run: +``` +npm install +npm run build +``` + +### publishing + +First build the package then run ```npm publish dist``` (don't forget to specify the `dist` folder!) + +### consuming + +Navigate to the folder of your consuming project and run one of next commands. + +_published:_ + +``` +npm install @ --save +``` + +_without publishing (not recommended):_ + +``` +npm install PATH_TO_GENERATED_PACKAGE/dist.tgz --save +``` + +_It's important to take the tgz file, otherwise you'll get trouble with links on windows_ + +_using `npm link`:_ + +In PATH_TO_GENERATED_PACKAGE/dist: +``` +npm link +``` + +In your project: +``` +npm link +``` + +__Note for Windows users:__ The Angular CLI has troubles to use linked npm packages. +Please refer to this issue https://github.com/angular/angular-cli/issues/8284 for a solution / workaround. +Published packages are not effected by this issue. + + +#### General usage + +In your Angular project: + + +``` +// without configuring providers +import { ApiModule } from ''; +import { HttpClientModule } from '@angular/common/http'; + +@NgModule({ + imports: [ + ApiModule, + // make sure to import the HttpClientModule in the AppModule only, + // see https://github.com/angular/angular/issues/20575 + HttpClientModule + ], + declarations: [ AppComponent ], + providers: [], + bootstrap: [ AppComponent ] +}) +export class AppModule {} +``` + +``` +// configuring providers +import { ApiModule, Configuration, ConfigurationParameters } from ''; + +export function apiConfigFactory (): Configuration { + const params: ConfigurationParameters = { + // set configuration parameters here. + } + return new Configuration(params); +} + +@NgModule({ + imports: [ ApiModule.forRoot(apiConfigFactory) ], + declarations: [ AppComponent ], + providers: [], + bootstrap: [ AppComponent ] +}) +export class AppModule {} +``` + +``` +// configuring providers with an authentication service that manages your access tokens +import { ApiModule, Configuration } from ''; + +@NgModule({ + imports: [ ApiModule ], + declarations: [ AppComponent ], + providers: [ + { + provide: Configuration, + useFactory: (authService: AuthService) => new Configuration( + { + basePath: environment.apiUrl, + accessToken: authService.getAccessToken.bind(authService) + } + ), + deps: [AuthService], + multi: false + } + ], + bootstrap: [ AppComponent ] +}) +export class AppModule {} +``` + +``` +import { DefaultApi } from ''; + +export class AppComponent { + constructor(private apiGateway: DefaultApi) { } +} +``` + +Note: The ApiModule is restricted to being instantiated once app wide. +This is to ensure that all services are treated as singletons. + +#### Using multiple OpenAPI files / APIs / ApiModules +In order to use multiple `ApiModules` generated from different OpenAPI files, +you can create an alias name when importing the modules +in order to avoid naming conflicts: +``` +import { ApiModule } from 'my-api-path'; +import { ApiModule as OtherApiModule } from 'my-other-api-path'; +import { HttpClientModule } from '@angular/common/http'; + +@NgModule({ + imports: [ + ApiModule, + OtherApiModule, + // make sure to import the HttpClientModule in the AppModule only, + // see https://github.com/angular/angular/issues/20575 + HttpClientModule + ] +}) +export class AppModule { + +} +``` + + +### Set service base path +If different than the generated base path, during app bootstrap, you can provide the base path to your service. + +``` +import { BASE_PATH } from ''; + +bootstrap(AppComponent, [ + { provide: BASE_PATH, useValue: 'https://your-web-service.com' }, +]); +``` +or + +``` +import { BASE_PATH } from ''; + +@NgModule({ + imports: [], + declarations: [ AppComponent ], + providers: [ provide: BASE_PATH, useValue: 'https://your-web-service.com' ], + bootstrap: [ AppComponent ] +}) +export class AppModule {} +``` + + +#### Using @angular/cli +First extend your `src/environments/*.ts` files by adding the corresponding base path: + +``` +export const environment = { + production: false, + API_BASE_PATH: 'http://127.0.0.1:8080' +}; +``` + +In the src/app/app.module.ts: +``` +import { BASE_PATH } from ''; +import { environment } from '../environments/environment'; + +@NgModule({ + declarations: [ + AppComponent + ], + imports: [ ], + providers: [{ provide: BASE_PATH, useValue: environment.API_BASE_PATH }], + bootstrap: [ AppComponent ] +}) +export class AppModule { } +``` + +### Customizing path parameter encoding + +Without further customization, only [path-parameters][parameter-locations-url] of [style][style-values-url] 'simple' +and Dates for format 'date-time' are encoded correctly. + +Other styles (e.g. "matrix") are not that easy to encode +and thus are best delegated to other libraries (e.g.: [@honoluluhenk/http-param-expander]). + +To implement your own parameter encoding (or call another library), +pass an arrow-function or method-reference to the `encodeParam` property of the Configuration-object +(see [General Usage](#general-usage) above). + +Example value for use in your Configuration-Provider: +```typescript +new Configuration({ + encodeParam: (param: Param) => myFancyParamEncoder(param), +}) +``` + +[parameter-locations-url]: https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.1.0.md#parameter-locations +[style-values-url]: https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.1.0.md#style-values +[@honoluluhenk/http-param-expander]: https://www.npmjs.com/package/@honoluluhenk/http-param-expander diff --git a/angular/src/app/core/api/v1/api.module.ts b/angular/src/app/core/api/v1/api.module.ts new file mode 100644 index 0000000..58d341f --- /dev/null +++ b/angular/src/app/core/api/v1/api.module.ts @@ -0,0 +1,30 @@ +import { NgModule, ModuleWithProviders, SkipSelf, Optional } from '@angular/core'; +import { Configuration } from './configuration'; +import { HttpClient } from '@angular/common/http'; + + +@NgModule({ + imports: [], + declarations: [], + exports: [], + providers: [] +}) +export class ApiModule { + public static forRoot(configurationFactory: () => Configuration): ModuleWithProviders { + return { + ngModule: ApiModule, + providers: [ { provide: Configuration, useFactory: configurationFactory } ] + }; + } + + constructor( @Optional() @SkipSelf() parentModule: ApiModule, + @Optional() http: HttpClient) { + if (parentModule) { + throw new Error('ApiModule is already loaded. Import in your base AppModule only.'); + } + if (!http) { + throw new Error('You need to import the HttpClientModule in your AppModule! \n' + + 'See also https://github.com/angular/angular/issues/20575'); + } + } +} diff --git a/angular/src/app/core/api/v1/api/accountTradePileItem.service.ts b/angular/src/app/core/api/v1/api/accountTradePileItem.service.ts new file mode 100644 index 0000000..5882811 --- /dev/null +++ b/angular/src/app/core/api/v1/api/accountTradePileItem.service.ts @@ -0,0 +1,381 @@ +/** + * Hello API Platform + * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) + * + * The version of the OpenAPI document: 1.0.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ +/* tslint:disable:no-unused-variable member-ordering */ + +import { Inject, Injectable, Optional } from '@angular/core'; +import { HttpClient, HttpHeaders, HttpParams, + HttpResponse, HttpEvent, HttpParameterCodec, HttpContext + } from '@angular/common/http'; +import { CustomHttpParameterCodec } from '../encoder'; +import { Observable } from 'rxjs'; + +// @ts-ignore +import { AccountTradePileItem } from '../model/accountTradePileItem'; +// @ts-ignore +import { AccountTradePileItemJsonld } from '../model/accountTradePileItemJsonld'; +// @ts-ignore +import { ApiAccountTradePileItemsGetCollection200Response } from '../model/apiAccountTradePileItemsGetCollection200Response'; + +// @ts-ignore +import { BASE_PATH, COLLECTION_FORMATS } from '../variables'; +import { Configuration } from '../configuration'; + + + +@Injectable({ + providedIn: 'root' +}) +export class AccountTradePileItemService { + + protected basePath = 'http://localhost'; + public defaultHeaders = new HttpHeaders(); + public configuration = new Configuration(); + public encoder: HttpParameterCodec; + + constructor(protected httpClient: HttpClient, @Optional()@Inject(BASE_PATH) basePath: string|string[], @Optional() configuration: Configuration) { + if (configuration) { + this.configuration = configuration; + } + if (typeof this.configuration.basePath !== 'string') { + if (Array.isArray(basePath) && basePath.length > 0) { + basePath = basePath[0]; + } + + if (typeof basePath !== 'string') { + basePath = this.basePath; + } + this.configuration.basePath = basePath; + } + this.encoder = this.configuration.encoder || new CustomHttpParameterCodec(); + } + + + // @ts-ignore + private addToHttpParams(httpParams: HttpParams, value: any, key?: string): HttpParams { + if (typeof value === "object" && value instanceof Date === false) { + httpParams = this.addToHttpParamsRecursive(httpParams, value); + } else { + httpParams = this.addToHttpParamsRecursive(httpParams, value, key); + } + return httpParams; + } + + private addToHttpParamsRecursive(httpParams: HttpParams, value?: any, key?: string): HttpParams { + if (value == null) { + return httpParams; + } + + if (typeof value === "object") { + if (Array.isArray(value)) { + (value as any[]).forEach( elem => httpParams = this.addToHttpParamsRecursive(httpParams, elem, key)); + } else if (value instanceof Date) { + if (key != null) { + httpParams = httpParams.append(key, (value as Date).toISOString().substring(0, 10)); + } else { + throw Error("key may not be null if value is Date"); + } + } else { + Object.keys(value).forEach( k => httpParams = this.addToHttpParamsRecursive( + httpParams, value[k], key != null ? `${key}.${k}` : k)); + } + } else if (key != null) { + httpParams = httpParams.append(key, value); + } else { + throw Error("key may not be null if value is not object or array"); + } + return httpParams; + } + + /** + * Retrieves the collection of AccountTradePileItem resources. + * Retrieves the collection of AccountTradePileItem resources. + * @param page The collection page number + * @param itemsPerPage The number of items per page + * @param account + * @param account2 + * @param candidateItem + * @param candidateItem2 + * @param candidateNameSearch + * @param accountTmOpenFilter Filter items based on the tmOpen value of the associated account + * @param customJsonFilter + * @param customJsonOrder + * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body. + * @param reportProgress flag to report request and response progress. + */ + public accountTradePileItemsGetCollection(page?: number, itemsPerPage?: number, account?: string, account2?: Array, candidateItem?: string, candidateItem2?: Array, candidateNameSearch?: string, accountTmOpenFilter?: boolean, customJsonFilter?: string, customJsonOrder?: string, observe?: 'body', reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/ld+json', context?: HttpContext, transferCache?: boolean}): Observable; + public accountTradePileItemsGetCollection(page?: number, itemsPerPage?: number, account?: string, account2?: Array, candidateItem?: string, candidateItem2?: Array, candidateNameSearch?: string, accountTmOpenFilter?: boolean, customJsonFilter?: string, customJsonOrder?: string, observe?: 'response', reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/ld+json', context?: HttpContext, transferCache?: boolean}): Observable>; + public accountTradePileItemsGetCollection(page?: number, itemsPerPage?: number, account?: string, account2?: Array, candidateItem?: string, candidateItem2?: Array, candidateNameSearch?: string, accountTmOpenFilter?: boolean, customJsonFilter?: string, customJsonOrder?: string, observe?: 'events', reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/ld+json', context?: HttpContext, transferCache?: boolean}): Observable>; + public accountTradePileItemsGetCollection(page?: number, itemsPerPage?: number, account?: string, account2?: Array, candidateItem?: string, candidateItem2?: Array, candidateNameSearch?: string, accountTmOpenFilter?: boolean, customJsonFilter?: string, customJsonOrder?: string, observe: any = 'body', reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/ld+json', context?: HttpContext, transferCache?: boolean}): Observable { + + let localVarQueryParameters = new HttpParams({encoder: this.encoder}); + if (page !== undefined && page !== null) { + localVarQueryParameters = this.addToHttpParams(localVarQueryParameters, + page, 'page'); + } + if (itemsPerPage !== undefined && itemsPerPage !== null) { + localVarQueryParameters = this.addToHttpParams(localVarQueryParameters, + itemsPerPage, 'itemsPerPage'); + } + if (account !== undefined && account !== null) { + localVarQueryParameters = this.addToHttpParams(localVarQueryParameters, + account, 'account'); + } + if (account2) { + account2.forEach((element) => { + localVarQueryParameters = this.addToHttpParams(localVarQueryParameters, + element, 'account[]'); + }) + } + if (candidateItem !== undefined && candidateItem !== null) { + localVarQueryParameters = this.addToHttpParams(localVarQueryParameters, + candidateItem, 'candidateItem'); + } + if (candidateItem2) { + candidateItem2.forEach((element) => { + localVarQueryParameters = this.addToHttpParams(localVarQueryParameters, + element, 'candidateItem[]'); + }) + } + if (candidateNameSearch !== undefined && candidateNameSearch !== null) { + localVarQueryParameters = this.addToHttpParams(localVarQueryParameters, + candidateNameSearch, 'candidateNameSearch'); + } + if (accountTmOpenFilter !== undefined && accountTmOpenFilter !== null) { + localVarQueryParameters = this.addToHttpParams(localVarQueryParameters, + accountTmOpenFilter, 'accountTmOpenFilter'); + } + if (customJsonFilter !== undefined && customJsonFilter !== null) { + localVarQueryParameters = this.addToHttpParams(localVarQueryParameters, + customJsonFilter, 'custom_json_filter'); + } + if (customJsonOrder !== undefined && customJsonOrder !== null) { + localVarQueryParameters = this.addToHttpParams(localVarQueryParameters, + customJsonOrder, 'custom_json_order'); + } + + let localVarHeaders = this.defaultHeaders; + + let localVarCredential: string | undefined; + // authentication (JWT) required + localVarCredential = this.configuration.lookupCredential('JWT'); + if (localVarCredential) { + localVarHeaders = localVarHeaders.set('Authorization', 'Bearer ' + localVarCredential); + } + + let localVarHttpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept; + if (localVarHttpHeaderAcceptSelected === undefined) { + // to determine the Accept header + const httpHeaderAccepts: string[] = [ + 'application/ld+json' + ]; + localVarHttpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts); + } + if (localVarHttpHeaderAcceptSelected !== undefined) { + localVarHeaders = localVarHeaders.set('Accept', localVarHttpHeaderAcceptSelected); + } + + let localVarHttpContext: HttpContext | undefined = options && options.context; + if (localVarHttpContext === undefined) { + localVarHttpContext = new HttpContext(); + } + + let localVarTransferCache: boolean | undefined = options && options.transferCache; + if (localVarTransferCache === undefined) { + localVarTransferCache = true; + } + + + let responseType_: 'text' | 'json' | 'blob' = 'json'; + if (localVarHttpHeaderAcceptSelected) { + if (localVarHttpHeaderAcceptSelected.startsWith('text')) { + responseType_ = 'text'; + } else if (this.configuration.isJsonMime(localVarHttpHeaderAcceptSelected)) { + responseType_ = 'json'; + } else { + responseType_ = 'blob'; + } + } + + let localVarPath = `/api/account_trade_pile_items`; + return this.httpClient.request('get', `${this.configuration.basePath}${localVarPath}`, + { + context: localVarHttpContext, + params: localVarQueryParameters, + responseType: responseType_, + withCredentials: this.configuration.withCredentials, + headers: localVarHeaders, + observe: observe, + transferCache: localVarTransferCache, + reportProgress: reportProgress + } + ); + } + + /** + * Retrieves a AccountTradePileItem resource. + * Retrieves a AccountTradePileItem resource. + * @param id AccountTradePileItem identifier + * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body. + * @param reportProgress flag to report request and response progress. + */ + public accountTradePileItemsIdGet(id: string, observe?: 'body', reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/ld+json', context?: HttpContext, transferCache?: boolean}): Observable; + public accountTradePileItemsIdGet(id: string, observe?: 'response', reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/ld+json', context?: HttpContext, transferCache?: boolean}): Observable>; + public accountTradePileItemsIdGet(id: string, observe?: 'events', reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/ld+json', context?: HttpContext, transferCache?: boolean}): Observable>; + public accountTradePileItemsIdGet(id: string, observe: any = 'body', reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/ld+json', context?: HttpContext, transferCache?: boolean}): Observable { + if (id === null || id === undefined) { + throw new Error('Required parameter id was null or undefined when calling accountTradePileItemsIdGet.'); + } + + let localVarHeaders = this.defaultHeaders; + + let localVarCredential: string | undefined; + // authentication (JWT) required + localVarCredential = this.configuration.lookupCredential('JWT'); + if (localVarCredential) { + localVarHeaders = localVarHeaders.set('Authorization', 'Bearer ' + localVarCredential); + } + + let localVarHttpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept; + if (localVarHttpHeaderAcceptSelected === undefined) { + // to determine the Accept header + const httpHeaderAccepts: string[] = [ + 'application/ld+json' + ]; + localVarHttpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts); + } + if (localVarHttpHeaderAcceptSelected !== undefined) { + localVarHeaders = localVarHeaders.set('Accept', localVarHttpHeaderAcceptSelected); + } + + let localVarHttpContext: HttpContext | undefined = options && options.context; + if (localVarHttpContext === undefined) { + localVarHttpContext = new HttpContext(); + } + + let localVarTransferCache: boolean | undefined = options && options.transferCache; + if (localVarTransferCache === undefined) { + localVarTransferCache = true; + } + + + let responseType_: 'text' | 'json' | 'blob' = 'json'; + if (localVarHttpHeaderAcceptSelected) { + if (localVarHttpHeaderAcceptSelected.startsWith('text')) { + responseType_ = 'text'; + } else if (this.configuration.isJsonMime(localVarHttpHeaderAcceptSelected)) { + responseType_ = 'json'; + } else { + responseType_ = 'blob'; + } + } + + let localVarPath = `/api/account_trade_pile_items/${this.configuration.encodeParam({name: "id", value: id, in: "path", style: "simple", explode: false, dataType: "string", dataFormat: undefined})}`; + return this.httpClient.request('get', `${this.configuration.basePath}${localVarPath}`, + { + context: localVarHttpContext, + responseType: responseType_, + withCredentials: this.configuration.withCredentials, + headers: localVarHeaders, + observe: observe, + transferCache: localVarTransferCache, + reportProgress: reportProgress + } + ); + } + + /** + * Updates the AccountTradePileItem resource. + * Updates the AccountTradePileItem resource. + * @param id AccountTradePileItem identifier + * @param accountTradePileItem The updated AccountTradePileItem resource + * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body. + * @param reportProgress flag to report request and response progress. + */ + public accountTradePileItemsIdPatch(id: string, accountTradePileItem: AccountTradePileItem, observe?: 'body', reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/ld+json', context?: HttpContext, transferCache?: boolean}): Observable; + public accountTradePileItemsIdPatch(id: string, accountTradePileItem: AccountTradePileItem, observe?: 'response', reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/ld+json', context?: HttpContext, transferCache?: boolean}): Observable>; + public accountTradePileItemsIdPatch(id: string, accountTradePileItem: AccountTradePileItem, observe?: 'events', reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/ld+json', context?: HttpContext, transferCache?: boolean}): Observable>; + public accountTradePileItemsIdPatch(id: string, accountTradePileItem: AccountTradePileItem, observe: any = 'body', reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/ld+json', context?: HttpContext, transferCache?: boolean}): Observable { + if (id === null || id === undefined) { + throw new Error('Required parameter id was null or undefined when calling accountTradePileItemsIdPatch.'); + } + if (accountTradePileItem === null || accountTradePileItem === undefined) { + throw new Error('Required parameter accountTradePileItem was null or undefined when calling accountTradePileItemsIdPatch.'); + } + + let localVarHeaders = this.defaultHeaders; + + let localVarCredential: string | undefined; + // authentication (JWT) required + localVarCredential = this.configuration.lookupCredential('JWT'); + if (localVarCredential) { + localVarHeaders = localVarHeaders.set('Authorization', 'Bearer ' + localVarCredential); + } + + let localVarHttpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept; + if (localVarHttpHeaderAcceptSelected === undefined) { + // to determine the Accept header + const httpHeaderAccepts: string[] = [ + 'application/ld+json' + ]; + localVarHttpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts); + } + if (localVarHttpHeaderAcceptSelected !== undefined) { + localVarHeaders = localVarHeaders.set('Accept', localVarHttpHeaderAcceptSelected); + } + + let localVarHttpContext: HttpContext | undefined = options && options.context; + if (localVarHttpContext === undefined) { + localVarHttpContext = new HttpContext(); + } + + let localVarTransferCache: boolean | undefined = options && options.transferCache; + if (localVarTransferCache === undefined) { + localVarTransferCache = true; + } + + + // to determine the Content-Type header + const consumes: string[] = [ + 'application/merge-patch+json' + ]; + const httpContentTypeSelected: string | undefined = this.configuration.selectHeaderContentType(consumes); + if (httpContentTypeSelected !== undefined) { + localVarHeaders = localVarHeaders.set('Content-Type', httpContentTypeSelected); + } + + let responseType_: 'text' | 'json' | 'blob' = 'json'; + if (localVarHttpHeaderAcceptSelected) { + if (localVarHttpHeaderAcceptSelected.startsWith('text')) { + responseType_ = 'text'; + } else if (this.configuration.isJsonMime(localVarHttpHeaderAcceptSelected)) { + responseType_ = 'json'; + } else { + responseType_ = 'blob'; + } + } + + let localVarPath = `/api/account_trade_pile_items/${this.configuration.encodeParam({name: "id", value: id, in: "path", style: "simple", explode: false, dataType: "string", dataFormat: undefined})}`; + return this.httpClient.request('patch', `${this.configuration.basePath}${localVarPath}`, + { + context: localVarHttpContext, + body: accountTradePileItem, + responseType: responseType_, + withCredentials: this.configuration.withCredentials, + headers: localVarHeaders, + observe: observe, + transferCache: localVarTransferCache, + reportProgress: reportProgress + } + ); + } + +} diff --git a/angular/src/app/core/api/v1/api/api.ts b/angular/src/app/core/api/v1/api/api.ts new file mode 100644 index 0000000..2c562c6 --- /dev/null +++ b/angular/src/app/core/api/v1/api/api.ts @@ -0,0 +1,37 @@ +export * from './accountTradePileItem.service'; +import { AccountTradePileItemService } from './accountTradePileItem.service'; +export * from './candidate.service'; +import { CandidateService } from './candidate.service'; +export * from './candidateStat.service'; +import { CandidateStatService } from './candidateStat.service'; +export * from './candidateStockAccounts.service'; +import { CandidateStockAccountsService } from './candidateStockAccounts.service'; +export * from './config.service'; +import { ConfigService } from './config.service'; +export * from './gameAccount.service'; +import { GameAccountService } from './gameAccount.service'; +export * from './logAccountCredit.service'; +import { LogAccountCreditService } from './logAccountCredit.service'; +export * from './logAccountProfit.service'; +import { LogAccountProfitService } from './logAccountProfit.service'; +export * from './logAccountSoldItem.service'; +import { LogAccountSoldItemService } from './logAccountSoldItem.service'; +export * from './logGeneral.service'; +import { LogGeneralService } from './logGeneral.service'; +export * from './logTotalProfit.service'; +import { LogTotalProfitService } from './logTotalProfit.service'; +export * from './loginCheck.service'; +import { LoginCheckService } from './loginCheck.service'; +export * from './mediaObject.service'; +import { MediaObjectService } from './mediaObject.service'; +export * from './modeConfig.service'; +import { ModeConfigService } from './modeConfig.service'; +export * from './player.service'; +import { PlayerService } from './player.service'; +export * from './rarity.service'; +import { RarityService } from './rarity.service'; +export * from './systemStat.service'; +import { SystemStatService } from './systemStat.service'; +export * from './user.service'; +import { UserService } from './user.service'; +export const APIS = [AccountTradePileItemService, CandidateService, CandidateStatService, CandidateStockAccountsService, ConfigService, GameAccountService, LogAccountCreditService, LogAccountProfitService, LogAccountSoldItemService, LogGeneralService, LogTotalProfitService, LoginCheckService, MediaObjectService, ModeConfigService, PlayerService, RarityService, SystemStatService, UserService]; diff --git a/angular/src/app/core/api/v1/api/candidate.service.ts b/angular/src/app/core/api/v1/api/candidate.service.ts new file mode 100644 index 0000000..039f1c5 --- /dev/null +++ b/angular/src/app/core/api/v1/api/candidate.service.ts @@ -0,0 +1,434 @@ +/** + * Hello API Platform + * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) + * + * The version of the OpenAPI document: 1.0.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ +/* tslint:disable:no-unused-variable member-ordering */ + +import { Inject, Injectable, Optional } from '@angular/core'; +import { HttpClient, HttpHeaders, HttpParams, + HttpResponse, HttpEvent, HttpParameterCodec, HttpContext + } from '@angular/common/http'; +import { CustomHttpParameterCodec } from '../encoder'; +import { Observable } from 'rxjs'; + +// @ts-ignore +import { ApiCandidatesGetCollection200Response } from '../model/apiCandidatesGetCollection200Response'; +// @ts-ignore +import { Candidate } from '../model/candidate'; +// @ts-ignore +import { CandidateJsonld } from '../model/candidateJsonld'; + +// @ts-ignore +import { BASE_PATH, COLLECTION_FORMATS } from '../variables'; +import { Configuration } from '../configuration'; + + + +@Injectable({ + providedIn: 'root' +}) +export class CandidateService { + + protected basePath = 'http://localhost'; + public defaultHeaders = new HttpHeaders(); + public configuration = new Configuration(); + public encoder: HttpParameterCodec; + + constructor(protected httpClient: HttpClient, @Optional()@Inject(BASE_PATH) basePath: string|string[], @Optional() configuration: Configuration) { + if (configuration) { + this.configuration = configuration; + } + if (typeof this.configuration.basePath !== 'string') { + if (Array.isArray(basePath) && basePath.length > 0) { + basePath = basePath[0]; + } + + if (typeof basePath !== 'string') { + basePath = this.basePath; + } + this.configuration.basePath = basePath; + } + this.encoder = this.configuration.encoder || new CustomHttpParameterCodec(); + } + + + // @ts-ignore + private addToHttpParams(httpParams: HttpParams, value: any, key?: string): HttpParams { + if (typeof value === "object" && value instanceof Date === false) { + httpParams = this.addToHttpParamsRecursive(httpParams, value); + } else { + httpParams = this.addToHttpParamsRecursive(httpParams, value, key); + } + return httpParams; + } + + private addToHttpParamsRecursive(httpParams: HttpParams, value?: any, key?: string): HttpParams { + if (value == null) { + return httpParams; + } + + if (typeof value === "object") { + if (Array.isArray(value)) { + (value as any[]).forEach( elem => httpParams = this.addToHttpParamsRecursive(httpParams, elem, key)); + } else if (value instanceof Date) { + if (key != null) { + httpParams = httpParams.append(key, (value as Date).toISOString().substring(0, 10)); + } else { + throw Error("key may not be null if value is Date"); + } + } else { + Object.keys(value).forEach( k => httpParams = this.addToHttpParamsRecursive( + httpParams, value[k], key != null ? `${key}.${k}` : k)); + } + } else if (key != null) { + httpParams = httpParams.append(key, value); + } else { + throw Error("key may not be null if value is not object or array"); + } + return httpParams; + } + + /** + * Retrieves the collection of Candidate resources. + * Retrieves the collection of Candidate resources. + * @param page The collection page number + * @param itemsPerPage The number of items per page + * @param candidateNameSearch + * @param customJsonFilter + * @param customJsonOrder + * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body. + * @param reportProgress flag to report request and response progress. + */ + public candidatesGetCollection(page?: number, itemsPerPage?: number, candidateNameSearch?: string, customJsonFilter?: string, customJsonOrder?: string, observe?: 'body', reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/ld+json', context?: HttpContext, transferCache?: boolean}): Observable; + public candidatesGetCollection(page?: number, itemsPerPage?: number, candidateNameSearch?: string, customJsonFilter?: string, customJsonOrder?: string, observe?: 'response', reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/ld+json', context?: HttpContext, transferCache?: boolean}): Observable>; + public candidatesGetCollection(page?: number, itemsPerPage?: number, candidateNameSearch?: string, customJsonFilter?: string, customJsonOrder?: string, observe?: 'events', reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/ld+json', context?: HttpContext, transferCache?: boolean}): Observable>; + public candidatesGetCollection(page?: number, itemsPerPage?: number, candidateNameSearch?: string, customJsonFilter?: string, customJsonOrder?: string, observe: any = 'body', reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/ld+json', context?: HttpContext, transferCache?: boolean}): Observable { + + let localVarQueryParameters = new HttpParams({encoder: this.encoder}); + if (page !== undefined && page !== null) { + localVarQueryParameters = this.addToHttpParams(localVarQueryParameters, + page, 'page'); + } + if (itemsPerPage !== undefined && itemsPerPage !== null) { + localVarQueryParameters = this.addToHttpParams(localVarQueryParameters, + itemsPerPage, 'itemsPerPage'); + } + if (candidateNameSearch !== undefined && candidateNameSearch !== null) { + localVarQueryParameters = this.addToHttpParams(localVarQueryParameters, + candidateNameSearch, 'candidateNameSearch'); + } + if (customJsonFilter !== undefined && customJsonFilter !== null) { + localVarQueryParameters = this.addToHttpParams(localVarQueryParameters, + customJsonFilter, 'custom_json_filter'); + } + if (customJsonOrder !== undefined && customJsonOrder !== null) { + localVarQueryParameters = this.addToHttpParams(localVarQueryParameters, + customJsonOrder, 'custom_json_order'); + } + + let localVarHeaders = this.defaultHeaders; + + let localVarCredential: string | undefined; + // authentication (JWT) required + localVarCredential = this.configuration.lookupCredential('JWT'); + if (localVarCredential) { + localVarHeaders = localVarHeaders.set('Authorization', 'Bearer ' + localVarCredential); + } + + let localVarHttpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept; + if (localVarHttpHeaderAcceptSelected === undefined) { + // to determine the Accept header + const httpHeaderAccepts: string[] = [ + 'application/ld+json' + ]; + localVarHttpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts); + } + if (localVarHttpHeaderAcceptSelected !== undefined) { + localVarHeaders = localVarHeaders.set('Accept', localVarHttpHeaderAcceptSelected); + } + + let localVarHttpContext: HttpContext | undefined = options && options.context; + if (localVarHttpContext === undefined) { + localVarHttpContext = new HttpContext(); + } + + let localVarTransferCache: boolean | undefined = options && options.transferCache; + if (localVarTransferCache === undefined) { + localVarTransferCache = true; + } + + + let responseType_: 'text' | 'json' | 'blob' = 'json'; + if (localVarHttpHeaderAcceptSelected) { + if (localVarHttpHeaderAcceptSelected.startsWith('text')) { + responseType_ = 'text'; + } else if (this.configuration.isJsonMime(localVarHttpHeaderAcceptSelected)) { + responseType_ = 'json'; + } else { + responseType_ = 'blob'; + } + } + + let localVarPath = `/api/candidates`; + return this.httpClient.request('get', `${this.configuration.basePath}${localVarPath}`, + { + context: localVarHttpContext, + params: localVarQueryParameters, + responseType: responseType_, + withCredentials: this.configuration.withCredentials, + headers: localVarHeaders, + observe: observe, + transferCache: localVarTransferCache, + reportProgress: reportProgress + } + ); + } + + /** + * Retrieves a Candidate resource. + * Retrieves a Candidate resource. + * @param id Candidate identifier + * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body. + * @param reportProgress flag to report request and response progress. + */ + public candidatesIdGet(id: string, observe?: 'body', reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/ld+json', context?: HttpContext, transferCache?: boolean}): Observable; + public candidatesIdGet(id: string, observe?: 'response', reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/ld+json', context?: HttpContext, transferCache?: boolean}): Observable>; + public candidatesIdGet(id: string, observe?: 'events', reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/ld+json', context?: HttpContext, transferCache?: boolean}): Observable>; + public candidatesIdGet(id: string, observe: any = 'body', reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/ld+json', context?: HttpContext, transferCache?: boolean}): Observable { + if (id === null || id === undefined) { + throw new Error('Required parameter id was null or undefined when calling candidatesIdGet.'); + } + + let localVarHeaders = this.defaultHeaders; + + let localVarCredential: string | undefined; + // authentication (JWT) required + localVarCredential = this.configuration.lookupCredential('JWT'); + if (localVarCredential) { + localVarHeaders = localVarHeaders.set('Authorization', 'Bearer ' + localVarCredential); + } + + let localVarHttpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept; + if (localVarHttpHeaderAcceptSelected === undefined) { + // to determine the Accept header + const httpHeaderAccepts: string[] = [ + 'application/ld+json' + ]; + localVarHttpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts); + } + if (localVarHttpHeaderAcceptSelected !== undefined) { + localVarHeaders = localVarHeaders.set('Accept', localVarHttpHeaderAcceptSelected); + } + + let localVarHttpContext: HttpContext | undefined = options && options.context; + if (localVarHttpContext === undefined) { + localVarHttpContext = new HttpContext(); + } + + let localVarTransferCache: boolean | undefined = options && options.transferCache; + if (localVarTransferCache === undefined) { + localVarTransferCache = true; + } + + + let responseType_: 'text' | 'json' | 'blob' = 'json'; + if (localVarHttpHeaderAcceptSelected) { + if (localVarHttpHeaderAcceptSelected.startsWith('text')) { + responseType_ = 'text'; + } else if (this.configuration.isJsonMime(localVarHttpHeaderAcceptSelected)) { + responseType_ = 'json'; + } else { + responseType_ = 'blob'; + } + } + + let localVarPath = `/api/candidates/${this.configuration.encodeParam({name: "id", value: id, in: "path", style: "simple", explode: false, dataType: "string", dataFormat: undefined})}`; + return this.httpClient.request('get', `${this.configuration.basePath}${localVarPath}`, + { + context: localVarHttpContext, + responseType: responseType_, + withCredentials: this.configuration.withCredentials, + headers: localVarHeaders, + observe: observe, + transferCache: localVarTransferCache, + reportProgress: reportProgress + } + ); + } + + /** + * Updates the Candidate resource. + * Updates the Candidate resource. + * @param id Candidate identifier + * @param candidate The updated Candidate resource + * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body. + * @param reportProgress flag to report request and response progress. + */ + public candidatesIdPatch(id: string, candidate: Candidate, observe?: 'body', reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/ld+json', context?: HttpContext, transferCache?: boolean}): Observable; + public candidatesIdPatch(id: string, candidate: Candidate, observe?: 'response', reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/ld+json', context?: HttpContext, transferCache?: boolean}): Observable>; + public candidatesIdPatch(id: string, candidate: Candidate, observe?: 'events', reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/ld+json', context?: HttpContext, transferCache?: boolean}): Observable>; + public candidatesIdPatch(id: string, candidate: Candidate, observe: any = 'body', reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/ld+json', context?: HttpContext, transferCache?: boolean}): Observable { + if (id === null || id === undefined) { + throw new Error('Required parameter id was null or undefined when calling candidatesIdPatch.'); + } + if (candidate === null || candidate === undefined) { + throw new Error('Required parameter candidate was null or undefined when calling candidatesIdPatch.'); + } + + let localVarHeaders = this.defaultHeaders; + + let localVarCredential: string | undefined; + // authentication (JWT) required + localVarCredential = this.configuration.lookupCredential('JWT'); + if (localVarCredential) { + localVarHeaders = localVarHeaders.set('Authorization', 'Bearer ' + localVarCredential); + } + + let localVarHttpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept; + if (localVarHttpHeaderAcceptSelected === undefined) { + // to determine the Accept header + const httpHeaderAccepts: string[] = [ + 'application/ld+json' + ]; + localVarHttpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts); + } + if (localVarHttpHeaderAcceptSelected !== undefined) { + localVarHeaders = localVarHeaders.set('Accept', localVarHttpHeaderAcceptSelected); + } + + let localVarHttpContext: HttpContext | undefined = options && options.context; + if (localVarHttpContext === undefined) { + localVarHttpContext = new HttpContext(); + } + + let localVarTransferCache: boolean | undefined = options && options.transferCache; + if (localVarTransferCache === undefined) { + localVarTransferCache = true; + } + + + // to determine the Content-Type header + const consumes: string[] = [ + 'application/merge-patch+json' + ]; + const httpContentTypeSelected: string | undefined = this.configuration.selectHeaderContentType(consumes); + if (httpContentTypeSelected !== undefined) { + localVarHeaders = localVarHeaders.set('Content-Type', httpContentTypeSelected); + } + + let responseType_: 'text' | 'json' | 'blob' = 'json'; + if (localVarHttpHeaderAcceptSelected) { + if (localVarHttpHeaderAcceptSelected.startsWith('text')) { + responseType_ = 'text'; + } else if (this.configuration.isJsonMime(localVarHttpHeaderAcceptSelected)) { + responseType_ = 'json'; + } else { + responseType_ = 'blob'; + } + } + + let localVarPath = `/api/candidates/${this.configuration.encodeParam({name: "id", value: id, in: "path", style: "simple", explode: false, dataType: "string", dataFormat: undefined})}`; + return this.httpClient.request('patch', `${this.configuration.basePath}${localVarPath}`, + { + context: localVarHttpContext, + body: candidate, + responseType: responseType_, + withCredentials: this.configuration.withCredentials, + headers: localVarHeaders, + observe: observe, + transferCache: localVarTransferCache, + reportProgress: reportProgress + } + ); + } + + /** + * Creates a Candidate resource. + * Creates a Candidate resource. + * @param candidateJsonld The new Candidate resource + * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body. + * @param reportProgress flag to report request and response progress. + */ + public candidatesPost(candidateJsonld: CandidateJsonld, observe?: 'body', reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/ld+json', context?: HttpContext, transferCache?: boolean}): Observable; + public candidatesPost(candidateJsonld: CandidateJsonld, observe?: 'response', reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/ld+json', context?: HttpContext, transferCache?: boolean}): Observable>; + public candidatesPost(candidateJsonld: CandidateJsonld, observe?: 'events', reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/ld+json', context?: HttpContext, transferCache?: boolean}): Observable>; + public candidatesPost(candidateJsonld: CandidateJsonld, observe: any = 'body', reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/ld+json', context?: HttpContext, transferCache?: boolean}): Observable { + if (candidateJsonld === null || candidateJsonld === undefined) { + throw new Error('Required parameter candidateJsonld was null or undefined when calling candidatesPost.'); + } + + let localVarHeaders = this.defaultHeaders; + + let localVarCredential: string | undefined; + // authentication (JWT) required + localVarCredential = this.configuration.lookupCredential('JWT'); + if (localVarCredential) { + localVarHeaders = localVarHeaders.set('Authorization', 'Bearer ' + localVarCredential); + } + + let localVarHttpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept; + if (localVarHttpHeaderAcceptSelected === undefined) { + // to determine the Accept header + const httpHeaderAccepts: string[] = [ + 'application/ld+json' + ]; + localVarHttpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts); + } + if (localVarHttpHeaderAcceptSelected !== undefined) { + localVarHeaders = localVarHeaders.set('Accept', localVarHttpHeaderAcceptSelected); + } + + let localVarHttpContext: HttpContext | undefined = options && options.context; + if (localVarHttpContext === undefined) { + localVarHttpContext = new HttpContext(); + } + + let localVarTransferCache: boolean | undefined = options && options.transferCache; + if (localVarTransferCache === undefined) { + localVarTransferCache = true; + } + + + // to determine the Content-Type header + const consumes: string[] = [ + 'application/ld+json' + ]; + const httpContentTypeSelected: string | undefined = this.configuration.selectHeaderContentType(consumes); + if (httpContentTypeSelected !== undefined) { + localVarHeaders = localVarHeaders.set('Content-Type', httpContentTypeSelected); + } + + let responseType_: 'text' | 'json' | 'blob' = 'json'; + if (localVarHttpHeaderAcceptSelected) { + if (localVarHttpHeaderAcceptSelected.startsWith('text')) { + responseType_ = 'text'; + } else if (this.configuration.isJsonMime(localVarHttpHeaderAcceptSelected)) { + responseType_ = 'json'; + } else { + responseType_ = 'blob'; + } + } + + let localVarPath = `/api/candidates`; + return this.httpClient.request('post', `${this.configuration.basePath}${localVarPath}`, + { + context: localVarHttpContext, + body: candidateJsonld, + responseType: responseType_, + withCredentials: this.configuration.withCredentials, + headers: localVarHeaders, + observe: observe, + transferCache: localVarTransferCache, + reportProgress: reportProgress + } + ); + } + +} diff --git a/angular/src/app/core/api/v1/api/candidateStat.service.ts b/angular/src/app/core/api/v1/api/candidateStat.service.ts new file mode 100644 index 0000000..bc57161 --- /dev/null +++ b/angular/src/app/core/api/v1/api/candidateStat.service.ts @@ -0,0 +1,259 @@ +/** + * Hello API Platform + * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) + * + * The version of the OpenAPI document: 1.0.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ +/* tslint:disable:no-unused-variable member-ordering */ + +import { Inject, Injectable, Optional } from '@angular/core'; +import { HttpClient, HttpHeaders, HttpParams, + HttpResponse, HttpEvent, HttpParameterCodec, HttpContext + } from '@angular/common/http'; +import { CustomHttpParameterCodec } from '../encoder'; +import { Observable } from 'rxjs'; + +// @ts-ignore +import { ApiCandidateStatsGetCollection200Response } from '../model/apiCandidateStatsGetCollection200Response'; +// @ts-ignore +import { CandidateStatJsonld } from '../model/candidateStatJsonld'; + +// @ts-ignore +import { BASE_PATH, COLLECTION_FORMATS } from '../variables'; +import { Configuration } from '../configuration'; + + + +@Injectable({ + providedIn: 'root' +}) +export class CandidateStatService { + + protected basePath = 'http://localhost'; + public defaultHeaders = new HttpHeaders(); + public configuration = new Configuration(); + public encoder: HttpParameterCodec; + + constructor(protected httpClient: HttpClient, @Optional()@Inject(BASE_PATH) basePath: string|string[], @Optional() configuration: Configuration) { + if (configuration) { + this.configuration = configuration; + } + if (typeof this.configuration.basePath !== 'string') { + if (Array.isArray(basePath) && basePath.length > 0) { + basePath = basePath[0]; + } + + if (typeof basePath !== 'string') { + basePath = this.basePath; + } + this.configuration.basePath = basePath; + } + this.encoder = this.configuration.encoder || new CustomHttpParameterCodec(); + } + + + // @ts-ignore + private addToHttpParams(httpParams: HttpParams, value: any, key?: string): HttpParams { + if (typeof value === "object" && value instanceof Date === false) { + httpParams = this.addToHttpParamsRecursive(httpParams, value); + } else { + httpParams = this.addToHttpParamsRecursive(httpParams, value, key); + } + return httpParams; + } + + private addToHttpParamsRecursive(httpParams: HttpParams, value?: any, key?: string): HttpParams { + if (value == null) { + return httpParams; + } + + if (typeof value === "object") { + if (Array.isArray(value)) { + (value as any[]).forEach( elem => httpParams = this.addToHttpParamsRecursive(httpParams, elem, key)); + } else if (value instanceof Date) { + if (key != null) { + httpParams = httpParams.append(key, (value as Date).toISOString().substring(0, 10)); + } else { + throw Error("key may not be null if value is Date"); + } + } else { + Object.keys(value).forEach( k => httpParams = this.addToHttpParamsRecursive( + httpParams, value[k], key != null ? `${key}.${k}` : k)); + } + } else if (key != null) { + httpParams = httpParams.append(key, value); + } else { + throw Error("key may not be null if value is not object or array"); + } + return httpParams; + } + + /** + * Retrieves the collection of CandidateStat resources. + * Retrieves the collection of CandidateStat resources. + * @param page The collection page number + * @param itemsPerPage The number of items per page + * @param candidateNameSearch + * @param customJsonOrder + * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body. + * @param reportProgress flag to report request and response progress. + */ + public candidateStatsGetCollection(page?: number, itemsPerPage?: number, candidateNameSearch?: string, customJsonOrder?: string, observe?: 'body', reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/ld+json', context?: HttpContext, transferCache?: boolean}): Observable; + public candidateStatsGetCollection(page?: number, itemsPerPage?: number, candidateNameSearch?: string, customJsonOrder?: string, observe?: 'response', reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/ld+json', context?: HttpContext, transferCache?: boolean}): Observable>; + public candidateStatsGetCollection(page?: number, itemsPerPage?: number, candidateNameSearch?: string, customJsonOrder?: string, observe?: 'events', reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/ld+json', context?: HttpContext, transferCache?: boolean}): Observable>; + public candidateStatsGetCollection(page?: number, itemsPerPage?: number, candidateNameSearch?: string, customJsonOrder?: string, observe: any = 'body', reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/ld+json', context?: HttpContext, transferCache?: boolean}): Observable { + + let localVarQueryParameters = new HttpParams({encoder: this.encoder}); + if (page !== undefined && page !== null) { + localVarQueryParameters = this.addToHttpParams(localVarQueryParameters, + page, 'page'); + } + if (itemsPerPage !== undefined && itemsPerPage !== null) { + localVarQueryParameters = this.addToHttpParams(localVarQueryParameters, + itemsPerPage, 'itemsPerPage'); + } + if (candidateNameSearch !== undefined && candidateNameSearch !== null) { + localVarQueryParameters = this.addToHttpParams(localVarQueryParameters, + candidateNameSearch, 'candidateNameSearch'); + } + if (customJsonOrder !== undefined && customJsonOrder !== null) { + localVarQueryParameters = this.addToHttpParams(localVarQueryParameters, + customJsonOrder, 'custom_json_order'); + } + + let localVarHeaders = this.defaultHeaders; + + let localVarCredential: string | undefined; + // authentication (JWT) required + localVarCredential = this.configuration.lookupCredential('JWT'); + if (localVarCredential) { + localVarHeaders = localVarHeaders.set('Authorization', 'Bearer ' + localVarCredential); + } + + let localVarHttpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept; + if (localVarHttpHeaderAcceptSelected === undefined) { + // to determine the Accept header + const httpHeaderAccepts: string[] = [ + 'application/ld+json' + ]; + localVarHttpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts); + } + if (localVarHttpHeaderAcceptSelected !== undefined) { + localVarHeaders = localVarHeaders.set('Accept', localVarHttpHeaderAcceptSelected); + } + + let localVarHttpContext: HttpContext | undefined = options && options.context; + if (localVarHttpContext === undefined) { + localVarHttpContext = new HttpContext(); + } + + let localVarTransferCache: boolean | undefined = options && options.transferCache; + if (localVarTransferCache === undefined) { + localVarTransferCache = true; + } + + + let responseType_: 'text' | 'json' | 'blob' = 'json'; + if (localVarHttpHeaderAcceptSelected) { + if (localVarHttpHeaderAcceptSelected.startsWith('text')) { + responseType_ = 'text'; + } else if (this.configuration.isJsonMime(localVarHttpHeaderAcceptSelected)) { + responseType_ = 'json'; + } else { + responseType_ = 'blob'; + } + } + + let localVarPath = `/api/candidate_stats`; + return this.httpClient.request('get', `${this.configuration.basePath}${localVarPath}`, + { + context: localVarHttpContext, + params: localVarQueryParameters, + responseType: responseType_, + withCredentials: this.configuration.withCredentials, + headers: localVarHeaders, + observe: observe, + transferCache: localVarTransferCache, + reportProgress: reportProgress + } + ); + } + + /** + * Retrieves a CandidateStat resource. + * Retrieves a CandidateStat resource. + * @param id CandidateStat identifier + * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body. + * @param reportProgress flag to report request and response progress. + */ + public candidateStatsIdGet(id: string, observe?: 'body', reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/ld+json', context?: HttpContext, transferCache?: boolean}): Observable; + public candidateStatsIdGet(id: string, observe?: 'response', reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/ld+json', context?: HttpContext, transferCache?: boolean}): Observable>; + public candidateStatsIdGet(id: string, observe?: 'events', reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/ld+json', context?: HttpContext, transferCache?: boolean}): Observable>; + public candidateStatsIdGet(id: string, observe: any = 'body', reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/ld+json', context?: HttpContext, transferCache?: boolean}): Observable { + if (id === null || id === undefined) { + throw new Error('Required parameter id was null or undefined when calling candidateStatsIdGet.'); + } + + let localVarHeaders = this.defaultHeaders; + + let localVarCredential: string | undefined; + // authentication (JWT) required + localVarCredential = this.configuration.lookupCredential('JWT'); + if (localVarCredential) { + localVarHeaders = localVarHeaders.set('Authorization', 'Bearer ' + localVarCredential); + } + + let localVarHttpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept; + if (localVarHttpHeaderAcceptSelected === undefined) { + // to determine the Accept header + const httpHeaderAccepts: string[] = [ + 'application/ld+json' + ]; + localVarHttpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts); + } + if (localVarHttpHeaderAcceptSelected !== undefined) { + localVarHeaders = localVarHeaders.set('Accept', localVarHttpHeaderAcceptSelected); + } + + let localVarHttpContext: HttpContext | undefined = options && options.context; + if (localVarHttpContext === undefined) { + localVarHttpContext = new HttpContext(); + } + + let localVarTransferCache: boolean | undefined = options && options.transferCache; + if (localVarTransferCache === undefined) { + localVarTransferCache = true; + } + + + let responseType_: 'text' | 'json' | 'blob' = 'json'; + if (localVarHttpHeaderAcceptSelected) { + if (localVarHttpHeaderAcceptSelected.startsWith('text')) { + responseType_ = 'text'; + } else if (this.configuration.isJsonMime(localVarHttpHeaderAcceptSelected)) { + responseType_ = 'json'; + } else { + responseType_ = 'blob'; + } + } + + let localVarPath = `/api/candidate_stats/${this.configuration.encodeParam({name: "id", value: id, in: "path", style: "simple", explode: false, dataType: "string", dataFormat: undefined})}`; + return this.httpClient.request('get', `${this.configuration.basePath}${localVarPath}`, + { + context: localVarHttpContext, + responseType: responseType_, + withCredentials: this.configuration.withCredentials, + headers: localVarHeaders, + observe: observe, + transferCache: localVarTransferCache, + reportProgress: reportProgress + } + ); + } + +} diff --git a/angular/src/app/core/api/v1/api/candidateStockAccounts.service.ts b/angular/src/app/core/api/v1/api/candidateStockAccounts.service.ts new file mode 100644 index 0000000..0e3def4 --- /dev/null +++ b/angular/src/app/core/api/v1/api/candidateStockAccounts.service.ts @@ -0,0 +1,166 @@ +/** + * Hello API Platform + * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) + * + * The version of the OpenAPI document: 1.0.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ +/* tslint:disable:no-unused-variable member-ordering */ + +import { Inject, Injectable, Optional } from '@angular/core'; +import { HttpClient, HttpHeaders, HttpParams, + HttpResponse, HttpEvent, HttpParameterCodec, HttpContext + } from '@angular/common/http'; +import { CustomHttpParameterCodec } from '../encoder'; +import { Observable } from 'rxjs'; + +// @ts-ignore +import { CandidateStockAccountsJsonld } from '../model/candidateStockAccountsJsonld'; + +// @ts-ignore +import { BASE_PATH, COLLECTION_FORMATS } from '../variables'; +import { Configuration } from '../configuration'; + + + +@Injectable({ + providedIn: 'root' +}) +export class CandidateStockAccountsService { + + protected basePath = 'http://localhost'; + public defaultHeaders = new HttpHeaders(); + public configuration = new Configuration(); + public encoder: HttpParameterCodec; + + constructor(protected httpClient: HttpClient, @Optional()@Inject(BASE_PATH) basePath: string|string[], @Optional() configuration: Configuration) { + if (configuration) { + this.configuration = configuration; + } + if (typeof this.configuration.basePath !== 'string') { + if (Array.isArray(basePath) && basePath.length > 0) { + basePath = basePath[0]; + } + + if (typeof basePath !== 'string') { + basePath = this.basePath; + } + this.configuration.basePath = basePath; + } + this.encoder = this.configuration.encoder || new CustomHttpParameterCodec(); + } + + + // @ts-ignore + private addToHttpParams(httpParams: HttpParams, value: any, key?: string): HttpParams { + if (typeof value === "object" && value instanceof Date === false) { + httpParams = this.addToHttpParamsRecursive(httpParams, value); + } else { + httpParams = this.addToHttpParamsRecursive(httpParams, value, key); + } + return httpParams; + } + + private addToHttpParamsRecursive(httpParams: HttpParams, value?: any, key?: string): HttpParams { + if (value == null) { + return httpParams; + } + + if (typeof value === "object") { + if (Array.isArray(value)) { + (value as any[]).forEach( elem => httpParams = this.addToHttpParamsRecursive(httpParams, elem, key)); + } else if (value instanceof Date) { + if (key != null) { + httpParams = httpParams.append(key, (value as Date).toISOString().substring(0, 10)); + } else { + throw Error("key may not be null if value is Date"); + } + } else { + Object.keys(value).forEach( k => httpParams = this.addToHttpParamsRecursive( + httpParams, value[k], key != null ? `${key}.${k}` : k)); + } + } else if (key != null) { + httpParams = httpParams.append(key, value); + } else { + throw Error("key may not be null if value is not object or array"); + } + return httpParams; + } + + /** + * Retrieves the stock and missing accounts for a candidate item + * Retrieves a CandidateStockAccounts resource. + * @param id Candidate Item ID + * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body. + * @param reportProgress flag to report request and response progress. + */ + public candidateItemsIdstockAccountsGet(id: number, observe?: 'body', reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/ld+json', context?: HttpContext, transferCache?: boolean}): Observable; + public candidateItemsIdstockAccountsGet(id: number, observe?: 'response', reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/ld+json', context?: HttpContext, transferCache?: boolean}): Observable>; + public candidateItemsIdstockAccountsGet(id: number, observe?: 'events', reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/ld+json', context?: HttpContext, transferCache?: boolean}): Observable>; + public candidateItemsIdstockAccountsGet(id: number, observe: any = 'body', reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/ld+json', context?: HttpContext, transferCache?: boolean}): Observable { + if (id === null || id === undefined) { + throw new Error('Required parameter id was null or undefined when calling candidateItemsIdstockAccountsGet.'); + } + + let localVarHeaders = this.defaultHeaders; + + let localVarCredential: string | undefined; + // authentication (JWT) required + localVarCredential = this.configuration.lookupCredential('JWT'); + if (localVarCredential) { + localVarHeaders = localVarHeaders.set('Authorization', 'Bearer ' + localVarCredential); + } + + let localVarHttpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept; + if (localVarHttpHeaderAcceptSelected === undefined) { + // to determine the Accept header + const httpHeaderAccepts: string[] = [ + 'application/ld+json' + ]; + localVarHttpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts); + } + if (localVarHttpHeaderAcceptSelected !== undefined) { + localVarHeaders = localVarHeaders.set('Accept', localVarHttpHeaderAcceptSelected); + } + + let localVarHttpContext: HttpContext | undefined = options && options.context; + if (localVarHttpContext === undefined) { + localVarHttpContext = new HttpContext(); + } + + let localVarTransferCache: boolean | undefined = options && options.transferCache; + if (localVarTransferCache === undefined) { + localVarTransferCache = true; + } + + + let responseType_: 'text' | 'json' | 'blob' = 'json'; + if (localVarHttpHeaderAcceptSelected) { + if (localVarHttpHeaderAcceptSelected.startsWith('text')) { + responseType_ = 'text'; + } else if (this.configuration.isJsonMime(localVarHttpHeaderAcceptSelected)) { + responseType_ = 'json'; + } else { + responseType_ = 'blob'; + } + } + + let localVarPath = `/api/candidate-items/${this.configuration.encodeParam({name: "id", value: id, in: "path", style: "simple", explode: false, dataType: "number", dataFormat: undefined})}/stock-accounts`; + return this.httpClient.request('get', `${this.configuration.basePath}${localVarPath}`, + { + context: localVarHttpContext, + responseType: responseType_, + withCredentials: this.configuration.withCredentials, + headers: localVarHeaders, + observe: observe, + transferCache: localVarTransferCache, + reportProgress: reportProgress + } + ); + } + +} diff --git a/angular/src/app/core/api/v1/api/config.service.ts b/angular/src/app/core/api/v1/api/config.service.ts new file mode 100644 index 0000000..0712f7d --- /dev/null +++ b/angular/src/app/core/api/v1/api/config.service.ts @@ -0,0 +1,246 @@ +/** + * Hello API Platform + * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) + * + * The version of the OpenAPI document: 1.0.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ +/* tslint:disable:no-unused-variable member-ordering */ + +import { Inject, Injectable, Optional } from '@angular/core'; +import { HttpClient, HttpHeaders, HttpParams, + HttpResponse, HttpEvent, HttpParameterCodec, HttpContext + } from '@angular/common/http'; +import { CustomHttpParameterCodec } from '../encoder'; +import { Observable } from 'rxjs'; + +// @ts-ignore +import { Config } from '../model/config'; +// @ts-ignore +import { ConfigJsonld } from '../model/configJsonld'; + +// @ts-ignore +import { BASE_PATH, COLLECTION_FORMATS } from '../variables'; +import { Configuration } from '../configuration'; + + + +@Injectable({ + providedIn: 'root' +}) +export class ConfigService { + + protected basePath = 'http://localhost'; + public defaultHeaders = new HttpHeaders(); + public configuration = new Configuration(); + public encoder: HttpParameterCodec; + + constructor(protected httpClient: HttpClient, @Optional()@Inject(BASE_PATH) basePath: string|string[], @Optional() configuration: Configuration) { + if (configuration) { + this.configuration = configuration; + } + if (typeof this.configuration.basePath !== 'string') { + if (Array.isArray(basePath) && basePath.length > 0) { + basePath = basePath[0]; + } + + if (typeof basePath !== 'string') { + basePath = this.basePath; + } + this.configuration.basePath = basePath; + } + this.encoder = this.configuration.encoder || new CustomHttpParameterCodec(); + } + + + // @ts-ignore + private addToHttpParams(httpParams: HttpParams, value: any, key?: string): HttpParams { + if (typeof value === "object" && value instanceof Date === false) { + httpParams = this.addToHttpParamsRecursive(httpParams, value); + } else { + httpParams = this.addToHttpParamsRecursive(httpParams, value, key); + } + return httpParams; + } + + private addToHttpParamsRecursive(httpParams: HttpParams, value?: any, key?: string): HttpParams { + if (value == null) { + return httpParams; + } + + if (typeof value === "object") { + if (Array.isArray(value)) { + (value as any[]).forEach( elem => httpParams = this.addToHttpParamsRecursive(httpParams, elem, key)); + } else if (value instanceof Date) { + if (key != null) { + httpParams = httpParams.append(key, (value as Date).toISOString().substring(0, 10)); + } else { + throw Error("key may not be null if value is Date"); + } + } else { + Object.keys(value).forEach( k => httpParams = this.addToHttpParamsRecursive( + httpParams, value[k], key != null ? `${key}.${k}` : k)); + } + } else if (key != null) { + httpParams = httpParams.append(key, value); + } else { + throw Error("key may not be null if value is not object or array"); + } + return httpParams; + } + + /** + * Retrieves a Config resource. + * Retrieves a Config resource. + * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body. + * @param reportProgress flag to report request and response progress. + */ + public configGet(observe?: 'body', reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/ld+json', context?: HttpContext, transferCache?: boolean}): Observable; + public configGet(observe?: 'response', reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/ld+json', context?: HttpContext, transferCache?: boolean}): Observable>; + public configGet(observe?: 'events', reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/ld+json', context?: HttpContext, transferCache?: boolean}): Observable>; + public configGet(observe: any = 'body', reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/ld+json', context?: HttpContext, transferCache?: boolean}): Observable { + + let localVarHeaders = this.defaultHeaders; + + let localVarCredential: string | undefined; + // authentication (JWT) required + localVarCredential = this.configuration.lookupCredential('JWT'); + if (localVarCredential) { + localVarHeaders = localVarHeaders.set('Authorization', 'Bearer ' + localVarCredential); + } + + let localVarHttpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept; + if (localVarHttpHeaderAcceptSelected === undefined) { + // to determine the Accept header + const httpHeaderAccepts: string[] = [ + 'application/ld+json' + ]; + localVarHttpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts); + } + if (localVarHttpHeaderAcceptSelected !== undefined) { + localVarHeaders = localVarHeaders.set('Accept', localVarHttpHeaderAcceptSelected); + } + + let localVarHttpContext: HttpContext | undefined = options && options.context; + if (localVarHttpContext === undefined) { + localVarHttpContext = new HttpContext(); + } + + let localVarTransferCache: boolean | undefined = options && options.transferCache; + if (localVarTransferCache === undefined) { + localVarTransferCache = true; + } + + + let responseType_: 'text' | 'json' | 'blob' = 'json'; + if (localVarHttpHeaderAcceptSelected) { + if (localVarHttpHeaderAcceptSelected.startsWith('text')) { + responseType_ = 'text'; + } else if (this.configuration.isJsonMime(localVarHttpHeaderAcceptSelected)) { + responseType_ = 'json'; + } else { + responseType_ = 'blob'; + } + } + + let localVarPath = `/api/config`; + return this.httpClient.request('get', `${this.configuration.basePath}${localVarPath}`, + { + context: localVarHttpContext, + responseType: responseType_, + withCredentials: this.configuration.withCredentials, + headers: localVarHeaders, + observe: observe, + transferCache: localVarTransferCache, + reportProgress: reportProgress + } + ); + } + + /** + * Updates the Config resource. + * Updates the Config resource. + * @param config The updated Config resource + * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body. + * @param reportProgress flag to report request and response progress. + */ + public configPatch(config: Config, observe?: 'body', reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/ld+json', context?: HttpContext, transferCache?: boolean}): Observable; + public configPatch(config: Config, observe?: 'response', reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/ld+json', context?: HttpContext, transferCache?: boolean}): Observable>; + public configPatch(config: Config, observe?: 'events', reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/ld+json', context?: HttpContext, transferCache?: boolean}): Observable>; + public configPatch(config: Config, observe: any = 'body', reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/ld+json', context?: HttpContext, transferCache?: boolean}): Observable { + if (config === null || config === undefined) { + throw new Error('Required parameter config was null or undefined when calling configPatch.'); + } + + let localVarHeaders = this.defaultHeaders; + + let localVarCredential: string | undefined; + // authentication (JWT) required + localVarCredential = this.configuration.lookupCredential('JWT'); + if (localVarCredential) { + localVarHeaders = localVarHeaders.set('Authorization', 'Bearer ' + localVarCredential); + } + + let localVarHttpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept; + if (localVarHttpHeaderAcceptSelected === undefined) { + // to determine the Accept header + const httpHeaderAccepts: string[] = [ + 'application/ld+json' + ]; + localVarHttpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts); + } + if (localVarHttpHeaderAcceptSelected !== undefined) { + localVarHeaders = localVarHeaders.set('Accept', localVarHttpHeaderAcceptSelected); + } + + let localVarHttpContext: HttpContext | undefined = options && options.context; + if (localVarHttpContext === undefined) { + localVarHttpContext = new HttpContext(); + } + + let localVarTransferCache: boolean | undefined = options && options.transferCache; + if (localVarTransferCache === undefined) { + localVarTransferCache = true; + } + + + // to determine the Content-Type header + const consumes: string[] = [ + 'application/merge-patch+json' + ]; + const httpContentTypeSelected: string | undefined = this.configuration.selectHeaderContentType(consumes); + if (httpContentTypeSelected !== undefined) { + localVarHeaders = localVarHeaders.set('Content-Type', httpContentTypeSelected); + } + + let responseType_: 'text' | 'json' | 'blob' = 'json'; + if (localVarHttpHeaderAcceptSelected) { + if (localVarHttpHeaderAcceptSelected.startsWith('text')) { + responseType_ = 'text'; + } else if (this.configuration.isJsonMime(localVarHttpHeaderAcceptSelected)) { + responseType_ = 'json'; + } else { + responseType_ = 'blob'; + } + } + + let localVarPath = `/api/config`; + return this.httpClient.request('patch', `${this.configuration.basePath}${localVarPath}`, + { + context: localVarHttpContext, + body: config, + responseType: responseType_, + withCredentials: this.configuration.withCredentials, + headers: localVarHeaders, + observe: observe, + transferCache: localVarTransferCache, + reportProgress: reportProgress + } + ); + } + +} diff --git a/angular/src/app/core/api/v1/api/gameAccount.service.ts b/angular/src/app/core/api/v1/api/gameAccount.service.ts new file mode 100644 index 0000000..7e761e4 --- /dev/null +++ b/angular/src/app/core/api/v1/api/gameAccount.service.ts @@ -0,0 +1,456 @@ +/** + * Hello API Platform + * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) + * + * The version of the OpenAPI document: 1.0.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ +/* tslint:disable:no-unused-variable member-ordering */ + +import { Inject, Injectable, Optional } from '@angular/core'; +import { HttpClient, HttpHeaders, HttpParams, + HttpResponse, HttpEvent, HttpParameterCodec, HttpContext + } from '@angular/common/http'; +import { CustomHttpParameterCodec } from '../encoder'; +import { Observable } from 'rxjs'; + +// @ts-ignore +import { ApiGameAccountsGetCollection200Response } from '../model/apiGameAccountsGetCollection200Response'; +// @ts-ignore +import { GameAccount } from '../model/gameAccount'; +// @ts-ignore +import { GameAccountJsonld } from '../model/gameAccountJsonld'; + +// @ts-ignore +import { BASE_PATH, COLLECTION_FORMATS } from '../variables'; +import { Configuration } from '../configuration'; + + + +@Injectable({ + providedIn: 'root' +}) +export class GameAccountService { + + protected basePath = 'http://localhost'; + public defaultHeaders = new HttpHeaders(); + public configuration = new Configuration(); + public encoder: HttpParameterCodec; + + constructor(protected httpClient: HttpClient, @Optional()@Inject(BASE_PATH) basePath: string|string[], @Optional() configuration: Configuration) { + if (configuration) { + this.configuration = configuration; + } + if (typeof this.configuration.basePath !== 'string') { + if (Array.isArray(basePath) && basePath.length > 0) { + basePath = basePath[0]; + } + + if (typeof basePath !== 'string') { + basePath = this.basePath; + } + this.configuration.basePath = basePath; + } + this.encoder = this.configuration.encoder || new CustomHttpParameterCodec(); + } + + + // @ts-ignore + private addToHttpParams(httpParams: HttpParams, value: any, key?: string): HttpParams { + if (typeof value === "object" && value instanceof Date === false) { + httpParams = this.addToHttpParamsRecursive(httpParams, value); + } else { + httpParams = this.addToHttpParamsRecursive(httpParams, value, key); + } + return httpParams; + } + + private addToHttpParamsRecursive(httpParams: HttpParams, value?: any, key?: string): HttpParams { + if (value == null) { + return httpParams; + } + + if (typeof value === "object") { + if (Array.isArray(value)) { + (value as any[]).forEach( elem => httpParams = this.addToHttpParamsRecursive(httpParams, elem, key)); + } else if (value instanceof Date) { + if (key != null) { + httpParams = httpParams.append(key, (value as Date).toISOString().substring(0, 10)); + } else { + throw Error("key may not be null if value is Date"); + } + } else { + Object.keys(value).forEach( k => httpParams = this.addToHttpParamsRecursive( + httpParams, value[k], key != null ? `${key}.${k}` : k)); + } + } else if (key != null) { + httpParams = httpParams.append(key, value); + } else { + throw Error("key may not be null if value is not object or array"); + } + return httpParams; + } + + /** + * Retrieves the collection of GameAccount resources. + * Retrieves the collection of GameAccount resources. + * @param page The collection page number + * @param itemsPerPage The number of items per page + * @param owner + * @param owner2 + * @param email + * @param profile + * @param tmOpen + * @param customJsonFilter + * @param customJsonOrder + * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body. + * @param reportProgress flag to report request and response progress. + */ + public gameAccountsGetCollection(page?: number, itemsPerPage?: number, owner?: string, owner2?: Array, email?: string, profile?: string, tmOpen?: boolean, customJsonFilter?: string, customJsonOrder?: string, observe?: 'body', reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/ld+json', context?: HttpContext, transferCache?: boolean}): Observable; + public gameAccountsGetCollection(page?: number, itemsPerPage?: number, owner?: string, owner2?: Array, email?: string, profile?: string, tmOpen?: boolean, customJsonFilter?: string, customJsonOrder?: string, observe?: 'response', reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/ld+json', context?: HttpContext, transferCache?: boolean}): Observable>; + public gameAccountsGetCollection(page?: number, itemsPerPage?: number, owner?: string, owner2?: Array, email?: string, profile?: string, tmOpen?: boolean, customJsonFilter?: string, customJsonOrder?: string, observe?: 'events', reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/ld+json', context?: HttpContext, transferCache?: boolean}): Observable>; + public gameAccountsGetCollection(page?: number, itemsPerPage?: number, owner?: string, owner2?: Array, email?: string, profile?: string, tmOpen?: boolean, customJsonFilter?: string, customJsonOrder?: string, observe: any = 'body', reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/ld+json', context?: HttpContext, transferCache?: boolean}): Observable { + + let localVarQueryParameters = new HttpParams({encoder: this.encoder}); + if (page !== undefined && page !== null) { + localVarQueryParameters = this.addToHttpParams(localVarQueryParameters, + page, 'page'); + } + if (itemsPerPage !== undefined && itemsPerPage !== null) { + localVarQueryParameters = this.addToHttpParams(localVarQueryParameters, + itemsPerPage, 'itemsPerPage'); + } + if (owner !== undefined && owner !== null) { + localVarQueryParameters = this.addToHttpParams(localVarQueryParameters, + owner, 'owner'); + } + if (owner2) { + owner2.forEach((element) => { + localVarQueryParameters = this.addToHttpParams(localVarQueryParameters, + element, 'owner[]'); + }) + } + if (email !== undefined && email !== null) { + localVarQueryParameters = this.addToHttpParams(localVarQueryParameters, + email, 'email'); + } + if (profile !== undefined && profile !== null) { + localVarQueryParameters = this.addToHttpParams(localVarQueryParameters, + profile, 'profile'); + } + if (tmOpen !== undefined && tmOpen !== null) { + localVarQueryParameters = this.addToHttpParams(localVarQueryParameters, + tmOpen, 'tmOpen'); + } + if (customJsonFilter !== undefined && customJsonFilter !== null) { + localVarQueryParameters = this.addToHttpParams(localVarQueryParameters, + customJsonFilter, 'custom_json_filter'); + } + if (customJsonOrder !== undefined && customJsonOrder !== null) { + localVarQueryParameters = this.addToHttpParams(localVarQueryParameters, + customJsonOrder, 'custom_json_order'); + } + + let localVarHeaders = this.defaultHeaders; + + let localVarCredential: string | undefined; + // authentication (JWT) required + localVarCredential = this.configuration.lookupCredential('JWT'); + if (localVarCredential) { + localVarHeaders = localVarHeaders.set('Authorization', 'Bearer ' + localVarCredential); + } + + let localVarHttpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept; + if (localVarHttpHeaderAcceptSelected === undefined) { + // to determine the Accept header + const httpHeaderAccepts: string[] = [ + 'application/ld+json' + ]; + localVarHttpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts); + } + if (localVarHttpHeaderAcceptSelected !== undefined) { + localVarHeaders = localVarHeaders.set('Accept', localVarHttpHeaderAcceptSelected); + } + + let localVarHttpContext: HttpContext | undefined = options && options.context; + if (localVarHttpContext === undefined) { + localVarHttpContext = new HttpContext(); + } + + let localVarTransferCache: boolean | undefined = options && options.transferCache; + if (localVarTransferCache === undefined) { + localVarTransferCache = true; + } + + + let responseType_: 'text' | 'json' | 'blob' = 'json'; + if (localVarHttpHeaderAcceptSelected) { + if (localVarHttpHeaderAcceptSelected.startsWith('text')) { + responseType_ = 'text'; + } else if (this.configuration.isJsonMime(localVarHttpHeaderAcceptSelected)) { + responseType_ = 'json'; + } else { + responseType_ = 'blob'; + } + } + + let localVarPath = `/api/game_accounts`; + return this.httpClient.request('get', `${this.configuration.basePath}${localVarPath}`, + { + context: localVarHttpContext, + params: localVarQueryParameters, + responseType: responseType_, + withCredentials: this.configuration.withCredentials, + headers: localVarHeaders, + observe: observe, + transferCache: localVarTransferCache, + reportProgress: reportProgress + } + ); + } + + /** + * Retrieves a GameAccount resource. + * Retrieves a GameAccount resource. + * @param id GameAccount identifier + * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body. + * @param reportProgress flag to report request and response progress. + */ + public gameAccountsIdGet(id: string, observe?: 'body', reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/ld+json', context?: HttpContext, transferCache?: boolean}): Observable; + public gameAccountsIdGet(id: string, observe?: 'response', reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/ld+json', context?: HttpContext, transferCache?: boolean}): Observable>; + public gameAccountsIdGet(id: string, observe?: 'events', reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/ld+json', context?: HttpContext, transferCache?: boolean}): Observable>; + public gameAccountsIdGet(id: string, observe: any = 'body', reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/ld+json', context?: HttpContext, transferCache?: boolean}): Observable { + if (id === null || id === undefined) { + throw new Error('Required parameter id was null or undefined when calling gameAccountsIdGet.'); + } + + let localVarHeaders = this.defaultHeaders; + + let localVarCredential: string | undefined; + // authentication (JWT) required + localVarCredential = this.configuration.lookupCredential('JWT'); + if (localVarCredential) { + localVarHeaders = localVarHeaders.set('Authorization', 'Bearer ' + localVarCredential); + } + + let localVarHttpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept; + if (localVarHttpHeaderAcceptSelected === undefined) { + // to determine the Accept header + const httpHeaderAccepts: string[] = [ + 'application/ld+json' + ]; + localVarHttpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts); + } + if (localVarHttpHeaderAcceptSelected !== undefined) { + localVarHeaders = localVarHeaders.set('Accept', localVarHttpHeaderAcceptSelected); + } + + let localVarHttpContext: HttpContext | undefined = options && options.context; + if (localVarHttpContext === undefined) { + localVarHttpContext = new HttpContext(); + } + + let localVarTransferCache: boolean | undefined = options && options.transferCache; + if (localVarTransferCache === undefined) { + localVarTransferCache = true; + } + + + let responseType_: 'text' | 'json' | 'blob' = 'json'; + if (localVarHttpHeaderAcceptSelected) { + if (localVarHttpHeaderAcceptSelected.startsWith('text')) { + responseType_ = 'text'; + } else if (this.configuration.isJsonMime(localVarHttpHeaderAcceptSelected)) { + responseType_ = 'json'; + } else { + responseType_ = 'blob'; + } + } + + let localVarPath = `/api/game_accounts/${this.configuration.encodeParam({name: "id", value: id, in: "path", style: "simple", explode: false, dataType: "string", dataFormat: undefined})}`; + return this.httpClient.request('get', `${this.configuration.basePath}${localVarPath}`, + { + context: localVarHttpContext, + responseType: responseType_, + withCredentials: this.configuration.withCredentials, + headers: localVarHeaders, + observe: observe, + transferCache: localVarTransferCache, + reportProgress: reportProgress + } + ); + } + + /** + * Updates the GameAccount resource. + * Updates the GameAccount resource. + * @param id GameAccount identifier + * @param gameAccount The updated GameAccount resource + * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body. + * @param reportProgress flag to report request and response progress. + */ + public gameAccountsIdPatch(id: string, gameAccount: GameAccount, observe?: 'body', reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/ld+json', context?: HttpContext, transferCache?: boolean}): Observable; + public gameAccountsIdPatch(id: string, gameAccount: GameAccount, observe?: 'response', reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/ld+json', context?: HttpContext, transferCache?: boolean}): Observable>; + public gameAccountsIdPatch(id: string, gameAccount: GameAccount, observe?: 'events', reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/ld+json', context?: HttpContext, transferCache?: boolean}): Observable>; + public gameAccountsIdPatch(id: string, gameAccount: GameAccount, observe: any = 'body', reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/ld+json', context?: HttpContext, transferCache?: boolean}): Observable { + if (id === null || id === undefined) { + throw new Error('Required parameter id was null or undefined when calling gameAccountsIdPatch.'); + } + if (gameAccount === null || gameAccount === undefined) { + throw new Error('Required parameter gameAccount was null or undefined when calling gameAccountsIdPatch.'); + } + + let localVarHeaders = this.defaultHeaders; + + let localVarCredential: string | undefined; + // authentication (JWT) required + localVarCredential = this.configuration.lookupCredential('JWT'); + if (localVarCredential) { + localVarHeaders = localVarHeaders.set('Authorization', 'Bearer ' + localVarCredential); + } + + let localVarHttpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept; + if (localVarHttpHeaderAcceptSelected === undefined) { + // to determine the Accept header + const httpHeaderAccepts: string[] = [ + 'application/ld+json' + ]; + localVarHttpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts); + } + if (localVarHttpHeaderAcceptSelected !== undefined) { + localVarHeaders = localVarHeaders.set('Accept', localVarHttpHeaderAcceptSelected); + } + + let localVarHttpContext: HttpContext | undefined = options && options.context; + if (localVarHttpContext === undefined) { + localVarHttpContext = new HttpContext(); + } + + let localVarTransferCache: boolean | undefined = options && options.transferCache; + if (localVarTransferCache === undefined) { + localVarTransferCache = true; + } + + + // to determine the Content-Type header + const consumes: string[] = [ + 'application/merge-patch+json' + ]; + const httpContentTypeSelected: string | undefined = this.configuration.selectHeaderContentType(consumes); + if (httpContentTypeSelected !== undefined) { + localVarHeaders = localVarHeaders.set('Content-Type', httpContentTypeSelected); + } + + let responseType_: 'text' | 'json' | 'blob' = 'json'; + if (localVarHttpHeaderAcceptSelected) { + if (localVarHttpHeaderAcceptSelected.startsWith('text')) { + responseType_ = 'text'; + } else if (this.configuration.isJsonMime(localVarHttpHeaderAcceptSelected)) { + responseType_ = 'json'; + } else { + responseType_ = 'blob'; + } + } + + let localVarPath = `/api/game_accounts/${this.configuration.encodeParam({name: "id", value: id, in: "path", style: "simple", explode: false, dataType: "string", dataFormat: undefined})}`; + return this.httpClient.request('patch', `${this.configuration.basePath}${localVarPath}`, + { + context: localVarHttpContext, + body: gameAccount, + responseType: responseType_, + withCredentials: this.configuration.withCredentials, + headers: localVarHeaders, + observe: observe, + transferCache: localVarTransferCache, + reportProgress: reportProgress + } + ); + } + + /** + * Creates a GameAccount resource. + * Creates a GameAccount resource. + * @param gameAccountJsonld The new GameAccount resource + * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body. + * @param reportProgress flag to report request and response progress. + */ + public gameAccountsPost(gameAccountJsonld: GameAccountJsonld, observe?: 'body', reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/ld+json', context?: HttpContext, transferCache?: boolean}): Observable; + public gameAccountsPost(gameAccountJsonld: GameAccountJsonld, observe?: 'response', reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/ld+json', context?: HttpContext, transferCache?: boolean}): Observable>; + public gameAccountsPost(gameAccountJsonld: GameAccountJsonld, observe?: 'events', reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/ld+json', context?: HttpContext, transferCache?: boolean}): Observable>; + public gameAccountsPost(gameAccountJsonld: GameAccountJsonld, observe: any = 'body', reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/ld+json', context?: HttpContext, transferCache?: boolean}): Observable { + if (gameAccountJsonld === null || gameAccountJsonld === undefined) { + throw new Error('Required parameter gameAccountJsonld was null or undefined when calling gameAccountsPost.'); + } + + let localVarHeaders = this.defaultHeaders; + + let localVarCredential: string | undefined; + // authentication (JWT) required + localVarCredential = this.configuration.lookupCredential('JWT'); + if (localVarCredential) { + localVarHeaders = localVarHeaders.set('Authorization', 'Bearer ' + localVarCredential); + } + + let localVarHttpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept; + if (localVarHttpHeaderAcceptSelected === undefined) { + // to determine the Accept header + const httpHeaderAccepts: string[] = [ + 'application/ld+json' + ]; + localVarHttpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts); + } + if (localVarHttpHeaderAcceptSelected !== undefined) { + localVarHeaders = localVarHeaders.set('Accept', localVarHttpHeaderAcceptSelected); + } + + let localVarHttpContext: HttpContext | undefined = options && options.context; + if (localVarHttpContext === undefined) { + localVarHttpContext = new HttpContext(); + } + + let localVarTransferCache: boolean | undefined = options && options.transferCache; + if (localVarTransferCache === undefined) { + localVarTransferCache = true; + } + + + // to determine the Content-Type header + const consumes: string[] = [ + 'application/ld+json' + ]; + const httpContentTypeSelected: string | undefined = this.configuration.selectHeaderContentType(consumes); + if (httpContentTypeSelected !== undefined) { + localVarHeaders = localVarHeaders.set('Content-Type', httpContentTypeSelected); + } + + let responseType_: 'text' | 'json' | 'blob' = 'json'; + if (localVarHttpHeaderAcceptSelected) { + if (localVarHttpHeaderAcceptSelected.startsWith('text')) { + responseType_ = 'text'; + } else if (this.configuration.isJsonMime(localVarHttpHeaderAcceptSelected)) { + responseType_ = 'json'; + } else { + responseType_ = 'blob'; + } + } + + let localVarPath = `/api/game_accounts`; + return this.httpClient.request('post', `${this.configuration.basePath}${localVarPath}`, + { + context: localVarHttpContext, + body: gameAccountJsonld, + responseType: responseType_, + withCredentials: this.configuration.withCredentials, + headers: localVarHeaders, + observe: observe, + transferCache: localVarTransferCache, + reportProgress: reportProgress + } + ); + } + +} diff --git a/angular/src/app/core/api/v1/api/logAccountCredit.service.ts b/angular/src/app/core/api/v1/api/logAccountCredit.service.ts new file mode 100644 index 0000000..a6ca308 --- /dev/null +++ b/angular/src/app/core/api/v1/api/logAccountCredit.service.ts @@ -0,0 +1,264 @@ +/** + * Hello API Platform + * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) + * + * The version of the OpenAPI document: 1.0.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ +/* tslint:disable:no-unused-variable member-ordering */ + +import { Inject, Injectable, Optional } from '@angular/core'; +import { HttpClient, HttpHeaders, HttpParams, + HttpResponse, HttpEvent, HttpParameterCodec, HttpContext + } from '@angular/common/http'; +import { CustomHttpParameterCodec } from '../encoder'; +import { Observable } from 'rxjs'; + +// @ts-ignore +import { ApiLogAccountCreditsGetCollection200Response } from '../model/apiLogAccountCreditsGetCollection200Response'; +// @ts-ignore +import { LogAccountCreditJsonld } from '../model/logAccountCreditJsonld'; + +// @ts-ignore +import { BASE_PATH, COLLECTION_FORMATS } from '../variables'; +import { Configuration } from '../configuration'; + + + +@Injectable({ + providedIn: 'root' +}) +export class LogAccountCreditService { + + protected basePath = 'http://localhost'; + public defaultHeaders = new HttpHeaders(); + public configuration = new Configuration(); + public encoder: HttpParameterCodec; + + constructor(protected httpClient: HttpClient, @Optional()@Inject(BASE_PATH) basePath: string|string[], @Optional() configuration: Configuration) { + if (configuration) { + this.configuration = configuration; + } + if (typeof this.configuration.basePath !== 'string') { + if (Array.isArray(basePath) && basePath.length > 0) { + basePath = basePath[0]; + } + + if (typeof basePath !== 'string') { + basePath = this.basePath; + } + this.configuration.basePath = basePath; + } + this.encoder = this.configuration.encoder || new CustomHttpParameterCodec(); + } + + + // @ts-ignore + private addToHttpParams(httpParams: HttpParams, value: any, key?: string): HttpParams { + if (typeof value === "object" && value instanceof Date === false) { + httpParams = this.addToHttpParamsRecursive(httpParams, value); + } else { + httpParams = this.addToHttpParamsRecursive(httpParams, value, key); + } + return httpParams; + } + + private addToHttpParamsRecursive(httpParams: HttpParams, value?: any, key?: string): HttpParams { + if (value == null) { + return httpParams; + } + + if (typeof value === "object") { + if (Array.isArray(value)) { + (value as any[]).forEach( elem => httpParams = this.addToHttpParamsRecursive(httpParams, elem, key)); + } else if (value instanceof Date) { + if (key != null) { + httpParams = httpParams.append(key, (value as Date).toISOString().substring(0, 10)); + } else { + throw Error("key may not be null if value is Date"); + } + } else { + Object.keys(value).forEach( k => httpParams = this.addToHttpParamsRecursive( + httpParams, value[k], key != null ? `${key}.${k}` : k)); + } + } else if (key != null) { + httpParams = httpParams.append(key, value); + } else { + throw Error("key may not be null if value is not object or array"); + } + return httpParams; + } + + /** + * Retrieves the collection of LogAccountCredit resources. + * Retrieves the collection of LogAccountCredit resources. + * @param page The collection page number + * @param itemsPerPage The number of items per page + * @param orderCreationDate + * @param orderCredits + * @param orderRevenue + * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body. + * @param reportProgress flag to report request and response progress. + */ + public logAccountCreditsGetCollection(page?: number, itemsPerPage?: number, orderCreationDate?: 'asc' | 'desc', orderCredits?: 'asc' | 'desc', orderRevenue?: 'asc' | 'desc', observe?: 'body', reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/ld+json', context?: HttpContext, transferCache?: boolean}): Observable; + public logAccountCreditsGetCollection(page?: number, itemsPerPage?: number, orderCreationDate?: 'asc' | 'desc', orderCredits?: 'asc' | 'desc', orderRevenue?: 'asc' | 'desc', observe?: 'response', reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/ld+json', context?: HttpContext, transferCache?: boolean}): Observable>; + public logAccountCreditsGetCollection(page?: number, itemsPerPage?: number, orderCreationDate?: 'asc' | 'desc', orderCredits?: 'asc' | 'desc', orderRevenue?: 'asc' | 'desc', observe?: 'events', reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/ld+json', context?: HttpContext, transferCache?: boolean}): Observable>; + public logAccountCreditsGetCollection(page?: number, itemsPerPage?: number, orderCreationDate?: 'asc' | 'desc', orderCredits?: 'asc' | 'desc', orderRevenue?: 'asc' | 'desc', observe: any = 'body', reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/ld+json', context?: HttpContext, transferCache?: boolean}): Observable { + + let localVarQueryParameters = new HttpParams({encoder: this.encoder}); + if (page !== undefined && page !== null) { + localVarQueryParameters = this.addToHttpParams(localVarQueryParameters, + page, 'page'); + } + if (itemsPerPage !== undefined && itemsPerPage !== null) { + localVarQueryParameters = this.addToHttpParams(localVarQueryParameters, + itemsPerPage, 'itemsPerPage'); + } + if (orderCreationDate !== undefined && orderCreationDate !== null) { + localVarQueryParameters = this.addToHttpParams(localVarQueryParameters, + orderCreationDate, 'order[creationDate]'); + } + if (orderCredits !== undefined && orderCredits !== null) { + localVarQueryParameters = this.addToHttpParams(localVarQueryParameters, + orderCredits, 'order[credits]'); + } + if (orderRevenue !== undefined && orderRevenue !== null) { + localVarQueryParameters = this.addToHttpParams(localVarQueryParameters, + orderRevenue, 'order[revenue]'); + } + + let localVarHeaders = this.defaultHeaders; + + let localVarCredential: string | undefined; + // authentication (JWT) required + localVarCredential = this.configuration.lookupCredential('JWT'); + if (localVarCredential) { + localVarHeaders = localVarHeaders.set('Authorization', 'Bearer ' + localVarCredential); + } + + let localVarHttpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept; + if (localVarHttpHeaderAcceptSelected === undefined) { + // to determine the Accept header + const httpHeaderAccepts: string[] = [ + 'application/ld+json' + ]; + localVarHttpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts); + } + if (localVarHttpHeaderAcceptSelected !== undefined) { + localVarHeaders = localVarHeaders.set('Accept', localVarHttpHeaderAcceptSelected); + } + + let localVarHttpContext: HttpContext | undefined = options && options.context; + if (localVarHttpContext === undefined) { + localVarHttpContext = new HttpContext(); + } + + let localVarTransferCache: boolean | undefined = options && options.transferCache; + if (localVarTransferCache === undefined) { + localVarTransferCache = true; + } + + + let responseType_: 'text' | 'json' | 'blob' = 'json'; + if (localVarHttpHeaderAcceptSelected) { + if (localVarHttpHeaderAcceptSelected.startsWith('text')) { + responseType_ = 'text'; + } else if (this.configuration.isJsonMime(localVarHttpHeaderAcceptSelected)) { + responseType_ = 'json'; + } else { + responseType_ = 'blob'; + } + } + + let localVarPath = `/api/log_account_credits`; + return this.httpClient.request('get', `${this.configuration.basePath}${localVarPath}`, + { + context: localVarHttpContext, + params: localVarQueryParameters, + responseType: responseType_, + withCredentials: this.configuration.withCredentials, + headers: localVarHeaders, + observe: observe, + transferCache: localVarTransferCache, + reportProgress: reportProgress + } + ); + } + + /** + * Retrieves a LogAccountCredit resource. + * Retrieves a LogAccountCredit resource. + * @param id LogAccountCredit identifier + * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body. + * @param reportProgress flag to report request and response progress. + */ + public logAccountCreditsIdGet(id: string, observe?: 'body', reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/ld+json', context?: HttpContext, transferCache?: boolean}): Observable; + public logAccountCreditsIdGet(id: string, observe?: 'response', reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/ld+json', context?: HttpContext, transferCache?: boolean}): Observable>; + public logAccountCreditsIdGet(id: string, observe?: 'events', reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/ld+json', context?: HttpContext, transferCache?: boolean}): Observable>; + public logAccountCreditsIdGet(id: string, observe: any = 'body', reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/ld+json', context?: HttpContext, transferCache?: boolean}): Observable { + if (id === null || id === undefined) { + throw new Error('Required parameter id was null or undefined when calling logAccountCreditsIdGet.'); + } + + let localVarHeaders = this.defaultHeaders; + + let localVarCredential: string | undefined; + // authentication (JWT) required + localVarCredential = this.configuration.lookupCredential('JWT'); + if (localVarCredential) { + localVarHeaders = localVarHeaders.set('Authorization', 'Bearer ' + localVarCredential); + } + + let localVarHttpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept; + if (localVarHttpHeaderAcceptSelected === undefined) { + // to determine the Accept header + const httpHeaderAccepts: string[] = [ + 'application/ld+json' + ]; + localVarHttpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts); + } + if (localVarHttpHeaderAcceptSelected !== undefined) { + localVarHeaders = localVarHeaders.set('Accept', localVarHttpHeaderAcceptSelected); + } + + let localVarHttpContext: HttpContext | undefined = options && options.context; + if (localVarHttpContext === undefined) { + localVarHttpContext = new HttpContext(); + } + + let localVarTransferCache: boolean | undefined = options && options.transferCache; + if (localVarTransferCache === undefined) { + localVarTransferCache = true; + } + + + let responseType_: 'text' | 'json' | 'blob' = 'json'; + if (localVarHttpHeaderAcceptSelected) { + if (localVarHttpHeaderAcceptSelected.startsWith('text')) { + responseType_ = 'text'; + } else if (this.configuration.isJsonMime(localVarHttpHeaderAcceptSelected)) { + responseType_ = 'json'; + } else { + responseType_ = 'blob'; + } + } + + let localVarPath = `/api/log_account_credits/${this.configuration.encodeParam({name: "id", value: id, in: "path", style: "simple", explode: false, dataType: "string", dataFormat: undefined})}`; + return this.httpClient.request('get', `${this.configuration.basePath}${localVarPath}`, + { + context: localVarHttpContext, + responseType: responseType_, + withCredentials: this.configuration.withCredentials, + headers: localVarHeaders, + observe: observe, + transferCache: localVarTransferCache, + reportProgress: reportProgress + } + ); + } + +} diff --git a/angular/src/app/core/api/v1/api/logAccountProfit.service.ts b/angular/src/app/core/api/v1/api/logAccountProfit.service.ts new file mode 100644 index 0000000..3ae373b --- /dev/null +++ b/angular/src/app/core/api/v1/api/logAccountProfit.service.ts @@ -0,0 +1,281 @@ +/** + * Hello API Platform + * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) + * + * The version of the OpenAPI document: 1.0.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ +/* tslint:disable:no-unused-variable member-ordering */ + +import { Inject, Injectable, Optional } from '@angular/core'; +import { HttpClient, HttpHeaders, HttpParams, + HttpResponse, HttpEvent, HttpParameterCodec, HttpContext + } from '@angular/common/http'; +import { CustomHttpParameterCodec } from '../encoder'; +import { Observable } from 'rxjs'; + +// @ts-ignore +import { ApiLogAccountProfitsGetCollection200Response } from '../model/apiLogAccountProfitsGetCollection200Response'; +// @ts-ignore +import { LogAccountProfitJsonld } from '../model/logAccountProfitJsonld'; + +// @ts-ignore +import { BASE_PATH, COLLECTION_FORMATS } from '../variables'; +import { Configuration } from '../configuration'; + + + +@Injectable({ + providedIn: 'root' +}) +export class LogAccountProfitService { + + protected basePath = 'http://localhost'; + public defaultHeaders = new HttpHeaders(); + public configuration = new Configuration(); + public encoder: HttpParameterCodec; + + constructor(protected httpClient: HttpClient, @Optional()@Inject(BASE_PATH) basePath: string|string[], @Optional() configuration: Configuration) { + if (configuration) { + this.configuration = configuration; + } + if (typeof this.configuration.basePath !== 'string') { + if (Array.isArray(basePath) && basePath.length > 0) { + basePath = basePath[0]; + } + + if (typeof basePath !== 'string') { + basePath = this.basePath; + } + this.configuration.basePath = basePath; + } + this.encoder = this.configuration.encoder || new CustomHttpParameterCodec(); + } + + + // @ts-ignore + private addToHttpParams(httpParams: HttpParams, value: any, key?: string): HttpParams { + if (typeof value === "object" && value instanceof Date === false) { + httpParams = this.addToHttpParamsRecursive(httpParams, value); + } else { + httpParams = this.addToHttpParamsRecursive(httpParams, value, key); + } + return httpParams; + } + + private addToHttpParamsRecursive(httpParams: HttpParams, value?: any, key?: string): HttpParams { + if (value == null) { + return httpParams; + } + + if (typeof value === "object") { + if (Array.isArray(value)) { + (value as any[]).forEach( elem => httpParams = this.addToHttpParamsRecursive(httpParams, elem, key)); + } else if (value instanceof Date) { + if (key != null) { + httpParams = httpParams.append(key, (value as Date).toISOString().substring(0, 10)); + } else { + throw Error("key may not be null if value is Date"); + } + } else { + Object.keys(value).forEach( k => httpParams = this.addToHttpParamsRecursive( + httpParams, value[k], key != null ? `${key}.${k}` : k)); + } + } else if (key != null) { + httpParams = httpParams.append(key, value); + } else { + throw Error("key may not be null if value is not object or array"); + } + return httpParams; + } + + /** + * Retrieves the collection of LogAccountProfit resources. + * Retrieves the collection of LogAccountProfit resources. + * @param page The collection page number + * @param itemsPerPage The number of items per page + * @param gameAccount + * @param gameAccount2 + * @param isDailyProfit + * @param gameAccountProfile + * @param customJsonFilter + * @param customJsonOrder + * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body. + * @param reportProgress flag to report request and response progress. + */ + public logAccountProfitsGetCollection(page?: number, itemsPerPage?: number, gameAccount?: string, gameAccount2?: Array, isDailyProfit?: boolean, gameAccountProfile?: string, customJsonFilter?: string, customJsonOrder?: string, observe?: 'body', reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/ld+json', context?: HttpContext, transferCache?: boolean}): Observable; + public logAccountProfitsGetCollection(page?: number, itemsPerPage?: number, gameAccount?: string, gameAccount2?: Array, isDailyProfit?: boolean, gameAccountProfile?: string, customJsonFilter?: string, customJsonOrder?: string, observe?: 'response', reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/ld+json', context?: HttpContext, transferCache?: boolean}): Observable>; + public logAccountProfitsGetCollection(page?: number, itemsPerPage?: number, gameAccount?: string, gameAccount2?: Array, isDailyProfit?: boolean, gameAccountProfile?: string, customJsonFilter?: string, customJsonOrder?: string, observe?: 'events', reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/ld+json', context?: HttpContext, transferCache?: boolean}): Observable>; + public logAccountProfitsGetCollection(page?: number, itemsPerPage?: number, gameAccount?: string, gameAccount2?: Array, isDailyProfit?: boolean, gameAccountProfile?: string, customJsonFilter?: string, customJsonOrder?: string, observe: any = 'body', reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/ld+json', context?: HttpContext, transferCache?: boolean}): Observable { + + let localVarQueryParameters = new HttpParams({encoder: this.encoder}); + if (page !== undefined && page !== null) { + localVarQueryParameters = this.addToHttpParams(localVarQueryParameters, + page, 'page'); + } + if (itemsPerPage !== undefined && itemsPerPage !== null) { + localVarQueryParameters = this.addToHttpParams(localVarQueryParameters, + itemsPerPage, 'itemsPerPage'); + } + if (gameAccount !== undefined && gameAccount !== null) { + localVarQueryParameters = this.addToHttpParams(localVarQueryParameters, + gameAccount, 'gameAccount'); + } + if (gameAccount2) { + gameAccount2.forEach((element) => { + localVarQueryParameters = this.addToHttpParams(localVarQueryParameters, + element, 'gameAccount[]'); + }) + } + if (isDailyProfit !== undefined && isDailyProfit !== null) { + localVarQueryParameters = this.addToHttpParams(localVarQueryParameters, + isDailyProfit, 'isDailyProfit'); + } + if (gameAccountProfile !== undefined && gameAccountProfile !== null) { + localVarQueryParameters = this.addToHttpParams(localVarQueryParameters, + gameAccountProfile, 'gameAccountProfile'); + } + if (customJsonFilter !== undefined && customJsonFilter !== null) { + localVarQueryParameters = this.addToHttpParams(localVarQueryParameters, + customJsonFilter, 'custom_json_filter'); + } + if (customJsonOrder !== undefined && customJsonOrder !== null) { + localVarQueryParameters = this.addToHttpParams(localVarQueryParameters, + customJsonOrder, 'custom_json_order'); + } + + let localVarHeaders = this.defaultHeaders; + + let localVarCredential: string | undefined; + // authentication (JWT) required + localVarCredential = this.configuration.lookupCredential('JWT'); + if (localVarCredential) { + localVarHeaders = localVarHeaders.set('Authorization', 'Bearer ' + localVarCredential); + } + + let localVarHttpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept; + if (localVarHttpHeaderAcceptSelected === undefined) { + // to determine the Accept header + const httpHeaderAccepts: string[] = [ + 'application/ld+json' + ]; + localVarHttpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts); + } + if (localVarHttpHeaderAcceptSelected !== undefined) { + localVarHeaders = localVarHeaders.set('Accept', localVarHttpHeaderAcceptSelected); + } + + let localVarHttpContext: HttpContext | undefined = options && options.context; + if (localVarHttpContext === undefined) { + localVarHttpContext = new HttpContext(); + } + + let localVarTransferCache: boolean | undefined = options && options.transferCache; + if (localVarTransferCache === undefined) { + localVarTransferCache = true; + } + + + let responseType_: 'text' | 'json' | 'blob' = 'json'; + if (localVarHttpHeaderAcceptSelected) { + if (localVarHttpHeaderAcceptSelected.startsWith('text')) { + responseType_ = 'text'; + } else if (this.configuration.isJsonMime(localVarHttpHeaderAcceptSelected)) { + responseType_ = 'json'; + } else { + responseType_ = 'blob'; + } + } + + let localVarPath = `/api/log_account_profits`; + return this.httpClient.request('get', `${this.configuration.basePath}${localVarPath}`, + { + context: localVarHttpContext, + params: localVarQueryParameters, + responseType: responseType_, + withCredentials: this.configuration.withCredentials, + headers: localVarHeaders, + observe: observe, + transferCache: localVarTransferCache, + reportProgress: reportProgress + } + ); + } + + /** + * Retrieves a LogAccountProfit resource. + * Retrieves a LogAccountProfit resource. + * @param id LogAccountProfit identifier + * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body. + * @param reportProgress flag to report request and response progress. + */ + public logAccountProfitsIdGet(id: string, observe?: 'body', reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/ld+json', context?: HttpContext, transferCache?: boolean}): Observable; + public logAccountProfitsIdGet(id: string, observe?: 'response', reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/ld+json', context?: HttpContext, transferCache?: boolean}): Observable>; + public logAccountProfitsIdGet(id: string, observe?: 'events', reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/ld+json', context?: HttpContext, transferCache?: boolean}): Observable>; + public logAccountProfitsIdGet(id: string, observe: any = 'body', reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/ld+json', context?: HttpContext, transferCache?: boolean}): Observable { + if (id === null || id === undefined) { + throw new Error('Required parameter id was null or undefined when calling logAccountProfitsIdGet.'); + } + + let localVarHeaders = this.defaultHeaders; + + let localVarCredential: string | undefined; + // authentication (JWT) required + localVarCredential = this.configuration.lookupCredential('JWT'); + if (localVarCredential) { + localVarHeaders = localVarHeaders.set('Authorization', 'Bearer ' + localVarCredential); + } + + let localVarHttpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept; + if (localVarHttpHeaderAcceptSelected === undefined) { + // to determine the Accept header + const httpHeaderAccepts: string[] = [ + 'application/ld+json' + ]; + localVarHttpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts); + } + if (localVarHttpHeaderAcceptSelected !== undefined) { + localVarHeaders = localVarHeaders.set('Accept', localVarHttpHeaderAcceptSelected); + } + + let localVarHttpContext: HttpContext | undefined = options && options.context; + if (localVarHttpContext === undefined) { + localVarHttpContext = new HttpContext(); + } + + let localVarTransferCache: boolean | undefined = options && options.transferCache; + if (localVarTransferCache === undefined) { + localVarTransferCache = true; + } + + + let responseType_: 'text' | 'json' | 'blob' = 'json'; + if (localVarHttpHeaderAcceptSelected) { + if (localVarHttpHeaderAcceptSelected.startsWith('text')) { + responseType_ = 'text'; + } else if (this.configuration.isJsonMime(localVarHttpHeaderAcceptSelected)) { + responseType_ = 'json'; + } else { + responseType_ = 'blob'; + } + } + + let localVarPath = `/api/log_account_profits/${this.configuration.encodeParam({name: "id", value: id, in: "path", style: "simple", explode: false, dataType: "string", dataFormat: undefined})}`; + return this.httpClient.request('get', `${this.configuration.basePath}${localVarPath}`, + { + context: localVarHttpContext, + responseType: responseType_, + withCredentials: this.configuration.withCredentials, + headers: localVarHeaders, + observe: observe, + transferCache: localVarTransferCache, + reportProgress: reportProgress + } + ); + } + +} diff --git a/angular/src/app/core/api/v1/api/logAccountSoldItem.service.ts b/angular/src/app/core/api/v1/api/logAccountSoldItem.service.ts new file mode 100644 index 0000000..83332f4 --- /dev/null +++ b/angular/src/app/core/api/v1/api/logAccountSoldItem.service.ts @@ -0,0 +1,288 @@ +/** + * Hello API Platform + * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) + * + * The version of the OpenAPI document: 1.0.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ +/* tslint:disable:no-unused-variable member-ordering */ + +import { Inject, Injectable, Optional } from '@angular/core'; +import { HttpClient, HttpHeaders, HttpParams, + HttpResponse, HttpEvent, HttpParameterCodec, HttpContext + } from '@angular/common/http'; +import { CustomHttpParameterCodec } from '../encoder'; +import { Observable } from 'rxjs'; + +// @ts-ignore +import { ApiLogAccountSoldItemsGetCollection200Response } from '../model/apiLogAccountSoldItemsGetCollection200Response'; +// @ts-ignore +import { LogAccountSoldItemJsonld } from '../model/logAccountSoldItemJsonld'; + +// @ts-ignore +import { BASE_PATH, COLLECTION_FORMATS } from '../variables'; +import { Configuration } from '../configuration'; + + + +@Injectable({ + providedIn: 'root' +}) +export class LogAccountSoldItemService { + + protected basePath = 'http://localhost'; + public defaultHeaders = new HttpHeaders(); + public configuration = new Configuration(); + public encoder: HttpParameterCodec; + + constructor(protected httpClient: HttpClient, @Optional()@Inject(BASE_PATH) basePath: string|string[], @Optional() configuration: Configuration) { + if (configuration) { + this.configuration = configuration; + } + if (typeof this.configuration.basePath !== 'string') { + if (Array.isArray(basePath) && basePath.length > 0) { + basePath = basePath[0]; + } + + if (typeof basePath !== 'string') { + basePath = this.basePath; + } + this.configuration.basePath = basePath; + } + this.encoder = this.configuration.encoder || new CustomHttpParameterCodec(); + } + + + // @ts-ignore + private addToHttpParams(httpParams: HttpParams, value: any, key?: string): HttpParams { + if (typeof value === "object" && value instanceof Date === false) { + httpParams = this.addToHttpParamsRecursive(httpParams, value); + } else { + httpParams = this.addToHttpParamsRecursive(httpParams, value, key); + } + return httpParams; + } + + private addToHttpParamsRecursive(httpParams: HttpParams, value?: any, key?: string): HttpParams { + if (value == null) { + return httpParams; + } + + if (typeof value === "object") { + if (Array.isArray(value)) { + (value as any[]).forEach( elem => httpParams = this.addToHttpParamsRecursive(httpParams, elem, key)); + } else if (value instanceof Date) { + if (key != null) { + httpParams = httpParams.append(key, (value as Date).toISOString().substring(0, 10)); + } else { + throw Error("key may not be null if value is Date"); + } + } else { + Object.keys(value).forEach( k => httpParams = this.addToHttpParamsRecursive( + httpParams, value[k], key != null ? `${key}.${k}` : k)); + } + } else if (key != null) { + httpParams = httpParams.append(key, value); + } else { + throw Error("key may not be null if value is not object or array"); + } + return httpParams; + } + + /** + * Retrieves the collection of LogAccountSoldItem resources. + * Retrieves the collection of LogAccountSoldItem resources. + * @param page The collection page number + * @param itemsPerPage The number of items per page + * @param account + * @param account2 + * @param candidateItem + * @param candidateItem2 + * @param candidateNameSearch + * @param customJsonFilter + * @param customJsonOrder + * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body. + * @param reportProgress flag to report request and response progress. + */ + public logAccountSoldItemsGetCollection(page?: number, itemsPerPage?: number, account?: string, account2?: Array, candidateItem?: string, candidateItem2?: Array, candidateNameSearch?: string, customJsonFilter?: string, customJsonOrder?: string, observe?: 'body', reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/ld+json', context?: HttpContext, transferCache?: boolean}): Observable; + public logAccountSoldItemsGetCollection(page?: number, itemsPerPage?: number, account?: string, account2?: Array, candidateItem?: string, candidateItem2?: Array, candidateNameSearch?: string, customJsonFilter?: string, customJsonOrder?: string, observe?: 'response', reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/ld+json', context?: HttpContext, transferCache?: boolean}): Observable>; + public logAccountSoldItemsGetCollection(page?: number, itemsPerPage?: number, account?: string, account2?: Array, candidateItem?: string, candidateItem2?: Array, candidateNameSearch?: string, customJsonFilter?: string, customJsonOrder?: string, observe?: 'events', reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/ld+json', context?: HttpContext, transferCache?: boolean}): Observable>; + public logAccountSoldItemsGetCollection(page?: number, itemsPerPage?: number, account?: string, account2?: Array, candidateItem?: string, candidateItem2?: Array, candidateNameSearch?: string, customJsonFilter?: string, customJsonOrder?: string, observe: any = 'body', reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/ld+json', context?: HttpContext, transferCache?: boolean}): Observable { + + let localVarQueryParameters = new HttpParams({encoder: this.encoder}); + if (page !== undefined && page !== null) { + localVarQueryParameters = this.addToHttpParams(localVarQueryParameters, + page, 'page'); + } + if (itemsPerPage !== undefined && itemsPerPage !== null) { + localVarQueryParameters = this.addToHttpParams(localVarQueryParameters, + itemsPerPage, 'itemsPerPage'); + } + if (account !== undefined && account !== null) { + localVarQueryParameters = this.addToHttpParams(localVarQueryParameters, + account, 'account'); + } + if (account2) { + account2.forEach((element) => { + localVarQueryParameters = this.addToHttpParams(localVarQueryParameters, + element, 'account[]'); + }) + } + if (candidateItem !== undefined && candidateItem !== null) { + localVarQueryParameters = this.addToHttpParams(localVarQueryParameters, + candidateItem, 'candidateItem'); + } + if (candidateItem2) { + candidateItem2.forEach((element) => { + localVarQueryParameters = this.addToHttpParams(localVarQueryParameters, + element, 'candidateItem[]'); + }) + } + if (candidateNameSearch !== undefined && candidateNameSearch !== null) { + localVarQueryParameters = this.addToHttpParams(localVarQueryParameters, + candidateNameSearch, 'candidateNameSearch'); + } + if (customJsonFilter !== undefined && customJsonFilter !== null) { + localVarQueryParameters = this.addToHttpParams(localVarQueryParameters, + customJsonFilter, 'custom_json_filter'); + } + if (customJsonOrder !== undefined && customJsonOrder !== null) { + localVarQueryParameters = this.addToHttpParams(localVarQueryParameters, + customJsonOrder, 'custom_json_order'); + } + + let localVarHeaders = this.defaultHeaders; + + let localVarCredential: string | undefined; + // authentication (JWT) required + localVarCredential = this.configuration.lookupCredential('JWT'); + if (localVarCredential) { + localVarHeaders = localVarHeaders.set('Authorization', 'Bearer ' + localVarCredential); + } + + let localVarHttpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept; + if (localVarHttpHeaderAcceptSelected === undefined) { + // to determine the Accept header + const httpHeaderAccepts: string[] = [ + 'application/ld+json' + ]; + localVarHttpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts); + } + if (localVarHttpHeaderAcceptSelected !== undefined) { + localVarHeaders = localVarHeaders.set('Accept', localVarHttpHeaderAcceptSelected); + } + + let localVarHttpContext: HttpContext | undefined = options && options.context; + if (localVarHttpContext === undefined) { + localVarHttpContext = new HttpContext(); + } + + let localVarTransferCache: boolean | undefined = options && options.transferCache; + if (localVarTransferCache === undefined) { + localVarTransferCache = true; + } + + + let responseType_: 'text' | 'json' | 'blob' = 'json'; + if (localVarHttpHeaderAcceptSelected) { + if (localVarHttpHeaderAcceptSelected.startsWith('text')) { + responseType_ = 'text'; + } else if (this.configuration.isJsonMime(localVarHttpHeaderAcceptSelected)) { + responseType_ = 'json'; + } else { + responseType_ = 'blob'; + } + } + + let localVarPath = `/api/log_account_sold_items`; + return this.httpClient.request('get', `${this.configuration.basePath}${localVarPath}`, + { + context: localVarHttpContext, + params: localVarQueryParameters, + responseType: responseType_, + withCredentials: this.configuration.withCredentials, + headers: localVarHeaders, + observe: observe, + transferCache: localVarTransferCache, + reportProgress: reportProgress + } + ); + } + + /** + * Retrieves a LogAccountSoldItem resource. + * Retrieves a LogAccountSoldItem resource. + * @param id LogAccountSoldItem identifier + * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body. + * @param reportProgress flag to report request and response progress. + */ + public logAccountSoldItemsIdGet(id: string, observe?: 'body', reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/ld+json', context?: HttpContext, transferCache?: boolean}): Observable; + public logAccountSoldItemsIdGet(id: string, observe?: 'response', reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/ld+json', context?: HttpContext, transferCache?: boolean}): Observable>; + public logAccountSoldItemsIdGet(id: string, observe?: 'events', reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/ld+json', context?: HttpContext, transferCache?: boolean}): Observable>; + public logAccountSoldItemsIdGet(id: string, observe: any = 'body', reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/ld+json', context?: HttpContext, transferCache?: boolean}): Observable { + if (id === null || id === undefined) { + throw new Error('Required parameter id was null or undefined when calling logAccountSoldItemsIdGet.'); + } + + let localVarHeaders = this.defaultHeaders; + + let localVarCredential: string | undefined; + // authentication (JWT) required + localVarCredential = this.configuration.lookupCredential('JWT'); + if (localVarCredential) { + localVarHeaders = localVarHeaders.set('Authorization', 'Bearer ' + localVarCredential); + } + + let localVarHttpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept; + if (localVarHttpHeaderAcceptSelected === undefined) { + // to determine the Accept header + const httpHeaderAccepts: string[] = [ + 'application/ld+json' + ]; + localVarHttpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts); + } + if (localVarHttpHeaderAcceptSelected !== undefined) { + localVarHeaders = localVarHeaders.set('Accept', localVarHttpHeaderAcceptSelected); + } + + let localVarHttpContext: HttpContext | undefined = options && options.context; + if (localVarHttpContext === undefined) { + localVarHttpContext = new HttpContext(); + } + + let localVarTransferCache: boolean | undefined = options && options.transferCache; + if (localVarTransferCache === undefined) { + localVarTransferCache = true; + } + + + let responseType_: 'text' | 'json' | 'blob' = 'json'; + if (localVarHttpHeaderAcceptSelected) { + if (localVarHttpHeaderAcceptSelected.startsWith('text')) { + responseType_ = 'text'; + } else if (this.configuration.isJsonMime(localVarHttpHeaderAcceptSelected)) { + responseType_ = 'json'; + } else { + responseType_ = 'blob'; + } + } + + let localVarPath = `/api/log_account_sold_items/${this.configuration.encodeParam({name: "id", value: id, in: "path", style: "simple", explode: false, dataType: "string", dataFormat: undefined})}`; + return this.httpClient.request('get', `${this.configuration.basePath}${localVarPath}`, + { + context: localVarHttpContext, + responseType: responseType_, + withCredentials: this.configuration.withCredentials, + headers: localVarHeaders, + observe: observe, + transferCache: localVarTransferCache, + reportProgress: reportProgress + } + ); + } + +} diff --git a/angular/src/app/core/api/v1/api/logGeneral.service.ts b/angular/src/app/core/api/v1/api/logGeneral.service.ts new file mode 100644 index 0000000..9463efd --- /dev/null +++ b/angular/src/app/core/api/v1/api/logGeneral.service.ts @@ -0,0 +1,264 @@ +/** + * Hello API Platform + * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) + * + * The version of the OpenAPI document: 1.0.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ +/* tslint:disable:no-unused-variable member-ordering */ + +import { Inject, Injectable, Optional } from '@angular/core'; +import { HttpClient, HttpHeaders, HttpParams, + HttpResponse, HttpEvent, HttpParameterCodec, HttpContext + } from '@angular/common/http'; +import { CustomHttpParameterCodec } from '../encoder'; +import { Observable } from 'rxjs'; + +// @ts-ignore +import { ApiLogGeneralsGetCollection200Response } from '../model/apiLogGeneralsGetCollection200Response'; +// @ts-ignore +import { LogGeneralJsonld } from '../model/logGeneralJsonld'; + +// @ts-ignore +import { BASE_PATH, COLLECTION_FORMATS } from '../variables'; +import { Configuration } from '../configuration'; + + + +@Injectable({ + providedIn: 'root' +}) +export class LogGeneralService { + + protected basePath = 'http://localhost'; + public defaultHeaders = new HttpHeaders(); + public configuration = new Configuration(); + public encoder: HttpParameterCodec; + + constructor(protected httpClient: HttpClient, @Optional()@Inject(BASE_PATH) basePath: string|string[], @Optional() configuration: Configuration) { + if (configuration) { + this.configuration = configuration; + } + if (typeof this.configuration.basePath !== 'string') { + if (Array.isArray(basePath) && basePath.length > 0) { + basePath = basePath[0]; + } + + if (typeof basePath !== 'string') { + basePath = this.basePath; + } + this.configuration.basePath = basePath; + } + this.encoder = this.configuration.encoder || new CustomHttpParameterCodec(); + } + + + // @ts-ignore + private addToHttpParams(httpParams: HttpParams, value: any, key?: string): HttpParams { + if (typeof value === "object" && value instanceof Date === false) { + httpParams = this.addToHttpParamsRecursive(httpParams, value); + } else { + httpParams = this.addToHttpParamsRecursive(httpParams, value, key); + } + return httpParams; + } + + private addToHttpParamsRecursive(httpParams: HttpParams, value?: any, key?: string): HttpParams { + if (value == null) { + return httpParams; + } + + if (typeof value === "object") { + if (Array.isArray(value)) { + (value as any[]).forEach( elem => httpParams = this.addToHttpParamsRecursive(httpParams, elem, key)); + } else if (value instanceof Date) { + if (key != null) { + httpParams = httpParams.append(key, (value as Date).toISOString().substring(0, 10)); + } else { + throw Error("key may not be null if value is Date"); + } + } else { + Object.keys(value).forEach( k => httpParams = this.addToHttpParamsRecursive( + httpParams, value[k], key != null ? `${key}.${k}` : k)); + } + } else if (key != null) { + httpParams = httpParams.append(key, value); + } else { + throw Error("key may not be null if value is not object or array"); + } + return httpParams; + } + + /** + * Retrieves the collection of LogGeneral resources. + * Retrieves the collection of LogGeneral resources. + * @param page The collection page number + * @param itemsPerPage The number of items per page + * @param gameAccountProfile + * @param customJsonFilter + * @param customJsonOrder + * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body. + * @param reportProgress flag to report request and response progress. + */ + public logGeneralsGetCollection(page?: number, itemsPerPage?: number, gameAccountProfile?: string, customJsonFilter?: string, customJsonOrder?: string, observe?: 'body', reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/ld+json', context?: HttpContext, transferCache?: boolean}): Observable; + public logGeneralsGetCollection(page?: number, itemsPerPage?: number, gameAccountProfile?: string, customJsonFilter?: string, customJsonOrder?: string, observe?: 'response', reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/ld+json', context?: HttpContext, transferCache?: boolean}): Observable>; + public logGeneralsGetCollection(page?: number, itemsPerPage?: number, gameAccountProfile?: string, customJsonFilter?: string, customJsonOrder?: string, observe?: 'events', reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/ld+json', context?: HttpContext, transferCache?: boolean}): Observable>; + public logGeneralsGetCollection(page?: number, itemsPerPage?: number, gameAccountProfile?: string, customJsonFilter?: string, customJsonOrder?: string, observe: any = 'body', reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/ld+json', context?: HttpContext, transferCache?: boolean}): Observable { + + let localVarQueryParameters = new HttpParams({encoder: this.encoder}); + if (page !== undefined && page !== null) { + localVarQueryParameters = this.addToHttpParams(localVarQueryParameters, + page, 'page'); + } + if (itemsPerPage !== undefined && itemsPerPage !== null) { + localVarQueryParameters = this.addToHttpParams(localVarQueryParameters, + itemsPerPage, 'itemsPerPage'); + } + if (gameAccountProfile !== undefined && gameAccountProfile !== null) { + localVarQueryParameters = this.addToHttpParams(localVarQueryParameters, + gameAccountProfile, 'gameAccountProfile'); + } + if (customJsonFilter !== undefined && customJsonFilter !== null) { + localVarQueryParameters = this.addToHttpParams(localVarQueryParameters, + customJsonFilter, 'custom_json_filter'); + } + if (customJsonOrder !== undefined && customJsonOrder !== null) { + localVarQueryParameters = this.addToHttpParams(localVarQueryParameters, + customJsonOrder, 'custom_json_order'); + } + + let localVarHeaders = this.defaultHeaders; + + let localVarCredential: string | undefined; + // authentication (JWT) required + localVarCredential = this.configuration.lookupCredential('JWT'); + if (localVarCredential) { + localVarHeaders = localVarHeaders.set('Authorization', 'Bearer ' + localVarCredential); + } + + let localVarHttpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept; + if (localVarHttpHeaderAcceptSelected === undefined) { + // to determine the Accept header + const httpHeaderAccepts: string[] = [ + 'application/ld+json' + ]; + localVarHttpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts); + } + if (localVarHttpHeaderAcceptSelected !== undefined) { + localVarHeaders = localVarHeaders.set('Accept', localVarHttpHeaderAcceptSelected); + } + + let localVarHttpContext: HttpContext | undefined = options && options.context; + if (localVarHttpContext === undefined) { + localVarHttpContext = new HttpContext(); + } + + let localVarTransferCache: boolean | undefined = options && options.transferCache; + if (localVarTransferCache === undefined) { + localVarTransferCache = true; + } + + + let responseType_: 'text' | 'json' | 'blob' = 'json'; + if (localVarHttpHeaderAcceptSelected) { + if (localVarHttpHeaderAcceptSelected.startsWith('text')) { + responseType_ = 'text'; + } else if (this.configuration.isJsonMime(localVarHttpHeaderAcceptSelected)) { + responseType_ = 'json'; + } else { + responseType_ = 'blob'; + } + } + + let localVarPath = `/api/log_generals`; + return this.httpClient.request('get', `${this.configuration.basePath}${localVarPath}`, + { + context: localVarHttpContext, + params: localVarQueryParameters, + responseType: responseType_, + withCredentials: this.configuration.withCredentials, + headers: localVarHeaders, + observe: observe, + transferCache: localVarTransferCache, + reportProgress: reportProgress + } + ); + } + + /** + * Retrieves a LogGeneral resource. + * Retrieves a LogGeneral resource. + * @param id LogGeneral identifier + * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body. + * @param reportProgress flag to report request and response progress. + */ + public logGeneralsIdGet(id: string, observe?: 'body', reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/ld+json', context?: HttpContext, transferCache?: boolean}): Observable; + public logGeneralsIdGet(id: string, observe?: 'response', reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/ld+json', context?: HttpContext, transferCache?: boolean}): Observable>; + public logGeneralsIdGet(id: string, observe?: 'events', reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/ld+json', context?: HttpContext, transferCache?: boolean}): Observable>; + public logGeneralsIdGet(id: string, observe: any = 'body', reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/ld+json', context?: HttpContext, transferCache?: boolean}): Observable { + if (id === null || id === undefined) { + throw new Error('Required parameter id was null or undefined when calling logGeneralsIdGet.'); + } + + let localVarHeaders = this.defaultHeaders; + + let localVarCredential: string | undefined; + // authentication (JWT) required + localVarCredential = this.configuration.lookupCredential('JWT'); + if (localVarCredential) { + localVarHeaders = localVarHeaders.set('Authorization', 'Bearer ' + localVarCredential); + } + + let localVarHttpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept; + if (localVarHttpHeaderAcceptSelected === undefined) { + // to determine the Accept header + const httpHeaderAccepts: string[] = [ + 'application/ld+json' + ]; + localVarHttpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts); + } + if (localVarHttpHeaderAcceptSelected !== undefined) { + localVarHeaders = localVarHeaders.set('Accept', localVarHttpHeaderAcceptSelected); + } + + let localVarHttpContext: HttpContext | undefined = options && options.context; + if (localVarHttpContext === undefined) { + localVarHttpContext = new HttpContext(); + } + + let localVarTransferCache: boolean | undefined = options && options.transferCache; + if (localVarTransferCache === undefined) { + localVarTransferCache = true; + } + + + let responseType_: 'text' | 'json' | 'blob' = 'json'; + if (localVarHttpHeaderAcceptSelected) { + if (localVarHttpHeaderAcceptSelected.startsWith('text')) { + responseType_ = 'text'; + } else if (this.configuration.isJsonMime(localVarHttpHeaderAcceptSelected)) { + responseType_ = 'json'; + } else { + responseType_ = 'blob'; + } + } + + let localVarPath = `/api/log_generals/${this.configuration.encodeParam({name: "id", value: id, in: "path", style: "simple", explode: false, dataType: "string", dataFormat: undefined})}`; + return this.httpClient.request('get', `${this.configuration.basePath}${localVarPath}`, + { + context: localVarHttpContext, + responseType: responseType_, + withCredentials: this.configuration.withCredentials, + headers: localVarHeaders, + observe: observe, + transferCache: localVarTransferCache, + reportProgress: reportProgress + } + ); + } + +} diff --git a/angular/src/app/core/api/v1/api/logTotalProfit.service.ts b/angular/src/app/core/api/v1/api/logTotalProfit.service.ts new file mode 100644 index 0000000..3e82f5c --- /dev/null +++ b/angular/src/app/core/api/v1/api/logTotalProfit.service.ts @@ -0,0 +1,419 @@ +/** + * Hello API Platform + * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) + * + * The version of the OpenAPI document: 1.0.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ +/* tslint:disable:no-unused-variable member-ordering */ + +import { Inject, Injectable, Optional } from '@angular/core'; +import { HttpClient, HttpHeaders, HttpParams, + HttpResponse, HttpEvent, HttpParameterCodec, HttpContext + } from '@angular/common/http'; +import { CustomHttpParameterCodec } from '../encoder'; +import { Observable } from 'rxjs'; + +// @ts-ignore +import { ApiLogTotalProfitsGetCollection200Response } from '../model/apiLogTotalProfitsGetCollection200Response'; +// @ts-ignore +import { LogTotalProfit } from '../model/logTotalProfit'; +// @ts-ignore +import { LogTotalProfitJsonld } from '../model/logTotalProfitJsonld'; + +// @ts-ignore +import { BASE_PATH, COLLECTION_FORMATS } from '../variables'; +import { Configuration } from '../configuration'; + + + +@Injectable({ + providedIn: 'root' +}) +export class LogTotalProfitService { + + protected basePath = 'http://localhost'; + public defaultHeaders = new HttpHeaders(); + public configuration = new Configuration(); + public encoder: HttpParameterCodec; + + constructor(protected httpClient: HttpClient, @Optional()@Inject(BASE_PATH) basePath: string|string[], @Optional() configuration: Configuration) { + if (configuration) { + this.configuration = configuration; + } + if (typeof this.configuration.basePath !== 'string') { + if (Array.isArray(basePath) && basePath.length > 0) { + basePath = basePath[0]; + } + + if (typeof basePath !== 'string') { + basePath = this.basePath; + } + this.configuration.basePath = basePath; + } + this.encoder = this.configuration.encoder || new CustomHttpParameterCodec(); + } + + + // @ts-ignore + private addToHttpParams(httpParams: HttpParams, value: any, key?: string): HttpParams { + if (typeof value === "object" && value instanceof Date === false) { + httpParams = this.addToHttpParamsRecursive(httpParams, value); + } else { + httpParams = this.addToHttpParamsRecursive(httpParams, value, key); + } + return httpParams; + } + + private addToHttpParamsRecursive(httpParams: HttpParams, value?: any, key?: string): HttpParams { + if (value == null) { + return httpParams; + } + + if (typeof value === "object") { + if (Array.isArray(value)) { + (value as any[]).forEach( elem => httpParams = this.addToHttpParamsRecursive(httpParams, elem, key)); + } else if (value instanceof Date) { + if (key != null) { + httpParams = httpParams.append(key, (value as Date).toISOString().substring(0, 10)); + } else { + throw Error("key may not be null if value is Date"); + } + } else { + Object.keys(value).forEach( k => httpParams = this.addToHttpParamsRecursive( + httpParams, value[k], key != null ? `${key}.${k}` : k)); + } + } else if (key != null) { + httpParams = httpParams.append(key, value); + } else { + throw Error("key may not be null if value is not object or array"); + } + return httpParams; + } + + /** + * Retrieves the collection of LogTotalProfit resources. + * Retrieves the collection of LogTotalProfit resources. + * @param page The collection page number + * @param itemsPerPage The number of items per page + * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body. + * @param reportProgress flag to report request and response progress. + */ + public logTotalProfitsGetCollection(page?: number, itemsPerPage?: number, observe?: 'body', reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/ld+json', context?: HttpContext, transferCache?: boolean}): Observable; + public logTotalProfitsGetCollection(page?: number, itemsPerPage?: number, observe?: 'response', reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/ld+json', context?: HttpContext, transferCache?: boolean}): Observable>; + public logTotalProfitsGetCollection(page?: number, itemsPerPage?: number, observe?: 'events', reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/ld+json', context?: HttpContext, transferCache?: boolean}): Observable>; + public logTotalProfitsGetCollection(page?: number, itemsPerPage?: number, observe: any = 'body', reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/ld+json', context?: HttpContext, transferCache?: boolean}): Observable { + + let localVarQueryParameters = new HttpParams({encoder: this.encoder}); + if (page !== undefined && page !== null) { + localVarQueryParameters = this.addToHttpParams(localVarQueryParameters, + page, 'page'); + } + if (itemsPerPage !== undefined && itemsPerPage !== null) { + localVarQueryParameters = this.addToHttpParams(localVarQueryParameters, + itemsPerPage, 'itemsPerPage'); + } + + let localVarHeaders = this.defaultHeaders; + + let localVarCredential: string | undefined; + // authentication (JWT) required + localVarCredential = this.configuration.lookupCredential('JWT'); + if (localVarCredential) { + localVarHeaders = localVarHeaders.set('Authorization', 'Bearer ' + localVarCredential); + } + + let localVarHttpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept; + if (localVarHttpHeaderAcceptSelected === undefined) { + // to determine the Accept header + const httpHeaderAccepts: string[] = [ + 'application/ld+json' + ]; + localVarHttpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts); + } + if (localVarHttpHeaderAcceptSelected !== undefined) { + localVarHeaders = localVarHeaders.set('Accept', localVarHttpHeaderAcceptSelected); + } + + let localVarHttpContext: HttpContext | undefined = options && options.context; + if (localVarHttpContext === undefined) { + localVarHttpContext = new HttpContext(); + } + + let localVarTransferCache: boolean | undefined = options && options.transferCache; + if (localVarTransferCache === undefined) { + localVarTransferCache = true; + } + + + let responseType_: 'text' | 'json' | 'blob' = 'json'; + if (localVarHttpHeaderAcceptSelected) { + if (localVarHttpHeaderAcceptSelected.startsWith('text')) { + responseType_ = 'text'; + } else if (this.configuration.isJsonMime(localVarHttpHeaderAcceptSelected)) { + responseType_ = 'json'; + } else { + responseType_ = 'blob'; + } + } + + let localVarPath = `/api/log_total_profits`; + return this.httpClient.request('get', `${this.configuration.basePath}${localVarPath}`, + { + context: localVarHttpContext, + params: localVarQueryParameters, + responseType: responseType_, + withCredentials: this.configuration.withCredentials, + headers: localVarHeaders, + observe: observe, + transferCache: localVarTransferCache, + reportProgress: reportProgress + } + ); + } + + /** + * Retrieves a LogTotalProfit resource. + * Retrieves a LogTotalProfit resource. + * @param id LogTotalProfit identifier + * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body. + * @param reportProgress flag to report request and response progress. + */ + public logTotalProfitsIdGet(id: string, observe?: 'body', reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/ld+json', context?: HttpContext, transferCache?: boolean}): Observable; + public logTotalProfitsIdGet(id: string, observe?: 'response', reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/ld+json', context?: HttpContext, transferCache?: boolean}): Observable>; + public logTotalProfitsIdGet(id: string, observe?: 'events', reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/ld+json', context?: HttpContext, transferCache?: boolean}): Observable>; + public logTotalProfitsIdGet(id: string, observe: any = 'body', reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/ld+json', context?: HttpContext, transferCache?: boolean}): Observable { + if (id === null || id === undefined) { + throw new Error('Required parameter id was null or undefined when calling logTotalProfitsIdGet.'); + } + + let localVarHeaders = this.defaultHeaders; + + let localVarCredential: string | undefined; + // authentication (JWT) required + localVarCredential = this.configuration.lookupCredential('JWT'); + if (localVarCredential) { + localVarHeaders = localVarHeaders.set('Authorization', 'Bearer ' + localVarCredential); + } + + let localVarHttpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept; + if (localVarHttpHeaderAcceptSelected === undefined) { + // to determine the Accept header + const httpHeaderAccepts: string[] = [ + 'application/ld+json' + ]; + localVarHttpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts); + } + if (localVarHttpHeaderAcceptSelected !== undefined) { + localVarHeaders = localVarHeaders.set('Accept', localVarHttpHeaderAcceptSelected); + } + + let localVarHttpContext: HttpContext | undefined = options && options.context; + if (localVarHttpContext === undefined) { + localVarHttpContext = new HttpContext(); + } + + let localVarTransferCache: boolean | undefined = options && options.transferCache; + if (localVarTransferCache === undefined) { + localVarTransferCache = true; + } + + + let responseType_: 'text' | 'json' | 'blob' = 'json'; + if (localVarHttpHeaderAcceptSelected) { + if (localVarHttpHeaderAcceptSelected.startsWith('text')) { + responseType_ = 'text'; + } else if (this.configuration.isJsonMime(localVarHttpHeaderAcceptSelected)) { + responseType_ = 'json'; + } else { + responseType_ = 'blob'; + } + } + + let localVarPath = `/api/log_total_profits/${this.configuration.encodeParam({name: "id", value: id, in: "path", style: "simple", explode: false, dataType: "string", dataFormat: undefined})}`; + return this.httpClient.request('get', `${this.configuration.basePath}${localVarPath}`, + { + context: localVarHttpContext, + responseType: responseType_, + withCredentials: this.configuration.withCredentials, + headers: localVarHeaders, + observe: observe, + transferCache: localVarTransferCache, + reportProgress: reportProgress + } + ); + } + + /** + * Updates the LogTotalProfit resource. + * Updates the LogTotalProfit resource. + * @param id LogTotalProfit identifier + * @param logTotalProfit The updated LogTotalProfit resource + * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body. + * @param reportProgress flag to report request and response progress. + */ + public logTotalProfitsIdPatch(id: string, logTotalProfit: LogTotalProfit, observe?: 'body', reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/ld+json', context?: HttpContext, transferCache?: boolean}): Observable; + public logTotalProfitsIdPatch(id: string, logTotalProfit: LogTotalProfit, observe?: 'response', reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/ld+json', context?: HttpContext, transferCache?: boolean}): Observable>; + public logTotalProfitsIdPatch(id: string, logTotalProfit: LogTotalProfit, observe?: 'events', reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/ld+json', context?: HttpContext, transferCache?: boolean}): Observable>; + public logTotalProfitsIdPatch(id: string, logTotalProfit: LogTotalProfit, observe: any = 'body', reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/ld+json', context?: HttpContext, transferCache?: boolean}): Observable { + if (id === null || id === undefined) { + throw new Error('Required parameter id was null or undefined when calling logTotalProfitsIdPatch.'); + } + if (logTotalProfit === null || logTotalProfit === undefined) { + throw new Error('Required parameter logTotalProfit was null or undefined when calling logTotalProfitsIdPatch.'); + } + + let localVarHeaders = this.defaultHeaders; + + let localVarCredential: string | undefined; + // authentication (JWT) required + localVarCredential = this.configuration.lookupCredential('JWT'); + if (localVarCredential) { + localVarHeaders = localVarHeaders.set('Authorization', 'Bearer ' + localVarCredential); + } + + let localVarHttpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept; + if (localVarHttpHeaderAcceptSelected === undefined) { + // to determine the Accept header + const httpHeaderAccepts: string[] = [ + 'application/ld+json' + ]; + localVarHttpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts); + } + if (localVarHttpHeaderAcceptSelected !== undefined) { + localVarHeaders = localVarHeaders.set('Accept', localVarHttpHeaderAcceptSelected); + } + + let localVarHttpContext: HttpContext | undefined = options && options.context; + if (localVarHttpContext === undefined) { + localVarHttpContext = new HttpContext(); + } + + let localVarTransferCache: boolean | undefined = options && options.transferCache; + if (localVarTransferCache === undefined) { + localVarTransferCache = true; + } + + + // to determine the Content-Type header + const consumes: string[] = [ + 'application/merge-patch+json' + ]; + const httpContentTypeSelected: string | undefined = this.configuration.selectHeaderContentType(consumes); + if (httpContentTypeSelected !== undefined) { + localVarHeaders = localVarHeaders.set('Content-Type', httpContentTypeSelected); + } + + let responseType_: 'text' | 'json' | 'blob' = 'json'; + if (localVarHttpHeaderAcceptSelected) { + if (localVarHttpHeaderAcceptSelected.startsWith('text')) { + responseType_ = 'text'; + } else if (this.configuration.isJsonMime(localVarHttpHeaderAcceptSelected)) { + responseType_ = 'json'; + } else { + responseType_ = 'blob'; + } + } + + let localVarPath = `/api/log_total_profits/${this.configuration.encodeParam({name: "id", value: id, in: "path", style: "simple", explode: false, dataType: "string", dataFormat: undefined})}`; + return this.httpClient.request('patch', `${this.configuration.basePath}${localVarPath}`, + { + context: localVarHttpContext, + body: logTotalProfit, + responseType: responseType_, + withCredentials: this.configuration.withCredentials, + headers: localVarHeaders, + observe: observe, + transferCache: localVarTransferCache, + reportProgress: reportProgress + } + ); + } + + /** + * Creates a LogTotalProfit resource. + * Creates a LogTotalProfit resource. + * @param logTotalProfitJsonld The new LogTotalProfit resource + * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body. + * @param reportProgress flag to report request and response progress. + */ + public logTotalProfitsPost(logTotalProfitJsonld: LogTotalProfitJsonld, observe?: 'body', reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/ld+json', context?: HttpContext, transferCache?: boolean}): Observable; + public logTotalProfitsPost(logTotalProfitJsonld: LogTotalProfitJsonld, observe?: 'response', reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/ld+json', context?: HttpContext, transferCache?: boolean}): Observable>; + public logTotalProfitsPost(logTotalProfitJsonld: LogTotalProfitJsonld, observe?: 'events', reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/ld+json', context?: HttpContext, transferCache?: boolean}): Observable>; + public logTotalProfitsPost(logTotalProfitJsonld: LogTotalProfitJsonld, observe: any = 'body', reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/ld+json', context?: HttpContext, transferCache?: boolean}): Observable { + if (logTotalProfitJsonld === null || logTotalProfitJsonld === undefined) { + throw new Error('Required parameter logTotalProfitJsonld was null or undefined when calling logTotalProfitsPost.'); + } + + let localVarHeaders = this.defaultHeaders; + + let localVarCredential: string | undefined; + // authentication (JWT) required + localVarCredential = this.configuration.lookupCredential('JWT'); + if (localVarCredential) { + localVarHeaders = localVarHeaders.set('Authorization', 'Bearer ' + localVarCredential); + } + + let localVarHttpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept; + if (localVarHttpHeaderAcceptSelected === undefined) { + // to determine the Accept header + const httpHeaderAccepts: string[] = [ + 'application/ld+json' + ]; + localVarHttpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts); + } + if (localVarHttpHeaderAcceptSelected !== undefined) { + localVarHeaders = localVarHeaders.set('Accept', localVarHttpHeaderAcceptSelected); + } + + let localVarHttpContext: HttpContext | undefined = options && options.context; + if (localVarHttpContext === undefined) { + localVarHttpContext = new HttpContext(); + } + + let localVarTransferCache: boolean | undefined = options && options.transferCache; + if (localVarTransferCache === undefined) { + localVarTransferCache = true; + } + + + // to determine the Content-Type header + const consumes: string[] = [ + 'application/ld+json' + ]; + const httpContentTypeSelected: string | undefined = this.configuration.selectHeaderContentType(consumes); + if (httpContentTypeSelected !== undefined) { + localVarHeaders = localVarHeaders.set('Content-Type', httpContentTypeSelected); + } + + let responseType_: 'text' | 'json' | 'blob' = 'json'; + if (localVarHttpHeaderAcceptSelected) { + if (localVarHttpHeaderAcceptSelected.startsWith('text')) { + responseType_ = 'text'; + } else if (this.configuration.isJsonMime(localVarHttpHeaderAcceptSelected)) { + responseType_ = 'json'; + } else { + responseType_ = 'blob'; + } + } + + let localVarPath = `/api/log_total_profits`; + return this.httpClient.request('post', `${this.configuration.basePath}${localVarPath}`, + { + context: localVarHttpContext, + body: logTotalProfitJsonld, + responseType: responseType_, + withCredentials: this.configuration.withCredentials, + headers: localVarHeaders, + observe: observe, + transferCache: localVarTransferCache, + reportProgress: reportProgress + } + ); + } + +} diff --git a/angular/src/app/core/api/v1/api/loginCheck.service.ts b/angular/src/app/core/api/v1/api/loginCheck.service.ts new file mode 100644 index 0000000..e9cfb64 --- /dev/null +++ b/angular/src/app/core/api/v1/api/loginCheck.service.ts @@ -0,0 +1,178 @@ +/** + * Hello API Platform + * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) + * + * The version of the OpenAPI document: 1.0.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ +/* tslint:disable:no-unused-variable member-ordering */ + +import { Inject, Injectable, Optional } from '@angular/core'; +import { HttpClient, HttpHeaders, HttpParams, + HttpResponse, HttpEvent, HttpParameterCodec, HttpContext + } from '@angular/common/http'; +import { CustomHttpParameterCodec } from '../encoder'; +import { Observable } from 'rxjs'; + +// @ts-ignore +import { LoginCheckPost200Response } from '../model/loginCheckPost200Response'; +// @ts-ignore +import { LoginCheckPostRequest } from '../model/loginCheckPostRequest'; + +// @ts-ignore +import { BASE_PATH, COLLECTION_FORMATS } from '../variables'; +import { Configuration } from '../configuration'; + + + +@Injectable({ + providedIn: 'root' +}) +export class LoginCheckService { + + protected basePath = 'http://localhost'; + public defaultHeaders = new HttpHeaders(); + public configuration = new Configuration(); + public encoder: HttpParameterCodec; + + constructor(protected httpClient: HttpClient, @Optional()@Inject(BASE_PATH) basePath: string|string[], @Optional() configuration: Configuration) { + if (configuration) { + this.configuration = configuration; + } + if (typeof this.configuration.basePath !== 'string') { + if (Array.isArray(basePath) && basePath.length > 0) { + basePath = basePath[0]; + } + + if (typeof basePath !== 'string') { + basePath = this.basePath; + } + this.configuration.basePath = basePath; + } + this.encoder = this.configuration.encoder || new CustomHttpParameterCodec(); + } + + + // @ts-ignore + private addToHttpParams(httpParams: HttpParams, value: any, key?: string): HttpParams { + if (typeof value === "object" && value instanceof Date === false) { + httpParams = this.addToHttpParamsRecursive(httpParams, value); + } else { + httpParams = this.addToHttpParamsRecursive(httpParams, value, key); + } + return httpParams; + } + + private addToHttpParamsRecursive(httpParams: HttpParams, value?: any, key?: string): HttpParams { + if (value == null) { + return httpParams; + } + + if (typeof value === "object") { + if (Array.isArray(value)) { + (value as any[]).forEach( elem => httpParams = this.addToHttpParamsRecursive(httpParams, elem, key)); + } else if (value instanceof Date) { + if (key != null) { + httpParams = httpParams.append(key, (value as Date).toISOString().substring(0, 10)); + } else { + throw Error("key may not be null if value is Date"); + } + } else { + Object.keys(value).forEach( k => httpParams = this.addToHttpParamsRecursive( + httpParams, value[k], key != null ? `${key}.${k}` : k)); + } + } else if (key != null) { + httpParams = httpParams.append(key, value); + } else { + throw Error("key may not be null if value is not object or array"); + } + return httpParams; + } + + /** + * Creates a user token. + * Creates a user token. + * @param loginCheckPostRequest The login data + * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body. + * @param reportProgress flag to report request and response progress. + */ + public checkPost(loginCheckPostRequest: LoginCheckPostRequest, observe?: 'body', reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json', context?: HttpContext, transferCache?: boolean}): Observable; + public checkPost(loginCheckPostRequest: LoginCheckPostRequest, observe?: 'response', reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json', context?: HttpContext, transferCache?: boolean}): Observable>; + public checkPost(loginCheckPostRequest: LoginCheckPostRequest, observe?: 'events', reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json', context?: HttpContext, transferCache?: boolean}): Observable>; + public checkPost(loginCheckPostRequest: LoginCheckPostRequest, observe: any = 'body', reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json', context?: HttpContext, transferCache?: boolean}): Observable { + if (loginCheckPostRequest === null || loginCheckPostRequest === undefined) { + throw new Error('Required parameter loginCheckPostRequest was null or undefined when calling checkPost.'); + } + + let localVarHeaders = this.defaultHeaders; + + let localVarCredential: string | undefined; + // authentication (JWT) required + localVarCredential = this.configuration.lookupCredential('JWT'); + if (localVarCredential) { + localVarHeaders = localVarHeaders.set('Authorization', 'Bearer ' + localVarCredential); + } + + let localVarHttpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept; + if (localVarHttpHeaderAcceptSelected === undefined) { + // to determine the Accept header + const httpHeaderAccepts: string[] = [ + 'application/json' + ]; + localVarHttpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts); + } + if (localVarHttpHeaderAcceptSelected !== undefined) { + localVarHeaders = localVarHeaders.set('Accept', localVarHttpHeaderAcceptSelected); + } + + let localVarHttpContext: HttpContext | undefined = options && options.context; + if (localVarHttpContext === undefined) { + localVarHttpContext = new HttpContext(); + } + + let localVarTransferCache: boolean | undefined = options && options.transferCache; + if (localVarTransferCache === undefined) { + localVarTransferCache = true; + } + + + // to determine the Content-Type header + const consumes: string[] = [ + 'application/json' + ]; + const httpContentTypeSelected: string | undefined = this.configuration.selectHeaderContentType(consumes); + if (httpContentTypeSelected !== undefined) { + localVarHeaders = localVarHeaders.set('Content-Type', httpContentTypeSelected); + } + + let responseType_: 'text' | 'json' | 'blob' = 'json'; + if (localVarHttpHeaderAcceptSelected) { + if (localVarHttpHeaderAcceptSelected.startsWith('text')) { + responseType_ = 'text'; + } else if (this.configuration.isJsonMime(localVarHttpHeaderAcceptSelected)) { + responseType_ = 'json'; + } else { + responseType_ = 'blob'; + } + } + + let localVarPath = `/api/auth`; + return this.httpClient.request('post', `${this.configuration.basePath}${localVarPath}`, + { + context: localVarHttpContext, + body: loginCheckPostRequest, + responseType: responseType_, + withCredentials: this.configuration.withCredentials, + headers: localVarHeaders, + observe: observe, + transferCache: localVarTransferCache, + reportProgress: reportProgress + } + ); + } + +} diff --git a/angular/src/app/core/api/v1/api/mediaObject.service.ts b/angular/src/app/core/api/v1/api/mediaObject.service.ts new file mode 100644 index 0000000..6575af0 --- /dev/null +++ b/angular/src/app/core/api/v1/api/mediaObject.service.ts @@ -0,0 +1,425 @@ +/** + * Hello API Platform + * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) + * + * The version of the OpenAPI document: 1.0.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ +/* tslint:disable:no-unused-variable member-ordering */ + +import { Inject, Injectable, Optional } from '@angular/core'; +import { HttpClient, HttpHeaders, HttpParams, + HttpResponse, HttpEvent, HttpParameterCodec, HttpContext + } from '@angular/common/http'; +import { CustomHttpParameterCodec } from '../encoder'; +import { Observable } from 'rxjs'; + +// @ts-ignore +import { ApiMediaObjectsGetCollection200Response } from '../model/apiMediaObjectsGetCollection200Response'; +// @ts-ignore +import { MediaObjectJsonldMediaObjectRead } from '../model/mediaObjectJsonldMediaObjectRead'; + +// @ts-ignore +import { BASE_PATH, COLLECTION_FORMATS } from '../variables'; +import { Configuration } from '../configuration'; + + + +@Injectable({ + providedIn: 'root' +}) +export class MediaObjectService { + + protected basePath = 'http://localhost'; + public defaultHeaders = new HttpHeaders(); + public configuration = new Configuration(); + public encoder: HttpParameterCodec; + + constructor(protected httpClient: HttpClient, @Optional()@Inject(BASE_PATH) basePath: string|string[], @Optional() configuration: Configuration) { + if (configuration) { + this.configuration = configuration; + } + if (typeof this.configuration.basePath !== 'string') { + if (Array.isArray(basePath) && basePath.length > 0) { + basePath = basePath[0]; + } + + if (typeof basePath !== 'string') { + basePath = this.basePath; + } + this.configuration.basePath = basePath; + } + this.encoder = this.configuration.encoder || new CustomHttpParameterCodec(); + } + + /** + * @param consumes string[] mime-types + * @return true: consumes contains 'multipart/form-data', false: otherwise + */ + private canConsumeForm(consumes: string[]): boolean { + const form = 'multipart/form-data'; + for (const consume of consumes) { + if (form === consume) { + return true; + } + } + return false; + } + + // @ts-ignore + private addToHttpParams(httpParams: HttpParams, value: any, key?: string): HttpParams { + if (typeof value === "object" && value instanceof Date === false) { + httpParams = this.addToHttpParamsRecursive(httpParams, value); + } else { + httpParams = this.addToHttpParamsRecursive(httpParams, value, key); + } + return httpParams; + } + + private addToHttpParamsRecursive(httpParams: HttpParams, value?: any, key?: string): HttpParams { + if (value == null) { + return httpParams; + } + + if (typeof value === "object") { + if (Array.isArray(value)) { + (value as any[]).forEach( elem => httpParams = this.addToHttpParamsRecursive(httpParams, elem, key)); + } else if (value instanceof Date) { + if (key != null) { + httpParams = httpParams.append(key, (value as Date).toISOString().substring(0, 10)); + } else { + throw Error("key may not be null if value is Date"); + } + } else { + Object.keys(value).forEach( k => httpParams = this.addToHttpParamsRecursive( + httpParams, value[k], key != null ? `${key}.${k}` : k)); + } + } else if (key != null) { + httpParams = httpParams.append(key, value); + } else { + throw Error("key may not be null if value is not object or array"); + } + return httpParams; + } + + /** + * Retrieves the collection of MediaObject resources. + * Retrieves the collection of MediaObject resources. + * @param page The collection page number + * @param itemsPerPage The number of items per page + * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body. + * @param reportProgress flag to report request and response progress. + */ + public mediaObjectsGetCollection(page?: number, itemsPerPage?: number, observe?: 'body', reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/ld+json', context?: HttpContext, transferCache?: boolean}): Observable; + public mediaObjectsGetCollection(page?: number, itemsPerPage?: number, observe?: 'response', reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/ld+json', context?: HttpContext, transferCache?: boolean}): Observable>; + public mediaObjectsGetCollection(page?: number, itemsPerPage?: number, observe?: 'events', reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/ld+json', context?: HttpContext, transferCache?: boolean}): Observable>; + public mediaObjectsGetCollection(page?: number, itemsPerPage?: number, observe: any = 'body', reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/ld+json', context?: HttpContext, transferCache?: boolean}): Observable { + + let localVarQueryParameters = new HttpParams({encoder: this.encoder}); + if (page !== undefined && page !== null) { + localVarQueryParameters = this.addToHttpParams(localVarQueryParameters, + page, 'page'); + } + if (itemsPerPage !== undefined && itemsPerPage !== null) { + localVarQueryParameters = this.addToHttpParams(localVarQueryParameters, + itemsPerPage, 'itemsPerPage'); + } + + let localVarHeaders = this.defaultHeaders; + + let localVarCredential: string | undefined; + // authentication (JWT) required + localVarCredential = this.configuration.lookupCredential('JWT'); + if (localVarCredential) { + localVarHeaders = localVarHeaders.set('Authorization', 'Bearer ' + localVarCredential); + } + + let localVarHttpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept; + if (localVarHttpHeaderAcceptSelected === undefined) { + // to determine the Accept header + const httpHeaderAccepts: string[] = [ + 'application/ld+json' + ]; + localVarHttpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts); + } + if (localVarHttpHeaderAcceptSelected !== undefined) { + localVarHeaders = localVarHeaders.set('Accept', localVarHttpHeaderAcceptSelected); + } + + let localVarHttpContext: HttpContext | undefined = options && options.context; + if (localVarHttpContext === undefined) { + localVarHttpContext = new HttpContext(); + } + + let localVarTransferCache: boolean | undefined = options && options.transferCache; + if (localVarTransferCache === undefined) { + localVarTransferCache = true; + } + + + let responseType_: 'text' | 'json' | 'blob' = 'json'; + if (localVarHttpHeaderAcceptSelected) { + if (localVarHttpHeaderAcceptSelected.startsWith('text')) { + responseType_ = 'text'; + } else if (this.configuration.isJsonMime(localVarHttpHeaderAcceptSelected)) { + responseType_ = 'json'; + } else { + responseType_ = 'blob'; + } + } + + let localVarPath = `/api/media_objects`; + return this.httpClient.request('get', `${this.configuration.basePath}${localVarPath}`, + { + context: localVarHttpContext, + params: localVarQueryParameters, + responseType: responseType_, + withCredentials: this.configuration.withCredentials, + headers: localVarHeaders, + observe: observe, + transferCache: localVarTransferCache, + reportProgress: reportProgress + } + ); + } + + /** + * Removes the MediaObject resource. + * Removes the MediaObject resource. + * @param id MediaObject identifier + * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body. + * @param reportProgress flag to report request and response progress. + */ + public mediaObjectsIdDelete(id: string, observe?: 'body', reportProgress?: boolean, options?: {httpHeaderAccept?: undefined, context?: HttpContext, transferCache?: boolean}): Observable; + public mediaObjectsIdDelete(id: string, observe?: 'response', reportProgress?: boolean, options?: {httpHeaderAccept?: undefined, context?: HttpContext, transferCache?: boolean}): Observable>; + public mediaObjectsIdDelete(id: string, observe?: 'events', reportProgress?: boolean, options?: {httpHeaderAccept?: undefined, context?: HttpContext, transferCache?: boolean}): Observable>; + public mediaObjectsIdDelete(id: string, observe: any = 'body', reportProgress: boolean = false, options?: {httpHeaderAccept?: undefined, context?: HttpContext, transferCache?: boolean}): Observable { + if (id === null || id === undefined) { + throw new Error('Required parameter id was null or undefined when calling mediaObjectsIdDelete.'); + } + + let localVarHeaders = this.defaultHeaders; + + let localVarCredential: string | undefined; + // authentication (JWT) required + localVarCredential = this.configuration.lookupCredential('JWT'); + if (localVarCredential) { + localVarHeaders = localVarHeaders.set('Authorization', 'Bearer ' + localVarCredential); + } + + let localVarHttpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept; + if (localVarHttpHeaderAcceptSelected === undefined) { + // to determine the Accept header + const httpHeaderAccepts: string[] = [ + ]; + localVarHttpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts); + } + if (localVarHttpHeaderAcceptSelected !== undefined) { + localVarHeaders = localVarHeaders.set('Accept', localVarHttpHeaderAcceptSelected); + } + + let localVarHttpContext: HttpContext | undefined = options && options.context; + if (localVarHttpContext === undefined) { + localVarHttpContext = new HttpContext(); + } + + let localVarTransferCache: boolean | undefined = options && options.transferCache; + if (localVarTransferCache === undefined) { + localVarTransferCache = true; + } + + + let responseType_: 'text' | 'json' | 'blob' = 'json'; + if (localVarHttpHeaderAcceptSelected) { + if (localVarHttpHeaderAcceptSelected.startsWith('text')) { + responseType_ = 'text'; + } else if (this.configuration.isJsonMime(localVarHttpHeaderAcceptSelected)) { + responseType_ = 'json'; + } else { + responseType_ = 'blob'; + } + } + + let localVarPath = `/api/media_objects/${this.configuration.encodeParam({name: "id", value: id, in: "path", style: "simple", explode: false, dataType: "string", dataFormat: undefined})}`; + return this.httpClient.request('delete', `${this.configuration.basePath}${localVarPath}`, + { + context: localVarHttpContext, + responseType: responseType_, + withCredentials: this.configuration.withCredentials, + headers: localVarHeaders, + observe: observe, + transferCache: localVarTransferCache, + reportProgress: reportProgress + } + ); + } + + /** + * Retrieves a MediaObject resource. + * Retrieves a MediaObject resource. + * @param id MediaObject identifier + * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body. + * @param reportProgress flag to report request and response progress. + */ + public mediaObjectsIdGet(id: string, observe?: 'body', reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/ld+json', context?: HttpContext, transferCache?: boolean}): Observable; + public mediaObjectsIdGet(id: string, observe?: 'response', reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/ld+json', context?: HttpContext, transferCache?: boolean}): Observable>; + public mediaObjectsIdGet(id: string, observe?: 'events', reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/ld+json', context?: HttpContext, transferCache?: boolean}): Observable>; + public mediaObjectsIdGet(id: string, observe: any = 'body', reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/ld+json', context?: HttpContext, transferCache?: boolean}): Observable { + if (id === null || id === undefined) { + throw new Error('Required parameter id was null or undefined when calling mediaObjectsIdGet.'); + } + + let localVarHeaders = this.defaultHeaders; + + let localVarCredential: string | undefined; + // authentication (JWT) required + localVarCredential = this.configuration.lookupCredential('JWT'); + if (localVarCredential) { + localVarHeaders = localVarHeaders.set('Authorization', 'Bearer ' + localVarCredential); + } + + let localVarHttpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept; + if (localVarHttpHeaderAcceptSelected === undefined) { + // to determine the Accept header + const httpHeaderAccepts: string[] = [ + 'application/ld+json' + ]; + localVarHttpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts); + } + if (localVarHttpHeaderAcceptSelected !== undefined) { + localVarHeaders = localVarHeaders.set('Accept', localVarHttpHeaderAcceptSelected); + } + + let localVarHttpContext: HttpContext | undefined = options && options.context; + if (localVarHttpContext === undefined) { + localVarHttpContext = new HttpContext(); + } + + let localVarTransferCache: boolean | undefined = options && options.transferCache; + if (localVarTransferCache === undefined) { + localVarTransferCache = true; + } + + + let responseType_: 'text' | 'json' | 'blob' = 'json'; + if (localVarHttpHeaderAcceptSelected) { + if (localVarHttpHeaderAcceptSelected.startsWith('text')) { + responseType_ = 'text'; + } else if (this.configuration.isJsonMime(localVarHttpHeaderAcceptSelected)) { + responseType_ = 'json'; + } else { + responseType_ = 'blob'; + } + } + + let localVarPath = `/api/media_objects/${this.configuration.encodeParam({name: "id", value: id, in: "path", style: "simple", explode: false, dataType: "string", dataFormat: undefined})}`; + return this.httpClient.request('get', `${this.configuration.basePath}${localVarPath}`, + { + context: localVarHttpContext, + responseType: responseType_, + withCredentials: this.configuration.withCredentials, + headers: localVarHeaders, + observe: observe, + transferCache: localVarTransferCache, + reportProgress: reportProgress + } + ); + } + + /** + * Creates a MediaObject resource. + * Creates a MediaObject resource. + * @param file + * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body. + * @param reportProgress flag to report request and response progress. + */ + public mediaObjectsPost(file?: Blob, observe?: 'body', reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/ld+json', context?: HttpContext, transferCache?: boolean}): Observable; + public mediaObjectsPost(file?: Blob, observe?: 'response', reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/ld+json', context?: HttpContext, transferCache?: boolean}): Observable>; + public mediaObjectsPost(file?: Blob, observe?: 'events', reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/ld+json', context?: HttpContext, transferCache?: boolean}): Observable>; + public mediaObjectsPost(file?: Blob, observe: any = 'body', reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/ld+json', context?: HttpContext, transferCache?: boolean}): Observable { + + let localVarHeaders = this.defaultHeaders; + + let localVarCredential: string | undefined; + // authentication (JWT) required + localVarCredential = this.configuration.lookupCredential('JWT'); + if (localVarCredential) { + localVarHeaders = localVarHeaders.set('Authorization', 'Bearer ' + localVarCredential); + } + + let localVarHttpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept; + if (localVarHttpHeaderAcceptSelected === undefined) { + // to determine the Accept header + const httpHeaderAccepts: string[] = [ + 'application/ld+json' + ]; + localVarHttpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts); + } + if (localVarHttpHeaderAcceptSelected !== undefined) { + localVarHeaders = localVarHeaders.set('Accept', localVarHttpHeaderAcceptSelected); + } + + let localVarHttpContext: HttpContext | undefined = options && options.context; + if (localVarHttpContext === undefined) { + localVarHttpContext = new HttpContext(); + } + + let localVarTransferCache: boolean | undefined = options && options.transferCache; + if (localVarTransferCache === undefined) { + localVarTransferCache = true; + } + + // to determine the Content-Type header + const consumes: string[] = [ + 'multipart/form-data' + ]; + + const canConsumeForm = this.canConsumeForm(consumes); + + let localVarFormParams: { append(param: string, value: any): any; }; + let localVarUseForm = false; + let localVarConvertFormParamsToString = false; + // use FormData to transmit files using content-type "multipart/form-data" + // see https://stackoverflow.com/questions/4007969/application-x-www-form-urlencoded-or-multipart-form-data + localVarUseForm = canConsumeForm; + if (localVarUseForm) { + localVarFormParams = new FormData(); + } else { + localVarFormParams = new HttpParams({encoder: this.encoder}); + } + + if (file !== undefined) { + localVarFormParams = localVarFormParams.append('file', file) as any || localVarFormParams; + } + + let responseType_: 'text' | 'json' | 'blob' = 'json'; + if (localVarHttpHeaderAcceptSelected) { + if (localVarHttpHeaderAcceptSelected.startsWith('text')) { + responseType_ = 'text'; + } else if (this.configuration.isJsonMime(localVarHttpHeaderAcceptSelected)) { + responseType_ = 'json'; + } else { + responseType_ = 'blob'; + } + } + + let localVarPath = `/api/media_objects`; + return this.httpClient.request('post', `${this.configuration.basePath}${localVarPath}`, + { + context: localVarHttpContext, + body: localVarConvertFormParamsToString ? localVarFormParams.toString() : localVarFormParams, + responseType: responseType_, + withCredentials: this.configuration.withCredentials, + headers: localVarHeaders, + observe: observe, + transferCache: localVarTransferCache, + reportProgress: reportProgress + } + ); + } + +} diff --git a/angular/src/app/core/api/v1/api/modeConfig.service.ts b/angular/src/app/core/api/v1/api/modeConfig.service.ts new file mode 100644 index 0000000..00d0f26 --- /dev/null +++ b/angular/src/app/core/api/v1/api/modeConfig.service.ts @@ -0,0 +1,246 @@ +/** + * Hello API Platform + * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) + * + * The version of the OpenAPI document: 1.0.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ +/* tslint:disable:no-unused-variable member-ordering */ + +import { Inject, Injectable, Optional } from '@angular/core'; +import { HttpClient, HttpHeaders, HttpParams, + HttpResponse, HttpEvent, HttpParameterCodec, HttpContext + } from '@angular/common/http'; +import { CustomHttpParameterCodec } from '../encoder'; +import { Observable } from 'rxjs'; + +// @ts-ignore +import { ModeConfig } from '../model/modeConfig'; +// @ts-ignore +import { ModeConfigJsonld } from '../model/modeConfigJsonld'; + +// @ts-ignore +import { BASE_PATH, COLLECTION_FORMATS } from '../variables'; +import { Configuration } from '../configuration'; + + + +@Injectable({ + providedIn: 'root' +}) +export class ModeConfigService { + + protected basePath = 'http://localhost'; + public defaultHeaders = new HttpHeaders(); + public configuration = new Configuration(); + public encoder: HttpParameterCodec; + + constructor(protected httpClient: HttpClient, @Optional()@Inject(BASE_PATH) basePath: string|string[], @Optional() configuration: Configuration) { + if (configuration) { + this.configuration = configuration; + } + if (typeof this.configuration.basePath !== 'string') { + if (Array.isArray(basePath) && basePath.length > 0) { + basePath = basePath[0]; + } + + if (typeof basePath !== 'string') { + basePath = this.basePath; + } + this.configuration.basePath = basePath; + } + this.encoder = this.configuration.encoder || new CustomHttpParameterCodec(); + } + + + // @ts-ignore + private addToHttpParams(httpParams: HttpParams, value: any, key?: string): HttpParams { + if (typeof value === "object" && value instanceof Date === false) { + httpParams = this.addToHttpParamsRecursive(httpParams, value); + } else { + httpParams = this.addToHttpParamsRecursive(httpParams, value, key); + } + return httpParams; + } + + private addToHttpParamsRecursive(httpParams: HttpParams, value?: any, key?: string): HttpParams { + if (value == null) { + return httpParams; + } + + if (typeof value === "object") { + if (Array.isArray(value)) { + (value as any[]).forEach( elem => httpParams = this.addToHttpParamsRecursive(httpParams, elem, key)); + } else if (value instanceof Date) { + if (key != null) { + httpParams = httpParams.append(key, (value as Date).toISOString().substring(0, 10)); + } else { + throw Error("key may not be null if value is Date"); + } + } else { + Object.keys(value).forEach( k => httpParams = this.addToHttpParamsRecursive( + httpParams, value[k], key != null ? `${key}.${k}` : k)); + } + } else if (key != null) { + httpParams = httpParams.append(key, value); + } else { + throw Error("key may not be null if value is not object or array"); + } + return httpParams; + } + + /** + * Retrieves a ModeConfig resource. + * Retrieves a ModeConfig resource. + * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body. + * @param reportProgress flag to report request and response progress. + */ + public modeConfigGet(observe?: 'body', reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/ld+json', context?: HttpContext, transferCache?: boolean}): Observable; + public modeConfigGet(observe?: 'response', reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/ld+json', context?: HttpContext, transferCache?: boolean}): Observable>; + public modeConfigGet(observe?: 'events', reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/ld+json', context?: HttpContext, transferCache?: boolean}): Observable>; + public modeConfigGet(observe: any = 'body', reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/ld+json', context?: HttpContext, transferCache?: boolean}): Observable { + + let localVarHeaders = this.defaultHeaders; + + let localVarCredential: string | undefined; + // authentication (JWT) required + localVarCredential = this.configuration.lookupCredential('JWT'); + if (localVarCredential) { + localVarHeaders = localVarHeaders.set('Authorization', 'Bearer ' + localVarCredential); + } + + let localVarHttpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept; + if (localVarHttpHeaderAcceptSelected === undefined) { + // to determine the Accept header + const httpHeaderAccepts: string[] = [ + 'application/ld+json' + ]; + localVarHttpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts); + } + if (localVarHttpHeaderAcceptSelected !== undefined) { + localVarHeaders = localVarHeaders.set('Accept', localVarHttpHeaderAcceptSelected); + } + + let localVarHttpContext: HttpContext | undefined = options && options.context; + if (localVarHttpContext === undefined) { + localVarHttpContext = new HttpContext(); + } + + let localVarTransferCache: boolean | undefined = options && options.transferCache; + if (localVarTransferCache === undefined) { + localVarTransferCache = true; + } + + + let responseType_: 'text' | 'json' | 'blob' = 'json'; + if (localVarHttpHeaderAcceptSelected) { + if (localVarHttpHeaderAcceptSelected.startsWith('text')) { + responseType_ = 'text'; + } else if (this.configuration.isJsonMime(localVarHttpHeaderAcceptSelected)) { + responseType_ = 'json'; + } else { + responseType_ = 'blob'; + } + } + + let localVarPath = `/api/mode_config`; + return this.httpClient.request('get', `${this.configuration.basePath}${localVarPath}`, + { + context: localVarHttpContext, + responseType: responseType_, + withCredentials: this.configuration.withCredentials, + headers: localVarHeaders, + observe: observe, + transferCache: localVarTransferCache, + reportProgress: reportProgress + } + ); + } + + /** + * Updates the ModeConfig resource. + * Updates the ModeConfig resource. + * @param modeConfig The updated ModeConfig resource + * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body. + * @param reportProgress flag to report request and response progress. + */ + public modeConfigPatch(modeConfig: ModeConfig, observe?: 'body', reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/ld+json', context?: HttpContext, transferCache?: boolean}): Observable; + public modeConfigPatch(modeConfig: ModeConfig, observe?: 'response', reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/ld+json', context?: HttpContext, transferCache?: boolean}): Observable>; + public modeConfigPatch(modeConfig: ModeConfig, observe?: 'events', reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/ld+json', context?: HttpContext, transferCache?: boolean}): Observable>; + public modeConfigPatch(modeConfig: ModeConfig, observe: any = 'body', reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/ld+json', context?: HttpContext, transferCache?: boolean}): Observable { + if (modeConfig === null || modeConfig === undefined) { + throw new Error('Required parameter modeConfig was null or undefined when calling modeConfigPatch.'); + } + + let localVarHeaders = this.defaultHeaders; + + let localVarCredential: string | undefined; + // authentication (JWT) required + localVarCredential = this.configuration.lookupCredential('JWT'); + if (localVarCredential) { + localVarHeaders = localVarHeaders.set('Authorization', 'Bearer ' + localVarCredential); + } + + let localVarHttpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept; + if (localVarHttpHeaderAcceptSelected === undefined) { + // to determine the Accept header + const httpHeaderAccepts: string[] = [ + 'application/ld+json' + ]; + localVarHttpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts); + } + if (localVarHttpHeaderAcceptSelected !== undefined) { + localVarHeaders = localVarHeaders.set('Accept', localVarHttpHeaderAcceptSelected); + } + + let localVarHttpContext: HttpContext | undefined = options && options.context; + if (localVarHttpContext === undefined) { + localVarHttpContext = new HttpContext(); + } + + let localVarTransferCache: boolean | undefined = options && options.transferCache; + if (localVarTransferCache === undefined) { + localVarTransferCache = true; + } + + + // to determine the Content-Type header + const consumes: string[] = [ + 'application/merge-patch+json' + ]; + const httpContentTypeSelected: string | undefined = this.configuration.selectHeaderContentType(consumes); + if (httpContentTypeSelected !== undefined) { + localVarHeaders = localVarHeaders.set('Content-Type', httpContentTypeSelected); + } + + let responseType_: 'text' | 'json' | 'blob' = 'json'; + if (localVarHttpHeaderAcceptSelected) { + if (localVarHttpHeaderAcceptSelected.startsWith('text')) { + responseType_ = 'text'; + } else if (this.configuration.isJsonMime(localVarHttpHeaderAcceptSelected)) { + responseType_ = 'json'; + } else { + responseType_ = 'blob'; + } + } + + let localVarPath = `/api/mode_config`; + return this.httpClient.request('patch', `${this.configuration.basePath}${localVarPath}`, + { + context: localVarHttpContext, + body: modeConfig, + responseType: responseType_, + withCredentials: this.configuration.withCredentials, + headers: localVarHeaders, + observe: observe, + transferCache: localVarTransferCache, + reportProgress: reportProgress + } + ); + } + +} diff --git a/angular/src/app/core/api/v1/api/player.service.ts b/angular/src/app/core/api/v1/api/player.service.ts new file mode 100644 index 0000000..bf451e0 --- /dev/null +++ b/angular/src/app/core/api/v1/api/player.service.ts @@ -0,0 +1,424 @@ +/** + * Hello API Platform + * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) + * + * The version of the OpenAPI document: 1.0.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ +/* tslint:disable:no-unused-variable member-ordering */ + +import { Inject, Injectable, Optional } from '@angular/core'; +import { HttpClient, HttpHeaders, HttpParams, + HttpResponse, HttpEvent, HttpParameterCodec, HttpContext + } from '@angular/common/http'; +import { CustomHttpParameterCodec } from '../encoder'; +import { Observable } from 'rxjs'; + +// @ts-ignore +import { ApiPlayersGetCollection200Response } from '../model/apiPlayersGetCollection200Response'; +// @ts-ignore +import { Player } from '../model/player'; +// @ts-ignore +import { PlayerJsonld } from '../model/playerJsonld'; + +// @ts-ignore +import { BASE_PATH, COLLECTION_FORMATS } from '../variables'; +import { Configuration } from '../configuration'; + + + +@Injectable({ + providedIn: 'root' +}) +export class PlayerService { + + protected basePath = 'http://localhost'; + public defaultHeaders = new HttpHeaders(); + public configuration = new Configuration(); + public encoder: HttpParameterCodec; + + constructor(protected httpClient: HttpClient, @Optional()@Inject(BASE_PATH) basePath: string|string[], @Optional() configuration: Configuration) { + if (configuration) { + this.configuration = configuration; + } + if (typeof this.configuration.basePath !== 'string') { + if (Array.isArray(basePath) && basePath.length > 0) { + basePath = basePath[0]; + } + + if (typeof basePath !== 'string') { + basePath = this.basePath; + } + this.configuration.basePath = basePath; + } + this.encoder = this.configuration.encoder || new CustomHttpParameterCodec(); + } + + + // @ts-ignore + private addToHttpParams(httpParams: HttpParams, value: any, key?: string): HttpParams { + if (typeof value === "object" && value instanceof Date === false) { + httpParams = this.addToHttpParamsRecursive(httpParams, value); + } else { + httpParams = this.addToHttpParamsRecursive(httpParams, value, key); + } + return httpParams; + } + + private addToHttpParamsRecursive(httpParams: HttpParams, value?: any, key?: string): HttpParams { + if (value == null) { + return httpParams; + } + + if (typeof value === "object") { + if (Array.isArray(value)) { + (value as any[]).forEach( elem => httpParams = this.addToHttpParamsRecursive(httpParams, elem, key)); + } else if (value instanceof Date) { + if (key != null) { + httpParams = httpParams.append(key, (value as Date).toISOString().substring(0, 10)); + } else { + throw Error("key may not be null if value is Date"); + } + } else { + Object.keys(value).forEach( k => httpParams = this.addToHttpParamsRecursive( + httpParams, value[k], key != null ? `${key}.${k}` : k)); + } + } else if (key != null) { + httpParams = httpParams.append(key, value); + } else { + throw Error("key may not be null if value is not object or array"); + } + return httpParams; + } + + /** + * Retrieves the collection of Player resources. + * Retrieves the collection of Player resources. + * @param page The collection page number + * @param itemsPerPage The number of items per page + * @param customJsonOrder + * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body. + * @param reportProgress flag to report request and response progress. + */ + public playersGetCollection(page?: number, itemsPerPage?: number, customJsonOrder?: string, observe?: 'body', reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/ld+json', context?: HttpContext, transferCache?: boolean}): Observable; + public playersGetCollection(page?: number, itemsPerPage?: number, customJsonOrder?: string, observe?: 'response', reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/ld+json', context?: HttpContext, transferCache?: boolean}): Observable>; + public playersGetCollection(page?: number, itemsPerPage?: number, customJsonOrder?: string, observe?: 'events', reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/ld+json', context?: HttpContext, transferCache?: boolean}): Observable>; + public playersGetCollection(page?: number, itemsPerPage?: number, customJsonOrder?: string, observe: any = 'body', reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/ld+json', context?: HttpContext, transferCache?: boolean}): Observable { + + let localVarQueryParameters = new HttpParams({encoder: this.encoder}); + if (page !== undefined && page !== null) { + localVarQueryParameters = this.addToHttpParams(localVarQueryParameters, + page, 'page'); + } + if (itemsPerPage !== undefined && itemsPerPage !== null) { + localVarQueryParameters = this.addToHttpParams(localVarQueryParameters, + itemsPerPage, 'itemsPerPage'); + } + if (customJsonOrder !== undefined && customJsonOrder !== null) { + localVarQueryParameters = this.addToHttpParams(localVarQueryParameters, + customJsonOrder, 'custom_json_order'); + } + + let localVarHeaders = this.defaultHeaders; + + let localVarCredential: string | undefined; + // authentication (JWT) required + localVarCredential = this.configuration.lookupCredential('JWT'); + if (localVarCredential) { + localVarHeaders = localVarHeaders.set('Authorization', 'Bearer ' + localVarCredential); + } + + let localVarHttpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept; + if (localVarHttpHeaderAcceptSelected === undefined) { + // to determine the Accept header + const httpHeaderAccepts: string[] = [ + 'application/ld+json' + ]; + localVarHttpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts); + } + if (localVarHttpHeaderAcceptSelected !== undefined) { + localVarHeaders = localVarHeaders.set('Accept', localVarHttpHeaderAcceptSelected); + } + + let localVarHttpContext: HttpContext | undefined = options && options.context; + if (localVarHttpContext === undefined) { + localVarHttpContext = new HttpContext(); + } + + let localVarTransferCache: boolean | undefined = options && options.transferCache; + if (localVarTransferCache === undefined) { + localVarTransferCache = true; + } + + + let responseType_: 'text' | 'json' | 'blob' = 'json'; + if (localVarHttpHeaderAcceptSelected) { + if (localVarHttpHeaderAcceptSelected.startsWith('text')) { + responseType_ = 'text'; + } else if (this.configuration.isJsonMime(localVarHttpHeaderAcceptSelected)) { + responseType_ = 'json'; + } else { + responseType_ = 'blob'; + } + } + + let localVarPath = `/api/players`; + return this.httpClient.request('get', `${this.configuration.basePath}${localVarPath}`, + { + context: localVarHttpContext, + params: localVarQueryParameters, + responseType: responseType_, + withCredentials: this.configuration.withCredentials, + headers: localVarHeaders, + observe: observe, + transferCache: localVarTransferCache, + reportProgress: reportProgress + } + ); + } + + /** + * Retrieves a Player resource. + * Retrieves a Player resource. + * @param id Player identifier + * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body. + * @param reportProgress flag to report request and response progress. + */ + public playersIdGet(id: string, observe?: 'body', reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/ld+json', context?: HttpContext, transferCache?: boolean}): Observable; + public playersIdGet(id: string, observe?: 'response', reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/ld+json', context?: HttpContext, transferCache?: boolean}): Observable>; + public playersIdGet(id: string, observe?: 'events', reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/ld+json', context?: HttpContext, transferCache?: boolean}): Observable>; + public playersIdGet(id: string, observe: any = 'body', reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/ld+json', context?: HttpContext, transferCache?: boolean}): Observable { + if (id === null || id === undefined) { + throw new Error('Required parameter id was null or undefined when calling playersIdGet.'); + } + + let localVarHeaders = this.defaultHeaders; + + let localVarCredential: string | undefined; + // authentication (JWT) required + localVarCredential = this.configuration.lookupCredential('JWT'); + if (localVarCredential) { + localVarHeaders = localVarHeaders.set('Authorization', 'Bearer ' + localVarCredential); + } + + let localVarHttpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept; + if (localVarHttpHeaderAcceptSelected === undefined) { + // to determine the Accept header + const httpHeaderAccepts: string[] = [ + 'application/ld+json' + ]; + localVarHttpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts); + } + if (localVarHttpHeaderAcceptSelected !== undefined) { + localVarHeaders = localVarHeaders.set('Accept', localVarHttpHeaderAcceptSelected); + } + + let localVarHttpContext: HttpContext | undefined = options && options.context; + if (localVarHttpContext === undefined) { + localVarHttpContext = new HttpContext(); + } + + let localVarTransferCache: boolean | undefined = options && options.transferCache; + if (localVarTransferCache === undefined) { + localVarTransferCache = true; + } + + + let responseType_: 'text' | 'json' | 'blob' = 'json'; + if (localVarHttpHeaderAcceptSelected) { + if (localVarHttpHeaderAcceptSelected.startsWith('text')) { + responseType_ = 'text'; + } else if (this.configuration.isJsonMime(localVarHttpHeaderAcceptSelected)) { + responseType_ = 'json'; + } else { + responseType_ = 'blob'; + } + } + + let localVarPath = `/api/players/${this.configuration.encodeParam({name: "id", value: id, in: "path", style: "simple", explode: false, dataType: "string", dataFormat: undefined})}`; + return this.httpClient.request('get', `${this.configuration.basePath}${localVarPath}`, + { + context: localVarHttpContext, + responseType: responseType_, + withCredentials: this.configuration.withCredentials, + headers: localVarHeaders, + observe: observe, + transferCache: localVarTransferCache, + reportProgress: reportProgress + } + ); + } + + /** + * Updates the Player resource. + * Updates the Player resource. + * @param id Player identifier + * @param player The updated Player resource + * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body. + * @param reportProgress flag to report request and response progress. + */ + public playersIdPatch(id: string, player: Player, observe?: 'body', reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/ld+json', context?: HttpContext, transferCache?: boolean}): Observable; + public playersIdPatch(id: string, player: Player, observe?: 'response', reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/ld+json', context?: HttpContext, transferCache?: boolean}): Observable>; + public playersIdPatch(id: string, player: Player, observe?: 'events', reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/ld+json', context?: HttpContext, transferCache?: boolean}): Observable>; + public playersIdPatch(id: string, player: Player, observe: any = 'body', reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/ld+json', context?: HttpContext, transferCache?: boolean}): Observable { + if (id === null || id === undefined) { + throw new Error('Required parameter id was null or undefined when calling playersIdPatch.'); + } + if (player === null || player === undefined) { + throw new Error('Required parameter player was null or undefined when calling playersIdPatch.'); + } + + let localVarHeaders = this.defaultHeaders; + + let localVarCredential: string | undefined; + // authentication (JWT) required + localVarCredential = this.configuration.lookupCredential('JWT'); + if (localVarCredential) { + localVarHeaders = localVarHeaders.set('Authorization', 'Bearer ' + localVarCredential); + } + + let localVarHttpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept; + if (localVarHttpHeaderAcceptSelected === undefined) { + // to determine the Accept header + const httpHeaderAccepts: string[] = [ + 'application/ld+json' + ]; + localVarHttpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts); + } + if (localVarHttpHeaderAcceptSelected !== undefined) { + localVarHeaders = localVarHeaders.set('Accept', localVarHttpHeaderAcceptSelected); + } + + let localVarHttpContext: HttpContext | undefined = options && options.context; + if (localVarHttpContext === undefined) { + localVarHttpContext = new HttpContext(); + } + + let localVarTransferCache: boolean | undefined = options && options.transferCache; + if (localVarTransferCache === undefined) { + localVarTransferCache = true; + } + + + // to determine the Content-Type header + const consumes: string[] = [ + 'application/merge-patch+json' + ]; + const httpContentTypeSelected: string | undefined = this.configuration.selectHeaderContentType(consumes); + if (httpContentTypeSelected !== undefined) { + localVarHeaders = localVarHeaders.set('Content-Type', httpContentTypeSelected); + } + + let responseType_: 'text' | 'json' | 'blob' = 'json'; + if (localVarHttpHeaderAcceptSelected) { + if (localVarHttpHeaderAcceptSelected.startsWith('text')) { + responseType_ = 'text'; + } else if (this.configuration.isJsonMime(localVarHttpHeaderAcceptSelected)) { + responseType_ = 'json'; + } else { + responseType_ = 'blob'; + } + } + + let localVarPath = `/api/players/${this.configuration.encodeParam({name: "id", value: id, in: "path", style: "simple", explode: false, dataType: "string", dataFormat: undefined})}`; + return this.httpClient.request('patch', `${this.configuration.basePath}${localVarPath}`, + { + context: localVarHttpContext, + body: player, + responseType: responseType_, + withCredentials: this.configuration.withCredentials, + headers: localVarHeaders, + observe: observe, + transferCache: localVarTransferCache, + reportProgress: reportProgress + } + ); + } + + /** + * Creates a Player resource. + * Creates a Player resource. + * @param playerJsonld The new Player resource + * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body. + * @param reportProgress flag to report request and response progress. + */ + public playersPost(playerJsonld: PlayerJsonld, observe?: 'body', reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/ld+json', context?: HttpContext, transferCache?: boolean}): Observable; + public playersPost(playerJsonld: PlayerJsonld, observe?: 'response', reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/ld+json', context?: HttpContext, transferCache?: boolean}): Observable>; + public playersPost(playerJsonld: PlayerJsonld, observe?: 'events', reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/ld+json', context?: HttpContext, transferCache?: boolean}): Observable>; + public playersPost(playerJsonld: PlayerJsonld, observe: any = 'body', reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/ld+json', context?: HttpContext, transferCache?: boolean}): Observable { + if (playerJsonld === null || playerJsonld === undefined) { + throw new Error('Required parameter playerJsonld was null or undefined when calling playersPost.'); + } + + let localVarHeaders = this.defaultHeaders; + + let localVarCredential: string | undefined; + // authentication (JWT) required + localVarCredential = this.configuration.lookupCredential('JWT'); + if (localVarCredential) { + localVarHeaders = localVarHeaders.set('Authorization', 'Bearer ' + localVarCredential); + } + + let localVarHttpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept; + if (localVarHttpHeaderAcceptSelected === undefined) { + // to determine the Accept header + const httpHeaderAccepts: string[] = [ + 'application/ld+json' + ]; + localVarHttpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts); + } + if (localVarHttpHeaderAcceptSelected !== undefined) { + localVarHeaders = localVarHeaders.set('Accept', localVarHttpHeaderAcceptSelected); + } + + let localVarHttpContext: HttpContext | undefined = options && options.context; + if (localVarHttpContext === undefined) { + localVarHttpContext = new HttpContext(); + } + + let localVarTransferCache: boolean | undefined = options && options.transferCache; + if (localVarTransferCache === undefined) { + localVarTransferCache = true; + } + + + // to determine the Content-Type header + const consumes: string[] = [ + 'application/ld+json' + ]; + const httpContentTypeSelected: string | undefined = this.configuration.selectHeaderContentType(consumes); + if (httpContentTypeSelected !== undefined) { + localVarHeaders = localVarHeaders.set('Content-Type', httpContentTypeSelected); + } + + let responseType_: 'text' | 'json' | 'blob' = 'json'; + if (localVarHttpHeaderAcceptSelected) { + if (localVarHttpHeaderAcceptSelected.startsWith('text')) { + responseType_ = 'text'; + } else if (this.configuration.isJsonMime(localVarHttpHeaderAcceptSelected)) { + responseType_ = 'json'; + } else { + responseType_ = 'blob'; + } + } + + let localVarPath = `/api/players`; + return this.httpClient.request('post', `${this.configuration.basePath}${localVarPath}`, + { + context: localVarHttpContext, + body: playerJsonld, + responseType: responseType_, + withCredentials: this.configuration.withCredentials, + headers: localVarHeaders, + observe: observe, + transferCache: localVarTransferCache, + reportProgress: reportProgress + } + ); + } + +} diff --git a/angular/src/app/core/api/v1/api/rarity.service.ts b/angular/src/app/core/api/v1/api/rarity.service.ts new file mode 100644 index 0000000..e1b1120 --- /dev/null +++ b/angular/src/app/core/api/v1/api/rarity.service.ts @@ -0,0 +1,424 @@ +/** + * Hello API Platform + * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) + * + * The version of the OpenAPI document: 1.0.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ +/* tslint:disable:no-unused-variable member-ordering */ + +import { Inject, Injectable, Optional } from '@angular/core'; +import { HttpClient, HttpHeaders, HttpParams, + HttpResponse, HttpEvent, HttpParameterCodec, HttpContext + } from '@angular/common/http'; +import { CustomHttpParameterCodec } from '../encoder'; +import { Observable } from 'rxjs'; + +// @ts-ignore +import { ApiRaritiesGetCollection200Response } from '../model/apiRaritiesGetCollection200Response'; +// @ts-ignore +import { Rarity } from '../model/rarity'; +// @ts-ignore +import { RarityJsonld } from '../model/rarityJsonld'; + +// @ts-ignore +import { BASE_PATH, COLLECTION_FORMATS } from '../variables'; +import { Configuration } from '../configuration'; + + + +@Injectable({ + providedIn: 'root' +}) +export class RarityService { + + protected basePath = 'http://localhost'; + public defaultHeaders = new HttpHeaders(); + public configuration = new Configuration(); + public encoder: HttpParameterCodec; + + constructor(protected httpClient: HttpClient, @Optional()@Inject(BASE_PATH) basePath: string|string[], @Optional() configuration: Configuration) { + if (configuration) { + this.configuration = configuration; + } + if (typeof this.configuration.basePath !== 'string') { + if (Array.isArray(basePath) && basePath.length > 0) { + basePath = basePath[0]; + } + + if (typeof basePath !== 'string') { + basePath = this.basePath; + } + this.configuration.basePath = basePath; + } + this.encoder = this.configuration.encoder || new CustomHttpParameterCodec(); + } + + + // @ts-ignore + private addToHttpParams(httpParams: HttpParams, value: any, key?: string): HttpParams { + if (typeof value === "object" && value instanceof Date === false) { + httpParams = this.addToHttpParamsRecursive(httpParams, value); + } else { + httpParams = this.addToHttpParamsRecursive(httpParams, value, key); + } + return httpParams; + } + + private addToHttpParamsRecursive(httpParams: HttpParams, value?: any, key?: string): HttpParams { + if (value == null) { + return httpParams; + } + + if (typeof value === "object") { + if (Array.isArray(value)) { + (value as any[]).forEach( elem => httpParams = this.addToHttpParamsRecursive(httpParams, elem, key)); + } else if (value instanceof Date) { + if (key != null) { + httpParams = httpParams.append(key, (value as Date).toISOString().substring(0, 10)); + } else { + throw Error("key may not be null if value is Date"); + } + } else { + Object.keys(value).forEach( k => httpParams = this.addToHttpParamsRecursive( + httpParams, value[k], key != null ? `${key}.${k}` : k)); + } + } else if (key != null) { + httpParams = httpParams.append(key, value); + } else { + throw Error("key may not be null if value is not object or array"); + } + return httpParams; + } + + /** + * Retrieves the collection of Rarity resources. + * Retrieves the collection of Rarity resources. + * @param page The collection page number + * @param itemsPerPage The number of items per page + * @param customJsonOrder + * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body. + * @param reportProgress flag to report request and response progress. + */ + public raritiesGetCollection(page?: number, itemsPerPage?: number, customJsonOrder?: string, observe?: 'body', reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/ld+json', context?: HttpContext, transferCache?: boolean}): Observable; + public raritiesGetCollection(page?: number, itemsPerPage?: number, customJsonOrder?: string, observe?: 'response', reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/ld+json', context?: HttpContext, transferCache?: boolean}): Observable>; + public raritiesGetCollection(page?: number, itemsPerPage?: number, customJsonOrder?: string, observe?: 'events', reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/ld+json', context?: HttpContext, transferCache?: boolean}): Observable>; + public raritiesGetCollection(page?: number, itemsPerPage?: number, customJsonOrder?: string, observe: any = 'body', reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/ld+json', context?: HttpContext, transferCache?: boolean}): Observable { + + let localVarQueryParameters = new HttpParams({encoder: this.encoder}); + if (page !== undefined && page !== null) { + localVarQueryParameters = this.addToHttpParams(localVarQueryParameters, + page, 'page'); + } + if (itemsPerPage !== undefined && itemsPerPage !== null) { + localVarQueryParameters = this.addToHttpParams(localVarQueryParameters, + itemsPerPage, 'itemsPerPage'); + } + if (customJsonOrder !== undefined && customJsonOrder !== null) { + localVarQueryParameters = this.addToHttpParams(localVarQueryParameters, + customJsonOrder, 'custom_json_order'); + } + + let localVarHeaders = this.defaultHeaders; + + let localVarCredential: string | undefined; + // authentication (JWT) required + localVarCredential = this.configuration.lookupCredential('JWT'); + if (localVarCredential) { + localVarHeaders = localVarHeaders.set('Authorization', 'Bearer ' + localVarCredential); + } + + let localVarHttpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept; + if (localVarHttpHeaderAcceptSelected === undefined) { + // to determine the Accept header + const httpHeaderAccepts: string[] = [ + 'application/ld+json' + ]; + localVarHttpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts); + } + if (localVarHttpHeaderAcceptSelected !== undefined) { + localVarHeaders = localVarHeaders.set('Accept', localVarHttpHeaderAcceptSelected); + } + + let localVarHttpContext: HttpContext | undefined = options && options.context; + if (localVarHttpContext === undefined) { + localVarHttpContext = new HttpContext(); + } + + let localVarTransferCache: boolean | undefined = options && options.transferCache; + if (localVarTransferCache === undefined) { + localVarTransferCache = true; + } + + + let responseType_: 'text' | 'json' | 'blob' = 'json'; + if (localVarHttpHeaderAcceptSelected) { + if (localVarHttpHeaderAcceptSelected.startsWith('text')) { + responseType_ = 'text'; + } else if (this.configuration.isJsonMime(localVarHttpHeaderAcceptSelected)) { + responseType_ = 'json'; + } else { + responseType_ = 'blob'; + } + } + + let localVarPath = `/api/rarities`; + return this.httpClient.request('get', `${this.configuration.basePath}${localVarPath}`, + { + context: localVarHttpContext, + params: localVarQueryParameters, + responseType: responseType_, + withCredentials: this.configuration.withCredentials, + headers: localVarHeaders, + observe: observe, + transferCache: localVarTransferCache, + reportProgress: reportProgress + } + ); + } + + /** + * Retrieves a Rarity resource. + * Retrieves a Rarity resource. + * @param id Rarity identifier + * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body. + * @param reportProgress flag to report request and response progress. + */ + public raritiesIdGet(id: string, observe?: 'body', reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/ld+json', context?: HttpContext, transferCache?: boolean}): Observable; + public raritiesIdGet(id: string, observe?: 'response', reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/ld+json', context?: HttpContext, transferCache?: boolean}): Observable>; + public raritiesIdGet(id: string, observe?: 'events', reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/ld+json', context?: HttpContext, transferCache?: boolean}): Observable>; + public raritiesIdGet(id: string, observe: any = 'body', reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/ld+json', context?: HttpContext, transferCache?: boolean}): Observable { + if (id === null || id === undefined) { + throw new Error('Required parameter id was null or undefined when calling raritiesIdGet.'); + } + + let localVarHeaders = this.defaultHeaders; + + let localVarCredential: string | undefined; + // authentication (JWT) required + localVarCredential = this.configuration.lookupCredential('JWT'); + if (localVarCredential) { + localVarHeaders = localVarHeaders.set('Authorization', 'Bearer ' + localVarCredential); + } + + let localVarHttpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept; + if (localVarHttpHeaderAcceptSelected === undefined) { + // to determine the Accept header + const httpHeaderAccepts: string[] = [ + 'application/ld+json' + ]; + localVarHttpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts); + } + if (localVarHttpHeaderAcceptSelected !== undefined) { + localVarHeaders = localVarHeaders.set('Accept', localVarHttpHeaderAcceptSelected); + } + + let localVarHttpContext: HttpContext | undefined = options && options.context; + if (localVarHttpContext === undefined) { + localVarHttpContext = new HttpContext(); + } + + let localVarTransferCache: boolean | undefined = options && options.transferCache; + if (localVarTransferCache === undefined) { + localVarTransferCache = true; + } + + + let responseType_: 'text' | 'json' | 'blob' = 'json'; + if (localVarHttpHeaderAcceptSelected) { + if (localVarHttpHeaderAcceptSelected.startsWith('text')) { + responseType_ = 'text'; + } else if (this.configuration.isJsonMime(localVarHttpHeaderAcceptSelected)) { + responseType_ = 'json'; + } else { + responseType_ = 'blob'; + } + } + + let localVarPath = `/api/rarities/${this.configuration.encodeParam({name: "id", value: id, in: "path", style: "simple", explode: false, dataType: "string", dataFormat: undefined})}`; + return this.httpClient.request('get', `${this.configuration.basePath}${localVarPath}`, + { + context: localVarHttpContext, + responseType: responseType_, + withCredentials: this.configuration.withCredentials, + headers: localVarHeaders, + observe: observe, + transferCache: localVarTransferCache, + reportProgress: reportProgress + } + ); + } + + /** + * Updates the Rarity resource. + * Updates the Rarity resource. + * @param id Rarity identifier + * @param rarity The updated Rarity resource + * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body. + * @param reportProgress flag to report request and response progress. + */ + public raritiesIdPatch(id: string, rarity: Rarity, observe?: 'body', reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/ld+json', context?: HttpContext, transferCache?: boolean}): Observable; + public raritiesIdPatch(id: string, rarity: Rarity, observe?: 'response', reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/ld+json', context?: HttpContext, transferCache?: boolean}): Observable>; + public raritiesIdPatch(id: string, rarity: Rarity, observe?: 'events', reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/ld+json', context?: HttpContext, transferCache?: boolean}): Observable>; + public raritiesIdPatch(id: string, rarity: Rarity, observe: any = 'body', reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/ld+json', context?: HttpContext, transferCache?: boolean}): Observable { + if (id === null || id === undefined) { + throw new Error('Required parameter id was null or undefined when calling raritiesIdPatch.'); + } + if (rarity === null || rarity === undefined) { + throw new Error('Required parameter rarity was null or undefined when calling raritiesIdPatch.'); + } + + let localVarHeaders = this.defaultHeaders; + + let localVarCredential: string | undefined; + // authentication (JWT) required + localVarCredential = this.configuration.lookupCredential('JWT'); + if (localVarCredential) { + localVarHeaders = localVarHeaders.set('Authorization', 'Bearer ' + localVarCredential); + } + + let localVarHttpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept; + if (localVarHttpHeaderAcceptSelected === undefined) { + // to determine the Accept header + const httpHeaderAccepts: string[] = [ + 'application/ld+json' + ]; + localVarHttpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts); + } + if (localVarHttpHeaderAcceptSelected !== undefined) { + localVarHeaders = localVarHeaders.set('Accept', localVarHttpHeaderAcceptSelected); + } + + let localVarHttpContext: HttpContext | undefined = options && options.context; + if (localVarHttpContext === undefined) { + localVarHttpContext = new HttpContext(); + } + + let localVarTransferCache: boolean | undefined = options && options.transferCache; + if (localVarTransferCache === undefined) { + localVarTransferCache = true; + } + + + // to determine the Content-Type header + const consumes: string[] = [ + 'application/merge-patch+json' + ]; + const httpContentTypeSelected: string | undefined = this.configuration.selectHeaderContentType(consumes); + if (httpContentTypeSelected !== undefined) { + localVarHeaders = localVarHeaders.set('Content-Type', httpContentTypeSelected); + } + + let responseType_: 'text' | 'json' | 'blob' = 'json'; + if (localVarHttpHeaderAcceptSelected) { + if (localVarHttpHeaderAcceptSelected.startsWith('text')) { + responseType_ = 'text'; + } else if (this.configuration.isJsonMime(localVarHttpHeaderAcceptSelected)) { + responseType_ = 'json'; + } else { + responseType_ = 'blob'; + } + } + + let localVarPath = `/api/rarities/${this.configuration.encodeParam({name: "id", value: id, in: "path", style: "simple", explode: false, dataType: "string", dataFormat: undefined})}`; + return this.httpClient.request('patch', `${this.configuration.basePath}${localVarPath}`, + { + context: localVarHttpContext, + body: rarity, + responseType: responseType_, + withCredentials: this.configuration.withCredentials, + headers: localVarHeaders, + observe: observe, + transferCache: localVarTransferCache, + reportProgress: reportProgress + } + ); + } + + /** + * Creates a Rarity resource. + * Creates a Rarity resource. + * @param rarityJsonld The new Rarity resource + * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body. + * @param reportProgress flag to report request and response progress. + */ + public raritiesPost(rarityJsonld: RarityJsonld, observe?: 'body', reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/ld+json', context?: HttpContext, transferCache?: boolean}): Observable; + public raritiesPost(rarityJsonld: RarityJsonld, observe?: 'response', reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/ld+json', context?: HttpContext, transferCache?: boolean}): Observable>; + public raritiesPost(rarityJsonld: RarityJsonld, observe?: 'events', reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/ld+json', context?: HttpContext, transferCache?: boolean}): Observable>; + public raritiesPost(rarityJsonld: RarityJsonld, observe: any = 'body', reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/ld+json', context?: HttpContext, transferCache?: boolean}): Observable { + if (rarityJsonld === null || rarityJsonld === undefined) { + throw new Error('Required parameter rarityJsonld was null or undefined when calling raritiesPost.'); + } + + let localVarHeaders = this.defaultHeaders; + + let localVarCredential: string | undefined; + // authentication (JWT) required + localVarCredential = this.configuration.lookupCredential('JWT'); + if (localVarCredential) { + localVarHeaders = localVarHeaders.set('Authorization', 'Bearer ' + localVarCredential); + } + + let localVarHttpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept; + if (localVarHttpHeaderAcceptSelected === undefined) { + // to determine the Accept header + const httpHeaderAccepts: string[] = [ + 'application/ld+json' + ]; + localVarHttpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts); + } + if (localVarHttpHeaderAcceptSelected !== undefined) { + localVarHeaders = localVarHeaders.set('Accept', localVarHttpHeaderAcceptSelected); + } + + let localVarHttpContext: HttpContext | undefined = options && options.context; + if (localVarHttpContext === undefined) { + localVarHttpContext = new HttpContext(); + } + + let localVarTransferCache: boolean | undefined = options && options.transferCache; + if (localVarTransferCache === undefined) { + localVarTransferCache = true; + } + + + // to determine the Content-Type header + const consumes: string[] = [ + 'application/ld+json' + ]; + const httpContentTypeSelected: string | undefined = this.configuration.selectHeaderContentType(consumes); + if (httpContentTypeSelected !== undefined) { + localVarHeaders = localVarHeaders.set('Content-Type', httpContentTypeSelected); + } + + let responseType_: 'text' | 'json' | 'blob' = 'json'; + if (localVarHttpHeaderAcceptSelected) { + if (localVarHttpHeaderAcceptSelected.startsWith('text')) { + responseType_ = 'text'; + } else if (this.configuration.isJsonMime(localVarHttpHeaderAcceptSelected)) { + responseType_ = 'json'; + } else { + responseType_ = 'blob'; + } + } + + let localVarPath = `/api/rarities`; + return this.httpClient.request('post', `${this.configuration.basePath}${localVarPath}`, + { + context: localVarHttpContext, + body: rarityJsonld, + responseType: responseType_, + withCredentials: this.configuration.withCredentials, + headers: localVarHeaders, + observe: observe, + transferCache: localVarTransferCache, + reportProgress: reportProgress + } + ); + } + +} diff --git a/angular/src/app/core/api/v1/api/systemStat.service.ts b/angular/src/app/core/api/v1/api/systemStat.service.ts new file mode 100644 index 0000000..ef73a43 --- /dev/null +++ b/angular/src/app/core/api/v1/api/systemStat.service.ts @@ -0,0 +1,162 @@ +/** + * Hello API Platform + * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) + * + * The version of the OpenAPI document: 1.0.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ +/* tslint:disable:no-unused-variable member-ordering */ + +import { Inject, Injectable, Optional } from '@angular/core'; +import { HttpClient, HttpHeaders, HttpParams, + HttpResponse, HttpEvent, HttpParameterCodec, HttpContext + } from '@angular/common/http'; +import { CustomHttpParameterCodec } from '../encoder'; +import { Observable } from 'rxjs'; + +// @ts-ignore +import { SystemStatJsonld } from '../model/systemStatJsonld'; + +// @ts-ignore +import { BASE_PATH, COLLECTION_FORMATS } from '../variables'; +import { Configuration } from '../configuration'; + + + +@Injectable({ + providedIn: 'root' +}) +export class SystemStatService { + + protected basePath = 'http://localhost'; + public defaultHeaders = new HttpHeaders(); + public configuration = new Configuration(); + public encoder: HttpParameterCodec; + + constructor(protected httpClient: HttpClient, @Optional()@Inject(BASE_PATH) basePath: string|string[], @Optional() configuration: Configuration) { + if (configuration) { + this.configuration = configuration; + } + if (typeof this.configuration.basePath !== 'string') { + if (Array.isArray(basePath) && basePath.length > 0) { + basePath = basePath[0]; + } + + if (typeof basePath !== 'string') { + basePath = this.basePath; + } + this.configuration.basePath = basePath; + } + this.encoder = this.configuration.encoder || new CustomHttpParameterCodec(); + } + + + // @ts-ignore + private addToHttpParams(httpParams: HttpParams, value: any, key?: string): HttpParams { + if (typeof value === "object" && value instanceof Date === false) { + httpParams = this.addToHttpParamsRecursive(httpParams, value); + } else { + httpParams = this.addToHttpParamsRecursive(httpParams, value, key); + } + return httpParams; + } + + private addToHttpParamsRecursive(httpParams: HttpParams, value?: any, key?: string): HttpParams { + if (value == null) { + return httpParams; + } + + if (typeof value === "object") { + if (Array.isArray(value)) { + (value as any[]).forEach( elem => httpParams = this.addToHttpParamsRecursive(httpParams, elem, key)); + } else if (value instanceof Date) { + if (key != null) { + httpParams = httpParams.append(key, (value as Date).toISOString().substring(0, 10)); + } else { + throw Error("key may not be null if value is Date"); + } + } else { + Object.keys(value).forEach( k => httpParams = this.addToHttpParamsRecursive( + httpParams, value[k], key != null ? `${key}.${k}` : k)); + } + } else if (key != null) { + httpParams = httpParams.append(key, value); + } else { + throw Error("key may not be null if value is not object or array"); + } + return httpParams; + } + + /** + * Retrieves a SystemStat resource. + * Retrieves a SystemStat resource. + * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body. + * @param reportProgress flag to report request and response progress. + */ + public systemStatsGet(observe?: 'body', reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/ld+json', context?: HttpContext, transferCache?: boolean}): Observable; + public systemStatsGet(observe?: 'response', reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/ld+json', context?: HttpContext, transferCache?: boolean}): Observable>; + public systemStatsGet(observe?: 'events', reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/ld+json', context?: HttpContext, transferCache?: boolean}): Observable>; + public systemStatsGet(observe: any = 'body', reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/ld+json', context?: HttpContext, transferCache?: boolean}): Observable { + + let localVarHeaders = this.defaultHeaders; + + let localVarCredential: string | undefined; + // authentication (JWT) required + localVarCredential = this.configuration.lookupCredential('JWT'); + if (localVarCredential) { + localVarHeaders = localVarHeaders.set('Authorization', 'Bearer ' + localVarCredential); + } + + let localVarHttpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept; + if (localVarHttpHeaderAcceptSelected === undefined) { + // to determine the Accept header + const httpHeaderAccepts: string[] = [ + 'application/ld+json' + ]; + localVarHttpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts); + } + if (localVarHttpHeaderAcceptSelected !== undefined) { + localVarHeaders = localVarHeaders.set('Accept', localVarHttpHeaderAcceptSelected); + } + + let localVarHttpContext: HttpContext | undefined = options && options.context; + if (localVarHttpContext === undefined) { + localVarHttpContext = new HttpContext(); + } + + let localVarTransferCache: boolean | undefined = options && options.transferCache; + if (localVarTransferCache === undefined) { + localVarTransferCache = true; + } + + + let responseType_: 'text' | 'json' | 'blob' = 'json'; + if (localVarHttpHeaderAcceptSelected) { + if (localVarHttpHeaderAcceptSelected.startsWith('text')) { + responseType_ = 'text'; + } else if (this.configuration.isJsonMime(localVarHttpHeaderAcceptSelected)) { + responseType_ = 'json'; + } else { + responseType_ = 'blob'; + } + } + + let localVarPath = `/api/system_stats`; + return this.httpClient.request('get', `${this.configuration.basePath}${localVarPath}`, + { + context: localVarHttpContext, + responseType: responseType_, + withCredentials: this.configuration.withCredentials, + headers: localVarHeaders, + observe: observe, + transferCache: localVarTransferCache, + reportProgress: reportProgress + } + ); + } + +} diff --git a/angular/src/app/core/api/v1/api/user.service.ts b/angular/src/app/core/api/v1/api/user.service.ts new file mode 100644 index 0000000..15751b8 --- /dev/null +++ b/angular/src/app/core/api/v1/api/user.service.ts @@ -0,0 +1,351 @@ +/** + * Hello API Platform + * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) + * + * The version of the OpenAPI document: 1.0.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ +/* tslint:disable:no-unused-variable member-ordering */ + +import { Inject, Injectable, Optional } from '@angular/core'; +import { HttpClient, HttpHeaders, HttpParams, + HttpResponse, HttpEvent, HttpParameterCodec, HttpContext + } from '@angular/common/http'; +import { CustomHttpParameterCodec } from '../encoder'; +import { Observable } from 'rxjs'; + +// @ts-ignore +import { ApiUsersGetCollection200Response } from '../model/apiUsersGetCollection200Response'; +// @ts-ignore +import { UserJsonld } from '../model/userJsonld'; + +// @ts-ignore +import { BASE_PATH, COLLECTION_FORMATS } from '../variables'; +import { Configuration } from '../configuration'; + + + +@Injectable({ + providedIn: 'root' +}) +export class UserService { + + protected basePath = 'http://localhost'; + public defaultHeaders = new HttpHeaders(); + public configuration = new Configuration(); + public encoder: HttpParameterCodec; + + constructor(protected httpClient: HttpClient, @Optional()@Inject(BASE_PATH) basePath: string|string[], @Optional() configuration: Configuration) { + if (configuration) { + this.configuration = configuration; + } + if (typeof this.configuration.basePath !== 'string') { + if (Array.isArray(basePath) && basePath.length > 0) { + basePath = basePath[0]; + } + + if (typeof basePath !== 'string') { + basePath = this.basePath; + } + this.configuration.basePath = basePath; + } + this.encoder = this.configuration.encoder || new CustomHttpParameterCodec(); + } + + + // @ts-ignore + private addToHttpParams(httpParams: HttpParams, value: any, key?: string): HttpParams { + if (typeof value === "object" && value instanceof Date === false) { + httpParams = this.addToHttpParamsRecursive(httpParams, value); + } else { + httpParams = this.addToHttpParamsRecursive(httpParams, value, key); + } + return httpParams; + } + + private addToHttpParamsRecursive(httpParams: HttpParams, value?: any, key?: string): HttpParams { + if (value == null) { + return httpParams; + } + + if (typeof value === "object") { + if (Array.isArray(value)) { + (value as any[]).forEach( elem => httpParams = this.addToHttpParamsRecursive(httpParams, elem, key)); + } else if (value instanceof Date) { + if (key != null) { + httpParams = httpParams.append(key, (value as Date).toISOString().substring(0, 10)); + } else { + throw Error("key may not be null if value is Date"); + } + } else { + Object.keys(value).forEach( k => httpParams = this.addToHttpParamsRecursive( + httpParams, value[k], key != null ? `${key}.${k}` : k)); + } + } else if (key != null) { + httpParams = httpParams.append(key, value); + } else { + throw Error("key may not be null if value is not object or array"); + } + return httpParams; + } + + /** + * Retrieves the collection of User resources. + * Retrieves the collection of User resources. + * @param page The collection page number + * @param itemsPerPage The number of items per page + * @param firstName + * @param lastName + * @param userNameSearch + * @param customJsonOrder + * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body. + * @param reportProgress flag to report request and response progress. + */ + public usersGetCollection(page?: number, itemsPerPage?: number, firstName?: string, lastName?: string, userNameSearch?: string, customJsonOrder?: string, observe?: 'body', reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/ld+json', context?: HttpContext, transferCache?: boolean}): Observable; + public usersGetCollection(page?: number, itemsPerPage?: number, firstName?: string, lastName?: string, userNameSearch?: string, customJsonOrder?: string, observe?: 'response', reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/ld+json', context?: HttpContext, transferCache?: boolean}): Observable>; + public usersGetCollection(page?: number, itemsPerPage?: number, firstName?: string, lastName?: string, userNameSearch?: string, customJsonOrder?: string, observe?: 'events', reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/ld+json', context?: HttpContext, transferCache?: boolean}): Observable>; + public usersGetCollection(page?: number, itemsPerPage?: number, firstName?: string, lastName?: string, userNameSearch?: string, customJsonOrder?: string, observe: any = 'body', reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/ld+json', context?: HttpContext, transferCache?: boolean}): Observable { + + let localVarQueryParameters = new HttpParams({encoder: this.encoder}); + if (page !== undefined && page !== null) { + localVarQueryParameters = this.addToHttpParams(localVarQueryParameters, + page, 'page'); + } + if (itemsPerPage !== undefined && itemsPerPage !== null) { + localVarQueryParameters = this.addToHttpParams(localVarQueryParameters, + itemsPerPage, 'itemsPerPage'); + } + if (firstName !== undefined && firstName !== null) { + localVarQueryParameters = this.addToHttpParams(localVarQueryParameters, + firstName, 'firstName'); + } + if (lastName !== undefined && lastName !== null) { + localVarQueryParameters = this.addToHttpParams(localVarQueryParameters, + lastName, 'lastName'); + } + if (userNameSearch !== undefined && userNameSearch !== null) { + localVarQueryParameters = this.addToHttpParams(localVarQueryParameters, + userNameSearch, 'userNameSearch'); + } + if (customJsonOrder !== undefined && customJsonOrder !== null) { + localVarQueryParameters = this.addToHttpParams(localVarQueryParameters, + customJsonOrder, 'custom_json_order'); + } + + let localVarHeaders = this.defaultHeaders; + + let localVarCredential: string | undefined; + // authentication (JWT) required + localVarCredential = this.configuration.lookupCredential('JWT'); + if (localVarCredential) { + localVarHeaders = localVarHeaders.set('Authorization', 'Bearer ' + localVarCredential); + } + + let localVarHttpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept; + if (localVarHttpHeaderAcceptSelected === undefined) { + // to determine the Accept header + const httpHeaderAccepts: string[] = [ + 'application/ld+json' + ]; + localVarHttpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts); + } + if (localVarHttpHeaderAcceptSelected !== undefined) { + localVarHeaders = localVarHeaders.set('Accept', localVarHttpHeaderAcceptSelected); + } + + let localVarHttpContext: HttpContext | undefined = options && options.context; + if (localVarHttpContext === undefined) { + localVarHttpContext = new HttpContext(); + } + + let localVarTransferCache: boolean | undefined = options && options.transferCache; + if (localVarTransferCache === undefined) { + localVarTransferCache = true; + } + + + let responseType_: 'text' | 'json' | 'blob' = 'json'; + if (localVarHttpHeaderAcceptSelected) { + if (localVarHttpHeaderAcceptSelected.startsWith('text')) { + responseType_ = 'text'; + } else if (this.configuration.isJsonMime(localVarHttpHeaderAcceptSelected)) { + responseType_ = 'json'; + } else { + responseType_ = 'blob'; + } + } + + let localVarPath = `/api/users`; + return this.httpClient.request('get', `${this.configuration.basePath}${localVarPath}`, + { + context: localVarHttpContext, + params: localVarQueryParameters, + responseType: responseType_, + withCredentials: this.configuration.withCredentials, + headers: localVarHeaders, + observe: observe, + transferCache: localVarTransferCache, + reportProgress: reportProgress + } + ); + } + + /** + * Retrieves a User resource. + * Retrieves a User resource. + * @param id User identifier + * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body. + * @param reportProgress flag to report request and response progress. + */ + public usersIdGet(id: string, observe?: 'body', reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/ld+json', context?: HttpContext, transferCache?: boolean}): Observable; + public usersIdGet(id: string, observe?: 'response', reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/ld+json', context?: HttpContext, transferCache?: boolean}): Observable>; + public usersIdGet(id: string, observe?: 'events', reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/ld+json', context?: HttpContext, transferCache?: boolean}): Observable>; + public usersIdGet(id: string, observe: any = 'body', reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/ld+json', context?: HttpContext, transferCache?: boolean}): Observable { + if (id === null || id === undefined) { + throw new Error('Required parameter id was null or undefined when calling usersIdGet.'); + } + + let localVarHeaders = this.defaultHeaders; + + let localVarCredential: string | undefined; + // authentication (JWT) required + localVarCredential = this.configuration.lookupCredential('JWT'); + if (localVarCredential) { + localVarHeaders = localVarHeaders.set('Authorization', 'Bearer ' + localVarCredential); + } + + let localVarHttpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept; + if (localVarHttpHeaderAcceptSelected === undefined) { + // to determine the Accept header + const httpHeaderAccepts: string[] = [ + 'application/ld+json' + ]; + localVarHttpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts); + } + if (localVarHttpHeaderAcceptSelected !== undefined) { + localVarHeaders = localVarHeaders.set('Accept', localVarHttpHeaderAcceptSelected); + } + + let localVarHttpContext: HttpContext | undefined = options && options.context; + if (localVarHttpContext === undefined) { + localVarHttpContext = new HttpContext(); + } + + let localVarTransferCache: boolean | undefined = options && options.transferCache; + if (localVarTransferCache === undefined) { + localVarTransferCache = true; + } + + + let responseType_: 'text' | 'json' | 'blob' = 'json'; + if (localVarHttpHeaderAcceptSelected) { + if (localVarHttpHeaderAcceptSelected.startsWith('text')) { + responseType_ = 'text'; + } else if (this.configuration.isJsonMime(localVarHttpHeaderAcceptSelected)) { + responseType_ = 'json'; + } else { + responseType_ = 'blob'; + } + } + + let localVarPath = `/api/users/${this.configuration.encodeParam({name: "id", value: id, in: "path", style: "simple", explode: false, dataType: "string", dataFormat: undefined})}`; + return this.httpClient.request('get', `${this.configuration.basePath}${localVarPath}`, + { + context: localVarHttpContext, + responseType: responseType_, + withCredentials: this.configuration.withCredentials, + headers: localVarHeaders, + observe: observe, + transferCache: localVarTransferCache, + reportProgress: reportProgress + } + ); + } + + /** + * Creates a User resource. + * Creates a User resource. + * @param userJsonld The new User resource + * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body. + * @param reportProgress flag to report request and response progress. + */ + public usersPost(userJsonld: UserJsonld, observe?: 'body', reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/ld+json', context?: HttpContext, transferCache?: boolean}): Observable; + public usersPost(userJsonld: UserJsonld, observe?: 'response', reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/ld+json', context?: HttpContext, transferCache?: boolean}): Observable>; + public usersPost(userJsonld: UserJsonld, observe?: 'events', reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/ld+json', context?: HttpContext, transferCache?: boolean}): Observable>; + public usersPost(userJsonld: UserJsonld, observe: any = 'body', reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/ld+json', context?: HttpContext, transferCache?: boolean}): Observable { + if (userJsonld === null || userJsonld === undefined) { + throw new Error('Required parameter userJsonld was null or undefined when calling usersPost.'); + } + + let localVarHeaders = this.defaultHeaders; + + let localVarCredential: string | undefined; + // authentication (JWT) required + localVarCredential = this.configuration.lookupCredential('JWT'); + if (localVarCredential) { + localVarHeaders = localVarHeaders.set('Authorization', 'Bearer ' + localVarCredential); + } + + let localVarHttpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept; + if (localVarHttpHeaderAcceptSelected === undefined) { + // to determine the Accept header + const httpHeaderAccepts: string[] = [ + 'application/ld+json' + ]; + localVarHttpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts); + } + if (localVarHttpHeaderAcceptSelected !== undefined) { + localVarHeaders = localVarHeaders.set('Accept', localVarHttpHeaderAcceptSelected); + } + + let localVarHttpContext: HttpContext | undefined = options && options.context; + if (localVarHttpContext === undefined) { + localVarHttpContext = new HttpContext(); + } + + let localVarTransferCache: boolean | undefined = options && options.transferCache; + if (localVarTransferCache === undefined) { + localVarTransferCache = true; + } + + + // to determine the Content-Type header + const consumes: string[] = [ + 'application/ld+json' + ]; + const httpContentTypeSelected: string | undefined = this.configuration.selectHeaderContentType(consumes); + if (httpContentTypeSelected !== undefined) { + localVarHeaders = localVarHeaders.set('Content-Type', httpContentTypeSelected); + } + + let responseType_: 'text' | 'json' | 'blob' = 'json'; + if (localVarHttpHeaderAcceptSelected) { + if (localVarHttpHeaderAcceptSelected.startsWith('text')) { + responseType_ = 'text'; + } else if (this.configuration.isJsonMime(localVarHttpHeaderAcceptSelected)) { + responseType_ = 'json'; + } else { + responseType_ = 'blob'; + } + } + + let localVarPath = `/api/users`; + return this.httpClient.request('post', `${this.configuration.basePath}${localVarPath}`, + { + context: localVarHttpContext, + body: userJsonld, + responseType: responseType_, + withCredentials: this.configuration.withCredentials, + headers: localVarHeaders, + observe: observe, + transferCache: localVarTransferCache, + reportProgress: reportProgress + } + ); + } + +} diff --git a/angular/src/app/core/api/v1/configuration.ts b/angular/src/app/core/api/v1/configuration.ts new file mode 100644 index 0000000..7012fcc --- /dev/null +++ b/angular/src/app/core/api/v1/configuration.ts @@ -0,0 +1,175 @@ +import { HttpParameterCodec } from '@angular/common/http'; +import { Param } from './param'; + +export interface ConfigurationParameters { + /** + * @deprecated Since 5.0. Use credentials instead + */ + apiKeys?: {[ key: string ]: string}; + username?: string; + password?: string; + /** + * @deprecated Since 5.0. Use credentials instead + */ + accessToken?: string | (() => string); + basePath?: string; + withCredentials?: boolean; + /** + * Takes care of encoding query- and form-parameters. + */ + encoder?: HttpParameterCodec; + /** + * Override the default method for encoding path parameters in various + * styles. + *

+ * See {@link README.md} for more details + *

+ */ + encodeParam?: (param: Param) => string; + /** + * The keys are the names in the securitySchemes section of the OpenAPI + * document. They should map to the value used for authentication + * minus any standard prefixes such as 'Basic' or 'Bearer'. + */ + credentials?: {[ key: string ]: string | (() => string | undefined)}; +} + +export class Configuration { + /** + * @deprecated Since 5.0. Use credentials instead + */ + apiKeys?: {[ key: string ]: string}; + username?: string; + password?: string; + /** + * @deprecated Since 5.0. Use credentials instead + */ + accessToken?: string | (() => string); + basePath?: string; + withCredentials?: boolean; + /** + * Takes care of encoding query- and form-parameters. + */ + encoder?: HttpParameterCodec; + /** + * Encoding of various path parameter + * styles. + *

+ * See {@link README.md} for more details + *

+ */ + encodeParam: (param: Param) => string; + /** + * The keys are the names in the securitySchemes section of the OpenAPI + * document. They should map to the value used for authentication + * minus any standard prefixes such as 'Basic' or 'Bearer'. + */ + credentials: {[ key: string ]: string | (() => string | undefined)}; + + constructor(configurationParameters: ConfigurationParameters = {}) { + this.apiKeys = configurationParameters.apiKeys; + this.username = configurationParameters.username; + this.password = configurationParameters.password; + this.accessToken = configurationParameters.accessToken; + this.basePath = configurationParameters.basePath; + this.withCredentials = configurationParameters.withCredentials; + this.encoder = configurationParameters.encoder; + if (configurationParameters.encodeParam) { + this.encodeParam = configurationParameters.encodeParam; + } + else { + this.encodeParam = param => this.defaultEncodeParam(param); + } + if (configurationParameters.credentials) { + this.credentials = configurationParameters.credentials; + } + else { + this.credentials = {}; + } + + // init default JWT credential + if (!this.credentials['JWT']) { + this.credentials['JWT'] = () => { + return typeof this.accessToken === 'function' + ? this.accessToken() + : this.accessToken; + }; + } + } + + /** + * Select the correct content-type to use for a request. + * Uses {@link Configuration#isJsonMime} to determine the correct content-type. + * If no content type is found return the first found type if the contentTypes is not empty + * @param contentTypes - the array of content types that are available for selection + * @returns the selected content-type or undefined if no selection could be made. + */ + public selectHeaderContentType (contentTypes: string[]): string | undefined { + if (contentTypes.length === 0) { + return undefined; + } + + const type = contentTypes.find((x: string) => this.isJsonMime(x)); + if (type === undefined) { + return contentTypes[0]; + } + return type; + } + + /** + * Select the correct accept content-type to use for a request. + * Uses {@link Configuration#isJsonMime} to determine the correct accept content-type. + * If no content type is found return the first found type if the contentTypes is not empty + * @param accepts - the array of content types that are available for selection. + * @returns the selected content-type or undefined if no selection could be made. + */ + public selectHeaderAccept(accepts: string[]): string | undefined { + if (accepts.length === 0) { + return undefined; + } + + const type = accepts.find((x: string) => this.isJsonMime(x)); + if (type === undefined) { + return accepts[0]; + } + return type; + } + + /** + * Check if the given MIME is a JSON MIME. + * JSON MIME examples: + * application/json + * application/json; charset=UTF8 + * APPLICATION/JSON + * application/vnd.company+json + * @param mime - MIME (Multipurpose Internet Mail Extensions) + * @return True if the given MIME is JSON, false otherwise. + */ + public isJsonMime(mime: string): boolean { + const jsonMime: RegExp = new RegExp('^(application\/json|[^;/ \t]+\/[^;/ \t]+[+]json)[ \t]*(;.*)?$', 'i'); + return mime !== null && (jsonMime.test(mime) || mime.toLowerCase() === 'application/json-patch+json'); + } + + public lookupCredential(key: string): string | undefined { + const value = this.credentials[key]; + return typeof value === 'function' + ? value() + : value; + } + + private defaultEncodeParam(param: Param): string { + // This implementation exists as fallback for missing configuration + // and for backwards compatibility to older typescript-angular generator versions. + // It only works for the 'simple' parameter style. + // Date-handling only works for the 'date-time' format. + // All other styles and Date-formats are probably handled incorrectly. + // + // But: if that's all you need (i.e.: the most common use-case): no need for customization! + + const value = param.dataFormat === 'date-time' && param.value instanceof Date + ? (param.value as Date).toISOString() + : param.value; + + return encodeURIComponent(String(value)); + } +} diff --git a/angular/src/app/core/api/v1/encoder.ts b/angular/src/app/core/api/v1/encoder.ts new file mode 100644 index 0000000..138c4d5 --- /dev/null +++ b/angular/src/app/core/api/v1/encoder.ts @@ -0,0 +1,20 @@ +import { HttpParameterCodec } from '@angular/common/http'; + +/** + * Custom HttpParameterCodec + * Workaround for https://github.com/angular/angular/issues/18261 + */ +export class CustomHttpParameterCodec implements HttpParameterCodec { + encodeKey(k: string): string { + return encodeURIComponent(k); + } + encodeValue(v: string): string { + return encodeURIComponent(v); + } + decodeKey(k: string): string { + return decodeURIComponent(k); + } + decodeValue(v: string): string { + return decodeURIComponent(v); + } +} diff --git a/angular/src/app/core/api/v1/git_push.sh b/angular/src/app/core/api/v1/git_push.sh new file mode 100644 index 0000000..f53a75d --- /dev/null +++ b/angular/src/app/core/api/v1/git_push.sh @@ -0,0 +1,57 @@ +#!/bin/sh +# ref: https://help.github.com/articles/adding-an-existing-project-to-github-using-the-command-line/ +# +# Usage example: /bin/sh ./git_push.sh wing328 openapi-petstore-perl "minor update" "gitlab.com" + +git_user_id=$1 +git_repo_id=$2 +release_note=$3 +git_host=$4 + +if [ "$git_host" = "" ]; then + git_host="github.com" + echo "[INFO] No command line input provided. Set \$git_host to $git_host" +fi + +if [ "$git_user_id" = "" ]; then + git_user_id="GIT_USER_ID" + echo "[INFO] No command line input provided. Set \$git_user_id to $git_user_id" +fi + +if [ "$git_repo_id" = "" ]; then + git_repo_id="GIT_REPO_ID" + echo "[INFO] No command line input provided. Set \$git_repo_id to $git_repo_id" +fi + +if [ "$release_note" = "" ]; then + release_note="Minor update" + echo "[INFO] No command line input provided. Set \$release_note to $release_note" +fi + +# Initialize the local directory as a Git repository +git init + +# Adds the files in the local repository and stages them for commit. +git add . + +# Commits the tracked changes and prepares them to be pushed to a remote repository. +git commit -m "$release_note" + +# Sets the new remote +git_remote=$(git remote) +if [ "$git_remote" = "" ]; then # git remote not defined + + if [ "$GIT_TOKEN" = "" ]; then + echo "[INFO] \$GIT_TOKEN (environment variable) is not set. Using the git credential in your environment." + git remote add origin https://${git_host}/${git_user_id}/${git_repo_id}.git + else + git remote add origin https://${git_user_id}:"${GIT_TOKEN}"@${git_host}/${git_user_id}/${git_repo_id}.git + fi + +fi + +git pull origin master + +# Pushes (Forces) the changes in the local repository up to the remote repository +echo "Git pushing to https://${git_host}/${git_user_id}/${git_repo_id}.git" +git push origin master 2>&1 | grep -v 'To https' diff --git a/angular/src/app/core/api/v1/index.ts b/angular/src/app/core/api/v1/index.ts new file mode 100644 index 0000000..104dd3d --- /dev/null +++ b/angular/src/app/core/api/v1/index.ts @@ -0,0 +1,6 @@ +export * from './api/api'; +export * from './model/models'; +export * from './variables'; +export * from './configuration'; +export * from './api.module'; +export * from './param'; diff --git a/angular/src/app/core/api/v1/model/accountTradePileItem.ts b/angular/src/app/core/api/v1/model/accountTradePileItem.ts new file mode 100644 index 0000000..1a29463 --- /dev/null +++ b/angular/src/app/core/api/v1/model/accountTradePileItem.ts @@ -0,0 +1,47 @@ +/** + * Hello API Platform + * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) + * + * The version of the OpenAPI document: 1.0.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + + +/** + * + */ +export interface AccountTradePileItem { + readonly dbId?: number | null; + readonly account?: string; + readonly candidateItem?: string; + readonly eaId?: number; + readonly eaAssetId?: number; + readonly eaResourceId?: number; + readonly rareFlag?: number; + readonly itemType?: string; + readonly rating?: number; + readonly contracts?: number | null; + readonly playStyle?: number | null; + startingBid?: number; + binPrice?: number; + individualPrice?: boolean; + readonly minRange?: number; + readonly maxRange?: number; + readonly lastSalePrice?: number; + readonly tradeState?: string | null; + readonly eaTradeId?: number | null; + readonly rebuy?: boolean; + readonly leagueId?: number | null; + readonly teamId?: number | null; + readonly nationId?: number | null; + readonly listCnt?: number; + readonly openBidCnt?: number | null; + readonly snipedItem?: boolean; + readonly marketAverage?: number | null; + readonly creationDate?: string; +} + diff --git a/angular/src/app/core/api/v1/model/accountTradePileItemJsonld.ts b/angular/src/app/core/api/v1/model/accountTradePileItemJsonld.ts new file mode 100644 index 0000000..470fd7b --- /dev/null +++ b/angular/src/app/core/api/v1/model/accountTradePileItemJsonld.ts @@ -0,0 +1,53 @@ +/** + * Hello API Platform + * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) + * + * The version of the OpenAPI document: 1.0.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ +import { GameAccountJsonld } from './gameAccountJsonld'; +import { CandidateJsonld } from './candidateJsonld'; +import { AccountTradePileItemJsonldContext } from './accountTradePileItemJsonldContext'; + + +/** + * + */ +export interface AccountTradePileItemJsonld { + context?: AccountTradePileItemJsonldContext; + readonly id?: string; + readonly type?: string; + readonly dbId?: number | null; + readonly account?: GameAccountJsonld; + readonly candidateItem?: CandidateJsonld; + readonly eaId?: number; + readonly eaAssetId?: number; + readonly eaResourceId?: number; + readonly rareFlag?: number; + readonly itemType?: string; + readonly rating?: number; + readonly contracts?: number | null; + readonly playStyle?: number | null; + startingBid?: number; + binPrice?: number; + individualPrice?: boolean; + readonly minRange?: number; + readonly maxRange?: number; + readonly lastSalePrice?: number; + readonly tradeState?: string | null; + readonly eaTradeId?: number | null; + readonly rebuy?: boolean; + readonly leagueId?: number | null; + readonly teamId?: number | null; + readonly nationId?: number | null; + readonly listCnt?: number; + readonly openBidCnt?: number | null; + readonly snipedItem?: boolean; + readonly marketAverage?: number | null; + readonly creationDate?: string; +} + diff --git a/angular/src/app/core/api/v1/model/accountTradePileItemJsonldContext.ts b/angular/src/app/core/api/v1/model/accountTradePileItemJsonldContext.ts new file mode 100644 index 0000000..d464863 --- /dev/null +++ b/angular/src/app/core/api/v1/model/accountTradePileItemJsonldContext.ts @@ -0,0 +1,20 @@ +/** + * Hello API Platform + * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) + * + * The version of the OpenAPI document: 1.0.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ +import { AccountTradePileItemJsonldContextOneOf } from './accountTradePileItemJsonldContextOneOf'; + + +/** + * @type AccountTradePileItemJsonldContext + * @export + */ +export type AccountTradePileItemJsonldContext = AccountTradePileItemJsonldContextOneOf | string; + diff --git a/angular/src/app/core/api/v1/model/accountTradePileItemJsonldContextOneOf.ts b/angular/src/app/core/api/v1/model/accountTradePileItemJsonldContextOneOf.ts new file mode 100644 index 0000000..b06ffed --- /dev/null +++ b/angular/src/app/core/api/v1/model/accountTradePileItemJsonldContextOneOf.ts @@ -0,0 +1,28 @@ +/** + * Hello API Platform + * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) + * + * The version of the OpenAPI document: 1.0.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + + +export interface AccountTradePileItemJsonldContextOneOf { + [key: string]: any | any; + + + vocab: string; + hydra: AccountTradePileItemJsonldContextOneOf.HydraEnum; +} +export namespace AccountTradePileItemJsonldContextOneOf { + export type HydraEnum = 'http://www.w3.org/ns/hydra/core#'; + export const HydraEnum = { + HttpWwwW3OrgNsHydraCore: 'http://www.w3.org/ns/hydra/core#' as HydraEnum + }; +} + + diff --git a/angular/src/app/core/api/v1/model/apiAccountTradePileItemsGetCollection200Response.ts b/angular/src/app/core/api/v1/model/apiAccountTradePileItemsGetCollection200Response.ts new file mode 100644 index 0000000..5b93b23 --- /dev/null +++ b/angular/src/app/core/api/v1/model/apiAccountTradePileItemsGetCollection200Response.ts @@ -0,0 +1,23 @@ +/** + * Hello API Platform + * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) + * + * The version of the OpenAPI document: 1.0.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ +import { ApiAccountTradePileItemsGetCollection200ResponseHydraView } from './apiAccountTradePileItemsGetCollection200ResponseHydraView'; +import { AccountTradePileItemJsonld } from './accountTradePileItemJsonld'; +import { ApiAccountTradePileItemsGetCollection200ResponseHydraSearch } from './apiAccountTradePileItemsGetCollection200ResponseHydraSearch'; + + +export interface ApiAccountTradePileItemsGetCollection200Response { + 'hydra:member': Array; + 'hydra:totalItems'?: number; + 'hydra:view'?: ApiAccountTradePileItemsGetCollection200ResponseHydraView; + 'hydra:search'?: ApiAccountTradePileItemsGetCollection200ResponseHydraSearch; +} + diff --git a/angular/src/app/core/api/v1/model/apiAccountTradePileItemsGetCollection200ResponseHydraSearch.ts b/angular/src/app/core/api/v1/model/apiAccountTradePileItemsGetCollection200ResponseHydraSearch.ts new file mode 100644 index 0000000..dbbb608 --- /dev/null +++ b/angular/src/app/core/api/v1/model/apiAccountTradePileItemsGetCollection200ResponseHydraSearch.ts @@ -0,0 +1,21 @@ +/** + * Hello API Platform + * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) + * + * The version of the OpenAPI document: 1.0.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ +import { ApiAccountTradePileItemsGetCollection200ResponseHydraSearchHydraMappingInner } from './apiAccountTradePileItemsGetCollection200ResponseHydraSearchHydraMappingInner'; + + +export interface ApiAccountTradePileItemsGetCollection200ResponseHydraSearch { + type?: string; + 'hydra:template'?: string; + 'hydra:variableRepresentation'?: string; + 'hydra:mapping'?: Array; +} + diff --git a/angular/src/app/core/api/v1/model/apiAccountTradePileItemsGetCollection200ResponseHydraSearchHydraMappingInner.ts b/angular/src/app/core/api/v1/model/apiAccountTradePileItemsGetCollection200ResponseHydraSearchHydraMappingInner.ts new file mode 100644 index 0000000..69d83c7 --- /dev/null +++ b/angular/src/app/core/api/v1/model/apiAccountTradePileItemsGetCollection200ResponseHydraSearchHydraMappingInner.ts @@ -0,0 +1,20 @@ +/** + * Hello API Platform + * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) + * + * The version of the OpenAPI document: 1.0.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + + +export interface ApiAccountTradePileItemsGetCollection200ResponseHydraSearchHydraMappingInner { + type?: string; + variable?: string; + property?: string | null; + required?: boolean; +} + diff --git a/angular/src/app/core/api/v1/model/apiAccountTradePileItemsGetCollection200ResponseHydraView.ts b/angular/src/app/core/api/v1/model/apiAccountTradePileItemsGetCollection200ResponseHydraView.ts new file mode 100644 index 0000000..2d589cd --- /dev/null +++ b/angular/src/app/core/api/v1/model/apiAccountTradePileItemsGetCollection200ResponseHydraView.ts @@ -0,0 +1,22 @@ +/** + * Hello API Platform + * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) + * + * The version of the OpenAPI document: 1.0.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + + +export interface ApiAccountTradePileItemsGetCollection200ResponseHydraView { + id?: string; + type?: string; + 'hydra:first'?: string; + 'hydra:last'?: string; + 'hydra:previous'?: string; + 'hydra:next'?: string; +} + diff --git a/angular/src/app/core/api/v1/model/apiCandidateStatsGetCollection200Response.ts b/angular/src/app/core/api/v1/model/apiCandidateStatsGetCollection200Response.ts new file mode 100644 index 0000000..556deb1 --- /dev/null +++ b/angular/src/app/core/api/v1/model/apiCandidateStatsGetCollection200Response.ts @@ -0,0 +1,23 @@ +/** + * Hello API Platform + * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) + * + * The version of the OpenAPI document: 1.0.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ +import { ApiAccountTradePileItemsGetCollection200ResponseHydraView } from './apiAccountTradePileItemsGetCollection200ResponseHydraView'; +import { ApiAccountTradePileItemsGetCollection200ResponseHydraSearch } from './apiAccountTradePileItemsGetCollection200ResponseHydraSearch'; +import { CandidateStatJsonld } from './candidateStatJsonld'; + + +export interface ApiCandidateStatsGetCollection200Response { + 'hydra:member': Array; + 'hydra:totalItems'?: number; + 'hydra:view'?: ApiAccountTradePileItemsGetCollection200ResponseHydraView; + 'hydra:search'?: ApiAccountTradePileItemsGetCollection200ResponseHydraSearch; +} + diff --git a/angular/src/app/core/api/v1/model/apiCandidatesGetCollection200Response.ts b/angular/src/app/core/api/v1/model/apiCandidatesGetCollection200Response.ts new file mode 100644 index 0000000..30f8b3e --- /dev/null +++ b/angular/src/app/core/api/v1/model/apiCandidatesGetCollection200Response.ts @@ -0,0 +1,23 @@ +/** + * Hello API Platform + * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) + * + * The version of the OpenAPI document: 1.0.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ +import { ApiAccountTradePileItemsGetCollection200ResponseHydraView } from './apiAccountTradePileItemsGetCollection200ResponseHydraView'; +import { CandidateJsonld } from './candidateJsonld'; +import { ApiAccountTradePileItemsGetCollection200ResponseHydraSearch } from './apiAccountTradePileItemsGetCollection200ResponseHydraSearch'; + + +export interface ApiCandidatesGetCollection200Response { + 'hydra:member': Array; + 'hydra:totalItems'?: number; + 'hydra:view'?: ApiAccountTradePileItemsGetCollection200ResponseHydraView; + 'hydra:search'?: ApiAccountTradePileItemsGetCollection200ResponseHydraSearch; +} + diff --git a/angular/src/app/core/api/v1/model/apiGameAccountsGetCollection200Response.ts b/angular/src/app/core/api/v1/model/apiGameAccountsGetCollection200Response.ts new file mode 100644 index 0000000..a7212cd --- /dev/null +++ b/angular/src/app/core/api/v1/model/apiGameAccountsGetCollection200Response.ts @@ -0,0 +1,23 @@ +/** + * Hello API Platform + * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) + * + * The version of the OpenAPI document: 1.0.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ +import { GameAccountJsonld } from './gameAccountJsonld'; +import { ApiAccountTradePileItemsGetCollection200ResponseHydraView } from './apiAccountTradePileItemsGetCollection200ResponseHydraView'; +import { ApiAccountTradePileItemsGetCollection200ResponseHydraSearch } from './apiAccountTradePileItemsGetCollection200ResponseHydraSearch'; + + +export interface ApiGameAccountsGetCollection200Response { + 'hydra:member': Array; + 'hydra:totalItems'?: number; + 'hydra:view'?: ApiAccountTradePileItemsGetCollection200ResponseHydraView; + 'hydra:search'?: ApiAccountTradePileItemsGetCollection200ResponseHydraSearch; +} + diff --git a/angular/src/app/core/api/v1/model/apiLogAccountCreditsGetCollection200Response.ts b/angular/src/app/core/api/v1/model/apiLogAccountCreditsGetCollection200Response.ts new file mode 100644 index 0000000..2fa2a14 --- /dev/null +++ b/angular/src/app/core/api/v1/model/apiLogAccountCreditsGetCollection200Response.ts @@ -0,0 +1,23 @@ +/** + * Hello API Platform + * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) + * + * The version of the OpenAPI document: 1.0.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ +import { ApiAccountTradePileItemsGetCollection200ResponseHydraView } from './apiAccountTradePileItemsGetCollection200ResponseHydraView'; +import { ApiAccountTradePileItemsGetCollection200ResponseHydraSearch } from './apiAccountTradePileItemsGetCollection200ResponseHydraSearch'; +import { LogAccountCreditJsonld } from './logAccountCreditJsonld'; + + +export interface ApiLogAccountCreditsGetCollection200Response { + 'hydra:member': Array; + 'hydra:totalItems'?: number; + 'hydra:view'?: ApiAccountTradePileItemsGetCollection200ResponseHydraView; + 'hydra:search'?: ApiAccountTradePileItemsGetCollection200ResponseHydraSearch; +} + diff --git a/angular/src/app/core/api/v1/model/apiLogAccountProfitsGetCollection200Response.ts b/angular/src/app/core/api/v1/model/apiLogAccountProfitsGetCollection200Response.ts new file mode 100644 index 0000000..843925e --- /dev/null +++ b/angular/src/app/core/api/v1/model/apiLogAccountProfitsGetCollection200Response.ts @@ -0,0 +1,23 @@ +/** + * Hello API Platform + * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) + * + * The version of the OpenAPI document: 1.0.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ +import { ApiAccountTradePileItemsGetCollection200ResponseHydraView } from './apiAccountTradePileItemsGetCollection200ResponseHydraView'; +import { LogAccountProfitJsonld } from './logAccountProfitJsonld'; +import { ApiAccountTradePileItemsGetCollection200ResponseHydraSearch } from './apiAccountTradePileItemsGetCollection200ResponseHydraSearch'; + + +export interface ApiLogAccountProfitsGetCollection200Response { + 'hydra:member': Array; + 'hydra:totalItems'?: number; + 'hydra:view'?: ApiAccountTradePileItemsGetCollection200ResponseHydraView; + 'hydra:search'?: ApiAccountTradePileItemsGetCollection200ResponseHydraSearch; +} + diff --git a/angular/src/app/core/api/v1/model/apiLogAccountSoldItemsGetCollection200Response.ts b/angular/src/app/core/api/v1/model/apiLogAccountSoldItemsGetCollection200Response.ts new file mode 100644 index 0000000..8c97da0 --- /dev/null +++ b/angular/src/app/core/api/v1/model/apiLogAccountSoldItemsGetCollection200Response.ts @@ -0,0 +1,23 @@ +/** + * Hello API Platform + * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) + * + * The version of the OpenAPI document: 1.0.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ +import { ApiAccountTradePileItemsGetCollection200ResponseHydraView } from './apiAccountTradePileItemsGetCollection200ResponseHydraView'; +import { LogAccountSoldItemJsonld } from './logAccountSoldItemJsonld'; +import { ApiAccountTradePileItemsGetCollection200ResponseHydraSearch } from './apiAccountTradePileItemsGetCollection200ResponseHydraSearch'; + + +export interface ApiLogAccountSoldItemsGetCollection200Response { + 'hydra:member': Array; + 'hydra:totalItems'?: number; + 'hydra:view'?: ApiAccountTradePileItemsGetCollection200ResponseHydraView; + 'hydra:search'?: ApiAccountTradePileItemsGetCollection200ResponseHydraSearch; +} + diff --git a/angular/src/app/core/api/v1/model/apiLogGeneralsGetCollection200Response.ts b/angular/src/app/core/api/v1/model/apiLogGeneralsGetCollection200Response.ts new file mode 100644 index 0000000..e9fb5fb --- /dev/null +++ b/angular/src/app/core/api/v1/model/apiLogGeneralsGetCollection200Response.ts @@ -0,0 +1,23 @@ +/** + * Hello API Platform + * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) + * + * The version of the OpenAPI document: 1.0.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ +import { LogGeneralJsonld } from './logGeneralJsonld'; +import { ApiAccountTradePileItemsGetCollection200ResponseHydraView } from './apiAccountTradePileItemsGetCollection200ResponseHydraView'; +import { ApiAccountTradePileItemsGetCollection200ResponseHydraSearch } from './apiAccountTradePileItemsGetCollection200ResponseHydraSearch'; + + +export interface ApiLogGeneralsGetCollection200Response { + 'hydra:member': Array; + 'hydra:totalItems'?: number; + 'hydra:view'?: ApiAccountTradePileItemsGetCollection200ResponseHydraView; + 'hydra:search'?: ApiAccountTradePileItemsGetCollection200ResponseHydraSearch; +} + diff --git a/angular/src/app/core/api/v1/model/apiLogTotalProfitsGetCollection200Response.ts b/angular/src/app/core/api/v1/model/apiLogTotalProfitsGetCollection200Response.ts new file mode 100644 index 0000000..60bfc25 --- /dev/null +++ b/angular/src/app/core/api/v1/model/apiLogTotalProfitsGetCollection200Response.ts @@ -0,0 +1,23 @@ +/** + * Hello API Platform + * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) + * + * The version of the OpenAPI document: 1.0.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ +import { ApiAccountTradePileItemsGetCollection200ResponseHydraView } from './apiAccountTradePileItemsGetCollection200ResponseHydraView'; +import { ApiAccountTradePileItemsGetCollection200ResponseHydraSearch } from './apiAccountTradePileItemsGetCollection200ResponseHydraSearch'; +import { LogTotalProfitJsonld } from './logTotalProfitJsonld'; + + +export interface ApiLogTotalProfitsGetCollection200Response { + 'hydra:member': Array; + 'hydra:totalItems'?: number; + 'hydra:view'?: ApiAccountTradePileItemsGetCollection200ResponseHydraView; + 'hydra:search'?: ApiAccountTradePileItemsGetCollection200ResponseHydraSearch; +} + diff --git a/angular/src/app/core/api/v1/model/apiMediaObjectsGetCollection200Response.ts b/angular/src/app/core/api/v1/model/apiMediaObjectsGetCollection200Response.ts new file mode 100644 index 0000000..c25e377 --- /dev/null +++ b/angular/src/app/core/api/v1/model/apiMediaObjectsGetCollection200Response.ts @@ -0,0 +1,23 @@ +/** + * Hello API Platform + * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) + * + * The version of the OpenAPI document: 1.0.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ +import { ApiAccountTradePileItemsGetCollection200ResponseHydraView } from './apiAccountTradePileItemsGetCollection200ResponseHydraView'; +import { ApiAccountTradePileItemsGetCollection200ResponseHydraSearch } from './apiAccountTradePileItemsGetCollection200ResponseHydraSearch'; +import { MediaObjectJsonldMediaObjectRead } from './mediaObjectJsonldMediaObjectRead'; + + +export interface ApiMediaObjectsGetCollection200Response { + 'hydra:member': Array; + 'hydra:totalItems'?: number; + 'hydra:view'?: ApiAccountTradePileItemsGetCollection200ResponseHydraView; + 'hydra:search'?: ApiAccountTradePileItemsGetCollection200ResponseHydraSearch; +} + diff --git a/angular/src/app/core/api/v1/model/apiPlayersGetCollection200Response.ts b/angular/src/app/core/api/v1/model/apiPlayersGetCollection200Response.ts new file mode 100644 index 0000000..ef1b51b --- /dev/null +++ b/angular/src/app/core/api/v1/model/apiPlayersGetCollection200Response.ts @@ -0,0 +1,23 @@ +/** + * Hello API Platform + * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) + * + * The version of the OpenAPI document: 1.0.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ +import { ApiAccountTradePileItemsGetCollection200ResponseHydraView } from './apiAccountTradePileItemsGetCollection200ResponseHydraView'; +import { PlayerJsonld } from './playerJsonld'; +import { ApiAccountTradePileItemsGetCollection200ResponseHydraSearch } from './apiAccountTradePileItemsGetCollection200ResponseHydraSearch'; + + +export interface ApiPlayersGetCollection200Response { + 'hydra:member': Array; + 'hydra:totalItems'?: number; + 'hydra:view'?: ApiAccountTradePileItemsGetCollection200ResponseHydraView; + 'hydra:search'?: ApiAccountTradePileItemsGetCollection200ResponseHydraSearch; +} + diff --git a/angular/src/app/core/api/v1/model/apiRaritiesGetCollection200Response.ts b/angular/src/app/core/api/v1/model/apiRaritiesGetCollection200Response.ts new file mode 100644 index 0000000..c855d5c --- /dev/null +++ b/angular/src/app/core/api/v1/model/apiRaritiesGetCollection200Response.ts @@ -0,0 +1,23 @@ +/** + * Hello API Platform + * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) + * + * The version of the OpenAPI document: 1.0.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ +import { ApiAccountTradePileItemsGetCollection200ResponseHydraView } from './apiAccountTradePileItemsGetCollection200ResponseHydraView'; +import { RarityJsonld } from './rarityJsonld'; +import { ApiAccountTradePileItemsGetCollection200ResponseHydraSearch } from './apiAccountTradePileItemsGetCollection200ResponseHydraSearch'; + + +export interface ApiRaritiesGetCollection200Response { + 'hydra:member': Array; + 'hydra:totalItems'?: number; + 'hydra:view'?: ApiAccountTradePileItemsGetCollection200ResponseHydraView; + 'hydra:search'?: ApiAccountTradePileItemsGetCollection200ResponseHydraSearch; +} + diff --git a/angular/src/app/core/api/v1/model/apiUsersGetCollection200Response.ts b/angular/src/app/core/api/v1/model/apiUsersGetCollection200Response.ts new file mode 100644 index 0000000..183aeef --- /dev/null +++ b/angular/src/app/core/api/v1/model/apiUsersGetCollection200Response.ts @@ -0,0 +1,23 @@ +/** + * Hello API Platform + * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) + * + * The version of the OpenAPI document: 1.0.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ +import { ApiAccountTradePileItemsGetCollection200ResponseHydraView } from './apiAccountTradePileItemsGetCollection200ResponseHydraView'; +import { UserJsonld } from './userJsonld'; +import { ApiAccountTradePileItemsGetCollection200ResponseHydraSearch } from './apiAccountTradePileItemsGetCollection200ResponseHydraSearch'; + + +export interface ApiUsersGetCollection200Response { + 'hydra:member': Array; + 'hydra:totalItems'?: number; + 'hydra:view'?: ApiAccountTradePileItemsGetCollection200ResponseHydraView; + 'hydra:search'?: ApiAccountTradePileItemsGetCollection200ResponseHydraSearch; +} + diff --git a/angular/src/app/core/api/v1/model/candidate.ts b/angular/src/app/core/api/v1/model/candidate.ts new file mode 100644 index 0000000..174ddcd --- /dev/null +++ b/angular/src/app/core/api/v1/model/candidate.ts @@ -0,0 +1,70 @@ +/** + * Hello API Platform + * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) + * + * The version of the OpenAPI document: 1.0.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + + +/** + * + */ +export interface Candidate { + readonly dbId?: number | null; + readonly rarity?: string; + readonly candidateStat?: string; + readonly player?: string; + readonly firstname?: string | null; + readonly lastname?: string | null; + readonly nickname?: string | null; + readonly fullDisplayInfo?: string | null; + readonly eaAssetId: number | null; + readonly eaResourceId: number | null; + readonly rareFlag: number | null; + readonly rarityName?: string | null; + readonly image?: string | null; + readonly imageUrl?: string | null; + readonly cardImageUrl?: string | null; + readonly stockCountTotal?: number | null; + readonly stockCountReal?: number | null; + futBinId?: number | null; + futBinName?: string | null; + futBinPrice?: number | null; + futBinSellingPrice?: number | null; + readonly lastFutBinUpdate?: string | null; + futWizId?: number | null; + futWizPrice?: number | null; + futwizName?: string | null; + futWizSellingPrice?: number | null; + readonly lastFutWizUpdate?: string | null; + rating: number | null; + highestBuyBinPrice?: number | null; + sellStartingBid?: number | null; + sellBinPrice?: number | null; + lastFoundMinRange?: number | null; + lastFoundMaxRange?: number | null; + lastFoundLowestBin?: number | null; + readonly lowestBinUpdateDate?: string | null; + buy: boolean | null; + maxBuyPrice?: number | null; + buyStyle: number | null; + newBuySelective: boolean | null; + remove: boolean | null; + leagueId?: number | null; + nationId?: number | null; + prio?: number | null; + listCnt: number | null; + soldCnt: number | null; + note?: string | null; + relevant: boolean | null; + adjust100: boolean | null; + directReBuy: boolean | null; + readonly marketAverage?: number | null; + readonly creationDate: string | null; +} + diff --git a/angular/src/app/core/api/v1/model/candidateJsonld.ts b/angular/src/app/core/api/v1/model/candidateJsonld.ts new file mode 100644 index 0000000..5abc26b --- /dev/null +++ b/angular/src/app/core/api/v1/model/candidateJsonld.ts @@ -0,0 +1,77 @@ +/** + * Hello API Platform + * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) + * + * The version of the OpenAPI document: 1.0.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ +import { RarityJsonld } from './rarityJsonld'; +import { PlayerJsonld } from './playerJsonld'; +import { CandidateStatJsonld } from './candidateStatJsonld'; +import { AccountTradePileItemJsonldContext } from './accountTradePileItemJsonldContext'; + + +/** + * + */ +export interface CandidateJsonld { + context?: AccountTradePileItemJsonldContext; + readonly id?: string; + readonly type?: string; + readonly dbId?: number | null; + readonly rarity?: RarityJsonld; + readonly candidateStat?: CandidateStatJsonld; + readonly player?: PlayerJsonld; + readonly firstname?: string | null; + readonly lastname?: string | null; + readonly nickname?: string | null; + readonly fullDisplayInfo?: string | null; + readonly eaAssetId: number | null; + readonly eaResourceId: number | null; + readonly rareFlag: number | null; + readonly rarityName?: string | null; + readonly image?: string | null; + readonly imageUrl?: string | null; + readonly cardImageUrl?: string | null; + readonly stockCountTotal?: number | null; + readonly stockCountReal?: number | null; + futBinId?: number | null; + futBinName?: string | null; + futBinPrice?: number | null; + futBinSellingPrice?: number | null; + readonly lastFutBinUpdate?: string | null; + futWizId?: number | null; + futWizPrice?: number | null; + futwizName?: string | null; + futWizSellingPrice?: number | null; + readonly lastFutWizUpdate?: string | null; + rating: number | null; + highestBuyBinPrice?: number | null; + sellStartingBid?: number | null; + sellBinPrice?: number | null; + lastFoundMinRange?: number | null; + lastFoundMaxRange?: number | null; + lastFoundLowestBin?: number | null; + readonly lowestBinUpdateDate?: string | null; + buy: boolean | null; + maxBuyPrice?: number | null; + buyStyle: number | null; + newBuySelective: boolean | null; + remove: boolean | null; + leagueId?: number | null; + nationId?: number | null; + prio?: number | null; + listCnt: number | null; + soldCnt: number | null; + note?: string | null; + relevant: boolean | null; + adjust100: boolean | null; + directReBuy: boolean | null; + readonly marketAverage?: number | null; + readonly creationDate: string | null; +} + diff --git a/angular/src/app/core/api/v1/model/candidateStatJsonld.ts b/angular/src/app/core/api/v1/model/candidateStatJsonld.ts new file mode 100644 index 0000000..647559c --- /dev/null +++ b/angular/src/app/core/api/v1/model/candidateStatJsonld.ts @@ -0,0 +1,73 @@ +/** + * Hello API Platform + * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) + * + * The version of the OpenAPI document: 1.0.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ +import { CandidateJsonld } from './candidateJsonld'; +import { AccountTradePileItemJsonldContext } from './accountTradePileItemJsonldContext'; + + +/** + * + */ +export interface CandidateStatJsonld { + readonly id?: string; + readonly type?: string; + context?: AccountTradePileItemJsonldContext; + readonly candidateItem?: CandidateJsonld; + revRl6?: number; + rl6?: number; + sold6?: number; + rat6?: number; + rev6?: number; + revRl12?: number; + rl12?: number; + sold12?: number; + rat12?: number; + rev12?: number; + revRl24?: number; + rl24?: number; + sold24?: number; + rat24?: number; + rev24?: number; + revRl3d?: number; + rl3d?: number; + sold3d?: number; + rat3d?: number; + rev3d?: number; + revRl1w?: number; + rl1w?: number; + sold1w?: number; + rat1w?: number; + rev1w?: number; + revRl2w?: number; + rl2w?: number; + sold2w?: number; + rat2w?: number; + rev2w?: number; + revRl3w?: number; + rl3w?: number; + sold3w?: number; + rat3w?: number; + rev3w?: number; + revRl4w?: number; + rl4w?: number; + sold4w?: number; + rat4w?: number; + rev4w?: number; + revRl?: number; + rl?: number; + sold?: number; + rat?: number; + rev?: number; + snipingRev?: number; + readonly creationDate?: string | null; + readonly lastUpdateDate?: string | null; +} + diff --git a/angular/src/app/core/api/v1/model/candidateStockAccountsJsonld.ts b/angular/src/app/core/api/v1/model/candidateStockAccountsJsonld.ts new file mode 100644 index 0000000..aea3ac7 --- /dev/null +++ b/angular/src/app/core/api/v1/model/candidateStockAccountsJsonld.ts @@ -0,0 +1,26 @@ +/** + * Hello API Platform + * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) + * + * The version of the OpenAPI document: 1.0.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ +import { GameAccountJsonld } from './gameAccountJsonld'; +import { AccountTradePileItemJsonldContext } from './accountTradePileItemJsonldContext'; + + +/** + * + */ +export interface CandidateStockAccountsJsonld { + context?: AccountTradePileItemJsonldContext; + readonly id?: string; + readonly type?: string; + candidatesStockAccounts?: Array; + candidatesMissingAccounts?: any | null; +} + diff --git a/angular/src/app/core/api/v1/model/config.ts b/angular/src/app/core/api/v1/model/config.ts new file mode 100644 index 0000000..8798ce7 --- /dev/null +++ b/angular/src/app/core/api/v1/model/config.ts @@ -0,0 +1,28 @@ +/** + * Hello API Platform + * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) + * + * The version of the OpenAPI document: 1.0.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + + +/** + * + */ +export interface Config { + systemActive?: boolean; + systemRunning?: boolean; + readonly lastUpdateDate?: string; + readonly lastCheckDate?: string; + readonly processCnt?: number; + sleepHourStart?: number | null; + sleepHourEnd?: number | null; + checkMaxSales?: boolean; + numMaxSales?: number | null; +} + diff --git a/angular/src/app/core/api/v1/model/configJsonld.ts b/angular/src/app/core/api/v1/model/configJsonld.ts new file mode 100644 index 0000000..e737543 --- /dev/null +++ b/angular/src/app/core/api/v1/model/configJsonld.ts @@ -0,0 +1,32 @@ +/** + * Hello API Platform + * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) + * + * The version of the OpenAPI document: 1.0.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ +import { AccountTradePileItemJsonldContext } from './accountTradePileItemJsonldContext'; + + +/** + * + */ +export interface ConfigJsonld { + context?: AccountTradePileItemJsonldContext; + readonly id?: string; + readonly type?: string; + systemActive?: boolean; + systemRunning?: boolean; + readonly lastUpdateDate?: string; + readonly lastCheckDate?: string; + readonly processCnt?: number; + sleepHourStart?: number | null; + sleepHourEnd?: number | null; + checkMaxSales?: boolean; + numMaxSales?: number | null; +} + diff --git a/angular/src/app/core/api/v1/model/gameAccount.ts b/angular/src/app/core/api/v1/model/gameAccount.ts new file mode 100644 index 0000000..883fe18 --- /dev/null +++ b/angular/src/app/core/api/v1/model/gameAccount.ts @@ -0,0 +1,74 @@ +/** + * Hello API Platform + * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) + * + * The version of the OpenAPI document: 1.0.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + + +/** + * + */ +export interface GameAccount { + readonly dbId?: number | null; + email: string | null; + profile: string | null; + password: string | null; + emailPw?: string | null; + readonly credits?: number | null; + readonly cntItems?: number | null; + readonly cntSoldItems?: number | null; + readonly cntInactiveItems?: number | null; + active: boolean | null; + running: boolean | null; + relist: boolean | null; + relistDate?: string | null; + blocked: boolean | null; + sniping: boolean | null; + readonly snipingDate?: string | null; + tmOpen: boolean | null; + tmState?: number | null; + dead: boolean | null; + lockedMsg: boolean | null; + dynPrices: boolean | null; + newBuy: boolean | null; + readonly newBuyDate?: string | null; + newBuySelective: boolean | null; + reBuy: boolean | null; + readonly rebuyDate?: string | null; + readonly connectionDate?: string | null; + importWatchlist: boolean | null; + autoReBuy: boolean | null; + directReBuy: boolean | null; + itemMaxBuyPrice?: number | null; + readonly revenue?: number | null; + readonly futWizValue?: number | null; + readonly eaMarketAvgValue?: number | null; + mfaCode?: string | null; + twoFactorAuthKey?: string | null; + login2FaViaApp?: boolean | null; + eaCode1?: string | null; + eaCode2?: string | null; + eaCode3?: string | null; + eaCode4?: string | null; + eaCode5?: string | null; + eaCode6?: string | null; + snipingCnt1h?: number | null; + snipingCnt3h?: number | null; + snipingCnt6h?: number | null; + snipingCnt12h?: number | null; + snipingCnt24h?: number | null; + snipingCnt3d?: number | null; + snipingCnt1w?: number | null; + note?: string | null; + readonly loopStartDate?: string | null; + readonly loopFinishDate?: string | null; + readonly creationDate?: string | null; + readonly owner?: string; +} + diff --git a/angular/src/app/core/api/v1/model/gameAccountJsonld.ts b/angular/src/app/core/api/v1/model/gameAccountJsonld.ts new file mode 100644 index 0000000..db1ff77 --- /dev/null +++ b/angular/src/app/core/api/v1/model/gameAccountJsonld.ts @@ -0,0 +1,79 @@ +/** + * Hello API Platform + * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) + * + * The version of the OpenAPI document: 1.0.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ +import { UserJsonld } from './userJsonld'; +import { AccountTradePileItemJsonldContext } from './accountTradePileItemJsonldContext'; + + +/** + * + */ +export interface GameAccountJsonld { + context?: AccountTradePileItemJsonldContext; + readonly id?: string; + readonly type?: string; + readonly dbId?: number | null; + email: string | null; + profile: string | null; + password: string | null; + emailPw?: string | null; + readonly credits?: number | null; + readonly cntItems?: number | null; + readonly cntSoldItems?: number | null; + readonly cntInactiveItems?: number | null; + active: boolean | null; + running: boolean | null; + relist: boolean | null; + relistDate?: string | null; + blocked: boolean | null; + sniping: boolean | null; + readonly snipingDate?: string | null; + tmOpen: boolean | null; + tmState?: number | null; + dead: boolean | null; + lockedMsg: boolean | null; + dynPrices: boolean | null; + newBuy: boolean | null; + readonly newBuyDate?: string | null; + newBuySelective: boolean | null; + reBuy: boolean | null; + readonly rebuyDate?: string | null; + readonly connectionDate?: string | null; + importWatchlist: boolean | null; + autoReBuy: boolean | null; + directReBuy: boolean | null; + itemMaxBuyPrice?: number | null; + readonly revenue?: number | null; + readonly futWizValue?: number | null; + readonly eaMarketAvgValue?: number | null; + mfaCode?: string | null; + twoFactorAuthKey?: string | null; + login2FaViaApp?: boolean | null; + eaCode1?: string | null; + eaCode2?: string | null; + eaCode3?: string | null; + eaCode4?: string | null; + eaCode5?: string | null; + eaCode6?: string | null; + snipingCnt1h?: number | null; + snipingCnt3h?: number | null; + snipingCnt6h?: number | null; + snipingCnt12h?: number | null; + snipingCnt24h?: number | null; + snipingCnt3d?: number | null; + snipingCnt1w?: number | null; + note?: string | null; + readonly loopStartDate?: string | null; + readonly loopFinishDate?: string | null; + readonly creationDate?: string | null; + readonly owner?: UserJsonld; +} + diff --git a/angular/src/app/core/api/v1/model/logAccountCreditJsonld.ts b/angular/src/app/core/api/v1/model/logAccountCreditJsonld.ts new file mode 100644 index 0000000..0573365 --- /dev/null +++ b/angular/src/app/core/api/v1/model/logAccountCreditJsonld.ts @@ -0,0 +1,28 @@ +/** + * Hello API Platform + * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) + * + * The version of the OpenAPI document: 1.0.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ +import { GameAccountJsonld } from './gameAccountJsonld'; +import { AccountTradePileItemJsonldContext } from './accountTradePileItemJsonldContext'; + + +/** + * + */ +export interface LogAccountCreditJsonld { + readonly id?: string; + readonly type?: string; + context?: AccountTradePileItemJsonldContext; + readonly gameAccount?: GameAccountJsonld; + readonly credits?: number | null; + readonly revenue?: number | null; + readonly creationDate?: string | null; +} + diff --git a/angular/src/app/core/api/v1/model/logAccountProfitJsonld.ts b/angular/src/app/core/api/v1/model/logAccountProfitJsonld.ts new file mode 100644 index 0000000..e2dff5f --- /dev/null +++ b/angular/src/app/core/api/v1/model/logAccountProfitJsonld.ts @@ -0,0 +1,56 @@ +/** + * Hello API Platform + * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) + * + * The version of the OpenAPI document: 1.0.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ +import { GameAccountJsonld } from './gameAccountJsonld'; +import { AccountTradePileItemJsonldContext } from './accountTradePileItemJsonldContext'; + + +/** + * + */ +export interface LogAccountProfitJsonld { + readonly id?: string; + readonly type?: string; + context?: AccountTradePileItemJsonldContext; + readonly gameAccount?: GameAccountJsonld; + credits?: number | null; + revenue?: number | null; + tpValue?: number | null; + revToday?: number | null; + rev3hours?: number | null; + rev6hours?: number | null; + rev12hours?: number | null; + rev24hours?: number | null; + rev3days?: number | null; + rev1week?: number | null; + rev2weeks?: number | null; + rev3weeks?: number | null; + rev4weeks?: number | null; + rev2months?: number | null; + rev3months?: number | null; + revTotal?: number | null; + numSalesToday?: number | null; + numSales3hours?: number | null; + numSales6hours?: number | null; + numSales12hours?: number | null; + numSales24hours?: number | null; + numSales3days?: number | null; + numSales1week?: number | null; + numSales2weeks?: number | null; + numSales3weeks?: number | null; + numSales4weeks?: number | null; + numSales2months?: number | null; + numSales3months?: number | null; + numSalesTotal?: number | null; + isDailyProfit?: boolean | null; + creationDate?: string | null; +} + diff --git a/angular/src/app/core/api/v1/model/logAccountSoldItemJsonld.ts b/angular/src/app/core/api/v1/model/logAccountSoldItemJsonld.ts new file mode 100644 index 0000000..fc6c88b --- /dev/null +++ b/angular/src/app/core/api/v1/model/logAccountSoldItemJsonld.ts @@ -0,0 +1,45 @@ +/** + * Hello API Platform + * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) + * + * The version of the OpenAPI document: 1.0.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ +import { GameAccountJsonld } from './gameAccountJsonld'; +import { CandidateJsonld } from './candidateJsonld'; +import { AccountTradePileItemJsonldContext } from './accountTradePileItemJsonldContext'; + + +/** + * + */ +export interface LogAccountSoldItemJsonld { + readonly id?: string; + readonly type?: string; + context?: AccountTradePileItemJsonldContext; + readonly dbId?: number | null; + readonly gameAccount?: GameAccountJsonld; + readonly candidateItem?: CandidateJsonld; + readonly eaId?: number; + readonly contracts?: number | null; + readonly playStyle?: number | null; + readonly lastSalePrice?: number; + readonly currentBid?: number; + readonly startingBid?: number; + readonly binPrice?: number; + readonly minRange?: number; + readonly maxRange?: number; + readonly tradeState?: string; + readonly eaTradeId?: number; + readonly listCnt?: number; + readonly revenue?: number; + readonly reBought?: boolean; + readonly snipedItem?: boolean; + readonly firstListDate?: string | null; + readonly creationDate?: string; +} + diff --git a/angular/src/app/core/api/v1/model/logGeneralJsonld.ts b/angular/src/app/core/api/v1/model/logGeneralJsonld.ts new file mode 100644 index 0000000..f21c8aa --- /dev/null +++ b/angular/src/app/core/api/v1/model/logGeneralJsonld.ts @@ -0,0 +1,56 @@ +/** + * Hello API Platform + * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) + * + * The version of the OpenAPI document: 1.0.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ +import { GameAccountJsonld } from './gameAccountJsonld'; +import { CandidateJsonld } from './candidateJsonld'; +import { AccountTradePileItemJsonldContext } from './accountTradePileItemJsonldContext'; + + +/** + * + */ +export interface LogGeneralJsonld { + readonly id?: string; + readonly type?: string; + context?: AccountTradePileItemJsonldContext; + readonly dbId?: number; + readonly gameAccount?: GameAccountJsonld; + readonly candidateItem?: CandidateJsonld; + logType: LogGeneralJsonld.LogTypeEnum; + readonly message?: string | null; + readonly creationDate?: string | null; +} +export namespace LogGeneralJsonld { + export type LogTypeEnum = 'alert' | 'alert_low' | 'cant_buy' | 'debug' | 'debug_server_logs' | 'info' | 'moved_to_club' | 'new_buy' | 'player_price_changed' | 'preview_pack' | 'preview_pack_alert' | 'price_range_errors' | 'profit_overview' | 'removed' | 'rebuy' | 'sales' | 'server_logs' | 'stats' | 'hourly_stats'; + export const LogTypeEnum = { + Alert: 'alert' as LogTypeEnum, + AlertLow: 'alert_low' as LogTypeEnum, + CantBuy: 'cant_buy' as LogTypeEnum, + Debug: 'debug' as LogTypeEnum, + DebugServerLogs: 'debug_server_logs' as LogTypeEnum, + Info: 'info' as LogTypeEnum, + MovedToClub: 'moved_to_club' as LogTypeEnum, + NewBuy: 'new_buy' as LogTypeEnum, + PlayerPriceChanged: 'player_price_changed' as LogTypeEnum, + PreviewPack: 'preview_pack' as LogTypeEnum, + PreviewPackAlert: 'preview_pack_alert' as LogTypeEnum, + PriceRangeErrors: 'price_range_errors' as LogTypeEnum, + ProfitOverview: 'profit_overview' as LogTypeEnum, + Removed: 'removed' as LogTypeEnum, + Rebuy: 'rebuy' as LogTypeEnum, + Sales: 'sales' as LogTypeEnum, + ServerLogs: 'server_logs' as LogTypeEnum, + Stats: 'stats' as LogTypeEnum, + HourlyStats: 'hourly_stats' as LogTypeEnum + }; +} + + diff --git a/angular/src/app/core/api/v1/model/logTotalProfit.ts b/angular/src/app/core/api/v1/model/logTotalProfit.ts new file mode 100644 index 0000000..54213e7 --- /dev/null +++ b/angular/src/app/core/api/v1/model/logTotalProfit.ts @@ -0,0 +1,51 @@ +/** + * Hello API Platform + * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) + * + * The version of the OpenAPI document: 1.0.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + + +/** + * + */ +export interface LogTotalProfit { + credits?: number | null; + revenue?: number | null; + tpValueFutwiz?: number | null; + tpValueEaAverage?: number | null; + revToday?: number | null; + rev3hours?: number | null; + rev6hours?: number | null; + rev12hours?: number | null; + rev24hours?: number | null; + rev3days?: number | null; + rev1week?: number | null; + rev2weeks?: number | null; + rev3weeks?: number | null; + rev4weeks?: number | null; + rev2months?: number | null; + rev3months?: number | null; + revTotal?: number | null; + numSalesToday?: number | null; + numSales3hours?: number | null; + numSales6hours?: number | null; + numSales12hours?: number | null; + numSales24hours?: number | null; + numSales3days?: number | null; + numSales1week?: number | null; + numSales2weeks?: number | null; + numSales3weeks?: number | null; + numSales4weeks?: number | null; + numSales2months?: number | null; + numSales3months?: number | null; + numSalesTotal?: number | null; + isDailyProfit?: boolean | null; + creationDate?: string | null; +} + diff --git a/angular/src/app/core/api/v1/model/logTotalProfitJsonld.ts b/angular/src/app/core/api/v1/model/logTotalProfitJsonld.ts new file mode 100644 index 0000000..564e993 --- /dev/null +++ b/angular/src/app/core/api/v1/model/logTotalProfitJsonld.ts @@ -0,0 +1,55 @@ +/** + * Hello API Platform + * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) + * + * The version of the OpenAPI document: 1.0.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ +import { AccountTradePileItemJsonldContext } from './accountTradePileItemJsonldContext'; + + +/** + * + */ +export interface LogTotalProfitJsonld { + context?: AccountTradePileItemJsonldContext; + readonly id?: string; + readonly type?: string; + credits?: number | null; + revenue?: number | null; + tpValueFutwiz?: number | null; + tpValueEaAverage?: number | null; + revToday?: number | null; + rev3hours?: number | null; + rev6hours?: number | null; + rev12hours?: number | null; + rev24hours?: number | null; + rev3days?: number | null; + rev1week?: number | null; + rev2weeks?: number | null; + rev3weeks?: number | null; + rev4weeks?: number | null; + rev2months?: number | null; + rev3months?: number | null; + revTotal?: number | null; + numSalesToday?: number | null; + numSales3hours?: number | null; + numSales6hours?: number | null; + numSales12hours?: number | null; + numSales24hours?: number | null; + numSales3days?: number | null; + numSales1week?: number | null; + numSales2weeks?: number | null; + numSales3weeks?: number | null; + numSales4weeks?: number | null; + numSales2months?: number | null; + numSales3months?: number | null; + numSalesTotal?: number | null; + isDailyProfit?: boolean | null; + creationDate?: string | null; +} + diff --git a/angular/src/app/core/api/v1/model/loginCheckPost200Response.ts b/angular/src/app/core/api/v1/model/loginCheckPost200Response.ts new file mode 100644 index 0000000..ee7303b --- /dev/null +++ b/angular/src/app/core/api/v1/model/loginCheckPost200Response.ts @@ -0,0 +1,17 @@ +/** + * Hello API Platform + * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) + * + * The version of the OpenAPI document: 1.0.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + + +export interface LoginCheckPost200Response { + readonly token: string; +} + diff --git a/angular/src/app/core/api/v1/model/loginCheckPostRequest.ts b/angular/src/app/core/api/v1/model/loginCheckPostRequest.ts new file mode 100644 index 0000000..1d223b5 --- /dev/null +++ b/angular/src/app/core/api/v1/model/loginCheckPostRequest.ts @@ -0,0 +1,18 @@ +/** + * Hello API Platform + * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) + * + * The version of the OpenAPI document: 1.0.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + + +export interface LoginCheckPostRequest { + email: string; + password: string; +} + diff --git a/angular/src/app/core/api/v1/model/mediaObjectJsonldMediaObjectRead.ts b/angular/src/app/core/api/v1/model/mediaObjectJsonldMediaObjectRead.ts new file mode 100644 index 0000000..2fcbe96 --- /dev/null +++ b/angular/src/app/core/api/v1/model/mediaObjectJsonldMediaObjectRead.ts @@ -0,0 +1,24 @@ +/** + * Hello API Platform + * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) + * + * The version of the OpenAPI document: 1.0.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ +import { AccountTradePileItemJsonldContext } from './accountTradePileItemJsonldContext'; + + +/** + * + */ +export interface MediaObjectJsonldMediaObjectRead { + context?: AccountTradePileItemJsonldContext; + readonly id?: string; + readonly type?: string; + contentUrl?: string | null; +} + diff --git a/angular/src/app/core/api/v1/model/modeConfig.ts b/angular/src/app/core/api/v1/model/modeConfig.ts new file mode 100644 index 0000000..dfbe12a --- /dev/null +++ b/angular/src/app/core/api/v1/model/modeConfig.ts @@ -0,0 +1,21 @@ +/** + * Hello API Platform + * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) + * + * The version of the OpenAPI document: 1.0.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + + +/** + * + */ +export interface ModeConfig { + autoReBuyMinSoldItems?: number; + autoReBuyMinLastHours?: number; +} + diff --git a/angular/src/app/core/api/v1/model/modeConfigJsonld.ts b/angular/src/app/core/api/v1/model/modeConfigJsonld.ts new file mode 100644 index 0000000..6d83998 --- /dev/null +++ b/angular/src/app/core/api/v1/model/modeConfigJsonld.ts @@ -0,0 +1,25 @@ +/** + * Hello API Platform + * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) + * + * The version of the OpenAPI document: 1.0.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ +import { AccountTradePileItemJsonldContext } from './accountTradePileItemJsonldContext'; + + +/** + * + */ +export interface ModeConfigJsonld { + context?: AccountTradePileItemJsonldContext; + readonly id?: string; + readonly type?: string; + autoReBuyMinSoldItems?: number; + autoReBuyMinLastHours?: number; +} + diff --git a/angular/src/app/core/api/v1/model/models.ts b/angular/src/app/core/api/v1/model/models.ts new file mode 100644 index 0000000..5d5198e --- /dev/null +++ b/angular/src/app/core/api/v1/model/models.ts @@ -0,0 +1,45 @@ +export * from './accountTradePileItem'; +export * from './accountTradePileItemJsonld'; +export * from './accountTradePileItemJsonldContext'; +export * from './accountTradePileItemJsonldContextOneOf'; +export * from './apiAccountTradePileItemsGetCollection200Response'; +export * from './apiAccountTradePileItemsGetCollection200ResponseHydraSearch'; +export * from './apiAccountTradePileItemsGetCollection200ResponseHydraSearchHydraMappingInner'; +export * from './apiAccountTradePileItemsGetCollection200ResponseHydraView'; +export * from './apiCandidateStatsGetCollection200Response'; +export * from './apiCandidatesGetCollection200Response'; +export * from './apiGameAccountsGetCollection200Response'; +export * from './apiLogAccountCreditsGetCollection200Response'; +export * from './apiLogAccountProfitsGetCollection200Response'; +export * from './apiLogAccountSoldItemsGetCollection200Response'; +export * from './apiLogGeneralsGetCollection200Response'; +export * from './apiLogTotalProfitsGetCollection200Response'; +export * from './apiMediaObjectsGetCollection200Response'; +export * from './apiPlayersGetCollection200Response'; +export * from './apiRaritiesGetCollection200Response'; +export * from './apiUsersGetCollection200Response'; +export * from './candidate'; +export * from './candidateJsonld'; +export * from './candidateStatJsonld'; +export * from './candidateStockAccountsJsonld'; +export * from './config'; +export * from './configJsonld'; +export * from './gameAccount'; +export * from './gameAccountJsonld'; +export * from './logAccountCreditJsonld'; +export * from './logAccountProfitJsonld'; +export * from './logAccountSoldItemJsonld'; +export * from './logGeneralJsonld'; +export * from './logTotalProfit'; +export * from './logTotalProfitJsonld'; +export * from './loginCheckPost200Response'; +export * from './loginCheckPostRequest'; +export * from './mediaObjectJsonldMediaObjectRead'; +export * from './modeConfig'; +export * from './modeConfigJsonld'; +export * from './player'; +export * from './playerJsonld'; +export * from './rarity'; +export * from './rarityJsonld'; +export * from './systemStatJsonld'; +export * from './userJsonld'; diff --git a/angular/src/app/core/api/v1/model/player.ts b/angular/src/app/core/api/v1/model/player.ts new file mode 100644 index 0000000..6fc38ae --- /dev/null +++ b/angular/src/app/core/api/v1/model/player.ts @@ -0,0 +1,25 @@ +/** + * Hello API Platform + * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) + * + * The version of the OpenAPI document: 1.0.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + + +/** + * + */ +export interface Player { + eaAssetId?: number; + firstname?: string | null; + lastname?: string | null; + nickname?: string | null; + rating?: number; + readonly creationDate?: string; +} + diff --git a/angular/src/app/core/api/v1/model/playerJsonld.ts b/angular/src/app/core/api/v1/model/playerJsonld.ts new file mode 100644 index 0000000..df13f63 --- /dev/null +++ b/angular/src/app/core/api/v1/model/playerJsonld.ts @@ -0,0 +1,29 @@ +/** + * Hello API Platform + * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) + * + * The version of the OpenAPI document: 1.0.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ +import { AccountTradePileItemJsonldContext } from './accountTradePileItemJsonldContext'; + + +/** + * + */ +export interface PlayerJsonld { + context?: AccountTradePileItemJsonldContext; + readonly id?: string; + readonly type?: string; + eaAssetId?: number; + firstname?: string | null; + lastname?: string | null; + nickname?: string | null; + rating?: number; + readonly creationDate?: string; +} + diff --git a/angular/src/app/core/api/v1/model/rarity.ts b/angular/src/app/core/api/v1/model/rarity.ts new file mode 100644 index 0000000..00ffd29 --- /dev/null +++ b/angular/src/app/core/api/v1/model/rarity.ts @@ -0,0 +1,25 @@ +/** + * Hello API Platform + * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) + * + * The version of the OpenAPI document: 1.0.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ + + +/** + * + */ +export interface Rarity { + readonly rareFlag?: number; + name?: string | null; + readonly untradable?: boolean; + readonly image?: string | null; + readonly imageUrl?: string | null; + readonly imageBronze?: string | null; +} + diff --git a/angular/src/app/core/api/v1/model/rarityJsonld.ts b/angular/src/app/core/api/v1/model/rarityJsonld.ts new file mode 100644 index 0000000..81c7f57 --- /dev/null +++ b/angular/src/app/core/api/v1/model/rarityJsonld.ts @@ -0,0 +1,29 @@ +/** + * Hello API Platform + * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) + * + * The version of the OpenAPI document: 1.0.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ +import { AccountTradePileItemJsonldContext } from './accountTradePileItemJsonldContext'; + + +/** + * + */ +export interface RarityJsonld { + context?: AccountTradePileItemJsonldContext; + readonly id?: string; + readonly type?: string; + readonly rareFlag?: number; + name?: string | null; + readonly untradable?: boolean; + readonly image?: string | null; + readonly imageUrl?: string | null; + readonly imageBronze?: string | null; +} + diff --git a/angular/src/app/core/api/v1/model/systemStatJsonld.ts b/angular/src/app/core/api/v1/model/systemStatJsonld.ts new file mode 100644 index 0000000..6a989b5 --- /dev/null +++ b/angular/src/app/core/api/v1/model/systemStatJsonld.ts @@ -0,0 +1,45 @@ +/** + * Hello API Platform + * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) + * + * The version of the OpenAPI document: 1.0.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ +import { ConfigJsonld } from './configJsonld'; +import { ModeConfigJsonld } from './modeConfigJsonld'; +import { AccountTradePileItemJsonldContext } from './accountTradePileItemJsonldContext'; +import { LogTotalProfitJsonld } from './logTotalProfitJsonld'; + + +/** + * + */ +export interface SystemStatJsonld { + context?: AccountTradePileItemJsonldContext; + readonly id?: string; + readonly type?: string; + readonly totalLogProfit?: LogTotalProfitJsonld; + readonly config?: ConfigJsonld; + readonly modeConfig?: ModeConfigJsonld; + numAccounts?: number | null; + numDeadAccounts?: number | null; + numActiveAccounts?: number | null; + numTmOpenAccounts?: number | null; + numTmClosedAccounts?: number | null; + numBlockedAccounts?: number | null; + numRunningAccounts?: number | null; + numTradepileItems?: number | null; + numSoldTradepileItems?: number | null; + numActiveTradepileItems?: number | null; + numExpiredTradepileItems?: number | null; + numInactiveTradepileItems?: number | null; + numCandidates?: number | null; + numRelevantCandidates?: number | null; + numBuyCandidates?: number | null; + totalSnipingRev?: number | null; +} + diff --git a/angular/src/app/core/api/v1/model/userJsonld.ts b/angular/src/app/core/api/v1/model/userJsonld.ts new file mode 100644 index 0000000..8721099 --- /dev/null +++ b/angular/src/app/core/api/v1/model/userJsonld.ts @@ -0,0 +1,35 @@ +/** + * Hello API Platform + * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) + * + * The version of the OpenAPI document: 1.0.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + */ +import { AccountTradePileItemJsonldContext } from './accountTradePileItemJsonldContext'; + + +/** + * + */ +export interface UserJsonld { + context?: AccountTradePileItemJsonldContext; + readonly id?: string; + readonly type?: string; + email: string | null; + firstName: string | null; + lastName: string | null; + image?: string | null; + readonly imageUrl?: string | null; + readonly fullName?: string | null; + /** + * The plaintext password when being set or changed. + */ + password?: string | null; + active?: boolean; + readonly createdAt?: string | null; +} + diff --git a/angular/src/app/core/api/v1/param.ts b/angular/src/app/core/api/v1/param.ts new file mode 100644 index 0000000..78a2d20 --- /dev/null +++ b/angular/src/app/core/api/v1/param.ts @@ -0,0 +1,69 @@ +/** + * Standard parameter styles defined by OpenAPI spec + */ +export type StandardParamStyle = + | 'matrix' + | 'label' + | 'form' + | 'simple' + | 'spaceDelimited' + | 'pipeDelimited' + | 'deepObject' + ; + +/** + * The OpenAPI standard {@link StandardParamStyle}s may be extended by custom styles by the user. + */ +export type ParamStyle = StandardParamStyle | string; + +/** + * Standard parameter locations defined by OpenAPI spec + */ +export type ParamLocation = 'query' | 'header' | 'path' | 'cookie'; + +/** + * Standard types as defined in OpenAPI Specification: Data Types + */ +export type StandardDataType = + | "integer" + | "number" + | "boolean" + | "string" + | "object" + | "array" + ; + +/** + * Standard {@link DataType}s plus your own types/classes. + */ +export type DataType = StandardDataType | string; + +/** + * Standard formats as defined in OpenAPI Specification: Data Types + */ +export type StandardDataFormat = + | "int32" + | "int64" + | "float" + | "double" + | "byte" + | "binary" + | "date" + | "date-time" + | "password" + ; + +export type DataFormat = StandardDataFormat | string; + +/** + * The parameter to encode. + */ +export interface Param { + name: string; + value: unknown; + in: ParamLocation; + style: ParamStyle, + explode: boolean; + dataType: DataType; + dataFormat: DataFormat | undefined; +} diff --git a/angular/src/app/core/api/v1/variables.ts b/angular/src/app/core/api/v1/variables.ts new file mode 100644 index 0000000..6fe5854 --- /dev/null +++ b/angular/src/app/core/api/v1/variables.ts @@ -0,0 +1,9 @@ +import { InjectionToken } from '@angular/core'; + +export const BASE_PATH = new InjectionToken('basePath'); +export const COLLECTION_FORMATS = { + 'csv': ',', + 'tsv': ' ', + 'ssv': ' ', + 'pipes': '|' +} diff --git a/angular/src/assets/.gitkeep b/angular/src/assets/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/angular/src/assets/fonts/material-icons-v142-latin-regular.woff2 b/angular/src/assets/fonts/material-icons-v142-latin-regular.woff2 new file mode 100644 index 0000000..5492a6e Binary files /dev/null and b/angular/src/assets/fonts/material-icons-v142-latin-regular.woff2 differ diff --git a/angular/src/assets/fonts/montserrat-v26-latin-600.woff2 b/angular/src/assets/fonts/montserrat-v26-latin-600.woff2 new file mode 100644 index 0000000..a0bfc7b Binary files /dev/null and b/angular/src/assets/fonts/montserrat-v26-latin-600.woff2 differ diff --git a/angular/src/assets/fonts/montserrat-v26-latin-600italic.woff2 b/angular/src/assets/fonts/montserrat-v26-latin-600italic.woff2 new file mode 100644 index 0000000..40f6d9a Binary files /dev/null and b/angular/src/assets/fonts/montserrat-v26-latin-600italic.woff2 differ diff --git a/angular/src/assets/fonts/montserrat-v26-latin-800.woff2 b/angular/src/assets/fonts/montserrat-v26-latin-800.woff2 new file mode 100644 index 0000000..d69d4a1 Binary files /dev/null and b/angular/src/assets/fonts/montserrat-v26-latin-800.woff2 differ diff --git a/angular/src/assets/fonts/montserrat-v26-latin-800italic.woff2 b/angular/src/assets/fonts/montserrat-v26-latin-800italic.woff2 new file mode 100644 index 0000000..527a0fe Binary files /dev/null and b/angular/src/assets/fonts/montserrat-v26-latin-800italic.woff2 differ diff --git a/angular/src/assets/fonts/montserrat-v26-latin-italic.woff2 b/angular/src/assets/fonts/montserrat-v26-latin-italic.woff2 new file mode 100644 index 0000000..17a8120 Binary files /dev/null and b/angular/src/assets/fonts/montserrat-v26-latin-italic.woff2 differ diff --git a/angular/src/assets/fonts/montserrat-v26-latin-regular.woff2 b/angular/src/assets/fonts/montserrat-v26-latin-regular.woff2 new file mode 100644 index 0000000..f4b26df Binary files /dev/null and b/angular/src/assets/fonts/montserrat-v26-latin-regular.woff2 differ diff --git a/angular/src/assets/i18n/de.json b/angular/src/assets/i18n/de.json new file mode 100644 index 0000000..5a4bd31 --- /dev/null +++ b/angular/src/assets/i18n/de.json @@ -0,0 +1,167 @@ +{ + "game_account": + { + "profile": "Name", + "credits": "Credits", + "futwiz_value": "Futbin", + "cnt_items": "# Items", + "cnt_sold_items": "# Verkaufte Items", + "active": "aktiv", + "running": "läuft", + "blocked": "blockiert" + }, + "system": + { + "delete_image": "Bild löschen", + "confirm_delete_image": "Möchten Sie das Bild wirklich löschen?", + "delete_file": "Datei löschen", + "confirm_delete_file": "Möchten Sie die Datei wirklich löschen?", + "profit_larger_turnover": "Der Gewinn ist größer als der Umsatz!", + "confirm_unassign": "Möchten Sie die Zuweisung wirklich aufheben?" + }, + "basic": + { + "logout": "Logout", + "company_name": "MATSEN CHEMIE AG", + "customer": "Kunden", + "supplier": "Dienstleister", + "service": "Lieferanten", + "customerOne": "Kunde", + "supplierOne": "Dienstleister", + "serviceOne": "Lieferant", + "products": "Produkte", + "documents": "Dokumente", + "sales": "Verkäufe", + "profile": "Profil", + "tasks": "Aufgaben", + "contacts": "Kontakte", + "posts": "Notizen", + "comments": "Kommentare", + "users": "Benutzer", + "new": "Neuer", + "assign_partner_01": "Dieses Produkt einem", + "assign_partner_02": "zuordnen", + "new_product": "Neues Produkt", + "assign_product_01": "Diesen Partner einem", + "assign_product_02": "Produkt zuordnen", + "new_document": "Neues Dokument", + "new_task": "Neue Aufgabe", + "new_contact": "Neuer Kontakt", + "new_post": "Neue Notiz", + "new_comment": "Neuer Kommentar", + "new_task_note": "Neue Anmerkung", + "new_sale": "Neuer Verkauf", + "edit_before": "", + "edit_after": "bearbeiten", + "edit_product": "Produkt bearbeiten", + "edit_document": "Dokument bearbeiten", + "edit_task": "Aufgabe bearbeiten", + "edit_contact": "Kontakt bearbeiten", + "edit_post": "Notiz bearbeiten", + "edit_comment": "Kommentar bearbeiten", + "edit_task_note": "Anmerkung bearbeiten", + "edit_sale": "Verkauf bearbeiten", + "details": "Details", + "comment_it": "Kommentieren", + "show_comments": "Kommentare anzeigen", + "hide_comments": "Kommentare ausblenden", + "back": "Zurück", + "yes": "Ja", + "no": "Nein", + "dashboard": "Dashboard", + "account": "Account", + "game_account": "Accounts" + }, + "user": + { + "hello": "Hi", + "my": "Meine ", + "email": "Email", + "goals": "Ziele" + }, + "overview": + { + "sort": "Sortierung", + "number": "Nr.", + "logo": "Logo", + "address": "Adresse", + "website": "Website", + "image": "Bild", + "productname": "Produkt", + "storage": "Lagerbestand", + "number_long": "Nummer", + "document": "Dokument", + "type": "Typ", + "uploaded": "Hochgeladen am", + "description": "Beschreibung", + "createdBy": "Erstellt von", + "download": "Download", + "partner": "Partner", + "product": "Produkt", + "sale_user": "Verkäufer", + "sale_partner": "Kunde", + "details": "Details", + "turnover": "Umsatz", + "profit": "Gewinn", + "comment": "Kommentar", + "createdAt": "erstellt am", + "firstName": "Vorname", + "lastName": "Nachname", + "email": "Email", + "unassign": "Zuweisung aufheben", + "compact_view": "Kompaktansicht", + "show_done": "Fertige Aufgaben anzeigen" + }, + "form": + { + "mandatory": "ist erforderlich", + "email_validation": "Geben Sie eine gültige E-Mail-Adresse ein", + "name": "Name", + "street": "Straße", + "street_no": "Hausnummer", + "zip": "PLZ", + "city": "Stadt", + "country": "Land", + "website": "Website", + "upload_image": "Bild hochladen", + "upload_file": "Datei hochladen", + "firstname": "Vorname", + "lastname": "Nachname", + "birthday": "Geburtstag", + "position": "Position", + "email": "E-Mail", + "phone": "Telefon", + "description": "Beschreibung", + "headline": "Überschrift", + "message": "Nachricht", + "comment": "Kommentar", + "assign_to": "Zuweisen an", + "due_date": "Fälligkeitsdatum", + "prio": "Priorität", + "prio_low": "niedrig", + "prio_medium": "mittel", + "prio_high": "hoch", + "partner": "Partner", + "product": "Produkt", + "turnover": "Umsatz", + "profit": "Gewinn", + "quantity": "Anzahl", + "send": "Speichern", + "search_placeholder": "Suche", + "no_data": "Keine Datensätze gefunden.", + "contact_type": "Kontaktart", + "user": "Benutzer", + "contact": "Kontakt" + }, + "sales": + { + "turnover": "Umsatz", + "profit": "Gewinn" + }, + "task_note": + { + "type_personal": "Persönlich", + "type_phone": "Telefon", + "type_email": "E-Mail" + } +} \ No newline at end of file diff --git a/angular/src/assets/i18n/en.json b/angular/src/assets/i18n/en.json new file mode 100644 index 0000000..1040e66 --- /dev/null +++ b/angular/src/assets/i18n/en.json @@ -0,0 +1,530 @@ +{ + "dashboard": + { + "view": "Dashboard", + "overview": "Overview", + "error_log": "Error Log", + "hourly_revenue": "Hourly Revenue", + "daily_revenue": "Daily Revenue", + "num_accounts": "# Accounts", + "num_accounts_active": "# Active accounts", + "num_accounts_tm_open": "# TM open accounts", + "num_accounts_tm_closed": "# TM closed accounts", + "num_accounts_dead": "# Dead accounts", + "num_accounts_blocked": "# Blocked accounts", + "num_accounts_running": "# Running accounts", + "num_tradepile_items": "# Tradepile Items", + "num_tradepile_items_active": "# Active tradepile Items", + "num_tradepile_items_sold": "# Sold tradepile Items", + "num_tradepile_items_expired": "# Expired tradepile Items", + "num_tradepile_items_inactive": "# Inactive tradepile Items", + "num_items_unassigned": "# Unassigned items", + "num_candidates": "# Candidates", + "num_candidates_relevant": "# Relevant candidates", + "num_candidates_buy": "# Buy candidates", + "system_active": "System active", + "system_running": "System running", + "system_check_num_sales": "Check number of sales per account", + "system_num_sales_rebuy": "# Sales when account stops for today", + "system_process_count": "System process count all time", + "system_sleep_hour_start": "System starts sleeping at hour", + "system_sleep_hour_end": "System ends sleeping at hour", + "system_wait_hours_before_rebuy": "System waiting minimal hours before rebuy on account", + "system_num_sales_before_rebuy": "System min sold before rebuy on account", + "tp_value": "Total tp value", + "accounts": "Accounts", + "tpItemsCredits": "Tradepile Items & Credits", + "revenuesSales": "Revenues & Sales", + "revenues": "Revenues", + "sales": "Sales", + "systemInfo": "System Info", + "numberOfLines": "Number of lines", + "fetchLogs": "Fetch Logs", + "enterNumberOfLines": "Enter number of lines", + "googleIncomeList": "Google income list", + "total_sniping_revenue": "Sniping Revenue" + }, + "profit": + { + "totalFutwiz": "Credits + TP Futwiz", + "totalEaAverage": "Credits + TP EA Average", + "credits": "Credits", + "revenue": "Revenue Total", + "tpValueFutwiz": "TP Futwiz", + "tpValueEaAverage": "TP EA Average", + "revToday": "Rev Today", + "rev3hours": "Rev 3h", + "rev6hours": "Rev 6h", + "rev12hours": "Rev 12h", + "rev24hours": "Rev 24h", + "rev3days": "Rev 3d", + "rev1week": "Rev 1w", + "rev2weeks": "Rev 2w", + "rev3weeks": "Rev 3w", + "rev4weeks": "Rev 4w", + "rev2months": "Rev 2m", + "rev3months": "Rev 3m", + "revTotal": "Rev Total", + "numSalesToday": "Sales Today", + "numSales3hours": "Sales 3h", + "numSales6hours": "Sales 6h", + "numSales12hours": "Sales 12h", + "numSales24hours": "Sales 24h", + "numSales3days": "Sales 3d", + "numSales1week": "Sales 1w", + "numSales2weeks": "Sales 2w", + "numSales3weeks": "Sales 3w", + "numSales4weeks": "Sales 4w", + "numSales2months": "Sales 2m", + "numSales3months": "Sales 3m", + "numSalesTotal": "Sales Total", + "isDailyProfit": "Daily Profit", + "creationDate": "Creation Date" + }, + "game_account": + { + "view": "Accounts", + "view_detail": "Account", + "profile": "Profile", + "email": "Email", + "credits": "Credits", + "futwiz_value": "Futwiz", + "cnt_items": "# Items", + "cnt_sold_items": "# Sold items", + "cnt_inactive_items": "# Inactive items", + "active": "Active", + "running": "Running", + "blocked": "Blocked", + "sniping": "Sniping", + "tm_off": "TM off", + "relist_date": "Relist date", + "creation_date": "Creation date", + "relist": "Relist", + "lockedMsg": "Locked Message", + "dynPrices": "Dynamic Prices", + "newBuy": "New Buy", + "newBuySelective": "New Buy Sel.", + "reBuy": "Re Buy", + "importWatchlist": "Import Watchlist", + "autoReBuy": "Auto Re Buy", + "directReBuy": "Direct Re Buy", + "tmOpen": "TM Open", + "dead": "Dead", + "itemMaxBuyPrice": "Item Max Buy Price", + "emailPw": "Email Password", + "eaCode1": "EA Code 1", + "eaCode2": "EA Code 2", + "eaCode3": "EA Code 3", + "eaCode4": "EA Code 4", + "eaCode5": "EA Code 5", + "eaCode6": "EA Code 6", + "revenue": "Revenue", + "futWizValue": "FutBin Value", + "cntItems": "CNT Items", + "cntSoldItems": "CNT Sold Items", + "mfaCode": "MFA Code", + "twoFactorAuthKey": "2FA Auth Key", + "loginVia2faApp": "2FA Auth via app (email is default)", + "creationDate": "Creation Date", + "newBuyDate": "New Buy Date", + "rebuyDate": "Rebuy Date", + "relistDate": "Relist Date", + "snipingDate": "Sniping Date", + "loopStartDate": "Loop start date", + "loopFinishDate": "Loop finish date", + "account": "Account", + "ea_mail": "EA & Mail", + "tradepile_items": "Tradepile items", + "club_items": "Club items", + "sales": "Sales", + "stats": "Stats", + "connect_account": "Connect Account", + "connect_account_confirm": "Do you want to this account to ea now?", + "delete_cache_file": "Delete cachefile", + "delete_cache_file_confirm": "Do you want to delete the cache file of this account?", + "paste_backup_codes": "Paste backup codes here", + "replace_backup_codes": "Replace backup codes", + "contracts": "Contracts" + }, + "candidate": + { + "view": "Candidates", + "firstname": "Firstname", + "lastname": "Lastname", + "nickname": "Nickname", + "rating": "Rating", + "rareFlag": "RareFlag", + "rarityName": "Version", + "eaId": "EA Id", + "eaResourceId": "EA resource ID", + "eaTradeId": "EA Trade ID", + "buy": "Buy", + "relevant": "Relevant", + "prio": "Prio", + "sellBid": "Sell Bid", + "sellStartingBid": "Sell Starting Bid", + "startingBid": "Bid Price", + "lastSalePrice": "Last Sale Price", + "binPrice": "Bin Price", + "sellBin": "Sell Bin", + "listCnt": "# Listed", + "soldCnt": "# Sold", + "stock": "# Stock", + "revenue": "Revenue", + "snipingRevenue": "Sniping Revenue", + "creation_date": "Creation date", + "futwiz_import": "Futwiz / Futbin Import", + "futwiz_import_info": "Please provide data for futwiz & futbin import", + "futwiz": "Futwiz", + "futbin": "Futbin", + "futwiz_import_candidate_link": "Candidate link", + "futwiz_import_update_candidate": "Update candidate if exists", + "futwiz_import_candidate_html": "Futwiz candidate html (full website src html)", + "futwiz_import_candidate_buy": "Buy candidate for overpriced selling", + "futwiz_import_candidate_relevant": "Candidate is relevant overpriced selling", + "futwiz_import_bid": "Overpriced selling Bid", + "futwiz_import_bin": "Overpriced selling BIN", + "futwiz_import_candidate_resource_id": "Resource id (optional)", + "candidate": "Candidate", + "lastFutWizUpdate": "Last Futwiz Update", + "lastFutBinUpdate": "Last FutBin Update", + "lowestBinUpdateDate": "Lowest Bin Update Date", + "creationDate": "Creation Date", + "eaAssetId": "EA Asset ID", + "stock_count_total": "# Stock total", + "stock_count_real": "# Stock real", + "futBinId": "FutBin ID", + "futBinPrice": "FutBin Price", + "futBinSellingPrice": "FutBin Selling Price", + "futWizId": "Futwiz ID", + "futWizPrice": "Futwiz Price", + "marketAverage": "Ø Price", + "minRange": "Min Range", + "maxRange": "Max Range", + "tradeState": "Trade State", + "futWizSellingPrice": "Futwiz Selling Price", + "highestBuyBinPrice": "Highest Buy Bin Price", + "lastFoundMinRange": "Last Found Min Range", + "lastFoundMaxRange": "Last Found Max Range", + "lastFoundLowestBin": "Last Found Lowest Bin", + "maxBuyPrice": "Max Buy Price", + "buyStyle": "Buy Style", + "remove": "Remove", + "newBuySelective": "New Buy Sel.", + "leagueId": "League ID", + "teamId": "Team ID", + "nationId": "Nation ID", + "note": "Note", + "adjust100": "Adjust 100", + "directReBuy": "Direct ReBuy", + "info": "Info", + "stats": "Stats", + "reBought": "Rebought", + "firstListDate": "First List Date", + "tradepile_items": "Tradepile items", + "sales": "Sales", + "stats_acc_cnt": "# Stock", + "stats_revenue_relist_6": "Rev per relist 6h", + "stats_relist_6": "# Relist 6h", + "stats_sold_6": "# Sold 6h", + "stats_revenue_6": "# Rev 6h", + "stats_ratio_6": "# Ratio 6h", + "stats_revenue_relist_12": "Rev per relist 12h", + "stats_relist_12": "# Relist 12h", + "stats_sold_12": "# Sold 12h", + "stats_revenue_12": "# Rev 12h", + "stats_ratio_12": "# Ratio 12h", + "stats_revenue_relist_24": "Rev per relist 24h", + "stats_relist_24": "# Relist 24h", + "stats_sold_24": "# Sold 24h", + "stats_revenue_24": "# Rev 24h", + "stats_ratio_24": "# Ratio 24h", + "stats_revenue_relist_3d": "Rev per relist 3d", + "stats_relist_3d": "# Relist 3d", + "stats_sold_3d": "# Sold 3d", + "stats_revenue_3d": "# Rev 3d", + "stats_ratio_3d": "# Ratio 3d", + "stats_revenue_relist_1w": "Rev per relist 1w", + "stats_relist_1w": "# Relist 1w", + "stats_sold_1w": "# Sold 1w", + "stats_revenue_1w": "# Rev 1w", + "stats_ratio_1w": "# Ratio 1w", + "stats_revenue_relist_2w": "Rev per relist 2w", + "stats_relist_2w": "# Relist 2w", + "stats_sold_2w": "# Sold 2w", + "stats_revenue_2w": "# Rev 2w", + "stats_ratio_2w": "# Ratio 2w", + "stats_revenue_relist_3w": "Rev per relist 3w", + "stats_relist_3w": "# Relist 3w", + "stats_sold_3w": "# Sold 3w", + "stats_revenue_3w": "# Rev 3w", + "stats_ratio_3w": "# Ratio 3w", + "stats_revenue_relist_4w": "Rev per relist 4w", + "stats_relist_4w": "# Relist 4w", + "stats_sold_4w": "# Sold 4w", + "stats_revenue_4w": "# Rev 4w", + "stats_ratio_4w": "# Ratio 4w", + "stats_revenue_relist_overall": "Rev per relist", + "stats_relist_overall": "# Relist", + "stats_sold_overall": "# Sold", + "stats_revenue_overall": "# Rev", + "stats_ratio_overall": "# Ratio", + "stats_last_update": "Last update", + "last6h": "Last 6 hours", + "last12h": "Last 12 hours", + "last24h": "Last 24 hours", + "last3d": "Last 3 days", + "last1w": "Last 1 week", + "last2w": "Last 2 weeks", + "last3w": "Last 3 weeks", + "last4w": "Last 4 weeks", + "overall": "Over all", + "candidateStats": "Candidate Stats" + }, + "tradepile_item": + { + "view": "Tradepile Items", + "item": "Tradepile Item", + "bid": "Starting Bid", + "bin": "Bin Price", + "individualPrice": "Ind. Price", + "min_range": "Min range", + "max_range": "Max range", + "rade_state": "Trade state" + }, + "sales": + { + "view": "Sales", + "account": "Account", + "currentBid": "Sold for", + "revenue": "Revenue", + "creation_date": "Creation date (sold)", + "ea_resource_id": "EA resource id", + "ea_asset_id": "EA asset id", + "ea_id": "EA item id", + "ea_trade_id": "EA trade id", + "list_count": "# Lists", + "first_list_date": "First list date", + "re_bought": "re-bought", + "candidate_item": "Candidate", + "gameAccount": "Game Account", + "lastSalePrice": "Bought for", + "reBought": "Re-bought", + "snipedItem": "Sniped" + }, + "sniping": + { + "view": "Sniping", + "SelectAccounts": "Select accounts", + "SelectedAccounts": "Selected accounts", + "eaResourceId": "Ea resource id", + "snipeTimeMin": "Sniping min time in ms (10-50)", + "snipeTimeMax": "Sniping max time in ms (10-100)", + "buyItemsMax": "Buy max number of items", + "buyBin": "Buy bin price", + "sellBin": "Sell bin price", + "numberOfSnipingRounds": "Number of sniping rounds", + "prepareAccounts": "Prepare accounts", + "resetAccounts": "Reset accounts", + "startSniping": "Start sniping", + "stopSniping": "Stop sniping", + "secondsWaitBetweenRounds": "Pause between rounds in seconds", + "logs": "Sniping Logs", + "priceCheckLogs": "Price check Logs", + "clearMessages": "Clear messages", + "accountName": "Account Name", + "coins": "Coins", + "accounts_prepared": "Accounts prepared!", + "accounts_not_prepared": "Please prepare accounts before sniping!", + "put_on_tp_only": "Put sniped items on tradepile only (don't sell)", + "gapTimeMin": "Gap min time between accounts in ms (10-990)", + "gapTimeMax": "Gap max time between accounts in ms (10-1000)", + "priceCheckBin": "Price check bin", + "doPriceCheck": "Check price & no. of items with next round", + "checkPriceNow": "Check price now", + "updateAccountSnipingCounts": "Update Account sniping counts", + "snipingCnt1h": "1h", + "snipingCnt3h": "3h", + "snipingCnt6h": "6h", + "snipingCnt12h": "12h", + "snipingCnt24h": "24h", + "snipingCnt3d": "3d", + "snipingCnt1w": "1w", + "running": "Run.", + "blocked": "Blo." + }, + "profile": + { + "view": "Profile" + }, + "system": + { + "view": "System", + "config": "System configuration", + "mode_config": "Mode configuration", + "rarities": "Rarities", + "players": "Players", + "import_ea_data": "Import EA data", + "import_ea_data_confirm": "Do you want to import ea data now?", + "import_futwiz_rarities": "Import futwiz ratities", + "import_futwiz_rarities_confirm": "Do you want to import futwiz ratities now?", + "systemActive": "System Active", + "systemRunning": "System Running", + "lastUpdateDate": "Last Update Date", + "lastCheckDate": "Last Check Date", + "sleepHourStart": "Sleep Hour Start", + "sleepHourEnd": "Sleep Hour End", + "checkMaxSales": "Check max Sales", + "numMaxSales": "Num max Sales", + "autoReBuyMinSoldItems": "Auto Re Buy Min Sold Items", + "autoReBuyMinLastHours": "Auto Re Buy Min Last Hours", + "playersHeadline": "Here we display all players from players.json", + "raritiesHeadline": "Here we display all player rarities" + }, + "basic": + { + "logout": "Logout", + "company_name": "FUT Machine", + "users": "Users", + "new": "New", + "edit_before": "", + "edit_after": "Edit", + "details": "Details", + "back": "Back", + "yes": "Yes", + "no": "No", + "dashboard": "Dashboard", + "account": "Account", + "game_account": "Accounts", + "date": "Date", + "time": "Time", + "submit": "Submit", + "image": "Image", + "pleaseChoose": "Please choose", + "refresh": "Refresh", + "filter": "Filter", + "columns": "Columns", + "resetFilters": "Reset Filters", + "showAllColumns": "Show all columns", + "saveSettings": "Save settings", + "id": "Id", + "note": "Note" + }, + "user": + { + "hello": "Hi", + "my": "Meine ", + "email": "Email", + "goals": "Ziele" + }, + "overview": + { + "sort": "Sortierung", + "number": "#", + "logo": "Logo", + "address": "Adresse", + "website": "Website", + "image": "Bild", + "productname": "Produkt", + "storage": "Lagerbestand", + "number_long": "Nummer", + "document": "Dokument", + "type": "Typ", + "uploaded": "Hochgeladen am", + "description": "Beschreibung", + "createdBy": "Erstellt von", + "download": "Download", + "partner": "Partner", + "product": "Produkt", + "sale_user": "Verkäufer", + "sale_partner": "Kunde", + "details": "Details", + "turnover": "Umsatz", + "profit": "Gewinn", + "comment": "Kommentar", + "createdAt": "erstellt am", + "firstName": "Vorname", + "lastName": "Nachname", + "email": "Email", + "unassign": "Zuweisung aufheben", + "compact_view": "Kompaktansicht", + "show_done": "Fertige Aufgaben anzeigen" + }, + "form": + { + "mandatory": " is mandatory", + "email_validation": "Please provide a valid email address", + "name": "Name", + "street": "Straße", + "street_no": "Hausnummer", + "zip": "PLZ", + "city": "Stadt", + "country": "Land", + "website": "Website", + "upload_image": "Bild hochladen", + "upload_file": "Datei hochladen", + "firstname": "Vorname", + "lastname": "Nachname", + "rating": "", + "birthday": "Geburtstag", + "position": "Position", + "password": "Password", + "email": "Email", + "phone": "Telefon", + "description": "Beschreibung", + "headline": "Überschrift", + "message": "Nachricht", + "comment": "Kommentar", + "assign_to": "Zuweisen an", + "due_date": "Fälligkeitsdatum", + "prio": "Priorität", + "prio_low": "niedrig", + "prio_medium": "mittel", + "prio_high": "hoch", + "partner": "Partner", + "product": "Produkt", + "turnover": "Umsatz", + "profit": "Gewinn", + "quantity": "Anzahl", + "send": "Speichern", + "search_placeholder": "Suche", + "no_data": "Keine Datensätze gefunden.", + "contact_type": "Kontaktart", + "user": "Benutzer", + "contact": "Kontakt", + "itemMaxBuyPrice_min_error": "Der Wert muss mindestens 0 sein.", + "itemMaxBuyPrice_max_error": "Der Wert darf höchstens 15.000.000 sein.", + "email-validation": "Geben Sie eine gültige E-Mail-Adresse ein", + "profile": "Profile", + "eaCode1": "EA Code 1", + "eaCode2": "EA Code 2", + "eaCode3": "EA Code 3", + "eaCode4": "EA Code 4", + "eaCode5": "EA Code 5", + "eaCode6": "EA Code 6" + }, + "errors": + { + "sellPriceBinSellStartingBid": "Sell Bin must not be null when Sell Starting Bid is filled", + "sellStartingBidSellPriceBin": "Sell Starting Bid must not be null when Sell Bin is filled", + "sellStartingBidSmallerLastFoundMinRange": "Sell Starting Bid is smaller than Last Found Min Range", + "sellPriceBinLargerLastFoundMaxRange": "Sell Bin is larger than Last Found Max Range", + "sellPriceBinSmallerSellStartingBid": "Sell Bin is smaller or same than Sell Starting Bid", + "sellStartingBidLargerSellPriceBin": "Sell Starting Bid is larger or same than Sell Bin", + "lastFoundMaxRangeSmallerLastFoundMinRange": "Last Found Max Range is smaller or same than Last Found Min Range", + "lastFoundMinRangeLargerLastFoundMaxRange": "Last Found Min Range is larger or same than Last Found Max Range", + "lastFoundMaxRangeLastFoundMinRange": "Last Found Max Range must not be null when Last Found Min Range is filled", + "lastFoundMinRangeLastFoundMaxRange": "Last Found Min Range must not be null when Last Found Max Range is filled", + "buyBinEmpty": "Buy Bin Price must not be null", + "sellBinEmpty": "Sell Bin Price must not be null", + "snipeTimeMinSnipeTimeMax": "Sniping Min Time must be smaller than Sniping Max Time", + "buyBinSellBin": "Buy Bin Price must be smaller than Sell Bin Price", + "snipeNoAccountsSelected": "No accounts selected to snipe" + }, + "logs": + { + "view": "Logs", + "message": "Message", + "logType": "Type" + } +} \ No newline at end of file diff --git a/angular/src/assets/images/icons/customer.svg b/angular/src/assets/images/icons/customer.svg new file mode 100644 index 0000000..e06238b --- /dev/null +++ b/angular/src/assets/images/icons/customer.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/angular/src/assets/images/icons/details.svg b/angular/src/assets/images/icons/details.svg new file mode 100644 index 0000000..abd34a0 --- /dev/null +++ b/angular/src/assets/images/icons/details.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/angular/src/assets/images/icons/document.svg b/angular/src/assets/images/icons/document.svg new file mode 100644 index 0000000..0ead5c6 --- /dev/null +++ b/angular/src/assets/images/icons/document.svg @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/angular/src/assets/images/icons/dummy-company.png b/angular/src/assets/images/icons/dummy-company.png new file mode 100644 index 0000000..895c0bb Binary files /dev/null and b/angular/src/assets/images/icons/dummy-company.png differ diff --git a/angular/src/assets/images/icons/dummy-person.png b/angular/src/assets/images/icons/dummy-person.png new file mode 100644 index 0000000..5fc23ab Binary files /dev/null and b/angular/src/assets/images/icons/dummy-person.png differ diff --git a/angular/src/assets/images/icons/dummy-product.png b/angular/src/assets/images/icons/dummy-product.png new file mode 100644 index 0000000..fd0d97c Binary files /dev/null and b/angular/src/assets/images/icons/dummy-product.png differ diff --git a/angular/src/assets/images/icons/icon-round-danger.svg b/angular/src/assets/images/icons/icon-round-danger.svg new file mode 100644 index 0000000..084f6a0 --- /dev/null +++ b/angular/src/assets/images/icons/icon-round-danger.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/angular/src/assets/images/icons/icon-round-info.svg b/angular/src/assets/images/icons/icon-round-info.svg new file mode 100644 index 0000000..46060fe --- /dev/null +++ b/angular/src/assets/images/icons/icon-round-info.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/angular/src/assets/images/icons/icon-round-success.svg b/angular/src/assets/images/icons/icon-round-success.svg new file mode 100644 index 0000000..4c57458 --- /dev/null +++ b/angular/src/assets/images/icons/icon-round-success.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/angular/src/assets/images/icons/icon-round-warning.svg b/angular/src/assets/images/icons/icon-round-warning.svg new file mode 100644 index 0000000..fd3a844 --- /dev/null +++ b/angular/src/assets/images/icons/icon-round-warning.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/angular/src/assets/images/icons/logo-futbin.png b/angular/src/assets/images/icons/logo-futbin.png new file mode 100644 index 0000000..f9d0da4 Binary files /dev/null and b/angular/src/assets/images/icons/logo-futbin.png differ diff --git a/angular/src/assets/images/icons/logo-futwiz.png b/angular/src/assets/images/icons/logo-futwiz.png new file mode 100644 index 0000000..40418d9 Binary files /dev/null and b/angular/src/assets/images/icons/logo-futwiz.png differ diff --git a/angular/src/assets/images/icons/product.svg b/angular/src/assets/images/icons/product.svg new file mode 100644 index 0000000..5861c29 --- /dev/null +++ b/angular/src/assets/images/icons/product.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/angular/src/assets/images/icons/profile.svg b/angular/src/assets/images/icons/profile.svg new file mode 100644 index 0000000..01790b5 --- /dev/null +++ b/angular/src/assets/images/icons/profile.svg @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/angular/src/assets/images/icons/sale.svg b/angular/src/assets/images/icons/sale.svg new file mode 100644 index 0000000..e0f5c6f --- /dev/null +++ b/angular/src/assets/images/icons/sale.svg @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/angular/src/assets/images/icons/service.svg b/angular/src/assets/images/icons/service.svg new file mode 100644 index 0000000..63bc8d8 --- /dev/null +++ b/angular/src/assets/images/icons/service.svg @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + + + + diff --git a/angular/src/assets/images/icons/supplier.svg b/angular/src/assets/images/icons/supplier.svg new file mode 100644 index 0000000..da992d8 --- /dev/null +++ b/angular/src/assets/images/icons/supplier.svg @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/angular/src/assets/images/icons/task.svg b/angular/src/assets/images/icons/task.svg new file mode 100644 index 0000000..1ffa2df --- /dev/null +++ b/angular/src/assets/images/icons/task.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/angular/src/assets/images/icons/user.svg b/angular/src/assets/images/icons/user.svg new file mode 100644 index 0000000..9c68ff0 --- /dev/null +++ b/angular/src/assets/images/icons/user.svg @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + + diff --git a/angular/src/assets/images/specific/futcoinbase.jpg b/angular/src/assets/images/specific/futcoinbase.jpg new file mode 100644 index 0000000..78ead9a Binary files /dev/null and b/angular/src/assets/images/specific/futcoinbase.jpg differ diff --git a/angular/src/assets/scss/_accordion.scss b/angular/src/assets/scss/_accordion.scss new file mode 100644 index 0000000..e69de29 diff --git a/angular/src/assets/scss/_basics.scss b/angular/src/assets/scss/_basics.scss new file mode 100644 index 0000000..df41c58 --- /dev/null +++ b/angular/src/assets/scss/_basics.scss @@ -0,0 +1,858 @@ +/* montserrat-regular - latin */ +@font-face { + font-display: swap; /* Check https://developer.mozilla.org/en-US/docs/Web/CSS/@font-face/font-display for other options. */ + font-family: 'Montserrat'; + font-style: normal; + font-weight: 400; + src: url('../fonts/montserrat-v26-latin-regular.woff2') format('woff2'); /* Chrome 36+, Opera 23+, Firefox 39+, Safari 12+, iOS 10+ */ +} + +/* montserrat-italic - latin */ +@font-face { + font-display: swap; /* Check https://developer.mozilla.org/en-US/docs/Web/CSS/@font-face/font-display for other options. */ + font-family: 'Montserrat'; + font-style: italic; + font-weight: 400; + src: url('../fonts/montserrat-v26-latin-italic.woff2') format('woff2'); /* Chrome 36+, Opera 23+, Firefox 39+, Safari 12+, iOS 10+ */ +} + +/* montserrat-600 - latin */ +@font-face { + font-display: swap; /* Check https://developer.mozilla.org/en-US/docs/Web/CSS/@font-face/font-display for other options. */ + font-family: 'Montserrat'; + font-style: normal; + font-weight: 600; + src: url('../fonts/montserrat-v26-latin-600.woff2') format('woff2'); /* Chrome 36+, Opera 23+, Firefox 39+, Safari 12+, iOS 10+ */ +} + +/* montserrat-600italic - latin */ +@font-face { + font-display: swap; /* Check https://developer.mozilla.org/en-US/docs/Web/CSS/@font-face/font-display for other options. */ + font-family: 'Montserrat'; + font-style: italic; + font-weight: 600; + src: url('../fonts/montserrat-v26-latin-600italic.woff2') format('woff2'); /* Chrome 36+, Opera 23+, Firefox 39+, Safari 12+, iOS 10+ */ +} + +/* montserrat-800 - latin */ +@font-face { + font-display: swap; /* Check https://developer.mozilla.org/en-US/docs/Web/CSS/@font-face/font-display for other options. */ + font-family: 'Montserrat'; + font-style: normal; + font-weight: 800; + src: url('../fonts/montserrat-v26-latin-800.woff2') format('woff2'); /* Chrome 36+, Opera 23+, Firefox 39+, Safari 12+, iOS 10+ */ +} + +/* montserrat-800italic - latin */ +@font-face { + font-display: swap; /* Check https://developer.mozilla.org/en-US/docs/Web/CSS/@font-face/font-display for other options. */ + font-family: 'Montserrat'; + font-style: italic; + font-weight: 800; + src: url('../fonts/montserrat-v26-latin-800italic.woff2') format('woff2'); /* Chrome 36+, Opera 23+, Firefox 39+, Safari 12+, iOS 10+ */ +} + +/* material-icons-regular - latin */ +@font-face { + font-display: swap; /* Check https://developer.mozilla.org/en-US/docs/Web/CSS/@font-face/font-display for other options. */ + font-family: 'Material Icons'; + font-style: normal; + font-weight: 400; + src: url('../fonts/material-icons-v142-latin-regular.woff2') format('woff2'); /* Chrome 36+, Opera 23+, Firefox 39+, Safari 12+, iOS 10+ */ +} + +html, body { + height: 100%; +} + +body { + margin: 0; + font-family: "Montserrat", "Helvetica Neue", sans-serif; + background: #2b3a44; +} + +.app-container { + border-top: 5px solid #c1c1c1; + min-height: 500px; + overflow: hidden; + color: #fff; +} + +label, +.form-label { + font-size: 13px; + margin-bottom: 5px !important; + a { + color: rgba(33, 37, 41); + } +} + +h1 { + .icons { + align-self: center; + display: flex; + padding-left: 20px; + + a { + padding-left: 10px; + display: block; + } + + img { + width: 24px; + height: auto; + } + } +} + +img { + display: block; + max-width: 100%; + width: auto; + height: auto; +} + +.logo { + img { + max-height: 60px; + width: auto; + } +} + +textarea#pasteCodes { + min-height: 200px; +} + +.error { + background: #f00; + color: #fff; + padding: 5px 10px; + margin: 0 0 10px 0; +} + +.alert-box { + position: fixed; + right: 20px; + top: 20px; + z-index: 9998; + + .alert { + position: relative; + max-width: 450px; + padding-left: 40px; + + &:after { + content: ""; + position: absolute; + left: 10px; + top: 16px; + width: 20px; + height: 20px; + background-size: 20px auto; + } + + &.alert-success:after { + background: transparent url("../images/icons/icon-round-success.svg") no-repeat left top; + } + + &.alert-danger:after { + background: transparent url("../images/icons/icon-round-danger.svg") no-repeat left top; + } + + &.alert-info:after { + background: transparent url("../images/icons/icon-round-info.svg") no-repeat left top; + } + + &.alert-warning:after { + background: transparent url("../images/icons/icon-round-warning.svg") no-repeat left top; + } + } + + .alerts-remove { + padding-left: 16px; + cursor: pointer; + background: #6d757c; + @include transition(); + + &:hover { + background: #2b3b44; + } + } +} + +.navbar-primary { + background: #f6f6f6; +} + +.card { + border-radius: 0; + border: none; + + .card-header:first-child { + border-radius: 0; + } +} + +.icon-mini { + height: 15px; + display: inline; + margin-right: 6px; + margin-top: -2px; +} + +.spt-main { + min-height: calc(100vh - 126px); + background: #fff; + color: rgba(33, 37, 41); + width: 85.5%; + min-width: calc(100% - 200px); + @media only screen and (max-width: 1199px) { + width: auto; + //width: calc(100% - calc(var(--bs-gutter-x) * 0.5) - calc(var(--bs-gutter-x) * 0.5)); + } +} + +.spt-container { + position: relative; + min-height: 1px; + margin-bottom: 3rem; + + .top-btn { + display: flex; + justify-content: flex-end; + } + + .card:not(.contacts .card, .tasks .card, .post .card) { + border: none; + border-radius: 0; + border-top: 1px solid #2B3A44; + border-bottom: 1px solid #2B3A44; + + .card-body { + padding: 5px 0; + + .spt-col { + padding-top: 20px; + } + + .has-image { + border-left: 1px solid #c1c1c1; + display: flex; + align-items: center; + justify-content: center; + + &.image-left { + border-left: none; + border-right: 1px solid #c1c1c1; + } + } + + img { + //margin: 0 auto; + //max-width: 80%; + } + } + + .mat-h1, + .mat-headline-5, + .mat-h2, + .mat-headline-6, + .mat-typography & { + .mat-h1, + .mat-headline-5, + h1, + .mat-h2, + .mat-headline-6, + h2 { + text-transform: none; + font-weight: 600; + } + } + } +} + +.toggle-component { + .spt-container { + background: #fafafa; + margin-bottom: 20px; + } + + .top-btn { + position: absolute; + //right: 0; + //top: -63px; + right: 10px; + top: -53px; + margin: 0; + + .btn { + //padding-top: 17px; + //padding-bottom: 17px; + } + } + + app-paging > .mat-mdc-paginator:first-child { + border: none; + } + + .mat-mdc-cell { + background: #fafafa; + } +} + +.toggle { + background: #dee2e3; + color: #2a3a43; + padding: 14px 10px 14px 83px; + margin-bottom: 3px; + position: relative; + cursor: pointer; + &.small { + padding: 6px 10px 6px 83px; + &:before, + &:after { + top: 14px; + } + } + + h2 { + text-transform: uppercase; + } + + p { + text-transform: uppercase; + } + + * { + margin: 0 !important; + } + + &:before, + &:after { + content: ""; + position: absolute; + top: 28px; + width: 15px; + height: 4px; + background: #2a3a43; + @include transition(); + } + + &:before { + transform: rotate(45deg); + left: 26px; + } + + &:after { + transform: rotate(-45deg); + left: 34px; + } + + &.collapsed { + &:before { + transform: rotate(-45deg); + } + + &:after { + transform: rotate(45deg); + } + } +} + +.dropdown-menu { + border-radius: 0; +} + +.info-box { + display: flex; + justify-content: flex-start; + align-items: center; + @media only screen and (max-width: 767px) { + display: block; + } +} + +.spt-loader-box { + position: fixed; + left: 50%; + top: 50%; + z-index: 9999; + //background: #9eb3c1; + width: 130px; + height: 130px; + //border: 3px solid #2b3a44; + //border-radius: 50%; + transform: translate(-50%, -50%); +} + +.spt-loader { + position: absolute; + left: 50%; + top: 50%; + transform: translate(-50%, -50%); +} + +.spt-loader:after { + content: '$'; + display: inline-block; + width: 96px; + height: 96px; + border-radius: 50%; + text-align: center; + line-height: 80px; + font-size: 64px; + font-weight: bold; + background: #FFD700; + color: #DAA520; + border: 4px double; + box-sizing: border-box; + box-shadow: 2px 2px 2px 1px rgba(0, 0, 0, .1); + animation: coin-flip 4s cubic-bezier(0, 0.2, 0.8, 1) infinite; +} + +@keyframes coin-flip { + 0%, 100% { + animation-timing-function: cubic-bezier(0.5, 0, 1, 0.5); + } + 0% { + transform: rotateY(0deg); + } + 50% { + transform: rotateY(1800deg); + animation-timing-function: cubic-bezier(0, 0.5, 0.5, 1); + } + 100% { + transform: rotateY(3600deg); + } +} + +.table-responsive { + .mat-mdc-row { + height: auto; + } + + .mat-mdc-table .mdc-data-table__cell, + .mat-mdc-table .mdc-data-table__header-cell { + padding: 2px 8px; + } +} + +.search-select { + .hide-header { + table { + thead { + display: block; + } + } + } + .mat-mdc-header-row { + height: auto; + } + img { + width: 30px; + } + + .mat-mdc-paginator-range-actions { + justify-content: flex-end; + flex-wrap: wrap; + margin-right: -15px; + } + + .mat-mdc-paginator-range-label { + text-align: right; + flex-basis: 100%; + flex-grow: 0; + margin: 0 7px 0 0; + } + + .mat-mdc-icon-button.mat-mdc-button-base { + width: 30px; + height: 30px; + padding: 0; + } + + .mat-mdc-table .mdc-data-table__cell, + .mat-mdc-table .mdc-data-table__header-cell { + padding-top: 4px; + padding-bottom: 4px; + } + + .spt-tools.single { + display: none; + } + + .show-name { + position: relative; + + p { + border: 1px solid #dee2e6; + padding: 6px 12px; + font-size: 16px; + line-height: 24px; + min-height: 38px; + cursor: text; + + &.search-empty { + &:before { + content: "Bitte wählen"; + font-style: italic; + color: #999; + } + } + } + } + + .search-toggle { + display: none; + + td { + cursor: pointer; + } + } + + .search-box-open { + display: block; + } +} + +/* Traffic lights */ +.traffic-light { + display: inline-block; + width: 16px; + height: 16px; + border-radius: 50%; + position: relative; + overflow: visible; + + &.has-function { + cursor: pointer; + } +} + +.traffic-light::before { + content: ''; + position: absolute; + top: 0; + left: 0; + right: 0; + bottom: 0; + border-radius: 50%; + background: radial-gradient(circle at 33% 33%, + rgba(255, 255, 255, 0.3) 0%, + rgba(255, 255, 255, 0.1) 15%, + rgba(255, 255, 255, 0) 60%); +} + +.traffic-light.red { + background-color: #e74c3c; +} + +.traffic-light.green { + background-color: #2ecc71; +} + +.traffic-light::after { + content: ''; + position: absolute; + top: -1px; + left: -1px; + right: -1px; + bottom: -1px; + border-radius: 50%; + opacity: 0.7; + filter: blur(2px); + animation: glow 2s infinite ease-in-out; +} + +.traffic-light.red::after { + background-color: #e74c3c; +} + +.traffic-light.green::after { + background-color: #2ecc71; +} + +@keyframes glow { + 0%, 100% { + opacity: 0.4; + transform: scale(1); + } + 50% { + opacity: 0.7; + transform: scale(1.05); + } +} + +.switch-widget { + .switch { + position: relative; + display: inline-block; + width: 54px; + height: 28px; + margin: 0 !important; + input { + opacity: 0; + width: 0; + height: 0; + } + } + .slider { + position: absolute; + cursor: pointer; + top: 0; + left: 0; + right: 0; + bottom: 0; + background-color: #ccc; + transition: .4s; + &:before { + position: absolute; + content: ""; + height: 20px; + width: 20px; + left: 4px; + bottom: 4px; + background-color: white; + transition: .4s; + } + } + input:checked + .slider { + background-color: #2ecc71; + } + input:checked + .slider:before { + transform: translateX(26px); + } + .slider.round { + border-radius: 34px; + } + .slider.round:before { + border-radius: 50%; + } +} + +input[readonly], input:disabled { + background: #ffeaea !important; +} + +.mat-mdc-option { + .mdc-list-item__primary-text { + position: relative; + z-index: 100; + } +} + +.combined-images { + position: relative; + width: 300px; + height: 355px; + + .mat-mdc-cell & { + width: 60px; + height: 71px; + + .rating { + font-size: 10px; + line-height: 13px; + } + .lastname { + top: 75%; + font-size: 8px; + line-height: 10px; + letter-spacing: -0.03em; + } + } + + img { + width: 100%; + height: auto; + } + + .imgBg { + + } + + .imgFront { + position: absolute; + //left: 50%; + //top: 50%; + //transform: translate(-50%, -50%); + right: 0; + bottom: 0; + transform: translate(-10%,-46.3%); + width: 65%; + } + + .rating { + position: absolute; + left: 15%; + top: 27%; + color: #000; + font-weight: 600; + font-size: 30px; + line-height: 39px; + } + + .lastname { + position: absolute; + left: 10%; + top: 76%; + width: 80%; + max-height: 30%; + overflow: hidden; + text-align: center; + color: #000; + font-weight: 600; + font-size: 22px; + line-height: 26px; + } +} + +.spt-dl { + display: flex; + flex-wrap: wrap; + justify-content: space-between; + + dt { + width: 50%; + padding: 7px 0; + border-top: 1px solid #2b3a44; + + &:first-of-type { + border: none; + } + } + + dd { + width: 50%; + margin: 0; + padding: 7px 0; + text-align: right; + border-top: 1px solid #2b3a44; + + &:first-of-type { + border: none; + } + } +} + +.spt-mini-list { + li { + padding: 7px 0; + border-top: 1px solid #2b3a44; + display: flex; + flex-wrap: wrap; + justify-content: flex-start; + align-items: center; + + &:first-child { + border: none; + } + > div { + display: flex; + justify-content: flex-start; + align-items: center; + padding-left: 20px; + div { + &:first-child { + min-width: 300px; + } + } + } + } +} + +.sniping-accounts { + border-bottom: 1px solid #2B3A44; +} + +.sniping-accounts-selected { + li { + list-style: none; + display: flex; + align-items: center; + border-top: 1px solid #2B3A44; + padding: 5px 0; + + &:first-child { + border: none; + } + + .first { + width: 37px; + margin-right: 10px; + } + + .btn { + padding-top: 0; + padding-bottom: 0; + } + + div { + display: flex; + justify-content: space-between; + width: 100%; + + span { + + } + } + } +} + +.log-area { + overflow: auto; + border: 1px solid #2b3b44; + padding: 10px 0; + max-height: 600px; + ul { + margin-right: 20px; + li { + border-bottom: 1px solid #eee; + padding: 3px 0; + } + } + p { + margin-bottom: 0; + } +} + +.overlayed { + .search-toggle { + width: calc(400% + 72px); + @media only screen and (max-width: 991px) { + width: calc(300% + 48px); + } + @media only screen and (max-width: 767px) { + width: calc(200% + 24px); + } + @media only screen and (max-width: 575px) { + width: 100%; + } + } +} + +.top-button-row { + margin-top: -50px; + @media only screen and (max-width: 575px) { + margin-top: 0; + } +} + +.active-filter-count { + font-size: 16px; + color: $color-matsen; +} + +#c-btn { + @media only screen and (max-width: 1199px) { + display: none; + } +} + +#go-back { + .left-handed & { + @media only screen and (max-width: 1199px) { + margin-left: 70px; + } + } +} \ No newline at end of file diff --git a/angular/src/assets/scss/_button.scss b/angular/src/assets/scss/_button.scss new file mode 100644 index 0000000..ea64004 --- /dev/null +++ b/angular/src/assets/scss/_button.scss @@ -0,0 +1,110 @@ +.btn { + border-radius: 0; + white-space: nowrap; + @include transition(); +} + +.btn-primary { + background-color: $color-matsen; + border-color: $color-matsen; + &:hover, + &:focus, + &:active { + background-color: $color-matsen-dark !important; + border-color: $color-matsen-dark !important; + } +} + +body { + .spt-btn-low { + background-color: #a7adb1 !important; + &:hover { + background-color: #75797c !important; + } + } +} + +.btn-delete-user { + width: 40px; + text-align: center; + box-sizing: content-box; +} + +[data-type="action-icon"] { + font-size: 20px; +} + +[data-type="user-tool"] { + cursor: pointer; + font-size: 20px; + @include transition(); + + &:not(.btn):hover { + color: $color-matsen; + } + &.btn { + &:hover { + background-color: $color-matsen; + } + } +} + +[data-action="edit"] { + right: 0; + bottom: 0; + width: auto; +} + +[data-action="follow"] { + right: 0; + top: 0; + width: auto; + background: $color-matsen; + color: #fff; + &:before { + @include transition(); + } + + &:hover:before { + content: "\f415"; + color: #fff; + } + + &.user-follows { + &:hover:before { + content: "\f417"; + color: #fff; + } + } +} + +.badge { + border-radius: 0; + background: #2b3b44 !important; + font-weight: 400; + text-transform: uppercase; + @include transition(); + &:hover { + background: #556169 !important; + } +} + +.spt-icon-details { + display: block; + width: 32px; + height: 32px; + background: #2e3a43 url("/assets/images/icons/details.svg") no-repeat center center; + background-size: 20px auto; + border-color: #2e3a43; + &:hover { + background-color: #6d757c !important; + border-color: #6d757c !important; + } +} + +.spt-icon-unassign { + display: inline-block; + width: 20px; + height: 30px; + @include delete-image(); +} \ No newline at end of file diff --git a/angular/src/assets/scss/_contacts.scss b/angular/src/assets/scss/_contacts.scss new file mode 100644 index 0000000..a564776 --- /dev/null +++ b/angular/src/assets/scss/_contacts.scss @@ -0,0 +1,25 @@ +.contacts { + .row:not(.card .row) { + border-top: 1px solid #2B3A44; + padding-bottom: 20px; + } + .card { + background: #f2f2f2; + border-top: 2px solid #c1c1c1; + margin-top: 20px; + height: calc(100% - 20px); + } + .spt-contact-box { + position: relative; + .badge { + position: absolute; + right: 0; + bottom: 0; + } + } + img { + object-fit: cover; + height: 120px; + width: 100%; + } +} \ No newline at end of file diff --git a/angular/src/assets/scss/_dark.scss b/angular/src/assets/scss/_dark.scss new file mode 100644 index 0000000..ccec16d --- /dev/null +++ b/angular/src/assets/scss/_dark.scss @@ -0,0 +1,62 @@ +.dark-mode { + .navbar-primary, + .spt-main, + .mat-mdc-table, + .mat-elevation-z8 th, .mat-mdc-elevation-specific.mat-elevation-z8 th, + .card { + background: #2b3a44 !important; + } + + h6, .h6, h5, .h5, h4, .h4, h3, .h3, h2, .h2, h1, .h1, + .mat-mdc-select, + .mat-mdc-select-arrow svg, + .mat-mdc-icon-button, + .mat-mdc-row, + .mat-mdc-header-row, + .toggle p, + .form-label, + .mat-mdc-tab .mdc-tab__text-label, .mat-mdc-tab:hover .mdc-tab__text-label, + .spt-dl dt, + .spt-dl dd, + .form-control, + .form-control::placeholder, + .spt-main, + select, + label a, + .form-label a, + .card-body { + color: #fff !important; + } + + .mat-mdc-paginator-icon { + fill: #fff; + } + + .toggle:before, .toggle:after { + background: #fff; + } + .spt-dl dt, + .spt-dl dd, + .mat-mdc-cell, + .spt-container .card:not(.contacts .card, .tasks .card, .post .card) { + border-color: #fff; + } + .mat-mdc-icon-button[disabled] .mat-mdc-paginator-icon { + fill: #3e525f; + } + .mat-mdc-tab-list .mat-ripple { + background: #4e697b; + } + .mat-mdc-table .mat-mdc-row:hover .mdc-data-table__cell, + .toggle, + .mat-mdc-tab-list .mdc-tab-indicator--active .mat-ripple { + background: #3e525f; + } + .spt-icon-details { + border-color: #3e525f; + } + .form-control, + select { + background: #1d262d !important; + } +} \ No newline at end of file diff --git a/angular/src/assets/scss/_form.scss b/angular/src/assets/scss/_form.scss new file mode 100644 index 0000000..656c7a8 --- /dev/null +++ b/angular/src/assets/scss/_form.scss @@ -0,0 +1,36 @@ +.form-control { + border-radius: 0; + padding: 0.4rem 0.5rem; + font-size: 13px; +} + +.spt-form { + .delete-image { + display: flex; + justify-content: flex-start; + align-items: center; + cursor: pointer; + padding: 2px 0; + @include transition(); + &:hover { + background: $color-matsen; + color: #fff; + } + img { + width: 40px; + height: 40px; + object-fit: cover; + } + p { + margin: 0; + } + } +} + +.mini-check { + margin-right: 10px; + + .form-label { + margin: 0 !important; + } +} + diff --git a/angular/src/assets/scss/_mixins.scss b/angular/src/assets/scss/_mixins.scss new file mode 100644 index 0000000..b7e1700 --- /dev/null +++ b/angular/src/assets/scss/_mixins.scss @@ -0,0 +1,25 @@ +@mixin transition { + transition: all 0.3s ease-out; +} + +@mixin delete-image { + position: relative; + cursor: pointer; + &:before, &:after { + content: ""; + position: absolute; + left: 50%; + top: 50%; + width: 10px; + height: 2px; + background: #000; + } + + &:before { + transform: translate(-50%, -50%) rotate(45deg); + } + + &:after { + transform: translate(-50%, -50%) rotate(-45deg); + } +} \ No newline at end of file diff --git a/angular/src/assets/scss/_modal.scss b/angular/src/assets/scss/_modal.scss new file mode 100644 index 0000000..10d94b1 --- /dev/null +++ b/angular/src/assets/scss/_modal.scss @@ -0,0 +1,30 @@ +.modal { + cursor: not-allowed; +} +.modal-dialog { + margin-top: 3rem; + margin-bottom: 3rem; + cursor: auto; +} +.modal-content { + padding: 1rem; + &:before, + &:after { + content: ""; + display: block; + width: 30px; + height: 3px; + position: absolute; + right: 0; + top: -30px; + pointer-events: none; + background: #fff; + cursor: pointer; + } + &:before { + transform: rotate(45deg); + } + &:after { + transform: rotate(-45deg); + } +} \ No newline at end of file diff --git a/angular/src/assets/scss/_sales.scss b/angular/src/assets/scss/_sales.scss new file mode 100644 index 0000000..c702c50 --- /dev/null +++ b/angular/src/assets/scss/_sales.scss @@ -0,0 +1,60 @@ +.sales-summary-container { + + .sales-summary-bar { + background: #f2f2f2; + color: #fff; + div { + animation: expand 2.5s ease; + span { + display: block; + padding: 10px 13px; + white-space: nowrap; + } + } + } + .sales-summary-turnover { + background: #2b3a44; + //background: rgb(45,209,159); + //background: linear-gradient(109deg, rgba(45,209,159,1) 0%, rgba(64,208,203,1) 36%, rgba(44,138,181,1) 100%); + } + .sales-summary-profit { + background: #589476; + background: linear-gradient(109deg, #589476 0%, #a9ebaa 100%); + //background: rgb(179,208,47); + //background: linear-gradient(109deg, rgba(179,208,47,1) 0%, rgba(64,208,70,1) 36%, rgba(44,181,91,1) 100%); + } +} + +@keyframes expand { + from { + width: 0; + } + to { + width: 100%; + } +} + +.mat-mdc-tab-list .mat-ripple { + background: #f6f6f6; +} +.mat-mdc-tab-list .mdc-tab-indicator--active .mat-ripple { + background: #f2f2f2; +} +.mat-ripple:not(:empty) { + background: #f6f6f6; +} +.mat-mdc-tab .mdc-tab__text-label, +.mat-mdc-tab:hover .mdc-tab__text-label { + color: #000 !important; +} +.mat-mdc-tab .mdc-tab-indicator__content--underline, +.mat-mdc-tab.mdc-tab--active:hover .mdc-tab-indicator__content--underline { + border-color: $color-matsen !important; +} +.mat-mdc-tab.mdc-tab--active .mdc-tab__text-label, +.mat-mdc-tab.mdc-tab--active:hover .mdc-tab__text-label { + color: $color-matsen !important; +} +.mat-mdc-tab-body { + padding-top: 30px; +} \ No newline at end of file diff --git a/angular/src/assets/scss/_sidebar.scss b/angular/src/assets/scss/_sidebar.scss new file mode 100644 index 0000000..f6d0ccc --- /dev/null +++ b/angular/src/assets/scss/_sidebar.scss @@ -0,0 +1,170 @@ +#btn-sidebar { + @media only screen and (min-width: 1200px) { + display: none; + } + position: absolute; + right: 28px; + top: 24px; + width: 34px; + height: 20px; + padding: 0; + cursor: pointer; + @include transition(); + .left-handed & { + right: auto; + left: 28px; + } + + &:before, &:after { + content: ""; + display: block; + position: absolute; + left: 0; + top: 0; + width: 100%; + } + + &:before { + height: 11px; + border-top: 2px solid rgb(43, 58, 68); + border-bottom: 2px solid rgb(43, 58, 68); + } + + &:after { + top: 18px; + height: 2px; + background: rgb(43, 58, 68); + } + + &.nav-open { + right: 228px; + .left-handed & { + right: auto; + left: 228px; + } + } +} + +.spt-sidebar { + position: relative; + padding: 0; + width: 14.5%; + max-width: 200px; + @include transition(); + @media only screen and (max-width: 1199px) { + position: absolute; + right: -248px; + top: 0; + z-index: 100; + background: rgb(43, 58, 68); + width: 260px; + height: 100%; + &.nav-open { + right: 12px; + .left-handed & { + right: auto; + left: 12px; + } + } + } + + .card { + background: transparent; + color: #fff; + border-bottom: 1px solid #fff; + width: 100%; + text-decoration: none; + + &:hover { + background: #556169; + } + + .card-body { + min-height: 50px; + text-transform: uppercase; + text-align: right; + + h3 { + right: 10px; + bottom: 10px; + } + } + + &.active { + background: #556169; + + .card-body { + min-height: 100px; + position: relative; + + //&:before { + // content: ""; + // position: absolute; + // left: 20px; + // top: 50%; + // transform: translate(0, -50%); + // width: 65px; + // height: 100%; + // filter: brightness(600%); + // border-right: 1px solid #fff; + //} + // + //&[data-cat="customer"]:before { + // background: transparent url("/assets/images/icons/customer.svg") no-repeat left center; + // background-size: 45px auto; + //} + // + //&[data-cat="supplier"]:before { + // background: transparent url("/assets/images/icons/supplier.svg") no-repeat left center; + // background-size: 45px auto; + //} + // + //&[data-cat="service"]:before { + // background: transparent url("/assets/images/icons/service.svg") no-repeat left center; + // background-size: 45px auto; + //} + // + //&[data-cat="product"]:before { + // background: transparent url("/assets/images/icons/product.svg") no-repeat left center; + // background-size: 45px auto; + //} + // + //&[data-cat="task"]:before { + // background: transparent url("/assets/images/icons/task.svg") no-repeat left center; + // background-size: 45px auto; + //} + // + //&[data-cat="document"]:before { + // background: transparent url("/assets/images/icons/document.svg") no-repeat left center; + // background-size: 45px auto; + //} + // + //&[data-cat="sale"]:before { + // background: transparent url("/assets/images/icons/sale.svg") no-repeat left center; + // background-size: 45px auto; + //} + // + //&[data-cat="profile"]:before { + // background: transparent url("/assets/images/icons/profile.svg") no-repeat left center; + // background-size: 45px auto; + //} + // + //&[data-cat="user"]:before { + // background: transparent url("/assets/images/icons/user.svg") no-repeat left center; + // background-size: 45px auto; + //} + + h3 { + bottom: 50%; + transform: translate(0, 50%); + } + } + } + } + + .nav { + li { + margin: 0 !important; + } + } +} \ No newline at end of file diff --git a/angular/src/assets/scss/_table.scss b/angular/src/assets/scss/_table.scss new file mode 100644 index 0000000..85bf9d4 --- /dev/null +++ b/angular/src/assets/scss/_table.scss @@ -0,0 +1,126 @@ +.table-responsive { + display: block; + width: 100%; + overflow-x: auto; +} + +table { + width: 100%; + + img { + width: 40px; + height: auto; + } +} + +th.mat-sort-header-sorted { + color: black; +} + +.mat-mdc-table { + .mdc-data-table__cell, + .mdc-data-table__header-cell { + padding-top: 8px; + padding-bottom: 8px; + @include transition(); + } + + .mat-mdc-row { + &:hover { + .mdc-data-table__cell { + background: #f6f6f6; + } + } + } +} + +.mat-elevation-z8, +.mat-mdc-elevation-specific.mat-elevation-z8 { + box-shadow: none; + + th { + background: #f2f2f2 !important; + border-top: 1px solid #304049; + font-weight: 600; + } +} + +.spt-tools { + display: flex; + flex-wrap: wrap; + justify-content: space-between; + align-items: center; + border-top: 1px solid #2b3a44; + min-height: 57px; + padding: 5px 0; + + &.single { + justify-content: flex-end; + } +} + +.spt-clear { + @include delete-image(); + position: absolute; + right: 10px; + top: 50%; + background: #fff; + width: 20px; + height: 30px; + transform: translate(0, -50%); +} + +.spt-no-entries { + padding: 20px 16px; +} + +.mat-mdc-paginator { + background: transparent !important; + + .mat-mdc-paginator-container { + display: flex; + justify-content: flex-start; + } + + .mat-mdc-paginator-page-size-label, + .mat-mdc-paginator-range-label { + color: #C1C1C1; + } + + .mat-mdc-text-field-wrapper { + border-radius: 0; + } + + .mdc-text-field--outlined:not(.mdc-text-field--disabled) .mdc-notched-outline .mdc-notched-outline__leading, + .mdc-text-field--outlined:not(.mdc-text-field--disabled) .mdc-notched-outline .mdc-notched-outline__notch, + .mdc-text-field--outlined:not(.mdc-text-field--disabled) .mdc-notched-outline .mdc-notched-outline__trailing { + border: none; + } + + .mat-mdc-header-cell { + border: none; + } + + .mat-mdc-cell { + border-bottom: 1px solid #c1c1c1; + } + + tbody { + tr:first-child { + td { + + } + } + } +} + +app-paging > .mat-mdc-paginator:first-child { + border-width: 4px; +} + +.spt-button-td { + width: 85px; +} +.spt-version-td { + min-width: 160px; +} \ No newline at end of file diff --git a/angular/src/assets/scss/_tasks-posts.scss b/angular/src/assets/scss/_tasks-posts.scss new file mode 100644 index 0000000..da89642 --- /dev/null +++ b/angular/src/assets/scss/_tasks-posts.scss @@ -0,0 +1,103 @@ +.posts .post, +.tasks-box { + border-top: 1px solid #525f66; + padding-top: 3px; + background: #fff; +} +.posts .post, +.tasks { + .card { + background: #fafafa; + &.task-completed { + background: #e5f9e4; + } + .spt-border { + border-left: 1px solid #c1c1c1; + } + } + [data-type="user-tool"]:not(.spt-comments [data-type="user-tool"]) { + right: 0; + top: 5px; + bottom: auto; + } +} + +.spt-comments-box { + right: 0; + bottom: 0; +} +.spt-comments { + margin: 5px 0 0 200px; +} + +.importance { + display: block; + width: 50%; + max-width: 800px; + height: 5px; + position: absolute; + right: 0; + top: 0px; + + &[data-importance="low"] { + background: #77bb33; + } + + &[data-importance="medium"] { + background: #ffee55; + } + + &[data-importance="high"] { + background: #bb1414; + } +} + +.taskCompactModeBox { + position: relative; + padding-left: 20px; + cursor: pointer; + &:before { + content: ""; + position: absolute; + left: 0; + top: 3px; + width: 14px; + height: 14px; + border: 1px solid rgb(33, 37, 41); + } + &.taskCompactMode, + &.taskHideCompleted { + &:after { + content: ""; + position: absolute; + left: 3px; + top: 6px; + width: 8px; + height: 8px; + background: rgb(33, 37, 41); + } + } +} +.spt-compact { + position: relative; + padding-top: 4px; + padding-bottom: 12px; + &:before { + content: ""; + position: absolute; + left: 12px; + top: 0; + height: 1px; + width: calc(100% - 12px); + background: #c1c1c1; + } + //&:after { + // content: ""; + // position: absolute; + // left: 0; + // top: 11px; + // bottom: 19px; + // width: 1px; + // background: #c1c1c1; + //} +} \ No newline at end of file diff --git a/angular/src/assets/scss/_text.scss b/angular/src/assets/scss/_text.scss new file mode 100644 index 0000000..2c12d7e --- /dev/null +++ b/angular/src/assets/scss/_text.scss @@ -0,0 +1,109 @@ +strong { + font-weight: 600; +} + +.mat-h1, +.mat-headline-5, +.mat-typography .mat-h1, +.mat-typography .mat-headline-5, +.mat-typography h1, +.mat-h2, +.mat-headline-6, +.mat-typography .mat-h2, +.mat-typography .mat-headline-6, +.mat-typography h2, +.mat-h3, +.mat-subtitle-1, +.mat-typography .mat-h3, +.mat-typography .mat-subtitle-1, +.mat-typography h3, +.mat-h4, +.mat-body-1, +.mat-typography .mat-h4, +.mat-typography .mat-body-1, +.mat-typography h4, +.mat-h5, +.mat-typography .mat-h5, +.mat-typography h5, +.mat-h6, +.mat-typography .mat-h6, +.mat-typography h6 { + font-family: "Montserrat", "Helvetica Neue", sans-serif !important; + font-weight: 600; +} +.mat-body, +.mat-body-2, +.mat-typography .mat-body, +.mat-typography .mat-body-2, +.mat-typography, +.mat-mdc-header-row, +.mat-mdc-row, +.mdc-data-table__content, +.mat-mdc-paginator, +.mat-mdc-select, +.mat-mdc-option { + font-family: "Montserrat", "Helvetica Neue", sans-serif !important; +} + +.login-form h1, +.home-container .mat-h1, +.home-container .mat-headline-5, +.home-container .mat-typography .mat-h1, +.mat-typography .home-container .mat-headline-5, +.mat-typography .home-container h1 { + text-transform: uppercase; + font-weight: 800; +} + +h2.spt-headline { + text-transform: uppercase; + font-weight: 800; +} + +h3.spt-headline { + background: #2b3a44; + color: #fff; + padding: 2px 10px; +} + +.spt-back-btn { + position: relative; + font-size: 14px; + line-height: 18px; + cursor: pointer; + display: inline-block; + &:before { + content: "< "; + } + &:hover { + text-decoration: underline; + } +} + +dt { + font-weight: 600; +} + +table, +p, +ul, +ol, +dl, +.post h3, +.tasks h3 { + a { + color: $color-matsen; + @include transition(); + &:hover { + color: $color-matsen-dark; + } + } +} +.btn-link { + color: $color-matsen; + cursor: pointer; + @include transition(); + &:hover { + color: $color-matsen-dark; + } +} \ No newline at end of file diff --git a/angular/src/assets/scss/_variables.scss b/angular/src/assets/scss/_variables.scss new file mode 100644 index 0000000..37d39e3 --- /dev/null +++ b/angular/src/assets/scss/_variables.scss @@ -0,0 +1,2 @@ +$color-matsen: rgba(229,38,30,1); +$color-matsen-dark: rgba(160,27,21,1); \ No newline at end of file diff --git a/angular/src/environments/environment.beta.ts b/angular/src/environments/environment.beta.ts new file mode 100644 index 0000000..29e3650 --- /dev/null +++ b/angular/src/environments/environment.beta.ts @@ -0,0 +1,5 @@ +export const environment = { + production: false, + basePath: 'https://futbase.ddev.site:8454', + apiUrl: 'https://futbase.ddev.site:8454/api' +}; diff --git a/angular/src/environments/environment.development.ts b/angular/src/environments/environment.development.ts new file mode 100644 index 0000000..29e3650 --- /dev/null +++ b/angular/src/environments/environment.development.ts @@ -0,0 +1,5 @@ +export const environment = { + production: false, + basePath: 'https://futbase.ddev.site:8454', + apiUrl: 'https://futbase.ddev.site:8454/api' +}; diff --git a/angular/src/environments/environment.prod.ts b/angular/src/environments/environment.prod.ts new file mode 100644 index 0000000..7b71a3b --- /dev/null +++ b/angular/src/environments/environment.prod.ts @@ -0,0 +1,5 @@ +export const environment = { + production: true, + basePath: '', + apiUrl: '' +}; diff --git a/angular/src/environments/environment.ts b/angular/src/environments/environment.ts new file mode 100644 index 0000000..f036a83 --- /dev/null +++ b/angular/src/environments/environment.ts @@ -0,0 +1,18 @@ +// This file can be replaced during build by using the `fileReplacements` array. +// `ng build` replaces `environment.ts` with `environment.prod.ts`. +// The list of file replacements can be found in `angular.json`. + +export const environment = { + production: true, + basePath: '', + apiUrl: '' +}; + +/* + * For easier debugging in development mode, you can importApi the following file + * to ignore zone related error stack frames such as `zone.run`, `zoneDelegate.invokeTask`. + * + * This importApi should be commented out in production mode because it will have a negative impact + * on performance if an error is thrown. + */ +// importApi 'zone.js/plugins/zone-error'; // Included with Angular CLI. diff --git a/angular/src/favicon.ico b/angular/src/favicon.ico new file mode 100644 index 0000000..57614f9 Binary files /dev/null and b/angular/src/favicon.ico differ diff --git a/angular/src/index.html b/angular/src/index.html new file mode 100644 index 0000000..1df660b --- /dev/null +++ b/angular/src/index.html @@ -0,0 +1,14 @@ + + + + + Fut Machine + + + + + + + + + diff --git a/angular/src/main.ts b/angular/src/main.ts new file mode 100644 index 0000000..c7b673c --- /dev/null +++ b/angular/src/main.ts @@ -0,0 +1,12 @@ +import { enableProdMode } from '@angular/core'; +import { platformBrowserDynamic } from '@angular/platform-browser-dynamic'; + +import { AppModule } from './app/app.module'; +import { environment } from './environments/environment'; + +if (environment.production) { + enableProdMode(); +} + +platformBrowserDynamic().bootstrapModule(AppModule) + .catch(err => console.error(err)); diff --git a/angular/src/styles.scss b/angular/src/styles.scss new file mode 100644 index 0000000..56d6a93 --- /dev/null +++ b/angular/src/styles.scss @@ -0,0 +1,16 @@ +/* You can add global styles to this file, and also importApi other style files */ + +@import "assets/scss/variables"; +@import "assets/scss/mixins"; +@import "assets/scss/basics"; +@import "assets/scss/modal"; +@import "assets/scss/sidebar"; +@import "assets/scss/form"; +@import "assets/scss/table"; +@import "assets/scss/text"; +@import "assets/scss/contacts"; +@import "assets/scss/tasks-posts"; +@import "assets/scss/sales"; +@import "assets/scss/button"; +@import "assets/scss/accordion"; +@import "assets/scss/dark"; diff --git a/angular/tsconfig.app.json b/angular/tsconfig.app.json new file mode 100644 index 0000000..374cc9d --- /dev/null +++ b/angular/tsconfig.app.json @@ -0,0 +1,14 @@ +/* To learn more about this file see: https://angular.io/config/tsconfig. */ +{ + "extends": "./tsconfig.json", + "compilerOptions": { + "outDir": "./out-tsc/app", + "types": [] + }, + "files": [ + "src/main.ts" + ], + "include": [ + "src/**/*.d.ts" + ] +} diff --git a/angular/tsconfig.json b/angular/tsconfig.json new file mode 100644 index 0000000..a0595e6 --- /dev/null +++ b/angular/tsconfig.json @@ -0,0 +1,37 @@ +/* To learn more about this file see: https://angular.io/config/tsconfig. */ +{ + "compileOnSave": false, + "compilerOptions": { + "outDir": "./dist/out-tsc", + "forceConsistentCasingInFileNames": true, + "strict": true, + "noImplicitOverride": true, + "noPropertyAccessFromIndexSignature": true, + "noImplicitReturns": true, + "noFallthroughCasesInSwitch": true, + "skipLibCheck": true, + "esModuleInterop": true, + "sourceMap": true, + "declaration": false, + "experimentalDecorators": true, + "moduleResolution": "node", + "importHelpers": true, + "target": "ES2022", + "module": "ES2022", + "useDefineForClassFields": false, + "lib": [ + "ES2022", + "dom" + ], + "paths": { + "@app/*": ["./src/app/*"], + "@environments/*": ["./src/environments/*"] + } + }, + "angularCompilerOptions": { + "enableI18nLegacyMessageIdFormat": false, + "strictInjectionParameters": true, + "strictInputAccessModifiers": true, + "strictTemplates": true + } +} diff --git a/angular/tsconfig.spec.json b/angular/tsconfig.spec.json new file mode 100644 index 0000000..be7e9da --- /dev/null +++ b/angular/tsconfig.spec.json @@ -0,0 +1,14 @@ +/* To learn more about this file see: https://angular.io/config/tsconfig. */ +{ + "extends": "./tsconfig.json", + "compilerOptions": { + "outDir": "./out-tsc/spec", + "types": [ + "jasmine" + ] + }, + "include": [ + "src/**/*.spec.ts", + "src/**/*.d.ts" + ] +} diff --git a/httpdocs b/httpdocs new file mode 160000 index 0000000..126f39d --- /dev/null +++ b/httpdocs @@ -0,0 +1 @@ +Subproject commit 126f39d57256a1f050e94597981da8832cae9063