{ "$schema": "https://ui.shadcn.com/schema/registry-item.json", "name": "supabase-client", "title": "Supabase Client", "description": "Lazily constructed browser Supabase client read from Vite environment variables.", "dependencies": ["@supabase/supabase-js@^2.110.7"], "files": [ { "path": "src/lib/supabase.ts", "content": "/// \nimport { createClient, type SupabaseClient } from \"@supabase/supabase-js\";\n\nlet client: SupabaseClient | null = null;\n\n// Built on first use so an incomplete configuration reaches the caller that can render it instead of\n// throwing while this module is imported.\nexport function getSupabaseClient() {\n client ??= createClient(\n requireVariable(\"VITE_SUPABASE_URL\"),\n requireVariable(\"VITE_SUPABASE_ANON_KEY\"),\n );\n return client;\n}\n\nfunction requireVariable(name: \"VITE_SUPABASE_ANON_KEY\" | \"VITE_SUPABASE_URL\") {\n const value = import.meta.env[name];\n if (!value) {\n throw new Error(`${name} is required to reach Supabase.`);\n }\n return value;\n}\n", "type": "registry:lib", "target": "src/lib/supabase.ts" } ], "docs": "Set VITE_SUPABASE_URL and VITE_SUPABASE_ANON_KEY. Applications that validate their own environment can rewrite getSupabaseClient to read from that module instead.", "type": "registry:lib" }