@@ -30,6 +30,57 @@ import {
3030 BitcodeTokenCostsModel ,
3131} from './models/bitcode-execution-storage' ;
3232
33+ const allowLocalSupabaseFallback =
34+ process . env . NODE_ENV !== 'production' ||
35+ process . env . CI === 'true' ||
36+ process . env . NEXT_PHASE === 'phase-production-build' ;
37+
38+ function resolveSupabaseUrl ( ) : string {
39+ const supabaseUrl =
40+ process . env . NEXT_PUBLIC_SUPABASE_URL ||
41+ process . env . SUPABASE_URL ||
42+ ( allowLocalSupabaseFallback ? 'http://localhost:54321' : '' ) ;
43+
44+ if ( ! supabaseUrl ) {
45+ throw new Error ( 'Missing Supabase URL. Set NEXT_PUBLIC_SUPABASE_URL or SUPABASE_URL.' ) ;
46+ }
47+
48+ return supabaseUrl ;
49+ }
50+
51+ function resolveSupabasePublicKey ( ) : string {
52+ const publicKey =
53+ process . env . NEXT_PUBLIC_SUPABASE_ANON_KEY ||
54+ process . env . NEXT_PUBLIC_SUPABASE_PUBLISHABLE_KEY ||
55+ process . env . SUPABASE_ANON_KEY ||
56+ process . env . SUPABASE_PUBLISHABLE_KEY ||
57+ ( allowLocalSupabaseFallback ? 'local-anon-key' : '' ) ;
58+
59+ if ( ! publicKey ) {
60+ throw new Error (
61+ 'Missing Supabase public key. Set NEXT_PUBLIC_SUPABASE_ANON_KEY, NEXT_PUBLIC_SUPABASE_PUBLISHABLE_KEY, SUPABASE_ANON_KEY, or SUPABASE_PUBLISHABLE_KEY.' ,
62+ ) ;
63+ }
64+
65+ return publicKey ;
66+ }
67+
68+ function resolveSupabaseAdminKey ( ) : string {
69+ const adminKey =
70+ process . env . SUPABASE_SERVICE_ROLE_KEY ||
71+ process . env . SUPABASE_SECRET_KEY ||
72+ process . env . SUPABASE_ADMIN_KEY ||
73+ ( allowLocalSupabaseFallback ? 'local-service-role-key' : '' ) ;
74+
75+ if ( ! adminKey ) {
76+ throw new Error (
77+ 'Missing Supabase admin key. Set SUPABASE_SERVICE_ROLE_KEY, SUPABASE_SECRET_KEY, or SUPABASE_ADMIN_KEY.' ,
78+ ) ;
79+ }
80+
81+ return adminKey ;
82+ }
83+
3384/**
3485 * Standard client interface
3586 */
@@ -68,15 +119,9 @@ export interface AdminClient extends BitcodeOrmClient {
68119 * Create standard client
69120 */
70121export function createClient ( authToken ?: string ) : BitcodeOrmClient {
71- const publicKey =
72- process . env . NEXT_PUBLIC_SUPABASE_ANON_KEY ||
73- process . env . NEXT_PUBLIC_SUPABASE_PUBLISHABLE_KEY ||
74- process . env . SUPABASE_ANON_KEY ||
75- process . env . SUPABASE_PUBLISHABLE_KEY ;
76-
77122 const supabase = createSupabaseClient < Database > (
78- process . env . NEXT_PUBLIC_SUPABASE_URL ! ,
79- publicKey ! ,
123+ resolveSupabaseUrl ( ) ,
124+ resolveSupabasePublicKey ( ) ,
80125 {
81126 auth : {
82127 persistSession : false ,
@@ -117,14 +162,9 @@ export function createClient(authToken?: string): BitcodeOrmClient {
117162 * Create admin client for build-time operations
118163 */
119164export function createAdminClient ( ) : AdminClient {
120- const adminKey =
121- process . env . SUPABASE_SERVICE_ROLE_KEY ||
122- process . env . SUPABASE_SECRET_KEY ||
123- process . env . SUPABASE_ADMIN_KEY ;
124-
125165 const supabase = createSupabaseClient < Database > (
126- process . env . SUPABASE_URL ! ,
127- adminKey ! ,
166+ resolveSupabaseUrl ( ) ,
167+ resolveSupabaseAdminKey ( ) ,
128168 {
129169 auth : {
130170 persistSession : false ,
0 commit comments