import type { Handle, HandleFetch, HandleServerError } from '@sveltejs/kit'; import { API_URL } from '$env/static/private'; import type { User } from '$lib/types'; export const handle: Handle = async ({ event, resolve }) => { const session = event.cookies.get('session'); if (!session) { event.locals.user = undefined; return resolve(event); } const res = await fetch(`${API_URL}/player/`, { headers: { Authorization: `Bearer ${session}` } }); if (!res.ok) { event.locals.user = undefined; event.cookies.delete('session', { path: '/' }); return resolve(event); } const user: User = await res.json(); event.locals.user = user; return resolve(event); }; export const handleFetch: HandleFetch = async ({ request, fetch, event: { cookies } }) => { const session = cookies.get('session'); if (!session) { return fetch(request); } request = new Request(request, { headers: { Authorization: `Bearer ${session}` }, }); return fetch(request); } export const handleError: HandleServerError = async ({ error, status }) => { const errorId = crypto.randomUUID(); console.error(`Error ID: ${errorId} - Status: ${status} - ${error}`); return { message: 'Whoops!', errorId, }; };