Configuration Types

TypeScript interfaces for application configuration. Ensures type-safe access to settings throughout the application.

Core Purpose

  • Define configuration structure
  • Provide type safety for settings
  • Enable IDE IntelliSense
  • Support validation schemas

Main Interface

interface Config {
    server: ServerConfig
    airs: AirsConfig
    cache: CacheConfig
    rateLimit: RateLimitConfig
    mcp: McpConfig
}

Configuration Categories

Server Config

interface ServerConfig {
    port: number
    environment: 'development' | 'production' | 'test'
    logLevel: 'error' | 'warn' | 'info' | 'debug'
}

AIRS Config

interface AirsConfig {
    apiUrl: string
    apiKey: string
    timeout: number
    retryAttempts: number
    retryDelay: number
    defaultProfileId?: string
    defaultProfileName?: string
}

Cache Config

interface CacheConfig {
    enabled: boolean
    ttlSeconds: number
    maxSize: number  // in MB
}

Rate Limit Config

interface RateLimitConfig {
    enabled: boolean
    maxRequests: number
    windowMs: number
}

MCP Config

interface McpConfig {
    serverName: string
    serverVersion: string
    protocolVersion: string
}

Integration in Application

  • Used By: Config module, all components
  • Pattern: Singleton configuration object
  • Validation: Zod schema validation
  • Loading: Environment variables

Type Safety Benefits

// Compile-time checking
const port: number = config.server.port;
const apiKey: string = config.airs.apiKey;

// IDE autocomplete
config.cache.// ttlSeconds, maxSize, enabled

// Type errors caught
config.server.port = "3000"; // Error: string not assignable to number

Usage Example

import { Config } from './types';

function setupServer(config: Config) {
    const { port, environment } = config.server;
    
    if (environment === 'production') {
        // Production setup
    }
    
    return createServer(port);
}

// Type-safe access
const cacheEnabled = config.cache.enabled;
const rateLimits = config.rateLimit.maxRequests;