UNPKG

hook-engine

Version:

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

51 lines (50 loc) 2.33 kB
import { WebhookEvent, BatchWebhookEvent, EventFilter, EventRoute, BatchProcessingResult, EventTransformation } from './webhook'; export interface WebhookAdapter { getSignature(req: any): string | undefined; verifySignature(rawBody: Buffer, signature: string, secret: string): boolean; parsePayload(rawBody: Buffer): any; normalize(event: any, options?: NormalizationOptions): WebhookEvent; supportsBatch?: boolean; supportsFiltering?: boolean; supportsRouting?: boolean; supportsMultiTenant?: boolean; parseBatchPayload?(rawBody: Buffer): any[]; normalizeBatch?(events: any[], options?: BatchNormalizationOptions): BatchWebhookEvent; processBatch?(events: WebhookEvent[], options?: BatchProcessingOptions): Promise<BatchProcessingResult>; filterEvents?(events: WebhookEvent[], filter: EventFilter): WebhookEvent[]; routeEvent?(event: WebhookEvent, routes: EventRoute[]): EventRoute[]; extractTenant?(event: any, req?: any): string | undefined; validateTenant?(tenant: string, event: WebhookEvent): boolean; } export interface NormalizationOptions { tenant?: string; priority?: 'low' | 'normal' | 'high' | 'critical'; tags?: string[]; metadata?: Record<string, any>; includeRaw?: boolean; } export interface BatchNormalizationOptions extends NormalizationOptions { batchId?: string; preserveOrder?: boolean; skipInvalid?: boolean; } export interface BatchProcessingOptions { concurrency?: number; timeout?: number; retryFailures?: boolean; continueOnError?: boolean; transformations?: EventTransformation[]; } export interface AdvancedWebhookAdapter extends WebhookAdapter { supportsBatch: true; supportsFiltering: true; supportsRouting: true; supportsMultiTenant: true; parseBatchPayload(rawBody: Buffer): any[]; normalizeBatch(events: any[], options?: BatchNormalizationOptions): BatchWebhookEvent; processBatch(events: WebhookEvent[], options?: BatchProcessingOptions): Promise<BatchProcessingResult>; filterEvents(events: WebhookEvent[], filter: EventFilter): WebhookEvent[]; routeEvent(event: WebhookEvent, routes: EventRoute[]): EventRoute[]; extractTenant(event: any, req?: any): string | undefined; validateTenant(tenant: string, event: WebhookEvent): boolean; }