config.ts 2.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  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(["silly", "verbose", "info", "warn", "error", "fatal"]),
  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. // UIDS
  53. COMPANY_DEFAULT_ROLE_MANAGER_ID: z
  54. .string()
  55. .uuid("COMPANY_DEFAULT_ROLE_MANAGER_ID must be defined"),
  56. COMPANY_DEFAULT_ROLE_EMPLOYEE_ID: z
  57. .string()
  58. .uuid("COMPANY_DEFAULT_ROLE_EMPLOYEE_ID must be defined"),
  59. });
  60. // Парсим и валидируем переменные окружения
  61. export const config = ZConfigShema.parse(process.env);