Skip to content

Commit 41c7195

Browse files
Allow ORM build checks without Supabase secrets
1 parent 93ba4c2 commit 41c7195

1 file changed

Lines changed: 55 additions & 15 deletions

File tree

packages/orm/src/client.ts

Lines changed: 55 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -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
*/
70121
export 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
*/
119164
export 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

Comments
 (0)