move environment to src/environment add smtp env vars, move some other items
Some checks failed
Code quality checks / biome (push) Failing after 13s

This commit is contained in:
creations 2025-06-10 15:16:31 -04:00
parent 421043c9b5
commit 00a7417936
Signed by: creations
GPG key ID: 8F553AA4320FC711
30 changed files with 470 additions and 42 deletions

View file

@ -0,0 +1,50 @@
import { isValidEmail } from "./email";
import { isValidHostname, isValidPort } from "./general";
import type { MailerConfig } from "#types/config";
function validateMailerConfig(config: MailerConfig): {
isValid: boolean;
errors: string[];
} {
const errors: string[] = [];
const isValidSMTPAddress = isValidHostname(config.address);
if (!isValidSMTPAddress) {
errors.push(`Invalid SMTP address: ${config.address}`);
}
if (!isValidPort(config.port)) {
errors.push(
`Invalid SMTP port: ${config.port}. Port must be between 1 and 65535`,
);
}
if (!isValidEmail(config.from)) {
errors.push(`Invalid from email address: ${config.from}`);
}
if (!isValidEmail(config.username)) {
errors.push(`Invalid username email address: ${config.username}`);
}
if (!config.password || config.password.trim().length === 0) {
errors.push("SMTP password is required");
}
if (config.port === 465 && !config.secure) {
errors.push("Port 465 requires SMTP_SECURE=true");
}
if (config.port === 587 && config.secure) {
errors.push("Port 587 typically uses SMTP_SECURE=false with STARTTLS");
}
return {
isValid: errors.length === 0,
errors,
};
}
export { isValidPort, isValidEmail, validateMailerConfig };