Files
vyndr/web/src/lib/supabase.ts
T

37 lines
1.2 KiB
TypeScript

import { createClient, type SupabaseClient } from '@supabase/supabase-js';
const url = process.env.NEXT_PUBLIC_SUPABASE_URL;
const anonKey = process.env.NEXT_PUBLIC_SUPABASE_ANON_KEY;
let browserClient: SupabaseClient | null = null;
export function getBrowserSupabase(): SupabaseClient | null {
if (typeof window === 'undefined') return null;
if (!url || !anonKey) return null;
if (browserClient) return browserClient;
browserClient = createClient(url, anonKey, {
auth: {
persistSession: true,
autoRefreshToken: true,
detectSessionInUrl: true,
},
});
return browserClient;
}
export function getServerSupabase(authHeader?: string | null): SupabaseClient | null {
if (!url || !anonKey) return null;
return createClient(url, anonKey, {
auth: { persistSession: false, autoRefreshToken: false },
global: authHeader ? { headers: { Authorization: authHeader } } : undefined,
});
}
export function getServiceRoleSupabase(): SupabaseClient | null {
const serviceKey = process.env.SUPABASE_SERVICE_ROLE_KEY;
if (!url || !serviceKey) return null;
return createClient(url, serviceKey, {
auth: { persistSession: false, autoRefreshToken: false },
});
}