const os = require('os'); const path = require('path'); require('dotenv').config({ path: path.resolve(__dirname, '../.env') }); const { validateEnv } = require('./utils/env-validation'); validateEnv(); const config = { gcloud: { bucket: 'fldemo-files', hash: 'afeefb9d49f5b7977577876b99532ac7', }, s3: { bucket: process.env.AWS_S3_BUCKET || '', region: process.env.AWS_S3_REGION || 'us-east-1', accessKeyId: process.env.AWS_ACCESS_KEY_ID || '', secretAccessKey: process.env.AWS_SECRET_ACCESS_KEY || '', prefix: process.env.AWS_S3_PREFIX || 'afeefb9d49f5b7977577876b99532ac7', // Timeout configuration (in milliseconds) connectionTimeout: parseInt(process.env.AWS_S3_CONNECTION_TIMEOUT, 10) || 5000, requestTimeout: parseInt(process.env.AWS_S3_REQUEST_TIMEOUT, 10) || 30000, // Retry configuration maxAttempts: parseInt(process.env.AWS_S3_MAX_ATTEMPTS, 10) || 3, // Connection pool configuration maxSockets: parseInt(process.env.AWS_S3_MAX_SOCKETS, 10) || 50, keepAlive: process.env.AWS_S3_KEEP_ALIVE !== 'false', // Presigned URL expiry (in seconds) presignExpirySeconds: parseInt(process.env.AWS_S3_PRESIGN_EXPIRY, 10) || 3600, }, bcrypt: { saltRounds: 12, }, admin_pass: process.env.ADMIN_PASS || '88dbeaf8', user_pass: process.env.USER_PASS || 'c3baadeda5c6', admin_email: process.env.ADMIN_EMAIL || 'admin@flatlogic.com', providers: { LOCAL: 'local', GOOGLE: 'google', MICROSOFT: 'microsoft', }, secret_key: process.env.SECRET_KEY || '88dbeaf8-e906-405e-9e41-c3baadeda5c6', remote: '', port: process.env.NODE_ENV === 'production' ? '' : '8080', hostUI: process.env.NODE_ENV === 'production' ? '' : 'http://localhost', portUI: process.env.NODE_ENV === 'production' ? '' : '3000', portUIProd: process.env.NODE_ENV === 'production' ? '' : ':3000', swaggerUI: process.env.NODE_ENV === 'production' ? '' : 'http://localhost', swaggerPort: process.env.NODE_ENV === 'production' ? '' : ':8080', google: { clientId: process.env.GOOGLE_CLIENT_ID || '', clientSecret: process.env.GOOGLE_CLIENT_SECRET || '', }, microsoft: { clientId: process.env.MS_CLIENT_ID || '', clientSecret: process.env.MS_CLIENT_SECRET || '', }, uploadDir: os.tmpdir(), email: { from: 'Tour Builder Platform ', host: 'email-smtp.us-east-1.amazonaws.com', port: 587, auth: { user: process.env.EMAIL_USER || '', pass: process.env.EMAIL_PASS, }, tls: { rejectUnauthorized: process.env.EMAIL_TLS_REJECT_UNAUTHORIZED !== 'false', }, }, roles: { admin: 'Administrator', user: 'Analytics Viewer', }, project_uuid: '88dbeaf8-e906-405e-9e41-c3baadeda5c6', flHost: process.env.NODE_ENV === 'production' || process.env.NODE_ENV === 'dev_stage' ? 'https://flatlogic.com/projects' : 'http://localhost:3000/projects', gpt_key: process.env.GPT_KEY || '', }; config.host = process.env.NODE_ENV === 'production' ? config.remote : 'http://localhost'; config.apiUrl = `${config.host}${config.port ? `:${config.port}` : ``}/api`; config.swaggerUrl = `${config.swaggerUI}${config.swaggerPort}`; config.uiUrl = `${config.hostUI}${config.portUI ? `:${config.portUI}` : ``}/#`; config.backUrl = `${config.hostUI}${config.portUI ? `:${config.portUI}` : ``}`; module.exports = config;