import dotenv from "dotenv"; import { asBoolean, asNumber, required } from "./config-helpers"; // Carga de variables de entorno (.env). Si ya están en el entorno, no se sobreescriben. dotenv.config(); type NodeEnv = "development" | "test" | "production"; type DbSyncMode = "none" | "alter" | "force"; type DbDialect = "postgres" | "mysql" | "mariadb" | "mssql" | "sqlite"; const NODE_ENV = (process.env.NODE_ENV as NodeEnv) ?? "development"; const isProd = NODE_ENV === "production"; const isDev = NODE_ENV === "development"; const HOST = process.env.HOST ?? "0.0.0.0"; const SERVER_PORT = asNumber(process.env.SERVER_PORT, 3002); // En producción exigimos FRONTEND_URL definido (según requisitos actuales). const FRONTEND_URL = isProd ? required("FRONTEND_URL", process.env.FRONTEND_URL) : (process.env.FRONTEND_URL ?? "http://localhost:5173"); // Base de datos (dos modos: URL o parámetros sueltos) const DATABASE_URL = process.env.DATABASE_URL; // p.ej. postgres://user:pass@host:5432/dbname const DB_DIALECT = (process.env.DB_DIALECT as DbDialect | undefined) ?? "mysql"; const DB_HOST = process.env.DB_HOST ?? "localhost"; const DB_PORT = asNumber(process.env.DB_PORT, 3306); const DB_NAME = process.env.DB_NAME ?? ""; const DB_USER = process.env.DB_USER ?? ""; const DB_PASSWORD = process.env.DB_PASSWORD ?? ""; const DB_LOGGING = asBoolean(process.env.DB_LOGGING, false); // Modo de sincronización usado por model-loader.ts const DB_SYNC_MODE = (process.env.DB_SYNC_MODE as DbSyncMode | undefined) ?? (isProd ? "none" : "alter"); // Opcional: timezone para Sequelize (según necesidades) const APP_TIMEZONE = process.env.APP_TIMEZONE ?? "Europe/Madrid"; // Ruta raíz para plantillas (templates) const TEMPLATES_PATH = process.env.TEMPLATES_PATH ?? "./templates"; // Proxy (no usáis ahora, pero dejamos la variable por si se activa en el futuro) const TRUST_PROXY = asNumber(process.env.TRUST_PROXY, 0); export const ENV = { NODE_ENV, HOST, SERVER_PORT, FRONTEND_URL, DATABASE_URL, DB_DIALECT, DB_HOST, DB_PORT, DB_NAME, DB_USER, DB_PASSWORD, DB_LOGGING, DB_SYNC_MODE, APP_TIMEZONE, TRUST_PROXY, TEMPLATES_PATH, } as const; export const Flags = { isProd, isDev, isTest: NODE_ENV === "test", } as const;