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"
>
+