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
TypeScript
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;
}