import dotenv from 'dotenv';
import { z } from 'zod';
// Load environment variables
dotenv.config();
// Environment schema validation
const envSchema = z.object({
POCKETBASE_URL: z.string().url('Invalid PocketBase URL'),
SUPER_USER_LOGIN: z.string().email('Invalid superuser email'),
SUPER_USER_PASSWORD: z.string().min(1, 'Superuser password is required'),
NODE_ENV: z.enum(['development', 'production', 'test']).default('development'),
LOG_LEVEL: z.enum(['debug', 'info', 'warn', 'error']).default('info'),
});
// Parse and validate environment variables
function parseEnv() {
try {
return envSchema.parse(process.env);
}
catch (error) {
if (error instanceof z.ZodError) {
const errors = error.errors.map((err) => `${err.path.join('.')}: ${err.message}`);
throw new Error(`Environment validation failed:\n${errors.join('\n')}`);
}
throw error;
}
}
export const config = parseEnv();
// Configuration object with typed access
export const appConfig = {
pocketbase: {
url: config.POCKETBASE_URL,
superuser: {
email: config.SUPER_USER_LOGIN,
password: config.SUPER_USER_PASSWORD,
},
},
server: {
environment: config.NODE_ENV,
logLevel: config.LOG_LEVEL,
isDevelopment: config.NODE_ENV === 'development',
isProduction: config.NODE_ENV === 'production',
isTest: config.NODE_ENV === 'test',
},
};
//# sourceMappingURL=config.js.map