From 893309b30811fa9c571e86b2a2ec335ce19fbed2 Mon Sep 17 00:00:00 2001 From: Stan Runge Date: Fri, 13 Mar 2026 17:29:59 +0100 Subject: [PATCH] make bun run check pass --- src/lib/server/match/queue.ts | 10 +++++++--- src/routes/(app)/+page.svelte | 11 +++++++---- src/routes/(app)/leaderboard/+page.server.ts | 4 ++-- src/routes/(app)/matches/[id]/+page.svelte | 19 +++++++++++++------ src/routes/(app)/teams/+page.svelte | 1 + 5 files changed, 30 insertions(+), 15 deletions(-) diff --git a/src/lib/server/match/queue.ts b/src/lib/server/match/queue.ts index 50d1f24..563f70c 100644 --- a/src/lib/server/match/queue.ts +++ b/src/lib/server/match/queue.ts @@ -3,7 +3,6 @@ import { match, matchQueue, matchParticipantPlayer, playerRating } from '$lib/se import { eq, asc, sql, inArray, lt } from 'drizzle-orm'; import { MATCH_STATES } from './types'; import { createMatch } from './engine'; -import { selectMappoolForRating } from './rating'; const QUEUE_TIMEOUT_MS = 30 * 60 * 1000; // 30 minutes @@ -202,6 +201,11 @@ async function selectMappoolForRating(avgElo: number) { return bestPool; } -function getAverageMappoolSR(pool): number { - return pool.slots.reduce((acc, slot) => acc + slot.starRating!, 0) / pool.slots.length; +function getAverageMappoolSR(pool: { slots: { starRating: number | null }[] }): number { + return ( + pool.slots.reduce( + (acc: number, slot: { starRating: number | null }) => acc + (slot.starRating ?? 0), + 0 + ) / pool.slots.length + ); } diff --git a/src/routes/(app)/+page.svelte b/src/routes/(app)/+page.svelte index c999aaf..c3e996e 100644 --- a/src/routes/(app)/+page.svelte +++ b/src/routes/(app)/+page.svelte @@ -366,10 +366,13 @@

{#if m.mappool}

- e.stopPropagation()} - class="hover:text-accent hover:underline">{m.mappool.name} { + e.preventDefault(); + e.stopPropagation(); + window.location.href = `/mappools/${m.mappool!.id}`; + }} + class="hover:text-accent hover:underline">{m.mappool.name}{#if avgSR(m.mappool)} ({avgSR(m.mappool)}★){/if}

diff --git a/src/routes/(app)/leaderboard/+page.server.ts b/src/routes/(app)/leaderboard/+page.server.ts index e55cd32..822cac1 100644 --- a/src/routes/(app)/leaderboard/+page.server.ts +++ b/src/routes/(app)/leaderboard/+page.server.ts @@ -80,7 +80,7 @@ export const load: PageServerLoad = async () => { }) ); - const topTeams = teamsWithDetails.filter(Boolean); + const topTeams = teamsWithDetails.filter((x): x is NonNullable => Boolean(x)); // ── High scores — sorted by pp (nulls last) then score ── const recentHighScores = await db @@ -131,7 +131,7 @@ export const load: PageServerLoad = async () => { matchId: s.game.matchId }; }) - ).then((rows) => rows.filter(Boolean)); + ).then((rows) => rows.filter((x): x is NonNullable => Boolean(x))); return { topPlayers: playersWithUsers, diff --git a/src/routes/(app)/matches/[id]/+page.svelte b/src/routes/(app)/matches/[id]/+page.svelte index ec669e2..2f830b3 100644 --- a/src/routes/(app)/matches/[id]/+page.svelte +++ b/src/routes/(app)/matches/[id]/+page.svelte @@ -55,15 +55,22 @@ const MOD_ORDER = ['NM', 'HD', 'HR', 'DT', 'FM', 'TB']; // Group mappool slots by category + type MappoolSlot = { + id: string; + beatmapId: string; + category: string; + orderInCategory: number; + starRating: number | null; + }; const groupedSlots = $derived(() => { - if (!m.mappool?.slots) return {}; - const groups: Record = {}; - for (const slot of m.mappool.slots) { + if (!m.mappool?.slots) return {} as Record; + const groups: Record = {}; + for (const slot of m.mappool.slots as MappoolSlot[]) { if (!groups[slot.category]) groups[slot.category] = []; groups[slot.category].push(slot); } for (const cat of Object.keys(groups)) { - groups[cat].sort((a: unknown, b: unknown) => a.orderInCategory - b.orderInCategory); + groups[cat].sort((a, b) => a.orderInCategory - b.orderInCategory); } // Return entries sorted by canonical mod order return Object.fromEntries( @@ -97,10 +104,10 @@ // Mappool avg SR const mappoolAvgSR = $derived(() => { - const slots = m.mappool?.slots; + const slots = m.mappool?.slots as MappoolSlot[] | undefined; if (!slots?.length) return null; const avg = - slots.reduce((sum: number, s: unknown) => sum + (s.starRating ?? 0), 0) / slots.length; + slots.reduce((sum: number, s: MappoolSlot) => sum + (s.starRating ?? 0), 0) / slots.length; return avg.toFixed(2); }); diff --git a/src/routes/(app)/teams/+page.svelte b/src/routes/(app)/teams/+page.svelte index 7ffbfdc..b0c22ae 100644 --- a/src/routes/(app)/teams/+page.svelte +++ b/src/routes/(app)/teams/+page.svelte @@ -161,6 +161,7 @@ class="mb-3 flex items-center gap-2" > +