Press n or j to go to the next uncovered block, b, p or k for the previous block.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 | 6x | /**
* Log level types
*/
export type LogLevel = 'debug' | 'info' | 'warn' | 'error';
/**
* Log entry structure for persistence and dispatch
*/
export interface LogEntry {
/** Auto-increment ID for IndexedDB */
id?: number;
/** Log severity level */
level: LogLevel;
/** Log message */
message: string;
/** Optional context (e.g., service name) */
context?: string;
/** Additional data (sanitized before storage) */
data?: unknown;
/** When the log was created */
timestamp: Date;
/** Current page URL */
url?: string;
}
/**
* Options for querying logs from storage
*/
export interface GetLogsOptions {
/** Maximum number of logs to return */
limit?: number;
/** Filter logs from this date */
fromDate?: Date;
/** Filter logs until this date */
toDate?: Date;
/** Filter by specific log levels */
levels?: LogLevel[];
}
/**
* Base interface for log providers
* Providers receive log entries and handle them (console, IndexedDB, Sentry, etc.)
*/
export interface LogProvider {
/** Unique provider name for identification */
readonly name: string;
/** Whether provider is available (false on SSR for browser-only providers) */
readonly isAvailable: boolean;
/** Process a log entry */
log(entry: LogEntry): void;
/** Optional: flush buffered logs (for batch providers) */
flush?(): Promise<void>;
}
/**
* Extended interface for providers that store logs
* Used for IndexedDB and similar persistent storage
*/
export interface LogStorageProvider extends LogProvider {
/** Retrieve logs with optional filtering */
getLogs(options?: GetLogsOptions): Promise<LogEntry[]>;
/** Clear all stored logs */
clearLogs(): Promise<void>;
/** Get approximate storage size in bytes */
getStorageSize(): Promise<number>;
}
/**
* Type guard to check if a provider supports storage operations
*/
export function isStorageProvider(provider: LogProvider): provider is LogStorageProvider {
return 'getLogs' in provider && 'clearLogs' in provider && 'getStorageSize' in provider;
}
|