1. function validateConfig(config) {
  2. // Validate required fields
  3. if (!config.appName || typeof config.appName !== 'string' || config.appName.trim() === '') {
  4. return "Error: appName is required and must be a non-empty string.";
  5. }
  6. if (!config.logLevel || typeof config.logLevel !== 'string' || !['error', 'warn', 'info', 'debug', 'trace'].includes(config.logLevel.toLowerCase())) {
  7. return "Error: logLevel must be one of: error, warn, info, debug, trace.";
  8. }
  9. if (!config.logFile || typeof config.logFile !== 'string' || config.logFile.trim() === '') {
  10. return "Error: logFile is required and must be a non-empty string.";
  11. }
  12. if (!config.database.host || typeof config.database.host !== 'string' || config.database.host.trim() === '') {
  13. return "Error: database.host is required and must be a non-empty string.";
  14. }
  15. if (!config.database.port || typeof config.database.port !== 'number' || config.database.port < 1 || config.database.port > 65535) {
  16. return "Error: database.port must be a number between 1 and 65535.";
  17. }
  18. if (!config.database.user || typeof config.database.user !== 'string' || config.database.user.trim() === '') {
  19. return "Error: database.user is required and must be a non-empty string.";
  20. }
  21. if (!config.database.password || typeof config.database.password !== 'string' || config.database.password.trim() === '') {
  22. return "Error: database.password is required and must be a non-empty string.";
  23. }
  24. // Validate optional fields (if present)
  25. if (config.apiKey && typeof config.apiKey !== 'string' || config.apiKey.trim() === '') {
  26. return "Error: apiKey must be a non-empty string.";
  27. }
  28. if (config.timeout && typeof config.timeout !== 'number' || config.timeout <= 0) {
  29. return "Error: timeout must be a number greater than 0.";
  30. }
  31. return null; // Configuration is valid
  32. }

Add your comment