From 7079401256cf3f29a206464b39627f9a1d6ec0c5 Mon Sep 17 00:00:00 2001 From: xangelo Date: Tue, 8 Aug 2023 10:46:40 -0400 Subject: [PATCH 1/6] fix: auto-load player object and place in request --- src/server/api.ts | 345 ++++++++------------------- src/server/auth.ts | 18 +- src/server/locations/healer/index.ts | 42 ++-- src/server/views/fight.ts | 3 +- 4 files changed, 123 insertions(+), 285 deletions(-) diff --git a/src/server/api.ts b/src/server/api.ts index bd86f97..b7e0033 100644 --- a/src/server/api.ts +++ b/src/server/api.ts @@ -21,7 +21,7 @@ import {getShopEquipment, getShopItem, listShopItems } from './shopEquipment'; import {EquippedItemDetails} from '../shared/equipped'; import {ArmourEquipmentSlot, EquipmentSlot} from '../shared/inventory'; import { clearTravelPlan, completeTravel, getAllPaths, getAllServices, getCityDetails, getService, getTravelPlan, stepForward, travel } from './map'; -import { signup, login, authEndpoint } from './auth'; +import { signup, login, authEndpoint, AuthRequest } from './auth'; import {db} from './lib/db'; import { getPlayerSkills, getPlayerSkillsAsObject, updatePlayerSkills } from './skills'; import {SkillID, Skills} from '../shared/skills'; @@ -380,29 +380,13 @@ async function fightRound(player: Player, monster: MonsterWithFaction, data: {a app.use(healerRouter); -app.get('/chat/history', authEndpoint, async (req: Request, res: Response) => { - const authToken = req.headers['x-authtoken'].toString(); - const player: Player = await loadPlayer(authToken) - - if(!player) { - logger.log(`Couldnt find player with id ${authToken}`); - return res.sendStatus(400); - } - +app.get('/chat/history', authEndpoint, async (req: AuthRequest, res: Response) => { let html = chatHistory.map(renderChatMessage); res.send(html.join("\n")); }); -app.post('/chat', authEndpoint, async (req: Request, res: Response) => { - const authToken = req.headers['x-authtoken'].toString(); - const player: Player = await loadPlayer(authToken) - - if(!player) { - logger.log(`Couldnt find player with id ${authToken}`); - return res.sendStatus(400); - } - +app.post('/chat', authEndpoint, async (req: AuthRequest, res: Response) => { const msg = req.body.message.trim(); if(!msg || !msg.length) { @@ -434,7 +418,7 @@ app.post('/chat', authEndpoint, async (req: Request, res: Response) => { } else { - message = broadcastMessage(player.username, msg); + message = broadcastMessage(req.player.username, msg); chatHistory.push(message); chatHistory.slice(-10); @@ -448,62 +432,30 @@ app.post('/chat', authEndpoint, async (req: Request, res: Response) => { }); -app.get('/player', authEndpoint, async (req: Request, res: Response) => { - const authToken = req.headers['x-authtoken'].toString(); - const player: Player = await loadPlayer(authToken) - - if(!player) { - logger.log(`Couldnt find player with id ${authToken}`); - return res.sendStatus(400); - } +app.get('/player', authEndpoint, async (req: AuthRequest, res: Response) => { + const inventory = await getEquippedItems(req.player.id); - const inventory = await getEquippedItems(player.id); - - res.send(renderPlayerBar(player, inventory) + (await renderProfilePage(player))); + res.send(renderPlayerBar(req.player, inventory) + (await renderProfilePage(req.player))); }); -app.get('/player/skills', authEndpoint, async (req: Request, res: Response) => { - const authToken = req.headers['x-authtoken'].toString(); - const player: Player = await loadPlayer(authToken) - - if(!player) { - logger.log(`Couldnt find player with id ${authToken}`); - return res.sendStatus(400); - } - - const skills = await getPlayerSkills(player.id); +app.get('/player/skills', authEndpoint, async (req: AuthRequest, res: Response) => { + const skills = await getPlayerSkills(req.player.id); res.send(renderSkills(skills)); }); -app.get('/player/inventory', authEndpoint, async (req: Request, res: Response) => { - const authToken = req.headers['x-authtoken'].toString(); - const player: Player = await loadPlayer(authToken) - - if(!player) { - logger.log(`Couldnt find player with id ${authToken}`); - return res.sendStatus(400); - } - +app.get('/player/inventory', authEndpoint, async (req: AuthRequest, res: Response) => { const [inventory, items] = await Promise.all([ - getInventory(player.id), - getPlayersItems(player.id) + getInventory(req.player.id), + getPlayersItems(req.player.id) ]); res.send(renderInventoryPage(inventory, items)); }); -app.post('/player/equip/:item_id/:slot', authEndpoint, async (req: Request, res: Response) => { - const authToken = req.headers['x-authtoken'].toString(); - const player: Player = await loadPlayer(authToken) - - if(!player) { - logger.log(`Couldnt find player with id ${authToken}`); - return res.sendStatus(400); - } - - const inventoryItem = await getInventoryItem(player.id, req.params.item_id); - const equippedItems = await getEquippedItems(player.id); +app.post('/player/equip/:item_id/:slot', authEndpoint, async (req: AuthRequest, res: Response) => { + const inventoryItem = await getInventoryItem(req.player.id, req.params.item_id); + const equippedItems = await getEquippedItems(req.player.id); const requestedSlot = req.params.slot; let desiredSlot: EquipmentSlot = inventoryItem.equipment_slot; @@ -533,9 +485,9 @@ app.post('/player/equip/:item_id/:slot', authEndpoint, async (req: Request, res: } - await equip(player.id, inventoryItem, desiredSlot); - const socketId = cache.get(`socket:${player.id}`).toString(); - io.to(socketId).emit('updatePlayer', player); + await equip(req.player.id, inventoryItem, desiredSlot); + const socketId = cache.get(`socket:${req.player.id}`).toString(); + io.to(socketId).emit('updatePlayer', req.player); io.to(socketId).emit('alert', { type: 'success', text: `You equipped your ${inventoryItem.name}` @@ -546,47 +498,30 @@ app.post('/player/equip/:item_id/:slot', authEndpoint, async (req: Request, res: } const [inventory, items] = await Promise.all([ - getInventory(player.id), - getPlayersItems(player.id) + getInventory(req.player.id), + getPlayersItems(req.player.id) ]); - res.send(renderInventoryPage(inventory, items, inventoryItem.type) + renderPlayerBar(player, inventory)); + res.send(renderInventoryPage(inventory, items, inventoryItem.type) + renderPlayerBar(req.player, inventory)); }); -app.post('/player/unequip/:item_id', authEndpoint, async (req: Request, res: Response) => { - const authToken = req.headers['x-authtoken'].toString(); - const player: Player = await loadPlayer(authToken) - - if(!player) { - logger.log(`Couldnt find player with id ${authToken}`); - return res.sendStatus(400); - } - +app.post('/player/unequip/:item_id', authEndpoint, async (req: AuthRequest, res: Response) => { const [item, ] = await Promise.all([ - getInventoryItem(player.id, req.params.item_id), - unequip(player.id, req.params.item_id) + getInventoryItem(req.player.id, req.params.item_id), + unequip(req.player.id, req.params.item_id) ]); const [inventory, items] = await Promise.all([ - getInventory(player.id), - getPlayersItems(player.id) + getInventory(req.player.id), + getPlayersItems(req.player.id) ]); - res.send(renderInventoryPage(inventory, items, item.type) + renderPlayerBar(player, inventory)); + res.send(renderInventoryPage(inventory, items, item.type) + renderPlayerBar(req.player, inventory)); }); -app.get('/player/explore', authEndpoint, async (req: Request, res: Response) => { - const authToken = req.headers['x-authtoken'].toString(); - const player: Player = await loadPlayer(authToken) - - if(!player) { - logger.log(`Couldnt find player with id ${authToken}`); - return res.sendStatus(400); - } - - - const fight = await loadMonsterFromFight(player.id); - let closestTown = player.city_id; +app.get('/player/explore', authEndpoint, async (req: AuthRequest, res: Response) => { + const fight = await loadMonsterFromFight(req.player.id); + let closestTown = req.player.city_id; if(fight) { // ok lets display the fight screen! @@ -602,10 +537,10 @@ app.get('/player/explore', authEndpoint, async (req: Request, res: Response) => res.send(renderFight(data)); } else { - const travelPlan = await getTravelPlan(player.id); + const travelPlan = await getTravelPlan(req.player.id); if(travelPlan) { // traveling! - const travelPlan = await getTravelPlan(player.id); + const travelPlan = await getTravelPlan(req.player.id); const closest: number = (travelPlan.current_position / travelPlan.total_distance) > 0.5 ? travelPlan.destination_id : travelPlan.source_id; @@ -617,7 +552,7 @@ app.get('/player/explore', authEndpoint, async (req: Request, res: Response) => } // STEP_DELAY - const nextAction = cache[`step:${player.id}`] || 0; + const nextAction = cache[`step:${req.player.id}`] || 0; res.send(renderTravel({ things, @@ -629,9 +564,9 @@ app.get('/player/explore', authEndpoint, async (req: Request, res: Response) => else { // display the city info! const [city, locations, paths] = await Promise.all([ - getCityDetails(player.city_id), - getAllServices(player.city_id), - getAllPaths(player.city_id) + getCityDetails(req.player.city_id), + getAllServices(req.player.city_id), + getAllPaths(req.player.city_id) ]); res.send(await renderMap({city, locations, paths}, closestTown)); @@ -641,14 +576,7 @@ app.get('/player/explore', authEndpoint, async (req: Request, res: Response) => }); // used to purchase equipment from a particular shop -app.put('/location/:location_id/equipment/:item_id', authEndpoint, async (req: Request, res: Response) => { - const authToken = req.headers['x-authtoken'].toString(); - const player: Player = await loadPlayer(authToken) - if(!player) { - logger.log(`Couldnt find player with id ${authToken}`); - return res.sendStatus(400); - } - +app.put('/location/:location_id/equipment/:item_id', authEndpoint, async (req: AuthRequest, res: Response) => { const item = await getShopEquipment(parseInt(req.params.item_id), parseInt(req.params.location_id)); if(!item) { @@ -656,30 +584,23 @@ app.put('/location/:location_id/equipment/:item_id', authEndpoint, async (req: R return res.sendStatus(400); } - if(player.gold < item.cost) { + if(req.player.gold < item.cost) { res.send(Alert.ErrorAlert(`Sorry, you need at least ${item.cost.toLocaleString()}G to purchase this.`)); return; } - player.gold -= item.cost; + req.player.gold -= item.cost; - await updatePlayer(player); - await addInventoryItem(player.id, item); + await updatePlayer(req.player); + await addInventoryItem(req.player.id, item); - const equippedItems = await getEquippedItems(player.id); + const equippedItems = await getEquippedItems(req.player.id); - res.send(renderPlayerBar(player, equippedItems) + Alert.SuccessAlert(`You purchased ${item.name}`)); + res.send(renderPlayerBar(req.player, equippedItems) + Alert.SuccessAlert(`You purchased ${item.name}`)); }); // used to purchase items from a particular shop -app.put('/location/:location_id/items/:item_id', authEndpoint, async (req: Request, res: Response) => { - const authToken = req.headers['x-authtoken'].toString(); - const player: Player = await loadPlayer(authToken) - if(!player) { - logger.log(`Couldnt find player with id ${authToken}`); - return res.sendStatus(400); - } - +app.put('/location/:location_id/items/:item_id', authEndpoint, async (req: AuthRequest, res: Response) => { const item: (ShopItem & Item) = await getItemFromShop(parseInt(req.params.item_id), parseInt(req.params.location_id)); if(!item) { @@ -687,32 +608,25 @@ app.put('/location/:location_id/items/:item_id', authEndpoint, async (req: Reque return res.sendStatus(400); } - if(player.gold < item.price_per_unit) { + if(req.player.gold < item.price_per_unit) { res.send(Alert.ErrorAlert(`Sorry, you need at least ${item.price_per_unit.toLocaleString()}G to purchase this.`)); return; } - player.gold -= item.price_per_unit; + req.player.gold -= item.price_per_unit; - await updatePlayer(player); - await givePlayerItem(player.id, item.id, 1); + await updatePlayer(req.player); + await givePlayerItem(req.player.id, item.id, 1); - const equippedItems = await getEquippedItems(player.id); + const equippedItems = await getEquippedItems(req.player.id); - res.send(renderPlayerBar(player, equippedItems) + Alert.SuccessAlert(`You purchased a ${item.name}`)); + res.send(renderPlayerBar(req.player, equippedItems) + Alert.SuccessAlert(`You purchased a ${item.name}`)); }); // used to display equipment modals in a store, validates that // the equipment is actually in this store before displaying // the modal -app.get('/location/:location_id/equipment/:item_id/overview', authEndpoint, async (req: Request, res: Response) => { - const authToken = req.headers['x-authtoken'].toString(); - const player: Player = await loadPlayer(authToken) - if(!player) { - logger.log(`Couldnt find player with id ${authToken}`); - return res.sendStatus(400); - } - +app.get('/location/:location_id/equipment/:item_id/overview', authEndpoint, async (req: AuthRequest, res: Response) => { const equipment = await getShopEquipment(parseInt(req.params.item_id), parseInt(req.params.location_id)); if(!equipment) { @@ -727,7 +641,7 @@ app.get('/location/:location_id/equipment/:item_id/overview', authEndpoint, asyn ${equipment.name}
- ${renderEquipmentDetails(equipment, player)} + ${renderEquipmentDetails(equipment, req.player)}
@@ -743,14 +657,7 @@ app.get('/location/:location_id/equipment/:item_id/overview', authEndpoint, asyn // used to display item modals in a store, validates that // the item is actually in this store before displaying // the modal -app.get('/location/:location_id/items/:item_id/overview', authEndpoint, async (req: Request, res: Response) => { - const authToken = req.headers['x-authtoken'].toString(); - const player: Player = await loadPlayer(authToken) - if(!player) { - logger.log(`Couldnt find player with id ${authToken}`); - return res.sendStatus(400); - } - +app.get('/location/:location_id/items/:item_id/overview', authEndpoint, async (req: AuthRequest, res: Response) => { const item: (ShopItem & Item) = await getItemFromShop(parseInt(req.params.item_id), parseInt(req.params.location_id)); if(!item) { @@ -779,15 +686,8 @@ app.get('/location/:location_id/items/:item_id/overview', authEndpoint, async (r res.send(html); }); -app.put('/item/:item_id', authEndpoint, async (req: Request, res: Response) => { - const authToken = req.headers['x-authtoken'].toString(); - const player: Player = await loadPlayer(authToken) - if(!player) { - logger.log(`Couldnt find player with id ${authToken}`); - return res.sendStatus(400); - } - - const item: PlayerItem = await getItemFromPlayer(player.id, parseInt(req.params.item_id)); +app.put('/item/:item_id', authEndpoint, async (req: AuthRequest, res: Response) => { + const item: PlayerItem = await getItemFromPlayer(req.player.id, parseInt(req.params.item_id)); if(!item) { console.log(`Can't find item [${req.params.item_id}]`); @@ -803,26 +703,26 @@ app.put('/item/:item_id', authEndpoint, async (req: Request, res: Response) => { switch(item.effect_name) { case 'heal_small': - const hpGain = HealthPotionSmall.effect(player); + const hpGain = HealthPotionSmall.effect(req.player); - player.hp += hpGain; + req.player.hp += hpGain; - if(player.hp > maxHp(player.constitution, player.level)) { - player.hp = maxHp(player.constitution, player.level); + if(req.player.hp > maxHp(req.player.constitution, req.player.level)) { + req.player.hp = maxHp(req.player.constitution, req.player.level); } break; } - await updateItemCount(player.id, item.item_id, -1); - await updatePlayer(player); + await updateItemCount(req.player.id, item.item_id, -1); + await updatePlayer(req.player); - const inventory = await getInventory(player.id); + const inventory = await getInventory(req.player.id); const equippedItems = inventory.filter(i => i.is_equipped); - const items = await getPlayersItems(player.id); + const items = await getPlayersItems(req.player.id); res.send( [ - renderPlayerBar(player, equippedItems), + renderPlayerBar(req.player, equippedItems), renderInventoryPage(inventory, items, 'ITEMS'), Alert.SuccessAlert(`You used the ${item.name}`) ].join("") @@ -830,15 +730,8 @@ app.put('/item/:item_id', authEndpoint, async (req: Request, res: Response) => { }); -app.get('/modal/items/:item_id', authEndpoint, async (req: Request, res: Response) => { - const authToken = req.headers['x-authtoken'].toString(); - const player: Player = await loadPlayer(authToken) - if(!player) { - logger.log(`Couldnt find player with id ${authToken}`); - return res.sendStatus(400); - } - - const item: PlayerItem = await getItemFromPlayer(player.id, parseInt(req.params.item_id)); +app.get('/modal/items/:item_id', authEndpoint, async (req: AuthRequest, res: Response) => { + const item: PlayerItem = await getItemFromPlayer(req.player.id, parseInt(req.params.item_id)); if(!item) { logger.log(`Invalid item [${req.params.item_id}]`); @@ -866,17 +759,10 @@ app.get('/modal/items/:item_id', authEndpoint, async (req: Request, res: Respons res.send(html); }); -app.get('/city/stores/city:stores/:location_id', authEndpoint, async (req: Request, res: Response) => { - const authToken = req.headers['x-authtoken'].toString(); - const player: Player = await loadPlayer(authToken) - if(!player) { - logger.log(`Couldnt find player with id ${authToken}`); - return res.sendStatus(400); - } - +app.get('/city/stores/city:stores/:location_id', authEndpoint, async (req: AuthRequest, res: Response) => { const location = await getService(parseInt(req.params.location_id)); - if(!location || location.city_id !== player.city_id) { + if(!location || location.city_id !== req.player.city_id) { logger.log(`Invalid location: [${req.params.location_id}]`); res.sendStatus(400); } @@ -885,21 +771,14 @@ app.get('/city/stores/city:stores/:location_id', authEndpoint, async (req: Reque getShopItems(location.id) ]); - const html = await renderStore(shopEquipment, shopItems, player); + const html = await renderStore(shopEquipment, shopItems, req.player); res.send(html); }); -app.get('/city/explore/city:explore/:location_id', authEndpoint, async (req: Request, res: Response) => { - const authToken = req.headers['x-authtoken'].toString(); - const player: Player = await loadPlayer(authToken) - if(!player) { - logger.log(`Couldnt find player with id ${authToken}`); - return res.sendStatus(400); - } - +app.get('/city/explore/city:explore/:location_id', authEndpoint, async (req: AuthRequest, res: Response) => { const location = await getService(parseInt(req.params.location_id)); - if(!location || location.city_id !== player.city_id) { + if(!location || location.city_id !== req.player.city_id) { logger.log(`Invalid location: [${req.params.location_id}]`); res.sendStatus(400); @@ -909,43 +788,28 @@ app.get('/city/explore/city:explore/:location_id', authEndpoint, async (req: Req res.send(renderMonsterSelector(monsters)); }); -app.post('/travel', authEndpoint, async (req: Request, res: Response) => { - const authToken = req.headers['x-authtoken'].toString(); - const player: Player = await loadPlayer(authToken) +app.post('/travel', authEndpoint, async (req: AuthRequest, res: Response) => { const destination_id = parseInt(req.body.destination_id); - if(!player) { - logger.log(`Couldnt find player with id ${authToken}`); - return res.sendStatus(400); - } - if(!destination_id || isNaN(destination_id)) { logger.log(`Invalid destination_id [${req.body.destination_id}]`); return res.sendStatus(400); } - const travelPlan = travel(player, req.body.destination_id); + const travelPlan = travel(req.player, req.body.destination_id); res.json(travelPlan); }); -app.post('/fight/turn', authEndpoint, async (req: Request, res: Response) => { - const authToken = req.headers['x-authtoken'].toString(); - const player: Player = await loadPlayer(authToken) - - if(!player) { - logger.log(`Couldnt find player with id ${authToken}`); - return res.sendStatus(400); - } - - const monster = await loadMonsterWithFaction(player.id); +app.post('/fight/turn', authEndpoint, async (req: AuthRequest, res: Response) => { + const monster = await loadMonsterWithFaction(req.player.id); if(!monster) { res.send(Alert.ErrorAlert('Not in a fight')); return; } - const fightData = await fightRound(player, monster, { + const fightData = await fightRound(req.player, monster, { action: req.body.action, target: req.body.fightTarget }); @@ -963,27 +827,19 @@ app.post('/fight/turn', authEndpoint, async (req: Request, res: Response) => { let travelSection = ''; if(monster.fight_trigger === 'travel' && fightData.roundData.winner === 'player') { // you're travellinga dn you won.. display the keep walking! - const travelPlan = await getTravelPlan(player.id); + const travelPlan = await getTravelPlan(req.player.id); const closest: number = (travelPlan.current_position / travelPlan.total_distance) > 0.5 ? travelPlan.destination_id : travelPlan.source_id; travelSection = travelButton(0); } - const equippedItems = await getEquippedItems(player.id); + const equippedItems = await getEquippedItems(req.player.id); const playerBar = renderPlayerBar(fightData.player, equippedItems); res.send(html + travelSection + playerBar); }); -app.post('/fight', authEndpoint, async (req: Request, res: Response) => { - const authToken = req.headers['x-authtoken'].toString(); - const player: Player = await loadPlayer(authToken) - - if(!player) { - logger.log(`Couldnt find player with id ${authToken}`); - return res.sendStatus(400); - } - - if(player.hp <= 0) { +app.post('/fight', authEndpoint, async (req: AuthRequest, res: Response) => { + if(req.player.hp <= 0) { logger.log(`Player didn\'t have enough hp`); return res.sendStatus(400); } @@ -1008,7 +864,7 @@ app.post('/fight', authEndpoint, async (req: Request, res: Response) => { return res.sendStatus(400); } - const fight = await createFight(player.id, monster, fightTrigger); + const fight = await createFight(req.player.id, monster, fightTrigger); const data: MonsterForFight = { @@ -1023,17 +879,10 @@ app.post('/fight', authEndpoint, async (req: Request, res: Response) => { res.send(renderFight(data)); }); -app.post('/travel/step', authEndpoint, async (req: Request, res: Response) => { - const authToken = req.headers['x-authtoken'].toString(); - const player: Player = await loadPlayer(authToken) - const stepTimerKey = `step:${player.id}`; - - if(!player) { - logger.log(`Couldnt find player with id ${authToken}`); - return res.sendStatus(400); - } +app.post('/travel/step', authEndpoint, async (req: AuthRequest, res: Response) => { + const stepTimerKey = `step:${req.player.id}`; - const travelPlan = await getTravelPlan(player.id); + const travelPlan = await getTravelPlan(req.player.id); if(!travelPlan) { res.send(Alert.ErrorAlert('You don\'t have a travel plan')); return; @@ -1049,10 +898,10 @@ app.post('/travel/step', authEndpoint, async (req: Request, res: Response) => { travelPlan.current_position++; if(travelPlan.current_position >= travelPlan.total_distance) { - const travel = await completeTravel(player.id); + const travel = await completeTravel(req.player.id); - player.city_id = travel.destination_id; - await movePlayer(travel.destination_id, player.id); + req.player.city_id = travel.destination_id; + await movePlayer(travel.destination_id, req.player.id); const [city, locations, paths] = await Promise.all([ getCityDetails(travel.destination_id), @@ -1061,7 +910,7 @@ app.post('/travel/step', authEndpoint, async (req: Request, res: Response) => { ]); delete cache[stepTimerKey]; - res.send(await renderMap({city, locations, paths}, player.city_id)); + res.send(await renderMap({city, locations, paths}, req.player.city_id)); } else { const walkingText: string[] = [ @@ -1070,7 +919,7 @@ app.post('/travel/step', authEndpoint, async (req: Request, res: Response) => { ]; // update existing plan.. // decide if they will run into anything - const travelPlan = await stepForward(player.id); + const travelPlan = await stepForward(req.player.id); const closest: number = (travelPlan.current_position / travelPlan.total_distance) > 0.5 ? travelPlan.destination_id : travelPlan.source_id; @@ -1096,16 +945,8 @@ app.post('/travel/step', authEndpoint, async (req: Request, res: Response) => { } }); -app.post('/travel/:destination_id', authEndpoint, async (req: Request, res: Response) => { - const authToken = req.headers['x-authtoken'].toString(); - const player: Player = await loadPlayer(authToken) - - if(!player) { - logger.log(`Couldnt find player with id ${authToken}`); - return res.sendStatus(400); - } - - if(player.hp <= 0) { +app.post('/travel/:destination_id', authEndpoint, async (req: AuthRequest, res: Response) => { + if(req.player.hp <= 0) { logger.log(`Player didn\'t have enough hp`); res.send(Alert.ErrorAlert('Sorry, you need some HP to start travelling.')); return; @@ -1118,13 +959,13 @@ app.post('/travel/:destination_id', authEndpoint, async (req: Request, res: Resp return; } - await travel(player, destination.id); + await travel(req.player, destination.id); res.send(renderTravel({ things: [], nextAction: 0, walkingText: '', - closestTown: player.city_id + closestTown: req.player.city_id })); }); diff --git a/src/server/auth.ts b/src/server/auth.ts index d82d4b6..3f4899b 100644 --- a/src/server/auth.ts +++ b/src/server/auth.ts @@ -5,6 +5,10 @@ import { Auth } from '../shared/auth'; import { db } from './lib/db'; import { Request, Response } from 'express'; +export interface AuthRequest extends Request { + player: Player +} + export async function signup(playerId: string, username: string, password: string): Promise { const salt = await bcrypt.genSalt(10); const hash = await bcrypt.hash(password, salt); @@ -58,13 +62,21 @@ export async function login(username: string, password: string): Promise } -export function authEndpoint(req: Request, res: Response, next: any) { +export async function authEndpoint(req: AuthRequest, res: Response, next: any) { const authToken = req.headers['x-authtoken']; if(!authToken) { console.log(`Invalid auth token ${authToken}`); - res.sendStatus(400) + res.sendStatus(401) } else { - next() + const player: Player = await loadPlayer(authToken.toString()); + if(player) { + req.player = player; + next() + } + else { + console.log(`Invalid auth token ${authToken}`); + res.sendStatus(401); + } } } diff --git a/src/server/locations/healer/index.ts b/src/server/locations/healer/index.ts index bd3ba1c..46877b2 100644 --- a/src/server/locations/healer/index.ts +++ b/src/server/locations/healer/index.ts @@ -1,6 +1,6 @@ import { Request, Response, Router } from "express"; import { maxHp, Player } from "../../../shared/player"; -import { authEndpoint } from '../../auth'; +import { authEndpoint, AuthRequest } from '../../auth'; import { logger } from "../../lib/logger"; import { loadPlayer, updatePlayer } from "../../player"; import { getCityDetails, getService } from '../../map'; @@ -91,18 +91,11 @@ function getText(type: TextSegment, location: Location, city: City): string { } -router.get('/city/services/city:services:healer/:location_id', authEndpoint, async (req: Request, res: Response) => { - const authToken = req.headers['x-authtoken']!.toString(); - const player: Player = await loadPlayer(authToken) - if(!player) { - logger.log(`Couldnt find player with id ${authToken}`); - return res.sendStatus(400); - } - +router.get('/city/services/city:services:healer/:location_id', authEndpoint, async (req: AuthRequest, res: Response) => { const service = await getService(parseInt(req.params.location_id)); const city = await getCityDetails(service.city_id); - if(!service || service.city_id !== player.city_id) { + if(!service || service.city_id !== req.player.city_id) { logger.log(`Invalid location: [${req.params.location_id}]`); res.sendStatus(400); } @@ -113,11 +106,11 @@ router.get('/city/services/city:services:healer/:location_id', authEndpoint, asy text.push(`

"${getText('intro', service, city)}"

`); - if(player.hp === maxHp(player.constitution, player.level)) { + if(req.player.hp === maxHp(req.player.constitution, req.player.level)) { text.push(`

You're already at full health?

`); } else { - if(player.gold <= (healCost * 2)) { + if(req.player.gold <= (healCost * 2)) { text.push(`

You don't seem to have too much money... I guess I can do it for free this time...

`); text.push(`

`); } @@ -132,18 +125,11 @@ router.get('/city/services/city:services:healer/:location_id', authEndpoint, asy -router.post('/city/services/city:services:healer:heal/:location_id', authEndpoint, async (req: Request, res: Response) => { - const authToken = req.headers['x-authtoken']!.toString(); - const player: Player = await loadPlayer(authToken) - if(!player) { - logger.log(`Couldnt find player with id ${authToken}`); - return res.sendStatus(400); - } - +router.post('/city/services/city:services:healer:heal/:location_id', authEndpoint, async (req: AuthRequest, res: Response) => { const service = await getService(parseInt(req.params.location_id)); const city = await getCityDetails(service.city_id); - if(!service || service.city_id !== player.city_id) { + if(!service || service.city_id !== req.player.city_id) { logger.log(`Invalid location: [${req.params.location_id}]`); res.sendStatus(400); } @@ -151,21 +137,21 @@ router.post('/city/services/city:services:healer:heal/:location_id', authEndpoin const text: string[] = []; text.push(`

${service.name}

`); - const cost = player.gold <= (healCost * 2) ? 0 : healCost; + const cost = req.player.gold <= (healCost * 2) ? 0 : healCost; - if(player.gold < cost) { + if(req.player.gold < cost) { text.push(`

${getText('insufficient_money', service, city)}

`) res.send(`
${text.join("\n")}
`); } else { - player.hp = maxHp(player.constitution, player.level); - player.gold -= cost; + req.player.hp = maxHp(req.player.constitution, req.player.level); + req.player.gold -= cost; - await updatePlayer(player); - const inventory = await getEquippedItems(player.id); + await updatePlayer(req.player); + const inventory = await getEquippedItems(req.player.id); text.push(`

${getText('heal_successful', service, city)}

`); text.push('

'); - res.send(`
${text.join("\n")}
` + renderPlayerBar(player, inventory)); + res.send(`
${text.join("\n")}
` + renderPlayerBar(req.player, inventory)); } }); diff --git a/src/server/views/fight.ts b/src/server/views/fight.ts index fdd51b4..b6ed6dc 100644 --- a/src/server/views/fight.ts +++ b/src/server/views/fight.ts @@ -23,8 +23,7 @@ export function renderRoundDetails(roundData: FightRound): string { html.push('

'); break; case 'in-progress': - // still in progress? - console.log('in progress still'); + // fight still in progress, so we don't send any final actions back break; } -- 2.25.1 From 0d1626c70126460d9e0575e20b41d608ec2d0791 Mon Sep 17 00:00:00 2001 From: xangelo Date: Tue, 8 Aug 2023 14:35:44 -0400 Subject: [PATCH 2/6] fix: chat history calls clearing chat --- public/assets/bundle.js | 2 +- public/index.html | 2 +- src/client/chat.ts | 33 - src/client/custom-discord.ts | 5 - src/client/discord.ts | 60 -- src/client/htmx.ts | 15 +- src/client/http.ts | 32 - src/client/index.ts | 1117 ----------------------------- src/client/socket-event.client.ts | 16 - src/server/api.ts | 11 +- 10 files changed, 16 insertions(+), 1277 deletions(-) delete mode 100644 src/client/chat.ts delete mode 100644 src/client/custom-discord.ts delete mode 100644 src/client/discord.ts delete mode 100644 src/client/http.ts delete mode 100644 src/client/index.ts delete mode 100644 src/client/socket-event.client.ts diff --git a/public/assets/bundle.js b/public/assets/bundle.js index 239b458..b9afe5a 100644 --- a/public/assets/bundle.js +++ b/public/assets/bundle.js @@ -1 +1 @@ -(()=>{var e={802:(e,t,s)=>{t.formatArgs=function(t){if(t[0]=(this.useColors?"%c":"")+this.namespace+(this.useColors?" %c":" ")+t[0]+(this.useColors?"%c ":" ")+"+"+e.exports.humanize(this.diff),!this.useColors)return;const s="color: "+this.color;t.splice(1,0,s,"color: inherit");let n=0,r=0;t[0].replace(/%[a-zA-Z%]/g,(e=>{"%%"!==e&&(n++,"%c"===e&&(r=n))})),t.splice(r,0,s)},t.save=function(e){try{e?t.storage.setItem("debug",e):t.storage.removeItem("debug")}catch(e){}},t.load=function(){let e;try{e=t.storage.getItem("debug")}catch(e){}return!e&&"undefined"!=typeof process&&"env"in process&&(e=process.env.DEBUG),e},t.useColors=function(){return!("undefined"==typeof window||!window.process||"renderer"!==window.process.type&&!window.process.__nwjs)||("undefined"==typeof navigator||!navigator.userAgent||!navigator.userAgent.toLowerCase().match(/(edge|trident)\/(\d+)/))&&("undefined"!=typeof document&&document.documentElement&&document.documentElement.style&&document.documentElement.style.WebkitAppearance||"undefined"!=typeof window&&window.console&&(window.console.firebug||window.console.exception&&window.console.table)||"undefined"!=typeof navigator&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/)&&parseInt(RegExp.$1,10)>=31||"undefined"!=typeof navigator&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/))},t.storage=function(){try{return localStorage}catch(e){}}(),t.destroy=(()=>{let e=!1;return()=>{e||(e=!0,console.warn("Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`."))}})(),t.colors=["#0000CC","#0000FF","#0033CC","#0033FF","#0066CC","#0066FF","#0099CC","#0099FF","#00CC00","#00CC33","#00CC66","#00CC99","#00CCCC","#00CCFF","#3300CC","#3300FF","#3333CC","#3333FF","#3366CC","#3366FF","#3399CC","#3399FF","#33CC00","#33CC33","#33CC66","#33CC99","#33CCCC","#33CCFF","#6600CC","#6600FF","#6633CC","#6633FF","#66CC00","#66CC33","#9900CC","#9900FF","#9933CC","#9933FF","#99CC00","#99CC33","#CC0000","#CC0033","#CC0066","#CC0099","#CC00CC","#CC00FF","#CC3300","#CC3333","#CC3366","#CC3399","#CC33CC","#CC33FF","#CC6600","#CC6633","#CC9900","#CC9933","#CCCC00","#CCCC33","#FF0000","#FF0033","#FF0066","#FF0099","#FF00CC","#FF00FF","#FF3300","#FF3333","#FF3366","#FF3399","#FF33CC","#FF33FF","#FF6600","#FF6633","#FF9900","#FF9933","#FFCC00","#FFCC33"],t.log=console.debug||console.log||(()=>{}),e.exports=s(804)(t);const{formatters:n}=e.exports;n.j=function(e){try{return JSON.stringify(e)}catch(e){return"[UnexpectedJSONParseError]: "+e.message}}},804:(e,t,s)=>{e.exports=function(e){function t(e){let s,r,o,i=null;function a(...e){if(!a.enabled)return;const n=a,r=Number(new Date),o=r-(s||r);n.diff=o,n.prev=s,n.curr=r,s=r,e[0]=t.coerce(e[0]),"string"!=typeof e[0]&&e.unshift("%O");let i=0;e[0]=e[0].replace(/%([a-zA-Z%])/g,((s,r)=>{if("%%"===s)return"%";i++;const o=t.formatters[r];if("function"==typeof o){const t=e[i];s=o.call(n,t),e.splice(i,1),i--}return s})),t.formatArgs.call(n,e),(n.log||t.log).apply(n,e)}return a.namespace=e,a.useColors=t.useColors(),a.color=t.selectColor(e),a.extend=n,a.destroy=t.destroy,Object.defineProperty(a,"enabled",{enumerable:!0,configurable:!1,get:()=>null!==i?i:(r!==t.namespaces&&(r=t.namespaces,o=t.enabled(e)),o),set:e=>{i=e}}),"function"==typeof t.init&&t.init(a),a}function n(e,s){const n=t(this.namespace+(void 0===s?":":s)+e);return n.log=this.log,n}function r(e){return e.toString().substring(2,e.toString().length-2).replace(/\.\*\?$/,"*")}return t.debug=t,t.default=t,t.coerce=function(e){return e instanceof Error?e.stack||e.message:e},t.disable=function(){const e=[...t.names.map(r),...t.skips.map(r).map((e=>"-"+e))].join(",");return t.enable(""),e},t.enable=function(e){let s;t.save(e),t.namespaces=e,t.names=[],t.skips=[];const n=("string"==typeof e?e:"").split(/[\s,]+/),r=n.length;for(s=0;s{t[s]=e[s]})),t.names=[],t.skips=[],t.formatters={},t.selectColor=function(e){let s=0;for(let t=0;t{var t=1e3,s=60*t,n=60*s,r=24*n;function o(e,t,s,n){var r=t>=1.5*s;return Math.round(e/s)+" "+n+(r?"s":"")}e.exports=function(e,i){i=i||{};var a,c,u=typeof e;if("string"===u&&e.length>0)return function(e){if(!((e=String(e)).length>100)){var o=/^(-?(?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(e);if(o){var i=parseFloat(o[1]);switch((o[2]||"ms").toLowerCase()){case"years":case"year":case"yrs":case"yr":case"y":return 315576e5*i;case"weeks":case"week":case"w":return 6048e5*i;case"days":case"day":case"d":return i*r;case"hours":case"hour":case"hrs":case"hr":case"h":return i*n;case"minutes":case"minute":case"mins":case"min":case"m":return i*s;case"seconds":case"second":case"secs":case"sec":case"s":return i*t;case"milliseconds":case"millisecond":case"msecs":case"msec":case"ms":return i;default:return}}}}(e);if("number"===u&&isFinite(e))return i.long?(a=e,(c=Math.abs(a))>=r?o(a,c,r,"day"):c>=n?o(a,c,n,"hour"):c>=s?o(a,c,s,"minute"):c>=t?o(a,c,t,"second"):a+" ms"):function(e){var o=Math.abs(e);return o>=r?Math.round(e/r)+"d":o>=n?Math.round(e/n)+"h":o>=s?Math.round(e/s)+"m":o>=t?Math.round(e/t)+"s":e+"ms"}(e);throw new Error("val is not a non-empty string or a valid number. val="+JSON.stringify(e))}},669:(e,t,s)=>{t.formatArgs=function(t){if(t[0]=(this.useColors?"%c":"")+this.namespace+(this.useColors?" %c":" ")+t[0]+(this.useColors?"%c ":" ")+"+"+e.exports.humanize(this.diff),!this.useColors)return;const s="color: "+this.color;t.splice(1,0,s,"color: inherit");let n=0,r=0;t[0].replace(/%[a-zA-Z%]/g,(e=>{"%%"!==e&&(n++,"%c"===e&&(r=n))})),t.splice(r,0,s)},t.save=function(e){try{e?t.storage.setItem("debug",e):t.storage.removeItem("debug")}catch(e){}},t.load=function(){let e;try{e=t.storage.getItem("debug")}catch(e){}return!e&&"undefined"!=typeof process&&"env"in process&&(e=process.env.DEBUG),e},t.useColors=function(){return!("undefined"==typeof window||!window.process||"renderer"!==window.process.type&&!window.process.__nwjs)||("undefined"==typeof navigator||!navigator.userAgent||!navigator.userAgent.toLowerCase().match(/(edge|trident)\/(\d+)/))&&("undefined"!=typeof document&&document.documentElement&&document.documentElement.style&&document.documentElement.style.WebkitAppearance||"undefined"!=typeof window&&window.console&&(window.console.firebug||window.console.exception&&window.console.table)||"undefined"!=typeof navigator&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/)&&parseInt(RegExp.$1,10)>=31||"undefined"!=typeof navigator&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/))},t.storage=function(){try{return localStorage}catch(e){}}(),t.destroy=(()=>{let e=!1;return()=>{e||(e=!0,console.warn("Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`."))}})(),t.colors=["#0000CC","#0000FF","#0033CC","#0033FF","#0066CC","#0066FF","#0099CC","#0099FF","#00CC00","#00CC33","#00CC66","#00CC99","#00CCCC","#00CCFF","#3300CC","#3300FF","#3333CC","#3333FF","#3366CC","#3366FF","#3399CC","#3399FF","#33CC00","#33CC33","#33CC66","#33CC99","#33CCCC","#33CCFF","#6600CC","#6600FF","#6633CC","#6633FF","#66CC00","#66CC33","#9900CC","#9900FF","#9933CC","#9933FF","#99CC00","#99CC33","#CC0000","#CC0033","#CC0066","#CC0099","#CC00CC","#CC00FF","#CC3300","#CC3333","#CC3366","#CC3399","#CC33CC","#CC33FF","#CC6600","#CC6633","#CC9900","#CC9933","#CCCC00","#CCCC33","#FF0000","#FF0033","#FF0066","#FF0099","#FF00CC","#FF00FF","#FF3300","#FF3333","#FF3366","#FF3399","#FF33CC","#FF33FF","#FF6600","#FF6633","#FF9900","#FF9933","#FFCC00","#FFCC33"],t.log=console.debug||console.log||(()=>{}),e.exports=s(231)(t);const{formatters:n}=e.exports;n.j=function(e){try{return JSON.stringify(e)}catch(e){return"[UnexpectedJSONParseError]: "+e.message}}},231:(e,t,s)=>{e.exports=function(e){function t(e){let s,r,o,i=null;function a(...e){if(!a.enabled)return;const n=a,r=Number(new Date),o=r-(s||r);n.diff=o,n.prev=s,n.curr=r,s=r,e[0]=t.coerce(e[0]),"string"!=typeof e[0]&&e.unshift("%O");let i=0;e[0]=e[0].replace(/%([a-zA-Z%])/g,((s,r)=>{if("%%"===s)return"%";i++;const o=t.formatters[r];if("function"==typeof o){const t=e[i];s=o.call(n,t),e.splice(i,1),i--}return s})),t.formatArgs.call(n,e),(n.log||t.log).apply(n,e)}return a.namespace=e,a.useColors=t.useColors(),a.color=t.selectColor(e),a.extend=n,a.destroy=t.destroy,Object.defineProperty(a,"enabled",{enumerable:!0,configurable:!1,get:()=>null!==i?i:(r!==t.namespaces&&(r=t.namespaces,o=t.enabled(e)),o),set:e=>{i=e}}),"function"==typeof t.init&&t.init(a),a}function n(e,s){const n=t(this.namespace+(void 0===s?":":s)+e);return n.log=this.log,n}function r(e){return e.toString().substring(2,e.toString().length-2).replace(/\.\*\?$/,"*")}return t.debug=t,t.default=t,t.coerce=function(e){return e instanceof Error?e.stack||e.message:e},t.disable=function(){const e=[...t.names.map(r),...t.skips.map(r).map((e=>"-"+e))].join(",");return t.enable(""),e},t.enable=function(e){let s;t.save(e),t.namespaces=e,t.names=[],t.skips=[];const n=("string"==typeof e?e:"").split(/[\s,]+/),r=n.length;for(s=0;s{t[s]=e[s]})),t.names=[],t.skips=[],t.formatters={},t.selectColor=function(e){let s=0;for(let t=0;t{var t=1e3,s=60*t,n=60*s,r=24*n;function o(e,t,s,n){var r=t>=1.5*s;return Math.round(e/s)+" "+n+(r?"s":"")}e.exports=function(e,i){i=i||{};var a,c,u=typeof e;if("string"===u&&e.length>0)return function(e){if(!((e=String(e)).length>100)){var o=/^(-?(?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(e);if(o){var i=parseFloat(o[1]);switch((o[2]||"ms").toLowerCase()){case"years":case"year":case"yrs":case"yr":case"y":return 315576e5*i;case"weeks":case"week":case"w":return 6048e5*i;case"days":case"day":case"d":return i*r;case"hours":case"hour":case"hrs":case"hr":case"h":return i*n;case"minutes":case"minute":case"mins":case"min":case"m":return i*s;case"seconds":case"second":case"secs":case"sec":case"s":return i*t;case"milliseconds":case"millisecond":case"msecs":case"msec":case"ms":return i;default:return}}}}(e);if("number"===u&&isFinite(e))return i.long?(a=e,(c=Math.abs(a))>=r?o(a,c,r,"day"):c>=n?o(a,c,n,"hour"):c>=s?o(a,c,s,"minute"):c>=t?o(a,c,t,"second"):a+" ms"):function(e){var o=Math.abs(e);return o>=r?Math.round(e/r)+"d":o>=n?Math.round(e/n)+"h":o>=s?Math.round(e/s)+"m":o>=t?Math.round(e/t)+"s":e+"ms"}(e);throw new Error("val is not a non-empty string or a valid number. val="+JSON.stringify(e))}},618:(e,t,s)=>{t.formatArgs=function(t){if(t[0]=(this.useColors?"%c":"")+this.namespace+(this.useColors?" %c":" ")+t[0]+(this.useColors?"%c ":" ")+"+"+e.exports.humanize(this.diff),!this.useColors)return;const s="color: "+this.color;t.splice(1,0,s,"color: inherit");let n=0,r=0;t[0].replace(/%[a-zA-Z%]/g,(e=>{"%%"!==e&&(n++,"%c"===e&&(r=n))})),t.splice(r,0,s)},t.save=function(e){try{e?t.storage.setItem("debug",e):t.storage.removeItem("debug")}catch(e){}},t.load=function(){let e;try{e=t.storage.getItem("debug")}catch(e){}return!e&&"undefined"!=typeof process&&"env"in process&&(e=process.env.DEBUG),e},t.useColors=function(){return!("undefined"==typeof window||!window.process||"renderer"!==window.process.type&&!window.process.__nwjs)||("undefined"==typeof navigator||!navigator.userAgent||!navigator.userAgent.toLowerCase().match(/(edge|trident)\/(\d+)/))&&("undefined"!=typeof document&&document.documentElement&&document.documentElement.style&&document.documentElement.style.WebkitAppearance||"undefined"!=typeof window&&window.console&&(window.console.firebug||window.console.exception&&window.console.table)||"undefined"!=typeof navigator&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/)&&parseInt(RegExp.$1,10)>=31||"undefined"!=typeof navigator&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/))},t.storage=function(){try{return localStorage}catch(e){}}(),t.destroy=(()=>{let e=!1;return()=>{e||(e=!0,console.warn("Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`."))}})(),t.colors=["#0000CC","#0000FF","#0033CC","#0033FF","#0066CC","#0066FF","#0099CC","#0099FF","#00CC00","#00CC33","#00CC66","#00CC99","#00CCCC","#00CCFF","#3300CC","#3300FF","#3333CC","#3333FF","#3366CC","#3366FF","#3399CC","#3399FF","#33CC00","#33CC33","#33CC66","#33CC99","#33CCCC","#33CCFF","#6600CC","#6600FF","#6633CC","#6633FF","#66CC00","#66CC33","#9900CC","#9900FF","#9933CC","#9933FF","#99CC00","#99CC33","#CC0000","#CC0033","#CC0066","#CC0099","#CC00CC","#CC00FF","#CC3300","#CC3333","#CC3366","#CC3399","#CC33CC","#CC33FF","#CC6600","#CC6633","#CC9900","#CC9933","#CCCC00","#CCCC33","#FF0000","#FF0033","#FF0066","#FF0099","#FF00CC","#FF00FF","#FF3300","#FF3333","#FF3366","#FF3399","#FF33CC","#FF33FF","#FF6600","#FF6633","#FF9900","#FF9933","#FFCC00","#FFCC33"],t.log=console.debug||console.log||(()=>{}),e.exports=s(224)(t);const{formatters:n}=e.exports;n.j=function(e){try{return JSON.stringify(e)}catch(e){return"[UnexpectedJSONParseError]: "+e.message}}},224:(e,t,s)=>{e.exports=function(e){function t(e){let s,r,o,i=null;function a(...e){if(!a.enabled)return;const n=a,r=Number(new Date),o=r-(s||r);n.diff=o,n.prev=s,n.curr=r,s=r,e[0]=t.coerce(e[0]),"string"!=typeof e[0]&&e.unshift("%O");let i=0;e[0]=e[0].replace(/%([a-zA-Z%])/g,((s,r)=>{if("%%"===s)return"%";i++;const o=t.formatters[r];if("function"==typeof o){const t=e[i];s=o.call(n,t),e.splice(i,1),i--}return s})),t.formatArgs.call(n,e),(n.log||t.log).apply(n,e)}return a.namespace=e,a.useColors=t.useColors(),a.color=t.selectColor(e),a.extend=n,a.destroy=t.destroy,Object.defineProperty(a,"enabled",{enumerable:!0,configurable:!1,get:()=>null!==i?i:(r!==t.namespaces&&(r=t.namespaces,o=t.enabled(e)),o),set:e=>{i=e}}),"function"==typeof t.init&&t.init(a),a}function n(e,s){const n=t(this.namespace+(void 0===s?":":s)+e);return n.log=this.log,n}function r(e){return e.toString().substring(2,e.toString().length-2).replace(/\.\*\?$/,"*")}return t.debug=t,t.default=t,t.coerce=function(e){return e instanceof Error?e.stack||e.message:e},t.disable=function(){const e=[...t.names.map(r),...t.skips.map(r).map((e=>"-"+e))].join(",");return t.enable(""),e},t.enable=function(e){let s;t.save(e),t.namespaces=e,t.names=[],t.skips=[];const n=("string"==typeof e?e:"").split(/[\s,]+/),r=n.length;for(s=0;s{t[s]=e[s]})),t.names=[],t.skips=[],t.formatters={},t.selectColor=function(e){let s=0;for(let t=0;t{var t=1e3,s=60*t,n=60*s,r=24*n;function o(e,t,s,n){var r=t>=1.5*s;return Math.round(e/s)+" "+n+(r?"s":"")}e.exports=function(e,i){i=i||{};var a,c,u=typeof e;if("string"===u&&e.length>0)return function(e){if(!((e=String(e)).length>100)){var o=/^(-?(?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(e);if(o){var i=parseFloat(o[1]);switch((o[2]||"ms").toLowerCase()){case"years":case"year":case"yrs":case"yr":case"y":return 315576e5*i;case"weeks":case"week":case"w":return 6048e5*i;case"days":case"day":case"d":return i*r;case"hours":case"hour":case"hrs":case"hr":case"h":return i*n;case"minutes":case"minute":case"mins":case"min":case"m":return i*s;case"seconds":case"second":case"secs":case"sec":case"s":return i*t;case"milliseconds":case"millisecond":case"msecs":case"msec":case"ms":return i;default:return}}}}(e);if("number"===u&&isFinite(e))return i.long?(a=e,(c=Math.abs(a))>=r?o(a,c,r,"day"):c>=n?o(a,c,n,"hour"):c>=s?o(a,c,s,"minute"):c>=t?o(a,c,t,"second"):a+" ms"):function(e){var o=Math.abs(e);return o>=r?Math.round(e/r)+"d":o>=n?Math.round(e/n)+"h":o>=s?Math.round(e/s)+"m":o>=t?Math.round(e/t)+"s":e+"ms"}(e);throw new Error("val is not a non-empty string or a valid number. val="+JSON.stringify(e))}},336:(e,t)=>{"use strict";let s;function n(e,t=document){return t.querySelector(e)}function r(e){n("#chat-messages").innerHTML+=`
\n ${e.from}\n ${e.msg}\n
`,n("#chat-messages").scrollTop=n("#chat-messages").scrollHeight}Object.defineProperty(t,"__esModule",{value:!0}),t.configureChat=void 0,t.configureChat=function(e){s=e,s.on("chat",r),console.log("Chat Configured")}},862:function(e,t){"use strict";var s=this&&this.__awaiter||function(e,t,s,n){return new(s||(s=Promise))((function(r,o){function i(e){try{c(n.next(e))}catch(e){o(e)}}function a(e){try{c(n.throw(e))}catch(e){o(e)}}function c(e){var t;e.done?r(e.value):(t=e.value,t instanceof s?t:new s((function(e){e(t)}))).then(i,a)}c((n=n.apply(e,t||[])).next())}))};function n(){return localStorage.getItem("authToken")}Object.defineProperty(t,"__esModule",{value:!0}),t.http=t.authToken=void 0,t.authToken=n,t.http={get:e=>s(void 0,void 0,void 0,(function*(){return(yield fetch(e,{headers:{"x-authtoken":n()}})).json()})),post:(e,t)=>s(void 0,void 0,void 0,(function*(){const s=yield fetch(e,{method:"post",body:JSON.stringify(t),headers:{"x-authtoken":n(),"content-type":"application/json"}});try{return s.json()}catch(e){return console.log("No valid JSON response"),null}}))}},182:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.TimeManager=void 0,t.TimeManager=class{constructor(e=120){this.dayLength=e,this.scaleFactor=30,this.dayLengthAsMS=60*e*1e3}dayScaleFactor(){return this.dayLength/30}getTimePeriod(){return this.isMorning()?"morning":this.isAfternoon()?"afternoon":this.isEvening()?"evening":this.isNight()?"night":void 0}getAmPm(){return this.get24Hour()<12?"am":"pm"}get24Hour(){const e=new Date,t=(e.getMinutes()+e.getHours()%2*(this.dayLength/2))/this.dayLength;return Math.floor(24*t)}getHour(){const e=(new Date).getMinutes()/this.dayLength,t=Math.floor(24*e);return t>12?t-12:t}gradientName(){const e=Math.floor(this.get24Hour()/24*this.scaleFactor);return`sky-gradient-${e<10?"0":""}${e}`}isNight(){const e=this.get24Hour();return e>=0&&e<5||e>=21&&e<24}isMorning(){const e=this.get24Hour();return e>=5&&e<12}isAfternoon(){const e=this.get24Hour();return e>=12&&e<18}isEvening(){const e=this.get24Hour();return e>=18&&e<21}}},419:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.hasCORS=void 0;let s=!1;try{s="undefined"!=typeof XMLHttpRequest&&"withCredentials"in new XMLHttpRequest}catch(e){}t.hasCORS=s},754:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.decode=t.encode=void 0,t.encode=function(e){let t="";for(let s in e)e.hasOwnProperty(s)&&(t.length&&(t+="&"),t+=encodeURIComponent(s)+"="+encodeURIComponent(e[s]));return t},t.decode=function(e){let t={},s=e.split("&");for(let e=0,n=s.length;e{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.parse=void 0;const s=/^(?:(?![^:@\/?#]+:[^:@\/]*@)(http|https|ws|wss):\/\/)?((?:(([^:@\/?#]*)(?::([^:@\/?#]*))?)?@)?((?:[a-f0-9]{0,4}:){2,7}[a-f0-9]{0,4}|[^:\/?#]*)(?::(\d*))?)(((\/(?:[^?#](?![^?#\/]*\.[^?#\/.]+(?:[?#]|$)))*\/?)?([^?#\/]*))(?:\?([^#]*))?(?:#(.*))?)/,n=["source","protocol","authority","userInfo","user","password","host","port","relative","path","directory","file","query","anchor"];t.parse=function(e){const t=e,r=e.indexOf("["),o=e.indexOf("]");-1!=r&&-1!=o&&(e=e.substring(0,r)+e.substring(r,o).replace(/:/g,";")+e.substring(o,e.length));let i=s.exec(e||""),a={},c=14;for(;c--;)a[n[c]]=i[c]||"";return-1!=r&&-1!=o&&(a.source=t,a.host=a.host.substring(1,a.host.length-1).replace(/;/g,":"),a.authority=a.authority.replace("[","").replace("]","").replace(/;/g,":"),a.ipv6uri=!0),a.pathNames=function(e,t){const s=t.replace(/\/{2,9}/g,"/").split("/");return"/"!=t.slice(0,1)&&0!==t.length||s.splice(0,1),"/"==t.slice(-1)&&s.splice(s.length-1,1),s}(0,a.path),a.queryKey=function(e,t){const s={};return t.replace(/(?:^|&)([^&=]*)=?([^&]*)/g,(function(e,t,n){t&&(s[t]=n)})),s}(0,a.query),a}},726:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.yeast=t.decode=t.encode=void 0;const s="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz-_".split(""),n={};let r,o=0,i=0;function a(e){let t="";do{t=s[e%64]+t,e=Math.floor(e/64)}while(e>0);return t}for(t.encode=a,t.decode=function(e){let t=0;for(i=0;i{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.globalThisShim=void 0,t.globalThisShim="undefined"!=typeof self?self:"undefined"!=typeof window?window:Function("return this")()},679:(e,t,s)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.nextTick=t.parse=t.installTimerFunctions=t.transports=t.Transport=t.protocol=t.Socket=void 0;const n=s(481);Object.defineProperty(t,"Socket",{enumerable:!0,get:function(){return n.Socket}}),t.protocol=n.Socket.protocol;var r=s(870);Object.defineProperty(t,"Transport",{enumerable:!0,get:function(){return r.Transport}});var o=s(385);Object.defineProperty(t,"transports",{enumerable:!0,get:function(){return o.transports}});var i=s(622);Object.defineProperty(t,"installTimerFunctions",{enumerable:!0,get:function(){return i.installTimerFunctions}});var a=s(222);Object.defineProperty(t,"parse",{enumerable:!0,get:function(){return a.parse}});var c=s(552);Object.defineProperty(t,"nextTick",{enumerable:!0,get:function(){return c.nextTick}})},481:function(e,t,s){"use strict";var n=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.Socket=void 0;const r=s(385),o=s(622),i=s(754),a=s(222),c=n(s(802)),u=s(260),h=s(373),l=(0,c.default)("engine.io-client:socket");class d extends u.Emitter{constructor(e,t={}){super(),this.writeBuffer=[],e&&"object"==typeof e&&(t=e,e=null),e?(e=(0,a.parse)(e),t.hostname=e.host,t.secure="https"===e.protocol||"wss"===e.protocol,t.port=e.port,e.query&&(t.query=e.query)):t.host&&(t.hostname=(0,a.parse)(t.host).host),(0,o.installTimerFunctions)(this,t),this.secure=null!=t.secure?t.secure:"undefined"!=typeof location&&"https:"===location.protocol,t.hostname&&!t.port&&(t.port=this.secure?"443":"80"),this.hostname=t.hostname||("undefined"!=typeof location?location.hostname:"localhost"),this.port=t.port||("undefined"!=typeof location&&location.port?location.port:this.secure?"443":"80"),this.transports=t.transports||["polling","websocket"],this.writeBuffer=[],this.prevBufferLen=0,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:!0},t),this.opts.path=this.opts.path.replace(/\/$/,"")+(this.opts.addTrailingSlash?"/":""),"string"==typeof this.opts.query&&(this.opts.query=(0,i.decode)(this.opts.query)),this.id=null,this.upgrades=null,this.pingInterval=null,this.pingTimeout=null,this.pingTimeoutTimer=null,"function"==typeof addEventListener&&(this.opts.closeOnBeforeunload&&(this.beforeunloadEventListener=()=>{this.transport&&(this.transport.removeAllListeners(),this.transport.close())},addEventListener("beforeunload",this.beforeunloadEventListener,!1)),"localhost"!==this.hostname&&(this.offlineEventListener=()=>{this.onClose("transport close",{description:"network connection lost"})},addEventListener("offline",this.offlineEventListener,!1))),this.open()}createTransport(e){l('creating transport "%s"',e);const t=Object.assign({},this.opts.query);t.EIO=h.protocol,t.transport=e,this.id&&(t.sid=this.id);const s=Object.assign({},this.opts.transportOptions[e],this.opts,{query:t,socket:this,hostname:this.hostname,secure:this.secure,port:this.port});return l("options: %j",s),new r.transports[e](s)}open(){let e;if(this.opts.rememberUpgrade&&d.priorWebsocketSuccess&&-1!==this.transports.indexOf("websocket"))e="websocket";else{if(0===this.transports.length)return void this.setTimeoutFn((()=>{this.emitReserved("error","No transports available")}),0);e=this.transports[0]}this.readyState="opening";try{e=this.createTransport(e)}catch(e){return l("error while creating transport: %s",e),this.transports.shift(),void this.open()}e.open(),this.setTransport(e)}setTransport(e){l("setting transport %s",e.name),this.transport&&(l("clearing existing transport %s",this.transport.name),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",(e=>this.onClose("transport close",e)))}probe(e){l('probing transport "%s"',e);let t=this.createTransport(e),s=!1;d.priorWebsocketSuccess=!1;const n=()=>{s||(l('probe transport "%s" opened',e),t.send([{type:"ping",data:"probe"}]),t.once("packet",(n=>{if(!s)if("pong"===n.type&&"probe"===n.data){if(l('probe transport "%s" pong',e),this.upgrading=!0,this.emitReserved("upgrading",t),!t)return;d.priorWebsocketSuccess="websocket"===t.name,l('pausing current transport "%s"',this.transport.name),this.transport.pause((()=>{s||"closed"!==this.readyState&&(l("changing transport and sending upgrade packet"),u(),this.setTransport(t),t.send([{type:"upgrade"}]),this.emitReserved("upgrade",t),t=null,this.upgrading=!1,this.flush())}))}else{l('probe transport "%s" failed',e);const s=new Error("probe error");s.transport=t.name,this.emitReserved("upgradeError",s)}})))};function r(){s||(s=!0,u(),t.close(),t=null)}const o=s=>{const n=new Error("probe error: "+s);n.transport=t.name,r(),l('probe transport "%s" failed because of error: %s',e,s),this.emitReserved("upgradeError",n)};function i(){o("transport closed")}function a(){o("socket closed")}function c(e){t&&e.name!==t.name&&(l('"%s" works - aborting "%s"',e.name,t.name),r())}const u=()=>{t.removeListener("open",n),t.removeListener("error",o),t.removeListener("close",i),this.off("close",a),this.off("upgrading",c)};t.once("open",n),t.once("error",o),t.once("close",i),this.once("close",a),this.once("upgrading",c),t.open()}onOpen(){if(l("socket open"),this.readyState="open",d.priorWebsocketSuccess="websocket"===this.transport.name,this.emitReserved("open"),this.flush(),"open"===this.readyState&&this.opts.upgrade){l("starting upgrade probes");let e=0;const t=this.upgrades.length;for(;e{this.onClose("ping timeout")}),this.pingInterval+this.pingTimeout),this.opts.autoUnref&&this.pingTimeoutTimer.unref()}onDrain(){this.writeBuffer.splice(0,this.prevBufferLen),this.prevBufferLen=0,0===this.writeBuffer.length?this.emitReserved("drain"):this.flush()}flush(){if("closed"!==this.readyState&&this.transport.writable&&!this.upgrading&&this.writeBuffer.length){const e=this.getWritablePackets();l("flushing %d packets in socket",e.length),this.transport.send(e),this.prevBufferLen=e.length,this.emitReserved("flush")}}getWritablePackets(){if(!(this.maxPayload&&"polling"===this.transport.name&&this.writeBuffer.length>1))return this.writeBuffer;let e=1;for(let t=0;t0&&e>this.maxPayload)return l("only send %d out of %d packets",t,this.writeBuffer.length),this.writeBuffer.slice(0,t);e+=2}return l("payload size is %d (max: %d)",e,this.maxPayload),this.writeBuffer}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,n){if("function"==typeof t&&(n=t,t=void 0),"function"==typeof s&&(n=s,s=null),"closing"===this.readyState||"closed"===this.readyState)return;(s=s||{}).compress=!1!==s.compress;const r={type:e,data:t,options:s};this.emitReserved("packetCreate",r),this.writeBuffer.push(r),n&&this.once("flush",n),this.flush()}close(){const e=()=>{this.onClose("forced close"),l("socket closing - telling transport to close"),this.transport.close()},t=()=>{this.off("upgrade",t),this.off("upgradeError",t),e()},s=()=>{this.once("upgrade",t),this.once("upgradeError",t)};return"opening"!==this.readyState&&"open"!==this.readyState||(this.readyState="closing",this.writeBuffer.length?this.once("drain",(()=>{this.upgrading?s():e()})):this.upgrading?s():e()),this}onError(e){l("socket error %j",e),d.priorWebsocketSuccess=!1,this.emitReserved("error",e),this.onClose("transport error",e)}onClose(e,t){"opening"!==this.readyState&&"open"!==this.readyState&&"closing"!==this.readyState||(l('socket close with reason: "%s"',e),this.clearTimeoutFn(this.pingTimeoutTimer),this.transport.removeAllListeners("close"),this.transport.close(),this.transport.removeAllListeners(),"function"==typeof removeEventListener&&(removeEventListener("beforeunload",this.beforeunloadEventListener,!1),removeEventListener("offline",this.offlineEventListener,!1)),this.readyState="closed",this.id=null,this.emitReserved("close",e,t),this.writeBuffer=[],this.prevBufferLen=0)}filterUpgrades(e){const t=[];let s=0;const n=e.length;for(;s{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.transports=void 0;const n=s(484),r=s(308);t.transports={websocket:r.WS,polling:n.Polling}},484:function(e,t,s){"use strict";var n=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.Request=t.Polling=void 0;const r=s(870),o=n(s(802)),i=s(726),a=s(754),c=s(373),u=s(666),h=s(260),l=s(622),d=s(242),p=(0,o.default)("engine.io-client:polling");function f(){}const g=null!=new u.XHR({xdomain:!1}).responseType;class m extends r.Transport{constructor(e){if(super(e),this.polling=!1,"undefined"!=typeof location){const t="https:"===location.protocol;let s=location.port;s||(s=t?"443":"80"),this.xd="undefined"!=typeof location&&e.hostname!==location.hostname||s!==e.port,this.xs=e.secure!==t}const t=e&&e.forceBase64;this.supportsBinary=g&&!t}get name(){return"polling"}doOpen(){this.poll()}pause(e){this.readyState="pausing";const t=()=>{p("paused"),this.readyState="paused",e()};if(this.polling||!this.writable){let e=0;this.polling&&(p("we are currently polling - waiting to pause"),e++,this.once("pollComplete",(function(){p("pre-pause polling complete"),--e||t()}))),this.writable||(p("we are currently writing - waiting to pause"),e++,this.once("drain",(function(){p("pre-pause writing complete"),--e||t()})))}else t()}poll(){p("polling"),this.polling=!0,this.doPoll(),this.emitReserved("poll")}onData(e){p("polling got data %s",e),(0,c.decodePayload)(e,this.socket.binaryType).forEach((e=>{if("opening"===this.readyState&&"open"===e.type&&this.onOpen(),"close"===e.type)return this.onClose({description:"transport closed by the server"}),!1;this.onPacket(e)})),"closed"!==this.readyState&&(this.polling=!1,this.emitReserved("pollComplete"),"open"===this.readyState?this.poll():p('ignoring poll - transport state "%s"',this.readyState))}doClose(){const e=()=>{p("writing close packet"),this.write([{type:"close"}])};"open"===this.readyState?(p("transport open - closing"),e()):(p("transport not open - deferring close"),this.once("open",e))}write(e){this.writable=!1,(0,c.encodePayload)(e,(e=>{this.doWrite(e,(()=>{this.writable=!0,this.emitReserved("drain")}))}))}uri(){let e=this.query||{};const t=this.opts.secure?"https":"http";let s="";!1!==this.opts.timestampRequests&&(e[this.opts.timestampParam]=(0,i.yeast)()),this.supportsBinary||e.sid||(e.b64=1),this.opts.port&&("https"===t&&443!==Number(this.opts.port)||"http"===t&&80!==Number(this.opts.port))&&(s=":"+this.opts.port);const n=(0,a.encode)(e);return t+"://"+(-1!==this.opts.hostname.indexOf(":")?"["+this.opts.hostname+"]":this.opts.hostname)+s+this.opts.path+(n.length?"?"+n:"")}request(e={}){return Object.assign(e,{xd:this.xd,xs:this.xs},this.opts),new y(this.uri(),e)}doWrite(e,t){const s=this.request({method:"POST",data:e});s.on("success",t),s.on("error",((e,t)=>{this.onError("xhr post error",e,t)}))}doPoll(){p("xhr poll");const e=this.request();e.on("data",this.onData.bind(this)),e.on("error",((e,t)=>{this.onError("xhr poll error",e,t)})),this.pollXhr=e}}t.Polling=m;class y extends h.Emitter{constructor(e,t){super(),(0,l.installTimerFunctions)(this,t),this.opts=t,this.method=t.method||"GET",this.uri=e,this.async=!1!==t.async,this.data=void 0!==t.data?t.data:null,this.create()}create(){const e=(0,l.pick)(this.opts,"agent","pfx","key","passphrase","cert","ca","ciphers","rejectUnauthorized","autoUnref");e.xdomain=!!this.opts.xd,e.xscheme=!!this.opts.xs;const t=this.xhr=new u.XHR(e);try{p("xhr open %s: %s",this.method,this.uri),t.open(this.method,this.uri,this.async);try{if(this.opts.extraHeaders){t.setDisableHeaderCheck&&t.setDisableHeaderCheck(!0);for(let e in this.opts.extraHeaders)this.opts.extraHeaders.hasOwnProperty(e)&&t.setRequestHeader(e,this.opts.extraHeaders[e])}}catch(e){}if("POST"===this.method)try{t.setRequestHeader("Content-type","text/plain;charset=UTF-8")}catch(e){}try{t.setRequestHeader("Accept","*/*")}catch(e){}"withCredentials"in t&&(t.withCredentials=this.opts.withCredentials),this.opts.requestTimeout&&(t.timeout=this.opts.requestTimeout),t.onreadystatechange=()=>{4===t.readyState&&(200===t.status||1223===t.status?this.onLoad():this.setTimeoutFn((()=>{this.onError("number"==typeof t.status?t.status:0)}),0))},p("xhr data %s",this.data),t.send(this.data)}catch(e){return void this.setTimeoutFn((()=>{this.onError(e)}),0)}"undefined"!=typeof document&&(this.index=y.requestsCount++,y.requests[this.index]=this)}onError(e){this.emitReserved("error",e,this.xhr),this.cleanup(!0)}cleanup(e){if(void 0!==this.xhr&&null!==this.xhr){if(this.xhr.onreadystatechange=f,e)try{this.xhr.abort()}catch(e){}"undefined"!=typeof document&&delete y.requests[this.index],this.xhr=null}}onLoad(){const e=this.xhr.responseText;null!==e&&(this.emitReserved("data",e),this.emitReserved("success"),this.cleanup())}abort(){this.cleanup()}}if(t.Request=y,y.requestsCount=0,y.requests={},"undefined"!=typeof document)if("function"==typeof attachEvent)attachEvent("onunload",C);else if("function"==typeof addEventListener){const e="onpagehide"in d.globalThisShim?"pagehide":"unload";addEventListener(e,C,!1)}function C(){for(let e in y.requests)y.requests.hasOwnProperty(e)&&y.requests[e].abort()}},552:(e,t,s)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.defaultBinaryType=t.usingBrowserWebSocket=t.WebSocket=t.nextTick=void 0;const n=s(242);t.nextTick="function"==typeof Promise&&"function"==typeof Promise.resolve?e=>Promise.resolve().then(e):(e,t)=>t(e,0),t.WebSocket=n.globalThisShim.WebSocket||n.globalThisShim.MozWebSocket,t.usingBrowserWebSocket=!0,t.defaultBinaryType="arraybuffer"},308:function(e,t,s){"use strict";var n=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.WS=void 0;const r=s(870),o=s(754),i=s(726),a=s(622),c=s(552),u=n(s(802)),h=s(373),l=(0,u.default)("engine.io-client:websocket"),d="undefined"!=typeof navigator&&"string"==typeof navigator.product&&"reactnative"===navigator.product.toLowerCase();class p extends r.Transport{constructor(e){super(e),this.supportsBinary=!e.forceBase64}get name(){return"websocket"}doOpen(){if(!this.check())return;const e=this.uri(),t=this.opts.protocols,s=d?{}:(0,a.pick)(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=c.usingBrowserWebSocket&&!d?t?new c.WebSocket(e,t):new c.WebSocket(e):new c.WebSocket(e,t,s)}catch(e){return this.emitReserved("error",e)}this.ws.binaryType=this.socket.binaryType||c.defaultBinaryType,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{const t={};!c.usingBrowserWebSocket&&(s.options&&(t.compress=s.options.compress),this.opts.perMessageDeflate)&&("string"==typeof e?Buffer.byteLength(e):e.length){this.writable=!0,this.emitReserved("drain")}),this.setTimeoutFn)}))}}doClose(){void 0!==this.ws&&(this.ws.close(),this.ws=null)}uri(){let e=this.query||{};const t=this.opts.secure?"wss":"ws";let s="";this.opts.port&&("wss"===t&&443!==Number(this.opts.port)||"ws"===t&&80!==Number(this.opts.port))&&(s=":"+this.opts.port),this.opts.timestampRequests&&(e[this.opts.timestampParam]=(0,i.yeast)()),this.supportsBinary||(e.b64=1);const n=(0,o.encode)(e);return t+"://"+(-1!==this.opts.hostname.indexOf(":")?"["+this.opts.hostname+"]":this.opts.hostname)+s+this.opts.path+(n.length?"?"+n:"")}check(){return!!c.WebSocket}}t.WS=p},666:(e,t,s)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.XHR=void 0;const n=s(419),r=s(242);t.XHR=function(e){const t=e.xdomain;try{if("undefined"!=typeof XMLHttpRequest&&(!t||n.hasCORS))return new XMLHttpRequest}catch(e){}if(!t)try{return new(r.globalThisShim[["Active"].concat("Object").join("X")])("Microsoft.XMLHTTP")}catch(e){}}},622:(e,t,s)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.byteLength=t.installTimerFunctions=t.pick=void 0;const n=s(242);t.pick=function(e,...t){return t.reduce(((t,s)=>(e.hasOwnProperty(s)&&(t[s]=e[s]),t)),{})};const r=n.globalThisShim.setTimeout,o=n.globalThisShim.clearTimeout;t.installTimerFunctions=function(e,t){t.useNativeTimers?(e.setTimeoutFn=r.bind(n.globalThisShim),e.clearTimeoutFn=o.bind(n.globalThisShim)):(e.setTimeoutFn=n.globalThisShim.setTimeout.bind(n.globalThisShim),e.clearTimeoutFn=n.globalThisShim.clearTimeout.bind(n.globalThisShim))},t.byteLength=function(e){return"string"==typeof e?function(e){let t=0,s=0;for(let n=0,r=e.length;n=57344?s+=3:(n++,s+=4);return s}(e):Math.ceil(1.33*(e.byteLength||e.size))}},87:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ERROR_PACKET=t.PACKET_TYPES_REVERSE=t.PACKET_TYPES=void 0;const s=Object.create(null);t.PACKET_TYPES=s,s.open="0",s.close="1",s.ping="2",s.pong="3",s.message="4",s.upgrade="5",s.noop="6";const n=Object.create(null);t.PACKET_TYPES_REVERSE=n,Object.keys(s).forEach((e=>{n[s[e]]=e})),t.ERROR_PACKET={type:"error",data:"parser error"}},469:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.decode=t.encode=void 0;const s="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",n="undefined"==typeof Uint8Array?[]:new Uint8Array(256);for(let e=0;e<64;e++)n[s.charCodeAt(e)]=e;t.encode=e=>{let t,n=new Uint8Array(e),r=n.length,o="";for(t=0;t>2],o+=s[(3&n[t])<<4|n[t+1]>>4],o+=s[(15&n[t+1])<<2|n[t+2]>>6],o+=s[63&n[t+2]];return r%3==2?o=o.substring(0,o.length-1)+"=":r%3==1&&(o=o.substring(0,o.length-2)+"=="),o},t.decode=e=>{let t,s,r,o,i,a=.75*e.length,c=e.length,u=0;"="===e[e.length-1]&&(a--,"="===e[e.length-2]&&a--);const h=new ArrayBuffer(a),l=new Uint8Array(h);for(t=0;t>4,l[u++]=(15&r)<<4|o>>2,l[u++]=(3&o)<<6|63&i;return h}},572:(e,t,s)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});const n=s(87),r=s(469),o="function"==typeof ArrayBuffer,i=(e,t)=>{if(o){const s=(0,r.decode)(e);return a(s,t)}return{base64:!0,data:e}},a=(e,t)=>"blob"===t&&e instanceof ArrayBuffer?new Blob([e]):e;t.default=(e,t)=>{if("string"!=typeof e)return{type:"message",data:a(e,t)};const s=e.charAt(0);return"b"===s?{type:"message",data:i(e.substring(1),t)}:n.PACKET_TYPES_REVERSE[s]?e.length>1?{type:n.PACKET_TYPES_REVERSE[s],data:e.substring(1)}:{type:n.PACKET_TYPES_REVERSE[s]}:n.ERROR_PACKET}},908:(e,t,s)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});const n=s(87),r="function"==typeof Blob||"undefined"!=typeof Blob&&"[object BlobConstructor]"===Object.prototype.toString.call(Blob),o="function"==typeof ArrayBuffer,i=(e,t)=>{const s=new FileReader;return s.onload=function(){const e=s.result.split(",")[1];t("b"+(e||""))},s.readAsDataURL(e)};t.default=({type:e,data:t},s,a)=>{return r&&t instanceof Blob?s?a(t):i(t,a):o&&(t instanceof ArrayBuffer||(c=t,"function"==typeof ArrayBuffer.isView?ArrayBuffer.isView(c):c&&c.buffer instanceof ArrayBuffer))?s?a(t):i(new Blob([t]),a):a(n.PACKET_TYPES[e]+(t||""));var c}},373:(e,t,s)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.decodePayload=t.decodePacket=t.encodePayload=t.encodePacket=t.protocol=void 0;const n=s(908);t.encodePacket=n.default;const r=s(572);t.decodePacket=r.default;const o=String.fromCharCode(30);t.encodePayload=(e,t)=>{const s=e.length,r=new Array(s);let i=0;e.forEach(((e,a)=>{(0,n.default)(e,!1,(e=>{r[a]=e,++i===s&&t(r.join(o))}))}))},t.decodePayload=(e,t)=>{const s=e.split(o),n=[];for(let e=0;e{"use strict";function s(e){e=e||{},this.ms=e.min||100,this.max=e.max||1e4,this.factor=e.factor||2,this.jitter=e.jitter>0&&e.jitter<=1?e.jitter:0,this.attempts=0}Object.defineProperty(t,"__esModule",{value:!0}),t.Backoff=void 0,t.Backoff=s,s.prototype.duration=function(){var e=this.ms*Math.pow(this.factor,this.attempts++);if(this.jitter){var t=Math.random(),s=Math.floor(t*this.jitter*e);e=0==(1&Math.floor(10*t))?e-s:e+s}return 0|Math.min(e,this.max)},s.prototype.reset=function(){this.attempts=0},s.prototype.setMin=function(e){this.ms=e},s.prototype.setMax=function(e){this.max=e},s.prototype.setJitter=function(e){this.jitter=e}},46:function(e,t,s){"use strict";var n=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.default=t.connect=t.io=t.Socket=t.Manager=t.protocol=void 0;const r=s(84),o=s(168);Object.defineProperty(t,"Manager",{enumerable:!0,get:function(){return o.Manager}});const i=s(312);Object.defineProperty(t,"Socket",{enumerable:!0,get:function(){return i.Socket}});const a=n(s(669)).default("socket.io-client"),c={};function u(e,t){"object"==typeof e&&(t=e,e=void 0),t=t||{};const s=r.url(e,t.path||"/socket.io"),n=s.source,i=s.id,u=s.path,h=c[i]&&u in c[i].nsps;let l;return t.forceNew||t["force new connection"]||!1===t.multiplex||h?(a("ignoring socket cache for %s",n),l=new o.Manager(n,t)):(c[i]||(a("new io instance for %s",n),c[i]=new o.Manager(n,t)),l=c[i]),s.query&&!t.query&&(t.query=s.queryKey),l.socket(s.path,t)}t.io=u,t.connect=u,t.default=u,Object.assign(u,{Manager:o.Manager,Socket:i.Socket,io:u,connect:u});var h=s(514);Object.defineProperty(t,"protocol",{enumerable:!0,get:function(){return h.protocol}}),e.exports=u},168:function(e,t,s){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,s,n){void 0===n&&(n=s),Object.defineProperty(e,n,{enumerable:!0,get:function(){return t[s]}})}:function(e,t,s,n){void 0===n&&(n=s),e[n]=t[s]}),r=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),o=this&&this.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var s in e)"default"!==s&&Object.prototype.hasOwnProperty.call(e,s)&&n(t,e,s);return r(t,e),t},i=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.Manager=void 0;const a=s(679),c=s(312),u=o(s(514)),h=s(149),l=s(159),d=s(260),p=i(s(669)).default("socket.io-client:manager");class f extends d.Emitter{constructor(e,t){var s;super(),this.nsps={},this.subs=[],e&&"object"==typeof e&&(t=e,e=void 0),(t=t||{}).path=t.path||"/socket.io",this.opts=t,a.installTimerFunctions(this,t),this.reconnection(!1!==t.reconnection),this.reconnectionAttempts(t.reconnectionAttempts||1/0),this.reconnectionDelay(t.reconnectionDelay||1e3),this.reconnectionDelayMax(t.reconnectionDelayMax||5e3),this.randomizationFactor(null!==(s=t.randomizationFactor)&&void 0!==s?s:.5),this.backoff=new l.Backoff({min:this.reconnectionDelay(),max:this.reconnectionDelayMax(),jitter:this.randomizationFactor()}),this.timeout(null==t.timeout?2e4:t.timeout),this._readyState="closed",this.uri=e;const n=t.parser||u;this.encoder=new n.Encoder,this.decoder=new n.Decoder,this._autoConnect=!1!==t.autoConnect,this._autoConnect&&this.open()}reconnection(e){return arguments.length?(this._reconnection=!!e,this):this._reconnection}reconnectionAttempts(e){return void 0===e?this._reconnectionAttempts:(this._reconnectionAttempts=e,this)}reconnectionDelay(e){var t;return void 0===e?this._reconnectionDelay:(this._reconnectionDelay=e,null===(t=this.backoff)||void 0===t||t.setMin(e),this)}randomizationFactor(e){var t;return void 0===e?this._randomizationFactor:(this._randomizationFactor=e,null===(t=this.backoff)||void 0===t||t.setJitter(e),this)}reconnectionDelayMax(e){var t;return void 0===e?this._reconnectionDelayMax:(this._reconnectionDelayMax=e,null===(t=this.backoff)||void 0===t||t.setMax(e),this)}timeout(e){return arguments.length?(this._timeout=e,this):this._timeout}maybeReconnectOnOpen(){!this._reconnecting&&this._reconnection&&0===this.backoff.attempts&&this.reconnect()}open(e){if(p("readyState %s",this._readyState),~this._readyState.indexOf("open"))return this;p("opening %s",this.uri),this.engine=new a.Socket(this.uri,this.opts);const t=this.engine,s=this;this._readyState="opening",this.skipReconnect=!1;const n=h.on(t,"open",(function(){s.onopen(),e&&e()})),r=h.on(t,"error",(t=>{p("error"),s.cleanup(),s._readyState="closed",this.emitReserved("error",t),e?e(t):s.maybeReconnectOnOpen()}));if(!1!==this._timeout){const e=this._timeout;p("connect attempt will timeout after %d",e),0===e&&n();const s=this.setTimeoutFn((()=>{p("connect attempt timed out after %d",e),n(),t.close(),t.emit("error",new Error("timeout"))}),e);this.opts.autoUnref&&s.unref(),this.subs.push((function(){clearTimeout(s)}))}return this.subs.push(n),this.subs.push(r),this}connect(e){return this.open(e)}onopen(){p("open"),this.cleanup(),this._readyState="open",this.emitReserved("open");const e=this.engine;this.subs.push(h.on(e,"ping",this.onping.bind(this)),h.on(e,"data",this.ondata.bind(this)),h.on(e,"error",this.onerror.bind(this)),h.on(e,"close",this.onclose.bind(this)),h.on(this.decoder,"decoded",this.ondecoded.bind(this)))}onping(){this.emitReserved("ping")}ondata(e){try{this.decoder.add(e)}catch(e){this.onclose("parse error",e)}}ondecoded(e){a.nextTick((()=>{this.emitReserved("packet",e)}),this.setTimeoutFn)}onerror(e){p("error",e),this.emitReserved("error",e)}socket(e,t){let s=this.nsps[e];return s?this._autoConnect&&!s.active&&s.connect():(s=new c.Socket(this,e,t),this.nsps[e]=s),s}_destroy(e){const t=Object.keys(this.nsps);for(const e of t)if(this.nsps[e].active)return void p("socket %s is still active, skipping close",e);this._close()}_packet(e){p("writing packet %j",e);const t=this.encoder.encode(e);for(let s=0;se())),this.subs.length=0,this.decoder.destroy()}_close(){p("disconnect"),this.skipReconnect=!0,this._reconnecting=!1,this.onclose("forced close"),this.engine&&this.engine.close()}disconnect(){return this._close()}onclose(e,t){p("closed due to %s",e),this.cleanup(),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)p("reconnect failed"),this.backoff.reset(),this.emitReserved("reconnect_failed"),this._reconnecting=!1;else{const t=this.backoff.duration();p("will wait %dms before reconnect attempt",t),this._reconnecting=!0;const s=this.setTimeoutFn((()=>{e.skipReconnect||(p("attempting reconnect"),this.emitReserved("reconnect_attempt",e.backoff.attempts),e.skipReconnect||e.open((t=>{t?(p("reconnect attempt error"),e._reconnecting=!1,e.reconnect(),this.emitReserved("reconnect_error",t)):(p("reconnect success"),e.onreconnect())})))}),t);this.opts.autoUnref&&s.unref(),this.subs.push((function(){clearTimeout(s)}))}}onreconnect(){const e=this.backoff.attempts;this._reconnecting=!1,this.backoff.reset(),this.emitReserved("reconnect",e)}}t.Manager=f},149:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.on=void 0,t.on=function(e,t,s){return e.on(t,s),function(){e.off(t,s)}}},312:function(e,t,s){"use strict";var n=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.Socket=void 0;const r=s(514),o=s(149),i=s(260),a=n(s(669)).default("socket.io-client:socket"),c=Object.freeze({connect:1,connect_error:1,disconnect:1,disconnecting:1,newListener:1,removeListener:1});class u extends i.Emitter{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=[o.on(e,"open",this.onopen.bind(this)),o.on(e,"packet",this.onpacket.bind(this)),o.on(e,"error",this.onerror.bind(this)),o.on(e,"close",this.onclose.bind(this))]}get active(){return!!this.subs}connect(){return this.connected||(this.subEvents(),this.io._reconnecting||this.io.open(),"open"===this.io._readyState&&this.onopen()),this}open(){return this.connect()}send(...e){return e.unshift("message"),this.emit.apply(this,e),this}emit(e,...t){if(c.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 s={type:r.PacketType.EVENT,data:t,options:{}};if(s.options.compress=!1!==this.flags.compress,"function"==typeof t[t.length-1]){const e=this.ids++;a("emitting packet with ack id %d",e);const n=t.pop();this._registerAckCallback(e,n),s.id=e}const n=this.io.engine&&this.io.engine.transport&&this.io.engine.transport.writable;return!this.flags.volatile||n&&this.connected?this.connected?(this.notifyOutgoingListeners(s),this.packet(s)):this.sendBuffer.push(s):a("discard packet as the transport is not currently writable"),this.flags={},this}_registerAckCallback(e,t){var s;const n=null!==(s=this.flags.timeout)&&void 0!==s?s:this._opts.ackTimeout;if(void 0===n)return void(this.acks[e]=t);const r=this.io.setTimeoutFn((()=>{delete this.acks[e];for(let t=0;t{this.io.clearTimeoutFn(r),t.apply(this,[null,...e])}}emitWithAck(e,...t){const s=void 0!==this.flags.timeout||void 0!==this._opts.ackTimeout;return new Promise(((n,r)=>{t.push(((e,t)=>s?e?r(e):n(t):n(e))),this.emit(e,...t)}))}_addToQueue(e){let t;"function"==typeof e[e.length-1]&&(t=e.pop());const s={id:this._queueSeq++,tryCount:0,pending:!1,args:e,flags:Object.assign({fromQueue:!0},this.flags)};e.push(((e,...n)=>{if(s===this._queue[0])return null!==e?s.tryCount>this._opts.retries&&(a("packet [%d] is discarded after %d tries",s.id,s.tryCount),this._queue.shift(),t&&t(e)):(a("packet [%d] was successfully sent",s.id),this._queue.shift(),t&&t(null,...n)),s.pending=!1,this._drainQueue()})),this._queue.push(s),this._drainQueue()}_drainQueue(e=!1){if(a("draining queue"),!this.connected||0===this._queue.length)return;const t=this._queue[0];!t.pending||e?(t.pending=!0,t.tryCount++,a("sending packet [%d] (try n°%d)",t.id,t.tryCount),this.flags=t.flags,this.emit.apply(this,t.args)):a("packet [%d] has already been sent and is waiting for an ack",t.id)}packet(e){e.nsp=this.nsp,this.io._packet(e)}onopen(){a("transport is open - connecting"),"function"==typeof this.auth?this.auth((e=>{this._sendConnectPacket(e)})):this._sendConnectPacket(this.auth)}_sendConnectPacket(e){this.packet({type:r.PacketType.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){a("close (%s)",e),this.connected=!1,delete this.id,this.emitReserved("disconnect",e,t)}onpacket(e){if(e.nsp===this.nsp)switch(e.type){case r.PacketType.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 r.PacketType.EVENT:case r.PacketType.BINARY_EVENT:this.onevent(e);break;case r.PacketType.ACK:case r.PacketType.BINARY_ACK:this.onack(e);break;case r.PacketType.DISCONNECT:this.ondisconnect();break;case r.PacketType.CONNECT_ERROR:this.destroy();const t=new Error(e.data.message);t.data=e.data.data,this.emitReserved("connect_error",t)}}onevent(e){const t=e.data||[];a("emitting event %j",t),null!=e.id&&(a("attaching ack callback to event"),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&&"string"==typeof e[e.length-1]&&(this._lastOffset=e[e.length-1])}ack(e){const t=this;let s=!1;return function(...n){s||(s=!0,a("sending ack %j",n),t.packet({type:r.PacketType.ACK,id:e,data:n}))}}onack(e){const t=this.acks[e.id];"function"==typeof t?(a("calling ack %s with %j",e.id,e.data),t.apply(this,e.data),delete this.acks[e.id]):a("bad ack %s",e.id)}onconnect(e,t){a("socket connected with id %s",e),this.id=e,this.recovered=t&&this._pid===t,this._pid=t,this.connected=!0,this.emitBuffered(),this.emitReserved("connect"),this._drainQueue(!0)}emitBuffered(){this.receiveBuffer.forEach((e=>this.emitEvent(e))),this.receiveBuffer=[],this.sendBuffer.forEach((e=>{this.notifyOutgoingListeners(e),this.packet(e)})),this.sendBuffer=[]}ondisconnect(){a("server disconnect (%s)",this.nsp),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&&(a("performing disconnect (%s)",this.nsp),this.packet({type:r.PacketType.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{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.reconstructPacket=t.deconstructPacket=void 0;const n=s(665);function r(e,t){if(!e)return e;if((0,n.isBinary)(e)){const s={_placeholder:!0,num:t.length};return t.push(e),s}if(Array.isArray(e)){const s=new Array(e.length);for(let n=0;n=0&&e.num{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.Decoder=t.Encoder=t.PacketType=t.protocol=void 0;const n=s(260),r=s(880),o=s(665),i=(0,s(618).default)("socket.io-parser");var a;t.protocol=5,function(e){e[e.CONNECT=0]="CONNECT",e[e.DISCONNECT=1]="DISCONNECT",e[e.EVENT=2]="EVENT",e[e.ACK=3]="ACK",e[e.CONNECT_ERROR=4]="CONNECT_ERROR",e[e.BINARY_EVENT=5]="BINARY_EVENT",e[e.BINARY_ACK=6]="BINARY_ACK"}(a=t.PacketType||(t.PacketType={})),t.Encoder=class{constructor(e){this.replacer=e}encode(e){return i("encoding packet %j",e),e.type!==a.EVENT&&e.type!==a.ACK||!(0,o.hasBinary)(e)?[this.encodeAsString(e)]:this.encodeAsBinary({type:e.type===a.EVENT?a.BINARY_EVENT:a.BINARY_ACK,nsp:e.nsp,data:e.data,id:e.id})}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+","),null!=e.id&&(t+=e.id),null!=e.data&&(t+=JSON.stringify(e.data,this.replacer)),i("encoded %j as %s",e,t),t}encodeAsBinary(e){const t=(0,r.deconstructPacket)(e),s=this.encodeAsString(t.packet),n=t.buffers;return n.unshift(s),n}};class c extends n.Emitter{constructor(e){super(),this.reviver=e}add(e){let t;if("string"==typeof e){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 u(t),0===t.attachments&&super.emitReserved("decoded",t)):super.emitReserved("decoded",t)}else{if(!(0,o.isBinary)(e)&&!e.base64)throw new Error("Unknown type: "+e);if(!this.reconstructor)throw new Error("got binary data when not reconstructing a packet");t=this.reconstructor.takeBinaryData(e),t&&(this.reconstructor=null,super.emitReserved("decoded",t))}}decodeString(e){let t=0;const s={type:Number(e.charAt(0))};if(void 0===a[s.type])throw new Error("unknown packet type "+s.type);if(s.type===a.BINARY_EVENT||s.type===a.BINARY_ACK){const n=t+1;for(;"-"!==e.charAt(++t)&&t!=e.length;);const r=e.substring(n,t);if(r!=Number(r)||"-"!==e.charAt(t))throw new Error("Illegal attachments");s.attachments=Number(r)}if("/"===e.charAt(t+1)){const n=t+1;for(;++t&&","!==e.charAt(t)&&t!==e.length;);s.nsp=e.substring(n,t)}else s.nsp="/";const n=e.charAt(t+1);if(""!==n&&Number(n)==n){const n=t+1;for(;++t;){const s=e.charAt(t);if(null==s||Number(s)!=s){--t;break}if(t===e.length)break}s.id=Number(e.substring(n,t+1))}if(e.charAt(++t)){const n=this.tryParse(e.substr(t));if(!c.isPayloadValid(s.type,n))throw new Error("invalid payload");s.data=n}return i("decoded %s as %j",e,s),s}tryParse(e){try{return JSON.parse(e,this.reviver)}catch(e){return!1}}static isPayloadValid(e,t){switch(e){case a.CONNECT:return"object"==typeof t;case a.DISCONNECT:return void 0===t;case a.CONNECT_ERROR:return"string"==typeof t||"object"==typeof t;case a.EVENT:case a.BINARY_EVENT:return Array.isArray(t)&&("string"==typeof t[0]||"number"==typeof t[0]);case a.ACK:case a.BINARY_ACK:return Array.isArray(t)}}destroy(){this.reconstructor&&(this.reconstructor.finishedReconstruction(),this.reconstructor=null)}}t.Decoder=c;class u{constructor(e){this.packet=e,this.buffers=[],this.reconPack=e}takeBinaryData(e){if(this.buffers.push(e),this.buffers.length===this.reconPack.attachments){const e=(0,r.reconstructPacket)(this.reconPack,this.buffers);return this.finishedReconstruction(),e}return null}finishedReconstruction(){this.reconPack=null,this.buffers=[]}}},665:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.hasBinary=t.isBinary=void 0;const s="function"==typeof ArrayBuffer,n=Object.prototype.toString,r="function"==typeof Blob||"undefined"!=typeof Blob&&"[object BlobConstructor]"===n.call(Blob),o="function"==typeof File||"undefined"!=typeof File&&"[object FileConstructor]"===n.call(File);function i(e){return s&&(e instanceof ArrayBuffer||(e=>"function"==typeof ArrayBuffer.isView?ArrayBuffer.isView(e):e.buffer instanceof ArrayBuffer)(e))||r&&e instanceof Blob||o&&e instanceof File}t.isBinary=i,t.hasBinary=function e(t,s){if(!t||"object"!=typeof t)return!1;if(Array.isArray(t)){for(let s=0,n=t.length;s{"use strict";function n(e){if(e)return function(e){for(var t in n.prototype)e[t]=n.prototype[t];return e}(e)}s.r(t),s.d(t,{Emitter:()=>n}),n.prototype.on=n.prototype.addEventListener=function(e,t){return this._callbacks=this._callbacks||{},(this._callbacks["$"+e]=this._callbacks["$"+e]||[]).push(t),this},n.prototype.once=function(e,t){function s(){this.off(e,s),t.apply(this,arguments)}return s.fn=t,this.on(e,s),this},n.prototype.off=n.prototype.removeListener=n.prototype.removeAllListeners=n.prototype.removeEventListener=function(e,t){if(this._callbacks=this._callbacks||{},0==arguments.length)return this._callbacks={},this;var s,n=this._callbacks["$"+e];if(!n)return this;if(1==arguments.length)return delete this._callbacks["$"+e],this;for(var r=0;r{for(var n in t)s.o(t,n)&&!s.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},s.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),s.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},(()=>{"use strict";const e=s(46),t=s(862),n=s(182),r=s(336);function o(e,t=document){return t.querySelector(e)}function i(e,t=document){return Array.from(t.querySelectorAll(e))}function a(){const e=c.gradientName(),t=o("body");let s;t.classList.value=e,t.classList.add(c.getTimePeriod()),s=c.get24Hour()>=5&&c.get24Hour()<9?"morning":c.get24Hour()>=9&&c.get24Hour()<17?"afternoon":c.get24Hour()>=17&&c.get24Hour()<20?"evening":"night",o("#time-of-day").innerHTML=` ${c.getHour()}${c.getAmPm()}`}const c=new n.TimeManager,u=(0,e.io)({extraHeaders:{"x-authtoken":(0,t.authToken)()}});a(),setInterval(a,6e4),u.on("connect",(()=>{console.log(`Connected: ${u.id}`)})),u.on("authToken",(e=>{console.log(`recv auth token ${e}`),localStorage.setItem("authToken",e)})),u.on("ready",(function(){console.log("Server connection verified"),(0,r.configureChat)(u),i("nav a")[0].click()})),i("nav a").forEach((e=>{e.addEventListener("click",(e=>{const t=e.target;i("a",t.closest("nav")).forEach((e=>{e.classList.remove("active")})),t.classList.add("active");const s=o(t.getAttribute("hx-target").toString());Array.from(s.parentElement.children).forEach((e=>{e.classList.remove("active")})),s.classList.add("active")}))})),o("body").addEventListener("click",(e=>{var t;const s=e.target;if(s.parentElement.classList.contains("filter")){Array.from(s.parentElement.children).forEach((e=>e.classList.remove("active"))),s.classList.add("active");const e=s.getAttribute("data-filter"),t=o(`.filter-result[data-filter="${e}"]`,s.closest(".filter-container"));t&&Array.from(t.parentElement.children).forEach((t=>{t.getAttribute("data-filter")===e?(t.classList.remove("hidden"),t.classList.add("active")):(t.classList.add("hidden"),t.classList.remove("active"))}))}"dialog"===s.getAttribute("formmethod")&&"cancel"===s.getAttribute("value")&&(null===(t=s.closest("dialog"))||void 0===t||t.close())}));const h=new MutationObserver(((e,t)=>{const s={modal:!1,alert:!1};e.forEach((e=>{switch(e.target.id){case"modal-wrapper":s.modal=!0;break;case"alerts":s.alert=!0}})),s.modal&&o("#modal-wrapper").children.length&&i("#modal-wrapper dialog").forEach((e=>{e.open||e.showModal()})),s.alert&&o("#alerts").children.length&&i("#alerts .alert").forEach((e=>{if(!e.getAttribute("data-dismiss-at")){const t=Date.now()+3e3;e.setAttribute("data-dismiss-at",t.toString()),setTimeout((()=>{e.remove()}),3e3)}}))}));h.observe(o("#modal-wrapper"),{childList:!0}),h.observe(o("#alerts"),{childList:!0}),document.body.addEventListener("htmx:configRequest",(function(e){e.detail.headers["x-authtoken"]=(0,t.authToken)()})),document.body.addEventListener("htmx:load",(function(e){i(".disabled[data-block]").forEach((e=>{setTimeout((()=>{e.removeAttribute("disabled")}),3e3)}))})),document.body.addEventListener("htmx:beforeSwap",(function(e){"chat-form"===e.target.id&&(o("#message").value="")}))})()})(); \ No newline at end of file +(()=>{var e={802:(e,t,s)=>{t.formatArgs=function(t){if(t[0]=(this.useColors?"%c":"")+this.namespace+(this.useColors?" %c":" ")+t[0]+(this.useColors?"%c ":" ")+"+"+e.exports.humanize(this.diff),!this.useColors)return;const s="color: "+this.color;t.splice(1,0,s,"color: inherit");let n=0,r=0;t[0].replace(/%[a-zA-Z%]/g,(e=>{"%%"!==e&&(n++,"%c"===e&&(r=n))})),t.splice(r,0,s)},t.save=function(e){try{e?t.storage.setItem("debug",e):t.storage.removeItem("debug")}catch(e){}},t.load=function(){let e;try{e=t.storage.getItem("debug")}catch(e){}return!e&&"undefined"!=typeof process&&"env"in process&&(e=process.env.DEBUG),e},t.useColors=function(){return!("undefined"==typeof window||!window.process||"renderer"!==window.process.type&&!window.process.__nwjs)||("undefined"==typeof navigator||!navigator.userAgent||!navigator.userAgent.toLowerCase().match(/(edge|trident)\/(\d+)/))&&("undefined"!=typeof document&&document.documentElement&&document.documentElement.style&&document.documentElement.style.WebkitAppearance||"undefined"!=typeof window&&window.console&&(window.console.firebug||window.console.exception&&window.console.table)||"undefined"!=typeof navigator&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/)&&parseInt(RegExp.$1,10)>=31||"undefined"!=typeof navigator&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/))},t.storage=function(){try{return localStorage}catch(e){}}(),t.destroy=(()=>{let e=!1;return()=>{e||(e=!0,console.warn("Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`."))}})(),t.colors=["#0000CC","#0000FF","#0033CC","#0033FF","#0066CC","#0066FF","#0099CC","#0099FF","#00CC00","#00CC33","#00CC66","#00CC99","#00CCCC","#00CCFF","#3300CC","#3300FF","#3333CC","#3333FF","#3366CC","#3366FF","#3399CC","#3399FF","#33CC00","#33CC33","#33CC66","#33CC99","#33CCCC","#33CCFF","#6600CC","#6600FF","#6633CC","#6633FF","#66CC00","#66CC33","#9900CC","#9900FF","#9933CC","#9933FF","#99CC00","#99CC33","#CC0000","#CC0033","#CC0066","#CC0099","#CC00CC","#CC00FF","#CC3300","#CC3333","#CC3366","#CC3399","#CC33CC","#CC33FF","#CC6600","#CC6633","#CC9900","#CC9933","#CCCC00","#CCCC33","#FF0000","#FF0033","#FF0066","#FF0099","#FF00CC","#FF00FF","#FF3300","#FF3333","#FF3366","#FF3399","#FF33CC","#FF33FF","#FF6600","#FF6633","#FF9900","#FF9933","#FFCC00","#FFCC33"],t.log=console.debug||console.log||(()=>{}),e.exports=s(804)(t);const{formatters:n}=e.exports;n.j=function(e){try{return JSON.stringify(e)}catch(e){return"[UnexpectedJSONParseError]: "+e.message}}},804:(e,t,s)=>{e.exports=function(e){function t(e){let s,r,o,i=null;function a(...e){if(!a.enabled)return;const n=a,r=Number(new Date),o=r-(s||r);n.diff=o,n.prev=s,n.curr=r,s=r,e[0]=t.coerce(e[0]),"string"!=typeof e[0]&&e.unshift("%O");let i=0;e[0]=e[0].replace(/%([a-zA-Z%])/g,((s,r)=>{if("%%"===s)return"%";i++;const o=t.formatters[r];if("function"==typeof o){const t=e[i];s=o.call(n,t),e.splice(i,1),i--}return s})),t.formatArgs.call(n,e),(n.log||t.log).apply(n,e)}return a.namespace=e,a.useColors=t.useColors(),a.color=t.selectColor(e),a.extend=n,a.destroy=t.destroy,Object.defineProperty(a,"enabled",{enumerable:!0,configurable:!1,get:()=>null!==i?i:(r!==t.namespaces&&(r=t.namespaces,o=t.enabled(e)),o),set:e=>{i=e}}),"function"==typeof t.init&&t.init(a),a}function n(e,s){const n=t(this.namespace+(void 0===s?":":s)+e);return n.log=this.log,n}function r(e){return e.toString().substring(2,e.toString().length-2).replace(/\.\*\?$/,"*")}return t.debug=t,t.default=t,t.coerce=function(e){return e instanceof Error?e.stack||e.message:e},t.disable=function(){const e=[...t.names.map(r),...t.skips.map(r).map((e=>"-"+e))].join(",");return t.enable(""),e},t.enable=function(e){let s;t.save(e),t.namespaces=e,t.names=[],t.skips=[];const n=("string"==typeof e?e:"").split(/[\s,]+/),r=n.length;for(s=0;s{t[s]=e[s]})),t.names=[],t.skips=[],t.formatters={},t.selectColor=function(e){let s=0;for(let t=0;t{var t=1e3,s=60*t,n=60*s,r=24*n;function o(e,t,s,n){var r=t>=1.5*s;return Math.round(e/s)+" "+n+(r?"s":"")}e.exports=function(e,i){i=i||{};var a,c,u=typeof e;if("string"===u&&e.length>0)return function(e){if(!((e=String(e)).length>100)){var o=/^(-?(?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(e);if(o){var i=parseFloat(o[1]);switch((o[2]||"ms").toLowerCase()){case"years":case"year":case"yrs":case"yr":case"y":return 315576e5*i;case"weeks":case"week":case"w":return 6048e5*i;case"days":case"day":case"d":return i*r;case"hours":case"hour":case"hrs":case"hr":case"h":return i*n;case"minutes":case"minute":case"mins":case"min":case"m":return i*s;case"seconds":case"second":case"secs":case"sec":case"s":return i*t;case"milliseconds":case"millisecond":case"msecs":case"msec":case"ms":return i;default:return}}}}(e);if("number"===u&&isFinite(e))return i.long?(a=e,(c=Math.abs(a))>=r?o(a,c,r,"day"):c>=n?o(a,c,n,"hour"):c>=s?o(a,c,s,"minute"):c>=t?o(a,c,t,"second"):a+" ms"):function(e){var o=Math.abs(e);return o>=r?Math.round(e/r)+"d":o>=n?Math.round(e/n)+"h":o>=s?Math.round(e/s)+"m":o>=t?Math.round(e/t)+"s":e+"ms"}(e);throw new Error("val is not a non-empty string or a valid number. val="+JSON.stringify(e))}},669:(e,t,s)=>{t.formatArgs=function(t){if(t[0]=(this.useColors?"%c":"")+this.namespace+(this.useColors?" %c":" ")+t[0]+(this.useColors?"%c ":" ")+"+"+e.exports.humanize(this.diff),!this.useColors)return;const s="color: "+this.color;t.splice(1,0,s,"color: inherit");let n=0,r=0;t[0].replace(/%[a-zA-Z%]/g,(e=>{"%%"!==e&&(n++,"%c"===e&&(r=n))})),t.splice(r,0,s)},t.save=function(e){try{e?t.storage.setItem("debug",e):t.storage.removeItem("debug")}catch(e){}},t.load=function(){let e;try{e=t.storage.getItem("debug")}catch(e){}return!e&&"undefined"!=typeof process&&"env"in process&&(e=process.env.DEBUG),e},t.useColors=function(){return!("undefined"==typeof window||!window.process||"renderer"!==window.process.type&&!window.process.__nwjs)||("undefined"==typeof navigator||!navigator.userAgent||!navigator.userAgent.toLowerCase().match(/(edge|trident)\/(\d+)/))&&("undefined"!=typeof document&&document.documentElement&&document.documentElement.style&&document.documentElement.style.WebkitAppearance||"undefined"!=typeof window&&window.console&&(window.console.firebug||window.console.exception&&window.console.table)||"undefined"!=typeof navigator&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/)&&parseInt(RegExp.$1,10)>=31||"undefined"!=typeof navigator&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/))},t.storage=function(){try{return localStorage}catch(e){}}(),t.destroy=(()=>{let e=!1;return()=>{e||(e=!0,console.warn("Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`."))}})(),t.colors=["#0000CC","#0000FF","#0033CC","#0033FF","#0066CC","#0066FF","#0099CC","#0099FF","#00CC00","#00CC33","#00CC66","#00CC99","#00CCCC","#00CCFF","#3300CC","#3300FF","#3333CC","#3333FF","#3366CC","#3366FF","#3399CC","#3399FF","#33CC00","#33CC33","#33CC66","#33CC99","#33CCCC","#33CCFF","#6600CC","#6600FF","#6633CC","#6633FF","#66CC00","#66CC33","#9900CC","#9900FF","#9933CC","#9933FF","#99CC00","#99CC33","#CC0000","#CC0033","#CC0066","#CC0099","#CC00CC","#CC00FF","#CC3300","#CC3333","#CC3366","#CC3399","#CC33CC","#CC33FF","#CC6600","#CC6633","#CC9900","#CC9933","#CCCC00","#CCCC33","#FF0000","#FF0033","#FF0066","#FF0099","#FF00CC","#FF00FF","#FF3300","#FF3333","#FF3366","#FF3399","#FF33CC","#FF33FF","#FF6600","#FF6633","#FF9900","#FF9933","#FFCC00","#FFCC33"],t.log=console.debug||console.log||(()=>{}),e.exports=s(231)(t);const{formatters:n}=e.exports;n.j=function(e){try{return JSON.stringify(e)}catch(e){return"[UnexpectedJSONParseError]: "+e.message}}},231:(e,t,s)=>{e.exports=function(e){function t(e){let s,r,o,i=null;function a(...e){if(!a.enabled)return;const n=a,r=Number(new Date),o=r-(s||r);n.diff=o,n.prev=s,n.curr=r,s=r,e[0]=t.coerce(e[0]),"string"!=typeof e[0]&&e.unshift("%O");let i=0;e[0]=e[0].replace(/%([a-zA-Z%])/g,((s,r)=>{if("%%"===s)return"%";i++;const o=t.formatters[r];if("function"==typeof o){const t=e[i];s=o.call(n,t),e.splice(i,1),i--}return s})),t.formatArgs.call(n,e),(n.log||t.log).apply(n,e)}return a.namespace=e,a.useColors=t.useColors(),a.color=t.selectColor(e),a.extend=n,a.destroy=t.destroy,Object.defineProperty(a,"enabled",{enumerable:!0,configurable:!1,get:()=>null!==i?i:(r!==t.namespaces&&(r=t.namespaces,o=t.enabled(e)),o),set:e=>{i=e}}),"function"==typeof t.init&&t.init(a),a}function n(e,s){const n=t(this.namespace+(void 0===s?":":s)+e);return n.log=this.log,n}function r(e){return e.toString().substring(2,e.toString().length-2).replace(/\.\*\?$/,"*")}return t.debug=t,t.default=t,t.coerce=function(e){return e instanceof Error?e.stack||e.message:e},t.disable=function(){const e=[...t.names.map(r),...t.skips.map(r).map((e=>"-"+e))].join(",");return t.enable(""),e},t.enable=function(e){let s;t.save(e),t.namespaces=e,t.names=[],t.skips=[];const n=("string"==typeof e?e:"").split(/[\s,]+/),r=n.length;for(s=0;s{t[s]=e[s]})),t.names=[],t.skips=[],t.formatters={},t.selectColor=function(e){let s=0;for(let t=0;t{var t=1e3,s=60*t,n=60*s,r=24*n;function o(e,t,s,n){var r=t>=1.5*s;return Math.round(e/s)+" "+n+(r?"s":"")}e.exports=function(e,i){i=i||{};var a,c,u=typeof e;if("string"===u&&e.length>0)return function(e){if(!((e=String(e)).length>100)){var o=/^(-?(?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(e);if(o){var i=parseFloat(o[1]);switch((o[2]||"ms").toLowerCase()){case"years":case"year":case"yrs":case"yr":case"y":return 315576e5*i;case"weeks":case"week":case"w":return 6048e5*i;case"days":case"day":case"d":return i*r;case"hours":case"hour":case"hrs":case"hr":case"h":return i*n;case"minutes":case"minute":case"mins":case"min":case"m":return i*s;case"seconds":case"second":case"secs":case"sec":case"s":return i*t;case"milliseconds":case"millisecond":case"msecs":case"msec":case"ms":return i;default:return}}}}(e);if("number"===u&&isFinite(e))return i.long?(a=e,(c=Math.abs(a))>=r?o(a,c,r,"day"):c>=n?o(a,c,n,"hour"):c>=s?o(a,c,s,"minute"):c>=t?o(a,c,t,"second"):a+" ms"):function(e){var o=Math.abs(e);return o>=r?Math.round(e/r)+"d":o>=n?Math.round(e/n)+"h":o>=s?Math.round(e/s)+"m":o>=t?Math.round(e/t)+"s":e+"ms"}(e);throw new Error("val is not a non-empty string or a valid number. val="+JSON.stringify(e))}},618:(e,t,s)=>{t.formatArgs=function(t){if(t[0]=(this.useColors?"%c":"")+this.namespace+(this.useColors?" %c":" ")+t[0]+(this.useColors?"%c ":" ")+"+"+e.exports.humanize(this.diff),!this.useColors)return;const s="color: "+this.color;t.splice(1,0,s,"color: inherit");let n=0,r=0;t[0].replace(/%[a-zA-Z%]/g,(e=>{"%%"!==e&&(n++,"%c"===e&&(r=n))})),t.splice(r,0,s)},t.save=function(e){try{e?t.storage.setItem("debug",e):t.storage.removeItem("debug")}catch(e){}},t.load=function(){let e;try{e=t.storage.getItem("debug")}catch(e){}return!e&&"undefined"!=typeof process&&"env"in process&&(e=process.env.DEBUG),e},t.useColors=function(){return!("undefined"==typeof window||!window.process||"renderer"!==window.process.type&&!window.process.__nwjs)||("undefined"==typeof navigator||!navigator.userAgent||!navigator.userAgent.toLowerCase().match(/(edge|trident)\/(\d+)/))&&("undefined"!=typeof document&&document.documentElement&&document.documentElement.style&&document.documentElement.style.WebkitAppearance||"undefined"!=typeof window&&window.console&&(window.console.firebug||window.console.exception&&window.console.table)||"undefined"!=typeof navigator&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/)&&parseInt(RegExp.$1,10)>=31||"undefined"!=typeof navigator&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/))},t.storage=function(){try{return localStorage}catch(e){}}(),t.destroy=(()=>{let e=!1;return()=>{e||(e=!0,console.warn("Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`."))}})(),t.colors=["#0000CC","#0000FF","#0033CC","#0033FF","#0066CC","#0066FF","#0099CC","#0099FF","#00CC00","#00CC33","#00CC66","#00CC99","#00CCCC","#00CCFF","#3300CC","#3300FF","#3333CC","#3333FF","#3366CC","#3366FF","#3399CC","#3399FF","#33CC00","#33CC33","#33CC66","#33CC99","#33CCCC","#33CCFF","#6600CC","#6600FF","#6633CC","#6633FF","#66CC00","#66CC33","#9900CC","#9900FF","#9933CC","#9933FF","#99CC00","#99CC33","#CC0000","#CC0033","#CC0066","#CC0099","#CC00CC","#CC00FF","#CC3300","#CC3333","#CC3366","#CC3399","#CC33CC","#CC33FF","#CC6600","#CC6633","#CC9900","#CC9933","#CCCC00","#CCCC33","#FF0000","#FF0033","#FF0066","#FF0099","#FF00CC","#FF00FF","#FF3300","#FF3333","#FF3366","#FF3399","#FF33CC","#FF33FF","#FF6600","#FF6633","#FF9900","#FF9933","#FFCC00","#FFCC33"],t.log=console.debug||console.log||(()=>{}),e.exports=s(224)(t);const{formatters:n}=e.exports;n.j=function(e){try{return JSON.stringify(e)}catch(e){return"[UnexpectedJSONParseError]: "+e.message}}},224:(e,t,s)=>{e.exports=function(e){function t(e){let s,r,o,i=null;function a(...e){if(!a.enabled)return;const n=a,r=Number(new Date),o=r-(s||r);n.diff=o,n.prev=s,n.curr=r,s=r,e[0]=t.coerce(e[0]),"string"!=typeof e[0]&&e.unshift("%O");let i=0;e[0]=e[0].replace(/%([a-zA-Z%])/g,((s,r)=>{if("%%"===s)return"%";i++;const o=t.formatters[r];if("function"==typeof o){const t=e[i];s=o.call(n,t),e.splice(i,1),i--}return s})),t.formatArgs.call(n,e),(n.log||t.log).apply(n,e)}return a.namespace=e,a.useColors=t.useColors(),a.color=t.selectColor(e),a.extend=n,a.destroy=t.destroy,Object.defineProperty(a,"enabled",{enumerable:!0,configurable:!1,get:()=>null!==i?i:(r!==t.namespaces&&(r=t.namespaces,o=t.enabled(e)),o),set:e=>{i=e}}),"function"==typeof t.init&&t.init(a),a}function n(e,s){const n=t(this.namespace+(void 0===s?":":s)+e);return n.log=this.log,n}function r(e){return e.toString().substring(2,e.toString().length-2).replace(/\.\*\?$/,"*")}return t.debug=t,t.default=t,t.coerce=function(e){return e instanceof Error?e.stack||e.message:e},t.disable=function(){const e=[...t.names.map(r),...t.skips.map(r).map((e=>"-"+e))].join(",");return t.enable(""),e},t.enable=function(e){let s;t.save(e),t.namespaces=e,t.names=[],t.skips=[];const n=("string"==typeof e?e:"").split(/[\s,]+/),r=n.length;for(s=0;s{t[s]=e[s]})),t.names=[],t.skips=[],t.formatters={},t.selectColor=function(e){let s=0;for(let t=0;t{var t=1e3,s=60*t,n=60*s,r=24*n;function o(e,t,s,n){var r=t>=1.5*s;return Math.round(e/s)+" "+n+(r?"s":"")}e.exports=function(e,i){i=i||{};var a,c,u=typeof e;if("string"===u&&e.length>0)return function(e){if(!((e=String(e)).length>100)){var o=/^(-?(?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(e);if(o){var i=parseFloat(o[1]);switch((o[2]||"ms").toLowerCase()){case"years":case"year":case"yrs":case"yr":case"y":return 315576e5*i;case"weeks":case"week":case"w":return 6048e5*i;case"days":case"day":case"d":return i*r;case"hours":case"hour":case"hrs":case"hr":case"h":return i*n;case"minutes":case"minute":case"mins":case"min":case"m":return i*s;case"seconds":case"second":case"secs":case"sec":case"s":return i*t;case"milliseconds":case"millisecond":case"msecs":case"msec":case"ms":return i;default:return}}}}(e);if("number"===u&&isFinite(e))return i.long?(a=e,(c=Math.abs(a))>=r?o(a,c,r,"day"):c>=n?o(a,c,n,"hour"):c>=s?o(a,c,s,"minute"):c>=t?o(a,c,t,"second"):a+" ms"):function(e){var o=Math.abs(e);return o>=r?Math.round(e/r)+"d":o>=n?Math.round(e/n)+"h":o>=s?Math.round(e/s)+"m":o>=t?Math.round(e/t)+"s":e+"ms"}(e);throw new Error("val is not a non-empty string or a valid number. val="+JSON.stringify(e))}},182:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.TimeManager=void 0,t.TimeManager=class{constructor(e=120){this.dayLength=e,this.scaleFactor=30,this.dayLengthAsMS=60*e*1e3}dayScaleFactor(){return this.dayLength/30}getTimePeriod(){return this.isMorning()?"morning":this.isAfternoon()?"afternoon":this.isEvening()?"evening":this.isNight()?"night":void 0}getAmPm(){return this.get24Hour()<12?"am":"pm"}get24Hour(){const e=new Date,t=(e.getMinutes()+e.getHours()%2*(this.dayLength/2))/this.dayLength;return Math.floor(24*t)}getHour(){const e=(new Date).getMinutes()/this.dayLength,t=Math.floor(24*e);return t>12?t-12:t}gradientName(){const e=Math.floor(this.get24Hour()/24*this.scaleFactor);return`sky-gradient-${e<10?"0":""}${e}`}isNight(){const e=this.get24Hour();return e>=0&&e<5||e>=21&&e<24}isMorning(){const e=this.get24Hour();return e>=5&&e<12}isAfternoon(){const e=this.get24Hour();return e>=12&&e<18}isEvening(){const e=this.get24Hour();return e>=18&&e<21}}},419:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.hasCORS=void 0;let s=!1;try{s="undefined"!=typeof XMLHttpRequest&&"withCredentials"in new XMLHttpRequest}catch(e){}t.hasCORS=s},754:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.decode=t.encode=void 0,t.encode=function(e){let t="";for(let s in e)e.hasOwnProperty(s)&&(t.length&&(t+="&"),t+=encodeURIComponent(s)+"="+encodeURIComponent(e[s]));return t},t.decode=function(e){let t={},s=e.split("&");for(let e=0,n=s.length;e{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.parse=void 0;const s=/^(?:(?![^:@\/?#]+:[^:@\/]*@)(http|https|ws|wss):\/\/)?((?:(([^:@\/?#]*)(?::([^:@\/?#]*))?)?@)?((?:[a-f0-9]{0,4}:){2,7}[a-f0-9]{0,4}|[^:\/?#]*)(?::(\d*))?)(((\/(?:[^?#](?![^?#\/]*\.[^?#\/.]+(?:[?#]|$)))*\/?)?([^?#\/]*))(?:\?([^#]*))?(?:#(.*))?)/,n=["source","protocol","authority","userInfo","user","password","host","port","relative","path","directory","file","query","anchor"];t.parse=function(e){const t=e,r=e.indexOf("["),o=e.indexOf("]");-1!=r&&-1!=o&&(e=e.substring(0,r)+e.substring(r,o).replace(/:/g,";")+e.substring(o,e.length));let i=s.exec(e||""),a={},c=14;for(;c--;)a[n[c]]=i[c]||"";return-1!=r&&-1!=o&&(a.source=t,a.host=a.host.substring(1,a.host.length-1).replace(/;/g,":"),a.authority=a.authority.replace("[","").replace("]","").replace(/;/g,":"),a.ipv6uri=!0),a.pathNames=function(e,t){const s=t.replace(/\/{2,9}/g,"/").split("/");return"/"!=t.slice(0,1)&&0!==t.length||s.splice(0,1),"/"==t.slice(-1)&&s.splice(s.length-1,1),s}(0,a.path),a.queryKey=function(e,t){const s={};return t.replace(/(?:^|&)([^&=]*)=?([^&]*)/g,(function(e,t,n){t&&(s[t]=n)})),s}(0,a.query),a}},726:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.yeast=t.decode=t.encode=void 0;const s="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz-_".split(""),n={};let r,o=0,i=0;function a(e){let t="";do{t=s[e%64]+t,e=Math.floor(e/64)}while(e>0);return t}for(t.encode=a,t.decode=function(e){let t=0;for(i=0;i{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.globalThisShim=void 0,t.globalThisShim="undefined"!=typeof self?self:"undefined"!=typeof window?window:Function("return this")()},679:(e,t,s)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.nextTick=t.parse=t.installTimerFunctions=t.transports=t.Transport=t.protocol=t.Socket=void 0;const n=s(481);Object.defineProperty(t,"Socket",{enumerable:!0,get:function(){return n.Socket}}),t.protocol=n.Socket.protocol;var r=s(870);Object.defineProperty(t,"Transport",{enumerable:!0,get:function(){return r.Transport}});var o=s(385);Object.defineProperty(t,"transports",{enumerable:!0,get:function(){return o.transports}});var i=s(622);Object.defineProperty(t,"installTimerFunctions",{enumerable:!0,get:function(){return i.installTimerFunctions}});var a=s(222);Object.defineProperty(t,"parse",{enumerable:!0,get:function(){return a.parse}});var c=s(552);Object.defineProperty(t,"nextTick",{enumerable:!0,get:function(){return c.nextTick}})},481:function(e,t,s){"use strict";var n=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.Socket=void 0;const r=s(385),o=s(622),i=s(754),a=s(222),c=n(s(802)),u=s(260),h=s(373),l=(0,c.default)("engine.io-client:socket");class d extends u.Emitter{constructor(e,t={}){super(),this.writeBuffer=[],e&&"object"==typeof e&&(t=e,e=null),e?(e=(0,a.parse)(e),t.hostname=e.host,t.secure="https"===e.protocol||"wss"===e.protocol,t.port=e.port,e.query&&(t.query=e.query)):t.host&&(t.hostname=(0,a.parse)(t.host).host),(0,o.installTimerFunctions)(this,t),this.secure=null!=t.secure?t.secure:"undefined"!=typeof location&&"https:"===location.protocol,t.hostname&&!t.port&&(t.port=this.secure?"443":"80"),this.hostname=t.hostname||("undefined"!=typeof location?location.hostname:"localhost"),this.port=t.port||("undefined"!=typeof location&&location.port?location.port:this.secure?"443":"80"),this.transports=t.transports||["polling","websocket"],this.writeBuffer=[],this.prevBufferLen=0,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:!0},t),this.opts.path=this.opts.path.replace(/\/$/,"")+(this.opts.addTrailingSlash?"/":""),"string"==typeof this.opts.query&&(this.opts.query=(0,i.decode)(this.opts.query)),this.id=null,this.upgrades=null,this.pingInterval=null,this.pingTimeout=null,this.pingTimeoutTimer=null,"function"==typeof addEventListener&&(this.opts.closeOnBeforeunload&&(this.beforeunloadEventListener=()=>{this.transport&&(this.transport.removeAllListeners(),this.transport.close())},addEventListener("beforeunload",this.beforeunloadEventListener,!1)),"localhost"!==this.hostname&&(this.offlineEventListener=()=>{this.onClose("transport close",{description:"network connection lost"})},addEventListener("offline",this.offlineEventListener,!1))),this.open()}createTransport(e){l('creating transport "%s"',e);const t=Object.assign({},this.opts.query);t.EIO=h.protocol,t.transport=e,this.id&&(t.sid=this.id);const s=Object.assign({},this.opts.transportOptions[e],this.opts,{query:t,socket:this,hostname:this.hostname,secure:this.secure,port:this.port});return l("options: %j",s),new r.transports[e](s)}open(){let e;if(this.opts.rememberUpgrade&&d.priorWebsocketSuccess&&-1!==this.transports.indexOf("websocket"))e="websocket";else{if(0===this.transports.length)return void this.setTimeoutFn((()=>{this.emitReserved("error","No transports available")}),0);e=this.transports[0]}this.readyState="opening";try{e=this.createTransport(e)}catch(e){return l("error while creating transport: %s",e),this.transports.shift(),void this.open()}e.open(),this.setTransport(e)}setTransport(e){l("setting transport %s",e.name),this.transport&&(l("clearing existing transport %s",this.transport.name),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",(e=>this.onClose("transport close",e)))}probe(e){l('probing transport "%s"',e);let t=this.createTransport(e),s=!1;d.priorWebsocketSuccess=!1;const n=()=>{s||(l('probe transport "%s" opened',e),t.send([{type:"ping",data:"probe"}]),t.once("packet",(n=>{if(!s)if("pong"===n.type&&"probe"===n.data){if(l('probe transport "%s" pong',e),this.upgrading=!0,this.emitReserved("upgrading",t),!t)return;d.priorWebsocketSuccess="websocket"===t.name,l('pausing current transport "%s"',this.transport.name),this.transport.pause((()=>{s||"closed"!==this.readyState&&(l("changing transport and sending upgrade packet"),u(),this.setTransport(t),t.send([{type:"upgrade"}]),this.emitReserved("upgrade",t),t=null,this.upgrading=!1,this.flush())}))}else{l('probe transport "%s" failed',e);const s=new Error("probe error");s.transport=t.name,this.emitReserved("upgradeError",s)}})))};function r(){s||(s=!0,u(),t.close(),t=null)}const o=s=>{const n=new Error("probe error: "+s);n.transport=t.name,r(),l('probe transport "%s" failed because of error: %s',e,s),this.emitReserved("upgradeError",n)};function i(){o("transport closed")}function a(){o("socket closed")}function c(e){t&&e.name!==t.name&&(l('"%s" works - aborting "%s"',e.name,t.name),r())}const u=()=>{t.removeListener("open",n),t.removeListener("error",o),t.removeListener("close",i),this.off("close",a),this.off("upgrading",c)};t.once("open",n),t.once("error",o),t.once("close",i),this.once("close",a),this.once("upgrading",c),t.open()}onOpen(){if(l("socket open"),this.readyState="open",d.priorWebsocketSuccess="websocket"===this.transport.name,this.emitReserved("open"),this.flush(),"open"===this.readyState&&this.opts.upgrade){l("starting upgrade probes");let e=0;const t=this.upgrades.length;for(;e{this.onClose("ping timeout")}),this.pingInterval+this.pingTimeout),this.opts.autoUnref&&this.pingTimeoutTimer.unref()}onDrain(){this.writeBuffer.splice(0,this.prevBufferLen),this.prevBufferLen=0,0===this.writeBuffer.length?this.emitReserved("drain"):this.flush()}flush(){if("closed"!==this.readyState&&this.transport.writable&&!this.upgrading&&this.writeBuffer.length){const e=this.getWritablePackets();l("flushing %d packets in socket",e.length),this.transport.send(e),this.prevBufferLen=e.length,this.emitReserved("flush")}}getWritablePackets(){if(!(this.maxPayload&&"polling"===this.transport.name&&this.writeBuffer.length>1))return this.writeBuffer;let e=1;for(let t=0;t0&&e>this.maxPayload)return l("only send %d out of %d packets",t,this.writeBuffer.length),this.writeBuffer.slice(0,t);e+=2}return l("payload size is %d (max: %d)",e,this.maxPayload),this.writeBuffer}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,n){if("function"==typeof t&&(n=t,t=void 0),"function"==typeof s&&(n=s,s=null),"closing"===this.readyState||"closed"===this.readyState)return;(s=s||{}).compress=!1!==s.compress;const r={type:e,data:t,options:s};this.emitReserved("packetCreate",r),this.writeBuffer.push(r),n&&this.once("flush",n),this.flush()}close(){const e=()=>{this.onClose("forced close"),l("socket closing - telling transport to close"),this.transport.close()},t=()=>{this.off("upgrade",t),this.off("upgradeError",t),e()},s=()=>{this.once("upgrade",t),this.once("upgradeError",t)};return"opening"!==this.readyState&&"open"!==this.readyState||(this.readyState="closing",this.writeBuffer.length?this.once("drain",(()=>{this.upgrading?s():e()})):this.upgrading?s():e()),this}onError(e){l("socket error %j",e),d.priorWebsocketSuccess=!1,this.emitReserved("error",e),this.onClose("transport error",e)}onClose(e,t){"opening"!==this.readyState&&"open"!==this.readyState&&"closing"!==this.readyState||(l('socket close with reason: "%s"',e),this.clearTimeoutFn(this.pingTimeoutTimer),this.transport.removeAllListeners("close"),this.transport.close(),this.transport.removeAllListeners(),"function"==typeof removeEventListener&&(removeEventListener("beforeunload",this.beforeunloadEventListener,!1),removeEventListener("offline",this.offlineEventListener,!1)),this.readyState="closed",this.id=null,this.emitReserved("close",e,t),this.writeBuffer=[],this.prevBufferLen=0)}filterUpgrades(e){const t=[];let s=0;const n=e.length;for(;s{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.transports=void 0;const n=s(484),r=s(308);t.transports={websocket:r.WS,polling:n.Polling}},484:function(e,t,s){"use strict";var n=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.Request=t.Polling=void 0;const r=s(870),o=n(s(802)),i=s(726),a=s(754),c=s(373),u=s(666),h=s(260),l=s(622),d=s(242),p=(0,o.default)("engine.io-client:polling");function f(){}const g=null!=new u.XHR({xdomain:!1}).responseType;class m extends r.Transport{constructor(e){if(super(e),this.polling=!1,"undefined"!=typeof location){const t="https:"===location.protocol;let s=location.port;s||(s=t?"443":"80"),this.xd="undefined"!=typeof location&&e.hostname!==location.hostname||s!==e.port,this.xs=e.secure!==t}const t=e&&e.forceBase64;this.supportsBinary=g&&!t}get name(){return"polling"}doOpen(){this.poll()}pause(e){this.readyState="pausing";const t=()=>{p("paused"),this.readyState="paused",e()};if(this.polling||!this.writable){let e=0;this.polling&&(p("we are currently polling - waiting to pause"),e++,this.once("pollComplete",(function(){p("pre-pause polling complete"),--e||t()}))),this.writable||(p("we are currently writing - waiting to pause"),e++,this.once("drain",(function(){p("pre-pause writing complete"),--e||t()})))}else t()}poll(){p("polling"),this.polling=!0,this.doPoll(),this.emitReserved("poll")}onData(e){p("polling got data %s",e),(0,c.decodePayload)(e,this.socket.binaryType).forEach((e=>{if("opening"===this.readyState&&"open"===e.type&&this.onOpen(),"close"===e.type)return this.onClose({description:"transport closed by the server"}),!1;this.onPacket(e)})),"closed"!==this.readyState&&(this.polling=!1,this.emitReserved("pollComplete"),"open"===this.readyState?this.poll():p('ignoring poll - transport state "%s"',this.readyState))}doClose(){const e=()=>{p("writing close packet"),this.write([{type:"close"}])};"open"===this.readyState?(p("transport open - closing"),e()):(p("transport not open - deferring close"),this.once("open",e))}write(e){this.writable=!1,(0,c.encodePayload)(e,(e=>{this.doWrite(e,(()=>{this.writable=!0,this.emitReserved("drain")}))}))}uri(){let e=this.query||{};const t=this.opts.secure?"https":"http";let s="";!1!==this.opts.timestampRequests&&(e[this.opts.timestampParam]=(0,i.yeast)()),this.supportsBinary||e.sid||(e.b64=1),this.opts.port&&("https"===t&&443!==Number(this.opts.port)||"http"===t&&80!==Number(this.opts.port))&&(s=":"+this.opts.port);const n=(0,a.encode)(e);return t+"://"+(-1!==this.opts.hostname.indexOf(":")?"["+this.opts.hostname+"]":this.opts.hostname)+s+this.opts.path+(n.length?"?"+n:"")}request(e={}){return Object.assign(e,{xd:this.xd,xs:this.xs},this.opts),new y(this.uri(),e)}doWrite(e,t){const s=this.request({method:"POST",data:e});s.on("success",t),s.on("error",((e,t)=>{this.onError("xhr post error",e,t)}))}doPoll(){p("xhr poll");const e=this.request();e.on("data",this.onData.bind(this)),e.on("error",((e,t)=>{this.onError("xhr poll error",e,t)})),this.pollXhr=e}}t.Polling=m;class y extends h.Emitter{constructor(e,t){super(),(0,l.installTimerFunctions)(this,t),this.opts=t,this.method=t.method||"GET",this.uri=e,this.async=!1!==t.async,this.data=void 0!==t.data?t.data:null,this.create()}create(){const e=(0,l.pick)(this.opts,"agent","pfx","key","passphrase","cert","ca","ciphers","rejectUnauthorized","autoUnref");e.xdomain=!!this.opts.xd,e.xscheme=!!this.opts.xs;const t=this.xhr=new u.XHR(e);try{p("xhr open %s: %s",this.method,this.uri),t.open(this.method,this.uri,this.async);try{if(this.opts.extraHeaders){t.setDisableHeaderCheck&&t.setDisableHeaderCheck(!0);for(let e in this.opts.extraHeaders)this.opts.extraHeaders.hasOwnProperty(e)&&t.setRequestHeader(e,this.opts.extraHeaders[e])}}catch(e){}if("POST"===this.method)try{t.setRequestHeader("Content-type","text/plain;charset=UTF-8")}catch(e){}try{t.setRequestHeader("Accept","*/*")}catch(e){}"withCredentials"in t&&(t.withCredentials=this.opts.withCredentials),this.opts.requestTimeout&&(t.timeout=this.opts.requestTimeout),t.onreadystatechange=()=>{4===t.readyState&&(200===t.status||1223===t.status?this.onLoad():this.setTimeoutFn((()=>{this.onError("number"==typeof t.status?t.status:0)}),0))},p("xhr data %s",this.data),t.send(this.data)}catch(e){return void this.setTimeoutFn((()=>{this.onError(e)}),0)}"undefined"!=typeof document&&(this.index=y.requestsCount++,y.requests[this.index]=this)}onError(e){this.emitReserved("error",e,this.xhr),this.cleanup(!0)}cleanup(e){if(void 0!==this.xhr&&null!==this.xhr){if(this.xhr.onreadystatechange=f,e)try{this.xhr.abort()}catch(e){}"undefined"!=typeof document&&delete y.requests[this.index],this.xhr=null}}onLoad(){const e=this.xhr.responseText;null!==e&&(this.emitReserved("data",e),this.emitReserved("success"),this.cleanup())}abort(){this.cleanup()}}if(t.Request=y,y.requestsCount=0,y.requests={},"undefined"!=typeof document)if("function"==typeof attachEvent)attachEvent("onunload",C);else if("function"==typeof addEventListener){const e="onpagehide"in d.globalThisShim?"pagehide":"unload";addEventListener(e,C,!1)}function C(){for(let e in y.requests)y.requests.hasOwnProperty(e)&&y.requests[e].abort()}},552:(e,t,s)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.defaultBinaryType=t.usingBrowserWebSocket=t.WebSocket=t.nextTick=void 0;const n=s(242);t.nextTick="function"==typeof Promise&&"function"==typeof Promise.resolve?e=>Promise.resolve().then(e):(e,t)=>t(e,0),t.WebSocket=n.globalThisShim.WebSocket||n.globalThisShim.MozWebSocket,t.usingBrowserWebSocket=!0,t.defaultBinaryType="arraybuffer"},308:function(e,t,s){"use strict";var n=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.WS=void 0;const r=s(870),o=s(754),i=s(726),a=s(622),c=s(552),u=n(s(802)),h=s(373),l=(0,u.default)("engine.io-client:websocket"),d="undefined"!=typeof navigator&&"string"==typeof navigator.product&&"reactnative"===navigator.product.toLowerCase();class p extends r.Transport{constructor(e){super(e),this.supportsBinary=!e.forceBase64}get name(){return"websocket"}doOpen(){if(!this.check())return;const e=this.uri(),t=this.opts.protocols,s=d?{}:(0,a.pick)(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=c.usingBrowserWebSocket&&!d?t?new c.WebSocket(e,t):new c.WebSocket(e):new c.WebSocket(e,t,s)}catch(e){return this.emitReserved("error",e)}this.ws.binaryType=this.socket.binaryType||c.defaultBinaryType,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{const t={};!c.usingBrowserWebSocket&&(s.options&&(t.compress=s.options.compress),this.opts.perMessageDeflate)&&("string"==typeof e?Buffer.byteLength(e):e.length){this.writable=!0,this.emitReserved("drain")}),this.setTimeoutFn)}))}}doClose(){void 0!==this.ws&&(this.ws.close(),this.ws=null)}uri(){let e=this.query||{};const t=this.opts.secure?"wss":"ws";let s="";this.opts.port&&("wss"===t&&443!==Number(this.opts.port)||"ws"===t&&80!==Number(this.opts.port))&&(s=":"+this.opts.port),this.opts.timestampRequests&&(e[this.opts.timestampParam]=(0,i.yeast)()),this.supportsBinary||(e.b64=1);const n=(0,o.encode)(e);return t+"://"+(-1!==this.opts.hostname.indexOf(":")?"["+this.opts.hostname+"]":this.opts.hostname)+s+this.opts.path+(n.length?"?"+n:"")}check(){return!!c.WebSocket}}t.WS=p},666:(e,t,s)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.XHR=void 0;const n=s(419),r=s(242);t.XHR=function(e){const t=e.xdomain;try{if("undefined"!=typeof XMLHttpRequest&&(!t||n.hasCORS))return new XMLHttpRequest}catch(e){}if(!t)try{return new(r.globalThisShim[["Active"].concat("Object").join("X")])("Microsoft.XMLHTTP")}catch(e){}}},622:(e,t,s)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.byteLength=t.installTimerFunctions=t.pick=void 0;const n=s(242);t.pick=function(e,...t){return t.reduce(((t,s)=>(e.hasOwnProperty(s)&&(t[s]=e[s]),t)),{})};const r=n.globalThisShim.setTimeout,o=n.globalThisShim.clearTimeout;t.installTimerFunctions=function(e,t){t.useNativeTimers?(e.setTimeoutFn=r.bind(n.globalThisShim),e.clearTimeoutFn=o.bind(n.globalThisShim)):(e.setTimeoutFn=n.globalThisShim.setTimeout.bind(n.globalThisShim),e.clearTimeoutFn=n.globalThisShim.clearTimeout.bind(n.globalThisShim))},t.byteLength=function(e){return"string"==typeof e?function(e){let t=0,s=0;for(let n=0,r=e.length;n=57344?s+=3:(n++,s+=4);return s}(e):Math.ceil(1.33*(e.byteLength||e.size))}},87:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ERROR_PACKET=t.PACKET_TYPES_REVERSE=t.PACKET_TYPES=void 0;const s=Object.create(null);t.PACKET_TYPES=s,s.open="0",s.close="1",s.ping="2",s.pong="3",s.message="4",s.upgrade="5",s.noop="6";const n=Object.create(null);t.PACKET_TYPES_REVERSE=n,Object.keys(s).forEach((e=>{n[s[e]]=e})),t.ERROR_PACKET={type:"error",data:"parser error"}},469:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.decode=t.encode=void 0;const s="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",n="undefined"==typeof Uint8Array?[]:new Uint8Array(256);for(let e=0;e<64;e++)n[s.charCodeAt(e)]=e;t.encode=e=>{let t,n=new Uint8Array(e),r=n.length,o="";for(t=0;t>2],o+=s[(3&n[t])<<4|n[t+1]>>4],o+=s[(15&n[t+1])<<2|n[t+2]>>6],o+=s[63&n[t+2]];return r%3==2?o=o.substring(0,o.length-1)+"=":r%3==1&&(o=o.substring(0,o.length-2)+"=="),o},t.decode=e=>{let t,s,r,o,i,a=.75*e.length,c=e.length,u=0;"="===e[e.length-1]&&(a--,"="===e[e.length-2]&&a--);const h=new ArrayBuffer(a),l=new Uint8Array(h);for(t=0;t>4,l[u++]=(15&r)<<4|o>>2,l[u++]=(3&o)<<6|63&i;return h}},572:(e,t,s)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});const n=s(87),r=s(469),o="function"==typeof ArrayBuffer,i=(e,t)=>{if(o){const s=(0,r.decode)(e);return a(s,t)}return{base64:!0,data:e}},a=(e,t)=>"blob"===t&&e instanceof ArrayBuffer?new Blob([e]):e;t.default=(e,t)=>{if("string"!=typeof e)return{type:"message",data:a(e,t)};const s=e.charAt(0);return"b"===s?{type:"message",data:i(e.substring(1),t)}:n.PACKET_TYPES_REVERSE[s]?e.length>1?{type:n.PACKET_TYPES_REVERSE[s],data:e.substring(1)}:{type:n.PACKET_TYPES_REVERSE[s]}:n.ERROR_PACKET}},908:(e,t,s)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});const n=s(87),r="function"==typeof Blob||"undefined"!=typeof Blob&&"[object BlobConstructor]"===Object.prototype.toString.call(Blob),o="function"==typeof ArrayBuffer,i=(e,t)=>{const s=new FileReader;return s.onload=function(){const e=s.result.split(",")[1];t("b"+(e||""))},s.readAsDataURL(e)};t.default=({type:e,data:t},s,a)=>{return r&&t instanceof Blob?s?a(t):i(t,a):o&&(t instanceof ArrayBuffer||(c=t,"function"==typeof ArrayBuffer.isView?ArrayBuffer.isView(c):c&&c.buffer instanceof ArrayBuffer))?s?a(t):i(new Blob([t]),a):a(n.PACKET_TYPES[e]+(t||""));var c}},373:(e,t,s)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.decodePayload=t.decodePacket=t.encodePayload=t.encodePacket=t.protocol=void 0;const n=s(908);t.encodePacket=n.default;const r=s(572);t.decodePacket=r.default;const o=String.fromCharCode(30);t.encodePayload=(e,t)=>{const s=e.length,r=new Array(s);let i=0;e.forEach(((e,a)=>{(0,n.default)(e,!1,(e=>{r[a]=e,++i===s&&t(r.join(o))}))}))},t.decodePayload=(e,t)=>{const s=e.split(o),n=[];for(let e=0;e{"use strict";function s(e){e=e||{},this.ms=e.min||100,this.max=e.max||1e4,this.factor=e.factor||2,this.jitter=e.jitter>0&&e.jitter<=1?e.jitter:0,this.attempts=0}Object.defineProperty(t,"__esModule",{value:!0}),t.Backoff=void 0,t.Backoff=s,s.prototype.duration=function(){var e=this.ms*Math.pow(this.factor,this.attempts++);if(this.jitter){var t=Math.random(),s=Math.floor(t*this.jitter*e);e=0==(1&Math.floor(10*t))?e-s:e+s}return 0|Math.min(e,this.max)},s.prototype.reset=function(){this.attempts=0},s.prototype.setMin=function(e){this.ms=e},s.prototype.setMax=function(e){this.max=e},s.prototype.setJitter=function(e){this.jitter=e}},46:function(e,t,s){"use strict";var n=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.default=t.connect=t.io=t.Socket=t.Manager=t.protocol=void 0;const r=s(84),o=s(168);Object.defineProperty(t,"Manager",{enumerable:!0,get:function(){return o.Manager}});const i=s(312);Object.defineProperty(t,"Socket",{enumerable:!0,get:function(){return i.Socket}});const a=n(s(669)).default("socket.io-client"),c={};function u(e,t){"object"==typeof e&&(t=e,e=void 0),t=t||{};const s=r.url(e,t.path||"/socket.io"),n=s.source,i=s.id,u=s.path,h=c[i]&&u in c[i].nsps;let l;return t.forceNew||t["force new connection"]||!1===t.multiplex||h?(a("ignoring socket cache for %s",n),l=new o.Manager(n,t)):(c[i]||(a("new io instance for %s",n),c[i]=new o.Manager(n,t)),l=c[i]),s.query&&!t.query&&(t.query=s.queryKey),l.socket(s.path,t)}t.io=u,t.connect=u,t.default=u,Object.assign(u,{Manager:o.Manager,Socket:i.Socket,io:u,connect:u});var h=s(514);Object.defineProperty(t,"protocol",{enumerable:!0,get:function(){return h.protocol}}),e.exports=u},168:function(e,t,s){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,s,n){void 0===n&&(n=s),Object.defineProperty(e,n,{enumerable:!0,get:function(){return t[s]}})}:function(e,t,s,n){void 0===n&&(n=s),e[n]=t[s]}),r=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),o=this&&this.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var s in e)"default"!==s&&Object.prototype.hasOwnProperty.call(e,s)&&n(t,e,s);return r(t,e),t},i=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.Manager=void 0;const a=s(679),c=s(312),u=o(s(514)),h=s(149),l=s(159),d=s(260),p=i(s(669)).default("socket.io-client:manager");class f extends d.Emitter{constructor(e,t){var s;super(),this.nsps={},this.subs=[],e&&"object"==typeof e&&(t=e,e=void 0),(t=t||{}).path=t.path||"/socket.io",this.opts=t,a.installTimerFunctions(this,t),this.reconnection(!1!==t.reconnection),this.reconnectionAttempts(t.reconnectionAttempts||1/0),this.reconnectionDelay(t.reconnectionDelay||1e3),this.reconnectionDelayMax(t.reconnectionDelayMax||5e3),this.randomizationFactor(null!==(s=t.randomizationFactor)&&void 0!==s?s:.5),this.backoff=new l.Backoff({min:this.reconnectionDelay(),max:this.reconnectionDelayMax(),jitter:this.randomizationFactor()}),this.timeout(null==t.timeout?2e4:t.timeout),this._readyState="closed",this.uri=e;const n=t.parser||u;this.encoder=new n.Encoder,this.decoder=new n.Decoder,this._autoConnect=!1!==t.autoConnect,this._autoConnect&&this.open()}reconnection(e){return arguments.length?(this._reconnection=!!e,this):this._reconnection}reconnectionAttempts(e){return void 0===e?this._reconnectionAttempts:(this._reconnectionAttempts=e,this)}reconnectionDelay(e){var t;return void 0===e?this._reconnectionDelay:(this._reconnectionDelay=e,null===(t=this.backoff)||void 0===t||t.setMin(e),this)}randomizationFactor(e){var t;return void 0===e?this._randomizationFactor:(this._randomizationFactor=e,null===(t=this.backoff)||void 0===t||t.setJitter(e),this)}reconnectionDelayMax(e){var t;return void 0===e?this._reconnectionDelayMax:(this._reconnectionDelayMax=e,null===(t=this.backoff)||void 0===t||t.setMax(e),this)}timeout(e){return arguments.length?(this._timeout=e,this):this._timeout}maybeReconnectOnOpen(){!this._reconnecting&&this._reconnection&&0===this.backoff.attempts&&this.reconnect()}open(e){if(p("readyState %s",this._readyState),~this._readyState.indexOf("open"))return this;p("opening %s",this.uri),this.engine=new a.Socket(this.uri,this.opts);const t=this.engine,s=this;this._readyState="opening",this.skipReconnect=!1;const n=h.on(t,"open",(function(){s.onopen(),e&&e()})),r=h.on(t,"error",(t=>{p("error"),s.cleanup(),s._readyState="closed",this.emitReserved("error",t),e?e(t):s.maybeReconnectOnOpen()}));if(!1!==this._timeout){const e=this._timeout;p("connect attempt will timeout after %d",e),0===e&&n();const s=this.setTimeoutFn((()=>{p("connect attempt timed out after %d",e),n(),t.close(),t.emit("error",new Error("timeout"))}),e);this.opts.autoUnref&&s.unref(),this.subs.push((function(){clearTimeout(s)}))}return this.subs.push(n),this.subs.push(r),this}connect(e){return this.open(e)}onopen(){p("open"),this.cleanup(),this._readyState="open",this.emitReserved("open");const e=this.engine;this.subs.push(h.on(e,"ping",this.onping.bind(this)),h.on(e,"data",this.ondata.bind(this)),h.on(e,"error",this.onerror.bind(this)),h.on(e,"close",this.onclose.bind(this)),h.on(this.decoder,"decoded",this.ondecoded.bind(this)))}onping(){this.emitReserved("ping")}ondata(e){try{this.decoder.add(e)}catch(e){this.onclose("parse error",e)}}ondecoded(e){a.nextTick((()=>{this.emitReserved("packet",e)}),this.setTimeoutFn)}onerror(e){p("error",e),this.emitReserved("error",e)}socket(e,t){let s=this.nsps[e];return s?this._autoConnect&&!s.active&&s.connect():(s=new c.Socket(this,e,t),this.nsps[e]=s),s}_destroy(e){const t=Object.keys(this.nsps);for(const e of t)if(this.nsps[e].active)return void p("socket %s is still active, skipping close",e);this._close()}_packet(e){p("writing packet %j",e);const t=this.encoder.encode(e);for(let s=0;se())),this.subs.length=0,this.decoder.destroy()}_close(){p("disconnect"),this.skipReconnect=!0,this._reconnecting=!1,this.onclose("forced close"),this.engine&&this.engine.close()}disconnect(){return this._close()}onclose(e,t){p("closed due to %s",e),this.cleanup(),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)p("reconnect failed"),this.backoff.reset(),this.emitReserved("reconnect_failed"),this._reconnecting=!1;else{const t=this.backoff.duration();p("will wait %dms before reconnect attempt",t),this._reconnecting=!0;const s=this.setTimeoutFn((()=>{e.skipReconnect||(p("attempting reconnect"),this.emitReserved("reconnect_attempt",e.backoff.attempts),e.skipReconnect||e.open((t=>{t?(p("reconnect attempt error"),e._reconnecting=!1,e.reconnect(),this.emitReserved("reconnect_error",t)):(p("reconnect success"),e.onreconnect())})))}),t);this.opts.autoUnref&&s.unref(),this.subs.push((function(){clearTimeout(s)}))}}onreconnect(){const e=this.backoff.attempts;this._reconnecting=!1,this.backoff.reset(),this.emitReserved("reconnect",e)}}t.Manager=f},149:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.on=void 0,t.on=function(e,t,s){return e.on(t,s),function(){e.off(t,s)}}},312:function(e,t,s){"use strict";var n=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.Socket=void 0;const r=s(514),o=s(149),i=s(260),a=n(s(669)).default("socket.io-client:socket"),c=Object.freeze({connect:1,connect_error:1,disconnect:1,disconnecting:1,newListener:1,removeListener:1});class u extends i.Emitter{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=[o.on(e,"open",this.onopen.bind(this)),o.on(e,"packet",this.onpacket.bind(this)),o.on(e,"error",this.onerror.bind(this)),o.on(e,"close",this.onclose.bind(this))]}get active(){return!!this.subs}connect(){return this.connected||(this.subEvents(),this.io._reconnecting||this.io.open(),"open"===this.io._readyState&&this.onopen()),this}open(){return this.connect()}send(...e){return e.unshift("message"),this.emit.apply(this,e),this}emit(e,...t){if(c.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 s={type:r.PacketType.EVENT,data:t,options:{}};if(s.options.compress=!1!==this.flags.compress,"function"==typeof t[t.length-1]){const e=this.ids++;a("emitting packet with ack id %d",e);const n=t.pop();this._registerAckCallback(e,n),s.id=e}const n=this.io.engine&&this.io.engine.transport&&this.io.engine.transport.writable;return!this.flags.volatile||n&&this.connected?this.connected?(this.notifyOutgoingListeners(s),this.packet(s)):this.sendBuffer.push(s):a("discard packet as the transport is not currently writable"),this.flags={},this}_registerAckCallback(e,t){var s;const n=null!==(s=this.flags.timeout)&&void 0!==s?s:this._opts.ackTimeout;if(void 0===n)return void(this.acks[e]=t);const r=this.io.setTimeoutFn((()=>{delete this.acks[e];for(let t=0;t{this.io.clearTimeoutFn(r),t.apply(this,[null,...e])}}emitWithAck(e,...t){const s=void 0!==this.flags.timeout||void 0!==this._opts.ackTimeout;return new Promise(((n,r)=>{t.push(((e,t)=>s?e?r(e):n(t):n(e))),this.emit(e,...t)}))}_addToQueue(e){let t;"function"==typeof e[e.length-1]&&(t=e.pop());const s={id:this._queueSeq++,tryCount:0,pending:!1,args:e,flags:Object.assign({fromQueue:!0},this.flags)};e.push(((e,...n)=>{if(s===this._queue[0])return null!==e?s.tryCount>this._opts.retries&&(a("packet [%d] is discarded after %d tries",s.id,s.tryCount),this._queue.shift(),t&&t(e)):(a("packet [%d] was successfully sent",s.id),this._queue.shift(),t&&t(null,...n)),s.pending=!1,this._drainQueue()})),this._queue.push(s),this._drainQueue()}_drainQueue(e=!1){if(a("draining queue"),!this.connected||0===this._queue.length)return;const t=this._queue[0];!t.pending||e?(t.pending=!0,t.tryCount++,a("sending packet [%d] (try n°%d)",t.id,t.tryCount),this.flags=t.flags,this.emit.apply(this,t.args)):a("packet [%d] has already been sent and is waiting for an ack",t.id)}packet(e){e.nsp=this.nsp,this.io._packet(e)}onopen(){a("transport is open - connecting"),"function"==typeof this.auth?this.auth((e=>{this._sendConnectPacket(e)})):this._sendConnectPacket(this.auth)}_sendConnectPacket(e){this.packet({type:r.PacketType.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){a("close (%s)",e),this.connected=!1,delete this.id,this.emitReserved("disconnect",e,t)}onpacket(e){if(e.nsp===this.nsp)switch(e.type){case r.PacketType.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 r.PacketType.EVENT:case r.PacketType.BINARY_EVENT:this.onevent(e);break;case r.PacketType.ACK:case r.PacketType.BINARY_ACK:this.onack(e);break;case r.PacketType.DISCONNECT:this.ondisconnect();break;case r.PacketType.CONNECT_ERROR:this.destroy();const t=new Error(e.data.message);t.data=e.data.data,this.emitReserved("connect_error",t)}}onevent(e){const t=e.data||[];a("emitting event %j",t),null!=e.id&&(a("attaching ack callback to event"),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&&"string"==typeof e[e.length-1]&&(this._lastOffset=e[e.length-1])}ack(e){const t=this;let s=!1;return function(...n){s||(s=!0,a("sending ack %j",n),t.packet({type:r.PacketType.ACK,id:e,data:n}))}}onack(e){const t=this.acks[e.id];"function"==typeof t?(a("calling ack %s with %j",e.id,e.data),t.apply(this,e.data),delete this.acks[e.id]):a("bad ack %s",e.id)}onconnect(e,t){a("socket connected with id %s",e),this.id=e,this.recovered=t&&this._pid===t,this._pid=t,this.connected=!0,this.emitBuffered(),this.emitReserved("connect"),this._drainQueue(!0)}emitBuffered(){this.receiveBuffer.forEach((e=>this.emitEvent(e))),this.receiveBuffer=[],this.sendBuffer.forEach((e=>{this.notifyOutgoingListeners(e),this.packet(e)})),this.sendBuffer=[]}ondisconnect(){a("server disconnect (%s)",this.nsp),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&&(a("performing disconnect (%s)",this.nsp),this.packet({type:r.PacketType.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{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.reconstructPacket=t.deconstructPacket=void 0;const n=s(665);function r(e,t){if(!e)return e;if((0,n.isBinary)(e)){const s={_placeholder:!0,num:t.length};return t.push(e),s}if(Array.isArray(e)){const s=new Array(e.length);for(let n=0;n=0&&e.num{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.Decoder=t.Encoder=t.PacketType=t.protocol=void 0;const n=s(260),r=s(880),o=s(665),i=(0,s(618).default)("socket.io-parser");var a;t.protocol=5,function(e){e[e.CONNECT=0]="CONNECT",e[e.DISCONNECT=1]="DISCONNECT",e[e.EVENT=2]="EVENT",e[e.ACK=3]="ACK",e[e.CONNECT_ERROR=4]="CONNECT_ERROR",e[e.BINARY_EVENT=5]="BINARY_EVENT",e[e.BINARY_ACK=6]="BINARY_ACK"}(a=t.PacketType||(t.PacketType={})),t.Encoder=class{constructor(e){this.replacer=e}encode(e){return i("encoding packet %j",e),e.type!==a.EVENT&&e.type!==a.ACK||!(0,o.hasBinary)(e)?[this.encodeAsString(e)]:this.encodeAsBinary({type:e.type===a.EVENT?a.BINARY_EVENT:a.BINARY_ACK,nsp:e.nsp,data:e.data,id:e.id})}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+","),null!=e.id&&(t+=e.id),null!=e.data&&(t+=JSON.stringify(e.data,this.replacer)),i("encoded %j as %s",e,t),t}encodeAsBinary(e){const t=(0,r.deconstructPacket)(e),s=this.encodeAsString(t.packet),n=t.buffers;return n.unshift(s),n}};class c extends n.Emitter{constructor(e){super(),this.reviver=e}add(e){let t;if("string"==typeof e){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 u(t),0===t.attachments&&super.emitReserved("decoded",t)):super.emitReserved("decoded",t)}else{if(!(0,o.isBinary)(e)&&!e.base64)throw new Error("Unknown type: "+e);if(!this.reconstructor)throw new Error("got binary data when not reconstructing a packet");t=this.reconstructor.takeBinaryData(e),t&&(this.reconstructor=null,super.emitReserved("decoded",t))}}decodeString(e){let t=0;const s={type:Number(e.charAt(0))};if(void 0===a[s.type])throw new Error("unknown packet type "+s.type);if(s.type===a.BINARY_EVENT||s.type===a.BINARY_ACK){const n=t+1;for(;"-"!==e.charAt(++t)&&t!=e.length;);const r=e.substring(n,t);if(r!=Number(r)||"-"!==e.charAt(t))throw new Error("Illegal attachments");s.attachments=Number(r)}if("/"===e.charAt(t+1)){const n=t+1;for(;++t&&","!==e.charAt(t)&&t!==e.length;);s.nsp=e.substring(n,t)}else s.nsp="/";const n=e.charAt(t+1);if(""!==n&&Number(n)==n){const n=t+1;for(;++t;){const s=e.charAt(t);if(null==s||Number(s)!=s){--t;break}if(t===e.length)break}s.id=Number(e.substring(n,t+1))}if(e.charAt(++t)){const n=this.tryParse(e.substr(t));if(!c.isPayloadValid(s.type,n))throw new Error("invalid payload");s.data=n}return i("decoded %s as %j",e,s),s}tryParse(e){try{return JSON.parse(e,this.reviver)}catch(e){return!1}}static isPayloadValid(e,t){switch(e){case a.CONNECT:return"object"==typeof t;case a.DISCONNECT:return void 0===t;case a.CONNECT_ERROR:return"string"==typeof t||"object"==typeof t;case a.EVENT:case a.BINARY_EVENT:return Array.isArray(t)&&("string"==typeof t[0]||"number"==typeof t[0]);case a.ACK:case a.BINARY_ACK:return Array.isArray(t)}}destroy(){this.reconstructor&&(this.reconstructor.finishedReconstruction(),this.reconstructor=null)}}t.Decoder=c;class u{constructor(e){this.packet=e,this.buffers=[],this.reconPack=e}takeBinaryData(e){if(this.buffers.push(e),this.buffers.length===this.reconPack.attachments){const e=(0,r.reconstructPacket)(this.reconPack,this.buffers);return this.finishedReconstruction(),e}return null}finishedReconstruction(){this.reconPack=null,this.buffers=[]}}},665:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.hasBinary=t.isBinary=void 0;const s="function"==typeof ArrayBuffer,n=Object.prototype.toString,r="function"==typeof Blob||"undefined"!=typeof Blob&&"[object BlobConstructor]"===n.call(Blob),o="function"==typeof File||"undefined"!=typeof File&&"[object FileConstructor]"===n.call(File);function i(e){return s&&(e instanceof ArrayBuffer||(e=>"function"==typeof ArrayBuffer.isView?ArrayBuffer.isView(e):e.buffer instanceof ArrayBuffer)(e))||r&&e instanceof Blob||o&&e instanceof File}t.isBinary=i,t.hasBinary=function e(t,s){if(!t||"object"!=typeof t)return!1;if(Array.isArray(t)){for(let s=0,n=t.length;s{"use strict";function n(e){if(e)return function(e){for(var t in n.prototype)e[t]=n.prototype[t];return e}(e)}s.r(t),s.d(t,{Emitter:()=>n}),n.prototype.on=n.prototype.addEventListener=function(e,t){return this._callbacks=this._callbacks||{},(this._callbacks["$"+e]=this._callbacks["$"+e]||[]).push(t),this},n.prototype.once=function(e,t){function s(){this.off(e,s),t.apply(this,arguments)}return s.fn=t,this.on(e,s),this},n.prototype.off=n.prototype.removeListener=n.prototype.removeAllListeners=n.prototype.removeEventListener=function(e,t){if(this._callbacks=this._callbacks||{},0==arguments.length)return this._callbacks={},this;var s,n=this._callbacks["$"+e];if(!n)return this;if(1==arguments.length)return delete this._callbacks["$"+e],this;for(var r=0;r{for(var n in t)s.o(t,n)&&!s.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},s.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),s.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},(()=>{"use strict";const e=s(46);function t(e,t=document){return t.querySelector(e)}function n(e,t=document){return Array.from(t.querySelectorAll(e))}function r(){return localStorage.getItem("authToken")}function o(){const e=i.gradientName(),s=t("body");let n;s.classList.value=e,s.classList.add(i.getTimePeriod()),n=i.get24Hour()>=5&&i.get24Hour()<9?"morning":i.get24Hour()>=9&&i.get24Hour()<17?"afternoon":i.get24Hour()>=17&&i.get24Hour()<20?"evening":"night",t("#time-of-day").innerHTML=` ${i.getHour()}${i.getAmPm()}`}const i=new(s(182).TimeManager),a=(0,e.io)({extraHeaders:{"x-authtoken":r()}});o(),setInterval(o,6e4),a.on("connect",(()=>{console.log(`Connected: ${a.id}`)})),a.on("authToken",(e=>{console.log(`recv auth token ${e}`),localStorage.setItem("authToken",e)})),a.on("chat",(function(e){t("#chat-messages").innerHTML+=e,t("#chat-messages").scrollTop=t("#chat-messages").scrollHeight})),a.on("ready",(function(){console.log("Server connection verified"),n("nav a")[0].click()})),n("nav a").forEach((e=>{e.addEventListener("click",(e=>{const s=e.target;n("a",s.closest("nav")).forEach((e=>{e.classList.remove("active")})),s.classList.add("active");const r=t(s.getAttribute("hx-target").toString());Array.from(r.parentElement.children).forEach((e=>{e.classList.remove("active")})),r.classList.add("active")}))})),t("body").addEventListener("click",(e=>{var s;const n=e.target;if(n.parentElement.classList.contains("filter")){Array.from(n.parentElement.children).forEach((e=>e.classList.remove("active"))),n.classList.add("active");const e=n.getAttribute("data-filter"),s=t(`.filter-result[data-filter="${e}"]`,n.closest(".filter-container"));s&&Array.from(s.parentElement.children).forEach((t=>{t.getAttribute("data-filter")===e?(t.classList.remove("hidden"),t.classList.add("active")):(t.classList.add("hidden"),t.classList.remove("active"))}))}"dialog"===n.getAttribute("formmethod")&&"cancel"===n.getAttribute("value")&&(null===(s=n.closest("dialog"))||void 0===s||s.close())}));const c=new MutationObserver(((e,s)=>{const r={modal:!1,alert:!1};e.forEach((e=>{switch(e.target.id){case"modal-wrapper":r.modal=!0;break;case"alerts":r.alert=!0}})),r.modal&&t("#modal-wrapper").children.length&&n("#modal-wrapper dialog").forEach((e=>{e.open||e.showModal()})),r.alert&&t("#alerts").children.length&&n("#alerts .alert").forEach((e=>{if(!e.getAttribute("data-dismiss-at")){const t=Date.now()+3e3;e.setAttribute("data-dismiss-at",t.toString()),setTimeout((()=>{e.remove()}),3e3)}}))}));c.observe(t("#modal-wrapper"),{childList:!0}),c.observe(t("#alerts"),{childList:!0}),document.body.addEventListener("htmx:configRequest",(function(e){e.detail.headers["x-authtoken"]=r()})),document.body.addEventListener("htmx:load",(function(e){n(".disabled[data-block]").forEach((e=>{setTimeout((()=>{e.removeAttribute("disabled")}),3e3)}))})),document.body.addEventListener("htmx:beforeSwap",(function(e){"chat-form"===e.target.id&&(t("#message").value="")}))})()})(); \ No newline at end of file diff --git a/public/index.html b/public/index.html index 83f18c6..2ec8975 100644 --- a/public/index.html +++ b/public/index.html @@ -63,7 +63,7 @@
-
+
diff --git a/src/client/chat.ts b/src/client/chat.ts deleted file mode 100644 index 287207e..0000000 --- a/src/client/chat.ts +++ /dev/null @@ -1,33 +0,0 @@ -import {Socket} from 'socket.io-client'; -import {Message} from '../shared/message'; - -// disable chat temporarily to test widgetbot -let socket: Socket; -function $(selector: string, root: any = document): T { - return root.querySelector(selector) as T; -} - -function $$(selector: string, root: any = document): T[] { - return Array.from(root.querySelectorAll(selector)) as T[]; -} - -function renderChatMessage(msg: Message) { - $('#chat-messages').innerHTML += `
- ${msg.from} - ${msg.msg} -
`; - $('#chat-messages').scrollTop = $('#chat-messages').scrollHeight; -} - -function configureStandardChat() { - socket.on('chat', renderChatMessage); -} - -export function configureChat(_socket: Socket) { - // disable chat temporarily to test discord chat - socket = _socket; - - configureStandardChat(); - - console.log('Chat Configured'); -} diff --git a/src/client/custom-discord.ts b/src/client/custom-discord.ts deleted file mode 100644 index 377ac40..0000000 --- a/src/client/custom-discord.ts +++ /dev/null @@ -1,5 +0,0 @@ -import {Socket} from "socket.io-client"; - -export function configureChat(socket: Socket) { - -} diff --git a/src/client/discord.ts b/src/client/discord.ts deleted file mode 100644 index 76bb0f5..0000000 --- a/src/client/discord.ts +++ /dev/null @@ -1,60 +0,0 @@ -import $ from 'jquery'; -import {Socket} from 'socket.io-client'; -import {Message} from '../shared/message'; - -type DiscordWidget = HTMLElement & { - on: (event: string, handler: any) => void; - emit: (event: string, data: any) => void; -} - -type DiscordUser = { - _id: string; - avatar: string; - blockedUsers: string[], - discriminator: string; - provider: "Discord", - username: string -} - -function $el(): DiscordWidget { - return document.getElementById('discord-widget') as DiscordWidget; -} - -function loadPersistedUser(): DiscordUser { - let user = localStorage.getItem('discordChat'); - if(user) { - return JSON.parse(user) as DiscordUser; - } - else { - throw new Error('No discord user'); - } -} - -//@ts-ignore -$el().on('signIn', (user: DiscordUser) => { - localStorage.setItem('discordChat', JSON.stringify(user)); - - setUserAvatarFromDiscord(user.avatar); -}); - -function setUserAvatarFromDiscord(url: string) { - $('#avatar').attr('src', url); -} - -export function configureDiscordChat(socket: Socket) { - try { - const user = loadPersistedUser(); - setUserAvatarFromDiscord(user.avatar); - - socket.on('login', (msg: Message) => { - - console.log('ok logged in'); - $el().emit('sendMessage', { - message: msg.msg - }); - }); - } - catch(e) { - - } -} diff --git a/src/client/htmx.ts b/src/client/htmx.ts index a4107d8..e70141a 100644 --- a/src/client/htmx.ts +++ b/src/client/htmx.ts @@ -1,7 +1,6 @@ import { io } from 'socket.io-client'; -import { authToken } from './http'; +import { Message } from '../shared/message'; import { TimeManager } from '../shared/time'; -import { configureChat } from './chat'; function $(selector: string, root: any = document): T { return root.querySelector(selector) as T; @@ -10,6 +9,11 @@ function $(selector: string, root: any = document): T { function $$(selector: string, root: any = document): T[] { return Array.from(root.querySelectorAll(selector)) as T[]; } + +export function authToken(): string { + return localStorage.getItem('authToken'); +} + function setTimeGradient() { const gradientName = time.gradientName(); const $body = $('body'); @@ -34,6 +38,10 @@ function setTimeGradient() { $('#time-of-day').innerHTML = ` ${time.getHour()}${time.getAmPm()}`; } +function renderChatMessage(msg: string) { + $('#chat-messages').innerHTML += msg; + $('#chat-messages').scrollTop = $('#chat-messages').scrollHeight; +} const time = new TimeManager(); const socket = io({ @@ -53,7 +61,7 @@ socket.on('authToken', (authToken: string) => { localStorage.setItem('authToken', authToken); }); - +socket.on('chat', renderChatMessage); socket.on('ready', bootstrap); @@ -157,7 +165,6 @@ modalMutations.observe($('#alerts'), { childList: true }); function bootstrap() { console.log('Server connection verified'); - configureChat(socket); $$('nav a')[0].click(); } document.body.addEventListener('htmx:configRequest', function(evt) { diff --git a/src/client/http.ts b/src/client/http.ts deleted file mode 100644 index 312cea1..0000000 --- a/src/client/http.ts +++ /dev/null @@ -1,32 +0,0 @@ -export function authToken(): string { - return localStorage.getItem('authToken'); -} - -export const http = { - get: async (path: string) => { - const res = await fetch(path, { - headers: { - 'x-authtoken': authToken() - } - }); - return res.json(); - }, - post: async (path: string, data: any) => { - const res = await fetch(path, { - method: 'post', - body: JSON.stringify(data), - headers: { - 'x-authtoken': authToken(), - 'content-type': 'application/json' - } - }); - - try { - return res.json(); - } - catch { - console.log('No valid JSON response'); - return null; - } - } -} diff --git a/src/client/index.ts b/src/client/index.ts deleted file mode 100644 index b460ead..0000000 --- a/src/client/index.ts +++ /dev/null @@ -1,1117 +0,0 @@ -import { io } from 'socket.io-client'; -import $ from 'jquery'; -import {expToLevel, maxHp, Player, StatDef, StatDisplay} from '../shared/player'; -import { authToken, http } from './http'; -import { CustomEventManager } from './events'; -import {Fight, FightTrigger, MonsterForFight, MonsterForList} from '../shared/monsters'; -import {FightRound} from '../shared/fight'; -import { City, Location, LocationType, Path } from '../shared/map' -import { v4 as uuid } from 'uuid'; -import {EquipmentSlot, ShopEquipment} from '../shared/inventory'; -import { capitalize, each } from 'lodash'; -import {EquippedItemDetails} from '../shared/equipped'; -import { Skill, Skills } from '../shared/skills'; -import { configureChat } from './chat'; -import { SocketEvent } from './socket-event.client'; -import * as EventList from '../events/client'; -import { TimeManager } from '../shared/time'; -import { TravelDTO } from '../events/travel/shared'; -import { Item, PlayerItem, ShopItem } from '../shared/items'; -import { Modal } from './modal'; - - -const time = new TimeManager(); -const cache = new Map(); -const events = new CustomEventManager(); -const socket = io({ - extraHeaders: { - 'x-authtoken': authToken() - } -}); - -configureChat(socket); - -function setTimeGradient() { - const gradientName = time.gradientName(); - const $body = $('body'); - $body.removeClass(Array.from($body[0].classList)).addClass(gradientName); - $body.addClass(time.getTimePeriod()); - - let icon: string; - if(time.get24Hour() >= 5 && time.get24Hour() < 9) { - icon = 'morning'; - } - else if(time.get24Hour() >= 9 && time.get24Hour() < 17) { - icon = 'afternoon'; - } - else if(time.get24Hour() >= 17 && time.get24Hour() < 20) { - icon = 'evening' - } - else { - icon = 'night'; - } - - $('#time-of-day').html(` ${time.getHour()}${time.getAmPm()}`); -} - -setTimeGradient(); -setInterval(setTimeGradient, 60 * 1000); - -function icon(name: string): string { - return ``; -} - - -function generateProgressBar(current: number, max: number, color: string, displayPercent: boolean = true): string { - let percent = 0; - if(max > 0) { - percent = Math.floor((current / max) * 100); - } - const display = `${displayPercent? `${percent}% - `: ''}`; - return `
${display}${current}/${max}
`; -} - -function progressBar(current: number, max: number, el: string, color: string) { - let percent = 0; - if(max > 0) { - percent = Math.floor((current / max) * 100); - } - $(`#${el}`).css( - 'background', - `linear-gradient(to right, ${color}, ${color} ${percent}%, transparent ${percent}%, transparent)` - ).attr('title', `${percent}% - ${current}/${max}`).html(`${current}/${max} - ${percent}%`); -} - -function updatePlayer() { - const player: Player = cache.get('player'); - - $('#username').html(`${player.username}, level ${player.level} ${player.profession}`); - - progressBar( - player.hp, - maxHp(player.constitution, player.level), - 'hp-bar', - '#ff7070' - ); - - progressBar( - player.exp, - expToLevel(player.level + 1), - 'exp-bar', - '#5997f9' - ); - - ['strength', 'constitution', 'dexterity', 'intelligence','hp','exp'].forEach(s => { - $(`.${s}`).html(player[s]); - }); - - $('.maxHp').html(maxHp(player.constitution, player.level).toString()); - $('.expToLevel').html(expToLevel(player.level + 1).toString()); - $('.gold').html(player.gold.toLocaleString()); - - if(player.account_type === 'session') { - $('#signup-prompt').html(`

Hey there! It looks like you're using a SESSION account. This allows you to play with away, but the account is tied to your current device, and will be lost if you ever clear your cookies.

-

-
- - -
-
- - -
- - -

`).removeClass('hidden'); - } - - $('#extra-inventory-info').html(renderStatDetails()); -} - -socket.on('connect', () => { - console.log(`Connected: ${socket.id}`); -}); - -socket.on('ready', bootstrap); - -socket.on('server-stats', (data: {onlinePlayers: number}) => { - $('#server-stats').html(`${data.onlinePlayers} players online`); -}); - -each(EventList, event => { - console.log(`Binding Event ${event.eventName}`); - if(event instanceof SocketEvent) { - socket.on(event.eventName, event.handler.bind(null, { - cache, - socket, - events - })); - } - else { - console.log('Skipped binding', event); - } -}); - -socket.on('calc:ap', (data: {ap: Record}) => { - const { ap } = data; - const html = ` -
- ${icon('helm')} - ${generateProgressBar(ap.HEAD?.currentAp || 0, ap.HEAD?.maxAp || 0, '#7be67b')} -
-
- ${icon('arms')} - ${generateProgressBar(ap.ARMS?.currentAp || 0, ap.ARMS?.maxAp || 0, '#7be67b')} -
-
- ${icon('chest')} - ${generateProgressBar(ap.CHEST?.currentAp || 0, ap.CHEST?.maxAp || 0, '#7be67b')} -
-
- ${icon('legs')} - ${generateProgressBar(ap.LEGS?.currentAp || 0, ap.LEGS?.maxAp || 0, '#7be67b')} -
- `; - $('#ap-bar').html(html); -}); - -events.on('tab:skills', () => { - $('#skills').html(''); - socket.emit('skills'); -}); - -socket.on('skills', (data: {skills: Skill[]}) => { - let html = ` - ${data.skills.map((skill: Skill) => { - const definition = Skills.get(skill.id); - const percent = skill.exp / definition.expToLevel(skill.level + 1); - return ` - - - - - `; - }).join("\n")} -
${skill.level.toLocaleString()} - ${(percent * 100).toPrecision(2)}% to next level - ${definition.display} -

${definition.description}

-
`; - - $('#skills').html(html); -}); - -function Alert(text: string, type: string = 'error') { - let id = uuid(); - $('#alerts').append(`
${text}
`); - - setTimeout(() => { - $(`#alert-${id}`).remove(); - }, 3000); -} - -events.on('alert', (data: {type: string, text: string}) => { - Alert(data.text, data.type); -}); - -socket.on('alert', data => { - events.emit('alert', [data]); -}); - -socket.on('init', (data: {version: string}) => { - $('#version').html(`v${data.version}`); -}); - -socket.on('authToken', (authToken: string) => { - console.log(`recv auth token ${authToken}`); - localStorage.setItem('authToken', authToken); -}); - - -socket.on('player', (player: Player) => { - cache.set('player', player); - updatePlayer(); -}); - -async function fetchState() { - const res = await http.get('/state'); - cache.set('state', res); -} - -$('nav a').on('click', async e => { - e.preventDefault(); - e.stopPropagation(); - - const tabsDisabledInFight = [ - 'skills', - 'inventory' - ]; - - await fetchState(); - const state = cache.get('state'); - - const $tabContainer = $(`#${$(e.target).data('container')}`); - let tabSection = $(e.target).data('section'); - - if(tabsDisabledInFight.includes(tabSection) && state?.fight !== null) { - Alert('You are currently in a fight', 'error'); - // we want to force users over to the explore tab - // if they are currently in a fight and trying to - // access a disabled section - tabSection = 'explore'; - } - - $tabContainer.find('.tab').removeClass('active'); - - $(`#${tabSection}`).addClass('active'); - - if(e.target.innerHTML !== 'Settings') { - $(e.target).closest('nav').find('a').removeClass('active'); - $(`nav a[data-section=${tabSection}]`).addClass('active'); - } - - events.emit(`tab:${tabSection}`); -}); - -events.on('tab:inventory', () => { - socket.emit('inventory'); -}); - -function renderEquipmentPlacementGrid(items: EquippedItemDetails[]) { - const placeholder = 'https://via.placeholder.com/64x64'; - // @ts-ignore - const map: Record = items.filter(item => item.is_equipped).reduce((acc, item) => { - acc[item.equipment_slot] = item; - return acc; - }, {}); - - const html = ` - - - - - - - - - - - - - - - - -
- - ${map.HEAD ? map.HEAD.name : 'HEAD'} - - ${map.ARMS ? map.ARMS.name : 'ARMS'} -
- ${map.LEFT_HAND ? map.LEFT_HAND.name : (map.TWO_HANDED ? map.TWO_HANDED.name : 'L_HAND')} - - ${map.CHEST ? map.CHEST.name : 'CHEST'} - - ${map.RIGHT_HAND ? map.RIGHT_HAND.name : (map.TWO_HANDED ? map.TWO_HANDED.name : 'R_HAND')} -
- - ${map.LEGS ? map.LEGS.name : 'LEGS'} - -
- `; - - return html; -} -function statPointIncreaser(stat: StatDisplay) { - return ``; -} -function renderStatDetails() { - const player: Player = cache.get('player'); - let html = ''; - - StatDef.forEach(stat => { - html += ` - - - `; - }); - - html += ``; - - html += '
${stat.display} - ${player[stat.id]} - ${player.stat_points ? statPointIncreaser(stat) : ''} -
Stat Points${player.stat_points}
'; - - return html; -} - -$('body').on('click', 'nav.filter', e => { - e.preventDefault(); - e.stopPropagation(); - - const $target = $(e.target); - const filter = $target.data('filter'); - - $('.filter-result').removeClass('active').addClass('hidden'); - $(`#filter_${filter}`).addClass('active').removeClass('hidden'); - - $target.closest('nav').find('a').removeClass('active'); - $target.addClass('active'); - - const cacheKey = `active-${$(e.target).closest('nav').attr('id')}`; - - cache.set(cacheKey, filter); -}); - -$('body').on('click', '.close-modal', e => { - const $el = $(e.target).closest('dialog').get(0) as HTMLDialogElement; - $el.close(); - $el.remove(); -}); - -$('body').on('click', '.trigger-modal', (e) => { - const $el = $(e.target).closest('.trigger-modal'); - const modal = new Modal(); - - modal.on('ready', async (m: Modal) => { - const res: {description: string} = await http.get($el.data('endpoint')); - - m.setBody(res.description); - - m.showModal(); - }); - - modal.render(); -}); - - -function renderInventoryItems(items: PlayerItem[]): string { - return items.map(item => { - return ` -
- - ${item.amount.toLocaleString()} -
`; - }).join("
"); - -} - -function renderInventorySection(inventory: EquippedItemDetails[]): string { - return inventory.map(item => { - return renderInventoryItem(item, item => { - if(item.is_equipped) { - return ``; - } - else { - if(item.equipment_slot === 'ANY_HAND') { - return ` - `; - } - else if(item.equipment_slot === 'LEFT_HAND') { - return ``; - } - else if(item.equipment_slot === 'RIGHT_HAND') { - return ``; - } - else if(item.equipment_slot === 'TWO_HANDED') { - return ``; - } - else { - return ``; - } - } - }) - }).join("\n"); -} - -events.on('tab:profile', () => { - const html = `
- ${renderStatDetails()} -
`; - - $('#profile').html(html); -}); - -socket.on('inventory', (data: {inventory: EquippedItemDetails[], items: PlayerItem[]}) => { - const player: Player = cache.get('player'); - const activeSection = cache.get('active-inventory-section') || 'ARMOUR'; - // split the inventory into sections! - const sectionedInventory: {ARMOUR: EquippedItemDetails[], WEAPON: EquippedItemDetails[], SPELL: EquippedItemDetails[], ITEMS: PlayerItem[]} = { - ARMOUR: [], - WEAPON: [], - SPELL: [], - ITEMS: [] - }; - - data.inventory.forEach(item => { - sectionedInventory[item.type].push(item); - }); - data.items.forEach(item => { - sectionedInventory.ITEMS.push(item); - }); - - const html = ` -
-
- ${renderEquipmentPlacementGrid(data.inventory)} -
-
- -
- ${Object.keys(sectionedInventory).map(type => { - return `
- ${type === 'ITEMS' ? renderInventoryItems(sectionedInventory[type]) : renderInventorySection(sectionedInventory[type])} -
`; - - }).join("")} -
-
-
- `; - $('#inventory').html(html); -}); - -$('body').on('click', '.equip-item', e => { - e.preventDefault(); - e.stopPropagation(); - - const $target = $(e.target); - const id = $target.data('id'); - const slot = $target.data('slot'); - - socket.emit('equip', {id, slot}); -}); - -$('body').on('click', '.unequip-item', e => { - e.preventDefault(); - e.stopPropagation(); - - socket.emit('unequip', { id: $(e.target).data('id') }); -}); - -function setMapBackground(city_id: number) { - $('#explore').css({ - 'background-image': `linear-gradient(to left top, rgba(255,255,255,0) 0%,rgb(255,255,255) 100%), linear-gradient(to left, rgba(255, 255, 255, 0) 0%, rgb(255, 255, 255) 100%), url("/assets/img/map/${city_id}.jpeg")` - }); -} - -events.on('renderMap', async function renderMap(data: { city: City, locations: Location[], paths: Path[]}) { - if(!data && cache.has('currentMapHTML')) { - $('#map').html(cache.get('currentMapHTML')); - return; - } - - if(!data) { - console.error('oh no.. this got triggered without any city data'); - } - - setMapBackground(data.city.id); - - const servicesParsed: Record = { - 'SERVICES': [], - 'STORES': [], - 'EXPLORE': [] - }; - - data.locations.forEach(l => { - servicesParsed[l.type].push(`${l.name}`); - }); - - let html = `

${data.city.name}

-
`; - - if(servicesParsed.SERVICES.length) { - html += `

Services

${servicesParsed.SERVICES.join("
")}
` - } - if(servicesParsed.STORES.length) { - html += `

Stores

${servicesParsed.STORES.join("
")}
` - } - if(servicesParsed.EXPLORE.length) { - html += `

Explore

${servicesParsed.EXPLORE.join("
")}
` - } - html += ` -
-

Travel

- ${data.paths.map(path => { - return `${path.ending_city_name}` - }).join("
")} -
-
- `; - - cache.set('currentMapHTML', html); - - $('#map').html(html); -}); - -function renderRequirement(name: string, val: number | string, currentVal?: number): string { - let colorIndicator = ''; - if(currentVal) { - colorIndicator = currentVal >= val ? 'success' : 'error'; - } - return `${name}: ${val.toLocaleString()}`; -} - -function renderStatBoost(name: string, val: number | string): string { - let valSign: string = ''; - if(typeof val === 'number') { - valSign = val > 0 ? '+' : '-'; - } - return `${name}: ${valSign}${val}`; -} - -function renderInventoryItem(item: EquippedItemDetails , action: (item: EquippedItemDetails) => string): string { - return `
-
- -
-
-
${item.name}
-
- ${item.requirements.level ? renderRequirement('LVL', item.requirements.level): ''} - ${item.requirements.strength ? renderRequirement('STR', item.requirements.strength): ''} - ${item.requirements.constitution ? renderRequirement('CON', item.requirements.constitution): ''} - ${item.requirements.dexterity ? renderRequirement('DEX', item.requirements.dexterity): ''} - ${item.requirements.intelligence ? renderRequirement('INT', item.requirements.intelligence): ''} - ${renderRequirement('PRF', item.profession)} -
-
- ${item.boosts.strength ? renderStatBoost('STR', item.boosts.strength) : ''} - ${item.boosts.constitution ? renderStatBoost('CON', item.boosts.constitution) : ''} - ${item.boosts.dexterity ? renderStatBoost('DEX', item.boosts.dexterity) : ''} - ${item.boosts.intelligence ? renderStatBoost('INT', item.boosts.intelligence) : ''} - ${item.boosts.damage ? renderStatBoost('DMG', item.boosts.damage) : ''} - ${item.boosts.damage_mitigation ? renderStatBoost('MIT', item.boosts.damage_mitigation.toString())+'%' : ''} - ${['WEAPON','SPELL'].includes(item.type) ? '': generateProgressBar(item.currentAp, item.maxAp, '#7be67b')} -
- ${item.hasOwnProperty('id') ? `
${item.cost.toLocaleString()}G
` : ''} -
-
- ${action(item)} -
-
`; -} - -function renderShopEquipment(item: ShopEquipment, action: (item: ShopEquipment) => string): string { - const player: Player = cache.get('player'); - return `
-
- -
-
-
${item.name}${item.equipment_slot === 'TWO_HANDED' ? ' (2H)': ''}
-
- ${item.requirements.level ? renderRequirement('LVL', item.requirements.level, player.level): ''} - ${item.requirements.strength ? renderRequirement('STR', item.requirements.strength, player.strength): ''} - ${item.requirements.constitution ? renderRequirement('CON', item.requirements.constitution, player.constitution): ''} - ${item.requirements.dexterity ? renderRequirement('DEX', item.requirements.dexterity, player.dexterity): ''} - ${item.requirements.intelligence ? renderRequirement('INT', item.requirements.intelligence, player.intelligence): ''} - ${renderRequirement('PRF', item.profession)} -
-
- ${item.boosts.strength ? renderStatBoost('STR', item.boosts.strength) : ''} - ${item.boosts.constitution ? renderStatBoost('CON', item.boosts.constitution) : ''} - ${item.boosts.dexterity ? renderStatBoost('DEX', item.boosts.dexterity) : ''} - ${item.boosts.intelligence ? renderStatBoost('INT', item.boosts.intelligence) : ''} - ${item.boosts.damage ? renderStatBoost(item.affectedSkills.includes('restoration_magic') ? 'HP' : 'DMG', item.boosts.damage) : ''} - ${item.boosts.damage_mitigation ? renderStatBoost('MIT', item.boosts.damage_mitigation.toString())+'%' : ''} - ${['WEAPON','SPELL'].includes(item.type) ? '' : renderStatBoost('AP', item.maxAp.toString())} -
- ${item.hasOwnProperty('id') ? `
${item.cost.toLocaleString()}G
` : ''} -
-
- ${action(item)} -
-
`; -} - -function renderShopItem(item: (ShopItem & Item), action: (item: (ShopItem & Item)) => string): string { - const player: Player = cache.get('player'); - return `
-
- -
-
-
${item.name}
-
- ${item.description} -
- ${item.hasOwnProperty('id') ? `
${item.price_per_unit.toLocaleString()}G
` : ''} -
-
- ${action(item)} -
-
`; -} - -socket.on('city:stores', (data: {equipment: ShopEquipment[], items: (ShopItem & Item)[]}) => { - const listing: Record = {}; - const listingTypes = new Set(); - const { equipment, items } = data; - equipment.forEach(item => { - if(item.type === 'ARMOUR') { - listingTypes.add(item.equipment_slot); - - if(!listing[item.equipment_slot]) { - listing[item.equipment_slot] = ''; - } - - listing[item.equipment_slot] += renderShopEquipment(item, i => { - const id = `data-id="${i.id}"`; - return `` - }); - } - else if(item.type) { - listingTypes.add(item.type); - if(!listing[item.type]) { - listing[item.type] = ''; - } - - listing[item.type] += renderShopEquipment(item, i => { - const id = `data-id="${i.id}"`; - return `` - }); - } - else { - console.log('no type', item); - } - }); - - if(items && items.length) { - listingTypes.add('ITEMS'); - listing['ITEMS'] = ''; - items.forEach(item => { - listing['ITEMS'] += renderShopItem(item, i => { - return ``; - }); - }); - } - - const sections = Object.keys(listing); - let activeSection = cache.get('active-shop-inventory-listing'); - - if(!sections.includes(activeSection)) { - activeSection = sections[0]; - } - - const nav: string[] = []; - const finalListing: string[] = []; - - listingTypes.forEach(type => { - nav.push(`${capitalize(type)}`); - finalListing.push(`
${listing[type]}
`); - }); - - let html = `
-
- ${finalListing.join("\n")} -
-
`; - - $('#map').html(html); - -}); - -$('body').on('click', '.purchase-item', e => { - e.preventDefault(); - e.stopPropagation(); - - const player = cache.get('player'); - const cost = parseInt($(e.target).data('cost')); - - - const id = $(e.target).data('id'); - if(player.gold < cost) { - events.emit('alert', [{ - type: 'error', - text: 'You don\'t have enough gold!' - }]); - return; - } - else { - const type = $(e.target).data('type'); - socket.emit('purchase', { - id - }); - } -}); - -$('body').on('click', '.http-post', async e => { - const $el = $(e.target).closest('[data-endpoint]'); - const endpoint = $el.data('endpoint'); - const args = $el.data(); - - const res = await http.post(endpoint, args); -}); - -$('body').on('click', '.emit-event', e => { - const $el = $(e.target); - - const eventName = $el.closest('[data-event]').data('event'); - const args = $el.closest('[data-args]').data('args'); - - const rawBlock = $el.data('block'); - - if(rawBlock) { - const block = parseInt(rawBlock) || 0; - - if(block > Date.now()) { - Alert('Sorry, clicked too quick'); - return; - } - } - - console.log(`Sending event ${eventName}`, { args }); - socket.emit(eventName, { args }); -}); - -$('body').on('click', '.city-emit-event', e => { - const $el = $(e.target); - - const eventName = $el.data('event'); - const args = $el.data('args'); - - console.log(`Sending event ${eventName}`, { args }); - socket.emit(eventName, { args }); -}); - -$('body').on('click', '.emit-event-internal', e => { - const $el = $(e.target); - - const eventName = $el.data('event'); - const args: string[] = $el.data('args')?.toString().split('|'); - - console.log(`Trigger internal event [${eventName}]`); - events.emit(eventName, args); -}); - - -socket.on('explore:fights', (monsters: MonsterForList[]) => { - const lastSelectedMonster = cache.get('last-selected-monster'); - if(monsters.length) { - let sel = `
`; - - $('#map').html(sel); - } -}); - -events.on('tab:explore', async () => { - const state = cache.get('state'); - if(cache.get('player').hp <= 0 || (!state.fight && !state.travel)) { - // get the details of the city - // render the map! - let data: {city: City, locations: Location[], paths: Path[]}; - if(!cache.has(('currentMapHTML')) || cache.get('player').hp <= 0) { - data = await http.get(`/city/${cache.get('player').city_id}`); - } - events.emit('renderMap', [data, state.travel]); - - } - else if(state.fight) { - setMapBackground(state.closestTown); - $('#map').html(renderFight(state.fight)); - } - else if(state.travel) { - // render TRAVEL - events.emit('renderTravel', [state.travel]); - } -}); - -function updateStepButton() { - const raw = $('#keep-walking').data('block'); - const time = parseInt(raw) || 0; - - if(time > 0) { - const wait = Math.ceil((time - Date.now())/ 1000); - if(wait > 0) { - $('#keep-walking').prop('disabled', true).html(`Keep walking (${wait}s)`); - setTimeout(updateStepButton, 300); - return; - } - } - - $('#keep-walking').prop('disabled', false).html(`Keep walking`); -} - -function renderTravel(data: TravelDTO) { - setMapBackground(data.closestTown); - - let promptText = data.walkingText; - const blockTime = data.nextAction || 0; - let html = `
`; - - html += '
'; - html += ``; - - if(data.things.length) { - // ok you found something, for now we only support - // monsters, but eventually that will change - promptText = `You see a ${data.things[0].name}`; - html += ``; - } - - // end #travelling-actions - html += '
'; - html += `

${promptText}

`; - - // end #travelling div - html += '
'; - - $('#map').html(html); - - if(blockTime) { - updateStepButton(); - } -} - -events.on('renderTravel', renderTravel); - -function renderFight(monster: MonsterForFight | Fight) { - const hpPercent = Math.floor((monster.hp / monster.maxHp) * 100); - - let html = `
-
-
- -
-
-
${monster.name}
-
${hpPercent}% - ${monster.hp} / ${monster.maxHp}
-
-
-
- - - - -
-
-
`; - - return html; -} - -socket.on('updatePlayer', (player: Player) => { - cache.set('player', player); - updatePlayer(); -}); - -socket.on('fight-over', (data: {roundData: FightRound, monsters: MonsterForFight[]}) => { - const { roundData, monsters } = data; - cache.set('player', roundData.player); - updatePlayer(); - - $('#map').html(renderFight(roundData.monster)); - - let html: string[] = roundData.roundDetails.map(d => `
${d}
`); - - if(roundData.winner === 'player') { - html.push(`
You defeated the ${roundData.monster.name}!
`); - if(roundData.rewards.gold) { - html.push(`
You gained ${roundData.rewards.gold} gold`); - } - if(roundData.rewards.exp) { - html.push(`
You gained ${roundData.rewards.exp} exp`); - } - if(roundData.rewards.levelIncrease) { - html.push(`
You gained a level! ${roundData.player.level}`); - } - } - - if(roundData.player.hp === 0) { - // prompt to return to town and don't let them do anything - html.push(`

You were killed...

`); - html.push('

'); - } - else { - switch(roundData.fightTrigger) { - case 'explore': - if(monsters.length) { - const lastSelectedMonster = cache.get('last-selected-monster'); - // put this above the fight details - html.unshift(`

Fight Again

-
`); - } - break; - case 'travel': - html.push(`

`); - break; - default: - console.error(`Unknown fight trigger [${roundData.fightTrigger}]`, roundData); - break; - } - } - - - - $('#fight-results').html(html.join("\n")); - $('#fight-actions').html(''); - -}); - -socket.on('fight-round', (data: FightRound) => { - $('.fight-action').prop('disabled', false); - cache.set('player', data.player); - updatePlayer(); - - $('#map').html(renderFight(data.monster)); - - $('#fight-results').html(data.roundDetails.map(d => `
${d}
`).join("\n")); -}); - -async function startFight(monsterId: string, fightTrigger: FightTrigger = 'explore') { - // check your HP first - if(cache.get('player').hp <= 0) { - events.emit('alert', [{ - type: 'error', - text: 'You don\'t have enough HP to go looking for a fight' - }]); - return; - } - - cache.set('last-selected-monster', monsterId); - - try { - const monster: MonsterForFight = await http.post('/fight', { - monsterId, - fightTrigger - }); - - $('#map').html(renderFight(monster)); - } - catch(e) { - events.emit('alert', [{ - type: 'error', - text: 'Sorry, you can\'t start that fight' - }]); - } -} - -events.on('startFight', startFight); - -$('body').on('submit', '#fight-selector', async e => { - e.preventDefault(); - e.stopPropagation(); - - const monsterId = $('#monster-selector option:selected').val(); - - if(monsterId) { - startFight(monsterId.toString()); - } - else { - console.error(`Invalid monster id [${monsterId}]`); - } - -}); - -$('body').on('click', '.fight-action', e => { - e.preventDefault(); - e.stopPropagation(); - - const action = $(e.target).data('action'); - const target = $('#fight-target option:selected').val(); - $('.fight-action').prop('disabled', true); - - socket.emit('fight', { action, target }); -}); - -$('body').on('submit', '#signup', async e => { - e.preventDefault(); - e.stopPropagation(); - - const data: Record = {}; - - $(e.target).serializeArray().forEach(v => data[v.name] = v.value); - - const res = await http.post('/signup', data); - - if(res.error) { - events.emit('alert', [{ - type: 'error', - text: res.error - }]); - } - else { - cache.set('player', res.player); - updatePlayer(); - $('#signup-prompt').remove(); - } - -}); - -$('body').on('click', '#login', async e => { - e.preventDefault(); - e.stopPropagation(); - - const data: Record = {}; - - $(e.target).closest('form').serializeArray().forEach(v => data[v.name] = v.value); - - if(data.username && data.password) { - const res = await http.post('/login', data); - if(res.error) { - events.emit('alert', [{type: 'error', text: res.error}]); - } - else { - localStorage.setItem('authToken', res.player.id); - window.location.reload(); - } - } -}); - -$('body').on('click', '#logout', async e => { - e.preventDefault(); - e.stopPropagation(); - - let logout = false; - - const player = cache.get('player'); - if(/^Player[\d]+$/.test(player.username)) { - const clear = confirm('Are you sure? You will not be able to retrieve this character unless you set up an email/password'); - if(clear) { - logout = true; - } - else { - logout = false; - } - } - else { - logout = true; - } - - if(logout) { - socket.emit('logout'); - localStorage.clear(); - window.location.reload(); - } - -}); - -function bootstrap() { - console.log('Server connection verified'); - //socket.emit('inventory'); - $('nav a').first().click(); - -} -document.body.addEventListener('htmx:configRequest', function(evt) { - //@ts-ignore - evt.detail.headers['x-authtoken'] = authToken(); -}); diff --git a/src/client/socket-event.client.ts b/src/client/socket-event.client.ts deleted file mode 100644 index e27ae94..0000000 --- a/src/client/socket-event.client.ts +++ /dev/null @@ -1,16 +0,0 @@ -import {Socket} from "socket.io-client"; -import {CustomEventManager} from "./events"; - -export type API = { - socket: Socket; - cache: Map, - events: CustomEventManager -}; - -type SocketEventHandler = (api: API, data: unknown) => void; - -export class SocketEvent { - constructor(public eventName: string, public handler: SocketEventHandler) { - - } -} diff --git a/src/server/api.ts b/src/server/api.ts index b7e0033..0bfa20d 100644 --- a/src/server/api.ts +++ b/src/server/api.ts @@ -95,7 +95,7 @@ io.on('connection', async socket => { socket.emit('authToken', player.id); - socket.emit('chat', broadcastMessage('server', `${player.username} just logged in`)); + socket.emit('chat', renderChatMessage(broadcastMessage('server', `${player.username} just logged in`))); socket.on('disconnect', () => { console.log(`Player ${player.username} left`); @@ -414,22 +414,17 @@ app.post('/chat', authEndpoint, async (req: AuthRequest, res: Response) => { message = broadcastMessage('server', str); } } - - } else { message = broadcastMessage(req.player.username, msg); chatHistory.push(message); chatHistory.slice(-10); - - io.emit('chat', message); - res.sendStatus(204); } if(message) { - io.emit('chat', message); + io.emit('chat', renderChatMessage(message)); + res.sendStatus(204); } - }); app.get('/player', authEndpoint, async (req: AuthRequest, res: Response) => { -- 2.25.1 From 6c7b2562b706b20d71b4cdcf31d31e37af9d8c35 Mon Sep 17 00:00:00 2001 From: xangelo Date: Tue, 8 Aug 2023 14:48:52 -0400 Subject: [PATCH 3/6] chore: move unused js --- public/assets/bundle.js | 2 +- public/index.html | 1 - src/client/events.ts | 20 -------------------- src/client/htmx.ts | 3 +-- src/client/modal.ts | 41 ----------------------------------------- 5 files changed, 2 insertions(+), 65 deletions(-) delete mode 100644 src/client/events.ts delete mode 100644 src/client/modal.ts diff --git a/public/assets/bundle.js b/public/assets/bundle.js index b9afe5a..9146dc8 100644 --- a/public/assets/bundle.js +++ b/public/assets/bundle.js @@ -1 +1 @@ -(()=>{var e={802:(e,t,s)=>{t.formatArgs=function(t){if(t[0]=(this.useColors?"%c":"")+this.namespace+(this.useColors?" %c":" ")+t[0]+(this.useColors?"%c ":" ")+"+"+e.exports.humanize(this.diff),!this.useColors)return;const s="color: "+this.color;t.splice(1,0,s,"color: inherit");let n=0,r=0;t[0].replace(/%[a-zA-Z%]/g,(e=>{"%%"!==e&&(n++,"%c"===e&&(r=n))})),t.splice(r,0,s)},t.save=function(e){try{e?t.storage.setItem("debug",e):t.storage.removeItem("debug")}catch(e){}},t.load=function(){let e;try{e=t.storage.getItem("debug")}catch(e){}return!e&&"undefined"!=typeof process&&"env"in process&&(e=process.env.DEBUG),e},t.useColors=function(){return!("undefined"==typeof window||!window.process||"renderer"!==window.process.type&&!window.process.__nwjs)||("undefined"==typeof navigator||!navigator.userAgent||!navigator.userAgent.toLowerCase().match(/(edge|trident)\/(\d+)/))&&("undefined"!=typeof document&&document.documentElement&&document.documentElement.style&&document.documentElement.style.WebkitAppearance||"undefined"!=typeof window&&window.console&&(window.console.firebug||window.console.exception&&window.console.table)||"undefined"!=typeof navigator&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/)&&parseInt(RegExp.$1,10)>=31||"undefined"!=typeof navigator&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/))},t.storage=function(){try{return localStorage}catch(e){}}(),t.destroy=(()=>{let e=!1;return()=>{e||(e=!0,console.warn("Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`."))}})(),t.colors=["#0000CC","#0000FF","#0033CC","#0033FF","#0066CC","#0066FF","#0099CC","#0099FF","#00CC00","#00CC33","#00CC66","#00CC99","#00CCCC","#00CCFF","#3300CC","#3300FF","#3333CC","#3333FF","#3366CC","#3366FF","#3399CC","#3399FF","#33CC00","#33CC33","#33CC66","#33CC99","#33CCCC","#33CCFF","#6600CC","#6600FF","#6633CC","#6633FF","#66CC00","#66CC33","#9900CC","#9900FF","#9933CC","#9933FF","#99CC00","#99CC33","#CC0000","#CC0033","#CC0066","#CC0099","#CC00CC","#CC00FF","#CC3300","#CC3333","#CC3366","#CC3399","#CC33CC","#CC33FF","#CC6600","#CC6633","#CC9900","#CC9933","#CCCC00","#CCCC33","#FF0000","#FF0033","#FF0066","#FF0099","#FF00CC","#FF00FF","#FF3300","#FF3333","#FF3366","#FF3399","#FF33CC","#FF33FF","#FF6600","#FF6633","#FF9900","#FF9933","#FFCC00","#FFCC33"],t.log=console.debug||console.log||(()=>{}),e.exports=s(804)(t);const{formatters:n}=e.exports;n.j=function(e){try{return JSON.stringify(e)}catch(e){return"[UnexpectedJSONParseError]: "+e.message}}},804:(e,t,s)=>{e.exports=function(e){function t(e){let s,r,o,i=null;function a(...e){if(!a.enabled)return;const n=a,r=Number(new Date),o=r-(s||r);n.diff=o,n.prev=s,n.curr=r,s=r,e[0]=t.coerce(e[0]),"string"!=typeof e[0]&&e.unshift("%O");let i=0;e[0]=e[0].replace(/%([a-zA-Z%])/g,((s,r)=>{if("%%"===s)return"%";i++;const o=t.formatters[r];if("function"==typeof o){const t=e[i];s=o.call(n,t),e.splice(i,1),i--}return s})),t.formatArgs.call(n,e),(n.log||t.log).apply(n,e)}return a.namespace=e,a.useColors=t.useColors(),a.color=t.selectColor(e),a.extend=n,a.destroy=t.destroy,Object.defineProperty(a,"enabled",{enumerable:!0,configurable:!1,get:()=>null!==i?i:(r!==t.namespaces&&(r=t.namespaces,o=t.enabled(e)),o),set:e=>{i=e}}),"function"==typeof t.init&&t.init(a),a}function n(e,s){const n=t(this.namespace+(void 0===s?":":s)+e);return n.log=this.log,n}function r(e){return e.toString().substring(2,e.toString().length-2).replace(/\.\*\?$/,"*")}return t.debug=t,t.default=t,t.coerce=function(e){return e instanceof Error?e.stack||e.message:e},t.disable=function(){const e=[...t.names.map(r),...t.skips.map(r).map((e=>"-"+e))].join(",");return t.enable(""),e},t.enable=function(e){let s;t.save(e),t.namespaces=e,t.names=[],t.skips=[];const n=("string"==typeof e?e:"").split(/[\s,]+/),r=n.length;for(s=0;s{t[s]=e[s]})),t.names=[],t.skips=[],t.formatters={},t.selectColor=function(e){let s=0;for(let t=0;t{var t=1e3,s=60*t,n=60*s,r=24*n;function o(e,t,s,n){var r=t>=1.5*s;return Math.round(e/s)+" "+n+(r?"s":"")}e.exports=function(e,i){i=i||{};var a,c,u=typeof e;if("string"===u&&e.length>0)return function(e){if(!((e=String(e)).length>100)){var o=/^(-?(?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(e);if(o){var i=parseFloat(o[1]);switch((o[2]||"ms").toLowerCase()){case"years":case"year":case"yrs":case"yr":case"y":return 315576e5*i;case"weeks":case"week":case"w":return 6048e5*i;case"days":case"day":case"d":return i*r;case"hours":case"hour":case"hrs":case"hr":case"h":return i*n;case"minutes":case"minute":case"mins":case"min":case"m":return i*s;case"seconds":case"second":case"secs":case"sec":case"s":return i*t;case"milliseconds":case"millisecond":case"msecs":case"msec":case"ms":return i;default:return}}}}(e);if("number"===u&&isFinite(e))return i.long?(a=e,(c=Math.abs(a))>=r?o(a,c,r,"day"):c>=n?o(a,c,n,"hour"):c>=s?o(a,c,s,"minute"):c>=t?o(a,c,t,"second"):a+" ms"):function(e){var o=Math.abs(e);return o>=r?Math.round(e/r)+"d":o>=n?Math.round(e/n)+"h":o>=s?Math.round(e/s)+"m":o>=t?Math.round(e/t)+"s":e+"ms"}(e);throw new Error("val is not a non-empty string or a valid number. val="+JSON.stringify(e))}},669:(e,t,s)=>{t.formatArgs=function(t){if(t[0]=(this.useColors?"%c":"")+this.namespace+(this.useColors?" %c":" ")+t[0]+(this.useColors?"%c ":" ")+"+"+e.exports.humanize(this.diff),!this.useColors)return;const s="color: "+this.color;t.splice(1,0,s,"color: inherit");let n=0,r=0;t[0].replace(/%[a-zA-Z%]/g,(e=>{"%%"!==e&&(n++,"%c"===e&&(r=n))})),t.splice(r,0,s)},t.save=function(e){try{e?t.storage.setItem("debug",e):t.storage.removeItem("debug")}catch(e){}},t.load=function(){let e;try{e=t.storage.getItem("debug")}catch(e){}return!e&&"undefined"!=typeof process&&"env"in process&&(e=process.env.DEBUG),e},t.useColors=function(){return!("undefined"==typeof window||!window.process||"renderer"!==window.process.type&&!window.process.__nwjs)||("undefined"==typeof navigator||!navigator.userAgent||!navigator.userAgent.toLowerCase().match(/(edge|trident)\/(\d+)/))&&("undefined"!=typeof document&&document.documentElement&&document.documentElement.style&&document.documentElement.style.WebkitAppearance||"undefined"!=typeof window&&window.console&&(window.console.firebug||window.console.exception&&window.console.table)||"undefined"!=typeof navigator&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/)&&parseInt(RegExp.$1,10)>=31||"undefined"!=typeof navigator&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/))},t.storage=function(){try{return localStorage}catch(e){}}(),t.destroy=(()=>{let e=!1;return()=>{e||(e=!0,console.warn("Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`."))}})(),t.colors=["#0000CC","#0000FF","#0033CC","#0033FF","#0066CC","#0066FF","#0099CC","#0099FF","#00CC00","#00CC33","#00CC66","#00CC99","#00CCCC","#00CCFF","#3300CC","#3300FF","#3333CC","#3333FF","#3366CC","#3366FF","#3399CC","#3399FF","#33CC00","#33CC33","#33CC66","#33CC99","#33CCCC","#33CCFF","#6600CC","#6600FF","#6633CC","#6633FF","#66CC00","#66CC33","#9900CC","#9900FF","#9933CC","#9933FF","#99CC00","#99CC33","#CC0000","#CC0033","#CC0066","#CC0099","#CC00CC","#CC00FF","#CC3300","#CC3333","#CC3366","#CC3399","#CC33CC","#CC33FF","#CC6600","#CC6633","#CC9900","#CC9933","#CCCC00","#CCCC33","#FF0000","#FF0033","#FF0066","#FF0099","#FF00CC","#FF00FF","#FF3300","#FF3333","#FF3366","#FF3399","#FF33CC","#FF33FF","#FF6600","#FF6633","#FF9900","#FF9933","#FFCC00","#FFCC33"],t.log=console.debug||console.log||(()=>{}),e.exports=s(231)(t);const{formatters:n}=e.exports;n.j=function(e){try{return JSON.stringify(e)}catch(e){return"[UnexpectedJSONParseError]: "+e.message}}},231:(e,t,s)=>{e.exports=function(e){function t(e){let s,r,o,i=null;function a(...e){if(!a.enabled)return;const n=a,r=Number(new Date),o=r-(s||r);n.diff=o,n.prev=s,n.curr=r,s=r,e[0]=t.coerce(e[0]),"string"!=typeof e[0]&&e.unshift("%O");let i=0;e[0]=e[0].replace(/%([a-zA-Z%])/g,((s,r)=>{if("%%"===s)return"%";i++;const o=t.formatters[r];if("function"==typeof o){const t=e[i];s=o.call(n,t),e.splice(i,1),i--}return s})),t.formatArgs.call(n,e),(n.log||t.log).apply(n,e)}return a.namespace=e,a.useColors=t.useColors(),a.color=t.selectColor(e),a.extend=n,a.destroy=t.destroy,Object.defineProperty(a,"enabled",{enumerable:!0,configurable:!1,get:()=>null!==i?i:(r!==t.namespaces&&(r=t.namespaces,o=t.enabled(e)),o),set:e=>{i=e}}),"function"==typeof t.init&&t.init(a),a}function n(e,s){const n=t(this.namespace+(void 0===s?":":s)+e);return n.log=this.log,n}function r(e){return e.toString().substring(2,e.toString().length-2).replace(/\.\*\?$/,"*")}return t.debug=t,t.default=t,t.coerce=function(e){return e instanceof Error?e.stack||e.message:e},t.disable=function(){const e=[...t.names.map(r),...t.skips.map(r).map((e=>"-"+e))].join(",");return t.enable(""),e},t.enable=function(e){let s;t.save(e),t.namespaces=e,t.names=[],t.skips=[];const n=("string"==typeof e?e:"").split(/[\s,]+/),r=n.length;for(s=0;s{t[s]=e[s]})),t.names=[],t.skips=[],t.formatters={},t.selectColor=function(e){let s=0;for(let t=0;t{var t=1e3,s=60*t,n=60*s,r=24*n;function o(e,t,s,n){var r=t>=1.5*s;return Math.round(e/s)+" "+n+(r?"s":"")}e.exports=function(e,i){i=i||{};var a,c,u=typeof e;if("string"===u&&e.length>0)return function(e){if(!((e=String(e)).length>100)){var o=/^(-?(?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(e);if(o){var i=parseFloat(o[1]);switch((o[2]||"ms").toLowerCase()){case"years":case"year":case"yrs":case"yr":case"y":return 315576e5*i;case"weeks":case"week":case"w":return 6048e5*i;case"days":case"day":case"d":return i*r;case"hours":case"hour":case"hrs":case"hr":case"h":return i*n;case"minutes":case"minute":case"mins":case"min":case"m":return i*s;case"seconds":case"second":case"secs":case"sec":case"s":return i*t;case"milliseconds":case"millisecond":case"msecs":case"msec":case"ms":return i;default:return}}}}(e);if("number"===u&&isFinite(e))return i.long?(a=e,(c=Math.abs(a))>=r?o(a,c,r,"day"):c>=n?o(a,c,n,"hour"):c>=s?o(a,c,s,"minute"):c>=t?o(a,c,t,"second"):a+" ms"):function(e){var o=Math.abs(e);return o>=r?Math.round(e/r)+"d":o>=n?Math.round(e/n)+"h":o>=s?Math.round(e/s)+"m":o>=t?Math.round(e/t)+"s":e+"ms"}(e);throw new Error("val is not a non-empty string or a valid number. val="+JSON.stringify(e))}},618:(e,t,s)=>{t.formatArgs=function(t){if(t[0]=(this.useColors?"%c":"")+this.namespace+(this.useColors?" %c":" ")+t[0]+(this.useColors?"%c ":" ")+"+"+e.exports.humanize(this.diff),!this.useColors)return;const s="color: "+this.color;t.splice(1,0,s,"color: inherit");let n=0,r=0;t[0].replace(/%[a-zA-Z%]/g,(e=>{"%%"!==e&&(n++,"%c"===e&&(r=n))})),t.splice(r,0,s)},t.save=function(e){try{e?t.storage.setItem("debug",e):t.storage.removeItem("debug")}catch(e){}},t.load=function(){let e;try{e=t.storage.getItem("debug")}catch(e){}return!e&&"undefined"!=typeof process&&"env"in process&&(e=process.env.DEBUG),e},t.useColors=function(){return!("undefined"==typeof window||!window.process||"renderer"!==window.process.type&&!window.process.__nwjs)||("undefined"==typeof navigator||!navigator.userAgent||!navigator.userAgent.toLowerCase().match(/(edge|trident)\/(\d+)/))&&("undefined"!=typeof document&&document.documentElement&&document.documentElement.style&&document.documentElement.style.WebkitAppearance||"undefined"!=typeof window&&window.console&&(window.console.firebug||window.console.exception&&window.console.table)||"undefined"!=typeof navigator&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/)&&parseInt(RegExp.$1,10)>=31||"undefined"!=typeof navigator&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/))},t.storage=function(){try{return localStorage}catch(e){}}(),t.destroy=(()=>{let e=!1;return()=>{e||(e=!0,console.warn("Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`."))}})(),t.colors=["#0000CC","#0000FF","#0033CC","#0033FF","#0066CC","#0066FF","#0099CC","#0099FF","#00CC00","#00CC33","#00CC66","#00CC99","#00CCCC","#00CCFF","#3300CC","#3300FF","#3333CC","#3333FF","#3366CC","#3366FF","#3399CC","#3399FF","#33CC00","#33CC33","#33CC66","#33CC99","#33CCCC","#33CCFF","#6600CC","#6600FF","#6633CC","#6633FF","#66CC00","#66CC33","#9900CC","#9900FF","#9933CC","#9933FF","#99CC00","#99CC33","#CC0000","#CC0033","#CC0066","#CC0099","#CC00CC","#CC00FF","#CC3300","#CC3333","#CC3366","#CC3399","#CC33CC","#CC33FF","#CC6600","#CC6633","#CC9900","#CC9933","#CCCC00","#CCCC33","#FF0000","#FF0033","#FF0066","#FF0099","#FF00CC","#FF00FF","#FF3300","#FF3333","#FF3366","#FF3399","#FF33CC","#FF33FF","#FF6600","#FF6633","#FF9900","#FF9933","#FFCC00","#FFCC33"],t.log=console.debug||console.log||(()=>{}),e.exports=s(224)(t);const{formatters:n}=e.exports;n.j=function(e){try{return JSON.stringify(e)}catch(e){return"[UnexpectedJSONParseError]: "+e.message}}},224:(e,t,s)=>{e.exports=function(e){function t(e){let s,r,o,i=null;function a(...e){if(!a.enabled)return;const n=a,r=Number(new Date),o=r-(s||r);n.diff=o,n.prev=s,n.curr=r,s=r,e[0]=t.coerce(e[0]),"string"!=typeof e[0]&&e.unshift("%O");let i=0;e[0]=e[0].replace(/%([a-zA-Z%])/g,((s,r)=>{if("%%"===s)return"%";i++;const o=t.formatters[r];if("function"==typeof o){const t=e[i];s=o.call(n,t),e.splice(i,1),i--}return s})),t.formatArgs.call(n,e),(n.log||t.log).apply(n,e)}return a.namespace=e,a.useColors=t.useColors(),a.color=t.selectColor(e),a.extend=n,a.destroy=t.destroy,Object.defineProperty(a,"enabled",{enumerable:!0,configurable:!1,get:()=>null!==i?i:(r!==t.namespaces&&(r=t.namespaces,o=t.enabled(e)),o),set:e=>{i=e}}),"function"==typeof t.init&&t.init(a),a}function n(e,s){const n=t(this.namespace+(void 0===s?":":s)+e);return n.log=this.log,n}function r(e){return e.toString().substring(2,e.toString().length-2).replace(/\.\*\?$/,"*")}return t.debug=t,t.default=t,t.coerce=function(e){return e instanceof Error?e.stack||e.message:e},t.disable=function(){const e=[...t.names.map(r),...t.skips.map(r).map((e=>"-"+e))].join(",");return t.enable(""),e},t.enable=function(e){let s;t.save(e),t.namespaces=e,t.names=[],t.skips=[];const n=("string"==typeof e?e:"").split(/[\s,]+/),r=n.length;for(s=0;s{t[s]=e[s]})),t.names=[],t.skips=[],t.formatters={},t.selectColor=function(e){let s=0;for(let t=0;t{var t=1e3,s=60*t,n=60*s,r=24*n;function o(e,t,s,n){var r=t>=1.5*s;return Math.round(e/s)+" "+n+(r?"s":"")}e.exports=function(e,i){i=i||{};var a,c,u=typeof e;if("string"===u&&e.length>0)return function(e){if(!((e=String(e)).length>100)){var o=/^(-?(?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(e);if(o){var i=parseFloat(o[1]);switch((o[2]||"ms").toLowerCase()){case"years":case"year":case"yrs":case"yr":case"y":return 315576e5*i;case"weeks":case"week":case"w":return 6048e5*i;case"days":case"day":case"d":return i*r;case"hours":case"hour":case"hrs":case"hr":case"h":return i*n;case"minutes":case"minute":case"mins":case"min":case"m":return i*s;case"seconds":case"second":case"secs":case"sec":case"s":return i*t;case"milliseconds":case"millisecond":case"msecs":case"msec":case"ms":return i;default:return}}}}(e);if("number"===u&&isFinite(e))return i.long?(a=e,(c=Math.abs(a))>=r?o(a,c,r,"day"):c>=n?o(a,c,n,"hour"):c>=s?o(a,c,s,"minute"):c>=t?o(a,c,t,"second"):a+" ms"):function(e){var o=Math.abs(e);return o>=r?Math.round(e/r)+"d":o>=n?Math.round(e/n)+"h":o>=s?Math.round(e/s)+"m":o>=t?Math.round(e/t)+"s":e+"ms"}(e);throw new Error("val is not a non-empty string or a valid number. val="+JSON.stringify(e))}},182:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.TimeManager=void 0,t.TimeManager=class{constructor(e=120){this.dayLength=e,this.scaleFactor=30,this.dayLengthAsMS=60*e*1e3}dayScaleFactor(){return this.dayLength/30}getTimePeriod(){return this.isMorning()?"morning":this.isAfternoon()?"afternoon":this.isEvening()?"evening":this.isNight()?"night":void 0}getAmPm(){return this.get24Hour()<12?"am":"pm"}get24Hour(){const e=new Date,t=(e.getMinutes()+e.getHours()%2*(this.dayLength/2))/this.dayLength;return Math.floor(24*t)}getHour(){const e=(new Date).getMinutes()/this.dayLength,t=Math.floor(24*e);return t>12?t-12:t}gradientName(){const e=Math.floor(this.get24Hour()/24*this.scaleFactor);return`sky-gradient-${e<10?"0":""}${e}`}isNight(){const e=this.get24Hour();return e>=0&&e<5||e>=21&&e<24}isMorning(){const e=this.get24Hour();return e>=5&&e<12}isAfternoon(){const e=this.get24Hour();return e>=12&&e<18}isEvening(){const e=this.get24Hour();return e>=18&&e<21}}},419:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.hasCORS=void 0;let s=!1;try{s="undefined"!=typeof XMLHttpRequest&&"withCredentials"in new XMLHttpRequest}catch(e){}t.hasCORS=s},754:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.decode=t.encode=void 0,t.encode=function(e){let t="";for(let s in e)e.hasOwnProperty(s)&&(t.length&&(t+="&"),t+=encodeURIComponent(s)+"="+encodeURIComponent(e[s]));return t},t.decode=function(e){let t={},s=e.split("&");for(let e=0,n=s.length;e{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.parse=void 0;const s=/^(?:(?![^:@\/?#]+:[^:@\/]*@)(http|https|ws|wss):\/\/)?((?:(([^:@\/?#]*)(?::([^:@\/?#]*))?)?@)?((?:[a-f0-9]{0,4}:){2,7}[a-f0-9]{0,4}|[^:\/?#]*)(?::(\d*))?)(((\/(?:[^?#](?![^?#\/]*\.[^?#\/.]+(?:[?#]|$)))*\/?)?([^?#\/]*))(?:\?([^#]*))?(?:#(.*))?)/,n=["source","protocol","authority","userInfo","user","password","host","port","relative","path","directory","file","query","anchor"];t.parse=function(e){const t=e,r=e.indexOf("["),o=e.indexOf("]");-1!=r&&-1!=o&&(e=e.substring(0,r)+e.substring(r,o).replace(/:/g,";")+e.substring(o,e.length));let i=s.exec(e||""),a={},c=14;for(;c--;)a[n[c]]=i[c]||"";return-1!=r&&-1!=o&&(a.source=t,a.host=a.host.substring(1,a.host.length-1).replace(/;/g,":"),a.authority=a.authority.replace("[","").replace("]","").replace(/;/g,":"),a.ipv6uri=!0),a.pathNames=function(e,t){const s=t.replace(/\/{2,9}/g,"/").split("/");return"/"!=t.slice(0,1)&&0!==t.length||s.splice(0,1),"/"==t.slice(-1)&&s.splice(s.length-1,1),s}(0,a.path),a.queryKey=function(e,t){const s={};return t.replace(/(?:^|&)([^&=]*)=?([^&]*)/g,(function(e,t,n){t&&(s[t]=n)})),s}(0,a.query),a}},726:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.yeast=t.decode=t.encode=void 0;const s="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz-_".split(""),n={};let r,o=0,i=0;function a(e){let t="";do{t=s[e%64]+t,e=Math.floor(e/64)}while(e>0);return t}for(t.encode=a,t.decode=function(e){let t=0;for(i=0;i{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.globalThisShim=void 0,t.globalThisShim="undefined"!=typeof self?self:"undefined"!=typeof window?window:Function("return this")()},679:(e,t,s)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.nextTick=t.parse=t.installTimerFunctions=t.transports=t.Transport=t.protocol=t.Socket=void 0;const n=s(481);Object.defineProperty(t,"Socket",{enumerable:!0,get:function(){return n.Socket}}),t.protocol=n.Socket.protocol;var r=s(870);Object.defineProperty(t,"Transport",{enumerable:!0,get:function(){return r.Transport}});var o=s(385);Object.defineProperty(t,"transports",{enumerable:!0,get:function(){return o.transports}});var i=s(622);Object.defineProperty(t,"installTimerFunctions",{enumerable:!0,get:function(){return i.installTimerFunctions}});var a=s(222);Object.defineProperty(t,"parse",{enumerable:!0,get:function(){return a.parse}});var c=s(552);Object.defineProperty(t,"nextTick",{enumerable:!0,get:function(){return c.nextTick}})},481:function(e,t,s){"use strict";var n=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.Socket=void 0;const r=s(385),o=s(622),i=s(754),a=s(222),c=n(s(802)),u=s(260),h=s(373),l=(0,c.default)("engine.io-client:socket");class d extends u.Emitter{constructor(e,t={}){super(),this.writeBuffer=[],e&&"object"==typeof e&&(t=e,e=null),e?(e=(0,a.parse)(e),t.hostname=e.host,t.secure="https"===e.protocol||"wss"===e.protocol,t.port=e.port,e.query&&(t.query=e.query)):t.host&&(t.hostname=(0,a.parse)(t.host).host),(0,o.installTimerFunctions)(this,t),this.secure=null!=t.secure?t.secure:"undefined"!=typeof location&&"https:"===location.protocol,t.hostname&&!t.port&&(t.port=this.secure?"443":"80"),this.hostname=t.hostname||("undefined"!=typeof location?location.hostname:"localhost"),this.port=t.port||("undefined"!=typeof location&&location.port?location.port:this.secure?"443":"80"),this.transports=t.transports||["polling","websocket"],this.writeBuffer=[],this.prevBufferLen=0,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:!0},t),this.opts.path=this.opts.path.replace(/\/$/,"")+(this.opts.addTrailingSlash?"/":""),"string"==typeof this.opts.query&&(this.opts.query=(0,i.decode)(this.opts.query)),this.id=null,this.upgrades=null,this.pingInterval=null,this.pingTimeout=null,this.pingTimeoutTimer=null,"function"==typeof addEventListener&&(this.opts.closeOnBeforeunload&&(this.beforeunloadEventListener=()=>{this.transport&&(this.transport.removeAllListeners(),this.transport.close())},addEventListener("beforeunload",this.beforeunloadEventListener,!1)),"localhost"!==this.hostname&&(this.offlineEventListener=()=>{this.onClose("transport close",{description:"network connection lost"})},addEventListener("offline",this.offlineEventListener,!1))),this.open()}createTransport(e){l('creating transport "%s"',e);const t=Object.assign({},this.opts.query);t.EIO=h.protocol,t.transport=e,this.id&&(t.sid=this.id);const s=Object.assign({},this.opts.transportOptions[e],this.opts,{query:t,socket:this,hostname:this.hostname,secure:this.secure,port:this.port});return l("options: %j",s),new r.transports[e](s)}open(){let e;if(this.opts.rememberUpgrade&&d.priorWebsocketSuccess&&-1!==this.transports.indexOf("websocket"))e="websocket";else{if(0===this.transports.length)return void this.setTimeoutFn((()=>{this.emitReserved("error","No transports available")}),0);e=this.transports[0]}this.readyState="opening";try{e=this.createTransport(e)}catch(e){return l("error while creating transport: %s",e),this.transports.shift(),void this.open()}e.open(),this.setTransport(e)}setTransport(e){l("setting transport %s",e.name),this.transport&&(l("clearing existing transport %s",this.transport.name),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",(e=>this.onClose("transport close",e)))}probe(e){l('probing transport "%s"',e);let t=this.createTransport(e),s=!1;d.priorWebsocketSuccess=!1;const n=()=>{s||(l('probe transport "%s" opened',e),t.send([{type:"ping",data:"probe"}]),t.once("packet",(n=>{if(!s)if("pong"===n.type&&"probe"===n.data){if(l('probe transport "%s" pong',e),this.upgrading=!0,this.emitReserved("upgrading",t),!t)return;d.priorWebsocketSuccess="websocket"===t.name,l('pausing current transport "%s"',this.transport.name),this.transport.pause((()=>{s||"closed"!==this.readyState&&(l("changing transport and sending upgrade packet"),u(),this.setTransport(t),t.send([{type:"upgrade"}]),this.emitReserved("upgrade",t),t=null,this.upgrading=!1,this.flush())}))}else{l('probe transport "%s" failed',e);const s=new Error("probe error");s.transport=t.name,this.emitReserved("upgradeError",s)}})))};function r(){s||(s=!0,u(),t.close(),t=null)}const o=s=>{const n=new Error("probe error: "+s);n.transport=t.name,r(),l('probe transport "%s" failed because of error: %s',e,s),this.emitReserved("upgradeError",n)};function i(){o("transport closed")}function a(){o("socket closed")}function c(e){t&&e.name!==t.name&&(l('"%s" works - aborting "%s"',e.name,t.name),r())}const u=()=>{t.removeListener("open",n),t.removeListener("error",o),t.removeListener("close",i),this.off("close",a),this.off("upgrading",c)};t.once("open",n),t.once("error",o),t.once("close",i),this.once("close",a),this.once("upgrading",c),t.open()}onOpen(){if(l("socket open"),this.readyState="open",d.priorWebsocketSuccess="websocket"===this.transport.name,this.emitReserved("open"),this.flush(),"open"===this.readyState&&this.opts.upgrade){l("starting upgrade probes");let e=0;const t=this.upgrades.length;for(;e{this.onClose("ping timeout")}),this.pingInterval+this.pingTimeout),this.opts.autoUnref&&this.pingTimeoutTimer.unref()}onDrain(){this.writeBuffer.splice(0,this.prevBufferLen),this.prevBufferLen=0,0===this.writeBuffer.length?this.emitReserved("drain"):this.flush()}flush(){if("closed"!==this.readyState&&this.transport.writable&&!this.upgrading&&this.writeBuffer.length){const e=this.getWritablePackets();l("flushing %d packets in socket",e.length),this.transport.send(e),this.prevBufferLen=e.length,this.emitReserved("flush")}}getWritablePackets(){if(!(this.maxPayload&&"polling"===this.transport.name&&this.writeBuffer.length>1))return this.writeBuffer;let e=1;for(let t=0;t0&&e>this.maxPayload)return l("only send %d out of %d packets",t,this.writeBuffer.length),this.writeBuffer.slice(0,t);e+=2}return l("payload size is %d (max: %d)",e,this.maxPayload),this.writeBuffer}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,n){if("function"==typeof t&&(n=t,t=void 0),"function"==typeof s&&(n=s,s=null),"closing"===this.readyState||"closed"===this.readyState)return;(s=s||{}).compress=!1!==s.compress;const r={type:e,data:t,options:s};this.emitReserved("packetCreate",r),this.writeBuffer.push(r),n&&this.once("flush",n),this.flush()}close(){const e=()=>{this.onClose("forced close"),l("socket closing - telling transport to close"),this.transport.close()},t=()=>{this.off("upgrade",t),this.off("upgradeError",t),e()},s=()=>{this.once("upgrade",t),this.once("upgradeError",t)};return"opening"!==this.readyState&&"open"!==this.readyState||(this.readyState="closing",this.writeBuffer.length?this.once("drain",(()=>{this.upgrading?s():e()})):this.upgrading?s():e()),this}onError(e){l("socket error %j",e),d.priorWebsocketSuccess=!1,this.emitReserved("error",e),this.onClose("transport error",e)}onClose(e,t){"opening"!==this.readyState&&"open"!==this.readyState&&"closing"!==this.readyState||(l('socket close with reason: "%s"',e),this.clearTimeoutFn(this.pingTimeoutTimer),this.transport.removeAllListeners("close"),this.transport.close(),this.transport.removeAllListeners(),"function"==typeof removeEventListener&&(removeEventListener("beforeunload",this.beforeunloadEventListener,!1),removeEventListener("offline",this.offlineEventListener,!1)),this.readyState="closed",this.id=null,this.emitReserved("close",e,t),this.writeBuffer=[],this.prevBufferLen=0)}filterUpgrades(e){const t=[];let s=0;const n=e.length;for(;s{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.transports=void 0;const n=s(484),r=s(308);t.transports={websocket:r.WS,polling:n.Polling}},484:function(e,t,s){"use strict";var n=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.Request=t.Polling=void 0;const r=s(870),o=n(s(802)),i=s(726),a=s(754),c=s(373),u=s(666),h=s(260),l=s(622),d=s(242),p=(0,o.default)("engine.io-client:polling");function f(){}const g=null!=new u.XHR({xdomain:!1}).responseType;class m extends r.Transport{constructor(e){if(super(e),this.polling=!1,"undefined"!=typeof location){const t="https:"===location.protocol;let s=location.port;s||(s=t?"443":"80"),this.xd="undefined"!=typeof location&&e.hostname!==location.hostname||s!==e.port,this.xs=e.secure!==t}const t=e&&e.forceBase64;this.supportsBinary=g&&!t}get name(){return"polling"}doOpen(){this.poll()}pause(e){this.readyState="pausing";const t=()=>{p("paused"),this.readyState="paused",e()};if(this.polling||!this.writable){let e=0;this.polling&&(p("we are currently polling - waiting to pause"),e++,this.once("pollComplete",(function(){p("pre-pause polling complete"),--e||t()}))),this.writable||(p("we are currently writing - waiting to pause"),e++,this.once("drain",(function(){p("pre-pause writing complete"),--e||t()})))}else t()}poll(){p("polling"),this.polling=!0,this.doPoll(),this.emitReserved("poll")}onData(e){p("polling got data %s",e),(0,c.decodePayload)(e,this.socket.binaryType).forEach((e=>{if("opening"===this.readyState&&"open"===e.type&&this.onOpen(),"close"===e.type)return this.onClose({description:"transport closed by the server"}),!1;this.onPacket(e)})),"closed"!==this.readyState&&(this.polling=!1,this.emitReserved("pollComplete"),"open"===this.readyState?this.poll():p('ignoring poll - transport state "%s"',this.readyState))}doClose(){const e=()=>{p("writing close packet"),this.write([{type:"close"}])};"open"===this.readyState?(p("transport open - closing"),e()):(p("transport not open - deferring close"),this.once("open",e))}write(e){this.writable=!1,(0,c.encodePayload)(e,(e=>{this.doWrite(e,(()=>{this.writable=!0,this.emitReserved("drain")}))}))}uri(){let e=this.query||{};const t=this.opts.secure?"https":"http";let s="";!1!==this.opts.timestampRequests&&(e[this.opts.timestampParam]=(0,i.yeast)()),this.supportsBinary||e.sid||(e.b64=1),this.opts.port&&("https"===t&&443!==Number(this.opts.port)||"http"===t&&80!==Number(this.opts.port))&&(s=":"+this.opts.port);const n=(0,a.encode)(e);return t+"://"+(-1!==this.opts.hostname.indexOf(":")?"["+this.opts.hostname+"]":this.opts.hostname)+s+this.opts.path+(n.length?"?"+n:"")}request(e={}){return Object.assign(e,{xd:this.xd,xs:this.xs},this.opts),new y(this.uri(),e)}doWrite(e,t){const s=this.request({method:"POST",data:e});s.on("success",t),s.on("error",((e,t)=>{this.onError("xhr post error",e,t)}))}doPoll(){p("xhr poll");const e=this.request();e.on("data",this.onData.bind(this)),e.on("error",((e,t)=>{this.onError("xhr poll error",e,t)})),this.pollXhr=e}}t.Polling=m;class y extends h.Emitter{constructor(e,t){super(),(0,l.installTimerFunctions)(this,t),this.opts=t,this.method=t.method||"GET",this.uri=e,this.async=!1!==t.async,this.data=void 0!==t.data?t.data:null,this.create()}create(){const e=(0,l.pick)(this.opts,"agent","pfx","key","passphrase","cert","ca","ciphers","rejectUnauthorized","autoUnref");e.xdomain=!!this.opts.xd,e.xscheme=!!this.opts.xs;const t=this.xhr=new u.XHR(e);try{p("xhr open %s: %s",this.method,this.uri),t.open(this.method,this.uri,this.async);try{if(this.opts.extraHeaders){t.setDisableHeaderCheck&&t.setDisableHeaderCheck(!0);for(let e in this.opts.extraHeaders)this.opts.extraHeaders.hasOwnProperty(e)&&t.setRequestHeader(e,this.opts.extraHeaders[e])}}catch(e){}if("POST"===this.method)try{t.setRequestHeader("Content-type","text/plain;charset=UTF-8")}catch(e){}try{t.setRequestHeader("Accept","*/*")}catch(e){}"withCredentials"in t&&(t.withCredentials=this.opts.withCredentials),this.opts.requestTimeout&&(t.timeout=this.opts.requestTimeout),t.onreadystatechange=()=>{4===t.readyState&&(200===t.status||1223===t.status?this.onLoad():this.setTimeoutFn((()=>{this.onError("number"==typeof t.status?t.status:0)}),0))},p("xhr data %s",this.data),t.send(this.data)}catch(e){return void this.setTimeoutFn((()=>{this.onError(e)}),0)}"undefined"!=typeof document&&(this.index=y.requestsCount++,y.requests[this.index]=this)}onError(e){this.emitReserved("error",e,this.xhr),this.cleanup(!0)}cleanup(e){if(void 0!==this.xhr&&null!==this.xhr){if(this.xhr.onreadystatechange=f,e)try{this.xhr.abort()}catch(e){}"undefined"!=typeof document&&delete y.requests[this.index],this.xhr=null}}onLoad(){const e=this.xhr.responseText;null!==e&&(this.emitReserved("data",e),this.emitReserved("success"),this.cleanup())}abort(){this.cleanup()}}if(t.Request=y,y.requestsCount=0,y.requests={},"undefined"!=typeof document)if("function"==typeof attachEvent)attachEvent("onunload",C);else if("function"==typeof addEventListener){const e="onpagehide"in d.globalThisShim?"pagehide":"unload";addEventListener(e,C,!1)}function C(){for(let e in y.requests)y.requests.hasOwnProperty(e)&&y.requests[e].abort()}},552:(e,t,s)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.defaultBinaryType=t.usingBrowserWebSocket=t.WebSocket=t.nextTick=void 0;const n=s(242);t.nextTick="function"==typeof Promise&&"function"==typeof Promise.resolve?e=>Promise.resolve().then(e):(e,t)=>t(e,0),t.WebSocket=n.globalThisShim.WebSocket||n.globalThisShim.MozWebSocket,t.usingBrowserWebSocket=!0,t.defaultBinaryType="arraybuffer"},308:function(e,t,s){"use strict";var n=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.WS=void 0;const r=s(870),o=s(754),i=s(726),a=s(622),c=s(552),u=n(s(802)),h=s(373),l=(0,u.default)("engine.io-client:websocket"),d="undefined"!=typeof navigator&&"string"==typeof navigator.product&&"reactnative"===navigator.product.toLowerCase();class p extends r.Transport{constructor(e){super(e),this.supportsBinary=!e.forceBase64}get name(){return"websocket"}doOpen(){if(!this.check())return;const e=this.uri(),t=this.opts.protocols,s=d?{}:(0,a.pick)(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=c.usingBrowserWebSocket&&!d?t?new c.WebSocket(e,t):new c.WebSocket(e):new c.WebSocket(e,t,s)}catch(e){return this.emitReserved("error",e)}this.ws.binaryType=this.socket.binaryType||c.defaultBinaryType,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{const t={};!c.usingBrowserWebSocket&&(s.options&&(t.compress=s.options.compress),this.opts.perMessageDeflate)&&("string"==typeof e?Buffer.byteLength(e):e.length){this.writable=!0,this.emitReserved("drain")}),this.setTimeoutFn)}))}}doClose(){void 0!==this.ws&&(this.ws.close(),this.ws=null)}uri(){let e=this.query||{};const t=this.opts.secure?"wss":"ws";let s="";this.opts.port&&("wss"===t&&443!==Number(this.opts.port)||"ws"===t&&80!==Number(this.opts.port))&&(s=":"+this.opts.port),this.opts.timestampRequests&&(e[this.opts.timestampParam]=(0,i.yeast)()),this.supportsBinary||(e.b64=1);const n=(0,o.encode)(e);return t+"://"+(-1!==this.opts.hostname.indexOf(":")?"["+this.opts.hostname+"]":this.opts.hostname)+s+this.opts.path+(n.length?"?"+n:"")}check(){return!!c.WebSocket}}t.WS=p},666:(e,t,s)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.XHR=void 0;const n=s(419),r=s(242);t.XHR=function(e){const t=e.xdomain;try{if("undefined"!=typeof XMLHttpRequest&&(!t||n.hasCORS))return new XMLHttpRequest}catch(e){}if(!t)try{return new(r.globalThisShim[["Active"].concat("Object").join("X")])("Microsoft.XMLHTTP")}catch(e){}}},622:(e,t,s)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.byteLength=t.installTimerFunctions=t.pick=void 0;const n=s(242);t.pick=function(e,...t){return t.reduce(((t,s)=>(e.hasOwnProperty(s)&&(t[s]=e[s]),t)),{})};const r=n.globalThisShim.setTimeout,o=n.globalThisShim.clearTimeout;t.installTimerFunctions=function(e,t){t.useNativeTimers?(e.setTimeoutFn=r.bind(n.globalThisShim),e.clearTimeoutFn=o.bind(n.globalThisShim)):(e.setTimeoutFn=n.globalThisShim.setTimeout.bind(n.globalThisShim),e.clearTimeoutFn=n.globalThisShim.clearTimeout.bind(n.globalThisShim))},t.byteLength=function(e){return"string"==typeof e?function(e){let t=0,s=0;for(let n=0,r=e.length;n=57344?s+=3:(n++,s+=4);return s}(e):Math.ceil(1.33*(e.byteLength||e.size))}},87:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ERROR_PACKET=t.PACKET_TYPES_REVERSE=t.PACKET_TYPES=void 0;const s=Object.create(null);t.PACKET_TYPES=s,s.open="0",s.close="1",s.ping="2",s.pong="3",s.message="4",s.upgrade="5",s.noop="6";const n=Object.create(null);t.PACKET_TYPES_REVERSE=n,Object.keys(s).forEach((e=>{n[s[e]]=e})),t.ERROR_PACKET={type:"error",data:"parser error"}},469:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.decode=t.encode=void 0;const s="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",n="undefined"==typeof Uint8Array?[]:new Uint8Array(256);for(let e=0;e<64;e++)n[s.charCodeAt(e)]=e;t.encode=e=>{let t,n=new Uint8Array(e),r=n.length,o="";for(t=0;t>2],o+=s[(3&n[t])<<4|n[t+1]>>4],o+=s[(15&n[t+1])<<2|n[t+2]>>6],o+=s[63&n[t+2]];return r%3==2?o=o.substring(0,o.length-1)+"=":r%3==1&&(o=o.substring(0,o.length-2)+"=="),o},t.decode=e=>{let t,s,r,o,i,a=.75*e.length,c=e.length,u=0;"="===e[e.length-1]&&(a--,"="===e[e.length-2]&&a--);const h=new ArrayBuffer(a),l=new Uint8Array(h);for(t=0;t>4,l[u++]=(15&r)<<4|o>>2,l[u++]=(3&o)<<6|63&i;return h}},572:(e,t,s)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});const n=s(87),r=s(469),o="function"==typeof ArrayBuffer,i=(e,t)=>{if(o){const s=(0,r.decode)(e);return a(s,t)}return{base64:!0,data:e}},a=(e,t)=>"blob"===t&&e instanceof ArrayBuffer?new Blob([e]):e;t.default=(e,t)=>{if("string"!=typeof e)return{type:"message",data:a(e,t)};const s=e.charAt(0);return"b"===s?{type:"message",data:i(e.substring(1),t)}:n.PACKET_TYPES_REVERSE[s]?e.length>1?{type:n.PACKET_TYPES_REVERSE[s],data:e.substring(1)}:{type:n.PACKET_TYPES_REVERSE[s]}:n.ERROR_PACKET}},908:(e,t,s)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});const n=s(87),r="function"==typeof Blob||"undefined"!=typeof Blob&&"[object BlobConstructor]"===Object.prototype.toString.call(Blob),o="function"==typeof ArrayBuffer,i=(e,t)=>{const s=new FileReader;return s.onload=function(){const e=s.result.split(",")[1];t("b"+(e||""))},s.readAsDataURL(e)};t.default=({type:e,data:t},s,a)=>{return r&&t instanceof Blob?s?a(t):i(t,a):o&&(t instanceof ArrayBuffer||(c=t,"function"==typeof ArrayBuffer.isView?ArrayBuffer.isView(c):c&&c.buffer instanceof ArrayBuffer))?s?a(t):i(new Blob([t]),a):a(n.PACKET_TYPES[e]+(t||""));var c}},373:(e,t,s)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.decodePayload=t.decodePacket=t.encodePayload=t.encodePacket=t.protocol=void 0;const n=s(908);t.encodePacket=n.default;const r=s(572);t.decodePacket=r.default;const o=String.fromCharCode(30);t.encodePayload=(e,t)=>{const s=e.length,r=new Array(s);let i=0;e.forEach(((e,a)=>{(0,n.default)(e,!1,(e=>{r[a]=e,++i===s&&t(r.join(o))}))}))},t.decodePayload=(e,t)=>{const s=e.split(o),n=[];for(let e=0;e{"use strict";function s(e){e=e||{},this.ms=e.min||100,this.max=e.max||1e4,this.factor=e.factor||2,this.jitter=e.jitter>0&&e.jitter<=1?e.jitter:0,this.attempts=0}Object.defineProperty(t,"__esModule",{value:!0}),t.Backoff=void 0,t.Backoff=s,s.prototype.duration=function(){var e=this.ms*Math.pow(this.factor,this.attempts++);if(this.jitter){var t=Math.random(),s=Math.floor(t*this.jitter*e);e=0==(1&Math.floor(10*t))?e-s:e+s}return 0|Math.min(e,this.max)},s.prototype.reset=function(){this.attempts=0},s.prototype.setMin=function(e){this.ms=e},s.prototype.setMax=function(e){this.max=e},s.prototype.setJitter=function(e){this.jitter=e}},46:function(e,t,s){"use strict";var n=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.default=t.connect=t.io=t.Socket=t.Manager=t.protocol=void 0;const r=s(84),o=s(168);Object.defineProperty(t,"Manager",{enumerable:!0,get:function(){return o.Manager}});const i=s(312);Object.defineProperty(t,"Socket",{enumerable:!0,get:function(){return i.Socket}});const a=n(s(669)).default("socket.io-client"),c={};function u(e,t){"object"==typeof e&&(t=e,e=void 0),t=t||{};const s=r.url(e,t.path||"/socket.io"),n=s.source,i=s.id,u=s.path,h=c[i]&&u in c[i].nsps;let l;return t.forceNew||t["force new connection"]||!1===t.multiplex||h?(a("ignoring socket cache for %s",n),l=new o.Manager(n,t)):(c[i]||(a("new io instance for %s",n),c[i]=new o.Manager(n,t)),l=c[i]),s.query&&!t.query&&(t.query=s.queryKey),l.socket(s.path,t)}t.io=u,t.connect=u,t.default=u,Object.assign(u,{Manager:o.Manager,Socket:i.Socket,io:u,connect:u});var h=s(514);Object.defineProperty(t,"protocol",{enumerable:!0,get:function(){return h.protocol}}),e.exports=u},168:function(e,t,s){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,s,n){void 0===n&&(n=s),Object.defineProperty(e,n,{enumerable:!0,get:function(){return t[s]}})}:function(e,t,s,n){void 0===n&&(n=s),e[n]=t[s]}),r=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),o=this&&this.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var s in e)"default"!==s&&Object.prototype.hasOwnProperty.call(e,s)&&n(t,e,s);return r(t,e),t},i=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.Manager=void 0;const a=s(679),c=s(312),u=o(s(514)),h=s(149),l=s(159),d=s(260),p=i(s(669)).default("socket.io-client:manager");class f extends d.Emitter{constructor(e,t){var s;super(),this.nsps={},this.subs=[],e&&"object"==typeof e&&(t=e,e=void 0),(t=t||{}).path=t.path||"/socket.io",this.opts=t,a.installTimerFunctions(this,t),this.reconnection(!1!==t.reconnection),this.reconnectionAttempts(t.reconnectionAttempts||1/0),this.reconnectionDelay(t.reconnectionDelay||1e3),this.reconnectionDelayMax(t.reconnectionDelayMax||5e3),this.randomizationFactor(null!==(s=t.randomizationFactor)&&void 0!==s?s:.5),this.backoff=new l.Backoff({min:this.reconnectionDelay(),max:this.reconnectionDelayMax(),jitter:this.randomizationFactor()}),this.timeout(null==t.timeout?2e4:t.timeout),this._readyState="closed",this.uri=e;const n=t.parser||u;this.encoder=new n.Encoder,this.decoder=new n.Decoder,this._autoConnect=!1!==t.autoConnect,this._autoConnect&&this.open()}reconnection(e){return arguments.length?(this._reconnection=!!e,this):this._reconnection}reconnectionAttempts(e){return void 0===e?this._reconnectionAttempts:(this._reconnectionAttempts=e,this)}reconnectionDelay(e){var t;return void 0===e?this._reconnectionDelay:(this._reconnectionDelay=e,null===(t=this.backoff)||void 0===t||t.setMin(e),this)}randomizationFactor(e){var t;return void 0===e?this._randomizationFactor:(this._randomizationFactor=e,null===(t=this.backoff)||void 0===t||t.setJitter(e),this)}reconnectionDelayMax(e){var t;return void 0===e?this._reconnectionDelayMax:(this._reconnectionDelayMax=e,null===(t=this.backoff)||void 0===t||t.setMax(e),this)}timeout(e){return arguments.length?(this._timeout=e,this):this._timeout}maybeReconnectOnOpen(){!this._reconnecting&&this._reconnection&&0===this.backoff.attempts&&this.reconnect()}open(e){if(p("readyState %s",this._readyState),~this._readyState.indexOf("open"))return this;p("opening %s",this.uri),this.engine=new a.Socket(this.uri,this.opts);const t=this.engine,s=this;this._readyState="opening",this.skipReconnect=!1;const n=h.on(t,"open",(function(){s.onopen(),e&&e()})),r=h.on(t,"error",(t=>{p("error"),s.cleanup(),s._readyState="closed",this.emitReserved("error",t),e?e(t):s.maybeReconnectOnOpen()}));if(!1!==this._timeout){const e=this._timeout;p("connect attempt will timeout after %d",e),0===e&&n();const s=this.setTimeoutFn((()=>{p("connect attempt timed out after %d",e),n(),t.close(),t.emit("error",new Error("timeout"))}),e);this.opts.autoUnref&&s.unref(),this.subs.push((function(){clearTimeout(s)}))}return this.subs.push(n),this.subs.push(r),this}connect(e){return this.open(e)}onopen(){p("open"),this.cleanup(),this._readyState="open",this.emitReserved("open");const e=this.engine;this.subs.push(h.on(e,"ping",this.onping.bind(this)),h.on(e,"data",this.ondata.bind(this)),h.on(e,"error",this.onerror.bind(this)),h.on(e,"close",this.onclose.bind(this)),h.on(this.decoder,"decoded",this.ondecoded.bind(this)))}onping(){this.emitReserved("ping")}ondata(e){try{this.decoder.add(e)}catch(e){this.onclose("parse error",e)}}ondecoded(e){a.nextTick((()=>{this.emitReserved("packet",e)}),this.setTimeoutFn)}onerror(e){p("error",e),this.emitReserved("error",e)}socket(e,t){let s=this.nsps[e];return s?this._autoConnect&&!s.active&&s.connect():(s=new c.Socket(this,e,t),this.nsps[e]=s),s}_destroy(e){const t=Object.keys(this.nsps);for(const e of t)if(this.nsps[e].active)return void p("socket %s is still active, skipping close",e);this._close()}_packet(e){p("writing packet %j",e);const t=this.encoder.encode(e);for(let s=0;se())),this.subs.length=0,this.decoder.destroy()}_close(){p("disconnect"),this.skipReconnect=!0,this._reconnecting=!1,this.onclose("forced close"),this.engine&&this.engine.close()}disconnect(){return this._close()}onclose(e,t){p("closed due to %s",e),this.cleanup(),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)p("reconnect failed"),this.backoff.reset(),this.emitReserved("reconnect_failed"),this._reconnecting=!1;else{const t=this.backoff.duration();p("will wait %dms before reconnect attempt",t),this._reconnecting=!0;const s=this.setTimeoutFn((()=>{e.skipReconnect||(p("attempting reconnect"),this.emitReserved("reconnect_attempt",e.backoff.attempts),e.skipReconnect||e.open((t=>{t?(p("reconnect attempt error"),e._reconnecting=!1,e.reconnect(),this.emitReserved("reconnect_error",t)):(p("reconnect success"),e.onreconnect())})))}),t);this.opts.autoUnref&&s.unref(),this.subs.push((function(){clearTimeout(s)}))}}onreconnect(){const e=this.backoff.attempts;this._reconnecting=!1,this.backoff.reset(),this.emitReserved("reconnect",e)}}t.Manager=f},149:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.on=void 0,t.on=function(e,t,s){return e.on(t,s),function(){e.off(t,s)}}},312:function(e,t,s){"use strict";var n=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.Socket=void 0;const r=s(514),o=s(149),i=s(260),a=n(s(669)).default("socket.io-client:socket"),c=Object.freeze({connect:1,connect_error:1,disconnect:1,disconnecting:1,newListener:1,removeListener:1});class u extends i.Emitter{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=[o.on(e,"open",this.onopen.bind(this)),o.on(e,"packet",this.onpacket.bind(this)),o.on(e,"error",this.onerror.bind(this)),o.on(e,"close",this.onclose.bind(this))]}get active(){return!!this.subs}connect(){return this.connected||(this.subEvents(),this.io._reconnecting||this.io.open(),"open"===this.io._readyState&&this.onopen()),this}open(){return this.connect()}send(...e){return e.unshift("message"),this.emit.apply(this,e),this}emit(e,...t){if(c.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 s={type:r.PacketType.EVENT,data:t,options:{}};if(s.options.compress=!1!==this.flags.compress,"function"==typeof t[t.length-1]){const e=this.ids++;a("emitting packet with ack id %d",e);const n=t.pop();this._registerAckCallback(e,n),s.id=e}const n=this.io.engine&&this.io.engine.transport&&this.io.engine.transport.writable;return!this.flags.volatile||n&&this.connected?this.connected?(this.notifyOutgoingListeners(s),this.packet(s)):this.sendBuffer.push(s):a("discard packet as the transport is not currently writable"),this.flags={},this}_registerAckCallback(e,t){var s;const n=null!==(s=this.flags.timeout)&&void 0!==s?s:this._opts.ackTimeout;if(void 0===n)return void(this.acks[e]=t);const r=this.io.setTimeoutFn((()=>{delete this.acks[e];for(let t=0;t{this.io.clearTimeoutFn(r),t.apply(this,[null,...e])}}emitWithAck(e,...t){const s=void 0!==this.flags.timeout||void 0!==this._opts.ackTimeout;return new Promise(((n,r)=>{t.push(((e,t)=>s?e?r(e):n(t):n(e))),this.emit(e,...t)}))}_addToQueue(e){let t;"function"==typeof e[e.length-1]&&(t=e.pop());const s={id:this._queueSeq++,tryCount:0,pending:!1,args:e,flags:Object.assign({fromQueue:!0},this.flags)};e.push(((e,...n)=>{if(s===this._queue[0])return null!==e?s.tryCount>this._opts.retries&&(a("packet [%d] is discarded after %d tries",s.id,s.tryCount),this._queue.shift(),t&&t(e)):(a("packet [%d] was successfully sent",s.id),this._queue.shift(),t&&t(null,...n)),s.pending=!1,this._drainQueue()})),this._queue.push(s),this._drainQueue()}_drainQueue(e=!1){if(a("draining queue"),!this.connected||0===this._queue.length)return;const t=this._queue[0];!t.pending||e?(t.pending=!0,t.tryCount++,a("sending packet [%d] (try n°%d)",t.id,t.tryCount),this.flags=t.flags,this.emit.apply(this,t.args)):a("packet [%d] has already been sent and is waiting for an ack",t.id)}packet(e){e.nsp=this.nsp,this.io._packet(e)}onopen(){a("transport is open - connecting"),"function"==typeof this.auth?this.auth((e=>{this._sendConnectPacket(e)})):this._sendConnectPacket(this.auth)}_sendConnectPacket(e){this.packet({type:r.PacketType.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){a("close (%s)",e),this.connected=!1,delete this.id,this.emitReserved("disconnect",e,t)}onpacket(e){if(e.nsp===this.nsp)switch(e.type){case r.PacketType.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 r.PacketType.EVENT:case r.PacketType.BINARY_EVENT:this.onevent(e);break;case r.PacketType.ACK:case r.PacketType.BINARY_ACK:this.onack(e);break;case r.PacketType.DISCONNECT:this.ondisconnect();break;case r.PacketType.CONNECT_ERROR:this.destroy();const t=new Error(e.data.message);t.data=e.data.data,this.emitReserved("connect_error",t)}}onevent(e){const t=e.data||[];a("emitting event %j",t),null!=e.id&&(a("attaching ack callback to event"),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&&"string"==typeof e[e.length-1]&&(this._lastOffset=e[e.length-1])}ack(e){const t=this;let s=!1;return function(...n){s||(s=!0,a("sending ack %j",n),t.packet({type:r.PacketType.ACK,id:e,data:n}))}}onack(e){const t=this.acks[e.id];"function"==typeof t?(a("calling ack %s with %j",e.id,e.data),t.apply(this,e.data),delete this.acks[e.id]):a("bad ack %s",e.id)}onconnect(e,t){a("socket connected with id %s",e),this.id=e,this.recovered=t&&this._pid===t,this._pid=t,this.connected=!0,this.emitBuffered(),this.emitReserved("connect"),this._drainQueue(!0)}emitBuffered(){this.receiveBuffer.forEach((e=>this.emitEvent(e))),this.receiveBuffer=[],this.sendBuffer.forEach((e=>{this.notifyOutgoingListeners(e),this.packet(e)})),this.sendBuffer=[]}ondisconnect(){a("server disconnect (%s)",this.nsp),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&&(a("performing disconnect (%s)",this.nsp),this.packet({type:r.PacketType.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{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.reconstructPacket=t.deconstructPacket=void 0;const n=s(665);function r(e,t){if(!e)return e;if((0,n.isBinary)(e)){const s={_placeholder:!0,num:t.length};return t.push(e),s}if(Array.isArray(e)){const s=new Array(e.length);for(let n=0;n=0&&e.num{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.Decoder=t.Encoder=t.PacketType=t.protocol=void 0;const n=s(260),r=s(880),o=s(665),i=(0,s(618).default)("socket.io-parser");var a;t.protocol=5,function(e){e[e.CONNECT=0]="CONNECT",e[e.DISCONNECT=1]="DISCONNECT",e[e.EVENT=2]="EVENT",e[e.ACK=3]="ACK",e[e.CONNECT_ERROR=4]="CONNECT_ERROR",e[e.BINARY_EVENT=5]="BINARY_EVENT",e[e.BINARY_ACK=6]="BINARY_ACK"}(a=t.PacketType||(t.PacketType={})),t.Encoder=class{constructor(e){this.replacer=e}encode(e){return i("encoding packet %j",e),e.type!==a.EVENT&&e.type!==a.ACK||!(0,o.hasBinary)(e)?[this.encodeAsString(e)]:this.encodeAsBinary({type:e.type===a.EVENT?a.BINARY_EVENT:a.BINARY_ACK,nsp:e.nsp,data:e.data,id:e.id})}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+","),null!=e.id&&(t+=e.id),null!=e.data&&(t+=JSON.stringify(e.data,this.replacer)),i("encoded %j as %s",e,t),t}encodeAsBinary(e){const t=(0,r.deconstructPacket)(e),s=this.encodeAsString(t.packet),n=t.buffers;return n.unshift(s),n}};class c extends n.Emitter{constructor(e){super(),this.reviver=e}add(e){let t;if("string"==typeof e){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 u(t),0===t.attachments&&super.emitReserved("decoded",t)):super.emitReserved("decoded",t)}else{if(!(0,o.isBinary)(e)&&!e.base64)throw new Error("Unknown type: "+e);if(!this.reconstructor)throw new Error("got binary data when not reconstructing a packet");t=this.reconstructor.takeBinaryData(e),t&&(this.reconstructor=null,super.emitReserved("decoded",t))}}decodeString(e){let t=0;const s={type:Number(e.charAt(0))};if(void 0===a[s.type])throw new Error("unknown packet type "+s.type);if(s.type===a.BINARY_EVENT||s.type===a.BINARY_ACK){const n=t+1;for(;"-"!==e.charAt(++t)&&t!=e.length;);const r=e.substring(n,t);if(r!=Number(r)||"-"!==e.charAt(t))throw new Error("Illegal attachments");s.attachments=Number(r)}if("/"===e.charAt(t+1)){const n=t+1;for(;++t&&","!==e.charAt(t)&&t!==e.length;);s.nsp=e.substring(n,t)}else s.nsp="/";const n=e.charAt(t+1);if(""!==n&&Number(n)==n){const n=t+1;for(;++t;){const s=e.charAt(t);if(null==s||Number(s)!=s){--t;break}if(t===e.length)break}s.id=Number(e.substring(n,t+1))}if(e.charAt(++t)){const n=this.tryParse(e.substr(t));if(!c.isPayloadValid(s.type,n))throw new Error("invalid payload");s.data=n}return i("decoded %s as %j",e,s),s}tryParse(e){try{return JSON.parse(e,this.reviver)}catch(e){return!1}}static isPayloadValid(e,t){switch(e){case a.CONNECT:return"object"==typeof t;case a.DISCONNECT:return void 0===t;case a.CONNECT_ERROR:return"string"==typeof t||"object"==typeof t;case a.EVENT:case a.BINARY_EVENT:return Array.isArray(t)&&("string"==typeof t[0]||"number"==typeof t[0]);case a.ACK:case a.BINARY_ACK:return Array.isArray(t)}}destroy(){this.reconstructor&&(this.reconstructor.finishedReconstruction(),this.reconstructor=null)}}t.Decoder=c;class u{constructor(e){this.packet=e,this.buffers=[],this.reconPack=e}takeBinaryData(e){if(this.buffers.push(e),this.buffers.length===this.reconPack.attachments){const e=(0,r.reconstructPacket)(this.reconPack,this.buffers);return this.finishedReconstruction(),e}return null}finishedReconstruction(){this.reconPack=null,this.buffers=[]}}},665:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.hasBinary=t.isBinary=void 0;const s="function"==typeof ArrayBuffer,n=Object.prototype.toString,r="function"==typeof Blob||"undefined"!=typeof Blob&&"[object BlobConstructor]"===n.call(Blob),o="function"==typeof File||"undefined"!=typeof File&&"[object FileConstructor]"===n.call(File);function i(e){return s&&(e instanceof ArrayBuffer||(e=>"function"==typeof ArrayBuffer.isView?ArrayBuffer.isView(e):e.buffer instanceof ArrayBuffer)(e))||r&&e instanceof Blob||o&&e instanceof File}t.isBinary=i,t.hasBinary=function e(t,s){if(!t||"object"!=typeof t)return!1;if(Array.isArray(t)){for(let s=0,n=t.length;s{"use strict";function n(e){if(e)return function(e){for(var t in n.prototype)e[t]=n.prototype[t];return e}(e)}s.r(t),s.d(t,{Emitter:()=>n}),n.prototype.on=n.prototype.addEventListener=function(e,t){return this._callbacks=this._callbacks||{},(this._callbacks["$"+e]=this._callbacks["$"+e]||[]).push(t),this},n.prototype.once=function(e,t){function s(){this.off(e,s),t.apply(this,arguments)}return s.fn=t,this.on(e,s),this},n.prototype.off=n.prototype.removeListener=n.prototype.removeAllListeners=n.prototype.removeEventListener=function(e,t){if(this._callbacks=this._callbacks||{},0==arguments.length)return this._callbacks={},this;var s,n=this._callbacks["$"+e];if(!n)return this;if(1==arguments.length)return delete this._callbacks["$"+e],this;for(var r=0;r{for(var n in t)s.o(t,n)&&!s.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},s.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),s.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},(()=>{"use strict";const e=s(46);function t(e,t=document){return t.querySelector(e)}function n(e,t=document){return Array.from(t.querySelectorAll(e))}function r(){return localStorage.getItem("authToken")}function o(){const e=i.gradientName(),s=t("body");let n;s.classList.value=e,s.classList.add(i.getTimePeriod()),n=i.get24Hour()>=5&&i.get24Hour()<9?"morning":i.get24Hour()>=9&&i.get24Hour()<17?"afternoon":i.get24Hour()>=17&&i.get24Hour()<20?"evening":"night",t("#time-of-day").innerHTML=` ${i.getHour()}${i.getAmPm()}`}const i=new(s(182).TimeManager),a=(0,e.io)({extraHeaders:{"x-authtoken":r()}});o(),setInterval(o,6e4),a.on("connect",(()=>{console.log(`Connected: ${a.id}`)})),a.on("authToken",(e=>{console.log(`recv auth token ${e}`),localStorage.setItem("authToken",e)})),a.on("chat",(function(e){t("#chat-messages").innerHTML+=e,t("#chat-messages").scrollTop=t("#chat-messages").scrollHeight})),a.on("ready",(function(){console.log("Server connection verified"),n("nav a")[0].click()})),n("nav a").forEach((e=>{e.addEventListener("click",(e=>{const s=e.target;n("a",s.closest("nav")).forEach((e=>{e.classList.remove("active")})),s.classList.add("active");const r=t(s.getAttribute("hx-target").toString());Array.from(r.parentElement.children).forEach((e=>{e.classList.remove("active")})),r.classList.add("active")}))})),t("body").addEventListener("click",(e=>{var s;const n=e.target;if(n.parentElement.classList.contains("filter")){Array.from(n.parentElement.children).forEach((e=>e.classList.remove("active"))),n.classList.add("active");const e=n.getAttribute("data-filter"),s=t(`.filter-result[data-filter="${e}"]`,n.closest(".filter-container"));s&&Array.from(s.parentElement.children).forEach((t=>{t.getAttribute("data-filter")===e?(t.classList.remove("hidden"),t.classList.add("active")):(t.classList.add("hidden"),t.classList.remove("active"))}))}"dialog"===n.getAttribute("formmethod")&&"cancel"===n.getAttribute("value")&&(null===(s=n.closest("dialog"))||void 0===s||s.close())}));const c=new MutationObserver(((e,s)=>{const r={modal:!1,alert:!1};e.forEach((e=>{switch(e.target.id){case"modal-wrapper":r.modal=!0;break;case"alerts":r.alert=!0}})),r.modal&&t("#modal-wrapper").children.length&&n("#modal-wrapper dialog").forEach((e=>{e.open||e.showModal()})),r.alert&&t("#alerts").children.length&&n("#alerts .alert").forEach((e=>{if(!e.getAttribute("data-dismiss-at")){const t=Date.now()+3e3;e.setAttribute("data-dismiss-at",t.toString()),setTimeout((()=>{e.remove()}),3e3)}}))}));c.observe(t("#modal-wrapper"),{childList:!0}),c.observe(t("#alerts"),{childList:!0}),document.body.addEventListener("htmx:configRequest",(function(e){e.detail.headers["x-authtoken"]=r()})),document.body.addEventListener("htmx:load",(function(e){n(".disabled[data-block]").forEach((e=>{setTimeout((()=>{e.removeAttribute("disabled")}),3e3)}))})),document.body.addEventListener("htmx:beforeSwap",(function(e){"chat-form"===e.target.id&&(t("#message").value="")}))})()})(); \ No newline at end of file +(()=>{var e={802:(e,t,s)=>{t.formatArgs=function(t){if(t[0]=(this.useColors?"%c":"")+this.namespace+(this.useColors?" %c":" ")+t[0]+(this.useColors?"%c ":" ")+"+"+e.exports.humanize(this.diff),!this.useColors)return;const s="color: "+this.color;t.splice(1,0,s,"color: inherit");let n=0,r=0;t[0].replace(/%[a-zA-Z%]/g,(e=>{"%%"!==e&&(n++,"%c"===e&&(r=n))})),t.splice(r,0,s)},t.save=function(e){try{e?t.storage.setItem("debug",e):t.storage.removeItem("debug")}catch(e){}},t.load=function(){let e;try{e=t.storage.getItem("debug")}catch(e){}return!e&&"undefined"!=typeof process&&"env"in process&&(e=process.env.DEBUG),e},t.useColors=function(){return!("undefined"==typeof window||!window.process||"renderer"!==window.process.type&&!window.process.__nwjs)||("undefined"==typeof navigator||!navigator.userAgent||!navigator.userAgent.toLowerCase().match(/(edge|trident)\/(\d+)/))&&("undefined"!=typeof document&&document.documentElement&&document.documentElement.style&&document.documentElement.style.WebkitAppearance||"undefined"!=typeof window&&window.console&&(window.console.firebug||window.console.exception&&window.console.table)||"undefined"!=typeof navigator&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/)&&parseInt(RegExp.$1,10)>=31||"undefined"!=typeof navigator&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/))},t.storage=function(){try{return localStorage}catch(e){}}(),t.destroy=(()=>{let e=!1;return()=>{e||(e=!0,console.warn("Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`."))}})(),t.colors=["#0000CC","#0000FF","#0033CC","#0033FF","#0066CC","#0066FF","#0099CC","#0099FF","#00CC00","#00CC33","#00CC66","#00CC99","#00CCCC","#00CCFF","#3300CC","#3300FF","#3333CC","#3333FF","#3366CC","#3366FF","#3399CC","#3399FF","#33CC00","#33CC33","#33CC66","#33CC99","#33CCCC","#33CCFF","#6600CC","#6600FF","#6633CC","#6633FF","#66CC00","#66CC33","#9900CC","#9900FF","#9933CC","#9933FF","#99CC00","#99CC33","#CC0000","#CC0033","#CC0066","#CC0099","#CC00CC","#CC00FF","#CC3300","#CC3333","#CC3366","#CC3399","#CC33CC","#CC33FF","#CC6600","#CC6633","#CC9900","#CC9933","#CCCC00","#CCCC33","#FF0000","#FF0033","#FF0066","#FF0099","#FF00CC","#FF00FF","#FF3300","#FF3333","#FF3366","#FF3399","#FF33CC","#FF33FF","#FF6600","#FF6633","#FF9900","#FF9933","#FFCC00","#FFCC33"],t.log=console.debug||console.log||(()=>{}),e.exports=s(804)(t);const{formatters:n}=e.exports;n.j=function(e){try{return JSON.stringify(e)}catch(e){return"[UnexpectedJSONParseError]: "+e.message}}},804:(e,t,s)=>{e.exports=function(e){function t(e){let s,r,o,i=null;function a(...e){if(!a.enabled)return;const n=a,r=Number(new Date),o=r-(s||r);n.diff=o,n.prev=s,n.curr=r,s=r,e[0]=t.coerce(e[0]),"string"!=typeof e[0]&&e.unshift("%O");let i=0;e[0]=e[0].replace(/%([a-zA-Z%])/g,((s,r)=>{if("%%"===s)return"%";i++;const o=t.formatters[r];if("function"==typeof o){const t=e[i];s=o.call(n,t),e.splice(i,1),i--}return s})),t.formatArgs.call(n,e),(n.log||t.log).apply(n,e)}return a.namespace=e,a.useColors=t.useColors(),a.color=t.selectColor(e),a.extend=n,a.destroy=t.destroy,Object.defineProperty(a,"enabled",{enumerable:!0,configurable:!1,get:()=>null!==i?i:(r!==t.namespaces&&(r=t.namespaces,o=t.enabled(e)),o),set:e=>{i=e}}),"function"==typeof t.init&&t.init(a),a}function n(e,s){const n=t(this.namespace+(void 0===s?":":s)+e);return n.log=this.log,n}function r(e){return e.toString().substring(2,e.toString().length-2).replace(/\.\*\?$/,"*")}return t.debug=t,t.default=t,t.coerce=function(e){return e instanceof Error?e.stack||e.message:e},t.disable=function(){const e=[...t.names.map(r),...t.skips.map(r).map((e=>"-"+e))].join(",");return t.enable(""),e},t.enable=function(e){let s;t.save(e),t.namespaces=e,t.names=[],t.skips=[];const n=("string"==typeof e?e:"").split(/[\s,]+/),r=n.length;for(s=0;s{t[s]=e[s]})),t.names=[],t.skips=[],t.formatters={},t.selectColor=function(e){let s=0;for(let t=0;t{var t=1e3,s=60*t,n=60*s,r=24*n;function o(e,t,s,n){var r=t>=1.5*s;return Math.round(e/s)+" "+n+(r?"s":"")}e.exports=function(e,i){i=i||{};var a,c,u=typeof e;if("string"===u&&e.length>0)return function(e){if(!((e=String(e)).length>100)){var o=/^(-?(?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(e);if(o){var i=parseFloat(o[1]);switch((o[2]||"ms").toLowerCase()){case"years":case"year":case"yrs":case"yr":case"y":return 315576e5*i;case"weeks":case"week":case"w":return 6048e5*i;case"days":case"day":case"d":return i*r;case"hours":case"hour":case"hrs":case"hr":case"h":return i*n;case"minutes":case"minute":case"mins":case"min":case"m":return i*s;case"seconds":case"second":case"secs":case"sec":case"s":return i*t;case"milliseconds":case"millisecond":case"msecs":case"msec":case"ms":return i;default:return}}}}(e);if("number"===u&&isFinite(e))return i.long?(a=e,(c=Math.abs(a))>=r?o(a,c,r,"day"):c>=n?o(a,c,n,"hour"):c>=s?o(a,c,s,"minute"):c>=t?o(a,c,t,"second"):a+" ms"):function(e){var o=Math.abs(e);return o>=r?Math.round(e/r)+"d":o>=n?Math.round(e/n)+"h":o>=s?Math.round(e/s)+"m":o>=t?Math.round(e/t)+"s":e+"ms"}(e);throw new Error("val is not a non-empty string or a valid number. val="+JSON.stringify(e))}},669:(e,t,s)=>{t.formatArgs=function(t){if(t[0]=(this.useColors?"%c":"")+this.namespace+(this.useColors?" %c":" ")+t[0]+(this.useColors?"%c ":" ")+"+"+e.exports.humanize(this.diff),!this.useColors)return;const s="color: "+this.color;t.splice(1,0,s,"color: inherit");let n=0,r=0;t[0].replace(/%[a-zA-Z%]/g,(e=>{"%%"!==e&&(n++,"%c"===e&&(r=n))})),t.splice(r,0,s)},t.save=function(e){try{e?t.storage.setItem("debug",e):t.storage.removeItem("debug")}catch(e){}},t.load=function(){let e;try{e=t.storage.getItem("debug")}catch(e){}return!e&&"undefined"!=typeof process&&"env"in process&&(e=process.env.DEBUG),e},t.useColors=function(){return!("undefined"==typeof window||!window.process||"renderer"!==window.process.type&&!window.process.__nwjs)||("undefined"==typeof navigator||!navigator.userAgent||!navigator.userAgent.toLowerCase().match(/(edge|trident)\/(\d+)/))&&("undefined"!=typeof document&&document.documentElement&&document.documentElement.style&&document.documentElement.style.WebkitAppearance||"undefined"!=typeof window&&window.console&&(window.console.firebug||window.console.exception&&window.console.table)||"undefined"!=typeof navigator&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/)&&parseInt(RegExp.$1,10)>=31||"undefined"!=typeof navigator&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/))},t.storage=function(){try{return localStorage}catch(e){}}(),t.destroy=(()=>{let e=!1;return()=>{e||(e=!0,console.warn("Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`."))}})(),t.colors=["#0000CC","#0000FF","#0033CC","#0033FF","#0066CC","#0066FF","#0099CC","#0099FF","#00CC00","#00CC33","#00CC66","#00CC99","#00CCCC","#00CCFF","#3300CC","#3300FF","#3333CC","#3333FF","#3366CC","#3366FF","#3399CC","#3399FF","#33CC00","#33CC33","#33CC66","#33CC99","#33CCCC","#33CCFF","#6600CC","#6600FF","#6633CC","#6633FF","#66CC00","#66CC33","#9900CC","#9900FF","#9933CC","#9933FF","#99CC00","#99CC33","#CC0000","#CC0033","#CC0066","#CC0099","#CC00CC","#CC00FF","#CC3300","#CC3333","#CC3366","#CC3399","#CC33CC","#CC33FF","#CC6600","#CC6633","#CC9900","#CC9933","#CCCC00","#CCCC33","#FF0000","#FF0033","#FF0066","#FF0099","#FF00CC","#FF00FF","#FF3300","#FF3333","#FF3366","#FF3399","#FF33CC","#FF33FF","#FF6600","#FF6633","#FF9900","#FF9933","#FFCC00","#FFCC33"],t.log=console.debug||console.log||(()=>{}),e.exports=s(231)(t);const{formatters:n}=e.exports;n.j=function(e){try{return JSON.stringify(e)}catch(e){return"[UnexpectedJSONParseError]: "+e.message}}},231:(e,t,s)=>{e.exports=function(e){function t(e){let s,r,o,i=null;function a(...e){if(!a.enabled)return;const n=a,r=Number(new Date),o=r-(s||r);n.diff=o,n.prev=s,n.curr=r,s=r,e[0]=t.coerce(e[0]),"string"!=typeof e[0]&&e.unshift("%O");let i=0;e[0]=e[0].replace(/%([a-zA-Z%])/g,((s,r)=>{if("%%"===s)return"%";i++;const o=t.formatters[r];if("function"==typeof o){const t=e[i];s=o.call(n,t),e.splice(i,1),i--}return s})),t.formatArgs.call(n,e),(n.log||t.log).apply(n,e)}return a.namespace=e,a.useColors=t.useColors(),a.color=t.selectColor(e),a.extend=n,a.destroy=t.destroy,Object.defineProperty(a,"enabled",{enumerable:!0,configurable:!1,get:()=>null!==i?i:(r!==t.namespaces&&(r=t.namespaces,o=t.enabled(e)),o),set:e=>{i=e}}),"function"==typeof t.init&&t.init(a),a}function n(e,s){const n=t(this.namespace+(void 0===s?":":s)+e);return n.log=this.log,n}function r(e){return e.toString().substring(2,e.toString().length-2).replace(/\.\*\?$/,"*")}return t.debug=t,t.default=t,t.coerce=function(e){return e instanceof Error?e.stack||e.message:e},t.disable=function(){const e=[...t.names.map(r),...t.skips.map(r).map((e=>"-"+e))].join(",");return t.enable(""),e},t.enable=function(e){let s;t.save(e),t.namespaces=e,t.names=[],t.skips=[];const n=("string"==typeof e?e:"").split(/[\s,]+/),r=n.length;for(s=0;s{t[s]=e[s]})),t.names=[],t.skips=[],t.formatters={},t.selectColor=function(e){let s=0;for(let t=0;t{var t=1e3,s=60*t,n=60*s,r=24*n;function o(e,t,s,n){var r=t>=1.5*s;return Math.round(e/s)+" "+n+(r?"s":"")}e.exports=function(e,i){i=i||{};var a,c,u=typeof e;if("string"===u&&e.length>0)return function(e){if(!((e=String(e)).length>100)){var o=/^(-?(?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(e);if(o){var i=parseFloat(o[1]);switch((o[2]||"ms").toLowerCase()){case"years":case"year":case"yrs":case"yr":case"y":return 315576e5*i;case"weeks":case"week":case"w":return 6048e5*i;case"days":case"day":case"d":return i*r;case"hours":case"hour":case"hrs":case"hr":case"h":return i*n;case"minutes":case"minute":case"mins":case"min":case"m":return i*s;case"seconds":case"second":case"secs":case"sec":case"s":return i*t;case"milliseconds":case"millisecond":case"msecs":case"msec":case"ms":return i;default:return}}}}(e);if("number"===u&&isFinite(e))return i.long?(a=e,(c=Math.abs(a))>=r?o(a,c,r,"day"):c>=n?o(a,c,n,"hour"):c>=s?o(a,c,s,"minute"):c>=t?o(a,c,t,"second"):a+" ms"):function(e){var o=Math.abs(e);return o>=r?Math.round(e/r)+"d":o>=n?Math.round(e/n)+"h":o>=s?Math.round(e/s)+"m":o>=t?Math.round(e/t)+"s":e+"ms"}(e);throw new Error("val is not a non-empty string or a valid number. val="+JSON.stringify(e))}},618:(e,t,s)=>{t.formatArgs=function(t){if(t[0]=(this.useColors?"%c":"")+this.namespace+(this.useColors?" %c":" ")+t[0]+(this.useColors?"%c ":" ")+"+"+e.exports.humanize(this.diff),!this.useColors)return;const s="color: "+this.color;t.splice(1,0,s,"color: inherit");let n=0,r=0;t[0].replace(/%[a-zA-Z%]/g,(e=>{"%%"!==e&&(n++,"%c"===e&&(r=n))})),t.splice(r,0,s)},t.save=function(e){try{e?t.storage.setItem("debug",e):t.storage.removeItem("debug")}catch(e){}},t.load=function(){let e;try{e=t.storage.getItem("debug")}catch(e){}return!e&&"undefined"!=typeof process&&"env"in process&&(e=process.env.DEBUG),e},t.useColors=function(){return!("undefined"==typeof window||!window.process||"renderer"!==window.process.type&&!window.process.__nwjs)||("undefined"==typeof navigator||!navigator.userAgent||!navigator.userAgent.toLowerCase().match(/(edge|trident)\/(\d+)/))&&("undefined"!=typeof document&&document.documentElement&&document.documentElement.style&&document.documentElement.style.WebkitAppearance||"undefined"!=typeof window&&window.console&&(window.console.firebug||window.console.exception&&window.console.table)||"undefined"!=typeof navigator&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/)&&parseInt(RegExp.$1,10)>=31||"undefined"!=typeof navigator&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/))},t.storage=function(){try{return localStorage}catch(e){}}(),t.destroy=(()=>{let e=!1;return()=>{e||(e=!0,console.warn("Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`."))}})(),t.colors=["#0000CC","#0000FF","#0033CC","#0033FF","#0066CC","#0066FF","#0099CC","#0099FF","#00CC00","#00CC33","#00CC66","#00CC99","#00CCCC","#00CCFF","#3300CC","#3300FF","#3333CC","#3333FF","#3366CC","#3366FF","#3399CC","#3399FF","#33CC00","#33CC33","#33CC66","#33CC99","#33CCCC","#33CCFF","#6600CC","#6600FF","#6633CC","#6633FF","#66CC00","#66CC33","#9900CC","#9900FF","#9933CC","#9933FF","#99CC00","#99CC33","#CC0000","#CC0033","#CC0066","#CC0099","#CC00CC","#CC00FF","#CC3300","#CC3333","#CC3366","#CC3399","#CC33CC","#CC33FF","#CC6600","#CC6633","#CC9900","#CC9933","#CCCC00","#CCCC33","#FF0000","#FF0033","#FF0066","#FF0099","#FF00CC","#FF00FF","#FF3300","#FF3333","#FF3366","#FF3399","#FF33CC","#FF33FF","#FF6600","#FF6633","#FF9900","#FF9933","#FFCC00","#FFCC33"],t.log=console.debug||console.log||(()=>{}),e.exports=s(224)(t);const{formatters:n}=e.exports;n.j=function(e){try{return JSON.stringify(e)}catch(e){return"[UnexpectedJSONParseError]: "+e.message}}},224:(e,t,s)=>{e.exports=function(e){function t(e){let s,r,o,i=null;function a(...e){if(!a.enabled)return;const n=a,r=Number(new Date),o=r-(s||r);n.diff=o,n.prev=s,n.curr=r,s=r,e[0]=t.coerce(e[0]),"string"!=typeof e[0]&&e.unshift("%O");let i=0;e[0]=e[0].replace(/%([a-zA-Z%])/g,((s,r)=>{if("%%"===s)return"%";i++;const o=t.formatters[r];if("function"==typeof o){const t=e[i];s=o.call(n,t),e.splice(i,1),i--}return s})),t.formatArgs.call(n,e),(n.log||t.log).apply(n,e)}return a.namespace=e,a.useColors=t.useColors(),a.color=t.selectColor(e),a.extend=n,a.destroy=t.destroy,Object.defineProperty(a,"enabled",{enumerable:!0,configurable:!1,get:()=>null!==i?i:(r!==t.namespaces&&(r=t.namespaces,o=t.enabled(e)),o),set:e=>{i=e}}),"function"==typeof t.init&&t.init(a),a}function n(e,s){const n=t(this.namespace+(void 0===s?":":s)+e);return n.log=this.log,n}function r(e){return e.toString().substring(2,e.toString().length-2).replace(/\.\*\?$/,"*")}return t.debug=t,t.default=t,t.coerce=function(e){return e instanceof Error?e.stack||e.message:e},t.disable=function(){const e=[...t.names.map(r),...t.skips.map(r).map((e=>"-"+e))].join(",");return t.enable(""),e},t.enable=function(e){let s;t.save(e),t.namespaces=e,t.names=[],t.skips=[];const n=("string"==typeof e?e:"").split(/[\s,]+/),r=n.length;for(s=0;s{t[s]=e[s]})),t.names=[],t.skips=[],t.formatters={},t.selectColor=function(e){let s=0;for(let t=0;t{var t=1e3,s=60*t,n=60*s,r=24*n;function o(e,t,s,n){var r=t>=1.5*s;return Math.round(e/s)+" "+n+(r?"s":"")}e.exports=function(e,i){i=i||{};var a,c,u=typeof e;if("string"===u&&e.length>0)return function(e){if(!((e=String(e)).length>100)){var o=/^(-?(?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(e);if(o){var i=parseFloat(o[1]);switch((o[2]||"ms").toLowerCase()){case"years":case"year":case"yrs":case"yr":case"y":return 315576e5*i;case"weeks":case"week":case"w":return 6048e5*i;case"days":case"day":case"d":return i*r;case"hours":case"hour":case"hrs":case"hr":case"h":return i*n;case"minutes":case"minute":case"mins":case"min":case"m":return i*s;case"seconds":case"second":case"secs":case"sec":case"s":return i*t;case"milliseconds":case"millisecond":case"msecs":case"msec":case"ms":return i;default:return}}}}(e);if("number"===u&&isFinite(e))return i.long?(a=e,(c=Math.abs(a))>=r?o(a,c,r,"day"):c>=n?o(a,c,n,"hour"):c>=s?o(a,c,s,"minute"):c>=t?o(a,c,t,"second"):a+" ms"):function(e){var o=Math.abs(e);return o>=r?Math.round(e/r)+"d":o>=n?Math.round(e/n)+"h":o>=s?Math.round(e/s)+"m":o>=t?Math.round(e/t)+"s":e+"ms"}(e);throw new Error("val is not a non-empty string or a valid number. val="+JSON.stringify(e))}},182:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.TimeManager=void 0,t.TimeManager=class{constructor(e=120){this.dayLength=e,this.scaleFactor=30,this.dayLengthAsMS=60*e*1e3}dayScaleFactor(){return this.dayLength/30}getTimePeriod(){return this.isMorning()?"morning":this.isAfternoon()?"afternoon":this.isEvening()?"evening":this.isNight()?"night":void 0}getAmPm(){return this.get24Hour()<12?"am":"pm"}get24Hour(){const e=new Date,t=(e.getMinutes()+e.getHours()%2*(this.dayLength/2))/this.dayLength;return Math.floor(24*t)}getHour(){const e=(new Date).getMinutes()/this.dayLength,t=Math.floor(24*e);return t>12?t-12:t}gradientName(){const e=Math.floor(this.get24Hour()/24*this.scaleFactor);return`sky-gradient-${e<10?"0":""}${e}`}isNight(){const e=this.get24Hour();return e>=0&&e<5||e>=21&&e<24}isMorning(){const e=this.get24Hour();return e>=5&&e<12}isAfternoon(){const e=this.get24Hour();return e>=12&&e<18}isEvening(){const e=this.get24Hour();return e>=18&&e<21}}},419:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.hasCORS=void 0;let s=!1;try{s="undefined"!=typeof XMLHttpRequest&&"withCredentials"in new XMLHttpRequest}catch(e){}t.hasCORS=s},754:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.decode=t.encode=void 0,t.encode=function(e){let t="";for(let s in e)e.hasOwnProperty(s)&&(t.length&&(t+="&"),t+=encodeURIComponent(s)+"="+encodeURIComponent(e[s]));return t},t.decode=function(e){let t={},s=e.split("&");for(let e=0,n=s.length;e{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.parse=void 0;const s=/^(?:(?![^:@\/?#]+:[^:@\/]*@)(http|https|ws|wss):\/\/)?((?:(([^:@\/?#]*)(?::([^:@\/?#]*))?)?@)?((?:[a-f0-9]{0,4}:){2,7}[a-f0-9]{0,4}|[^:\/?#]*)(?::(\d*))?)(((\/(?:[^?#](?![^?#\/]*\.[^?#\/.]+(?:[?#]|$)))*\/?)?([^?#\/]*))(?:\?([^#]*))?(?:#(.*))?)/,n=["source","protocol","authority","userInfo","user","password","host","port","relative","path","directory","file","query","anchor"];t.parse=function(e){const t=e,r=e.indexOf("["),o=e.indexOf("]");-1!=r&&-1!=o&&(e=e.substring(0,r)+e.substring(r,o).replace(/:/g,";")+e.substring(o,e.length));let i=s.exec(e||""),a={},c=14;for(;c--;)a[n[c]]=i[c]||"";return-1!=r&&-1!=o&&(a.source=t,a.host=a.host.substring(1,a.host.length-1).replace(/;/g,":"),a.authority=a.authority.replace("[","").replace("]","").replace(/;/g,":"),a.ipv6uri=!0),a.pathNames=function(e,t){const s=t.replace(/\/{2,9}/g,"/").split("/");return"/"!=t.slice(0,1)&&0!==t.length||s.splice(0,1),"/"==t.slice(-1)&&s.splice(s.length-1,1),s}(0,a.path),a.queryKey=function(e,t){const s={};return t.replace(/(?:^|&)([^&=]*)=?([^&]*)/g,(function(e,t,n){t&&(s[t]=n)})),s}(0,a.query),a}},726:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.yeast=t.decode=t.encode=void 0;const s="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz-_".split(""),n={};let r,o=0,i=0;function a(e){let t="";do{t=s[e%64]+t,e=Math.floor(e/64)}while(e>0);return t}for(t.encode=a,t.decode=function(e){let t=0;for(i=0;i{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.globalThisShim=void 0,t.globalThisShim="undefined"!=typeof self?self:"undefined"!=typeof window?window:Function("return this")()},679:(e,t,s)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.nextTick=t.parse=t.installTimerFunctions=t.transports=t.Transport=t.protocol=t.Socket=void 0;const n=s(481);Object.defineProperty(t,"Socket",{enumerable:!0,get:function(){return n.Socket}}),t.protocol=n.Socket.protocol;var r=s(870);Object.defineProperty(t,"Transport",{enumerable:!0,get:function(){return r.Transport}});var o=s(385);Object.defineProperty(t,"transports",{enumerable:!0,get:function(){return o.transports}});var i=s(622);Object.defineProperty(t,"installTimerFunctions",{enumerable:!0,get:function(){return i.installTimerFunctions}});var a=s(222);Object.defineProperty(t,"parse",{enumerable:!0,get:function(){return a.parse}});var c=s(552);Object.defineProperty(t,"nextTick",{enumerable:!0,get:function(){return c.nextTick}})},481:function(e,t,s){"use strict";var n=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.Socket=void 0;const r=s(385),o=s(622),i=s(754),a=s(222),c=n(s(802)),u=s(260),h=s(373),l=(0,c.default)("engine.io-client:socket");class d extends u.Emitter{constructor(e,t={}){super(),this.writeBuffer=[],e&&"object"==typeof e&&(t=e,e=null),e?(e=(0,a.parse)(e),t.hostname=e.host,t.secure="https"===e.protocol||"wss"===e.protocol,t.port=e.port,e.query&&(t.query=e.query)):t.host&&(t.hostname=(0,a.parse)(t.host).host),(0,o.installTimerFunctions)(this,t),this.secure=null!=t.secure?t.secure:"undefined"!=typeof location&&"https:"===location.protocol,t.hostname&&!t.port&&(t.port=this.secure?"443":"80"),this.hostname=t.hostname||("undefined"!=typeof location?location.hostname:"localhost"),this.port=t.port||("undefined"!=typeof location&&location.port?location.port:this.secure?"443":"80"),this.transports=t.transports||["polling","websocket"],this.writeBuffer=[],this.prevBufferLen=0,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:!0},t),this.opts.path=this.opts.path.replace(/\/$/,"")+(this.opts.addTrailingSlash?"/":""),"string"==typeof this.opts.query&&(this.opts.query=(0,i.decode)(this.opts.query)),this.id=null,this.upgrades=null,this.pingInterval=null,this.pingTimeout=null,this.pingTimeoutTimer=null,"function"==typeof addEventListener&&(this.opts.closeOnBeforeunload&&(this.beforeunloadEventListener=()=>{this.transport&&(this.transport.removeAllListeners(),this.transport.close())},addEventListener("beforeunload",this.beforeunloadEventListener,!1)),"localhost"!==this.hostname&&(this.offlineEventListener=()=>{this.onClose("transport close",{description:"network connection lost"})},addEventListener("offline",this.offlineEventListener,!1))),this.open()}createTransport(e){l('creating transport "%s"',e);const t=Object.assign({},this.opts.query);t.EIO=h.protocol,t.transport=e,this.id&&(t.sid=this.id);const s=Object.assign({},this.opts.transportOptions[e],this.opts,{query:t,socket:this,hostname:this.hostname,secure:this.secure,port:this.port});return l("options: %j",s),new r.transports[e](s)}open(){let e;if(this.opts.rememberUpgrade&&d.priorWebsocketSuccess&&-1!==this.transports.indexOf("websocket"))e="websocket";else{if(0===this.transports.length)return void this.setTimeoutFn((()=>{this.emitReserved("error","No transports available")}),0);e=this.transports[0]}this.readyState="opening";try{e=this.createTransport(e)}catch(e){return l("error while creating transport: %s",e),this.transports.shift(),void this.open()}e.open(),this.setTransport(e)}setTransport(e){l("setting transport %s",e.name),this.transport&&(l("clearing existing transport %s",this.transport.name),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",(e=>this.onClose("transport close",e)))}probe(e){l('probing transport "%s"',e);let t=this.createTransport(e),s=!1;d.priorWebsocketSuccess=!1;const n=()=>{s||(l('probe transport "%s" opened',e),t.send([{type:"ping",data:"probe"}]),t.once("packet",(n=>{if(!s)if("pong"===n.type&&"probe"===n.data){if(l('probe transport "%s" pong',e),this.upgrading=!0,this.emitReserved("upgrading",t),!t)return;d.priorWebsocketSuccess="websocket"===t.name,l('pausing current transport "%s"',this.transport.name),this.transport.pause((()=>{s||"closed"!==this.readyState&&(l("changing transport and sending upgrade packet"),u(),this.setTransport(t),t.send([{type:"upgrade"}]),this.emitReserved("upgrade",t),t=null,this.upgrading=!1,this.flush())}))}else{l('probe transport "%s" failed',e);const s=new Error("probe error");s.transport=t.name,this.emitReserved("upgradeError",s)}})))};function r(){s||(s=!0,u(),t.close(),t=null)}const o=s=>{const n=new Error("probe error: "+s);n.transport=t.name,r(),l('probe transport "%s" failed because of error: %s',e,s),this.emitReserved("upgradeError",n)};function i(){o("transport closed")}function a(){o("socket closed")}function c(e){t&&e.name!==t.name&&(l('"%s" works - aborting "%s"',e.name,t.name),r())}const u=()=>{t.removeListener("open",n),t.removeListener("error",o),t.removeListener("close",i),this.off("close",a),this.off("upgrading",c)};t.once("open",n),t.once("error",o),t.once("close",i),this.once("close",a),this.once("upgrading",c),t.open()}onOpen(){if(l("socket open"),this.readyState="open",d.priorWebsocketSuccess="websocket"===this.transport.name,this.emitReserved("open"),this.flush(),"open"===this.readyState&&this.opts.upgrade){l("starting upgrade probes");let e=0;const t=this.upgrades.length;for(;e{this.onClose("ping timeout")}),this.pingInterval+this.pingTimeout),this.opts.autoUnref&&this.pingTimeoutTimer.unref()}onDrain(){this.writeBuffer.splice(0,this.prevBufferLen),this.prevBufferLen=0,0===this.writeBuffer.length?this.emitReserved("drain"):this.flush()}flush(){if("closed"!==this.readyState&&this.transport.writable&&!this.upgrading&&this.writeBuffer.length){const e=this.getWritablePackets();l("flushing %d packets in socket",e.length),this.transport.send(e),this.prevBufferLen=e.length,this.emitReserved("flush")}}getWritablePackets(){if(!(this.maxPayload&&"polling"===this.transport.name&&this.writeBuffer.length>1))return this.writeBuffer;let e=1;for(let t=0;t0&&e>this.maxPayload)return l("only send %d out of %d packets",t,this.writeBuffer.length),this.writeBuffer.slice(0,t);e+=2}return l("payload size is %d (max: %d)",e,this.maxPayload),this.writeBuffer}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,n){if("function"==typeof t&&(n=t,t=void 0),"function"==typeof s&&(n=s,s=null),"closing"===this.readyState||"closed"===this.readyState)return;(s=s||{}).compress=!1!==s.compress;const r={type:e,data:t,options:s};this.emitReserved("packetCreate",r),this.writeBuffer.push(r),n&&this.once("flush",n),this.flush()}close(){const e=()=>{this.onClose("forced close"),l("socket closing - telling transport to close"),this.transport.close()},t=()=>{this.off("upgrade",t),this.off("upgradeError",t),e()},s=()=>{this.once("upgrade",t),this.once("upgradeError",t)};return"opening"!==this.readyState&&"open"!==this.readyState||(this.readyState="closing",this.writeBuffer.length?this.once("drain",(()=>{this.upgrading?s():e()})):this.upgrading?s():e()),this}onError(e){l("socket error %j",e),d.priorWebsocketSuccess=!1,this.emitReserved("error",e),this.onClose("transport error",e)}onClose(e,t){"opening"!==this.readyState&&"open"!==this.readyState&&"closing"!==this.readyState||(l('socket close with reason: "%s"',e),this.clearTimeoutFn(this.pingTimeoutTimer),this.transport.removeAllListeners("close"),this.transport.close(),this.transport.removeAllListeners(),"function"==typeof removeEventListener&&(removeEventListener("beforeunload",this.beforeunloadEventListener,!1),removeEventListener("offline",this.offlineEventListener,!1)),this.readyState="closed",this.id=null,this.emitReserved("close",e,t),this.writeBuffer=[],this.prevBufferLen=0)}filterUpgrades(e){const t=[];let s=0;const n=e.length;for(;s{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.transports=void 0;const n=s(484),r=s(308);t.transports={websocket:r.WS,polling:n.Polling}},484:function(e,t,s){"use strict";var n=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.Request=t.Polling=void 0;const r=s(870),o=n(s(802)),i=s(726),a=s(754),c=s(373),u=s(666),h=s(260),l=s(622),d=s(242),p=(0,o.default)("engine.io-client:polling");function f(){}const g=null!=new u.XHR({xdomain:!1}).responseType;class m extends r.Transport{constructor(e){if(super(e),this.polling=!1,"undefined"!=typeof location){const t="https:"===location.protocol;let s=location.port;s||(s=t?"443":"80"),this.xd="undefined"!=typeof location&&e.hostname!==location.hostname||s!==e.port,this.xs=e.secure!==t}const t=e&&e.forceBase64;this.supportsBinary=g&&!t}get name(){return"polling"}doOpen(){this.poll()}pause(e){this.readyState="pausing";const t=()=>{p("paused"),this.readyState="paused",e()};if(this.polling||!this.writable){let e=0;this.polling&&(p("we are currently polling - waiting to pause"),e++,this.once("pollComplete",(function(){p("pre-pause polling complete"),--e||t()}))),this.writable||(p("we are currently writing - waiting to pause"),e++,this.once("drain",(function(){p("pre-pause writing complete"),--e||t()})))}else t()}poll(){p("polling"),this.polling=!0,this.doPoll(),this.emitReserved("poll")}onData(e){p("polling got data %s",e),(0,c.decodePayload)(e,this.socket.binaryType).forEach((e=>{if("opening"===this.readyState&&"open"===e.type&&this.onOpen(),"close"===e.type)return this.onClose({description:"transport closed by the server"}),!1;this.onPacket(e)})),"closed"!==this.readyState&&(this.polling=!1,this.emitReserved("pollComplete"),"open"===this.readyState?this.poll():p('ignoring poll - transport state "%s"',this.readyState))}doClose(){const e=()=>{p("writing close packet"),this.write([{type:"close"}])};"open"===this.readyState?(p("transport open - closing"),e()):(p("transport not open - deferring close"),this.once("open",e))}write(e){this.writable=!1,(0,c.encodePayload)(e,(e=>{this.doWrite(e,(()=>{this.writable=!0,this.emitReserved("drain")}))}))}uri(){let e=this.query||{};const t=this.opts.secure?"https":"http";let s="";!1!==this.opts.timestampRequests&&(e[this.opts.timestampParam]=(0,i.yeast)()),this.supportsBinary||e.sid||(e.b64=1),this.opts.port&&("https"===t&&443!==Number(this.opts.port)||"http"===t&&80!==Number(this.opts.port))&&(s=":"+this.opts.port);const n=(0,a.encode)(e);return t+"://"+(-1!==this.opts.hostname.indexOf(":")?"["+this.opts.hostname+"]":this.opts.hostname)+s+this.opts.path+(n.length?"?"+n:"")}request(e={}){return Object.assign(e,{xd:this.xd,xs:this.xs},this.opts),new y(this.uri(),e)}doWrite(e,t){const s=this.request({method:"POST",data:e});s.on("success",t),s.on("error",((e,t)=>{this.onError("xhr post error",e,t)}))}doPoll(){p("xhr poll");const e=this.request();e.on("data",this.onData.bind(this)),e.on("error",((e,t)=>{this.onError("xhr poll error",e,t)})),this.pollXhr=e}}t.Polling=m;class y extends h.Emitter{constructor(e,t){super(),(0,l.installTimerFunctions)(this,t),this.opts=t,this.method=t.method||"GET",this.uri=e,this.async=!1!==t.async,this.data=void 0!==t.data?t.data:null,this.create()}create(){const e=(0,l.pick)(this.opts,"agent","pfx","key","passphrase","cert","ca","ciphers","rejectUnauthorized","autoUnref");e.xdomain=!!this.opts.xd,e.xscheme=!!this.opts.xs;const t=this.xhr=new u.XHR(e);try{p("xhr open %s: %s",this.method,this.uri),t.open(this.method,this.uri,this.async);try{if(this.opts.extraHeaders){t.setDisableHeaderCheck&&t.setDisableHeaderCheck(!0);for(let e in this.opts.extraHeaders)this.opts.extraHeaders.hasOwnProperty(e)&&t.setRequestHeader(e,this.opts.extraHeaders[e])}}catch(e){}if("POST"===this.method)try{t.setRequestHeader("Content-type","text/plain;charset=UTF-8")}catch(e){}try{t.setRequestHeader("Accept","*/*")}catch(e){}"withCredentials"in t&&(t.withCredentials=this.opts.withCredentials),this.opts.requestTimeout&&(t.timeout=this.opts.requestTimeout),t.onreadystatechange=()=>{4===t.readyState&&(200===t.status||1223===t.status?this.onLoad():this.setTimeoutFn((()=>{this.onError("number"==typeof t.status?t.status:0)}),0))},p("xhr data %s",this.data),t.send(this.data)}catch(e){return void this.setTimeoutFn((()=>{this.onError(e)}),0)}"undefined"!=typeof document&&(this.index=y.requestsCount++,y.requests[this.index]=this)}onError(e){this.emitReserved("error",e,this.xhr),this.cleanup(!0)}cleanup(e){if(void 0!==this.xhr&&null!==this.xhr){if(this.xhr.onreadystatechange=f,e)try{this.xhr.abort()}catch(e){}"undefined"!=typeof document&&delete y.requests[this.index],this.xhr=null}}onLoad(){const e=this.xhr.responseText;null!==e&&(this.emitReserved("data",e),this.emitReserved("success"),this.cleanup())}abort(){this.cleanup()}}if(t.Request=y,y.requestsCount=0,y.requests={},"undefined"!=typeof document)if("function"==typeof attachEvent)attachEvent("onunload",C);else if("function"==typeof addEventListener){const e="onpagehide"in d.globalThisShim?"pagehide":"unload";addEventListener(e,C,!1)}function C(){for(let e in y.requests)y.requests.hasOwnProperty(e)&&y.requests[e].abort()}},552:(e,t,s)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.defaultBinaryType=t.usingBrowserWebSocket=t.WebSocket=t.nextTick=void 0;const n=s(242);t.nextTick="function"==typeof Promise&&"function"==typeof Promise.resolve?e=>Promise.resolve().then(e):(e,t)=>t(e,0),t.WebSocket=n.globalThisShim.WebSocket||n.globalThisShim.MozWebSocket,t.usingBrowserWebSocket=!0,t.defaultBinaryType="arraybuffer"},308:function(e,t,s){"use strict";var n=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.WS=void 0;const r=s(870),o=s(754),i=s(726),a=s(622),c=s(552),u=n(s(802)),h=s(373),l=(0,u.default)("engine.io-client:websocket"),d="undefined"!=typeof navigator&&"string"==typeof navigator.product&&"reactnative"===navigator.product.toLowerCase();class p extends r.Transport{constructor(e){super(e),this.supportsBinary=!e.forceBase64}get name(){return"websocket"}doOpen(){if(!this.check())return;const e=this.uri(),t=this.opts.protocols,s=d?{}:(0,a.pick)(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=c.usingBrowserWebSocket&&!d?t?new c.WebSocket(e,t):new c.WebSocket(e):new c.WebSocket(e,t,s)}catch(e){return this.emitReserved("error",e)}this.ws.binaryType=this.socket.binaryType||c.defaultBinaryType,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{const t={};!c.usingBrowserWebSocket&&(s.options&&(t.compress=s.options.compress),this.opts.perMessageDeflate)&&("string"==typeof e?Buffer.byteLength(e):e.length){this.writable=!0,this.emitReserved("drain")}),this.setTimeoutFn)}))}}doClose(){void 0!==this.ws&&(this.ws.close(),this.ws=null)}uri(){let e=this.query||{};const t=this.opts.secure?"wss":"ws";let s="";this.opts.port&&("wss"===t&&443!==Number(this.opts.port)||"ws"===t&&80!==Number(this.opts.port))&&(s=":"+this.opts.port),this.opts.timestampRequests&&(e[this.opts.timestampParam]=(0,i.yeast)()),this.supportsBinary||(e.b64=1);const n=(0,o.encode)(e);return t+"://"+(-1!==this.opts.hostname.indexOf(":")?"["+this.opts.hostname+"]":this.opts.hostname)+s+this.opts.path+(n.length?"?"+n:"")}check(){return!!c.WebSocket}}t.WS=p},666:(e,t,s)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.XHR=void 0;const n=s(419),r=s(242);t.XHR=function(e){const t=e.xdomain;try{if("undefined"!=typeof XMLHttpRequest&&(!t||n.hasCORS))return new XMLHttpRequest}catch(e){}if(!t)try{return new(r.globalThisShim[["Active"].concat("Object").join("X")])("Microsoft.XMLHTTP")}catch(e){}}},622:(e,t,s)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.byteLength=t.installTimerFunctions=t.pick=void 0;const n=s(242);t.pick=function(e,...t){return t.reduce(((t,s)=>(e.hasOwnProperty(s)&&(t[s]=e[s]),t)),{})};const r=n.globalThisShim.setTimeout,o=n.globalThisShim.clearTimeout;t.installTimerFunctions=function(e,t){t.useNativeTimers?(e.setTimeoutFn=r.bind(n.globalThisShim),e.clearTimeoutFn=o.bind(n.globalThisShim)):(e.setTimeoutFn=n.globalThisShim.setTimeout.bind(n.globalThisShim),e.clearTimeoutFn=n.globalThisShim.clearTimeout.bind(n.globalThisShim))},t.byteLength=function(e){return"string"==typeof e?function(e){let t=0,s=0;for(let n=0,r=e.length;n=57344?s+=3:(n++,s+=4);return s}(e):Math.ceil(1.33*(e.byteLength||e.size))}},87:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ERROR_PACKET=t.PACKET_TYPES_REVERSE=t.PACKET_TYPES=void 0;const s=Object.create(null);t.PACKET_TYPES=s,s.open="0",s.close="1",s.ping="2",s.pong="3",s.message="4",s.upgrade="5",s.noop="6";const n=Object.create(null);t.PACKET_TYPES_REVERSE=n,Object.keys(s).forEach((e=>{n[s[e]]=e})),t.ERROR_PACKET={type:"error",data:"parser error"}},469:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.decode=t.encode=void 0;const s="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",n="undefined"==typeof Uint8Array?[]:new Uint8Array(256);for(let e=0;e<64;e++)n[s.charCodeAt(e)]=e;t.encode=e=>{let t,n=new Uint8Array(e),r=n.length,o="";for(t=0;t>2],o+=s[(3&n[t])<<4|n[t+1]>>4],o+=s[(15&n[t+1])<<2|n[t+2]>>6],o+=s[63&n[t+2]];return r%3==2?o=o.substring(0,o.length-1)+"=":r%3==1&&(o=o.substring(0,o.length-2)+"=="),o},t.decode=e=>{let t,s,r,o,i,a=.75*e.length,c=e.length,u=0;"="===e[e.length-1]&&(a--,"="===e[e.length-2]&&a--);const h=new ArrayBuffer(a),l=new Uint8Array(h);for(t=0;t>4,l[u++]=(15&r)<<4|o>>2,l[u++]=(3&o)<<6|63&i;return h}},572:(e,t,s)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});const n=s(87),r=s(469),o="function"==typeof ArrayBuffer,i=(e,t)=>{if(o){const s=(0,r.decode)(e);return a(s,t)}return{base64:!0,data:e}},a=(e,t)=>"blob"===t&&e instanceof ArrayBuffer?new Blob([e]):e;t.default=(e,t)=>{if("string"!=typeof e)return{type:"message",data:a(e,t)};const s=e.charAt(0);return"b"===s?{type:"message",data:i(e.substring(1),t)}:n.PACKET_TYPES_REVERSE[s]?e.length>1?{type:n.PACKET_TYPES_REVERSE[s],data:e.substring(1)}:{type:n.PACKET_TYPES_REVERSE[s]}:n.ERROR_PACKET}},908:(e,t,s)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});const n=s(87),r="function"==typeof Blob||"undefined"!=typeof Blob&&"[object BlobConstructor]"===Object.prototype.toString.call(Blob),o="function"==typeof ArrayBuffer,i=(e,t)=>{const s=new FileReader;return s.onload=function(){const e=s.result.split(",")[1];t("b"+(e||""))},s.readAsDataURL(e)};t.default=({type:e,data:t},s,a)=>{return r&&t instanceof Blob?s?a(t):i(t,a):o&&(t instanceof ArrayBuffer||(c=t,"function"==typeof ArrayBuffer.isView?ArrayBuffer.isView(c):c&&c.buffer instanceof ArrayBuffer))?s?a(t):i(new Blob([t]),a):a(n.PACKET_TYPES[e]+(t||""));var c}},373:(e,t,s)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.decodePayload=t.decodePacket=t.encodePayload=t.encodePacket=t.protocol=void 0;const n=s(908);t.encodePacket=n.default;const r=s(572);t.decodePacket=r.default;const o=String.fromCharCode(30);t.encodePayload=(e,t)=>{const s=e.length,r=new Array(s);let i=0;e.forEach(((e,a)=>{(0,n.default)(e,!1,(e=>{r[a]=e,++i===s&&t(r.join(o))}))}))},t.decodePayload=(e,t)=>{const s=e.split(o),n=[];for(let e=0;e{"use strict";function s(e){e=e||{},this.ms=e.min||100,this.max=e.max||1e4,this.factor=e.factor||2,this.jitter=e.jitter>0&&e.jitter<=1?e.jitter:0,this.attempts=0}Object.defineProperty(t,"__esModule",{value:!0}),t.Backoff=void 0,t.Backoff=s,s.prototype.duration=function(){var e=this.ms*Math.pow(this.factor,this.attempts++);if(this.jitter){var t=Math.random(),s=Math.floor(t*this.jitter*e);e=0==(1&Math.floor(10*t))?e-s:e+s}return 0|Math.min(e,this.max)},s.prototype.reset=function(){this.attempts=0},s.prototype.setMin=function(e){this.ms=e},s.prototype.setMax=function(e){this.max=e},s.prototype.setJitter=function(e){this.jitter=e}},46:function(e,t,s){"use strict";var n=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.default=t.connect=t.io=t.Socket=t.Manager=t.protocol=void 0;const r=s(84),o=s(168);Object.defineProperty(t,"Manager",{enumerable:!0,get:function(){return o.Manager}});const i=s(312);Object.defineProperty(t,"Socket",{enumerable:!0,get:function(){return i.Socket}});const a=n(s(669)).default("socket.io-client"),c={};function u(e,t){"object"==typeof e&&(t=e,e=void 0),t=t||{};const s=r.url(e,t.path||"/socket.io"),n=s.source,i=s.id,u=s.path,h=c[i]&&u in c[i].nsps;let l;return t.forceNew||t["force new connection"]||!1===t.multiplex||h?(a("ignoring socket cache for %s",n),l=new o.Manager(n,t)):(c[i]||(a("new io instance for %s",n),c[i]=new o.Manager(n,t)),l=c[i]),s.query&&!t.query&&(t.query=s.queryKey),l.socket(s.path,t)}t.io=u,t.connect=u,t.default=u,Object.assign(u,{Manager:o.Manager,Socket:i.Socket,io:u,connect:u});var h=s(514);Object.defineProperty(t,"protocol",{enumerable:!0,get:function(){return h.protocol}}),e.exports=u},168:function(e,t,s){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,s,n){void 0===n&&(n=s),Object.defineProperty(e,n,{enumerable:!0,get:function(){return t[s]}})}:function(e,t,s,n){void 0===n&&(n=s),e[n]=t[s]}),r=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),o=this&&this.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var s in e)"default"!==s&&Object.prototype.hasOwnProperty.call(e,s)&&n(t,e,s);return r(t,e),t},i=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.Manager=void 0;const a=s(679),c=s(312),u=o(s(514)),h=s(149),l=s(159),d=s(260),p=i(s(669)).default("socket.io-client:manager");class f extends d.Emitter{constructor(e,t){var s;super(),this.nsps={},this.subs=[],e&&"object"==typeof e&&(t=e,e=void 0),(t=t||{}).path=t.path||"/socket.io",this.opts=t,a.installTimerFunctions(this,t),this.reconnection(!1!==t.reconnection),this.reconnectionAttempts(t.reconnectionAttempts||1/0),this.reconnectionDelay(t.reconnectionDelay||1e3),this.reconnectionDelayMax(t.reconnectionDelayMax||5e3),this.randomizationFactor(null!==(s=t.randomizationFactor)&&void 0!==s?s:.5),this.backoff=new l.Backoff({min:this.reconnectionDelay(),max:this.reconnectionDelayMax(),jitter:this.randomizationFactor()}),this.timeout(null==t.timeout?2e4:t.timeout),this._readyState="closed",this.uri=e;const n=t.parser||u;this.encoder=new n.Encoder,this.decoder=new n.Decoder,this._autoConnect=!1!==t.autoConnect,this._autoConnect&&this.open()}reconnection(e){return arguments.length?(this._reconnection=!!e,this):this._reconnection}reconnectionAttempts(e){return void 0===e?this._reconnectionAttempts:(this._reconnectionAttempts=e,this)}reconnectionDelay(e){var t;return void 0===e?this._reconnectionDelay:(this._reconnectionDelay=e,null===(t=this.backoff)||void 0===t||t.setMin(e),this)}randomizationFactor(e){var t;return void 0===e?this._randomizationFactor:(this._randomizationFactor=e,null===(t=this.backoff)||void 0===t||t.setJitter(e),this)}reconnectionDelayMax(e){var t;return void 0===e?this._reconnectionDelayMax:(this._reconnectionDelayMax=e,null===(t=this.backoff)||void 0===t||t.setMax(e),this)}timeout(e){return arguments.length?(this._timeout=e,this):this._timeout}maybeReconnectOnOpen(){!this._reconnecting&&this._reconnection&&0===this.backoff.attempts&&this.reconnect()}open(e){if(p("readyState %s",this._readyState),~this._readyState.indexOf("open"))return this;p("opening %s",this.uri),this.engine=new a.Socket(this.uri,this.opts);const t=this.engine,s=this;this._readyState="opening",this.skipReconnect=!1;const n=h.on(t,"open",(function(){s.onopen(),e&&e()})),r=h.on(t,"error",(t=>{p("error"),s.cleanup(),s._readyState="closed",this.emitReserved("error",t),e?e(t):s.maybeReconnectOnOpen()}));if(!1!==this._timeout){const e=this._timeout;p("connect attempt will timeout after %d",e),0===e&&n();const s=this.setTimeoutFn((()=>{p("connect attempt timed out after %d",e),n(),t.close(),t.emit("error",new Error("timeout"))}),e);this.opts.autoUnref&&s.unref(),this.subs.push((function(){clearTimeout(s)}))}return this.subs.push(n),this.subs.push(r),this}connect(e){return this.open(e)}onopen(){p("open"),this.cleanup(),this._readyState="open",this.emitReserved("open");const e=this.engine;this.subs.push(h.on(e,"ping",this.onping.bind(this)),h.on(e,"data",this.ondata.bind(this)),h.on(e,"error",this.onerror.bind(this)),h.on(e,"close",this.onclose.bind(this)),h.on(this.decoder,"decoded",this.ondecoded.bind(this)))}onping(){this.emitReserved("ping")}ondata(e){try{this.decoder.add(e)}catch(e){this.onclose("parse error",e)}}ondecoded(e){a.nextTick((()=>{this.emitReserved("packet",e)}),this.setTimeoutFn)}onerror(e){p("error",e),this.emitReserved("error",e)}socket(e,t){let s=this.nsps[e];return s?this._autoConnect&&!s.active&&s.connect():(s=new c.Socket(this,e,t),this.nsps[e]=s),s}_destroy(e){const t=Object.keys(this.nsps);for(const e of t)if(this.nsps[e].active)return void p("socket %s is still active, skipping close",e);this._close()}_packet(e){p("writing packet %j",e);const t=this.encoder.encode(e);for(let s=0;se())),this.subs.length=0,this.decoder.destroy()}_close(){p("disconnect"),this.skipReconnect=!0,this._reconnecting=!1,this.onclose("forced close"),this.engine&&this.engine.close()}disconnect(){return this._close()}onclose(e,t){p("closed due to %s",e),this.cleanup(),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)p("reconnect failed"),this.backoff.reset(),this.emitReserved("reconnect_failed"),this._reconnecting=!1;else{const t=this.backoff.duration();p("will wait %dms before reconnect attempt",t),this._reconnecting=!0;const s=this.setTimeoutFn((()=>{e.skipReconnect||(p("attempting reconnect"),this.emitReserved("reconnect_attempt",e.backoff.attempts),e.skipReconnect||e.open((t=>{t?(p("reconnect attempt error"),e._reconnecting=!1,e.reconnect(),this.emitReserved("reconnect_error",t)):(p("reconnect success"),e.onreconnect())})))}),t);this.opts.autoUnref&&s.unref(),this.subs.push((function(){clearTimeout(s)}))}}onreconnect(){const e=this.backoff.attempts;this._reconnecting=!1,this.backoff.reset(),this.emitReserved("reconnect",e)}}t.Manager=f},149:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.on=void 0,t.on=function(e,t,s){return e.on(t,s),function(){e.off(t,s)}}},312:function(e,t,s){"use strict";var n=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.Socket=void 0;const r=s(514),o=s(149),i=s(260),a=n(s(669)).default("socket.io-client:socket"),c=Object.freeze({connect:1,connect_error:1,disconnect:1,disconnecting:1,newListener:1,removeListener:1});class u extends i.Emitter{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=[o.on(e,"open",this.onopen.bind(this)),o.on(e,"packet",this.onpacket.bind(this)),o.on(e,"error",this.onerror.bind(this)),o.on(e,"close",this.onclose.bind(this))]}get active(){return!!this.subs}connect(){return this.connected||(this.subEvents(),this.io._reconnecting||this.io.open(),"open"===this.io._readyState&&this.onopen()),this}open(){return this.connect()}send(...e){return e.unshift("message"),this.emit.apply(this,e),this}emit(e,...t){if(c.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 s={type:r.PacketType.EVENT,data:t,options:{}};if(s.options.compress=!1!==this.flags.compress,"function"==typeof t[t.length-1]){const e=this.ids++;a("emitting packet with ack id %d",e);const n=t.pop();this._registerAckCallback(e,n),s.id=e}const n=this.io.engine&&this.io.engine.transport&&this.io.engine.transport.writable;return!this.flags.volatile||n&&this.connected?this.connected?(this.notifyOutgoingListeners(s),this.packet(s)):this.sendBuffer.push(s):a("discard packet as the transport is not currently writable"),this.flags={},this}_registerAckCallback(e,t){var s;const n=null!==(s=this.flags.timeout)&&void 0!==s?s:this._opts.ackTimeout;if(void 0===n)return void(this.acks[e]=t);const r=this.io.setTimeoutFn((()=>{delete this.acks[e];for(let t=0;t{this.io.clearTimeoutFn(r),t.apply(this,[null,...e])}}emitWithAck(e,...t){const s=void 0!==this.flags.timeout||void 0!==this._opts.ackTimeout;return new Promise(((n,r)=>{t.push(((e,t)=>s?e?r(e):n(t):n(e))),this.emit(e,...t)}))}_addToQueue(e){let t;"function"==typeof e[e.length-1]&&(t=e.pop());const s={id:this._queueSeq++,tryCount:0,pending:!1,args:e,flags:Object.assign({fromQueue:!0},this.flags)};e.push(((e,...n)=>{if(s===this._queue[0])return null!==e?s.tryCount>this._opts.retries&&(a("packet [%d] is discarded after %d tries",s.id,s.tryCount),this._queue.shift(),t&&t(e)):(a("packet [%d] was successfully sent",s.id),this._queue.shift(),t&&t(null,...n)),s.pending=!1,this._drainQueue()})),this._queue.push(s),this._drainQueue()}_drainQueue(e=!1){if(a("draining queue"),!this.connected||0===this._queue.length)return;const t=this._queue[0];!t.pending||e?(t.pending=!0,t.tryCount++,a("sending packet [%d] (try n°%d)",t.id,t.tryCount),this.flags=t.flags,this.emit.apply(this,t.args)):a("packet [%d] has already been sent and is waiting for an ack",t.id)}packet(e){e.nsp=this.nsp,this.io._packet(e)}onopen(){a("transport is open - connecting"),"function"==typeof this.auth?this.auth((e=>{this._sendConnectPacket(e)})):this._sendConnectPacket(this.auth)}_sendConnectPacket(e){this.packet({type:r.PacketType.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){a("close (%s)",e),this.connected=!1,delete this.id,this.emitReserved("disconnect",e,t)}onpacket(e){if(e.nsp===this.nsp)switch(e.type){case r.PacketType.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 r.PacketType.EVENT:case r.PacketType.BINARY_EVENT:this.onevent(e);break;case r.PacketType.ACK:case r.PacketType.BINARY_ACK:this.onack(e);break;case r.PacketType.DISCONNECT:this.ondisconnect();break;case r.PacketType.CONNECT_ERROR:this.destroy();const t=new Error(e.data.message);t.data=e.data.data,this.emitReserved("connect_error",t)}}onevent(e){const t=e.data||[];a("emitting event %j",t),null!=e.id&&(a("attaching ack callback to event"),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&&"string"==typeof e[e.length-1]&&(this._lastOffset=e[e.length-1])}ack(e){const t=this;let s=!1;return function(...n){s||(s=!0,a("sending ack %j",n),t.packet({type:r.PacketType.ACK,id:e,data:n}))}}onack(e){const t=this.acks[e.id];"function"==typeof t?(a("calling ack %s with %j",e.id,e.data),t.apply(this,e.data),delete this.acks[e.id]):a("bad ack %s",e.id)}onconnect(e,t){a("socket connected with id %s",e),this.id=e,this.recovered=t&&this._pid===t,this._pid=t,this.connected=!0,this.emitBuffered(),this.emitReserved("connect"),this._drainQueue(!0)}emitBuffered(){this.receiveBuffer.forEach((e=>this.emitEvent(e))),this.receiveBuffer=[],this.sendBuffer.forEach((e=>{this.notifyOutgoingListeners(e),this.packet(e)})),this.sendBuffer=[]}ondisconnect(){a("server disconnect (%s)",this.nsp),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&&(a("performing disconnect (%s)",this.nsp),this.packet({type:r.PacketType.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{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.reconstructPacket=t.deconstructPacket=void 0;const n=s(665);function r(e,t){if(!e)return e;if((0,n.isBinary)(e)){const s={_placeholder:!0,num:t.length};return t.push(e),s}if(Array.isArray(e)){const s=new Array(e.length);for(let n=0;n=0&&e.num{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.Decoder=t.Encoder=t.PacketType=t.protocol=void 0;const n=s(260),r=s(880),o=s(665),i=(0,s(618).default)("socket.io-parser");var a;t.protocol=5,function(e){e[e.CONNECT=0]="CONNECT",e[e.DISCONNECT=1]="DISCONNECT",e[e.EVENT=2]="EVENT",e[e.ACK=3]="ACK",e[e.CONNECT_ERROR=4]="CONNECT_ERROR",e[e.BINARY_EVENT=5]="BINARY_EVENT",e[e.BINARY_ACK=6]="BINARY_ACK"}(a=t.PacketType||(t.PacketType={})),t.Encoder=class{constructor(e){this.replacer=e}encode(e){return i("encoding packet %j",e),e.type!==a.EVENT&&e.type!==a.ACK||!(0,o.hasBinary)(e)?[this.encodeAsString(e)]:this.encodeAsBinary({type:e.type===a.EVENT?a.BINARY_EVENT:a.BINARY_ACK,nsp:e.nsp,data:e.data,id:e.id})}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+","),null!=e.id&&(t+=e.id),null!=e.data&&(t+=JSON.stringify(e.data,this.replacer)),i("encoded %j as %s",e,t),t}encodeAsBinary(e){const t=(0,r.deconstructPacket)(e),s=this.encodeAsString(t.packet),n=t.buffers;return n.unshift(s),n}};class c extends n.Emitter{constructor(e){super(),this.reviver=e}add(e){let t;if("string"==typeof e){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 u(t),0===t.attachments&&super.emitReserved("decoded",t)):super.emitReserved("decoded",t)}else{if(!(0,o.isBinary)(e)&&!e.base64)throw new Error("Unknown type: "+e);if(!this.reconstructor)throw new Error("got binary data when not reconstructing a packet");t=this.reconstructor.takeBinaryData(e),t&&(this.reconstructor=null,super.emitReserved("decoded",t))}}decodeString(e){let t=0;const s={type:Number(e.charAt(0))};if(void 0===a[s.type])throw new Error("unknown packet type "+s.type);if(s.type===a.BINARY_EVENT||s.type===a.BINARY_ACK){const n=t+1;for(;"-"!==e.charAt(++t)&&t!=e.length;);const r=e.substring(n,t);if(r!=Number(r)||"-"!==e.charAt(t))throw new Error("Illegal attachments");s.attachments=Number(r)}if("/"===e.charAt(t+1)){const n=t+1;for(;++t&&","!==e.charAt(t)&&t!==e.length;);s.nsp=e.substring(n,t)}else s.nsp="/";const n=e.charAt(t+1);if(""!==n&&Number(n)==n){const n=t+1;for(;++t;){const s=e.charAt(t);if(null==s||Number(s)!=s){--t;break}if(t===e.length)break}s.id=Number(e.substring(n,t+1))}if(e.charAt(++t)){const n=this.tryParse(e.substr(t));if(!c.isPayloadValid(s.type,n))throw new Error("invalid payload");s.data=n}return i("decoded %s as %j",e,s),s}tryParse(e){try{return JSON.parse(e,this.reviver)}catch(e){return!1}}static isPayloadValid(e,t){switch(e){case a.CONNECT:return"object"==typeof t;case a.DISCONNECT:return void 0===t;case a.CONNECT_ERROR:return"string"==typeof t||"object"==typeof t;case a.EVENT:case a.BINARY_EVENT:return Array.isArray(t)&&("string"==typeof t[0]||"number"==typeof t[0]);case a.ACK:case a.BINARY_ACK:return Array.isArray(t)}}destroy(){this.reconstructor&&(this.reconstructor.finishedReconstruction(),this.reconstructor=null)}}t.Decoder=c;class u{constructor(e){this.packet=e,this.buffers=[],this.reconPack=e}takeBinaryData(e){if(this.buffers.push(e),this.buffers.length===this.reconPack.attachments){const e=(0,r.reconstructPacket)(this.reconPack,this.buffers);return this.finishedReconstruction(),e}return null}finishedReconstruction(){this.reconPack=null,this.buffers=[]}}},665:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.hasBinary=t.isBinary=void 0;const s="function"==typeof ArrayBuffer,n=Object.prototype.toString,r="function"==typeof Blob||"undefined"!=typeof Blob&&"[object BlobConstructor]"===n.call(Blob),o="function"==typeof File||"undefined"!=typeof File&&"[object FileConstructor]"===n.call(File);function i(e){return s&&(e instanceof ArrayBuffer||(e=>"function"==typeof ArrayBuffer.isView?ArrayBuffer.isView(e):e.buffer instanceof ArrayBuffer)(e))||r&&e instanceof Blob||o&&e instanceof File}t.isBinary=i,t.hasBinary=function e(t,s){if(!t||"object"!=typeof t)return!1;if(Array.isArray(t)){for(let s=0,n=t.length;s{"use strict";function n(e){if(e)return function(e){for(var t in n.prototype)e[t]=n.prototype[t];return e}(e)}s.r(t),s.d(t,{Emitter:()=>n}),n.prototype.on=n.prototype.addEventListener=function(e,t){return this._callbacks=this._callbacks||{},(this._callbacks["$"+e]=this._callbacks["$"+e]||[]).push(t),this},n.prototype.once=function(e,t){function s(){this.off(e,s),t.apply(this,arguments)}return s.fn=t,this.on(e,s),this},n.prototype.off=n.prototype.removeListener=n.prototype.removeAllListeners=n.prototype.removeEventListener=function(e,t){if(this._callbacks=this._callbacks||{},0==arguments.length)return this._callbacks={},this;var s,n=this._callbacks["$"+e];if(!n)return this;if(1==arguments.length)return delete this._callbacks["$"+e],this;for(var r=0;r{for(var n in t)s.o(t,n)&&!s.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},s.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),s.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},(()=>{"use strict";const e=s(46);function t(e,t=document){return t.querySelector(e)}function n(e,t=document){return Array.from(t.querySelectorAll(e))}function r(){return localStorage.getItem("authToken").toString()}function o(){const e=i.gradientName(),s=t("body");let n;s.classList.value=e,s.classList.add(i.getTimePeriod()),n=i.get24Hour()>=5&&i.get24Hour()<9?"morning":i.get24Hour()>=9&&i.get24Hour()<17?"afternoon":i.get24Hour()>=17&&i.get24Hour()<20?"evening":"night",t("#time-of-day").innerHTML=` ${i.getHour()}${i.getAmPm()}`}const i=new(s(182).TimeManager),a=(0,e.io)({extraHeaders:{"x-authtoken":r()}});o(),setInterval(o,6e4),a.on("connect",(()=>{console.log(`Connected: ${a.id}`)})),a.on("authToken",(e=>{console.log(`recv auth token ${e}`),localStorage.setItem("authToken",e)})),a.on("chat",(function(e){t("#chat-messages").innerHTML+=e,t("#chat-messages").scrollTop=t("#chat-messages").scrollHeight})),a.on("ready",(function(){console.log("Server connection verified"),n("nav a")[0].click()})),n("nav a").forEach((e=>{e.addEventListener("click",(e=>{const s=e.target;n("a",s.closest("nav")).forEach((e=>{e.classList.remove("active")})),s.classList.add("active");const r=t(s.getAttribute("hx-target").toString());Array.from(r.parentElement.children).forEach((e=>{e.classList.remove("active")})),r.classList.add("active")}))})),t("body").addEventListener("click",(e=>{var s;const n=e.target;if(n.parentElement.classList.contains("filter")){Array.from(n.parentElement.children).forEach((e=>e.classList.remove("active"))),n.classList.add("active");const e=n.getAttribute("data-filter"),s=t(`.filter-result[data-filter="${e}"]`,n.closest(".filter-container"));s&&Array.from(s.parentElement.children).forEach((t=>{t.getAttribute("data-filter")===e?(t.classList.remove("hidden"),t.classList.add("active")):(t.classList.add("hidden"),t.classList.remove("active"))}))}"dialog"===n.getAttribute("formmethod")&&"cancel"===n.getAttribute("value")&&(null===(s=n.closest("dialog"))||void 0===s||s.close())}));const c=new MutationObserver(((e,s)=>{const r={modal:!1,alert:!1};e.forEach((e=>{switch(e.target.id){case"modal-wrapper":r.modal=!0;break;case"alerts":r.alert=!0}})),r.modal&&t("#modal-wrapper").children.length&&n("#modal-wrapper dialog").forEach((e=>{e.open||e.showModal()})),r.alert&&t("#alerts").children.length&&n("#alerts .alert").forEach((e=>{if(!e.getAttribute("data-dismiss-at")){const t=Date.now()+3e3;e.setAttribute("data-dismiss-at",t.toString()),setTimeout((()=>{e.remove()}),3e3)}}))}));c.observe(t("#modal-wrapper"),{childList:!0}),c.observe(t("#alerts"),{childList:!0}),document.body.addEventListener("htmx:configRequest",(function(e){e.detail.headers["x-authtoken"]=r()})),document.body.addEventListener("htmx:load",(function(e){n(".disabled[data-block]").forEach((e=>{setTimeout((()=>{e.removeAttribute("disabled")}),3e3)}))})),document.body.addEventListener("htmx:beforeSwap",(function(e){"chat-form"===e.target.id&&(t("#message").value="")}))})()})(); \ No newline at end of file diff --git a/public/index.html b/public/index.html index 2ec8975..778ec98 100644 --- a/public/index.html +++ b/public/index.html @@ -11,7 +11,6 @@ - diff --git a/src/client/events.ts b/src/client/events.ts deleted file mode 100644 index faf1ce1..0000000 --- a/src/client/events.ts +++ /dev/null @@ -1,20 +0,0 @@ -export class CustomEventManager { - events: Record; - constructor() { - this.events = {}; - } - - on(eventName: string, handler: any) { - if(!this.events[eventName]) { - this.events[eventName] = []; - } - - this.events[eventName].push(handler); - } - - emit(eventName: string, args: any[] = []) { - if(this.events[eventName]) { - this.events[eventName].forEach(h => h.apply(null, args)); - } - } -} diff --git a/src/client/htmx.ts b/src/client/htmx.ts index e70141a..d722952 100644 --- a/src/client/htmx.ts +++ b/src/client/htmx.ts @@ -1,5 +1,4 @@ import { io } from 'socket.io-client'; -import { Message } from '../shared/message'; import { TimeManager } from '../shared/time'; function $(selector: string, root: any = document): T { @@ -11,7 +10,7 @@ function $$(selector: string, root: any = document): T[] { } export function authToken(): string { - return localStorage.getItem('authToken'); + return localStorage.getItem('authToken')!.toString(); } function setTimeGradient() { diff --git a/src/client/modal.ts b/src/client/modal.ts deleted file mode 100644 index 1eabdac..0000000 --- a/src/client/modal.ts +++ /dev/null @@ -1,41 +0,0 @@ -import { v4 as uuid } from 'uuid'; -import $ from 'jquery'; -import { CustomEventManager } from './events'; - -export class Modal extends CustomEventManager { - id: string; - constructor() { - super(); - this.id = `id-${uuid()}`; - } - - setBody(text: string) { - this.$el().find('.modal-body').html(text); - } - - render(visible: boolean = false) { - let html = ` - - - - - `; - - if(this.$el().length) { - this.showModal(); - } - else { - $('body').append(html); - this.emit('ready', [this]); - } - } - - $el() { - return $(`#${this.id}`); - } - - showModal() { - // @ts-ignore - this.$el().get(0)?.showModal(); - } -} -- 2.25.1 From 4f6823ddd3abaadfc437280c3d75f1dde2ea799f Mon Sep 17 00:00:00 2001 From: xangelo Date: Wed, 9 Aug 2023 10:37:46 -0400 Subject: [PATCH 4/6] fix: armour icon support --- migrations/20230808185745_armour-icons.ts | 20 +++++++++ public/assets/bundle.js | 2 +- public/assets/css/game.css | 7 +++- .../assets/img/icons/equipment/arm_t_02.PNG | Bin 0 -> 46592 bytes .../assets/img/icons/equipment/boot_t_02.png | Bin 0 -> 52013 bytes public/assets/img/icons/equipment/gl_t_07.png | Bin 0 -> 58078 bytes .../assets/img/icons/equipment/hlm_t_02.png | Bin 0 -> 59571 bytes public/assets/img/icons/equipment/pn_t_06.png | Bin 0 -> 53908 bytes public/index.html | 2 +- seeds/shop_items.ts | 1 + src/client/htmx.ts | 8 +++- src/server/api.ts | 39 +++++++++++------- src/server/inventory.ts | 1 + src/server/views/inventory.ts | 32 ++++++++------ src/server/views/stores.ts | 2 +- src/shared/inventory.ts | 1 + 16 files changed, 83 insertions(+), 32 deletions(-) create mode 100644 migrations/20230808185745_armour-icons.ts create mode 100755 public/assets/img/icons/equipment/arm_t_02.PNG create mode 100755 public/assets/img/icons/equipment/boot_t_02.png create mode 100755 public/assets/img/icons/equipment/gl_t_07.png create mode 100755 public/assets/img/icons/equipment/hlm_t_02.png create mode 100644 public/assets/img/icons/equipment/pn_t_06.png diff --git a/migrations/20230808185745_armour-icons.ts b/migrations/20230808185745_armour-icons.ts new file mode 100644 index 0000000..561d155 --- /dev/null +++ b/migrations/20230808185745_armour-icons.ts @@ -0,0 +1,20 @@ +import { Knex } from "knex"; + + +export async function up(knex: Knex): Promise { + return knex.schema.alterTable('shop_equipment', function(table) { + table.string('icon').defaultTo(''); + }).alterTable('inventory', function(table) { + table.string('icon').defaultTo(''); + }); +} + + +export async function down(knex: Knex): Promise { + return knex.schema.alterTable('shop_equipment', function(table) { + table.dropColumn('icon'); + }).alterTable('inventory', function(table) { + table.dropColumn('icon'); + }); +} + diff --git a/public/assets/bundle.js b/public/assets/bundle.js index 9146dc8..ecebb9c 100644 --- a/public/assets/bundle.js +++ b/public/assets/bundle.js @@ -1 +1 @@ -(()=>{var e={802:(e,t,s)=>{t.formatArgs=function(t){if(t[0]=(this.useColors?"%c":"")+this.namespace+(this.useColors?" %c":" ")+t[0]+(this.useColors?"%c ":" ")+"+"+e.exports.humanize(this.diff),!this.useColors)return;const s="color: "+this.color;t.splice(1,0,s,"color: inherit");let n=0,r=0;t[0].replace(/%[a-zA-Z%]/g,(e=>{"%%"!==e&&(n++,"%c"===e&&(r=n))})),t.splice(r,0,s)},t.save=function(e){try{e?t.storage.setItem("debug",e):t.storage.removeItem("debug")}catch(e){}},t.load=function(){let e;try{e=t.storage.getItem("debug")}catch(e){}return!e&&"undefined"!=typeof process&&"env"in process&&(e=process.env.DEBUG),e},t.useColors=function(){return!("undefined"==typeof window||!window.process||"renderer"!==window.process.type&&!window.process.__nwjs)||("undefined"==typeof navigator||!navigator.userAgent||!navigator.userAgent.toLowerCase().match(/(edge|trident)\/(\d+)/))&&("undefined"!=typeof document&&document.documentElement&&document.documentElement.style&&document.documentElement.style.WebkitAppearance||"undefined"!=typeof window&&window.console&&(window.console.firebug||window.console.exception&&window.console.table)||"undefined"!=typeof navigator&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/)&&parseInt(RegExp.$1,10)>=31||"undefined"!=typeof navigator&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/))},t.storage=function(){try{return localStorage}catch(e){}}(),t.destroy=(()=>{let e=!1;return()=>{e||(e=!0,console.warn("Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`."))}})(),t.colors=["#0000CC","#0000FF","#0033CC","#0033FF","#0066CC","#0066FF","#0099CC","#0099FF","#00CC00","#00CC33","#00CC66","#00CC99","#00CCCC","#00CCFF","#3300CC","#3300FF","#3333CC","#3333FF","#3366CC","#3366FF","#3399CC","#3399FF","#33CC00","#33CC33","#33CC66","#33CC99","#33CCCC","#33CCFF","#6600CC","#6600FF","#6633CC","#6633FF","#66CC00","#66CC33","#9900CC","#9900FF","#9933CC","#9933FF","#99CC00","#99CC33","#CC0000","#CC0033","#CC0066","#CC0099","#CC00CC","#CC00FF","#CC3300","#CC3333","#CC3366","#CC3399","#CC33CC","#CC33FF","#CC6600","#CC6633","#CC9900","#CC9933","#CCCC00","#CCCC33","#FF0000","#FF0033","#FF0066","#FF0099","#FF00CC","#FF00FF","#FF3300","#FF3333","#FF3366","#FF3399","#FF33CC","#FF33FF","#FF6600","#FF6633","#FF9900","#FF9933","#FFCC00","#FFCC33"],t.log=console.debug||console.log||(()=>{}),e.exports=s(804)(t);const{formatters:n}=e.exports;n.j=function(e){try{return JSON.stringify(e)}catch(e){return"[UnexpectedJSONParseError]: "+e.message}}},804:(e,t,s)=>{e.exports=function(e){function t(e){let s,r,o,i=null;function a(...e){if(!a.enabled)return;const n=a,r=Number(new Date),o=r-(s||r);n.diff=o,n.prev=s,n.curr=r,s=r,e[0]=t.coerce(e[0]),"string"!=typeof e[0]&&e.unshift("%O");let i=0;e[0]=e[0].replace(/%([a-zA-Z%])/g,((s,r)=>{if("%%"===s)return"%";i++;const o=t.formatters[r];if("function"==typeof o){const t=e[i];s=o.call(n,t),e.splice(i,1),i--}return s})),t.formatArgs.call(n,e),(n.log||t.log).apply(n,e)}return a.namespace=e,a.useColors=t.useColors(),a.color=t.selectColor(e),a.extend=n,a.destroy=t.destroy,Object.defineProperty(a,"enabled",{enumerable:!0,configurable:!1,get:()=>null!==i?i:(r!==t.namespaces&&(r=t.namespaces,o=t.enabled(e)),o),set:e=>{i=e}}),"function"==typeof t.init&&t.init(a),a}function n(e,s){const n=t(this.namespace+(void 0===s?":":s)+e);return n.log=this.log,n}function r(e){return e.toString().substring(2,e.toString().length-2).replace(/\.\*\?$/,"*")}return t.debug=t,t.default=t,t.coerce=function(e){return e instanceof Error?e.stack||e.message:e},t.disable=function(){const e=[...t.names.map(r),...t.skips.map(r).map((e=>"-"+e))].join(",");return t.enable(""),e},t.enable=function(e){let s;t.save(e),t.namespaces=e,t.names=[],t.skips=[];const n=("string"==typeof e?e:"").split(/[\s,]+/),r=n.length;for(s=0;s{t[s]=e[s]})),t.names=[],t.skips=[],t.formatters={},t.selectColor=function(e){let s=0;for(let t=0;t{var t=1e3,s=60*t,n=60*s,r=24*n;function o(e,t,s,n){var r=t>=1.5*s;return Math.round(e/s)+" "+n+(r?"s":"")}e.exports=function(e,i){i=i||{};var a,c,u=typeof e;if("string"===u&&e.length>0)return function(e){if(!((e=String(e)).length>100)){var o=/^(-?(?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(e);if(o){var i=parseFloat(o[1]);switch((o[2]||"ms").toLowerCase()){case"years":case"year":case"yrs":case"yr":case"y":return 315576e5*i;case"weeks":case"week":case"w":return 6048e5*i;case"days":case"day":case"d":return i*r;case"hours":case"hour":case"hrs":case"hr":case"h":return i*n;case"minutes":case"minute":case"mins":case"min":case"m":return i*s;case"seconds":case"second":case"secs":case"sec":case"s":return i*t;case"milliseconds":case"millisecond":case"msecs":case"msec":case"ms":return i;default:return}}}}(e);if("number"===u&&isFinite(e))return i.long?(a=e,(c=Math.abs(a))>=r?o(a,c,r,"day"):c>=n?o(a,c,n,"hour"):c>=s?o(a,c,s,"minute"):c>=t?o(a,c,t,"second"):a+" ms"):function(e){var o=Math.abs(e);return o>=r?Math.round(e/r)+"d":o>=n?Math.round(e/n)+"h":o>=s?Math.round(e/s)+"m":o>=t?Math.round(e/t)+"s":e+"ms"}(e);throw new Error("val is not a non-empty string or a valid number. val="+JSON.stringify(e))}},669:(e,t,s)=>{t.formatArgs=function(t){if(t[0]=(this.useColors?"%c":"")+this.namespace+(this.useColors?" %c":" ")+t[0]+(this.useColors?"%c ":" ")+"+"+e.exports.humanize(this.diff),!this.useColors)return;const s="color: "+this.color;t.splice(1,0,s,"color: inherit");let n=0,r=0;t[0].replace(/%[a-zA-Z%]/g,(e=>{"%%"!==e&&(n++,"%c"===e&&(r=n))})),t.splice(r,0,s)},t.save=function(e){try{e?t.storage.setItem("debug",e):t.storage.removeItem("debug")}catch(e){}},t.load=function(){let e;try{e=t.storage.getItem("debug")}catch(e){}return!e&&"undefined"!=typeof process&&"env"in process&&(e=process.env.DEBUG),e},t.useColors=function(){return!("undefined"==typeof window||!window.process||"renderer"!==window.process.type&&!window.process.__nwjs)||("undefined"==typeof navigator||!navigator.userAgent||!navigator.userAgent.toLowerCase().match(/(edge|trident)\/(\d+)/))&&("undefined"!=typeof document&&document.documentElement&&document.documentElement.style&&document.documentElement.style.WebkitAppearance||"undefined"!=typeof window&&window.console&&(window.console.firebug||window.console.exception&&window.console.table)||"undefined"!=typeof navigator&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/)&&parseInt(RegExp.$1,10)>=31||"undefined"!=typeof navigator&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/))},t.storage=function(){try{return localStorage}catch(e){}}(),t.destroy=(()=>{let e=!1;return()=>{e||(e=!0,console.warn("Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`."))}})(),t.colors=["#0000CC","#0000FF","#0033CC","#0033FF","#0066CC","#0066FF","#0099CC","#0099FF","#00CC00","#00CC33","#00CC66","#00CC99","#00CCCC","#00CCFF","#3300CC","#3300FF","#3333CC","#3333FF","#3366CC","#3366FF","#3399CC","#3399FF","#33CC00","#33CC33","#33CC66","#33CC99","#33CCCC","#33CCFF","#6600CC","#6600FF","#6633CC","#6633FF","#66CC00","#66CC33","#9900CC","#9900FF","#9933CC","#9933FF","#99CC00","#99CC33","#CC0000","#CC0033","#CC0066","#CC0099","#CC00CC","#CC00FF","#CC3300","#CC3333","#CC3366","#CC3399","#CC33CC","#CC33FF","#CC6600","#CC6633","#CC9900","#CC9933","#CCCC00","#CCCC33","#FF0000","#FF0033","#FF0066","#FF0099","#FF00CC","#FF00FF","#FF3300","#FF3333","#FF3366","#FF3399","#FF33CC","#FF33FF","#FF6600","#FF6633","#FF9900","#FF9933","#FFCC00","#FFCC33"],t.log=console.debug||console.log||(()=>{}),e.exports=s(231)(t);const{formatters:n}=e.exports;n.j=function(e){try{return JSON.stringify(e)}catch(e){return"[UnexpectedJSONParseError]: "+e.message}}},231:(e,t,s)=>{e.exports=function(e){function t(e){let s,r,o,i=null;function a(...e){if(!a.enabled)return;const n=a,r=Number(new Date),o=r-(s||r);n.diff=o,n.prev=s,n.curr=r,s=r,e[0]=t.coerce(e[0]),"string"!=typeof e[0]&&e.unshift("%O");let i=0;e[0]=e[0].replace(/%([a-zA-Z%])/g,((s,r)=>{if("%%"===s)return"%";i++;const o=t.formatters[r];if("function"==typeof o){const t=e[i];s=o.call(n,t),e.splice(i,1),i--}return s})),t.formatArgs.call(n,e),(n.log||t.log).apply(n,e)}return a.namespace=e,a.useColors=t.useColors(),a.color=t.selectColor(e),a.extend=n,a.destroy=t.destroy,Object.defineProperty(a,"enabled",{enumerable:!0,configurable:!1,get:()=>null!==i?i:(r!==t.namespaces&&(r=t.namespaces,o=t.enabled(e)),o),set:e=>{i=e}}),"function"==typeof t.init&&t.init(a),a}function n(e,s){const n=t(this.namespace+(void 0===s?":":s)+e);return n.log=this.log,n}function r(e){return e.toString().substring(2,e.toString().length-2).replace(/\.\*\?$/,"*")}return t.debug=t,t.default=t,t.coerce=function(e){return e instanceof Error?e.stack||e.message:e},t.disable=function(){const e=[...t.names.map(r),...t.skips.map(r).map((e=>"-"+e))].join(",");return t.enable(""),e},t.enable=function(e){let s;t.save(e),t.namespaces=e,t.names=[],t.skips=[];const n=("string"==typeof e?e:"").split(/[\s,]+/),r=n.length;for(s=0;s{t[s]=e[s]})),t.names=[],t.skips=[],t.formatters={},t.selectColor=function(e){let s=0;for(let t=0;t{var t=1e3,s=60*t,n=60*s,r=24*n;function o(e,t,s,n){var r=t>=1.5*s;return Math.round(e/s)+" "+n+(r?"s":"")}e.exports=function(e,i){i=i||{};var a,c,u=typeof e;if("string"===u&&e.length>0)return function(e){if(!((e=String(e)).length>100)){var o=/^(-?(?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(e);if(o){var i=parseFloat(o[1]);switch((o[2]||"ms").toLowerCase()){case"years":case"year":case"yrs":case"yr":case"y":return 315576e5*i;case"weeks":case"week":case"w":return 6048e5*i;case"days":case"day":case"d":return i*r;case"hours":case"hour":case"hrs":case"hr":case"h":return i*n;case"minutes":case"minute":case"mins":case"min":case"m":return i*s;case"seconds":case"second":case"secs":case"sec":case"s":return i*t;case"milliseconds":case"millisecond":case"msecs":case"msec":case"ms":return i;default:return}}}}(e);if("number"===u&&isFinite(e))return i.long?(a=e,(c=Math.abs(a))>=r?o(a,c,r,"day"):c>=n?o(a,c,n,"hour"):c>=s?o(a,c,s,"minute"):c>=t?o(a,c,t,"second"):a+" ms"):function(e){var o=Math.abs(e);return o>=r?Math.round(e/r)+"d":o>=n?Math.round(e/n)+"h":o>=s?Math.round(e/s)+"m":o>=t?Math.round(e/t)+"s":e+"ms"}(e);throw new Error("val is not a non-empty string or a valid number. val="+JSON.stringify(e))}},618:(e,t,s)=>{t.formatArgs=function(t){if(t[0]=(this.useColors?"%c":"")+this.namespace+(this.useColors?" %c":" ")+t[0]+(this.useColors?"%c ":" ")+"+"+e.exports.humanize(this.diff),!this.useColors)return;const s="color: "+this.color;t.splice(1,0,s,"color: inherit");let n=0,r=0;t[0].replace(/%[a-zA-Z%]/g,(e=>{"%%"!==e&&(n++,"%c"===e&&(r=n))})),t.splice(r,0,s)},t.save=function(e){try{e?t.storage.setItem("debug",e):t.storage.removeItem("debug")}catch(e){}},t.load=function(){let e;try{e=t.storage.getItem("debug")}catch(e){}return!e&&"undefined"!=typeof process&&"env"in process&&(e=process.env.DEBUG),e},t.useColors=function(){return!("undefined"==typeof window||!window.process||"renderer"!==window.process.type&&!window.process.__nwjs)||("undefined"==typeof navigator||!navigator.userAgent||!navigator.userAgent.toLowerCase().match(/(edge|trident)\/(\d+)/))&&("undefined"!=typeof document&&document.documentElement&&document.documentElement.style&&document.documentElement.style.WebkitAppearance||"undefined"!=typeof window&&window.console&&(window.console.firebug||window.console.exception&&window.console.table)||"undefined"!=typeof navigator&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/)&&parseInt(RegExp.$1,10)>=31||"undefined"!=typeof navigator&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/))},t.storage=function(){try{return localStorage}catch(e){}}(),t.destroy=(()=>{let e=!1;return()=>{e||(e=!0,console.warn("Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`."))}})(),t.colors=["#0000CC","#0000FF","#0033CC","#0033FF","#0066CC","#0066FF","#0099CC","#0099FF","#00CC00","#00CC33","#00CC66","#00CC99","#00CCCC","#00CCFF","#3300CC","#3300FF","#3333CC","#3333FF","#3366CC","#3366FF","#3399CC","#3399FF","#33CC00","#33CC33","#33CC66","#33CC99","#33CCCC","#33CCFF","#6600CC","#6600FF","#6633CC","#6633FF","#66CC00","#66CC33","#9900CC","#9900FF","#9933CC","#9933FF","#99CC00","#99CC33","#CC0000","#CC0033","#CC0066","#CC0099","#CC00CC","#CC00FF","#CC3300","#CC3333","#CC3366","#CC3399","#CC33CC","#CC33FF","#CC6600","#CC6633","#CC9900","#CC9933","#CCCC00","#CCCC33","#FF0000","#FF0033","#FF0066","#FF0099","#FF00CC","#FF00FF","#FF3300","#FF3333","#FF3366","#FF3399","#FF33CC","#FF33FF","#FF6600","#FF6633","#FF9900","#FF9933","#FFCC00","#FFCC33"],t.log=console.debug||console.log||(()=>{}),e.exports=s(224)(t);const{formatters:n}=e.exports;n.j=function(e){try{return JSON.stringify(e)}catch(e){return"[UnexpectedJSONParseError]: "+e.message}}},224:(e,t,s)=>{e.exports=function(e){function t(e){let s,r,o,i=null;function a(...e){if(!a.enabled)return;const n=a,r=Number(new Date),o=r-(s||r);n.diff=o,n.prev=s,n.curr=r,s=r,e[0]=t.coerce(e[0]),"string"!=typeof e[0]&&e.unshift("%O");let i=0;e[0]=e[0].replace(/%([a-zA-Z%])/g,((s,r)=>{if("%%"===s)return"%";i++;const o=t.formatters[r];if("function"==typeof o){const t=e[i];s=o.call(n,t),e.splice(i,1),i--}return s})),t.formatArgs.call(n,e),(n.log||t.log).apply(n,e)}return a.namespace=e,a.useColors=t.useColors(),a.color=t.selectColor(e),a.extend=n,a.destroy=t.destroy,Object.defineProperty(a,"enabled",{enumerable:!0,configurable:!1,get:()=>null!==i?i:(r!==t.namespaces&&(r=t.namespaces,o=t.enabled(e)),o),set:e=>{i=e}}),"function"==typeof t.init&&t.init(a),a}function n(e,s){const n=t(this.namespace+(void 0===s?":":s)+e);return n.log=this.log,n}function r(e){return e.toString().substring(2,e.toString().length-2).replace(/\.\*\?$/,"*")}return t.debug=t,t.default=t,t.coerce=function(e){return e instanceof Error?e.stack||e.message:e},t.disable=function(){const e=[...t.names.map(r),...t.skips.map(r).map((e=>"-"+e))].join(",");return t.enable(""),e},t.enable=function(e){let s;t.save(e),t.namespaces=e,t.names=[],t.skips=[];const n=("string"==typeof e?e:"").split(/[\s,]+/),r=n.length;for(s=0;s{t[s]=e[s]})),t.names=[],t.skips=[],t.formatters={},t.selectColor=function(e){let s=0;for(let t=0;t{var t=1e3,s=60*t,n=60*s,r=24*n;function o(e,t,s,n){var r=t>=1.5*s;return Math.round(e/s)+" "+n+(r?"s":"")}e.exports=function(e,i){i=i||{};var a,c,u=typeof e;if("string"===u&&e.length>0)return function(e){if(!((e=String(e)).length>100)){var o=/^(-?(?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(e);if(o){var i=parseFloat(o[1]);switch((o[2]||"ms").toLowerCase()){case"years":case"year":case"yrs":case"yr":case"y":return 315576e5*i;case"weeks":case"week":case"w":return 6048e5*i;case"days":case"day":case"d":return i*r;case"hours":case"hour":case"hrs":case"hr":case"h":return i*n;case"minutes":case"minute":case"mins":case"min":case"m":return i*s;case"seconds":case"second":case"secs":case"sec":case"s":return i*t;case"milliseconds":case"millisecond":case"msecs":case"msec":case"ms":return i;default:return}}}}(e);if("number"===u&&isFinite(e))return i.long?(a=e,(c=Math.abs(a))>=r?o(a,c,r,"day"):c>=n?o(a,c,n,"hour"):c>=s?o(a,c,s,"minute"):c>=t?o(a,c,t,"second"):a+" ms"):function(e){var o=Math.abs(e);return o>=r?Math.round(e/r)+"d":o>=n?Math.round(e/n)+"h":o>=s?Math.round(e/s)+"m":o>=t?Math.round(e/t)+"s":e+"ms"}(e);throw new Error("val is not a non-empty string or a valid number. val="+JSON.stringify(e))}},182:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.TimeManager=void 0,t.TimeManager=class{constructor(e=120){this.dayLength=e,this.scaleFactor=30,this.dayLengthAsMS=60*e*1e3}dayScaleFactor(){return this.dayLength/30}getTimePeriod(){return this.isMorning()?"morning":this.isAfternoon()?"afternoon":this.isEvening()?"evening":this.isNight()?"night":void 0}getAmPm(){return this.get24Hour()<12?"am":"pm"}get24Hour(){const e=new Date,t=(e.getMinutes()+e.getHours()%2*(this.dayLength/2))/this.dayLength;return Math.floor(24*t)}getHour(){const e=(new Date).getMinutes()/this.dayLength,t=Math.floor(24*e);return t>12?t-12:t}gradientName(){const e=Math.floor(this.get24Hour()/24*this.scaleFactor);return`sky-gradient-${e<10?"0":""}${e}`}isNight(){const e=this.get24Hour();return e>=0&&e<5||e>=21&&e<24}isMorning(){const e=this.get24Hour();return e>=5&&e<12}isAfternoon(){const e=this.get24Hour();return e>=12&&e<18}isEvening(){const e=this.get24Hour();return e>=18&&e<21}}},419:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.hasCORS=void 0;let s=!1;try{s="undefined"!=typeof XMLHttpRequest&&"withCredentials"in new XMLHttpRequest}catch(e){}t.hasCORS=s},754:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.decode=t.encode=void 0,t.encode=function(e){let t="";for(let s in e)e.hasOwnProperty(s)&&(t.length&&(t+="&"),t+=encodeURIComponent(s)+"="+encodeURIComponent(e[s]));return t},t.decode=function(e){let t={},s=e.split("&");for(let e=0,n=s.length;e{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.parse=void 0;const s=/^(?:(?![^:@\/?#]+:[^:@\/]*@)(http|https|ws|wss):\/\/)?((?:(([^:@\/?#]*)(?::([^:@\/?#]*))?)?@)?((?:[a-f0-9]{0,4}:){2,7}[a-f0-9]{0,4}|[^:\/?#]*)(?::(\d*))?)(((\/(?:[^?#](?![^?#\/]*\.[^?#\/.]+(?:[?#]|$)))*\/?)?([^?#\/]*))(?:\?([^#]*))?(?:#(.*))?)/,n=["source","protocol","authority","userInfo","user","password","host","port","relative","path","directory","file","query","anchor"];t.parse=function(e){const t=e,r=e.indexOf("["),o=e.indexOf("]");-1!=r&&-1!=o&&(e=e.substring(0,r)+e.substring(r,o).replace(/:/g,";")+e.substring(o,e.length));let i=s.exec(e||""),a={},c=14;for(;c--;)a[n[c]]=i[c]||"";return-1!=r&&-1!=o&&(a.source=t,a.host=a.host.substring(1,a.host.length-1).replace(/;/g,":"),a.authority=a.authority.replace("[","").replace("]","").replace(/;/g,":"),a.ipv6uri=!0),a.pathNames=function(e,t){const s=t.replace(/\/{2,9}/g,"/").split("/");return"/"!=t.slice(0,1)&&0!==t.length||s.splice(0,1),"/"==t.slice(-1)&&s.splice(s.length-1,1),s}(0,a.path),a.queryKey=function(e,t){const s={};return t.replace(/(?:^|&)([^&=]*)=?([^&]*)/g,(function(e,t,n){t&&(s[t]=n)})),s}(0,a.query),a}},726:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.yeast=t.decode=t.encode=void 0;const s="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz-_".split(""),n={};let r,o=0,i=0;function a(e){let t="";do{t=s[e%64]+t,e=Math.floor(e/64)}while(e>0);return t}for(t.encode=a,t.decode=function(e){let t=0;for(i=0;i{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.globalThisShim=void 0,t.globalThisShim="undefined"!=typeof self?self:"undefined"!=typeof window?window:Function("return this")()},679:(e,t,s)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.nextTick=t.parse=t.installTimerFunctions=t.transports=t.Transport=t.protocol=t.Socket=void 0;const n=s(481);Object.defineProperty(t,"Socket",{enumerable:!0,get:function(){return n.Socket}}),t.protocol=n.Socket.protocol;var r=s(870);Object.defineProperty(t,"Transport",{enumerable:!0,get:function(){return r.Transport}});var o=s(385);Object.defineProperty(t,"transports",{enumerable:!0,get:function(){return o.transports}});var i=s(622);Object.defineProperty(t,"installTimerFunctions",{enumerable:!0,get:function(){return i.installTimerFunctions}});var a=s(222);Object.defineProperty(t,"parse",{enumerable:!0,get:function(){return a.parse}});var c=s(552);Object.defineProperty(t,"nextTick",{enumerable:!0,get:function(){return c.nextTick}})},481:function(e,t,s){"use strict";var n=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.Socket=void 0;const r=s(385),o=s(622),i=s(754),a=s(222),c=n(s(802)),u=s(260),h=s(373),l=(0,c.default)("engine.io-client:socket");class d extends u.Emitter{constructor(e,t={}){super(),this.writeBuffer=[],e&&"object"==typeof e&&(t=e,e=null),e?(e=(0,a.parse)(e),t.hostname=e.host,t.secure="https"===e.protocol||"wss"===e.protocol,t.port=e.port,e.query&&(t.query=e.query)):t.host&&(t.hostname=(0,a.parse)(t.host).host),(0,o.installTimerFunctions)(this,t),this.secure=null!=t.secure?t.secure:"undefined"!=typeof location&&"https:"===location.protocol,t.hostname&&!t.port&&(t.port=this.secure?"443":"80"),this.hostname=t.hostname||("undefined"!=typeof location?location.hostname:"localhost"),this.port=t.port||("undefined"!=typeof location&&location.port?location.port:this.secure?"443":"80"),this.transports=t.transports||["polling","websocket"],this.writeBuffer=[],this.prevBufferLen=0,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:!0},t),this.opts.path=this.opts.path.replace(/\/$/,"")+(this.opts.addTrailingSlash?"/":""),"string"==typeof this.opts.query&&(this.opts.query=(0,i.decode)(this.opts.query)),this.id=null,this.upgrades=null,this.pingInterval=null,this.pingTimeout=null,this.pingTimeoutTimer=null,"function"==typeof addEventListener&&(this.opts.closeOnBeforeunload&&(this.beforeunloadEventListener=()=>{this.transport&&(this.transport.removeAllListeners(),this.transport.close())},addEventListener("beforeunload",this.beforeunloadEventListener,!1)),"localhost"!==this.hostname&&(this.offlineEventListener=()=>{this.onClose("transport close",{description:"network connection lost"})},addEventListener("offline",this.offlineEventListener,!1))),this.open()}createTransport(e){l('creating transport "%s"',e);const t=Object.assign({},this.opts.query);t.EIO=h.protocol,t.transport=e,this.id&&(t.sid=this.id);const s=Object.assign({},this.opts.transportOptions[e],this.opts,{query:t,socket:this,hostname:this.hostname,secure:this.secure,port:this.port});return l("options: %j",s),new r.transports[e](s)}open(){let e;if(this.opts.rememberUpgrade&&d.priorWebsocketSuccess&&-1!==this.transports.indexOf("websocket"))e="websocket";else{if(0===this.transports.length)return void this.setTimeoutFn((()=>{this.emitReserved("error","No transports available")}),0);e=this.transports[0]}this.readyState="opening";try{e=this.createTransport(e)}catch(e){return l("error while creating transport: %s",e),this.transports.shift(),void this.open()}e.open(),this.setTransport(e)}setTransport(e){l("setting transport %s",e.name),this.transport&&(l("clearing existing transport %s",this.transport.name),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",(e=>this.onClose("transport close",e)))}probe(e){l('probing transport "%s"',e);let t=this.createTransport(e),s=!1;d.priorWebsocketSuccess=!1;const n=()=>{s||(l('probe transport "%s" opened',e),t.send([{type:"ping",data:"probe"}]),t.once("packet",(n=>{if(!s)if("pong"===n.type&&"probe"===n.data){if(l('probe transport "%s" pong',e),this.upgrading=!0,this.emitReserved("upgrading",t),!t)return;d.priorWebsocketSuccess="websocket"===t.name,l('pausing current transport "%s"',this.transport.name),this.transport.pause((()=>{s||"closed"!==this.readyState&&(l("changing transport and sending upgrade packet"),u(),this.setTransport(t),t.send([{type:"upgrade"}]),this.emitReserved("upgrade",t),t=null,this.upgrading=!1,this.flush())}))}else{l('probe transport "%s" failed',e);const s=new Error("probe error");s.transport=t.name,this.emitReserved("upgradeError",s)}})))};function r(){s||(s=!0,u(),t.close(),t=null)}const o=s=>{const n=new Error("probe error: "+s);n.transport=t.name,r(),l('probe transport "%s" failed because of error: %s',e,s),this.emitReserved("upgradeError",n)};function i(){o("transport closed")}function a(){o("socket closed")}function c(e){t&&e.name!==t.name&&(l('"%s" works - aborting "%s"',e.name,t.name),r())}const u=()=>{t.removeListener("open",n),t.removeListener("error",o),t.removeListener("close",i),this.off("close",a),this.off("upgrading",c)};t.once("open",n),t.once("error",o),t.once("close",i),this.once("close",a),this.once("upgrading",c),t.open()}onOpen(){if(l("socket open"),this.readyState="open",d.priorWebsocketSuccess="websocket"===this.transport.name,this.emitReserved("open"),this.flush(),"open"===this.readyState&&this.opts.upgrade){l("starting upgrade probes");let e=0;const t=this.upgrades.length;for(;e{this.onClose("ping timeout")}),this.pingInterval+this.pingTimeout),this.opts.autoUnref&&this.pingTimeoutTimer.unref()}onDrain(){this.writeBuffer.splice(0,this.prevBufferLen),this.prevBufferLen=0,0===this.writeBuffer.length?this.emitReserved("drain"):this.flush()}flush(){if("closed"!==this.readyState&&this.transport.writable&&!this.upgrading&&this.writeBuffer.length){const e=this.getWritablePackets();l("flushing %d packets in socket",e.length),this.transport.send(e),this.prevBufferLen=e.length,this.emitReserved("flush")}}getWritablePackets(){if(!(this.maxPayload&&"polling"===this.transport.name&&this.writeBuffer.length>1))return this.writeBuffer;let e=1;for(let t=0;t0&&e>this.maxPayload)return l("only send %d out of %d packets",t,this.writeBuffer.length),this.writeBuffer.slice(0,t);e+=2}return l("payload size is %d (max: %d)",e,this.maxPayload),this.writeBuffer}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,n){if("function"==typeof t&&(n=t,t=void 0),"function"==typeof s&&(n=s,s=null),"closing"===this.readyState||"closed"===this.readyState)return;(s=s||{}).compress=!1!==s.compress;const r={type:e,data:t,options:s};this.emitReserved("packetCreate",r),this.writeBuffer.push(r),n&&this.once("flush",n),this.flush()}close(){const e=()=>{this.onClose("forced close"),l("socket closing - telling transport to close"),this.transport.close()},t=()=>{this.off("upgrade",t),this.off("upgradeError",t),e()},s=()=>{this.once("upgrade",t),this.once("upgradeError",t)};return"opening"!==this.readyState&&"open"!==this.readyState||(this.readyState="closing",this.writeBuffer.length?this.once("drain",(()=>{this.upgrading?s():e()})):this.upgrading?s():e()),this}onError(e){l("socket error %j",e),d.priorWebsocketSuccess=!1,this.emitReserved("error",e),this.onClose("transport error",e)}onClose(e,t){"opening"!==this.readyState&&"open"!==this.readyState&&"closing"!==this.readyState||(l('socket close with reason: "%s"',e),this.clearTimeoutFn(this.pingTimeoutTimer),this.transport.removeAllListeners("close"),this.transport.close(),this.transport.removeAllListeners(),"function"==typeof removeEventListener&&(removeEventListener("beforeunload",this.beforeunloadEventListener,!1),removeEventListener("offline",this.offlineEventListener,!1)),this.readyState="closed",this.id=null,this.emitReserved("close",e,t),this.writeBuffer=[],this.prevBufferLen=0)}filterUpgrades(e){const t=[];let s=0;const n=e.length;for(;s{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.transports=void 0;const n=s(484),r=s(308);t.transports={websocket:r.WS,polling:n.Polling}},484:function(e,t,s){"use strict";var n=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.Request=t.Polling=void 0;const r=s(870),o=n(s(802)),i=s(726),a=s(754),c=s(373),u=s(666),h=s(260),l=s(622),d=s(242),p=(0,o.default)("engine.io-client:polling");function f(){}const g=null!=new u.XHR({xdomain:!1}).responseType;class m extends r.Transport{constructor(e){if(super(e),this.polling=!1,"undefined"!=typeof location){const t="https:"===location.protocol;let s=location.port;s||(s=t?"443":"80"),this.xd="undefined"!=typeof location&&e.hostname!==location.hostname||s!==e.port,this.xs=e.secure!==t}const t=e&&e.forceBase64;this.supportsBinary=g&&!t}get name(){return"polling"}doOpen(){this.poll()}pause(e){this.readyState="pausing";const t=()=>{p("paused"),this.readyState="paused",e()};if(this.polling||!this.writable){let e=0;this.polling&&(p("we are currently polling - waiting to pause"),e++,this.once("pollComplete",(function(){p("pre-pause polling complete"),--e||t()}))),this.writable||(p("we are currently writing - waiting to pause"),e++,this.once("drain",(function(){p("pre-pause writing complete"),--e||t()})))}else t()}poll(){p("polling"),this.polling=!0,this.doPoll(),this.emitReserved("poll")}onData(e){p("polling got data %s",e),(0,c.decodePayload)(e,this.socket.binaryType).forEach((e=>{if("opening"===this.readyState&&"open"===e.type&&this.onOpen(),"close"===e.type)return this.onClose({description:"transport closed by the server"}),!1;this.onPacket(e)})),"closed"!==this.readyState&&(this.polling=!1,this.emitReserved("pollComplete"),"open"===this.readyState?this.poll():p('ignoring poll - transport state "%s"',this.readyState))}doClose(){const e=()=>{p("writing close packet"),this.write([{type:"close"}])};"open"===this.readyState?(p("transport open - closing"),e()):(p("transport not open - deferring close"),this.once("open",e))}write(e){this.writable=!1,(0,c.encodePayload)(e,(e=>{this.doWrite(e,(()=>{this.writable=!0,this.emitReserved("drain")}))}))}uri(){let e=this.query||{};const t=this.opts.secure?"https":"http";let s="";!1!==this.opts.timestampRequests&&(e[this.opts.timestampParam]=(0,i.yeast)()),this.supportsBinary||e.sid||(e.b64=1),this.opts.port&&("https"===t&&443!==Number(this.opts.port)||"http"===t&&80!==Number(this.opts.port))&&(s=":"+this.opts.port);const n=(0,a.encode)(e);return t+"://"+(-1!==this.opts.hostname.indexOf(":")?"["+this.opts.hostname+"]":this.opts.hostname)+s+this.opts.path+(n.length?"?"+n:"")}request(e={}){return Object.assign(e,{xd:this.xd,xs:this.xs},this.opts),new y(this.uri(),e)}doWrite(e,t){const s=this.request({method:"POST",data:e});s.on("success",t),s.on("error",((e,t)=>{this.onError("xhr post error",e,t)}))}doPoll(){p("xhr poll");const e=this.request();e.on("data",this.onData.bind(this)),e.on("error",((e,t)=>{this.onError("xhr poll error",e,t)})),this.pollXhr=e}}t.Polling=m;class y extends h.Emitter{constructor(e,t){super(),(0,l.installTimerFunctions)(this,t),this.opts=t,this.method=t.method||"GET",this.uri=e,this.async=!1!==t.async,this.data=void 0!==t.data?t.data:null,this.create()}create(){const e=(0,l.pick)(this.opts,"agent","pfx","key","passphrase","cert","ca","ciphers","rejectUnauthorized","autoUnref");e.xdomain=!!this.opts.xd,e.xscheme=!!this.opts.xs;const t=this.xhr=new u.XHR(e);try{p("xhr open %s: %s",this.method,this.uri),t.open(this.method,this.uri,this.async);try{if(this.opts.extraHeaders){t.setDisableHeaderCheck&&t.setDisableHeaderCheck(!0);for(let e in this.opts.extraHeaders)this.opts.extraHeaders.hasOwnProperty(e)&&t.setRequestHeader(e,this.opts.extraHeaders[e])}}catch(e){}if("POST"===this.method)try{t.setRequestHeader("Content-type","text/plain;charset=UTF-8")}catch(e){}try{t.setRequestHeader("Accept","*/*")}catch(e){}"withCredentials"in t&&(t.withCredentials=this.opts.withCredentials),this.opts.requestTimeout&&(t.timeout=this.opts.requestTimeout),t.onreadystatechange=()=>{4===t.readyState&&(200===t.status||1223===t.status?this.onLoad():this.setTimeoutFn((()=>{this.onError("number"==typeof t.status?t.status:0)}),0))},p("xhr data %s",this.data),t.send(this.data)}catch(e){return void this.setTimeoutFn((()=>{this.onError(e)}),0)}"undefined"!=typeof document&&(this.index=y.requestsCount++,y.requests[this.index]=this)}onError(e){this.emitReserved("error",e,this.xhr),this.cleanup(!0)}cleanup(e){if(void 0!==this.xhr&&null!==this.xhr){if(this.xhr.onreadystatechange=f,e)try{this.xhr.abort()}catch(e){}"undefined"!=typeof document&&delete y.requests[this.index],this.xhr=null}}onLoad(){const e=this.xhr.responseText;null!==e&&(this.emitReserved("data",e),this.emitReserved("success"),this.cleanup())}abort(){this.cleanup()}}if(t.Request=y,y.requestsCount=0,y.requests={},"undefined"!=typeof document)if("function"==typeof attachEvent)attachEvent("onunload",C);else if("function"==typeof addEventListener){const e="onpagehide"in d.globalThisShim?"pagehide":"unload";addEventListener(e,C,!1)}function C(){for(let e in y.requests)y.requests.hasOwnProperty(e)&&y.requests[e].abort()}},552:(e,t,s)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.defaultBinaryType=t.usingBrowserWebSocket=t.WebSocket=t.nextTick=void 0;const n=s(242);t.nextTick="function"==typeof Promise&&"function"==typeof Promise.resolve?e=>Promise.resolve().then(e):(e,t)=>t(e,0),t.WebSocket=n.globalThisShim.WebSocket||n.globalThisShim.MozWebSocket,t.usingBrowserWebSocket=!0,t.defaultBinaryType="arraybuffer"},308:function(e,t,s){"use strict";var n=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.WS=void 0;const r=s(870),o=s(754),i=s(726),a=s(622),c=s(552),u=n(s(802)),h=s(373),l=(0,u.default)("engine.io-client:websocket"),d="undefined"!=typeof navigator&&"string"==typeof navigator.product&&"reactnative"===navigator.product.toLowerCase();class p extends r.Transport{constructor(e){super(e),this.supportsBinary=!e.forceBase64}get name(){return"websocket"}doOpen(){if(!this.check())return;const e=this.uri(),t=this.opts.protocols,s=d?{}:(0,a.pick)(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=c.usingBrowserWebSocket&&!d?t?new c.WebSocket(e,t):new c.WebSocket(e):new c.WebSocket(e,t,s)}catch(e){return this.emitReserved("error",e)}this.ws.binaryType=this.socket.binaryType||c.defaultBinaryType,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{const t={};!c.usingBrowserWebSocket&&(s.options&&(t.compress=s.options.compress),this.opts.perMessageDeflate)&&("string"==typeof e?Buffer.byteLength(e):e.length){this.writable=!0,this.emitReserved("drain")}),this.setTimeoutFn)}))}}doClose(){void 0!==this.ws&&(this.ws.close(),this.ws=null)}uri(){let e=this.query||{};const t=this.opts.secure?"wss":"ws";let s="";this.opts.port&&("wss"===t&&443!==Number(this.opts.port)||"ws"===t&&80!==Number(this.opts.port))&&(s=":"+this.opts.port),this.opts.timestampRequests&&(e[this.opts.timestampParam]=(0,i.yeast)()),this.supportsBinary||(e.b64=1);const n=(0,o.encode)(e);return t+"://"+(-1!==this.opts.hostname.indexOf(":")?"["+this.opts.hostname+"]":this.opts.hostname)+s+this.opts.path+(n.length?"?"+n:"")}check(){return!!c.WebSocket}}t.WS=p},666:(e,t,s)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.XHR=void 0;const n=s(419),r=s(242);t.XHR=function(e){const t=e.xdomain;try{if("undefined"!=typeof XMLHttpRequest&&(!t||n.hasCORS))return new XMLHttpRequest}catch(e){}if(!t)try{return new(r.globalThisShim[["Active"].concat("Object").join("X")])("Microsoft.XMLHTTP")}catch(e){}}},622:(e,t,s)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.byteLength=t.installTimerFunctions=t.pick=void 0;const n=s(242);t.pick=function(e,...t){return t.reduce(((t,s)=>(e.hasOwnProperty(s)&&(t[s]=e[s]),t)),{})};const r=n.globalThisShim.setTimeout,o=n.globalThisShim.clearTimeout;t.installTimerFunctions=function(e,t){t.useNativeTimers?(e.setTimeoutFn=r.bind(n.globalThisShim),e.clearTimeoutFn=o.bind(n.globalThisShim)):(e.setTimeoutFn=n.globalThisShim.setTimeout.bind(n.globalThisShim),e.clearTimeoutFn=n.globalThisShim.clearTimeout.bind(n.globalThisShim))},t.byteLength=function(e){return"string"==typeof e?function(e){let t=0,s=0;for(let n=0,r=e.length;n=57344?s+=3:(n++,s+=4);return s}(e):Math.ceil(1.33*(e.byteLength||e.size))}},87:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ERROR_PACKET=t.PACKET_TYPES_REVERSE=t.PACKET_TYPES=void 0;const s=Object.create(null);t.PACKET_TYPES=s,s.open="0",s.close="1",s.ping="2",s.pong="3",s.message="4",s.upgrade="5",s.noop="6";const n=Object.create(null);t.PACKET_TYPES_REVERSE=n,Object.keys(s).forEach((e=>{n[s[e]]=e})),t.ERROR_PACKET={type:"error",data:"parser error"}},469:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.decode=t.encode=void 0;const s="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",n="undefined"==typeof Uint8Array?[]:new Uint8Array(256);for(let e=0;e<64;e++)n[s.charCodeAt(e)]=e;t.encode=e=>{let t,n=new Uint8Array(e),r=n.length,o="";for(t=0;t>2],o+=s[(3&n[t])<<4|n[t+1]>>4],o+=s[(15&n[t+1])<<2|n[t+2]>>6],o+=s[63&n[t+2]];return r%3==2?o=o.substring(0,o.length-1)+"=":r%3==1&&(o=o.substring(0,o.length-2)+"=="),o},t.decode=e=>{let t,s,r,o,i,a=.75*e.length,c=e.length,u=0;"="===e[e.length-1]&&(a--,"="===e[e.length-2]&&a--);const h=new ArrayBuffer(a),l=new Uint8Array(h);for(t=0;t>4,l[u++]=(15&r)<<4|o>>2,l[u++]=(3&o)<<6|63&i;return h}},572:(e,t,s)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});const n=s(87),r=s(469),o="function"==typeof ArrayBuffer,i=(e,t)=>{if(o){const s=(0,r.decode)(e);return a(s,t)}return{base64:!0,data:e}},a=(e,t)=>"blob"===t&&e instanceof ArrayBuffer?new Blob([e]):e;t.default=(e,t)=>{if("string"!=typeof e)return{type:"message",data:a(e,t)};const s=e.charAt(0);return"b"===s?{type:"message",data:i(e.substring(1),t)}:n.PACKET_TYPES_REVERSE[s]?e.length>1?{type:n.PACKET_TYPES_REVERSE[s],data:e.substring(1)}:{type:n.PACKET_TYPES_REVERSE[s]}:n.ERROR_PACKET}},908:(e,t,s)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});const n=s(87),r="function"==typeof Blob||"undefined"!=typeof Blob&&"[object BlobConstructor]"===Object.prototype.toString.call(Blob),o="function"==typeof ArrayBuffer,i=(e,t)=>{const s=new FileReader;return s.onload=function(){const e=s.result.split(",")[1];t("b"+(e||""))},s.readAsDataURL(e)};t.default=({type:e,data:t},s,a)=>{return r&&t instanceof Blob?s?a(t):i(t,a):o&&(t instanceof ArrayBuffer||(c=t,"function"==typeof ArrayBuffer.isView?ArrayBuffer.isView(c):c&&c.buffer instanceof ArrayBuffer))?s?a(t):i(new Blob([t]),a):a(n.PACKET_TYPES[e]+(t||""));var c}},373:(e,t,s)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.decodePayload=t.decodePacket=t.encodePayload=t.encodePacket=t.protocol=void 0;const n=s(908);t.encodePacket=n.default;const r=s(572);t.decodePacket=r.default;const o=String.fromCharCode(30);t.encodePayload=(e,t)=>{const s=e.length,r=new Array(s);let i=0;e.forEach(((e,a)=>{(0,n.default)(e,!1,(e=>{r[a]=e,++i===s&&t(r.join(o))}))}))},t.decodePayload=(e,t)=>{const s=e.split(o),n=[];for(let e=0;e{"use strict";function s(e){e=e||{},this.ms=e.min||100,this.max=e.max||1e4,this.factor=e.factor||2,this.jitter=e.jitter>0&&e.jitter<=1?e.jitter:0,this.attempts=0}Object.defineProperty(t,"__esModule",{value:!0}),t.Backoff=void 0,t.Backoff=s,s.prototype.duration=function(){var e=this.ms*Math.pow(this.factor,this.attempts++);if(this.jitter){var t=Math.random(),s=Math.floor(t*this.jitter*e);e=0==(1&Math.floor(10*t))?e-s:e+s}return 0|Math.min(e,this.max)},s.prototype.reset=function(){this.attempts=0},s.prototype.setMin=function(e){this.ms=e},s.prototype.setMax=function(e){this.max=e},s.prototype.setJitter=function(e){this.jitter=e}},46:function(e,t,s){"use strict";var n=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.default=t.connect=t.io=t.Socket=t.Manager=t.protocol=void 0;const r=s(84),o=s(168);Object.defineProperty(t,"Manager",{enumerable:!0,get:function(){return o.Manager}});const i=s(312);Object.defineProperty(t,"Socket",{enumerable:!0,get:function(){return i.Socket}});const a=n(s(669)).default("socket.io-client"),c={};function u(e,t){"object"==typeof e&&(t=e,e=void 0),t=t||{};const s=r.url(e,t.path||"/socket.io"),n=s.source,i=s.id,u=s.path,h=c[i]&&u in c[i].nsps;let l;return t.forceNew||t["force new connection"]||!1===t.multiplex||h?(a("ignoring socket cache for %s",n),l=new o.Manager(n,t)):(c[i]||(a("new io instance for %s",n),c[i]=new o.Manager(n,t)),l=c[i]),s.query&&!t.query&&(t.query=s.queryKey),l.socket(s.path,t)}t.io=u,t.connect=u,t.default=u,Object.assign(u,{Manager:o.Manager,Socket:i.Socket,io:u,connect:u});var h=s(514);Object.defineProperty(t,"protocol",{enumerable:!0,get:function(){return h.protocol}}),e.exports=u},168:function(e,t,s){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,s,n){void 0===n&&(n=s),Object.defineProperty(e,n,{enumerable:!0,get:function(){return t[s]}})}:function(e,t,s,n){void 0===n&&(n=s),e[n]=t[s]}),r=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),o=this&&this.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var s in e)"default"!==s&&Object.prototype.hasOwnProperty.call(e,s)&&n(t,e,s);return r(t,e),t},i=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.Manager=void 0;const a=s(679),c=s(312),u=o(s(514)),h=s(149),l=s(159),d=s(260),p=i(s(669)).default("socket.io-client:manager");class f extends d.Emitter{constructor(e,t){var s;super(),this.nsps={},this.subs=[],e&&"object"==typeof e&&(t=e,e=void 0),(t=t||{}).path=t.path||"/socket.io",this.opts=t,a.installTimerFunctions(this,t),this.reconnection(!1!==t.reconnection),this.reconnectionAttempts(t.reconnectionAttempts||1/0),this.reconnectionDelay(t.reconnectionDelay||1e3),this.reconnectionDelayMax(t.reconnectionDelayMax||5e3),this.randomizationFactor(null!==(s=t.randomizationFactor)&&void 0!==s?s:.5),this.backoff=new l.Backoff({min:this.reconnectionDelay(),max:this.reconnectionDelayMax(),jitter:this.randomizationFactor()}),this.timeout(null==t.timeout?2e4:t.timeout),this._readyState="closed",this.uri=e;const n=t.parser||u;this.encoder=new n.Encoder,this.decoder=new n.Decoder,this._autoConnect=!1!==t.autoConnect,this._autoConnect&&this.open()}reconnection(e){return arguments.length?(this._reconnection=!!e,this):this._reconnection}reconnectionAttempts(e){return void 0===e?this._reconnectionAttempts:(this._reconnectionAttempts=e,this)}reconnectionDelay(e){var t;return void 0===e?this._reconnectionDelay:(this._reconnectionDelay=e,null===(t=this.backoff)||void 0===t||t.setMin(e),this)}randomizationFactor(e){var t;return void 0===e?this._randomizationFactor:(this._randomizationFactor=e,null===(t=this.backoff)||void 0===t||t.setJitter(e),this)}reconnectionDelayMax(e){var t;return void 0===e?this._reconnectionDelayMax:(this._reconnectionDelayMax=e,null===(t=this.backoff)||void 0===t||t.setMax(e),this)}timeout(e){return arguments.length?(this._timeout=e,this):this._timeout}maybeReconnectOnOpen(){!this._reconnecting&&this._reconnection&&0===this.backoff.attempts&&this.reconnect()}open(e){if(p("readyState %s",this._readyState),~this._readyState.indexOf("open"))return this;p("opening %s",this.uri),this.engine=new a.Socket(this.uri,this.opts);const t=this.engine,s=this;this._readyState="opening",this.skipReconnect=!1;const n=h.on(t,"open",(function(){s.onopen(),e&&e()})),r=h.on(t,"error",(t=>{p("error"),s.cleanup(),s._readyState="closed",this.emitReserved("error",t),e?e(t):s.maybeReconnectOnOpen()}));if(!1!==this._timeout){const e=this._timeout;p("connect attempt will timeout after %d",e),0===e&&n();const s=this.setTimeoutFn((()=>{p("connect attempt timed out after %d",e),n(),t.close(),t.emit("error",new Error("timeout"))}),e);this.opts.autoUnref&&s.unref(),this.subs.push((function(){clearTimeout(s)}))}return this.subs.push(n),this.subs.push(r),this}connect(e){return this.open(e)}onopen(){p("open"),this.cleanup(),this._readyState="open",this.emitReserved("open");const e=this.engine;this.subs.push(h.on(e,"ping",this.onping.bind(this)),h.on(e,"data",this.ondata.bind(this)),h.on(e,"error",this.onerror.bind(this)),h.on(e,"close",this.onclose.bind(this)),h.on(this.decoder,"decoded",this.ondecoded.bind(this)))}onping(){this.emitReserved("ping")}ondata(e){try{this.decoder.add(e)}catch(e){this.onclose("parse error",e)}}ondecoded(e){a.nextTick((()=>{this.emitReserved("packet",e)}),this.setTimeoutFn)}onerror(e){p("error",e),this.emitReserved("error",e)}socket(e,t){let s=this.nsps[e];return s?this._autoConnect&&!s.active&&s.connect():(s=new c.Socket(this,e,t),this.nsps[e]=s),s}_destroy(e){const t=Object.keys(this.nsps);for(const e of t)if(this.nsps[e].active)return void p("socket %s is still active, skipping close",e);this._close()}_packet(e){p("writing packet %j",e);const t=this.encoder.encode(e);for(let s=0;se())),this.subs.length=0,this.decoder.destroy()}_close(){p("disconnect"),this.skipReconnect=!0,this._reconnecting=!1,this.onclose("forced close"),this.engine&&this.engine.close()}disconnect(){return this._close()}onclose(e,t){p("closed due to %s",e),this.cleanup(),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)p("reconnect failed"),this.backoff.reset(),this.emitReserved("reconnect_failed"),this._reconnecting=!1;else{const t=this.backoff.duration();p("will wait %dms before reconnect attempt",t),this._reconnecting=!0;const s=this.setTimeoutFn((()=>{e.skipReconnect||(p("attempting reconnect"),this.emitReserved("reconnect_attempt",e.backoff.attempts),e.skipReconnect||e.open((t=>{t?(p("reconnect attempt error"),e._reconnecting=!1,e.reconnect(),this.emitReserved("reconnect_error",t)):(p("reconnect success"),e.onreconnect())})))}),t);this.opts.autoUnref&&s.unref(),this.subs.push((function(){clearTimeout(s)}))}}onreconnect(){const e=this.backoff.attempts;this._reconnecting=!1,this.backoff.reset(),this.emitReserved("reconnect",e)}}t.Manager=f},149:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.on=void 0,t.on=function(e,t,s){return e.on(t,s),function(){e.off(t,s)}}},312:function(e,t,s){"use strict";var n=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.Socket=void 0;const r=s(514),o=s(149),i=s(260),a=n(s(669)).default("socket.io-client:socket"),c=Object.freeze({connect:1,connect_error:1,disconnect:1,disconnecting:1,newListener:1,removeListener:1});class u extends i.Emitter{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=[o.on(e,"open",this.onopen.bind(this)),o.on(e,"packet",this.onpacket.bind(this)),o.on(e,"error",this.onerror.bind(this)),o.on(e,"close",this.onclose.bind(this))]}get active(){return!!this.subs}connect(){return this.connected||(this.subEvents(),this.io._reconnecting||this.io.open(),"open"===this.io._readyState&&this.onopen()),this}open(){return this.connect()}send(...e){return e.unshift("message"),this.emit.apply(this,e),this}emit(e,...t){if(c.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 s={type:r.PacketType.EVENT,data:t,options:{}};if(s.options.compress=!1!==this.flags.compress,"function"==typeof t[t.length-1]){const e=this.ids++;a("emitting packet with ack id %d",e);const n=t.pop();this._registerAckCallback(e,n),s.id=e}const n=this.io.engine&&this.io.engine.transport&&this.io.engine.transport.writable;return!this.flags.volatile||n&&this.connected?this.connected?(this.notifyOutgoingListeners(s),this.packet(s)):this.sendBuffer.push(s):a("discard packet as the transport is not currently writable"),this.flags={},this}_registerAckCallback(e,t){var s;const n=null!==(s=this.flags.timeout)&&void 0!==s?s:this._opts.ackTimeout;if(void 0===n)return void(this.acks[e]=t);const r=this.io.setTimeoutFn((()=>{delete this.acks[e];for(let t=0;t{this.io.clearTimeoutFn(r),t.apply(this,[null,...e])}}emitWithAck(e,...t){const s=void 0!==this.flags.timeout||void 0!==this._opts.ackTimeout;return new Promise(((n,r)=>{t.push(((e,t)=>s?e?r(e):n(t):n(e))),this.emit(e,...t)}))}_addToQueue(e){let t;"function"==typeof e[e.length-1]&&(t=e.pop());const s={id:this._queueSeq++,tryCount:0,pending:!1,args:e,flags:Object.assign({fromQueue:!0},this.flags)};e.push(((e,...n)=>{if(s===this._queue[0])return null!==e?s.tryCount>this._opts.retries&&(a("packet [%d] is discarded after %d tries",s.id,s.tryCount),this._queue.shift(),t&&t(e)):(a("packet [%d] was successfully sent",s.id),this._queue.shift(),t&&t(null,...n)),s.pending=!1,this._drainQueue()})),this._queue.push(s),this._drainQueue()}_drainQueue(e=!1){if(a("draining queue"),!this.connected||0===this._queue.length)return;const t=this._queue[0];!t.pending||e?(t.pending=!0,t.tryCount++,a("sending packet [%d] (try n°%d)",t.id,t.tryCount),this.flags=t.flags,this.emit.apply(this,t.args)):a("packet [%d] has already been sent and is waiting for an ack",t.id)}packet(e){e.nsp=this.nsp,this.io._packet(e)}onopen(){a("transport is open - connecting"),"function"==typeof this.auth?this.auth((e=>{this._sendConnectPacket(e)})):this._sendConnectPacket(this.auth)}_sendConnectPacket(e){this.packet({type:r.PacketType.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){a("close (%s)",e),this.connected=!1,delete this.id,this.emitReserved("disconnect",e,t)}onpacket(e){if(e.nsp===this.nsp)switch(e.type){case r.PacketType.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 r.PacketType.EVENT:case r.PacketType.BINARY_EVENT:this.onevent(e);break;case r.PacketType.ACK:case r.PacketType.BINARY_ACK:this.onack(e);break;case r.PacketType.DISCONNECT:this.ondisconnect();break;case r.PacketType.CONNECT_ERROR:this.destroy();const t=new Error(e.data.message);t.data=e.data.data,this.emitReserved("connect_error",t)}}onevent(e){const t=e.data||[];a("emitting event %j",t),null!=e.id&&(a("attaching ack callback to event"),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&&"string"==typeof e[e.length-1]&&(this._lastOffset=e[e.length-1])}ack(e){const t=this;let s=!1;return function(...n){s||(s=!0,a("sending ack %j",n),t.packet({type:r.PacketType.ACK,id:e,data:n}))}}onack(e){const t=this.acks[e.id];"function"==typeof t?(a("calling ack %s with %j",e.id,e.data),t.apply(this,e.data),delete this.acks[e.id]):a("bad ack %s",e.id)}onconnect(e,t){a("socket connected with id %s",e),this.id=e,this.recovered=t&&this._pid===t,this._pid=t,this.connected=!0,this.emitBuffered(),this.emitReserved("connect"),this._drainQueue(!0)}emitBuffered(){this.receiveBuffer.forEach((e=>this.emitEvent(e))),this.receiveBuffer=[],this.sendBuffer.forEach((e=>{this.notifyOutgoingListeners(e),this.packet(e)})),this.sendBuffer=[]}ondisconnect(){a("server disconnect (%s)",this.nsp),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&&(a("performing disconnect (%s)",this.nsp),this.packet({type:r.PacketType.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{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.reconstructPacket=t.deconstructPacket=void 0;const n=s(665);function r(e,t){if(!e)return e;if((0,n.isBinary)(e)){const s={_placeholder:!0,num:t.length};return t.push(e),s}if(Array.isArray(e)){const s=new Array(e.length);for(let n=0;n=0&&e.num{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.Decoder=t.Encoder=t.PacketType=t.protocol=void 0;const n=s(260),r=s(880),o=s(665),i=(0,s(618).default)("socket.io-parser");var a;t.protocol=5,function(e){e[e.CONNECT=0]="CONNECT",e[e.DISCONNECT=1]="DISCONNECT",e[e.EVENT=2]="EVENT",e[e.ACK=3]="ACK",e[e.CONNECT_ERROR=4]="CONNECT_ERROR",e[e.BINARY_EVENT=5]="BINARY_EVENT",e[e.BINARY_ACK=6]="BINARY_ACK"}(a=t.PacketType||(t.PacketType={})),t.Encoder=class{constructor(e){this.replacer=e}encode(e){return i("encoding packet %j",e),e.type!==a.EVENT&&e.type!==a.ACK||!(0,o.hasBinary)(e)?[this.encodeAsString(e)]:this.encodeAsBinary({type:e.type===a.EVENT?a.BINARY_EVENT:a.BINARY_ACK,nsp:e.nsp,data:e.data,id:e.id})}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+","),null!=e.id&&(t+=e.id),null!=e.data&&(t+=JSON.stringify(e.data,this.replacer)),i("encoded %j as %s",e,t),t}encodeAsBinary(e){const t=(0,r.deconstructPacket)(e),s=this.encodeAsString(t.packet),n=t.buffers;return n.unshift(s),n}};class c extends n.Emitter{constructor(e){super(),this.reviver=e}add(e){let t;if("string"==typeof e){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 u(t),0===t.attachments&&super.emitReserved("decoded",t)):super.emitReserved("decoded",t)}else{if(!(0,o.isBinary)(e)&&!e.base64)throw new Error("Unknown type: "+e);if(!this.reconstructor)throw new Error("got binary data when not reconstructing a packet");t=this.reconstructor.takeBinaryData(e),t&&(this.reconstructor=null,super.emitReserved("decoded",t))}}decodeString(e){let t=0;const s={type:Number(e.charAt(0))};if(void 0===a[s.type])throw new Error("unknown packet type "+s.type);if(s.type===a.BINARY_EVENT||s.type===a.BINARY_ACK){const n=t+1;for(;"-"!==e.charAt(++t)&&t!=e.length;);const r=e.substring(n,t);if(r!=Number(r)||"-"!==e.charAt(t))throw new Error("Illegal attachments");s.attachments=Number(r)}if("/"===e.charAt(t+1)){const n=t+1;for(;++t&&","!==e.charAt(t)&&t!==e.length;);s.nsp=e.substring(n,t)}else s.nsp="/";const n=e.charAt(t+1);if(""!==n&&Number(n)==n){const n=t+1;for(;++t;){const s=e.charAt(t);if(null==s||Number(s)!=s){--t;break}if(t===e.length)break}s.id=Number(e.substring(n,t+1))}if(e.charAt(++t)){const n=this.tryParse(e.substr(t));if(!c.isPayloadValid(s.type,n))throw new Error("invalid payload");s.data=n}return i("decoded %s as %j",e,s),s}tryParse(e){try{return JSON.parse(e,this.reviver)}catch(e){return!1}}static isPayloadValid(e,t){switch(e){case a.CONNECT:return"object"==typeof t;case a.DISCONNECT:return void 0===t;case a.CONNECT_ERROR:return"string"==typeof t||"object"==typeof t;case a.EVENT:case a.BINARY_EVENT:return Array.isArray(t)&&("string"==typeof t[0]||"number"==typeof t[0]);case a.ACK:case a.BINARY_ACK:return Array.isArray(t)}}destroy(){this.reconstructor&&(this.reconstructor.finishedReconstruction(),this.reconstructor=null)}}t.Decoder=c;class u{constructor(e){this.packet=e,this.buffers=[],this.reconPack=e}takeBinaryData(e){if(this.buffers.push(e),this.buffers.length===this.reconPack.attachments){const e=(0,r.reconstructPacket)(this.reconPack,this.buffers);return this.finishedReconstruction(),e}return null}finishedReconstruction(){this.reconPack=null,this.buffers=[]}}},665:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.hasBinary=t.isBinary=void 0;const s="function"==typeof ArrayBuffer,n=Object.prototype.toString,r="function"==typeof Blob||"undefined"!=typeof Blob&&"[object BlobConstructor]"===n.call(Blob),o="function"==typeof File||"undefined"!=typeof File&&"[object FileConstructor]"===n.call(File);function i(e){return s&&(e instanceof ArrayBuffer||(e=>"function"==typeof ArrayBuffer.isView?ArrayBuffer.isView(e):e.buffer instanceof ArrayBuffer)(e))||r&&e instanceof Blob||o&&e instanceof File}t.isBinary=i,t.hasBinary=function e(t,s){if(!t||"object"!=typeof t)return!1;if(Array.isArray(t)){for(let s=0,n=t.length;s{"use strict";function n(e){if(e)return function(e){for(var t in n.prototype)e[t]=n.prototype[t];return e}(e)}s.r(t),s.d(t,{Emitter:()=>n}),n.prototype.on=n.prototype.addEventListener=function(e,t){return this._callbacks=this._callbacks||{},(this._callbacks["$"+e]=this._callbacks["$"+e]||[]).push(t),this},n.prototype.once=function(e,t){function s(){this.off(e,s),t.apply(this,arguments)}return s.fn=t,this.on(e,s),this},n.prototype.off=n.prototype.removeListener=n.prototype.removeAllListeners=n.prototype.removeEventListener=function(e,t){if(this._callbacks=this._callbacks||{},0==arguments.length)return this._callbacks={},this;var s,n=this._callbacks["$"+e];if(!n)return this;if(1==arguments.length)return delete this._callbacks["$"+e],this;for(var r=0;r{for(var n in t)s.o(t,n)&&!s.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},s.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),s.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},(()=>{"use strict";const e=s(46);function t(e,t=document){return t.querySelector(e)}function n(e,t=document){return Array.from(t.querySelectorAll(e))}function r(){return localStorage.getItem("authToken").toString()}function o(){const e=i.gradientName(),s=t("body");let n;s.classList.value=e,s.classList.add(i.getTimePeriod()),n=i.get24Hour()>=5&&i.get24Hour()<9?"morning":i.get24Hour()>=9&&i.get24Hour()<17?"afternoon":i.get24Hour()>=17&&i.get24Hour()<20?"evening":"night",t("#time-of-day").innerHTML=` ${i.getHour()}${i.getAmPm()}`}const i=new(s(182).TimeManager),a=(0,e.io)({extraHeaders:{"x-authtoken":r()}});o(),setInterval(o,6e4),a.on("connect",(()=>{console.log(`Connected: ${a.id}`)})),a.on("authToken",(e=>{console.log(`recv auth token ${e}`),localStorage.setItem("authToken",e)})),a.on("chat",(function(e){t("#chat-messages").innerHTML+=e,t("#chat-messages").scrollTop=t("#chat-messages").scrollHeight})),a.on("ready",(function(){console.log("Server connection verified"),n("nav a")[0].click()})),n("nav a").forEach((e=>{e.addEventListener("click",(e=>{const s=e.target;n("a",s.closest("nav")).forEach((e=>{e.classList.remove("active")})),s.classList.add("active");const r=t(s.getAttribute("hx-target").toString());Array.from(r.parentElement.children).forEach((e=>{e.classList.remove("active")})),r.classList.add("active")}))})),t("body").addEventListener("click",(e=>{var s;const n=e.target;if(n.parentElement.classList.contains("filter")){Array.from(n.parentElement.children).forEach((e=>e.classList.remove("active"))),n.classList.add("active");const e=n.getAttribute("data-filter"),s=t(`.filter-result[data-filter="${e}"]`,n.closest(".filter-container"));s&&Array.from(s.parentElement.children).forEach((t=>{t.getAttribute("data-filter")===e?(t.classList.remove("hidden"),t.classList.add("active")):(t.classList.add("hidden"),t.classList.remove("active"))}))}"dialog"===n.getAttribute("formmethod")&&"cancel"===n.getAttribute("value")&&(null===(s=n.closest("dialog"))||void 0===s||s.close())}));const c=new MutationObserver(((e,s)=>{const r={modal:!1,alert:!1};e.forEach((e=>{switch(e.target.id){case"modal-wrapper":r.modal=!0;break;case"alerts":r.alert=!0}})),r.modal&&t("#modal-wrapper").children.length&&n("#modal-wrapper dialog").forEach((e=>{e.open||e.showModal()})),r.alert&&t("#alerts").children.length&&n("#alerts .alert").forEach((e=>{if(!e.getAttribute("data-dismiss-at")){const t=Date.now()+3e3;e.setAttribute("data-dismiss-at",t.toString()),setTimeout((()=>{e.remove()}),3e3)}}))}));c.observe(t("#modal-wrapper"),{childList:!0}),c.observe(t("#alerts"),{childList:!0}),document.body.addEventListener("htmx:configRequest",(function(e){e.detail.headers["x-authtoken"]=r()})),document.body.addEventListener("htmx:load",(function(e){n(".disabled[data-block]").forEach((e=>{setTimeout((()=>{e.removeAttribute("disabled")}),3e3)}))})),document.body.addEventListener("htmx:beforeSwap",(function(e){"chat-form"===e.target.id&&(t("#message").value="")}))})()})(); \ No newline at end of file +(()=>{var e={802:(e,t,s)=>{t.formatArgs=function(t){if(t[0]=(this.useColors?"%c":"")+this.namespace+(this.useColors?" %c":" ")+t[0]+(this.useColors?"%c ":" ")+"+"+e.exports.humanize(this.diff),!this.useColors)return;const s="color: "+this.color;t.splice(1,0,s,"color: inherit");let n=0,r=0;t[0].replace(/%[a-zA-Z%]/g,(e=>{"%%"!==e&&(n++,"%c"===e&&(r=n))})),t.splice(r,0,s)},t.save=function(e){try{e?t.storage.setItem("debug",e):t.storage.removeItem("debug")}catch(e){}},t.load=function(){let e;try{e=t.storage.getItem("debug")}catch(e){}return!e&&"undefined"!=typeof process&&"env"in process&&(e=process.env.DEBUG),e},t.useColors=function(){return!("undefined"==typeof window||!window.process||"renderer"!==window.process.type&&!window.process.__nwjs)||("undefined"==typeof navigator||!navigator.userAgent||!navigator.userAgent.toLowerCase().match(/(edge|trident)\/(\d+)/))&&("undefined"!=typeof document&&document.documentElement&&document.documentElement.style&&document.documentElement.style.WebkitAppearance||"undefined"!=typeof window&&window.console&&(window.console.firebug||window.console.exception&&window.console.table)||"undefined"!=typeof navigator&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/)&&parseInt(RegExp.$1,10)>=31||"undefined"!=typeof navigator&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/))},t.storage=function(){try{return localStorage}catch(e){}}(),t.destroy=(()=>{let e=!1;return()=>{e||(e=!0,console.warn("Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`."))}})(),t.colors=["#0000CC","#0000FF","#0033CC","#0033FF","#0066CC","#0066FF","#0099CC","#0099FF","#00CC00","#00CC33","#00CC66","#00CC99","#00CCCC","#00CCFF","#3300CC","#3300FF","#3333CC","#3333FF","#3366CC","#3366FF","#3399CC","#3399FF","#33CC00","#33CC33","#33CC66","#33CC99","#33CCCC","#33CCFF","#6600CC","#6600FF","#6633CC","#6633FF","#66CC00","#66CC33","#9900CC","#9900FF","#9933CC","#9933FF","#99CC00","#99CC33","#CC0000","#CC0033","#CC0066","#CC0099","#CC00CC","#CC00FF","#CC3300","#CC3333","#CC3366","#CC3399","#CC33CC","#CC33FF","#CC6600","#CC6633","#CC9900","#CC9933","#CCCC00","#CCCC33","#FF0000","#FF0033","#FF0066","#FF0099","#FF00CC","#FF00FF","#FF3300","#FF3333","#FF3366","#FF3399","#FF33CC","#FF33FF","#FF6600","#FF6633","#FF9900","#FF9933","#FFCC00","#FFCC33"],t.log=console.debug||console.log||(()=>{}),e.exports=s(804)(t);const{formatters:n}=e.exports;n.j=function(e){try{return JSON.stringify(e)}catch(e){return"[UnexpectedJSONParseError]: "+e.message}}},804:(e,t,s)=>{e.exports=function(e){function t(e){let s,r,o,i=null;function a(...e){if(!a.enabled)return;const n=a,r=Number(new Date),o=r-(s||r);n.diff=o,n.prev=s,n.curr=r,s=r,e[0]=t.coerce(e[0]),"string"!=typeof e[0]&&e.unshift("%O");let i=0;e[0]=e[0].replace(/%([a-zA-Z%])/g,((s,r)=>{if("%%"===s)return"%";i++;const o=t.formatters[r];if("function"==typeof o){const t=e[i];s=o.call(n,t),e.splice(i,1),i--}return s})),t.formatArgs.call(n,e),(n.log||t.log).apply(n,e)}return a.namespace=e,a.useColors=t.useColors(),a.color=t.selectColor(e),a.extend=n,a.destroy=t.destroy,Object.defineProperty(a,"enabled",{enumerable:!0,configurable:!1,get:()=>null!==i?i:(r!==t.namespaces&&(r=t.namespaces,o=t.enabled(e)),o),set:e=>{i=e}}),"function"==typeof t.init&&t.init(a),a}function n(e,s){const n=t(this.namespace+(void 0===s?":":s)+e);return n.log=this.log,n}function r(e){return e.toString().substring(2,e.toString().length-2).replace(/\.\*\?$/,"*")}return t.debug=t,t.default=t,t.coerce=function(e){return e instanceof Error?e.stack||e.message:e},t.disable=function(){const e=[...t.names.map(r),...t.skips.map(r).map((e=>"-"+e))].join(",");return t.enable(""),e},t.enable=function(e){let s;t.save(e),t.namespaces=e,t.names=[],t.skips=[];const n=("string"==typeof e?e:"").split(/[\s,]+/),r=n.length;for(s=0;s{t[s]=e[s]})),t.names=[],t.skips=[],t.formatters={},t.selectColor=function(e){let s=0;for(let t=0;t{var t=1e3,s=60*t,n=60*s,r=24*n;function o(e,t,s,n){var r=t>=1.5*s;return Math.round(e/s)+" "+n+(r?"s":"")}e.exports=function(e,i){i=i||{};var a,c,u=typeof e;if("string"===u&&e.length>0)return function(e){if(!((e=String(e)).length>100)){var o=/^(-?(?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(e);if(o){var i=parseFloat(o[1]);switch((o[2]||"ms").toLowerCase()){case"years":case"year":case"yrs":case"yr":case"y":return 315576e5*i;case"weeks":case"week":case"w":return 6048e5*i;case"days":case"day":case"d":return i*r;case"hours":case"hour":case"hrs":case"hr":case"h":return i*n;case"minutes":case"minute":case"mins":case"min":case"m":return i*s;case"seconds":case"second":case"secs":case"sec":case"s":return i*t;case"milliseconds":case"millisecond":case"msecs":case"msec":case"ms":return i;default:return}}}}(e);if("number"===u&&isFinite(e))return i.long?(a=e,(c=Math.abs(a))>=r?o(a,c,r,"day"):c>=n?o(a,c,n,"hour"):c>=s?o(a,c,s,"minute"):c>=t?o(a,c,t,"second"):a+" ms"):function(e){var o=Math.abs(e);return o>=r?Math.round(e/r)+"d":o>=n?Math.round(e/n)+"h":o>=s?Math.round(e/s)+"m":o>=t?Math.round(e/t)+"s":e+"ms"}(e);throw new Error("val is not a non-empty string or a valid number. val="+JSON.stringify(e))}},669:(e,t,s)=>{t.formatArgs=function(t){if(t[0]=(this.useColors?"%c":"")+this.namespace+(this.useColors?" %c":" ")+t[0]+(this.useColors?"%c ":" ")+"+"+e.exports.humanize(this.diff),!this.useColors)return;const s="color: "+this.color;t.splice(1,0,s,"color: inherit");let n=0,r=0;t[0].replace(/%[a-zA-Z%]/g,(e=>{"%%"!==e&&(n++,"%c"===e&&(r=n))})),t.splice(r,0,s)},t.save=function(e){try{e?t.storage.setItem("debug",e):t.storage.removeItem("debug")}catch(e){}},t.load=function(){let e;try{e=t.storage.getItem("debug")}catch(e){}return!e&&"undefined"!=typeof process&&"env"in process&&(e=process.env.DEBUG),e},t.useColors=function(){return!("undefined"==typeof window||!window.process||"renderer"!==window.process.type&&!window.process.__nwjs)||("undefined"==typeof navigator||!navigator.userAgent||!navigator.userAgent.toLowerCase().match(/(edge|trident)\/(\d+)/))&&("undefined"!=typeof document&&document.documentElement&&document.documentElement.style&&document.documentElement.style.WebkitAppearance||"undefined"!=typeof window&&window.console&&(window.console.firebug||window.console.exception&&window.console.table)||"undefined"!=typeof navigator&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/)&&parseInt(RegExp.$1,10)>=31||"undefined"!=typeof navigator&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/))},t.storage=function(){try{return localStorage}catch(e){}}(),t.destroy=(()=>{let e=!1;return()=>{e||(e=!0,console.warn("Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`."))}})(),t.colors=["#0000CC","#0000FF","#0033CC","#0033FF","#0066CC","#0066FF","#0099CC","#0099FF","#00CC00","#00CC33","#00CC66","#00CC99","#00CCCC","#00CCFF","#3300CC","#3300FF","#3333CC","#3333FF","#3366CC","#3366FF","#3399CC","#3399FF","#33CC00","#33CC33","#33CC66","#33CC99","#33CCCC","#33CCFF","#6600CC","#6600FF","#6633CC","#6633FF","#66CC00","#66CC33","#9900CC","#9900FF","#9933CC","#9933FF","#99CC00","#99CC33","#CC0000","#CC0033","#CC0066","#CC0099","#CC00CC","#CC00FF","#CC3300","#CC3333","#CC3366","#CC3399","#CC33CC","#CC33FF","#CC6600","#CC6633","#CC9900","#CC9933","#CCCC00","#CCCC33","#FF0000","#FF0033","#FF0066","#FF0099","#FF00CC","#FF00FF","#FF3300","#FF3333","#FF3366","#FF3399","#FF33CC","#FF33FF","#FF6600","#FF6633","#FF9900","#FF9933","#FFCC00","#FFCC33"],t.log=console.debug||console.log||(()=>{}),e.exports=s(231)(t);const{formatters:n}=e.exports;n.j=function(e){try{return JSON.stringify(e)}catch(e){return"[UnexpectedJSONParseError]: "+e.message}}},231:(e,t,s)=>{e.exports=function(e){function t(e){let s,r,o,i=null;function a(...e){if(!a.enabled)return;const n=a,r=Number(new Date),o=r-(s||r);n.diff=o,n.prev=s,n.curr=r,s=r,e[0]=t.coerce(e[0]),"string"!=typeof e[0]&&e.unshift("%O");let i=0;e[0]=e[0].replace(/%([a-zA-Z%])/g,((s,r)=>{if("%%"===s)return"%";i++;const o=t.formatters[r];if("function"==typeof o){const t=e[i];s=o.call(n,t),e.splice(i,1),i--}return s})),t.formatArgs.call(n,e),(n.log||t.log).apply(n,e)}return a.namespace=e,a.useColors=t.useColors(),a.color=t.selectColor(e),a.extend=n,a.destroy=t.destroy,Object.defineProperty(a,"enabled",{enumerable:!0,configurable:!1,get:()=>null!==i?i:(r!==t.namespaces&&(r=t.namespaces,o=t.enabled(e)),o),set:e=>{i=e}}),"function"==typeof t.init&&t.init(a),a}function n(e,s){const n=t(this.namespace+(void 0===s?":":s)+e);return n.log=this.log,n}function r(e){return e.toString().substring(2,e.toString().length-2).replace(/\.\*\?$/,"*")}return t.debug=t,t.default=t,t.coerce=function(e){return e instanceof Error?e.stack||e.message:e},t.disable=function(){const e=[...t.names.map(r),...t.skips.map(r).map((e=>"-"+e))].join(",");return t.enable(""),e},t.enable=function(e){let s;t.save(e),t.namespaces=e,t.names=[],t.skips=[];const n=("string"==typeof e?e:"").split(/[\s,]+/),r=n.length;for(s=0;s{t[s]=e[s]})),t.names=[],t.skips=[],t.formatters={},t.selectColor=function(e){let s=0;for(let t=0;t{var t=1e3,s=60*t,n=60*s,r=24*n;function o(e,t,s,n){var r=t>=1.5*s;return Math.round(e/s)+" "+n+(r?"s":"")}e.exports=function(e,i){i=i||{};var a,c,u=typeof e;if("string"===u&&e.length>0)return function(e){if(!((e=String(e)).length>100)){var o=/^(-?(?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(e);if(o){var i=parseFloat(o[1]);switch((o[2]||"ms").toLowerCase()){case"years":case"year":case"yrs":case"yr":case"y":return 315576e5*i;case"weeks":case"week":case"w":return 6048e5*i;case"days":case"day":case"d":return i*r;case"hours":case"hour":case"hrs":case"hr":case"h":return i*n;case"minutes":case"minute":case"mins":case"min":case"m":return i*s;case"seconds":case"second":case"secs":case"sec":case"s":return i*t;case"milliseconds":case"millisecond":case"msecs":case"msec":case"ms":return i;default:return}}}}(e);if("number"===u&&isFinite(e))return i.long?(a=e,(c=Math.abs(a))>=r?o(a,c,r,"day"):c>=n?o(a,c,n,"hour"):c>=s?o(a,c,s,"minute"):c>=t?o(a,c,t,"second"):a+" ms"):function(e){var o=Math.abs(e);return o>=r?Math.round(e/r)+"d":o>=n?Math.round(e/n)+"h":o>=s?Math.round(e/s)+"m":o>=t?Math.round(e/t)+"s":e+"ms"}(e);throw new Error("val is not a non-empty string or a valid number. val="+JSON.stringify(e))}},618:(e,t,s)=>{t.formatArgs=function(t){if(t[0]=(this.useColors?"%c":"")+this.namespace+(this.useColors?" %c":" ")+t[0]+(this.useColors?"%c ":" ")+"+"+e.exports.humanize(this.diff),!this.useColors)return;const s="color: "+this.color;t.splice(1,0,s,"color: inherit");let n=0,r=0;t[0].replace(/%[a-zA-Z%]/g,(e=>{"%%"!==e&&(n++,"%c"===e&&(r=n))})),t.splice(r,0,s)},t.save=function(e){try{e?t.storage.setItem("debug",e):t.storage.removeItem("debug")}catch(e){}},t.load=function(){let e;try{e=t.storage.getItem("debug")}catch(e){}return!e&&"undefined"!=typeof process&&"env"in process&&(e=process.env.DEBUG),e},t.useColors=function(){return!("undefined"==typeof window||!window.process||"renderer"!==window.process.type&&!window.process.__nwjs)||("undefined"==typeof navigator||!navigator.userAgent||!navigator.userAgent.toLowerCase().match(/(edge|trident)\/(\d+)/))&&("undefined"!=typeof document&&document.documentElement&&document.documentElement.style&&document.documentElement.style.WebkitAppearance||"undefined"!=typeof window&&window.console&&(window.console.firebug||window.console.exception&&window.console.table)||"undefined"!=typeof navigator&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/)&&parseInt(RegExp.$1,10)>=31||"undefined"!=typeof navigator&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/))},t.storage=function(){try{return localStorage}catch(e){}}(),t.destroy=(()=>{let e=!1;return()=>{e||(e=!0,console.warn("Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`."))}})(),t.colors=["#0000CC","#0000FF","#0033CC","#0033FF","#0066CC","#0066FF","#0099CC","#0099FF","#00CC00","#00CC33","#00CC66","#00CC99","#00CCCC","#00CCFF","#3300CC","#3300FF","#3333CC","#3333FF","#3366CC","#3366FF","#3399CC","#3399FF","#33CC00","#33CC33","#33CC66","#33CC99","#33CCCC","#33CCFF","#6600CC","#6600FF","#6633CC","#6633FF","#66CC00","#66CC33","#9900CC","#9900FF","#9933CC","#9933FF","#99CC00","#99CC33","#CC0000","#CC0033","#CC0066","#CC0099","#CC00CC","#CC00FF","#CC3300","#CC3333","#CC3366","#CC3399","#CC33CC","#CC33FF","#CC6600","#CC6633","#CC9900","#CC9933","#CCCC00","#CCCC33","#FF0000","#FF0033","#FF0066","#FF0099","#FF00CC","#FF00FF","#FF3300","#FF3333","#FF3366","#FF3399","#FF33CC","#FF33FF","#FF6600","#FF6633","#FF9900","#FF9933","#FFCC00","#FFCC33"],t.log=console.debug||console.log||(()=>{}),e.exports=s(224)(t);const{formatters:n}=e.exports;n.j=function(e){try{return JSON.stringify(e)}catch(e){return"[UnexpectedJSONParseError]: "+e.message}}},224:(e,t,s)=>{e.exports=function(e){function t(e){let s,r,o,i=null;function a(...e){if(!a.enabled)return;const n=a,r=Number(new Date),o=r-(s||r);n.diff=o,n.prev=s,n.curr=r,s=r,e[0]=t.coerce(e[0]),"string"!=typeof e[0]&&e.unshift("%O");let i=0;e[0]=e[0].replace(/%([a-zA-Z%])/g,((s,r)=>{if("%%"===s)return"%";i++;const o=t.formatters[r];if("function"==typeof o){const t=e[i];s=o.call(n,t),e.splice(i,1),i--}return s})),t.formatArgs.call(n,e),(n.log||t.log).apply(n,e)}return a.namespace=e,a.useColors=t.useColors(),a.color=t.selectColor(e),a.extend=n,a.destroy=t.destroy,Object.defineProperty(a,"enabled",{enumerable:!0,configurable:!1,get:()=>null!==i?i:(r!==t.namespaces&&(r=t.namespaces,o=t.enabled(e)),o),set:e=>{i=e}}),"function"==typeof t.init&&t.init(a),a}function n(e,s){const n=t(this.namespace+(void 0===s?":":s)+e);return n.log=this.log,n}function r(e){return e.toString().substring(2,e.toString().length-2).replace(/\.\*\?$/,"*")}return t.debug=t,t.default=t,t.coerce=function(e){return e instanceof Error?e.stack||e.message:e},t.disable=function(){const e=[...t.names.map(r),...t.skips.map(r).map((e=>"-"+e))].join(",");return t.enable(""),e},t.enable=function(e){let s;t.save(e),t.namespaces=e,t.names=[],t.skips=[];const n=("string"==typeof e?e:"").split(/[\s,]+/),r=n.length;for(s=0;s{t[s]=e[s]})),t.names=[],t.skips=[],t.formatters={},t.selectColor=function(e){let s=0;for(let t=0;t{var t=1e3,s=60*t,n=60*s,r=24*n;function o(e,t,s,n){var r=t>=1.5*s;return Math.round(e/s)+" "+n+(r?"s":"")}e.exports=function(e,i){i=i||{};var a,c,u=typeof e;if("string"===u&&e.length>0)return function(e){if(!((e=String(e)).length>100)){var o=/^(-?(?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(e);if(o){var i=parseFloat(o[1]);switch((o[2]||"ms").toLowerCase()){case"years":case"year":case"yrs":case"yr":case"y":return 315576e5*i;case"weeks":case"week":case"w":return 6048e5*i;case"days":case"day":case"d":return i*r;case"hours":case"hour":case"hrs":case"hr":case"h":return i*n;case"minutes":case"minute":case"mins":case"min":case"m":return i*s;case"seconds":case"second":case"secs":case"sec":case"s":return i*t;case"milliseconds":case"millisecond":case"msecs":case"msec":case"ms":return i;default:return}}}}(e);if("number"===u&&isFinite(e))return i.long?(a=e,(c=Math.abs(a))>=r?o(a,c,r,"day"):c>=n?o(a,c,n,"hour"):c>=s?o(a,c,s,"minute"):c>=t?o(a,c,t,"second"):a+" ms"):function(e){var o=Math.abs(e);return o>=r?Math.round(e/r)+"d":o>=n?Math.round(e/n)+"h":o>=s?Math.round(e/s)+"m":o>=t?Math.round(e/t)+"s":e+"ms"}(e);throw new Error("val is not a non-empty string or a valid number. val="+JSON.stringify(e))}},182:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.TimeManager=void 0,t.TimeManager=class{constructor(e=120){this.dayLength=e,this.scaleFactor=30,this.dayLengthAsMS=60*e*1e3}dayScaleFactor(){return this.dayLength/30}getTimePeriod(){return this.isMorning()?"morning":this.isAfternoon()?"afternoon":this.isEvening()?"evening":this.isNight()?"night":void 0}getAmPm(){return this.get24Hour()<12?"am":"pm"}get24Hour(){const e=new Date,t=(e.getMinutes()+e.getHours()%2*(this.dayLength/2))/this.dayLength;return Math.floor(24*t)}getHour(){const e=(new Date).getMinutes()/this.dayLength,t=Math.floor(24*e);return t>12?t-12:t}gradientName(){const e=Math.floor(this.get24Hour()/24*this.scaleFactor);return`sky-gradient-${e<10?"0":""}${e}`}isNight(){const e=this.get24Hour();return e>=0&&e<5||e>=21&&e<24}isMorning(){const e=this.get24Hour();return e>=5&&e<12}isAfternoon(){const e=this.get24Hour();return e>=12&&e<18}isEvening(){const e=this.get24Hour();return e>=18&&e<21}}},419:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.hasCORS=void 0;let s=!1;try{s="undefined"!=typeof XMLHttpRequest&&"withCredentials"in new XMLHttpRequest}catch(e){}t.hasCORS=s},754:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.decode=t.encode=void 0,t.encode=function(e){let t="";for(let s in e)e.hasOwnProperty(s)&&(t.length&&(t+="&"),t+=encodeURIComponent(s)+"="+encodeURIComponent(e[s]));return t},t.decode=function(e){let t={},s=e.split("&");for(let e=0,n=s.length;e{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.parse=void 0;const s=/^(?:(?![^:@\/?#]+:[^:@\/]*@)(http|https|ws|wss):\/\/)?((?:(([^:@\/?#]*)(?::([^:@\/?#]*))?)?@)?((?:[a-f0-9]{0,4}:){2,7}[a-f0-9]{0,4}|[^:\/?#]*)(?::(\d*))?)(((\/(?:[^?#](?![^?#\/]*\.[^?#\/.]+(?:[?#]|$)))*\/?)?([^?#\/]*))(?:\?([^#]*))?(?:#(.*))?)/,n=["source","protocol","authority","userInfo","user","password","host","port","relative","path","directory","file","query","anchor"];t.parse=function(e){const t=e,r=e.indexOf("["),o=e.indexOf("]");-1!=r&&-1!=o&&(e=e.substring(0,r)+e.substring(r,o).replace(/:/g,";")+e.substring(o,e.length));let i=s.exec(e||""),a={},c=14;for(;c--;)a[n[c]]=i[c]||"";return-1!=r&&-1!=o&&(a.source=t,a.host=a.host.substring(1,a.host.length-1).replace(/;/g,":"),a.authority=a.authority.replace("[","").replace("]","").replace(/;/g,":"),a.ipv6uri=!0),a.pathNames=function(e,t){const s=t.replace(/\/{2,9}/g,"/").split("/");return"/"!=t.slice(0,1)&&0!==t.length||s.splice(0,1),"/"==t.slice(-1)&&s.splice(s.length-1,1),s}(0,a.path),a.queryKey=function(e,t){const s={};return t.replace(/(?:^|&)([^&=]*)=?([^&]*)/g,(function(e,t,n){t&&(s[t]=n)})),s}(0,a.query),a}},726:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.yeast=t.decode=t.encode=void 0;const s="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz-_".split(""),n={};let r,o=0,i=0;function a(e){let t="";do{t=s[e%64]+t,e=Math.floor(e/64)}while(e>0);return t}for(t.encode=a,t.decode=function(e){let t=0;for(i=0;i{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.globalThisShim=void 0,t.globalThisShim="undefined"!=typeof self?self:"undefined"!=typeof window?window:Function("return this")()},679:(e,t,s)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.nextTick=t.parse=t.installTimerFunctions=t.transports=t.Transport=t.protocol=t.Socket=void 0;const n=s(481);Object.defineProperty(t,"Socket",{enumerable:!0,get:function(){return n.Socket}}),t.protocol=n.Socket.protocol;var r=s(870);Object.defineProperty(t,"Transport",{enumerable:!0,get:function(){return r.Transport}});var o=s(385);Object.defineProperty(t,"transports",{enumerable:!0,get:function(){return o.transports}});var i=s(622);Object.defineProperty(t,"installTimerFunctions",{enumerable:!0,get:function(){return i.installTimerFunctions}});var a=s(222);Object.defineProperty(t,"parse",{enumerable:!0,get:function(){return a.parse}});var c=s(552);Object.defineProperty(t,"nextTick",{enumerable:!0,get:function(){return c.nextTick}})},481:function(e,t,s){"use strict";var n=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.Socket=void 0;const r=s(385),o=s(622),i=s(754),a=s(222),c=n(s(802)),u=s(260),h=s(373),l=(0,c.default)("engine.io-client:socket");class d extends u.Emitter{constructor(e,t={}){super(),this.writeBuffer=[],e&&"object"==typeof e&&(t=e,e=null),e?(e=(0,a.parse)(e),t.hostname=e.host,t.secure="https"===e.protocol||"wss"===e.protocol,t.port=e.port,e.query&&(t.query=e.query)):t.host&&(t.hostname=(0,a.parse)(t.host).host),(0,o.installTimerFunctions)(this,t),this.secure=null!=t.secure?t.secure:"undefined"!=typeof location&&"https:"===location.protocol,t.hostname&&!t.port&&(t.port=this.secure?"443":"80"),this.hostname=t.hostname||("undefined"!=typeof location?location.hostname:"localhost"),this.port=t.port||("undefined"!=typeof location&&location.port?location.port:this.secure?"443":"80"),this.transports=t.transports||["polling","websocket"],this.writeBuffer=[],this.prevBufferLen=0,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:!0},t),this.opts.path=this.opts.path.replace(/\/$/,"")+(this.opts.addTrailingSlash?"/":""),"string"==typeof this.opts.query&&(this.opts.query=(0,i.decode)(this.opts.query)),this.id=null,this.upgrades=null,this.pingInterval=null,this.pingTimeout=null,this.pingTimeoutTimer=null,"function"==typeof addEventListener&&(this.opts.closeOnBeforeunload&&(this.beforeunloadEventListener=()=>{this.transport&&(this.transport.removeAllListeners(),this.transport.close())},addEventListener("beforeunload",this.beforeunloadEventListener,!1)),"localhost"!==this.hostname&&(this.offlineEventListener=()=>{this.onClose("transport close",{description:"network connection lost"})},addEventListener("offline",this.offlineEventListener,!1))),this.open()}createTransport(e){l('creating transport "%s"',e);const t=Object.assign({},this.opts.query);t.EIO=h.protocol,t.transport=e,this.id&&(t.sid=this.id);const s=Object.assign({},this.opts.transportOptions[e],this.opts,{query:t,socket:this,hostname:this.hostname,secure:this.secure,port:this.port});return l("options: %j",s),new r.transports[e](s)}open(){let e;if(this.opts.rememberUpgrade&&d.priorWebsocketSuccess&&-1!==this.transports.indexOf("websocket"))e="websocket";else{if(0===this.transports.length)return void this.setTimeoutFn((()=>{this.emitReserved("error","No transports available")}),0);e=this.transports[0]}this.readyState="opening";try{e=this.createTransport(e)}catch(e){return l("error while creating transport: %s",e),this.transports.shift(),void this.open()}e.open(),this.setTransport(e)}setTransport(e){l("setting transport %s",e.name),this.transport&&(l("clearing existing transport %s",this.transport.name),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",(e=>this.onClose("transport close",e)))}probe(e){l('probing transport "%s"',e);let t=this.createTransport(e),s=!1;d.priorWebsocketSuccess=!1;const n=()=>{s||(l('probe transport "%s" opened',e),t.send([{type:"ping",data:"probe"}]),t.once("packet",(n=>{if(!s)if("pong"===n.type&&"probe"===n.data){if(l('probe transport "%s" pong',e),this.upgrading=!0,this.emitReserved("upgrading",t),!t)return;d.priorWebsocketSuccess="websocket"===t.name,l('pausing current transport "%s"',this.transport.name),this.transport.pause((()=>{s||"closed"!==this.readyState&&(l("changing transport and sending upgrade packet"),u(),this.setTransport(t),t.send([{type:"upgrade"}]),this.emitReserved("upgrade",t),t=null,this.upgrading=!1,this.flush())}))}else{l('probe transport "%s" failed',e);const s=new Error("probe error");s.transport=t.name,this.emitReserved("upgradeError",s)}})))};function r(){s||(s=!0,u(),t.close(),t=null)}const o=s=>{const n=new Error("probe error: "+s);n.transport=t.name,r(),l('probe transport "%s" failed because of error: %s',e,s),this.emitReserved("upgradeError",n)};function i(){o("transport closed")}function a(){o("socket closed")}function c(e){t&&e.name!==t.name&&(l('"%s" works - aborting "%s"',e.name,t.name),r())}const u=()=>{t.removeListener("open",n),t.removeListener("error",o),t.removeListener("close",i),this.off("close",a),this.off("upgrading",c)};t.once("open",n),t.once("error",o),t.once("close",i),this.once("close",a),this.once("upgrading",c),t.open()}onOpen(){if(l("socket open"),this.readyState="open",d.priorWebsocketSuccess="websocket"===this.transport.name,this.emitReserved("open"),this.flush(),"open"===this.readyState&&this.opts.upgrade){l("starting upgrade probes");let e=0;const t=this.upgrades.length;for(;e{this.onClose("ping timeout")}),this.pingInterval+this.pingTimeout),this.opts.autoUnref&&this.pingTimeoutTimer.unref()}onDrain(){this.writeBuffer.splice(0,this.prevBufferLen),this.prevBufferLen=0,0===this.writeBuffer.length?this.emitReserved("drain"):this.flush()}flush(){if("closed"!==this.readyState&&this.transport.writable&&!this.upgrading&&this.writeBuffer.length){const e=this.getWritablePackets();l("flushing %d packets in socket",e.length),this.transport.send(e),this.prevBufferLen=e.length,this.emitReserved("flush")}}getWritablePackets(){if(!(this.maxPayload&&"polling"===this.transport.name&&this.writeBuffer.length>1))return this.writeBuffer;let e=1;for(let t=0;t0&&e>this.maxPayload)return l("only send %d out of %d packets",t,this.writeBuffer.length),this.writeBuffer.slice(0,t);e+=2}return l("payload size is %d (max: %d)",e,this.maxPayload),this.writeBuffer}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,n){if("function"==typeof t&&(n=t,t=void 0),"function"==typeof s&&(n=s,s=null),"closing"===this.readyState||"closed"===this.readyState)return;(s=s||{}).compress=!1!==s.compress;const r={type:e,data:t,options:s};this.emitReserved("packetCreate",r),this.writeBuffer.push(r),n&&this.once("flush",n),this.flush()}close(){const e=()=>{this.onClose("forced close"),l("socket closing - telling transport to close"),this.transport.close()},t=()=>{this.off("upgrade",t),this.off("upgradeError",t),e()},s=()=>{this.once("upgrade",t),this.once("upgradeError",t)};return"opening"!==this.readyState&&"open"!==this.readyState||(this.readyState="closing",this.writeBuffer.length?this.once("drain",(()=>{this.upgrading?s():e()})):this.upgrading?s():e()),this}onError(e){l("socket error %j",e),d.priorWebsocketSuccess=!1,this.emitReserved("error",e),this.onClose("transport error",e)}onClose(e,t){"opening"!==this.readyState&&"open"!==this.readyState&&"closing"!==this.readyState||(l('socket close with reason: "%s"',e),this.clearTimeoutFn(this.pingTimeoutTimer),this.transport.removeAllListeners("close"),this.transport.close(),this.transport.removeAllListeners(),"function"==typeof removeEventListener&&(removeEventListener("beforeunload",this.beforeunloadEventListener,!1),removeEventListener("offline",this.offlineEventListener,!1)),this.readyState="closed",this.id=null,this.emitReserved("close",e,t),this.writeBuffer=[],this.prevBufferLen=0)}filterUpgrades(e){const t=[];let s=0;const n=e.length;for(;s{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.transports=void 0;const n=s(484),r=s(308);t.transports={websocket:r.WS,polling:n.Polling}},484:function(e,t,s){"use strict";var n=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.Request=t.Polling=void 0;const r=s(870),o=n(s(802)),i=s(726),a=s(754),c=s(373),u=s(666),h=s(260),l=s(622),d=s(242),p=(0,o.default)("engine.io-client:polling");function f(){}const g=null!=new u.XHR({xdomain:!1}).responseType;class m extends r.Transport{constructor(e){if(super(e),this.polling=!1,"undefined"!=typeof location){const t="https:"===location.protocol;let s=location.port;s||(s=t?"443":"80"),this.xd="undefined"!=typeof location&&e.hostname!==location.hostname||s!==e.port,this.xs=e.secure!==t}const t=e&&e.forceBase64;this.supportsBinary=g&&!t}get name(){return"polling"}doOpen(){this.poll()}pause(e){this.readyState="pausing";const t=()=>{p("paused"),this.readyState="paused",e()};if(this.polling||!this.writable){let e=0;this.polling&&(p("we are currently polling - waiting to pause"),e++,this.once("pollComplete",(function(){p("pre-pause polling complete"),--e||t()}))),this.writable||(p("we are currently writing - waiting to pause"),e++,this.once("drain",(function(){p("pre-pause writing complete"),--e||t()})))}else t()}poll(){p("polling"),this.polling=!0,this.doPoll(),this.emitReserved("poll")}onData(e){p("polling got data %s",e),(0,c.decodePayload)(e,this.socket.binaryType).forEach((e=>{if("opening"===this.readyState&&"open"===e.type&&this.onOpen(),"close"===e.type)return this.onClose({description:"transport closed by the server"}),!1;this.onPacket(e)})),"closed"!==this.readyState&&(this.polling=!1,this.emitReserved("pollComplete"),"open"===this.readyState?this.poll():p('ignoring poll - transport state "%s"',this.readyState))}doClose(){const e=()=>{p("writing close packet"),this.write([{type:"close"}])};"open"===this.readyState?(p("transport open - closing"),e()):(p("transport not open - deferring close"),this.once("open",e))}write(e){this.writable=!1,(0,c.encodePayload)(e,(e=>{this.doWrite(e,(()=>{this.writable=!0,this.emitReserved("drain")}))}))}uri(){let e=this.query||{};const t=this.opts.secure?"https":"http";let s="";!1!==this.opts.timestampRequests&&(e[this.opts.timestampParam]=(0,i.yeast)()),this.supportsBinary||e.sid||(e.b64=1),this.opts.port&&("https"===t&&443!==Number(this.opts.port)||"http"===t&&80!==Number(this.opts.port))&&(s=":"+this.opts.port);const n=(0,a.encode)(e);return t+"://"+(-1!==this.opts.hostname.indexOf(":")?"["+this.opts.hostname+"]":this.opts.hostname)+s+this.opts.path+(n.length?"?"+n:"")}request(e={}){return Object.assign(e,{xd:this.xd,xs:this.xs},this.opts),new y(this.uri(),e)}doWrite(e,t){const s=this.request({method:"POST",data:e});s.on("success",t),s.on("error",((e,t)=>{this.onError("xhr post error",e,t)}))}doPoll(){p("xhr poll");const e=this.request();e.on("data",this.onData.bind(this)),e.on("error",((e,t)=>{this.onError("xhr poll error",e,t)})),this.pollXhr=e}}t.Polling=m;class y extends h.Emitter{constructor(e,t){super(),(0,l.installTimerFunctions)(this,t),this.opts=t,this.method=t.method||"GET",this.uri=e,this.async=!1!==t.async,this.data=void 0!==t.data?t.data:null,this.create()}create(){const e=(0,l.pick)(this.opts,"agent","pfx","key","passphrase","cert","ca","ciphers","rejectUnauthorized","autoUnref");e.xdomain=!!this.opts.xd,e.xscheme=!!this.opts.xs;const t=this.xhr=new u.XHR(e);try{p("xhr open %s: %s",this.method,this.uri),t.open(this.method,this.uri,this.async);try{if(this.opts.extraHeaders){t.setDisableHeaderCheck&&t.setDisableHeaderCheck(!0);for(let e in this.opts.extraHeaders)this.opts.extraHeaders.hasOwnProperty(e)&&t.setRequestHeader(e,this.opts.extraHeaders[e])}}catch(e){}if("POST"===this.method)try{t.setRequestHeader("Content-type","text/plain;charset=UTF-8")}catch(e){}try{t.setRequestHeader("Accept","*/*")}catch(e){}"withCredentials"in t&&(t.withCredentials=this.opts.withCredentials),this.opts.requestTimeout&&(t.timeout=this.opts.requestTimeout),t.onreadystatechange=()=>{4===t.readyState&&(200===t.status||1223===t.status?this.onLoad():this.setTimeoutFn((()=>{this.onError("number"==typeof t.status?t.status:0)}),0))},p("xhr data %s",this.data),t.send(this.data)}catch(e){return void this.setTimeoutFn((()=>{this.onError(e)}),0)}"undefined"!=typeof document&&(this.index=y.requestsCount++,y.requests[this.index]=this)}onError(e){this.emitReserved("error",e,this.xhr),this.cleanup(!0)}cleanup(e){if(void 0!==this.xhr&&null!==this.xhr){if(this.xhr.onreadystatechange=f,e)try{this.xhr.abort()}catch(e){}"undefined"!=typeof document&&delete y.requests[this.index],this.xhr=null}}onLoad(){const e=this.xhr.responseText;null!==e&&(this.emitReserved("data",e),this.emitReserved("success"),this.cleanup())}abort(){this.cleanup()}}if(t.Request=y,y.requestsCount=0,y.requests={},"undefined"!=typeof document)if("function"==typeof attachEvent)attachEvent("onunload",C);else if("function"==typeof addEventListener){const e="onpagehide"in d.globalThisShim?"pagehide":"unload";addEventListener(e,C,!1)}function C(){for(let e in y.requests)y.requests.hasOwnProperty(e)&&y.requests[e].abort()}},552:(e,t,s)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.defaultBinaryType=t.usingBrowserWebSocket=t.WebSocket=t.nextTick=void 0;const n=s(242);t.nextTick="function"==typeof Promise&&"function"==typeof Promise.resolve?e=>Promise.resolve().then(e):(e,t)=>t(e,0),t.WebSocket=n.globalThisShim.WebSocket||n.globalThisShim.MozWebSocket,t.usingBrowserWebSocket=!0,t.defaultBinaryType="arraybuffer"},308:function(e,t,s){"use strict";var n=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.WS=void 0;const r=s(870),o=s(754),i=s(726),a=s(622),c=s(552),u=n(s(802)),h=s(373),l=(0,u.default)("engine.io-client:websocket"),d="undefined"!=typeof navigator&&"string"==typeof navigator.product&&"reactnative"===navigator.product.toLowerCase();class p extends r.Transport{constructor(e){super(e),this.supportsBinary=!e.forceBase64}get name(){return"websocket"}doOpen(){if(!this.check())return;const e=this.uri(),t=this.opts.protocols,s=d?{}:(0,a.pick)(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=c.usingBrowserWebSocket&&!d?t?new c.WebSocket(e,t):new c.WebSocket(e):new c.WebSocket(e,t,s)}catch(e){return this.emitReserved("error",e)}this.ws.binaryType=this.socket.binaryType||c.defaultBinaryType,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{const t={};!c.usingBrowserWebSocket&&(s.options&&(t.compress=s.options.compress),this.opts.perMessageDeflate)&&("string"==typeof e?Buffer.byteLength(e):e.length){this.writable=!0,this.emitReserved("drain")}),this.setTimeoutFn)}))}}doClose(){void 0!==this.ws&&(this.ws.close(),this.ws=null)}uri(){let e=this.query||{};const t=this.opts.secure?"wss":"ws";let s="";this.opts.port&&("wss"===t&&443!==Number(this.opts.port)||"ws"===t&&80!==Number(this.opts.port))&&(s=":"+this.opts.port),this.opts.timestampRequests&&(e[this.opts.timestampParam]=(0,i.yeast)()),this.supportsBinary||(e.b64=1);const n=(0,o.encode)(e);return t+"://"+(-1!==this.opts.hostname.indexOf(":")?"["+this.opts.hostname+"]":this.opts.hostname)+s+this.opts.path+(n.length?"?"+n:"")}check(){return!!c.WebSocket}}t.WS=p},666:(e,t,s)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.XHR=void 0;const n=s(419),r=s(242);t.XHR=function(e){const t=e.xdomain;try{if("undefined"!=typeof XMLHttpRequest&&(!t||n.hasCORS))return new XMLHttpRequest}catch(e){}if(!t)try{return new(r.globalThisShim[["Active"].concat("Object").join("X")])("Microsoft.XMLHTTP")}catch(e){}}},622:(e,t,s)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.byteLength=t.installTimerFunctions=t.pick=void 0;const n=s(242);t.pick=function(e,...t){return t.reduce(((t,s)=>(e.hasOwnProperty(s)&&(t[s]=e[s]),t)),{})};const r=n.globalThisShim.setTimeout,o=n.globalThisShim.clearTimeout;t.installTimerFunctions=function(e,t){t.useNativeTimers?(e.setTimeoutFn=r.bind(n.globalThisShim),e.clearTimeoutFn=o.bind(n.globalThisShim)):(e.setTimeoutFn=n.globalThisShim.setTimeout.bind(n.globalThisShim),e.clearTimeoutFn=n.globalThisShim.clearTimeout.bind(n.globalThisShim))},t.byteLength=function(e){return"string"==typeof e?function(e){let t=0,s=0;for(let n=0,r=e.length;n=57344?s+=3:(n++,s+=4);return s}(e):Math.ceil(1.33*(e.byteLength||e.size))}},87:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ERROR_PACKET=t.PACKET_TYPES_REVERSE=t.PACKET_TYPES=void 0;const s=Object.create(null);t.PACKET_TYPES=s,s.open="0",s.close="1",s.ping="2",s.pong="3",s.message="4",s.upgrade="5",s.noop="6";const n=Object.create(null);t.PACKET_TYPES_REVERSE=n,Object.keys(s).forEach((e=>{n[s[e]]=e})),t.ERROR_PACKET={type:"error",data:"parser error"}},469:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.decode=t.encode=void 0;const s="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",n="undefined"==typeof Uint8Array?[]:new Uint8Array(256);for(let e=0;e<64;e++)n[s.charCodeAt(e)]=e;t.encode=e=>{let t,n=new Uint8Array(e),r=n.length,o="";for(t=0;t>2],o+=s[(3&n[t])<<4|n[t+1]>>4],o+=s[(15&n[t+1])<<2|n[t+2]>>6],o+=s[63&n[t+2]];return r%3==2?o=o.substring(0,o.length-1)+"=":r%3==1&&(o=o.substring(0,o.length-2)+"=="),o},t.decode=e=>{let t,s,r,o,i,a=.75*e.length,c=e.length,u=0;"="===e[e.length-1]&&(a--,"="===e[e.length-2]&&a--);const h=new ArrayBuffer(a),l=new Uint8Array(h);for(t=0;t>4,l[u++]=(15&r)<<4|o>>2,l[u++]=(3&o)<<6|63&i;return h}},572:(e,t,s)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});const n=s(87),r=s(469),o="function"==typeof ArrayBuffer,i=(e,t)=>{if(o){const s=(0,r.decode)(e);return a(s,t)}return{base64:!0,data:e}},a=(e,t)=>"blob"===t&&e instanceof ArrayBuffer?new Blob([e]):e;t.default=(e,t)=>{if("string"!=typeof e)return{type:"message",data:a(e,t)};const s=e.charAt(0);return"b"===s?{type:"message",data:i(e.substring(1),t)}:n.PACKET_TYPES_REVERSE[s]?e.length>1?{type:n.PACKET_TYPES_REVERSE[s],data:e.substring(1)}:{type:n.PACKET_TYPES_REVERSE[s]}:n.ERROR_PACKET}},908:(e,t,s)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});const n=s(87),r="function"==typeof Blob||"undefined"!=typeof Blob&&"[object BlobConstructor]"===Object.prototype.toString.call(Blob),o="function"==typeof ArrayBuffer,i=(e,t)=>{const s=new FileReader;return s.onload=function(){const e=s.result.split(",")[1];t("b"+(e||""))},s.readAsDataURL(e)};t.default=({type:e,data:t},s,a)=>{return r&&t instanceof Blob?s?a(t):i(t,a):o&&(t instanceof ArrayBuffer||(c=t,"function"==typeof ArrayBuffer.isView?ArrayBuffer.isView(c):c&&c.buffer instanceof ArrayBuffer))?s?a(t):i(new Blob([t]),a):a(n.PACKET_TYPES[e]+(t||""));var c}},373:(e,t,s)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.decodePayload=t.decodePacket=t.encodePayload=t.encodePacket=t.protocol=void 0;const n=s(908);t.encodePacket=n.default;const r=s(572);t.decodePacket=r.default;const o=String.fromCharCode(30);t.encodePayload=(e,t)=>{const s=e.length,r=new Array(s);let i=0;e.forEach(((e,a)=>{(0,n.default)(e,!1,(e=>{r[a]=e,++i===s&&t(r.join(o))}))}))},t.decodePayload=(e,t)=>{const s=e.split(o),n=[];for(let e=0;e{"use strict";function s(e){e=e||{},this.ms=e.min||100,this.max=e.max||1e4,this.factor=e.factor||2,this.jitter=e.jitter>0&&e.jitter<=1?e.jitter:0,this.attempts=0}Object.defineProperty(t,"__esModule",{value:!0}),t.Backoff=void 0,t.Backoff=s,s.prototype.duration=function(){var e=this.ms*Math.pow(this.factor,this.attempts++);if(this.jitter){var t=Math.random(),s=Math.floor(t*this.jitter*e);e=0==(1&Math.floor(10*t))?e-s:e+s}return 0|Math.min(e,this.max)},s.prototype.reset=function(){this.attempts=0},s.prototype.setMin=function(e){this.ms=e},s.prototype.setMax=function(e){this.max=e},s.prototype.setJitter=function(e){this.jitter=e}},46:function(e,t,s){"use strict";var n=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.default=t.connect=t.io=t.Socket=t.Manager=t.protocol=void 0;const r=s(84),o=s(168);Object.defineProperty(t,"Manager",{enumerable:!0,get:function(){return o.Manager}});const i=s(312);Object.defineProperty(t,"Socket",{enumerable:!0,get:function(){return i.Socket}});const a=n(s(669)).default("socket.io-client"),c={};function u(e,t){"object"==typeof e&&(t=e,e=void 0),t=t||{};const s=r.url(e,t.path||"/socket.io"),n=s.source,i=s.id,u=s.path,h=c[i]&&u in c[i].nsps;let l;return t.forceNew||t["force new connection"]||!1===t.multiplex||h?(a("ignoring socket cache for %s",n),l=new o.Manager(n,t)):(c[i]||(a("new io instance for %s",n),c[i]=new o.Manager(n,t)),l=c[i]),s.query&&!t.query&&(t.query=s.queryKey),l.socket(s.path,t)}t.io=u,t.connect=u,t.default=u,Object.assign(u,{Manager:o.Manager,Socket:i.Socket,io:u,connect:u});var h=s(514);Object.defineProperty(t,"protocol",{enumerable:!0,get:function(){return h.protocol}}),e.exports=u},168:function(e,t,s){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,s,n){void 0===n&&(n=s),Object.defineProperty(e,n,{enumerable:!0,get:function(){return t[s]}})}:function(e,t,s,n){void 0===n&&(n=s),e[n]=t[s]}),r=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),o=this&&this.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var s in e)"default"!==s&&Object.prototype.hasOwnProperty.call(e,s)&&n(t,e,s);return r(t,e),t},i=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.Manager=void 0;const a=s(679),c=s(312),u=o(s(514)),h=s(149),l=s(159),d=s(260),p=i(s(669)).default("socket.io-client:manager");class f extends d.Emitter{constructor(e,t){var s;super(),this.nsps={},this.subs=[],e&&"object"==typeof e&&(t=e,e=void 0),(t=t||{}).path=t.path||"/socket.io",this.opts=t,a.installTimerFunctions(this,t),this.reconnection(!1!==t.reconnection),this.reconnectionAttempts(t.reconnectionAttempts||1/0),this.reconnectionDelay(t.reconnectionDelay||1e3),this.reconnectionDelayMax(t.reconnectionDelayMax||5e3),this.randomizationFactor(null!==(s=t.randomizationFactor)&&void 0!==s?s:.5),this.backoff=new l.Backoff({min:this.reconnectionDelay(),max:this.reconnectionDelayMax(),jitter:this.randomizationFactor()}),this.timeout(null==t.timeout?2e4:t.timeout),this._readyState="closed",this.uri=e;const n=t.parser||u;this.encoder=new n.Encoder,this.decoder=new n.Decoder,this._autoConnect=!1!==t.autoConnect,this._autoConnect&&this.open()}reconnection(e){return arguments.length?(this._reconnection=!!e,this):this._reconnection}reconnectionAttempts(e){return void 0===e?this._reconnectionAttempts:(this._reconnectionAttempts=e,this)}reconnectionDelay(e){var t;return void 0===e?this._reconnectionDelay:(this._reconnectionDelay=e,null===(t=this.backoff)||void 0===t||t.setMin(e),this)}randomizationFactor(e){var t;return void 0===e?this._randomizationFactor:(this._randomizationFactor=e,null===(t=this.backoff)||void 0===t||t.setJitter(e),this)}reconnectionDelayMax(e){var t;return void 0===e?this._reconnectionDelayMax:(this._reconnectionDelayMax=e,null===(t=this.backoff)||void 0===t||t.setMax(e),this)}timeout(e){return arguments.length?(this._timeout=e,this):this._timeout}maybeReconnectOnOpen(){!this._reconnecting&&this._reconnection&&0===this.backoff.attempts&&this.reconnect()}open(e){if(p("readyState %s",this._readyState),~this._readyState.indexOf("open"))return this;p("opening %s",this.uri),this.engine=new a.Socket(this.uri,this.opts);const t=this.engine,s=this;this._readyState="opening",this.skipReconnect=!1;const n=h.on(t,"open",(function(){s.onopen(),e&&e()})),r=h.on(t,"error",(t=>{p("error"),s.cleanup(),s._readyState="closed",this.emitReserved("error",t),e?e(t):s.maybeReconnectOnOpen()}));if(!1!==this._timeout){const e=this._timeout;p("connect attempt will timeout after %d",e),0===e&&n();const s=this.setTimeoutFn((()=>{p("connect attempt timed out after %d",e),n(),t.close(),t.emit("error",new Error("timeout"))}),e);this.opts.autoUnref&&s.unref(),this.subs.push((function(){clearTimeout(s)}))}return this.subs.push(n),this.subs.push(r),this}connect(e){return this.open(e)}onopen(){p("open"),this.cleanup(),this._readyState="open",this.emitReserved("open");const e=this.engine;this.subs.push(h.on(e,"ping",this.onping.bind(this)),h.on(e,"data",this.ondata.bind(this)),h.on(e,"error",this.onerror.bind(this)),h.on(e,"close",this.onclose.bind(this)),h.on(this.decoder,"decoded",this.ondecoded.bind(this)))}onping(){this.emitReserved("ping")}ondata(e){try{this.decoder.add(e)}catch(e){this.onclose("parse error",e)}}ondecoded(e){a.nextTick((()=>{this.emitReserved("packet",e)}),this.setTimeoutFn)}onerror(e){p("error",e),this.emitReserved("error",e)}socket(e,t){let s=this.nsps[e];return s?this._autoConnect&&!s.active&&s.connect():(s=new c.Socket(this,e,t),this.nsps[e]=s),s}_destroy(e){const t=Object.keys(this.nsps);for(const e of t)if(this.nsps[e].active)return void p("socket %s is still active, skipping close",e);this._close()}_packet(e){p("writing packet %j",e);const t=this.encoder.encode(e);for(let s=0;se())),this.subs.length=0,this.decoder.destroy()}_close(){p("disconnect"),this.skipReconnect=!0,this._reconnecting=!1,this.onclose("forced close"),this.engine&&this.engine.close()}disconnect(){return this._close()}onclose(e,t){p("closed due to %s",e),this.cleanup(),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)p("reconnect failed"),this.backoff.reset(),this.emitReserved("reconnect_failed"),this._reconnecting=!1;else{const t=this.backoff.duration();p("will wait %dms before reconnect attempt",t),this._reconnecting=!0;const s=this.setTimeoutFn((()=>{e.skipReconnect||(p("attempting reconnect"),this.emitReserved("reconnect_attempt",e.backoff.attempts),e.skipReconnect||e.open((t=>{t?(p("reconnect attempt error"),e._reconnecting=!1,e.reconnect(),this.emitReserved("reconnect_error",t)):(p("reconnect success"),e.onreconnect())})))}),t);this.opts.autoUnref&&s.unref(),this.subs.push((function(){clearTimeout(s)}))}}onreconnect(){const e=this.backoff.attempts;this._reconnecting=!1,this.backoff.reset(),this.emitReserved("reconnect",e)}}t.Manager=f},149:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.on=void 0,t.on=function(e,t,s){return e.on(t,s),function(){e.off(t,s)}}},312:function(e,t,s){"use strict";var n=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.Socket=void 0;const r=s(514),o=s(149),i=s(260),a=n(s(669)).default("socket.io-client:socket"),c=Object.freeze({connect:1,connect_error:1,disconnect:1,disconnecting:1,newListener:1,removeListener:1});class u extends i.Emitter{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=[o.on(e,"open",this.onopen.bind(this)),o.on(e,"packet",this.onpacket.bind(this)),o.on(e,"error",this.onerror.bind(this)),o.on(e,"close",this.onclose.bind(this))]}get active(){return!!this.subs}connect(){return this.connected||(this.subEvents(),this.io._reconnecting||this.io.open(),"open"===this.io._readyState&&this.onopen()),this}open(){return this.connect()}send(...e){return e.unshift("message"),this.emit.apply(this,e),this}emit(e,...t){if(c.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 s={type:r.PacketType.EVENT,data:t,options:{}};if(s.options.compress=!1!==this.flags.compress,"function"==typeof t[t.length-1]){const e=this.ids++;a("emitting packet with ack id %d",e);const n=t.pop();this._registerAckCallback(e,n),s.id=e}const n=this.io.engine&&this.io.engine.transport&&this.io.engine.transport.writable;return!this.flags.volatile||n&&this.connected?this.connected?(this.notifyOutgoingListeners(s),this.packet(s)):this.sendBuffer.push(s):a("discard packet as the transport is not currently writable"),this.flags={},this}_registerAckCallback(e,t){var s;const n=null!==(s=this.flags.timeout)&&void 0!==s?s:this._opts.ackTimeout;if(void 0===n)return void(this.acks[e]=t);const r=this.io.setTimeoutFn((()=>{delete this.acks[e];for(let t=0;t{this.io.clearTimeoutFn(r),t.apply(this,[null,...e])}}emitWithAck(e,...t){const s=void 0!==this.flags.timeout||void 0!==this._opts.ackTimeout;return new Promise(((n,r)=>{t.push(((e,t)=>s?e?r(e):n(t):n(e))),this.emit(e,...t)}))}_addToQueue(e){let t;"function"==typeof e[e.length-1]&&(t=e.pop());const s={id:this._queueSeq++,tryCount:0,pending:!1,args:e,flags:Object.assign({fromQueue:!0},this.flags)};e.push(((e,...n)=>{if(s===this._queue[0])return null!==e?s.tryCount>this._opts.retries&&(a("packet [%d] is discarded after %d tries",s.id,s.tryCount),this._queue.shift(),t&&t(e)):(a("packet [%d] was successfully sent",s.id),this._queue.shift(),t&&t(null,...n)),s.pending=!1,this._drainQueue()})),this._queue.push(s),this._drainQueue()}_drainQueue(e=!1){if(a("draining queue"),!this.connected||0===this._queue.length)return;const t=this._queue[0];!t.pending||e?(t.pending=!0,t.tryCount++,a("sending packet [%d] (try n°%d)",t.id,t.tryCount),this.flags=t.flags,this.emit.apply(this,t.args)):a("packet [%d] has already been sent and is waiting for an ack",t.id)}packet(e){e.nsp=this.nsp,this.io._packet(e)}onopen(){a("transport is open - connecting"),"function"==typeof this.auth?this.auth((e=>{this._sendConnectPacket(e)})):this._sendConnectPacket(this.auth)}_sendConnectPacket(e){this.packet({type:r.PacketType.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){a("close (%s)",e),this.connected=!1,delete this.id,this.emitReserved("disconnect",e,t)}onpacket(e){if(e.nsp===this.nsp)switch(e.type){case r.PacketType.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 r.PacketType.EVENT:case r.PacketType.BINARY_EVENT:this.onevent(e);break;case r.PacketType.ACK:case r.PacketType.BINARY_ACK:this.onack(e);break;case r.PacketType.DISCONNECT:this.ondisconnect();break;case r.PacketType.CONNECT_ERROR:this.destroy();const t=new Error(e.data.message);t.data=e.data.data,this.emitReserved("connect_error",t)}}onevent(e){const t=e.data||[];a("emitting event %j",t),null!=e.id&&(a("attaching ack callback to event"),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&&"string"==typeof e[e.length-1]&&(this._lastOffset=e[e.length-1])}ack(e){const t=this;let s=!1;return function(...n){s||(s=!0,a("sending ack %j",n),t.packet({type:r.PacketType.ACK,id:e,data:n}))}}onack(e){const t=this.acks[e.id];"function"==typeof t?(a("calling ack %s with %j",e.id,e.data),t.apply(this,e.data),delete this.acks[e.id]):a("bad ack %s",e.id)}onconnect(e,t){a("socket connected with id %s",e),this.id=e,this.recovered=t&&this._pid===t,this._pid=t,this.connected=!0,this.emitBuffered(),this.emitReserved("connect"),this._drainQueue(!0)}emitBuffered(){this.receiveBuffer.forEach((e=>this.emitEvent(e))),this.receiveBuffer=[],this.sendBuffer.forEach((e=>{this.notifyOutgoingListeners(e),this.packet(e)})),this.sendBuffer=[]}ondisconnect(){a("server disconnect (%s)",this.nsp),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&&(a("performing disconnect (%s)",this.nsp),this.packet({type:r.PacketType.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{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.reconstructPacket=t.deconstructPacket=void 0;const n=s(665);function r(e,t){if(!e)return e;if((0,n.isBinary)(e)){const s={_placeholder:!0,num:t.length};return t.push(e),s}if(Array.isArray(e)){const s=new Array(e.length);for(let n=0;n=0&&e.num{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.Decoder=t.Encoder=t.PacketType=t.protocol=void 0;const n=s(260),r=s(880),o=s(665),i=(0,s(618).default)("socket.io-parser");var a;t.protocol=5,function(e){e[e.CONNECT=0]="CONNECT",e[e.DISCONNECT=1]="DISCONNECT",e[e.EVENT=2]="EVENT",e[e.ACK=3]="ACK",e[e.CONNECT_ERROR=4]="CONNECT_ERROR",e[e.BINARY_EVENT=5]="BINARY_EVENT",e[e.BINARY_ACK=6]="BINARY_ACK"}(a=t.PacketType||(t.PacketType={})),t.Encoder=class{constructor(e){this.replacer=e}encode(e){return i("encoding packet %j",e),e.type!==a.EVENT&&e.type!==a.ACK||!(0,o.hasBinary)(e)?[this.encodeAsString(e)]:this.encodeAsBinary({type:e.type===a.EVENT?a.BINARY_EVENT:a.BINARY_ACK,nsp:e.nsp,data:e.data,id:e.id})}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+","),null!=e.id&&(t+=e.id),null!=e.data&&(t+=JSON.stringify(e.data,this.replacer)),i("encoded %j as %s",e,t),t}encodeAsBinary(e){const t=(0,r.deconstructPacket)(e),s=this.encodeAsString(t.packet),n=t.buffers;return n.unshift(s),n}};class c extends n.Emitter{constructor(e){super(),this.reviver=e}add(e){let t;if("string"==typeof e){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 u(t),0===t.attachments&&super.emitReserved("decoded",t)):super.emitReserved("decoded",t)}else{if(!(0,o.isBinary)(e)&&!e.base64)throw new Error("Unknown type: "+e);if(!this.reconstructor)throw new Error("got binary data when not reconstructing a packet");t=this.reconstructor.takeBinaryData(e),t&&(this.reconstructor=null,super.emitReserved("decoded",t))}}decodeString(e){let t=0;const s={type:Number(e.charAt(0))};if(void 0===a[s.type])throw new Error("unknown packet type "+s.type);if(s.type===a.BINARY_EVENT||s.type===a.BINARY_ACK){const n=t+1;for(;"-"!==e.charAt(++t)&&t!=e.length;);const r=e.substring(n,t);if(r!=Number(r)||"-"!==e.charAt(t))throw new Error("Illegal attachments");s.attachments=Number(r)}if("/"===e.charAt(t+1)){const n=t+1;for(;++t&&","!==e.charAt(t)&&t!==e.length;);s.nsp=e.substring(n,t)}else s.nsp="/";const n=e.charAt(t+1);if(""!==n&&Number(n)==n){const n=t+1;for(;++t;){const s=e.charAt(t);if(null==s||Number(s)!=s){--t;break}if(t===e.length)break}s.id=Number(e.substring(n,t+1))}if(e.charAt(++t)){const n=this.tryParse(e.substr(t));if(!c.isPayloadValid(s.type,n))throw new Error("invalid payload");s.data=n}return i("decoded %s as %j",e,s),s}tryParse(e){try{return JSON.parse(e,this.reviver)}catch(e){return!1}}static isPayloadValid(e,t){switch(e){case a.CONNECT:return"object"==typeof t;case a.DISCONNECT:return void 0===t;case a.CONNECT_ERROR:return"string"==typeof t||"object"==typeof t;case a.EVENT:case a.BINARY_EVENT:return Array.isArray(t)&&("string"==typeof t[0]||"number"==typeof t[0]);case a.ACK:case a.BINARY_ACK:return Array.isArray(t)}}destroy(){this.reconstructor&&(this.reconstructor.finishedReconstruction(),this.reconstructor=null)}}t.Decoder=c;class u{constructor(e){this.packet=e,this.buffers=[],this.reconPack=e}takeBinaryData(e){if(this.buffers.push(e),this.buffers.length===this.reconPack.attachments){const e=(0,r.reconstructPacket)(this.reconPack,this.buffers);return this.finishedReconstruction(),e}return null}finishedReconstruction(){this.reconPack=null,this.buffers=[]}}},665:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.hasBinary=t.isBinary=void 0;const s="function"==typeof ArrayBuffer,n=Object.prototype.toString,r="function"==typeof Blob||"undefined"!=typeof Blob&&"[object BlobConstructor]"===n.call(Blob),o="function"==typeof File||"undefined"!=typeof File&&"[object FileConstructor]"===n.call(File);function i(e){return s&&(e instanceof ArrayBuffer||(e=>"function"==typeof ArrayBuffer.isView?ArrayBuffer.isView(e):e.buffer instanceof ArrayBuffer)(e))||r&&e instanceof Blob||o&&e instanceof File}t.isBinary=i,t.hasBinary=function e(t,s){if(!t||"object"!=typeof t)return!1;if(Array.isArray(t)){for(let s=0,n=t.length;s{"use strict";function n(e){if(e)return function(e){for(var t in n.prototype)e[t]=n.prototype[t];return e}(e)}s.r(t),s.d(t,{Emitter:()=>n}),n.prototype.on=n.prototype.addEventListener=function(e,t){return this._callbacks=this._callbacks||{},(this._callbacks["$"+e]=this._callbacks["$"+e]||[]).push(t),this},n.prototype.once=function(e,t){function s(){this.off(e,s),t.apply(this,arguments)}return s.fn=t,this.on(e,s),this},n.prototype.off=n.prototype.removeListener=n.prototype.removeAllListeners=n.prototype.removeEventListener=function(e,t){if(this._callbacks=this._callbacks||{},0==arguments.length)return this._callbacks={},this;var s,n=this._callbacks["$"+e];if(!n)return this;if(1==arguments.length)return delete this._callbacks["$"+e],this;for(var r=0;r{for(var n in t)s.o(t,n)&&!s.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},s.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),s.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},(()=>{"use strict";const e=s(46);function t(e,t=document){return t.querySelector(e)}function n(e,t=document){return Array.from(t.querySelectorAll(e))}function r(){return localStorage.getItem("authToken")||""}function o(){const e=i.gradientName(),s=t("body");let n;s.classList.value=e,s.classList.add(i.getTimePeriod()),n=i.get24Hour()>=5&&i.get24Hour()<9?"morning":i.get24Hour()>=9&&i.get24Hour()<17?"afternoon":i.get24Hour()>=17&&i.get24Hour()<20?"evening":"night",t("#time-of-day").innerHTML=` ${i.getHour()}${i.getAmPm()}`}const i=new(s(182).TimeManager),a=(0,e.io)({extraHeaders:{"x-authtoken":r()}});o(),setInterval(o,6e4),a.on("connect",(()=>{console.log(`Connected: ${a.id}`)})),a.on("authToken",(e=>{console.log(`recv auth token ${e}`),localStorage.setItem("authToken",e)})),a.on("chat",(function(e){t("#chat-messages").innerHTML+=e,t("#chat-messages").scrollTop=t("#chat-messages").scrollHeight})),a.on("ready",(function(){console.log("Server connection verified"),n("nav a")[0].click()})),n("nav a").forEach((e=>{e.addEventListener("click",(e=>{const s=e.target;n("a",s.closest("nav")).forEach((e=>{e.classList.remove("active")})),s.classList.add("active");const r=t(s.getAttribute("hx-target").toString());Array.from(r.parentElement.children).forEach((e=>{e.classList.remove("active")})),r.classList.add("active")}))})),t("body").addEventListener("click",(e=>{var s;const n=e.target;if(n.parentElement.classList.contains("filter")){Array.from(n.parentElement.children).forEach((e=>e.classList.remove("active"))),n.classList.add("active");const e=n.getAttribute("data-filter"),s=t(`.filter-result[data-filter="${e}"]`,n.closest(".filter-container"));s&&Array.from(s.parentElement.children).forEach((t=>{t.getAttribute("data-filter")===e?(t.classList.remove("hidden"),t.classList.add("active")):(t.classList.add("hidden"),t.classList.remove("active"))}))}"dialog"===n.getAttribute("formmethod")&&"cancel"===n.getAttribute("value")&&(null===(s=n.closest("dialog"))||void 0===s||s.close())}));const c=new MutationObserver(((e,s)=>{const r={modal:!1,alert:!1};e.forEach((e=>{switch(e.target.id){case"modal-wrapper":r.modal=!0;break;case"alerts":r.alert=!0}})),r.modal&&t("#modal-wrapper").children.length&&n("#modal-wrapper dialog").forEach((e=>{e.open||e.showModal()})),r.alert&&t("#alerts").children.length&&n("#alerts .alert").forEach((e=>{if(!e.getAttribute("data-dismiss-at")){const t=Date.now()+3e3;e.setAttribute("data-dismiss-at",t.toString()),setTimeout((()=>{e.remove()}),3e3)}}))}));c.observe(t("#modal-wrapper"),{childList:!0}),c.observe(t("#alerts"),{childList:!0}),document.body.addEventListener("htmx:configRequest",(function(e){e.detail.headers["x-authtoken"]=r()})),document.body.addEventListener("htmx:load",(function(e){n(".disabled[data-block]").forEach((e=>{setTimeout((()=>{e.removeAttribute("disabled")}),3e3)}))})),document.body.addEventListener("htmx:beforeSwap",(function(e){"chat-form"===e.target.id?t("#message").value="":"logout"===e.detail.serverResponse&&(localStorage.removeItem("authToken"),window.location.reload())}))})()})(); \ No newline at end of file diff --git a/public/assets/css/game.css b/public/assets/css/game.css index edb597d..13b0929 100644 --- a/public/assets/css/game.css +++ b/public/assets/css/game.css @@ -291,6 +291,10 @@ nav.filter-result.active { height: 64px; margin: 0 1rem 1rem 0; } +.item-modal-overview .icon img { + width: 64px; + height: 64px; +} .item-modal-overview .name { margin-top: 0; font-weight: bold; @@ -390,7 +394,7 @@ h3 { .store-list { display: flex; text-align: left; - margin-bottom: 0.3rem; + margin: 0 0 0.3rem 0.3rem; } .store-list:last-child { margin-bottom: 0; @@ -447,6 +451,7 @@ h3 { font-size: 0.7rem; background-repeat: no-repeat; overflow: hidden; + background-size: contain; } #extra-inventory-info { margin-top: 1rem; diff --git a/public/assets/img/icons/equipment/arm_t_02.PNG b/public/assets/img/icons/equipment/arm_t_02.PNG new file mode 100755 index 0000000000000000000000000000000000000000..be71a7cc3e300ebf2eb29aefe090bdfc2c77dc6d GIT binary patch literal 46592 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 literal 0 HcmV?d00001 diff --git a/public/assets/img/icons/equipment/boot_t_02.png b/public/assets/img/icons/equipment/boot_t_02.png new file mode 100755 index 0000000000000000000000000000000000000000..0134c45f6dcd4ae6982e2b2e1f181ae9cb084640 GIT binary patch literal 52013 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 literal 0 HcmV?d00001 diff --git a/public/assets/img/icons/equipment/gl_t_07.png b/public/assets/img/icons/equipment/gl_t_07.png new file mode 100755 index 0000000000000000000000000000000000000000..90ffe1daad3d61155943b26b0550b069486bacf6 GIT binary patch literal 58078 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⪚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

|Gd`vGe#RvJB8P<({C^WPa0?m` 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 literal 0 HcmV?d00001 diff --git a/public/index.html b/public/index.html index 778ec98..ef4a192 100644 --- a/public/index.html +++ b/public/index.html @@ -71,7 +71,7 @@