import {ENV_CONFIG} from 'common/envs/constants' import {createClient} from 'common/supabase/utils' let currentToken: string | undefined export function initSupabaseClient() { // Prefer explicit env overrides when available (useful for local Supabase via Docker) const urlOverride = process.env.NEXT_PUBLIC_SUPABASE_URL || process.env.SUPABASE_URL const anonKeyOverride = process.env.NEXT_PUBLIC_SUPABASE_ANON_KEY || process.env.SUPABASE_ANON_KEY if (urlOverride && anonKeyOverride) { // debug('Initializing Supabase client (env URL override)', {urlOverride, anonKeyOverride}) return createClient(urlOverride, anonKeyOverride) } else if (process.env.NEXT_PUBLIC_ISOLATED_ENV) { throw new Error( `You are running isolated tests (NEXT_PUBLIC_ISOLATED_ENV=true), so you do not want to call the remote supabase. ${{ urlOverride, anonKeyOverride, }}`, ) } if (urlOverride || anonKeyOverride) { console.warn( 'Supabase env override is partially set. Both URL and ANON_KEY are required. Falling back to ENV_CONFIG.', ) } // Default: use instanceId and anon key from ENV_CONFIG // Note: createClient accepts either instanceId or full URL // console.debug('Initializing Supabase client', ENV_CONFIG.supabaseInstanceId) return createClient(ENV_CONFIG.supabaseInstanceId, ENV_CONFIG.supabaseAnonKey) } export function updateSupabaseAuth(token?: string) { if (currentToken != token) { currentToken = token if (token == null) { // db['rest'].headers['Authorization'] db['realtime'].setAuth(null) } else { db['rest'].headers.set('Authorization', `Bearer ${token}`) db['realtime'].setAuth(token) } } } export const db = initSupabaseClient()