|
@@ -0,0 +1,68 @@
|
|
|
|
+import "../src/plugins/dotenv.js";
|
|
|
|
+import { z } from "zod";
|
|
|
|
+
|
|
|
|
+// Создаем схему конфигурации с проверками и преобразованиями
|
|
|
|
+const ZConfigShema = z.object({
|
|
|
|
+ PORT: z
|
|
|
|
+ .string()
|
|
|
|
+ .min(1, "PORT must be defined")
|
|
|
|
+ .transform((val) => parseInt(val, 10)),
|
|
|
|
+ LOGS_LEVEL: z.enum(["silly", "verbose", "info", "warn", "error", "fatal"]),
|
|
|
|
+ API_URL: z.string().min(1, "API_URL must be defined"),
|
|
|
|
+
|
|
|
|
+ // DB
|
|
|
|
+ DB_USER: z.string().min(1, "DB_USER must be defined"),
|
|
|
|
+ DB_HOST: z.string().min(1, "DB_HOST must be defined"),
|
|
|
|
+ DB_PORT: z
|
|
|
|
+ .string()
|
|
|
|
+ .min(1, "DB_PORT must be defined")
|
|
|
|
+ .transform((val) => parseInt(val, 10)),
|
|
|
|
+ DB_NAME: z.string().min(1, "DB_NAME must be defined"),
|
|
|
|
+ DB_PASS: z.string().min(1, "DB_PASS must be defined"),
|
|
|
|
+
|
|
|
|
+ // MAIL
|
|
|
|
+ SMTP_HOST: z.string().min(1, "SMTP_HOST must be defined"),
|
|
|
|
+ SMTP_PORT: z
|
|
|
|
+ .string()
|
|
|
|
+ .min(1, "SMTP_PORT must be defined")
|
|
|
|
+ .transform((val) => parseInt(val, 10)),
|
|
|
|
+ SMTP_USER: z.string().min(1, "SMTP_USER must be defined"),
|
|
|
|
+ SMTP_PASS: z.string().min(1, "SMTP_PASS must be defined"),
|
|
|
|
+
|
|
|
|
+ // AUTH
|
|
|
|
+ JWT_ACCESS_SECRET: z.string().min(1, "JWT_ACCESS_SECRET must be defined"),
|
|
|
|
+ JWT_REFRESH_SECRET: z.string().min(1, "JWT_REFRESH_SECRET must be defined"),
|
|
|
|
+ PASSWORD_MAX_TRIES: z
|
|
|
|
+ .string()
|
|
|
|
+ .min(1, "PASSWORD_MAX_TRIES must be defined")
|
|
|
|
+ .transform((val) => parseInt(val, 10)),
|
|
|
|
+ ACCESS_TOKEN_LIFETIME_MINS: z
|
|
|
|
+ .string()
|
|
|
|
+ .min(1, "ACCESS_TOKEN_LIFETIME_MINS must be defined")
|
|
|
|
+ .transform((val) => parseInt(val, 10)),
|
|
|
|
+ REFRESH_TOKEN_LIFETIME_DAYS: z
|
|
|
|
+ .string()
|
|
|
|
+ .min(1, "REFRESH_TOKEN_LIFETIME_DAYS must be defined")
|
|
|
|
+ .transform((val) => parseInt(val, 10)),
|
|
|
|
+
|
|
|
|
+ // CONFIRM PINS
|
|
|
|
+ CONFIRM_PIN_LIFETIME_MINS: z
|
|
|
|
+ .string()
|
|
|
|
+ .min(1, "CONFIRM_PIN_LIFETIME_MINS must be defined")
|
|
|
|
+ .transform((val) => parseInt(val, 10)),
|
|
|
|
+ CONFIRM_PIN_MAX_TRIES: z
|
|
|
|
+ .string()
|
|
|
|
+ .min(1, "CONFIRM_PIN_MAX_TRIES must be defined")
|
|
|
|
+ .transform((val) => parseInt(val, 10)),
|
|
|
|
+
|
|
|
|
+ // UIDS
|
|
|
|
+ COMPANY_DEFAULT_ROLE_MANAGER_ID: z
|
|
|
|
+ .string()
|
|
|
|
+ .uuid("COMPANY_DEFAULT_ROLE_MANAGER_ID must be defined"),
|
|
|
|
+ COMPANY_DEFAULT_ROLE_EMPLOYEE_ID: z
|
|
|
|
+ .string()
|
|
|
|
+ .uuid("COMPANY_DEFAULT_ROLE_EMPLOYEE_ID must be defined"),
|
|
|
|
+});
|
|
|
|
+
|
|
|
|
+// Парсим и валидируем переменные окружения
|
|
|
|
+export const config = ZConfigShema.parse(process.env);
|