Files
Dungeons-Ground/apps/web/server/utils/runtime-config.ts
pavel444-byte 438e5af0ad
Some checks failed
CI / validate (push) Failing after 9m21s
Important Fixes, New mechanics, and many more
2026-08-15 17:37:57 +05:00

25 lines
1.2 KiB
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}`)
}
const serverOrigin = new URL(result.data.supabaseUrl).origin
const publicOrigin = new URL(result.data.public.supabaseUrl).origin
if (serverOrigin !== publicOrigin) {
throw new Error('Invalid Supabase runtime configuration: SUPABASE_URL and NUXT_PUBLIC_SUPABASE_URL must point to the same project')
}
}