@limitrate/cli
Version:
CLI dashboard for LimitRate rate limiting inspection
64 lines (60 loc) • 1.38 kB
text/typescript
import { LimitRateEvent } from '@limitrate/core';
/**
* SQLite storage for LimitRate events
*/
interface StoredEvent extends LimitRateEvent {
id: number;
}
interface EventStats {
endpoint: string;
totalHits: number;
blocked: number;
slowdowns: number;
}
interface TopOffender {
user: string;
plan: string;
blocks: number;
}
declare class EventStorage {
private db;
constructor(dbPath?: string);
private initSchema;
/**
* Save an event to storage
*/
saveEvent(event: LimitRateEvent): void;
/**
* Get endpoint statistics
*/
getEndpointStats(): EventStats[];
/**
* Get top offenders (users with most blocks)
*/
getTopOffenders(limit?: number): TopOffender[];
/**
* Get recent events
*/
getRecentEvents(limit?: number): StoredEvent[];
/**
* Clean up events older than 48 hours
*/
cleanup(): void;
/**
* Get total event count
*/
getEventCount(): number;
/**
* Close database connection
*/
close(): void;
}
/**
* Get or create storage instance
*/
declare function getStorage(): EventStorage;
/**
* Save event (convenience function for middleware)
*/
declare function saveEvent(event: LimitRateEvent): void;
export { type EventStats, EventStorage, type StoredEvent, type TopOffender, getStorage, saveEvent };