import dotenv from 'dotenv'; import { dirname, resolve } from 'path'; import { fileURLToPath } from 'url'; const __dirname = dirname(fileURLToPath(import.meta.url)); dotenv.config({ path: resolve(__dirname, '../../.env'), quiet: true }); function parseHttpsPort(val) { if (val === undefined || val === '') return 8443; if (val === 'false' || val === '0' || val === 'none' || val === 'disabled') return null; const n = Number(val); return Number.isInteger(n) && n > 0 ? n : 8443; } export default { port: Number(process.env.PORT) || 4208, httpsPort: parseHttpsPort(process.env.HTTPS_PORT), sqlStudioPort: Number(process.env.SQL_STUDIO_PORT) || 4210, httpsKeyPath: process.env.HTTPS_KEY_PATH || resolve(__dirname, '../../certs/key.pem'), httpsCertPath: process.env.HTTPS_CERT_PATH || resolve(__dirname, '../../certs/cert.pem'), logLevel: process.env.LOG_LEVEL || 'debug', bodyLimit: process.env.BODY_LIMIT || '100mb', corsOrigins: (process.env.CORS_ORIGINS || 'http://localhost:5173,https://quixpos.com,https://app.quixpos.com') .split(',') .map((s) => s.trim()) .filter(Boolean), frontendUrl: process.env.FRONTEND_URL || 'http://localhost:4209', googleClientId: process.env.GOOGLE_CLIENT_ID, implicitCreate: process.env.IMPLICIT_CREATE === 'true', jwtSecret: process.env.JWT_SECRET || 'fallback_secret_please_change_in_production', dbProvider: process.env.DB_PROVIDER || (process.env.SQLITE_PATH ? 'sqlite' : 'mssql'), openrouterApiUrl: process.env.OPENROUTER_API_URL, openrouterFreeKey: process.env.OPENROUTER_FREE_KEY, openrouterFreeModel: process.env.OPENROUTER_FREE_MODEL || 'openrouter/free', openrouterPaidModel: process.env.OPENROUTER_PAID_MODEL || 'openai/gpt-6-luna:floor', sqlite: { filename: process.env.SQLITE_PATH || process.env.SQLITE_FILENAME || resolve(__dirname, '../../data/dash.db'), }, mssql: { server: process.env.MSSQL_SERVER, database: process.env.MSSQL_DATABASE, user: process.env.MSSQL_USER, password: process.env.MSSQL_PASSWORD, port: Number(process.env.MSSQL_PORT) || 1433, encrypt: process.env.MSSQL_ENCRYPT === 'true', trustServerCertificate: process.env.MSSQL_TRUST_SERVER_CERTIFICATE === 'true', }, };