UNPKG

hook-engine

Version:

Production-grade webhook engine with comprehensive adapter support, security, reliability, structured logging, and CLI tools.

97 lines (96 loc) 2.48 kB
import { EventEmitter } from 'events'; import { WebhookSecurityConfig, RateLimitInfo, RateLimitStore, ValidationResult, SecurityAuditLog, SecurityMetrics } from '../types/security'; /** * In-memory rate limit store implementation */ export declare class MemoryRateLimitStore implements RateLimitStore { private store; get(key: string): Promise<RateLimitInfo | null>; set(key: string, info: RateLimitInfo, ttlMs: number): Promise<void>; increment(key: string, ttlMs: number): Promise<RateLimitInfo>; reset(key: string): Promise<void>; cleanup(): void; } /** * Comprehensive security manager for webhook processing */ export declare class SecurityManager extends EventEmitter { private config; private rateLimitStore; private auditLogs; private metrics; private cleanupInterval?; constructor(config: WebhookSecurityConfig); /** * Validate incoming request against all security policies */ validateRequest(req: any): Promise<ValidationResult>; /** * Validate IP address against allowlist */ private validateIP; /** * Check rate limits for the request */ private checkRateLimit; /** * Validate request content (headers, payload, etc.) */ private validateRequestContent; /** * Validate request size */ private validateRequestSize; /** * Validate timestamp in request */ private validateTimestamp; /** * Extract client IP from request */ private extractClientIP; /** * Check if IP is allowed */ private isIPAllowed; /** * Check if IP is in CIDR range */ private isIPInCIDR; /** * Convert IP address to integer */ private ipToInt; /** * Generate rate limit key for request */ private generateRateLimitKey; /** * Log security event */ private logSecurityEvent; /** * Update response time metrics */ private updateResponseTimeMetrics; /** * Get security metrics */ getMetrics(): SecurityMetrics; /** * Get recent audit logs */ getAuditLogs(limit?: number): SecurityAuditLog[]; /** * Reset rate limit for a specific key */ resetRateLimit(key: string): Promise<void>; /** * Get rate limit info for a key */ getRateLimitInfo(key: string): Promise<RateLimitInfo | null>; /** * Cleanup resources */ destroy(): void; }