config.ts 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. import "../src/plugins/dotenv.js";
  2. import { z } from "zod";
  3. // Создаем схему конфигурации с проверками и преобразованиями
  4. const ZConfigShema = z.object({
  5. PORT: z
  6. .string()
  7. .min(1, "PORT must be defined")
  8. .transform((val) => parseInt(val, 10)),
  9. LOGS_LEVEL: z.enum(["error", "warn", "info", "verbose", "debug", "silly"]),
  10. API_URL: z.string().min(1, "API_URL must be defined"),
  11. // DB
  12. DB_USER: z.string().min(1, "DB_USER must be defined"),
  13. DB_HOST: z.string().min(1, "DB_HOST must be defined"),
  14. DB_PORT: z
  15. .string()
  16. .min(1, "DB_PORT must be defined")
  17. .transform((val) => parseInt(val, 10)),
  18. DB_NAME: z.string().min(1, "DB_NAME must be defined"),
  19. DB_PASS: z.string().min(1, "DB_PASS must be defined"),
  20. // MAIL
  21. SMTP_HOST: z.string().min(1, "SMTP_HOST must be defined"),
  22. SMTP_PORT: z
  23. .string()
  24. .min(1, "SMTP_PORT must be defined")
  25. .transform((val) => parseInt(val, 10)),
  26. SMTP_USER: z.string().min(1, "SMTP_USER must be defined"),
  27. SMTP_PASS: z.string().min(1, "SMTP_PASS must be defined"),
  28. // AUTH
  29. JWT_ACCESS_SECRET: z.string().min(1, "JWT_ACCESS_SECRET must be defined"),
  30. JWT_REFRESH_SECRET: z.string().min(1, "JWT_REFRESH_SECRET must be defined"),
  31. PASSWORD_MAX_TRIES: z
  32. .string()
  33. .min(1, "PASSWORD_MAX_TRIES must be defined")
  34. .transform((val) => parseInt(val, 10)),
  35. ACCESS_TOKEN_LIFETIME_MINS: z
  36. .string()
  37. .min(1, "ACCESS_TOKEN_LIFETIME_MINS must be defined")
  38. .transform((val) => parseInt(val, 10)),
  39. REFRESH_TOKEN_LIFETIME_DAYS: z
  40. .string()
  41. .min(1, "REFRESH_TOKEN_LIFETIME_DAYS must be defined")
  42. .transform((val) => parseInt(val, 10)),
  43. // CONFIRM PINS
  44. CONFIRM_PIN_LIFETIME_MINS: z
  45. .string()
  46. .min(1, "CONFIRM_PIN_LIFETIME_MINS must be defined")
  47. .transform((val) => parseInt(val, 10)),
  48. CONFIRM_PIN_MAX_TRIES: z
  49. .string()
  50. .min(1, "CONFIRM_PIN_MAX_TRIES must be defined")
  51. .transform((val) => parseInt(val, 10)),
  52. });
  53. // Парсим и валидируем переменные окружения
  54. export const config = ZConfigShema.parse(process.env);