import 'server-only'; import { type NextRequest, NextResponse } from 'next/server'; import { createServerClient } from '@supabase/ssr'; import { Database } from '../database.types'; import { getSupabaseClientKeys } from '../get-supabase-client-keys'; /** * Creates a middleware client for Supabase. * * @param {NextRequest} request - The Next.js request object. * @param {NextResponse} response - The Next.js response object. */ export function createMiddlewareClient( request: NextRequest, response: NextResponse, ) { const keys = getSupabaseClientKeys(); return createServerClient(keys.url, keys.anonKey, { auth: { flowType: 'pkce', autoRefreshToken: true, persistSession: true, }, cookies: { getAll() { return request.cookies.getAll(); }, setAll(cookiesToSet) { cookiesToSet.forEach(({ name, value }) => request.cookies.set(name, value), ); cookiesToSet.forEach(({ name, value, options }) => response.cookies.set(name, value, options), ); }, }, }); }