UNPKG

netget

Version:

Rette Adepto/ Recibido Directamente.

71 lines (60 loc) 1.88 kB
// validateConfig.ts interface DomainEntry { domain: string; subdomain: string; email: string; sslMode: string; sslCertificate: string; sslCertificateKey: string; target: string; type: string; projectPath: string; owner: string; } interface DeployConfig { server: string; timestamp: number; domains: DomainEntry[]; } interface ValidationResult { isValid: boolean; errors: string[]; } export function validateDeployConfig(config: DeployConfig): ValidationResult { const errors: string[] = []; // Validación general if (!config.server || typeof config.server !== 'string') { errors.push("El campo 'server' es obligatorio y debe ser un string."); } if (!config.timestamp || typeof config.timestamp !== 'number') { errors.push("El campo 'timestamp' es obligatorio y debe ser un número."); } if (!Array.isArray(config.domains) || config.domains.length === 0) { errors.push("El campo 'domains' debe ser un arreglo con al menos un objeto."); return { isValid: errors.length === 0, errors }; // Evita forEach si no es arreglo } // Campos requeridos para cada dominio const requiredFields: (keyof DomainEntry)[] = [ "domain", "subdomain", "email", "sslMode", "sslCertificate", "sslCertificateKey", "target", "type", "projectPath", "owner" ]; config.domains.forEach((entry, index) => { requiredFields.forEach(field => { if (!(field in entry) || typeof entry[field] !== 'string' || (entry[field] as string).trim() === '') { errors.push(`'${field}' es obligatorio y debe ser un string válido en domains[${index}]`); } }); }); return { isValid: errors.length === 0, errors }; }