19 lines
959 B
TypeScript
19 lines
959 B
TypeScript
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}`)
|
|
}
|
|
}
|