import { createServerClient, createBrowserClient, type CookieOptionsWithName } from '@supabase/ssr'; import { createClient } from '@supabase/supabase-js'; import type { AstroCookies } from 'astro'; const SCHEMA = 'prestamos'; const SUPABASE_URL = process.env.PUBLIC_SUPABASE_URL ?? import.meta.env.PUBLIC_SUPABASE_URL; const SUPABASE_ANON_KEY = process.env.PUBLIC_SUPABASE_ANON_KEY ?? import.meta.env.PUBLIC_SUPABASE_ANON_KEY; const SUPABASE_SERVICE_KEY = process.env.SUPABASE_SERVICE_ROLE_KEY ?? import.meta.env.SUPABASE_SERVICE_ROLE_KEY; // ponytail: solo para preview local sin login. Bypass RLS con service_role. // Su uso queda tras un flag de DEV en el middleware. export function serviceClient() { return createClient(SUPABASE_URL, SUPABASE_SERVICE_KEY, { db: { schema: SCHEMA }, auth: { persistSession: false, autoRefreshToken: false }, }); } const cookieOptions: CookieOptionsWithName = { name: 'sb', path: '/', sameSite: 'lax', httpOnly: true, secure: process.env.NODE_ENV === 'production', }; export function serverClient(cookies: AstroCookies) { return createServerClient( SUPABASE_URL, SUPABASE_ANON_KEY, { db: { schema: SCHEMA }, cookieOptions, cookies: { get: (name) => cookies.get(name)?.value, set: (name, value, options) => cookies.set(name, value, options), remove: (name, options) => cookies.delete(name, options), }, }, ); } export function browserClient() { return createBrowserClient( SUPABASE_URL, SUPABASE_ANON_KEY, { db: { schema: SCHEMA }, cookieOptions }, ); }