import * as z from "zod"; import { colorize } from "wasp/universal/ansiColors"; // PRIVATE API (SDK) export function ensureEnvSchema( data: unknown, schema: Schema, ): z.infer { const result = getValidatedEnvOrError(data, schema); if (result.success) { return result.data; } else { console.error(colorize("red", formatZodEnvError(result.error))); throw new Error("Error parsing environment variables"); } } // PRIVATE API (SDK, Vite config) export function getValidatedEnvOrError( env: unknown, schema: Schema, ): z.ZodSafeParseResult> { return schema.safeParse(env); } // PRIVATE API (SDK, Vite config) export function formatZodEnvError(error: z.ZodError): string { const flattenedIssues = z.flattenError(error); return [ "══ Env vars validation failed ══", "", // Top-level errors ...flattenedIssues.formErrors, "", // Errors per field ...Object.entries(flattenedIssues.fieldErrors).map( ([prop, error]) => `${prop} - ${error}`, ), "", "════════════════════════════════", ].join("\n"); }