Sifa professional network API (Fastify, AT Protocol, Jetstream) sifa.id/
at main 25 lines 781 B view raw
1import { z } from 'zod'; 2 3const envSchema = z.object({ 4 NODE_ENV: z.enum(['development', 'production', 'test']).default('development'), 5 PORT: z.coerce.number().default(3100), 6 PUBLIC_URL: z.string().url(), 7 DATABASE_URL: z.string(), 8 VALKEY_URL: z.string(), 9 SIFA_DID: z.string().startsWith('did:'), 10 JETSTREAM_URL: z.string().url(), 11 OAUTH_JWKS_PATH: z.string(), 12 GLITCHTIP_DSN: z.string().url().optional(), 13 GEONAMES_USERNAME: z.string().default('gxjansen'), 14 ADMIN_DIDS: z.string().optional(), 15}); 16 17export type Env = z.infer<typeof envSchema>; 18 19export function loadConfig(): Env { 20 const result = envSchema.safeParse(process.env); 21 if (!result.success) { 22 throw new Error(`Invalid environment variables:\n${result.error.format()}`); 23 } 24 return result.data; 25}