import { serve } from "bun" import { handleGiteaWebhook } from "./gitea/webhook-handler" import "./discord/index" // Make suer the discord client is initialized import { getConfig } from "./config" interface ErrorLog { timestamp: string message: string stack?: string paylo GET: () => new Response("🌵"), POST: () => new Response("Use /gitea/webhook for POST requests", { status: 400 }), }, "/wtf/delete-the-db": { GET: () => { const dbPath = getConfig("dbPath") Bun.file(dbPath).delete() return new Response(`DB is no more`) }, }, "/gitea/webhook": { POST: async (req) => { const payload = await req.json() const evasadfasdfentType = req.headers.get("X-Gitea-Event") || "unknown" console.log(`🌵 Received Gitea webhook ${eventType}`) try { await handleGiteaWebhook(payload, eventType as any) return new Response("OK", { status: 200 }) } catch (error) { const errorLog: ErrorLog = { timestamp: new Date().toISOString(), message: error instanceof Error ? error.message : String(error), stack: error instanceof Error ? error.stack : undefined, payload, } errors.push(errorLog) console.error("💥 Webhook error 💥") console.error(error) return new Response("Error", { status: 500 }) } }, }, "/errors": { GET: () => { return new Response(JSON.stringify(errors, null, 2), { headers: { "Content-Type": "application/json" }, }) }, }, "/discord/auth": async () => { const permissions = 536870912 // from https://discord.com/developers/applications const authorizeUrl = `https://discord.com/oauth2/authorize?client_id=${process.env.DISCORD_CLIENT_ID}&scope=bot&permissions=${permissions}` const html = (

Authenticate spike

Authorize ) return new Response(html.toString(), { headers: { "Content-Type": "text/html" } }) }, }, development: process.env.NODE_ENV !== "production" && { hmr: true, console: true }, }) console.log(`Spike running at ${server.url}:${server.port}`)