21 lines
566 B
TypeScript
21 lines
566 B
TypeScript
import { IsString, IsUrl, validateSync } from 'class-validator';
|
|
import { plainToInstance } from 'class-transformer';
|
|
|
|
export class EnvironmentVariables {
|
|
@IsString()
|
|
NODE_ENV: string;
|
|
|
|
@IsUrl({ protocols: ['postgres', 'postgresql'], require_tld: false })
|
|
DATABASE_URL: string;
|
|
}
|
|
|
|
export function validate(config: Record<string, any>) {
|
|
const validatedConfig = plainToInstance(EnvironmentVariables, config);
|
|
|
|
const errors = validateSync(validatedConfig);
|
|
if (errors.length > 0) {
|
|
throw new Error(errors.toString());
|
|
}
|
|
return validatedConfig;
|
|
}
|