UNPKG

token-guardian

Version:

A comprehensive solution for protecting and managing API tokens and secrets

101 lines (100 loc) 3.03 kB
import { Logger } from '../utils/Logger'; /** * Token usage event */ export interface TokenUsageEvent { /** Timestamp of the event */ timestamp: Date; /** Type of operation (e.g., 'api_call', 'authentication') */ operation: string; /** Source of the usage (e.g., IP address, service name) */ source: string; /** Success/failure status */ success: boolean; /** Additional context */ context?: Record<string, unknown>; } /** * Token fingerprint data */ export interface TokenFingerprint { /** Unique fingerprint hash */ hash: string; /** Token name/identifier */ tokenName: string; /** First seen timestamp */ firstSeen: Date; /** Last seen timestamp */ lastSeen: Date; /** Usage patterns */ patterns: { /** Common sources of usage */ sources: Set<string>; /** Common operations performed */ operations: Set<string>; /** Success rate */ successRate: number; /** Total usage count */ totalUsage: number; }; /** Usage history */ history: TokenUsageEvent[]; } /** * Service for fingerprinting and tracking token usage */ export declare class TokenFingerprinter { private logger; private fingerprints; private readonly maxHistoryLength; constructor(logger?: Logger, maxHistoryLength?: number); /** * Generate a fingerprint hash for a token * @param token Token to fingerprint * @returns Fingerprint hash */ private generateFingerprint; /** * Initialize fingerprint tracking for a token * @param token Token to track * @param tokenName Name/identifier for the token * @returns Fingerprint hash */ initializeTracking(token: string, tokenName: string): string; /** * Record a token usage event * @param fingerprint Token fingerprint * @param event Usage event details */ recordUsage(tokenHash: string, event: TokenUsageEvent): void; /** * Detect anomalous token usage patterns * @param fingerprint Token fingerprint * @param event Current usage event */ private detectAnomalies; /** * Get fingerprint data for a token * @param fingerprint Token fingerprint * @returns Fingerprint data or null if not found */ getFingerprint(fingerprint: string): TokenFingerprint | null; /** * Get usage history for a token * @param fingerprint Token fingerprint * @param limit Maximum number of events to return * @returns Array of usage events */ getUsageHistory(fingerprint: string, limit?: number): TokenUsageEvent[]; /** * Get usage patterns for a token * @param fingerprint Token fingerprint * @returns Usage patterns or null if not found */ getUsagePatterns(fingerprint: string): TokenFingerprint['patterns'] | null; /** * Remove tracking for a token * @param fingerprint Token fingerprint */ removeTracking(fingerprint: string): void; }