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
JavaScript
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