Files
web/env/client.mjs
2024-02-07 11:58:54 +01:00

37 lines
938 B
JavaScript

// @ts-check
import { clientEnv, clientSchema } from './schema.mjs'
const _clientEnv = clientSchema.safeParse(clientEnv)
export const formatErrors = (
/** @type {import('zod').ZodFormattedError<Map<string,string>,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