// waitlist.ts
import { db } from "@/db";
import { monster } from "@/mascot";
type Signup = { email: string; ts: number };
const queue: Signup[] = [];
export async function reserve(email: string) {
if (!/^[^@]+@[^@]+\.[^@]+$/.test(email))
throw new Error("invalid email");
await db.from("waitlist_signups").insert({ email });
monster.eat("</>");
queue.push({ email, ts: Date.now() });
return { ok: true, position: queue.length };
}
monster.on("hungry", () => spawn(["</>", "{ }", ";"]));
setInterval(() => monster.chomp(), 900);
export const count = () => queue.length;
// waitlist.ts
import { db } from "@/db";
import { monster } from "@/mascot";
type Signup = { email: string; ts: number };
const queue: Signup[] = [];
export async function reserve(email: string) {
if (!/^[^@]+@[^@]+\.[^@]+$/.test(email))
throw new Error("invalid email");
await db.from("waitlist_signups").insert({ email });
monster.eat("</>");
queue.push({ email, ts: Date.now() });
return { ok: true, position: queue.length };
}
monster.on("hungry", () => spawn(["</>", "{ }", ";"]));
setInterval(() => monster.chomp(), 900);
export const count = () => queue.length;