UNPKG

voyage-and-consumption-mcp-server

Version:

Voyage and consumption management server handling vessel position tracking, ETA monitoring, fuel consumption, lube oil consumption, fresh water production and weather data

52 lines 2.16 kB
import dotenv from 'dotenv'; import path from 'path'; import fs from 'fs'; // Load environment-specific .env file const NODE_ENV = process.env.NODE_ENV || 'development'; const envPath = path.resolve(process.cwd(), `.env.${NODE_ENV}`); const defaultEnvPath = path.resolve(process.cwd(), '.env'); if (fs.existsSync(envPath)) { dotenv.config({ path: envPath }); } else { dotenv.config({ path: defaultEnvPath }); } // Parse and validate configuration function createConfig() { const config = { environment: NODE_ENV, companyName: '', }; // Process all environment variables Object.keys(process.env).forEach(envKey => { const camelCaseKey = envKey.match(/^[a-z][a-zA-Z0-9]*$/) ? envKey : envKey.toLowerCase().replace(/[_-]([a-z])/g, (_, letter) => letter.toUpperCase()); config[camelCaseKey] = process.env[envKey]; }); // Support both UPPER_SNAKE_CASE and camelCase for company name config.companyName = process.env.COMPANY_NAME || process.env.companyName || ''; // Create Typesense configuration object - support both UPPER_SNAKE_CASE and camelCase const typesenseHost = process.env.TYPESENSE_HOST || process.env.typesenseHost; const typesensePort = process.env.TYPESENSE_PORT || process.env.typesensePort; const typesenseProtocol = process.env.TYPESENSE_PROTOCOL || process.env.typesenseProtocol; const typesenseApiKey = process.env.TYPESENSE_API_KEY || process.env.typesenseApiKey; if (typesenseHost && typesensePort && typesenseProtocol && typesenseApiKey) { config.typesense = { nodes: [{ host: typesenseHost, port: parseInt(typesensePort.toString()), protocol: typesenseProtocol }], apiKey: typesenseApiKey, connectionTimeoutSeconds: 2 }; } // Validate required fields if (!config.companyName) { throw new Error('Company name is mandatory. Please provide it via COMPANY_NAME environment variable.'); } return config; } export const config = createConfig(); //# sourceMappingURL=index.js.map