From 97c32222ce1725cc978eee8de22f06ad9d077cf4 Mon Sep 17 00:00:00 2001 From: admin-valentin Date: Fri, 31 Jul 2026 14:44:00 +0000 Subject: [PATCH] =?UTF-8?q?fix(supabase):=20lazy=20client=20init=20?= =?UTF-8?q?=E2=80=94=20validates=20env=20vars=20at=20first=20use,=20not=20?= =?UTF-8?q?at=20import=20time?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/supabase/supabase.client.ts | 24 +++++++++++++++++++----- 1 file changed, 19 insertions(+), 5 deletions(-) diff --git a/src/supabase/supabase.client.ts b/src/supabase/supabase.client.ts index 1dba456..8d08ce6 100644 --- a/src/supabase/supabase.client.ts +++ b/src/supabase/supabase.client.ts @@ -1,6 +1,20 @@ -import { createClient } from '@supabase/supabase-js'; +import { createClient, type SupabaseClient } from '@supabase/supabase-js'; -export const supabaseAdmin = createClient( - process.env.SUPABASE_URL ?? '', - process.env.SUPABASE_SERVICE_ROLE_KEY ?? '', -); +let _client: SupabaseClient | null = null; + +function getClient(): SupabaseClient { + if (_client) return _client; + const url = process.env.SUPABASE_URL; + const key = process.env.SUPABASE_SERVICE_ROLE_KEY; + if (!url || !key) { + throw new Error('SUPABASE_URL and SUPABASE_SERVICE_ROLE_KEY must be set before using supabaseAdmin'); + } + _client = createClient(url, key); + return _client; +} + +export const supabaseAdmin = new Proxy({} as SupabaseClient, { + get(_target, prop) { + return (getClient() as Record)[prop]; + }, +});