1. /**
  2. * Maps runtime environment fields for validation checks with defensive checks.
  3. *
  4. * @param {object} env - An object containing runtime environment variables.
  5. * @returns {object} - An object containing validated environment variables.
  6. */
  7. function validateRuntimeEnvironment(env) {
  8. const validatedEnv = {};
  9. // Validate required fields with defensive checks
  10. if (!env.apiKey) {
  11. console.error("API Key is missing.");
  12. //Handle Missing API Key - e.g., throw an error, default value, etc.
  13. validatedEnv.apiKey = ""; // Default value if missing
  14. } else if (typeof env.apiKey !== 'string') {
  15. console.error("API Key must be a string.");
  16. validatedEnv.apiKey = ""; //Default value if invalid type.
  17. } else {
  18. validatedEnv.apiKey = env.apiKey;
  19. }
  20. if (!env.databaseUrl) {
  21. console.error("Database URL is missing.");
  22. validatedEnv.databaseUrl = ""; //Default value
  23. } else if (typeof env.databaseUrl !== 'string') {
  24. console.error("Database URL must be a string.");
  25. validatedEnv.databaseUrl = ""; //Default value
  26. } else {
  27. validatedEnv.databaseUrl = env.databaseUrl;
  28. }
  29. if (!env.appName) {
  30. console.error("App Name is missing.");
  31. validatedEnv.appName = "defaultApp"; // Default value
  32. } else if (typeof env.appName !== 'string') {
  33. console.error("App Name must be a string.");
  34. validatedEnv.appName = "defaultApp";
  35. }
  36. else{
  37. validatedEnv.appName = env.appName;
  38. }
  39. //Validate numeric fields with defensive checks
  40. if (env.port) {
  41. if (typeof env.port !== 'number' || !Number.isInteger(env.port) || env.port < 1 || env.port > 65535) {
  42. console.error("Port must be an integer between 1 and 65535.");
  43. validatedEnv.port = 8080; //Default value
  44. } else {
  45. validatedEnv.port = env.port;
  46. }
  47. } else {
  48. validatedEnv.port = 8080; //Default value
  49. }
  50. //Validate boolean fields
  51. if(env.debug){
  52. if(typeof env.debug !== 'boolean'){
  53. console.error("Debug must be a boolean value.");
  54. validatedEnv.debug = false;
  55. } else {
  56. validatedEnv.debug = env.debug;
  57. }
  58. } else {
  59. validatedEnv.debug = false; //Default value
  60. }
  61. return validatedEnv;
  62. }

Add your comment