/** * Dragonfly (Redis replacement) configuration using envalid * High-performance caching and event streaming */ import { cleanEnv, str, port, bool, num } from 'envalid'; /** * Dragonfly configuration with validation and defaults */ export const dragonflyConfig = cleanEnv(process.env, { // Dragonfly Connection DRAGONFLY_HOST: str({ default: 'localhost', desc: 'Dragonfly host' }), DRAGONFLY_PORT: port({ default: 6379, desc: 'Dragonfly port' }), DRAGONFLY_PASSWORD: str({ default: '', desc: 'Dragonfly password (if auth enabled)' }), DRAGONFLY_USERNAME: str({ default: '', desc: 'Dragonfly username (if ACL enabled)' }), // Database Selection DRAGONFLY_DATABASE: num({ default: 0, desc: 'Dragonfly database number (0-15)' }), // Connection Pool Settings DRAGONFLY_MAX_RETRIES: num({ default: 3, desc: 'Maximum retry attempts' }), DRAGONFLY_RETRY_DELAY: num({ default: 50, desc: 'Retry delay in ms' }), DRAGONFLY_CONNECT_TIMEOUT: num({ default: 10000, desc: 'Connection timeout in ms' }), DRAGONFLY_COMMAND_TIMEOUT: num({ default: 5000, desc: 'Command timeout in ms' }), // Pool Configuration DRAGONFLY_POOL_SIZE: num({ default: 10, desc: 'Connection pool size' }), DRAGONFLY_POOL_MIN: num({ default: 1, desc: 'Minimum pool connections' }), DRAGONFLY_POOL_MAX: num({ default: 20, desc: 'Maximum pool connections' }), // TLS Settings DRAGONFLY_TLS: bool({ default: false, desc: 'Enable TLS for Dragonfly connection' }), DRAGONFLY_TLS_CERT_FILE: str({ default: '', desc: 'Path to TLS certificate file' }), DRAGONFLY_TLS_KEY_FILE: str({ default: '', desc: 'Path to TLS key file' }), DRAGONFLY_TLS_CA_FILE: str({ default: '', desc: 'Path to TLS CA certificate file' }), DRAGONFLY_TLS_SKIP_VERIFY: bool({ default: false, desc: 'Skip TLS certificate verification' }), // Performance Settings DRAGONFLY_ENABLE_KEEPALIVE: bool({ default: true, desc: 'Enable TCP keepalive' }), DRAGONFLY_KEEPALIVE_INTERVAL: num({ default: 60, desc: 'Keepalive interval in seconds' }), // Clustering (if using cluster mode) DRAGONFLY_CLUSTER_MODE: bool({ default: false, desc: 'Enable cluster mode' }), DRAGONFLY_CLUSTER_NODES: str({ default: '', desc: 'Comma-separated list of cluster nodes (host:port)' }), // Memory and Cache Settings DRAGONFLY_MAX_MEMORY: str({ default: '2gb', desc: 'Maximum memory usage' }), DRAGONFLY_CACHE_MODE: bool({ default: true, desc: 'Enable cache mode' }), }); // Export typed configuration object export type DragonflyConfig = typeof dragonflyConfig; // Export individual config values for convenience export const { DRAGONFLY_HOST, DRAGONFLY_PORT, DRAGONFLY_PASSWORD, DRAGONFLY_USERNAME, DRAGONFLY_DATABASE, DRAGONFLY_MAX_RETRIES, DRAGONFLY_RETRY_DELAY, DRAGONFLY_CONNECT_TIMEOUT, DRAGONFLY_COMMAND_TIMEOUT, DRAGONFLY_POOL_SIZE, DRAGONFLY_POOL_MIN, DRAGONFLY_POOL_MAX, DRAGONFLY_TLS, DRAGONFLY_TLS_CERT_FILE, DRAGONFLY_TLS_KEY_FILE, DRAGONFLY_TLS_CA_FILE, DRAGONFLY_TLS_SKIP_VERIFY, DRAGONFLY_ENABLE_KEEPALIVE, DRAGONFLY_KEEPALIVE_INTERVAL, DRAGONFLY_CLUSTER_MODE, DRAGONFLY_CLUSTER_NODES, DRAGONFLY_MAX_MEMORY, DRAGONFLY_CACHE_MODE, } = dragonflyConfig;