From Hnefatafl's second credibility pass: traffic.py parses each request once and counts visits one way, the rollup's check-in has one comment, and the hall's tally drops its leftovers
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01GwFKMuQnPAEHJ5yA1q4orh
This commit is contained in:
1 parent
169ec4ad55
commit
f5b7416a9e
7 files changed
+63
-57
No files matched your search
@@ -1,7 +1,7 @@
|
||||
// The other games of Kestrel's Hall, from the family list the kit keeps
|
||||
// (family.json, one copy shipped with every game), so a player who liked one
|
||||
// table can find the next, and the hall's front door. This game is left out
|
||||
// of its own list.
|
||||
// (family.json, one copy shipped with every game): the hall's front door, and
|
||||
// the next table for a player who liked this one. This game is left out of its
|
||||
// own list.
|
||||
|
||||
export interface FamilyGame {
|
||||
slug: string;
|
||||
@@ -18,13 +18,15 @@ export interface Family {
|
||||
games: FamilyGame[];
|
||||
}
|
||||
|
||||
const NONE: Family = { hall: '', games: [] };
|
||||
|
||||
export async function loadFamily(self: string): Promise<Family> {
|
||||
try {
|
||||
const res = await fetch('/family.json', { cache: 'no-cache' });
|
||||
if (!res.ok) return { hall: '', games: [] };
|
||||
if (!res.ok) return NONE;
|
||||
const data = (await res.json()) as { hall?: string; games?: FamilyGame[] };
|
||||
return { hall: data.hall ?? '', games: (data.games ?? []).filter((g) => g.slug !== self) };
|
||||
} catch {
|
||||
return { hall: '', games: [] };
|
||||
return NONE;
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user