import { json } from "@sveltejs/kit"; import type { RequestHandler } from "./$types"; import { account, githubCookies, githubEnv, GitHubUpstreamError, noStore, sessionToken } from "$lib/server/github"; export const GET: RequestHandler = async ({ cookies, platform, fetch, url, request }) => { const token = await sessionToken(cookies, platform); if (!token) return json({ error: "unauthorized" }, { status: 401, headers: noStore() }); try { return json(await account(githubEnv(platform), token, fetch), { headers: noStore() }); } catch (cause) { if (cause instanceof GitHubUpstreamError && cause.status === 401) { githubCookies(cookies, url, request.headers).token.clear(); return json({ error: "unauthorized" }, { status: 401, headers: noStore() }); } return json({ error: "GitHub request failed" }, { status: 502, headers: noStore() }); } }; export const DELETE: RequestHandler = async ({ request, cookies, url }) => { const same = request.headers.get("sec-fetch-site") === "same-origin" || request.headers.get("origin") === new URL(request.url).origin; if (!same) return json({ error: "forbidden" }, { status: 403, headers: noStore() }); const jar = githubCookies(cookies, url, request.headers); jar.token.clear(); jar.state.clear(); return json({ ok: true }, { headers: noStore() }); };