| // Single Supabase client instance | |
| let _supabaseClient = null; | |
| /** | |
| * Get or create Supabase client | |
| * @returns {object|null} | |
| */ | |
| function getSupabaseClient() { | |
| if (_supabaseClient) return _supabaseClient; | |
| const config = getSupabaseConfig(); | |
| if (!config.isConfigured) { | |
| console.warn('Supabase not configured — set meta tags supabase-url and supabase-anon-key'); | |
| return null; | |
| } | |
| if (typeof supabase === 'undefined' || !supabase.createClient) { | |
| console.warn('Supabase library not loaded'); | |
| return null; | |
| } | |
| _supabaseClient = supabase.createClient(config.url, config.anonKey, { | |
| auth: { | |
| detectSessionInUrl: true, | |
| persistSession: true, | |
| autoRefreshToken: true, | |
| flowType: 'pkce' | |
| } | |
| }); | |
| return _supabaseClient; | |
| } | |