import { createClient, type SupabaseClient } from "@supabase/supabase-js"; import { createError } from "h3"; import { useRuntimeConfig } from "#imports"; const globalKey = Symbol.for("slipmatz.supabase.serviceClient"); type GlobalWithSupabase = typeof globalThis & { [globalKey]?: SupabaseClient; }; export const getSupabaseServiceClient = (): SupabaseClient => { const config = useRuntimeConfig(); const supabaseUrl = config.public.supabase?.url; const serviceRoleKey = config.supabase?.serviceRoleKey; if (!supabaseUrl || !serviceRoleKey) { throw createError({ statusCode: 500, statusMessage: "Supabase environment variables are not configured.", }); } const scope = globalThis as GlobalWithSupabase; if (!scope[globalKey]) { scope[globalKey] = createClient(supabaseUrl, serviceRoleKey, { auth: { autoRefreshToken: false, persistSession: false, }, }); } return scope[globalKey]!; };