// @ts-checkimport { clientSchema } from './schema.mjs'/** * You can't destruct `process.env` as a regular object, so we do * a workaround. This is because Next.js evaluates this at build time, * and only used environment variables are included in the build. * @type {{ [key: string]: string | undefined; }} */let clientEnv = {}Object.keys(clientSchema.shape).forEach( (key) => (clientEnv[key] = process.env[key]),)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` }) .filter(Boolean)if (!_clientEnv.success) { console.error( '❌ Invalid environment variables:\n', ...formatErrors(_clientEnv.error.format()), ) throw new Error('Invalid environment variables')}for (let key of Object.keys(_clientEnv.data)) { if (!key.startsWith('NEXT_PUBLIC_')) { console.warn( `❌ Invalid public environment variable name: ${key}. It must begin with 'NEXT_PUBLIC_'`, ) throw new Error('Invalid public environment variable name') }}export const env = _clientEnv.data
// @ts-checkimport { clientSchema } from './schema.mjs'/** * You can't destruct `process.env` as a regular object, so we do * a workaround. This is because Next.js evaluates this at build time, * and only used environment variables are included in the build. * @type {{ [key: string]: string | undefined; }} */let clientEnv = {}Object.keys(clientSchema.shape).forEach( (key) => (clientEnv[key] = process.env[key]),)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` }) .filter(Boolean)if (!_clientEnv.success) { console.error( '❌ Invalid environment variables:\n', ...formatErrors(_clientEnv.error.format()), ) throw new Error('Invalid environment variables')}for (let key of Object.keys(_clientEnv.data)) { if (!key.startsWith('NEXT_PUBLIC_')) { console.warn( `❌ Invalid public environment variable name: ${key}. It must begin with 'NEXT_PUBLIC_'`, ) throw new Error('Invalid public environment variable name') }}export const env = _clientEnv.data