firewalla-mcp-server
Version:
Model Context Protocol (MCP) server for Firewalla MSP API - Provides real-time network monitoring, security analysis, and firewall management through 28 specialized tools compatible with any MCP client
92 lines • 3.3 kB
JavaScript
/**
* @fileoverview Environment variable utilities for configuration parsing
*
* Provides type-safe utilities for parsing and validating environment variables
* with appropriate error handling and default values.
*/
import { logger } from '../monitoring/logger.js';
/**
* Gets a required environment variable or throws an error if not found
*
* @param name - The environment variable name
* @returns The environment variable value
* @throws {Error} If the environment variable is not set or empty
*/
export function getRequiredEnvVar(name) {
const value = process.env[name];
if (!value) {
throw new Error(`Required environment variable ${name} is not set`);
}
return value;
}
/**
* Gets an optional environment variable with a fallback default value
*
* @param name - The environment variable name
* @param defaultValue - The default value to use if not set
* @returns The environment variable value or default
*/
export function getOptionalEnvVar(name, defaultValue) {
return process.env[name] || defaultValue;
}
/**
* Safely parses an environment variable to an integer with validation
*
* @param name - The environment variable name to parse
* @param defaultValue - The default value to use if parsing fails
* @param min - Optional minimum value for validation
* @param max - Optional maximum value for validation
* @returns The parsed integer value or the default value
* @throws {Error} If the parsed value is outside the valid range
*/
export function getOptionalEnvInt(name, defaultValue, min, max) {
const envValue = process.env[name];
if (envValue === undefined || envValue === '') {
return defaultValue;
}
const parsed = parseInt(envValue, 10);
if (!Number.isFinite(parsed)) {
logger.warn(`Invalid numeric value for environment variable`, {
environment_variable: name,
invalid_value: envValue,
default_value: defaultValue,
action: 'using_default',
});
return defaultValue;
}
if (min !== undefined && parsed < min) {
throw new Error(`Environment variable ${name} must be at least ${min}, got: ${parsed}`);
}
if (max !== undefined && parsed > max) {
throw new Error(`Environment variable ${name} must be at most ${max}, got: ${parsed}`);
}
return parsed;
}
/**
* Safely parses an environment variable to a boolean with validation
*
* @param name - The environment variable name to parse
* @param defaultValue - The default value to use if parsing fails
* @returns The parsed boolean value or default
*/
export function getOptionalEnvBoolean(name, defaultValue) {
const envValue = process.env[name];
if (envValue === undefined || envValue === '') {
return defaultValue;
}
const normalized = envValue.toLowerCase().trim();
if (['true', '1', 'yes', 'on'].includes(normalized)) {
return true;
}
if (['false', '0', 'no', 'off'].includes(normalized)) {
return false;
}
logger.warn(`Invalid boolean value for environment variable`, {
environment_variable: name,
invalid_value: envValue,
default_value: defaultValue,
action: 'using_default',
});
return defaultValue;
}
//# sourceMappingURL=env.js.map