/** * Application Configuration * DTOs for configuration */ import { LogLevel } from '../../domain/value-objects/LogLevel'; export interface TransportConfig { readonly type?: 'loki' | 'otlp'; readonly url: string; /** Exact OTLP logs endpoint; url remains the collector base URL. */ readonly logsUrl?: string; readonly tenantId?: string; readonly authToken?: string; readonly headers?: Record; readonly timeout?: number; readonly maxRetries?: number; readonly retryDelay?: number; readonly compression?: 'none' | 'gzip' | 'brotli' | 'snappy' | boolean; readonly compressionLevel?: number; readonly compressionThreshold?: number; readonly useWorkers?: boolean; readonly maxWorkers?: number; readonly workerTimeout?: number; readonly enableConnectionPooling?: boolean; readonly maxSockets?: number; } export interface BufferConfig { readonly maxSize?: number; readonly flushInterval?: number; readonly maxAge?: number; readonly autoFlush?: boolean; readonly maxMemoryMB?: number; } export interface FilterConfig { readonly levels?: LogLevel[]; readonly patterns?: RegExp[]; readonly samplingRate?: number; readonly maxMessageLength?: number; readonly maxContextBytes?: number; readonly sanitize?: boolean; readonly sensitivePatterns?: RegExp[]; } export interface CircuitBreakerConfig { readonly enabled?: boolean; readonly failureThreshold?: number; readonly resetTimeout?: number; readonly halfOpenRequests?: number; } export interface IntegrationsConfig { readonly winston?: boolean | WinstonIntegrationConfig; readonly pino?: boolean | PinoIntegrationConfig; readonly morgan?: boolean | MorganIntegrationConfig; readonly nodeRed?: boolean | NodeRedIntegrationConfig; } export interface WinstonIntegrationConfig { readonly enabled: boolean; readonly levels?: Record; } export interface PinoIntegrationConfig { readonly enabled: boolean; readonly messageKey?: string; readonly levelKey?: string; } export interface MorganIntegrationConfig { readonly enabled: boolean; readonly format?: string; } export interface NodeRedIntegrationConfig { readonly enabled: boolean; readonly nodeName?: string; readonly category?: string; } export interface PerformanceConfig { readonly shutdownTimeoutMillis?: number; readonly useWorkers?: boolean; readonly maxConcurrentFlushes?: number; readonly maxPendingBatches?: number; readonly compressionLevel?: number; readonly maxWorkers?: number; readonly workerTimeout?: number; } export interface DeadLetterQueueConfig { readonly enabled?: boolean; readonly type?: 'memory' | 'file'; readonly maxSize?: number; readonly maxFileSizeMB?: number; readonly maxRetries?: number; readonly basePath?: string; } export interface LogsInterceptorConfig { readonly transport: TransportConfig; readonly appName: string; readonly version?: string; readonly environment?: string; readonly labels?: Record; readonly dynamicLabels?: Record string | number>; readonly buffer?: BufferConfig; readonly filter?: FilterConfig; readonly circuitBreaker?: CircuitBreakerConfig; readonly integrations?: IntegrationsConfig; readonly performance?: PerformanceConfig; readonly deadLetterQueue?: DeadLetterQueueConfig; readonly enableMetrics?: boolean; readonly enableHealthCheck?: boolean; readonly interceptConsole?: boolean; readonly preserveOriginalConsole?: boolean; readonly debug?: boolean; readonly silentErrors?: boolean; } export interface ResolvedLogsInterceptorConfig { readonly transport: Required> & { compression: 'none' | 'gzip' | 'brotli' | 'snappy'; maxWorkers?: number; }; readonly appName: string; readonly version: string; readonly environment: string; readonly labels: Record; readonly dynamicLabels: Record string | number>; readonly buffer: Required; readonly filter: Required; readonly circuitBreaker: Required; readonly integrations: IntegrationsConfig; readonly performance: Required> & { maxWorkers?: number; }; readonly deadLetterQueue?: DeadLetterQueueConfig; readonly enableMetrics: boolean; readonly enableHealthCheck: boolean; readonly interceptConsole: boolean; readonly preserveOriginalConsole: boolean; readonly debug: boolean; readonly silentErrors: boolean; } //# sourceMappingURL=LogsInterceptorConfig.d.ts.map