Something went wrong. Try again.
Automations and webhooks for the AT Protocol airglow.run
automation webhook atproto atprotocol
Something went wrong. Try again.
12345678910111213141516171819202122232425262728293031323334353637import { computeStats } from "./compute.js";import type { StatsSnapshot } from "./types.js";
const ONE_HOUR_MS = 60 * 60 * 1000;
let latest: StatsSnapshot | null = null;let pending: Promise<StatsSnapshot> | null = null;
function refresh(): Promise<StatsSnapshot> { if (pending) return pending; pending = computeStats() .then((snap) => { latest = snap; return snap; }) .finally(() => { pending = null; }); return pending;}
export async function getStats(): Promise<StatsSnapshot> { return latest ?? refresh();}
export function startStatsRefresh(): { stop(): void } { refresh().catch((err) => console.error("Stats refresh failed:", err)); const interval = setInterval(() => { refresh().catch((err) => console.error("Stats refresh failed:", err)); }, ONE_HOUR_MS); return { stop() { clearInterval(interval); }, };}