UNPKG

create-apppaaaul

Version:

Create projects as paaauldev would

45 lines (35 loc) 1.38 kB
import { z } from "zod"; const envSchema = z.object({ DATABASE_URL: z.url(), BETTER_AUTH_URL: z.url(), RESEND_API_KEY: z.string().min(1), RESEND_FROM_EMAIL: z.email(), GOOGLE_CLIENT_ID: z.string().min(1), GOOGLE_CLIENT_SECRET: z.string().min(1), NODE_ENV: z.enum(["development", "production"]).default("development"), // Cloudflare R2 variables CLOUDFLARE_ACCESS_KEY: z.string().min(1).optional(), CLOUDFLARE_SECRET_KEY: z.string().min(1).optional(), CLOUDFLARE_ENDPOINT: z.url().optional(), CLOUDFLARE_BUCKET: z.string().min(1).optional(), CLOUDFLARE_ACCOUNT_ID: z.string().min(1).optional(), CLOUDFLARE_PUBLIC_URL: z.url().optional(), }); export type Env = z.infer<typeof envSchema>; function validateEnv(): Env { try { return envSchema.parse(process.env); } catch (error) { if (error instanceof z.ZodError) { const missingVars = error.issues.map((issue) => `${issue.path.join(".")}: ${issue.message}`); console.error("❌ Invalid environment variables:"); missingVars.forEach((err) => console.error(` - ${err}`)); process.exit(1); } throw error; } } export const env = validateEnv(); // Helper to check if we're in development export const isDevelopment = env.NODE_ENV === "development"; export const isProduction = env.NODE_ENV === "production";