diff --git a/backend/cli.py b/backend/cli.py index 9fdb4add9..7695c465b 100755 --- a/backend/cli.py +++ b/backend/cli.py @@ -1,11 +1,14 @@ #!/usr/bin/env python3 import asyncio import functools +import json +from pathlib import Path from typing import Any import click from heliclockter import datetime_utc +from bracket.app import app from bracket.config import config from bracket.database import database from bracket.logger import get_logger @@ -18,6 +21,8 @@ from bracket.utils.db_init import sql_create_dev_db from bracket.utils.security import hash_password +OPENAPI_JSON_PATH = "openapi/openapi.json" + logger = get_logger("cli") @@ -49,7 +54,14 @@ def cli() -> None: pass -@click.command() +@cli.command() +def generate_openapi() -> None: + schema = app.openapi() + Path("openapi/openapi.json").write_text(json.dumps(schema, indent=2, sort_keys=True)) + logger.info(f"OpenAPI schema saved to {OPENAPI_JSON_PATH}") + + +@cli.command() def hash_password_cmd() -> None: if config.admin_password is None: logger.error("No admin password is given") @@ -59,13 +71,13 @@ def hash_password_cmd() -> None: logger.info(hashed_pwd) -@click.command() +@cli.command() @run_async async def create_dev_db() -> None: await sql_create_dev_db() -@click.command() +@cli.command() @click.option("--email", prompt="Email", help="The email used to log into the account.") @click.option("--password", prompt="Password", help="The password used to log into the account.") @click.option("--name", prompt="Name", help="The name associated with the account.") @@ -86,7 +98,4 @@ async def register_user(email: str, password: str, name: str) -> None: if __name__ == "__main__": - cli.add_command(create_dev_db) - cli.add_command(hash_password_cmd) - cli.add_command(register_user) cli() diff --git a/backend/openapi/openapi.json b/backend/openapi/openapi.json new file mode 100644 index 000000000..d4877f83c --- /dev/null +++ b/backend/openapi/openapi.json @@ -0,0 +1,6233 @@ +{ + "components": { + "schemas": { + "Body_login_for_access_token_token_post": { + "properties": { + "client_id": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Client Id" + }, + "client_secret": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "format": "password", + "title": "Client Secret" + }, + "grant_type": { + "anyOf": [ + { + "pattern": "^password$", + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Grant Type" + }, + "password": { + "format": "password", + "title": "Password", + "type": "string" + }, + "scope": { + "default": "", + "title": "Scope", + "type": "string" + }, + "username": { + "title": "Username", + "type": "string" + } + }, + "required": [ + "username", + "password" + ], + "title": "Body_login_for_access_token_token_post", + "type": "object" + }, + "Body_update_team_logo_tournaments__tournament_id__teams__team_id__logo_post": { + "properties": { + "file": { + "anyOf": [ + { + "format": "binary", + "type": "string" + }, + { + "type": "null" + } + ], + "title": "File" + } + }, + "title": "Body_update_team_logo_tournaments__tournament_id__teams__team_id__logo_post", + "type": "object" + }, + "Body_upload_logo_tournaments__tournament_id__logo_post": { + "properties": { + "file": { + "anyOf": [ + { + "format": "binary", + "type": "string" + }, + { + "type": "null" + } + ], + "title": "File" + } + }, + "title": "Body_upload_logo_tournaments__tournament_id__logo_post", + "type": "object" + }, + "Club": { + "properties": { + "created": { + "format": "date-time", + "title": "Created", + "type": "string" + }, + "id": { + "title": "Id", + "type": "integer" + }, + "name": { + "title": "Name", + "type": "string" + } + }, + "required": [ + "name", + "created", + "id" + ], + "title": "Club", + "type": "object" + }, + "ClubCreateBody": { + "properties": { + "name": { + "title": "Name", + "type": "string" + } + }, + "required": [ + "name" + ], + "title": "ClubCreateBody", + "type": "object" + }, + "ClubResponse": { + "properties": { + "data": { + "anyOf": [ + { + "$ref": "#/components/schemas/Club" + }, + { + "type": "null" + } + ] + } + }, + "required": [ + "data" + ], + "title": "ClubResponse", + "type": "object" + }, + "ClubUpdateBody": { + "properties": { + "name": { + "title": "Name", + "type": "string" + } + }, + "required": [ + "name" + ], + "title": "ClubUpdateBody", + "type": "object" + }, + "ClubsResponse": { + "properties": { + "data": { + "items": { + "$ref": "#/components/schemas/Club" + }, + "title": "Data", + "type": "array" + } + }, + "required": [ + "data" + ], + "title": "ClubsResponse", + "type": "object" + }, + "Court": { + "properties": { + "created": { + "format": "date-time", + "title": "Created", + "type": "string" + }, + "id": { + "title": "Id", + "type": "integer" + }, + "name": { + "title": "Name", + "type": "string" + }, + "tournament_id": { + "title": "Tournament Id", + "type": "integer" + } + }, + "required": [ + "name", + "created", + "tournament_id", + "id" + ], + "title": "Court", + "type": "object" + }, + "CourtBody": { + "properties": { + "name": { + "title": "Name", + "type": "string" + } + }, + "required": [ + "name" + ], + "title": "CourtBody", + "type": "object" + }, + "CourtsResponse": { + "properties": { + "data": { + "items": { + "$ref": "#/components/schemas/Court" + }, + "title": "Data", + "type": "array" + } + }, + "required": [ + "data" + ], + "title": "CourtsResponse", + "type": "object" + }, + "DemoUserToRegister": { + "properties": { + "captcha_token": { + "title": "Captcha Token", + "type": "string" + } + }, + "required": [ + "captcha_token" + ], + "title": "DemoUserToRegister", + "type": "object" + }, + "FullTeamWithPlayers": { + "properties": { + "active": { + "title": "Active", + "type": "boolean" + }, + "created": { + "format": "date-time", + "title": "Created", + "type": "string" + }, + "draws": { + "default": 0, + "title": "Draws", + "type": "integer" + }, + "elo_score": { + "default": "1200", + "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$", + "title": "Elo Score", + "type": "string" + }, + "id": { + "title": "Id", + "type": "integer" + }, + "logo_path": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Logo Path" + }, + "losses": { + "default": 0, + "title": "Losses", + "type": "integer" + }, + "name": { + "title": "Name", + "type": "string" + }, + "players": { + "items": { + "$ref": "#/components/schemas/Player" + }, + "title": "Players", + "type": "array" + }, + "swiss_score": { + "default": "0.0", + "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$", + "title": "Swiss Score", + "type": "string" + }, + "tournament_id": { + "title": "Tournament Id", + "type": "integer" + }, + "wins": { + "default": 0, + "title": "Wins", + "type": "integer" + } + }, + "required": [ + "created", + "name", + "tournament_id", + "active", + "id", + "players" + ], + "title": "FullTeamWithPlayers", + "type": "object" + }, + "HTTPValidationError": { + "properties": { + "detail": { + "items": { + "$ref": "#/components/schemas/ValidationError" + }, + "title": "Detail", + "type": "array" + } + }, + "title": "HTTPValidationError", + "type": "object" + }, + "Match": { + "properties": { + "court_id": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "title": "Court Id" + }, + "created": { + "format": "date-time", + "title": "Created", + "type": "string" + }, + "custom_duration_minutes": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "title": "Custom Duration Minutes" + }, + "custom_margin_minutes": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "title": "Custom Margin Minutes" + }, + "duration_minutes": { + "title": "Duration Minutes", + "type": "integer" + }, + "id": { + "title": "Id", + "type": "integer" + }, + "margin_minutes": { + "title": "Margin Minutes", + "type": "integer" + }, + "position_in_schedule": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "title": "Position In Schedule" + }, + "round_id": { + "title": "Round Id", + "type": "integer" + }, + "stage_item_input1": { + "anyOf": [ + { + "$ref": "#/components/schemas/StageItemInputTentative" + }, + { + "$ref": "#/components/schemas/StageItemInputFinal" + }, + { + "$ref": "#/components/schemas/StageItemInputEmpty" + }, + { + "type": "null" + } + ], + "title": "Stage Item Input1" + }, + "stage_item_input1_conflict": { + "title": "Stage Item Input1 Conflict", + "type": "boolean" + }, + "stage_item_input1_id": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "title": "Stage Item Input1 Id" + }, + "stage_item_input1_score": { + "title": "Stage Item Input1 Score", + "type": "integer" + }, + "stage_item_input1_winner_from_match_id": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "title": "Stage Item Input1 Winner From Match Id" + }, + "stage_item_input2": { + "anyOf": [ + { + "$ref": "#/components/schemas/StageItemInputTentative" + }, + { + "$ref": "#/components/schemas/StageItemInputFinal" + }, + { + "$ref": "#/components/schemas/StageItemInputEmpty" + }, + { + "type": "null" + } + ], + "title": "Stage Item Input2" + }, + "stage_item_input2_conflict": { + "title": "Stage Item Input2 Conflict", + "type": "boolean" + }, + "stage_item_input2_id": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "title": "Stage Item Input2 Id" + }, + "stage_item_input2_score": { + "title": "Stage Item Input2 Score", + "type": "integer" + }, + "stage_item_input2_winner_from_match_id": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "title": "Stage Item Input2 Winner From Match Id" + }, + "start_time": { + "anyOf": [ + { + "format": "date-time", + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Start Time" + } + }, + "required": [ + "created", + "duration_minutes", + "margin_minutes", + "round_id", + "stage_item_input1_score", + "stage_item_input2_score", + "stage_item_input1_conflict", + "stage_item_input2_conflict", + "id" + ], + "title": "Match", + "type": "object" + }, + "MatchBody": { + "properties": { + "court_id": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "title": "Court Id" + }, + "custom_duration_minutes": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "title": "Custom Duration Minutes" + }, + "custom_margin_minutes": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "title": "Custom Margin Minutes" + }, + "round_id": { + "title": "Round Id", + "type": "integer" + }, + "stage_item_input1_score": { + "default": 0, + "title": "Stage Item Input1 Score", + "type": "integer" + }, + "stage_item_input2_score": { + "default": 0, + "title": "Stage Item Input2 Score", + "type": "integer" + } + }, + "required": [ + "round_id" + ], + "title": "MatchBody", + "type": "object" + }, + "MatchCreateBodyFrontend": { + "properties": { + "court_id": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "title": "Court Id" + }, + "round_id": { + "title": "Round Id", + "type": "integer" + }, + "stage_item_input1_id": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "title": "Stage Item Input1 Id" + }, + "stage_item_input1_winner_from_match_id": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "title": "Stage Item Input1 Winner From Match Id" + }, + "stage_item_input2_id": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "title": "Stage Item Input2 Id" + }, + "stage_item_input2_winner_from_match_id": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "title": "Stage Item Input2 Winner From Match Id" + } + }, + "required": [ + "round_id" + ], + "title": "MatchCreateBodyFrontend", + "type": "object" + }, + "MatchRescheduleBody": { + "properties": { + "new_court_id": { + "title": "New Court Id", + "type": "integer" + }, + "new_position": { + "title": "New Position", + "type": "integer" + }, + "old_court_id": { + "title": "Old Court Id", + "type": "integer" + }, + "old_position": { + "title": "Old Position", + "type": "integer" + } + }, + "required": [ + "old_court_id", + "old_position", + "new_court_id", + "new_position" + ], + "title": "MatchRescheduleBody", + "type": "object" + }, + "MatchWithDetails": { + "description": "MatchWithDetails has zero or one defined stage item inputs, but not both.", + "properties": { + "court": { + "anyOf": [ + { + "$ref": "#/components/schemas/Court" + }, + { + "type": "null" + } + ] + }, + "court_id": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "title": "Court Id" + }, + "created": { + "format": "date-time", + "title": "Created", + "type": "string" + }, + "custom_duration_minutes": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "title": "Custom Duration Minutes" + }, + "custom_margin_minutes": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "title": "Custom Margin Minutes" + }, + "duration_minutes": { + "title": "Duration Minutes", + "type": "integer" + }, + "id": { + "title": "Id", + "type": "integer" + }, + "margin_minutes": { + "title": "Margin Minutes", + "type": "integer" + }, + "position_in_schedule": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "title": "Position In Schedule" + }, + "round_id": { + "title": "Round Id", + "type": "integer" + }, + "stage_item_input1": { + "anyOf": [ + { + "$ref": "#/components/schemas/StageItemInputTentative" + }, + { + "$ref": "#/components/schemas/StageItemInputFinal" + }, + { + "$ref": "#/components/schemas/StageItemInputEmpty" + }, + { + "type": "null" + } + ], + "title": "Stage Item Input1" + }, + "stage_item_input1_conflict": { + "title": "Stage Item Input1 Conflict", + "type": "boolean" + }, + "stage_item_input1_id": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "title": "Stage Item Input1 Id" + }, + "stage_item_input1_score": { + "title": "Stage Item Input1 Score", + "type": "integer" + }, + "stage_item_input1_winner_from_match_id": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "title": "Stage Item Input1 Winner From Match Id" + }, + "stage_item_input2": { + "anyOf": [ + { + "$ref": "#/components/schemas/StageItemInputTentative" + }, + { + "$ref": "#/components/schemas/StageItemInputFinal" + }, + { + "$ref": "#/components/schemas/StageItemInputEmpty" + }, + { + "type": "null" + } + ], + "title": "Stage Item Input2" + }, + "stage_item_input2_conflict": { + "title": "Stage Item Input2 Conflict", + "type": "boolean" + }, + "stage_item_input2_id": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "title": "Stage Item Input2 Id" + }, + "stage_item_input2_score": { + "title": "Stage Item Input2 Score", + "type": "integer" + }, + "stage_item_input2_winner_from_match_id": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "title": "Stage Item Input2 Winner From Match Id" + }, + "start_time": { + "anyOf": [ + { + "format": "date-time", + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Start Time" + } + }, + "required": [ + "created", + "duration_minutes", + "margin_minutes", + "round_id", + "stage_item_input1_score", + "stage_item_input2_score", + "stage_item_input1_conflict", + "stage_item_input2_conflict", + "id" + ], + "title": "MatchWithDetails", + "type": "object" + }, + "MatchWithDetailsDefinitive": { + "properties": { + "court": { + "anyOf": [ + { + "$ref": "#/components/schemas/Court" + }, + { + "type": "null" + } + ] + }, + "court_id": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "title": "Court Id" + }, + "created": { + "format": "date-time", + "title": "Created", + "type": "string" + }, + "custom_duration_minutes": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "title": "Custom Duration Minutes" + }, + "custom_margin_minutes": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "title": "Custom Margin Minutes" + }, + "duration_minutes": { + "title": "Duration Minutes", + "type": "integer" + }, + "id": { + "title": "Id", + "type": "integer" + }, + "margin_minutes": { + "title": "Margin Minutes", + "type": "integer" + }, + "position_in_schedule": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "title": "Position In Schedule" + }, + "round_id": { + "title": "Round Id", + "type": "integer" + }, + "stage_item_input1": { + "anyOf": [ + { + "$ref": "#/components/schemas/StageItemInputTentative" + }, + { + "$ref": "#/components/schemas/StageItemInputFinal" + }, + { + "$ref": "#/components/schemas/StageItemInputEmpty" + } + ], + "title": "Stage Item Input1" + }, + "stage_item_input1_conflict": { + "title": "Stage Item Input1 Conflict", + "type": "boolean" + }, + "stage_item_input1_id": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "title": "Stage Item Input1 Id" + }, + "stage_item_input1_score": { + "title": "Stage Item Input1 Score", + "type": "integer" + }, + "stage_item_input1_winner_from_match_id": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "title": "Stage Item Input1 Winner From Match Id" + }, + "stage_item_input2": { + "anyOf": [ + { + "$ref": "#/components/schemas/StageItemInputTentative" + }, + { + "$ref": "#/components/schemas/StageItemInputFinal" + }, + { + "$ref": "#/components/schemas/StageItemInputEmpty" + } + ], + "title": "Stage Item Input2" + }, + "stage_item_input2_conflict": { + "title": "Stage Item Input2 Conflict", + "type": "boolean" + }, + "stage_item_input2_id": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "title": "Stage Item Input2 Id" + }, + "stage_item_input2_score": { + "title": "Stage Item Input2 Score", + "type": "integer" + }, + "stage_item_input2_winner_from_match_id": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "title": "Stage Item Input2 Winner From Match Id" + }, + "start_time": { + "anyOf": [ + { + "format": "date-time", + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Start Time" + } + }, + "required": [ + "created", + "duration_minutes", + "margin_minutes", + "round_id", + "stage_item_input1_score", + "stage_item_input2_score", + "stage_item_input1_conflict", + "stage_item_input2_conflict", + "id", + "stage_item_input1", + "stage_item_input2" + ], + "title": "MatchWithDetailsDefinitive", + "type": "object" + }, + "PaginatedPlayers": { + "properties": { + "count": { + "title": "Count", + "type": "integer" + }, + "players": { + "items": { + "$ref": "#/components/schemas/Player" + }, + "title": "Players", + "type": "array" + } + }, + "required": [ + "count", + "players" + ], + "title": "PaginatedPlayers", + "type": "object" + }, + "PaginatedTeams": { + "properties": { + "count": { + "title": "Count", + "type": "integer" + }, + "teams": { + "items": { + "$ref": "#/components/schemas/FullTeamWithPlayers" + }, + "title": "Teams", + "type": "array" + } + }, + "required": [ + "count", + "teams" + ], + "title": "PaginatedTeams", + "type": "object" + }, + "Player": { + "properties": { + "active": { + "title": "Active", + "type": "boolean" + }, + "created": { + "format": "date-time", + "title": "Created", + "type": "string" + }, + "draws": { + "default": 0, + "title": "Draws", + "type": "integer" + }, + "elo_score": { + "default": "0.0", + "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$", + "title": "Elo Score", + "type": "string" + }, + "id": { + "title": "Id", + "type": "integer" + }, + "losses": { + "default": 0, + "title": "Losses", + "type": "integer" + }, + "name": { + "title": "Name", + "type": "string" + }, + "swiss_score": { + "default": "0.0", + "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$", + "title": "Swiss Score", + "type": "string" + }, + "tournament_id": { + "title": "Tournament Id", + "type": "integer" + }, + "wins": { + "default": 0, + "title": "Wins", + "type": "integer" + } + }, + "required": [ + "active", + "name", + "created", + "tournament_id", + "id" + ], + "title": "Player", + "type": "object" + }, + "PlayerBody": { + "properties": { + "active": { + "title": "Active", + "type": "boolean" + }, + "name": { + "maxLength": 30, + "minLength": 1, + "title": "Name", + "type": "string" + } + }, + "required": [ + "name", + "active" + ], + "title": "PlayerBody", + "type": "object" + }, + "PlayerMultiBody": { + "properties": { + "active": { + "title": "Active", + "type": "boolean" + }, + "names": { + "minLength": 1, + "title": "Names", + "type": "string" + } + }, + "required": [ + "names", + "active" + ], + "title": "PlayerMultiBody", + "type": "object" + }, + "PlayersResponse": { + "properties": { + "data": { + "$ref": "#/components/schemas/PaginatedPlayers" + } + }, + "required": [ + "data" + ], + "title": "PlayersResponse", + "type": "object" + }, + "Ranking": { + "properties": { + "add_score_points": { + "title": "Add Score Points", + "type": "boolean" + }, + "created": { + "format": "date-time", + "title": "Created", + "type": "string" + }, + "draw_points": { + "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$", + "title": "Draw Points", + "type": "string" + }, + "id": { + "title": "Id", + "type": "integer" + }, + "loss_points": { + "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$", + "title": "Loss Points", + "type": "string" + }, + "position": { + "title": "Position", + "type": "integer" + }, + "tournament_id": { + "title": "Tournament Id", + "type": "integer" + }, + "win_points": { + "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$", + "title": "Win Points", + "type": "string" + } + }, + "required": [ + "tournament_id", + "win_points", + "draw_points", + "loss_points", + "add_score_points", + "position", + "id", + "created" + ], + "title": "Ranking", + "type": "object" + }, + "RankingBody": { + "properties": { + "add_score_points": { + "title": "Add Score Points", + "type": "boolean" + }, + "draw_points": { + "anyOf": [ + { + "type": "number" + }, + { + "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$", + "type": "string" + } + ], + "title": "Draw Points" + }, + "loss_points": { + "anyOf": [ + { + "type": "number" + }, + { + "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$", + "type": "string" + } + ], + "title": "Loss Points" + }, + "position": { + "title": "Position", + "type": "integer" + }, + "win_points": { + "anyOf": [ + { + "type": "number" + }, + { + "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$", + "type": "string" + } + ], + "title": "Win Points" + } + }, + "required": [ + "win_points", + "draw_points", + "loss_points", + "add_score_points", + "position" + ], + "title": "RankingBody", + "type": "object" + }, + "RankingCreateBody": { + "properties": { + "add_score_points": { + "default": false, + "title": "Add Score Points", + "type": "boolean" + }, + "draw_points": { + "anyOf": [ + { + "type": "number" + }, + { + "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$", + "type": "string" + } + ], + "default": "0.5", + "title": "Draw Points" + }, + "loss_points": { + "anyOf": [ + { + "type": "number" + }, + { + "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$", + "type": "string" + } + ], + "default": "0.0", + "title": "Loss Points" + }, + "win_points": { + "anyOf": [ + { + "type": "number" + }, + { + "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$", + "type": "string" + } + ], + "default": "1.0", + "title": "Win Points" + } + }, + "title": "RankingCreateBody", + "type": "object" + }, + "RankingsResponse": { + "properties": { + "data": { + "items": { + "$ref": "#/components/schemas/Ranking" + }, + "title": "Data", + "type": "array" + } + }, + "required": [ + "data" + ], + "title": "RankingsResponse", + "type": "object" + }, + "RoundCreateBody": { + "properties": { + "name": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Name" + }, + "stage_item_id": { + "title": "Stage Item Id", + "type": "integer" + } + }, + "required": [ + "stage_item_id" + ], + "title": "RoundCreateBody", + "type": "object" + }, + "RoundUpdateBody": { + "properties": { + "is_draft": { + "title": "Is Draft", + "type": "boolean" + }, + "name": { + "title": "Name", + "type": "string" + } + }, + "required": [ + "name", + "is_draft" + ], + "title": "RoundUpdateBody", + "type": "object" + }, + "RoundWithMatches": { + "properties": { + "created": { + "format": "date-time", + "title": "Created", + "type": "string" + }, + "id": { + "title": "Id", + "type": "integer" + }, + "is_draft": { + "title": "Is Draft", + "type": "boolean" + }, + "matches": { + "items": { + "anyOf": [ + { + "$ref": "#/components/schemas/MatchWithDetailsDefinitive" + }, + { + "$ref": "#/components/schemas/MatchWithDetails" + } + ] + }, + "title": "Matches", + "type": "array" + }, + "name": { + "title": "Name", + "type": "string" + }, + "stage_item_id": { + "title": "Stage Item Id", + "type": "integer" + } + }, + "required": [ + "created", + "stage_item_id", + "is_draft", + "name", + "id", + "matches" + ], + "title": "RoundWithMatches", + "type": "object" + }, + "SingleCourtResponse": { + "properties": { + "data": { + "$ref": "#/components/schemas/Court" + } + }, + "required": [ + "data" + ], + "title": "SingleCourtResponse", + "type": "object" + }, + "SingleMatchResponse": { + "properties": { + "data": { + "$ref": "#/components/schemas/Match" + } + }, + "required": [ + "data" + ], + "title": "SingleMatchResponse", + "type": "object" + }, + "SinglePlayerResponse": { + "properties": { + "data": { + "$ref": "#/components/schemas/Player" + } + }, + "required": [ + "data" + ], + "title": "SinglePlayerResponse", + "type": "object" + }, + "SingleTeamResponse": { + "properties": { + "data": { + "$ref": "#/components/schemas/Team" + } + }, + "required": [ + "data" + ], + "title": "SingleTeamResponse", + "type": "object" + }, + "StageActivateBody": { + "properties": { + "direction": { + "default": "next", + "enum": [ + "next", + "previous" + ], + "title": "Direction", + "type": "string" + } + }, + "title": "StageActivateBody", + "type": "object" + }, + "StageItemActivateNextBody": { + "properties": { + "adjust_to_time": { + "anyOf": [ + { + "format": "date-time", + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Adjust To Time" + } + }, + "title": "StageItemActivateNextBody", + "type": "object" + }, + "StageItemCreateBody": { + "properties": { + "name": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Name" + }, + "ranking_id": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "title": "Ranking Id" + }, + "stage_id": { + "title": "Stage Id", + "type": "integer" + }, + "team_count": { + "maximum": 64.0, + "minimum": 2.0, + "title": "Team Count", + "type": "integer" + }, + "type": { + "$ref": "#/components/schemas/StageType" + } + }, + "required": [ + "stage_id", + "type", + "team_count" + ], + "title": "StageItemCreateBody", + "type": "object" + }, + "StageItemInputEmpty": { + "properties": { + "draws": { + "default": 0, + "title": "Draws", + "type": "integer" + }, + "id": { + "title": "Id", + "type": "integer" + }, + "losses": { + "default": 0, + "title": "Losses", + "type": "integer" + }, + "points": { + "default": "0.0", + "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$", + "title": "Points", + "type": "string" + }, + "slot": { + "title": "Slot", + "type": "integer" + }, + "stage_item_id": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "title": "Stage Item Id" + }, + "team_id": { + "title": "Team Id", + "type": "null" + }, + "tournament_id": { + "title": "Tournament Id", + "type": "integer" + }, + "winner_from_stage_item_id": { + "title": "Winner From Stage Item Id", + "type": "null" + }, + "winner_position": { + "title": "Winner Position", + "type": "null" + }, + "wins": { + "default": 0, + "title": "Wins", + "type": "integer" + } + }, + "required": [ + "id", + "slot", + "tournament_id" + ], + "title": "StageItemInputEmpty", + "type": "object" + }, + "StageItemInputFinal": { + "properties": { + "draws": { + "default": 0, + "title": "Draws", + "type": "integer" + }, + "id": { + "title": "Id", + "type": "integer" + }, + "losses": { + "default": 0, + "title": "Losses", + "type": "integer" + }, + "points": { + "default": "0.0", + "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$", + "title": "Points", + "type": "string" + }, + "slot": { + "title": "Slot", + "type": "integer" + }, + "stage_item_id": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "title": "Stage Item Id" + }, + "team": { + "$ref": "#/components/schemas/Team" + }, + "team_id": { + "title": "Team Id", + "type": "integer" + }, + "tournament_id": { + "title": "Tournament Id", + "type": "integer" + }, + "winner_from_stage_item_id": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "title": "Winner From Stage Item Id" + }, + "winner_position": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "title": "Winner Position" + }, + "wins": { + "default": 0, + "title": "Wins", + "type": "integer" + } + }, + "required": [ + "id", + "slot", + "tournament_id", + "team_id", + "team" + ], + "title": "StageItemInputFinal", + "type": "object" + }, + "StageItemInputOptionFinal": { + "properties": { + "already_taken": { + "title": "Already Taken", + "type": "boolean" + }, + "team_id": { + "title": "Team Id", + "type": "integer" + } + }, + "required": [ + "team_id", + "already_taken" + ], + "title": "StageItemInputOptionFinal", + "type": "object" + }, + "StageItemInputOptionTentative": { + "properties": { + "already_taken": { + "title": "Already Taken", + "type": "boolean" + }, + "winner_from_stage_item_id": { + "title": "Winner From Stage Item Id", + "type": "integer" + }, + "winner_position": { + "title": "Winner Position", + "type": "integer" + } + }, + "required": [ + "winner_from_stage_item_id", + "winner_position", + "already_taken" + ], + "title": "StageItemInputOptionTentative", + "type": "object" + }, + "StageItemInputOptionsResponse": { + "properties": { + "data": { + "additionalProperties": { + "items": { + "anyOf": [ + { + "$ref": "#/components/schemas/StageItemInputOptionTentative" + }, + { + "$ref": "#/components/schemas/StageItemInputOptionFinal" + } + ] + }, + "type": "array" + }, + "title": "Data", + "type": "object" + } + }, + "required": [ + "data" + ], + "title": "StageItemInputOptionsResponse", + "type": "object" + }, + "StageItemInputTentative": { + "properties": { + "draws": { + "default": 0, + "title": "Draws", + "type": "integer" + }, + "id": { + "title": "Id", + "type": "integer" + }, + "losses": { + "default": 0, + "title": "Losses", + "type": "integer" + }, + "points": { + "default": "0.0", + "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$", + "title": "Points", + "type": "string" + }, + "slot": { + "title": "Slot", + "type": "integer" + }, + "stage_item_id": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "title": "Stage Item Id" + }, + "team_id": { + "title": "Team Id", + "type": "null" + }, + "tournament_id": { + "title": "Tournament Id", + "type": "integer" + }, + "winner_from_stage_item_id": { + "title": "Winner From Stage Item Id", + "type": "integer" + }, + "winner_position": { + "minimum": 1.0, + "title": "Winner Position", + "type": "integer" + }, + "wins": { + "default": 0, + "title": "Wins", + "type": "integer" + } + }, + "required": [ + "id", + "slot", + "tournament_id", + "winner_from_stage_item_id", + "winner_position" + ], + "title": "StageItemInputTentative", + "type": "object" + }, + "StageItemInputUpdate": { + "properties": { + "stage_item_input": { + "$ref": "#/components/schemas/StageItemInputTentative" + }, + "team": { + "$ref": "#/components/schemas/Team" + } + }, + "required": [ + "stage_item_input", + "team" + ], + "title": "StageItemInputUpdate", + "type": "object" + }, + "StageItemInputUpdateBodyEmpty": { + "properties": { + "team_id": { + "title": "Team Id", + "type": "null" + }, + "winner_from_stage_item_id": { + "title": "Winner From Stage Item Id", + "type": "null" + }, + "winner_position": { + "title": "Winner Position", + "type": "null" + } + }, + "title": "StageItemInputUpdateBodyEmpty", + "type": "object" + }, + "StageItemInputUpdateBodyFinal": { + "properties": { + "team_id": { + "title": "Team Id", + "type": "integer" + } + }, + "required": [ + "team_id" + ], + "title": "StageItemInputUpdateBodyFinal", + "type": "object" + }, + "StageItemInputUpdateBodyTentative": { + "properties": { + "winner_from_stage_item_id": { + "title": "Winner From Stage Item Id", + "type": "integer" + }, + "winner_position": { + "minimum": 1.0, + "title": "Winner Position", + "type": "integer" + } + }, + "required": [ + "winner_from_stage_item_id", + "winner_position" + ], + "title": "StageItemInputUpdateBodyTentative", + "type": "object" + }, + "StageItemUpdateBody": { + "properties": { + "name": { + "title": "Name", + "type": "string" + }, + "ranking_id": { + "title": "Ranking Id", + "type": "integer" + } + }, + "required": [ + "name", + "ranking_id" + ], + "title": "StageItemUpdateBody", + "type": "object" + }, + "StageItemWithRounds": { + "properties": { + "created": { + "format": "date-time", + "title": "Created", + "type": "string" + }, + "id": { + "title": "Id", + "type": "integer" + }, + "inputs": { + "items": { + "anyOf": [ + { + "$ref": "#/components/schemas/StageItemInputTentative" + }, + { + "$ref": "#/components/schemas/StageItemInputFinal" + }, + { + "$ref": "#/components/schemas/StageItemInputEmpty" + } + ] + }, + "title": "Inputs", + "type": "array" + }, + "name": { + "title": "Name", + "type": "string" + }, + "ranking_id": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "title": "Ranking Id" + }, + "rounds": { + "items": { + "$ref": "#/components/schemas/RoundWithMatches" + }, + "title": "Rounds", + "type": "array" + }, + "stage_id": { + "title": "Stage Id", + "type": "integer" + }, + "team_count": { + "maximum": 64.0, + "minimum": 2.0, + "title": "Team Count", + "type": "integer" + }, + "type": { + "$ref": "#/components/schemas/StageType" + }, + "type_name": { + "title": "Type Name", + "type": "string" + } + }, + "required": [ + "stage_id", + "name", + "created", + "type", + "team_count", + "id", + "rounds", + "inputs", + "type_name" + ], + "title": "StageItemWithRounds", + "type": "object" + }, + "StageRankingResponse": { + "properties": { + "data": { + "additionalProperties": { + "items": { + "$ref": "#/components/schemas/StageItemInputUpdate" + }, + "type": "array" + }, + "title": "Data", + "type": "object" + } + }, + "required": [ + "data" + ], + "title": "StageRankingResponse", + "type": "object" + }, + "StageType": { + "enum": [ + "ROUND_ROBIN", + "SINGLE_ELIMINATION", + "SWISS" + ], + "title": "StageType", + "type": "string" + }, + "StageUpdateBody": { + "properties": { + "name": { + "title": "Name", + "type": "string" + } + }, + "required": [ + "name" + ], + "title": "StageUpdateBody", + "type": "object" + }, + "StageWithStageItems": { + "properties": { + "created": { + "format": "date-time", + "title": "Created", + "type": "string" + }, + "id": { + "title": "Id", + "type": "integer" + }, + "is_active": { + "title": "Is Active", + "type": "boolean" + }, + "name": { + "title": "Name", + "type": "string" + }, + "stage_items": { + "items": { + "$ref": "#/components/schemas/StageItemWithRounds" + }, + "title": "Stage Items", + "type": "array" + }, + "tournament_id": { + "title": "Tournament Id", + "type": "integer" + } + }, + "required": [ + "tournament_id", + "name", + "created", + "is_active", + "id", + "stage_items" + ], + "title": "StageWithStageItems", + "type": "object" + }, + "StagesWithStageItemsResponse": { + "properties": { + "data": { + "items": { + "$ref": "#/components/schemas/StageWithStageItems" + }, + "title": "Data", + "type": "array" + } + }, + "required": [ + "data" + ], + "title": "StagesWithStageItemsResponse", + "type": "object" + }, + "SuccessResponse": { + "properties": { + "success": { + "default": true, + "title": "Success", + "type": "boolean" + } + }, + "title": "SuccessResponse", + "type": "object" + }, + "SuggestedMatch": { + "properties": { + "elo_diff": { + "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$", + "title": "Elo Diff", + "type": "string" + }, + "is_recommended": { + "title": "Is Recommended", + "type": "boolean" + }, + "player_behind_schedule_count": { + "title": "Player Behind Schedule Count", + "type": "integer" + }, + "stage_item_input1": { + "anyOf": [ + { + "$ref": "#/components/schemas/StageItemInputTentative" + }, + { + "$ref": "#/components/schemas/StageItemInputFinal" + }, + { + "$ref": "#/components/schemas/StageItemInputEmpty" + } + ], + "title": "Stage Item Input1" + }, + "stage_item_input2": { + "anyOf": [ + { + "$ref": "#/components/schemas/StageItemInputTentative" + }, + { + "$ref": "#/components/schemas/StageItemInputFinal" + }, + { + "$ref": "#/components/schemas/StageItemInputEmpty" + } + ], + "title": "Stage Item Input2" + }, + "swiss_diff": { + "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$", + "title": "Swiss Diff", + "type": "string" + }, + "times_played_sum": { + "title": "Times Played Sum", + "type": "integer" + } + }, + "required": [ + "stage_item_input1", + "stage_item_input2", + "elo_diff", + "swiss_diff", + "is_recommended", + "times_played_sum", + "player_behind_schedule_count" + ], + "title": "SuggestedMatch", + "type": "object" + }, + "Team": { + "properties": { + "active": { + "title": "Active", + "type": "boolean" + }, + "created": { + "format": "date-time", + "title": "Created", + "type": "string" + }, + "draws": { + "default": 0, + "title": "Draws", + "type": "integer" + }, + "elo_score": { + "default": "1200", + "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$", + "title": "Elo Score", + "type": "string" + }, + "id": { + "title": "Id", + "type": "integer" + }, + "logo_path": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Logo Path" + }, + "losses": { + "default": 0, + "title": "Losses", + "type": "integer" + }, + "name": { + "title": "Name", + "type": "string" + }, + "swiss_score": { + "default": "0.0", + "pattern": "^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$", + "title": "Swiss Score", + "type": "string" + }, + "tournament_id": { + "title": "Tournament Id", + "type": "integer" + }, + "wins": { + "default": 0, + "title": "Wins", + "type": "integer" + } + }, + "required": [ + "created", + "name", + "tournament_id", + "active", + "id" + ], + "title": "Team", + "type": "object" + }, + "TeamBody": { + "properties": { + "active": { + "title": "Active", + "type": "boolean" + }, + "name": { + "maxLength": 30, + "minLength": 1, + "title": "Name", + "type": "string" + }, + "player_ids": { + "items": { + "type": "integer" + }, + "title": "Player Ids", + "type": "array", + "uniqueItems": true + } + }, + "required": [ + "name", + "active", + "player_ids" + ], + "title": "TeamBody", + "type": "object" + }, + "TeamMultiBody": { + "properties": { + "active": { + "title": "Active", + "type": "boolean" + }, + "names": { + "minLength": 1, + "title": "Names", + "type": "string" + } + }, + "required": [ + "names", + "active" + ], + "title": "TeamMultiBody", + "type": "object" + }, + "TeamsWithPlayersResponse": { + "properties": { + "data": { + "$ref": "#/components/schemas/PaginatedTeams" + } + }, + "required": [ + "data" + ], + "title": "TeamsWithPlayersResponse", + "type": "object" + }, + "Token": { + "properties": { + "access_token": { + "title": "Access Token", + "type": "string" + }, + "token_type": { + "title": "Token Type", + "type": "string" + }, + "user_id": { + "title": "User Id", + "type": "integer" + } + }, + "required": [ + "access_token", + "token_type", + "user_id" + ], + "title": "Token", + "type": "object" + }, + "TokenResponse": { + "properties": { + "data": { + "$ref": "#/components/schemas/Token" + } + }, + "required": [ + "data" + ], + "title": "TokenResponse", + "type": "object" + }, + "Tournament": { + "properties": { + "auto_assign_courts": { + "title": "Auto Assign Courts", + "type": "boolean" + }, + "club_id": { + "title": "Club Id", + "type": "integer" + }, + "created": { + "format": "date-time", + "title": "Created", + "type": "string" + }, + "dashboard_endpoint": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Dashboard Endpoint" + }, + "dashboard_public": { + "title": "Dashboard Public", + "type": "boolean" + }, + "duration_minutes": { + "minimum": 1.0, + "title": "Duration Minutes", + "type": "integer" + }, + "id": { + "title": "Id", + "type": "integer" + }, + "logo_path": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Logo Path" + }, + "margin_minutes": { + "minimum": 0.0, + "title": "Margin Minutes", + "type": "integer" + }, + "name": { + "title": "Name", + "type": "string" + }, + "players_can_be_in_multiple_teams": { + "title": "Players Can Be In Multiple Teams", + "type": "boolean" + }, + "start_time": { + "format": "date-time", + "title": "Start Time", + "type": "string" + }, + "status": { + "$ref": "#/components/schemas/TournamentStatus", + "default": "OPEN" + } + }, + "required": [ + "club_id", + "name", + "created", + "start_time", + "duration_minutes", + "margin_minutes", + "dashboard_public", + "players_can_be_in_multiple_teams", + "auto_assign_courts", + "id" + ], + "title": "Tournament", + "type": "object" + }, + "TournamentBody": { + "properties": { + "auto_assign_courts": { + "title": "Auto Assign Courts", + "type": "boolean" + }, + "club_id": { + "title": "Club Id", + "type": "integer" + }, + "dashboard_endpoint": { + "anyOf": [ + {}, + { + "type": "string" + } + ], + "title": "Dashboard Endpoint" + }, + "dashboard_public": { + "title": "Dashboard Public", + "type": "boolean" + }, + "duration_minutes": { + "minimum": 1.0, + "title": "Duration Minutes", + "type": "integer" + }, + "margin_minutes": { + "minimum": 0.0, + "title": "Margin Minutes", + "type": "integer" + }, + "name": { + "title": "Name", + "type": "string" + }, + "players_can_be_in_multiple_teams": { + "title": "Players Can Be In Multiple Teams", + "type": "boolean" + }, + "start_time": { + "format": "date-time", + "title": "Start Time", + "type": "string" + } + }, + "required": [ + "start_time", + "name", + "dashboard_public", + "players_can_be_in_multiple_teams", + "auto_assign_courts", + "duration_minutes", + "margin_minutes", + "club_id" + ], + "title": "TournamentBody", + "type": "object" + }, + "TournamentChangeStatusBody": { + "properties": { + "status": { + "$ref": "#/components/schemas/TournamentStatus" + } + }, + "required": [ + "status" + ], + "title": "TournamentChangeStatusBody", + "type": "object" + }, + "TournamentResponse": { + "properties": { + "data": { + "$ref": "#/components/schemas/Tournament" + } + }, + "required": [ + "data" + ], + "title": "TournamentResponse", + "type": "object" + }, + "TournamentStatus": { + "enum": [ + "OPEN", + "ARCHIVED" + ], + "title": "TournamentStatus", + "type": "string" + }, + "TournamentUpdateBody": { + "properties": { + "auto_assign_courts": { + "title": "Auto Assign Courts", + "type": "boolean" + }, + "dashboard_endpoint": { + "anyOf": [ + {}, + { + "type": "string" + } + ], + "title": "Dashboard Endpoint" + }, + "dashboard_public": { + "title": "Dashboard Public", + "type": "boolean" + }, + "duration_minutes": { + "minimum": 1.0, + "title": "Duration Minutes", + "type": "integer" + }, + "margin_minutes": { + "minimum": 0.0, + "title": "Margin Minutes", + "type": "integer" + }, + "name": { + "title": "Name", + "type": "string" + }, + "players_can_be_in_multiple_teams": { + "title": "Players Can Be In Multiple Teams", + "type": "boolean" + }, + "start_time": { + "format": "date-time", + "title": "Start Time", + "type": "string" + } + }, + "required": [ + "start_time", + "name", + "dashboard_public", + "players_can_be_in_multiple_teams", + "auto_assign_courts", + "duration_minutes", + "margin_minutes" + ], + "title": "TournamentUpdateBody", + "type": "object" + }, + "TournamentsResponse": { + "properties": { + "data": { + "items": { + "$ref": "#/components/schemas/Tournament" + }, + "title": "Data", + "type": "array" + } + }, + "required": [ + "data" + ], + "title": "TournamentsResponse", + "type": "object" + }, + "UpcomingMatchesResponse": { + "properties": { + "data": { + "items": { + "$ref": "#/components/schemas/SuggestedMatch" + }, + "title": "Data", + "type": "array" + } + }, + "required": [ + "data" + ], + "title": "UpcomingMatchesResponse", + "type": "object" + }, + "UserAccountType": { + "enum": [ + "REGULAR", + "DEMO" + ], + "title": "UserAccountType", + "type": "string" + }, + "UserPasswordToUpdate": { + "properties": { + "password": { + "maxLength": 48, + "minLength": 8, + "title": "Password", + "type": "string" + } + }, + "required": [ + "password" + ], + "title": "UserPasswordToUpdate", + "type": "object" + }, + "UserPublic": { + "properties": { + "account_type": { + "$ref": "#/components/schemas/UserAccountType" + }, + "created": { + "format": "date-time", + "title": "Created", + "type": "string" + }, + "email": { + "title": "Email", + "type": "string" + }, + "id": { + "title": "Id", + "type": "integer" + }, + "name": { + "title": "Name", + "type": "string" + } + }, + "required": [ + "email", + "name", + "created", + "account_type", + "id" + ], + "title": "UserPublic", + "type": "object" + }, + "UserPublicResponse": { + "properties": { + "data": { + "$ref": "#/components/schemas/UserPublic" + } + }, + "required": [ + "data" + ], + "title": "UserPublicResponse", + "type": "object" + }, + "UserToRegister": { + "properties": { + "captcha_token": { + "title": "Captcha Token", + "type": "string" + }, + "email": { + "title": "Email", + "type": "string" + }, + "name": { + "title": "Name", + "type": "string" + }, + "password": { + "title": "Password", + "type": "string" + } + }, + "required": [ + "email", + "name", + "password", + "captcha_token" + ], + "title": "UserToRegister", + "type": "object" + }, + "UserToUpdate": { + "properties": { + "email": { + "title": "Email", + "type": "string" + }, + "name": { + "title": "Name", + "type": "string" + } + }, + "required": [ + "email", + "name" + ], + "title": "UserToUpdate", + "type": "object" + }, + "ValidationError": { + "properties": { + "loc": { + "items": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "integer" + } + ] + }, + "title": "Location", + "type": "array" + }, + "msg": { + "title": "Message", + "type": "string" + }, + "type": { + "title": "Error Type", + "type": "string" + } + }, + "required": [ + "loc", + "msg", + "type" + ], + "title": "ValidationError", + "type": "object" + } + }, + "securitySchemes": { + "OAuth2PasswordBearer": { + "flows": { + "password": { + "scopes": {}, + "tokenUrl": "token" + } + }, + "type": "oauth2" + } + } + }, + "info": { + "description": "\n### Description\nThis API allows you to do everything the frontend of [Bracket](https://github.com/evroon/bracket)\nallows you to do (the frontend uses this API as well).\n\nFore more information, see the [documentation](https://docs.bracketapp.nl).\n\n### Table of Contents\n*(links only work for [ReDoc](https://api.bracketapp.nl/redoc), not for Swagger UI)*\n\n- [Auth](#tag/Auth)\n\n- [Clubs](#tag/Clubs)\n\n- [Courts](#tag/Courts)\n\n- [Internals](#tag/Internals)\n\n- [Matches](#tag/Matches)\n\n- [Players](#tag/Players)\n\n- [Rankings](#tag/Rankings)\n\n- [Rounds](#tag/Rounds)\n\n- [Stage Items](#tag/Stage-Items)\n\n- [Stage Item Inputs](#tag/Stage-Item-Inputs)\n\n- [Stages](#tag/Stages)\n\n- [Teams](#tag/Teams)\n\n- [Tournaments](#tag/Tournaments)\n\n- [Users](#tag/Users)\n\n### Links\nGitHub: \n\nDocs: \n\nDemo: \n\nAPI docs (Redoc): \n\nAPI docs (Swagger UI): \n", + "license": { + "name": "AGPL-3.0", + "url": "https://www.gnu.org/licenses/agpl-3.0.en.html" + }, + "summary": "API for Bracket, an open source tournament system.", + "title": "Bracket API", + "version": "1.0.0" + }, + "openapi": "3.1.0", + "paths": { + "/clubs": { + "get": { + "operationId": "get_clubs_clubs_get", + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ClubsResponse" + } + } + }, + "description": "Successful Response" + } + }, + "security": [ + { + "OAuth2PasswordBearer": [] + } + ], + "summary": "Get Clubs", + "tags": [ + "Clubs" + ] + }, + "post": { + "operationId": "create_new_club_clubs_post", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ClubCreateBody" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ClubResponse" + } + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "security": [ + { + "OAuth2PasswordBearer": [] + } + ], + "summary": "Create New Club", + "tags": [ + "Clubs" + ] + } + }, + "/clubs/{club_id}": { + "delete": { + "operationId": "delete_club_clubs__club_id__delete", + "parameters": [ + { + "in": "path", + "name": "club_id", + "required": true, + "schema": { + "title": "Club Id", + "type": "integer" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SuccessResponse" + } + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "security": [ + { + "OAuth2PasswordBearer": [] + } + ], + "summary": "Delete Club", + "tags": [ + "Clubs" + ] + }, + "put": { + "operationId": "update_club_clubs__club_id__put", + "parameters": [ + { + "in": "path", + "name": "club_id", + "required": true, + "schema": { + "title": "Club Id", + "type": "integer" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ClubUpdateBody" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ClubResponse" + } + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "security": [ + { + "OAuth2PasswordBearer": [] + } + ], + "summary": "Update Club", + "tags": [ + "Clubs" + ] + } + }, + "/metrics": { + "get": { + "operationId": "get_metrics_metrics_get", + "responses": { + "200": { + "content": { + "text/plain": { + "schema": { + "type": "string" + } + } + }, + "description": "Successful Response" + } + }, + "summary": "Get Metrics", + "tags": [ + "Internals" + ] + } + }, + "/ping": { + "get": { + "operationId": "ping_ping_get", + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "title": "Response Ping Ping Get", + "type": "string" + } + } + }, + "description": "Successful Response" + } + }, + "summary": "Healthcheck ping", + "tags": [ + "Internals" + ] + } + }, + "/token": { + "post": { + "operationId": "login_for_access_token_token_post", + "requestBody": { + "content": { + "application/x-www-form-urlencoded": { + "schema": { + "$ref": "#/components/schemas/Body_login_for_access_token_token_post" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Token" + } + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "Login For Access Token", + "tags": [ + "Auth" + ] + } + }, + "/tournaments": { + "get": { + "operationId": "get_tournaments_tournaments_get", + "parameters": [ + { + "in": "query", + "name": "filter_", + "required": false, + "schema": { + "default": "OPEN", + "enum": [ + "ALL", + "OPEN", + "ARCHIVED" + ], + "title": "Filter ", + "type": "string" + } + }, + { + "in": "query", + "name": "endpoint_name", + "required": false, + "schema": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Endpoint Name" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/TournamentsResponse" + } + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "security": [ + { + "OAuth2PasswordBearer": [] + } + ], + "summary": "Get Tournaments", + "tags": [ + "Tournaments" + ] + }, + "post": { + "operationId": "create_tournament_tournaments_post", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/TournamentBody" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SuccessResponse" + } + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "security": [ + { + "OAuth2PasswordBearer": [] + } + ], + "summary": "Create Tournament", + "tags": [ + "Tournaments" + ] + } + }, + "/tournaments/{tournament_id}": { + "delete": { + "operationId": "delete_tournament_tournaments__tournament_id__delete", + "parameters": [ + { + "in": "path", + "name": "tournament_id", + "required": true, + "schema": { + "title": "Tournament Id", + "type": "integer" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SuccessResponse" + } + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "security": [ + { + "OAuth2PasswordBearer": [] + } + ], + "summary": "Delete Tournament", + "tags": [ + "Tournaments" + ] + }, + "get": { + "operationId": "get_tournament_tournaments__tournament_id__get", + "parameters": [ + { + "in": "path", + "name": "tournament_id", + "required": true, + "schema": { + "title": "Tournament Id", + "type": "integer" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/TournamentResponse" + } + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "Get Tournament", + "tags": [ + "Tournaments" + ] + }, + "put": { + "operationId": "update_tournament_by_id_tournaments__tournament_id__put", + "parameters": [ + { + "in": "path", + "name": "tournament_id", + "required": true, + "schema": { + "title": "Tournament Id", + "type": "integer" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/TournamentUpdateBody" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SuccessResponse" + } + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "security": [ + { + "OAuth2PasswordBearer": [] + } + ], + "summary": "Update Tournament By Id", + "tags": [ + "Tournaments" + ] + } + }, + "/tournaments/{tournament_id}/available_inputs": { + "get": { + "operationId": "get_available_inputs_tournaments__tournament_id__available_inputs_get", + "parameters": [ + { + "in": "path", + "name": "tournament_id", + "required": true, + "schema": { + "title": "Tournament Id", + "type": "integer" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/StageItemInputOptionsResponse" + } + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "security": [ + { + "OAuth2PasswordBearer": [] + } + ], + "summary": "Get Available Inputs", + "tags": [ + "Stages" + ] + } + }, + "/tournaments/{tournament_id}/change-status": { + "post": { + "description": "Make a tournament archived or non-archived.", + "operationId": "change_status_tournaments__tournament_id__change_status_post", + "parameters": [ + { + "in": "path", + "name": "tournament_id", + "required": true, + "schema": { + "title": "Tournament Id", + "type": "integer" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/TournamentChangeStatusBody" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SuccessResponse" + } + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "security": [ + { + "OAuth2PasswordBearer": [] + } + ], + "summary": "Change Status", + "tags": [ + "Tournaments" + ] + } + }, + "/tournaments/{tournament_id}/courts": { + "get": { + "operationId": "get_courts_tournaments__tournament_id__courts_get", + "parameters": [ + { + "in": "path", + "name": "tournament_id", + "required": true, + "schema": { + "title": "Tournament Id", + "type": "integer" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CourtsResponse" + } + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "Get Courts", + "tags": [ + "Courts" + ] + }, + "post": { + "operationId": "create_court_tournaments__tournament_id__courts_post", + "parameters": [ + { + "in": "path", + "name": "tournament_id", + "required": true, + "schema": { + "title": "Tournament Id", + "type": "integer" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CourtBody" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SingleCourtResponse" + } + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "security": [ + { + "OAuth2PasswordBearer": [] + } + ], + "summary": "Create Court", + "tags": [ + "Courts" + ] + } + }, + "/tournaments/{tournament_id}/courts/{court_id}": { + "delete": { + "operationId": "delete_court_tournaments__tournament_id__courts__court_id__delete", + "parameters": [ + { + "in": "path", + "name": "tournament_id", + "required": true, + "schema": { + "title": "Tournament Id", + "type": "integer" + } + }, + { + "in": "path", + "name": "court_id", + "required": true, + "schema": { + "title": "Court Id", + "type": "integer" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SuccessResponse" + } + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "security": [ + { + "OAuth2PasswordBearer": [] + } + ], + "summary": "Delete Court", + "tags": [ + "Courts" + ] + }, + "put": { + "operationId": "update_court_by_id_tournaments__tournament_id__courts__court_id__put", + "parameters": [ + { + "in": "path", + "name": "tournament_id", + "required": true, + "schema": { + "title": "Tournament Id", + "type": "integer" + } + }, + { + "in": "path", + "name": "court_id", + "required": true, + "schema": { + "title": "Court Id", + "type": "integer" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CourtBody" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SingleCourtResponse" + } + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "security": [ + { + "OAuth2PasswordBearer": [] + } + ], + "summary": "Update Court By Id", + "tags": [ + "Courts" + ] + } + }, + "/tournaments/{tournament_id}/logo": { + "post": { + "operationId": "upload_logo_tournaments__tournament_id__logo_post", + "parameters": [ + { + "in": "path", + "name": "tournament_id", + "required": true, + "schema": { + "title": "Tournament Id", + "type": "integer" + } + } + ], + "requestBody": { + "content": { + "multipart/form-data": { + "schema": { + "$ref": "#/components/schemas/Body_upload_logo_tournaments__tournament_id__logo_post" + } + } + } + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/TournamentResponse" + } + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "security": [ + { + "OAuth2PasswordBearer": [] + } + ], + "summary": "Upload Logo", + "tags": [ + "Tournaments" + ] + } + }, + "/tournaments/{tournament_id}/matches": { + "post": { + "operationId": "create_match_tournaments__tournament_id__matches_post", + "parameters": [ + { + "in": "path", + "name": "tournament_id", + "required": true, + "schema": { + "title": "Tournament Id", + "type": "integer" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/MatchCreateBodyFrontend" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SingleMatchResponse" + } + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "security": [ + { + "OAuth2PasswordBearer": [] + } + ], + "summary": "Create Match", + "tags": [ + "Matches" + ] + } + }, + "/tournaments/{tournament_id}/matches/{match_id}": { + "delete": { + "operationId": "delete_match_tournaments__tournament_id__matches__match_id__delete", + "parameters": [ + { + "in": "path", + "name": "tournament_id", + "required": true, + "schema": { + "title": "Tournament Id", + "type": "integer" + } + }, + { + "in": "path", + "name": "match_id", + "required": true, + "schema": { + "title": "Match Id", + "type": "integer" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SuccessResponse" + } + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "security": [ + { + "OAuth2PasswordBearer": [] + } + ], + "summary": "Delete Match", + "tags": [ + "Matches" + ] + }, + "put": { + "operationId": "update_match_by_id_tournaments__tournament_id__matches__match_id__put", + "parameters": [ + { + "in": "path", + "name": "tournament_id", + "required": true, + "schema": { + "title": "Tournament Id", + "type": "integer" + } + }, + { + "in": "path", + "name": "match_id", + "required": true, + "schema": { + "title": "Match Id", + "type": "integer" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/MatchBody" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SuccessResponse" + } + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "security": [ + { + "OAuth2PasswordBearer": [] + } + ], + "summary": "Update Match By Id", + "tags": [ + "Matches" + ] + } + }, + "/tournaments/{tournament_id}/matches/{match_id}/reschedule": { + "post": { + "operationId": "reschedule_match_tournaments__tournament_id__matches__match_id__reschedule_post", + "parameters": [ + { + "in": "path", + "name": "tournament_id", + "required": true, + "schema": { + "title": "Tournament Id", + "type": "integer" + } + }, + { + "in": "path", + "name": "match_id", + "required": true, + "schema": { + "title": "Match Id", + "type": "integer" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/MatchRescheduleBody" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SuccessResponse" + } + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "security": [ + { + "OAuth2PasswordBearer": [] + } + ], + "summary": "Reschedule Match", + "tags": [ + "Matches" + ] + } + }, + "/tournaments/{tournament_id}/next_stage_rankings": { + "get": { + "description": "Get the rankings for the stage items in this stage.", + "operationId": "get_next_stage_rankings_tournaments__tournament_id__next_stage_rankings_get", + "parameters": [ + { + "in": "path", + "name": "tournament_id", + "required": true, + "schema": { + "title": "Tournament Id", + "type": "integer" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/StageRankingResponse" + } + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "security": [ + { + "OAuth2PasswordBearer": [] + } + ], + "summary": "Get Next Stage Rankings", + "tags": [ + "Stages" + ] + } + }, + "/tournaments/{tournament_id}/players": { + "get": { + "operationId": "get_players_tournaments__tournament_id__players_get", + "parameters": [ + { + "in": "path", + "name": "tournament_id", + "required": true, + "schema": { + "title": "Tournament Id", + "type": "integer" + } + }, + { + "in": "query", + "name": "not_in_team", + "required": false, + "schema": { + "default": false, + "title": "Not In Team", + "type": "boolean" + } + }, + { + "description": "Max number of results in a single page.", + "in": "query", + "name": "limit", + "required": false, + "schema": { + "default": 25, + "description": "Max number of results in a single page.", + "maximum": 100, + "minimum": 1, + "title": "Limit", + "type": "integer" + } + }, + { + "description": "Filter results starting from this offset.", + "in": "query", + "name": "offset", + "required": false, + "schema": { + "default": 0, + "description": "Filter results starting from this offset.", + "minimum": 0, + "title": "Offset", + "type": "integer" + } + }, + { + "in": "query", + "name": "sort_direction", + "required": false, + "schema": { + "default": "asc", + "enum": [ + "asc", + "desc" + ], + "title": "Sort Direction", + "type": "string" + } + }, + { + "in": "query", + "name": "sort_by", + "required": false, + "schema": { + "default": "name", + "enum": [ + "name", + "elo_score", + "swiss_score", + "wins", + "draws", + "losses", + "active", + "created" + ], + "title": "Sort By", + "type": "string" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/PlayersResponse" + } + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "security": [ + { + "OAuth2PasswordBearer": [] + } + ], + "summary": "Get Players", + "tags": [ + "Players" + ] + }, + "post": { + "operationId": "create_single_player_tournaments__tournament_id__players_post", + "parameters": [ + { + "in": "path", + "name": "tournament_id", + "required": true, + "schema": { + "title": "Tournament Id", + "type": "integer" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/PlayerBody" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SuccessResponse" + } + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "security": [ + { + "OAuth2PasswordBearer": [] + } + ], + "summary": "Create Single Player", + "tags": [ + "Players" + ] + } + }, + "/tournaments/{tournament_id}/players/{player_id}": { + "delete": { + "operationId": "delete_player_tournaments__tournament_id__players__player_id__delete", + "parameters": [ + { + "in": "path", + "name": "tournament_id", + "required": true, + "schema": { + "title": "Tournament Id", + "type": "integer" + } + }, + { + "in": "path", + "name": "player_id", + "required": true, + "schema": { + "title": "Player Id", + "type": "integer" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SuccessResponse" + } + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "security": [ + { + "OAuth2PasswordBearer": [] + } + ], + "summary": "Delete Player", + "tags": [ + "Players" + ] + }, + "put": { + "operationId": "update_player_by_id_tournaments__tournament_id__players__player_id__put", + "parameters": [ + { + "in": "path", + "name": "tournament_id", + "required": true, + "schema": { + "title": "Tournament Id", + "type": "integer" + } + }, + { + "in": "path", + "name": "player_id", + "required": true, + "schema": { + "title": "Player Id", + "type": "integer" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/PlayerBody" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SinglePlayerResponse" + } + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "security": [ + { + "OAuth2PasswordBearer": [] + } + ], + "summary": "Update Player By Id", + "tags": [ + "Players" + ] + } + }, + "/tournaments/{tournament_id}/players_multi": { + "post": { + "operationId": "create_multiple_players_tournaments__tournament_id__players_multi_post", + "parameters": [ + { + "in": "path", + "name": "tournament_id", + "required": true, + "schema": { + "title": "Tournament Id", + "type": "integer" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/PlayerMultiBody" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SuccessResponse" + } + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "security": [ + { + "OAuth2PasswordBearer": [] + } + ], + "summary": "Create Multiple Players", + "tags": [ + "Players" + ] + } + }, + "/tournaments/{tournament_id}/rankings": { + "get": { + "operationId": "get_rankings_tournaments__tournament_id__rankings_get", + "parameters": [ + { + "in": "path", + "name": "tournament_id", + "required": true, + "schema": { + "title": "Tournament Id", + "type": "integer" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/RankingsResponse" + } + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "Get Rankings", + "tags": [ + "Rankings" + ] + }, + "post": { + "operationId": "create_ranking_tournaments__tournament_id__rankings_post", + "parameters": [ + { + "in": "path", + "name": "tournament_id", + "required": true, + "schema": { + "title": "Tournament Id", + "type": "integer" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/RankingCreateBody" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SuccessResponse" + } + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "security": [ + { + "OAuth2PasswordBearer": [] + } + ], + "summary": "Create Ranking", + "tags": [ + "Rankings" + ] + } + }, + "/tournaments/{tournament_id}/rankings/{ranking_id}": { + "delete": { + "operationId": "delete_ranking_tournaments__tournament_id__rankings__ranking_id__delete", + "parameters": [ + { + "in": "path", + "name": "tournament_id", + "required": true, + "schema": { + "title": "Tournament Id", + "type": "integer" + } + }, + { + "in": "path", + "name": "ranking_id", + "required": true, + "schema": { + "title": "Ranking Id", + "type": "integer" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SuccessResponse" + } + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "security": [ + { + "OAuth2PasswordBearer": [] + } + ], + "summary": "Delete Ranking", + "tags": [ + "Rankings" + ] + }, + "put": { + "operationId": "update_ranking_by_id_tournaments__tournament_id__rankings__ranking_id__put", + "parameters": [ + { + "in": "path", + "name": "tournament_id", + "required": true, + "schema": { + "title": "Tournament Id", + "type": "integer" + } + }, + { + "in": "path", + "name": "ranking_id", + "required": true, + "schema": { + "title": "Ranking Id", + "type": "integer" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/RankingBody" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SuccessResponse" + } + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "security": [ + { + "OAuth2PasswordBearer": [] + } + ], + "summary": "Update Ranking By Id", + "tags": [ + "Rankings" + ] + } + }, + "/tournaments/{tournament_id}/rounds": { + "post": { + "operationId": "create_round_tournaments__tournament_id__rounds_post", + "parameters": [ + { + "in": "path", + "name": "tournament_id", + "required": true, + "schema": { + "title": "Tournament Id", + "type": "integer" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/RoundCreateBody" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SuccessResponse" + } + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "security": [ + { + "OAuth2PasswordBearer": [] + } + ], + "summary": "Create Round", + "tags": [ + "Rounds" + ] + } + }, + "/tournaments/{tournament_id}/rounds/{round_id}": { + "delete": { + "operationId": "delete_round_tournaments__tournament_id__rounds__round_id__delete", + "parameters": [ + { + "in": "path", + "name": "tournament_id", + "required": true, + "schema": { + "title": "Tournament Id", + "type": "integer" + } + }, + { + "in": "path", + "name": "round_id", + "required": true, + "schema": { + "title": "Round Id", + "type": "integer" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SuccessResponse" + } + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "security": [ + { + "OAuth2PasswordBearer": [] + } + ], + "summary": "Delete Round", + "tags": [ + "Rounds" + ] + }, + "put": { + "operationId": "update_round_by_id_tournaments__tournament_id__rounds__round_id__put", + "parameters": [ + { + "in": "path", + "name": "tournament_id", + "required": true, + "schema": { + "title": "Tournament Id", + "type": "integer" + } + }, + { + "in": "path", + "name": "round_id", + "required": true, + "schema": { + "title": "Round Id", + "type": "integer" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/RoundUpdateBody" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SuccessResponse" + } + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "security": [ + { + "OAuth2PasswordBearer": [] + } + ], + "summary": "Update Round By Id", + "tags": [ + "Rounds" + ] + } + }, + "/tournaments/{tournament_id}/schedule_matches": { + "post": { + "operationId": "schedule_matches_tournaments__tournament_id__schedule_matches_post", + "parameters": [ + { + "in": "path", + "name": "tournament_id", + "required": true, + "schema": { + "title": "Tournament Id", + "type": "integer" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SuccessResponse" + } + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "security": [ + { + "OAuth2PasswordBearer": [] + } + ], + "summary": "Schedule Matches", + "tags": [ + "Matches" + ] + } + }, + "/tournaments/{tournament_id}/stage_items": { + "post": { + "operationId": "create_stage_item_tournaments__tournament_id__stage_items_post", + "parameters": [ + { + "in": "path", + "name": "tournament_id", + "required": true, + "schema": { + "title": "Tournament Id", + "type": "integer" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/StageItemCreateBody" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SuccessResponse" + } + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "security": [ + { + "OAuth2PasswordBearer": [] + } + ], + "summary": "Create Stage Item", + "tags": [ + "Stage Items" + ] + } + }, + "/tournaments/{tournament_id}/stage_items/{stage_item_id}": { + "delete": { + "operationId": "delete_stage_item_tournaments__tournament_id__stage_items__stage_item_id__delete", + "parameters": [ + { + "in": "path", + "name": "tournament_id", + "required": true, + "schema": { + "title": "Tournament Id", + "type": "integer" + } + }, + { + "in": "path", + "name": "stage_item_id", + "required": true, + "schema": { + "title": "Stage Item Id", + "type": "integer" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SuccessResponse" + } + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "security": [ + { + "OAuth2PasswordBearer": [] + } + ], + "summary": "Delete Stage Item", + "tags": [ + "Stage Items" + ] + }, + "put": { + "operationId": "update_stage_item_tournaments__tournament_id__stage_items__stage_item_id__put", + "parameters": [ + { + "in": "path", + "name": "tournament_id", + "required": true, + "schema": { + "title": "Tournament Id", + "type": "integer" + } + }, + { + "in": "path", + "name": "stage_item_id", + "required": true, + "schema": { + "title": "Stage Item Id", + "type": "integer" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/StageItemUpdateBody" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SuccessResponse" + } + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "security": [ + { + "OAuth2PasswordBearer": [] + } + ], + "summary": "Update Stage Item", + "tags": [ + "Stage Items" + ] + } + }, + "/tournaments/{tournament_id}/stage_items/{stage_item_id}/inputs/{stage_item_input_id}": { + "put": { + "operationId": "update_stage_item_input_tournaments__tournament_id__stage_items__stage_item_id__inputs__stage_item_input_id__put", + "parameters": [ + { + "in": "path", + "name": "tournament_id", + "required": true, + "schema": { + "title": "Tournament Id", + "type": "integer" + } + }, + { + "in": "path", + "name": "stage_item_id", + "required": true, + "schema": { + "title": "Stage Item Id", + "type": "integer" + } + }, + { + "in": "path", + "name": "stage_item_input_id", + "required": true, + "schema": { + "title": "Stage Item Input Id", + "type": "integer" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "anyOf": [ + { + "$ref": "#/components/schemas/StageItemInputUpdateBodyTentative" + }, + { + "$ref": "#/components/schemas/StageItemInputUpdateBodyFinal" + }, + { + "$ref": "#/components/schemas/StageItemInputUpdateBodyEmpty" + } + ], + "title": "Stage Item Body" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SuccessResponse" + } + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "security": [ + { + "OAuth2PasswordBearer": [] + } + ], + "summary": "Update Stage Item Input", + "tags": [ + "Stage Item Inputs" + ] + } + }, + "/tournaments/{tournament_id}/stage_items/{stage_item_id}/start_next_round": { + "post": { + "operationId": "start_next_round_tournaments__tournament_id__stage_items__stage_item_id__start_next_round_post", + "parameters": [ + { + "in": "path", + "name": "tournament_id", + "required": true, + "schema": { + "title": "Tournament Id", + "type": "integer" + } + }, + { + "in": "path", + "name": "stage_item_id", + "required": true, + "schema": { + "title": "Stage Item Id", + "type": "integer" + } + }, + { + "in": "query", + "name": "elo_diff_threshold", + "required": false, + "schema": { + "default": 200, + "title": "Elo Diff Threshold", + "type": "integer" + } + }, + { + "in": "query", + "name": "iterations", + "required": false, + "schema": { + "default": 2000, + "title": "Iterations", + "type": "integer" + } + }, + { + "in": "query", + "name": "only_recommended", + "required": false, + "schema": { + "default": false, + "title": "Only Recommended", + "type": "boolean" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/StageItemActivateNextBody" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SuccessResponse" + } + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "security": [ + { + "OAuth2PasswordBearer": [] + } + ], + "summary": "Start Next Round", + "tags": [ + "Stage Items" + ] + } + }, + "/tournaments/{tournament_id}/stage_items/{stage_item_id}/upcoming_matches": { + "get": { + "operationId": "get_matches_to_schedule_tournaments__tournament_id__stage_items__stage_item_id__upcoming_matches_get", + "parameters": [ + { + "in": "path", + "name": "tournament_id", + "required": true, + "schema": { + "title": "Tournament Id", + "type": "integer" + } + }, + { + "in": "path", + "name": "stage_item_id", + "required": true, + "schema": { + "title": "Stage Item Id", + "type": "integer" + } + }, + { + "in": "query", + "name": "elo_diff_threshold", + "required": false, + "schema": { + "default": 200, + "title": "Elo Diff Threshold", + "type": "integer" + } + }, + { + "in": "query", + "name": "iterations", + "required": false, + "schema": { + "default": 2000, + "title": "Iterations", + "type": "integer" + } + }, + { + "in": "query", + "name": "only_recommended", + "required": false, + "schema": { + "default": false, + "title": "Only Recommended", + "type": "boolean" + } + }, + { + "in": "query", + "name": "limit", + "required": false, + "schema": { + "default": 50, + "title": "Limit", + "type": "integer" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/UpcomingMatchesResponse" + } + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "security": [ + { + "OAuth2PasswordBearer": [] + } + ], + "summary": "Get Matches To Schedule", + "tags": [ + "Matches" + ] + } + }, + "/tournaments/{tournament_id}/stages": { + "get": { + "operationId": "get_stages_tournaments__tournament_id__stages_get", + "parameters": [ + { + "in": "path", + "name": "tournament_id", + "required": true, + "schema": { + "title": "Tournament Id", + "type": "integer" + } + }, + { + "in": "query", + "name": "no_draft_rounds", + "required": false, + "schema": { + "default": false, + "title": "No Draft Rounds", + "type": "boolean" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/StagesWithStageItemsResponse" + } + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "Get Stages", + "tags": [ + "Stages" + ] + }, + "post": { + "operationId": "create_stage_tournaments__tournament_id__stages_post", + "parameters": [ + { + "in": "path", + "name": "tournament_id", + "required": true, + "schema": { + "title": "Tournament Id", + "type": "integer" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SuccessResponse" + } + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "security": [ + { + "OAuth2PasswordBearer": [] + } + ], + "summary": "Create Stage", + "tags": [ + "Stages" + ] + } + }, + "/tournaments/{tournament_id}/stages/activate": { + "post": { + "operationId": "activate_next_stage_tournaments__tournament_id__stages_activate_post", + "parameters": [ + { + "in": "path", + "name": "tournament_id", + "required": true, + "schema": { + "title": "Tournament Id", + "type": "integer" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/StageActivateBody" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SuccessResponse" + } + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "security": [ + { + "OAuth2PasswordBearer": [] + } + ], + "summary": "Activate Next Stage", + "tags": [ + "Stages" + ] + } + }, + "/tournaments/{tournament_id}/stages/{stage_id}": { + "delete": { + "operationId": "delete_stage_tournaments__tournament_id__stages__stage_id__delete", + "parameters": [ + { + "in": "path", + "name": "tournament_id", + "required": true, + "schema": { + "title": "Tournament Id", + "type": "integer" + } + }, + { + "in": "path", + "name": "stage_id", + "required": true, + "schema": { + "title": "Stage Id", + "type": "integer" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SuccessResponse" + } + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "security": [ + { + "OAuth2PasswordBearer": [] + } + ], + "summary": "Delete Stage", + "tags": [ + "Stages" + ] + }, + "put": { + "operationId": "update_stage_tournaments__tournament_id__stages__stage_id__put", + "parameters": [ + { + "in": "path", + "name": "tournament_id", + "required": true, + "schema": { + "title": "Tournament Id", + "type": "integer" + } + }, + { + "in": "path", + "name": "stage_id", + "required": true, + "schema": { + "title": "Stage Id", + "type": "integer" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/StageUpdateBody" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SuccessResponse" + } + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "security": [ + { + "OAuth2PasswordBearer": [] + } + ], + "summary": "Update Stage", + "tags": [ + "Stages" + ] + } + }, + "/tournaments/{tournament_id}/teams": { + "get": { + "operationId": "get_teams_tournaments__tournament_id__teams_get", + "parameters": [ + { + "in": "path", + "name": "tournament_id", + "required": true, + "schema": { + "title": "Tournament Id", + "type": "integer" + } + }, + { + "description": "Max number of results in a single page.", + "in": "query", + "name": "limit", + "required": false, + "schema": { + "default": 25, + "description": "Max number of results in a single page.", + "maximum": 100, + "minimum": 1, + "title": "Limit", + "type": "integer" + } + }, + { + "description": "Filter results starting from this offset.", + "in": "query", + "name": "offset", + "required": false, + "schema": { + "default": 0, + "description": "Filter results starting from this offset.", + "minimum": 0, + "title": "Offset", + "type": "integer" + } + }, + { + "in": "query", + "name": "sort_direction", + "required": false, + "schema": { + "default": "asc", + "enum": [ + "asc", + "desc" + ], + "title": "Sort Direction", + "type": "string" + } + }, + { + "in": "query", + "name": "sort_by", + "required": false, + "schema": { + "default": "name", + "enum": [ + "name", + "elo_score", + "swiss_score", + "wins", + "draws", + "losses", + "active", + "created" + ], + "title": "Sort By", + "type": "string" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/TeamsWithPlayersResponse" + } + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "Get Teams", + "tags": [ + "Teams" + ] + }, + "post": { + "operationId": "create_team_tournaments__tournament_id__teams_post", + "parameters": [ + { + "in": "path", + "name": "tournament_id", + "required": true, + "schema": { + "title": "Tournament Id", + "type": "integer" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/TeamBody" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SingleTeamResponse" + } + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "security": [ + { + "OAuth2PasswordBearer": [] + } + ], + "summary": "Create Team", + "tags": [ + "Teams" + ] + } + }, + "/tournaments/{tournament_id}/teams/{team_id}": { + "delete": { + "operationId": "delete_team_tournaments__tournament_id__teams__team_id__delete", + "parameters": [ + { + "in": "path", + "name": "tournament_id", + "required": true, + "schema": { + "title": "Tournament Id", + "type": "integer" + } + }, + { + "in": "path", + "name": "team_id", + "required": true, + "schema": { + "title": "Team Id", + "type": "integer" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SuccessResponse" + } + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "security": [ + { + "OAuth2PasswordBearer": [] + } + ], + "summary": "Delete Team", + "tags": [ + "Teams" + ] + }, + "put": { + "operationId": "update_team_by_id_tournaments__tournament_id__teams__team_id__put", + "parameters": [ + { + "in": "path", + "name": "tournament_id", + "required": true, + "schema": { + "title": "Tournament Id", + "type": "integer" + } + }, + { + "in": "path", + "name": "team_id", + "required": true, + "schema": { + "title": "Team Id", + "type": "integer" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/TeamBody" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SingleTeamResponse" + } + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "security": [ + { + "OAuth2PasswordBearer": [] + } + ], + "summary": "Update Team By Id", + "tags": [ + "Teams" + ] + } + }, + "/tournaments/{tournament_id}/teams/{team_id}/logo": { + "post": { + "operationId": "update_team_logo_tournaments__tournament_id__teams__team_id__logo_post", + "parameters": [ + { + "in": "path", + "name": "tournament_id", + "required": true, + "schema": { + "title": "Tournament Id", + "type": "integer" + } + }, + { + "in": "path", + "name": "team_id", + "required": true, + "schema": { + "title": "Team Id", + "type": "integer" + } + } + ], + "requestBody": { + "content": { + "multipart/form-data": { + "schema": { + "$ref": "#/components/schemas/Body_update_team_logo_tournaments__tournament_id__teams__team_id__logo_post" + } + } + } + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SingleTeamResponse" + } + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "security": [ + { + "OAuth2PasswordBearer": [] + } + ], + "summary": "Update Team Logo", + "tags": [ + "Teams" + ] + } + }, + "/tournaments/{tournament_id}/teams_multi": { + "post": { + "operationId": "create_multiple_teams_tournaments__tournament_id__teams_multi_post", + "parameters": [ + { + "in": "path", + "name": "tournament_id", + "required": true, + "schema": { + "title": "Tournament Id", + "type": "integer" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/TeamMultiBody" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SuccessResponse" + } + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "security": [ + { + "OAuth2PasswordBearer": [] + } + ], + "summary": "Create Multiple Teams", + "tags": [ + "Teams" + ] + } + }, + "/users/me": { + "get": { + "operationId": "get_user_users_me_get", + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/UserPublicResponse" + } + } + }, + "description": "Successful Response" + } + }, + "security": [ + { + "OAuth2PasswordBearer": [] + } + ], + "summary": "Get User", + "tags": [ + "Users" + ] + } + }, + "/users/register": { + "post": { + "operationId": "register_user_users_register_post", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/UserToRegister" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/TokenResponse" + } + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "Register User", + "tags": [ + "Users" + ] + } + }, + "/users/register_demo": { + "post": { + "operationId": "register_demo_user_users_register_demo_post", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/DemoUserToRegister" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/TokenResponse" + } + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "summary": "Register Demo User", + "tags": [ + "Users" + ] + } + }, + "/users/{user_id}": { + "get": { + "operationId": "get_me_users__user_id__get", + "parameters": [ + { + "in": "path", + "name": "user_id", + "required": true, + "schema": { + "title": "User Id", + "type": "integer" + } + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/UserPublicResponse" + } + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "security": [ + { + "OAuth2PasswordBearer": [] + } + ], + "summary": "Get Me", + "tags": [ + "Users" + ] + }, + "put": { + "operationId": "update_user_details_users__user_id__put", + "parameters": [ + { + "in": "path", + "name": "user_id", + "required": true, + "schema": { + "title": "User Id", + "type": "integer" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/UserToUpdate" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/UserPublicResponse" + } + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "security": [ + { + "OAuth2PasswordBearer": [] + } + ], + "summary": "Update User Details", + "tags": [ + "Users" + ] + } + }, + "/users/{user_id}/password": { + "put": { + "operationId": "put_user_password_users__user_id__password_put", + "parameters": [ + { + "in": "path", + "name": "user_id", + "required": true, + "schema": { + "title": "User Id", + "type": "integer" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/UserPasswordToUpdate" + } + } + }, + "required": true + }, + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SuccessResponse" + } + } + }, + "description": "Successful Response" + }, + "422": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/HTTPValidationError" + } + } + }, + "description": "Validation Error" + } + }, + "security": [ + { + "OAuth2PasswordBearer": [] + } + ], + "summary": "Put User Password", + "tags": [ + "Users" + ] + } + } + } +} \ No newline at end of file diff --git a/backend/precommit.sh b/backend/precommit.sh index d7c3fc03d..2ce1a7aef 100755 --- a/backend/precommit.sh +++ b/backend/precommit.sh @@ -5,6 +5,7 @@ uv run ruff format . uv run ruff check --fix . ! uv run vulture | grep "unused function\|unused class\|unused method" uv run pyrefly check +uv run ./cli.py generate-openapi uv run dmypy run -- --follow-imports=normal --junit-xml= . ENVIRONMENT=CI uv run pytest --cov --cov-report=xml . -vvv uv run pylint cli.py bracket tests diff --git a/backend/pyproject.toml b/backend/pyproject.toml index 0fe6b5047..33267a298 100644 --- a/backend/pyproject.toml +++ b/backend/pyproject.toml @@ -174,7 +174,7 @@ ignore = ["FIX002", "TD002", "TD003", "TC001", "TC002", "TC003", "ISC001"] min_confidence = 0 paths = ["."] exclude = [".venv"] -ignore_decorators = ["@pytest.*", "@*router*", "@app.*", "@*validator*"] +ignore_decorators = ["@pytest.*", "@*router*", "@app.*", "@*validator*", "@cli.command*"] ignore_names = [ "RestartableUvicornWorker", "_generate_next_value_", diff --git a/backend/tests/unit_tests/openapi_test.py b/backend/tests/unit_tests/openapi_test.py new file mode 100644 index 000000000..81100c054 --- /dev/null +++ b/backend/tests/unit_tests/openapi_test.py @@ -0,0 +1,9 @@ +import json +from pathlib import Path + +from bracket.app import app + + +def test_openapi_up_to_date() -> None: + schema = app.openapi() + assert Path("openapi/openapi.json").read_text() == json.dumps(schema, indent=2, sort_keys=True) diff --git a/frontend/openapi-ts.config.js b/frontend/openapi-ts.config.js new file mode 100644 index 000000000..ea837b05c --- /dev/null +++ b/frontend/openapi-ts.config.js @@ -0,0 +1,7 @@ +import { defineConfig } from '@hey-api/openapi-ts'; + +export default defineConfig({ + input: '../backend/openapi/openapi.json', + output: 'src/openapi', + plugins: ['@hey-api/client-axios'], +}); \ No newline at end of file diff --git a/frontend/package.json b/frontend/package.json index 326ef5901..a8d8ada75 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -6,20 +6,19 @@ "dev": "vite", "build": "vite build", "analyze": "ANALYZE=true vite build", + "openapi-ts": "openapi-ts", "start": "vite start", - "typecheck": "tsc --noEmit", + "typecheck": "tsc", "export": "vite build && vite export", - "jest": "jest", - "jest:watch": "jest --watch", "prettier:check": "prettier --check \"**/*.{ts,tsx}\"", "prettier:write": "prettier --write \"**/*.{ts,tsx}\"", - "test": "tsc --noEmit && pnpm run prettier:write" + "test": "tsc && pnpm run prettier:write" }, "dependencies": { - "@emotion/react": "^11.14.0", - "@emotion/server": "^11.11.0", - "@hcaptcha/react-hcaptcha": "^1.17.0", - "@hello-pangea/dnd": "^18.0.1", + "@emotion/react": "11.14.0", + "@emotion/server": "11.11.0", + "@hcaptcha/react-hcaptcha": "1.17.0", + "@hello-pangea/dnd": "18.0.1", "@mantine/core": "8.3.7", "@mantine/dates": "8.3.7", "@mantine/dropzone": "8.3.7", @@ -27,46 +26,47 @@ "@mantine/hooks": "8.3.7", "@mantine/notifications": "8.3.7", "@mantine/spotlight": "8.3.7", - "@react-icons/all-files": "^4.1.0", - "@tabler/icons-react": "^3.36.0", - "@vitejs/plugin-react": "^5.1.0", - "axios": "^1.13.0", - "date-fns": "^4.1.0", - "dayjs": "^1.11.10", - "i18next": "^25.7.1", - "nuqs": "^2.8.0", - "react": "^19.2.0", - "react-dom": "^19.2.0", - "react-i18next": "^16.5.0", - "react-icons": "^5.5.0", - "react-qr-code": "^2.0.12", - "react-router": "^7.11.0", - "swr": "^2.3.0" + "@react-icons/all-files": "4.1.0", + "@tabler/icons-react": "3.36.0", + "@vitejs/plugin-react": "5.1.0", + "axios": "1.13.0", + "date-fns": "4.1.0", + "dayjs": "1.11.10", + "i18next": "25.7.1", + "nuqs": "2.8.0", + "react": "19.2.0", + "react-dom": "19.2.0", + "react-i18next": "16.5.0", + "react-icons": "5.5.0", + "react-qr-code": "2.0.12", + "react-router": "7.11.0", + "swr": "2.3.0" }, "devDependencies": { - "@trivago/prettier-plugin-sort-imports": "^6.0.0", - "@types/node": "^25.0.0", - "@types/react": "^19.2.4", - "@types/react-dom": "^19.2.3", - "@typescript-eslint/eslint-plugin": "^7.18.0", - "@typescript-eslint/parser": "^7.18.0", - "eslint": "^8.57.0", - "eslint-config-airbnb": "^19.0.4", - "eslint-config-airbnb-typescript": "^18.0.0", - "eslint-config-mantine": "^3.2.0", - "eslint-plugin-import": "^2.32.0", - "eslint-plugin-jsx-a11y": "^6.10.0", - "eslint-plugin-react": "^7.37.0", - "eslint-plugin-react-hooks": "^4.6.0", - "eslint-plugin-testing-library": "^7.15.1", - "i18next-browser-languagedetector": "^8.2.0", - "i18next-http-backend": "^3.0.2", - "postcss": "^8.5.0", - "postcss-preset-mantine": "^1.18.0", - "postcss-simple-vars": "^7.0.1", - "prettier": "^3.7.1", - "typescript": "^5.8.2", - "vite-plugin-i18next-loader": "^3.1.3", - "vite": "^7.3.0" + "@hey-api/openapi-ts": "0.89.2", + "@trivago/prettier-plugin-sort-imports": "6.0.0", + "@types/node": "25.0.0", + "@types/react": "19.2.4", + "@types/react-dom": "19.2.3", + "@typescript-eslint/eslint-plugin": "7.18.0", + "@typescript-eslint/parser": "7.18.0", + "eslint": "8.57.0", + "eslint-config-airbnb": "19.0.4", + "eslint-config-airbnb-typescript": "18.0.0", + "eslint-config-mantine": "3.2.0", + "eslint-plugin-import": "2.32.0", + "eslint-plugin-jsx-a11y": "6.10.0", + "eslint-plugin-react": "7.37.0", + "eslint-plugin-react-hooks": "4.6.0", + "eslint-plugin-testing-library": "7.15.1", + "i18next-browser-languagedetector": "8.2.0", + "i18next-http-backend": "3.0.2", + "postcss": "8.5.0", + "postcss-preset-mantine": "1.18.0", + "postcss-simple-vars": "7.0.1", + "prettier": "3.7.1", + "typescript": "5.8.2", + "vite": "7.3.0", + "vite-plugin-i18next-loader": "3.1.3" } } diff --git a/frontend/pnpm-lock.yaml b/frontend/pnpm-lock.yaml index 19c3cfadb..7a17c8c4a 100644 --- a/frontend/pnpm-lock.yaml +++ b/frontend/pnpm-lock.yaml @@ -9,23 +9,23 @@ importers: .: dependencies: '@emotion/react': - specifier: ^11.14.0 + specifier: 11.14.0 version: 11.14.0(@types/react@19.2.4)(react@19.2.0) '@emotion/server': - specifier: ^11.11.0 + specifier: 11.11.0 version: 11.11.0 '@hcaptcha/react-hcaptcha': - specifier: ^1.17.0 + specifier: 1.17.0 version: 1.17.0(react-dom@19.2.0(react@19.2.0))(react@19.2.0) '@hello-pangea/dnd': - specifier: ^18.0.1 + specifier: 18.0.1 version: 18.0.1(@types/react@19.2.4)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) '@mantine/core': specifier: 8.3.7 version: 8.3.7(@mantine/hooks@8.3.7(react@19.2.0))(@types/react@19.2.4)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) '@mantine/dates': specifier: 8.3.7 - version: 8.3.7(@mantine/core@8.3.7(@mantine/hooks@8.3.7(react@19.2.0))(@types/react@19.2.4)(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(@mantine/hooks@8.3.7(react@19.2.0))(dayjs@1.11.19)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + version: 8.3.7(@mantine/core@8.3.7(@mantine/hooks@8.3.7(react@19.2.0))(@types/react@19.2.4)(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(@mantine/hooks@8.3.7(react@19.2.0))(dayjs@1.11.10)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) '@mantine/dropzone': specifier: 8.3.7 version: 8.3.7(@mantine/core@8.3.7(@mantine/hooks@8.3.7(react@19.2.0))(@types/react@19.2.4)(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(@mantine/hooks@8.3.7(react@19.2.0))(react-dom@19.2.0(react@19.2.0))(react@19.2.0) @@ -42,123 +42,126 @@ importers: specifier: 8.3.7 version: 8.3.7(@mantine/core@8.3.7(@mantine/hooks@8.3.7(react@19.2.0))(@types/react@19.2.4)(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(@mantine/hooks@8.3.7(react@19.2.0))(react-dom@19.2.0(react@19.2.0))(react@19.2.0) '@react-icons/all-files': - specifier: ^4.1.0 + specifier: 4.1.0 version: 4.1.0(react@19.2.0) '@tabler/icons-react': - specifier: ^3.36.0 + specifier: 3.36.0 version: 3.36.0(react@19.2.0) '@vitejs/plugin-react': - specifier: ^5.1.0 - version: 5.1.0(vite@7.3.0(@types/node@25.0.0)(lightningcss@1.30.2)(sugarss@5.0.1(postcss@8.5.6))) + specifier: 5.1.0 + version: 5.1.0(vite@7.3.0(@types/node@25.0.0)(jiti@2.6.1)(lightningcss@1.30.2)(sugarss@5.0.1(postcss@8.5.0))) axios: - specifier: ^1.13.0 - version: 1.13.2 + specifier: 1.13.0 + version: 1.13.0 date-fns: - specifier: ^4.1.0 + specifier: 4.1.0 version: 4.1.0 dayjs: - specifier: ^1.11.10 - version: 1.11.19 + specifier: 1.11.10 + version: 1.11.10 i18next: - specifier: ^25.7.1 - version: 25.7.1(typescript@5.9.3) + specifier: 25.7.1 + version: 25.7.1(typescript@5.8.2) nuqs: - specifier: ^2.8.0 + specifier: 2.8.0 version: 2.8.0(react-router@7.11.0(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(react@19.2.0) react: - specifier: ^19.2.0 + specifier: 19.2.0 version: 19.2.0 react-dom: - specifier: ^19.2.0 + specifier: 19.2.0 version: 19.2.0(react@19.2.0) react-i18next: - specifier: ^16.5.0 - version: 16.5.0(i18next@25.7.1(typescript@5.9.3))(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(typescript@5.9.3) + specifier: 16.5.0 + version: 16.5.0(i18next@25.7.1(typescript@5.8.2))(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(typescript@5.8.2) react-icons: - specifier: ^5.5.0 + specifier: 5.5.0 version: 5.5.0(react@19.2.0) react-qr-code: - specifier: ^2.0.12 - version: 2.0.18(react@19.2.0) + specifier: 2.0.12 + version: 2.0.12(react@19.2.0) react-router: - specifier: ^7.11.0 + specifier: 7.11.0 version: 7.11.0(react-dom@19.2.0(react@19.2.0))(react@19.2.0) swr: - specifier: ^2.3.0 - version: 2.3.6(react@19.2.0) + specifier: 2.3.0 + version: 2.3.0(react@19.2.0) devDependencies: + '@hey-api/openapi-ts': + specifier: 0.89.2 + version: 0.89.2(typescript@5.8.2) '@trivago/prettier-plugin-sort-imports': - specifier: ^6.0.0 + specifier: 6.0.0 version: 6.0.0(prettier@3.7.1) '@types/node': - specifier: ^25.0.0 + specifier: 25.0.0 version: 25.0.0 '@types/react': - specifier: ^19.2.4 + specifier: 19.2.4 version: 19.2.4 '@types/react-dom': - specifier: ^19.2.3 + specifier: 19.2.3 version: 19.2.3(@types/react@19.2.4) '@typescript-eslint/eslint-plugin': - specifier: ^7.18.0 - version: 7.18.0(@typescript-eslint/parser@7.18.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) + specifier: 7.18.0 + version: 7.18.0(@typescript-eslint/parser@7.18.0(eslint@8.57.0)(typescript@5.8.2))(eslint@8.57.0)(typescript@5.8.2) '@typescript-eslint/parser': - specifier: ^7.18.0 - version: 7.18.0(eslint@8.57.1)(typescript@5.9.3) + specifier: 7.18.0 + version: 7.18.0(eslint@8.57.0)(typescript@5.8.2) eslint: - specifier: ^8.57.0 - version: 8.57.1 + specifier: 8.57.0 + version: 8.57.0 eslint-config-airbnb: - specifier: ^19.0.4 - version: 19.0.4(eslint-plugin-import@2.32.0(@typescript-eslint/parser@7.18.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1))(eslint-plugin-jsx-a11y@6.10.2(eslint@8.57.1))(eslint-plugin-react-hooks@4.6.2(eslint@8.57.1))(eslint-plugin-react@7.37.5(eslint@8.57.1))(eslint@8.57.1) + specifier: 19.0.4 + version: 19.0.4(eslint-plugin-import@2.32.0(@typescript-eslint/parser@7.18.0(eslint@8.57.0)(typescript@5.8.2))(eslint@8.57.0))(eslint-plugin-jsx-a11y@6.10.0(eslint@8.57.0))(eslint-plugin-react-hooks@4.6.0(eslint@8.57.0))(eslint-plugin-react@7.37.0(eslint@8.57.0))(eslint@8.57.0) eslint-config-airbnb-typescript: - specifier: ^18.0.0 - version: 18.0.0(@typescript-eslint/eslint-plugin@7.18.0(@typescript-eslint/parser@7.18.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(@typescript-eslint/parser@7.18.0(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(@typescript-eslint/parser@7.18.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1))(eslint@8.57.1) + specifier: 18.0.0 + version: 18.0.0(@typescript-eslint/eslint-plugin@7.18.0(@typescript-eslint/parser@7.18.0(eslint@8.57.0)(typescript@5.8.2))(eslint@8.57.0)(typescript@5.8.2))(@typescript-eslint/parser@7.18.0(eslint@8.57.0)(typescript@5.8.2))(eslint-plugin-import@2.32.0(@typescript-eslint/parser@7.18.0(eslint@8.57.0)(typescript@5.8.2))(eslint@8.57.0))(eslint@8.57.0) eslint-config-mantine: - specifier: ^3.2.0 - version: 3.2.0(8d063032ea5c01aa379c8c0aa9152aa7) + specifier: 3.2.0 + version: 3.2.0(369226e26d684b17ee846247b64a20f6) eslint-plugin-import: - specifier: ^2.32.0 - version: 2.32.0(@typescript-eslint/parser@7.18.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1) + specifier: 2.32.0 + version: 2.32.0(@typescript-eslint/parser@7.18.0(eslint@8.57.0)(typescript@5.8.2))(eslint@8.57.0) eslint-plugin-jsx-a11y: - specifier: ^6.10.0 - version: 6.10.2(eslint@8.57.1) + specifier: 6.10.0 + version: 6.10.0(eslint@8.57.0) eslint-plugin-react: - specifier: ^7.37.0 - version: 7.37.5(eslint@8.57.1) + specifier: 7.37.0 + version: 7.37.0(eslint@8.57.0) eslint-plugin-react-hooks: - specifier: ^4.6.0 - version: 4.6.2(eslint@8.57.1) + specifier: 4.6.0 + version: 4.6.0(eslint@8.57.0) eslint-plugin-testing-library: - specifier: ^7.15.1 - version: 7.15.1(eslint@8.57.1)(typescript@5.9.3) + specifier: 7.15.1 + version: 7.15.1(eslint@8.57.0)(typescript@5.8.2) i18next-browser-languagedetector: - specifier: ^8.2.0 + specifier: 8.2.0 version: 8.2.0 i18next-http-backend: - specifier: ^3.0.2 + specifier: 3.0.2 version: 3.0.2 postcss: - specifier: ^8.5.0 - version: 8.5.6 + specifier: 8.5.0 + version: 8.5.0 postcss-preset-mantine: - specifier: ^1.18.0 - version: 1.18.0(postcss@8.5.6) + specifier: 1.18.0 + version: 1.18.0(postcss@8.5.0) postcss-simple-vars: - specifier: ^7.0.1 - version: 7.0.1(postcss@8.5.6) + specifier: 7.0.1 + version: 7.0.1(postcss@8.5.0) prettier: - specifier: ^3.7.1 + specifier: 3.7.1 version: 3.7.1 typescript: - specifier: ^5.8.2 - version: 5.9.3 + specifier: 5.8.2 + version: 5.8.2 vite: - specifier: ^7.3.0 - version: 7.3.0(@types/node@25.0.0)(lightningcss@1.30.2)(sugarss@5.0.1(postcss@8.5.6)) + specifier: 7.3.0 + version: 7.3.0(@types/node@25.0.0)(jiti@2.6.1)(lightningcss@1.30.2)(sugarss@5.0.1(postcss@8.5.0)) vite-plugin-i18next-loader: - specifier: ^3.1.3 - version: 3.1.3(vite@7.3.0(@types/node@25.0.0)(lightningcss@1.30.2)(sugarss@5.0.1(postcss@8.5.6))) + specifier: 3.1.3 + version: 3.1.3(vite@7.3.0(@types/node@25.0.0)(jiti@2.6.1)(lightningcss@1.30.2)(sugarss@5.0.1(postcss@8.5.0))) packages: @@ -302,158 +305,158 @@ packages: '@emotion/weak-memoize@0.4.0': resolution: {integrity: sha512-snKqtPW01tN0ui7yu9rGv69aJXr/a/Ywvl11sUjNtEcRc+ng/mQriFL0wLXMef74iHa/EkftbDzU9F8iFbH+zg==} - '@esbuild/aix-ppc64@0.27.1': - resolution: {integrity: sha512-HHB50pdsBX6k47S4u5g/CaLjqS3qwaOVE5ILsq64jyzgMhLuCuZ8rGzM9yhsAjfjkbgUPMzZEPa7DAp7yz6vuA==} + '@esbuild/aix-ppc64@0.27.2': + resolution: {integrity: sha512-GZMB+a0mOMZs4MpDbj8RJp4cw+w1WV5NYD6xzgvzUJ5Ek2jerwfO2eADyI6ExDSUED+1X8aMbegahsJi+8mgpw==} engines: {node: '>=18'} cpu: [ppc64] os: [aix] - '@esbuild/android-arm64@0.27.1': - resolution: {integrity: sha512-45fuKmAJpxnQWixOGCrS+ro4Uvb4Re9+UTieUY2f8AEc+t7d4AaZ6eUJ3Hva7dtrxAAWHtlEFsXFMAgNnGU9uQ==} + '@esbuild/android-arm64@0.27.2': + resolution: {integrity: sha512-pvz8ZZ7ot/RBphf8fv60ljmaoydPU12VuXHImtAs0XhLLw+EXBi2BLe3OYSBslR4rryHvweW5gmkKFwTiFy6KA==} engines: {node: '>=18'} cpu: [arm64] os: [android] - '@esbuild/android-arm@0.27.1': - resolution: {integrity: sha512-kFqa6/UcaTbGm/NncN9kzVOODjhZW8e+FRdSeypWe6j33gzclHtwlANs26JrupOntlcWmB0u8+8HZo8s7thHvg==} + '@esbuild/android-arm@0.27.2': + resolution: {integrity: sha512-DVNI8jlPa7Ujbr1yjU2PfUSRtAUZPG9I1RwW4F4xFB1Imiu2on0ADiI/c3td+KmDtVKNbi+nffGDQMfcIMkwIA==} engines: {node: '>=18'} cpu: [arm] os: [android] - '@esbuild/android-x64@0.27.1': - resolution: {integrity: sha512-LBEpOz0BsgMEeHgenf5aqmn/lLNTFXVfoWMUox8CtWWYK9X4jmQzWjoGoNb8lmAYml/tQ/Ysvm8q7szu7BoxRQ==} + '@esbuild/android-x64@0.27.2': + resolution: {integrity: sha512-z8Ank4Byh4TJJOh4wpz8g2vDy75zFL0TlZlkUkEwYXuPSgX8yzep596n6mT7905kA9uHZsf/o2OJZubl2l3M7A==} engines: {node: '>=18'} cpu: [x64] os: [android] - '@esbuild/darwin-arm64@0.27.1': - resolution: {integrity: sha512-veg7fL8eMSCVKL7IW4pxb54QERtedFDfY/ASrumK/SbFsXnRazxY4YykN/THYqFnFwJ0aVjiUrVG2PwcdAEqQQ==} + '@esbuild/darwin-arm64@0.27.2': + resolution: {integrity: sha512-davCD2Zc80nzDVRwXTcQP/28fiJbcOwvdolL0sOiOsbwBa72kegmVU0Wrh1MYrbuCL98Omp5dVhQFWRKR2ZAlg==} engines: {node: '>=18'} cpu: [arm64] os: [darwin] - '@esbuild/darwin-x64@0.27.1': - resolution: {integrity: sha512-+3ELd+nTzhfWb07Vol7EZ+5PTbJ/u74nC6iv4/lwIU99Ip5uuY6QoIf0Hn4m2HoV0qcnRivN3KSqc+FyCHjoVQ==} + '@esbuild/darwin-x64@0.27.2': + resolution: {integrity: sha512-ZxtijOmlQCBWGwbVmwOF/UCzuGIbUkqB1faQRf5akQmxRJ1ujusWsb3CVfk/9iZKr2L5SMU5wPBi1UWbvL+VQA==} engines: {node: '>=18'} cpu: [x64] os: [darwin] - '@esbuild/freebsd-arm64@0.27.1': - resolution: {integrity: sha512-/8Rfgns4XD9XOSXlzUDepG8PX+AVWHliYlUkFI3K3GB6tqbdjYqdhcb4BKRd7C0BhZSoaCxhv8kTcBrcZWP+xg==} + '@esbuild/freebsd-arm64@0.27.2': + resolution: {integrity: sha512-lS/9CN+rgqQ9czogxlMcBMGd+l8Q3Nj1MFQwBZJyoEKI50XGxwuzznYdwcav6lpOGv5BqaZXqvBSiB/kJ5op+g==} engines: {node: '>=18'} cpu: [arm64] os: [freebsd] - '@esbuild/freebsd-x64@0.27.1': - resolution: {integrity: sha512-GITpD8dK9C+r+5yRT/UKVT36h/DQLOHdwGVwwoHidlnA168oD3uxA878XloXebK4Ul3gDBBIvEdL7go9gCUFzQ==} + '@esbuild/freebsd-x64@0.27.2': + resolution: {integrity: sha512-tAfqtNYb4YgPnJlEFu4c212HYjQWSO/w/h/lQaBK7RbwGIkBOuNKQI9tqWzx7Wtp7bTPaGC6MJvWI608P3wXYA==} engines: {node: '>=18'} cpu: [x64] os: [freebsd] - '@esbuild/linux-arm64@0.27.1': - resolution: {integrity: sha512-W9//kCrh/6in9rWIBdKaMtuTTzNj6jSeG/haWBADqLLa9P8O5YSRDzgD5y9QBok4AYlzS6ARHifAb75V6G670Q==} + '@esbuild/linux-arm64@0.27.2': + resolution: {integrity: sha512-hYxN8pr66NsCCiRFkHUAsxylNOcAQaxSSkHMMjcpx0si13t1LHFphxJZUiGwojB1a/Hd5OiPIqDdXONia6bhTw==} engines: {node: '>=18'} cpu: [arm64] os: [linux] - '@esbuild/linux-arm@0.27.1': - resolution: {integrity: sha512-ieMID0JRZY/ZeCrsFQ3Y3NlHNCqIhTprJfDgSB3/lv5jJZ8FX3hqPyXWhe+gvS5ARMBJ242PM+VNz/ctNj//eA==} + '@esbuild/linux-arm@0.27.2': + resolution: {integrity: sha512-vWfq4GaIMP9AIe4yj1ZUW18RDhx6EPQKjwe7n8BbIecFtCQG4CfHGaHuh7fdfq+y3LIA2vGS/o9ZBGVxIDi9hw==} engines: {node: '>=18'} cpu: [arm] os: [linux] - '@esbuild/linux-ia32@0.27.1': - resolution: {integrity: sha512-VIUV4z8GD8rtSVMfAj1aXFahsi/+tcoXXNYmXgzISL+KB381vbSTNdeZHHHIYqFyXcoEhu9n5cT+05tRv13rlw==} + '@esbuild/linux-ia32@0.27.2': + resolution: {integrity: sha512-MJt5BRRSScPDwG2hLelYhAAKh9imjHK5+NE/tvnRLbIqUWa+0E9N4WNMjmp/kXXPHZGqPLxggwVhz7QP8CTR8w==} engines: {node: '>=18'} cpu: [ia32] os: [linux] - '@esbuild/linux-loong64@0.27.1': - resolution: {integrity: sha512-l4rfiiJRN7sTNI//ff65zJ9z8U+k6zcCg0LALU5iEWzY+a1mVZ8iWC1k5EsNKThZ7XCQ6YWtsZ8EWYm7r1UEsg==} + '@esbuild/linux-loong64@0.27.2': + resolution: {integrity: sha512-lugyF1atnAT463aO6KPshVCJK5NgRnU4yb3FUumyVz+cGvZbontBgzeGFO1nF+dPueHD367a2ZXe1NtUkAjOtg==} engines: {node: '>=18'} cpu: [loong64] os: [linux] - '@esbuild/linux-mips64el@0.27.1': - resolution: {integrity: sha512-U0bEuAOLvO/DWFdygTHWY8C067FXz+UbzKgxYhXC0fDieFa0kDIra1FAhsAARRJbvEyso8aAqvPdNxzWuStBnA==} + '@esbuild/linux-mips64el@0.27.2': + resolution: {integrity: sha512-nlP2I6ArEBewvJ2gjrrkESEZkB5mIoaTswuqNFRv/WYd+ATtUpe9Y09RnJvgvdag7he0OWgEZWhviS1OTOKixw==} engines: {node: '>=18'} cpu: [mips64el] os: [linux] - '@esbuild/linux-ppc64@0.27.1': - resolution: {integrity: sha512-NzdQ/Xwu6vPSf/GkdmRNsOfIeSGnh7muundsWItmBsVpMoNPVpM61qNzAVY3pZ1glzzAxLR40UyYM23eaDDbYQ==} + '@esbuild/linux-ppc64@0.27.2': + resolution: {integrity: sha512-C92gnpey7tUQONqg1n6dKVbx3vphKtTHJaNG2Ok9lGwbZil6DrfyecMsp9CrmXGQJmZ7iiVXvvZH6Ml5hL6XdQ==} engines: {node: '>=18'} cpu: [ppc64] os: [linux] - '@esbuild/linux-riscv64@0.27.1': - resolution: {integrity: sha512-7zlw8p3IApcsN7mFw0O1Z1PyEk6PlKMu18roImfl3iQHTnr/yAfYv6s4hXPidbDoI2Q0pW+5xeoM4eTCC0UdrQ==} + '@esbuild/linux-riscv64@0.27.2': + resolution: {integrity: sha512-B5BOmojNtUyN8AXlK0QJyvjEZkWwy/FKvakkTDCziX95AowLZKR6aCDhG7LeF7uMCXEJqwa8Bejz5LTPYm8AvA==} engines: {node: '>=18'} cpu: [riscv64] os: [linux] - '@esbuild/linux-s390x@0.27.1': - resolution: {integrity: sha512-cGj5wli+G+nkVQdZo3+7FDKC25Uh4ZVwOAK6A06Hsvgr8WqBBuOy/1s+PUEd/6Je+vjfm6stX0kmib5b/O2Ykw==} + '@esbuild/linux-s390x@0.27.2': + resolution: {integrity: sha512-p4bm9+wsPwup5Z8f4EpfN63qNagQ47Ua2znaqGH6bqLlmJ4bx97Y9JdqxgGZ6Y8xVTixUnEkoKSHcpRlDnNr5w==} engines: {node: '>=18'} cpu: [s390x] os: [linux] - '@esbuild/linux-x64@0.27.1': - resolution: {integrity: sha512-z3H/HYI9MM0HTv3hQZ81f+AKb+yEoCRlUby1F80vbQ5XdzEMyY/9iNlAmhqiBKw4MJXwfgsh7ERGEOhrM1niMA==} + '@esbuild/linux-x64@0.27.2': + resolution: {integrity: sha512-uwp2Tip5aPmH+NRUwTcfLb+W32WXjpFejTIOWZFw/v7/KnpCDKG66u4DLcurQpiYTiYwQ9B7KOeMJvLCu/OvbA==} engines: {node: '>=18'} cpu: [x64] os: [linux] - '@esbuild/netbsd-arm64@0.27.1': - resolution: {integrity: sha512-wzC24DxAvk8Em01YmVXyjl96Mr+ecTPyOuADAvjGg+fyBpGmxmcr2E5ttf7Im8D0sXZihpxzO1isus8MdjMCXQ==} + '@esbuild/netbsd-arm64@0.27.2': + resolution: {integrity: sha512-Kj6DiBlwXrPsCRDeRvGAUb/LNrBASrfqAIok+xB0LxK8CHqxZ037viF13ugfsIpePH93mX7xfJp97cyDuTZ3cw==} engines: {node: '>=18'} cpu: [arm64] os: [netbsd] - '@esbuild/netbsd-x64@0.27.1': - resolution: {integrity: sha512-1YQ8ybGi2yIXswu6eNzJsrYIGFpnlzEWRl6iR5gMgmsrR0FcNoV1m9k9sc3PuP5rUBLshOZylc9nqSgymI+TYg==} + '@esbuild/netbsd-x64@0.27.2': + resolution: {integrity: sha512-HwGDZ0VLVBY3Y+Nw0JexZy9o/nUAWq9MlV7cahpaXKW6TOzfVno3y3/M8Ga8u8Yr7GldLOov27xiCnqRZf0tCA==} engines: {node: '>=18'} cpu: [x64] os: [netbsd] - '@esbuild/openbsd-arm64@0.27.1': - resolution: {integrity: sha512-5Z+DzLCrq5wmU7RDaMDe2DVXMRm2tTDvX2KU14JJVBN2CT/qov7XVix85QoJqHltpvAOZUAc3ndU56HSMWrv8g==} + '@esbuild/openbsd-arm64@0.27.2': + resolution: {integrity: sha512-DNIHH2BPQ5551A7oSHD0CKbwIA/Ox7+78/AWkbS5QoRzaqlev2uFayfSxq68EkonB+IKjiuxBFoV8ESJy8bOHA==} engines: {node: '>=18'} cpu: [arm64] os: [openbsd] - '@esbuild/openbsd-x64@0.27.1': - resolution: {integrity: sha512-Q73ENzIdPF5jap4wqLtsfh8YbYSZ8Q0wnxplOlZUOyZy7B4ZKW8DXGWgTCZmF8VWD7Tciwv5F4NsRf6vYlZtqg==} + '@esbuild/openbsd-x64@0.27.2': + resolution: {integrity: sha512-/it7w9Nb7+0KFIzjalNJVR5bOzA9Vay+yIPLVHfIQYG/j+j9VTH84aNB8ExGKPU4AzfaEvN9/V4HV+F+vo8OEg==} engines: {node: '>=18'} cpu: [x64] os: [openbsd] - '@esbuild/openharmony-arm64@0.27.1': - resolution: {integrity: sha512-ajbHrGM/XiK+sXM0JzEbJAen+0E+JMQZ2l4RR4VFwvV9JEERx+oxtgkpoKv1SevhjavK2z2ReHk32pjzktWbGg==} + '@esbuild/openharmony-arm64@0.27.2': + resolution: {integrity: sha512-LRBbCmiU51IXfeXk59csuX/aSaToeG7w48nMwA6049Y4J4+VbWALAuXcs+qcD04rHDuSCSRKdmY63sruDS5qag==} engines: {node: '>=18'} cpu: [arm64] os: [openharmony] - '@esbuild/sunos-x64@0.27.1': - resolution: {integrity: sha512-IPUW+y4VIjuDVn+OMzHc5FV4GubIwPnsz6ubkvN8cuhEqH81NovB53IUlrlBkPMEPxvNnf79MGBoz8rZ2iW8HA==} + '@esbuild/sunos-x64@0.27.2': + resolution: {integrity: sha512-kMtx1yqJHTmqaqHPAzKCAkDaKsffmXkPHThSfRwZGyuqyIeBvf08KSsYXl+abf5HDAPMJIPnbBfXvP2ZC2TfHg==} engines: {node: '>=18'} cpu: [x64] os: [sunos] - '@esbuild/win32-arm64@0.27.1': - resolution: {integrity: sha512-RIVRWiljWA6CdVu8zkWcRmGP7iRRIIwvhDKem8UMBjPql2TXM5PkDVvvrzMtj1V+WFPB4K7zkIGM7VzRtFkjdg==} + '@esbuild/win32-arm64@0.27.2': + resolution: {integrity: sha512-Yaf78O/B3Kkh+nKABUF++bvJv5Ijoy9AN1ww904rOXZFLWVc5OLOfL56W+C8F9xn5JQZa3UX6m+IktJnIb1Jjg==} engines: {node: '>=18'} cpu: [arm64] os: [win32] - '@esbuild/win32-ia32@0.27.1': - resolution: {integrity: sha512-2BR5M8CPbptC1AK5JbJT1fWrHLvejwZidKx3UMSF0ecHMa+smhi16drIrCEggkgviBwLYd5nwrFLSl5Kho96RQ==} + '@esbuild/win32-ia32@0.27.2': + resolution: {integrity: sha512-Iuws0kxo4yusk7sw70Xa2E2imZU5HoixzxfGCdxwBdhiDgt9vX9VUCBhqcwY7/uh//78A1hMkkROMJq9l27oLQ==} engines: {node: '>=18'} cpu: [ia32] os: [win32] - '@esbuild/win32-x64@0.27.1': - resolution: {integrity: sha512-d5X6RMYv6taIymSk8JBP+nxv8DQAMY6A51GPgusqLdK9wBz5wWIXy1KjTck6HnjE9hqJzJRdk+1p/t5soSbCtw==} + '@esbuild/win32-x64@0.27.2': + resolution: {integrity: sha512-sRdU18mcKf7F+YgheI/zGf5alZatMUTKj/jNS6l744f9u3WFu4v7twcUI9vu4mknF4Y9aDlblIie0IM+5xxaqQ==} engines: {node: '>=18'} cpu: [x64] os: [win32] @@ -472,8 +475,8 @@ packages: resolution: {integrity: sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - '@eslint/js@8.57.1': - resolution: {integrity: sha512-d9zaMRSTIKDLhctzH12MtXvJKSSUhaHcjV+2Z+GK+EEY7XKpP5yR4x+N3TAcHTcu963nIr+TMcCb4DBCYX1z6Q==} + '@eslint/js@8.57.0': + resolution: {integrity: sha512-Ys+3g2TaW7gADOJzPt83SJtCDhMjndcDMFVQ/Tj9iA1BfJzFKD9mAUXT3OenpuPHbI6P/myECxRJrofUsDx/5g==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} '@floating-ui/core@1.7.3': @@ -512,8 +515,25 @@ packages: react: ^18.0.0 || ^19.0.0 react-dom: ^18.0.0 || ^19.0.0 - '@humanwhocodes/config-array@0.13.0': - resolution: {integrity: sha512-DZLEEqFWQFiyK6h5YIeynKx7JlvCYWL0cImfSRXZ9l4Sg2efkFGTuFf6vzXjK1cq6IYkU+Eg/JizXw+TD2vRNw==} + '@hey-api/codegen-core@0.4.0': + resolution: {integrity: sha512-o8rBbEXEUhEPzrHbqImYjwIHm4Oj0r1RPS+5cp8Z66kPO7SEN7PYUgK7XpmSxoy9LPMNK1M5qmCO4cGGwT+ELQ==} + engines: {node: '>=20.19.0'} + peerDependencies: + typescript: '>=5.5.3' + + '@hey-api/json-schema-ref-parser@1.2.2': + resolution: {integrity: sha512-oS+5yAdwnK20lSeFO1d53Ku+yaGCsY8PcrmSq2GtSs3bsBfRnHAbpPKSVzQcaxAOrzj5NB+f34WhZglVrNayBA==} + engines: {node: '>= 16'} + + '@hey-api/openapi-ts@0.89.2': + resolution: {integrity: sha512-iEhWfvPbzfcS7BMqHzh2FbMG1ouZVAHwHoYhq/61Rmq/r1Q1NgCZ3xy6QuXZgbTdHe9enMjWXjINLnTj57kWwA==} + engines: {node: '>=20.19.0'} + hasBin: true + peerDependencies: + typescript: '>=5.5.3' + + '@humanwhocodes/config-array@0.11.14': + resolution: {integrity: sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==} engines: {node: '>=10.10.0'} deprecated: Use @eslint/config-array instead @@ -553,6 +573,9 @@ packages: '@jridgewell/trace-mapping@0.3.31': resolution: {integrity: sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==} + '@jsdevtools/ono@7.1.3': + resolution: {integrity: sha512-4JQNk+3mVzK3xh2rqd6RB4J46qUR19azEHBneZyTZM+c456qOrbbM/5xcR8huNCCcbVt7+UmizG6GuUvPvKUYg==} + '@mantine/core@8.3.7': resolution: {integrity: sha512-7gUTiUrD0pukpkSNvScGi/e+pBuBWYJP5yFHT4TFf1fmaQAA7PbNoAzUeEkPbVromDtK0VdEcpRlYpDnJhpz2g==} peerDependencies: @@ -628,113 +651,113 @@ packages: '@rolldown/pluginutils@1.0.0-beta.43': resolution: {integrity: sha512-5Uxg7fQUCmfhax7FJke2+8B6cqgeUJUD9o2uXIKXhD+mG0mL6NObmVoi9wXEU1tY89mZKgAYA6fTbftx3q2ZPQ==} - '@rollup/rollup-android-arm-eabi@4.53.4': - resolution: {integrity: sha512-PWU3Y92H4DD0bOqorEPp1Y0tbzwAurFmIYpjcObv5axGVOtcTlB0b2UKMd2echo08MgN7jO8WQZSSysvfisFSQ==} + '@rollup/rollup-android-arm-eabi@4.54.0': + resolution: {integrity: sha512-OywsdRHrFvCdvsewAInDKCNyR3laPA2mc9bRYJ6LBp5IyvF3fvXbbNR0bSzHlZVFtn6E0xw2oZlyjg4rKCVcng==} cpu: [arm] os: [android] - '@rollup/rollup-android-arm64@4.53.4': - resolution: {integrity: sha512-Gw0/DuVm3rGsqhMGYkSOXXIx20cC3kTlivZeuaGt4gEgILivykNyBWxeUV5Cf2tDA2nPLah26vq3emlRrWVbng==} + '@rollup/rollup-android-arm64@4.54.0': + resolution: {integrity: sha512-Skx39Uv+u7H224Af+bDgNinitlmHyQX1K/atIA32JP3JQw6hVODX5tkbi2zof/E69M1qH2UoN3Xdxgs90mmNYw==} cpu: [arm64] os: [android] - '@rollup/rollup-darwin-arm64@4.53.4': - resolution: {integrity: sha512-+w06QvXsgzKwdVg5qRLZpTHh1bigHZIqoIUPtiqh05ZiJVUQ6ymOxaPkXTvRPRLH88575ZCRSRM3PwIoNma01Q==} + '@rollup/rollup-darwin-arm64@4.54.0': + resolution: {integrity: sha512-k43D4qta/+6Fq+nCDhhv9yP2HdeKeP56QrUUTW7E6PhZP1US6NDqpJj4MY0jBHlJivVJD5P8NxrjuobZBJTCRw==} cpu: [arm64] os: [darwin] - '@rollup/rollup-darwin-x64@4.53.4': - resolution: {integrity: sha512-EB4Na9G2GsrRNRNFPuxfwvDRDUwQEzJPpiK1vo2zMVhEeufZ1k7J1bKnT0JYDfnPC7RNZ2H5YNQhW6/p2QKATw==} + '@rollup/rollup-darwin-x64@4.54.0': + resolution: {integrity: sha512-cOo7biqwkpawslEfox5Vs8/qj83M/aZCSSNIWpVzfU2CYHa2G3P1UN5WF01RdTHSgCkri7XOlTdtk17BezlV3A==} cpu: [x64] os: [darwin] - '@rollup/rollup-freebsd-arm64@4.53.4': - resolution: {integrity: sha512-bldA8XEqPcs6OYdknoTMaGhjytnwQ0NClSPpWpmufOuGPN5dDmvIa32FygC2gneKK4A1oSx86V1l55hyUWUYFQ==} + '@rollup/rollup-freebsd-arm64@4.54.0': + resolution: {integrity: sha512-miSvuFkmvFbgJ1BevMa4CPCFt5MPGw094knM64W9I0giUIMMmRYcGW/JWZDriaw/k1kOBtsWh1z6nIFV1vPNtA==} cpu: [arm64] os: [freebsd] - '@rollup/rollup-freebsd-x64@4.53.4': - resolution: {integrity: sha512-3T8GPjH6mixCd0YPn0bXtcuSXi1Lj+15Ujw2CEb7dd24j9thcKscCf88IV7n76WaAdorOzAgSSbuVRg4C8V8Qw==} + '@rollup/rollup-freebsd-x64@4.54.0': + resolution: {integrity: sha512-KGXIs55+b/ZfZsq9aR026tmr/+7tq6VG6MsnrvF4H8VhwflTIuYh+LFUlIsRdQSgrgmtM3fVATzEAj4hBQlaqQ==} cpu: [x64] os: [freebsd] - '@rollup/rollup-linux-arm-gnueabihf@4.53.4': - resolution: {integrity: sha512-UPMMNeC4LXW7ZSHxeP3Edv09aLsFUMaD1TSVW6n1CWMECnUIJMFFB7+XC2lZTdPtvB36tYC0cJWc86mzSsaviw==} + '@rollup/rollup-linux-arm-gnueabihf@4.54.0': + resolution: {integrity: sha512-EHMUcDwhtdRGlXZsGSIuXSYwD5kOT9NVnx9sqzYiwAc91wfYOE1g1djOEDseZJKKqtHAHGwnGPQu3kytmfaXLQ==} cpu: [arm] os: [linux] - '@rollup/rollup-linux-arm-musleabihf@4.53.4': - resolution: {integrity: sha512-H8uwlV0otHs5Q7WAMSoyvjV9DJPiy5nJ/xnHolY0QptLPjaSsuX7tw+SPIfiYH6cnVx3fe4EWFafo6gH6ekZKA==} + '@rollup/rollup-linux-arm-musleabihf@4.54.0': + resolution: {integrity: sha512-+pBrqEjaakN2ySv5RVrj/qLytYhPKEUwk+e3SFU5jTLHIcAtqh2rLrd/OkbNuHJpsBgxsD8ccJt5ga/SeG0JmA==} cpu: [arm] os: [linux] - '@rollup/rollup-linux-arm64-gnu@4.53.4': - resolution: {integrity: sha512-BLRwSRwICXz0TXkbIbqJ1ibK+/dSBpTJqDClF61GWIrxTXZWQE78ROeIhgl5MjVs4B4gSLPCFeD4xML9vbzvCQ==} + '@rollup/rollup-linux-arm64-gnu@4.54.0': + resolution: {integrity: sha512-NSqc7rE9wuUaRBsBp5ckQ5CVz5aIRKCwsoa6WMF7G01sX3/qHUw/z4pv+D+ahL1EIKy6Enpcnz1RY8pf7bjwng==} cpu: [arm64] os: [linux] - '@rollup/rollup-linux-arm64-musl@4.53.4': - resolution: {integrity: sha512-6bySEjOTbmVcPJAywjpGLckK793A0TJWSbIa0sVwtVGfe/Nz6gOWHOwkshUIAp9j7wg2WKcA4Snu7Y1nUZyQew==} + '@rollup/rollup-linux-arm64-musl@4.54.0': + resolution: {integrity: sha512-gr5vDbg3Bakga5kbdpqx81m2n9IX8M6gIMlQQIXiLTNeQW6CucvuInJ91EuCJ/JYvc+rcLLsDFcfAD1K7fMofg==} cpu: [arm64] os: [linux] - '@rollup/rollup-linux-loong64-gnu@4.53.4': - resolution: {integrity: sha512-U0ow3bXYJZ5MIbchVusxEycBw7bO6C2u5UvD31i5IMTrnt2p4Fh4ZbHSdc/31TScIJQYHwxbj05BpevB3201ug==} + '@rollup/rollup-linux-loong64-gnu@4.54.0': + resolution: {integrity: sha512-gsrtB1NA3ZYj2vq0Rzkylo9ylCtW/PhpLEivlgWe0bpgtX5+9j9EZa0wtZiCjgu6zmSeZWyI/e2YRX1URozpIw==} cpu: [loong64] os: [linux] - '@rollup/rollup-linux-ppc64-gnu@4.53.4': - resolution: {integrity: sha512-iujDk07ZNwGLVn0YIWM80SFN039bHZHCdCCuX9nyx3Jsa2d9V/0Y32F+YadzwbvDxhSeVo9zefkoPnXEImnM5w==} + '@rollup/rollup-linux-ppc64-gnu@4.54.0': + resolution: {integrity: sha512-y3qNOfTBStmFNq+t4s7Tmc9hW2ENtPg8FeUD/VShI7rKxNW7O4fFeaYbMsd3tpFlIg1Q8IapFgy7Q9i2BqeBvA==} cpu: [ppc64] os: [linux] - '@rollup/rollup-linux-riscv64-gnu@4.53.4': - resolution: {integrity: sha512-MUtAktiOUSu+AXBpx1fkuG/Bi5rhlorGs3lw5QeJ2X3ziEGAq7vFNdWVde6XGaVqi0LGSvugwjoxSNJfHFTC0g==} + '@rollup/rollup-linux-riscv64-gnu@4.54.0': + resolution: {integrity: sha512-89sepv7h2lIVPsFma8iwmccN7Yjjtgz0Rj/Ou6fEqg3HDhpCa+Et+YSufy27i6b0Wav69Qv4WBNl3Rs6pwhebQ==} cpu: [riscv64] os: [linux] - '@rollup/rollup-linux-riscv64-musl@4.53.4': - resolution: {integrity: sha512-btm35eAbDfPtcFEgaXCI5l3c2WXyzwiE8pArhd66SDtoLWmgK5/M7CUxmUglkwtniPzwvWioBKKl6IXLbPf2sQ==} + '@rollup/rollup-linux-riscv64-musl@4.54.0': + resolution: {integrity: sha512-ZcU77ieh0M2Q8Ur7D5X7KvK+UxbXeDHwiOt/CPSBTI1fBmeDMivW0dPkdqkT4rOgDjrDDBUed9x4EgraIKoR2A==} cpu: [riscv64] os: [linux] - '@rollup/rollup-linux-s390x-gnu@4.53.4': - resolution: {integrity: sha512-uJlhKE9ccUTCUlK+HUz/80cVtx2RayadC5ldDrrDUFaJK0SNb8/cCmC9RhBhIWuZ71Nqj4Uoa9+xljKWRogdhA==} + '@rollup/rollup-linux-s390x-gnu@4.54.0': + resolution: {integrity: sha512-2AdWy5RdDF5+4YfG/YesGDDtbyJlC9LHmL6rZw6FurBJ5n4vFGupsOBGfwMRjBYH7qRQowT8D/U4LoSvVwOhSQ==} cpu: [s390x] os: [linux] - '@rollup/rollup-linux-x64-gnu@4.53.4': - resolution: {integrity: sha512-jjEMkzvASQBbzzlzf4os7nzSBd/cvPrpqXCUOqoeCh1dQ4BP3RZCJk8XBeik4MUln3m+8LeTJcY54C/u8wb3DQ==} + '@rollup/rollup-linux-x64-gnu@4.54.0': + resolution: {integrity: sha512-WGt5J8Ij/rvyqpFexxk3ffKqqbLf9AqrTBbWDk7ApGUzaIs6V+s2s84kAxklFwmMF/vBNGrVdYgbblCOFFezMQ==} cpu: [x64] os: [linux] - '@rollup/rollup-linux-x64-musl@4.53.4': - resolution: {integrity: sha512-lu90KG06NNH19shC5rBPkrh6mrTpq5kviFylPBXQVpdEu0yzb0mDgyxLr6XdcGdBIQTH/UAhDJnL+APZTBu1aQ==} + '@rollup/rollup-linux-x64-musl@4.54.0': + resolution: {integrity: sha512-JzQmb38ATzHjxlPHuTH6tE7ojnMKM2kYNzt44LO/jJi8BpceEC8QuXYA908n8r3CNuG/B3BV8VR3Hi1rYtmPiw==} cpu: [x64] os: [linux] - '@rollup/rollup-openharmony-arm64@4.53.4': - resolution: {integrity: sha512-dFDcmLwsUzhAm/dn0+dMOQZoONVYBtgik0VuY/d5IJUUb787L3Ko/ibvTvddqhb3RaB7vFEozYevHN4ox22R/w==} + '@rollup/rollup-openharmony-arm64@4.54.0': + resolution: {integrity: sha512-huT3fd0iC7jigGh7n3q/+lfPcXxBi+om/Rs3yiFxjvSxbSB6aohDFXbWvlspaqjeOh+hx7DDHS+5Es5qRkWkZg==} cpu: [arm64] os: [openharmony] - '@rollup/rollup-win32-arm64-msvc@4.53.4': - resolution: {integrity: sha512-WvUpUAWmUxZKtRnQWpRKnLW2DEO8HB/l8z6oFFMNuHndMzFTJEXzaYJ5ZAmzNw0L21QQJZsUQFt2oPf3ykAD/w==} + '@rollup/rollup-win32-arm64-msvc@4.54.0': + resolution: {integrity: sha512-c2V0W1bsKIKfbLMBu/WGBz6Yci8nJ/ZJdheE0EwB73N3MvHYKiKGs3mVilX4Gs70eGeDaMqEob25Tw2Gb9Nqyw==} cpu: [arm64] os: [win32] - '@rollup/rollup-win32-ia32-msvc@4.53.4': - resolution: {integrity: sha512-JGbeF2/FDU0x2OLySw/jgvkwWUo05BSiJK0dtuI4LyuXbz3wKiC1xHhLB1Tqm5VU6ZZDmAorj45r/IgWNWku5g==} + '@rollup/rollup-win32-ia32-msvc@4.54.0': + resolution: {integrity: sha512-woEHgqQqDCkAzrDhvDipnSirm5vxUXtSKDYTVpZG3nUdW/VVB5VdCYA2iReSj/u3yCZzXID4kuKG7OynPnB3WQ==} cpu: [ia32] os: [win32] - '@rollup/rollup-win32-x64-gnu@4.53.4': - resolution: {integrity: sha512-zuuC7AyxLWLubP+mlUwEyR8M1ixW1ERNPHJfXm8x7eQNP4Pzkd7hS3qBuKBR70VRiQ04Kw8FNfRMF5TNxuZq2g==} + '@rollup/rollup-win32-x64-gnu@4.54.0': + resolution: {integrity: sha512-dzAc53LOuFvHwbCEOS0rPbXp6SIhAf2txMP5p6mGyOXXw5mWY8NGGbPMPrs4P1WItkfApDathBj/NzMLUZ9rtQ==} cpu: [x64] os: [win32] - '@rollup/rollup-win32-x64-msvc@4.53.4': - resolution: {integrity: sha512-Sbx45u/Lbb5RyptSbX7/3deP+/lzEmZ0BTSHxwxN/IMOZDZf8S0AGo0hJD5n/LQssxb5Z3B4og4P2X6Dd8acCA==} + '@rollup/rollup-win32-x64-msvc@4.54.0': + resolution: {integrity: sha512-hYT5d3YNdSh3mbCU1gwQyPgQd3T2ne0A3KG8KSBdav5TiBg6eInVmV+TeR5uHufiIgSFg0XsOWGW5/RhNcSvPg==} cpu: [x64] os: [win32] @@ -790,6 +813,9 @@ packages: '@types/estree@1.0.8': resolution: {integrity: sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==} + '@types/json-schema@7.0.15': + resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} + '@types/json5@0.0.29': resolution: {integrity: sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==} @@ -927,6 +953,10 @@ packages: ajv@6.12.6: resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} + ansi-colors@4.1.3: + resolution: {integrity: sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==} + engines: {node: '>=6'} + ansi-escapes@7.2.0: resolution: {integrity: sha512-g6LhBsl+GBPRWGWsBtutpzBYuIIdBkLEvad5C/va/74Db018+5TZiyA26cZJAr3Rft5lprVqOIPxf5Vid6tqAw==} engines: {node: '>=18'} @@ -953,9 +983,8 @@ packages: argparse@2.0.1: resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} - aria-query@5.3.2: - resolution: {integrity: sha512-COROpnaoap1E2F000S62r6A60uHZnmlvomhfyT2DlTcrY1OrBKn2UhH7qn5wTC9zMvD0AY7csdPSNwKP+7WiQw==} - engines: {node: '>= 0.4'} + aria-query@5.1.3: + resolution: {integrity: sha512-R5iJ5lkuHybztUfuOAznmboyjWq8O6sqNqtK7CLOqdydi54VNbORp49mb14KbWgG1QD3JFO9hJdZ+y4KutfdOQ==} array-buffer-byte-length@1.0.2: resolution: {integrity: sha512-LHE+8BuR7RYGDKvnrmcuSq3tDcKv9OFEXQt/HpbZhY7V6h0zlUXutnAD82GiFx9rdieCMjkvtcsPqBwgUl1Iiw==} @@ -1015,8 +1044,8 @@ packages: resolution: {integrity: sha512-ilYanEU8vxxBexpJd8cWM4ElSQq4QctCLKih0TSfjIfCQTeyH/6zVrmIJfLPrKTKJRbiG+cfnZbQIjAlJmF1jQ==} engines: {node: '>=4'} - axios@1.13.2: - resolution: {integrity: sha512-VPk9ebNqPcy5lRGuSlKx752IlDatOjT9paPlm8A7yOuW2Fbvp4X3JznJtT4f0GzGLLiWE9W8onz51SqLYwzGaA==} + axios@1.13.0: + resolution: {integrity: sha512-zt40Pz4zcRXra9CVV31KeyofwiNvAbJ5B6YPz9pMJ+yOSLikvPT4Yi5LjfgjRa9CawVYBaD1JQzIVcIvBejKeA==} axobject-query@4.1.0: resolution: {integrity: sha512-qIj0G9wZbMGNLjLmg1PT6v2mE9AH2zlnADJD/2tC6E00hgmhUOfEB6greHPAfLRSufHqROIUTkw6E+M3lH0PTQ==} @@ -1029,8 +1058,8 @@ packages: balanced-match@1.0.2: resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} - baseline-browser-mapping@2.8.26: - resolution: {integrity: sha512-73lC1ugzwoaWCLJ1LvOgrR5xsMLTqSKIEoMHVtL9E/HNk0PXtTM76ZIm84856/SF7Nv8mPZxKoBsgpm0tR1u1Q==} + baseline-browser-mapping@2.9.11: + resolution: {integrity: sha512-Sg0xJUNDU1sJNGdfGWhVHX0kkZ+HWcvmVymJbj6NSgZZmW/8S9Y2HQ5euytnIgakgxN6papOAWiwDo1ctFDcoQ==} hasBin: true brace-expansion@1.1.12: @@ -1043,14 +1072,26 @@ packages: resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} engines: {node: '>=8'} - browserslist@4.28.0: - resolution: {integrity: sha512-tbydkR/CxfMwelN0vwdP/pLkDwyAASZ+VfWm4EOwlB6SWhx1sYnWLqo8N5j0rAzPfzfRaxt0mM/4wPU/Su84RQ==} + browserslist@4.28.1: + resolution: {integrity: sha512-ZC5Bd0LgJXgwGqUknZY/vkUQ04r8NXnJZ3yYi4vDmSiZmC/pdSN0NbNRPxZpbtO4uAfDUAFffO8IZoM3Gj8IkA==} engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} hasBin: true buffer-from@0.1.2: resolution: {integrity: sha512-RiWIenusJsmI2KcvqQABB83tLxCByE3upSP8QU3rJDMVFGPWLvPQJt/O1Su9moRWeH7d+Q2HYb68f6+v+tw2vg==} + bundle-name@4.1.0: + resolution: {integrity: sha512-tjwM5exMg6BGRI+kNmTntNsvdZS1X8BFYS6tnJ2hdH0kVxM6/eVZ2xy+FqStSWvYmtfFMDLIxurorHwDKfDz5Q==} + engines: {node: '>=18'} + + c12@3.3.2: + resolution: {integrity: sha512-QkikB2X5voO1okL3QsES0N690Sn/K9WokXqUsDQsWy5SnYb+psYQFGA10iy1bZHj3fjISKsI67Q90gruvWWM3A==} + peerDependencies: + magicast: '*' + peerDependenciesMeta: + magicast: + optional: true + call-bind-apply-helpers@1.0.2: resolution: {integrity: sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==} engines: {node: '>= 0.4'} @@ -1071,8 +1112,8 @@ packages: resolution: {integrity: sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==} engines: {node: '>= 6'} - caniuse-lite@1.0.30001754: - resolution: {integrity: sha512-x6OeBXueoAceOmotzx3PO4Zpt4rzpeIFsSr6AAePTZxSkXiYDUmpypEl7e2+8NCd9bD7bXjqyef8CJYPC1jfxg==} + caniuse-lite@1.0.30001761: + resolution: {integrity: sha512-JF9ptu1vP2coz98+5051jZ4PwQgd2ni8A+gYSN7EA7dPKIMf0pDlSUxhdmVOaV3/fYK5uWBkgSXJaRLr4+3A6g==} chalk@4.1.2: resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} @@ -1086,6 +1127,13 @@ packages: resolution: {integrity: sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==} engines: {node: '>=10'} + chokidar@4.0.3: + resolution: {integrity: sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==} + engines: {node: '>= 14.16.0'} + + citty@0.1.6: + resolution: {integrity: sha512-tskPPKEs8D2KPafUypv2gxwJP8h/OaJmC82QQGGDQcHvXX43xF2VDACcJVmZ0EuSxkpO9Kc4MlrA3q0+FG58AQ==} + cli-highlight@2.1.11: resolution: {integrity: sha512-9KDcoEVwyUXrjcJNvHD0NFc/hiwe/WPVYIleQh2O1N2Zro5gWJZ/K+3DGn8w8P/F6FxOgzyC5bxDyHIgCSPhGg==} engines: {node: '>=8.0.0', npm: '>=5.0.0'} @@ -1109,16 +1157,31 @@ packages: color-name@1.1.4: resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} + color-support@1.1.3: + resolution: {integrity: sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==} + hasBin: true + combined-stream@1.0.8: resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==} engines: {node: '>= 0.8'} + commander@14.0.2: + resolution: {integrity: sha512-TywoWNNRbhoD0BXs1P3ZEScW8W5iKrnbithIl0YH+uCmBd0QpPOA8yc82DS3BIE5Ma6FnBVUsJ7wVUDz4dvOWQ==} + engines: {node: '>=20'} + concat-map@0.0.1: resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} + confbox@0.2.2: + resolution: {integrity: sha512-1NB+BKqhtNipMsov4xI/NnhCKp9XG9NamYp5PVm9klAT0fsrNPjaFICsCFhNhwZJKNh7zB/3q8qXz0E9oaMNtQ==} + confusing-browser-globals@1.0.11: resolution: {integrity: sha512-JsPKdmh8ZkmnHxDk55FZ1TqVLvEQTvoByJZRN9jzI0UjxK/QgAmsphz7PGtqgPieQZ/CQcHWXCR7ATDNhGe+YA==} + consola@3.4.2: + resolution: {integrity: sha512-5IKcdX0nnYavi6G7TtOhwkYzyjfJlatbjMjuLSfE2kYT5pMDOilZ4OvMhi637CcDICTmz3wARPoyhqyX1Y+XvA==} + engines: {node: ^14.18.0 || >=16.10.0} + convert-source-map@1.9.0: resolution: {integrity: sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==} @@ -1151,8 +1214,8 @@ packages: engines: {node: '>=4'} hasBin: true - csstype@3.1.3: - resolution: {integrity: sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==} + csstype@3.2.3: + resolution: {integrity: sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ==} damerau-levenshtein@1.0.8: resolution: {integrity: sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==} @@ -1172,8 +1235,8 @@ packages: date-fns@4.1.0: resolution: {integrity: sha512-Ukq0owbQXxa/U3EGtsdVBkR1w7KOQ5gIBqdH2hkvknzZPYvBxb/aa6E8L7tmjFtkwZBu3UXBbjIgPo/Ez4xaNg==} - dayjs@1.11.19: - resolution: {integrity: sha512-t5EcLVS6QPBNqM2z8fakk/NKel+Xzshgt8FFKAn+qwlD1pzZWxh0nVCrvFK7ZDb6XucZeF9z8C7CBWTRIVApAw==} + dayjs@1.11.10: + resolution: {integrity: sha512-vjAczensTgRcqDERK0SR2XMwsF/tSvnvlv6VcF2GIhg6Sx4yOIt/irsr1RDJsKiIyBzJDpCoXiWWq28MqH2cnQ==} debug@3.2.7: resolution: {integrity: sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==} @@ -1192,17 +1255,36 @@ packages: supports-color: optional: true + deep-equal@2.2.3: + resolution: {integrity: sha512-ZIwpnevOurS8bpT4192sqAowWM76JDKSHYzMLty3BZGSswgq6pBaH3DhCSW5xVAZICZyKdOBPjwww5wfgT/6PA==} + engines: {node: '>= 0.4'} + deep-is@0.1.4: resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} + default-browser-id@5.0.1: + resolution: {integrity: sha512-x1VCxdX4t+8wVfd1so/9w+vQ4vx7lKd2Qp5tDRutErwmR85OgmfX7RlLRMWafRMY7hbEiXIbudNrjOAPa/hL8Q==} + engines: {node: '>=18'} + + default-browser@5.4.0: + resolution: {integrity: sha512-XDuvSq38Hr1MdN47EDvYtx3U0MTqpCEn+F6ft8z2vYDzMrvQhVp0ui9oQdqW3MvK3vqUETglt1tVGgjLuJ5izg==} + engines: {node: '>=18'} + define-data-property@1.1.4: resolution: {integrity: sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==} engines: {node: '>= 0.4'} + define-lazy-prop@3.0.0: + resolution: {integrity: sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg==} + engines: {node: '>=12'} + define-properties@1.2.1: resolution: {integrity: sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==} engines: {node: '>= 0.4'} + defu@6.1.4: + resolution: {integrity: sha512-mEQCMmwJu317oSz8CwdIOdwf3xMif1ttiM8LTufzc3g6kR+9Pe236twL8j3IYT1F7GfRgGcW6MWxzZjLIkuHIg==} + delayed-stream@1.0.0: resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} engines: {node: '>=0.4.0'} @@ -1211,6 +1293,9 @@ packages: resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==} engines: {node: '>=6'} + destr@2.0.5: + resolution: {integrity: sha512-ugFTXCtDZunbzasqBxrK93Ik/DRYsO6S/fedkWEMKqt04xZ4csmnmwGDBAb07QWNaGMAmnTIemsYZCksjATwsA==} + detect-libc@2.1.2: resolution: {integrity: sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==} engines: {node: '>=8'} @@ -1237,6 +1322,10 @@ packages: resolution: {integrity: sha512-MVUtAugQMOff5RnBy2d9N31iG0lNwg1qAoAOn7pOK5wf94WIaE3My2p3uwTQuvS2AcqchkcR3bHByjaM0mmi7Q==} engines: {node: '>=20'} + dotenv@17.2.3: + resolution: {integrity: sha512-JVUnt+DUIzu87TABbhPmNfVdBDt18BLOWjMUFJMSi/Qqg7NTYtabbvSNJGOJ7afbRuv9D/lngizHtP7QyLQ+9w==} + engines: {node: '>=12'} + dunder-proto@1.0.1: resolution: {integrity: sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==} engines: {node: '>= 0.4'} @@ -1247,8 +1336,8 @@ packages: eastasianwidth@0.2.0: resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} - electron-to-chromium@1.5.250: - resolution: {integrity: sha512-/5UMj9IiGDMOFBnN4i7/Ry5onJrAGSbOGo3s9FEKmwobGq6xw832ccET0CE3CkkMBZ8GJSlUIesZofpyurqDXw==} + electron-to-chromium@1.5.267: + resolution: {integrity: sha512-0Drusm6MVRXSOJpGbaSVgcQsuB4hEkMpHXaVstcPmhu5LIedxs1xNK/nIxmQIU/RPC0+1/o0AVZfBTkTNJOdUw==} emoji-regex@8.0.0: resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} @@ -1266,8 +1355,8 @@ packages: error-ex@1.3.4: resolution: {integrity: sha512-sqQamAnR14VgCr1A618A3sGrygcpK+HEbenA/HiEAkkUwcZIIB/tgWqHFxWgOyDh4nB4JCRimh79dR5Ywc9MDQ==} - es-abstract@1.24.0: - resolution: {integrity: sha512-WSzPgsdLtTcQwm4CROfS5ju2Wa1QQcVeT37jFjYzdFz1r9ahadC8B8/a4qxJxM+09F18iumCdRmlr96ZYkQvEg==} + es-abstract@1.24.1: + resolution: {integrity: sha512-zHXBLhP+QehSSbsS9Pt23Gg964240DPd6QCf8WpkqEXxQ7fhdZzYsocOr5u7apWonsS5EjZDmTF+/slGMyasvw==} engines: {node: '>= 0.4'} es-define-property@1.0.1: @@ -1278,8 +1367,11 @@ packages: resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==} engines: {node: '>= 0.4'} - es-iterator-helpers@1.2.1: - resolution: {integrity: sha512-uDn+FE1yrDzyC0pCo961B2IHbdM8y/ACZsKD4dG6WqrjV53BADjwa7D+1aom2rsNVfLyDgU/eigvlJGJ08OQ4w==} + es-get-iterator@1.1.3: + resolution: {integrity: sha512-sPZmqHBe6JIiTfN5q2pEi//TwxmAFHwj/XEuYjTuse78i8KxaqMTTzxPoFKuzRpDpTJ+0NAbpfenkmH2rePtuw==} + + es-iterator-helpers@1.2.2: + resolution: {integrity: sha512-BrUQ0cPTB/IwXj23HtwHjS9n7O4h9FX94b4xc5zlTHxeLgTAdzYUDyy6KdExAl9lbN5rtfe44xpjpmj9grxs5w==} engines: {node: '>= 0.4'} es-object-atoms@1.1.1: @@ -1298,8 +1390,8 @@ packages: resolution: {integrity: sha512-w+5mJ3GuFL+NjVtJlvydShqE1eN3h3PbI7/5LAsYJP/2qtuMXjfL2LpHSRqo4b4eSF5K/DH1JXKUAHSB2UW50g==} engines: {node: '>= 0.4'} - esbuild@0.27.1: - resolution: {integrity: sha512-yY35KZckJJuVVPXpvjgxiCuVEJT67F6zDeVTv4rizyPrfGBUpZQsvmxnN+C371c2esD/hNMjj4tpBhuueLN7aA==} + esbuild@0.27.2: + resolution: {integrity: sha512-HyNQImnsOC7X9PMNaCIeAm4ISCQXs5a5YasTXVliKv4uuBo1dKrG0A+uQS8M5eXjVMnLg3WgXaKvprHlFJQffw==} engines: {node: '>=18'} hasBin: true @@ -1382,20 +1474,20 @@ packages: '@typescript-eslint/parser': optional: true - eslint-plugin-jsx-a11y@6.10.2: - resolution: {integrity: sha512-scB3nz4WmG75pV8+3eRUQOHZlNSUhFNq37xnpgRkCCELU3XMvXAxLk1eqWWyE22Ki4Q01Fnsw9BA3cJHDPgn2Q==} + eslint-plugin-jsx-a11y@6.10.0: + resolution: {integrity: sha512-ySOHvXX8eSN6zz8Bywacm7CvGNhUtdjvqfQDVe6020TUK34Cywkw7m0KsCCk1Qtm9G1FayfTN1/7mMYnYO2Bhg==} engines: {node: '>=4.0'} peerDependencies: eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9 - eslint-plugin-react-hooks@4.6.2: - resolution: {integrity: sha512-QzliNJq4GinDBcD8gPB5v0wh6g8q3SUi6EFF0x8N/BL9PoVs0atuGc47ozMRyOWAKdwaZ5OnbOEa3WR+dSGKuQ==} + eslint-plugin-react-hooks@4.6.0: + resolution: {integrity: sha512-oFc7Itz9Qxh2x4gNHStv3BqJq54ExXmfC+a1NjAta66IAN87Wu0R/QArgIS9qKzX3dXKPI9H5crl9QchNMY9+g==} engines: {node: '>=10'} peerDependencies: eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 - eslint-plugin-react@7.37.5: - resolution: {integrity: sha512-Qteup0SqU15kdocexFNAJMvCJEfa2xUKNV4CC1xsVMrIIqEy3SQ/rqyxCWNzfrd3/ldy6HMlD2e0JDVpDg2qIA==} + eslint-plugin-react@7.37.0: + resolution: {integrity: sha512-IHBePmfWH5lKhJnJ7WB1V+v/GolbB0rjS8XYVCSQCZKaQCAUhMoVoOEn1Ef8Z8Wf0a7l8KTJvuZg5/e4qrZ6nA==} engines: {node: '>=4'} peerDependencies: eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9.7 @@ -1418,8 +1510,8 @@ packages: resolution: {integrity: sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - eslint@8.57.1: - resolution: {integrity: sha512-ypowyDxpVSYpkXr9WPv2PAZCtNip1Mv5KTW0SCurXv/9iOpcrH9PaqUElksqEB6pChqHGDRCFTyrZlGhnLNGiA==} + eslint@8.57.0: + resolution: {integrity: sha512-dZ6+mexnaTIbSBZWgou51U6OmzIhYM2VcNdtiTtI7qPNZm35Akpr0f6vtw3w1Kmn5PYo+tZVfh13WrhpS6oLqQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} deprecated: This version is no longer supported. Please see https://eslint.org/version-support for other options. hasBin: true @@ -1444,6 +1536,9 @@ packages: resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} engines: {node: '>=0.10.0'} + exsolve@1.0.8: + resolution: {integrity: sha512-LmDxfWXwcTArk8fUEnOfSZpHOJ6zOMUJKOtFLFqJLoKJetuQG874Uc7/Kki7zFLzYybmZhp1M7+98pfMqeX8yA==} + fast-deep-equal@3.1.3: resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} @@ -1512,8 +1607,8 @@ packages: resolution: {integrity: sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==} engines: {node: '>=14'} - form-data@4.0.4: - resolution: {integrity: sha512-KrGhL9Q4zjj0kiUt5OO4Mr/A/jlI2jDYs5eHBpYHPcBEVSiipAvn2Ko2HnPe20rmcuuvMHNdZFp+4IlGTMF0Ow==} + form-data@4.0.5: + resolution: {integrity: sha512-8RipRLol37bNs2bhoV67fiTEvdTrbMUYcFTiy3+wuuOnUog2QBHCZWXDRijWQfAkhBj2Uf5UnVaiWwA5vdd82w==} engines: {node: '>= 6'} fs.realpath@1.0.0: @@ -1562,6 +1657,10 @@ packages: resolution: {integrity: sha512-w9UMqWwJxHNOvoNzSJ2oPF5wvYcvP7jUvYzhp67yEhTi17ZDBBC1z9pTdGuzjD+EFIqLSYRweZjqfiPzQ06Ebg==} engines: {node: '>= 0.4'} + giget@2.0.0: + resolution: {integrity: sha512-L5bGsVkxJbJgdnwyuheIunkGatUF/zssUoxxjACCseZYAVbaqdh9Tsmmlkl8vYan09H7sbvKt4pS8GqKLBrEzA==} + hasBin: true + glob-parent@5.1.2: resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} engines: {node: '>= 6'} @@ -1570,8 +1669,8 @@ packages: resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} engines: {node: '>=10.13.0'} - glob@11.0.3: - resolution: {integrity: sha512-2Nim7dha1KVkaiF4q6Dj+ngPPMdfvLJEOpZk/jKiUAkqKebpGAWQXAq9z1xu9HKu5lWfqw/FASuccEjyznjPaA==} + glob@11.1.0: + resolution: {integrity: sha512-vuNwKSaKiqm7g0THUBu2x7ckSs3XJLXE+2ssL7/MfTGPLLcrJQ/4Uq1CjPTtO5cCIiRxqvN6Twy1qOwhL0Xjcw==} engines: {node: 20 || >=22} hasBin: true @@ -1675,6 +1774,10 @@ packages: resolution: {integrity: sha512-4gd7VpWNQNB4UKKCFFVcp1AVv+FMOgs9NKzjHKusc8jTMhd5eL1NqQqOpE0KzMds804/yHlglp3uxgluOqAPLw==} engines: {node: '>= 0.4'} + is-arguments@1.2.0: + resolution: {integrity: sha512-7bVbi0huj/wrIAOzb8U1aszg9kdi3KN/CyU19CTI7tAoZYEZoL9yCDXpbXN+uPsuWnP02cyug1gleqq+TU+YCA==} + engines: {node: '>= 0.4'} + is-array-buffer@3.0.5: resolution: {integrity: sha512-DDfANUiiG2wC1qawP66qlTugJeL5HyzMpfr8lLK+jMQirGzNod0B12cFB/9q838Ru27sBwfw78/rdoU7RERz6A==} engines: {node: '>= 0.4'} @@ -1710,6 +1813,11 @@ packages: resolution: {integrity: sha512-PwwhEakHVKTdRNVOw+/Gyh0+MzlCl4R6qKvkhuvLtPMggI1WAHt9sOwZxQLSGpUaDnrdyDsomoRgNnCfKNSXXg==} engines: {node: '>= 0.4'} + is-docker@3.0.0: + resolution: {integrity: sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + hasBin: true + is-extglob@2.1.1: resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} engines: {node: '>=0.10.0'} @@ -1730,6 +1838,15 @@ packages: resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} engines: {node: '>=0.10.0'} + is-in-ssh@1.0.0: + resolution: {integrity: sha512-jYa6Q9rH90kR1vKB6NM7qqd1mge3Fx4Dhw5TVlK1MUBqhEOuCagrEHMevNuCcbECmXZ0ThXkRm+Ymr51HwEPAw==} + engines: {node: '>=20'} + + is-inside-container@1.0.0: + resolution: {integrity: sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==} + engines: {node: '>=14.16'} + hasBin: true + is-map@2.0.3: resolution: {integrity: sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==} engines: {node: '>= 0.4'} @@ -1786,6 +1903,10 @@ packages: resolution: {integrity: sha512-mfcwb6IzQyOKTs84CQMrOwW4gQcaTOAWJ0zzJCl2WSPDrWk/OzDaImWFH3djXhb24g4eudZfLRozAvPGw4d9hQ==} engines: {node: '>= 0.4'} + is-wsl@3.1.0: + resolution: {integrity: sha512-UcVfVfaK4Sc4m7X3dUSoHoozQGBEFeDC+zVo06t98xe8CzHSZZBekNXH+tu0NalHolcJ/QAGqS46Hef7QXBIMw==} + engines: {node: '>=16'} + isarray@0.0.1: resolution: {integrity: sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==} @@ -1809,11 +1930,15 @@ packages: javascript-natural-sort@0.7.1: resolution: {integrity: sha512-nO6jcEfZWQXDhOiBtG2KvKyEptz7RVbpGP4vTD2hLBdmNQSsCiicO2Ioinv6UI4y9ukqnBpy+XZ9H6uLNgJTlw==} + jiti@2.6.1: + resolution: {integrity: sha512-ekilCSN1jwRvIbgeg/57YFh8qQDNbwDb9xT/qu2DAHbFFZUicIl4ygVaAvzveMhMVr3LnpSKTNnwt8PoOfmKhQ==} + hasBin: true + js-tokens@4.0.0: resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} - js-yaml@4.1.0: - resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} + js-yaml@4.1.1: + resolution: {integrity: sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==} hasBin: true jsesc@3.1.0: @@ -1941,18 +2066,21 @@ packages: resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} engines: {node: '>=10'} - lodash-es@4.17.21: - resolution: {integrity: sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==} + lodash-es@4.17.22: + resolution: {integrity: sha512-XEawp1t0gxSi9x01glktRZ5HDy0HXqrM0x5pXQM98EaI0NxO6jVM7omDOxsuEo5UIASAnm2bRp1Jt/e0a2XU8Q==} lodash.merge@4.6.2: resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} + lodash@4.17.21: + resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} + loose-envify@1.4.0: resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==} hasBin: true - lru-cache@11.2.2: - resolution: {integrity: sha512-F9ODfyqML2coTIsQpSkRHnLSZMtkU8Q+mSfcaIyKwy58u+8k5nvAYeiNhsyMARvzNcXJ9QfWVrcPsC9e9rAxtg==} + lru-cache@11.2.4: + resolution: {integrity: sha512-B5Y16Jr9LB9dHVkh6ZevG+vAbOsNOYCX+sXvFWFu7B3Iz5mijW3zdbMyhsh8ANd2mSWBYdJgnqi+mL7/LrOPYg==} engines: {node: 20 || >=22} lru-cache@5.1.1: @@ -2028,6 +2156,9 @@ packages: resolution: {integrity: sha512-Z3lTE9pLaJF47NyMhd4ww1yFTAP8YhYI8SleJiHzM46Fgpm5cnNzSl9XfzFNqbaz+VlJrIj3fXQ4DeN1Rjm6cw==} engines: {node: '>=18'} + node-fetch-native@1.6.7: + resolution: {integrity: sha512-g9yhqoedzIUm0nTnTqAQvueMPVOuIY16bqgAJJC8XOOubYFNwz6IER9qs0Gq2Xd0+CecCKFjtdDTMA4u4xG06Q==} + node-fetch@2.7.0: resolution: {integrity: sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==} engines: {node: 4.x || >=6.0.0} @@ -2061,6 +2192,11 @@ packages: react-router-dom: optional: true + nypm@0.6.2: + resolution: {integrity: sha512-7eM+hpOtrKrBDCh7Ypu2lJ9Z7PNZBdi/8AT3AX8xoCj43BBVHD0hPSTEvMtkMpfs8FCqBGhxB+uToIQimA111g==} + engines: {node: ^14.16.0 || >=16.10.0} + hasBin: true + object-assign@4.1.1: resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} engines: {node: '>=0.10.0'} @@ -2069,6 +2205,10 @@ packages: resolution: {integrity: sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==} engines: {node: '>= 0.4'} + object-is@1.1.6: + resolution: {integrity: sha512-F8cZ+KfGlSGi09lJT7/Nd6KJZ9ygtvYC0/UYYLI9nmQKLMnydpB9yvbv9K1uSkEu7FU9vYPmVwLg328tX+ot3Q==} + engines: {node: '>= 0.4'} + object-keys@0.4.0: resolution: {integrity: sha512-ncrLw+X55z7bkl5PnUvHwFK9FcGuFYo9gtjws2XtSzL+aZ8tm830P60WJ0dSmFVaSalWieW5MD7kEdnXda9yJw==} @@ -2096,9 +2236,16 @@ packages: resolution: {integrity: sha512-gXah6aZrcUxjWg2zR2MwouP2eHlCBzdV4pygudehaKXSGW4v2AsRQUK+lwwXhii6KFZcunEnmSUoYp5CXibxtA==} engines: {node: '>= 0.4'} + ohash@2.0.11: + resolution: {integrity: sha512-RdR9FQrFwNBNXAr4GixM8YaRZRJ5PUWbKYbE5eOsrwAjJW0q2REGcf79oYPsLyskQCZG1PLN+S/K1V00joZAoQ==} + once@1.4.0: resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} + open@11.0.0: + resolution: {integrity: sha512-smsWv2LzFjP03xmvFoJ331ss6h+jixfA4UUV/Bsiyuu4YJPfN+FIQGOIiv4w9/+MoHkfkJ22UIaQWRVFRfH6Vw==} + engines: {node: '>=20'} + optionator@0.9.4: resolution: {integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==} engines: {node: '>= 0.8.0'} @@ -2164,6 +2311,12 @@ packages: resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} engines: {node: '>=8'} + pathe@2.0.3: + resolution: {integrity: sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==} + + perfect-debounce@2.0.0: + resolution: {integrity: sha512-fkEH/OBiKrqqI/yIgjR92lMfs2K8105zt/VT6+7eTjNwisrsh47CeIED9z58zI7DfKdH3uHAn25ziRZn3kgAow==} + picocolors@1.1.1: resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} @@ -2175,6 +2328,9 @@ packages: resolution: {integrity: sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==} engines: {node: '>=12'} + pkg-types@2.3.0: + resolution: {integrity: sha512-SIqCzDRg0s9npO5XQ3tNZioRY1uK06lA41ynBC1YmFTmnY6FjUjVt6s4LoADmwoig1qqD0oK8h1p/8mlMx8Oig==} + possible-typed-array-names@1.1.0: resolution: {integrity: sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg==} engines: {node: '>= 0.4'} @@ -2202,8 +2358,8 @@ packages: peerDependencies: postcss: '>=8.0.0' - postcss-selector-parser@7.1.0: - resolution: {integrity: sha512-8sLjZwK0R+JlxlYcTuVnyT2v+htpdrjDOKuMcOVdYjt52Lh8hWRYpxBPoKx/Zg+bcjc3wx6fmQevMmUztS/ccA==} + postcss-selector-parser@7.1.1: + resolution: {integrity: sha512-orRsuYpJVw8LdAwqqLykBj9ecS5/cRHlI5+nvTo8LcCKmzDmqVORXtOIYEEQuL9D4BxtA1lm5isAqzQZCoQ6Eg==} engines: {node: '>=4'} postcss-simple-vars@7.0.1: @@ -2212,10 +2368,18 @@ packages: peerDependencies: postcss: ^8.2.1 + postcss@8.5.0: + resolution: {integrity: sha512-27VKOqrYfPncKA2NrFOVhP5MGAfHKLYn/Q0mz9cNQyRAKYi3VNHwYU2qKKqPCqgBmeeJ0uAFB56NumXZ5ZReXg==} + engines: {node: ^10 || ^12 || >=14} + postcss@8.5.6: resolution: {integrity: sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==} engines: {node: ^10 || ^12 || >=14} + powershell-utils@0.1.0: + resolution: {integrity: sha512-dM0jVuXJPsDN6DvRpea484tCUaMiXWjuCn++HGTqUWzGDjv5tZkEZldAJ/UMlqRYGFrD/etByo4/xOuC/snX2A==} + engines: {node: '>=20'} + prelude-ls@1.2.1: resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} engines: {node: '>= 0.8.0'} @@ -2247,6 +2411,9 @@ packages: raf-schd@4.0.3: resolution: {integrity: sha512-tQkJl2GRWh83ui2DiPTJz9wEiMN20syf+5oKfB03yYP7ioZcJwsIK8FjrtLwH1m7C7e+Tt2yYBlrOpdT+dyeIQ==} + rc9@2.1.2: + resolution: {integrity: sha512-btXCnMmRIBINM2LDZoEmOogIZU7Qe7zn4BpomSKZ/ykbLObuBdvG+mFq11DL6fjH1DRwHhrlgtYWG96bJiC7Cg==} + react-dom@19.2.0: resolution: {integrity: sha512-UlbRu4cAiGaIewkPyiRGJk0imDN2T3JjieT6spoL2UeSf5od4n5LB/mQ4ejmxhCFT1tYe8IvaFulzynWovsEFQ==} peerDependencies: @@ -2288,10 +2455,14 @@ packages: react: ^0.14 || ^15.0.0 || ^16.0.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 react-dom: ^0.14 || ^15.0.0 || ^16.0.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 - react-qr-code@2.0.18: - resolution: {integrity: sha512-v1Jqz7urLMhkO6jkgJuBYhnqvXagzceg3qJUWayuCK/c6LTIonpWbwxR1f1APGd4xrW/QcQEovNrAojbUz65Tg==} + react-qr-code@2.0.12: + resolution: {integrity: sha512-k+pzP5CKLEGBRwZsDPp98/CAJeXlsYRHM2iZn1Sd5Th/HnKhIZCSg27PXO58zk8z02RaEryg+60xa4vyywMJwg==} peerDependencies: - react: '*' + react: ^16.x || ^17.x || ^18.x + react-native-svg: '*' + peerDependenciesMeta: + react-native-svg: + optional: true react-redux@9.2.0: resolution: {integrity: sha512-ROY9fvHhwOD9ySfrF0wmvu//bKCQ6AeZZq1nJNtbDC+kk5DuSuNX/n6YWYF/SYy7bSba4D4FSz8DJeKY/S/r+g==} @@ -2319,8 +2490,8 @@ packages: '@types/react': optional: true - react-remove-scroll@2.7.1: - resolution: {integrity: sha512-HpMh8+oahmIdOuS5aFKKY6Pyog+FNaZV/XyJOq7b4YFwsFHe5yYfdbIalI4k3vU2nSDql7YskmUseHsRrJqIPA==} + react-remove-scroll@2.7.2: + resolution: {integrity: sha512-Iqb9NjCCTt6Hf+vOdNIZGdTiH1QSqr27H/Ek9sv/a97gfueI/5h1s3yRi1nngzMUaOOToin5dI1dXKdXiF+u0Q==} engines: {node: '>=10'} peerDependencies: '@types/react': '*' @@ -2371,6 +2542,10 @@ packages: readable-stream@2.3.8: resolution: {integrity: sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==} + readdirp@4.1.2: + resolution: {integrity: sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==} + engines: {node: '>= 14.18.0'} + redux@5.0.1: resolution: {integrity: sha512-M9/ELqF6fy8FwmkpnF0S3YKOqMyoWJ4+CS5Efg2ct3oY9daQvd/Pc71FpGZsVsbl3Cpb+IIcjBDUnnyBdQbq4w==} @@ -2408,11 +2583,15 @@ packages: deprecated: Rimraf versions prior to v4 are no longer supported hasBin: true - rollup@4.53.4: - resolution: {integrity: sha512-YpXaaArg0MvrnJpvduEDYIp7uGOqKXbH9NsHGQ6SxKCOsNAjZF018MmxefFUulVP2KLtiGw1UvZbr+/ekjvlDg==} + rollup@4.54.0: + resolution: {integrity: sha512-3nk8Y3a9Ea8szgKhinMlGMhGMw89mqule3KWczxhIzqudyHdCIOHw8WJlj/r329fACjKLEh13ZSk7oE22kyeIw==} engines: {node: '>=18.0.0', npm: '>=8.0.0'} hasBin: true + run-applescript@7.1.0: + resolution: {integrity: sha512-DPe5pVFaAsinSaV6QjQ6gdiedWDcRCbUuiQfQa2wmWV7+xC9bGulGI8+TdRmoFkAPaBXk8CrAbnlY2ISniJ47Q==} + engines: {node: '>=18'} + run-parallel@1.2.0: resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} @@ -2580,8 +2759,8 @@ packages: resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} engines: {node: '>= 0.4'} - swr@2.3.6: - resolution: {integrity: sha512-wfHRmHWk/isGNMwlLGlZX5Gzz/uTgo0o2IRuTMcf4CPuPFJZlq0rDaKUx+ozB5nBOReNV1kiOyzMfj+MBMikLw==} + swr@2.3.0: + resolution: {integrity: sha512-NyZ76wA4yElZWBHzSgEJc28a0u6QZvhb6w0azeL2k7+Q1gAzVK+IqQYXhVOC/mzi+HZIozrZvBVeSeOZNR2bqA==} peerDependencies: react: ^16.11.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 @@ -2611,6 +2790,10 @@ packages: tiny-invariant@1.3.3: resolution: {integrity: sha512-+FbBPE1o9QAYvviau/qC5SE3caw21q3xkvWKBtja5vgqOWIHHJ3ioaq1VPfn/Szqctz2bU/oYeKd9/z5BL+PVg==} + tinyexec@1.0.2: + resolution: {integrity: sha512-W/KYk+NFhkmsYpuHq5JykngiOCnxeVL8v8dFnqxSD8qEEdRfXk1SDM6JzNqcERbcGYj9tMrDQBYV9cjgnunFIg==} + engines: {node: '>=18'} + tinyglobby@0.2.15: resolution: {integrity: sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==} engines: {node: '>=12.0.0'} @@ -2656,8 +2839,8 @@ packages: resolution: {integrity: sha512-TeTSQ6H5YHvpqVwBRcnLDCBnDOHWYu7IvGbHT6N8AOymcr9PJGjc1GTtiWZTYg0NCgYwvnYWEkVChQAr9bjfwA==} engines: {node: '>=16'} - type-fest@5.2.0: - resolution: {integrity: sha512-xxCJm+Bckc6kQBknN7i9fnP/xobQRsRQxR01CztFkp/h++yfVxUUcmMgfR2HttJx/dpWjS9ubVuyspJv24Q9DA==} + type-fest@5.3.1: + resolution: {integrity: sha512-VCn+LMHbd4t6sF3wfU/+HKT63C9OoyrSIf4b+vtWHpt2U7/4InZG467YDNMFMR70DdHjAdpPWmw2lzRdg0Xqqg==} engines: {node: '>=20'} typed-array-buffer@1.0.3: @@ -2676,8 +2859,8 @@ packages: resolution: {integrity: sha512-3KS2b+kL7fsuk/eJZ7EQdnEmQoaho/r6KUef7hxvltNA5DR8NAUM+8wJMbJyZ4G9/7i3v5zPBIMN5aybAh2/Jg==} engines: {node: '>= 0.4'} - typescript@5.9.3: - resolution: {integrity: sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==} + typescript@5.8.2: + resolution: {integrity: sha512-aJn6wq13/afZp/jT9QZmwEjDqqvSGp1VT5GVg+f/t6/oVyrgXM6BY1h9BRh/O5p3PlUPAe+WuiEZOmb/49RqoQ==} engines: {node: '>=14.17'} hasBin: true @@ -2692,8 +2875,8 @@ packages: resolution: {integrity: sha512-yLSH4py7oFH3oG/9K+XWrz1pSi3dfUrWEnInbxMfArOfc1+33BlGPQtLsOYwvdMy11AwUBetYuaRxSPqgkq+8g==} engines: {node: '>=4'} - update-browserslist-db@1.1.4: - resolution: {integrity: sha512-q0SPT4xyU84saUX+tomz1WLkxUbuaJnR1xWt17M7fJtEJigJeWUNGUqrauFXsHnqev9y9JTRGwk13tFBuKby4A==} + update-browserslist-db@1.2.3: + resolution: {integrity: sha512-Js0m9cx+qOgDxo0eMiFGEueWztz+d4+M3rGlmKPT+T4IS/jP4ylw3Nwpu6cpTTP8R1MAC1kF4VbdLt3ARf209w==} hasBin: true peerDependencies: browserslist: '>= 4.21.0' @@ -2848,6 +3031,10 @@ packages: wrappy@1.0.2: resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} + wsl-utils@0.3.0: + resolution: {integrity: sha512-3sFIGLiaDP7rTO4xh3g+b3AzhYDIUGGywE/WsmqzJWDxus5aJXVnPTNC/6L+r2WzrwXqVOdD262OaO+cEyPMSQ==} + engines: {node: '>=20'} + xtend@2.1.2: resolution: {integrity: sha512-vMNKzr2rHP9Dp/e1NQFnLQlwlhp9L/LfvnsVdHxN1f+uggyVI3i08uD14GPvCToPkdsRfyPqIyYGmIk58V98ZQ==} engines: {node: '>=0.4'} @@ -2917,7 +3104,7 @@ snapshots: dependencies: '@babel/compat-data': 7.28.5 '@babel/helper-validator-option': 7.27.1 - browserslist: 4.28.0 + browserslist: 4.28.1 lru-cache: 5.1.1 semver: 6.3.1 @@ -3044,7 +3231,7 @@ snapshots: '@emotion/memoize': 0.9.0 '@emotion/unitless': 0.10.0 '@emotion/utils': 1.4.2 - csstype: 3.1.3 + csstype: 3.2.3 '@emotion/server@11.11.0': dependencies: @@ -3065,87 +3252,87 @@ snapshots: '@emotion/weak-memoize@0.4.0': {} - '@esbuild/aix-ppc64@0.27.1': + '@esbuild/aix-ppc64@0.27.2': optional: true - '@esbuild/android-arm64@0.27.1': + '@esbuild/android-arm64@0.27.2': optional: true - '@esbuild/android-arm@0.27.1': + '@esbuild/android-arm@0.27.2': optional: true - '@esbuild/android-x64@0.27.1': + '@esbuild/android-x64@0.27.2': optional: true - '@esbuild/darwin-arm64@0.27.1': + '@esbuild/darwin-arm64@0.27.2': optional: true - '@esbuild/darwin-x64@0.27.1': + '@esbuild/darwin-x64@0.27.2': optional: true - '@esbuild/freebsd-arm64@0.27.1': + '@esbuild/freebsd-arm64@0.27.2': optional: true - '@esbuild/freebsd-x64@0.27.1': + '@esbuild/freebsd-x64@0.27.2': optional: true - '@esbuild/linux-arm64@0.27.1': + '@esbuild/linux-arm64@0.27.2': optional: true - '@esbuild/linux-arm@0.27.1': + '@esbuild/linux-arm@0.27.2': optional: true - '@esbuild/linux-ia32@0.27.1': + '@esbuild/linux-ia32@0.27.2': optional: true - '@esbuild/linux-loong64@0.27.1': + '@esbuild/linux-loong64@0.27.2': optional: true - '@esbuild/linux-mips64el@0.27.1': + '@esbuild/linux-mips64el@0.27.2': optional: true - '@esbuild/linux-ppc64@0.27.1': + '@esbuild/linux-ppc64@0.27.2': optional: true - '@esbuild/linux-riscv64@0.27.1': + '@esbuild/linux-riscv64@0.27.2': optional: true - '@esbuild/linux-s390x@0.27.1': + '@esbuild/linux-s390x@0.27.2': optional: true - '@esbuild/linux-x64@0.27.1': + '@esbuild/linux-x64@0.27.2': optional: true - '@esbuild/netbsd-arm64@0.27.1': + '@esbuild/netbsd-arm64@0.27.2': optional: true - '@esbuild/netbsd-x64@0.27.1': + '@esbuild/netbsd-x64@0.27.2': optional: true - '@esbuild/openbsd-arm64@0.27.1': + '@esbuild/openbsd-arm64@0.27.2': optional: true - '@esbuild/openbsd-x64@0.27.1': + '@esbuild/openbsd-x64@0.27.2': optional: true - '@esbuild/openharmony-arm64@0.27.1': + '@esbuild/openharmony-arm64@0.27.2': optional: true - '@esbuild/sunos-x64@0.27.1': + '@esbuild/sunos-x64@0.27.2': optional: true - '@esbuild/win32-arm64@0.27.1': + '@esbuild/win32-arm64@0.27.2': optional: true - '@esbuild/win32-ia32@0.27.1': + '@esbuild/win32-ia32@0.27.2': optional: true - '@esbuild/win32-x64@0.27.1': + '@esbuild/win32-x64@0.27.2': optional: true - '@eslint-community/eslint-utils@4.9.0(eslint@8.57.1)': + '@eslint-community/eslint-utils@4.9.0(eslint@8.57.0)': dependencies: - eslint: 8.57.1 + eslint: 8.57.0 eslint-visitor-keys: 3.4.3 '@eslint-community/regexpp@4.12.2': {} @@ -3158,13 +3345,13 @@ snapshots: globals: 13.24.0 ignore: 5.3.2 import-fresh: 3.3.1 - js-yaml: 4.1.0 + js-yaml: 4.1.1 minimatch: 3.1.2 strip-json-comments: 3.1.1 transitivePeerDependencies: - supports-color - '@eslint/js@8.57.1': {} + '@eslint/js@8.57.0': {} '@floating-ui/core@1.7.3': dependencies: @@ -3212,7 +3399,34 @@ snapshots: transitivePeerDependencies: - '@types/react' - '@humanwhocodes/config-array@0.13.0': + '@hey-api/codegen-core@0.4.0(typescript@5.8.2)': + dependencies: + ansi-colors: 4.1.3 + color-support: 1.1.3 + typescript: 5.8.2 + + '@hey-api/json-schema-ref-parser@1.2.2': + dependencies: + '@jsdevtools/ono': 7.1.3 + '@types/json-schema': 7.0.15 + js-yaml: 4.1.1 + lodash: 4.17.21 + + '@hey-api/openapi-ts@0.89.2(typescript@5.8.2)': + dependencies: + '@hey-api/codegen-core': 0.4.0(typescript@5.8.2) + '@hey-api/json-schema-ref-parser': 1.2.2 + ansi-colors: 4.1.3 + c12: 3.3.2 + color-support: 1.1.3 + commander: 14.0.2 + open: 11.0.0 + semver: 7.7.3 + typescript: 5.8.2 + transitivePeerDependencies: + - magicast + + '@humanwhocodes/config-array@0.11.14': dependencies: '@humanwhocodes/object-schema': 2.0.3 debug: 4.4.3 @@ -3258,6 +3472,8 @@ snapshots: '@jridgewell/resolve-uri': 3.1.2 '@jridgewell/sourcemap-codec': 1.5.5 + '@jsdevtools/ono@7.1.3': {} + '@mantine/core@8.3.7(@mantine/hooks@8.3.7(react@19.2.0))(@types/react@19.2.4)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)': dependencies: '@floating-ui/react': 0.27.16(react-dom@19.2.0(react@19.2.0))(react@19.2.0) @@ -3266,18 +3482,18 @@ snapshots: react: 19.2.0 react-dom: 19.2.0(react@19.2.0) react-number-format: 5.4.4(react-dom@19.2.0(react@19.2.0))(react@19.2.0) - react-remove-scroll: 2.7.1(@types/react@19.2.4)(react@19.2.0) + react-remove-scroll: 2.7.2(@types/react@19.2.4)(react@19.2.0) react-textarea-autosize: 8.5.9(@types/react@19.2.4)(react@19.2.0) type-fest: 4.41.0 transitivePeerDependencies: - '@types/react' - '@mantine/dates@8.3.7(@mantine/core@8.3.7(@mantine/hooks@8.3.7(react@19.2.0))(@types/react@19.2.4)(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(@mantine/hooks@8.3.7(react@19.2.0))(dayjs@1.11.19)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)': + '@mantine/dates@8.3.7(@mantine/core@8.3.7(@mantine/hooks@8.3.7(react@19.2.0))(@types/react@19.2.4)(react-dom@19.2.0(react@19.2.0))(react@19.2.0))(@mantine/hooks@8.3.7(react@19.2.0))(dayjs@1.11.10)(react-dom@19.2.0(react@19.2.0))(react@19.2.0)': dependencies: '@mantine/core': 8.3.7(@mantine/hooks@8.3.7(react@19.2.0))(@types/react@19.2.4)(react-dom@19.2.0(react@19.2.0))(react@19.2.0) '@mantine/hooks': 8.3.7(react@19.2.0) clsx: 2.1.1 - dayjs: 1.11.19 + dayjs: 1.11.10 react: 19.2.0 react-dom: 19.2.0(react@19.2.0) @@ -3338,70 +3554,70 @@ snapshots: '@rolldown/pluginutils@1.0.0-beta.43': {} - '@rollup/rollup-android-arm-eabi@4.53.4': + '@rollup/rollup-android-arm-eabi@4.54.0': optional: true - '@rollup/rollup-android-arm64@4.53.4': + '@rollup/rollup-android-arm64@4.54.0': optional: true - '@rollup/rollup-darwin-arm64@4.53.4': + '@rollup/rollup-darwin-arm64@4.54.0': optional: true - '@rollup/rollup-darwin-x64@4.53.4': + '@rollup/rollup-darwin-x64@4.54.0': optional: true - '@rollup/rollup-freebsd-arm64@4.53.4': + '@rollup/rollup-freebsd-arm64@4.54.0': optional: true - '@rollup/rollup-freebsd-x64@4.53.4': + '@rollup/rollup-freebsd-x64@4.54.0': optional: true - '@rollup/rollup-linux-arm-gnueabihf@4.53.4': + '@rollup/rollup-linux-arm-gnueabihf@4.54.0': optional: true - '@rollup/rollup-linux-arm-musleabihf@4.53.4': + '@rollup/rollup-linux-arm-musleabihf@4.54.0': optional: true - '@rollup/rollup-linux-arm64-gnu@4.53.4': + '@rollup/rollup-linux-arm64-gnu@4.54.0': optional: true - '@rollup/rollup-linux-arm64-musl@4.53.4': + '@rollup/rollup-linux-arm64-musl@4.54.0': optional: true - '@rollup/rollup-linux-loong64-gnu@4.53.4': + '@rollup/rollup-linux-loong64-gnu@4.54.0': optional: true - '@rollup/rollup-linux-ppc64-gnu@4.53.4': + '@rollup/rollup-linux-ppc64-gnu@4.54.0': optional: true - '@rollup/rollup-linux-riscv64-gnu@4.53.4': + '@rollup/rollup-linux-riscv64-gnu@4.54.0': optional: true - '@rollup/rollup-linux-riscv64-musl@4.53.4': + '@rollup/rollup-linux-riscv64-musl@4.54.0': optional: true - '@rollup/rollup-linux-s390x-gnu@4.53.4': + '@rollup/rollup-linux-s390x-gnu@4.54.0': optional: true - '@rollup/rollup-linux-x64-gnu@4.53.4': + '@rollup/rollup-linux-x64-gnu@4.54.0': optional: true - '@rollup/rollup-linux-x64-musl@4.53.4': + '@rollup/rollup-linux-x64-musl@4.54.0': optional: true - '@rollup/rollup-openharmony-arm64@4.53.4': + '@rollup/rollup-openharmony-arm64@4.54.0': optional: true - '@rollup/rollup-win32-arm64-msvc@4.53.4': + '@rollup/rollup-win32-arm64-msvc@4.54.0': optional: true - '@rollup/rollup-win32-ia32-msvc@4.53.4': + '@rollup/rollup-win32-ia32-msvc@4.54.0': optional: true - '@rollup/rollup-win32-x64-gnu@4.53.4': + '@rollup/rollup-win32-x64-gnu@4.54.0': optional: true - '@rollup/rollup-win32-x64-msvc@4.53.4': + '@rollup/rollup-win32-x64-msvc@4.54.0': optional: true '@rtsao/scc@1.1.0': {} @@ -3424,7 +3640,7 @@ snapshots: '@babel/traverse': 7.28.5 '@babel/types': 7.28.5 javascript-natural-sort: 0.7.1 - lodash-es: 4.17.21 + lodash-es: 4.17.22 minimatch: 9.0.5 parse-imports-exports: 0.2.4 prettier: 3.7.1 @@ -3454,6 +3670,8 @@ snapshots: '@types/estree@1.0.8': {} + '@types/json-schema@7.0.15': {} + '@types/json5@0.0.29': {} '@types/node@25.0.0': @@ -3468,47 +3686,47 @@ snapshots: '@types/react@19.2.4': dependencies: - csstype: 3.1.3 + csstype: 3.2.3 '@types/use-sync-external-store@0.0.6': {} - '@typescript-eslint/eslint-plugin@7.18.0(@typescript-eslint/parser@7.18.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3)': + '@typescript-eslint/eslint-plugin@7.18.0(@typescript-eslint/parser@7.18.0(eslint@8.57.0)(typescript@5.8.2))(eslint@8.57.0)(typescript@5.8.2)': dependencies: '@eslint-community/regexpp': 4.12.2 - '@typescript-eslint/parser': 7.18.0(eslint@8.57.1)(typescript@5.9.3) + '@typescript-eslint/parser': 7.18.0(eslint@8.57.0)(typescript@5.8.2) '@typescript-eslint/scope-manager': 7.18.0 - '@typescript-eslint/type-utils': 7.18.0(eslint@8.57.1)(typescript@5.9.3) - '@typescript-eslint/utils': 7.18.0(eslint@8.57.1)(typescript@5.9.3) + '@typescript-eslint/type-utils': 7.18.0(eslint@8.57.0)(typescript@5.8.2) + '@typescript-eslint/utils': 7.18.0(eslint@8.57.0)(typescript@5.8.2) '@typescript-eslint/visitor-keys': 7.18.0 - eslint: 8.57.1 + eslint: 8.57.0 graphemer: 1.4.0 ignore: 5.3.2 natural-compare: 1.4.0 - ts-api-utils: 1.4.3(typescript@5.9.3) + ts-api-utils: 1.4.3(typescript@5.8.2) optionalDependencies: - typescript: 5.9.3 + typescript: 5.8.2 transitivePeerDependencies: - supports-color - '@typescript-eslint/parser@7.18.0(eslint@8.57.1)(typescript@5.9.3)': + '@typescript-eslint/parser@7.18.0(eslint@8.57.0)(typescript@5.8.2)': dependencies: '@typescript-eslint/scope-manager': 7.18.0 '@typescript-eslint/types': 7.18.0 - '@typescript-eslint/typescript-estree': 7.18.0(typescript@5.9.3) + '@typescript-eslint/typescript-estree': 7.18.0(typescript@5.8.2) '@typescript-eslint/visitor-keys': 7.18.0 debug: 4.4.3 - eslint: 8.57.1 + eslint: 8.57.0 optionalDependencies: - typescript: 5.9.3 + typescript: 5.8.2 transitivePeerDependencies: - supports-color - '@typescript-eslint/project-service@8.50.0(typescript@5.9.3)': + '@typescript-eslint/project-service@8.50.0(typescript@5.8.2)': dependencies: - '@typescript-eslint/tsconfig-utils': 8.50.0(typescript@5.9.3) + '@typescript-eslint/tsconfig-utils': 8.50.0(typescript@5.8.2) '@typescript-eslint/types': 8.50.0 debug: 4.4.3 - typescript: 5.9.3 + typescript: 5.8.2 transitivePeerDependencies: - supports-color @@ -3522,19 +3740,19 @@ snapshots: '@typescript-eslint/types': 8.50.0 '@typescript-eslint/visitor-keys': 8.50.0 - '@typescript-eslint/tsconfig-utils@8.50.0(typescript@5.9.3)': + '@typescript-eslint/tsconfig-utils@8.50.0(typescript@5.8.2)': dependencies: - typescript: 5.9.3 + typescript: 5.8.2 - '@typescript-eslint/type-utils@7.18.0(eslint@8.57.1)(typescript@5.9.3)': + '@typescript-eslint/type-utils@7.18.0(eslint@8.57.0)(typescript@5.8.2)': dependencies: - '@typescript-eslint/typescript-estree': 7.18.0(typescript@5.9.3) - '@typescript-eslint/utils': 7.18.0(eslint@8.57.1)(typescript@5.9.3) + '@typescript-eslint/typescript-estree': 7.18.0(typescript@5.8.2) + '@typescript-eslint/utils': 7.18.0(eslint@8.57.0)(typescript@5.8.2) debug: 4.4.3 - eslint: 8.57.1 - ts-api-utils: 1.4.3(typescript@5.9.3) + eslint: 8.57.0 + ts-api-utils: 1.4.3(typescript@5.8.2) optionalDependencies: - typescript: 5.9.3 + typescript: 5.8.2 transitivePeerDependencies: - supports-color @@ -3542,7 +3760,7 @@ snapshots: '@typescript-eslint/types@8.50.0': {} - '@typescript-eslint/typescript-estree@7.18.0(typescript@5.9.3)': + '@typescript-eslint/typescript-estree@7.18.0(typescript@5.8.2)': dependencies: '@typescript-eslint/types': 7.18.0 '@typescript-eslint/visitor-keys': 7.18.0 @@ -3551,46 +3769,46 @@ snapshots: is-glob: 4.0.3 minimatch: 9.0.5 semver: 7.7.3 - ts-api-utils: 1.4.3(typescript@5.9.3) + ts-api-utils: 1.4.3(typescript@5.8.2) optionalDependencies: - typescript: 5.9.3 + typescript: 5.8.2 transitivePeerDependencies: - supports-color - '@typescript-eslint/typescript-estree@8.50.0(typescript@5.9.3)': + '@typescript-eslint/typescript-estree@8.50.0(typescript@5.8.2)': dependencies: - '@typescript-eslint/project-service': 8.50.0(typescript@5.9.3) - '@typescript-eslint/tsconfig-utils': 8.50.0(typescript@5.9.3) + '@typescript-eslint/project-service': 8.50.0(typescript@5.8.2) + '@typescript-eslint/tsconfig-utils': 8.50.0(typescript@5.8.2) '@typescript-eslint/types': 8.50.0 '@typescript-eslint/visitor-keys': 8.50.0 debug: 4.4.3 minimatch: 9.0.5 semver: 7.7.3 tinyglobby: 0.2.15 - ts-api-utils: 2.1.0(typescript@5.9.3) - typescript: 5.9.3 + ts-api-utils: 2.1.0(typescript@5.8.2) + typescript: 5.8.2 transitivePeerDependencies: - supports-color - '@typescript-eslint/utils@7.18.0(eslint@8.57.1)(typescript@5.9.3)': + '@typescript-eslint/utils@7.18.0(eslint@8.57.0)(typescript@5.8.2)': dependencies: - '@eslint-community/eslint-utils': 4.9.0(eslint@8.57.1) + '@eslint-community/eslint-utils': 4.9.0(eslint@8.57.0) '@typescript-eslint/scope-manager': 7.18.0 '@typescript-eslint/types': 7.18.0 - '@typescript-eslint/typescript-estree': 7.18.0(typescript@5.9.3) - eslint: 8.57.1 + '@typescript-eslint/typescript-estree': 7.18.0(typescript@5.8.2) + eslint: 8.57.0 transitivePeerDependencies: - supports-color - typescript - '@typescript-eslint/utils@8.50.0(eslint@8.57.1)(typescript@5.9.3)': + '@typescript-eslint/utils@8.50.0(eslint@8.57.0)(typescript@5.8.2)': dependencies: - '@eslint-community/eslint-utils': 4.9.0(eslint@8.57.1) + '@eslint-community/eslint-utils': 4.9.0(eslint@8.57.0) '@typescript-eslint/scope-manager': 8.50.0 '@typescript-eslint/types': 8.50.0 - '@typescript-eslint/typescript-estree': 8.50.0(typescript@5.9.3) - eslint: 8.57.1 - typescript: 5.9.3 + '@typescript-eslint/typescript-estree': 8.50.0(typescript@5.8.2) + eslint: 8.57.0 + typescript: 5.8.2 transitivePeerDependencies: - supports-color @@ -3606,7 +3824,7 @@ snapshots: '@ungap/structured-clone@1.3.0': {} - '@vitejs/plugin-react@5.1.0(vite@7.3.0(@types/node@25.0.0)(lightningcss@1.30.2)(sugarss@5.0.1(postcss@8.5.6)))': + '@vitejs/plugin-react@5.1.0(vite@7.3.0(@types/node@25.0.0)(jiti@2.6.1)(lightningcss@1.30.2)(sugarss@5.0.1(postcss@8.5.0)))': dependencies: '@babel/core': 7.28.5 '@babel/plugin-transform-react-jsx-self': 7.27.1(@babel/core@7.28.5) @@ -3614,7 +3832,7 @@ snapshots: '@rolldown/pluginutils': 1.0.0-beta.43 '@types/babel__core': 7.20.5 react-refresh: 0.18.0 - vite: 7.3.0(@types/node@25.0.0)(lightningcss@1.30.2)(sugarss@5.0.1(postcss@8.5.6)) + vite: 7.3.0(@types/node@25.0.0)(jiti@2.6.1)(lightningcss@1.30.2)(sugarss@5.0.1(postcss@8.5.0)) transitivePeerDependencies: - supports-color @@ -3631,6 +3849,8 @@ snapshots: json-schema-traverse: 0.4.1 uri-js: 4.4.1 + ansi-colors@4.1.3: {} + ansi-escapes@7.2.0: dependencies: environment: 1.1.0 @@ -3649,7 +3869,9 @@ snapshots: argparse@2.0.1: {} - aria-query@5.3.2: {} + aria-query@5.1.3: + dependencies: + deep-equal: 2.2.3 array-buffer-byte-length@1.0.2: dependencies: @@ -3661,7 +3883,7 @@ snapshots: call-bind: 1.0.8 call-bound: 1.0.4 define-properties: 1.2.1 - es-abstract: 1.24.0 + es-abstract: 1.24.1 es-object-atoms: 1.1.1 get-intrinsic: 1.3.0 is-string: 1.1.1 @@ -3673,7 +3895,7 @@ snapshots: dependencies: call-bind: 1.0.8 define-properties: 1.2.1 - es-abstract: 1.24.0 + es-abstract: 1.24.1 es-errors: 1.3.0 es-object-atoms: 1.1.1 es-shim-unscopables: 1.1.0 @@ -3683,7 +3905,7 @@ snapshots: call-bind: 1.0.8 call-bound: 1.0.4 define-properties: 1.2.1 - es-abstract: 1.24.0 + es-abstract: 1.24.1 es-errors: 1.3.0 es-object-atoms: 1.1.1 es-shim-unscopables: 1.1.0 @@ -3692,21 +3914,21 @@ snapshots: dependencies: call-bind: 1.0.8 define-properties: 1.2.1 - es-abstract: 1.24.0 + es-abstract: 1.24.1 es-shim-unscopables: 1.1.0 array.prototype.flatmap@1.3.3: dependencies: call-bind: 1.0.8 define-properties: 1.2.1 - es-abstract: 1.24.0 + es-abstract: 1.24.1 es-shim-unscopables: 1.1.0 array.prototype.tosorted@1.1.4: dependencies: call-bind: 1.0.8 define-properties: 1.2.1 - es-abstract: 1.24.0 + es-abstract: 1.24.1 es-errors: 1.3.0 es-shim-unscopables: 1.1.0 @@ -3715,7 +3937,7 @@ snapshots: array-buffer-byte-length: 1.0.2 call-bind: 1.0.8 define-properties: 1.2.1 - es-abstract: 1.24.0 + es-abstract: 1.24.1 es-errors: 1.3.0 get-intrinsic: 1.3.0 is-array-buffer: 3.0.5 @@ -3734,10 +3956,10 @@ snapshots: axe-core@4.11.0: {} - axios@1.13.2: + axios@1.13.0: dependencies: follow-redirects: 1.15.11 - form-data: 4.0.4 + form-data: 4.0.5 proxy-from-env: 1.1.0 transitivePeerDependencies: - debug @@ -3752,7 +3974,7 @@ snapshots: balanced-match@1.0.2: {} - baseline-browser-mapping@2.8.26: {} + baseline-browser-mapping@2.9.11: {} brace-expansion@1.1.12: dependencies: @@ -3767,16 +3989,35 @@ snapshots: dependencies: fill-range: 7.1.1 - browserslist@4.28.0: + browserslist@4.28.1: dependencies: - baseline-browser-mapping: 2.8.26 - caniuse-lite: 1.0.30001754 - electron-to-chromium: 1.5.250 + baseline-browser-mapping: 2.9.11 + caniuse-lite: 1.0.30001761 + electron-to-chromium: 1.5.267 node-releases: 2.0.27 - update-browserslist-db: 1.1.4(browserslist@4.28.0) + update-browserslist-db: 1.2.3(browserslist@4.28.1) buffer-from@0.1.2: {} + bundle-name@4.1.0: + dependencies: + run-applescript: 7.1.0 + + c12@3.3.2: + dependencies: + chokidar: 4.0.3 + confbox: 0.2.2 + defu: 6.1.4 + dotenv: 17.2.3 + exsolve: 1.0.8 + giget: 2.0.0 + jiti: 2.6.1 + ohash: 2.0.11 + pathe: 2.0.3 + perfect-debounce: 2.0.0 + pkg-types: 2.3.0 + rc9: 2.1.2 + call-bind-apply-helpers@1.0.2: dependencies: es-errors: 1.3.0 @@ -3798,7 +4039,7 @@ snapshots: camelcase-css@2.0.1: {} - caniuse-lite@1.0.30001754: {} + caniuse-lite@1.0.30001761: {} chalk@4.1.2: dependencies: @@ -3809,6 +4050,14 @@ snapshots: char-regex@1.0.2: {} + chokidar@4.0.3: + dependencies: + readdirp: 4.1.2 + + citty@0.1.6: + dependencies: + consola: 3.4.2 + cli-highlight@2.1.11: dependencies: chalk: 4.1.2 @@ -3838,14 +4087,22 @@ snapshots: color-name@1.1.4: {} + color-support@1.1.3: {} + combined-stream@1.0.8: dependencies: delayed-stream: 1.0.0 + commander@14.0.2: {} + concat-map@0.0.1: {} + confbox@0.2.2: {} + confusing-browser-globals@1.0.11: {} + consola@3.4.2: {} + convert-source-map@1.9.0: {} convert-source-map@2.0.0: {} @@ -3880,7 +4137,7 @@ snapshots: cssesc@3.0.0: {} - csstype@3.1.3: {} + csstype@3.2.3: {} damerau-levenshtein@1.0.8: {} @@ -3904,7 +4161,7 @@ snapshots: date-fns@4.1.0: {} - dayjs@1.11.19: {} + dayjs@1.11.10: {} debug@3.2.7: dependencies: @@ -3914,24 +4171,58 @@ snapshots: dependencies: ms: 2.1.3 + deep-equal@2.2.3: + dependencies: + array-buffer-byte-length: 1.0.2 + call-bind: 1.0.8 + es-get-iterator: 1.1.3 + get-intrinsic: 1.3.0 + is-arguments: 1.2.0 + is-array-buffer: 3.0.5 + is-date-object: 1.1.0 + is-regex: 1.2.1 + is-shared-array-buffer: 1.0.4 + isarray: 2.0.5 + object-is: 1.1.6 + object-keys: 1.1.1 + object.assign: 4.1.7 + regexp.prototype.flags: 1.5.4 + side-channel: 1.1.0 + which-boxed-primitive: 1.1.1 + which-collection: 1.0.2 + which-typed-array: 1.1.19 + deep-is@0.1.4: {} + default-browser-id@5.0.1: {} + + default-browser@5.4.0: + dependencies: + bundle-name: 4.1.0 + default-browser-id: 5.0.1 + define-data-property@1.1.4: dependencies: es-define-property: 1.0.1 es-errors: 1.3.0 gopd: 1.2.0 + define-lazy-prop@3.0.0: {} + define-properties@1.2.1: dependencies: define-data-property: 1.1.4 has-property-descriptors: 1.0.2 object-keys: 1.1.1 + defu@6.1.4: {} + delayed-stream@1.0.0: {} dequal@2.0.3: {} + destr@2.0.5: {} + detect-libc@2.1.2: optional: true @@ -3952,11 +4243,13 @@ snapshots: dom-helpers@5.2.1: dependencies: '@babel/runtime': 7.28.4 - csstype: 3.1.3 + csstype: 3.2.3 dot-prop@10.1.0: dependencies: - type-fest: 5.2.0 + type-fest: 5.3.1 + + dotenv@17.2.3: {} dunder-proto@1.0.1: dependencies: @@ -3970,7 +4263,7 @@ snapshots: eastasianwidth@0.2.0: {} - electron-to-chromium@1.5.250: {} + electron-to-chromium@1.5.267: {} emoji-regex@8.0.0: {} @@ -3984,7 +4277,7 @@ snapshots: dependencies: is-arrayish: 0.2.1 - es-abstract@1.24.0: + es-abstract@1.24.1: dependencies: array-buffer-byte-length: 1.0.2 arraybuffer.prototype.slice: 1.0.4 @@ -4045,12 +4338,24 @@ snapshots: es-errors@1.3.0: {} - es-iterator-helpers@1.2.1: + es-get-iterator@1.1.3: + dependencies: + call-bind: 1.0.8 + get-intrinsic: 1.3.0 + has-symbols: 1.1.0 + is-arguments: 1.2.0 + is-map: 2.0.3 + is-set: 2.0.3 + is-string: 1.1.1 + isarray: 2.0.5 + stop-iteration-iterator: 1.1.0 + + es-iterator-helpers@1.2.2: dependencies: call-bind: 1.0.8 call-bound: 1.0.4 define-properties: 1.2.1 - es-abstract: 1.24.0 + es-abstract: 1.24.1 es-errors: 1.3.0 es-set-tostringtag: 2.1.0 function-bind: 1.1.2 @@ -4085,79 +4390,79 @@ snapshots: is-date-object: 1.1.0 is-symbol: 1.1.1 - esbuild@0.27.1: + esbuild@0.27.2: optionalDependencies: - '@esbuild/aix-ppc64': 0.27.1 - '@esbuild/android-arm': 0.27.1 - '@esbuild/android-arm64': 0.27.1 - '@esbuild/android-x64': 0.27.1 - '@esbuild/darwin-arm64': 0.27.1 - '@esbuild/darwin-x64': 0.27.1 - '@esbuild/freebsd-arm64': 0.27.1 - '@esbuild/freebsd-x64': 0.27.1 - '@esbuild/linux-arm': 0.27.1 - '@esbuild/linux-arm64': 0.27.1 - '@esbuild/linux-ia32': 0.27.1 - '@esbuild/linux-loong64': 0.27.1 - '@esbuild/linux-mips64el': 0.27.1 - '@esbuild/linux-ppc64': 0.27.1 - '@esbuild/linux-riscv64': 0.27.1 - '@esbuild/linux-s390x': 0.27.1 - '@esbuild/linux-x64': 0.27.1 - '@esbuild/netbsd-arm64': 0.27.1 - '@esbuild/netbsd-x64': 0.27.1 - '@esbuild/openbsd-arm64': 0.27.1 - '@esbuild/openbsd-x64': 0.27.1 - '@esbuild/openharmony-arm64': 0.27.1 - '@esbuild/sunos-x64': 0.27.1 - '@esbuild/win32-arm64': 0.27.1 - '@esbuild/win32-ia32': 0.27.1 - '@esbuild/win32-x64': 0.27.1 + '@esbuild/aix-ppc64': 0.27.2 + '@esbuild/android-arm': 0.27.2 + '@esbuild/android-arm64': 0.27.2 + '@esbuild/android-x64': 0.27.2 + '@esbuild/darwin-arm64': 0.27.2 + '@esbuild/darwin-x64': 0.27.2 + '@esbuild/freebsd-arm64': 0.27.2 + '@esbuild/freebsd-x64': 0.27.2 + '@esbuild/linux-arm': 0.27.2 + '@esbuild/linux-arm64': 0.27.2 + '@esbuild/linux-ia32': 0.27.2 + '@esbuild/linux-loong64': 0.27.2 + '@esbuild/linux-mips64el': 0.27.2 + '@esbuild/linux-ppc64': 0.27.2 + '@esbuild/linux-riscv64': 0.27.2 + '@esbuild/linux-s390x': 0.27.2 + '@esbuild/linux-x64': 0.27.2 + '@esbuild/netbsd-arm64': 0.27.2 + '@esbuild/netbsd-x64': 0.27.2 + '@esbuild/openbsd-arm64': 0.27.2 + '@esbuild/openbsd-x64': 0.27.2 + '@esbuild/openharmony-arm64': 0.27.2 + '@esbuild/sunos-x64': 0.27.2 + '@esbuild/win32-arm64': 0.27.2 + '@esbuild/win32-ia32': 0.27.2 + '@esbuild/win32-x64': 0.27.2 escalade@3.2.0: {} escape-string-regexp@4.0.0: {} - eslint-config-airbnb-base@15.0.0(eslint-plugin-import@2.32.0(@typescript-eslint/parser@7.18.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1))(eslint@8.57.1): + eslint-config-airbnb-base@15.0.0(eslint-plugin-import@2.32.0(@typescript-eslint/parser@7.18.0(eslint@8.57.0)(typescript@5.8.2))(eslint@8.57.0))(eslint@8.57.0): dependencies: confusing-browser-globals: 1.0.11 - eslint: 8.57.1 - eslint-plugin-import: 2.32.0(@typescript-eslint/parser@7.18.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1) + eslint: 8.57.0 + eslint-plugin-import: 2.32.0(@typescript-eslint/parser@7.18.0(eslint@8.57.0)(typescript@5.8.2))(eslint@8.57.0) object.assign: 4.1.7 object.entries: 1.1.9 semver: 6.3.1 - eslint-config-airbnb-typescript@18.0.0(@typescript-eslint/eslint-plugin@7.18.0(@typescript-eslint/parser@7.18.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(@typescript-eslint/parser@7.18.0(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(@typescript-eslint/parser@7.18.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1))(eslint@8.57.1): + eslint-config-airbnb-typescript@18.0.0(@typescript-eslint/eslint-plugin@7.18.0(@typescript-eslint/parser@7.18.0(eslint@8.57.0)(typescript@5.8.2))(eslint@8.57.0)(typescript@5.8.2))(@typescript-eslint/parser@7.18.0(eslint@8.57.0)(typescript@5.8.2))(eslint-plugin-import@2.32.0(@typescript-eslint/parser@7.18.0(eslint@8.57.0)(typescript@5.8.2))(eslint@8.57.0))(eslint@8.57.0): dependencies: - '@typescript-eslint/eslint-plugin': 7.18.0(@typescript-eslint/parser@7.18.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) - '@typescript-eslint/parser': 7.18.0(eslint@8.57.1)(typescript@5.9.3) - eslint: 8.57.1 - eslint-config-airbnb-base: 15.0.0(eslint-plugin-import@2.32.0(@typescript-eslint/parser@7.18.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1))(eslint@8.57.1) + '@typescript-eslint/eslint-plugin': 7.18.0(@typescript-eslint/parser@7.18.0(eslint@8.57.0)(typescript@5.8.2))(eslint@8.57.0)(typescript@5.8.2) + '@typescript-eslint/parser': 7.18.0(eslint@8.57.0)(typescript@5.8.2) + eslint: 8.57.0 + eslint-config-airbnb-base: 15.0.0(eslint-plugin-import@2.32.0(@typescript-eslint/parser@7.18.0(eslint@8.57.0)(typescript@5.8.2))(eslint@8.57.0))(eslint@8.57.0) transitivePeerDependencies: - eslint-plugin-import - eslint-config-airbnb@19.0.4(eslint-plugin-import@2.32.0(@typescript-eslint/parser@7.18.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1))(eslint-plugin-jsx-a11y@6.10.2(eslint@8.57.1))(eslint-plugin-react-hooks@4.6.2(eslint@8.57.1))(eslint-plugin-react@7.37.5(eslint@8.57.1))(eslint@8.57.1): + eslint-config-airbnb@19.0.4(eslint-plugin-import@2.32.0(@typescript-eslint/parser@7.18.0(eslint@8.57.0)(typescript@5.8.2))(eslint@8.57.0))(eslint-plugin-jsx-a11y@6.10.0(eslint@8.57.0))(eslint-plugin-react-hooks@4.6.0(eslint@8.57.0))(eslint-plugin-react@7.37.0(eslint@8.57.0))(eslint@8.57.0): dependencies: - eslint: 8.57.1 - eslint-config-airbnb-base: 15.0.0(eslint-plugin-import@2.32.0(@typescript-eslint/parser@7.18.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1))(eslint@8.57.1) - eslint-plugin-import: 2.32.0(@typescript-eslint/parser@7.18.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1) - eslint-plugin-jsx-a11y: 6.10.2(eslint@8.57.1) - eslint-plugin-react: 7.37.5(eslint@8.57.1) - eslint-plugin-react-hooks: 4.6.2(eslint@8.57.1) + eslint: 8.57.0 + eslint-config-airbnb-base: 15.0.0(eslint-plugin-import@2.32.0(@typescript-eslint/parser@7.18.0(eslint@8.57.0)(typescript@5.8.2))(eslint@8.57.0))(eslint@8.57.0) + eslint-plugin-import: 2.32.0(@typescript-eslint/parser@7.18.0(eslint@8.57.0)(typescript@5.8.2))(eslint@8.57.0) + eslint-plugin-jsx-a11y: 6.10.0(eslint@8.57.0) + eslint-plugin-react: 7.37.0(eslint@8.57.0) + eslint-plugin-react-hooks: 4.6.0(eslint@8.57.0) object.assign: 4.1.7 object.entries: 1.1.9 - eslint-config-mantine@3.2.0(8d063032ea5c01aa379c8c0aa9152aa7): + eslint-config-mantine@3.2.0(369226e26d684b17ee846247b64a20f6): dependencies: - '@typescript-eslint/eslint-plugin': 7.18.0(@typescript-eslint/parser@7.18.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) - '@typescript-eslint/parser': 7.18.0(eslint@8.57.1)(typescript@5.9.3) - eslint: 8.57.1 - eslint-config-airbnb: 19.0.4(eslint-plugin-import@2.32.0(@typescript-eslint/parser@7.18.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1))(eslint-plugin-jsx-a11y@6.10.2(eslint@8.57.1))(eslint-plugin-react-hooks@4.6.2(eslint@8.57.1))(eslint-plugin-react@7.37.5(eslint@8.57.1))(eslint@8.57.1) - eslint-config-airbnb-typescript: 18.0.0(@typescript-eslint/eslint-plugin@7.18.0(@typescript-eslint/parser@7.18.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3))(@typescript-eslint/parser@7.18.0(eslint@8.57.1)(typescript@5.9.3))(eslint-plugin-import@2.32.0(@typescript-eslint/parser@7.18.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1))(eslint@8.57.1) - eslint-plugin-import: 2.32.0(@typescript-eslint/parser@7.18.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1) - eslint-plugin-jsx-a11y: 6.10.2(eslint@8.57.1) - eslint-plugin-react: 7.37.5(eslint@8.57.1) - eslint-plugin-react-hooks: 4.6.2(eslint@8.57.1) + '@typescript-eslint/eslint-plugin': 7.18.0(@typescript-eslint/parser@7.18.0(eslint@8.57.0)(typescript@5.8.2))(eslint@8.57.0)(typescript@5.8.2) + '@typescript-eslint/parser': 7.18.0(eslint@8.57.0)(typescript@5.8.2) + eslint: 8.57.0 + eslint-config-airbnb: 19.0.4(eslint-plugin-import@2.32.0(@typescript-eslint/parser@7.18.0(eslint@8.57.0)(typescript@5.8.2))(eslint@8.57.0))(eslint-plugin-jsx-a11y@6.10.0(eslint@8.57.0))(eslint-plugin-react-hooks@4.6.0(eslint@8.57.0))(eslint-plugin-react@7.37.0(eslint@8.57.0))(eslint@8.57.0) + eslint-config-airbnb-typescript: 18.0.0(@typescript-eslint/eslint-plugin@7.18.0(@typescript-eslint/parser@7.18.0(eslint@8.57.0)(typescript@5.8.2))(eslint@8.57.0)(typescript@5.8.2))(@typescript-eslint/parser@7.18.0(eslint@8.57.0)(typescript@5.8.2))(eslint-plugin-import@2.32.0(@typescript-eslint/parser@7.18.0(eslint@8.57.0)(typescript@5.8.2))(eslint@8.57.0))(eslint@8.57.0) + eslint-plugin-import: 2.32.0(@typescript-eslint/parser@7.18.0(eslint@8.57.0)(typescript@5.8.2))(eslint@8.57.0) + eslint-plugin-jsx-a11y: 6.10.0(eslint@8.57.0) + eslint-plugin-react: 7.37.0(eslint@8.57.0) + eslint-plugin-react-hooks: 4.6.0(eslint@8.57.0) eslint-import-resolver-node@0.3.9: dependencies: @@ -4167,17 +4472,17 @@ snapshots: transitivePeerDependencies: - supports-color - eslint-module-utils@2.12.1(@typescript-eslint/parser@7.18.0(eslint@8.57.1)(typescript@5.9.3))(eslint-import-resolver-node@0.3.9)(eslint@8.57.1): + eslint-module-utils@2.12.1(@typescript-eslint/parser@7.18.0(eslint@8.57.0)(typescript@5.8.2))(eslint-import-resolver-node@0.3.9)(eslint@8.57.0): dependencies: debug: 3.2.7 optionalDependencies: - '@typescript-eslint/parser': 7.18.0(eslint@8.57.1)(typescript@5.9.3) - eslint: 8.57.1 + '@typescript-eslint/parser': 7.18.0(eslint@8.57.0)(typescript@5.8.2) + eslint: 8.57.0 eslint-import-resolver-node: 0.3.9 transitivePeerDependencies: - supports-color - eslint-plugin-import@2.32.0(@typescript-eslint/parser@7.18.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1): + eslint-plugin-import@2.32.0(@typescript-eslint/parser@7.18.0(eslint@8.57.0)(typescript@5.8.2))(eslint@8.57.0): dependencies: '@rtsao/scc': 1.1.0 array-includes: 3.1.9 @@ -4186,9 +4491,9 @@ snapshots: array.prototype.flatmap: 1.3.3 debug: 3.2.7 doctrine: 2.1.0 - eslint: 8.57.1 + eslint: 8.57.0 eslint-import-resolver-node: 0.3.9 - eslint-module-utils: 2.12.1(@typescript-eslint/parser@7.18.0(eslint@8.57.1)(typescript@5.9.3))(eslint-import-resolver-node@0.3.9)(eslint@8.57.1) + eslint-module-utils: 2.12.1(@typescript-eslint/parser@7.18.0(eslint@8.57.0)(typescript@5.8.2))(eslint-import-resolver-node@0.3.9)(eslint@8.57.0) hasown: 2.0.2 is-core-module: 2.16.1 is-glob: 4.0.3 @@ -4200,15 +4505,15 @@ snapshots: string.prototype.trimend: 1.0.9 tsconfig-paths: 3.15.0 optionalDependencies: - '@typescript-eslint/parser': 7.18.0(eslint@8.57.1)(typescript@5.9.3) + '@typescript-eslint/parser': 7.18.0(eslint@8.57.0)(typescript@5.8.2) transitivePeerDependencies: - eslint-import-resolver-typescript - eslint-import-resolver-webpack - supports-color - eslint-plugin-jsx-a11y@6.10.2(eslint@8.57.1): + eslint-plugin-jsx-a11y@6.10.0(eslint@8.57.0): dependencies: - aria-query: 5.3.2 + aria-query: 5.1.3 array-includes: 3.1.9 array.prototype.flatmap: 1.3.3 ast-types-flow: 0.0.8 @@ -4216,7 +4521,8 @@ snapshots: axobject-query: 4.1.0 damerau-levenshtein: 1.0.8 emoji-regex: 9.2.2 - eslint: 8.57.1 + es-iterator-helpers: 1.2.2 + eslint: 8.57.0 hasown: 2.0.2 jsx-ast-utils: 3.3.5 language-tags: 1.0.9 @@ -4225,19 +4531,19 @@ snapshots: safe-regex-test: 1.1.0 string.prototype.includes: 2.0.1 - eslint-plugin-react-hooks@4.6.2(eslint@8.57.1): + eslint-plugin-react-hooks@4.6.0(eslint@8.57.0): dependencies: - eslint: 8.57.1 + eslint: 8.57.0 - eslint-plugin-react@7.37.5(eslint@8.57.1): + eslint-plugin-react@7.37.0(eslint@8.57.0): dependencies: array-includes: 3.1.9 array.prototype.findlast: 1.2.5 array.prototype.flatmap: 1.3.3 array.prototype.tosorted: 1.1.4 doctrine: 2.1.0 - es-iterator-helpers: 1.2.1 - eslint: 8.57.1 + es-iterator-helpers: 1.2.2 + eslint: 8.57.0 estraverse: 5.3.0 hasown: 2.0.2 jsx-ast-utils: 3.3.5 @@ -4251,11 +4557,11 @@ snapshots: string.prototype.matchall: 4.0.12 string.prototype.repeat: 1.0.0 - eslint-plugin-testing-library@7.15.1(eslint@8.57.1)(typescript@5.9.3): + eslint-plugin-testing-library@7.15.1(eslint@8.57.0)(typescript@5.8.2): dependencies: '@typescript-eslint/scope-manager': 8.50.0 - '@typescript-eslint/utils': 8.50.0(eslint@8.57.1)(typescript@5.9.3) - eslint: 8.57.1 + '@typescript-eslint/utils': 8.50.0(eslint@8.57.0)(typescript@5.8.2) + eslint: 8.57.0 transitivePeerDependencies: - supports-color - typescript @@ -4269,13 +4575,13 @@ snapshots: eslint-visitor-keys@4.2.1: {} - eslint@8.57.1: + eslint@8.57.0: dependencies: - '@eslint-community/eslint-utils': 4.9.0(eslint@8.57.1) + '@eslint-community/eslint-utils': 4.9.0(eslint@8.57.0) '@eslint-community/regexpp': 4.12.2 '@eslint/eslintrc': 2.1.4 - '@eslint/js': 8.57.1 - '@humanwhocodes/config-array': 0.13.0 + '@eslint/js': 8.57.0 + '@humanwhocodes/config-array': 0.11.14 '@humanwhocodes/module-importer': 1.0.1 '@nodelib/fs.walk': 1.2.8 '@ungap/structured-clone': 1.3.0 @@ -4300,7 +4606,7 @@ snapshots: imurmurhash: 0.1.4 is-glob: 4.0.3 is-path-inside: 3.0.3 - js-yaml: 4.1.0 + js-yaml: 4.1.1 json-stable-stringify-without-jsonify: 1.0.1 levn: 0.4.1 lodash.merge: 4.6.2 @@ -4330,6 +4636,8 @@ snapshots: esutils@2.0.3: {} + exsolve@1.0.8: {} + fast-deep-equal@3.1.3: {} fast-glob@3.3.3: @@ -4390,7 +4698,7 @@ snapshots: cross-spawn: 7.0.6 signal-exit: 4.1.0 - form-data@4.0.4: + form-data@4.0.5: dependencies: asynckit: 0.4.0 combined-stream: 1.0.8 @@ -4448,6 +4756,15 @@ snapshots: es-errors: 1.3.0 get-intrinsic: 1.3.0 + giget@2.0.0: + dependencies: + citty: 0.1.6 + consola: 3.4.2 + defu: 6.1.4 + node-fetch-native: 1.6.7 + nypm: 0.6.2 + pathe: 2.0.3 + glob-parent@5.1.2: dependencies: is-glob: 4.0.3 @@ -4456,7 +4773,7 @@ snapshots: dependencies: is-glob: 4.0.3 - glob@11.0.3: + glob@11.1.0: dependencies: foreground-child: 3.3.1 jackspeak: 4.1.1 @@ -4546,11 +4863,11 @@ snapshots: transitivePeerDependencies: - encoding - i18next@25.7.1(typescript@5.9.3): + i18next@25.7.1(typescript@5.8.2): dependencies: '@babel/runtime': 7.28.4 optionalDependencies: - typescript: 5.9.3 + typescript: 5.8.2 ignore@5.3.2: {} @@ -4574,6 +4891,11 @@ snapshots: hasown: 2.0.2 side-channel: 1.1.0 + is-arguments@1.2.0: + dependencies: + call-bound: 1.0.4 + has-tostringtag: 1.0.2 + is-array-buffer@3.0.5: dependencies: call-bind: 1.0.8 @@ -4616,6 +4938,8 @@ snapshots: call-bound: 1.0.4 has-tostringtag: 1.0.2 + is-docker@3.0.0: {} + is-extglob@2.1.1: {} is-finalizationregistry@1.1.1: @@ -4636,6 +4960,12 @@ snapshots: dependencies: is-extglob: 2.1.1 + is-in-ssh@1.0.0: {} + + is-inside-container@1.0.0: + dependencies: + is-docker: 3.0.0 + is-map@2.0.3: {} is-negative-zero@2.0.3: {} @@ -4688,6 +5018,10 @@ snapshots: call-bound: 1.0.4 get-intrinsic: 1.3.0 + is-wsl@3.1.0: + dependencies: + is-inside-container: 1.0.0 + isarray@0.0.1: {} isarray@1.0.0: {} @@ -4711,9 +5045,11 @@ snapshots: javascript-natural-sort@0.7.1: {} + jiti@2.6.1: {} + js-tokens@4.0.0: {} - js-yaml@4.1.0: + js-yaml@4.1.1: dependencies: argparse: 2.0.1 @@ -4813,15 +5149,17 @@ snapshots: dependencies: p-locate: 5.0.0 - lodash-es@4.17.21: {} + lodash-es@4.17.22: {} lodash.merge@4.6.2: {} + lodash@4.17.21: {} + loose-envify@1.4.0: dependencies: js-tokens: 4.0.0 - lru-cache@11.2.2: {} + lru-cache@11.2.4: {} lru-cache@5.1.1: dependencies: @@ -4895,6 +5233,8 @@ snapshots: emojilib: 2.4.0 skin-tone: 2.0.0 + node-fetch-native@1.6.7: {} + node-fetch@2.7.0: dependencies: whatwg-url: 5.0.0 @@ -4908,10 +5248,23 @@ snapshots: optionalDependencies: react-router: 7.11.0(react-dom@19.2.0(react@19.2.0))(react@19.2.0) + nypm@0.6.2: + dependencies: + citty: 0.1.6 + consola: 3.4.2 + pathe: 2.0.3 + pkg-types: 2.3.0 + tinyexec: 1.0.2 + object-assign@4.1.1: {} object-inspect@1.13.4: {} + object-is@1.1.6: + dependencies: + call-bind: 1.0.8 + define-properties: 1.2.1 + object-keys@0.4.0: {} object-keys@1.1.1: {} @@ -4936,14 +5289,14 @@ snapshots: dependencies: call-bind: 1.0.8 define-properties: 1.2.1 - es-abstract: 1.24.0 + es-abstract: 1.24.1 es-object-atoms: 1.1.1 object.groupby@1.0.3: dependencies: call-bind: 1.0.8 define-properties: 1.2.1 - es-abstract: 1.24.0 + es-abstract: 1.24.1 object.values@1.2.1: dependencies: @@ -4952,10 +5305,21 @@ snapshots: define-properties: 1.2.1 es-object-atoms: 1.1.1 + ohash@2.0.11: {} + once@1.4.0: dependencies: wrappy: 1.0.2 + open@11.0.0: + dependencies: + default-browser: 5.4.0 + define-lazy-prop: 3.0.0 + is-in-ssh: 1.0.0 + is-inside-container: 1.0.0 + powershell-utils: 0.1.0 + wsl-utils: 0.3.0 + optionator@0.9.4: dependencies: deep-is: 0.1.4 @@ -5016,51 +5380,67 @@ snapshots: path-scurry@2.0.1: dependencies: - lru-cache: 11.2.2 + lru-cache: 11.2.4 minipass: 7.1.2 path-type@4.0.0: {} + pathe@2.0.3: {} + + perfect-debounce@2.0.0: {} + picocolors@1.1.1: {} picomatch@2.3.1: {} picomatch@4.0.3: {} + pkg-types@2.3.0: + dependencies: + confbox: 0.2.2 + exsolve: 1.0.8 + pathe: 2.0.3 + possible-typed-array-names@1.1.0: {} - postcss-js@4.1.0(postcss@8.5.6): + postcss-js@4.1.0(postcss@8.5.0): dependencies: camelcase-css: 2.0.1 - postcss: 8.5.6 + postcss: 8.5.0 - postcss-mixins@12.1.2(postcss@8.5.6): + postcss-mixins@12.1.2(postcss@8.5.0): dependencies: - postcss: 8.5.6 - postcss-js: 4.1.0(postcss@8.5.6) - postcss-simple-vars: 7.0.1(postcss@8.5.6) - sugarss: 5.0.1(postcss@8.5.6) + postcss: 8.5.0 + postcss-js: 4.1.0(postcss@8.5.0) + postcss-simple-vars: 7.0.1(postcss@8.5.0) + sugarss: 5.0.1(postcss@8.5.0) tinyglobby: 0.2.15 - postcss-nested@7.0.2(postcss@8.5.6): + postcss-nested@7.0.2(postcss@8.5.0): dependencies: - postcss: 8.5.6 - postcss-selector-parser: 7.1.0 + postcss: 8.5.0 + postcss-selector-parser: 7.1.1 - postcss-preset-mantine@1.18.0(postcss@8.5.6): + postcss-preset-mantine@1.18.0(postcss@8.5.0): dependencies: - postcss: 8.5.6 - postcss-mixins: 12.1.2(postcss@8.5.6) - postcss-nested: 7.0.2(postcss@8.5.6) + postcss: 8.5.0 + postcss-mixins: 12.1.2(postcss@8.5.0) + postcss-nested: 7.0.2(postcss@8.5.0) - postcss-selector-parser@7.1.0: + postcss-selector-parser@7.1.1: dependencies: cssesc: 3.0.0 util-deprecate: 1.0.2 - postcss-simple-vars@7.0.1(postcss@8.5.6): + postcss-simple-vars@7.0.1(postcss@8.5.0): dependencies: - postcss: 8.5.6 + postcss: 8.5.0 + + postcss@8.5.0: + dependencies: + nanoid: 3.3.11 + picocolors: 1.1.1 + source-map-js: 1.2.1 postcss@8.5.6: dependencies: @@ -5068,6 +5448,8 @@ snapshots: picocolors: 1.1.1 source-map-js: 1.2.1 + powershell-utils@0.1.0: {} + prelude-ls@1.2.1: {} prettier@3.7.1: {} @@ -5090,6 +5472,11 @@ snapshots: raf-schd@4.0.3: {} + rc9@2.1.2: + dependencies: + defu: 6.1.4 + destr: 2.0.5 + react-dom@19.2.0(react@19.2.0): dependencies: react: 19.2.0 @@ -5102,16 +5489,16 @@ snapshots: prop-types: 15.8.1 react: 19.2.0 - react-i18next@16.5.0(i18next@25.7.1(typescript@5.9.3))(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(typescript@5.9.3): + react-i18next@16.5.0(i18next@25.7.1(typescript@5.8.2))(react-dom@19.2.0(react@19.2.0))(react@19.2.0)(typescript@5.8.2): dependencies: '@babel/runtime': 7.28.4 html-parse-stringify: 3.0.1 - i18next: 25.7.1(typescript@5.9.3) + i18next: 25.7.1(typescript@5.8.2) react: 19.2.0 use-sync-external-store: 1.6.0(react@19.2.0) optionalDependencies: react-dom: 19.2.0(react@19.2.0) - typescript: 5.9.3 + typescript: 5.8.2 react-icons@5.5.0(react@19.2.0): dependencies: @@ -5124,7 +5511,7 @@ snapshots: react: 19.2.0 react-dom: 19.2.0(react@19.2.0) - react-qr-code@2.0.18(react@19.2.0): + react-qr-code@2.0.12(react@19.2.0): dependencies: prop-types: 15.8.1 qr.js: 0.0.0 @@ -5149,7 +5536,7 @@ snapshots: optionalDependencies: '@types/react': 19.2.4 - react-remove-scroll@2.7.1(@types/react@19.2.4)(react@19.2.0): + react-remove-scroll@2.7.2(@types/react@19.2.4)(react@19.2.0): dependencies: react: 19.2.0 react-remove-scroll-bar: 2.3.8(@types/react@19.2.4)(react@19.2.0) @@ -5213,13 +5600,15 @@ snapshots: string_decoder: 1.1.1 util-deprecate: 1.0.2 + readdirp@4.1.2: {} + redux@5.0.1: {} reflect.getprototypeof@1.0.10: dependencies: call-bind: 1.0.8 define-properties: 1.2.1 - es-abstract: 1.24.0 + es-abstract: 1.24.1 es-errors: 1.3.0 es-object-atoms: 1.1.1 get-intrinsic: 1.3.0 @@ -5257,34 +5646,36 @@ snapshots: dependencies: glob: 7.2.3 - rollup@4.53.4: + rollup@4.54.0: dependencies: '@types/estree': 1.0.8 optionalDependencies: - '@rollup/rollup-android-arm-eabi': 4.53.4 - '@rollup/rollup-android-arm64': 4.53.4 - '@rollup/rollup-darwin-arm64': 4.53.4 - '@rollup/rollup-darwin-x64': 4.53.4 - '@rollup/rollup-freebsd-arm64': 4.53.4 - '@rollup/rollup-freebsd-x64': 4.53.4 - '@rollup/rollup-linux-arm-gnueabihf': 4.53.4 - '@rollup/rollup-linux-arm-musleabihf': 4.53.4 - '@rollup/rollup-linux-arm64-gnu': 4.53.4 - '@rollup/rollup-linux-arm64-musl': 4.53.4 - '@rollup/rollup-linux-loong64-gnu': 4.53.4 - '@rollup/rollup-linux-ppc64-gnu': 4.53.4 - '@rollup/rollup-linux-riscv64-gnu': 4.53.4 - '@rollup/rollup-linux-riscv64-musl': 4.53.4 - '@rollup/rollup-linux-s390x-gnu': 4.53.4 - '@rollup/rollup-linux-x64-gnu': 4.53.4 - '@rollup/rollup-linux-x64-musl': 4.53.4 - '@rollup/rollup-openharmony-arm64': 4.53.4 - '@rollup/rollup-win32-arm64-msvc': 4.53.4 - '@rollup/rollup-win32-ia32-msvc': 4.53.4 - '@rollup/rollup-win32-x64-gnu': 4.53.4 - '@rollup/rollup-win32-x64-msvc': 4.53.4 + '@rollup/rollup-android-arm-eabi': 4.54.0 + '@rollup/rollup-android-arm64': 4.54.0 + '@rollup/rollup-darwin-arm64': 4.54.0 + '@rollup/rollup-darwin-x64': 4.54.0 + '@rollup/rollup-freebsd-arm64': 4.54.0 + '@rollup/rollup-freebsd-x64': 4.54.0 + '@rollup/rollup-linux-arm-gnueabihf': 4.54.0 + '@rollup/rollup-linux-arm-musleabihf': 4.54.0 + '@rollup/rollup-linux-arm64-gnu': 4.54.0 + '@rollup/rollup-linux-arm64-musl': 4.54.0 + '@rollup/rollup-linux-loong64-gnu': 4.54.0 + '@rollup/rollup-linux-ppc64-gnu': 4.54.0 + '@rollup/rollup-linux-riscv64-gnu': 4.54.0 + '@rollup/rollup-linux-riscv64-musl': 4.54.0 + '@rollup/rollup-linux-s390x-gnu': 4.54.0 + '@rollup/rollup-linux-x64-gnu': 4.54.0 + '@rollup/rollup-linux-x64-musl': 4.54.0 + '@rollup/rollup-openharmony-arm64': 4.54.0 + '@rollup/rollup-win32-arm64-msvc': 4.54.0 + '@rollup/rollup-win32-ia32-msvc': 4.54.0 + '@rollup/rollup-win32-x64-gnu': 4.54.0 + '@rollup/rollup-win32-x64-msvc': 4.54.0 fsevents: 2.3.3 + run-applescript@7.1.0: {} + run-parallel@1.2.0: dependencies: queue-microtask: 1.2.3 @@ -5407,14 +5798,14 @@ snapshots: dependencies: call-bind: 1.0.8 define-properties: 1.2.1 - es-abstract: 1.24.0 + es-abstract: 1.24.1 string.prototype.matchall@4.0.12: dependencies: call-bind: 1.0.8 call-bound: 1.0.4 define-properties: 1.2.1 - es-abstract: 1.24.0 + es-abstract: 1.24.1 es-errors: 1.3.0 es-object-atoms: 1.1.1 get-intrinsic: 1.3.0 @@ -5428,7 +5819,7 @@ snapshots: string.prototype.repeat@1.0.0: dependencies: define-properties: 1.2.1 - es-abstract: 1.24.0 + es-abstract: 1.24.1 string.prototype.trim@1.2.10: dependencies: @@ -5436,7 +5827,7 @@ snapshots: call-bound: 1.0.4 define-data-property: 1.1.4 define-properties: 1.2.1 - es-abstract: 1.24.0 + es-abstract: 1.24.1 es-object-atoms: 1.1.1 has-property-descriptors: 1.0.2 @@ -5473,9 +5864,9 @@ snapshots: stylis@4.2.0: {} - sugarss@5.0.1(postcss@8.5.6): + sugarss@5.0.1(postcss@8.5.0): dependencies: - postcss: 8.5.6 + postcss: 8.5.0 supports-color@7.2.0: dependencies: @@ -5488,7 +5879,7 @@ snapshots: supports-preserve-symlinks-flag@1.0.0: {} - swr@2.3.6(react@19.2.0): + swr@2.3.0(react@19.2.0): dependencies: dequal: 2.0.3 react: 19.2.0 @@ -5517,6 +5908,8 @@ snapshots: tiny-invariant@1.3.3: {} + tinyexec@1.0.2: {} + tinyglobby@0.2.15: dependencies: fdir: 6.5.0(picomatch@4.0.3) @@ -5528,13 +5921,13 @@ snapshots: tr46@0.0.3: {} - ts-api-utils@1.4.3(typescript@5.9.3): + ts-api-utils@1.4.3(typescript@5.8.2): dependencies: - typescript: 5.9.3 + typescript: 5.8.2 - ts-api-utils@2.1.0(typescript@5.9.3): + ts-api-utils@2.1.0(typescript@5.8.2): dependencies: - typescript: 5.9.3 + typescript: 5.8.2 ts-deepmerge@7.0.3: {} @@ -5555,7 +5948,7 @@ snapshots: type-fest@4.41.0: {} - type-fest@5.2.0: + type-fest@5.3.1: dependencies: tagged-tag: 1.0.0 @@ -5592,7 +5985,7 @@ snapshots: possible-typed-array-names: 1.1.0 reflect.getprototypeof: 1.0.10 - typescript@5.9.3: {} + typescript@5.8.2: {} unbox-primitive@1.1.0: dependencies: @@ -5605,9 +5998,9 @@ snapshots: unicode-emoji-modifier-base@1.0.0: {} - update-browserslist-db@1.1.4(browserslist@4.28.0): + update-browserslist-db@1.2.3(browserslist@4.28.1): dependencies: - browserslist: 4.28.0 + browserslist: 4.28.1 escalade: 3.2.0 picocolors: 1.1.1 @@ -5655,29 +6048,30 @@ snapshots: util-deprecate@1.0.2: {} - vite-plugin-i18next-loader@3.1.3(vite@7.3.0(@types/node@25.0.0)(lightningcss@1.30.2)(sugarss@5.0.1(postcss@8.5.6))): + vite-plugin-i18next-loader@3.1.3(vite@7.3.0(@types/node@25.0.0)(jiti@2.6.1)(lightningcss@1.30.2)(sugarss@5.0.1(postcss@8.5.0))): dependencies: dot-prop: 10.1.0 - glob: 11.0.3 - js-yaml: 4.1.0 + glob: 11.1.0 + js-yaml: 4.1.1 marked: 15.0.12 marked-terminal: 7.3.0(marked@15.0.12) ts-deepmerge: 7.0.3 - vite: 7.3.0(@types/node@25.0.0)(lightningcss@1.30.2)(sugarss@5.0.1(postcss@8.5.6)) + vite: 7.3.0(@types/node@25.0.0)(jiti@2.6.1)(lightningcss@1.30.2)(sugarss@5.0.1(postcss@8.5.0)) - vite@7.3.0(@types/node@25.0.0)(lightningcss@1.30.2)(sugarss@5.0.1(postcss@8.5.6)): + vite@7.3.0(@types/node@25.0.0)(jiti@2.6.1)(lightningcss@1.30.2)(sugarss@5.0.1(postcss@8.5.0)): dependencies: - esbuild: 0.27.1 + esbuild: 0.27.2 fdir: 6.5.0(picomatch@4.0.3) picomatch: 4.0.3 postcss: 8.5.6 - rollup: 4.53.4 + rollup: 4.54.0 tinyglobby: 0.2.15 optionalDependencies: '@types/node': 25.0.0 fsevents: 2.3.3 + jiti: 2.6.1 lightningcss: 1.30.2 - sugarss: 5.0.1(postcss@8.5.6) + sugarss: 5.0.1(postcss@8.5.0) void-elements@3.1.0: {} @@ -5749,6 +6143,11 @@ snapshots: wrappy@1.0.2: {} + wsl-utils@0.3.0: + dependencies: + is-wsl: 3.1.0 + powershell-utils: 0.1.0 + xtend@2.1.2: dependencies: object-keys: 0.4.0 diff --git a/frontend/src/components/brackets/courts_large.tsx b/frontend/src/components/brackets/courts_large.tsx index e34f4a057..68d0f5432 100644 --- a/frontend/src/components/brackets/courts_large.tsx +++ b/frontend/src/components/brackets/courts_large.tsx @@ -1,8 +1,8 @@ import { Center, Grid, MantineColor, useMantineTheme } from '@mantine/core'; import React from 'react'; -import { Court } from '../../interfaces/court'; import { MatchInterface } from '../../interfaces/match'; +import { Court } from '../../openapi'; import MatchLarge from './match_large'; export function CourtBadge({ name, color }: { name: string; color: MantineColor }) { diff --git a/frontend/src/components/modals/club_modal.tsx b/frontend/src/components/modals/club_modal.tsx index a6dcaf767..4caf05a1e 100644 --- a/frontend/src/components/modals/club_modal.tsx +++ b/frontend/src/components/modals/club_modal.tsx @@ -6,7 +6,7 @@ import { useState } from 'react'; import { useTranslation } from 'react-i18next'; import { SWRResponse } from 'swr'; -import { Club } from '../../interfaces/club'; +import { Club } from '../../openapi'; import { createClub, updateClub } from '../../services/club'; import SaveButton from '../buttons/save'; diff --git a/frontend/src/components/modals/tournament_modal.tsx b/frontend/src/components/modals/tournament_modal.tsx index 8a5651ca5..f0fce6539 100644 --- a/frontend/src/components/modals/tournament_modal.tsx +++ b/frontend/src/components/modals/tournament_modal.tsx @@ -16,8 +16,8 @@ import React, { useState } from 'react'; import { useTranslation } from 'react-i18next'; import { SWRResponse } from 'swr'; -import { Club } from '../../interfaces/club'; import { Tournament } from '../../interfaces/tournament'; +import { Club } from '../../openapi'; import { getBaseApiUrl, getClubs } from '../../services/adapter'; import { createTournament } from '../../services/tournament'; import SaveButton from '../buttons/save'; diff --git a/frontend/src/components/tables/clubs.tsx b/frontend/src/components/tables/clubs.tsx index 1694d75d7..3c47b4d7b 100644 --- a/frontend/src/components/tables/clubs.tsx +++ b/frontend/src/components/tables/clubs.tsx @@ -3,7 +3,7 @@ import React from 'react'; import { useTranslation } from 'react-i18next'; import { SWRResponse } from 'swr'; -import { Club } from '../../interfaces/club'; +import { Club } from '../../openapi'; import { deleteClub } from '../../services/club'; import DeleteButton from '../buttons/delete'; import ClubModal from '../modals/club_modal'; diff --git a/frontend/src/interfaces/club.tsx b/frontend/src/interfaces/club.tsx deleted file mode 100644 index bb32f53ba..000000000 --- a/frontend/src/interfaces/club.tsx +++ /dev/null @@ -1,5 +0,0 @@ -export interface Club { - id: number; - name: string; - created: string; -} diff --git a/frontend/src/interfaces/court.tsx b/frontend/src/interfaces/court.tsx deleted file mode 100644 index 2e34ee0b1..000000000 --- a/frontend/src/interfaces/court.tsx +++ /dev/null @@ -1,6 +0,0 @@ -export interface Court { - id: number; - tournament_id: number; - created: string; - name: string; -} diff --git a/frontend/src/interfaces/match.tsx b/frontend/src/interfaces/match.tsx index a0bcc343f..5fbf053d6 100644 --- a/frontend/src/interfaces/match.tsx +++ b/frontend/src/interfaces/match.tsx @@ -1,5 +1,5 @@ import { Translator } from '../components/utils/types'; -import { Court } from './court'; +import { Court } from '../openapi'; import { StageItemInput, formatStageItemInput } from './stage_item_input'; export interface MatchInterface { diff --git a/frontend/src/openapi/client.gen.ts b/frontend/src/openapi/client.gen.ts new file mode 100644 index 000000000..9682441d8 --- /dev/null +++ b/frontend/src/openapi/client.gen.ts @@ -0,0 +1,17 @@ +// This file is auto-generated by @hey-api/openapi-ts +import { type ClientOptions, type Config, createClient, createConfig } from './client'; +import type { ClientOptions as ClientOptions2 } from './types.gen'; + +/** + * The `createClientConfig()` function will be called on client initialization + * and the returned object will become the client's initial configuration. + * + * You may want to initialize your client this way instead of calling + * `setConfig()`. This is useful for example if you're using Next.js + * to ensure your client always has the correct values. + */ +export type CreateClientConfig = ( + override?: Config +) => Config & T>; + +export const client = createClient(createConfig()); diff --git a/frontend/src/openapi/client/client.gen.ts b/frontend/src/openapi/client/client.gen.ts new file mode 100644 index 000000000..722ac9106 --- /dev/null +++ b/frontend/src/openapi/client/client.gen.ts @@ -0,0 +1,154 @@ +// This file is auto-generated by @hey-api/openapi-ts +import type { AxiosError, AxiosInstance, RawAxiosRequestHeaders } from 'axios'; +import axios from 'axios'; + +import { createSseClient } from '../core/serverSentEvents.gen'; +import type { HttpMethod } from '../core/types.gen'; +import { getValidRequestBody } from '../core/utils.gen'; +import type { Client, Config, RequestOptions } from './types.gen'; +import { buildUrl, createConfig, mergeConfigs, mergeHeaders, setAuthParams } from './utils.gen'; + +export const createClient = (config: Config = {}): Client => { + let _config = mergeConfigs(createConfig(), config); + + let instance: AxiosInstance; + + if (_config.axios && !('Axios' in _config.axios)) { + instance = _config.axios; + } else { + // eslint-disable-next-line @typescript-eslint/no-unused-vars + const { auth, ...configWithoutAuth } = _config; + instance = axios.create(configWithoutAuth); + } + + const getConfig = (): Config => ({ ..._config }); + + const setConfig = (config: Config): Config => { + _config = mergeConfigs(_config, config); + instance.defaults = { + ...instance.defaults, + ..._config, + // @ts-expect-error + headers: mergeHeaders(instance.defaults.headers, _config.headers), + }; + return getConfig(); + }; + + const beforeRequest = async (options: RequestOptions) => { + const opts = { + ..._config, + ...options, + axios: options.axios ?? _config.axios ?? instance, + headers: mergeHeaders(_config.headers, options.headers), + }; + + if (opts.security) { + await setAuthParams({ + ...opts, + security: opts.security, + }); + } + + if (opts.requestValidator) { + await opts.requestValidator(opts); + } + + if (opts.body !== undefined && opts.bodySerializer) { + opts.body = opts.bodySerializer(opts.body); + } + + const url = buildUrl(opts); + + return { opts, url }; + }; + + // @ts-expect-error + const request: Client['request'] = async (options) => { + // @ts-expect-error + const { opts, url } = await beforeRequest(options); + try { + // assign Axios here for consistency with fetch + const _axios = opts.axios!; + // eslint-disable-next-line @typescript-eslint/no-unused-vars + const { auth, ...optsWithoutAuth } = opts; + const response = await _axios({ + ...optsWithoutAuth, + baseURL: '', // the baseURL is already included in `url` + data: getValidRequestBody(opts), + headers: opts.headers as RawAxiosRequestHeaders, + // let `paramsSerializer()` handle query params if it exists + params: opts.paramsSerializer ? opts.query : undefined, + url, + }); + + let { data } = response; + + if (opts.responseType === 'json') { + if (opts.responseValidator) { + await opts.responseValidator(data); + } + + if (opts.responseTransformer) { + data = await opts.responseTransformer(data); + } + } + + return { + ...response, + data: data ?? {}, + }; + } catch (error) { + const e = error as AxiosError; + if (opts.throwOnError) { + throw e; + } + // @ts-expect-error + e.error = e.response?.data ?? {}; + return e; + } + }; + + const makeMethodFn = (method: Uppercase) => (options: RequestOptions) => + request({ ...options, method }); + + const makeSseFn = (method: Uppercase) => async (options: RequestOptions) => { + const { opts, url } = await beforeRequest(options); + return createSseClient({ + ...opts, + body: opts.body as BodyInit | null | undefined, + headers: opts.headers as Record, + method, + // @ts-expect-error + signal: opts.signal, + url, + }); + }; + + return { + buildUrl, + connect: makeMethodFn('CONNECT'), + delete: makeMethodFn('DELETE'), + get: makeMethodFn('GET'), + getConfig, + head: makeMethodFn('HEAD'), + instance, + options: makeMethodFn('OPTIONS'), + patch: makeMethodFn('PATCH'), + post: makeMethodFn('POST'), + put: makeMethodFn('PUT'), + request, + setConfig, + sse: { + connect: makeSseFn('CONNECT'), + delete: makeSseFn('DELETE'), + get: makeSseFn('GET'), + head: makeSseFn('HEAD'), + options: makeSseFn('OPTIONS'), + patch: makeSseFn('PATCH'), + post: makeSseFn('POST'), + put: makeSseFn('PUT'), + trace: makeSseFn('TRACE'), + }, + trace: makeMethodFn('TRACE'), + } as Client; +}; diff --git a/frontend/src/openapi/client/index.ts b/frontend/src/openapi/client/index.ts new file mode 100644 index 000000000..7bd7b9880 --- /dev/null +++ b/frontend/src/openapi/client/index.ts @@ -0,0 +1,23 @@ +// This file is auto-generated by @hey-api/openapi-ts + +export type { Auth } from '../core/auth.gen'; +export type { QuerySerializerOptions } from '../core/bodySerializer.gen'; +export { + formDataBodySerializer, + jsonBodySerializer, + urlSearchParamsBodySerializer, +} from '../core/bodySerializer.gen'; +export { buildClientParams } from '../core/params.gen'; +export { serializeQueryKeyValue } from '../core/queryKeySerializer.gen'; +export { createClient } from './client.gen'; +export type { + Client, + ClientOptions, + Config, + CreateClientConfig, + Options, + RequestOptions, + RequestResult, + TDataShape, +} from './types.gen'; +export { createConfig } from './utils.gen'; diff --git a/frontend/src/openapi/client/types.gen.ts b/frontend/src/openapi/client/types.gen.ts new file mode 100644 index 000000000..995974b84 --- /dev/null +++ b/frontend/src/openapi/client/types.gen.ts @@ -0,0 +1,156 @@ +// This file is auto-generated by @hey-api/openapi-ts +import type { + AxiosError, + AxiosInstance, + AxiosRequestHeaders, + AxiosResponse, + AxiosStatic, + CreateAxiosDefaults, +} from 'axios'; + +import type { Auth } from '../core/auth.gen'; +import type { ServerSentEventsOptions, ServerSentEventsResult } from '../core/serverSentEvents.gen'; +import type { Client as CoreClient, Config as CoreConfig } from '../core/types.gen'; + +export interface Config + extends Omit, CoreConfig { + /** + * Axios implementation. You can use this option to provide either an + * `AxiosStatic` or an `AxiosInstance`. + * + * @default axios + */ + axios?: AxiosStatic | AxiosInstance; + /** + * Base URL for all requests made by this client. + */ + baseURL?: T['baseURL']; + /** + * An object containing any HTTP headers that you want to pre-populate your + * `Headers` object with. + * + * {@link https://developer.mozilla.org/docs/Web/API/Headers/Headers#init See more} + */ + headers?: + | AxiosRequestHeaders + | Record< + string, + string | number | boolean | (string | number | boolean)[] | null | undefined | unknown + >; + /** + * Throw an error instead of returning it in the response? + * + * @default false + */ + throwOnError?: T['throwOnError']; +} + +export interface RequestOptions< + TData = unknown, + ThrowOnError extends boolean = boolean, + Url extends string = string, +> + extends + Config<{ + throwOnError: ThrowOnError; + }>, + Pick< + ServerSentEventsOptions, + | 'onSseError' + | 'onSseEvent' + | 'sseDefaultRetryDelay' + | 'sseMaxRetryAttempts' + | 'sseMaxRetryDelay' + > { + /** + * Any body that you want to add to your request. + * + * {@link https://developer.mozilla.org/docs/Web/API/fetch#body} + */ + body?: unknown; + path?: Record; + query?: Record; + /** + * Security mechanism(s) to use for the request. + */ + security?: ReadonlyArray; + url: Url; +} + +export interface ClientOptions { + baseURL?: string; + throwOnError?: boolean; +} + +export type RequestResult< + TData = unknown, + TError = unknown, + ThrowOnError extends boolean = boolean, +> = ThrowOnError extends true + ? Promise ? TData[keyof TData] : TData>> + : Promise< + | (AxiosResponse ? TData[keyof TData] : TData> & { + error: undefined; + }) + | (AxiosError ? TError[keyof TError] : TError> & { + data: undefined; + error: TError extends Record ? TError[keyof TError] : TError; + }) + >; + +type MethodFn = ( + options: Omit, 'method'> +) => RequestResult; + +type SseFn = ( + options: Omit, 'method'> +) => Promise>; + +type RequestFn = ( + options: Omit, 'method'> & + Pick>, 'method'> +) => RequestResult; + +type BuildUrlFn = < + TData extends { + body?: unknown; + path?: Record; + query?: Record; + url: string; + }, +>( + options: TData & Options +) => string; + +export type Client = CoreClient & { + instance: AxiosInstance; +}; + +/** + * The `createClientConfig()` function will be called on client initialization + * and the returned object will become the client's initial configuration. + * + * You may want to initialize your client this way instead of calling + * `setConfig()`. This is useful for example if you're using Next.js + * to ensure your client always has the correct values. + */ +export type CreateClientConfig = ( + override?: Config +) => Config & T>; + +export interface TDataShape { + body?: unknown; + headers?: unknown; + path?: unknown; + query?: unknown; + url: string; +} + +type OmitKeys = Pick>; + +export type Options< + TData extends TDataShape = TDataShape, + ThrowOnError extends boolean = boolean, + TResponse = unknown, +> = OmitKeys, 'body' | 'path' | 'query' | 'url'> & + ([TData] extends [never] ? unknown : Omit); diff --git a/frontend/src/openapi/client/utils.gen.ts b/frontend/src/openapi/client/utils.gen.ts new file mode 100644 index 000000000..244533649 --- /dev/null +++ b/frontend/src/openapi/client/utils.gen.ts @@ -0,0 +1,207 @@ +// This file is auto-generated by @hey-api/openapi-ts +import { getAuthToken } from '../core/auth.gen'; +import type { QuerySerializerOptions } from '../core/bodySerializer.gen'; +import { + serializeArrayParam, + serializeObjectParam, + serializePrimitiveParam, +} from '../core/pathSerializer.gen'; +import { getUrl } from '../core/utils.gen'; +import type { Client, ClientOptions, Config, RequestOptions } from './types.gen'; + +export const createQuerySerializer = ({ + parameters = {}, + ...args +}: QuerySerializerOptions = {}) => { + const querySerializer = (queryParams: T) => { + const search: string[] = []; + if (queryParams && typeof queryParams === 'object') { + for (const name in queryParams) { + const value = queryParams[name]; + + if (value === undefined || value === null) { + continue; + } + + const options = parameters[name] || args; + + if (Array.isArray(value)) { + const serializedArray = serializeArrayParam({ + allowReserved: options.allowReserved, + explode: true, + name, + style: 'form', + value, + ...options.array, + }); + if (serializedArray) search.push(serializedArray); + } else if (typeof value === 'object') { + const serializedObject = serializeObjectParam({ + allowReserved: options.allowReserved, + explode: true, + name, + style: 'deepObject', + value: value as Record, + ...options.object, + }); + if (serializedObject) search.push(serializedObject); + } else { + const serializedPrimitive = serializePrimitiveParam({ + allowReserved: options.allowReserved, + name, + value: value as string, + }); + if (serializedPrimitive) search.push(serializedPrimitive); + } + } + } + return search.join('&'); + }; + return querySerializer; +}; + +const checkForExistence = ( + options: Pick & { + headers: Record; + }, + name?: string +): boolean => { + if (!name) { + return false; + } + if (name in options.headers || options.query?.[name]) { + return true; + } + if ( + 'Cookie' in options.headers && + options.headers['Cookie'] && + typeof options.headers['Cookie'] === 'string' + ) { + return options.headers['Cookie'].includes(`${name}=`); + } + return false; +}; + +export const setAuthParams = async ({ + security, + ...options +}: Pick, 'security'> & + Pick & { + headers: Record; + }) => { + for (const auth of security) { + if (checkForExistence(options, auth.name)) { + continue; + } + const token = await getAuthToken(auth, options.auth); + + if (!token) { + continue; + } + + const name = auth.name ?? 'Authorization'; + + switch (auth.in) { + case 'query': + if (!options.query) { + options.query = {}; + } + options.query[name] = token; + break; + case 'cookie': { + const value = `${name}=${token}`; + if ('Cookie' in options.headers && options.headers['Cookie']) { + options.headers['Cookie'] = `${options.headers['Cookie']}; ${value}`; + } else { + options.headers['Cookie'] = value; + } + break; + } + case 'header': + default: + options.headers[name] = token; + break; + } + } +}; + +export const buildUrl: Client['buildUrl'] = (options) => { + const instanceBaseUrl = options.axios?.defaults?.baseURL; + + const baseUrl = + !!options.baseURL && typeof options.baseURL === 'string' ? options.baseURL : instanceBaseUrl; + + return getUrl({ + baseUrl: baseUrl as string, + path: options.path, + // let `paramsSerializer()` handle query params if it exists + query: !options.paramsSerializer ? options.query : undefined, + querySerializer: + typeof options.querySerializer === 'function' + ? options.querySerializer + : createQuerySerializer(options.querySerializer), + url: options.url, + }); +}; + +export const mergeConfigs = (a: Config, b: Config): Config => { + const config = { ...a, ...b }; + config.headers = mergeHeaders(a.headers, b.headers); + return config; +}; + +/** + * Special Axios headers keywords allowing to set headers by request method. + */ +export const axiosHeadersKeywords = [ + 'common', + 'delete', + 'get', + 'head', + 'patch', + 'post', + 'put', +] as const; + +export const mergeHeaders = ( + ...headers: Array['headers'] | undefined> +): Record => { + const mergedHeaders: Record = {}; + for (const header of headers) { + if (!header || typeof header !== 'object') { + continue; + } + + const iterator = Object.entries(header); + + for (const [key, value] of iterator) { + if ( + axiosHeadersKeywords.includes(key as (typeof axiosHeadersKeywords)[number]) && + typeof value === 'object' + ) { + mergedHeaders[key] = { + ...(mergedHeaders[key] as Record), + ...value, + }; + } else if (value === null) { + delete mergedHeaders[key]; + } else if (Array.isArray(value)) { + for (const v of value) { + // @ts-expect-error + mergedHeaders[key] = [...(mergedHeaders[key] ?? []), v as string]; + } + } else if (value !== undefined) { + // assume object headers are meant to be JSON stringified, i.e. their + // content value in OpenAPI specification is 'application/json' + mergedHeaders[key] = typeof value === 'object' ? JSON.stringify(value) : (value as string); + } + } + } + return mergedHeaders; +}; + +export const createConfig = ( + override: Config & T> = {} +): Config & T> => ({ + ...override, +}); diff --git a/frontend/src/openapi/core/auth.gen.ts b/frontend/src/openapi/core/auth.gen.ts new file mode 100644 index 000000000..b55878567 --- /dev/null +++ b/frontend/src/openapi/core/auth.gen.ts @@ -0,0 +1,41 @@ +// This file is auto-generated by @hey-api/openapi-ts + +export type AuthToken = string | undefined; + +export interface Auth { + /** + * Which part of the request do we use to send the auth? + * + * @default 'header' + */ + in?: 'header' | 'query' | 'cookie'; + /** + * Header or query parameter name. + * + * @default 'Authorization' + */ + name?: string; + scheme?: 'basic' | 'bearer'; + type: 'apiKey' | 'http'; +} + +export const getAuthToken = async ( + auth: Auth, + callback: ((auth: Auth) => Promise | AuthToken) | AuthToken +): Promise => { + const token = typeof callback === 'function' ? await callback(auth) : callback; + + if (!token) { + return; + } + + if (auth.scheme === 'bearer') { + return `Bearer ${token}`; + } + + if (auth.scheme === 'basic') { + return `Basic ${btoa(token)}`; + } + + return token; +}; diff --git a/frontend/src/openapi/core/bodySerializer.gen.ts b/frontend/src/openapi/core/bodySerializer.gen.ts new file mode 100644 index 000000000..c9559d066 --- /dev/null +++ b/frontend/src/openapi/core/bodySerializer.gen.ts @@ -0,0 +1,83 @@ +// This file is auto-generated by @hey-api/openapi-ts +import type { ArrayStyle, ObjectStyle, SerializerOptions } from './pathSerializer.gen'; + +export type QuerySerializer = (query: Record) => string; + +export type BodySerializer = (body: any) => any; + +type QuerySerializerOptionsObject = { + allowReserved?: boolean; + array?: Partial>; + object?: Partial>; +}; + +export type QuerySerializerOptions = QuerySerializerOptionsObject & { + /** + * Per-parameter serialization overrides. When provided, these settings + * override the global array/object settings for specific parameter names. + */ + parameters?: Record; +}; + +const serializeFormDataPair = (data: FormData, key: string, value: unknown): void => { + if (typeof value === 'string' || value instanceof Blob) { + data.append(key, value); + } else if (value instanceof Date) { + data.append(key, value.toISOString()); + } else { + data.append(key, JSON.stringify(value)); + } +}; + +const serializeUrlSearchParamsPair = (data: URLSearchParams, key: string, value: unknown): void => { + if (typeof value === 'string') { + data.append(key, value); + } else { + data.append(key, JSON.stringify(value)); + } +}; + +export const formDataBodySerializer = { + bodySerializer: | Array>>( + body: T + ): FormData => { + const data = new FormData(); + + Object.entries(body).forEach(([key, value]) => { + if (value === undefined || value === null) { + return; + } + if (Array.isArray(value)) { + value.forEach((v) => serializeFormDataPair(data, key, v)); + } else { + serializeFormDataPair(data, key, value); + } + }); + + return data; + }, +}; + +export const jsonBodySerializer = { + bodySerializer: (body: T): string => + JSON.stringify(body, (_key, value) => (typeof value === 'bigint' ? value.toString() : value)), +}; + +export const urlSearchParamsBodySerializer = { + bodySerializer: | Array>>(body: T): string => { + const data = new URLSearchParams(); + + Object.entries(body).forEach(([key, value]) => { + if (value === undefined || value === null) { + return; + } + if (Array.isArray(value)) { + value.forEach((v) => serializeUrlSearchParamsPair(data, key, v)); + } else { + serializeUrlSearchParamsPair(data, key, value); + } + }); + + return data.toString(); + }, +}; diff --git a/frontend/src/openapi/core/params.gen.ts b/frontend/src/openapi/core/params.gen.ts new file mode 100644 index 000000000..6099cab1b --- /dev/null +++ b/frontend/src/openapi/core/params.gen.ts @@ -0,0 +1,169 @@ +// This file is auto-generated by @hey-api/openapi-ts + +type Slot = 'body' | 'headers' | 'path' | 'query'; + +export type Field = + | { + in: Exclude; + /** + * Field name. This is the name we want the user to see and use. + */ + key: string; + /** + * Field mapped name. This is the name we want to use in the request. + * If omitted, we use the same value as `key`. + */ + map?: string; + } + | { + in: Extract; + /** + * Key isn't required for bodies. + */ + key?: string; + map?: string; + } + | { + /** + * Field name. This is the name we want the user to see and use. + */ + key: string; + /** + * Field mapped name. This is the name we want to use in the request. + * If `in` is omitted, `map` aliases `key` to the transport layer. + */ + map: Slot; + }; + +export interface Fields { + allowExtra?: Partial>; + args?: ReadonlyArray; +} + +export type FieldsConfig = ReadonlyArray; + +const extraPrefixesMap: Record = { + $body_: 'body', + $headers_: 'headers', + $path_: 'path', + $query_: 'query', +}; +const extraPrefixes = Object.entries(extraPrefixesMap); + +type KeyMap = Map< + string, + | { + in: Slot; + map?: string; + } + | { + in?: never; + map: Slot; + } +>; + +const buildKeyMap = (fields: FieldsConfig, map?: KeyMap): KeyMap => { + if (!map) { + map = new Map(); + } + + for (const config of fields) { + if ('in' in config) { + if (config.key) { + map.set(config.key, { + in: config.in, + map: config.map, + }); + } + } else if ('key' in config) { + map.set(config.key, { + map: config.map, + }); + } else if (config.args) { + buildKeyMap(config.args, map); + } + } + + return map; +}; + +interface Params { + body: unknown; + headers: Record; + path: Record; + query: Record; +} + +const stripEmptySlots = (params: Params) => { + for (const [slot, value] of Object.entries(params)) { + if (value && typeof value === 'object' && !Object.keys(value).length) { + delete params[slot as Slot]; + } + } +}; + +export const buildClientParams = (args: ReadonlyArray, fields: FieldsConfig) => { + const params: Params = { + body: {}, + headers: {}, + path: {}, + query: {}, + }; + + const map = buildKeyMap(fields); + + let config: FieldsConfig[number] | undefined; + + for (const [index, arg] of args.entries()) { + if (fields[index]) { + config = fields[index]; + } + + if (!config) { + continue; + } + + if ('in' in config) { + if (config.key) { + const field = map.get(config.key)!; + const name = field.map || config.key; + if (field.in) { + (params[field.in] as Record)[name] = arg; + } + } else { + params.body = arg; + } + } else { + for (const [key, value] of Object.entries(arg ?? {})) { + const field = map.get(key); + + if (field) { + if (field.in) { + const name = field.map || key; + (params[field.in] as Record)[name] = value; + } else { + params[field.map] = value; + } + } else { + const extra = extraPrefixes.find(([prefix]) => key.startsWith(prefix)); + + if (extra) { + const [prefix, slot] = extra; + (params[slot] as Record)[key.slice(prefix.length)] = value; + } else if ('allowExtra' in config && config.allowExtra) { + for (const [slot, allowed] of Object.entries(config.allowExtra)) { + if (allowed) { + (params[slot as Slot] as Record)[key] = value; + break; + } + } + } + } + } + } + } + + stripEmptySlots(params); + + return params; +}; diff --git a/frontend/src/openapi/core/pathSerializer.gen.ts b/frontend/src/openapi/core/pathSerializer.gen.ts new file mode 100644 index 000000000..917c48375 --- /dev/null +++ b/frontend/src/openapi/core/pathSerializer.gen.ts @@ -0,0 +1,171 @@ +// This file is auto-generated by @hey-api/openapi-ts + +interface SerializeOptions extends SerializePrimitiveOptions, SerializerOptions {} + +interface SerializePrimitiveOptions { + allowReserved?: boolean; + name: string; +} + +export interface SerializerOptions { + /** + * @default true + */ + explode: boolean; + style: T; +} + +export type ArrayStyle = 'form' | 'spaceDelimited' | 'pipeDelimited'; +export type ArraySeparatorStyle = ArrayStyle | MatrixStyle; +type MatrixStyle = 'label' | 'matrix' | 'simple'; +export type ObjectStyle = 'form' | 'deepObject'; +type ObjectSeparatorStyle = ObjectStyle | MatrixStyle; + +interface SerializePrimitiveParam extends SerializePrimitiveOptions { + value: string; +} + +export const separatorArrayExplode = (style: ArraySeparatorStyle) => { + switch (style) { + case 'label': + return '.'; + case 'matrix': + return ';'; + case 'simple': + return ','; + default: + return '&'; + } +}; + +export const separatorArrayNoExplode = (style: ArraySeparatorStyle) => { + switch (style) { + case 'form': + return ','; + case 'pipeDelimited': + return '|'; + case 'spaceDelimited': + return '%20'; + default: + return ','; + } +}; + +export const separatorObjectExplode = (style: ObjectSeparatorStyle) => { + switch (style) { + case 'label': + return '.'; + case 'matrix': + return ';'; + case 'simple': + return ','; + default: + return '&'; + } +}; + +export const serializeArrayParam = ({ + allowReserved, + explode, + name, + style, + value, +}: SerializeOptions & { + value: unknown[]; +}) => { + if (!explode) { + const joinedValues = ( + allowReserved ? value : value.map((v) => encodeURIComponent(v as string)) + ).join(separatorArrayNoExplode(style)); + switch (style) { + case 'label': + return `.${joinedValues}`; + case 'matrix': + return `;${name}=${joinedValues}`; + case 'simple': + return joinedValues; + default: + return `${name}=${joinedValues}`; + } + } + + const separator = separatorArrayExplode(style); + const joinedValues = value + .map((v) => { + if (style === 'label' || style === 'simple') { + return allowReserved ? v : encodeURIComponent(v as string); + } + + return serializePrimitiveParam({ + allowReserved, + name, + value: v as string, + }); + }) + .join(separator); + return style === 'label' || style === 'matrix' ? separator + joinedValues : joinedValues; +}; + +export const serializePrimitiveParam = ({ + allowReserved, + name, + value, +}: SerializePrimitiveParam) => { + if (value === undefined || value === null) { + return ''; + } + + if (typeof value === 'object') { + throw new Error( + 'Deeply-nested arrays/objects aren’t supported. Provide your own `querySerializer()` to handle these.' + ); + } + + return `${name}=${allowReserved ? value : encodeURIComponent(value)}`; +}; + +export const serializeObjectParam = ({ + allowReserved, + explode, + name, + style, + value, + valueOnly, +}: SerializeOptions & { + value: Record | Date; + valueOnly?: boolean; +}) => { + if (value instanceof Date) { + return valueOnly ? value.toISOString() : `${name}=${value.toISOString()}`; + } + + if (style !== 'deepObject' && !explode) { + let values: string[] = []; + Object.entries(value).forEach(([key, v]) => { + values = [...values, key, allowReserved ? (v as string) : encodeURIComponent(v as string)]; + }); + const joinedValues = values.join(','); + switch (style) { + case 'form': + return `${name}=${joinedValues}`; + case 'label': + return `.${joinedValues}`; + case 'matrix': + return `;${name}=${joinedValues}`; + default: + return joinedValues; + } + } + + const separator = separatorObjectExplode(style); + const joinedValues = Object.entries(value) + .map(([key, v]) => + serializePrimitiveParam({ + allowReserved, + name: style === 'deepObject' ? `${name}[${key}]` : key, + value: v as string, + }) + ) + .join(separator); + return style === 'label' || style === 'matrix' ? separator + joinedValues : joinedValues; +}; diff --git a/frontend/src/openapi/core/queryKeySerializer.gen.ts b/frontend/src/openapi/core/queryKeySerializer.gen.ts new file mode 100644 index 000000000..5000df606 --- /dev/null +++ b/frontend/src/openapi/core/queryKeySerializer.gen.ts @@ -0,0 +1,117 @@ +// This file is auto-generated by @hey-api/openapi-ts + +/** + * JSON-friendly union that mirrors what Pinia Colada can hash. + */ +export type JsonValue = + | null + | string + | number + | boolean + | JsonValue[] + | { [key: string]: JsonValue }; + +/** + * Replacer that converts non-JSON values (bigint, Date, etc.) to safe substitutes. + */ +export const queryKeyJsonReplacer = (_key: string, value: unknown) => { + if (value === undefined || typeof value === 'function' || typeof value === 'symbol') { + return undefined; + } + if (typeof value === 'bigint') { + return value.toString(); + } + if (value instanceof Date) { + return value.toISOString(); + } + return value; +}; + +/** + * Safely stringifies a value and parses it back into a JsonValue. + */ +export const stringifyToJsonValue = (input: unknown): JsonValue | undefined => { + try { + const json = JSON.stringify(input, queryKeyJsonReplacer); + if (json === undefined) { + return undefined; + } + return JSON.parse(json) as JsonValue; + } catch { + return undefined; + } +}; + +/** + * Detects plain objects (including objects with a null prototype). + */ +const isPlainObject = (value: unknown): value is Record => { + if (value === null || typeof value !== 'object') { + return false; + } + const prototype = Object.getPrototypeOf(value as object); + return prototype === Object.prototype || prototype === null; +}; + +/** + * Turns URLSearchParams into a sorted JSON object for deterministic keys. + */ +const serializeSearchParams = (params: URLSearchParams): JsonValue => { + const entries = Array.from(params.entries()).sort(([a], [b]) => a.localeCompare(b)); + const result: Record = {}; + + for (const [key, value] of entries) { + const existing = result[key]; + if (existing === undefined) { + result[key] = value; + continue; + } + + if (Array.isArray(existing)) { + (existing as string[]).push(value); + } else { + result[key] = [existing, value]; + } + } + + return result; +}; + +/** + * Normalizes any accepted value into a JSON-friendly shape for query keys. + */ +export const serializeQueryKeyValue = (value: unknown): JsonValue | undefined => { + if (value === null) { + return null; + } + + if (typeof value === 'string' || typeof value === 'number' || typeof value === 'boolean') { + return value; + } + + if (value === undefined || typeof value === 'function' || typeof value === 'symbol') { + return undefined; + } + + if (typeof value === 'bigint') { + return value.toString(); + } + + if (value instanceof Date) { + return value.toISOString(); + } + + if (Array.isArray(value)) { + return stringifyToJsonValue(value); + } + + if (typeof URLSearchParams !== 'undefined' && value instanceof URLSearchParams) { + return serializeSearchParams(value); + } + + if (isPlainObject(value)) { + return stringifyToJsonValue(value); + } + + return undefined; +}; diff --git a/frontend/src/openapi/core/serverSentEvents.gen.ts b/frontend/src/openapi/core/serverSentEvents.gen.ts new file mode 100644 index 000000000..d56bbf3a4 --- /dev/null +++ b/frontend/src/openapi/core/serverSentEvents.gen.ts @@ -0,0 +1,242 @@ +// This file is auto-generated by @hey-api/openapi-ts +import type { Config } from './types.gen'; + +export type ServerSentEventsOptions = Omit & + Pick & { + /** + * Fetch API implementation. You can use this option to provide a custom + * fetch instance. + * + * @default globalThis.fetch + */ + fetch?: typeof fetch; + /** + * Implementing clients can call request interceptors inside this hook. + */ + onRequest?: (url: string, init: RequestInit) => Promise; + /** + * Callback invoked when a network or parsing error occurs during streaming. + * + * This option applies only if the endpoint returns a stream of events. + * + * @param error The error that occurred. + */ + onSseError?: (error: unknown) => void; + /** + * Callback invoked when an event is streamed from the server. + * + * This option applies only if the endpoint returns a stream of events. + * + * @param event Event streamed from the server. + * @returns Nothing (void). + */ + onSseEvent?: (event: StreamEvent) => void; + serializedBody?: RequestInit['body']; + /** + * Default retry delay in milliseconds. + * + * This option applies only if the endpoint returns a stream of events. + * + * @default 3000 + */ + sseDefaultRetryDelay?: number; + /** + * Maximum number of retry attempts before giving up. + */ + sseMaxRetryAttempts?: number; + /** + * Maximum retry delay in milliseconds. + * + * Applies only when exponential backoff is used. + * + * This option applies only if the endpoint returns a stream of events. + * + * @default 30000 + */ + sseMaxRetryDelay?: number; + /** + * Optional sleep function for retry backoff. + * + * Defaults to using `setTimeout`. + */ + sseSleepFn?: (ms: number) => Promise; + url: string; + }; + +export interface StreamEvent { + data: TData; + event?: string; + id?: string; + retry?: number; +} + +export type ServerSentEventsResult = { + stream: AsyncGenerator< + TData extends Record ? TData[keyof TData] : TData, + TReturn, + TNext + >; +}; + +export const createSseClient = ({ + onRequest, + onSseError, + onSseEvent, + responseTransformer, + responseValidator, + sseDefaultRetryDelay, + sseMaxRetryAttempts, + sseMaxRetryDelay, + sseSleepFn, + url, + ...options +}: ServerSentEventsOptions): ServerSentEventsResult => { + let lastEventId: string | undefined; + + const sleep = sseSleepFn ?? ((ms: number) => new Promise((resolve) => setTimeout(resolve, ms))); + + const createStream = async function* () { + let retryDelay: number = sseDefaultRetryDelay ?? 3000; + let attempt = 0; + const signal = options.signal ?? new AbortController().signal; + + while (true) { + if (signal.aborted) break; + + attempt++; + + const headers = + options.headers instanceof Headers + ? options.headers + : new Headers(options.headers as Record | undefined); + + if (lastEventId !== undefined) { + headers.set('Last-Event-ID', lastEventId); + } + + try { + const requestInit: RequestInit = { + redirect: 'follow', + ...options, + body: options.serializedBody, + headers, + signal, + }; + let request = new Request(url, requestInit); + if (onRequest) { + request = await onRequest(url, requestInit); + } + // fetch must be assigned here, otherwise it would throw the error: + // TypeError: Failed to execute 'fetch' on 'Window': Illegal invocation + const _fetch = options.fetch ?? globalThis.fetch; + const response = await _fetch(request); + + if (!response.ok) throw new Error(`SSE failed: ${response.status} ${response.statusText}`); + + if (!response.body) throw new Error('No body in SSE response'); + + const reader = response.body.pipeThrough(new TextDecoderStream()).getReader(); + + let buffer = ''; + + const abortHandler = () => { + try { + reader.cancel(); + } catch { + // noop + } + }; + + signal.addEventListener('abort', abortHandler); + + try { + while (true) { + const { done, value } = await reader.read(); + if (done) break; + buffer += value; + // Normalize line endings: CRLF -> LF, then CR -> LF + buffer = buffer.replace(/\r\n/g, '\n').replace(/\r/g, '\n'); + + const chunks = buffer.split('\n\n'); + buffer = chunks.pop() ?? ''; + + for (const chunk of chunks) { + const lines = chunk.split('\n'); + const dataLines: Array = []; + let eventName: string | undefined; + + for (const line of lines) { + if (line.startsWith('data:')) { + dataLines.push(line.replace(/^data:\s*/, '')); + } else if (line.startsWith('event:')) { + eventName = line.replace(/^event:\s*/, ''); + } else if (line.startsWith('id:')) { + lastEventId = line.replace(/^id:\s*/, ''); + } else if (line.startsWith('retry:')) { + const parsed = Number.parseInt(line.replace(/^retry:\s*/, ''), 10); + if (!Number.isNaN(parsed)) { + retryDelay = parsed; + } + } + } + + let data: unknown; + let parsedJson = false; + + if (dataLines.length) { + const rawData = dataLines.join('\n'); + try { + data = JSON.parse(rawData); + parsedJson = true; + } catch { + data = rawData; + } + } + + if (parsedJson) { + if (responseValidator) { + await responseValidator(data); + } + + if (responseTransformer) { + data = await responseTransformer(data); + } + } + + onSseEvent?.({ + data, + event: eventName, + id: lastEventId, + retry: retryDelay, + }); + + if (dataLines.length) { + yield data as any; + } + } + } + } finally { + signal.removeEventListener('abort', abortHandler); + reader.releaseLock(); + } + + break; // exit loop on normal completion + } catch (error) { + // connection failed or aborted; retry after delay + onSseError?.(error); + + if (sseMaxRetryAttempts !== undefined && attempt >= sseMaxRetryAttempts) { + break; // stop after firing error + } + + // exponential backoff: double retry each attempt, cap at 30s + const backoff = Math.min(retryDelay * 2 ** (attempt - 1), sseMaxRetryDelay ?? 30000); + await sleep(backoff); + } + } + }; + + const stream = createStream(); + + return { stream }; +}; diff --git a/frontend/src/openapi/core/types.gen.ts b/frontend/src/openapi/core/types.gen.ts new file mode 100644 index 000000000..6c331bd4d --- /dev/null +++ b/frontend/src/openapi/core/types.gen.ts @@ -0,0 +1,103 @@ +// This file is auto-generated by @hey-api/openapi-ts +import type { Auth, AuthToken } from './auth.gen'; +import type { BodySerializer, QuerySerializer, QuerySerializerOptions } from './bodySerializer.gen'; + +export type HttpMethod = + | 'connect' + | 'delete' + | 'get' + | 'head' + | 'options' + | 'patch' + | 'post' + | 'put' + | 'trace'; + +export type Client< + RequestFn = never, + Config = unknown, + MethodFn = never, + BuildUrlFn = never, + SseFn = never, +> = { + /** + * Returns the final request URL. + */ + buildUrl: BuildUrlFn; + getConfig: () => Config; + request: RequestFn; + setConfig: (config: Config) => Config; +} & { + [K in HttpMethod]: MethodFn; +} & ([SseFn] extends [never] ? { sse?: never } : { sse: { [K in HttpMethod]: SseFn } }); + +export interface Config { + /** + * Auth token or a function returning auth token. The resolved value will be + * added to the request payload as defined by its `security` array. + */ + auth?: ((auth: Auth) => Promise | AuthToken) | AuthToken; + /** + * A function for serializing request body parameter. By default, + * {@link JSON.stringify()} will be used. + */ + bodySerializer?: BodySerializer | null; + /** + * An object containing any HTTP headers that you want to pre-populate your + * `Headers` object with. + * + * {@link https://developer.mozilla.org/docs/Web/API/Headers/Headers#init See more} + */ + headers?: + | RequestInit['headers'] + | Record< + string, + string | number | boolean | (string | number | boolean)[] | null | undefined | unknown + >; + /** + * The request method. + * + * {@link https://developer.mozilla.org/docs/Web/API/fetch#method See more} + */ + method?: Uppercase; + /** + * A function for serializing request query parameters. By default, arrays + * will be exploded in form style, objects will be exploded in deepObject + * style, and reserved characters are percent-encoded. + * + * This method will have no effect if the native `paramsSerializer()` Axios + * API function is used. + * + * {@link https://swagger.io/docs/specification/serialization/#query View examples} + */ + querySerializer?: QuerySerializer | QuerySerializerOptions; + /** + * A function validating request data. This is useful if you want to ensure + * the request conforms to the desired shape, so it can be safely sent to + * the server. + */ + requestValidator?: (data: unknown) => Promise; + /** + * A function transforming response data before it's returned. This is useful + * for post-processing data, e.g. converting ISO strings into Date objects. + */ + responseTransformer?: (data: unknown) => Promise; + /** + * A function validating response data. This is useful if you want to ensure + * the response conforms to the desired shape, so it can be safely passed to + * the transformers and returned to the user. + */ + responseValidator?: (data: unknown) => Promise; +} + +type IsExactlyNeverOrNeverUndefined = [T] extends [never] + ? true + : [T] extends [never | undefined] + ? [undefined] extends [T] + ? false + : true + : false; + +export type OmitNever> = { + [K in keyof T as IsExactlyNeverOrNeverUndefined extends true ? never : K]: T[K]; +}; diff --git a/frontend/src/openapi/core/utils.gen.ts b/frontend/src/openapi/core/utils.gen.ts new file mode 100644 index 000000000..0f8fe0b01 --- /dev/null +++ b/frontend/src/openapi/core/utils.gen.ts @@ -0,0 +1,139 @@ +// This file is auto-generated by @hey-api/openapi-ts +import type { BodySerializer, QuerySerializer } from './bodySerializer.gen'; +import { + type ArraySeparatorStyle, + serializeArrayParam, + serializeObjectParam, + serializePrimitiveParam, +} from './pathSerializer.gen'; + +export interface PathSerializer { + path: Record; + url: string; +} + +export const PATH_PARAM_RE = /\{[^{}]+\}/g; + +export const defaultPathSerializer = ({ path, url: _url }: PathSerializer) => { + let url = _url; + const matches = _url.match(PATH_PARAM_RE); + if (matches) { + for (const match of matches) { + let explode = false; + let name = match.substring(1, match.length - 1); + let style: ArraySeparatorStyle = 'simple'; + + if (name.endsWith('*')) { + explode = true; + name = name.substring(0, name.length - 1); + } + + if (name.startsWith('.')) { + name = name.substring(1); + style = 'label'; + } else if (name.startsWith(';')) { + name = name.substring(1); + style = 'matrix'; + } + + const value = path[name]; + + if (value === undefined || value === null) { + continue; + } + + if (Array.isArray(value)) { + url = url.replace(match, serializeArrayParam({ explode, name, style, value })); + continue; + } + + if (typeof value === 'object') { + url = url.replace( + match, + serializeObjectParam({ + explode, + name, + style, + value: value as Record, + valueOnly: true, + }) + ); + continue; + } + + if (style === 'matrix') { + url = url.replace( + match, + `;${serializePrimitiveParam({ + name, + value: value as string, + })}` + ); + continue; + } + + const replaceValue = encodeURIComponent( + style === 'label' ? `.${value as string}` : (value as string) + ); + url = url.replace(match, replaceValue); + } + } + return url; +}; + +export const getUrl = ({ + baseUrl, + path, + query, + querySerializer, + url: _url, +}: { + baseUrl?: string; + path?: Record; + query?: Record; + querySerializer: QuerySerializer; + url: string; +}) => { + const pathUrl = _url.startsWith('/') ? _url : `/${_url}`; + let url = (baseUrl ?? '') + pathUrl; + if (path) { + url = defaultPathSerializer({ path, url }); + } + let search = query ? querySerializer(query) : ''; + if (search.startsWith('?')) { + search = search.substring(1); + } + if (search) { + url += `?${search}`; + } + return url; +}; + +export function getValidRequestBody(options: { + body?: unknown; + bodySerializer?: BodySerializer | null; + serializedBody?: unknown; +}) { + const hasBody = options.body !== undefined; + const isSerializedBody = hasBody && options.bodySerializer; + + if (isSerializedBody) { + if ('serializedBody' in options) { + const hasSerializedBody = + options.serializedBody !== undefined && options.serializedBody !== ''; + + return hasSerializedBody ? options.serializedBody : null; + } + + // not all clients implement a serializedBody property (i.e. client-axios) + return options.body !== '' ? options.body : null; + } + + // plain/text body + if (hasBody) { + return options.body; + } + + // no body was provided + return undefined; +} diff --git a/frontend/src/openapi/index.ts b/frontend/src/openapi/index.ts new file mode 100644 index 000000000..7cd3f695d --- /dev/null +++ b/frontend/src/openapi/index.ts @@ -0,0 +1,440 @@ +// This file is auto-generated by @hey-api/openapi-ts + +export { + activateNextStageTournamentsTournamentIdStagesActivatePost, + changeStatusTournamentsTournamentIdChangeStatusPost, + createCourtTournamentsTournamentIdCourtsPost, + createMatchTournamentsTournamentIdMatchesPost, + createMultiplePlayersTournamentsTournamentIdPlayersMultiPost, + createMultipleTeamsTournamentsTournamentIdTeamsMultiPost, + createNewClubClubsPost, + createRankingTournamentsTournamentIdRankingsPost, + createRoundTournamentsTournamentIdRoundsPost, + createSinglePlayerTournamentsTournamentIdPlayersPost, + createStageItemTournamentsTournamentIdStageItemsPost, + createStageTournamentsTournamentIdStagesPost, + createTeamTournamentsTournamentIdTeamsPost, + createTournamentTournamentsPost, + deleteClubClubsClubIdDelete, + deleteCourtTournamentsTournamentIdCourtsCourtIdDelete, + deleteMatchTournamentsTournamentIdMatchesMatchIdDelete, + deletePlayerTournamentsTournamentIdPlayersPlayerIdDelete, + deleteRankingTournamentsTournamentIdRankingsRankingIdDelete, + deleteRoundTournamentsTournamentIdRoundsRoundIdDelete, + deleteStageItemTournamentsTournamentIdStageItemsStageItemIdDelete, + deleteStageTournamentsTournamentIdStagesStageIdDelete, + deleteTeamTournamentsTournamentIdTeamsTeamIdDelete, + deleteTournamentTournamentsTournamentIdDelete, + getAvailableInputsTournamentsTournamentIdAvailableInputsGet, + getClubsClubsGet, + getCourtsTournamentsTournamentIdCourtsGet, + getMatchesToScheduleTournamentsTournamentIdStageItemsStageItemIdUpcomingMatchesGet, + getMetricsMetricsGet, + getMeUsersUserIdGet, + getNextStageRankingsTournamentsTournamentIdNextStageRankingsGet, + getPlayersTournamentsTournamentIdPlayersGet, + getRankingsTournamentsTournamentIdRankingsGet, + getStagesTournamentsTournamentIdStagesGet, + getTeamsTournamentsTournamentIdTeamsGet, + getTournamentsTournamentsGet, + getTournamentTournamentsTournamentIdGet, + getUserUsersMeGet, + loginForAccessTokenTokenPost, + type Options, + pingPingGet, + putUserPasswordUsersUserIdPasswordPut, + registerDemoUserUsersRegisterDemoPost, + registerUserUsersRegisterPost, + rescheduleMatchTournamentsTournamentIdMatchesMatchIdReschedulePost, + scheduleMatchesTournamentsTournamentIdScheduleMatchesPost, + startNextRoundTournamentsTournamentIdStageItemsStageItemIdStartNextRoundPost, + updateClubClubsClubIdPut, + updateCourtByIdTournamentsTournamentIdCourtsCourtIdPut, + updateMatchByIdTournamentsTournamentIdMatchesMatchIdPut, + updatePlayerByIdTournamentsTournamentIdPlayersPlayerIdPut, + updateRankingByIdTournamentsTournamentIdRankingsRankingIdPut, + updateRoundByIdTournamentsTournamentIdRoundsRoundIdPut, + updateStageItemInputTournamentsTournamentIdStageItemsStageItemIdInputsStageItemInputIdPut, + updateStageItemTournamentsTournamentIdStageItemsStageItemIdPut, + updateStageTournamentsTournamentIdStagesStageIdPut, + updateTeamByIdTournamentsTournamentIdTeamsTeamIdPut, + updateTeamLogoTournamentsTournamentIdTeamsTeamIdLogoPost, + updateTournamentByIdTournamentsTournamentIdPut, + updateUserDetailsUsersUserIdPut, + uploadLogoTournamentsTournamentIdLogoPost, +} from './sdk.gen'; +export type { + ActivateNextStageTournamentsTournamentIdStagesActivatePostData, + ActivateNextStageTournamentsTournamentIdStagesActivatePostError, + ActivateNextStageTournamentsTournamentIdStagesActivatePostErrors, + ActivateNextStageTournamentsTournamentIdStagesActivatePostResponse, + ActivateNextStageTournamentsTournamentIdStagesActivatePostResponses, + BodyLoginForAccessTokenTokenPost, + BodyUpdateTeamLogoTournamentsTournamentIdTeamsTeamIdLogoPost, + BodyUploadLogoTournamentsTournamentIdLogoPost, + ChangeStatusTournamentsTournamentIdChangeStatusPostData, + ChangeStatusTournamentsTournamentIdChangeStatusPostError, + ChangeStatusTournamentsTournamentIdChangeStatusPostErrors, + ChangeStatusTournamentsTournamentIdChangeStatusPostResponse, + ChangeStatusTournamentsTournamentIdChangeStatusPostResponses, + ClientOptions, + Club, + ClubCreateBody, + ClubResponse, + ClubsResponse, + ClubUpdateBody, + Court, + CourtBody, + CourtsResponse, + CreateCourtTournamentsTournamentIdCourtsPostData, + CreateCourtTournamentsTournamentIdCourtsPostError, + CreateCourtTournamentsTournamentIdCourtsPostErrors, + CreateCourtTournamentsTournamentIdCourtsPostResponse, + CreateCourtTournamentsTournamentIdCourtsPostResponses, + CreateMatchTournamentsTournamentIdMatchesPostData, + CreateMatchTournamentsTournamentIdMatchesPostError, + CreateMatchTournamentsTournamentIdMatchesPostErrors, + CreateMatchTournamentsTournamentIdMatchesPostResponse, + CreateMatchTournamentsTournamentIdMatchesPostResponses, + CreateMultiplePlayersTournamentsTournamentIdPlayersMultiPostData, + CreateMultiplePlayersTournamentsTournamentIdPlayersMultiPostError, + CreateMultiplePlayersTournamentsTournamentIdPlayersMultiPostErrors, + CreateMultiplePlayersTournamentsTournamentIdPlayersMultiPostResponse, + CreateMultiplePlayersTournamentsTournamentIdPlayersMultiPostResponses, + CreateMultipleTeamsTournamentsTournamentIdTeamsMultiPostData, + CreateMultipleTeamsTournamentsTournamentIdTeamsMultiPostError, + CreateMultipleTeamsTournamentsTournamentIdTeamsMultiPostErrors, + CreateMultipleTeamsTournamentsTournamentIdTeamsMultiPostResponse, + CreateMultipleTeamsTournamentsTournamentIdTeamsMultiPostResponses, + CreateNewClubClubsPostData, + CreateNewClubClubsPostError, + CreateNewClubClubsPostErrors, + CreateNewClubClubsPostResponse, + CreateNewClubClubsPostResponses, + CreateRankingTournamentsTournamentIdRankingsPostData, + CreateRankingTournamentsTournamentIdRankingsPostError, + CreateRankingTournamentsTournamentIdRankingsPostErrors, + CreateRankingTournamentsTournamentIdRankingsPostResponse, + CreateRankingTournamentsTournamentIdRankingsPostResponses, + CreateRoundTournamentsTournamentIdRoundsPostData, + CreateRoundTournamentsTournamentIdRoundsPostError, + CreateRoundTournamentsTournamentIdRoundsPostErrors, + CreateRoundTournamentsTournamentIdRoundsPostResponse, + CreateRoundTournamentsTournamentIdRoundsPostResponses, + CreateSinglePlayerTournamentsTournamentIdPlayersPostData, + CreateSinglePlayerTournamentsTournamentIdPlayersPostError, + CreateSinglePlayerTournamentsTournamentIdPlayersPostErrors, + CreateSinglePlayerTournamentsTournamentIdPlayersPostResponse, + CreateSinglePlayerTournamentsTournamentIdPlayersPostResponses, + CreateStageItemTournamentsTournamentIdStageItemsPostData, + CreateStageItemTournamentsTournamentIdStageItemsPostError, + CreateStageItemTournamentsTournamentIdStageItemsPostErrors, + CreateStageItemTournamentsTournamentIdStageItemsPostResponse, + CreateStageItemTournamentsTournamentIdStageItemsPostResponses, + CreateStageTournamentsTournamentIdStagesPostData, + CreateStageTournamentsTournamentIdStagesPostError, + CreateStageTournamentsTournamentIdStagesPostErrors, + CreateStageTournamentsTournamentIdStagesPostResponse, + CreateStageTournamentsTournamentIdStagesPostResponses, + CreateTeamTournamentsTournamentIdTeamsPostData, + CreateTeamTournamentsTournamentIdTeamsPostError, + CreateTeamTournamentsTournamentIdTeamsPostErrors, + CreateTeamTournamentsTournamentIdTeamsPostResponse, + CreateTeamTournamentsTournamentIdTeamsPostResponses, + CreateTournamentTournamentsPostData, + CreateTournamentTournamentsPostError, + CreateTournamentTournamentsPostErrors, + CreateTournamentTournamentsPostResponse, + CreateTournamentTournamentsPostResponses, + DeleteClubClubsClubIdDeleteData, + DeleteClubClubsClubIdDeleteError, + DeleteClubClubsClubIdDeleteErrors, + DeleteClubClubsClubIdDeleteResponse, + DeleteClubClubsClubIdDeleteResponses, + DeleteCourtTournamentsTournamentIdCourtsCourtIdDeleteData, + DeleteCourtTournamentsTournamentIdCourtsCourtIdDeleteError, + DeleteCourtTournamentsTournamentIdCourtsCourtIdDeleteErrors, + DeleteCourtTournamentsTournamentIdCourtsCourtIdDeleteResponse, + DeleteCourtTournamentsTournamentIdCourtsCourtIdDeleteResponses, + DeleteMatchTournamentsTournamentIdMatchesMatchIdDeleteData, + DeleteMatchTournamentsTournamentIdMatchesMatchIdDeleteError, + DeleteMatchTournamentsTournamentIdMatchesMatchIdDeleteErrors, + DeleteMatchTournamentsTournamentIdMatchesMatchIdDeleteResponse, + DeleteMatchTournamentsTournamentIdMatchesMatchIdDeleteResponses, + DeletePlayerTournamentsTournamentIdPlayersPlayerIdDeleteData, + DeletePlayerTournamentsTournamentIdPlayersPlayerIdDeleteError, + DeletePlayerTournamentsTournamentIdPlayersPlayerIdDeleteErrors, + DeletePlayerTournamentsTournamentIdPlayersPlayerIdDeleteResponse, + DeletePlayerTournamentsTournamentIdPlayersPlayerIdDeleteResponses, + DeleteRankingTournamentsTournamentIdRankingsRankingIdDeleteData, + DeleteRankingTournamentsTournamentIdRankingsRankingIdDeleteError, + DeleteRankingTournamentsTournamentIdRankingsRankingIdDeleteErrors, + DeleteRankingTournamentsTournamentIdRankingsRankingIdDeleteResponse, + DeleteRankingTournamentsTournamentIdRankingsRankingIdDeleteResponses, + DeleteRoundTournamentsTournamentIdRoundsRoundIdDeleteData, + DeleteRoundTournamentsTournamentIdRoundsRoundIdDeleteError, + DeleteRoundTournamentsTournamentIdRoundsRoundIdDeleteErrors, + DeleteRoundTournamentsTournamentIdRoundsRoundIdDeleteResponse, + DeleteRoundTournamentsTournamentIdRoundsRoundIdDeleteResponses, + DeleteStageItemTournamentsTournamentIdStageItemsStageItemIdDeleteData, + DeleteStageItemTournamentsTournamentIdStageItemsStageItemIdDeleteError, + DeleteStageItemTournamentsTournamentIdStageItemsStageItemIdDeleteErrors, + DeleteStageItemTournamentsTournamentIdStageItemsStageItemIdDeleteResponse, + DeleteStageItemTournamentsTournamentIdStageItemsStageItemIdDeleteResponses, + DeleteStageTournamentsTournamentIdStagesStageIdDeleteData, + DeleteStageTournamentsTournamentIdStagesStageIdDeleteError, + DeleteStageTournamentsTournamentIdStagesStageIdDeleteErrors, + DeleteStageTournamentsTournamentIdStagesStageIdDeleteResponse, + DeleteStageTournamentsTournamentIdStagesStageIdDeleteResponses, + DeleteTeamTournamentsTournamentIdTeamsTeamIdDeleteData, + DeleteTeamTournamentsTournamentIdTeamsTeamIdDeleteError, + DeleteTeamTournamentsTournamentIdTeamsTeamIdDeleteErrors, + DeleteTeamTournamentsTournamentIdTeamsTeamIdDeleteResponse, + DeleteTeamTournamentsTournamentIdTeamsTeamIdDeleteResponses, + DeleteTournamentTournamentsTournamentIdDeleteData, + DeleteTournamentTournamentsTournamentIdDeleteError, + DeleteTournamentTournamentsTournamentIdDeleteErrors, + DeleteTournamentTournamentsTournamentIdDeleteResponse, + DeleteTournamentTournamentsTournamentIdDeleteResponses, + DemoUserToRegister, + FullTeamWithPlayers, + GetAvailableInputsTournamentsTournamentIdAvailableInputsGetData, + GetAvailableInputsTournamentsTournamentIdAvailableInputsGetError, + GetAvailableInputsTournamentsTournamentIdAvailableInputsGetErrors, + GetAvailableInputsTournamentsTournamentIdAvailableInputsGetResponse, + GetAvailableInputsTournamentsTournamentIdAvailableInputsGetResponses, + GetClubsClubsGetData, + GetClubsClubsGetResponse, + GetClubsClubsGetResponses, + GetCourtsTournamentsTournamentIdCourtsGetData, + GetCourtsTournamentsTournamentIdCourtsGetError, + GetCourtsTournamentsTournamentIdCourtsGetErrors, + GetCourtsTournamentsTournamentIdCourtsGetResponse, + GetCourtsTournamentsTournamentIdCourtsGetResponses, + GetMatchesToScheduleTournamentsTournamentIdStageItemsStageItemIdUpcomingMatchesGetData, + GetMatchesToScheduleTournamentsTournamentIdStageItemsStageItemIdUpcomingMatchesGetError, + GetMatchesToScheduleTournamentsTournamentIdStageItemsStageItemIdUpcomingMatchesGetErrors, + GetMatchesToScheduleTournamentsTournamentIdStageItemsStageItemIdUpcomingMatchesGetResponse, + GetMatchesToScheduleTournamentsTournamentIdStageItemsStageItemIdUpcomingMatchesGetResponses, + GetMetricsMetricsGetData, + GetMetricsMetricsGetResponse, + GetMetricsMetricsGetResponses, + GetMeUsersUserIdGetData, + GetMeUsersUserIdGetError, + GetMeUsersUserIdGetErrors, + GetMeUsersUserIdGetResponse, + GetMeUsersUserIdGetResponses, + GetNextStageRankingsTournamentsTournamentIdNextStageRankingsGetData, + GetNextStageRankingsTournamentsTournamentIdNextStageRankingsGetError, + GetNextStageRankingsTournamentsTournamentIdNextStageRankingsGetErrors, + GetNextStageRankingsTournamentsTournamentIdNextStageRankingsGetResponse, + GetNextStageRankingsTournamentsTournamentIdNextStageRankingsGetResponses, + GetPlayersTournamentsTournamentIdPlayersGetData, + GetPlayersTournamentsTournamentIdPlayersGetError, + GetPlayersTournamentsTournamentIdPlayersGetErrors, + GetPlayersTournamentsTournamentIdPlayersGetResponse, + GetPlayersTournamentsTournamentIdPlayersGetResponses, + GetRankingsTournamentsTournamentIdRankingsGetData, + GetRankingsTournamentsTournamentIdRankingsGetError, + GetRankingsTournamentsTournamentIdRankingsGetErrors, + GetRankingsTournamentsTournamentIdRankingsGetResponse, + GetRankingsTournamentsTournamentIdRankingsGetResponses, + GetStagesTournamentsTournamentIdStagesGetData, + GetStagesTournamentsTournamentIdStagesGetError, + GetStagesTournamentsTournamentIdStagesGetErrors, + GetStagesTournamentsTournamentIdStagesGetResponse, + GetStagesTournamentsTournamentIdStagesGetResponses, + GetTeamsTournamentsTournamentIdTeamsGetData, + GetTeamsTournamentsTournamentIdTeamsGetError, + GetTeamsTournamentsTournamentIdTeamsGetErrors, + GetTeamsTournamentsTournamentIdTeamsGetResponse, + GetTeamsTournamentsTournamentIdTeamsGetResponses, + GetTournamentsTournamentsGetData, + GetTournamentsTournamentsGetError, + GetTournamentsTournamentsGetErrors, + GetTournamentsTournamentsGetResponse, + GetTournamentsTournamentsGetResponses, + GetTournamentTournamentsTournamentIdGetData, + GetTournamentTournamentsTournamentIdGetError, + GetTournamentTournamentsTournamentIdGetErrors, + GetTournamentTournamentsTournamentIdGetResponse, + GetTournamentTournamentsTournamentIdGetResponses, + GetUserUsersMeGetData, + GetUserUsersMeGetResponse, + GetUserUsersMeGetResponses, + HttpValidationError, + LoginForAccessTokenTokenPostData, + LoginForAccessTokenTokenPostError, + LoginForAccessTokenTokenPostErrors, + LoginForAccessTokenTokenPostResponse, + LoginForAccessTokenTokenPostResponses, + Match, + MatchBody, + MatchCreateBodyFrontend, + MatchRescheduleBody, + MatchWithDetails, + MatchWithDetailsDefinitive, + PaginatedPlayers, + PaginatedTeams, + PingPingGetData, + PingPingGetResponse, + PingPingGetResponses, + Player, + PlayerBody, + PlayerMultiBody, + PlayersResponse, + PutUserPasswordUsersUserIdPasswordPutData, + PutUserPasswordUsersUserIdPasswordPutError, + PutUserPasswordUsersUserIdPasswordPutErrors, + PutUserPasswordUsersUserIdPasswordPutResponse, + PutUserPasswordUsersUserIdPasswordPutResponses, + Ranking, + RankingBody, + RankingCreateBody, + RankingsResponse, + RegisterDemoUserUsersRegisterDemoPostData, + RegisterDemoUserUsersRegisterDemoPostError, + RegisterDemoUserUsersRegisterDemoPostErrors, + RegisterDemoUserUsersRegisterDemoPostResponse, + RegisterDemoUserUsersRegisterDemoPostResponses, + RegisterUserUsersRegisterPostData, + RegisterUserUsersRegisterPostError, + RegisterUserUsersRegisterPostErrors, + RegisterUserUsersRegisterPostResponse, + RegisterUserUsersRegisterPostResponses, + RescheduleMatchTournamentsTournamentIdMatchesMatchIdReschedulePostData, + RescheduleMatchTournamentsTournamentIdMatchesMatchIdReschedulePostError, + RescheduleMatchTournamentsTournamentIdMatchesMatchIdReschedulePostErrors, + RescheduleMatchTournamentsTournamentIdMatchesMatchIdReschedulePostResponse, + RescheduleMatchTournamentsTournamentIdMatchesMatchIdReschedulePostResponses, + RoundCreateBody, + RoundUpdateBody, + RoundWithMatches, + ScheduleMatchesTournamentsTournamentIdScheduleMatchesPostData, + ScheduleMatchesTournamentsTournamentIdScheduleMatchesPostError, + ScheduleMatchesTournamentsTournamentIdScheduleMatchesPostErrors, + ScheduleMatchesTournamentsTournamentIdScheduleMatchesPostResponse, + ScheduleMatchesTournamentsTournamentIdScheduleMatchesPostResponses, + SingleCourtResponse, + SingleMatchResponse, + SinglePlayerResponse, + SingleTeamResponse, + StageActivateBody, + StageItemActivateNextBody, + StageItemCreateBody, + StageItemInputEmpty, + StageItemInputFinal, + StageItemInputOptionFinal, + StageItemInputOptionsResponse, + StageItemInputOptionTentative, + StageItemInputTentative, + StageItemInputUpdate, + StageItemInputUpdateBodyEmpty, + StageItemInputUpdateBodyFinal, + StageItemInputUpdateBodyTentative, + StageItemUpdateBody, + StageItemWithRounds, + StageRankingResponse, + StagesWithStageItemsResponse, + StageType, + StageUpdateBody, + StageWithStageItems, + StartNextRoundTournamentsTournamentIdStageItemsStageItemIdStartNextRoundPostData, + StartNextRoundTournamentsTournamentIdStageItemsStageItemIdStartNextRoundPostError, + StartNextRoundTournamentsTournamentIdStageItemsStageItemIdStartNextRoundPostErrors, + StartNextRoundTournamentsTournamentIdStageItemsStageItemIdStartNextRoundPostResponse, + StartNextRoundTournamentsTournamentIdStageItemsStageItemIdStartNextRoundPostResponses, + SuccessResponse, + SuggestedMatch, + Team, + TeamBody, + TeamMultiBody, + TeamsWithPlayersResponse, + Token, + TokenResponse, + Tournament, + TournamentBody, + TournamentChangeStatusBody, + TournamentResponse, + TournamentsResponse, + TournamentStatus, + TournamentUpdateBody, + UpcomingMatchesResponse, + UpdateClubClubsClubIdPutData, + UpdateClubClubsClubIdPutError, + UpdateClubClubsClubIdPutErrors, + UpdateClubClubsClubIdPutResponse, + UpdateClubClubsClubIdPutResponses, + UpdateCourtByIdTournamentsTournamentIdCourtsCourtIdPutData, + UpdateCourtByIdTournamentsTournamentIdCourtsCourtIdPutError, + UpdateCourtByIdTournamentsTournamentIdCourtsCourtIdPutErrors, + UpdateCourtByIdTournamentsTournamentIdCourtsCourtIdPutResponse, + UpdateCourtByIdTournamentsTournamentIdCourtsCourtIdPutResponses, + UpdateMatchByIdTournamentsTournamentIdMatchesMatchIdPutData, + UpdateMatchByIdTournamentsTournamentIdMatchesMatchIdPutError, + UpdateMatchByIdTournamentsTournamentIdMatchesMatchIdPutErrors, + UpdateMatchByIdTournamentsTournamentIdMatchesMatchIdPutResponse, + UpdateMatchByIdTournamentsTournamentIdMatchesMatchIdPutResponses, + UpdatePlayerByIdTournamentsTournamentIdPlayersPlayerIdPutData, + UpdatePlayerByIdTournamentsTournamentIdPlayersPlayerIdPutError, + UpdatePlayerByIdTournamentsTournamentIdPlayersPlayerIdPutErrors, + UpdatePlayerByIdTournamentsTournamentIdPlayersPlayerIdPutResponse, + UpdatePlayerByIdTournamentsTournamentIdPlayersPlayerIdPutResponses, + UpdateRankingByIdTournamentsTournamentIdRankingsRankingIdPutData, + UpdateRankingByIdTournamentsTournamentIdRankingsRankingIdPutError, + UpdateRankingByIdTournamentsTournamentIdRankingsRankingIdPutErrors, + UpdateRankingByIdTournamentsTournamentIdRankingsRankingIdPutResponse, + UpdateRankingByIdTournamentsTournamentIdRankingsRankingIdPutResponses, + UpdateRoundByIdTournamentsTournamentIdRoundsRoundIdPutData, + UpdateRoundByIdTournamentsTournamentIdRoundsRoundIdPutError, + UpdateRoundByIdTournamentsTournamentIdRoundsRoundIdPutErrors, + UpdateRoundByIdTournamentsTournamentIdRoundsRoundIdPutResponse, + UpdateRoundByIdTournamentsTournamentIdRoundsRoundIdPutResponses, + UpdateStageItemInputTournamentsTournamentIdStageItemsStageItemIdInputsStageItemInputIdPutData, + UpdateStageItemInputTournamentsTournamentIdStageItemsStageItemIdInputsStageItemInputIdPutError, + UpdateStageItemInputTournamentsTournamentIdStageItemsStageItemIdInputsStageItemInputIdPutErrors, + UpdateStageItemInputTournamentsTournamentIdStageItemsStageItemIdInputsStageItemInputIdPutResponse, + UpdateStageItemInputTournamentsTournamentIdStageItemsStageItemIdInputsStageItemInputIdPutResponses, + UpdateStageItemTournamentsTournamentIdStageItemsStageItemIdPutData, + UpdateStageItemTournamentsTournamentIdStageItemsStageItemIdPutError, + UpdateStageItemTournamentsTournamentIdStageItemsStageItemIdPutErrors, + UpdateStageItemTournamentsTournamentIdStageItemsStageItemIdPutResponse, + UpdateStageItemTournamentsTournamentIdStageItemsStageItemIdPutResponses, + UpdateStageTournamentsTournamentIdStagesStageIdPutData, + UpdateStageTournamentsTournamentIdStagesStageIdPutError, + UpdateStageTournamentsTournamentIdStagesStageIdPutErrors, + UpdateStageTournamentsTournamentIdStagesStageIdPutResponse, + UpdateStageTournamentsTournamentIdStagesStageIdPutResponses, + UpdateTeamByIdTournamentsTournamentIdTeamsTeamIdPutData, + UpdateTeamByIdTournamentsTournamentIdTeamsTeamIdPutError, + UpdateTeamByIdTournamentsTournamentIdTeamsTeamIdPutErrors, + UpdateTeamByIdTournamentsTournamentIdTeamsTeamIdPutResponse, + UpdateTeamByIdTournamentsTournamentIdTeamsTeamIdPutResponses, + UpdateTeamLogoTournamentsTournamentIdTeamsTeamIdLogoPostData, + UpdateTeamLogoTournamentsTournamentIdTeamsTeamIdLogoPostError, + UpdateTeamLogoTournamentsTournamentIdTeamsTeamIdLogoPostErrors, + UpdateTeamLogoTournamentsTournamentIdTeamsTeamIdLogoPostResponse, + UpdateTeamLogoTournamentsTournamentIdTeamsTeamIdLogoPostResponses, + UpdateTournamentByIdTournamentsTournamentIdPutData, + UpdateTournamentByIdTournamentsTournamentIdPutError, + UpdateTournamentByIdTournamentsTournamentIdPutErrors, + UpdateTournamentByIdTournamentsTournamentIdPutResponse, + UpdateTournamentByIdTournamentsTournamentIdPutResponses, + UpdateUserDetailsUsersUserIdPutData, + UpdateUserDetailsUsersUserIdPutError, + UpdateUserDetailsUsersUserIdPutErrors, + UpdateUserDetailsUsersUserIdPutResponse, + UpdateUserDetailsUsersUserIdPutResponses, + UploadLogoTournamentsTournamentIdLogoPostData, + UploadLogoTournamentsTournamentIdLogoPostError, + UploadLogoTournamentsTournamentIdLogoPostErrors, + UploadLogoTournamentsTournamentIdLogoPostResponse, + UploadLogoTournamentsTournamentIdLogoPostResponses, + UserAccountType, + UserPasswordToUpdate, + UserPublic, + UserPublicResponse, + UserToRegister, + UserToUpdate, + ValidationError, +} from './types.gen'; diff --git a/frontend/src/openapi/sdk.gen.ts b/frontend/src/openapi/sdk.gen.ts new file mode 100644 index 000000000..06774187c --- /dev/null +++ b/frontend/src/openapi/sdk.gen.ts @@ -0,0 +1,1418 @@ +// This file is auto-generated by @hey-api/openapi-ts +import { + type Client, + type Options as Options2, + type TDataShape, + formDataBodySerializer, + urlSearchParamsBodySerializer, +} from './client'; +import { client } from './client.gen'; +import type { + ActivateNextStageTournamentsTournamentIdStagesActivatePostData, + ActivateNextStageTournamentsTournamentIdStagesActivatePostErrors, + ActivateNextStageTournamentsTournamentIdStagesActivatePostResponses, + ChangeStatusTournamentsTournamentIdChangeStatusPostData, + ChangeStatusTournamentsTournamentIdChangeStatusPostErrors, + ChangeStatusTournamentsTournamentIdChangeStatusPostResponses, + CreateCourtTournamentsTournamentIdCourtsPostData, + CreateCourtTournamentsTournamentIdCourtsPostErrors, + CreateCourtTournamentsTournamentIdCourtsPostResponses, + CreateMatchTournamentsTournamentIdMatchesPostData, + CreateMatchTournamentsTournamentIdMatchesPostErrors, + CreateMatchTournamentsTournamentIdMatchesPostResponses, + CreateMultiplePlayersTournamentsTournamentIdPlayersMultiPostData, + CreateMultiplePlayersTournamentsTournamentIdPlayersMultiPostErrors, + CreateMultiplePlayersTournamentsTournamentIdPlayersMultiPostResponses, + CreateMultipleTeamsTournamentsTournamentIdTeamsMultiPostData, + CreateMultipleTeamsTournamentsTournamentIdTeamsMultiPostErrors, + CreateMultipleTeamsTournamentsTournamentIdTeamsMultiPostResponses, + CreateNewClubClubsPostData, + CreateNewClubClubsPostErrors, + CreateNewClubClubsPostResponses, + CreateRankingTournamentsTournamentIdRankingsPostData, + CreateRankingTournamentsTournamentIdRankingsPostErrors, + CreateRankingTournamentsTournamentIdRankingsPostResponses, + CreateRoundTournamentsTournamentIdRoundsPostData, + CreateRoundTournamentsTournamentIdRoundsPostErrors, + CreateRoundTournamentsTournamentIdRoundsPostResponses, + CreateSinglePlayerTournamentsTournamentIdPlayersPostData, + CreateSinglePlayerTournamentsTournamentIdPlayersPostErrors, + CreateSinglePlayerTournamentsTournamentIdPlayersPostResponses, + CreateStageItemTournamentsTournamentIdStageItemsPostData, + CreateStageItemTournamentsTournamentIdStageItemsPostErrors, + CreateStageItemTournamentsTournamentIdStageItemsPostResponses, + CreateStageTournamentsTournamentIdStagesPostData, + CreateStageTournamentsTournamentIdStagesPostErrors, + CreateStageTournamentsTournamentIdStagesPostResponses, + CreateTeamTournamentsTournamentIdTeamsPostData, + CreateTeamTournamentsTournamentIdTeamsPostErrors, + CreateTeamTournamentsTournamentIdTeamsPostResponses, + CreateTournamentTournamentsPostData, + CreateTournamentTournamentsPostErrors, + CreateTournamentTournamentsPostResponses, + DeleteClubClubsClubIdDeleteData, + DeleteClubClubsClubIdDeleteErrors, + DeleteClubClubsClubIdDeleteResponses, + DeleteCourtTournamentsTournamentIdCourtsCourtIdDeleteData, + DeleteCourtTournamentsTournamentIdCourtsCourtIdDeleteErrors, + DeleteCourtTournamentsTournamentIdCourtsCourtIdDeleteResponses, + DeleteMatchTournamentsTournamentIdMatchesMatchIdDeleteData, + DeleteMatchTournamentsTournamentIdMatchesMatchIdDeleteErrors, + DeleteMatchTournamentsTournamentIdMatchesMatchIdDeleteResponses, + DeletePlayerTournamentsTournamentIdPlayersPlayerIdDeleteData, + DeletePlayerTournamentsTournamentIdPlayersPlayerIdDeleteErrors, + DeletePlayerTournamentsTournamentIdPlayersPlayerIdDeleteResponses, + DeleteRankingTournamentsTournamentIdRankingsRankingIdDeleteData, + DeleteRankingTournamentsTournamentIdRankingsRankingIdDeleteErrors, + DeleteRankingTournamentsTournamentIdRankingsRankingIdDeleteResponses, + DeleteRoundTournamentsTournamentIdRoundsRoundIdDeleteData, + DeleteRoundTournamentsTournamentIdRoundsRoundIdDeleteErrors, + DeleteRoundTournamentsTournamentIdRoundsRoundIdDeleteResponses, + DeleteStageItemTournamentsTournamentIdStageItemsStageItemIdDeleteData, + DeleteStageItemTournamentsTournamentIdStageItemsStageItemIdDeleteErrors, + DeleteStageItemTournamentsTournamentIdStageItemsStageItemIdDeleteResponses, + DeleteStageTournamentsTournamentIdStagesStageIdDeleteData, + DeleteStageTournamentsTournamentIdStagesStageIdDeleteErrors, + DeleteStageTournamentsTournamentIdStagesStageIdDeleteResponses, + DeleteTeamTournamentsTournamentIdTeamsTeamIdDeleteData, + DeleteTeamTournamentsTournamentIdTeamsTeamIdDeleteErrors, + DeleteTeamTournamentsTournamentIdTeamsTeamIdDeleteResponses, + DeleteTournamentTournamentsTournamentIdDeleteData, + DeleteTournamentTournamentsTournamentIdDeleteErrors, + DeleteTournamentTournamentsTournamentIdDeleteResponses, + GetAvailableInputsTournamentsTournamentIdAvailableInputsGetData, + GetAvailableInputsTournamentsTournamentIdAvailableInputsGetErrors, + GetAvailableInputsTournamentsTournamentIdAvailableInputsGetResponses, + GetClubsClubsGetData, + GetClubsClubsGetResponses, + GetCourtsTournamentsTournamentIdCourtsGetData, + GetCourtsTournamentsTournamentIdCourtsGetErrors, + GetCourtsTournamentsTournamentIdCourtsGetResponses, + GetMatchesToScheduleTournamentsTournamentIdStageItemsStageItemIdUpcomingMatchesGetData, + GetMatchesToScheduleTournamentsTournamentIdStageItemsStageItemIdUpcomingMatchesGetErrors, + GetMatchesToScheduleTournamentsTournamentIdStageItemsStageItemIdUpcomingMatchesGetResponses, + GetMeUsersUserIdGetData, + GetMeUsersUserIdGetErrors, + GetMeUsersUserIdGetResponses, + GetMetricsMetricsGetData, + GetMetricsMetricsGetResponses, + GetNextStageRankingsTournamentsTournamentIdNextStageRankingsGetData, + GetNextStageRankingsTournamentsTournamentIdNextStageRankingsGetErrors, + GetNextStageRankingsTournamentsTournamentIdNextStageRankingsGetResponses, + GetPlayersTournamentsTournamentIdPlayersGetData, + GetPlayersTournamentsTournamentIdPlayersGetErrors, + GetPlayersTournamentsTournamentIdPlayersGetResponses, + GetRankingsTournamentsTournamentIdRankingsGetData, + GetRankingsTournamentsTournamentIdRankingsGetErrors, + GetRankingsTournamentsTournamentIdRankingsGetResponses, + GetStagesTournamentsTournamentIdStagesGetData, + GetStagesTournamentsTournamentIdStagesGetErrors, + GetStagesTournamentsTournamentIdStagesGetResponses, + GetTeamsTournamentsTournamentIdTeamsGetData, + GetTeamsTournamentsTournamentIdTeamsGetErrors, + GetTeamsTournamentsTournamentIdTeamsGetResponses, + GetTournamentTournamentsTournamentIdGetData, + GetTournamentTournamentsTournamentIdGetErrors, + GetTournamentTournamentsTournamentIdGetResponses, + GetTournamentsTournamentsGetData, + GetTournamentsTournamentsGetErrors, + GetTournamentsTournamentsGetResponses, + GetUserUsersMeGetData, + GetUserUsersMeGetResponses, + LoginForAccessTokenTokenPostData, + LoginForAccessTokenTokenPostErrors, + LoginForAccessTokenTokenPostResponses, + PingPingGetData, + PingPingGetResponses, + PutUserPasswordUsersUserIdPasswordPutData, + PutUserPasswordUsersUserIdPasswordPutErrors, + PutUserPasswordUsersUserIdPasswordPutResponses, + RegisterDemoUserUsersRegisterDemoPostData, + RegisterDemoUserUsersRegisterDemoPostErrors, + RegisterDemoUserUsersRegisterDemoPostResponses, + RegisterUserUsersRegisterPostData, + RegisterUserUsersRegisterPostErrors, + RegisterUserUsersRegisterPostResponses, + RescheduleMatchTournamentsTournamentIdMatchesMatchIdReschedulePostData, + RescheduleMatchTournamentsTournamentIdMatchesMatchIdReschedulePostErrors, + RescheduleMatchTournamentsTournamentIdMatchesMatchIdReschedulePostResponses, + ScheduleMatchesTournamentsTournamentIdScheduleMatchesPostData, + ScheduleMatchesTournamentsTournamentIdScheduleMatchesPostErrors, + ScheduleMatchesTournamentsTournamentIdScheduleMatchesPostResponses, + StartNextRoundTournamentsTournamentIdStageItemsStageItemIdStartNextRoundPostData, + StartNextRoundTournamentsTournamentIdStageItemsStageItemIdStartNextRoundPostErrors, + StartNextRoundTournamentsTournamentIdStageItemsStageItemIdStartNextRoundPostResponses, + UpdateClubClubsClubIdPutData, + UpdateClubClubsClubIdPutErrors, + UpdateClubClubsClubIdPutResponses, + UpdateCourtByIdTournamentsTournamentIdCourtsCourtIdPutData, + UpdateCourtByIdTournamentsTournamentIdCourtsCourtIdPutErrors, + UpdateCourtByIdTournamentsTournamentIdCourtsCourtIdPutResponses, + UpdateMatchByIdTournamentsTournamentIdMatchesMatchIdPutData, + UpdateMatchByIdTournamentsTournamentIdMatchesMatchIdPutErrors, + UpdateMatchByIdTournamentsTournamentIdMatchesMatchIdPutResponses, + UpdatePlayerByIdTournamentsTournamentIdPlayersPlayerIdPutData, + UpdatePlayerByIdTournamentsTournamentIdPlayersPlayerIdPutErrors, + UpdatePlayerByIdTournamentsTournamentIdPlayersPlayerIdPutResponses, + UpdateRankingByIdTournamentsTournamentIdRankingsRankingIdPutData, + UpdateRankingByIdTournamentsTournamentIdRankingsRankingIdPutErrors, + UpdateRankingByIdTournamentsTournamentIdRankingsRankingIdPutResponses, + UpdateRoundByIdTournamentsTournamentIdRoundsRoundIdPutData, + UpdateRoundByIdTournamentsTournamentIdRoundsRoundIdPutErrors, + UpdateRoundByIdTournamentsTournamentIdRoundsRoundIdPutResponses, + UpdateStageItemInputTournamentsTournamentIdStageItemsStageItemIdInputsStageItemInputIdPutData, + UpdateStageItemInputTournamentsTournamentIdStageItemsStageItemIdInputsStageItemInputIdPutErrors, + UpdateStageItemInputTournamentsTournamentIdStageItemsStageItemIdInputsStageItemInputIdPutResponses, + UpdateStageItemTournamentsTournamentIdStageItemsStageItemIdPutData, + UpdateStageItemTournamentsTournamentIdStageItemsStageItemIdPutErrors, + UpdateStageItemTournamentsTournamentIdStageItemsStageItemIdPutResponses, + UpdateStageTournamentsTournamentIdStagesStageIdPutData, + UpdateStageTournamentsTournamentIdStagesStageIdPutErrors, + UpdateStageTournamentsTournamentIdStagesStageIdPutResponses, + UpdateTeamByIdTournamentsTournamentIdTeamsTeamIdPutData, + UpdateTeamByIdTournamentsTournamentIdTeamsTeamIdPutErrors, + UpdateTeamByIdTournamentsTournamentIdTeamsTeamIdPutResponses, + UpdateTeamLogoTournamentsTournamentIdTeamsTeamIdLogoPostData, + UpdateTeamLogoTournamentsTournamentIdTeamsTeamIdLogoPostErrors, + UpdateTeamLogoTournamentsTournamentIdTeamsTeamIdLogoPostResponses, + UpdateTournamentByIdTournamentsTournamentIdPutData, + UpdateTournamentByIdTournamentsTournamentIdPutErrors, + UpdateTournamentByIdTournamentsTournamentIdPutResponses, + UpdateUserDetailsUsersUserIdPutData, + UpdateUserDetailsUsersUserIdPutErrors, + UpdateUserDetailsUsersUserIdPutResponses, + UploadLogoTournamentsTournamentIdLogoPostData, + UploadLogoTournamentsTournamentIdLogoPostErrors, + UploadLogoTournamentsTournamentIdLogoPostResponses, +} from './types.gen'; + +export type Options< + TData extends TDataShape = TDataShape, + ThrowOnError extends boolean = boolean, +> = Options2 & { + /** + * You can provide a client instance returned by `createClient()` instead of + * individual options. This might be also useful if you want to implement a + * custom client. + */ + client?: Client; + /** + * You can pass arbitrary values through the `meta` object. This can be + * used to access values that aren't defined as part of the SDK function. + */ + meta?: Record; +}; + +/** + * Get Clubs + */ +export const getClubsClubsGet = ( + options?: Options +) => + (options?.client ?? client).get({ + responseType: 'json', + security: [{ scheme: 'bearer', type: 'http' }], + url: '/clubs', + ...options, + }); + +/** + * Create New Club + */ +export const createNewClubClubsPost = ( + options: Options +) => + (options.client ?? client).post< + CreateNewClubClubsPostResponses, + CreateNewClubClubsPostErrors, + ThrowOnError + >({ + responseType: 'json', + security: [{ scheme: 'bearer', type: 'http' }], + url: '/clubs', + ...options, + headers: { + 'Content-Type': 'application/json', + ...options.headers, + }, + }); + +/** + * Delete Club + */ +export const deleteClubClubsClubIdDelete = ( + options: Options +) => + (options.client ?? client).delete< + DeleteClubClubsClubIdDeleteResponses, + DeleteClubClubsClubIdDeleteErrors, + ThrowOnError + >({ + responseType: 'json', + security: [{ scheme: 'bearer', type: 'http' }], + url: '/clubs/{club_id}', + ...options, + }); + +/** + * Update Club + */ +export const updateClubClubsClubIdPut = ( + options: Options +) => + (options.client ?? client).put< + UpdateClubClubsClubIdPutResponses, + UpdateClubClubsClubIdPutErrors, + ThrowOnError + >({ + responseType: 'json', + security: [{ scheme: 'bearer', type: 'http' }], + url: '/clubs/{club_id}', + ...options, + headers: { + 'Content-Type': 'application/json', + ...options.headers, + }, + }); + +/** + * Get Metrics + */ +export const getMetricsMetricsGet = ( + options?: Options +) => + (options?.client ?? client).get({ + responseType: 'text', + url: '/metrics', + ...options, + }); + +/** + * Healthcheck ping + */ +export const pingPingGet = ( + options?: Options +) => + (options?.client ?? client).get({ + responseType: 'json', + url: '/ping', + ...options, + }); + +/** + * Login For Access Token + */ +export const loginForAccessTokenTokenPost = ( + options: Options +) => + (options.client ?? client).post< + LoginForAccessTokenTokenPostResponses, + LoginForAccessTokenTokenPostErrors, + ThrowOnError + >({ + ...urlSearchParamsBodySerializer, + responseType: 'json', + url: '/token', + ...options, + headers: { + 'Content-Type': 'application/x-www-form-urlencoded', + ...options.headers, + }, + }); + +/** + * Get Tournaments + */ +export const getTournamentsTournamentsGet = ( + options?: Options +) => + (options?.client ?? client).get< + GetTournamentsTournamentsGetResponses, + GetTournamentsTournamentsGetErrors, + ThrowOnError + >({ + responseType: 'json', + security: [{ scheme: 'bearer', type: 'http' }], + url: '/tournaments', + ...options, + }); + +/** + * Create Tournament + */ +export const createTournamentTournamentsPost = ( + options: Options +) => + (options.client ?? client).post< + CreateTournamentTournamentsPostResponses, + CreateTournamentTournamentsPostErrors, + ThrowOnError + >({ + responseType: 'json', + security: [{ scheme: 'bearer', type: 'http' }], + url: '/tournaments', + ...options, + headers: { + 'Content-Type': 'application/json', + ...options.headers, + }, + }); + +/** + * Delete Tournament + */ +export const deleteTournamentTournamentsTournamentIdDelete = ( + options: Options +) => + (options.client ?? client).delete< + DeleteTournamentTournamentsTournamentIdDeleteResponses, + DeleteTournamentTournamentsTournamentIdDeleteErrors, + ThrowOnError + >({ + responseType: 'json', + security: [{ scheme: 'bearer', type: 'http' }], + url: '/tournaments/{tournament_id}', + ...options, + }); + +/** + * Get Tournament + */ +export const getTournamentTournamentsTournamentIdGet = ( + options: Options +) => + (options.client ?? client).get< + GetTournamentTournamentsTournamentIdGetResponses, + GetTournamentTournamentsTournamentIdGetErrors, + ThrowOnError + >({ + responseType: 'json', + url: '/tournaments/{tournament_id}', + ...options, + }); + +/** + * Update Tournament By Id + */ +export const updateTournamentByIdTournamentsTournamentIdPut = < + ThrowOnError extends boolean = false, +>( + options: Options +) => + (options.client ?? client).put< + UpdateTournamentByIdTournamentsTournamentIdPutResponses, + UpdateTournamentByIdTournamentsTournamentIdPutErrors, + ThrowOnError + >({ + responseType: 'json', + security: [{ scheme: 'bearer', type: 'http' }], + url: '/tournaments/{tournament_id}', + ...options, + headers: { + 'Content-Type': 'application/json', + ...options.headers, + }, + }); + +/** + * Get Available Inputs + */ +export const getAvailableInputsTournamentsTournamentIdAvailableInputsGet = < + ThrowOnError extends boolean = false, +>( + options: Options +) => + (options.client ?? client).get< + GetAvailableInputsTournamentsTournamentIdAvailableInputsGetResponses, + GetAvailableInputsTournamentsTournamentIdAvailableInputsGetErrors, + ThrowOnError + >({ + responseType: 'json', + security: [{ scheme: 'bearer', type: 'http' }], + url: '/tournaments/{tournament_id}/available_inputs', + ...options, + }); + +/** + * Change Status + * + * Make a tournament archived or non-archived. + */ +export const changeStatusTournamentsTournamentIdChangeStatusPost = < + ThrowOnError extends boolean = false, +>( + options: Options +) => + (options.client ?? client).post< + ChangeStatusTournamentsTournamentIdChangeStatusPostResponses, + ChangeStatusTournamentsTournamentIdChangeStatusPostErrors, + ThrowOnError + >({ + responseType: 'json', + security: [{ scheme: 'bearer', type: 'http' }], + url: '/tournaments/{tournament_id}/change-status', + ...options, + headers: { + 'Content-Type': 'application/json', + ...options.headers, + }, + }); + +/** + * Get Courts + */ +export const getCourtsTournamentsTournamentIdCourtsGet = ( + options: Options +) => + (options.client ?? client).get< + GetCourtsTournamentsTournamentIdCourtsGetResponses, + GetCourtsTournamentsTournamentIdCourtsGetErrors, + ThrowOnError + >({ + responseType: 'json', + url: '/tournaments/{tournament_id}/courts', + ...options, + }); + +/** + * Create Court + */ +export const createCourtTournamentsTournamentIdCourtsPost = ( + options: Options +) => + (options.client ?? client).post< + CreateCourtTournamentsTournamentIdCourtsPostResponses, + CreateCourtTournamentsTournamentIdCourtsPostErrors, + ThrowOnError + >({ + responseType: 'json', + security: [{ scheme: 'bearer', type: 'http' }], + url: '/tournaments/{tournament_id}/courts', + ...options, + headers: { + 'Content-Type': 'application/json', + ...options.headers, + }, + }); + +/** + * Delete Court + */ +export const deleteCourtTournamentsTournamentIdCourtsCourtIdDelete = < + ThrowOnError extends boolean = false, +>( + options: Options +) => + (options.client ?? client).delete< + DeleteCourtTournamentsTournamentIdCourtsCourtIdDeleteResponses, + DeleteCourtTournamentsTournamentIdCourtsCourtIdDeleteErrors, + ThrowOnError + >({ + responseType: 'json', + security: [{ scheme: 'bearer', type: 'http' }], + url: '/tournaments/{tournament_id}/courts/{court_id}', + ...options, + }); + +/** + * Update Court By Id + */ +export const updateCourtByIdTournamentsTournamentIdCourtsCourtIdPut = < + ThrowOnError extends boolean = false, +>( + options: Options +) => + (options.client ?? client).put< + UpdateCourtByIdTournamentsTournamentIdCourtsCourtIdPutResponses, + UpdateCourtByIdTournamentsTournamentIdCourtsCourtIdPutErrors, + ThrowOnError + >({ + responseType: 'json', + security: [{ scheme: 'bearer', type: 'http' }], + url: '/tournaments/{tournament_id}/courts/{court_id}', + ...options, + headers: { + 'Content-Type': 'application/json', + ...options.headers, + }, + }); + +/** + * Upload Logo + */ +export const uploadLogoTournamentsTournamentIdLogoPost = ( + options: Options +) => + (options.client ?? client).post< + UploadLogoTournamentsTournamentIdLogoPostResponses, + UploadLogoTournamentsTournamentIdLogoPostErrors, + ThrowOnError + >({ + ...formDataBodySerializer, + responseType: 'json', + security: [{ scheme: 'bearer', type: 'http' }], + url: '/tournaments/{tournament_id}/logo', + ...options, + headers: { + 'Content-Type': null, + ...options.headers, + }, + }); + +/** + * Create Match + */ +export const createMatchTournamentsTournamentIdMatchesPost = ( + options: Options +) => + (options.client ?? client).post< + CreateMatchTournamentsTournamentIdMatchesPostResponses, + CreateMatchTournamentsTournamentIdMatchesPostErrors, + ThrowOnError + >({ + responseType: 'json', + security: [{ scheme: 'bearer', type: 'http' }], + url: '/tournaments/{tournament_id}/matches', + ...options, + headers: { + 'Content-Type': 'application/json', + ...options.headers, + }, + }); + +/** + * Delete Match + */ +export const deleteMatchTournamentsTournamentIdMatchesMatchIdDelete = < + ThrowOnError extends boolean = false, +>( + options: Options +) => + (options.client ?? client).delete< + DeleteMatchTournamentsTournamentIdMatchesMatchIdDeleteResponses, + DeleteMatchTournamentsTournamentIdMatchesMatchIdDeleteErrors, + ThrowOnError + >({ + responseType: 'json', + security: [{ scheme: 'bearer', type: 'http' }], + url: '/tournaments/{tournament_id}/matches/{match_id}', + ...options, + }); + +/** + * Update Match By Id + */ +export const updateMatchByIdTournamentsTournamentIdMatchesMatchIdPut = < + ThrowOnError extends boolean = false, +>( + options: Options +) => + (options.client ?? client).put< + UpdateMatchByIdTournamentsTournamentIdMatchesMatchIdPutResponses, + UpdateMatchByIdTournamentsTournamentIdMatchesMatchIdPutErrors, + ThrowOnError + >({ + responseType: 'json', + security: [{ scheme: 'bearer', type: 'http' }], + url: '/tournaments/{tournament_id}/matches/{match_id}', + ...options, + headers: { + 'Content-Type': 'application/json', + ...options.headers, + }, + }); + +/** + * Reschedule Match + */ +export const rescheduleMatchTournamentsTournamentIdMatchesMatchIdReschedulePost = < + ThrowOnError extends boolean = false, +>( + options: Options< + RescheduleMatchTournamentsTournamentIdMatchesMatchIdReschedulePostData, + ThrowOnError + > +) => + (options.client ?? client).post< + RescheduleMatchTournamentsTournamentIdMatchesMatchIdReschedulePostResponses, + RescheduleMatchTournamentsTournamentIdMatchesMatchIdReschedulePostErrors, + ThrowOnError + >({ + responseType: 'json', + security: [{ scheme: 'bearer', type: 'http' }], + url: '/tournaments/{tournament_id}/matches/{match_id}/reschedule', + ...options, + headers: { + 'Content-Type': 'application/json', + ...options.headers, + }, + }); + +/** + * Get Next Stage Rankings + * + * Get the rankings for the stage items in this stage. + */ +export const getNextStageRankingsTournamentsTournamentIdNextStageRankingsGet = < + ThrowOnError extends boolean = false, +>( + options: Options< + GetNextStageRankingsTournamentsTournamentIdNextStageRankingsGetData, + ThrowOnError + > +) => + (options.client ?? client).get< + GetNextStageRankingsTournamentsTournamentIdNextStageRankingsGetResponses, + GetNextStageRankingsTournamentsTournamentIdNextStageRankingsGetErrors, + ThrowOnError + >({ + responseType: 'json', + security: [{ scheme: 'bearer', type: 'http' }], + url: '/tournaments/{tournament_id}/next_stage_rankings', + ...options, + }); + +/** + * Get Players + */ +export const getPlayersTournamentsTournamentIdPlayersGet = ( + options: Options +) => + (options.client ?? client).get< + GetPlayersTournamentsTournamentIdPlayersGetResponses, + GetPlayersTournamentsTournamentIdPlayersGetErrors, + ThrowOnError + >({ + responseType: 'json', + security: [{ scheme: 'bearer', type: 'http' }], + url: '/tournaments/{tournament_id}/players', + ...options, + }); + +/** + * Create Single Player + */ +export const createSinglePlayerTournamentsTournamentIdPlayersPost = < + ThrowOnError extends boolean = false, +>( + options: Options +) => + (options.client ?? client).post< + CreateSinglePlayerTournamentsTournamentIdPlayersPostResponses, + CreateSinglePlayerTournamentsTournamentIdPlayersPostErrors, + ThrowOnError + >({ + responseType: 'json', + security: [{ scheme: 'bearer', type: 'http' }], + url: '/tournaments/{tournament_id}/players', + ...options, + headers: { + 'Content-Type': 'application/json', + ...options.headers, + }, + }); + +/** + * Delete Player + */ +export const deletePlayerTournamentsTournamentIdPlayersPlayerIdDelete = < + ThrowOnError extends boolean = false, +>( + options: Options +) => + (options.client ?? client).delete< + DeletePlayerTournamentsTournamentIdPlayersPlayerIdDeleteResponses, + DeletePlayerTournamentsTournamentIdPlayersPlayerIdDeleteErrors, + ThrowOnError + >({ + responseType: 'json', + security: [{ scheme: 'bearer', type: 'http' }], + url: '/tournaments/{tournament_id}/players/{player_id}', + ...options, + }); + +/** + * Update Player By Id + */ +export const updatePlayerByIdTournamentsTournamentIdPlayersPlayerIdPut = < + ThrowOnError extends boolean = false, +>( + options: Options +) => + (options.client ?? client).put< + UpdatePlayerByIdTournamentsTournamentIdPlayersPlayerIdPutResponses, + UpdatePlayerByIdTournamentsTournamentIdPlayersPlayerIdPutErrors, + ThrowOnError + >({ + responseType: 'json', + security: [{ scheme: 'bearer', type: 'http' }], + url: '/tournaments/{tournament_id}/players/{player_id}', + ...options, + headers: { + 'Content-Type': 'application/json', + ...options.headers, + }, + }); + +/** + * Create Multiple Players + */ +export const createMultiplePlayersTournamentsTournamentIdPlayersMultiPost = < + ThrowOnError extends boolean = false, +>( + options: Options +) => + (options.client ?? client).post< + CreateMultiplePlayersTournamentsTournamentIdPlayersMultiPostResponses, + CreateMultiplePlayersTournamentsTournamentIdPlayersMultiPostErrors, + ThrowOnError + >({ + responseType: 'json', + security: [{ scheme: 'bearer', type: 'http' }], + url: '/tournaments/{tournament_id}/players_multi', + ...options, + headers: { + 'Content-Type': 'application/json', + ...options.headers, + }, + }); + +/** + * Get Rankings + */ +export const getRankingsTournamentsTournamentIdRankingsGet = ( + options: Options +) => + (options.client ?? client).get< + GetRankingsTournamentsTournamentIdRankingsGetResponses, + GetRankingsTournamentsTournamentIdRankingsGetErrors, + ThrowOnError + >({ + responseType: 'json', + url: '/tournaments/{tournament_id}/rankings', + ...options, + }); + +/** + * Create Ranking + */ +export const createRankingTournamentsTournamentIdRankingsPost = < + ThrowOnError extends boolean = false, +>( + options: Options +) => + (options.client ?? client).post< + CreateRankingTournamentsTournamentIdRankingsPostResponses, + CreateRankingTournamentsTournamentIdRankingsPostErrors, + ThrowOnError + >({ + responseType: 'json', + security: [{ scheme: 'bearer', type: 'http' }], + url: '/tournaments/{tournament_id}/rankings', + ...options, + headers: { + 'Content-Type': 'application/json', + ...options.headers, + }, + }); + +/** + * Delete Ranking + */ +export const deleteRankingTournamentsTournamentIdRankingsRankingIdDelete = < + ThrowOnError extends boolean = false, +>( + options: Options +) => + (options.client ?? client).delete< + DeleteRankingTournamentsTournamentIdRankingsRankingIdDeleteResponses, + DeleteRankingTournamentsTournamentIdRankingsRankingIdDeleteErrors, + ThrowOnError + >({ + responseType: 'json', + security: [{ scheme: 'bearer', type: 'http' }], + url: '/tournaments/{tournament_id}/rankings/{ranking_id}', + ...options, + }); + +/** + * Update Ranking By Id + */ +export const updateRankingByIdTournamentsTournamentIdRankingsRankingIdPut = < + ThrowOnError extends boolean = false, +>( + options: Options +) => + (options.client ?? client).put< + UpdateRankingByIdTournamentsTournamentIdRankingsRankingIdPutResponses, + UpdateRankingByIdTournamentsTournamentIdRankingsRankingIdPutErrors, + ThrowOnError + >({ + responseType: 'json', + security: [{ scheme: 'bearer', type: 'http' }], + url: '/tournaments/{tournament_id}/rankings/{ranking_id}', + ...options, + headers: { + 'Content-Type': 'application/json', + ...options.headers, + }, + }); + +/** + * Create Round + */ +export const createRoundTournamentsTournamentIdRoundsPost = ( + options: Options +) => + (options.client ?? client).post< + CreateRoundTournamentsTournamentIdRoundsPostResponses, + CreateRoundTournamentsTournamentIdRoundsPostErrors, + ThrowOnError + >({ + responseType: 'json', + security: [{ scheme: 'bearer', type: 'http' }], + url: '/tournaments/{tournament_id}/rounds', + ...options, + headers: { + 'Content-Type': 'application/json', + ...options.headers, + }, + }); + +/** + * Delete Round + */ +export const deleteRoundTournamentsTournamentIdRoundsRoundIdDelete = < + ThrowOnError extends boolean = false, +>( + options: Options +) => + (options.client ?? client).delete< + DeleteRoundTournamentsTournamentIdRoundsRoundIdDeleteResponses, + DeleteRoundTournamentsTournamentIdRoundsRoundIdDeleteErrors, + ThrowOnError + >({ + responseType: 'json', + security: [{ scheme: 'bearer', type: 'http' }], + url: '/tournaments/{tournament_id}/rounds/{round_id}', + ...options, + }); + +/** + * Update Round By Id + */ +export const updateRoundByIdTournamentsTournamentIdRoundsRoundIdPut = < + ThrowOnError extends boolean = false, +>( + options: Options +) => + (options.client ?? client).put< + UpdateRoundByIdTournamentsTournamentIdRoundsRoundIdPutResponses, + UpdateRoundByIdTournamentsTournamentIdRoundsRoundIdPutErrors, + ThrowOnError + >({ + responseType: 'json', + security: [{ scheme: 'bearer', type: 'http' }], + url: '/tournaments/{tournament_id}/rounds/{round_id}', + ...options, + headers: { + 'Content-Type': 'application/json', + ...options.headers, + }, + }); + +/** + * Schedule Matches + */ +export const scheduleMatchesTournamentsTournamentIdScheduleMatchesPost = < + ThrowOnError extends boolean = false, +>( + options: Options +) => + (options.client ?? client).post< + ScheduleMatchesTournamentsTournamentIdScheduleMatchesPostResponses, + ScheduleMatchesTournamentsTournamentIdScheduleMatchesPostErrors, + ThrowOnError + >({ + responseType: 'json', + security: [{ scheme: 'bearer', type: 'http' }], + url: '/tournaments/{tournament_id}/schedule_matches', + ...options, + }); + +/** + * Create Stage Item + */ +export const createStageItemTournamentsTournamentIdStageItemsPost = < + ThrowOnError extends boolean = false, +>( + options: Options +) => + (options.client ?? client).post< + CreateStageItemTournamentsTournamentIdStageItemsPostResponses, + CreateStageItemTournamentsTournamentIdStageItemsPostErrors, + ThrowOnError + >({ + responseType: 'json', + security: [{ scheme: 'bearer', type: 'http' }], + url: '/tournaments/{tournament_id}/stage_items', + ...options, + headers: { + 'Content-Type': 'application/json', + ...options.headers, + }, + }); + +/** + * Delete Stage Item + */ +export const deleteStageItemTournamentsTournamentIdStageItemsStageItemIdDelete = < + ThrowOnError extends boolean = false, +>( + options: Options< + DeleteStageItemTournamentsTournamentIdStageItemsStageItemIdDeleteData, + ThrowOnError + > +) => + (options.client ?? client).delete< + DeleteStageItemTournamentsTournamentIdStageItemsStageItemIdDeleteResponses, + DeleteStageItemTournamentsTournamentIdStageItemsStageItemIdDeleteErrors, + ThrowOnError + >({ + responseType: 'json', + security: [{ scheme: 'bearer', type: 'http' }], + url: '/tournaments/{tournament_id}/stage_items/{stage_item_id}', + ...options, + }); + +/** + * Update Stage Item + */ +export const updateStageItemTournamentsTournamentIdStageItemsStageItemIdPut = < + ThrowOnError extends boolean = false, +>( + options: Options +) => + (options.client ?? client).put< + UpdateStageItemTournamentsTournamentIdStageItemsStageItemIdPutResponses, + UpdateStageItemTournamentsTournamentIdStageItemsStageItemIdPutErrors, + ThrowOnError + >({ + responseType: 'json', + security: [{ scheme: 'bearer', type: 'http' }], + url: '/tournaments/{tournament_id}/stage_items/{stage_item_id}', + ...options, + headers: { + 'Content-Type': 'application/json', + ...options.headers, + }, + }); + +/** + * Update Stage Item Input + */ +export const updateStageItemInputTournamentsTournamentIdStageItemsStageItemIdInputsStageItemInputIdPut = + ( + options: Options< + UpdateStageItemInputTournamentsTournamentIdStageItemsStageItemIdInputsStageItemInputIdPutData, + ThrowOnError + > + ) => + (options.client ?? client).put< + UpdateStageItemInputTournamentsTournamentIdStageItemsStageItemIdInputsStageItemInputIdPutResponses, + UpdateStageItemInputTournamentsTournamentIdStageItemsStageItemIdInputsStageItemInputIdPutErrors, + ThrowOnError + >({ + responseType: 'json', + security: [{ scheme: 'bearer', type: 'http' }], + url: '/tournaments/{tournament_id}/stage_items/{stage_item_id}/inputs/{stage_item_input_id}', + ...options, + headers: { + 'Content-Type': 'application/json', + ...options.headers, + }, + }); + +/** + * Start Next Round + */ +export const startNextRoundTournamentsTournamentIdStageItemsStageItemIdStartNextRoundPost = < + ThrowOnError extends boolean = false, +>( + options: Options< + StartNextRoundTournamentsTournamentIdStageItemsStageItemIdStartNextRoundPostData, + ThrowOnError + > +) => + (options.client ?? client).post< + StartNextRoundTournamentsTournamentIdStageItemsStageItemIdStartNextRoundPostResponses, + StartNextRoundTournamentsTournamentIdStageItemsStageItemIdStartNextRoundPostErrors, + ThrowOnError + >({ + responseType: 'json', + security: [{ scheme: 'bearer', type: 'http' }], + url: '/tournaments/{tournament_id}/stage_items/{stage_item_id}/start_next_round', + ...options, + headers: { + 'Content-Type': 'application/json', + ...options.headers, + }, + }); + +/** + * Get Matches To Schedule + */ +export const getMatchesToScheduleTournamentsTournamentIdStageItemsStageItemIdUpcomingMatchesGet = < + ThrowOnError extends boolean = false, +>( + options: Options< + GetMatchesToScheduleTournamentsTournamentIdStageItemsStageItemIdUpcomingMatchesGetData, + ThrowOnError + > +) => + (options.client ?? client).get< + GetMatchesToScheduleTournamentsTournamentIdStageItemsStageItemIdUpcomingMatchesGetResponses, + GetMatchesToScheduleTournamentsTournamentIdStageItemsStageItemIdUpcomingMatchesGetErrors, + ThrowOnError + >({ + responseType: 'json', + security: [{ scheme: 'bearer', type: 'http' }], + url: '/tournaments/{tournament_id}/stage_items/{stage_item_id}/upcoming_matches', + ...options, + }); + +/** + * Get Stages + */ +export const getStagesTournamentsTournamentIdStagesGet = ( + options: Options +) => + (options.client ?? client).get< + GetStagesTournamentsTournamentIdStagesGetResponses, + GetStagesTournamentsTournamentIdStagesGetErrors, + ThrowOnError + >({ + responseType: 'json', + url: '/tournaments/{tournament_id}/stages', + ...options, + }); + +/** + * Create Stage + */ +export const createStageTournamentsTournamentIdStagesPost = ( + options: Options +) => + (options.client ?? client).post< + CreateStageTournamentsTournamentIdStagesPostResponses, + CreateStageTournamentsTournamentIdStagesPostErrors, + ThrowOnError + >({ + responseType: 'json', + security: [{ scheme: 'bearer', type: 'http' }], + url: '/tournaments/{tournament_id}/stages', + ...options, + }); + +/** + * Activate Next Stage + */ +export const activateNextStageTournamentsTournamentIdStagesActivatePost = < + ThrowOnError extends boolean = false, +>( + options: Options +) => + (options.client ?? client).post< + ActivateNextStageTournamentsTournamentIdStagesActivatePostResponses, + ActivateNextStageTournamentsTournamentIdStagesActivatePostErrors, + ThrowOnError + >({ + responseType: 'json', + security: [{ scheme: 'bearer', type: 'http' }], + url: '/tournaments/{tournament_id}/stages/activate', + ...options, + headers: { + 'Content-Type': 'application/json', + ...options.headers, + }, + }); + +/** + * Delete Stage + */ +export const deleteStageTournamentsTournamentIdStagesStageIdDelete = < + ThrowOnError extends boolean = false, +>( + options: Options +) => + (options.client ?? client).delete< + DeleteStageTournamentsTournamentIdStagesStageIdDeleteResponses, + DeleteStageTournamentsTournamentIdStagesStageIdDeleteErrors, + ThrowOnError + >({ + responseType: 'json', + security: [{ scheme: 'bearer', type: 'http' }], + url: '/tournaments/{tournament_id}/stages/{stage_id}', + ...options, + }); + +/** + * Update Stage + */ +export const updateStageTournamentsTournamentIdStagesStageIdPut = < + ThrowOnError extends boolean = false, +>( + options: Options +) => + (options.client ?? client).put< + UpdateStageTournamentsTournamentIdStagesStageIdPutResponses, + UpdateStageTournamentsTournamentIdStagesStageIdPutErrors, + ThrowOnError + >({ + responseType: 'json', + security: [{ scheme: 'bearer', type: 'http' }], + url: '/tournaments/{tournament_id}/stages/{stage_id}', + ...options, + headers: { + 'Content-Type': 'application/json', + ...options.headers, + }, + }); + +/** + * Get Teams + */ +export const getTeamsTournamentsTournamentIdTeamsGet = ( + options: Options +) => + (options.client ?? client).get< + GetTeamsTournamentsTournamentIdTeamsGetResponses, + GetTeamsTournamentsTournamentIdTeamsGetErrors, + ThrowOnError + >({ + responseType: 'json', + url: '/tournaments/{tournament_id}/teams', + ...options, + }); + +/** + * Create Team + */ +export const createTeamTournamentsTournamentIdTeamsPost = ( + options: Options +) => + (options.client ?? client).post< + CreateTeamTournamentsTournamentIdTeamsPostResponses, + CreateTeamTournamentsTournamentIdTeamsPostErrors, + ThrowOnError + >({ + responseType: 'json', + security: [{ scheme: 'bearer', type: 'http' }], + url: '/tournaments/{tournament_id}/teams', + ...options, + headers: { + 'Content-Type': 'application/json', + ...options.headers, + }, + }); + +/** + * Delete Team + */ +export const deleteTeamTournamentsTournamentIdTeamsTeamIdDelete = < + ThrowOnError extends boolean = false, +>( + options: Options +) => + (options.client ?? client).delete< + DeleteTeamTournamentsTournamentIdTeamsTeamIdDeleteResponses, + DeleteTeamTournamentsTournamentIdTeamsTeamIdDeleteErrors, + ThrowOnError + >({ + responseType: 'json', + security: [{ scheme: 'bearer', type: 'http' }], + url: '/tournaments/{tournament_id}/teams/{team_id}', + ...options, + }); + +/** + * Update Team By Id + */ +export const updateTeamByIdTournamentsTournamentIdTeamsTeamIdPut = < + ThrowOnError extends boolean = false, +>( + options: Options +) => + (options.client ?? client).put< + UpdateTeamByIdTournamentsTournamentIdTeamsTeamIdPutResponses, + UpdateTeamByIdTournamentsTournamentIdTeamsTeamIdPutErrors, + ThrowOnError + >({ + responseType: 'json', + security: [{ scheme: 'bearer', type: 'http' }], + url: '/tournaments/{tournament_id}/teams/{team_id}', + ...options, + headers: { + 'Content-Type': 'application/json', + ...options.headers, + }, + }); + +/** + * Update Team Logo + */ +export const updateTeamLogoTournamentsTournamentIdTeamsTeamIdLogoPost = < + ThrowOnError extends boolean = false, +>( + options: Options +) => + (options.client ?? client).post< + UpdateTeamLogoTournamentsTournamentIdTeamsTeamIdLogoPostResponses, + UpdateTeamLogoTournamentsTournamentIdTeamsTeamIdLogoPostErrors, + ThrowOnError + >({ + ...formDataBodySerializer, + responseType: 'json', + security: [{ scheme: 'bearer', type: 'http' }], + url: '/tournaments/{tournament_id}/teams/{team_id}/logo', + ...options, + headers: { + 'Content-Type': null, + ...options.headers, + }, + }); + +/** + * Create Multiple Teams + */ +export const createMultipleTeamsTournamentsTournamentIdTeamsMultiPost = < + ThrowOnError extends boolean = false, +>( + options: Options +) => + (options.client ?? client).post< + CreateMultipleTeamsTournamentsTournamentIdTeamsMultiPostResponses, + CreateMultipleTeamsTournamentsTournamentIdTeamsMultiPostErrors, + ThrowOnError + >({ + responseType: 'json', + security: [{ scheme: 'bearer', type: 'http' }], + url: '/tournaments/{tournament_id}/teams_multi', + ...options, + headers: { + 'Content-Type': 'application/json', + ...options.headers, + }, + }); + +/** + * Get User + */ +export const getUserUsersMeGet = ( + options?: Options +) => + (options?.client ?? client).get({ + responseType: 'json', + security: [{ scheme: 'bearer', type: 'http' }], + url: '/users/me', + ...options, + }); + +/** + * Register User + */ +export const registerUserUsersRegisterPost = ( + options: Options +) => + (options.client ?? client).post< + RegisterUserUsersRegisterPostResponses, + RegisterUserUsersRegisterPostErrors, + ThrowOnError + >({ + responseType: 'json', + url: '/users/register', + ...options, + headers: { + 'Content-Type': 'application/json', + ...options.headers, + }, + }); + +/** + * Register Demo User + */ +export const registerDemoUserUsersRegisterDemoPost = ( + options: Options +) => + (options.client ?? client).post< + RegisterDemoUserUsersRegisterDemoPostResponses, + RegisterDemoUserUsersRegisterDemoPostErrors, + ThrowOnError + >({ + responseType: 'json', + url: '/users/register_demo', + ...options, + headers: { + 'Content-Type': 'application/json', + ...options.headers, + }, + }); + +/** + * Get Me + */ +export const getMeUsersUserIdGet = ( + options: Options +) => + (options.client ?? client).get< + GetMeUsersUserIdGetResponses, + GetMeUsersUserIdGetErrors, + ThrowOnError + >({ + responseType: 'json', + security: [{ scheme: 'bearer', type: 'http' }], + url: '/users/{user_id}', + ...options, + }); + +/** + * Update User Details + */ +export const updateUserDetailsUsersUserIdPut = ( + options: Options +) => + (options.client ?? client).put< + UpdateUserDetailsUsersUserIdPutResponses, + UpdateUserDetailsUsersUserIdPutErrors, + ThrowOnError + >({ + responseType: 'json', + security: [{ scheme: 'bearer', type: 'http' }], + url: '/users/{user_id}', + ...options, + headers: { + 'Content-Type': 'application/json', + ...options.headers, + }, + }); + +/** + * Put User Password + */ +export const putUserPasswordUsersUserIdPasswordPut = ( + options: Options +) => + (options.client ?? client).put< + PutUserPasswordUsersUserIdPasswordPutResponses, + PutUserPasswordUsersUserIdPasswordPutErrors, + ThrowOnError + >({ + responseType: 'json', + security: [{ scheme: 'bearer', type: 'http' }], + url: '/users/{user_id}/password', + ...options, + headers: { + 'Content-Type': 'application/json', + ...options.headers, + }, + }); diff --git a/frontend/src/openapi/types.gen.ts b/frontend/src/openapi/types.gen.ts new file mode 100644 index 000000000..d3c93b363 --- /dev/null +++ b/frontend/src/openapi/types.gen.ts @@ -0,0 +1,3740 @@ +// This file is auto-generated by @hey-api/openapi-ts + +export type ClientOptions = { + baseURL: `${string}://${string}` | (string & {}); +}; + +/** + * Body_login_for_access_token_token_post + */ +export type BodyLoginForAccessTokenTokenPost = { + /** + * Client Id + */ + client_id?: string | null; + /** + * Client Secret + */ + client_secret?: string | null; + /** + * Grant Type + */ + grant_type?: string | null; + /** + * Password + */ + password: string; + /** + * Scope + */ + scope?: string; + /** + * Username + */ + username: string; +}; + +/** + * Body_update_team_logo_tournaments__tournament_id__teams__team_id__logo_post + */ +export type BodyUpdateTeamLogoTournamentsTournamentIdTeamsTeamIdLogoPost = { + /** + * File + */ + file?: Blob | File | null; +}; + +/** + * Body_upload_logo_tournaments__tournament_id__logo_post + */ +export type BodyUploadLogoTournamentsTournamentIdLogoPost = { + /** + * File + */ + file?: Blob | File | null; +}; + +/** + * Club + */ +export type Club = { + /** + * Created + */ + created: string; + /** + * Id + */ + id: number; + /** + * Name + */ + name: string; +}; + +/** + * ClubCreateBody + */ +export type ClubCreateBody = { + /** + * Name + */ + name: string; +}; + +/** + * ClubResponse + */ +export type ClubResponse = { + data: Club | null; +}; + +/** + * ClubUpdateBody + */ +export type ClubUpdateBody = { + /** + * Name + */ + name: string; +}; + +/** + * ClubsResponse + */ +export type ClubsResponse = { + /** + * Data + */ + data: Array; +}; + +/** + * Court + */ +export type Court = { + /** + * Created + */ + created: string; + /** + * Id + */ + id: number; + /** + * Name + */ + name: string; + /** + * Tournament Id + */ + tournament_id: number; +}; + +/** + * CourtBody + */ +export type CourtBody = { + /** + * Name + */ + name: string; +}; + +/** + * CourtsResponse + */ +export type CourtsResponse = { + /** + * Data + */ + data: Array; +}; + +/** + * DemoUserToRegister + */ +export type DemoUserToRegister = { + /** + * Captcha Token + */ + captcha_token: string; +}; + +/** + * FullTeamWithPlayers + */ +export type FullTeamWithPlayers = { + /** + * Active + */ + active: boolean; + /** + * Created + */ + created: string; + /** + * Draws + */ + draws?: number; + /** + * Elo Score + */ + elo_score?: string; + /** + * Id + */ + id: number; + /** + * Logo Path + */ + logo_path?: string | null; + /** + * Losses + */ + losses?: number; + /** + * Name + */ + name: string; + /** + * Players + */ + players: Array; + /** + * Swiss Score + */ + swiss_score?: string; + /** + * Tournament Id + */ + tournament_id: number; + /** + * Wins + */ + wins?: number; +}; + +/** + * HTTPValidationError + */ +export type HttpValidationError = { + /** + * Detail + */ + detail?: Array; +}; + +/** + * Match + */ +export type Match = { + /** + * Court Id + */ + court_id?: number | null; + /** + * Created + */ + created: string; + /** + * Custom Duration Minutes + */ + custom_duration_minutes?: number | null; + /** + * Custom Margin Minutes + */ + custom_margin_minutes?: number | null; + /** + * Duration Minutes + */ + duration_minutes: number; + /** + * Id + */ + id: number; + /** + * Margin Minutes + */ + margin_minutes: number; + /** + * Position In Schedule + */ + position_in_schedule?: number | null; + /** + * Round Id + */ + round_id: number; + /** + * Stage Item Input1 + */ + stage_item_input1?: StageItemInputTentative | StageItemInputFinal | StageItemInputEmpty | null; + /** + * Stage Item Input1 Conflict + */ + stage_item_input1_conflict: boolean; + /** + * Stage Item Input1 Id + */ + stage_item_input1_id?: number | null; + /** + * Stage Item Input1 Score + */ + stage_item_input1_score: number; + /** + * Stage Item Input1 Winner From Match Id + */ + stage_item_input1_winner_from_match_id?: number | null; + /** + * Stage Item Input2 + */ + stage_item_input2?: StageItemInputTentative | StageItemInputFinal | StageItemInputEmpty | null; + /** + * Stage Item Input2 Conflict + */ + stage_item_input2_conflict: boolean; + /** + * Stage Item Input2 Id + */ + stage_item_input2_id?: number | null; + /** + * Stage Item Input2 Score + */ + stage_item_input2_score: number; + /** + * Stage Item Input2 Winner From Match Id + */ + stage_item_input2_winner_from_match_id?: number | null; + /** + * Start Time + */ + start_time?: string | null; +}; + +/** + * MatchBody + */ +export type MatchBody = { + /** + * Court Id + */ + court_id?: number | null; + /** + * Custom Duration Minutes + */ + custom_duration_minutes?: number | null; + /** + * Custom Margin Minutes + */ + custom_margin_minutes?: number | null; + /** + * Round Id + */ + round_id: number; + /** + * Stage Item Input1 Score + */ + stage_item_input1_score?: number; + /** + * Stage Item Input2 Score + */ + stage_item_input2_score?: number; +}; + +/** + * MatchCreateBodyFrontend + */ +export type MatchCreateBodyFrontend = { + /** + * Court Id + */ + court_id?: number | null; + /** + * Round Id + */ + round_id: number; + /** + * Stage Item Input1 Id + */ + stage_item_input1_id?: number | null; + /** + * Stage Item Input1 Winner From Match Id + */ + stage_item_input1_winner_from_match_id?: number | null; + /** + * Stage Item Input2 Id + */ + stage_item_input2_id?: number | null; + /** + * Stage Item Input2 Winner From Match Id + */ + stage_item_input2_winner_from_match_id?: number | null; +}; + +/** + * MatchRescheduleBody + */ +export type MatchRescheduleBody = { + /** + * New Court Id + */ + new_court_id: number; + /** + * New Position + */ + new_position: number; + /** + * Old Court Id + */ + old_court_id: number; + /** + * Old Position + */ + old_position: number; +}; + +/** + * MatchWithDetails + * + * MatchWithDetails has zero or one defined stage item inputs, but not both. + */ +export type MatchWithDetails = { + court?: Court | null; + /** + * Court Id + */ + court_id?: number | null; + /** + * Created + */ + created: string; + /** + * Custom Duration Minutes + */ + custom_duration_minutes?: number | null; + /** + * Custom Margin Minutes + */ + custom_margin_minutes?: number | null; + /** + * Duration Minutes + */ + duration_minutes: number; + /** + * Id + */ + id: number; + /** + * Margin Minutes + */ + margin_minutes: number; + /** + * Position In Schedule + */ + position_in_schedule?: number | null; + /** + * Round Id + */ + round_id: number; + /** + * Stage Item Input1 + */ + stage_item_input1?: StageItemInputTentative | StageItemInputFinal | StageItemInputEmpty | null; + /** + * Stage Item Input1 Conflict + */ + stage_item_input1_conflict: boolean; + /** + * Stage Item Input1 Id + */ + stage_item_input1_id?: number | null; + /** + * Stage Item Input1 Score + */ + stage_item_input1_score: number; + /** + * Stage Item Input1 Winner From Match Id + */ + stage_item_input1_winner_from_match_id?: number | null; + /** + * Stage Item Input2 + */ + stage_item_input2?: StageItemInputTentative | StageItemInputFinal | StageItemInputEmpty | null; + /** + * Stage Item Input2 Conflict + */ + stage_item_input2_conflict: boolean; + /** + * Stage Item Input2 Id + */ + stage_item_input2_id?: number | null; + /** + * Stage Item Input2 Score + */ + stage_item_input2_score: number; + /** + * Stage Item Input2 Winner From Match Id + */ + stage_item_input2_winner_from_match_id?: number | null; + /** + * Start Time + */ + start_time?: string | null; +}; + +/** + * MatchWithDetailsDefinitive + */ +export type MatchWithDetailsDefinitive = { + court?: Court | null; + /** + * Court Id + */ + court_id?: number | null; + /** + * Created + */ + created: string; + /** + * Custom Duration Minutes + */ + custom_duration_minutes?: number | null; + /** + * Custom Margin Minutes + */ + custom_margin_minutes?: number | null; + /** + * Duration Minutes + */ + duration_minutes: number; + /** + * Id + */ + id: number; + /** + * Margin Minutes + */ + margin_minutes: number; + /** + * Position In Schedule + */ + position_in_schedule?: number | null; + /** + * Round Id + */ + round_id: number; + /** + * Stage Item Input1 + */ + stage_item_input1: StageItemInputTentative | StageItemInputFinal | StageItemInputEmpty; + /** + * Stage Item Input1 Conflict + */ + stage_item_input1_conflict: boolean; + /** + * Stage Item Input1 Id + */ + stage_item_input1_id?: number | null; + /** + * Stage Item Input1 Score + */ + stage_item_input1_score: number; + /** + * Stage Item Input1 Winner From Match Id + */ + stage_item_input1_winner_from_match_id?: number | null; + /** + * Stage Item Input2 + */ + stage_item_input2: StageItemInputTentative | StageItemInputFinal | StageItemInputEmpty; + /** + * Stage Item Input2 Conflict + */ + stage_item_input2_conflict: boolean; + /** + * Stage Item Input2 Id + */ + stage_item_input2_id?: number | null; + /** + * Stage Item Input2 Score + */ + stage_item_input2_score: number; + /** + * Stage Item Input2 Winner From Match Id + */ + stage_item_input2_winner_from_match_id?: number | null; + /** + * Start Time + */ + start_time?: string | null; +}; + +/** + * PaginatedPlayers + */ +export type PaginatedPlayers = { + /** + * Count + */ + count: number; + /** + * Players + */ + players: Array; +}; + +/** + * PaginatedTeams + */ +export type PaginatedTeams = { + /** + * Count + */ + count: number; + /** + * Teams + */ + teams: Array; +}; + +/** + * Player + */ +export type Player = { + /** + * Active + */ + active: boolean; + /** + * Created + */ + created: string; + /** + * Draws + */ + draws?: number; + /** + * Elo Score + */ + elo_score?: string; + /** + * Id + */ + id: number; + /** + * Losses + */ + losses?: number; + /** + * Name + */ + name: string; + /** + * Swiss Score + */ + swiss_score?: string; + /** + * Tournament Id + */ + tournament_id: number; + /** + * Wins + */ + wins?: number; +}; + +/** + * PlayerBody + */ +export type PlayerBody = { + /** + * Active + */ + active: boolean; + /** + * Name + */ + name: string; +}; + +/** + * PlayerMultiBody + */ +export type PlayerMultiBody = { + /** + * Active + */ + active: boolean; + /** + * Names + */ + names: string; +}; + +/** + * PlayersResponse + */ +export type PlayersResponse = { + data: PaginatedPlayers; +}; + +/** + * Ranking + */ +export type Ranking = { + /** + * Add Score Points + */ + add_score_points: boolean; + /** + * Created + */ + created: string; + /** + * Draw Points + */ + draw_points: string; + /** + * Id + */ + id: number; + /** + * Loss Points + */ + loss_points: string; + /** + * Position + */ + position: number; + /** + * Tournament Id + */ + tournament_id: number; + /** + * Win Points + */ + win_points: string; +}; + +/** + * RankingBody + */ +export type RankingBody = { + /** + * Add Score Points + */ + add_score_points: boolean; + /** + * Draw Points + */ + draw_points: number | string; + /** + * Loss Points + */ + loss_points: number | string; + /** + * Position + */ + position: number; + /** + * Win Points + */ + win_points: number | string; +}; + +/** + * RankingCreateBody + */ +export type RankingCreateBody = { + /** + * Add Score Points + */ + add_score_points?: boolean; + /** + * Draw Points + */ + draw_points?: number | string; + /** + * Loss Points + */ + loss_points?: number | string; + /** + * Win Points + */ + win_points?: number | string; +}; + +/** + * RankingsResponse + */ +export type RankingsResponse = { + /** + * Data + */ + data: Array; +}; + +/** + * RoundCreateBody + */ +export type RoundCreateBody = { + /** + * Name + */ + name?: string | null; + /** + * Stage Item Id + */ + stage_item_id: number; +}; + +/** + * RoundUpdateBody + */ +export type RoundUpdateBody = { + /** + * Is Draft + */ + is_draft: boolean; + /** + * Name + */ + name: string; +}; + +/** + * RoundWithMatches + */ +export type RoundWithMatches = { + /** + * Created + */ + created: string; + /** + * Id + */ + id: number; + /** + * Is Draft + */ + is_draft: boolean; + /** + * Matches + */ + matches: Array; + /** + * Name + */ + name: string; + /** + * Stage Item Id + */ + stage_item_id: number; +}; + +/** + * SingleCourtResponse + */ +export type SingleCourtResponse = { + data: Court; +}; + +/** + * SingleMatchResponse + */ +export type SingleMatchResponse = { + data: Match; +}; + +/** + * SinglePlayerResponse + */ +export type SinglePlayerResponse = { + data: Player; +}; + +/** + * SingleTeamResponse + */ +export type SingleTeamResponse = { + data: Team; +}; + +/** + * StageActivateBody + */ +export type StageActivateBody = { + /** + * Direction + */ + direction?: 'next' | 'previous'; +}; + +/** + * StageItemActivateNextBody + */ +export type StageItemActivateNextBody = { + /** + * Adjust To Time + */ + adjust_to_time?: string | null; +}; + +/** + * StageItemCreateBody + */ +export type StageItemCreateBody = { + /** + * Name + */ + name?: string | null; + /** + * Ranking Id + */ + ranking_id?: number | null; + /** + * Stage Id + */ + stage_id: number; + /** + * Team Count + */ + team_count: number; + type: StageType; +}; + +/** + * StageItemInputEmpty + */ +export type StageItemInputEmpty = { + /** + * Draws + */ + draws?: number; + /** + * Id + */ + id: number; + /** + * Losses + */ + losses?: number; + /** + * Points + */ + points?: string; + /** + * Slot + */ + slot: number; + /** + * Stage Item Id + */ + stage_item_id?: number | null; + /** + * Team Id + */ + team_id?: null; + /** + * Tournament Id + */ + tournament_id: number; + /** + * Winner From Stage Item Id + */ + winner_from_stage_item_id?: null; + /** + * Winner Position + */ + winner_position?: null; + /** + * Wins + */ + wins?: number; +}; + +/** + * StageItemInputFinal + */ +export type StageItemInputFinal = { + /** + * Draws + */ + draws?: number; + /** + * Id + */ + id: number; + /** + * Losses + */ + losses?: number; + /** + * Points + */ + points?: string; + /** + * Slot + */ + slot: number; + /** + * Stage Item Id + */ + stage_item_id?: number | null; + team: Team; + /** + * Team Id + */ + team_id: number; + /** + * Tournament Id + */ + tournament_id: number; + /** + * Winner From Stage Item Id + */ + winner_from_stage_item_id?: number | null; + /** + * Winner Position + */ + winner_position?: number | null; + /** + * Wins + */ + wins?: number; +}; + +/** + * StageItemInputOptionFinal + */ +export type StageItemInputOptionFinal = { + /** + * Already Taken + */ + already_taken: boolean; + /** + * Team Id + */ + team_id: number; +}; + +/** + * StageItemInputOptionTentative + */ +export type StageItemInputOptionTentative = { + /** + * Already Taken + */ + already_taken: boolean; + /** + * Winner From Stage Item Id + */ + winner_from_stage_item_id: number; + /** + * Winner Position + */ + winner_position: number; +}; + +/** + * StageItemInputOptionsResponse + */ +export type StageItemInputOptionsResponse = { + /** + * Data + */ + data: { + [key: string]: Array; + }; +}; + +/** + * StageItemInputTentative + */ +export type StageItemInputTentative = { + /** + * Draws + */ + draws?: number; + /** + * Id + */ + id: number; + /** + * Losses + */ + losses?: number; + /** + * Points + */ + points?: string; + /** + * Slot + */ + slot: number; + /** + * Stage Item Id + */ + stage_item_id?: number | null; + /** + * Team Id + */ + team_id?: null; + /** + * Tournament Id + */ + tournament_id: number; + /** + * Winner From Stage Item Id + */ + winner_from_stage_item_id: number; + /** + * Winner Position + */ + winner_position: number; + /** + * Wins + */ + wins?: number; +}; + +/** + * StageItemInputUpdate + */ +export type StageItemInputUpdate = { + stage_item_input: StageItemInputTentative; + team: Team; +}; + +/** + * StageItemInputUpdateBodyEmpty + */ +export type StageItemInputUpdateBodyEmpty = { + /** + * Team Id + */ + team_id?: null; + /** + * Winner From Stage Item Id + */ + winner_from_stage_item_id?: null; + /** + * Winner Position + */ + winner_position?: null; +}; + +/** + * StageItemInputUpdateBodyFinal + */ +export type StageItemInputUpdateBodyFinal = { + /** + * Team Id + */ + team_id: number; +}; + +/** + * StageItemInputUpdateBodyTentative + */ +export type StageItemInputUpdateBodyTentative = { + /** + * Winner From Stage Item Id + */ + winner_from_stage_item_id: number; + /** + * Winner Position + */ + winner_position: number; +}; + +/** + * StageItemUpdateBody + */ +export type StageItemUpdateBody = { + /** + * Name + */ + name: string; + /** + * Ranking Id + */ + ranking_id: number; +}; + +/** + * StageItemWithRounds + */ +export type StageItemWithRounds = { + /** + * Created + */ + created: string; + /** + * Id + */ + id: number; + /** + * Inputs + */ + inputs: Array; + /** + * Name + */ + name: string; + /** + * Ranking Id + */ + ranking_id?: number | null; + /** + * Rounds + */ + rounds: Array; + /** + * Stage Id + */ + stage_id: number; + /** + * Team Count + */ + team_count: number; + type: StageType; + /** + * Type Name + */ + type_name: string; +}; + +/** + * StageRankingResponse + */ +export type StageRankingResponse = { + /** + * Data + */ + data: { + [key: string]: Array; + }; +}; + +/** + * StageType + */ +export type StageType = 'ROUND_ROBIN' | 'SINGLE_ELIMINATION' | 'SWISS'; + +/** + * StageUpdateBody + */ +export type StageUpdateBody = { + /** + * Name + */ + name: string; +}; + +/** + * StageWithStageItems + */ +export type StageWithStageItems = { + /** + * Created + */ + created: string; + /** + * Id + */ + id: number; + /** + * Is Active + */ + is_active: boolean; + /** + * Name + */ + name: string; + /** + * Stage Items + */ + stage_items: Array; + /** + * Tournament Id + */ + tournament_id: number; +}; + +/** + * StagesWithStageItemsResponse + */ +export type StagesWithStageItemsResponse = { + /** + * Data + */ + data: Array; +}; + +/** + * SuccessResponse + */ +export type SuccessResponse = { + /** + * Success + */ + success?: boolean; +}; + +/** + * SuggestedMatch + */ +export type SuggestedMatch = { + /** + * Elo Diff + */ + elo_diff: string; + /** + * Is Recommended + */ + is_recommended: boolean; + /** + * Player Behind Schedule Count + */ + player_behind_schedule_count: number; + /** + * Stage Item Input1 + */ + stage_item_input1: StageItemInputTentative | StageItemInputFinal | StageItemInputEmpty; + /** + * Stage Item Input2 + */ + stage_item_input2: StageItemInputTentative | StageItemInputFinal | StageItemInputEmpty; + /** + * Swiss Diff + */ + swiss_diff: string; + /** + * Times Played Sum + */ + times_played_sum: number; +}; + +/** + * Team + */ +export type Team = { + /** + * Active + */ + active: boolean; + /** + * Created + */ + created: string; + /** + * Draws + */ + draws?: number; + /** + * Elo Score + */ + elo_score?: string; + /** + * Id + */ + id: number; + /** + * Logo Path + */ + logo_path?: string | null; + /** + * Losses + */ + losses?: number; + /** + * Name + */ + name: string; + /** + * Swiss Score + */ + swiss_score?: string; + /** + * Tournament Id + */ + tournament_id: number; + /** + * Wins + */ + wins?: number; +}; + +/** + * TeamBody + */ +export type TeamBody = { + /** + * Active + */ + active: boolean; + /** + * Name + */ + name: string; + /** + * Player Ids + */ + player_ids: Array; +}; + +/** + * TeamMultiBody + */ +export type TeamMultiBody = { + /** + * Active + */ + active: boolean; + /** + * Names + */ + names: string; +}; + +/** + * TeamsWithPlayersResponse + */ +export type TeamsWithPlayersResponse = { + data: PaginatedTeams; +}; + +/** + * Token + */ +export type Token = { + /** + * Access Token + */ + access_token: string; + /** + * Token Type + */ + token_type: string; + /** + * User Id + */ + user_id: number; +}; + +/** + * TokenResponse + */ +export type TokenResponse = { + data: Token; +}; + +/** + * Tournament + */ +export type Tournament = { + /** + * Auto Assign Courts + */ + auto_assign_courts: boolean; + /** + * Club Id + */ + club_id: number; + /** + * Created + */ + created: string; + /** + * Dashboard Endpoint + */ + dashboard_endpoint?: string | null; + /** + * Dashboard Public + */ + dashboard_public: boolean; + /** + * Duration Minutes + */ + duration_minutes: number; + /** + * Id + */ + id: number; + /** + * Logo Path + */ + logo_path?: string | null; + /** + * Margin Minutes + */ + margin_minutes: number; + /** + * Name + */ + name: string; + /** + * Players Can Be In Multiple Teams + */ + players_can_be_in_multiple_teams: boolean; + /** + * Start Time + */ + start_time: string; + status?: TournamentStatus; +}; + +/** + * TournamentBody + */ +export type TournamentBody = { + /** + * Auto Assign Courts + */ + auto_assign_courts: boolean; + /** + * Club Id + */ + club_id: number; + /** + * Dashboard Endpoint + */ + dashboard_endpoint?: unknown | string; + /** + * Dashboard Public + */ + dashboard_public: boolean; + /** + * Duration Minutes + */ + duration_minutes: number; + /** + * Margin Minutes + */ + margin_minutes: number; + /** + * Name + */ + name: string; + /** + * Players Can Be In Multiple Teams + */ + players_can_be_in_multiple_teams: boolean; + /** + * Start Time + */ + start_time: string; +}; + +/** + * TournamentChangeStatusBody + */ +export type TournamentChangeStatusBody = { + status: TournamentStatus; +}; + +/** + * TournamentResponse + */ +export type TournamentResponse = { + data: Tournament; +}; + +/** + * TournamentStatus + */ +export type TournamentStatus = 'OPEN' | 'ARCHIVED'; + +/** + * TournamentUpdateBody + */ +export type TournamentUpdateBody = { + /** + * Auto Assign Courts + */ + auto_assign_courts: boolean; + /** + * Dashboard Endpoint + */ + dashboard_endpoint?: unknown | string; + /** + * Dashboard Public + */ + dashboard_public: boolean; + /** + * Duration Minutes + */ + duration_minutes: number; + /** + * Margin Minutes + */ + margin_minutes: number; + /** + * Name + */ + name: string; + /** + * Players Can Be In Multiple Teams + */ + players_can_be_in_multiple_teams: boolean; + /** + * Start Time + */ + start_time: string; +}; + +/** + * TournamentsResponse + */ +export type TournamentsResponse = { + /** + * Data + */ + data: Array; +}; + +/** + * UpcomingMatchesResponse + */ +export type UpcomingMatchesResponse = { + /** + * Data + */ + data: Array; +}; + +/** + * UserAccountType + */ +export type UserAccountType = 'REGULAR' | 'DEMO'; + +/** + * UserPasswordToUpdate + */ +export type UserPasswordToUpdate = { + /** + * Password + */ + password: string; +}; + +/** + * UserPublic + */ +export type UserPublic = { + account_type: UserAccountType; + /** + * Created + */ + created: string; + /** + * Email + */ + email: string; + /** + * Id + */ + id: number; + /** + * Name + */ + name: string; +}; + +/** + * UserPublicResponse + */ +export type UserPublicResponse = { + data: UserPublic; +}; + +/** + * UserToRegister + */ +export type UserToRegister = { + /** + * Captcha Token + */ + captcha_token: string; + /** + * Email + */ + email: string; + /** + * Name + */ + name: string; + /** + * Password + */ + password: string; +}; + +/** + * UserToUpdate + */ +export type UserToUpdate = { + /** + * Email + */ + email: string; + /** + * Name + */ + name: string; +}; + +/** + * ValidationError + */ +export type ValidationError = { + /** + * Location + */ + loc: Array; + /** + * Message + */ + msg: string; + /** + * Error Type + */ + type: string; +}; + +export type GetClubsClubsGetData = { + body?: never; + path?: never; + query?: never; + url: '/clubs'; +}; + +export type GetClubsClubsGetResponses = { + /** + * Successful Response + */ + 200: ClubsResponse; +}; + +export type GetClubsClubsGetResponse = GetClubsClubsGetResponses[keyof GetClubsClubsGetResponses]; + +export type CreateNewClubClubsPostData = { + body: ClubCreateBody; + path?: never; + query?: never; + url: '/clubs'; +}; + +export type CreateNewClubClubsPostErrors = { + /** + * Validation Error + */ + 422: HttpValidationError; +}; + +export type CreateNewClubClubsPostError = + CreateNewClubClubsPostErrors[keyof CreateNewClubClubsPostErrors]; + +export type CreateNewClubClubsPostResponses = { + /** + * Successful Response + */ + 200: ClubResponse; +}; + +export type CreateNewClubClubsPostResponse = + CreateNewClubClubsPostResponses[keyof CreateNewClubClubsPostResponses]; + +export type DeleteClubClubsClubIdDeleteData = { + body?: never; + path: { + /** + * Club Id + */ + club_id: number; + }; + query?: never; + url: '/clubs/{club_id}'; +}; + +export type DeleteClubClubsClubIdDeleteErrors = { + /** + * Validation Error + */ + 422: HttpValidationError; +}; + +export type DeleteClubClubsClubIdDeleteError = + DeleteClubClubsClubIdDeleteErrors[keyof DeleteClubClubsClubIdDeleteErrors]; + +export type DeleteClubClubsClubIdDeleteResponses = { + /** + * Successful Response + */ + 200: SuccessResponse; +}; + +export type DeleteClubClubsClubIdDeleteResponse = + DeleteClubClubsClubIdDeleteResponses[keyof DeleteClubClubsClubIdDeleteResponses]; + +export type UpdateClubClubsClubIdPutData = { + body: ClubUpdateBody; + path: { + /** + * Club Id + */ + club_id: number; + }; + query?: never; + url: '/clubs/{club_id}'; +}; + +export type UpdateClubClubsClubIdPutErrors = { + /** + * Validation Error + */ + 422: HttpValidationError; +}; + +export type UpdateClubClubsClubIdPutError = + UpdateClubClubsClubIdPutErrors[keyof UpdateClubClubsClubIdPutErrors]; + +export type UpdateClubClubsClubIdPutResponses = { + /** + * Successful Response + */ + 200: ClubResponse; +}; + +export type UpdateClubClubsClubIdPutResponse = + UpdateClubClubsClubIdPutResponses[keyof UpdateClubClubsClubIdPutResponses]; + +export type GetMetricsMetricsGetData = { + body?: never; + path?: never; + query?: never; + url: '/metrics'; +}; + +export type GetMetricsMetricsGetResponses = { + /** + * Successful Response + */ + 200: string; +}; + +export type GetMetricsMetricsGetResponse = + GetMetricsMetricsGetResponses[keyof GetMetricsMetricsGetResponses]; + +export type PingPingGetData = { + body?: never; + path?: never; + query?: never; + url: '/ping'; +}; + +export type PingPingGetResponses = { + /** + * Response Ping Ping Get + * + * Successful Response + */ + 200: string; +}; + +export type PingPingGetResponse = PingPingGetResponses[keyof PingPingGetResponses]; + +export type LoginForAccessTokenTokenPostData = { + body: BodyLoginForAccessTokenTokenPost; + path?: never; + query?: never; + url: '/token'; +}; + +export type LoginForAccessTokenTokenPostErrors = { + /** + * Validation Error + */ + 422: HttpValidationError; +}; + +export type LoginForAccessTokenTokenPostError = + LoginForAccessTokenTokenPostErrors[keyof LoginForAccessTokenTokenPostErrors]; + +export type LoginForAccessTokenTokenPostResponses = { + /** + * Successful Response + */ + 200: Token; +}; + +export type LoginForAccessTokenTokenPostResponse = + LoginForAccessTokenTokenPostResponses[keyof LoginForAccessTokenTokenPostResponses]; + +export type GetTournamentsTournamentsGetData = { + body?: never; + path?: never; + query?: { + /** + * Filter + */ + filter_?: 'ALL' | 'OPEN' | 'ARCHIVED'; + /** + * Endpoint Name + */ + endpoint_name?: string | null; + }; + url: '/tournaments'; +}; + +export type GetTournamentsTournamentsGetErrors = { + /** + * Validation Error + */ + 422: HttpValidationError; +}; + +export type GetTournamentsTournamentsGetError = + GetTournamentsTournamentsGetErrors[keyof GetTournamentsTournamentsGetErrors]; + +export type GetTournamentsTournamentsGetResponses = { + /** + * Successful Response + */ + 200: TournamentsResponse; +}; + +export type GetTournamentsTournamentsGetResponse = + GetTournamentsTournamentsGetResponses[keyof GetTournamentsTournamentsGetResponses]; + +export type CreateTournamentTournamentsPostData = { + body: TournamentBody; + path?: never; + query?: never; + url: '/tournaments'; +}; + +export type CreateTournamentTournamentsPostErrors = { + /** + * Validation Error + */ + 422: HttpValidationError; +}; + +export type CreateTournamentTournamentsPostError = + CreateTournamentTournamentsPostErrors[keyof CreateTournamentTournamentsPostErrors]; + +export type CreateTournamentTournamentsPostResponses = { + /** + * Successful Response + */ + 200: SuccessResponse; +}; + +export type CreateTournamentTournamentsPostResponse = + CreateTournamentTournamentsPostResponses[keyof CreateTournamentTournamentsPostResponses]; + +export type DeleteTournamentTournamentsTournamentIdDeleteData = { + body?: never; + path: { + /** + * Tournament Id + */ + tournament_id: number; + }; + query?: never; + url: '/tournaments/{tournament_id}'; +}; + +export type DeleteTournamentTournamentsTournamentIdDeleteErrors = { + /** + * Validation Error + */ + 422: HttpValidationError; +}; + +export type DeleteTournamentTournamentsTournamentIdDeleteError = + DeleteTournamentTournamentsTournamentIdDeleteErrors[keyof DeleteTournamentTournamentsTournamentIdDeleteErrors]; + +export type DeleteTournamentTournamentsTournamentIdDeleteResponses = { + /** + * Successful Response + */ + 200: SuccessResponse; +}; + +export type DeleteTournamentTournamentsTournamentIdDeleteResponse = + DeleteTournamentTournamentsTournamentIdDeleteResponses[keyof DeleteTournamentTournamentsTournamentIdDeleteResponses]; + +export type GetTournamentTournamentsTournamentIdGetData = { + body?: never; + path: { + /** + * Tournament Id + */ + tournament_id: number; + }; + query?: never; + url: '/tournaments/{tournament_id}'; +}; + +export type GetTournamentTournamentsTournamentIdGetErrors = { + /** + * Validation Error + */ + 422: HttpValidationError; +}; + +export type GetTournamentTournamentsTournamentIdGetError = + GetTournamentTournamentsTournamentIdGetErrors[keyof GetTournamentTournamentsTournamentIdGetErrors]; + +export type GetTournamentTournamentsTournamentIdGetResponses = { + /** + * Successful Response + */ + 200: TournamentResponse; +}; + +export type GetTournamentTournamentsTournamentIdGetResponse = + GetTournamentTournamentsTournamentIdGetResponses[keyof GetTournamentTournamentsTournamentIdGetResponses]; + +export type UpdateTournamentByIdTournamentsTournamentIdPutData = { + body: TournamentUpdateBody; + path: { + /** + * Tournament Id + */ + tournament_id: number; + }; + query?: never; + url: '/tournaments/{tournament_id}'; +}; + +export type UpdateTournamentByIdTournamentsTournamentIdPutErrors = { + /** + * Validation Error + */ + 422: HttpValidationError; +}; + +export type UpdateTournamentByIdTournamentsTournamentIdPutError = + UpdateTournamentByIdTournamentsTournamentIdPutErrors[keyof UpdateTournamentByIdTournamentsTournamentIdPutErrors]; + +export type UpdateTournamentByIdTournamentsTournamentIdPutResponses = { + /** + * Successful Response + */ + 200: SuccessResponse; +}; + +export type UpdateTournamentByIdTournamentsTournamentIdPutResponse = + UpdateTournamentByIdTournamentsTournamentIdPutResponses[keyof UpdateTournamentByIdTournamentsTournamentIdPutResponses]; + +export type GetAvailableInputsTournamentsTournamentIdAvailableInputsGetData = { + body?: never; + path: { + /** + * Tournament Id + */ + tournament_id: number; + }; + query?: never; + url: '/tournaments/{tournament_id}/available_inputs'; +}; + +export type GetAvailableInputsTournamentsTournamentIdAvailableInputsGetErrors = { + /** + * Validation Error + */ + 422: HttpValidationError; +}; + +export type GetAvailableInputsTournamentsTournamentIdAvailableInputsGetError = + GetAvailableInputsTournamentsTournamentIdAvailableInputsGetErrors[keyof GetAvailableInputsTournamentsTournamentIdAvailableInputsGetErrors]; + +export type GetAvailableInputsTournamentsTournamentIdAvailableInputsGetResponses = { + /** + * Successful Response + */ + 200: StageItemInputOptionsResponse; +}; + +export type GetAvailableInputsTournamentsTournamentIdAvailableInputsGetResponse = + GetAvailableInputsTournamentsTournamentIdAvailableInputsGetResponses[keyof GetAvailableInputsTournamentsTournamentIdAvailableInputsGetResponses]; + +export type ChangeStatusTournamentsTournamentIdChangeStatusPostData = { + body: TournamentChangeStatusBody; + path: { + /** + * Tournament Id + */ + tournament_id: number; + }; + query?: never; + url: '/tournaments/{tournament_id}/change-status'; +}; + +export type ChangeStatusTournamentsTournamentIdChangeStatusPostErrors = { + /** + * Validation Error + */ + 422: HttpValidationError; +}; + +export type ChangeStatusTournamentsTournamentIdChangeStatusPostError = + ChangeStatusTournamentsTournamentIdChangeStatusPostErrors[keyof ChangeStatusTournamentsTournamentIdChangeStatusPostErrors]; + +export type ChangeStatusTournamentsTournamentIdChangeStatusPostResponses = { + /** + * Successful Response + */ + 200: SuccessResponse; +}; + +export type ChangeStatusTournamentsTournamentIdChangeStatusPostResponse = + ChangeStatusTournamentsTournamentIdChangeStatusPostResponses[keyof ChangeStatusTournamentsTournamentIdChangeStatusPostResponses]; + +export type GetCourtsTournamentsTournamentIdCourtsGetData = { + body?: never; + path: { + /** + * Tournament Id + */ + tournament_id: number; + }; + query?: never; + url: '/tournaments/{tournament_id}/courts'; +}; + +export type GetCourtsTournamentsTournamentIdCourtsGetErrors = { + /** + * Validation Error + */ + 422: HttpValidationError; +}; + +export type GetCourtsTournamentsTournamentIdCourtsGetError = + GetCourtsTournamentsTournamentIdCourtsGetErrors[keyof GetCourtsTournamentsTournamentIdCourtsGetErrors]; + +export type GetCourtsTournamentsTournamentIdCourtsGetResponses = { + /** + * Successful Response + */ + 200: CourtsResponse; +}; + +export type GetCourtsTournamentsTournamentIdCourtsGetResponse = + GetCourtsTournamentsTournamentIdCourtsGetResponses[keyof GetCourtsTournamentsTournamentIdCourtsGetResponses]; + +export type CreateCourtTournamentsTournamentIdCourtsPostData = { + body: CourtBody; + path: { + /** + * Tournament Id + */ + tournament_id: number; + }; + query?: never; + url: '/tournaments/{tournament_id}/courts'; +}; + +export type CreateCourtTournamentsTournamentIdCourtsPostErrors = { + /** + * Validation Error + */ + 422: HttpValidationError; +}; + +export type CreateCourtTournamentsTournamentIdCourtsPostError = + CreateCourtTournamentsTournamentIdCourtsPostErrors[keyof CreateCourtTournamentsTournamentIdCourtsPostErrors]; + +export type CreateCourtTournamentsTournamentIdCourtsPostResponses = { + /** + * Successful Response + */ + 200: SingleCourtResponse; +}; + +export type CreateCourtTournamentsTournamentIdCourtsPostResponse = + CreateCourtTournamentsTournamentIdCourtsPostResponses[keyof CreateCourtTournamentsTournamentIdCourtsPostResponses]; + +export type DeleteCourtTournamentsTournamentIdCourtsCourtIdDeleteData = { + body?: never; + path: { + /** + * Tournament Id + */ + tournament_id: number; + /** + * Court Id + */ + court_id: number; + }; + query?: never; + url: '/tournaments/{tournament_id}/courts/{court_id}'; +}; + +export type DeleteCourtTournamentsTournamentIdCourtsCourtIdDeleteErrors = { + /** + * Validation Error + */ + 422: HttpValidationError; +}; + +export type DeleteCourtTournamentsTournamentIdCourtsCourtIdDeleteError = + DeleteCourtTournamentsTournamentIdCourtsCourtIdDeleteErrors[keyof DeleteCourtTournamentsTournamentIdCourtsCourtIdDeleteErrors]; + +export type DeleteCourtTournamentsTournamentIdCourtsCourtIdDeleteResponses = { + /** + * Successful Response + */ + 200: SuccessResponse; +}; + +export type DeleteCourtTournamentsTournamentIdCourtsCourtIdDeleteResponse = + DeleteCourtTournamentsTournamentIdCourtsCourtIdDeleteResponses[keyof DeleteCourtTournamentsTournamentIdCourtsCourtIdDeleteResponses]; + +export type UpdateCourtByIdTournamentsTournamentIdCourtsCourtIdPutData = { + body: CourtBody; + path: { + /** + * Tournament Id + */ + tournament_id: number; + /** + * Court Id + */ + court_id: number; + }; + query?: never; + url: '/tournaments/{tournament_id}/courts/{court_id}'; +}; + +export type UpdateCourtByIdTournamentsTournamentIdCourtsCourtIdPutErrors = { + /** + * Validation Error + */ + 422: HttpValidationError; +}; + +export type UpdateCourtByIdTournamentsTournamentIdCourtsCourtIdPutError = + UpdateCourtByIdTournamentsTournamentIdCourtsCourtIdPutErrors[keyof UpdateCourtByIdTournamentsTournamentIdCourtsCourtIdPutErrors]; + +export type UpdateCourtByIdTournamentsTournamentIdCourtsCourtIdPutResponses = { + /** + * Successful Response + */ + 200: SingleCourtResponse; +}; + +export type UpdateCourtByIdTournamentsTournamentIdCourtsCourtIdPutResponse = + UpdateCourtByIdTournamentsTournamentIdCourtsCourtIdPutResponses[keyof UpdateCourtByIdTournamentsTournamentIdCourtsCourtIdPutResponses]; + +export type UploadLogoTournamentsTournamentIdLogoPostData = { + body?: BodyUploadLogoTournamentsTournamentIdLogoPost; + path: { + /** + * Tournament Id + */ + tournament_id: number; + }; + query?: never; + url: '/tournaments/{tournament_id}/logo'; +}; + +export type UploadLogoTournamentsTournamentIdLogoPostErrors = { + /** + * Validation Error + */ + 422: HttpValidationError; +}; + +export type UploadLogoTournamentsTournamentIdLogoPostError = + UploadLogoTournamentsTournamentIdLogoPostErrors[keyof UploadLogoTournamentsTournamentIdLogoPostErrors]; + +export type UploadLogoTournamentsTournamentIdLogoPostResponses = { + /** + * Successful Response + */ + 200: TournamentResponse; +}; + +export type UploadLogoTournamentsTournamentIdLogoPostResponse = + UploadLogoTournamentsTournamentIdLogoPostResponses[keyof UploadLogoTournamentsTournamentIdLogoPostResponses]; + +export type CreateMatchTournamentsTournamentIdMatchesPostData = { + body: MatchCreateBodyFrontend; + path: { + /** + * Tournament Id + */ + tournament_id: number; + }; + query?: never; + url: '/tournaments/{tournament_id}/matches'; +}; + +export type CreateMatchTournamentsTournamentIdMatchesPostErrors = { + /** + * Validation Error + */ + 422: HttpValidationError; +}; + +export type CreateMatchTournamentsTournamentIdMatchesPostError = + CreateMatchTournamentsTournamentIdMatchesPostErrors[keyof CreateMatchTournamentsTournamentIdMatchesPostErrors]; + +export type CreateMatchTournamentsTournamentIdMatchesPostResponses = { + /** + * Successful Response + */ + 200: SingleMatchResponse; +}; + +export type CreateMatchTournamentsTournamentIdMatchesPostResponse = + CreateMatchTournamentsTournamentIdMatchesPostResponses[keyof CreateMatchTournamentsTournamentIdMatchesPostResponses]; + +export type DeleteMatchTournamentsTournamentIdMatchesMatchIdDeleteData = { + body?: never; + path: { + /** + * Tournament Id + */ + tournament_id: number; + /** + * Match Id + */ + match_id: number; + }; + query?: never; + url: '/tournaments/{tournament_id}/matches/{match_id}'; +}; + +export type DeleteMatchTournamentsTournamentIdMatchesMatchIdDeleteErrors = { + /** + * Validation Error + */ + 422: HttpValidationError; +}; + +export type DeleteMatchTournamentsTournamentIdMatchesMatchIdDeleteError = + DeleteMatchTournamentsTournamentIdMatchesMatchIdDeleteErrors[keyof DeleteMatchTournamentsTournamentIdMatchesMatchIdDeleteErrors]; + +export type DeleteMatchTournamentsTournamentIdMatchesMatchIdDeleteResponses = { + /** + * Successful Response + */ + 200: SuccessResponse; +}; + +export type DeleteMatchTournamentsTournamentIdMatchesMatchIdDeleteResponse = + DeleteMatchTournamentsTournamentIdMatchesMatchIdDeleteResponses[keyof DeleteMatchTournamentsTournamentIdMatchesMatchIdDeleteResponses]; + +export type UpdateMatchByIdTournamentsTournamentIdMatchesMatchIdPutData = { + body: MatchBody; + path: { + /** + * Tournament Id + */ + tournament_id: number; + /** + * Match Id + */ + match_id: number; + }; + query?: never; + url: '/tournaments/{tournament_id}/matches/{match_id}'; +}; + +export type UpdateMatchByIdTournamentsTournamentIdMatchesMatchIdPutErrors = { + /** + * Validation Error + */ + 422: HttpValidationError; +}; + +export type UpdateMatchByIdTournamentsTournamentIdMatchesMatchIdPutError = + UpdateMatchByIdTournamentsTournamentIdMatchesMatchIdPutErrors[keyof UpdateMatchByIdTournamentsTournamentIdMatchesMatchIdPutErrors]; + +export type UpdateMatchByIdTournamentsTournamentIdMatchesMatchIdPutResponses = { + /** + * Successful Response + */ + 200: SuccessResponse; +}; + +export type UpdateMatchByIdTournamentsTournamentIdMatchesMatchIdPutResponse = + UpdateMatchByIdTournamentsTournamentIdMatchesMatchIdPutResponses[keyof UpdateMatchByIdTournamentsTournamentIdMatchesMatchIdPutResponses]; + +export type RescheduleMatchTournamentsTournamentIdMatchesMatchIdReschedulePostData = { + body: MatchRescheduleBody; + path: { + /** + * Tournament Id + */ + tournament_id: number; + /** + * Match Id + */ + match_id: number; + }; + query?: never; + url: '/tournaments/{tournament_id}/matches/{match_id}/reschedule'; +}; + +export type RescheduleMatchTournamentsTournamentIdMatchesMatchIdReschedulePostErrors = { + /** + * Validation Error + */ + 422: HttpValidationError; +}; + +export type RescheduleMatchTournamentsTournamentIdMatchesMatchIdReschedulePostError = + RescheduleMatchTournamentsTournamentIdMatchesMatchIdReschedulePostErrors[keyof RescheduleMatchTournamentsTournamentIdMatchesMatchIdReschedulePostErrors]; + +export type RescheduleMatchTournamentsTournamentIdMatchesMatchIdReschedulePostResponses = { + /** + * Successful Response + */ + 200: SuccessResponse; +}; + +export type RescheduleMatchTournamentsTournamentIdMatchesMatchIdReschedulePostResponse = + RescheduleMatchTournamentsTournamentIdMatchesMatchIdReschedulePostResponses[keyof RescheduleMatchTournamentsTournamentIdMatchesMatchIdReschedulePostResponses]; + +export type GetNextStageRankingsTournamentsTournamentIdNextStageRankingsGetData = { + body?: never; + path: { + /** + * Tournament Id + */ + tournament_id: number; + }; + query?: never; + url: '/tournaments/{tournament_id}/next_stage_rankings'; +}; + +export type GetNextStageRankingsTournamentsTournamentIdNextStageRankingsGetErrors = { + /** + * Validation Error + */ + 422: HttpValidationError; +}; + +export type GetNextStageRankingsTournamentsTournamentIdNextStageRankingsGetError = + GetNextStageRankingsTournamentsTournamentIdNextStageRankingsGetErrors[keyof GetNextStageRankingsTournamentsTournamentIdNextStageRankingsGetErrors]; + +export type GetNextStageRankingsTournamentsTournamentIdNextStageRankingsGetResponses = { + /** + * Successful Response + */ + 200: StageRankingResponse; +}; + +export type GetNextStageRankingsTournamentsTournamentIdNextStageRankingsGetResponse = + GetNextStageRankingsTournamentsTournamentIdNextStageRankingsGetResponses[keyof GetNextStageRankingsTournamentsTournamentIdNextStageRankingsGetResponses]; + +export type GetPlayersTournamentsTournamentIdPlayersGetData = { + body?: never; + path: { + /** + * Tournament Id + */ + tournament_id: number; + }; + query?: { + /** + * Not In Team + */ + not_in_team?: boolean; + /** + * Limit + * + * Max number of results in a single page. + */ + limit?: number; + /** + * Offset + * + * Filter results starting from this offset. + */ + offset?: number; + /** + * Sort Direction + */ + sort_direction?: 'asc' | 'desc'; + /** + * Sort By + */ + sort_by?: + | 'name' + | 'elo_score' + | 'swiss_score' + | 'wins' + | 'draws' + | 'losses' + | 'active' + | 'created'; + }; + url: '/tournaments/{tournament_id}/players'; +}; + +export type GetPlayersTournamentsTournamentIdPlayersGetErrors = { + /** + * Validation Error + */ + 422: HttpValidationError; +}; + +export type GetPlayersTournamentsTournamentIdPlayersGetError = + GetPlayersTournamentsTournamentIdPlayersGetErrors[keyof GetPlayersTournamentsTournamentIdPlayersGetErrors]; + +export type GetPlayersTournamentsTournamentIdPlayersGetResponses = { + /** + * Successful Response + */ + 200: PlayersResponse; +}; + +export type GetPlayersTournamentsTournamentIdPlayersGetResponse = + GetPlayersTournamentsTournamentIdPlayersGetResponses[keyof GetPlayersTournamentsTournamentIdPlayersGetResponses]; + +export type CreateSinglePlayerTournamentsTournamentIdPlayersPostData = { + body: PlayerBody; + path: { + /** + * Tournament Id + */ + tournament_id: number; + }; + query?: never; + url: '/tournaments/{tournament_id}/players'; +}; + +export type CreateSinglePlayerTournamentsTournamentIdPlayersPostErrors = { + /** + * Validation Error + */ + 422: HttpValidationError; +}; + +export type CreateSinglePlayerTournamentsTournamentIdPlayersPostError = + CreateSinglePlayerTournamentsTournamentIdPlayersPostErrors[keyof CreateSinglePlayerTournamentsTournamentIdPlayersPostErrors]; + +export type CreateSinglePlayerTournamentsTournamentIdPlayersPostResponses = { + /** + * Successful Response + */ + 200: SuccessResponse; +}; + +export type CreateSinglePlayerTournamentsTournamentIdPlayersPostResponse = + CreateSinglePlayerTournamentsTournamentIdPlayersPostResponses[keyof CreateSinglePlayerTournamentsTournamentIdPlayersPostResponses]; + +export type DeletePlayerTournamentsTournamentIdPlayersPlayerIdDeleteData = { + body?: never; + path: { + /** + * Tournament Id + */ + tournament_id: number; + /** + * Player Id + */ + player_id: number; + }; + query?: never; + url: '/tournaments/{tournament_id}/players/{player_id}'; +}; + +export type DeletePlayerTournamentsTournamentIdPlayersPlayerIdDeleteErrors = { + /** + * Validation Error + */ + 422: HttpValidationError; +}; + +export type DeletePlayerTournamentsTournamentIdPlayersPlayerIdDeleteError = + DeletePlayerTournamentsTournamentIdPlayersPlayerIdDeleteErrors[keyof DeletePlayerTournamentsTournamentIdPlayersPlayerIdDeleteErrors]; + +export type DeletePlayerTournamentsTournamentIdPlayersPlayerIdDeleteResponses = { + /** + * Successful Response + */ + 200: SuccessResponse; +}; + +export type DeletePlayerTournamentsTournamentIdPlayersPlayerIdDeleteResponse = + DeletePlayerTournamentsTournamentIdPlayersPlayerIdDeleteResponses[keyof DeletePlayerTournamentsTournamentIdPlayersPlayerIdDeleteResponses]; + +export type UpdatePlayerByIdTournamentsTournamentIdPlayersPlayerIdPutData = { + body: PlayerBody; + path: { + /** + * Tournament Id + */ + tournament_id: number; + /** + * Player Id + */ + player_id: number; + }; + query?: never; + url: '/tournaments/{tournament_id}/players/{player_id}'; +}; + +export type UpdatePlayerByIdTournamentsTournamentIdPlayersPlayerIdPutErrors = { + /** + * Validation Error + */ + 422: HttpValidationError; +}; + +export type UpdatePlayerByIdTournamentsTournamentIdPlayersPlayerIdPutError = + UpdatePlayerByIdTournamentsTournamentIdPlayersPlayerIdPutErrors[keyof UpdatePlayerByIdTournamentsTournamentIdPlayersPlayerIdPutErrors]; + +export type UpdatePlayerByIdTournamentsTournamentIdPlayersPlayerIdPutResponses = { + /** + * Successful Response + */ + 200: SinglePlayerResponse; +}; + +export type UpdatePlayerByIdTournamentsTournamentIdPlayersPlayerIdPutResponse = + UpdatePlayerByIdTournamentsTournamentIdPlayersPlayerIdPutResponses[keyof UpdatePlayerByIdTournamentsTournamentIdPlayersPlayerIdPutResponses]; + +export type CreateMultiplePlayersTournamentsTournamentIdPlayersMultiPostData = { + body: PlayerMultiBody; + path: { + /** + * Tournament Id + */ + tournament_id: number; + }; + query?: never; + url: '/tournaments/{tournament_id}/players_multi'; +}; + +export type CreateMultiplePlayersTournamentsTournamentIdPlayersMultiPostErrors = { + /** + * Validation Error + */ + 422: HttpValidationError; +}; + +export type CreateMultiplePlayersTournamentsTournamentIdPlayersMultiPostError = + CreateMultiplePlayersTournamentsTournamentIdPlayersMultiPostErrors[keyof CreateMultiplePlayersTournamentsTournamentIdPlayersMultiPostErrors]; + +export type CreateMultiplePlayersTournamentsTournamentIdPlayersMultiPostResponses = { + /** + * Successful Response + */ + 200: SuccessResponse; +}; + +export type CreateMultiplePlayersTournamentsTournamentIdPlayersMultiPostResponse = + CreateMultiplePlayersTournamentsTournamentIdPlayersMultiPostResponses[keyof CreateMultiplePlayersTournamentsTournamentIdPlayersMultiPostResponses]; + +export type GetRankingsTournamentsTournamentIdRankingsGetData = { + body?: never; + path: { + /** + * Tournament Id + */ + tournament_id: number; + }; + query?: never; + url: '/tournaments/{tournament_id}/rankings'; +}; + +export type GetRankingsTournamentsTournamentIdRankingsGetErrors = { + /** + * Validation Error + */ + 422: HttpValidationError; +}; + +export type GetRankingsTournamentsTournamentIdRankingsGetError = + GetRankingsTournamentsTournamentIdRankingsGetErrors[keyof GetRankingsTournamentsTournamentIdRankingsGetErrors]; + +export type GetRankingsTournamentsTournamentIdRankingsGetResponses = { + /** + * Successful Response + */ + 200: RankingsResponse; +}; + +export type GetRankingsTournamentsTournamentIdRankingsGetResponse = + GetRankingsTournamentsTournamentIdRankingsGetResponses[keyof GetRankingsTournamentsTournamentIdRankingsGetResponses]; + +export type CreateRankingTournamentsTournamentIdRankingsPostData = { + body: RankingCreateBody; + path: { + /** + * Tournament Id + */ + tournament_id: number; + }; + query?: never; + url: '/tournaments/{tournament_id}/rankings'; +}; + +export type CreateRankingTournamentsTournamentIdRankingsPostErrors = { + /** + * Validation Error + */ + 422: HttpValidationError; +}; + +export type CreateRankingTournamentsTournamentIdRankingsPostError = + CreateRankingTournamentsTournamentIdRankingsPostErrors[keyof CreateRankingTournamentsTournamentIdRankingsPostErrors]; + +export type CreateRankingTournamentsTournamentIdRankingsPostResponses = { + /** + * Successful Response + */ + 200: SuccessResponse; +}; + +export type CreateRankingTournamentsTournamentIdRankingsPostResponse = + CreateRankingTournamentsTournamentIdRankingsPostResponses[keyof CreateRankingTournamentsTournamentIdRankingsPostResponses]; + +export type DeleteRankingTournamentsTournamentIdRankingsRankingIdDeleteData = { + body?: never; + path: { + /** + * Tournament Id + */ + tournament_id: number; + /** + * Ranking Id + */ + ranking_id: number; + }; + query?: never; + url: '/tournaments/{tournament_id}/rankings/{ranking_id}'; +}; + +export type DeleteRankingTournamentsTournamentIdRankingsRankingIdDeleteErrors = { + /** + * Validation Error + */ + 422: HttpValidationError; +}; + +export type DeleteRankingTournamentsTournamentIdRankingsRankingIdDeleteError = + DeleteRankingTournamentsTournamentIdRankingsRankingIdDeleteErrors[keyof DeleteRankingTournamentsTournamentIdRankingsRankingIdDeleteErrors]; + +export type DeleteRankingTournamentsTournamentIdRankingsRankingIdDeleteResponses = { + /** + * Successful Response + */ + 200: SuccessResponse; +}; + +export type DeleteRankingTournamentsTournamentIdRankingsRankingIdDeleteResponse = + DeleteRankingTournamentsTournamentIdRankingsRankingIdDeleteResponses[keyof DeleteRankingTournamentsTournamentIdRankingsRankingIdDeleteResponses]; + +export type UpdateRankingByIdTournamentsTournamentIdRankingsRankingIdPutData = { + body: RankingBody; + path: { + /** + * Tournament Id + */ + tournament_id: number; + /** + * Ranking Id + */ + ranking_id: number; + }; + query?: never; + url: '/tournaments/{tournament_id}/rankings/{ranking_id}'; +}; + +export type UpdateRankingByIdTournamentsTournamentIdRankingsRankingIdPutErrors = { + /** + * Validation Error + */ + 422: HttpValidationError; +}; + +export type UpdateRankingByIdTournamentsTournamentIdRankingsRankingIdPutError = + UpdateRankingByIdTournamentsTournamentIdRankingsRankingIdPutErrors[keyof UpdateRankingByIdTournamentsTournamentIdRankingsRankingIdPutErrors]; + +export type UpdateRankingByIdTournamentsTournamentIdRankingsRankingIdPutResponses = { + /** + * Successful Response + */ + 200: SuccessResponse; +}; + +export type UpdateRankingByIdTournamentsTournamentIdRankingsRankingIdPutResponse = + UpdateRankingByIdTournamentsTournamentIdRankingsRankingIdPutResponses[keyof UpdateRankingByIdTournamentsTournamentIdRankingsRankingIdPutResponses]; + +export type CreateRoundTournamentsTournamentIdRoundsPostData = { + body: RoundCreateBody; + path: { + /** + * Tournament Id + */ + tournament_id: number; + }; + query?: never; + url: '/tournaments/{tournament_id}/rounds'; +}; + +export type CreateRoundTournamentsTournamentIdRoundsPostErrors = { + /** + * Validation Error + */ + 422: HttpValidationError; +}; + +export type CreateRoundTournamentsTournamentIdRoundsPostError = + CreateRoundTournamentsTournamentIdRoundsPostErrors[keyof CreateRoundTournamentsTournamentIdRoundsPostErrors]; + +export type CreateRoundTournamentsTournamentIdRoundsPostResponses = { + /** + * Successful Response + */ + 200: SuccessResponse; +}; + +export type CreateRoundTournamentsTournamentIdRoundsPostResponse = + CreateRoundTournamentsTournamentIdRoundsPostResponses[keyof CreateRoundTournamentsTournamentIdRoundsPostResponses]; + +export type DeleteRoundTournamentsTournamentIdRoundsRoundIdDeleteData = { + body?: never; + path: { + /** + * Tournament Id + */ + tournament_id: number; + /** + * Round Id + */ + round_id: number; + }; + query?: never; + url: '/tournaments/{tournament_id}/rounds/{round_id}'; +}; + +export type DeleteRoundTournamentsTournamentIdRoundsRoundIdDeleteErrors = { + /** + * Validation Error + */ + 422: HttpValidationError; +}; + +export type DeleteRoundTournamentsTournamentIdRoundsRoundIdDeleteError = + DeleteRoundTournamentsTournamentIdRoundsRoundIdDeleteErrors[keyof DeleteRoundTournamentsTournamentIdRoundsRoundIdDeleteErrors]; + +export type DeleteRoundTournamentsTournamentIdRoundsRoundIdDeleteResponses = { + /** + * Successful Response + */ + 200: SuccessResponse; +}; + +export type DeleteRoundTournamentsTournamentIdRoundsRoundIdDeleteResponse = + DeleteRoundTournamentsTournamentIdRoundsRoundIdDeleteResponses[keyof DeleteRoundTournamentsTournamentIdRoundsRoundIdDeleteResponses]; + +export type UpdateRoundByIdTournamentsTournamentIdRoundsRoundIdPutData = { + body: RoundUpdateBody; + path: { + /** + * Tournament Id + */ + tournament_id: number; + /** + * Round Id + */ + round_id: number; + }; + query?: never; + url: '/tournaments/{tournament_id}/rounds/{round_id}'; +}; + +export type UpdateRoundByIdTournamentsTournamentIdRoundsRoundIdPutErrors = { + /** + * Validation Error + */ + 422: HttpValidationError; +}; + +export type UpdateRoundByIdTournamentsTournamentIdRoundsRoundIdPutError = + UpdateRoundByIdTournamentsTournamentIdRoundsRoundIdPutErrors[keyof UpdateRoundByIdTournamentsTournamentIdRoundsRoundIdPutErrors]; + +export type UpdateRoundByIdTournamentsTournamentIdRoundsRoundIdPutResponses = { + /** + * Successful Response + */ + 200: SuccessResponse; +}; + +export type UpdateRoundByIdTournamentsTournamentIdRoundsRoundIdPutResponse = + UpdateRoundByIdTournamentsTournamentIdRoundsRoundIdPutResponses[keyof UpdateRoundByIdTournamentsTournamentIdRoundsRoundIdPutResponses]; + +export type ScheduleMatchesTournamentsTournamentIdScheduleMatchesPostData = { + body?: never; + path: { + /** + * Tournament Id + */ + tournament_id: number; + }; + query?: never; + url: '/tournaments/{tournament_id}/schedule_matches'; +}; + +export type ScheduleMatchesTournamentsTournamentIdScheduleMatchesPostErrors = { + /** + * Validation Error + */ + 422: HttpValidationError; +}; + +export type ScheduleMatchesTournamentsTournamentIdScheduleMatchesPostError = + ScheduleMatchesTournamentsTournamentIdScheduleMatchesPostErrors[keyof ScheduleMatchesTournamentsTournamentIdScheduleMatchesPostErrors]; + +export type ScheduleMatchesTournamentsTournamentIdScheduleMatchesPostResponses = { + /** + * Successful Response + */ + 200: SuccessResponse; +}; + +export type ScheduleMatchesTournamentsTournamentIdScheduleMatchesPostResponse = + ScheduleMatchesTournamentsTournamentIdScheduleMatchesPostResponses[keyof ScheduleMatchesTournamentsTournamentIdScheduleMatchesPostResponses]; + +export type CreateStageItemTournamentsTournamentIdStageItemsPostData = { + body: StageItemCreateBody; + path: { + /** + * Tournament Id + */ + tournament_id: number; + }; + query?: never; + url: '/tournaments/{tournament_id}/stage_items'; +}; + +export type CreateStageItemTournamentsTournamentIdStageItemsPostErrors = { + /** + * Validation Error + */ + 422: HttpValidationError; +}; + +export type CreateStageItemTournamentsTournamentIdStageItemsPostError = + CreateStageItemTournamentsTournamentIdStageItemsPostErrors[keyof CreateStageItemTournamentsTournamentIdStageItemsPostErrors]; + +export type CreateStageItemTournamentsTournamentIdStageItemsPostResponses = { + /** + * Successful Response + */ + 200: SuccessResponse; +}; + +export type CreateStageItemTournamentsTournamentIdStageItemsPostResponse = + CreateStageItemTournamentsTournamentIdStageItemsPostResponses[keyof CreateStageItemTournamentsTournamentIdStageItemsPostResponses]; + +export type DeleteStageItemTournamentsTournamentIdStageItemsStageItemIdDeleteData = { + body?: never; + path: { + /** + * Tournament Id + */ + tournament_id: number; + /** + * Stage Item Id + */ + stage_item_id: number; + }; + query?: never; + url: '/tournaments/{tournament_id}/stage_items/{stage_item_id}'; +}; + +export type DeleteStageItemTournamentsTournamentIdStageItemsStageItemIdDeleteErrors = { + /** + * Validation Error + */ + 422: HttpValidationError; +}; + +export type DeleteStageItemTournamentsTournamentIdStageItemsStageItemIdDeleteError = + DeleteStageItemTournamentsTournamentIdStageItemsStageItemIdDeleteErrors[keyof DeleteStageItemTournamentsTournamentIdStageItemsStageItemIdDeleteErrors]; + +export type DeleteStageItemTournamentsTournamentIdStageItemsStageItemIdDeleteResponses = { + /** + * Successful Response + */ + 200: SuccessResponse; +}; + +export type DeleteStageItemTournamentsTournamentIdStageItemsStageItemIdDeleteResponse = + DeleteStageItemTournamentsTournamentIdStageItemsStageItemIdDeleteResponses[keyof DeleteStageItemTournamentsTournamentIdStageItemsStageItemIdDeleteResponses]; + +export type UpdateStageItemTournamentsTournamentIdStageItemsStageItemIdPutData = { + body: StageItemUpdateBody; + path: { + /** + * Tournament Id + */ + tournament_id: number; + /** + * Stage Item Id + */ + stage_item_id: number; + }; + query?: never; + url: '/tournaments/{tournament_id}/stage_items/{stage_item_id}'; +}; + +export type UpdateStageItemTournamentsTournamentIdStageItemsStageItemIdPutErrors = { + /** + * Validation Error + */ + 422: HttpValidationError; +}; + +export type UpdateStageItemTournamentsTournamentIdStageItemsStageItemIdPutError = + UpdateStageItemTournamentsTournamentIdStageItemsStageItemIdPutErrors[keyof UpdateStageItemTournamentsTournamentIdStageItemsStageItemIdPutErrors]; + +export type UpdateStageItemTournamentsTournamentIdStageItemsStageItemIdPutResponses = { + /** + * Successful Response + */ + 200: SuccessResponse; +}; + +export type UpdateStageItemTournamentsTournamentIdStageItemsStageItemIdPutResponse = + UpdateStageItemTournamentsTournamentIdStageItemsStageItemIdPutResponses[keyof UpdateStageItemTournamentsTournamentIdStageItemsStageItemIdPutResponses]; + +export type UpdateStageItemInputTournamentsTournamentIdStageItemsStageItemIdInputsStageItemInputIdPutData = + { + /** + * Stage Item Body + */ + body: + | StageItemInputUpdateBodyTentative + | StageItemInputUpdateBodyFinal + | StageItemInputUpdateBodyEmpty; + path: { + /** + * Tournament Id + */ + tournament_id: number; + /** + * Stage Item Id + */ + stage_item_id: number; + /** + * Stage Item Input Id + */ + stage_item_input_id: number; + }; + query?: never; + url: '/tournaments/{tournament_id}/stage_items/{stage_item_id}/inputs/{stage_item_input_id}'; + }; + +export type UpdateStageItemInputTournamentsTournamentIdStageItemsStageItemIdInputsStageItemInputIdPutErrors = + { + /** + * Validation Error + */ + 422: HttpValidationError; + }; + +export type UpdateStageItemInputTournamentsTournamentIdStageItemsStageItemIdInputsStageItemInputIdPutError = + UpdateStageItemInputTournamentsTournamentIdStageItemsStageItemIdInputsStageItemInputIdPutErrors[keyof UpdateStageItemInputTournamentsTournamentIdStageItemsStageItemIdInputsStageItemInputIdPutErrors]; + +export type UpdateStageItemInputTournamentsTournamentIdStageItemsStageItemIdInputsStageItemInputIdPutResponses = + { + /** + * Successful Response + */ + 200: SuccessResponse; + }; + +export type UpdateStageItemInputTournamentsTournamentIdStageItemsStageItemIdInputsStageItemInputIdPutResponse = + UpdateStageItemInputTournamentsTournamentIdStageItemsStageItemIdInputsStageItemInputIdPutResponses[keyof UpdateStageItemInputTournamentsTournamentIdStageItemsStageItemIdInputsStageItemInputIdPutResponses]; + +export type StartNextRoundTournamentsTournamentIdStageItemsStageItemIdStartNextRoundPostData = { + body: StageItemActivateNextBody; + path: { + /** + * Tournament Id + */ + tournament_id: number; + /** + * Stage Item Id + */ + stage_item_id: number; + }; + query?: { + /** + * Elo Diff Threshold + */ + elo_diff_threshold?: number; + /** + * Iterations + */ + iterations?: number; + /** + * Only Recommended + */ + only_recommended?: boolean; + }; + url: '/tournaments/{tournament_id}/stage_items/{stage_item_id}/start_next_round'; +}; + +export type StartNextRoundTournamentsTournamentIdStageItemsStageItemIdStartNextRoundPostErrors = { + /** + * Validation Error + */ + 422: HttpValidationError; +}; + +export type StartNextRoundTournamentsTournamentIdStageItemsStageItemIdStartNextRoundPostError = + StartNextRoundTournamentsTournamentIdStageItemsStageItemIdStartNextRoundPostErrors[keyof StartNextRoundTournamentsTournamentIdStageItemsStageItemIdStartNextRoundPostErrors]; + +export type StartNextRoundTournamentsTournamentIdStageItemsStageItemIdStartNextRoundPostResponses = + { + /** + * Successful Response + */ + 200: SuccessResponse; + }; + +export type StartNextRoundTournamentsTournamentIdStageItemsStageItemIdStartNextRoundPostResponse = + StartNextRoundTournamentsTournamentIdStageItemsStageItemIdStartNextRoundPostResponses[keyof StartNextRoundTournamentsTournamentIdStageItemsStageItemIdStartNextRoundPostResponses]; + +export type GetMatchesToScheduleTournamentsTournamentIdStageItemsStageItemIdUpcomingMatchesGetData = + { + body?: never; + path: { + /** + * Tournament Id + */ + tournament_id: number; + /** + * Stage Item Id + */ + stage_item_id: number; + }; + query?: { + /** + * Elo Diff Threshold + */ + elo_diff_threshold?: number; + /** + * Iterations + */ + iterations?: number; + /** + * Only Recommended + */ + only_recommended?: boolean; + /** + * Limit + */ + limit?: number; + }; + url: '/tournaments/{tournament_id}/stage_items/{stage_item_id}/upcoming_matches'; + }; + +export type GetMatchesToScheduleTournamentsTournamentIdStageItemsStageItemIdUpcomingMatchesGetErrors = + { + /** + * Validation Error + */ + 422: HttpValidationError; + }; + +export type GetMatchesToScheduleTournamentsTournamentIdStageItemsStageItemIdUpcomingMatchesGetError = + GetMatchesToScheduleTournamentsTournamentIdStageItemsStageItemIdUpcomingMatchesGetErrors[keyof GetMatchesToScheduleTournamentsTournamentIdStageItemsStageItemIdUpcomingMatchesGetErrors]; + +export type GetMatchesToScheduleTournamentsTournamentIdStageItemsStageItemIdUpcomingMatchesGetResponses = + { + /** + * Successful Response + */ + 200: UpcomingMatchesResponse; + }; + +export type GetMatchesToScheduleTournamentsTournamentIdStageItemsStageItemIdUpcomingMatchesGetResponse = + GetMatchesToScheduleTournamentsTournamentIdStageItemsStageItemIdUpcomingMatchesGetResponses[keyof GetMatchesToScheduleTournamentsTournamentIdStageItemsStageItemIdUpcomingMatchesGetResponses]; + +export type GetStagesTournamentsTournamentIdStagesGetData = { + body?: never; + path: { + /** + * Tournament Id + */ + tournament_id: number; + }; + query?: { + /** + * No Draft Rounds + */ + no_draft_rounds?: boolean; + }; + url: '/tournaments/{tournament_id}/stages'; +}; + +export type GetStagesTournamentsTournamentIdStagesGetErrors = { + /** + * Validation Error + */ + 422: HttpValidationError; +}; + +export type GetStagesTournamentsTournamentIdStagesGetError = + GetStagesTournamentsTournamentIdStagesGetErrors[keyof GetStagesTournamentsTournamentIdStagesGetErrors]; + +export type GetStagesTournamentsTournamentIdStagesGetResponses = { + /** + * Successful Response + */ + 200: StagesWithStageItemsResponse; +}; + +export type GetStagesTournamentsTournamentIdStagesGetResponse = + GetStagesTournamentsTournamentIdStagesGetResponses[keyof GetStagesTournamentsTournamentIdStagesGetResponses]; + +export type CreateStageTournamentsTournamentIdStagesPostData = { + body?: never; + path: { + /** + * Tournament Id + */ + tournament_id: number; + }; + query?: never; + url: '/tournaments/{tournament_id}/stages'; +}; + +export type CreateStageTournamentsTournamentIdStagesPostErrors = { + /** + * Validation Error + */ + 422: HttpValidationError; +}; + +export type CreateStageTournamentsTournamentIdStagesPostError = + CreateStageTournamentsTournamentIdStagesPostErrors[keyof CreateStageTournamentsTournamentIdStagesPostErrors]; + +export type CreateStageTournamentsTournamentIdStagesPostResponses = { + /** + * Successful Response + */ + 200: SuccessResponse; +}; + +export type CreateStageTournamentsTournamentIdStagesPostResponse = + CreateStageTournamentsTournamentIdStagesPostResponses[keyof CreateStageTournamentsTournamentIdStagesPostResponses]; + +export type ActivateNextStageTournamentsTournamentIdStagesActivatePostData = { + body: StageActivateBody; + path: { + /** + * Tournament Id + */ + tournament_id: number; + }; + query?: never; + url: '/tournaments/{tournament_id}/stages/activate'; +}; + +export type ActivateNextStageTournamentsTournamentIdStagesActivatePostErrors = { + /** + * Validation Error + */ + 422: HttpValidationError; +}; + +export type ActivateNextStageTournamentsTournamentIdStagesActivatePostError = + ActivateNextStageTournamentsTournamentIdStagesActivatePostErrors[keyof ActivateNextStageTournamentsTournamentIdStagesActivatePostErrors]; + +export type ActivateNextStageTournamentsTournamentIdStagesActivatePostResponses = { + /** + * Successful Response + */ + 200: SuccessResponse; +}; + +export type ActivateNextStageTournamentsTournamentIdStagesActivatePostResponse = + ActivateNextStageTournamentsTournamentIdStagesActivatePostResponses[keyof ActivateNextStageTournamentsTournamentIdStagesActivatePostResponses]; + +export type DeleteStageTournamentsTournamentIdStagesStageIdDeleteData = { + body?: never; + path: { + /** + * Tournament Id + */ + tournament_id: number; + /** + * Stage Id + */ + stage_id: number; + }; + query?: never; + url: '/tournaments/{tournament_id}/stages/{stage_id}'; +}; + +export type DeleteStageTournamentsTournamentIdStagesStageIdDeleteErrors = { + /** + * Validation Error + */ + 422: HttpValidationError; +}; + +export type DeleteStageTournamentsTournamentIdStagesStageIdDeleteError = + DeleteStageTournamentsTournamentIdStagesStageIdDeleteErrors[keyof DeleteStageTournamentsTournamentIdStagesStageIdDeleteErrors]; + +export type DeleteStageTournamentsTournamentIdStagesStageIdDeleteResponses = { + /** + * Successful Response + */ + 200: SuccessResponse; +}; + +export type DeleteStageTournamentsTournamentIdStagesStageIdDeleteResponse = + DeleteStageTournamentsTournamentIdStagesStageIdDeleteResponses[keyof DeleteStageTournamentsTournamentIdStagesStageIdDeleteResponses]; + +export type UpdateStageTournamentsTournamentIdStagesStageIdPutData = { + body: StageUpdateBody; + path: { + /** + * Tournament Id + */ + tournament_id: number; + /** + * Stage Id + */ + stage_id: number; + }; + query?: never; + url: '/tournaments/{tournament_id}/stages/{stage_id}'; +}; + +export type UpdateStageTournamentsTournamentIdStagesStageIdPutErrors = { + /** + * Validation Error + */ + 422: HttpValidationError; +}; + +export type UpdateStageTournamentsTournamentIdStagesStageIdPutError = + UpdateStageTournamentsTournamentIdStagesStageIdPutErrors[keyof UpdateStageTournamentsTournamentIdStagesStageIdPutErrors]; + +export type UpdateStageTournamentsTournamentIdStagesStageIdPutResponses = { + /** + * Successful Response + */ + 200: SuccessResponse; +}; + +export type UpdateStageTournamentsTournamentIdStagesStageIdPutResponse = + UpdateStageTournamentsTournamentIdStagesStageIdPutResponses[keyof UpdateStageTournamentsTournamentIdStagesStageIdPutResponses]; + +export type GetTeamsTournamentsTournamentIdTeamsGetData = { + body?: never; + path: { + /** + * Tournament Id + */ + tournament_id: number; + }; + query?: { + /** + * Limit + * + * Max number of results in a single page. + */ + limit?: number; + /** + * Offset + * + * Filter results starting from this offset. + */ + offset?: number; + /** + * Sort Direction + */ + sort_direction?: 'asc' | 'desc'; + /** + * Sort By + */ + sort_by?: + | 'name' + | 'elo_score' + | 'swiss_score' + | 'wins' + | 'draws' + | 'losses' + | 'active' + | 'created'; + }; + url: '/tournaments/{tournament_id}/teams'; +}; + +export type GetTeamsTournamentsTournamentIdTeamsGetErrors = { + /** + * Validation Error + */ + 422: HttpValidationError; +}; + +export type GetTeamsTournamentsTournamentIdTeamsGetError = + GetTeamsTournamentsTournamentIdTeamsGetErrors[keyof GetTeamsTournamentsTournamentIdTeamsGetErrors]; + +export type GetTeamsTournamentsTournamentIdTeamsGetResponses = { + /** + * Successful Response + */ + 200: TeamsWithPlayersResponse; +}; + +export type GetTeamsTournamentsTournamentIdTeamsGetResponse = + GetTeamsTournamentsTournamentIdTeamsGetResponses[keyof GetTeamsTournamentsTournamentIdTeamsGetResponses]; + +export type CreateTeamTournamentsTournamentIdTeamsPostData = { + body: TeamBody; + path: { + /** + * Tournament Id + */ + tournament_id: number; + }; + query?: never; + url: '/tournaments/{tournament_id}/teams'; +}; + +export type CreateTeamTournamentsTournamentIdTeamsPostErrors = { + /** + * Validation Error + */ + 422: HttpValidationError; +}; + +export type CreateTeamTournamentsTournamentIdTeamsPostError = + CreateTeamTournamentsTournamentIdTeamsPostErrors[keyof CreateTeamTournamentsTournamentIdTeamsPostErrors]; + +export type CreateTeamTournamentsTournamentIdTeamsPostResponses = { + /** + * Successful Response + */ + 200: SingleTeamResponse; +}; + +export type CreateTeamTournamentsTournamentIdTeamsPostResponse = + CreateTeamTournamentsTournamentIdTeamsPostResponses[keyof CreateTeamTournamentsTournamentIdTeamsPostResponses]; + +export type DeleteTeamTournamentsTournamentIdTeamsTeamIdDeleteData = { + body?: never; + path: { + /** + * Tournament Id + */ + tournament_id: number; + /** + * Team Id + */ + team_id: number; + }; + query?: never; + url: '/tournaments/{tournament_id}/teams/{team_id}'; +}; + +export type DeleteTeamTournamentsTournamentIdTeamsTeamIdDeleteErrors = { + /** + * Validation Error + */ + 422: HttpValidationError; +}; + +export type DeleteTeamTournamentsTournamentIdTeamsTeamIdDeleteError = + DeleteTeamTournamentsTournamentIdTeamsTeamIdDeleteErrors[keyof DeleteTeamTournamentsTournamentIdTeamsTeamIdDeleteErrors]; + +export type DeleteTeamTournamentsTournamentIdTeamsTeamIdDeleteResponses = { + /** + * Successful Response + */ + 200: SuccessResponse; +}; + +export type DeleteTeamTournamentsTournamentIdTeamsTeamIdDeleteResponse = + DeleteTeamTournamentsTournamentIdTeamsTeamIdDeleteResponses[keyof DeleteTeamTournamentsTournamentIdTeamsTeamIdDeleteResponses]; + +export type UpdateTeamByIdTournamentsTournamentIdTeamsTeamIdPutData = { + body: TeamBody; + path: { + /** + * Tournament Id + */ + tournament_id: number; + /** + * Team Id + */ + team_id: number; + }; + query?: never; + url: '/tournaments/{tournament_id}/teams/{team_id}'; +}; + +export type UpdateTeamByIdTournamentsTournamentIdTeamsTeamIdPutErrors = { + /** + * Validation Error + */ + 422: HttpValidationError; +}; + +export type UpdateTeamByIdTournamentsTournamentIdTeamsTeamIdPutError = + UpdateTeamByIdTournamentsTournamentIdTeamsTeamIdPutErrors[keyof UpdateTeamByIdTournamentsTournamentIdTeamsTeamIdPutErrors]; + +export type UpdateTeamByIdTournamentsTournamentIdTeamsTeamIdPutResponses = { + /** + * Successful Response + */ + 200: SingleTeamResponse; +}; + +export type UpdateTeamByIdTournamentsTournamentIdTeamsTeamIdPutResponse = + UpdateTeamByIdTournamentsTournamentIdTeamsTeamIdPutResponses[keyof UpdateTeamByIdTournamentsTournamentIdTeamsTeamIdPutResponses]; + +export type UpdateTeamLogoTournamentsTournamentIdTeamsTeamIdLogoPostData = { + body?: BodyUpdateTeamLogoTournamentsTournamentIdTeamsTeamIdLogoPost; + path: { + /** + * Tournament Id + */ + tournament_id: number; + /** + * Team Id + */ + team_id: number; + }; + query?: never; + url: '/tournaments/{tournament_id}/teams/{team_id}/logo'; +}; + +export type UpdateTeamLogoTournamentsTournamentIdTeamsTeamIdLogoPostErrors = { + /** + * Validation Error + */ + 422: HttpValidationError; +}; + +export type UpdateTeamLogoTournamentsTournamentIdTeamsTeamIdLogoPostError = + UpdateTeamLogoTournamentsTournamentIdTeamsTeamIdLogoPostErrors[keyof UpdateTeamLogoTournamentsTournamentIdTeamsTeamIdLogoPostErrors]; + +export type UpdateTeamLogoTournamentsTournamentIdTeamsTeamIdLogoPostResponses = { + /** + * Successful Response + */ + 200: SingleTeamResponse; +}; + +export type UpdateTeamLogoTournamentsTournamentIdTeamsTeamIdLogoPostResponse = + UpdateTeamLogoTournamentsTournamentIdTeamsTeamIdLogoPostResponses[keyof UpdateTeamLogoTournamentsTournamentIdTeamsTeamIdLogoPostResponses]; + +export type CreateMultipleTeamsTournamentsTournamentIdTeamsMultiPostData = { + body: TeamMultiBody; + path: { + /** + * Tournament Id + */ + tournament_id: number; + }; + query?: never; + url: '/tournaments/{tournament_id}/teams_multi'; +}; + +export type CreateMultipleTeamsTournamentsTournamentIdTeamsMultiPostErrors = { + /** + * Validation Error + */ + 422: HttpValidationError; +}; + +export type CreateMultipleTeamsTournamentsTournamentIdTeamsMultiPostError = + CreateMultipleTeamsTournamentsTournamentIdTeamsMultiPostErrors[keyof CreateMultipleTeamsTournamentsTournamentIdTeamsMultiPostErrors]; + +export type CreateMultipleTeamsTournamentsTournamentIdTeamsMultiPostResponses = { + /** + * Successful Response + */ + 200: SuccessResponse; +}; + +export type CreateMultipleTeamsTournamentsTournamentIdTeamsMultiPostResponse = + CreateMultipleTeamsTournamentsTournamentIdTeamsMultiPostResponses[keyof CreateMultipleTeamsTournamentsTournamentIdTeamsMultiPostResponses]; + +export type GetUserUsersMeGetData = { + body?: never; + path?: never; + query?: never; + url: '/users/me'; +}; + +export type GetUserUsersMeGetResponses = { + /** + * Successful Response + */ + 200: UserPublicResponse; +}; + +export type GetUserUsersMeGetResponse = + GetUserUsersMeGetResponses[keyof GetUserUsersMeGetResponses]; + +export type RegisterUserUsersRegisterPostData = { + body: UserToRegister; + path?: never; + query?: never; + url: '/users/register'; +}; + +export type RegisterUserUsersRegisterPostErrors = { + /** + * Validation Error + */ + 422: HttpValidationError; +}; + +export type RegisterUserUsersRegisterPostError = + RegisterUserUsersRegisterPostErrors[keyof RegisterUserUsersRegisterPostErrors]; + +export type RegisterUserUsersRegisterPostResponses = { + /** + * Successful Response + */ + 200: TokenResponse; +}; + +export type RegisterUserUsersRegisterPostResponse = + RegisterUserUsersRegisterPostResponses[keyof RegisterUserUsersRegisterPostResponses]; + +export type RegisterDemoUserUsersRegisterDemoPostData = { + body: DemoUserToRegister; + path?: never; + query?: never; + url: '/users/register_demo'; +}; + +export type RegisterDemoUserUsersRegisterDemoPostErrors = { + /** + * Validation Error + */ + 422: HttpValidationError; +}; + +export type RegisterDemoUserUsersRegisterDemoPostError = + RegisterDemoUserUsersRegisterDemoPostErrors[keyof RegisterDemoUserUsersRegisterDemoPostErrors]; + +export type RegisterDemoUserUsersRegisterDemoPostResponses = { + /** + * Successful Response + */ + 200: TokenResponse; +}; + +export type RegisterDemoUserUsersRegisterDemoPostResponse = + RegisterDemoUserUsersRegisterDemoPostResponses[keyof RegisterDemoUserUsersRegisterDemoPostResponses]; + +export type GetMeUsersUserIdGetData = { + body?: never; + path: { + /** + * User Id + */ + user_id: number; + }; + query?: never; + url: '/users/{user_id}'; +}; + +export type GetMeUsersUserIdGetErrors = { + /** + * Validation Error + */ + 422: HttpValidationError; +}; + +export type GetMeUsersUserIdGetError = GetMeUsersUserIdGetErrors[keyof GetMeUsersUserIdGetErrors]; + +export type GetMeUsersUserIdGetResponses = { + /** + * Successful Response + */ + 200: UserPublicResponse; +}; + +export type GetMeUsersUserIdGetResponse = + GetMeUsersUserIdGetResponses[keyof GetMeUsersUserIdGetResponses]; + +export type UpdateUserDetailsUsersUserIdPutData = { + body: UserToUpdate; + path: { + /** + * User Id + */ + user_id: number; + }; + query?: never; + url: '/users/{user_id}'; +}; + +export type UpdateUserDetailsUsersUserIdPutErrors = { + /** + * Validation Error + */ + 422: HttpValidationError; +}; + +export type UpdateUserDetailsUsersUserIdPutError = + UpdateUserDetailsUsersUserIdPutErrors[keyof UpdateUserDetailsUsersUserIdPutErrors]; + +export type UpdateUserDetailsUsersUserIdPutResponses = { + /** + * Successful Response + */ + 200: UserPublicResponse; +}; + +export type UpdateUserDetailsUsersUserIdPutResponse = + UpdateUserDetailsUsersUserIdPutResponses[keyof UpdateUserDetailsUsersUserIdPutResponses]; + +export type PutUserPasswordUsersUserIdPasswordPutData = { + body: UserPasswordToUpdate; + path: { + /** + * User Id + */ + user_id: number; + }; + query?: never; + url: '/users/{user_id}/password'; +}; + +export type PutUserPasswordUsersUserIdPasswordPutErrors = { + /** + * Validation Error + */ + 422: HttpValidationError; +}; + +export type PutUserPasswordUsersUserIdPasswordPutError = + PutUserPasswordUsersUserIdPasswordPutErrors[keyof PutUserPasswordUsersUserIdPasswordPutErrors]; + +export type PutUserPasswordUsersUserIdPasswordPutResponses = { + /** + * Successful Response + */ + 200: SuccessResponse; +}; + +export type PutUserPasswordUsersUserIdPasswordPutResponse = + PutUserPasswordUsersUserIdPasswordPutResponses[keyof PutUserPasswordUsersUserIdPasswordPutResponses]; diff --git a/frontend/src/pages/tournaments/[id]/dashboard/present/courts.tsx b/frontend/src/pages/tournaments/[id]/dashboard/present/courts.tsx index 7c47eac3f..1184cd211 100644 --- a/frontend/src/pages/tournaments/[id]/dashboard/present/courts.tsx +++ b/frontend/src/pages/tournaments/[id]/dashboard/present/courts.tsx @@ -13,12 +13,12 @@ import { } from '../../../../../components/dashboard/layout'; import { TableSkeletonTwoColumns } from '../../../../../components/utils/skeletons'; import { responseIsValid, setTitle } from '../../../../../components/utils/util'; -import { Court } from '../../../../../interfaces/court'; import { MatchInterface, isMatchHappening, isMatchInTheFuture, } from '../../../../../interfaces/match'; +import { Court } from '../../../../../openapi'; import { getCourtsLive, getStagesLive } from '../../../../../services/adapter'; import { getMatchLookupByCourt, getStageItemLookup } from '../../../../../services/lookups'; import { getTournamentResponseByEndpointName } from '../../../../../services/tournament'; diff --git a/frontend/src/pages/tournaments/[id]/schedule.tsx b/frontend/src/pages/tournaments/[id]/schedule.tsx index 7ea5770e6..526d39fd2 100644 --- a/frontend/src/pages/tournaments/[id]/schedule.tsx +++ b/frontend/src/pages/tournaments/[id]/schedule.tsx @@ -24,9 +24,9 @@ import { NoContent } from '../../../components/no_content/empty_table_info'; import { Time } from '../../../components/utils/datetime'; import { Translator } from '../../../components/utils/types'; import { getTournamentIdFromRouter, responseIsValid } from '../../../components/utils/util'; -import { Court } from '../../../interfaces/court'; import { MatchInterface, formatMatchInput1, formatMatchInput2 } from '../../../interfaces/match'; import { TournamentMinimal } from '../../../interfaces/tournament'; +import { Court } from '../../../openapi'; import { getCourts, getStages } from '../../../services/adapter'; import { deleteCourt } from '../../../services/court'; import { diff --git a/frontend/src/pages/tournaments/[id]/settings.tsx b/frontend/src/pages/tournaments/[id]/settings.tsx index fef07975e..d33005db5 100644 --- a/frontend/src/pages/tournaments/[id]/settings.tsx +++ b/frontend/src/pages/tournaments/[id]/settings.tsx @@ -30,8 +30,8 @@ import { assert_not_none } from '../../../components/utils/assert'; import { DropzoneButton } from '../../../components/utils/file_upload'; import { GenericSkeletonThreeRows } from '../../../components/utils/skeletons'; import { capitalize, getBaseURL, getTournamentIdFromRouter } from '../../../components/utils/util'; -import { Club } from '../../../interfaces/club'; import { Tournament } from '../../../interfaces/tournament'; +import { Club } from '../../../openapi'; import { getBaseApiUrl, getClubs, @@ -347,12 +347,12 @@ function GeneralTournamentForm({ export default function SettingsPage() { const { tournamentData } = getTournamentIdFromRouter(); - const swrClubsResponse: SWRResponse = getClubs(); + const swrClubsResponse = getClubs(); const swrTournamentResponse = getTournamentById(tournamentData.id); const tournamentDataFull = swrTournamentResponse.data != null ? swrTournamentResponse.data.data : null; - const clubs: Club[] = swrClubsResponse.data != null ? swrClubsResponse.data.data : []; + const clubs = swrClubsResponse.data != null ? swrClubsResponse.data.data : []; let content = ; diff --git a/frontend/src/pages/tournaments/[id]/stages/swiss/[stage_item_id].tsx b/frontend/src/pages/tournaments/[id]/stages/swiss/[stage_item_id].tsx index c5ef93e0f..4a0d09b0d 100644 --- a/frontend/src/pages/tournaments/[id]/stages/swiss/[stage_item_id].tsx +++ b/frontend/src/pages/tournaments/[id]/stages/swiss/[stage_item_id].tsx @@ -146,7 +146,11 @@ export default function SwissTournamentPage() { return ; } - if (!swrCourtsResponse.isLoading && swrCourtsResponse.data.data.length < 1) { + if ( + !swrCourtsResponse.isLoading && + swrCourtsResponse.data && + swrCourtsResponse.data.data.length < 1 + ) { return ( diff --git a/frontend/src/services/adapter.tsx b/frontend/src/services/adapter.tsx index f61e9b78f..bbf14b446 100644 --- a/frontend/src/services/adapter.tsx +++ b/frontend/src/services/adapter.tsx @@ -7,6 +7,13 @@ import { Pagination } from '../components/utils/util'; import { SchedulerSettings } from '../interfaces/match'; import { RoundInterface } from '../interfaces/round'; import { TournamentFilter } from '../interfaces/tournament'; +import { + ClubsResponse, + CourtsResponse, + GetClubsClubsGetResponses, + getClubsClubsGet, +} from '../openapi'; +import { RequestResult } from '../openapi/client'; import { getLogin, performLogout, tokenPresent } from './local_storage'; export function handleRequestError(response: AxiosError) { @@ -99,7 +106,7 @@ const fetcherWithTimestamp = (url: string) => .get(url) .then((res: { data: any }) => ({ ...res.data, ...getTimeState() })); -export function getClubs(): SWRResponse { +export function getClubs(): SWRResponse { return useSWR('clubs', fetcher); } @@ -183,7 +190,7 @@ export function getRankingsPerStageItem(tournament_id: number): SWRResponse { return useSWR(`tournaments/${tournament_id}/next_stage_rankings`, fetcher); } -export function getCourts(tournament_id: number): SWRResponse { +export function getCourts(tournament_id: number): SWRResponse { return useSWR(`tournaments/${tournament_id}/courts`, fetcher); } diff --git a/frontend/src/services/club.tsx b/frontend/src/services/club.tsx index 042f1795c..d4829e49e 100644 --- a/frontend/src/services/club.tsx +++ b/frontend/src/services/club.tsx @@ -1,3 +1,4 @@ +import { getClubsClubsGet } from '../openapi/sdk.gen'; import { createAxios, handleRequestError } from './adapter'; export async function createClub(name: string) { diff --git a/frontend/src/services/lookups.tsx b/frontend/src/services/lookups.tsx index a44d87632..01428be47 100644 --- a/frontend/src/services/lookups.tsx +++ b/frontend/src/services/lookups.tsx @@ -2,10 +2,10 @@ import { SWRResponse } from 'swr'; import { assert_not_none } from '../components/utils/assert'; import { groupBy, responseIsValid } from '../components/utils/util'; -import { Court } from '../interfaces/court'; import { MatchInterface } from '../interfaces/match'; import { StageWithStageItems } from '../interfaces/stage'; import { TeamInterface } from '../interfaces/team'; +import { Court } from '../openapi'; import { getTeams } from './adapter'; export function getTeamsLookup(tournamentId: number) { diff --git a/frontend/tsconfig.json b/frontend/tsconfig.json index 71f9cb116..2ceb3e7ee 100644 --- a/frontend/tsconfig.json +++ b/frontend/tsconfig.json @@ -1,7 +1,6 @@ { "compilerOptions": { - "target": "es5", - "lib": ["dom", "dom.iterable", "esnext"], + "target": "es6", "allowJs": true, "skipLibCheck": true, "strict": true,