// @ts-check import { clientEnv, clientSchema } from './schema.mjs' const _clientEnv = clientSchema.safeParse(clientEnv) export const formatErrors = ( /** @type {import('zod').ZodFormattedError,string>} */ errors ) => Object.entries(errors) .map(([name, value]) => { if (value && '_errors' in value) { return `${name}: ${value._errors.join(', ')}\n` } return null }) .filter(Boolean) if (!_clientEnv.success) { const msg = [ '❌ Invalid environment variables [Client]:\n', ...formatErrors(_clientEnv.error.format()), ].join('') console.error(msg) throw new Error(msg) } for (let key of Object.keys(_clientEnv.data)) { if (!key.startsWith('NEXT_PUBLIC_')) { const msg = `❌ Invalid public environment variable name: ${key}. It must begin with 'NEXT_PUBLIC_'` console.warn(msg) throw new Error(msg) } } export const env = _clientEnv.data