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