Spaces:
Runtime error
Runtime error
Clean
Browse filesThis view is limited to 50 files because it contains too many changes. See raw diff
- .gitignore +7 -0
- README.md +6 -5
- backend/__pycache__/config.cpython-39.pyc +0 -0
- backend/__pycache__/main.cpython-39.pyc +0 -0
- backend/game/__pycache__/__init__.cpython-39.pyc +0 -0
- backend/game/__pycache__/buildings.cpython-39.pyc +0 -0
- backend/game/__pycache__/commands.cpython-39.pyc +0 -0
- backend/game/__pycache__/engine.cpython-39.pyc +0 -0
- backend/game/__pycache__/map.cpython-39.pyc +0 -0
- backend/game/__pycache__/state.cpython-39.pyc +0 -0
- backend/game/__pycache__/tech_tree.cpython-39.pyc +0 -0
- backend/game/__pycache__/units.cpython-39.pyc +0 -0
- backend/game/bot.py +133 -0
- backend/game/engine.py +4 -0
- backend/lobby/__pycache__/__init__.cpython-39.pyc +0 -0
- backend/lobby/__pycache__/manager.cpython-39.pyc +0 -0
- backend/lobby/manager.py +23 -1
- backend/main.py +7 -2
- backend/voice/__pycache__/__init__.cpython-39.pyc +0 -0
- backend/voice/__pycache__/command_parser.cpython-39.pyc +0 -0
- backend/voice/__pycache__/stt.cpython-39.pyc +0 -0
- backend/voice/__pycache__/tts.cpython-39.pyc +0 -0
- frontend/.svelte-kit/ambient.d.ts +24 -32
- frontend/.svelte-kit/generated/client-optimized/app.js +0 -31
- frontend/.svelte-kit/generated/client-optimized/matchers.js +0 -1
- frontend/.svelte-kit/generated/client-optimized/nodes/0.js +0 -1
- frontend/.svelte-kit/generated/client-optimized/nodes/1.js +0 -1
- frontend/.svelte-kit/generated/client-optimized/nodes/2.js +0 -3
- frontend/.svelte-kit/generated/client-optimized/nodes/3.js +0 -3
- frontend/.svelte-kit/generated/client/app.js +0 -31
- frontend/.svelte-kit/generated/client/matchers.js +0 -1
- frontend/.svelte-kit/generated/client/nodes/0.js +0 -1
- frontend/.svelte-kit/generated/client/nodes/1.js +0 -1
- frontend/.svelte-kit/generated/client/nodes/2.js +0 -3
- frontend/.svelte-kit/generated/client/nodes/3.js +0 -3
- frontend/.svelte-kit/generated/root.svelte +0 -62
- frontend/.svelte-kit/generated/server/internal.js +0 -53
- frontend/.svelte-kit/output/client/.vite/manifest.json +0 -110
- frontend/.svelte-kit/output/client/_app/immutable/assets/0.XtmqqaVM.css +0 -1
- frontend/.svelte-kit/output/client/_app/immutable/assets/2.BpyLQ8v8.css +0 -1
- frontend/.svelte-kit/output/client/_app/immutable/assets/3.CRf0cTrE.css +0 -1
- frontend/.svelte-kit/output/client/_app/immutable/chunks/BX82rj4I.js +0 -1
- frontend/.svelte-kit/output/client/_app/immutable/chunks/BxRIPBY0.js +0 -1
- frontend/.svelte-kit/output/client/_app/immutable/chunks/DQebRFVS.js +0 -1
- frontend/.svelte-kit/output/client/_app/immutable/chunks/J0QSAnNz.js +0 -1
- frontend/.svelte-kit/output/client/_app/immutable/entry/app.mfL3Z2b5.js +0 -2
- frontend/.svelte-kit/output/client/_app/immutable/entry/start.BPj5i5_S.js +0 -1
- frontend/.svelte-kit/output/client/_app/immutable/nodes/0.B4Km_xye.js +0 -1
- frontend/.svelte-kit/output/client/_app/immutable/nodes/1.CgjumiZZ.js +0 -1
- frontend/.svelte-kit/output/client/_app/immutable/nodes/2.CwsLFqkm.js +0 -4
.gitignore
CHANGED
|
@@ -1,3 +1,10 @@
|
|
| 1 |
.env
|
| 2 |
node_modules/
|
| 3 |
frontend/node_modules/
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
.env
|
| 2 |
node_modules/
|
| 3 |
frontend/node_modules/
|
| 4 |
+
|
| 5 |
+
__pycache__/
|
| 6 |
+
**/*.pyc
|
| 7 |
+
**/__pycache__/
|
| 8 |
+
frontend/.svelte-kit/generated/
|
| 9 |
+
frontend/.svelte-kit/output/
|
| 10 |
+
frontend/build/
|
README.md
CHANGED
|
@@ -1,14 +1,15 @@
|
|
| 1 |
---
|
| 2 |
-
title:
|
| 3 |
-
emoji:
|
| 4 |
-
colorFrom:
|
| 5 |
-
colorTo:
|
| 6 |
sdk: docker
|
| 7 |
app_port: 7860
|
| 8 |
pinned: false
|
|
|
|
| 9 |
---
|
| 10 |
|
| 11 |
-
#
|
| 12 |
|
| 13 |
> Hackathon Mistral × ElevenLabs — Hébergé sur Hugging Face Spaces
|
| 14 |
|
|
|
|
| 1 |
---
|
| 2 |
+
title: ChatCraft
|
| 3 |
+
emoji: 📚
|
| 4 |
+
colorFrom: gray
|
| 5 |
+
colorTo: green
|
| 6 |
sdk: docker
|
| 7 |
app_port: 7860
|
| 8 |
pinned: false
|
| 9 |
+
license: mit
|
| 10 |
---
|
| 11 |
|
| 12 |
+
# ChatCraft — RTS commandé à la voix
|
| 13 |
|
| 14 |
> Hackathon Mistral × ElevenLabs — Hébergé sur Hugging Face Spaces
|
| 15 |
|
backend/__pycache__/config.cpython-39.pyc
DELETED
|
Binary file (676 Bytes)
|
|
|
backend/__pycache__/main.cpython-39.pyc
DELETED
|
Binary file (8.07 kB)
|
|
|
backend/game/__pycache__/__init__.cpython-39.pyc
DELETED
|
Binary file (139 Bytes)
|
|
|
backend/game/__pycache__/buildings.cpython-39.pyc
DELETED
|
Binary file (3.41 kB)
|
|
|
backend/game/__pycache__/commands.cpython-39.pyc
DELETED
|
Binary file (2.25 kB)
|
|
|
backend/game/__pycache__/engine.cpython-39.pyc
DELETED
|
Binary file (23 kB)
|
|
|
backend/game/__pycache__/map.cpython-39.pyc
DELETED
|
Binary file (4.98 kB)
|
|
|
backend/game/__pycache__/state.cpython-39.pyc
DELETED
|
Binary file (6.23 kB)
|
|
|
backend/game/__pycache__/tech_tree.cpython-39.pyc
DELETED
|
Binary file (2.74 kB)
|
|
|
backend/game/__pycache__/units.cpython-39.pyc
DELETED
|
Binary file (3.87 kB)
|
|
|
backend/game/bot.py
ADDED
|
@@ -0,0 +1,133 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
"""
|
| 2 |
+
BotPlayer — simple rule-based AI opponent.
|
| 3 |
+
|
| 4 |
+
Strategy phases (evaluated every BOT_TICK_INTERVAL ticks ≈ 2 s):
|
| 5 |
+
1. SCVs gather minerals immediately
|
| 6 |
+
2. Build Supply Depot when minerals >= 100
|
| 7 |
+
3. Build Barracks when Supply Depot active & minerals >= 150
|
| 8 |
+
4. Train Marines continuously when Barracks active
|
| 9 |
+
5. Attack enemy base when military count >= 4
|
| 10 |
+
"""
|
| 11 |
+
|
| 12 |
+
from __future__ import annotations
|
| 13 |
+
|
| 14 |
+
import logging
|
| 15 |
+
from typing import TYPE_CHECKING
|
| 16 |
+
|
| 17 |
+
from .buildings import BuildingType
|
| 18 |
+
from .commands import ActionType, GameAction, ParsedCommand
|
| 19 |
+
from .units import UnitStatus, UnitType
|
| 20 |
+
|
| 21 |
+
if TYPE_CHECKING:
|
| 22 |
+
from .engine import GameEngine
|
| 23 |
+
|
| 24 |
+
log = logging.getLogger(__name__)
|
| 25 |
+
|
| 26 |
+
BOT_PLAYER_ID = "__bot__"
|
| 27 |
+
BOT_PLAYER_NAME = "Bot IA"
|
| 28 |
+
|
| 29 |
+
# Ticks between each bot decision (~4 ticks/s → 8 ticks ≈ 2 s)
|
| 30 |
+
BOT_TICK_INTERVAL = 8
|
| 31 |
+
|
| 32 |
+
|
| 33 |
+
def _cmd(*actions: GameAction) -> ParsedCommand:
|
| 34 |
+
return ParsedCommand(actions=list(actions), feedback="")
|
| 35 |
+
|
| 36 |
+
|
| 37 |
+
class BotPlayer:
|
| 38 |
+
"""Rule-based bot that drives one player slot in the game engine."""
|
| 39 |
+
|
| 40 |
+
def __init__(self, engine: "GameEngine", player_id: str) -> None:
|
| 41 |
+
self.engine = engine
|
| 42 |
+
self.player_id = player_id
|
| 43 |
+
self._initial_gather_done = False
|
| 44 |
+
|
| 45 |
+
# ------------------------------------------------------------------
|
| 46 |
+
# Main entry point — called by engine every BOT_TICK_INTERVAL ticks
|
| 47 |
+
# ------------------------------------------------------------------
|
| 48 |
+
|
| 49 |
+
def act(self) -> None:
|
| 50 |
+
state = self.engine.state
|
| 51 |
+
player = state.players.get(self.player_id)
|
| 52 |
+
if not player:
|
| 53 |
+
return
|
| 54 |
+
|
| 55 |
+
# 1. Send all SCVs to gather minerals (once)
|
| 56 |
+
if not self._initial_gather_done:
|
| 57 |
+
self.engine.apply_command(
|
| 58 |
+
self.player_id,
|
| 59 |
+
_cmd(GameAction(
|
| 60 |
+
type=ActionType.GATHER,
|
| 61 |
+
unit_selector="all_scv",
|
| 62 |
+
resource_type="minerals",
|
| 63 |
+
)),
|
| 64 |
+
)
|
| 65 |
+
self._initial_gather_done = True
|
| 66 |
+
|
| 67 |
+
# 2. Supply Depot
|
| 68 |
+
if (
|
| 69 |
+
player.minerals >= 100
|
| 70 |
+
and not player.has_active(BuildingType.SUPPLY_DEPOT)
|
| 71 |
+
and not _building_in_progress(player, BuildingType.SUPPLY_DEPOT)
|
| 72 |
+
):
|
| 73 |
+
self.engine.apply_command(
|
| 74 |
+
self.player_id,
|
| 75 |
+
_cmd(GameAction(
|
| 76 |
+
type=ActionType.BUILD,
|
| 77 |
+
building_type=BuildingType.SUPPLY_DEPOT.value,
|
| 78 |
+
)),
|
| 79 |
+
)
|
| 80 |
+
|
| 81 |
+
# 3. Barracks
|
| 82 |
+
if (
|
| 83 |
+
player.minerals >= 150
|
| 84 |
+
and player.has_active(BuildingType.SUPPLY_DEPOT)
|
| 85 |
+
and not player.has_active(BuildingType.BARRACKS)
|
| 86 |
+
and not _building_in_progress(player, BuildingType.BARRACKS)
|
| 87 |
+
):
|
| 88 |
+
self.engine.apply_command(
|
| 89 |
+
self.player_id,
|
| 90 |
+
_cmd(GameAction(
|
| 91 |
+
type=ActionType.BUILD,
|
| 92 |
+
building_type=BuildingType.BARRACKS.value,
|
| 93 |
+
)),
|
| 94 |
+
)
|
| 95 |
+
|
| 96 |
+
# 4. Train Marines
|
| 97 |
+
if (
|
| 98 |
+
player.has_active(BuildingType.BARRACKS)
|
| 99 |
+
and player.minerals >= 50
|
| 100 |
+
and player.supply_used < player.supply_max
|
| 101 |
+
):
|
| 102 |
+
self.engine.apply_command(
|
| 103 |
+
self.player_id,
|
| 104 |
+
_cmd(GameAction(
|
| 105 |
+
type=ActionType.TRAIN,
|
| 106 |
+
unit_type=UnitType.MARINE.value,
|
| 107 |
+
count=2,
|
| 108 |
+
)),
|
| 109 |
+
)
|
| 110 |
+
|
| 111 |
+
# 5. Attack with military when strong enough
|
| 112 |
+
military = [u for u in player.units.values() if u.unit_type != UnitType.SCV]
|
| 113 |
+
if len(military) >= 4:
|
| 114 |
+
self.engine.apply_command(
|
| 115 |
+
self.player_id,
|
| 116 |
+
_cmd(GameAction(
|
| 117 |
+
type=ActionType.ATTACK,
|
| 118 |
+
unit_selector="all_military",
|
| 119 |
+
target_zone="enemy_base",
|
| 120 |
+
)),
|
| 121 |
+
)
|
| 122 |
+
|
| 123 |
+
|
| 124 |
+
# ------------------------------------------------------------------
|
| 125 |
+
# Helpers
|
| 126 |
+
# ------------------------------------------------------------------
|
| 127 |
+
|
| 128 |
+
def _building_in_progress(player, bt: BuildingType) -> bool:
|
| 129 |
+
from .buildings import BuildingStatus # local import to avoid cycle
|
| 130 |
+
return any(
|
| 131 |
+
b.building_type == bt and b.status == BuildingStatus.CONSTRUCTING
|
| 132 |
+
for b in player.buildings.values()
|
| 133 |
+
)
|
backend/game/engine.py
CHANGED
|
@@ -18,6 +18,7 @@ from typing import TYPE_CHECKING, Optional
|
|
| 18 |
|
| 19 |
from config import TICK_INTERVAL, HARVEST_INTERVAL_TICKS, MINERAL_PER_HARVEST, GAS_PER_HARVEST
|
| 20 |
|
|
|
|
| 21 |
from .buildings import Building, BuildingDef, BuildingStatus, BuildingType, BUILDING_DEFS
|
| 22 |
from .commands import ActionResult, ActionType, CommandResult, GameAction, ParsedCommand
|
| 23 |
from .map import MAP_HEIGHT, MAP_WIDTH, ResourceType
|
|
@@ -39,6 +40,7 @@ class GameEngine:
|
|
| 39 |
self.state = state
|
| 40 |
self.sio = sio
|
| 41 |
self._task: Optional[asyncio.Task] = None # type: ignore[type-arg]
|
|
|
|
| 42 |
|
| 43 |
# ------------------------------------------------------------------
|
| 44 |
# Lifecycle
|
|
@@ -80,6 +82,8 @@ class GameEngine:
|
|
| 80 |
while self.state.phase == GamePhase.PLAYING:
|
| 81 |
await asyncio.sleep(TICK_INTERVAL)
|
| 82 |
self._tick()
|
|
|
|
|
|
|
| 83 |
await self._broadcast()
|
| 84 |
|
| 85 |
def _tick(self) -> None:
|
|
|
|
| 18 |
|
| 19 |
from config import TICK_INTERVAL, HARVEST_INTERVAL_TICKS, MINERAL_PER_HARVEST, GAS_PER_HARVEST
|
| 20 |
|
| 21 |
+
from .bot import BOT_TICK_INTERVAL, BotPlayer
|
| 22 |
from .buildings import Building, BuildingDef, BuildingStatus, BuildingType, BUILDING_DEFS
|
| 23 |
from .commands import ActionResult, ActionType, CommandResult, GameAction, ParsedCommand
|
| 24 |
from .map import MAP_HEIGHT, MAP_WIDTH, ResourceType
|
|
|
|
| 40 |
self.state = state
|
| 41 |
self.sio = sio
|
| 42 |
self._task: Optional[asyncio.Task] = None # type: ignore[type-arg]
|
| 43 |
+
self.bot: Optional[BotPlayer] = None
|
| 44 |
|
| 45 |
# ------------------------------------------------------------------
|
| 46 |
# Lifecycle
|
|
|
|
| 82 |
while self.state.phase == GamePhase.PLAYING:
|
| 83 |
await asyncio.sleep(TICK_INTERVAL)
|
| 84 |
self._tick()
|
| 85 |
+
if self.bot and self.state.tick % BOT_TICK_INTERVAL == 0:
|
| 86 |
+
self.bot.act()
|
| 87 |
await self._broadcast()
|
| 88 |
|
| 89 |
def _tick(self) -> None:
|
backend/lobby/__pycache__/__init__.cpython-39.pyc
DELETED
|
Binary file (140 Bytes)
|
|
|
backend/lobby/__pycache__/manager.cpython-39.pyc
DELETED
|
Binary file (7.29 kB)
|
|
|
backend/lobby/manager.py
CHANGED
|
@@ -25,6 +25,8 @@ import random
|
|
| 25 |
import string
|
| 26 |
from typing import Optional
|
| 27 |
|
|
|
|
|
|
|
| 28 |
log = logging.getLogger(__name__)
|
| 29 |
|
| 30 |
|
|
@@ -148,6 +150,22 @@ class LobbyManager:
|
|
| 148 |
if room:
|
| 149 |
room.status = "playing"
|
| 150 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 151 |
def finish_room(self, room_id: str) -> None:
|
| 152 |
room = self._rooms.get(room_id)
|
| 153 |
if room:
|
|
@@ -155,12 +173,16 @@ class LobbyManager:
|
|
| 155 |
|
| 156 |
def disconnect(self, sid: str) -> Optional[Room]:
|
| 157 |
"""Handle disconnection. Returns affected room (if any)."""
|
|
|
|
|
|
|
| 158 |
room = self._get_room(sid)
|
| 159 |
if room:
|
| 160 |
player = room.get_player(sid)
|
| 161 |
if player:
|
| 162 |
room.players.remove(player)
|
| 163 |
-
|
|
|
|
|
|
|
| 164 |
del self._rooms[room.room_id]
|
| 165 |
room = None
|
| 166 |
elif room.status == "playing":
|
|
|
|
| 25 |
import string
|
| 26 |
from typing import Optional
|
| 27 |
|
| 28 |
+
from game.bot import BOT_PLAYER_ID, BOT_PLAYER_NAME
|
| 29 |
+
|
| 30 |
log = logging.getLogger(__name__)
|
| 31 |
|
| 32 |
|
|
|
|
| 150 |
if room:
|
| 151 |
room.status = "playing"
|
| 152 |
|
| 153 |
+
def add_bot(self, room_id: str) -> tuple[Optional[Room], Optional[str]]:
|
| 154 |
+
"""Add the bot as the second player in a waiting room."""
|
| 155 |
+
room = self._rooms.get(room_id)
|
| 156 |
+
if not room:
|
| 157 |
+
return None, "Room introuvable."
|
| 158 |
+
if room.is_full:
|
| 159 |
+
return None, "Room pleine."
|
| 160 |
+
if room.status != "waiting":
|
| 161 |
+
return None, "La partie est déjà commencée."
|
| 162 |
+
|
| 163 |
+
bot = RoomPlayer(BOT_PLAYER_ID, BOT_PLAYER_NAME)
|
| 164 |
+
bot.ready = True
|
| 165 |
+
room.players.append(bot)
|
| 166 |
+
log.info("Bot added to room %s", room_id)
|
| 167 |
+
return room, None
|
| 168 |
+
|
| 169 |
def finish_room(self, room_id: str) -> None:
|
| 170 |
room = self._rooms.get(room_id)
|
| 171 |
if room:
|
|
|
|
| 173 |
|
| 174 |
def disconnect(self, sid: str) -> Optional[Room]:
|
| 175 |
"""Handle disconnection. Returns affected room (if any)."""
|
| 176 |
+
if sid == BOT_PLAYER_ID:
|
| 177 |
+
return None
|
| 178 |
room = self._get_room(sid)
|
| 179 |
if room:
|
| 180 |
player = room.get_player(sid)
|
| 181 |
if player:
|
| 182 |
room.players.remove(player)
|
| 183 |
+
# Keep the room alive if only the bot remains (game already over)
|
| 184 |
+
real_players = [p for p in room.players if p.sid != BOT_PLAYER_ID]
|
| 185 |
+
if not real_players:
|
| 186 |
del self._rooms[room.room_id]
|
| 187 |
room = None
|
| 188 |
elif room.status == "playing":
|
backend/main.py
CHANGED
|
@@ -28,6 +28,7 @@ Server → Client
|
|
| 28 |
|
| 29 |
from __future__ import annotations
|
| 30 |
|
|
|
|
| 31 |
import base64
|
| 32 |
import logging
|
| 33 |
import os
|
|
@@ -39,11 +40,14 @@ from fastapi import FastAPI
|
|
| 39 |
from fastapi.middleware.cors import CORSMiddleware
|
| 40 |
from fastapi.staticfiles import StaticFiles
|
| 41 |
|
|
|
|
| 42 |
from game.engine import GameEngine
|
| 43 |
from game.state import GameState
|
| 44 |
from lobby.manager import LobbyManager
|
| 45 |
from voice import command_parser, stt
|
| 46 |
|
|
|
|
|
|
|
| 47 |
logging.basicConfig(level=logging.INFO)
|
| 48 |
log = logging.getLogger(__name__)
|
| 49 |
|
|
@@ -60,7 +64,7 @@ sio = socketio.AsyncServer(
|
|
| 60 |
engineio_logger=False,
|
| 61 |
)
|
| 62 |
|
| 63 |
-
fastapi_app = FastAPI(title="
|
| 64 |
fastapi_app.add_middleware(
|
| 65 |
CORSMiddleware,
|
| 66 |
allow_origins=["*"],
|
|
@@ -85,7 +89,8 @@ app = socketio.ASGIApp(sio, fastapi_app)
|
|
| 85 |
# ---------------------------------------------------------------------------
|
| 86 |
|
| 87 |
lobby = LobbyManager()
|
| 88 |
-
engines: dict[str, GameEngine] = {}
|
|
|
|
| 89 |
|
| 90 |
# ---------------------------------------------------------------------------
|
| 91 |
# Helpers
|
|
|
|
| 28 |
|
| 29 |
from __future__ import annotations
|
| 30 |
|
| 31 |
+
import asyncio
|
| 32 |
import base64
|
| 33 |
import logging
|
| 34 |
import os
|
|
|
|
| 40 |
from fastapi.middleware.cors import CORSMiddleware
|
| 41 |
from fastapi.staticfiles import StaticFiles
|
| 42 |
|
| 43 |
+
from game.bot import BOT_PLAYER_ID, BotPlayer
|
| 44 |
from game.engine import GameEngine
|
| 45 |
from game.state import GameState
|
| 46 |
from lobby.manager import LobbyManager
|
| 47 |
from voice import command_parser, stt
|
| 48 |
|
| 49 |
+
BOT_OFFER_DELAY = 10 # seconds before offering bot opponent
|
| 50 |
+
|
| 51 |
logging.basicConfig(level=logging.INFO)
|
| 52 |
log = logging.getLogger(__name__)
|
| 53 |
|
|
|
|
| 64 |
engineio_logger=False,
|
| 65 |
)
|
| 66 |
|
| 67 |
+
fastapi_app = FastAPI(title="ChatCraft API")
|
| 68 |
fastapi_app.add_middleware(
|
| 69 |
CORSMiddleware,
|
| 70 |
allow_origins=["*"],
|
|
|
|
| 89 |
# ---------------------------------------------------------------------------
|
| 90 |
|
| 91 |
lobby = LobbyManager()
|
| 92 |
+
engines: dict[str, GameEngine] = {} # room_id → GameEngine
|
| 93 |
+
_bot_timers: dict[str, asyncio.Task] = {} # sid → pending bot-offer timer
|
| 94 |
|
| 95 |
# ---------------------------------------------------------------------------
|
| 96 |
# Helpers
|
backend/voice/__pycache__/__init__.cpython-39.pyc
DELETED
|
Binary file (140 Bytes)
|
|
|
backend/voice/__pycache__/command_parser.cpython-39.pyc
DELETED
|
Binary file (4.73 kB)
|
|
|
backend/voice/__pycache__/stt.cpython-39.pyc
DELETED
|
Binary file (1.38 kB)
|
|
|
backend/voice/__pycache__/tts.cpython-39.pyc
DELETED
|
Binary file (1.39 kB)
|
|
|
frontend/.svelte-kit/ambient.d.ts
CHANGED
|
@@ -40,16 +40,11 @@
|
|
| 40 |
declare module '$env/static/private' {
|
| 41 |
export const GJS_DEBUG_TOPICS: string;
|
| 42 |
export const LESSOPEN: string;
|
| 43 |
-
export const VSCODE_CWD: string;
|
| 44 |
-
export const CURSOR_EXTENSION_HOST_ROLE: string;
|
| 45 |
-
export const VSCODE_ESM_ENTRYPOINT: string;
|
| 46 |
export const CONDA_PROMPT_MODIFIER: string;
|
| 47 |
export const USER: string;
|
| 48 |
-
export const VSCODE_NLS_CONFIG: string;
|
| 49 |
export const npm_config_user_agent: string;
|
| 50 |
-
export const CI: string;
|
| 51 |
-
export const VSCODE_HANDLES_UNCAUGHT_ERRORS: string;
|
| 52 |
export const XDG_SESSION_TYPE: string;
|
|
|
|
| 53 |
export const npm_node_execpath: string;
|
| 54 |
export const SHLVL: string;
|
| 55 |
export const LD_LIBRARY_PATH: string;
|
|
@@ -59,29 +54,30 @@ declare module '$env/static/private' {
|
|
| 59 |
export const APPDIR: string;
|
| 60 |
export const CONDA_SHLVL: string;
|
| 61 |
export const OLDPWD: string;
|
|
|
|
| 62 |
export const DESKTOP_SESSION: string;
|
| 63 |
export const npm_package_json: string;
|
| 64 |
export const PERLLIB: string;
|
| 65 |
-
export const VSCODE_IPC_HOOK: string;
|
| 66 |
export const GIO_LAUNCHED_DESKTOP_FILE: string;
|
| 67 |
export const GNOME_SHELL_SESSION_MODE: string;
|
| 68 |
export const GTK_MODULES: string;
|
|
|
|
|
|
|
| 69 |
export const MANAGERPID: string;
|
| 70 |
export const npm_config_userconfig: string;
|
| 71 |
export const npm_config_local_prefix: string;
|
|
|
|
| 72 |
export const SYSTEMD_EXEC_PID: string;
|
| 73 |
-
export const
|
| 74 |
-
export const NO_COLOR: string;
|
| 75 |
export const DBUS_SESSION_BUS_ADDRESS: string;
|
|
|
|
| 76 |
export const _CE_M: string;
|
| 77 |
export const GIO_LAUNCHED_DESKTOP_FILE_PID: string;
|
| 78 |
export const COLOR: string;
|
| 79 |
-
export const VSCODE_CRASH_REPORTER_PROCESS_TYPE: string;
|
| 80 |
export const DEBUGINFOD_URLS: string;
|
| 81 |
export const IM_CONFIG_PHASE: string;
|
| 82 |
export const WAYLAND_DISPLAY: string;
|
| 83 |
export const LOGNAME: string;
|
| 84 |
-
export const FORCE_COLOR: string;
|
| 85 |
export const OWD: string;
|
| 86 |
export const JOURNAL_STREAM: string;
|
| 87 |
export const _: string;
|
|
@@ -102,18 +98,19 @@ declare module '$env/static/private' {
|
|
| 102 |
export const NODE: string;
|
| 103 |
export const npm_package_name: string;
|
| 104 |
export const XDG_MENU_PREFIX: string;
|
| 105 |
-
export const VSCODE_PROCESS_TITLE: string;
|
| 106 |
export const GNOME_SETUP_DISPLAY: string;
|
| 107 |
export const XDG_RUNTIME_DIR: string;
|
| 108 |
export const GDK_BACKEND: string;
|
| 109 |
-
export const CURSOR_AGENT: string;
|
| 110 |
export const DISPLAY: string;
|
|
|
|
| 111 |
export const LANG: string;
|
| 112 |
export const XDG_CURRENT_DESKTOP: string;
|
| 113 |
export const XMODIFIERS: string;
|
| 114 |
export const XDG_SESSION_DESKTOP: string;
|
| 115 |
export const XAUTHORITY: string;
|
| 116 |
export const LS_COLORS: string;
|
|
|
|
|
|
|
| 117 |
export const CURSOR_TRACE_ID: string;
|
| 118 |
export const npm_lifecycle_script: string;
|
| 119 |
export const SSH_AUTH_SOCK: string;
|
|
@@ -129,6 +126,8 @@ declare module '$env/static/private' {
|
|
| 129 |
export const CONDA_DEFAULT_ENV: string;
|
| 130 |
export const GPG_AGENT_INFO: string;
|
| 131 |
export const GJS_DEBUG_OUTPUT: string;
|
|
|
|
|
|
|
| 132 |
export const QT_IM_MODULE: string;
|
| 133 |
export const npm_config_globalconfig: string;
|
| 134 |
export const npm_config_init_module: string;
|
|
@@ -136,16 +135,13 @@ declare module '$env/static/private' {
|
|
| 136 |
export const npm_execpath: string;
|
| 137 |
export const XDG_CONFIG_DIRS: string;
|
| 138 |
export const CONDA_EXE: string;
|
| 139 |
-
export const VSCODE_CODE_CACHE_PATH: string;
|
| 140 |
export const XDG_DATA_DIRS: string;
|
| 141 |
export const npm_config_global_prefix: string;
|
| 142 |
export const npm_command: string;
|
| 143 |
export const CONDA_PREFIX: string;
|
| 144 |
export const QT_PLUGIN_PATH: string;
|
| 145 |
-
export const _ZO_DOCTOR: string;
|
| 146 |
export const QT_IM_MODULES: string;
|
| 147 |
export const MEMORY_PRESSURE_WRITE: string;
|
| 148 |
-
export const VSCODE_PID: string;
|
| 149 |
export const INIT_CWD: string;
|
| 150 |
export const EDITOR: string;
|
| 151 |
export const NODE_ENV: string;
|
|
@@ -237,16 +233,11 @@ declare module '$env/dynamic/private' {
|
|
| 237 |
export const env: {
|
| 238 |
GJS_DEBUG_TOPICS: string;
|
| 239 |
LESSOPEN: string;
|
| 240 |
-
VSCODE_CWD: string;
|
| 241 |
-
CURSOR_EXTENSION_HOST_ROLE: string;
|
| 242 |
-
VSCODE_ESM_ENTRYPOINT: string;
|
| 243 |
CONDA_PROMPT_MODIFIER: string;
|
| 244 |
USER: string;
|
| 245 |
-
VSCODE_NLS_CONFIG: string;
|
| 246 |
npm_config_user_agent: string;
|
| 247 |
-
CI: string;
|
| 248 |
-
VSCODE_HANDLES_UNCAUGHT_ERRORS: string;
|
| 249 |
XDG_SESSION_TYPE: string;
|
|
|
|
| 250 |
npm_node_execpath: string;
|
| 251 |
SHLVL: string;
|
| 252 |
LD_LIBRARY_PATH: string;
|
|
@@ -256,29 +247,30 @@ declare module '$env/dynamic/private' {
|
|
| 256 |
APPDIR: string;
|
| 257 |
CONDA_SHLVL: string;
|
| 258 |
OLDPWD: string;
|
|
|
|
| 259 |
DESKTOP_SESSION: string;
|
| 260 |
npm_package_json: string;
|
| 261 |
PERLLIB: string;
|
| 262 |
-
VSCODE_IPC_HOOK: string;
|
| 263 |
GIO_LAUNCHED_DESKTOP_FILE: string;
|
| 264 |
GNOME_SHELL_SESSION_MODE: string;
|
| 265 |
GTK_MODULES: string;
|
|
|
|
|
|
|
| 266 |
MANAGERPID: string;
|
| 267 |
npm_config_userconfig: string;
|
| 268 |
npm_config_local_prefix: string;
|
|
|
|
| 269 |
SYSTEMD_EXEC_PID: string;
|
| 270 |
-
|
| 271 |
-
NO_COLOR: string;
|
| 272 |
DBUS_SESSION_BUS_ADDRESS: string;
|
|
|
|
| 273 |
_CE_M: string;
|
| 274 |
GIO_LAUNCHED_DESKTOP_FILE_PID: string;
|
| 275 |
COLOR: string;
|
| 276 |
-
VSCODE_CRASH_REPORTER_PROCESS_TYPE: string;
|
| 277 |
DEBUGINFOD_URLS: string;
|
| 278 |
IM_CONFIG_PHASE: string;
|
| 279 |
WAYLAND_DISPLAY: string;
|
| 280 |
LOGNAME: string;
|
| 281 |
-
FORCE_COLOR: string;
|
| 282 |
OWD: string;
|
| 283 |
JOURNAL_STREAM: string;
|
| 284 |
_: string;
|
|
@@ -299,18 +291,19 @@ declare module '$env/dynamic/private' {
|
|
| 299 |
NODE: string;
|
| 300 |
npm_package_name: string;
|
| 301 |
XDG_MENU_PREFIX: string;
|
| 302 |
-
VSCODE_PROCESS_TITLE: string;
|
| 303 |
GNOME_SETUP_DISPLAY: string;
|
| 304 |
XDG_RUNTIME_DIR: string;
|
| 305 |
GDK_BACKEND: string;
|
| 306 |
-
CURSOR_AGENT: string;
|
| 307 |
DISPLAY: string;
|
|
|
|
| 308 |
LANG: string;
|
| 309 |
XDG_CURRENT_DESKTOP: string;
|
| 310 |
XMODIFIERS: string;
|
| 311 |
XDG_SESSION_DESKTOP: string;
|
| 312 |
XAUTHORITY: string;
|
| 313 |
LS_COLORS: string;
|
|
|
|
|
|
|
| 314 |
CURSOR_TRACE_ID: string;
|
| 315 |
npm_lifecycle_script: string;
|
| 316 |
SSH_AUTH_SOCK: string;
|
|
@@ -326,6 +319,8 @@ declare module '$env/dynamic/private' {
|
|
| 326 |
CONDA_DEFAULT_ENV: string;
|
| 327 |
GPG_AGENT_INFO: string;
|
| 328 |
GJS_DEBUG_OUTPUT: string;
|
|
|
|
|
|
|
| 329 |
QT_IM_MODULE: string;
|
| 330 |
npm_config_globalconfig: string;
|
| 331 |
npm_config_init_module: string;
|
|
@@ -333,16 +328,13 @@ declare module '$env/dynamic/private' {
|
|
| 333 |
npm_execpath: string;
|
| 334 |
XDG_CONFIG_DIRS: string;
|
| 335 |
CONDA_EXE: string;
|
| 336 |
-
VSCODE_CODE_CACHE_PATH: string;
|
| 337 |
XDG_DATA_DIRS: string;
|
| 338 |
npm_config_global_prefix: string;
|
| 339 |
npm_command: string;
|
| 340 |
CONDA_PREFIX: string;
|
| 341 |
QT_PLUGIN_PATH: string;
|
| 342 |
-
_ZO_DOCTOR: string;
|
| 343 |
QT_IM_MODULES: string;
|
| 344 |
MEMORY_PRESSURE_WRITE: string;
|
| 345 |
-
VSCODE_PID: string;
|
| 346 |
INIT_CWD: string;
|
| 347 |
EDITOR: string;
|
| 348 |
NODE_ENV: string;
|
|
|
|
| 40 |
declare module '$env/static/private' {
|
| 41 |
export const GJS_DEBUG_TOPICS: string;
|
| 42 |
export const LESSOPEN: string;
|
|
|
|
|
|
|
|
|
|
| 43 |
export const CONDA_PROMPT_MODIFIER: string;
|
| 44 |
export const USER: string;
|
|
|
|
| 45 |
export const npm_config_user_agent: string;
|
|
|
|
|
|
|
| 46 |
export const XDG_SESSION_TYPE: string;
|
| 47 |
+
export const GIT_ASKPASS: string;
|
| 48 |
export const npm_node_execpath: string;
|
| 49 |
export const SHLVL: string;
|
| 50 |
export const LD_LIBRARY_PATH: string;
|
|
|
|
| 54 |
export const APPDIR: string;
|
| 55 |
export const CONDA_SHLVL: string;
|
| 56 |
export const OLDPWD: string;
|
| 57 |
+
export const TERM_PROGRAM_VERSION: string;
|
| 58 |
export const DESKTOP_SESSION: string;
|
| 59 |
export const npm_package_json: string;
|
| 60 |
export const PERLLIB: string;
|
|
|
|
| 61 |
export const GIO_LAUNCHED_DESKTOP_FILE: string;
|
| 62 |
export const GNOME_SHELL_SESSION_MODE: string;
|
| 63 |
export const GTK_MODULES: string;
|
| 64 |
+
export const VSCODE_GIT_ASKPASS_MAIN: string;
|
| 65 |
+
export const VSCODE_GIT_ASKPASS_NODE: string;
|
| 66 |
export const MANAGERPID: string;
|
| 67 |
export const npm_config_userconfig: string;
|
| 68 |
export const npm_config_local_prefix: string;
|
| 69 |
+
export const PYDEVD_DISABLE_FILE_VALIDATION: string;
|
| 70 |
export const SYSTEMD_EXEC_PID: string;
|
| 71 |
+
export const BUNDLED_DEBUGPY_PATH: string;
|
|
|
|
| 72 |
export const DBUS_SESSION_BUS_ADDRESS: string;
|
| 73 |
+
export const COLORTERM: string;
|
| 74 |
export const _CE_M: string;
|
| 75 |
export const GIO_LAUNCHED_DESKTOP_FILE_PID: string;
|
| 76 |
export const COLOR: string;
|
|
|
|
| 77 |
export const DEBUGINFOD_URLS: string;
|
| 78 |
export const IM_CONFIG_PHASE: string;
|
| 79 |
export const WAYLAND_DISPLAY: string;
|
| 80 |
export const LOGNAME: string;
|
|
|
|
| 81 |
export const OWD: string;
|
| 82 |
export const JOURNAL_STREAM: string;
|
| 83 |
export const _: string;
|
|
|
|
| 98 |
export const NODE: string;
|
| 99 |
export const npm_package_name: string;
|
| 100 |
export const XDG_MENU_PREFIX: string;
|
|
|
|
| 101 |
export const GNOME_SETUP_DISPLAY: string;
|
| 102 |
export const XDG_RUNTIME_DIR: string;
|
| 103 |
export const GDK_BACKEND: string;
|
|
|
|
| 104 |
export const DISPLAY: string;
|
| 105 |
+
export const VSCODE_DEBUGPY_ADAPTER_ENDPOINTS: string;
|
| 106 |
export const LANG: string;
|
| 107 |
export const XDG_CURRENT_DESKTOP: string;
|
| 108 |
export const XMODIFIERS: string;
|
| 109 |
export const XDG_SESSION_DESKTOP: string;
|
| 110 |
export const XAUTHORITY: string;
|
| 111 |
export const LS_COLORS: string;
|
| 112 |
+
export const VSCODE_GIT_IPC_HANDLE: string;
|
| 113 |
+
export const TERM_PROGRAM: string;
|
| 114 |
export const CURSOR_TRACE_ID: string;
|
| 115 |
export const npm_lifecycle_script: string;
|
| 116 |
export const SSH_AUTH_SOCK: string;
|
|
|
|
| 126 |
export const CONDA_DEFAULT_ENV: string;
|
| 127 |
export const GPG_AGENT_INFO: string;
|
| 128 |
export const GJS_DEBUG_OUTPUT: string;
|
| 129 |
+
export const VSCODE_GIT_IPC_AUTH_TOKEN: string;
|
| 130 |
+
export const VSCODE_GIT_ASKPASS_EXTRA_ARGS: string;
|
| 131 |
export const QT_IM_MODULE: string;
|
| 132 |
export const npm_config_globalconfig: string;
|
| 133 |
export const npm_config_init_module: string;
|
|
|
|
| 135 |
export const npm_execpath: string;
|
| 136 |
export const XDG_CONFIG_DIRS: string;
|
| 137 |
export const CONDA_EXE: string;
|
|
|
|
| 138 |
export const XDG_DATA_DIRS: string;
|
| 139 |
export const npm_config_global_prefix: string;
|
| 140 |
export const npm_command: string;
|
| 141 |
export const CONDA_PREFIX: string;
|
| 142 |
export const QT_PLUGIN_PATH: string;
|
|
|
|
| 143 |
export const QT_IM_MODULES: string;
|
| 144 |
export const MEMORY_PRESSURE_WRITE: string;
|
|
|
|
| 145 |
export const INIT_CWD: string;
|
| 146 |
export const EDITOR: string;
|
| 147 |
export const NODE_ENV: string;
|
|
|
|
| 233 |
export const env: {
|
| 234 |
GJS_DEBUG_TOPICS: string;
|
| 235 |
LESSOPEN: string;
|
|
|
|
|
|
|
|
|
|
| 236 |
CONDA_PROMPT_MODIFIER: string;
|
| 237 |
USER: string;
|
|
|
|
| 238 |
npm_config_user_agent: string;
|
|
|
|
|
|
|
| 239 |
XDG_SESSION_TYPE: string;
|
| 240 |
+
GIT_ASKPASS: string;
|
| 241 |
npm_node_execpath: string;
|
| 242 |
SHLVL: string;
|
| 243 |
LD_LIBRARY_PATH: string;
|
|
|
|
| 247 |
APPDIR: string;
|
| 248 |
CONDA_SHLVL: string;
|
| 249 |
OLDPWD: string;
|
| 250 |
+
TERM_PROGRAM_VERSION: string;
|
| 251 |
DESKTOP_SESSION: string;
|
| 252 |
npm_package_json: string;
|
| 253 |
PERLLIB: string;
|
|
|
|
| 254 |
GIO_LAUNCHED_DESKTOP_FILE: string;
|
| 255 |
GNOME_SHELL_SESSION_MODE: string;
|
| 256 |
GTK_MODULES: string;
|
| 257 |
+
VSCODE_GIT_ASKPASS_MAIN: string;
|
| 258 |
+
VSCODE_GIT_ASKPASS_NODE: string;
|
| 259 |
MANAGERPID: string;
|
| 260 |
npm_config_userconfig: string;
|
| 261 |
npm_config_local_prefix: string;
|
| 262 |
+
PYDEVD_DISABLE_FILE_VALIDATION: string;
|
| 263 |
SYSTEMD_EXEC_PID: string;
|
| 264 |
+
BUNDLED_DEBUGPY_PATH: string;
|
|
|
|
| 265 |
DBUS_SESSION_BUS_ADDRESS: string;
|
| 266 |
+
COLORTERM: string;
|
| 267 |
_CE_M: string;
|
| 268 |
GIO_LAUNCHED_DESKTOP_FILE_PID: string;
|
| 269 |
COLOR: string;
|
|
|
|
| 270 |
DEBUGINFOD_URLS: string;
|
| 271 |
IM_CONFIG_PHASE: string;
|
| 272 |
WAYLAND_DISPLAY: string;
|
| 273 |
LOGNAME: string;
|
|
|
|
| 274 |
OWD: string;
|
| 275 |
JOURNAL_STREAM: string;
|
| 276 |
_: string;
|
|
|
|
| 291 |
NODE: string;
|
| 292 |
npm_package_name: string;
|
| 293 |
XDG_MENU_PREFIX: string;
|
|
|
|
| 294 |
GNOME_SETUP_DISPLAY: string;
|
| 295 |
XDG_RUNTIME_DIR: string;
|
| 296 |
GDK_BACKEND: string;
|
|
|
|
| 297 |
DISPLAY: string;
|
| 298 |
+
VSCODE_DEBUGPY_ADAPTER_ENDPOINTS: string;
|
| 299 |
LANG: string;
|
| 300 |
XDG_CURRENT_DESKTOP: string;
|
| 301 |
XMODIFIERS: string;
|
| 302 |
XDG_SESSION_DESKTOP: string;
|
| 303 |
XAUTHORITY: string;
|
| 304 |
LS_COLORS: string;
|
| 305 |
+
VSCODE_GIT_IPC_HANDLE: string;
|
| 306 |
+
TERM_PROGRAM: string;
|
| 307 |
CURSOR_TRACE_ID: string;
|
| 308 |
npm_lifecycle_script: string;
|
| 309 |
SSH_AUTH_SOCK: string;
|
|
|
|
| 319 |
CONDA_DEFAULT_ENV: string;
|
| 320 |
GPG_AGENT_INFO: string;
|
| 321 |
GJS_DEBUG_OUTPUT: string;
|
| 322 |
+
VSCODE_GIT_IPC_AUTH_TOKEN: string;
|
| 323 |
+
VSCODE_GIT_ASKPASS_EXTRA_ARGS: string;
|
| 324 |
QT_IM_MODULE: string;
|
| 325 |
npm_config_globalconfig: string;
|
| 326 |
npm_config_init_module: string;
|
|
|
|
| 328 |
npm_execpath: string;
|
| 329 |
XDG_CONFIG_DIRS: string;
|
| 330 |
CONDA_EXE: string;
|
|
|
|
| 331 |
XDG_DATA_DIRS: string;
|
| 332 |
npm_config_global_prefix: string;
|
| 333 |
npm_command: string;
|
| 334 |
CONDA_PREFIX: string;
|
| 335 |
QT_PLUGIN_PATH: string;
|
|
|
|
| 336 |
QT_IM_MODULES: string;
|
| 337 |
MEMORY_PRESSURE_WRITE: string;
|
|
|
|
| 338 |
INIT_CWD: string;
|
| 339 |
EDITOR: string;
|
| 340 |
NODE_ENV: string;
|
frontend/.svelte-kit/generated/client-optimized/app.js
DELETED
|
@@ -1,31 +0,0 @@
|
|
| 1 |
-
export { matchers } from './matchers.js';
|
| 2 |
-
|
| 3 |
-
export const nodes = [
|
| 4 |
-
() => import('./nodes/0'),
|
| 5 |
-
() => import('./nodes/1'),
|
| 6 |
-
() => import('./nodes/2'),
|
| 7 |
-
() => import('./nodes/3')
|
| 8 |
-
];
|
| 9 |
-
|
| 10 |
-
export const server_loads = [];
|
| 11 |
-
|
| 12 |
-
export const dictionary = {
|
| 13 |
-
"/": [2],
|
| 14 |
-
"/game": [3]
|
| 15 |
-
};
|
| 16 |
-
|
| 17 |
-
export const hooks = {
|
| 18 |
-
handleError: (({ error }) => { console.error(error) }),
|
| 19 |
-
|
| 20 |
-
reroute: (() => {}),
|
| 21 |
-
transport: {}
|
| 22 |
-
};
|
| 23 |
-
|
| 24 |
-
export const decoders = Object.fromEntries(Object.entries(hooks.transport).map(([k, v]) => [k, v.decode]));
|
| 25 |
-
export const encoders = Object.fromEntries(Object.entries(hooks.transport).map(([k, v]) => [k, v.encode]));
|
| 26 |
-
|
| 27 |
-
export const hash = false;
|
| 28 |
-
|
| 29 |
-
export const decode = (type, value) => decoders[type](value);
|
| 30 |
-
|
| 31 |
-
export { default as root } from '../root.svelte';
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
frontend/.svelte-kit/generated/client-optimized/matchers.js
DELETED
|
@@ -1 +0,0 @@
|
|
| 1 |
-
export const matchers = {};
|
|
|
|
|
|
frontend/.svelte-kit/generated/client-optimized/nodes/0.js
DELETED
|
@@ -1 +0,0 @@
|
|
| 1 |
-
export { default as component } from "../../../../src/routes/+layout.svelte";
|
|
|
|
|
|
frontend/.svelte-kit/generated/client-optimized/nodes/1.js
DELETED
|
@@ -1 +0,0 @@
|
|
| 1 |
-
export { default as component } from "../../../../node_modules/@sveltejs/kit/src/runtime/components/svelte-4/error.svelte";
|
|
|
|
|
|
frontend/.svelte-kit/generated/client-optimized/nodes/2.js
DELETED
|
@@ -1,3 +0,0 @@
|
|
| 1 |
-
import * as universal from "../../../../src/routes/+page.js";
|
| 2 |
-
export { universal };
|
| 3 |
-
export { default as component } from "../../../../src/routes/+page.svelte";
|
|
|
|
|
|
|
|
|
|
|
|
frontend/.svelte-kit/generated/client-optimized/nodes/3.js
DELETED
|
@@ -1,3 +0,0 @@
|
|
| 1 |
-
import * as universal from "../../../../src/routes/game/+page.js";
|
| 2 |
-
export { universal };
|
| 3 |
-
export { default as component } from "../../../../src/routes/game/+page.svelte";
|
|
|
|
|
|
|
|
|
|
|
|
frontend/.svelte-kit/generated/client/app.js
DELETED
|
@@ -1,31 +0,0 @@
|
|
| 1 |
-
export { matchers } from './matchers.js';
|
| 2 |
-
|
| 3 |
-
export const nodes = [
|
| 4 |
-
() => import('./nodes/0'),
|
| 5 |
-
() => import('./nodes/1'),
|
| 6 |
-
() => import('./nodes/2'),
|
| 7 |
-
() => import('./nodes/3')
|
| 8 |
-
];
|
| 9 |
-
|
| 10 |
-
export const server_loads = [];
|
| 11 |
-
|
| 12 |
-
export const dictionary = {
|
| 13 |
-
"/": [2],
|
| 14 |
-
"/game": [3]
|
| 15 |
-
};
|
| 16 |
-
|
| 17 |
-
export const hooks = {
|
| 18 |
-
handleError: (({ error }) => { console.error(error) }),
|
| 19 |
-
|
| 20 |
-
reroute: (() => {}),
|
| 21 |
-
transport: {}
|
| 22 |
-
};
|
| 23 |
-
|
| 24 |
-
export const decoders = Object.fromEntries(Object.entries(hooks.transport).map(([k, v]) => [k, v.decode]));
|
| 25 |
-
export const encoders = Object.fromEntries(Object.entries(hooks.transport).map(([k, v]) => [k, v.encode]));
|
| 26 |
-
|
| 27 |
-
export const hash = false;
|
| 28 |
-
|
| 29 |
-
export const decode = (type, value) => decoders[type](value);
|
| 30 |
-
|
| 31 |
-
export { default as root } from '../root.svelte';
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
frontend/.svelte-kit/generated/client/matchers.js
DELETED
|
@@ -1 +0,0 @@
|
|
| 1 |
-
export const matchers = {};
|
|
|
|
|
|
frontend/.svelte-kit/generated/client/nodes/0.js
DELETED
|
@@ -1 +0,0 @@
|
|
| 1 |
-
export { default as component } from "../../../../src/routes/+layout.svelte";
|
|
|
|
|
|
frontend/.svelte-kit/generated/client/nodes/1.js
DELETED
|
@@ -1 +0,0 @@
|
|
| 1 |
-
export { default as component } from "../../../../node_modules/@sveltejs/kit/src/runtime/components/svelte-4/error.svelte";
|
|
|
|
|
|
frontend/.svelte-kit/generated/client/nodes/2.js
DELETED
|
@@ -1,3 +0,0 @@
|
|
| 1 |
-
import * as universal from "../../../../src/routes/+page.js";
|
| 2 |
-
export { universal };
|
| 3 |
-
export { default as component } from "../../../../src/routes/+page.svelte";
|
|
|
|
|
|
|
|
|
|
|
|
frontend/.svelte-kit/generated/client/nodes/3.js
DELETED
|
@@ -1,3 +0,0 @@
|
|
| 1 |
-
import * as universal from "../../../../src/routes/game/+page.js";
|
| 2 |
-
export { universal };
|
| 3 |
-
export { default as component } from "../../../../src/routes/game/+page.svelte";
|
|
|
|
|
|
|
|
|
|
|
|
frontend/.svelte-kit/generated/root.svelte
DELETED
|
@@ -1,62 +0,0 @@
|
|
| 1 |
-
<!-- This file is generated by @sveltejs/kit — do not edit it! -->
|
| 2 |
-
|
| 3 |
-
<script>
|
| 4 |
-
import { setContext, afterUpdate, onMount, tick } from 'svelte';
|
| 5 |
-
import { browser } from '$app/environment';
|
| 6 |
-
|
| 7 |
-
// stores
|
| 8 |
-
export let stores;
|
| 9 |
-
export let page;
|
| 10 |
-
|
| 11 |
-
export let constructors;
|
| 12 |
-
export let components = [];
|
| 13 |
-
export let form;
|
| 14 |
-
export let data_0 = null;
|
| 15 |
-
export let data_1 = null;
|
| 16 |
-
|
| 17 |
-
if (!browser) {
|
| 18 |
-
// svelte-ignore state_referenced_locally
|
| 19 |
-
setContext('__svelte__', stores);
|
| 20 |
-
}
|
| 21 |
-
|
| 22 |
-
$: stores.page.set(page);
|
| 23 |
-
afterUpdate(stores.page.notify);
|
| 24 |
-
|
| 25 |
-
let mounted = false;
|
| 26 |
-
let navigated = false;
|
| 27 |
-
let title = null;
|
| 28 |
-
|
| 29 |
-
onMount(() => {
|
| 30 |
-
const unsubscribe = stores.page.subscribe(() => {
|
| 31 |
-
if (mounted) {
|
| 32 |
-
navigated = true;
|
| 33 |
-
tick().then(() => {
|
| 34 |
-
title = document.title || 'untitled page';
|
| 35 |
-
});
|
| 36 |
-
}
|
| 37 |
-
});
|
| 38 |
-
|
| 39 |
-
mounted = true;
|
| 40 |
-
return unsubscribe;
|
| 41 |
-
});
|
| 42 |
-
|
| 43 |
-
|
| 44 |
-
</script>
|
| 45 |
-
|
| 46 |
-
{#if constructors[1]}
|
| 47 |
-
<svelte:component this={constructors[0]} bind:this={components[0]} data={data_0} params={page.params}>
|
| 48 |
-
<svelte:component this={constructors[1]} bind:this={components[1]} data={data_1} {form} params={page.params} />
|
| 49 |
-
</svelte:component>
|
| 50 |
-
|
| 51 |
-
{:else}
|
| 52 |
-
<svelte:component this={constructors[0]} bind:this={components[0]} data={data_0} {form} params={page.params} />
|
| 53 |
-
|
| 54 |
-
{/if}
|
| 55 |
-
|
| 56 |
-
{#if mounted}
|
| 57 |
-
<div id="svelte-announcer" aria-live="assertive" aria-atomic="true" style="position: absolute; left: 0; top: 0; clip: rect(0 0 0 0); clip-path: inset(50%); overflow: hidden; white-space: nowrap; width: 1px; height: 1px">
|
| 58 |
-
{#if navigated}
|
| 59 |
-
{title}
|
| 60 |
-
{/if}
|
| 61 |
-
</div>
|
| 62 |
-
{/if}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
frontend/.svelte-kit/generated/server/internal.js
DELETED
|
@@ -1,53 +0,0 @@
|
|
| 1 |
-
|
| 2 |
-
import root from '../root.svelte';
|
| 3 |
-
import { set_building, set_prerendering } from '__sveltekit/environment';
|
| 4 |
-
import { set_assets } from '$app/paths/internal/server';
|
| 5 |
-
import { set_manifest, set_read_implementation } from '__sveltekit/server';
|
| 6 |
-
import { set_private_env, set_public_env } from '../../../node_modules/@sveltejs/kit/src/runtime/shared-server.js';
|
| 7 |
-
|
| 8 |
-
export const options = {
|
| 9 |
-
app_template_contains_nonce: false,
|
| 10 |
-
async: false,
|
| 11 |
-
csp: {"mode":"auto","directives":{"upgrade-insecure-requests":false,"block-all-mixed-content":false},"reportOnly":{"upgrade-insecure-requests":false,"block-all-mixed-content":false}},
|
| 12 |
-
csrf_check_origin: true,
|
| 13 |
-
csrf_trusted_origins: [],
|
| 14 |
-
embedded: false,
|
| 15 |
-
env_public_prefix: 'PUBLIC_',
|
| 16 |
-
env_private_prefix: '',
|
| 17 |
-
hash_routing: false,
|
| 18 |
-
hooks: null, // added lazily, via `get_hooks`
|
| 19 |
-
preload_strategy: "modulepreload",
|
| 20 |
-
root,
|
| 21 |
-
service_worker: false,
|
| 22 |
-
service_worker_options: undefined,
|
| 23 |
-
templates: {
|
| 24 |
-
app: ({ head, body, assets, nonce, env }) => "<!doctype html>\n<html lang=\"fr\">\n <head>\n <meta charset=\"utf-8\" />\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1, viewport-fit=cover, user-scalable=no\" />\n <meta name=\"mobile-web-app-capable\" content=\"yes\" />\n <meta name=\"apple-mobile-web-app-capable\" content=\"yes\" />\n <meta name=\"apple-mobile-web-app-status-bar-style\" content=\"black-translucent\" />\n <meta name=\"theme-color\" content=\"#0d1117\" />\n <link rel=\"icon\" href=\"" + assets + "/favicon.png\" />\n <title>VoiceStrike</title>\n " + head + "\n </head>\n <body data-sveltekit-preload-data=\"hover\">\n <div style=\"display: contents\">" + body + "</div>\n </body>\n</html>\n",
|
| 25 |
-
error: ({ status, message }) => "<!doctype html>\n<html lang=\"en\">\n\t<head>\n\t\t<meta charset=\"utf-8\" />\n\t\t<title>" + message + "</title>\n\n\t\t<style>\n\t\t\tbody {\n\t\t\t\t--bg: white;\n\t\t\t\t--fg: #222;\n\t\t\t\t--divider: #ccc;\n\t\t\t\tbackground: var(--bg);\n\t\t\t\tcolor: var(--fg);\n\t\t\t\tfont-family:\n\t\t\t\t\tsystem-ui,\n\t\t\t\t\t-apple-system,\n\t\t\t\t\tBlinkMacSystemFont,\n\t\t\t\t\t'Segoe UI',\n\t\t\t\t\tRoboto,\n\t\t\t\t\tOxygen,\n\t\t\t\t\tUbuntu,\n\t\t\t\t\tCantarell,\n\t\t\t\t\t'Open Sans',\n\t\t\t\t\t'Helvetica Neue',\n\t\t\t\t\tsans-serif;\n\t\t\t\tdisplay: flex;\n\t\t\t\talign-items: center;\n\t\t\t\tjustify-content: center;\n\t\t\t\theight: 100vh;\n\t\t\t\tmargin: 0;\n\t\t\t}\n\n\t\t\t.error {\n\t\t\t\tdisplay: flex;\n\t\t\t\talign-items: center;\n\t\t\t\tmax-width: 32rem;\n\t\t\t\tmargin: 0 1rem;\n\t\t\t}\n\n\t\t\t.status {\n\t\t\t\tfont-weight: 200;\n\t\t\t\tfont-size: 3rem;\n\t\t\t\tline-height: 1;\n\t\t\t\tposition: relative;\n\t\t\t\ttop: -0.05rem;\n\t\t\t}\n\n\t\t\t.message {\n\t\t\t\tborder-left: 1px solid var(--divider);\n\t\t\t\tpadding: 0 0 0 1rem;\n\t\t\t\tmargin: 0 0 0 1rem;\n\t\t\t\tmin-height: 2.5rem;\n\t\t\t\tdisplay: flex;\n\t\t\t\talign-items: center;\n\t\t\t}\n\n\t\t\t.message h1 {\n\t\t\t\tfont-weight: 400;\n\t\t\t\tfont-size: 1em;\n\t\t\t\tmargin: 0;\n\t\t\t}\n\n\t\t\t@media (prefers-color-scheme: dark) {\n\t\t\t\tbody {\n\t\t\t\t\t--bg: #222;\n\t\t\t\t\t--fg: #ddd;\n\t\t\t\t\t--divider: #666;\n\t\t\t\t}\n\t\t\t}\n\t\t</style>\n\t</head>\n\t<body>\n\t\t<div class=\"error\">\n\t\t\t<span class=\"status\">" + status + "</span>\n\t\t\t<div class=\"message\">\n\t\t\t\t<h1>" + message + "</h1>\n\t\t\t</div>\n\t\t</div>\n\t</body>\n</html>\n"
|
| 26 |
-
},
|
| 27 |
-
version_hash: "ofzaah"
|
| 28 |
-
};
|
| 29 |
-
|
| 30 |
-
export async function get_hooks() {
|
| 31 |
-
let handle;
|
| 32 |
-
let handleFetch;
|
| 33 |
-
let handleError;
|
| 34 |
-
let handleValidationError;
|
| 35 |
-
let init;
|
| 36 |
-
|
| 37 |
-
|
| 38 |
-
let reroute;
|
| 39 |
-
let transport;
|
| 40 |
-
|
| 41 |
-
|
| 42 |
-
return {
|
| 43 |
-
handle,
|
| 44 |
-
handleFetch,
|
| 45 |
-
handleError,
|
| 46 |
-
handleValidationError,
|
| 47 |
-
init,
|
| 48 |
-
reroute,
|
| 49 |
-
transport
|
| 50 |
-
};
|
| 51 |
-
}
|
| 52 |
-
|
| 53 |
-
export { set_assets, set_building, set_manifest, set_prerendering, set_private_env, set_public_env, set_read_implementation };
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
frontend/.svelte-kit/output/client/.vite/manifest.json
DELETED
|
@@ -1,110 +0,0 @@
|
|
| 1 |
-
{
|
| 2 |
-
".svelte-kit/generated/client-optimized/app.js": {
|
| 3 |
-
"file": "_app/immutable/entry/app.mfL3Z2b5.js",
|
| 4 |
-
"name": "entry/app",
|
| 5 |
-
"src": ".svelte-kit/generated/client-optimized/app.js",
|
| 6 |
-
"isEntry": true,
|
| 7 |
-
"imports": [
|
| 8 |
-
"_DQebRFVS.js",
|
| 9 |
-
"_BX82rj4I.js"
|
| 10 |
-
],
|
| 11 |
-
"dynamicImports": [
|
| 12 |
-
".svelte-kit/generated/client-optimized/nodes/0.js",
|
| 13 |
-
".svelte-kit/generated/client-optimized/nodes/1.js",
|
| 14 |
-
".svelte-kit/generated/client-optimized/nodes/2.js",
|
| 15 |
-
".svelte-kit/generated/client-optimized/nodes/3.js"
|
| 16 |
-
]
|
| 17 |
-
},
|
| 18 |
-
".svelte-kit/generated/client-optimized/nodes/0.js": {
|
| 19 |
-
"file": "_app/immutable/nodes/0.B4Km_xye.js",
|
| 20 |
-
"name": "nodes/0",
|
| 21 |
-
"src": ".svelte-kit/generated/client-optimized/nodes/0.js",
|
| 22 |
-
"isEntry": true,
|
| 23 |
-
"isDynamicEntry": true,
|
| 24 |
-
"imports": [
|
| 25 |
-
"_DQebRFVS.js",
|
| 26 |
-
"_BX82rj4I.js"
|
| 27 |
-
],
|
| 28 |
-
"css": [
|
| 29 |
-
"_app/immutable/assets/0.XtmqqaVM.css"
|
| 30 |
-
]
|
| 31 |
-
},
|
| 32 |
-
".svelte-kit/generated/client-optimized/nodes/1.js": {
|
| 33 |
-
"file": "_app/immutable/nodes/1.CgjumiZZ.js",
|
| 34 |
-
"name": "nodes/1",
|
| 35 |
-
"src": ".svelte-kit/generated/client-optimized/nodes/1.js",
|
| 36 |
-
"isEntry": true,
|
| 37 |
-
"isDynamicEntry": true,
|
| 38 |
-
"imports": [
|
| 39 |
-
"_DQebRFVS.js",
|
| 40 |
-
"_BX82rj4I.js",
|
| 41 |
-
"_J0QSAnNz.js"
|
| 42 |
-
]
|
| 43 |
-
},
|
| 44 |
-
".svelte-kit/generated/client-optimized/nodes/2.js": {
|
| 45 |
-
"file": "_app/immutable/nodes/2.CwsLFqkm.js",
|
| 46 |
-
"name": "nodes/2",
|
| 47 |
-
"src": ".svelte-kit/generated/client-optimized/nodes/2.js",
|
| 48 |
-
"isEntry": true,
|
| 49 |
-
"isDynamicEntry": true,
|
| 50 |
-
"imports": [
|
| 51 |
-
"_DQebRFVS.js",
|
| 52 |
-
"_BxRIPBY0.js",
|
| 53 |
-
"_BX82rj4I.js",
|
| 54 |
-
"_J0QSAnNz.js"
|
| 55 |
-
],
|
| 56 |
-
"css": [
|
| 57 |
-
"_app/immutable/assets/2.BpyLQ8v8.css"
|
| 58 |
-
]
|
| 59 |
-
},
|
| 60 |
-
".svelte-kit/generated/client-optimized/nodes/3.js": {
|
| 61 |
-
"file": "_app/immutable/nodes/3.xYrSFp1n.js",
|
| 62 |
-
"name": "nodes/3",
|
| 63 |
-
"src": ".svelte-kit/generated/client-optimized/nodes/3.js",
|
| 64 |
-
"isEntry": true,
|
| 65 |
-
"isDynamicEntry": true,
|
| 66 |
-
"imports": [
|
| 67 |
-
"_DQebRFVS.js",
|
| 68 |
-
"_BX82rj4I.js",
|
| 69 |
-
"_J0QSAnNz.js",
|
| 70 |
-
"_BxRIPBY0.js"
|
| 71 |
-
],
|
| 72 |
-
"css": [
|
| 73 |
-
"_app/immutable/assets/3.CRf0cTrE.css"
|
| 74 |
-
]
|
| 75 |
-
},
|
| 76 |
-
"_BX82rj4I.js": {
|
| 77 |
-
"file": "_app/immutable/chunks/BX82rj4I.js",
|
| 78 |
-
"name": "index",
|
| 79 |
-
"imports": [
|
| 80 |
-
"_DQebRFVS.js"
|
| 81 |
-
]
|
| 82 |
-
},
|
| 83 |
-
"_BxRIPBY0.js": {
|
| 84 |
-
"file": "_app/immutable/chunks/BxRIPBY0.js",
|
| 85 |
-
"name": "game",
|
| 86 |
-
"imports": [
|
| 87 |
-
"_J0QSAnNz.js"
|
| 88 |
-
]
|
| 89 |
-
},
|
| 90 |
-
"_DQebRFVS.js": {
|
| 91 |
-
"file": "_app/immutable/chunks/DQebRFVS.js",
|
| 92 |
-
"name": "scheduler"
|
| 93 |
-
},
|
| 94 |
-
"_J0QSAnNz.js": {
|
| 95 |
-
"file": "_app/immutable/chunks/J0QSAnNz.js",
|
| 96 |
-
"name": "entry",
|
| 97 |
-
"imports": [
|
| 98 |
-
"_DQebRFVS.js"
|
| 99 |
-
]
|
| 100 |
-
},
|
| 101 |
-
"node_modules/@sveltejs/kit/src/runtime/client/entry.js": {
|
| 102 |
-
"file": "_app/immutable/entry/start.BPj5i5_S.js",
|
| 103 |
-
"name": "entry/start",
|
| 104 |
-
"src": "node_modules/@sveltejs/kit/src/runtime/client/entry.js",
|
| 105 |
-
"isEntry": true,
|
| 106 |
-
"imports": [
|
| 107 |
-
"_J0QSAnNz.js"
|
| 108 |
-
]
|
| 109 |
-
}
|
| 110 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
frontend/.svelte-kit/output/client/_app/immutable/assets/0.XtmqqaVM.css
DELETED
|
@@ -1 +0,0 @@
|
|
| 1 |
-
:root{--bg: #0d1117;--surface: #161b22;--surface2: #1c2128;--border: #30363d;--border-focus: #58a6ff;--mineral: #4fc3f7;--gas: #69f0ae;--supply: #ffa726;--player: #58a6ff;--enemy: #f85149;--neutral: #8b949e;--text: #e6edf3;--text-muted: #8b949e;--text-dim: #484f58;--accent: #58a6ff;--success: #3fb950;--warning: #d29922;--danger: #f85149;--map-bg: #0b1a0b;--map-grid: rgba(255, 255, 255, .03);--radius: 8px;--radius-lg: 16px;--radius-xl: 24px;--font-mono: "JetBrains Mono", "Fira Code", "Courier New", monospace}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}html{height:100%;height:-webkit-fill-available}body{height:100%;min-height:-webkit-fill-available;background:var(--bg);color:var(--text);font-family:system-ui,-apple-system,sans-serif;overflow:hidden;overscroll-behavior:none;-webkit-tap-highlight-color:transparent;user-select:none;-webkit-user-select:none}button{cursor:pointer;border:none;background:none;color:inherit;font:inherit;-webkit-tap-highlight-color:transparent}input{font:inherit;color:inherit}::-webkit-scrollbar{width:4px}::-webkit-scrollbar-track{background:var(--surface)}::-webkit-scrollbar-thumb{background:var(--border);border-radius:2px}.mono{font-family:var(--font-mono)}.glow-mineral{text-shadow:0 0 8px var(--mineral)}.glow-gas{text-shadow:0 0 8px var(--gas)}.glow-danger{text-shadow:0 0 8px var(--danger)}
|
|
|
|
|
|
frontend/.svelte-kit/output/client/_app/immutable/assets/2.BpyLQ8v8.css
DELETED
|
@@ -1 +0,0 @@
|
|
| 1 |
-
.lobby.svelte-cigodj.svelte-cigodj{min-height:100dvh;display:flex;flex-direction:column;align-items:center;gap:20px;padding:40px 20px 32px;max-width:440px;margin:0 auto}.lobby-header.svelte-cigodj.svelte-cigodj{text-align:center;padding:8px 0}.logo.svelte-cigodj.svelte-cigodj{display:flex;align-items:center;justify-content:center;gap:10px;margin-bottom:6px}.logo-icon.svelte-cigodj.svelte-cigodj{font-size:2rem}.logo-text.svelte-cigodj.svelte-cigodj{font-size:2rem;font-weight:800;letter-spacing:-1px;background:linear-gradient(135deg,var(--player),#a78bfa);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}.tagline.svelte-cigodj.svelte-cigodj{color:var(--text-muted);font-size:.85rem}.card.svelte-cigodj.svelte-cigodj{width:100%;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);padding:20px}.center.svelte-cigodj.svelte-cigodj{display:flex;flex-direction:column;align-items:center;gap:12px;text-align:center;padding:40px 20px}.field-label.svelte-cigodj.svelte-cigodj{display:block;font-size:.75rem;font-weight:600;text-transform:uppercase;letter-spacing:.08em;color:var(--text-muted);margin-bottom:8px}.text-input.svelte-cigodj.svelte-cigodj{width:100%;background:var(--bg);border:1px solid var(--border);border-radius:var(--radius);padding:12px 14px;font-size:1rem;color:var(--text);outline:none;transition:border-color .15s}.text-input.svelte-cigodj.svelte-cigodj:focus{border-color:var(--border-focus)}.code-input.svelte-cigodj.svelte-cigodj{text-transform:uppercase;letter-spacing:.2em;font-weight:700;font-size:1.1rem;flex:1}.actions.svelte-cigodj.svelte-cigodj{width:100%;display:flex;flex-direction:column;gap:10px}.join-row.svelte-cigodj.svelte-cigodj{display:flex;gap:8px;align-items:stretch}.btn.svelte-cigodj.svelte-cigodj{display:flex;align-items:center;justify-content:center;gap:8px;padding:14px 20px;border-radius:var(--radius-lg);font-size:.95rem;font-weight:600;transition:all .15s;width:100%}.btn-sm.svelte-cigodj.svelte-cigodj{padding:12px 16px;width:auto;flex-shrink:0}.btn-large.svelte-cigodj.svelte-cigodj{padding:18px 20px;font-size:1.1rem}.btn-icon.svelte-cigodj.svelte-cigodj{font-size:1.1rem}.btn-primary.svelte-cigodj.svelte-cigodj{background:var(--player);color:#fff}.btn-primary.svelte-cigodj.svelte-cigodj:hover{filter:brightness(1.1)}.btn-primary.svelte-cigodj.svelte-cigodj:active{filter:brightness(.9)}.btn-secondary.svelte-cigodj.svelte-cigodj{background:var(--surface2);border:1px solid var(--border);color:var(--text)}.btn-secondary.svelte-cigodj.svelte-cigodj:hover{border-color:var(--player)}.btn-ghost.svelte-cigodj.svelte-cigodj{background:transparent;border:1px solid var(--border);color:var(--text-muted)}.btn-ghost.svelte-cigodj.svelte-cigodj:hover{color:var(--text);border-color:var(--border-focus)}.room-code-block.svelte-cigodj.svelte-cigodj{display:flex;align-items:center;gap:12px;flex-wrap:wrap}.room-code-label.svelte-cigodj.svelte-cigodj{font-size:.75rem;color:var(--text-muted);text-transform:uppercase;letter-spacing:.08em}.room-code.svelte-cigodj.svelte-cigodj{font-family:var(--font-mono);font-size:1.5rem;font-weight:700;letter-spacing:.15em;color:var(--accent);flex:1}.copy-btn.svelte-cigodj.svelte-cigodj{padding:6px 12px;border-radius:var(--radius);background:var(--surface2);border:1px solid var(--border);font-size:.8rem;color:var(--text-muted);cursor:pointer}.copy-btn.svelte-cigodj.svelte-cigodj:active{opacity:.7}.players-list.svelte-cigodj.svelte-cigodj{width:100%;display:flex;flex-direction:column;gap:8px}.player-row.svelte-cigodj.svelte-cigodj{display:flex;align-items:center;gap:8px;padding:14px 16px;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg)}.player-row.is-you.svelte-cigodj.svelte-cigodj{border-color:var(--player)}.player-name.svelte-cigodj.svelte-cigodj{flex:1;font-weight:600}.player-placeholder.svelte-cigodj.svelte-cigodj{opacity:.5}.badge.svelte-cigodj.svelte-cigodj{padding:3px 8px;border-radius:99px;font-size:.72rem;font-weight:600;text-transform:uppercase;letter-spacing:.05em}.badge-you.svelte-cigodj.svelte-cigodj{background:#58a6ff33;color:var(--player)}.badge-ready.svelte-cigodj.svelte-cigodj{background:#3fb95033;color:var(--success)}.badge-waiting.svelte-cigodj.svelte-cigodj{background:#8b949e26;color:var(--text-muted)}.status-text.svelte-cigodj.svelte-cigodj{color:var(--text);font-size:1rem;font-weight:500}.status-muted.svelte-cigodj.svelte-cigodj{color:var(--text-muted);font-size:.85rem}.error-toast.svelte-cigodj.svelte-cigodj{width:100%;background:#f8514926;border:1px solid var(--danger);color:var(--danger);border-radius:var(--radius);padding:10px 14px;font-size:.9rem;text-align:center}.spinner.svelte-cigodj.svelte-cigodj{width:36px;height:36px;border:3px solid var(--border);border-top-color:var(--player);border-radius:50%;animation:svelte-cigodj-spin .8s linear infinite}@keyframes svelte-cigodj-spin{to{transform:rotate(360deg)}}.dot-pulse.svelte-cigodj.svelte-cigodj{display:flex;gap:4px;align-items:center}.dot-pulse.svelte-cigodj span.svelte-cigodj{width:6px;height:6px;background:var(--text-muted);border-radius:50%;animation:svelte-cigodj-pulse 1.2s ease-in-out infinite}.dot-pulse.svelte-cigodj span.svelte-cigodj:nth-child(2){animation-delay:.2s}.dot-pulse.svelte-cigodj span.svelte-cigodj:nth-child(3){animation-delay:.4s}@keyframes svelte-cigodj-pulse{0%,80%,to{opacity:.3;transform:scale(.8)}40%{opacity:1;transform:scale(1)}}
|
|
|
|
|
|
frontend/.svelte-kit/output/client/_app/immutable/assets/3.CRf0cTrE.css
DELETED
|
@@ -1 +0,0 @@
|
|
| 1 |
-
.map-svg.svelte-1uzb49f{width:100%;height:100%;display:block;cursor:grab;touch-action:none}.map-svg.svelte-1uzb49f:active{cursor:grabbing}.resource-bar.svelte-ra6vcp.svelte-ra6vcp{display:flex;align-items:center;justify-content:space-between;padding:0 14px;height:44px;background:#0d1117f2;border-bottom:1px solid var(--border);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);flex-shrink:0;gap:8px}.resources.svelte-ra6vcp.svelte-ra6vcp{display:flex;align-items:center;gap:10px}.res.svelte-ra6vcp.svelte-ra6vcp{display:flex;align-items:center;gap:4px}.res-icon.svelte-ra6vcp.svelte-ra6vcp{font-size:.85rem}.res-val.svelte-ra6vcp.svelte-ra6vcp{font-size:.85rem;font-weight:700}.mineral.svelte-ra6vcp .res-val.svelte-ra6vcp{color:var(--mineral)}.gas.svelte-ra6vcp .res-val.svelte-ra6vcp{color:var(--gas)}.supply.svelte-ra6vcp .res-val.svelte-ra6vcp{color:var(--supply)}.supply-critical.svelte-ra6vcp .res-val.svelte-ra6vcp{color:var(--danger);animation:svelte-ra6vcp-blink .8s ease-in-out infinite alternate}@keyframes svelte-ra6vcp-blink{0%{opacity:1}to{opacity:.4}}.timer.svelte-ra6vcp.svelte-ra6vcp{font-size:.9rem;font-weight:700;color:var(--text-muted);letter-spacing:.05em}.enemy-label.svelte-ra6vcp.svelte-ra6vcp{display:flex;align-items:center;gap:6px;flex-direction:row-reverse}.enemy-name.svelte-ra6vcp.svelte-ra6vcp{font-size:.8rem;color:var(--enemy);font-weight:600;max-width:80px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.enemy-dot.svelte-ra6vcp.svelte-ra6vcp{width:7px;height:7px;border-radius:50%;background:var(--enemy);flex-shrink:0}.voice-btn.svelte-i113ea{position:relative;display:flex;flex-direction:column;align-items:center;gap:4px;width:80px;height:80px;border-radius:50%;background:var(--surface2);border:2px solid var(--border);color:var(--text);transition:all .15s;flex-shrink:0;overflow:visible}.voice-btn.svelte-i113ea:not(:disabled):active,.voice-btn.recording.svelte-i113ea{transform:scale(.96);border-color:var(--danger);background:#f8514926}.voice-btn.processing.svelte-i113ea{border-color:var(--player);opacity:.7}.mic-icon.svelte-i113ea{font-size:1.8rem;line-height:1;margin-top:14px}.btn-label.svelte-i113ea{position:absolute;bottom:-22px;font-size:.65rem;color:var(--text-muted);white-space:nowrap;pointer-events:none}.pulse-ring.svelte-i113ea{position:absolute;top:-8px;right:-8px;bottom:-8px;left:-8px;border-radius:50%;border:2px solid var(--danger);opacity:0;animation:svelte-i113ea-pulse-out 1.2s ease-out infinite;pointer-events:none}.ring2.svelte-i113ea{animation-delay:.4s}@keyframes svelte-i113ea-pulse-out{0%{top:-4px;right:-4px;bottom:-4px;left:-4px;opacity:.7}to{top:-20px;right:-20px;bottom:-20px;left:-20px;opacity:0}}.spinner.svelte-i113ea{position:absolute;top:6px;right:6px;bottom:6px;left:6px;border-radius:50%;border:3px solid var(--border);border-top-color:var(--player);animation:svelte-i113ea-spin .7s linear infinite}@keyframes svelte-i113ea-spin{to{transform:rotate(360deg)}}.panel-backdrop.svelte-15lj9ka{position:fixed;top:0;right:0;bottom:0;left:0;z-index:9}.panel.svelte-15lj9ka{position:absolute;bottom:110px;left:12px;right:12px;background:#161b22f7;border:1px solid var(--border);border-radius:var(--radius-lg);padding:16px;z-index:10;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);box-shadow:0 -4px 24px #00000080;animation:svelte-15lj9ka-slide-up .18s ease}.panel.is-enemy.svelte-15lj9ka{border-color:#f8514966}@keyframes svelte-15lj9ka-slide-up{0%{transform:translateY(20px);opacity:0}to{transform:translateY(0);opacity:1}}.close-btn.svelte-15lj9ka{position:absolute;top:10px;right:12px;font-size:.9rem;color:var(--text-muted);padding:4px 8px}.panel-header.svelte-15lj9ka{display:flex;align-items:center;gap:8px;margin-bottom:10px}.owner-dot.svelte-15lj9ka{width:10px;height:10px;border-radius:50%;background:var(--enemy);flex-shrink:0}.owner-dot.own.svelte-15lj9ka{background:var(--player)}.unit-name.svelte-15lj9ka{font-weight:800;font-size:1rem;letter-spacing:.05em;flex:1}.owner-label.svelte-15lj9ka{font-size:.72rem;color:var(--text-muted);font-weight:600}.description.svelte-15lj9ka{font-size:.8rem;color:var(--text-muted);margin-bottom:12px;line-height:1.4}.stat-row.svelte-15lj9ka{display:flex;align-items:center;gap:8px;margin-bottom:8px}.stat-label.svelte-15lj9ka{font-size:.72rem;color:var(--text-muted);text-transform:uppercase;letter-spacing:.06em;width:60px;flex-shrink:0}.stat-val.svelte-15lj9ka{font-size:.82rem;font-weight:600;font-family:var(--font-mono)}.stat-val.status.svelte-15lj9ka{font-family:inherit;color:var(--accent)}.hp-bar-wrap.svelte-15lj9ka{flex:1;height:8px;background:#ffffff14;border-radius:99px;overflow:hidden}.hp-bar.svelte-15lj9ka{height:100%;border-radius:99px;transition:width .3s}.badge-row.svelte-15lj9ka{margin-top:6px}.badge.svelte-15lj9ka{display:inline-flex;align-items:center;gap:4px;padding:3px 8px;border-radius:99px;font-size:.72rem;font-weight:600}.orange.svelte-15lj9ka{background:#ffa72626;color:var(--supply)}.purple.svelte-15lj9ka{background:#b39ddb26;color:#b39ddb}.section-label.svelte-15lj9ka{font-size:.7rem;color:var(--text-muted);text-transform:uppercase;letter-spacing:.08em;margin:12px 0 6px}.queue-item.svelte-15lj9ka{display:flex;align-items:center;gap:6px;padding:5px 8px;border-radius:var(--radius);font-size:.8rem;color:var(--text-muted)}.queue-item.active.svelte-15lj9ka{background:#58a6ff14;color:var(--text)}.queue-icon.svelte-15lj9ka{font-size:.65rem;color:var(--player)}.queue-name.svelte-15lj9ka{flex:1;font-weight:600;font-family:var(--font-mono)}.queue-time.svelte-15lj9ka{font-family:var(--font-mono);font-size:.75rem;color:var(--supply)}.overlay.svelte-1rkl0l5.svelte-1rkl0l5{padding:8px 14px;background:#0d1117d9;border-top:1px solid var(--border);min-height:44px;display:flex;flex-direction:column;justify-content:center;gap:2px}.transcription.svelte-1rkl0l5.svelte-1rkl0l5{font-size:.75rem;color:var(--text-muted);font-style:italic;line-height:1.3;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.feedback.svelte-1rkl0l5.svelte-1rkl0l5{font-size:.88rem;color:var(--text);font-weight:500;line-height:1.3;overflow:hidden;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}.processing-dots.svelte-1rkl0l5.svelte-1rkl0l5{display:flex;gap:5px;align-items:center;justify-content:center;padding:8px 0}.processing-dots.svelte-1rkl0l5 span.svelte-1rkl0l5{width:7px;height:7px;border-radius:50%;background:var(--player);animation:svelte-1rkl0l5-bounce .9s ease-in-out infinite}.processing-dots.svelte-1rkl0l5 span.svelte-1rkl0l5:nth-child(2){animation-delay:.15s}.processing-dots.svelte-1rkl0l5 span.svelte-1rkl0l5:nth-child(3){animation-delay:.3s}@keyframes svelte-1rkl0l5-bounce{0%,80%,to{transform:scale(.7);opacity:.4}40%{transform:scale(1);opacity:1}}.game-layout.svelte-3ubry2{height:100dvh;display:flex;flex-direction:column;overflow:hidden;background:var(--map-bg)}.map-wrap.svelte-3ubry2{flex:1;position:relative;overflow:hidden;min-height:0}.bottom-panel.svelte-3ubry2{flex-shrink:0;display:flex;flex-direction:column;background:var(--bg);border-top:1px solid var(--border)}.voice-row.svelte-3ubry2{display:flex;align-items:center;justify-content:center;padding:16px 20px 24px;padding-bottom:max(24px,env(safe-area-inset-bottom,24px))}.modal-backdrop.svelte-3ubry2{position:fixed;top:0;right:0;bottom:0;left:0;background:#000000bf;display:flex;align-items:center;justify-content:center;z-index:100;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}.modal.svelte-3ubry2{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-xl);padding:36px 28px;text-align:center;max-width:320px;width:90%;animation:svelte-3ubry2-pop-in .25s cubic-bezier(.34,1.56,.64,1)}@keyframes svelte-3ubry2-pop-in{0%{transform:scale(.8);opacity:0}to{transform:scale(1);opacity:1}}.modal-icon.svelte-3ubry2{font-size:3rem;margin-bottom:12px}.modal-title.svelte-3ubry2{font-size:1.6rem;font-weight:800;margin-bottom:10px;background:linear-gradient(135deg,var(--player),#a78bfa);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}.modal-body.svelte-3ubry2{color:var(--text-muted);font-size:.9rem;line-height:1.5;margin-bottom:24px}.btn-back.svelte-3ubry2{background:var(--player);color:#fff;padding:13px 28px;border-radius:var(--radius-lg);font-size:.95rem;font-weight:600;width:100%;transition:filter .15s}.btn-back.svelte-3ubry2:hover{filter:brightness(1.1)}.btn-back.svelte-3ubry2:active{filter:brightness(.9)}
|
|
|
|
|
|
frontend/.svelte-kit/output/client/_app/immutable/chunks/BX82rj4I.js
DELETED
|
@@ -1 +0,0 @@
|
|
| 1 |
-
var E=Object.defineProperty;var I=(t,e,n)=>e in t?E(t,e,{enumerable:!0,configurable:!0,writable:!0,value:n}):t[e]=n;var _=(t,e,n)=>I(t,typeof e!="symbol"?e+"":e,n);import{w as $,n as c,H as v,I as O,J as b,K as p,h as C,d as L,L as M,M as x,N,O as w,P,Q as R,R as j,S as B,T as H}from"./DQebRFVS.js";const u=new Set;let d;function A(){d={r:0,c:[],p:d}}function D(){d.r||$(d.c),d=d.p}function J(t,e){t&&t.i&&(u.delete(t),t.i(e))}function F(t,e,n,a){if(t&&t.o){if(u.has(t))return;u.add(t),d.c.push(()=>{u.delete(t),a&&(n&&t.d(1),a())}),t.o(e)}else a&&a()}function G(t){t&&t.c()}function W(t,e){t&&t.l(e)}function K(t,e,n){const{fragment:a,after_update:i}=t.$$;a&&a.m(e,n),w(()=>{const f=t.$$.on_mount.map(P).filter(v);t.$$.on_destroy?t.$$.on_destroy.push(...f):$(f),t.$$.on_mount=[]}),i.forEach(w)}function Q(t,e){const n=t.$$;n.fragment!==null&&(N(n.after_update),$(n.on_destroy),n.fragment&&n.fragment.d(e),n.on_destroy=n.fragment=null,n.ctx=[])}function T(t,e){t.$$.dirty[0]===-1&&(B.push(t),H(),t.$$.dirty.fill(0)),t.$$.dirty[e/31|0]|=1<<e%31}function X(t,e,n,a,i,f,l=null,S=[-1]){const o=b;x(t);const s=t.$$={fragment:null,ctx:[],props:f,update:c,not_equal:i,bound:p(),on_mount:[],on_destroy:[],on_disconnect:[],before_update:[],after_update:[],context:new Map(e.context||(o?o.$$.context:[])),callbacks:p(),dirty:S,skip_bound:!1,root:e.target||o.$$.root};l&&l(s.root);let h=!1;if(s.ctx=n?n(t,e.props||{},(r,g,...m)=>{const y=m.length?m[0]:g;return s.ctx&&i(s.ctx[r],s.ctx[r]=y)&&(!s.skip_bound&&s.bound[r]&&s.bound[r](y),h&&T(t,r)),g}):[],s.update(),h=!0,$(s.before_update),s.fragment=a?a(s.ctx):!1,e.target){if(e.hydrate){R();const r=C(e.target);s.fragment&&s.fragment.l(r),r.forEach(L)}else s.fragment&&s.fragment.c();e.intro&&J(t.$$.fragment),K(t,e.target,e.anchor),j(),M()}x(o)}class Y{constructor(){_(this,"$$");_(this,"$$set")}$destroy(){Q(this,1),this.$destroy=c}$on(e,n){if(!v(n))return c;const a=this.$$.callbacks[e]||(this.$$.callbacks[e]=[]);return a.push(n),()=>{const i=a.indexOf(n);i!==-1&&a.splice(i,1)}}$set(e){this.$$set&&!O(e)&&(this.$$.skip_bound=!0,this.$$set(e),this.$$.skip_bound=!1)}}const U="4";typeof window<"u"&&(window.__svelte||(window.__svelte={v:new Set})).v.add(U);export{Y as S,J as a,G as b,D as c,Q as d,W as e,A as g,X as i,K as m,F as t};
|
|
|
|
|
|
frontend/.svelte-kit/output/client/_app/immutable/chunks/BxRIPBY0.js
DELETED
|
@@ -1 +0,0 @@
|
|
| 1 |
-
import{d as H,w as d}from"./J0QSAnNz.js";function ct(n){return(n==null?void 0:n.length)!==void 0?n:Array.from(n)}const m=Object.create(null);m.open="0";m.close="1";m.ping="2";m.pong="3";m.message="4";m.upgrade="5";m.noop="6";const O=Object.create(null);Object.keys(m).forEach(n=>{O[m[n]]=n});const D={type:"error",data:"parser error"},ee=typeof Blob=="function"||typeof Blob<"u"&&Object.prototype.toString.call(Blob)==="[object BlobConstructor]",te=typeof ArrayBuffer=="function",se=n=>typeof ArrayBuffer.isView=="function"?ArrayBuffer.isView(n):n&&n.buffer instanceof ArrayBuffer,K=({type:n,data:e},t,s)=>ee&&e instanceof Blob?t?s(e):X(e,s):te&&(e instanceof ArrayBuffer||se(e))?t?s(e):X(new Blob([e]),s):s(m[n]+(e||"")),X=(n,e)=>{const t=new FileReader;return t.onload=function(){const s=t.result.split(",")[1];e("b"+(s||""))},t.readAsDataURL(n)};function Q(n){return n instanceof Uint8Array?n:n instanceof ArrayBuffer?new Uint8Array(n):new Uint8Array(n.buffer,n.byteOffset,n.byteLength)}let L;function de(n,e){if(ee&&n.data instanceof Blob)return n.data.arrayBuffer().then(Q).then(e);if(te&&(n.data instanceof ArrayBuffer||se(n.data)))return e(Q(n.data));K(n,!1,t=>{L||(L=new TextEncoder),e(L.encode(t))})}const j="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",A=typeof Uint8Array>"u"?[]:new Uint8Array(256);for(let n=0;n<j.length;n++)A[j.charCodeAt(n)]=n;const ye=n=>{let e=n.length*.75,t=n.length,s,i=0,r,o,c,h;n[n.length-1]==="="&&(e--,n[n.length-2]==="="&&e--);const g=new ArrayBuffer(e),f=new Uint8Array(g);for(s=0;s<t;s+=4)r=A[n.charCodeAt(s)],o=A[n.charCodeAt(s+1)],c=A[n.charCodeAt(s+2)],h=A[n.charCodeAt(s+3)],f[i++]=r<<2|o>>4,f[i++]=(o&15)<<4|c>>2,f[i++]=(c&3)<<6|h&63;return g},me=typeof ArrayBuffer=="function",W=(n,e)=>{if(typeof n!="string")return{type:"message",data:ne(n,e)};const t=n.charAt(0);return t==="b"?{type:"message",data:ge(n.substring(1),e)}:O[t]?n.length>1?{type:O[t],data:n.substring(1)}:{type:O[t]}:D},ge=(n,e)=>{if(me){const t=ye(n);return ne(t,e)}else return{base64:!0,data:n}},ne=(n,e)=>{switch(e){case"blob":return n instanceof Blob?n:new Blob([n]);case"arraybuffer":default:return n instanceof ArrayBuffer?n:n.buffer}},ie="",_e=(n,e)=>{const t=n.length,s=new Array(t);let i=0;n.forEach((r,o)=>{K(r,!1,c=>{s[o]=c,++i===t&&e(s.join(ie))})})},be=(n,e)=>{const t=n.split(ie),s=[];for(let i=0;i<t.length;i++){const r=W(t[i],e);if(s.push(r),r.type==="error")break}return s};function we(){return new TransformStream({transform(n,e){de(n,t=>{const s=t.length;let i;if(s<126)i=new Uint8Array(1),new DataView(i.buffer).setUint8(0,s);else if(s<65536){i=new Uint8Array(3);const r=new DataView(i.buffer);r.setUint8(0,126),r.setUint16(1,s)}else{i=new Uint8Array(9);const r=new DataView(i.buffer);r.setUint8(0,127),r.setBigUint64(1,BigInt(s))}n.data&&typeof n.data!="string"&&(i[0]|=128),e.enqueue(i),e.enqueue(t)})}})}let P;function T(n){return n.reduce((e,t)=>e+t.length,0)}function R(n,e){if(n[0].length===e)return n.shift();const t=new Uint8Array(e);let s=0;for(let i=0;i<e;i++)t[i]=n[0][s++],s===n[0].length&&(n.shift(),s=0);return n.length&&s<n[0].length&&(n[0]=n[0].slice(s)),t}function ve(n,e){P||(P=new TextDecoder);const t=[];let s=0,i=-1,r=!1;return new TransformStream({transform(o,c){for(t.push(o);;){if(s===0){if(T(t)<1)break;const h=R(t,1);r=(h[0]&128)===128,i=h[0]&127,i<126?s=3:i===126?s=1:s=2}else if(s===1){if(T(t)<2)break;const h=R(t,2);i=new DataView(h.buffer,h.byteOffset,h.length).getUint16(0),s=3}else if(s===2){if(T(t)<8)break;const h=R(t,8),g=new DataView(h.buffer,h.byteOffset,h.length),f=g.getUint32(0);if(f>Math.pow(2,21)-1){c.enqueue(D);break}i=f*Math.pow(2,32)+g.getUint32(4),s=3}else{if(T(t)<i)break;const h=R(t,i);c.enqueue(W(r?h:P.decode(h),e)),s=0}if(i===0||i>n){c.enqueue(D);break}}}})}const re=4;function u(n){if(n)return Ee(n)}function Ee(n){for(var e in u.prototype)n[e]=u.prototype[e];return n}u.prototype.on=u.prototype.addEventListener=function(n,e){return this._callbacks=this._callbacks||{},(this._callbacks["$"+n]=this._callbacks["$"+n]||[]).push(e),this};u.prototype.once=function(n,e){function t(){this.off(n,t),e.apply(this,arguments)}return t.fn=e,this.on(n,t),this};u.prototype.off=u.prototype.removeListener=u.prototype.removeAllListeners=u.prototype.removeEventListener=function(n,e){if(this._callbacks=this._callbacks||{},arguments.length==0)return this._callbacks={},this;var t=this._callbacks["$"+n];if(!t)return this;if(arguments.length==1)return delete this._callbacks["$"+n],this;for(var s,i=0;i<t.length;i++)if(s=t[i],s===e||s.fn===e){t.splice(i,1);break}return t.length===0&&delete this._callbacks["$"+n],this};u.prototype.emit=function(n){this._callbacks=this._callbacks||{};for(var e=new Array(arguments.length-1),t=this._callbacks["$"+n],s=1;s<arguments.length;s++)e[s-1]=arguments[s];if(t){t=t.slice(0);for(var s=0,i=t.length;s<i;++s)t[s].apply(this,e)}return this};u.prototype.emitReserved=u.prototype.emit;u.prototype.listeners=function(n){return this._callbacks=this._callbacks||{},this._callbacks["$"+n]||[]};u.prototype.hasListeners=function(n){return!!this.listeners(n).length};const x=typeof Promise=="function"&&typeof Promise.resolve=="function"?e=>Promise.resolve().then(e):(e,t)=>t(e,0),l=typeof self<"u"?self:typeof window<"u"?window:Function("return this")(),ke="arraybuffer";function oe(n,...e){return e.reduce((t,s)=>(n.hasOwnProperty(s)&&(t[s]=n[s]),t),{})}const Ae=l.setTimeout,Te=l.clearTimeout;function N(n,e){e.useNativeTimers?(n.setTimeoutFn=Ae.bind(l),n.clearTimeoutFn=Te.bind(l)):(n.setTimeoutFn=l.setTimeout.bind(l),n.clearTimeoutFn=l.clearTimeout.bind(l))}const Re=1.33;function Oe(n){return typeof n=="string"?Se(n):Math.ceil((n.byteLength||n.size)*Re)}function Se(n){let e=0,t=0;for(let s=0,i=n.length;s<i;s++)e=n.charCodeAt(s),e<128?t+=1:e<2048?t+=2:e<55296||e>=57344?t+=3:(s++,t+=4);return t}function ae(){return Date.now().toString(36).substring(3)+Math.random().toString(36).substring(2,5)}function Be(n){let e="";for(let t in n)n.hasOwnProperty(t)&&(e.length&&(e+="&"),e+=encodeURIComponent(t)+"="+encodeURIComponent(n[t]));return e}function Ce(n){let e={},t=n.split("&");for(let s=0,i=t.length;s<i;s++){let r=t[s].split("=");e[decodeURIComponent(r[0])]=decodeURIComponent(r[1])}return e}class xe extends Error{constructor(e,t,s){super(e),this.description=t,this.context=s,this.type="TransportError"}}class Y extends u{constructor(e){super(),this.writable=!1,N(this,e),this.opts=e,this.query=e.query,this.socket=e.socket,this.supportsBinary=!e.forceBase64}onError(e,t,s){return super.emitReserved("error",new xe(e,t,s)),this}open(){return this.readyState="opening",this.doOpen(),this}close(){return(this.readyState==="opening"||this.readyState==="open")&&(this.doClose(),this.onClose()),this}send(e){this.readyState==="open"&&this.write(e)}onOpen(){this.readyState="open",this.writable=!0,super.emitReserved("open")}onData(e){const t=W(e,this.socket.binaryType);this.onPacket(t)}onPacket(e){super.emitReserved("packet",e)}onClose(e){this.readyState="closed",super.emitReserved("close",e)}pause(e){}createUri(e,t={}){return e+"://"+this._hostname()+this._port()+this.opts.path+this._query(t)}_hostname(){const e=this.opts.hostname;return e.indexOf(":")===-1?e:"["+e+"]"}_port(){return this.opts.port&&(this.opts.secure&&Number(this.opts.port)!==443||!this.opts.secure&&Number(this.opts.port)!==80)?":"+this.opts.port:""}_query(e){const t=Be(e);return t.length?"?"+t:""}}class Ne extends Y{constructor(){super(...arguments),this._polling=!1}get name(){return"polling"}doOpen(){this._poll()}pause(e){this.readyState="pausing";const t=()=>{this.readyState="paused",e()};if(this._polling||!this.writable){let s=0;this._polling&&(s++,this.once("pollComplete",function(){--s||t()})),this.writable||(s++,this.once("drain",function(){--s||t()}))}else t()}_poll(){this._polling=!0,this.doPoll(),this.emitReserved("poll")}onData(e){const t=s=>{if(this.readyState==="opening"&&s.type==="open"&&this.onOpen(),s.type==="close")return this.onClose({description:"transport closed by the server"}),!1;this.onPacket(s)};be(e,this.socket.binaryType).forEach(t),this.readyState!=="closed"&&(this._polling=!1,this.emitReserved("pollComplete"),this.readyState==="open"&&this._poll())}doClose(){const e=()=>{this.write([{type:"close"}])};this.readyState==="open"?e():this.once("open",e)}write(e){this.writable=!1,_e(e,t=>{this.doWrite(t,()=>{this.writable=!0,this.emitReserved("drain")})})}uri(){const e=this.opts.secure?"https":"http",t=this.query||{};return this.opts.timestampRequests!==!1&&(t[this.opts.timestampParam]=ae()),!this.supportsBinary&&!t.sid&&(t.b64=1),this.createUri(e,t)}}let ce=!1;try{ce=typeof XMLHttpRequest<"u"&&"withCredentials"in new XMLHttpRequest}catch{}const Le=ce;function Pe(){}class qe extends Ne{constructor(e){if(super(e),typeof location<"u"){const t=location.protocol==="https:";let s=location.port;s||(s=t?"443":"80"),this.xd=typeof location<"u"&&e.hostname!==location.hostname||s!==e.port}}doWrite(e,t){const s=this.request({method:"POST",data:e});s.on("success",t),s.on("error",(i,r)=>{this.onError("xhr post error",i,r)})}doPoll(){const e=this.request();e.on("data",this.onData.bind(this)),e.on("error",(t,s)=>{this.onError("xhr poll error",t,s)}),this.pollXhr=e}}class y extends u{constructor(e,t,s){super(),this.createRequest=e,N(this,s),this._opts=s,this._method=s.method||"GET",this._uri=t,this._data=s.data!==void 0?s.data:null,this._create()}_create(){var e;const t=oe(this._opts,"agent","pfx","key","passphrase","cert","ca","ciphers","rejectUnauthorized","autoUnref");t.xdomain=!!this._opts.xd;const s=this._xhr=this.createRequest(t);try{s.open(this._method,this._uri,!0);try{if(this._opts.extraHeaders){s.setDisableHeaderCheck&&s.setDisableHeaderCheck(!0);for(let i in this._opts.extraHeaders)this._opts.extraHeaders.hasOwnProperty(i)&&s.setRequestHeader(i,this._opts.extraHeaders[i])}}catch{}if(this._method==="POST")try{s.setRequestHeader("Content-type","text/plain;charset=UTF-8")}catch{}try{s.setRequestHeader("Accept","*/*")}catch{}(e=this._opts.cookieJar)===null||e===void 0||e.addCookies(s),"withCredentials"in s&&(s.withCredentials=this._opts.withCredentials),this._opts.requestTimeout&&(s.timeout=this._opts.requestTimeout),s.onreadystatechange=()=>{var i;s.readyState===3&&((i=this._opts.cookieJar)===null||i===void 0||i.parseCookies(s.getResponseHeader("set-cookie"))),s.readyState===4&&(s.status===200||s.status===1223?this._onLoad():this.setTimeoutFn(()=>{this._onError(typeof s.status=="number"?s.status:0)},0))},s.send(this._data)}catch(i){this.setTimeoutFn(()=>{this._onError(i)},0);return}typeof document<"u"&&(this._index=y.requestsCount++,y.requests[this._index]=this)}_onError(e){this.emitReserved("error",e,this._xhr),this._cleanup(!0)}_cleanup(e){if(!(typeof this._xhr>"u"||this._xhr===null)){if(this._xhr.onreadystatechange=Pe,e)try{this._xhr.abort()}catch{}typeof document<"u"&&delete y.requests[this._index],this._xhr=null}}_onLoad(){const e=this._xhr.responseText;e!==null&&(this.emitReserved("data",e),this.emitReserved("success"),this._cleanup())}abort(){this._cleanup()}}y.requestsCount=0;y.requests={};if(typeof document<"u"){if(typeof attachEvent=="function")attachEvent("onunload",G);else if(typeof addEventListener=="function"){const n="onpagehide"in l?"pagehide":"unload";addEventListener(n,G,!1)}}function G(){for(let n in y.requests)y.requests.hasOwnProperty(n)&&y.requests[n].abort()}const De=function(){const n=he({xdomain:!1});return n&&n.responseType!==null}();class Ie extends qe{constructor(e){super(e);const t=e&&e.forceBase64;this.supportsBinary=De&&!t}request(e={}){return Object.assign(e,{xd:this.xd},this.opts),new y(he,this.uri(),e)}}function he(n){const e=n.xdomain;try{if(typeof XMLHttpRequest<"u"&&(!e||Le))return new XMLHttpRequest}catch{}if(!e)try{return new l[["Active"].concat("Object").join("X")]("Microsoft.XMLHTTP")}catch{}}const ue=typeof navigator<"u"&&typeof navigator.product=="string"&&navigator.product.toLowerCase()==="reactnative";class Ue extends Y{get name(){return"websocket"}doOpen(){const e=this.uri(),t=this.opts.protocols,s=ue?{}:oe(this.opts,"agent","perMessageDeflate","pfx","key","passphrase","cert","ca","ciphers","rejectUnauthorized","localAddress","protocolVersion","origin","maxPayload","family","checkServerIdentity");this.opts.extraHeaders&&(s.headers=this.opts.extraHeaders);try{this.ws=this.createSocket(e,t,s)}catch(i){return this.emitReserved("error",i)}this.ws.binaryType=this.socket.binaryType,this.addEventListeners()}addEventListeners(){this.ws.onopen=()=>{this.opts.autoUnref&&this.ws._socket.unref(),this.onOpen()},this.ws.onclose=e=>this.onClose({description:"websocket connection closed",context:e}),this.ws.onmessage=e=>this.onData(e.data),this.ws.onerror=e=>this.onError("websocket error",e)}write(e){this.writable=!1;for(let t=0;t<e.length;t++){const s=e[t],i=t===e.length-1;K(s,this.supportsBinary,r=>{try{this.doWrite(s,r)}catch{}i&&x(()=>{this.writable=!0,this.emitReserved("drain")},this.setTimeoutFn)})}}doClose(){typeof this.ws<"u"&&(this.ws.onerror=()=>{},this.ws.close(),this.ws=null)}uri(){const e=this.opts.secure?"wss":"ws",t=this.query||{};return this.opts.timestampRequests&&(t[this.opts.timestampParam]=ae()),this.supportsBinary||(t.b64=1),this.createUri(e,t)}}const q=l.WebSocket||l.MozWebSocket;class Fe extends Ue{createSocket(e,t,s){return ue?new q(e,t,s):t?new q(e,t):new q(e)}doWrite(e,t){this.ws.send(t)}}class Ve extends Y{get name(){return"webtransport"}doOpen(){try{this._transport=new WebTransport(this.createUri("https"),this.opts.transportOptions[this.name])}catch(e){return this.emitReserved("error",e)}this._transport.closed.then(()=>{this.onClose()}).catch(e=>{this.onError("webtransport error",e)}),this._transport.ready.then(()=>{this._transport.createBidirectionalStream().then(e=>{const t=ve(Number.MAX_SAFE_INTEGER,this.socket.binaryType),s=e.readable.pipeThrough(t).getReader(),i=we();i.readable.pipeTo(e.writable),this._writer=i.writable.getWriter();const r=()=>{s.read().then(({done:c,value:h})=>{c||(this.onPacket(h),r())}).catch(c=>{})};r();const o={type:"open"};this.query.sid&&(o.data=`{"sid":"${this.query.sid}"}`),this._writer.write(o).then(()=>this.onOpen())})})}write(e){this.writable=!1;for(let t=0;t<e.length;t++){const s=e[t],i=t===e.length-1;this._writer.write(s).then(()=>{i&&x(()=>{this.writable=!0,this.emitReserved("drain")},this.setTimeoutFn)})}}doClose(){var e;(e=this._transport)===null||e===void 0||e.close()}}const Me={websocket:Fe,webtransport:Ve,polling:Ie},He=/^(?:(?![^:@\/?#]+:[^:@\/]*@)(http|https|ws|wss):\/\/)?((?:(([^:@\/?#]*)(?::([^:@\/?#]*))?)?@)?((?:[a-f0-9]{0,4}:){2,7}[a-f0-9]{0,4}|[^:\/?#]*)(?::(\d*))?)(((\/(?:[^?#](?![^?#\/]*\.[^?#\/.]+(?:[?#]|$)))*\/?)?([^?#\/]*))(?:\?([^#]*))?(?:#(.*))?)/,Ke=["source","protocol","authority","userInfo","user","password","host","port","relative","path","directory","file","query","anchor"];function I(n){if(n.length>8e3)throw"URI too long";const e=n,t=n.indexOf("["),s=n.indexOf("]");t!=-1&&s!=-1&&(n=n.substring(0,t)+n.substring(t,s).replace(/:/g,";")+n.substring(s,n.length));let i=He.exec(n||""),r={},o=14;for(;o--;)r[Ke[o]]=i[o]||"";return t!=-1&&s!=-1&&(r.source=e,r.host=r.host.substring(1,r.host.length-1).replace(/;/g,":"),r.authority=r.authority.replace("[","").replace("]","").replace(/;/g,":"),r.ipv6uri=!0),r.pathNames=We(r,r.path),r.queryKey=Ye(r,r.query),r}function We(n,e){const t=/\/{2,9}/g,s=e.replace(t,"/").split("/");return(e.slice(0,1)=="/"||e.length===0)&&s.splice(0,1),e.slice(-1)=="/"&&s.splice(s.length-1,1),s}function Ye(n,e){const t={};return e.replace(/(?:^|&)([^&=]*)=?([^&]*)/g,function(s,i,r){i&&(t[i]=r)}),t}const U=typeof addEventListener=="function"&&typeof removeEventListener=="function",S=[];U&&addEventListener("offline",()=>{S.forEach(n=>n())},!1);class w extends u{constructor(e,t){if(super(),this.binaryType=ke,this.writeBuffer=[],this._prevBufferLen=0,this._pingInterval=-1,this._pingTimeout=-1,this._maxPayload=-1,this._pingTimeoutTime=1/0,e&&typeof e=="object"&&(t=e,e=null),e){const s=I(e);t.hostname=s.host,t.secure=s.protocol==="https"||s.protocol==="wss",t.port=s.port,s.query&&(t.query=s.query)}else t.host&&(t.hostname=I(t.host).host);N(this,t),this.secure=t.secure!=null?t.secure:typeof location<"u"&&location.protocol==="https:",t.hostname&&!t.port&&(t.port=this.secure?"443":"80"),this.hostname=t.hostname||(typeof location<"u"?location.hostname:"localhost"),this.port=t.port||(typeof location<"u"&&location.port?location.port:this.secure?"443":"80"),this.transports=[],this._transportsByName={},t.transports.forEach(s=>{const i=s.prototype.name;this.transports.push(i),this._transportsByName[i]=s}),this.opts=Object.assign({path:"/engine.io",agent:!1,withCredentials:!1,upgrade:!0,timestampParam:"t",rememberUpgrade:!1,addTrailingSlash:!0,rejectUnauthorized:!0,perMessageDeflate:{threshold:1024},transportOptions:{},closeOnBeforeunload:!1},t),this.opts.path=this.opts.path.replace(/\/$/,"")+(this.opts.addTrailingSlash?"/":""),typeof this.opts.query=="string"&&(this.opts.query=Ce(this.opts.query)),U&&(this.opts.closeOnBeforeunload&&(this._beforeunloadEventListener=()=>{this.transport&&(this.transport.removeAllListeners(),this.transport.close())},addEventListener("beforeunload",this._beforeunloadEventListener,!1)),this.hostname!=="localhost"&&(this._offlineEventListener=()=>{this._onClose("transport close",{description:"network connection lost"})},S.push(this._offlineEventListener))),this.opts.withCredentials&&(this._cookieJar=void 0),this._open()}createTransport(e){const t=Object.assign({},this.opts.query);t.EIO=re,t.transport=e,this.id&&(t.sid=this.id);const s=Object.assign({},this.opts,{query:t,socket:this,hostname:this.hostname,secure:this.secure,port:this.port},this.opts.transportOptions[e]);return new this._transportsByName[e](s)}_open(){if(this.transports.length===0){this.setTimeoutFn(()=>{this.emitReserved("error","No transports available")},0);return}const e=this.opts.rememberUpgrade&&w.priorWebsocketSuccess&&this.transports.indexOf("websocket")!==-1?"websocket":this.transports[0];this.readyState="opening";const t=this.createTransport(e);t.open(),this.setTransport(t)}setTransport(e){this.transport&&this.transport.removeAllListeners(),this.transport=e,e.on("drain",this._onDrain.bind(this)).on("packet",this._onPacket.bind(this)).on("error",this._onError.bind(this)).on("close",t=>this._onClose("transport close",t))}onOpen(){this.readyState="open",w.priorWebsocketSuccess=this.transport.name==="websocket",this.emitReserved("open"),this.flush()}_onPacket(e){if(this.readyState==="opening"||this.readyState==="open"||this.readyState==="closing")switch(this.emitReserved("packet",e),this.emitReserved("heartbeat"),e.type){case"open":this.onHandshake(JSON.parse(e.data));break;case"ping":this._sendPacket("pong"),this.emitReserved("ping"),this.emitReserved("pong"),this._resetPingTimeout();break;case"error":const t=new Error("server error");t.code=e.data,this._onError(t);break;case"message":this.emitReserved("data",e.data),this.emitReserved("message",e.data);break}}onHandshake(e){this.emitReserved("handshake",e),this.id=e.sid,this.transport.query.sid=e.sid,this._pingInterval=e.pingInterval,this._pingTimeout=e.pingTimeout,this._maxPayload=e.maxPayload,this.onOpen(),this.readyState!=="closed"&&this._resetPingTimeout()}_resetPingTimeout(){this.clearTimeoutFn(this._pingTimeoutTimer);const e=this._pingInterval+this._pingTimeout;this._pingTimeoutTime=Date.now()+e,this._pingTimeoutTimer=this.setTimeoutFn(()=>{this._onClose("ping timeout")},e),this.opts.autoUnref&&this._pingTimeoutTimer.unref()}_onDrain(){this.writeBuffer.splice(0,this._prevBufferLen),this._prevBufferLen=0,this.writeBuffer.length===0?this.emitReserved("drain"):this.flush()}flush(){if(this.readyState!=="closed"&&this.transport.writable&&!this.upgrading&&this.writeBuffer.length){const e=this._getWritablePackets();this.transport.send(e),this._prevBufferLen=e.length,this.emitReserved("flush")}}_getWritablePackets(){if(!(this._maxPayload&&this.transport.name==="polling"&&this.writeBuffer.length>1))return this.writeBuffer;let t=1;for(let s=0;s<this.writeBuffer.length;s++){const i=this.writeBuffer[s].data;if(i&&(t+=Oe(i)),s>0&&t>this._maxPayload)return this.writeBuffer.slice(0,s);t+=2}return this.writeBuffer}_hasPingExpired(){if(!this._pingTimeoutTime)return!0;const e=Date.now()>this._pingTimeoutTime;return e&&(this._pingTimeoutTime=0,x(()=>{this._onClose("ping timeout")},this.setTimeoutFn)),e}write(e,t,s){return this._sendPacket("message",e,t,s),this}send(e,t,s){return this._sendPacket("message",e,t,s),this}_sendPacket(e,t,s,i){if(typeof t=="function"&&(i=t,t=void 0),typeof s=="function"&&(i=s,s=null),this.readyState==="closing"||this.readyState==="closed")return;s=s||{},s.compress=s.compress!==!1;const r={type:e,data:t,options:s};this.emitReserved("packetCreate",r),this.writeBuffer.push(r),i&&this.once("flush",i),this.flush()}close(){const e=()=>{this._onClose("forced close"),this.transport.close()},t=()=>{this.off("upgrade",t),this.off("upgradeError",t),e()},s=()=>{this.once("upgrade",t),this.once("upgradeError",t)};return(this.readyState==="opening"||this.readyState==="open")&&(this.readyState="closing",this.writeBuffer.length?this.once("drain",()=>{this.upgrading?s():e()}):this.upgrading?s():e()),this}_onError(e){if(w.priorWebsocketSuccess=!1,this.opts.tryAllTransports&&this.transports.length>1&&this.readyState==="opening")return this.transports.shift(),this._open();this.emitReserved("error",e),this._onClose("transport error",e)}_onClose(e,t){if(this.readyState==="opening"||this.readyState==="open"||this.readyState==="closing"){if(this.clearTimeoutFn(this._pingTimeoutTimer),this.transport.removeAllListeners("close"),this.transport.close(),this.transport.removeAllListeners(),U&&(this._beforeunloadEventListener&&removeEventListener("beforeunload",this._beforeunloadEventListener,!1),this._offlineEventListener)){const s=S.indexOf(this._offlineEventListener);s!==-1&&S.splice(s,1)}this.readyState="closed",this.id=null,this.emitReserved("close",e,t),this.writeBuffer=[],this._prevBufferLen=0}}}w.protocol=re;class ze extends w{constructor(){super(...arguments),this._upgrades=[]}onOpen(){if(super.onOpen(),this.readyState==="open"&&this.opts.upgrade)for(let e=0;e<this._upgrades.length;e++)this._probe(this._upgrades[e])}_probe(e){let t=this.createTransport(e),s=!1;w.priorWebsocketSuccess=!1;const i=()=>{s||(t.send([{type:"ping",data:"probe"}]),t.once("packet",b=>{if(!s)if(b.type==="pong"&&b.data==="probe"){if(this.upgrading=!0,this.emitReserved("upgrading",t),!t)return;w.priorWebsocketSuccess=t.name==="websocket",this.transport.pause(()=>{s||this.readyState!=="closed"&&(f(),this.setTransport(t),t.send([{type:"upgrade"}]),this.emitReserved("upgrade",t),t=null,this.upgrading=!1,this.flush())})}else{const E=new Error("probe error");E.transport=t.name,this.emitReserved("upgradeError",E)}}))};function r(){s||(s=!0,f(),t.close(),t=null)}const o=b=>{const E=new Error("probe error: "+b);E.transport=t.name,r(),this.emitReserved("upgradeError",E)};function c(){o("transport closed")}function h(){o("socket closed")}function g(b){t&&b.name!==t.name&&r()}const f=()=>{t.removeListener("open",i),t.removeListener("error",o),t.removeListener("close",c),this.off("close",h),this.off("upgrading",g)};t.once("open",i),t.once("error",o),t.once("close",c),this.once("close",h),this.once("upgrading",g),this._upgrades.indexOf("webtransport")!==-1&&e!=="webtransport"?this.setTimeoutFn(()=>{s||t.open()},200):t.open()}onHandshake(e){this._upgrades=this._filterUpgrades(e.upgrades),super.onHandshake(e)}_filterUpgrades(e){const t=[];for(let s=0;s<e.length;s++)~this.transports.indexOf(e[s])&&t.push(e[s]);return t}}let $e=class extends ze{constructor(e,t={}){const s=typeof e=="object"?e:t;(!s.transports||s.transports&&typeof s.transports[0]=="string")&&(s.transports=(s.transports||["polling","websocket","webtransport"]).map(i=>Me[i]).filter(i=>!!i)),super(e,s)}};function Je(n,e="",t){let s=n;t=t||typeof location<"u"&&location,n==null&&(n=t.protocol+"//"+t.host),typeof n=="string"&&(n.charAt(0)==="/"&&(n.charAt(1)==="/"?n=t.protocol+n:n=t.host+n),/^(https?|wss?):\/\//.test(n)||(typeof t<"u"?n=t.protocol+"//"+n:n="https://"+n),s=I(n)),s.port||(/^(http|ws)$/.test(s.protocol)?s.port="80":/^(http|ws)s$/.test(s.protocol)&&(s.port="443")),s.path=s.path||"/";const r=s.host.indexOf(":")!==-1?"["+s.host+"]":s.host;return s.id=s.protocol+"://"+r+":"+s.port+e,s.href=s.protocol+"://"+r+(t&&t.port===s.port?"":":"+s.port),s}const Xe=typeof ArrayBuffer=="function",Qe=n=>typeof ArrayBuffer.isView=="function"?ArrayBuffer.isView(n):n.buffer instanceof ArrayBuffer,fe=Object.prototype.toString,je=typeof Blob=="function"||typeof Blob<"u"&&fe.call(Blob)==="[object BlobConstructor]",Ge=typeof File=="function"||typeof File<"u"&&fe.call(File)==="[object FileConstructor]";function z(n){return Xe&&(n instanceof ArrayBuffer||Qe(n))||je&&n instanceof Blob||Ge&&n instanceof File}function B(n,e){if(!n||typeof n!="object")return!1;if(Array.isArray(n)){for(let t=0,s=n.length;t<s;t++)if(B(n[t]))return!0;return!1}if(z(n))return!0;if(n.toJSON&&typeof n.toJSON=="function"&&arguments.length===1)return B(n.toJSON(),!0);for(const t in n)if(Object.prototype.hasOwnProperty.call(n,t)&&B(n[t]))return!0;return!1}function Ze(n){const e=[],t=n.data,s=n;return s.data=F(t,e),s.attachments=e.length,{packet:s,buffers:e}}function F(n,e){if(!n)return n;if(z(n)){const t={_placeholder:!0,num:e.length};return e.push(n),t}else if(Array.isArray(n)){const t=new Array(n.length);for(let s=0;s<n.length;s++)t[s]=F(n[s],e);return t}else if(typeof n=="object"&&!(n instanceof Date)){const t={};for(const s in n)Object.prototype.hasOwnProperty.call(n,s)&&(t[s]=F(n[s],e));return t}return n}function et(n,e){return n.data=V(n.data,e),delete n.attachments,n}function V(n,e){if(!n)return n;if(n&&n._placeholder===!0){if(typeof n.num=="number"&&n.num>=0&&n.num<e.length)return e[n.num];throw new Error("illegal attachments")}else if(Array.isArray(n))for(let t=0;t<n.length;t++)n[t]=V(n[t],e);else if(typeof n=="object")for(const t in n)Object.prototype.hasOwnProperty.call(n,t)&&(n[t]=V(n[t],e));return n}const tt=["connect","connect_error","disconnect","disconnecting","newListener","removeListener"];var a;(function(n){n[n.CONNECT=0]="CONNECT",n[n.DISCONNECT=1]="DISCONNECT",n[n.EVENT=2]="EVENT",n[n.ACK=3]="ACK",n[n.CONNECT_ERROR=4]="CONNECT_ERROR",n[n.BINARY_EVENT=5]="BINARY_EVENT",n[n.BINARY_ACK=6]="BINARY_ACK"})(a||(a={}));class st{constructor(e){this.replacer=e}encode(e){return(e.type===a.EVENT||e.type===a.ACK)&&B(e)?this.encodeAsBinary({type:e.type===a.EVENT?a.BINARY_EVENT:a.BINARY_ACK,nsp:e.nsp,data:e.data,id:e.id}):[this.encodeAsString(e)]}encodeAsString(e){let t=""+e.type;return(e.type===a.BINARY_EVENT||e.type===a.BINARY_ACK)&&(t+=e.attachments+"-"),e.nsp&&e.nsp!=="/"&&(t+=e.nsp+","),e.id!=null&&(t+=e.id),e.data!=null&&(t+=JSON.stringify(e.data,this.replacer)),t}encodeAsBinary(e){const t=Ze(e),s=this.encodeAsString(t.packet),i=t.buffers;return i.unshift(s),i}}class $ extends u{constructor(e){super(),this.reviver=e}add(e){let t;if(typeof e=="string"){if(this.reconstructor)throw new Error("got plaintext data when reconstructing a packet");t=this.decodeString(e);const s=t.type===a.BINARY_EVENT;s||t.type===a.BINARY_ACK?(t.type=s?a.EVENT:a.ACK,this.reconstructor=new nt(t),t.attachments===0&&super.emitReserved("decoded",t)):super.emitReserved("decoded",t)}else if(z(e)||e.base64)if(this.reconstructor)t=this.reconstructor.takeBinaryData(e),t&&(this.reconstructor=null,super.emitReserved("decoded",t));else throw new Error("got binary data when not reconstructing a packet");else throw new Error("Unknown type: "+e)}decodeString(e){let t=0;const s={type:Number(e.charAt(0))};if(a[s.type]===void 0)throw new Error("unknown packet type "+s.type);if(s.type===a.BINARY_EVENT||s.type===a.BINARY_ACK){const r=t+1;for(;e.charAt(++t)!=="-"&&t!=e.length;);const o=e.substring(r,t);if(o!=Number(o)||e.charAt(t)!=="-")throw new Error("Illegal attachments");s.attachments=Number(o)}if(e.charAt(t+1)==="/"){const r=t+1;for(;++t&&!(e.charAt(t)===","||t===e.length););s.nsp=e.substring(r,t)}else s.nsp="/";const i=e.charAt(t+1);if(i!==""&&Number(i)==i){const r=t+1;for(;++t;){const o=e.charAt(t);if(o==null||Number(o)!=o){--t;break}if(t===e.length)break}s.id=Number(e.substring(r,t+1))}if(e.charAt(++t)){const r=this.tryParse(e.substr(t));if($.isPayloadValid(s.type,r))s.data=r;else throw new Error("invalid payload")}return s}tryParse(e){try{return JSON.parse(e,this.reviver)}catch{return!1}}static isPayloadValid(e,t){switch(e){case a.CONNECT:return Z(t);case a.DISCONNECT:return t===void 0;case a.CONNECT_ERROR:return typeof t=="string"||Z(t);case a.EVENT:case a.BINARY_EVENT:return Array.isArray(t)&&(typeof t[0]=="number"||typeof t[0]=="string"&&tt.indexOf(t[0])===-1);case a.ACK:case a.BINARY_ACK:return Array.isArray(t)}}destroy(){this.reconstructor&&(this.reconstructor.finishedReconstruction(),this.reconstructor=null)}}class nt{constructor(e){this.packet=e,this.buffers=[],this.reconPack=e}takeBinaryData(e){if(this.buffers.push(e),this.buffers.length===this.reconPack.attachments){const t=et(this.reconPack,this.buffers);return this.finishedReconstruction(),t}return null}finishedReconstruction(){this.reconPack=null,this.buffers=[]}}function Z(n){return Object.prototype.toString.call(n)==="[object Object]"}const it=Object.freeze(Object.defineProperty({__proto__:null,Decoder:$,Encoder:st,get PacketType(){return a}},Symbol.toStringTag,{value:"Module"}));function p(n,e,t){return n.on(e,t),function(){n.off(e,t)}}const rt=Object.freeze({connect:1,connect_error:1,disconnect:1,disconnecting:1,newListener:1,removeListener:1});class le extends u{constructor(e,t,s){super(),this.connected=!1,this.recovered=!1,this.receiveBuffer=[],this.sendBuffer=[],this._queue=[],this._queueSeq=0,this.ids=0,this.acks={},this.flags={},this.io=e,this.nsp=t,s&&s.auth&&(this.auth=s.auth),this._opts=Object.assign({},s),this.io._autoConnect&&this.open()}get disconnected(){return!this.connected}subEvents(){if(this.subs)return;const e=this.io;this.subs=[p(e,"open",this.onopen.bind(this)),p(e,"packet",this.onpacket.bind(this)),p(e,"error",this.onerror.bind(this)),p(e,"close",this.onclose.bind(this))]}get active(){return!!this.subs}connect(){return this.connected?this:(this.subEvents(),this.io._reconnecting||this.io.open(),this.io._readyState==="open"&&this.onopen(),this)}open(){return this.connect()}send(...e){return e.unshift("message"),this.emit.apply(this,e),this}emit(e,...t){var s,i,r;if(rt.hasOwnProperty(e))throw new Error('"'+e.toString()+'" is a reserved event name');if(t.unshift(e),this._opts.retries&&!this.flags.fromQueue&&!this.flags.volatile)return this._addToQueue(t),this;const o={type:a.EVENT,data:t};if(o.options={},o.options.compress=this.flags.compress!==!1,typeof t[t.length-1]=="function"){const f=this.ids++,b=t.pop();this._registerAckCallback(f,b),o.id=f}const c=(i=(s=this.io.engine)===null||s===void 0?void 0:s.transport)===null||i===void 0?void 0:i.writable,h=this.connected&&!(!((r=this.io.engine)===null||r===void 0)&&r._hasPingExpired());return this.flags.volatile&&!c||(h?(this.notifyOutgoingListeners(o),this.packet(o)):this.sendBuffer.push(o)),this.flags={},this}_registerAckCallback(e,t){var s;const i=(s=this.flags.timeout)!==null&&s!==void 0?s:this._opts.ackTimeout;if(i===void 0){this.acks[e]=t;return}const r=this.io.setTimeoutFn(()=>{delete this.acks[e];for(let c=0;c<this.sendBuffer.length;c++)this.sendBuffer[c].id===e&&this.sendBuffer.splice(c,1);t.call(this,new Error("operation has timed out"))},i),o=(...c)=>{this.io.clearTimeoutFn(r),t.apply(this,c)};o.withError=!0,this.acks[e]=o}emitWithAck(e,...t){return new Promise((s,i)=>{const r=(o,c)=>o?i(o):s(c);r.withError=!0,t.push(r),this.emit(e,...t)})}_addToQueue(e){let t;typeof e[e.length-1]=="function"&&(t=e.pop());const s={id:this._queueSeq++,tryCount:0,pending:!1,args:e,flags:Object.assign({fromQueue:!0},this.flags)};e.push((i,...r)=>(this._queue[0],i!==null?s.tryCount>this._opts.retries&&(this._queue.shift(),t&&t(i)):(this._queue.shift(),t&&t(null,...r)),s.pending=!1,this._drainQueue())),this._queue.push(s),this._drainQueue()}_drainQueue(e=!1){if(!this.connected||this._queue.length===0)return;const t=this._queue[0];t.pending&&!e||(t.pending=!0,t.tryCount++,this.flags=t.flags,this.emit.apply(this,t.args))}packet(e){e.nsp=this.nsp,this.io._packet(e)}onopen(){typeof this.auth=="function"?this.auth(e=>{this._sendConnectPacket(e)}):this._sendConnectPacket(this.auth)}_sendConnectPacket(e){this.packet({type:a.CONNECT,data:this._pid?Object.assign({pid:this._pid,offset:this._lastOffset},e):e})}onerror(e){this.connected||this.emitReserved("connect_error",e)}onclose(e,t){this.connected=!1,delete this.id,this.emitReserved("disconnect",e,t),this._clearAcks()}_clearAcks(){Object.keys(this.acks).forEach(e=>{if(!this.sendBuffer.some(s=>String(s.id)===e)){const s=this.acks[e];delete this.acks[e],s.withError&&s.call(this,new Error("socket has been disconnected"))}})}onpacket(e){if(e.nsp===this.nsp)switch(e.type){case a.CONNECT:e.data&&e.data.sid?this.onconnect(e.data.sid,e.data.pid):this.emitReserved("connect_error",new Error("It seems you are trying to reach a Socket.IO server in v2.x with a v3.x client, but they are not compatible (more information here: https://socket.io/docs/v3/migrating-from-2-x-to-3-0/)"));break;case a.EVENT:case a.BINARY_EVENT:this.onevent(e);break;case a.ACK:case a.BINARY_ACK:this.onack(e);break;case a.DISCONNECT:this.ondisconnect();break;case a.CONNECT_ERROR:this.destroy();const s=new Error(e.data.message);s.data=e.data.data,this.emitReserved("connect_error",s);break}}onevent(e){const t=e.data||[];e.id!=null&&t.push(this.ack(e.id)),this.connected?this.emitEvent(t):this.receiveBuffer.push(Object.freeze(t))}emitEvent(e){if(this._anyListeners&&this._anyListeners.length){const t=this._anyListeners.slice();for(const s of t)s.apply(this,e)}super.emit.apply(this,e),this._pid&&e.length&&typeof e[e.length-1]=="string"&&(this._lastOffset=e[e.length-1])}ack(e){const t=this;let s=!1;return function(...i){s||(s=!0,t.packet({type:a.ACK,id:e,data:i}))}}onack(e){const t=this.acks[e.id];typeof t=="function"&&(delete this.acks[e.id],t.withError&&e.data.unshift(null),t.apply(this,e.data))}onconnect(e,t){this.id=e,this.recovered=t&&this._pid===t,this._pid=t,this.connected=!0,this.emitBuffered(),this._drainQueue(!0),this.emitReserved("connect")}emitBuffered(){this.receiveBuffer.forEach(e=>this.emitEvent(e)),this.receiveBuffer=[],this.sendBuffer.forEach(e=>{this.notifyOutgoingListeners(e),this.packet(e)}),this.sendBuffer=[]}ondisconnect(){this.destroy(),this.onclose("io server disconnect")}destroy(){this.subs&&(this.subs.forEach(e=>e()),this.subs=void 0),this.io._destroy(this)}disconnect(){return this.connected&&this.packet({type:a.DISCONNECT}),this.destroy(),this.connected&&this.onclose("io client disconnect"),this}close(){return this.disconnect()}compress(e){return this.flags.compress=e,this}get volatile(){return this.flags.volatile=!0,this}timeout(e){return this.flags.timeout=e,this}onAny(e){return this._anyListeners=this._anyListeners||[],this._anyListeners.push(e),this}prependAny(e){return this._anyListeners=this._anyListeners||[],this._anyListeners.unshift(e),this}offAny(e){if(!this._anyListeners)return this;if(e){const t=this._anyListeners;for(let s=0;s<t.length;s++)if(e===t[s])return t.splice(s,1),this}else this._anyListeners=[];return this}listenersAny(){return this._anyListeners||[]}onAnyOutgoing(e){return this._anyOutgoingListeners=this._anyOutgoingListeners||[],this._anyOutgoingListeners.push(e),this}prependAnyOutgoing(e){return this._anyOutgoingListeners=this._anyOutgoingListeners||[],this._anyOutgoingListeners.unshift(e),this}offAnyOutgoing(e){if(!this._anyOutgoingListeners)return this;if(e){const t=this._anyOutgoingListeners;for(let s=0;s<t.length;s++)if(e===t[s])return t.splice(s,1),this}else this._anyOutgoingListeners=[];return this}listenersAnyOutgoing(){return this._anyOutgoingListeners||[]}notifyOutgoingListeners(e){if(this._anyOutgoingListeners&&this._anyOutgoingListeners.length){const t=this._anyOutgoingListeners.slice();for(const s of t)s.apply(this,e.data)}}}function v(n){n=n||{},this.ms=n.min||100,this.max=n.max||1e4,this.factor=n.factor||2,this.jitter=n.jitter>0&&n.jitter<=1?n.jitter:0,this.attempts=0}v.prototype.duration=function(){var n=this.ms*Math.pow(this.factor,this.attempts++);if(this.jitter){var e=Math.random(),t=Math.floor(e*this.jitter*n);n=Math.floor(e*10)&1?n+t:n-t}return Math.min(n,this.max)|0};v.prototype.reset=function(){this.attempts=0};v.prototype.setMin=function(n){this.ms=n};v.prototype.setMax=function(n){this.max=n};v.prototype.setJitter=function(n){this.jitter=n};class M extends u{constructor(e,t){var s;super(),this.nsps={},this.subs=[],e&&typeof e=="object"&&(t=e,e=void 0),t=t||{},t.path=t.path||"/socket.io",this.opts=t,N(this,t),this.reconnection(t.reconnection!==!1),this.reconnectionAttempts(t.reconnectionAttempts||1/0),this.reconnectionDelay(t.reconnectionDelay||1e3),this.reconnectionDelayMax(t.reconnectionDelayMax||5e3),this.randomizationFactor((s=t.randomizationFactor)!==null&&s!==void 0?s:.5),this.backoff=new v({min:this.reconnectionDelay(),max:this.reconnectionDelayMax(),jitter:this.randomizationFactor()}),this.timeout(t.timeout==null?2e4:t.timeout),this._readyState="closed",this.uri=e;const i=t.parser||it;this.encoder=new i.Encoder,this.decoder=new i.Decoder,this._autoConnect=t.autoConnect!==!1,this._autoConnect&&this.open()}reconnection(e){return arguments.length?(this._reconnection=!!e,e||(this.skipReconnect=!0),this):this._reconnection}reconnectionAttempts(e){return e===void 0?this._reconnectionAttempts:(this._reconnectionAttempts=e,this)}reconnectionDelay(e){var t;return e===void 0?this._reconnectionDelay:(this._reconnectionDelay=e,(t=this.backoff)===null||t===void 0||t.setMin(e),this)}randomizationFactor(e){var t;return e===void 0?this._randomizationFactor:(this._randomizationFactor=e,(t=this.backoff)===null||t===void 0||t.setJitter(e),this)}reconnectionDelayMax(e){var t;return e===void 0?this._reconnectionDelayMax:(this._reconnectionDelayMax=e,(t=this.backoff)===null||t===void 0||t.setMax(e),this)}timeout(e){return arguments.length?(this._timeout=e,this):this._timeout}maybeReconnectOnOpen(){!this._reconnecting&&this._reconnection&&this.backoff.attempts===0&&this.reconnect()}open(e){if(~this._readyState.indexOf("open"))return this;this.engine=new $e(this.uri,this.opts);const t=this.engine,s=this;this._readyState="opening",this.skipReconnect=!1;const i=p(t,"open",function(){s.onopen(),e&&e()}),r=c=>{this.cleanup(),this._readyState="closed",this.emitReserved("error",c),e?e(c):this.maybeReconnectOnOpen()},o=p(t,"error",r);if(this._timeout!==!1){const c=this._timeout,h=this.setTimeoutFn(()=>{i(),r(new Error("timeout")),t.close()},c);this.opts.autoUnref&&h.unref(),this.subs.push(()=>{this.clearTimeoutFn(h)})}return this.subs.push(i),this.subs.push(o),this}connect(e){return this.open(e)}onopen(){this.cleanup(),this._readyState="open",this.emitReserved("open");const e=this.engine;this.subs.push(p(e,"ping",this.onping.bind(this)),p(e,"data",this.ondata.bind(this)),p(e,"error",this.onerror.bind(this)),p(e,"close",this.onclose.bind(this)),p(this.decoder,"decoded",this.ondecoded.bind(this)))}onping(){this.emitReserved("ping")}ondata(e){try{this.decoder.add(e)}catch(t){this.onclose("parse error",t)}}ondecoded(e){x(()=>{this.emitReserved("packet",e)},this.setTimeoutFn)}onerror(e){this.emitReserved("error",e)}socket(e,t){let s=this.nsps[e];return s?this._autoConnect&&!s.active&&s.connect():(s=new le(this,e,t),this.nsps[e]=s),s}_destroy(e){const t=Object.keys(this.nsps);for(const s of t)if(this.nsps[s].active)return;this._close()}_packet(e){const t=this.encoder.encode(e);for(let s=0;s<t.length;s++)this.engine.write(t[s],e.options)}cleanup(){this.subs.forEach(e=>e()),this.subs.length=0,this.decoder.destroy()}_close(){this.skipReconnect=!0,this._reconnecting=!1,this.onclose("forced close")}disconnect(){return this._close()}onclose(e,t){var s;this.cleanup(),(s=this.engine)===null||s===void 0||s.close(),this.backoff.reset(),this._readyState="closed",this.emitReserved("close",e,t),this._reconnection&&!this.skipReconnect&&this.reconnect()}reconnect(){if(this._reconnecting||this.skipReconnect)return this;const e=this;if(this.backoff.attempts>=this._reconnectionAttempts)this.backoff.reset(),this.emitReserved("reconnect_failed"),this._reconnecting=!1;else{const t=this.backoff.duration();this._reconnecting=!0;const s=this.setTimeoutFn(()=>{e.skipReconnect||(this.emitReserved("reconnect_attempt",e.backoff.attempts),!e.skipReconnect&&e.open(i=>{i?(e._reconnecting=!1,e.reconnect(),this.emitReserved("reconnect_error",i)):e.onreconnect()}))},t);this.opts.autoUnref&&s.unref(),this.subs.push(()=>{this.clearTimeoutFn(s)})}}onreconnect(){const e=this.backoff.attempts;this._reconnecting=!1,this.backoff.reset(),this.emitReserved("reconnect",e)}}const k={};function C(n,e){typeof n=="object"&&(e=n,n=void 0),e=e||{};const t=Je(n,e.path||"/socket.io"),s=t.source,i=t.id,r=t.path,o=k[i]&&r in k[i].nsps,c=e.forceNew||e["force new connection"]||e.multiplex===!1||o;let h;return c?h=new M(s,e):(k[i]||(k[i]=new M(s,e)),h=k[i]),t.query&&!e.query&&(e.query=t.queryKey),h.socket(t.path,e)}Object.assign(C,{Manager:M,Socket:le,io:C,connect:C});let _=null;function ot(){return typeof window>"u"?"http://localhost:8000":window.location.origin}function ut(){return _||(_=C(ot(),{transports:["websocket","polling"],reconnectionAttempts:5,reconnectionDelay:1500}),_.on("connect",()=>console.log("[socket] connected",_==null?void 0:_.id)),_.on("disconnect",n=>console.log("[socket] disconnected",n)),_.on("connect_error",n=>console.error("[socket] error",n.message))),_}const pe=d(null),ft=d(""),lt=d(null),pt=d(null),J=d(null),dt=d(null),yt=d(null),mt=d(null),gt=d("idle"),_t=d(""),bt=d(""),wt=H([J,pe],([n,e])=>!n||!e?null:n.players[e]??null),vt=H([J,pe],([n,e])=>!n||!e?null:Object.values(n.players).find(t=>t.player_id!==e)??null);H(J,n=>n?Object.values(n.players).flatMap(e=>Object.values(e.units).map(t=>({unit:t,isOwn:!1}))):[]);export{lt as a,J as b,yt as c,vt as d,ct as e,wt as f,ut as g,_t as h,bt as l,pe as m,ft as p,pt as r,mt as s,gt as v,dt as w};
|
|
|
|
|
|
frontend/.svelte-kit/output/client/_app/immutable/chunks/DQebRFVS.js
DELETED
|
@@ -1 +0,0 @@
|
|
| 1 |
-
function C(){}function P(n,t){for(const e in t)n[e]=t[e];return n}function B(n){return n()}function K(){return Object.create(null)}function D(n){n.forEach(B)}function Q(n){return typeof n=="function"}function R(n,t){return n!=n?t==t:n!==t||n&&typeof n=="object"||typeof n=="function"}function V(n){return Object.keys(n).length===0}function L(n,...t){if(n==null){for(const i of t)i(void 0);return C}const e=n.subscribe(...t);return e.unsubscribe?()=>e.unsubscribe():e}function X(n,t,e){n.$$.on_destroy.push(L(t,e))}function Y(n,t,e,i){if(n){const l=k(n,t,e,i);return n[0](l)}}function k(n,t,e,i){return n[1]&&i?P(e.ctx.slice(),n[1](i(t))):e.ctx}function Z(n,t,e,i){return n[2],t.dirty}function $(n,t,e,i,l,u){if(l){const c=k(t,e,i,u);n.p(c,l)}}function nn(n){if(n.ctx.length>32){const t=[],e=n.ctx.length/32;for(let i=0;i<e;i++)t[i]=-1;return t}return-1}let m=!1;function tn(){m=!0}function en(){m=!1}function O(n,t,e,i){for(;n<t;){const l=n+(t-n>>1);e(l)<=i?n=l+1:t=l}return n}function T(n){if(n.hydrate_init)return;n.hydrate_init=!0;let t=n.childNodes;if(n.nodeName==="HEAD"){const r=[];for(let o=0;o<t.length;o++){const a=t[o];a.claim_order!==void 0&&r.push(a)}t=r}const e=new Int32Array(t.length+1),i=new Int32Array(t.length);e[0]=-1;let l=0;for(let r=0;r<t.length;r++){const o=t[r].claim_order,a=(l>0&&t[e[l]].claim_order<=o?l+1:O(1,l,S=>t[e[S]].claim_order,o))-1;i[r]=e[a]+1;const v=a+1;e[v]=r,l=Math.max(v,l)}const u=[],c=[];let s=t.length-1;for(let r=e[l]+1;r!=0;r=i[r-1]){for(u.push(t[r-1]);s>=r;s--)c.push(t[s]);s--}for(;s>=0;s--)c.push(t[s]);u.reverse(),c.sort((r,o)=>r.claim_order-o.claim_order);for(let r=0,o=0;r<c.length;r++){for(;o<u.length&&c[r].claim_order>=u[o].claim_order;)o++;const a=o<u.length?u[o]:null;n.insertBefore(c[r],a)}}function q(n,t){if(m){for(T(n),(n.actual_end_child===void 0||n.actual_end_child!==null&&n.actual_end_child.parentNode!==n)&&(n.actual_end_child=n.firstChild);n.actual_end_child!==null&&n.actual_end_child.claim_order===void 0;)n.actual_end_child=n.actual_end_child.nextSibling;t!==n.actual_end_child?(t.claim_order!==void 0||t.parentNode!==n)&&n.insertBefore(t,n.actual_end_child):n.actual_end_child=t.nextSibling}else(t.parentNode!==n||t.nextSibling!==null)&&n.appendChild(t)}function cn(n,t,e){m&&!e?q(n,t):(t.parentNode!==n||t.nextSibling!=e)&&n.insertBefore(t,e||null)}function ln(n){n.parentNode&&n.parentNode.removeChild(n)}function rn(n,t){for(let e=0;e<n.length;e+=1)n[e]&&n[e].d(t)}function H(n){return document.createElement(n)}function I(n){return document.createElementNS("http://www.w3.org/2000/svg",n)}function x(n){return document.createTextNode(n)}function sn(){return x(" ")}function un(){return x("")}function on(n,t,e,i){return n.addEventListener(t,e,i),()=>n.removeEventListener(t,e,i)}function an(n,t,e){e==null?n.removeAttribute(t):n.getAttribute(t)!==e&&n.setAttribute(t,e)}function fn(n){return n.dataset.svelteH}function _n(n){return Array.from(n.childNodes)}function M(n){n.claim_info===void 0&&(n.claim_info={last_index:0,total_claimed:0})}function N(n,t,e,i,l=!1){M(n);const u=(()=>{for(let c=n.claim_info.last_index;c<n.length;c++){const s=n[c];if(t(s)){const r=e(s);return r===void 0?n.splice(c,1):n[c]=r,l||(n.claim_info.last_index=c),s}}for(let c=n.claim_info.last_index-1;c>=0;c--){const s=n[c];if(t(s)){const r=e(s);return r===void 0?n.splice(c,1):n[c]=r,l?r===void 0&&n.claim_info.last_index--:n.claim_info.last_index=c,s}}return i()})();return u.claim_order=n.claim_info.total_claimed,n.claim_info.total_claimed+=1,u}function A(n,t,e,i){return N(n,l=>l.nodeName===t,l=>{const u=[];for(let c=0;c<l.attributes.length;c++){const s=l.attributes[c];e[s.name]||u.push(s.name)}u.forEach(c=>l.removeAttribute(c))},()=>i(t))}function dn(n,t,e){return A(n,t,e,H)}function hn(n,t,e){return A(n,t,e,I)}function z(n,t){return N(n,e=>e.nodeType===3,e=>{const i=""+t;if(e.data.startsWith(i)){if(e.data.length!==i.length)return e.splitText(i.length)}else e.data=i},()=>x(t),!0)}function mn(n){return z(n," ")}function pn(n,t){t=""+t,n.data!==t&&(n.data=t)}function bn(n,t){n.value=t??""}function yn(n,t,e,i){e==null?n.style.removeProperty(t):n.style.setProperty(t,e,"")}function gn(n,t,e){n.classList.toggle(t,!!e)}function F(n,t,{bubbles:e=!1,cancelable:i=!1}={}){return new CustomEvent(n,{detail:t,bubbles:e,cancelable:i})}function xn(n,t){return new n(t)}let h;function b(n){h=n}function p(){if(!h)throw new Error("Function called outside component initialization");return h}function vn(n){p().$$.on_mount.push(n)}function wn(n){p().$$.after_update.push(n)}function En(n){p().$$.on_destroy.push(n)}function kn(){const n=p();return(t,e,{cancelable:i=!1}={})=>{const l=n.$$.callbacks[t];if(l){const u=F(t,e,{cancelable:i});return l.slice().forEach(c=>{c.call(n,u)}),!u.defaultPrevented}return!0}}const d=[],w=[];let _=[];const E=[],j=Promise.resolve();let g=!1;function U(){g||(g=!0,j.then(G))}function Nn(){return U(),j}function W(n){_.push(n)}const y=new Set;let f=0;function G(){if(f!==0)return;const n=h;do{try{for(;f<d.length;){const t=d[f];f++,b(t),J(t.$$)}}catch(t){throw d.length=0,f=0,t}for(b(null),d.length=0,f=0;w.length;)w.pop()();for(let t=0;t<_.length;t+=1){const e=_[t];y.has(e)||(y.add(e),e())}_.length=0}while(d.length);for(;E.length;)E.pop()();g=!1,y.clear(),b(n)}function J(n){if(n.fragment!==null){n.update(),D(n.before_update);const t=n.dirty;n.dirty=[-1],n.fragment&&n.fragment.p(n.ctx,t),n.after_update.forEach(W)}}function An(n){const t=[],e=[];_.forEach(i=>n.indexOf(i)===-1?t.push(i):e.push(i)),e.forEach(i=>i()),_=t}export{un as A,gn as B,wn as C,Nn as D,xn as E,yn as F,w as G,Q as H,V as I,h as J,K,G as L,b as M,An as N,W as O,B as P,tn as Q,en as R,d as S,U as T,hn as U,I as V,kn as W,L as X,Z as a,pn as b,Y as c,ln as d,q as e,dn as f,nn as g,_n as h,cn as i,z as j,mn as k,H as l,sn as m,C as n,X as o,an as p,fn as q,vn as r,R as s,x as t,$ as u,En as v,D as w,bn as x,on as y,rn as z};
|
|
|
|
|
|
frontend/.svelte-kit/output/client/_app/immutable/chunks/J0QSAnNz.js
DELETED
|
@@ -1 +0,0 @@
|
|
| 1 |
-
var gt=Object.defineProperty;var mt=(e,t,n)=>t in e?gt(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n;var A=(e,t,n)=>mt(e,typeof t!="symbol"?t+"":t,n);import{n as K,s as _t,X as wt,w as vt,H as yt,r as De,D as te}from"./DQebRFVS.js";class Se{constructor(t,n){this.status=t,typeof n=="string"?this.body={message:n}:n?this.body=n:this.body={message:`Error: ${t}`}}toString(){return JSON.stringify(this.body)}}class Re{constructor(t,n){this.status=t,this.location=n}}class xe extends Error{constructor(t,n,r){super(r),this.status=t,this.text=n}}new URL("sveltekit-internal://");function bt(e,t){return e==="/"||t==="ignore"?e:t==="never"?e.endsWith("/")?e.slice(0,-1):e:t==="always"&&!e.endsWith("/")?e+"/":e}function kt(e){return e.split("%25").map(decodeURI).join("%25")}function Et(e){for(const t in e)e[t]=decodeURIComponent(e[t]);return e}function ge({href:e}){return e.split("#")[0]}function St(...e){let t=5381;for(const n of e)if(typeof n=="string"){let r=n.length;for(;r;)t=t*33^n.charCodeAt(--r)}else if(ArrayBuffer.isView(n)){const r=new Uint8Array(n.buffer,n.byteOffset,n.byteLength);let a=r.length;for(;a;)t=t*33^r[--a]}else throw new TypeError("value must be a string or TypedArray");return(t>>>0).toString(36)}new TextEncoder;new TextDecoder;function Rt(e){const t=atob(e),n=new Uint8Array(t.length);for(let r=0;r<t.length;r++)n[r]=t.charCodeAt(r);return n}const xt=window.fetch;window.fetch=(e,t)=>((e instanceof Request?e.method:(t==null?void 0:t.method)||"GET")!=="GET"&&M.delete(Le(e)),xt(e,t));const M=new Map;function Lt(e,t){const n=Le(e,t),r=document.querySelector(n);if(r!=null&&r.textContent){r.remove();let{body:a,...i}=JSON.parse(r.textContent);const o=r.getAttribute("data-ttl");return o&&M.set(n,{body:a,init:i,ttl:1e3*Number(o)}),r.getAttribute("data-b64")!==null&&(a=Rt(a)),Promise.resolve(new Response(a,i))}return window.fetch(e,t)}function At(e,t,n){if(M.size>0){const r=Le(e,n),a=M.get(r);if(a){if(performance.now()<a.ttl&&["default","force-cache","only-if-cached",void 0].includes(n==null?void 0:n.cache))return new Response(a.body,a.init);M.delete(r)}}return window.fetch(t,n)}function Le(e,t){let r=`script[data-sveltekit-fetched][data-url=${JSON.stringify(e instanceof Request?e.url:e)}]`;if(t!=null&&t.headers||t!=null&&t.body){const a=[];t.headers&&a.push([...new Headers(t.headers)].join(",")),t.body&&(typeof t.body=="string"||ArrayBuffer.isView(t.body))&&a.push(t.body),r+=`[data-hash="${St(...a)}"]`}return r}const Ut=/^(\[)?(\.\.\.)?(\w+)(?:=(\w+))?(\])?$/;function Tt(e){const t=[];return{pattern:e==="/"?/^\/$/:new RegExp(`^${It(e).map(r=>{const a=/^\[\.\.\.(\w+)(?:=(\w+))?\]$/.exec(r);if(a)return t.push({name:a[1],matcher:a[2],optional:!1,rest:!0,chained:!0}),"(?:/([^]*))?";const i=/^\[\[(\w+)(?:=(\w+))?\]\]$/.exec(r);if(i)return t.push({name:i[1],matcher:i[2],optional:!0,rest:!1,chained:!0}),"(?:/([^/]+))?";if(!r)return;const o=r.split(/\[(.+?)\](?!\])/);return"/"+o.map((l,c)=>{if(c%2){if(l.startsWith("x+"))return me(String.fromCharCode(parseInt(l.slice(2),16)));if(l.startsWith("u+"))return me(String.fromCharCode(...l.slice(2).split("-").map(m=>parseInt(m,16))));const h=Ut.exec(l),[,u,w,f,d]=h;return t.push({name:f,matcher:d,optional:!!u,rest:!!w,chained:w?c===1&&o[0]==="":!1}),w?"([^]*?)":u?"([^/]*)?":"([^/]+?)"}return me(l)}).join("")}).join("")}/?$`),params:t}}function $t(e){return e!==""&&!/^\([^)]+\)$/.test(e)}function It(e){return e.slice(1).split("/").filter($t)}function Pt(e,t,n){const r={},a=e.slice(1),i=a.filter(s=>s!==void 0);let o=0;for(let s=0;s<t.length;s+=1){const l=t[s];let c=a[s-o];if(l.chained&&l.rest&&o&&(c=a.slice(s-o,s+1).filter(h=>h).join("/"),o=0),c===void 0)if(l.rest)c="";else continue;if(!l.matcher||n[l.matcher](c)){r[l.name]=c;const h=t[s+1],u=a[s+1];h&&!h.rest&&h.optional&&u&&l.chained&&(o=0),!h&&!u&&Object.keys(r).length===i.length&&(o=0);continue}if(l.optional&&l.chained){o++;continue}return}if(!o)return r}function me(e){return e.normalize().replace(/[[\]]/g,"\\$&").replace(/%/g,"%25").replace(/\//g,"%2[Ff]").replace(/\?/g,"%3[Ff]").replace(/#/g,"%23").replace(/[.*+?^${}()|\\]/g,"\\$&")}function Ot({nodes:e,server_loads:t,dictionary:n,matchers:r}){const a=new Set(t);return Object.entries(n).map(([s,[l,c,h]])=>{const{pattern:u,params:w}=Tt(s),f={id:s,exec:d=>{const m=u.exec(d);if(m)return Pt(m,w,r)},errors:[1,...h||[]].map(d=>e[d]),layouts:[0,...c||[]].map(o),leaf:i(l)};return f.errors.length=f.layouts.length=Math.max(f.errors.length,f.layouts.length),f});function i(s){const l=s<0;return l&&(s=~s),[l,e[s]]}function o(s){return s===void 0?s:[a.has(s),e[s]]}}function He(e,t=JSON.parse){try{return t(sessionStorage[e])}catch{}}function qe(e,t,n=JSON.stringify){const r=n(t);try{sessionStorage[e]=r}catch{}}const D=[];function Ct(e,t){return{subscribe:fe(e,t).subscribe}}function fe(e,t=K){let n;const r=new Set;function a(s){if(_t(e,s)&&(e=s,n)){const l=!D.length;for(const c of r)c[1](),D.push(c,e);if(l){for(let c=0;c<D.length;c+=2)D[c][0](D[c+1]);D.length=0}}}function i(s){a(s(e))}function o(s,l=K){const c=[s,l];return r.add(c),r.size===1&&(n=t(a,i)||K),s(e),()=>{r.delete(c),r.size===0&&n&&(n(),n=null)}}return{set:a,update:i,subscribe:o}}function hn(e,t,n){const r=!Array.isArray(e),a=r?[e]:e;if(!a.every(Boolean))throw new Error("derived() expects stores as input, got a falsy value");const i=t.length<2;return Ct(n,(o,s)=>{let l=!1;const c=[];let h=0,u=K;const w=()=>{if(h)return;u();const d=t(r?c[0]:c,o,s);i?o(d):u=yt(d)?d:K},f=a.map((d,m)=>wt(d,p=>{c[m]=p,h&=~(1<<m),l&&w()},()=>{h|=1<<m}));return l=!0,w(),function(){vt(f),u(),l=!1}})}var Ge;const L=((Ge=globalThis.__sveltekit_ofzaah)==null?void 0:Ge.base)??"";var We;const jt=((We=globalThis.__sveltekit_ofzaah)==null?void 0:We.assets)??L??"",Nt="1772279345188",Ye="sveltekit:snapshot",Je="sveltekit:scroll",Xe="sveltekit:states",Dt="sveltekit:pageurl",V="sveltekit:history",G="sveltekit:navigation",O={tap:1,hover:2,viewport:3,eager:4,off:-1,false:-1},ue=location.origin;function Ae(e){if(e instanceof URL)return e;let t=document.baseURI;if(!t){const n=document.getElementsByTagName("base");t=n.length?n[0].href:document.URL}return new URL(e,t)}function j(){return{x:pageXOffset,y:pageYOffset}}function q(e,t){return e.getAttribute(`data-sveltekit-${t}`)}const Ve={...O,"":O.hover};function Qe(e){let t=e.assignedSlot??e.parentNode;return(t==null?void 0:t.nodeType)===11&&(t=t.host),t}function Ze(e,t){for(;e&&e!==t;){if(e.nodeName.toUpperCase()==="A"&&e.hasAttribute("href"))return e;e=Qe(e)}}function ve(e,t,n){let r;try{if(r=new URL(e instanceof SVGAElement?e.href.baseVal:e.href,document.baseURI),n&&r.hash.match(/^#[^/]/)){const s=location.hash.split("#")[1]||"/";r.hash=`#${s}${r.hash}`}}catch{}const a=e instanceof SVGAElement?e.target.baseVal:e.target,i=!r||!!a||de(r,t,n)||(e.getAttribute("rel")||"").split(/\s+/).includes("external"),o=(r==null?void 0:r.origin)===ue&&e.hasAttribute("download");return{url:r,external:i,target:a,download:o}}function ne(e){let t=null,n=null,r=null,a=null,i=null,o=null,s=e;for(;s&&s!==document.documentElement;)r===null&&(r=q(s,"preload-code")),a===null&&(a=q(s,"preload-data")),t===null&&(t=q(s,"keepfocus")),n===null&&(n=q(s,"noscroll")),i===null&&(i=q(s,"reload")),o===null&&(o=q(s,"replacestate")),s=Qe(s);function l(c){switch(c){case"":case"true":return!0;case"off":case"false":return!1;default:return}}return{preload_code:Ve[r??"off"],preload_data:Ve[a??"off"],keepfocus:l(t),noscroll:l(n),reload:l(i),replace_state:l(o)}}function ze(e){const t=fe(e);let n=!0;function r(){n=!0,t.update(o=>o)}function a(o){n=!1,t.set(o)}function i(o){let s;return t.subscribe(l=>{(s===void 0||n&&l!==s)&&o(s=l)})}return{notify:r,set:a,subscribe:i}}const et={v:()=>{}};function qt(){const{set:e,subscribe:t}=fe(!1);let n;async function r(){clearTimeout(n);try{const a=await fetch(`${jt}/_app/version.json`,{headers:{pragma:"no-cache","cache-control":"no-cache"}});if(!a.ok)return!1;const o=(await a.json()).version!==Nt;return o&&(e(!0),et.v(),clearTimeout(n)),o}catch{return!1}}return{subscribe:t,check:r}}function de(e,t,n){return e.origin!==ue||!e.pathname.startsWith(t)?!0:n?e.pathname!==location.pathname:!1}function pn(e){}const tt=new Set(["load","prerender","csr","ssr","trailingSlash","config"]);[...tt];const Vt=new Set([...tt]);[...Vt];function zt(e){return e.filter(t=>t!=null)}function Ue(e){return e instanceof Se||e instanceof xe?e.status:500}function Bt(e){return e instanceof xe?e.text:"Internal Error"}let S,W,_e;const Kt=De.toString().includes("$$")||/function \w+\(\) \{\}/.test(De.toString());Kt?(S={data:{},form:null,error:null,params:{},route:{id:null},state:{},status:-1,url:new URL("https://example.com")},W={current:null},_e={current:!1}):(S=new class{constructor(){A(this,"data",$state.raw({}));A(this,"form",$state.raw(null));A(this,"error",$state.raw(null));A(this,"params",$state.raw({}));A(this,"route",$state.raw({id:null}));A(this,"state",$state.raw({}));A(this,"status",$state.raw(-1));A(this,"url",$state.raw(new URL("https://example.com")))}},W=new class{constructor(){A(this,"current",$state.raw(null))}},_e=new class{constructor(){A(this,"current",$state.raw(!1))}},et.v=()=>_e.current=!0);function Mt(e){Object.assign(S,e)}const Ft=new Set(["icon","shortcut icon","apple-touch-icon"]),I=He(Je)??{},H=He(Ye)??{},$={url:ze({}),page:ze({}),navigating:fe(null),updated:qt()};function Te(e){I[e]=j()}function Gt(e,t){let n=e+1;for(;I[n];)delete I[n],n+=1;for(n=t+1;H[n];)delete H[n],n+=1}function Y(e,t=!1){return t?location.replace(e.href):location.href=e.href,new Promise(()=>{})}async function nt(){if("serviceWorker"in navigator){const e=await navigator.serviceWorker.getRegistration(L||"/");e&&await e.update()}}function Be(){}let $e,ye,ae,U,be,E;const re=[],oe=[];let v=null;function ke(){var e;(e=v==null?void 0:v.fork)==null||e.then(t=>t==null?void 0:t.discard()),v=null}const ee=new Map,at=new Set,Wt=new Set,F=new Set;let _={branch:[],error:null,url:null},rt=!1,se=!1,Ke=!0,J=!1,B=!1,ot=!1,Ie=!1,st,k,x,C;const ie=new Set,Me=new Map;async function wn(e,t,n){var i,o,s,l,c;(i=globalThis.__sveltekit_ofzaah)!=null&&i.data&&globalThis.__sveltekit_ofzaah.data,document.URL!==location.href&&(location.href=location.href),E=e,await((s=(o=e.hooks).init)==null?void 0:s.call(o)),$e=Ot(e),U=document.documentElement,be=t,ye=e.nodes[0],ae=e.nodes[1],ye(),ae(),k=(l=history.state)==null?void 0:l[V],x=(c=history.state)==null?void 0:c[G],k||(k=x=Date.now(),history.replaceState({...history.state,[V]:k,[G]:x},""));const r=I[k];function a(){r&&(history.scrollRestoration="manual",scrollTo(r.x,r.y))}n?(a(),await sn(be,n)):(await z({type:"enter",url:Ae(E.hash?fn(new URL(location.href)):location.href),replace_state:!0}),a()),on()}function Ht(){re.length=0,Ie=!1}function it(e){oe.some(t=>t==null?void 0:t.snapshot)&&(H[e]=oe.map(t=>{var n;return(n=t==null?void 0:t.snapshot)==null?void 0:n.capture()}))}function lt(e){var t;(t=H[e])==null||t.forEach((n,r)=>{var a,i;(i=(a=oe[r])==null?void 0:a.snapshot)==null||i.restore(n)})}function Fe(){Te(k),qe(Je,I),it(x),qe(Ye,H)}async function ct(e,t,n,r){let a;t.invalidateAll&&ke(),await z({type:"goto",url:Ae(e),keepfocus:t.keepFocus,noscroll:t.noScroll,replace_state:t.replaceState,state:t.state,redirect_count:n,nav_token:r,accept:()=>{t.invalidateAll&&(Ie=!0,a=[...Me.keys()]),t.invalidate&&t.invalidate.forEach(rn)}}),t.invalidateAll&&te().then(te).then(()=>{Me.forEach(({resource:i},o)=>{var s;a!=null&&a.includes(o)&&((s=i.refresh)==null||s.call(i))})})}async function Yt(e){if(e.id!==(v==null?void 0:v.id)){ke();const t={};ie.add(t),v={id:e.id,token:t,promise:ut({...e,preload:t}).then(n=>(ie.delete(t),n.type==="loaded"&&n.state.error&&ke(),n)),fork:null}}return v.promise}async function we(e){var n;const t=(n=await he(e,!1))==null?void 0:n.route;t&&await Promise.all([...t.layouts,t.leaf].filter(Boolean).map(r=>r[1]()))}async function ft(e,t,n){var a;_=e.state;const r=document.querySelector("style[data-sveltekit]");if(r&&r.remove(),Object.assign(S,e.props.page),st=new E.root({target:t,props:{...e.props,stores:$,components:oe},hydrate:n,sync:!1}),await Promise.resolve(),lt(x),n){const i={from:null,to:{params:_.params,route:{id:((a=_.route)==null?void 0:a.id)??null},url:new URL(location.href),scroll:I[k]??j()},willUnload:!1,type:"enter",complete:Promise.resolve()};F.forEach(o=>o(i))}se=!0}function le({url:e,params:t,branch:n,status:r,error:a,route:i,form:o}){let s="never";if(L&&(e.pathname===L||e.pathname===L+"/"))s="always";else for(const f of n)(f==null?void 0:f.slash)!==void 0&&(s=f.slash);e.pathname=bt(e.pathname,s),e.search=e.search;const l={type:"loaded",state:{url:e,params:t,branch:n,error:a,route:i},props:{constructors:zt(n).map(f=>f.node.component),page:Ne(S)}};o!==void 0&&(l.props.form=o);let c={},h=!S,u=0;for(let f=0;f<Math.max(n.length,_.branch.length);f+=1){const d=n[f],m=_.branch[f];(d==null?void 0:d.data)!==(m==null?void 0:m.data)&&(h=!0),d&&(c={...c,...d.data},h&&(l.props[`data_${u}`]=c),u+=1)}return(!_.url||e.href!==_.url.href||_.error!==a||o!==void 0&&o!==S.form||h)&&(l.props.page={error:a,params:t,route:{id:(i==null?void 0:i.id)??null},state:{},status:r,url:new URL(e),form:o??null,data:h?c:S.data}),l}async function Pe({loader:e,parent:t,url:n,params:r,route:a,server_data_node:i}){var c,h;let o=null;const s={dependencies:new Set,params:new Set,parent:!1,route:!1,url:!1,search_params:new Set},l=await e();return{node:l,loader:e,server:i,universal:(c=l.universal)!=null&&c.load?{type:"data",data:o,uses:s}:null,data:o??(i==null?void 0:i.data)??null,slash:((h=l.universal)==null?void 0:h.trailingSlash)??(i==null?void 0:i.slash)}}function Jt(e,t,n){let r=e instanceof Request?e.url:e;const a=new URL(r,n);a.origin===n.origin&&(r=a.href.slice(n.origin.length));const i=se?At(r,a.href,t):Lt(r,t);return{resolved:a,promise:i}}function Xt(e,t,n,r,a,i){if(Ie)return!0;if(!a)return!1;if(a.parent&&e||a.route&&t||a.url&&n)return!0;for(const o of a.search_params)if(r.has(o))return!0;for(const o of a.params)if(i[o]!==_.params[o])return!0;for(const o of a.dependencies)if(re.some(s=>s(new URL(o))))return!0;return!1}function Oe(e,t){return(e==null?void 0:e.type)==="data"?e:(e==null?void 0:e.type)==="skip"?t??null:null}function Qt(e,t){if(!e)return new Set(t.searchParams.keys());const n=new Set([...e.searchParams.keys(),...t.searchParams.keys()]);for(const r of n){const a=e.searchParams.getAll(r),i=t.searchParams.getAll(r);a.every(o=>i.includes(o))&&i.every(o=>a.includes(o))&&n.delete(r)}return n}function Zt({error:e,url:t,route:n,params:r}){return{type:"loaded",state:{error:e,url:t,route:n,params:r,branch:[]},props:{page:Ne(S),constructors:[]}}}async function ut({id:e,invalidating:t,url:n,params:r,route:a,preload:i}){if((v==null?void 0:v.id)===e)return ie.delete(v.token),v.promise;const{errors:o,layouts:s,leaf:l}=a,c=[...s,l];o.forEach(p=>p==null?void 0:p().catch(()=>{})),c.forEach(p=>p==null?void 0:p[1]().catch(()=>{}));const h=_.url?e!==ce(_.url):!1,u=_.route?a.id!==_.route.id:!1,w=Qt(_.url,n);let f=!1;const d=c.map(async(p,g)=>{var T;if(!p)return;const b=_.branch[g];return p[1]===(b==null?void 0:b.loader)&&!Xt(f,u,h,w,(T=b.universal)==null?void 0:T.uses,r)?b:(f=!0,Pe({loader:p[1],url:n,params:r,route:a,parent:async()=>{var Q;const P={};for(let y=0;y<g;y+=1)Object.assign(P,(Q=await d[y])==null?void 0:Q.data);return P},server_data_node:Oe(p[0]?{type:"skip"}:null,p[0]?b==null?void 0:b.server:void 0)}))});for(const p of d)p.catch(()=>{});const m=[];for(let p=0;p<c.length;p+=1)if(c[p])try{m.push(await d[p])}catch(g){if(g instanceof Re)return{type:"redirect",location:g.location};if(ie.has(i))return Zt({error:await X(g,{params:r,url:n,route:{id:a.id}}),url:n,params:r,route:a});let b=Ue(g),R;if(g instanceof Se)R=g.body;else{if(await $.updated.check())return await nt(),await Y(n);R=await X(g,{params:r,url:n,route:{id:a.id}})}const T=await en(p,m,o);return T?le({url:n,params:r,branch:m.slice(0,T.idx).concat(T.node),status:b,error:R,route:a}):await ht(n,{id:a.id},R,b)}else m.push(void 0);return le({url:n,params:r,branch:m,status:200,error:null,route:a,form:t?void 0:null})}async function en(e,t,n){for(;e--;)if(n[e]){let r=e;for(;!t[r];)r-=1;try{return{idx:r+1,node:{node:await n[e](),loader:n[e],data:{},server:null,universal:null}}}catch{continue}}}async function Ce({status:e,error:t,url:n,route:r}){const a={};let i=null;try{const o=await Pe({loader:ye,url:n,params:a,route:r,parent:()=>Promise.resolve({}),server_data_node:Oe(i)}),s={node:await ae(),loader:ae,universal:null,server:null,data:null};return le({url:n,params:a,branch:[o,s],status:e,error:t,route:null})}catch(o){if(o instanceof Re)return ct(new URL(o.location,location.href),{},0);throw o}}async function tn(e){const t=e.href;if(ee.has(t))return ee.get(t);let n;try{const r=(async()=>{let a=await E.hooks.reroute({url:new URL(e),fetch:async(i,o)=>Jt(i,o,e).promise})??e;if(typeof a=="string"){const i=new URL(e);E.hash?i.hash=a:i.pathname=a,a=i}return a})();ee.set(t,r),n=await r}catch{ee.delete(t);return}return n}async function he(e,t){if(e&&!de(e,L,E.hash)){const n=await tn(e);if(!n)return;const r=nn(n);for(const a of $e){const i=a.exec(r);if(i)return{id:ce(e),invalidating:t,route:a,params:Et(i),url:e}}}}function nn(e){return kt(E.hash?e.hash.replace(/^#/,"").replace(/[?#].+/,""):e.pathname.slice(L.length))||"/"}function ce(e){return(E.hash?e.hash.replace(/^#/,""):e.pathname)+e.search}function dt({url:e,type:t,intent:n,delta:r,event:a,scroll:i}){let o=!1;const s=je(_,n,e,t,i??null);r!==void 0&&(s.navigation.delta=r),a!==void 0&&(s.navigation.event=a);const l={...s.navigation,cancel:()=>{o=!0,s.reject(new Error("navigation cancelled"))}};return J||at.forEach(c=>c(l)),o?null:s}async function z({type:e,url:t,popped:n,keepfocus:r,noscroll:a,replace_state:i,state:o={},redirect_count:s=0,nav_token:l={},accept:c=Be,block:h=Be,event:u}){const w=C;C=l;const f=await he(t,!1),d=e==="enter"?je(_,f,t,e):dt({url:t,type:e,delta:n==null?void 0:n.delta,intent:f,scroll:n==null?void 0:n.scroll,event:u});if(!d){h(),C===l&&(C=w);return}const m=k,p=x;c(),J=!0,se&&d.navigation.type!=="enter"&&$.navigating.set(W.current=d.navigation);let g=f&&await ut(f);if(!g){if(de(t,L,E.hash))return await Y(t,i);g=await ht(t,{id:null},await X(new xe(404,"Not Found",`Not found: ${t.pathname}`),{url:t,params:{},route:{id:null}}),404,i)}if(t=(f==null?void 0:f.url)||t,C!==l)return d.reject(new Error("navigation aborted")),!1;if(g.type==="redirect"){if(s<20){await z({type:e,url:new URL(g.location,t),popped:n,keepfocus:r,noscroll:a,replace_state:i,state:o,redirect_count:s+1,nav_token:l}),d.fulfil(void 0);return}g=await Ce({status:500,error:await X(new Error("Redirect loop"),{url:t,params:{},route:{id:null}}),url:t,route:{id:null}})}else g.props.page.status>=400&&await $.updated.check()&&(await nt(),await Y(t,i));if(Ht(),Te(m),it(p),g.props.page.url.pathname!==t.pathname&&(t.pathname=g.props.page.url.pathname),o=n?n.state:o,!n){const y=i?0:1,Z={[V]:k+=y,[G]:x+=y,[Xe]:o};(i?history.replaceState:history.pushState).call(history,Z,"",t),i||Gt(k,x)}const b=f&&(v==null?void 0:v.id)===f.id?v.fork:null;v=null,g.props.page.state=o;let R;if(se){const y=(await Promise.all(Array.from(Wt,N=>N(d.navigation)))).filter(N=>typeof N=="function");if(y.length>0){let N=function(){y.forEach(pe=>{F.delete(pe)})};y.push(N),y.forEach(pe=>{F.add(pe)})}_=g.state,g.props.page&&(g.props.page.url=t);const Z=b&&await b;Z?R=Z.commit():(st.$set(g.props),Mt(g.props.page),R=void 0),ot=!0}else await ft(g,be,!1);const{activeElement:T}=document;await R,await te(),await te();let P=null;if(Ke){const y=n?n.scroll:a?j():null;y?scrollTo(y.x,y.y):(P=t.hash&&document.getElementById(pt(t)))?P.scrollIntoView():scrollTo(0,0)}const Q=document.activeElement!==T&&document.activeElement!==document.body;!r&&!Q&&cn(t,!P),Ke=!0,g.props.page&&Object.assign(S,g.props.page),J=!1,e==="popstate"&<(x),d.fulfil(void 0),d.navigation.to&&(d.navigation.to.scroll=j()),F.forEach(y=>y(d.navigation)),$.navigating.set(W.current=null)}async function ht(e,t,n,r,a){return e.origin===ue&&e.pathname===location.pathname&&!rt?await Ce({status:r,error:n,url:e,route:t}):await Y(e,a)}function an(){let e,t={element:void 0,href:void 0},n;U.addEventListener("mousemove",s=>{const l=s.target;clearTimeout(e),e=setTimeout(()=>{i(l,O.hover)},20)});function r(s){s.defaultPrevented||i(s.composedPath()[0],O.tap)}U.addEventListener("mousedown",r),U.addEventListener("touchstart",r,{passive:!0});const a=new IntersectionObserver(s=>{for(const l of s)l.isIntersecting&&(we(new URL(l.target.href)),a.unobserve(l.target))},{threshold:0});async function i(s,l){const c=Ze(s,U),h=c===t.element&&(c==null?void 0:c.href)===t.href&&l>=n;if(!c||h)return;const{url:u,external:w,download:f}=ve(c,L,E.hash);if(w||f)return;const d=ne(c),m=u&&ce(_.url)===ce(u);if(!(d.reload||m))if(l<=d.preload_data){t={element:c,href:c.href},n=O.tap;const p=await he(u,!1);if(!p)return;Yt(p)}else l<=d.preload_code&&(t={element:c,href:c.href},n=l,we(u))}function o(){a.disconnect();for(const s of U.querySelectorAll("a")){const{url:l,external:c,download:h}=ve(s,L,E.hash);if(c||h)continue;const u=ne(s);u.reload||(u.preload_code===O.viewport&&a.observe(s),u.preload_code===O.eager&&we(l))}}F.add(o),o()}function X(e,t){if(e instanceof Se)return e.body;const n=Ue(e),r=Bt(e);return E.hooks.handleError({error:e,event:t,status:n,message:r})??{message:r}}function vn(e,t={}){return e=new URL(Ae(e)),e.origin!==ue?Promise.reject(new Error("goto: invalid URL")):ct(e,t,0)}function rn(e){if(typeof e=="function")re.push(e);else{const{href:t}=new URL(e,location.href);re.push(n=>n.href===t)}}function on(){var t;history.scrollRestoration="manual",addEventListener("beforeunload",n=>{let r=!1;if(Fe(),!J){const a=je(_,void 0,null,"leave"),i={...a.navigation,cancel:()=>{r=!0,a.reject(new Error("navigation cancelled"))}};at.forEach(o=>o(i))}r?(n.preventDefault(),n.returnValue=""):history.scrollRestoration="auto"}),addEventListener("visibilitychange",()=>{document.visibilityState==="hidden"&&Fe()}),(t=navigator.connection)!=null&&t.saveData||an(),U.addEventListener("click",async n=>{if(n.button||n.which!==1||n.metaKey||n.ctrlKey||n.shiftKey||n.altKey||n.defaultPrevented)return;const r=Ze(n.composedPath()[0],U);if(!r)return;const{url:a,external:i,target:o,download:s}=ve(r,L,E.hash);if(!a)return;if(o==="_parent"||o==="_top"){if(window.parent!==window)return}else if(o&&o!=="_self")return;const l=ne(r);if(!(r instanceof SVGAElement)&&a.protocol!==location.protocol&&!(a.protocol==="https:"||a.protocol==="http:")||s)return;const[h,u]=(E.hash?a.hash.replace(/^#/,""):a.href).split("#"),w=h===ge(location);if(i||l.reload&&(!w||!u)){dt({url:a,type:"link",event:n})?J=!0:n.preventDefault();return}if(u!==void 0&&w){const[,f]=_.url.href.split("#");if(f===u){if(n.preventDefault(),u===""||u==="top"&&r.ownerDocument.getElementById("top")===null)scrollTo({top:0});else{const d=r.ownerDocument.getElementById(decodeURIComponent(u));d&&(d.scrollIntoView(),d.focus())}return}if(B=!0,Te(k),e(a),!l.replace_state)return;B=!1}n.preventDefault(),await new Promise(f=>{requestAnimationFrame(()=>{setTimeout(f,0)}),setTimeout(f,100)}),await z({type:"link",url:a,keepfocus:l.keepfocus,noscroll:l.noscroll,replace_state:l.replace_state??a.href===location.href,event:n})}),U.addEventListener("submit",n=>{if(n.defaultPrevented)return;const r=HTMLFormElement.prototype.cloneNode.call(n.target),a=n.submitter;if(((a==null?void 0:a.formTarget)||r.target)==="_blank"||((a==null?void 0:a.formMethod)||r.method)!=="get")return;const s=new URL((a==null?void 0:a.hasAttribute("formaction"))&&(a==null?void 0:a.formAction)||r.action);if(de(s,L,!1))return;const l=n.target,c=ne(l);if(c.reload)return;n.preventDefault(),n.stopPropagation();const h=new FormData(l,a);s.search=new URLSearchParams(h).toString(),z({type:"form",url:s,keepfocus:c.keepfocus,noscroll:c.noscroll,replace_state:c.replace_state??s.href===location.href,event:n})}),addEventListener("popstate",async n=>{var r;if(!Ee){if((r=n.state)!=null&&r[V]){const a=n.state[V];if(C={},a===k)return;const i=I[a],o=n.state[Xe]??{},s=new URL(n.state[Dt]??location.href),l=n.state[G],c=_.url?ge(location)===ge(_.url):!1;if(l===x&&(ot||c)){o!==S.state&&(S.state=o),e(s),I[k]=j(),i&&scrollTo(i.x,i.y),k=a;return}const u=a-k;await z({type:"popstate",url:s,popped:{state:o,scroll:i,delta:u},accept:()=>{k=a,x=l},block:()=>{history.go(-u)},nav_token:C,event:n})}else if(!B){const a=new URL(location.href);e(a),E.hash&&location.reload()}}}),addEventListener("hashchange",()=>{B&&(B=!1,history.replaceState({...history.state,[V]:++k,[G]:x},"",location.href))});for(const n of document.querySelectorAll("link"))Ft.has(n.rel)&&(n.href=n.href);addEventListener("pageshow",n=>{n.persisted&&$.navigating.set(W.current=null)});function e(n){_.url=S.url=n,$.page.set(Ne(S)),$.page.notify()}}async function sn(e,{status:t=200,error:n,node_ids:r,params:a,route:i,server_route:o,data:s,form:l}){rt=!0;const c=new URL(location.href);let h;({params:a={},route:i={id:null}}=await he(c,!1)||{}),h=$e.find(({id:f})=>f===i.id);let u,w=!0;try{const f=r.map(async(m,p)=>{const g=s[p];return g!=null&&g.uses&&(g.uses=ln(g.uses)),Pe({loader:E.nodes[m],url:c,params:a,route:i,parent:async()=>{const b={};for(let R=0;R<p;R+=1)Object.assign(b,(await f[R]).data);return b},server_data_node:Oe(g)})}),d=await Promise.all(f);if(h){const m=h.layouts;for(let p=0;p<m.length;p++)m[p]||d.splice(p,0,void 0)}u=le({url:c,params:a,branch:d,status:t,error:n,form:l,route:h??null})}catch(f){if(f instanceof Re){await Y(new URL(f.location,location.href));return}u=await Ce({status:Ue(f),error:await X(f,{url:c,params:a,route:i}),url:c,route:i}),e.textContent="",w=!1}u.props.page&&(u.props.page.state={}),await ft(u,e,w)}function ln(e){return{dependencies:new Set((e==null?void 0:e.dependencies)??[]),params:new Set((e==null?void 0:e.params)??[]),parent:!!(e!=null&&e.parent),route:!!(e!=null&&e.route),url:!!(e!=null&&e.url),search_params:new Set((e==null?void 0:e.search_params)??[])}}let Ee=!1;function cn(e,t=!0){const n=document.querySelector("[autofocus]");if(n)n.focus();else{const r=pt(e);if(r&&document.getElementById(r)){const{x:i,y:o}=j();setTimeout(()=>{const s=history.state;Ee=!0,location.replace(new URL(`#${r}`,location.href)),history.replaceState(s,"",e),t&&scrollTo(i,o),Ee=!1})}else{const i=document.body,o=i.getAttribute("tabindex");i.tabIndex=-1,i.focus({preventScroll:!0,focusVisible:!1}),o!==null?i.setAttribute("tabindex",o):i.removeAttribute("tabindex")}const a=getSelection();if(a&&a.type!=="None"){const i=[];for(let o=0;o<a.rangeCount;o+=1)i.push(a.getRangeAt(o));setTimeout(()=>{if(a.rangeCount===i.length){for(let o=0;o<a.rangeCount;o+=1){const s=i[o],l=a.getRangeAt(o);if(s.commonAncestorContainer!==l.commonAncestorContainer||s.startContainer!==l.startContainer||s.endContainer!==l.endContainer||s.startOffset!==l.startOffset||s.endOffset!==l.endOffset)return}a.removeAllRanges()}})}}}function je(e,t,n,r,a=null){var c,h;let i,o;const s=new Promise((u,w)=>{i=u,o=w});return s.catch(()=>{}),{navigation:{from:{params:e.params,route:{id:((c=e.route)==null?void 0:c.id)??null},url:e.url,scroll:j()},to:n&&{params:(t==null?void 0:t.params)??null,route:{id:((h=t==null?void 0:t.route)==null?void 0:h.id)??null},url:n,scroll:a},willUnload:!t,type:r,complete:s},fulfil:i,reject:o}}function Ne(e){return{data:e.data,error:e.error,form:e.form,params:e.params,route:e.route,state:e.state,status:e.status,url:e.url}}function fn(e){const t=new URL(e);return t.hash=decodeURIComponent(e.hash),t}function pt(e){let t;if(E.hash){const[,,n]=e.hash.split("#",3);t=n??""}else t=e.hash.slice(1);return decodeURIComponent(t)}export{wn as a,hn as d,vn as g,pn as l,$ as s,fe as w};
|
|
|
|
|
|
frontend/.svelte-kit/output/client/_app/immutable/entry/app.mfL3Z2b5.js
DELETED
|
@@ -1,2 +0,0 @@
|
|
| 1 |
-
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["../nodes/0.B4Km_xye.js","../chunks/DQebRFVS.js","../chunks/BX82rj4I.js","../assets/0.XtmqqaVM.css","../nodes/1.CgjumiZZ.js","../chunks/J0QSAnNz.js","../nodes/2.CwsLFqkm.js","../chunks/BxRIPBY0.js","../assets/2.BpyLQ8v8.css","../nodes/3.xYrSFp1n.js","../assets/3.CRf0cTrE.css"])))=>i.map(i=>d[i]);
|
| 2 |
-
import{s as q,d,i as E,k as B,A as h,m as U,C as F,r as G,D as W,E as y,p as j,F as p,f as z,h as H,l as J,G as D,b as K,j as Q,t as X}from"../chunks/DQebRFVS.js";import{S as Y,i as Z,t as g,a as w,g as S,c as A,d as P,b as R,m as O,e as C}from"../chunks/BX82rj4I.js";const M="modulepreload",$=function(o,e){return new URL(o,e).href},I={},L=function(e,n,r){let i=Promise.resolve();if(n&&n.length>0){const t=document.getElementsByTagName("link"),s=document.querySelector("meta[property=csp-nonce]"),a=(s==null?void 0:s.nonce)||(s==null?void 0:s.getAttribute("nonce"));i=Promise.allSettled(n.map(f=>{if(f=$(f,r),f in I)return;I[f]=!0;const l=f.endsWith(".css"),_=l?'[rel="stylesheet"]':"";if(!!r)for(let k=t.length-1;k>=0;k--){const v=t[k];if(v.href===f&&(!l||v.rel==="stylesheet"))return}else if(document.querySelector(`link[href="${f}"]${_}`))return;const m=document.createElement("link");if(m.rel=l?"stylesheet":M,l||(m.as="script"),m.crossOrigin="",m.href=f,a&&m.setAttribute("nonce",a),document.head.appendChild(m),l)return new Promise((k,v)=>{m.addEventListener("load",k),m.addEventListener("error",()=>v(new Error(`Unable to preload CSS for ${f}`)))})}))}function u(t){const s=new Event("vite:preloadError",{cancelable:!0});if(s.payload=t,window.dispatchEvent(s),!s.defaultPrevented)throw t}return i.then(t=>{for(const s of t||[])s.status==="rejected"&&u(s.reason);return e().catch(u)})},ae={};function x(o){let e,n,r;var i=o[2][0];function u(t,s){return{props:{data:t[4],form:t[3],params:t[1].params}}}return i&&(e=y(i,u(o)),o[12](e)),{c(){e&&R(e.$$.fragment),n=h()},l(t){e&&C(e.$$.fragment,t),n=h()},m(t,s){e&&O(e,t,s),E(t,n,s),r=!0},p(t,s){if(s&4&&i!==(i=t[2][0])){if(e){S();const a=e;g(a.$$.fragment,1,0,()=>{P(a,1)}),A()}i?(e=y(i,u(t)),t[12](e),R(e.$$.fragment),w(e.$$.fragment,1),O(e,n.parentNode,n)):e=null}else if(i){const a={};s&16&&(a.data=t[4]),s&8&&(a.form=t[3]),s&2&&(a.params=t[1].params),e.$set(a)}},i(t){r||(e&&w(e.$$.fragment,t),r=!0)},o(t){e&&g(e.$$.fragment,t),r=!1},d(t){t&&d(n),o[12](null),e&&P(e,t)}}}function ee(o){let e,n,r;var i=o[2][0];function u(t,s){return{props:{data:t[4],params:t[1].params,$$slots:{default:[te]},$$scope:{ctx:t}}}}return i&&(e=y(i,u(o)),o[11](e)),{c(){e&&R(e.$$.fragment),n=h()},l(t){e&&C(e.$$.fragment,t),n=h()},m(t,s){e&&O(e,t,s),E(t,n,s),r=!0},p(t,s){if(s&4&&i!==(i=t[2][0])){if(e){S();const a=e;g(a.$$.fragment,1,0,()=>{P(a,1)}),A()}i?(e=y(i,u(t)),t[11](e),R(e.$$.fragment),w(e.$$.fragment,1),O(e,n.parentNode,n)):e=null}else if(i){const a={};s&16&&(a.data=t[4]),s&2&&(a.params=t[1].params),s&8239&&(a.$$scope={dirty:s,ctx:t}),e.$set(a)}},i(t){r||(e&&w(e.$$.fragment,t),r=!0)},o(t){e&&g(e.$$.fragment,t),r=!1},d(t){t&&d(n),o[11](null),e&&P(e,t)}}}function te(o){let e,n,r;var i=o[2][1];function u(t,s){return{props:{data:t[5],form:t[3],params:t[1].params}}}return i&&(e=y(i,u(o)),o[10](e)),{c(){e&&R(e.$$.fragment),n=h()},l(t){e&&C(e.$$.fragment,t),n=h()},m(t,s){e&&O(e,t,s),E(t,n,s),r=!0},p(t,s){if(s&4&&i!==(i=t[2][1])){if(e){S();const a=e;g(a.$$.fragment,1,0,()=>{P(a,1)}),A()}i?(e=y(i,u(t)),t[10](e),R(e.$$.fragment),w(e.$$.fragment,1),O(e,n.parentNode,n)):e=null}else if(i){const a={};s&32&&(a.data=t[5]),s&8&&(a.form=t[3]),s&2&&(a.params=t[1].params),e.$set(a)}},i(t){r||(e&&w(e.$$.fragment,t),r=!0)},o(t){e&&g(e.$$.fragment,t),r=!1},d(t){t&&d(n),o[10](null),e&&P(e,t)}}}function T(o){let e,n=o[7]&&V(o);return{c(){e=J("div"),n&&n.c(),this.h()},l(r){e=z(r,"DIV",{id:!0,"aria-live":!0,"aria-atomic":!0,style:!0});var i=H(e);n&&n.l(i),i.forEach(d),this.h()},h(){j(e,"id","svelte-announcer"),j(e,"aria-live","assertive"),j(e,"aria-atomic","true"),p(e,"position","absolute"),p(e,"left","0"),p(e,"top","0"),p(e,"clip","rect(0 0 0 0)"),p(e,"clip-path","inset(50%)"),p(e,"overflow","hidden"),p(e,"white-space","nowrap"),p(e,"width","1px"),p(e,"height","1px")},m(r,i){E(r,e,i),n&&n.m(e,null)},p(r,i){r[7]?n?n.p(r,i):(n=V(r),n.c(),n.m(e,null)):n&&(n.d(1),n=null)},d(r){r&&d(e),n&&n.d()}}}function V(o){let e;return{c(){e=X(o[8])},l(n){e=Q(n,o[8])},m(n,r){E(n,e,r)},p(n,r){r&256&&K(e,n[8])},d(n){n&&d(e)}}}function ne(o){let e,n,r,i,u;const t=[ee,x],s=[];function a(l,_){return l[2][1]?0:1}e=a(o),n=s[e]=t[e](o);let f=o[6]&&T(o);return{c(){n.c(),r=U(),f&&f.c(),i=h()},l(l){n.l(l),r=B(l),f&&f.l(l),i=h()},m(l,_){s[e].m(l,_),E(l,r,_),f&&f.m(l,_),E(l,i,_),u=!0},p(l,[_]){let b=e;e=a(l),e===b?s[e].p(l,_):(S(),g(s[b],1,1,()=>{s[b]=null}),A(),n=s[e],n?n.p(l,_):(n=s[e]=t[e](l),n.c()),w(n,1),n.m(r.parentNode,r)),l[6]?f?f.p(l,_):(f=T(l),f.c(),f.m(i.parentNode,i)):f&&(f.d(1),f=null)},i(l){u||(w(n),u=!0)},o(l){g(n),u=!1},d(l){l&&(d(r),d(i)),s[e].d(l),f&&f.d(l)}}}function se(o,e,n){let{stores:r}=e,{page:i}=e,{constructors:u}=e,{components:t=[]}=e,{form:s}=e,{data_0:a=null}=e,{data_1:f=null}=e;F(r.page.notify);let l=!1,_=!1,b=null;G(()=>{const c=r.page.subscribe(()=>{l&&(n(7,_=!0),W().then(()=>{n(8,b=document.title||"untitled page")}))});return n(6,l=!0),c});function m(c){D[c?"unshift":"push"](()=>{t[1]=c,n(0,t)})}function k(c){D[c?"unshift":"push"](()=>{t[0]=c,n(0,t)})}function v(c){D[c?"unshift":"push"](()=>{t[0]=c,n(0,t)})}return o.$$set=c=>{"stores"in c&&n(9,r=c.stores),"page"in c&&n(1,i=c.page),"constructors"in c&&n(2,u=c.constructors),"components"in c&&n(0,t=c.components),"form"in c&&n(3,s=c.form),"data_0"in c&&n(4,a=c.data_0),"data_1"in c&&n(5,f=c.data_1)},o.$$.update=()=>{o.$$.dirty&514&&r.page.set(i)},[t,i,u,s,a,f,l,_,b,r,m,k,v]}class le extends Y{constructor(e){super(),Z(this,e,se,ne,q,{stores:9,page:1,constructors:2,components:0,form:3,data_0:4,data_1:5})}}const fe=[()=>L(()=>import("../nodes/0.B4Km_xye.js"),__vite__mapDeps([0,1,2,3]),import.meta.url),()=>L(()=>import("../nodes/1.CgjumiZZ.js"),__vite__mapDeps([4,1,2,5]),import.meta.url),()=>L(()=>import("../nodes/2.CwsLFqkm.js"),__vite__mapDeps([6,1,7,5,2,8]),import.meta.url),()=>L(()=>import("../nodes/3.xYrSFp1n.js"),__vite__mapDeps([9,1,2,5,7,10]),import.meta.url)],ce=[],ue={"/":[2],"/game":[3]},N={handleError:({error:o})=>{console.error(o)},reroute:()=>{},transport:{}},re=Object.fromEntries(Object.entries(N.transport).map(([o,e])=>[o,e.decode])),_e=Object.fromEntries(Object.entries(N.transport).map(([o,e])=>[o,e.encode])),me=!1,pe=(o,e)=>re[o](e);export{pe as decode,re as decoders,ue as dictionary,_e as encoders,me as hash,N as hooks,ae as matchers,fe as nodes,le as root,ce as server_loads};
|
|
|
|
|
|
|
|
|
frontend/.svelte-kit/output/client/_app/immutable/entry/start.BPj5i5_S.js
DELETED
|
@@ -1 +0,0 @@
|
|
| 1 |
-
import{l as o,a as r}from"../chunks/J0QSAnNz.js";export{o as load_css,r as start};
|
|
|
|
|
|
frontend/.svelte-kit/output/client/_app/immutable/nodes/0.B4Km_xye.js
DELETED
|
@@ -1 +0,0 @@
|
|
| 1 |
-
import{s as l,c as i,u as r,g as u,a as f}from"../chunks/DQebRFVS.js";import{S as _,i as c,t as p,a as m}from"../chunks/BX82rj4I.js";function $(a){let s;const n=a[1].default,e=i(n,a,a[0],null);return{c(){e&&e.c()},l(t){e&&e.l(t)},m(t,o){e&&e.m(t,o),s=!0},p(t,[o]){e&&e.p&&(!s||o&1)&&r(e,n,t,t[0],s?f(n,t[0],o,null):u(t[0]),null)},i(t){s||(m(e,t),s=!0)},o(t){p(e,t),s=!1},d(t){e&&e.d(t)}}}function d(a,s,n){let{$$slots:e={},$$scope:t}=s;return a.$$set=o=>{"$$scope"in o&&n(0,t=o.$$scope)},[t,e]}class S extends _{constructor(s){super(),c(this,s,d,$,l,{})}}export{S as component};
|
|
|
|
|
|
frontend/.svelte-kit/output/client/_app/immutable/nodes/1.CgjumiZZ.js
DELETED
|
@@ -1 +0,0 @@
|
|
| 1 |
-
import{s as S,n as _,d as l,b as f,i as m,e as d,f as g,h,j as v,k as x,l as $,t as E,m as j,o as k}from"../chunks/DQebRFVS.js";import{S as q,i as y}from"../chunks/BX82rj4I.js";import{s as C}from"../chunks/J0QSAnNz.js";const H=()=>{const s=C;return{page:{subscribe:s.page.subscribe},navigating:{subscribe:s.navigating.subscribe},updated:s.updated}},P={subscribe(s){return H().page.subscribe(s)}};function w(s){var b;let t,r=s[0].status+"",o,n,i,c=((b=s[0].error)==null?void 0:b.message)+"",u;return{c(){t=$("h1"),o=E(r),n=j(),i=$("p"),u=E(c)},l(e){t=g(e,"H1",{});var a=h(t);o=v(a,r),a.forEach(l),n=x(e),i=g(e,"P",{});var p=h(i);u=v(p,c),p.forEach(l)},m(e,a){m(e,t,a),d(t,o),m(e,n,a),m(e,i,a),d(i,u)},p(e,[a]){var p;a&1&&r!==(r=e[0].status+"")&&f(o,r),a&1&&c!==(c=((p=e[0].error)==null?void 0:p.message)+"")&&f(u,c)},i:_,o:_,d(e){e&&(l(t),l(n),l(i))}}}function z(s,t,r){let o;return k(s,P,n=>r(0,o=n)),[o]}let F=class extends q{constructor(t){super(),y(this,t,z,w,S,{})}};export{F as component};
|
|
|
|
|
|
frontend/.svelte-kit/output/client/_app/immutable/nodes/2.CwsLFqkm.js
DELETED
|
@@ -1,4 +0,0 @@
|
|
| 1 |
-
import{s as fe,n as x,d as g,i as S,e as v,p as _,f as j,h as q,q as H,k as L,l as y,m as P,o as pe,r as _e,v as he,b as G,j as Q,t as W,w as ue,x as X,y as B,z as me,A as se,B as z}from"../chunks/DQebRFVS.js";import{g as ve,r as Y,a as K,b as ge,m as be,w as je,p as F,e as le}from"../chunks/BxRIPBY0.js";import{S as ye,i as ke}from"../chunks/BX82rj4I.js";import{g as Ce}from"../chunks/J0QSAnNz.js";const Te=!1,Ee=!1,Be=Object.freeze(Object.defineProperty({__proto__:null,prerender:Ee,ssr:Te},Symbol.toStringTag,{value:"Module"}));function ne(l,e,t){const s=l.slice();return s[23]=e[t],s}function Ne(l){const e=l.slice(),t=e[0];return e[22]=t,e}function ie(l){let e,t;return{c(){e=y("div"),t=W(l[5]),this.h()},l(s){e=j(s,"DIV",{class:!0});var r=q(e);t=Q(r,l[5]),r.forEach(g),this.h()},h(){_(e,"class","error-toast svelte-cigodj")},m(s,r){S(s,e,r),v(e,t)},p(s,r){r&32&&G(t,s[5])},d(s){s&&g(e)}}}function ae(l){var Z,$,ee;let e,t,s,r="Code de la room",u,n,a=((Z=l[22])==null?void 0:Z.room_id)+"",d,f,o,i="Copier",c,C,N,A,O,U,D;function E(){return l[18](l[22])}let T=le((($=l[22])==null?void 0:$.players)??[]),h=[];for(let m=0;m<T.length;m+=1)h[m]=re(ne(l,T,m));let k=(((ee=l[22])==null?void 0:ee.players.length)??0)<2&&ce();function J(m,M){var w;if(m[7])return Me;if((w=m[1])!=null&&w.ready)return Ie}let p=J(l),b=p&&p(l);return{c(){e=y("section"),t=y("div"),s=y("span"),s.textContent=r,u=P(),n=y("span"),d=W(a),f=P(),o=y("button"),o.textContent=i,c=P(),C=y("section");for(let m=0;m<h.length;m+=1)h[m].c();N=P(),k&&k.c(),A=P(),b&&b.c(),O=se(),this.h()},l(m){e=j(m,"SECTION",{class:!0});var M=q(e);t=j(M,"DIV",{class:!0});var w=q(t);s=j(w,"SPAN",{class:!0,"data-svelte-h":!0}),H(s)!=="svelte-igtjir"&&(s.textContent=r),u=L(w),n=j(w,"SPAN",{class:!0});var R=q(n);d=Q(R,a),R.forEach(g),f=L(w),o=j(w,"BUTTON",{class:!0,"data-svelte-h":!0}),H(o)!=="svelte-vjii7a"&&(o.textContent=i),w.forEach(g),M.forEach(g),c=L(m),C=j(m,"SECTION",{class:!0});var V=q(C);for(let I=0;I<h.length;I+=1)h[I].l(V);N=L(V),k&&k.l(V),V.forEach(g),A=L(m),b&&b.l(m),O=se(),this.h()},h(){_(s,"class","room-code-label svelte-cigodj"),_(n,"class","room-code svelte-cigodj"),_(o,"class","copy-btn svelte-cigodj"),_(t,"class","room-code-block svelte-cigodj"),_(e,"class","card svelte-cigodj"),_(C,"class","players-list svelte-cigodj")},m(m,M){S(m,e,M),v(e,t),v(t,s),v(t,u),v(t,n),v(n,d),v(t,f),v(t,o),S(m,c,M),S(m,C,M);for(let w=0;w<h.length;w+=1)h[w]&&h[w].m(C,null);v(C,N),k&&k.m(C,null),S(m,A,M),b&&b.m(m,M),S(m,O,M),U||(D=B(o,"click",E),U=!0)},p(m,M){var w,R,V;if(l=m,M&1&&a!==(a=((w=l[22])==null?void 0:w.room_id)+"")&&G(d,a),M&257){T=le(((R=l[22])==null?void 0:R.players)??[]);let I;for(I=0;I<T.length;I+=1){const te=ne(l,T,I);h[I]?h[I].p(te,M):(h[I]=re(te),h[I].c(),h[I].m(C,N))}for(;I<h.length;I+=1)h[I].d(1);h.length=T.length}(((V=l[22])==null?void 0:V.players.length)??0)<2?k||(k=ce(),k.c(),k.m(C,null)):k&&(k.d(1),k=null),p===(p=J(l))&&b?b.p(l,M):(b&&b.d(1),b=p&&p(l),b&&(b.c(),b.m(O.parentNode,O)))},d(m){m&&(g(e),g(c),g(C),g(A),g(O)),me(h,m),k&&k.d(),b&&b.d(m),U=!1,D()}}}function we(l){let e,t='<div class="spinner svelte-cigodj"></div> <p class="status-text svelte-cigodj">Recherche d'un adversaire…</p> <p class="status-muted svelte-cigodj">Le jeu démarre dès qu'un autre joueur rejoint</p>';return{c(){e=y("section"),e.innerHTML=t,this.h()},l(s){e=j(s,"SECTION",{class:!0,"data-svelte-h":!0}),H(e)!=="svelte-13tu3ku"&&(e.innerHTML=t),this.h()},h(){_(e,"class","card center svelte-cigodj")},m(s,r){S(s,e,r)},p:x,d(s){s&&g(e)}}}function Se(l){let e,t,s="Ton nom",r,u,n,a,d,f=`<span class="btn-icon svelte-cigodj">⚔️</span>
|
| 2 |
-
Partie rapide`,o,i,c=`<span class="btn-icon svelte-cigodj">🏠</span>
|
| 3 |
-
Créer une room privée`,C,N,A=`<span class="btn-icon svelte-cigodj">🔗</span>
|
| 4 |
-
Rejoindre avec un code`,O,U,D,E=l[6]&&de(l);return{c(){e=y("section"),t=y("label"),t.textContent=s,r=P(),u=y("input"),n=P(),a=y("section"),d=y("button"),d.innerHTML=f,o=P(),i=y("button"),i.innerHTML=c,C=P(),N=y("button"),N.innerHTML=A,O=P(),E&&E.c(),this.h()},l(T){e=j(T,"SECTION",{class:!0});var h=q(e);t=j(h,"LABEL",{class:!0,for:!0,"data-svelte-h":!0}),H(t)!=="svelte-1bn4wxd"&&(t.textContent=s),r=L(h),u=j(h,"INPUT",{id:!0,class:!0,placeholder:!0,maxlength:!0}),h.forEach(g),n=L(T),a=j(T,"SECTION",{class:!0});var k=q(a);d=j(k,"BUTTON",{class:!0,"data-svelte-h":!0}),H(d)!=="svelte-vmjj4t"&&(d.innerHTML=f),o=L(k),i=j(k,"BUTTON",{class:!0,"data-svelte-h":!0}),H(i)!=="svelte-1yhx17u"&&(i.innerHTML=c),C=L(k),N=j(k,"BUTTON",{class:!0,"data-svelte-h":!0}),H(N)!=="svelte-roe2vr"&&(N.innerHTML=A),O=L(k),E&&E.l(k),k.forEach(g),this.h()},h(){_(t,"class","field-label svelte-cigodj"),_(t,"for","name-input"),_(u,"id","name-input"),_(u,"class","text-input svelte-cigodj"),_(u,"placeholder","Commandant…"),_(u,"maxlength","20"),_(e,"class","card svelte-cigodj"),_(d,"class","btn btn-primary svelte-cigodj"),_(i,"class","btn btn-secondary svelte-cigodj"),_(N,"class","btn btn-ghost svelte-cigodj"),_(a,"class","actions svelte-cigodj")},m(T,h){S(T,e,h),v(e,t),v(e,r),v(e,u),X(u,l[2]),S(T,n,h),S(T,a,h),v(a,d),v(a,o),v(a,i),v(a,C),v(a,N),v(a,O),E&&E.m(a,null),U||(D=[B(u,"input",l[13]),B(u,"keydown",l[14]),B(d,"click",l[11]),B(i,"click",l[9]),B(N,"click",l[15])],U=!0)},p(T,h){h&4&&u.value!==T[2]&&X(u,T[2]),T[6]?E?E.p(T,h):(E=de(T),E.c(),E.m(a,null)):E&&(E.d(1),E=null)},d(T){T&&(g(e),g(n),g(a)),E&&E.d(),U=!1,ue(D)}}}function oe(l){let e,t="Toi";return{c(){e=y("span"),e.textContent=t,this.h()},l(s){e=j(s,"SPAN",{class:!0,"data-svelte-h":!0}),H(e)!=="svelte-1w50377"&&(e.textContent=t),this.h()},h(){_(e,"class","badge badge-you svelte-cigodj")},m(s,r){S(s,e,r)},d(s){s&&g(e)}}}function re(l){let e,t,s=l[23].name+"",r,u,n,a,d=l[23].ready?"✓ Prêt":"En attente",f,o=l[23].sid===l[8].id&&oe();return{c(){e=y("div"),t=y("span"),r=W(s),u=P(),o&&o.c(),n=P(),a=y("span"),f=W(d),this.h()},l(i){e=j(i,"DIV",{class:!0});var c=q(e);t=j(c,"SPAN",{class:!0});var C=q(t);r=Q(C,s),C.forEach(g),u=L(c),o&&o.l(c),n=L(c),a=j(c,"SPAN",{class:!0});var N=q(a);f=Q(N,d),N.forEach(g),c.forEach(g),this.h()},h(){_(t,"class","player-name svelte-cigodj"),_(a,"class","badge svelte-cigodj"),z(a,"badge-ready",l[23].ready),z(a,"badge-waiting",!l[23].ready),_(e,"class","player-row svelte-cigodj"),z(e,"is-you",l[23].sid===l[8].id)},m(i,c){S(i,e,c),v(e,t),v(t,r),v(e,u),o&&o.m(e,null),v(e,n),v(e,a),v(a,f)},p(i,c){c&1&&s!==(s=i[23].name+"")&&G(r,s),i[23].sid===i[8].id?o||(o=oe(),o.c(),o.m(e,n)):o&&(o.d(1),o=null),c&1&&d!==(d=i[23].ready?"✓ Prêt":"En attente")&&G(f,d),c&1&&z(a,"badge-ready",i[23].ready),c&1&&z(a,"badge-waiting",!i[23].ready),c&257&&z(e,"is-you",i[23].sid===i[8].id)},d(i){i&&g(e),o&&o.d()}}}function ce(l){let e,t='<span class="text-muted">En attente d'un adversaire…</span> <div class="dot-pulse svelte-cigodj"><span class="svelte-cigodj"></span><span class="svelte-cigodj"></span><span class="svelte-cigodj"></span></div>';return{c(){e=y("div"),e.innerHTML=t,this.h()},l(s){e=j(s,"DIV",{class:!0,"data-svelte-h":!0}),H(e)!=="svelte-okzxxd"&&(e.innerHTML=t),this.h()},h(){_(e,"class","player-row player-placeholder svelte-cigodj")},m(s,r){S(s,e,r)},d(s){s&&g(e)}}}function Ie(l){let e,t="En attente que l'adversaire soit prêt…";return{c(){e=y("p"),e.textContent=t,this.h()},l(s){e=j(s,"P",{class:!0,"data-svelte-h":!0}),H(e)!=="svelte-bcni62"&&(e.textContent=t),this.h()},h(){_(e,"class","status-text svelte-cigodj")},m(s,r){S(s,e,r)},p:x,d(s){s&&g(e)}}}function Me(l){let e,t="✓ Prêt !",s,r;return{c(){e=y("button"),e.textContent=t,this.h()},l(u){e=j(u,"BUTTON",{class:!0,"data-svelte-h":!0}),H(e)!=="svelte-1kv5ql1"&&(e.textContent=t),this.h()},h(){_(e,"class","btn btn-primary btn-large svelte-cigodj")},m(u,n){S(u,e,n),s||(r=B(e,"click",l[12]),s=!0)},p:x,d(u){u&&g(e),s=!1,r()}}}function de(l){let e,t,s,r,u="OK",n,a;return{c(){e=y("div"),t=y("input"),s=P(),r=y("button"),r.textContent=u,this.h()},l(d){e=j(d,"DIV",{class:!0});var f=q(e);t=j(f,"INPUT",{class:!0,placeholder:!0,maxlength:!0}),s=L(f),r=j(f,"BUTTON",{class:!0,"data-svelte-h":!0}),H(r)!=="svelte-advd9m"&&(r.textContent=u),f.forEach(g),this.h()},h(){_(t,"class","text-input code-input svelte-cigodj"),_(t,"placeholder","ABC123"),_(t,"maxlength","6"),_(r,"class","btn btn-primary btn-sm svelte-cigodj"),_(e,"class","join-row svelte-cigodj")},m(d,f){S(d,e,f),v(e,t),X(t,l[3]),v(e,s),v(e,r),n||(a=[B(t,"input",l[16]),B(t,"keydown",l[17]),B(r,"click",l[10])],n=!0)},p(d,f){f&8&&t.value!==d[3]&&X(t,d[3])},d(d){d&&g(e),n=!1,ue(a)}}}function Le(l){let e,t,s='<div class="logo svelte-cigodj"><span class="logo-icon svelte-cigodj">⚡</span> <span class="logo-text svelte-cigodj">VoiceStrike</span></div> <p class="tagline svelte-cigodj">Stratégie en temps réel — commandé à la voix</p>',r,u,n=l[5]&&ie(l);function a(i,c){if(i[4]==="home")return Se;if(i[4]==="queue")return we;if(i[4]==="waiting")return ae}function d(i,c){return c===ae?Ne(i):i}let f=a(l),o=f&&f(d(l,f));return{c(){e=y("main"),t=y("header"),t.innerHTML=s,r=P(),n&&n.c(),u=P(),o&&o.c(),this.h()},l(i){e=j(i,"MAIN",{class:!0});var c=q(e);t=j(c,"HEADER",{class:!0,"data-svelte-h":!0}),H(t)!=="svelte-igadcu"&&(t.innerHTML=s),r=L(c),n&&n.l(c),u=L(c),o&&o.l(c),c.forEach(g),this.h()},h(){_(t,"class","lobby-header svelte-cigodj"),_(e,"class","lobby svelte-cigodj")},m(i,c){S(i,e,c),v(e,t),v(e,r),n&&n.m(e,null),v(e,u),o&&o.m(e,null)},p(i,[c]){i[5]?n?n.p(i,c):(n=ie(i),n.c(),n.m(e,u)):n&&(n.d(1),n=null),f===(f=a(i))&&o?o.p(d(i,f),c):(o&&o.d(1),o=f&&f(d(i,f)),o&&(o.c(),o.m(e,null)))},i:x,o:x,d(i){i&&g(e),n&&n.d(),o&&o.d()}}}function Pe(l,e,t){let s,r,u;pe(l,F,p=>t(20,u=p));let n=ve(),a=u||"",d="",f="home",o="",i=null,c=!1;function C(p){t(5,o=p),setTimeout(()=>t(5,o=""),3e3)}_e(()=>{n.on("room_created",({room_id:p,room:b})=>{Y.set(p),K.set(b),t(0,i=b),t(4,f="waiting")}),n.on("room_joined",({room_id:p,room:b})=>{Y.set(p),K.set(b),t(0,i=b),t(4,f="waiting")}),n.on("room_update",({room:p})=>{K.set(p),t(0,i=p)}),n.on("match_found",({room_id:p,room:b})=>{Y.set(p),K.set(b),t(0,i=b),t(4,f="waiting")}),n.on("match_queued",()=>{t(4,f="queue")}),n.on("game_start",({game_state:p,your_id:b})=>{ge.set(p),be.set(b),je.set(null),Ce("/game")}),n.on("error",({message:p})=>C(p))}),he(()=>{n.off("room_created"),n.off("room_joined"),n.off("room_update"),n.off("match_found"),n.off("match_queued"),n.off("game_start"),n.off("error")});function N(){if(!a.trim()){C("Entre ton nom");return}F.set(a.trim()),n.emit("create_room",{name:a.trim()})}function A(){if(!a.trim()){C("Entre ton nom");return}if(!d.trim()){C("Entre le code de la room");return}F.set(a.trim()),n.emit("join_room",{room_id:d.trim().toUpperCase(),name:a.trim()})}function O(){if(!a.trim()){C("Entre ton nom");return}F.set(a.trim()),n.emit("quick_match",{name:a.trim()})}function U(){n.emit("player_ready",{})}function D(){a=this.value,t(2,a)}const E=p=>p.key==="Enter"&&O(),T=()=>t(6,c=!c);function h(){d=this.value,t(3,d)}const k=p=>p.key==="Enter"&&A(),J=p=>navigator.clipboard.writeText((p==null?void 0:p.room_id)??"");return l.$$.update=()=>{l.$$.dirty&1&&t(1,s=i==null?void 0:i.players.find(p=>p.sid===n.id)),l.$$.dirty&1&&(i==null||i.players.find(p=>p.sid!==n.id)),l.$$.dirty&3&&t(7,r=(i==null?void 0:i.players.length)===2&&!(s!=null&&s.ready))},[i,s,a,d,f,o,c,r,n,N,A,O,U,D,E,T,h,k,J]}class Ue extends ye{constructor(e){super(),ke(this,e,Pe,Le,fe,{})}}export{Ue as component,Be as universal};
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|