This commit is contained in:
18
apps/web/server/utils/runtime-config.ts
Normal file
18
apps/web/server/utils/runtime-config.ts
Normal file
@@ -0,0 +1,18 @@
|
||||
import { z } from 'zod'
|
||||
|
||||
const RequiredSupabaseConfigSchema = z.object({
|
||||
supabaseUrl: z.string({ error: 'SUPABASE_URL is required' }).trim().url('SUPABASE_URL must be a valid URL'),
|
||||
supabaseServiceRoleKey: z.string({ error: 'SUPABASE_SERVICE_ROLE_KEY is required' }).trim().min(1, 'SUPABASE_SERVICE_ROLE_KEY is required'),
|
||||
public: z.object({
|
||||
supabaseUrl: z.string({ error: 'NUXT_PUBLIC_SUPABASE_URL is required' }).trim().url('NUXT_PUBLIC_SUPABASE_URL must be a valid URL'),
|
||||
supabaseAnonKey: z.string({ error: 'NUXT_PUBLIC_SUPABASE_ANON_KEY is required' }).trim().min(1, 'NUXT_PUBLIC_SUPABASE_ANON_KEY is required'),
|
||||
}),
|
||||
})
|
||||
|
||||
export function assertRequiredSupabaseConfig(config: unknown): void {
|
||||
const result = RequiredSupabaseConfigSchema.safeParse(config)
|
||||
if (!result.success) {
|
||||
const details = result.error.issues.map(issue => issue.message).join('; ')
|
||||
throw new Error(`Invalid Supabase runtime configuration: ${details}`)
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user