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
TypeScript
/// <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