function validateConfig(config) {
// Validate required fields
if (!config.appName || typeof config.appName !== 'string' || config.appName.trim() === '') {
return "Error: appName is required and must be a non-empty string.";
}
if (!config.logLevel || typeof config.logLevel !== 'string' || !['error', 'warn', 'info', 'debug', 'trace'].includes(config.logLevel.toLowerCase())) {
return "Error: logLevel must be one of: error, warn, info, debug, trace.";
}
if (!config.logFile || typeof config.logFile !== 'string' || config.logFile.trim() === '') {
return "Error: logFile is required and must be a non-empty string.";
}
if (!config.database.host || typeof config.database.host !== 'string' || config.database.host.trim() === '') {
return "Error: database.host is required and must be a non-empty string.";
}
if (!config.database.port || typeof config.database.port !== 'number' || config.database.port < 1 || config.database.port > 65535) {
return "Error: database.port must be a number between 1 and 65535.";
}
if (!config.database.user || typeof config.database.user !== 'string' || config.database.user.trim() === '') {
return "Error: database.user is required and must be a non-empty string.";
}
if (!config.database.password || typeof config.database.password !== 'string' || config.database.password.trim() === '') {
return "Error: database.password is required and must be a non-empty string.";
}
// Validate optional fields (if present)
if (config.apiKey && typeof config.apiKey !== 'string' || config.apiKey.trim() === '') {
return "Error: apiKey must be a non-empty string.";
}
if (config.timeout && typeof config.timeout !== 'number' || config.timeout <= 0) {
return "Error: timeout must be a number greater than 0.";
}
return null; // Configuration is valid
}
Add your comment