import { createBrowserClient } from '@supabase/ssr'; /** * Supabase 客户端配置 - 浏览器端 * 用于前端组件中的 API 调用 */ // 环境变量类型声明 declare global { namespace NodeJS { interface ProcessEnv { NEXT_PUBLIC_SUPABASE_URL: string; NEXT_PUBLIC_SUPABASE_ANON_KEY: string; } } } // 获取环境变量 const supabaseUrl = process.env.NEXT_PUBLIC_SUPABASE_URL || ''; const supabaseAnonKey = process.env.NEXT_PUBLIC_SUPABASE_ANON_KEY || ''; /** * 浏览器端 Supabase 客户端 * 用于前端组件中的 API 调用 */ export function createBrowserSupabaseClient() { if (!supabaseUrl || !supabaseAnonKey) { console.warn('Supabase environment variables not configured'); } return createBrowserClient(supabaseUrl, supabaseAnonKey); } /** * 判断是否在浏览器环境中运行 */ export function isClientSide(): boolean { return typeof window !== 'undefined'; } /** * 获取当前 Supabase URL */ export function getSupabaseUrl(): string { return supabaseUrl; } /** * 获取当前 Supabase Anon Key */ export function getSupabaseAnonKey(): string { return supabaseAnonKey; } // 导出默认客户端实例(懒加载) import { createBrowserClient as createBrowserClientFn } from '@supabase/ssr'; let browserClient: ReturnType | null = null; export function getBrowserClient(): ReturnType { if (!browserClient && isClientSide()) { browserClient = createBrowserSupabaseClient(); } return browserClient!; }