import { createClient, SupabaseClient } from '@supabase/supabase-js'; let _admin: SupabaseClient | null = null; export function getSupabaseAdmin(): SupabaseClient { if (_admin) return _admin; const url = process.env.NEXT_PUBLIC_SUPABASE_URL; const key = process.env.SUPABASE_SERVICE_ROLE_KEY; if (!url || !key) { throw new Error('Supabase admin env not configured'); } _admin = createClient(url, key, { auth: { autoRefreshToken: false, persistSession: false }, global: { // Force every request the admin client makes (GoTrue listUsers and // PostgREST reads alike) to bypass Next's fetch Data Cache, so the admin // surface always reflects current state regardless of page config. fetch: (input: RequestInfo | URL, init?: RequestInit) => fetch(input, { ...init, cache: 'no-store' }), }, }); return _admin; } export function getSupabaseAnon(): SupabaseClient { const url = process.env.NEXT_PUBLIC_SUPABASE_URL; const key = process.env.NEXT_PUBLIC_SUPABASE_ANON_KEY; if (!url || !key) { throw new Error('Supabase anon env not configured'); } return createClient(url, key, { auth: { autoRefreshToken: false, persistSession: false }, }); }