UNPKG

hook-engine

Version:

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

61 lines (60 loc) 2.21 kB
import { AdvancedWebhookAdapter, NormalizationOptions, BatchNormalizationOptions, BatchProcessingOptions } from '../types/adapter'; import { WebhookEvent, BatchWebhookEvent, EventFilter, EventRoute, BatchProcessingResult } from '../types/webhook'; export declare abstract class BaseAdvancedAdapter implements AdvancedWebhookAdapter { abstract getSignature(req: any): string | undefined; abstract verifySignature(rawBody: Buffer, signature: string, secret: string): boolean; abstract parsePayload(rawBody: Buffer): any; abstract normalize(event: any, options?: NormalizationOptions): WebhookEvent; supportsBatch: true; supportsFiltering: true; supportsRouting: true; supportsMultiTenant: true; /** * Parse batch payload - default implementation assumes array of events */ parseBatchPayload(rawBody: Buffer): any[]; /** * Normalize batch of events */ normalizeBatch(events: any[], options?: BatchNormalizationOptions): BatchWebhookEvent; /** * Process batch of events with advanced options */ processBatch(events: WebhookEvent[], options?: BatchProcessingOptions): Promise<BatchProcessingResult>; /** * Filter events based on criteria */ filterEvents(events: WebhookEvent[], filter: EventFilter): WebhookEvent[]; /** * Route event to matching routes */ routeEvent(event: WebhookEvent, routes: EventRoute[]): EventRoute[]; /** * Extract tenant from event - default implementation */ extractTenant(event: any, req?: any): string | undefined; /** * Validate tenant access */ validateTenant(tenant: string, event: WebhookEvent): boolean; /** * Process individual event - override in subclasses */ protected processEvent(event: WebhookEvent, timeout: number): Promise<void>; /** * Apply transformations to events */ private applyTransformations; /** * Apply single transformation */ private applyTransformation; /** * Apply JavaScript transformation */ private applyJavaScriptTransformation; /** * Utility: Chunk array into smaller arrays */ private chunkArray; }