UNPKG

trojanhorse-js

Version:

A comprehensive JavaScript library for fetching, managing, and analyzing global threat intelligence from multiple open-source feeds and security news sources. Unlike its mythological namesake, this Trojan protects your digital fortress.

114 lines 3.38 kB
/// <reference types="node" /> import { EventEmitter } from 'events'; import { ThreatIndicator } from '../types'; export interface WebhookConfig { id: string; name: string; url: string; secret: string; events: WebhookEvent[]; headers?: Record<string, string>; timeout?: number; retries?: number; retryDelay?: number; enabled: boolean; filters?: WebhookFilter[]; rateLimit?: { maxRequests: number; windowMs: number; }; } export type WebhookEvent = 'threat.detected' | 'threat.high_confidence' | 'threat.critical' | 'feed.updated' | 'feed.error' | 'system.alert' | 'batch.completed' | 'correlation.completed'; export interface WebhookFilter { field: string; operator: 'equals' | 'contains' | 'greater_than' | 'less_than' | 'regex'; value: string | number; } export interface WebhookPayload { id: string; event: WebhookEvent; timestamp: string; data: any; metadata: { source: string; version: string; environment: string; }; } export interface WebhookDelivery { id: string; webhookId: string; event: WebhookEvent; payload: WebhookPayload; attempt: number; status: 'pending' | 'success' | 'failed' | 'retrying'; responseCode?: number; responseTime?: number; error?: string; createdAt: Date; deliveredAt?: Date; nextRetryAt?: Date; } export declare class WebhookManager extends EventEmitter { private webhooks; private deliveries; private rateLimiters; private retryQueue; private retryTimer?; constructor(); registerWebhook(config: WebhookConfig): void; unregisterWebhook(webhookId: string): boolean; updateWebhook(webhookId: string, updates: Partial<WebhookConfig>): boolean; triggerEvent(event: WebhookEvent, data: any, metadata?: any): Promise<void>; private deliverWebhook; private sendWebhook; private handleDeliveryFailure; private startRetryProcessor; private processRetryQueue; private checkRateLimit; private passesFilters; private getFieldValue; private evaluateFilter; private generateSignature; verifySignature(secret: string, payload: WebhookPayload, signature: string): boolean; private generateId; private validateWebhookConfig; getWebhookStats(webhookId?: string): any; getDeliveryHistory(webhookId?: string, limit?: number): WebhookDelivery[]; cleanupDeliveries(maxAge?: number): number; shutdown(): void; } export declare class WebhookEventBuilder { static threatDetected(result: any, target: string): { event: WebhookEvent; data: any; }; static highConfidenceThreat(indicator: ThreatIndicator, target: string): { event: WebhookEvent; data: any; }; static feedError(feedName: string, error: string): { event: WebhookEvent; data: any; }; static batchCompleted(summary: any): { event: WebhookEvent; data: any; }; } export declare function createWebhookManager(presets?: { slack?: { url: string; events?: WebhookEvent[]; }; discord?: { url: string; events?: WebhookEvent[]; }; teams?: { url: string; events?: WebhookEvent[]; }; custom?: WebhookConfig[]; }): WebhookManager; //# sourceMappingURL=WebhookManager.d.ts.map