UNPKG

@adventurelabs/scout-core

Version:

Core utilities and helpers for Adventure Labs Scout applications

63 lines (62 loc) 1.81 kB
import { IHerdModule } from "../types/herd_module"; export interface CacheMetadata { key: string; timestamp: number; ttl: number; version: string; dbVersion: number; etag?: string; lastModified?: number; } export interface CacheResult<T> { data: T | null; isStale: boolean; age: number; metadata: CacheMetadata | null; } export interface CacheStats { size: number; lastUpdated: number; isStale: boolean; hitRate: number; totalHits: number; totalMisses: number; } export interface TimingStats { totalDuration: number; cacheLoad: number; herdModulesApi: number; userApi: number; cacheSave: number; dataProcessing: number; localStorage: number; } export interface DatabaseHealth { healthy: boolean; issues: string[]; } export declare class ScoutCache { private db; private initPromise; private stats; private init; private validateDatabaseSchema; setHerdModules(herdModules: IHerdModule[], ttlMs?: number, etag?: string): Promise<void>; getHerdModules(): Promise<CacheResult<IHerdModule[]>>; clearHerdModules(): Promise<void>; invalidateHerdModules(): Promise<void>; getCacheStats(): Promise<CacheStats>; isCacheValid(ttlMs?: number): Promise<boolean>; getCacheAge(): Promise<number>; shouldRefresh(maxAgeMs?: number, forceRefresh?: boolean): Promise<{ shouldRefresh: boolean; reason: string; }>; preloadCache(loadFunction: () => Promise<IHerdModule[]>, ttlMs?: number): Promise<void>; getDefaultTtl(): number; getCurrentDbVersion(): number; isCacheVersionCompatible(): Promise<boolean>; resetDatabase(): Promise<void>; checkDatabaseHealth(): Promise<DatabaseHealth>; } export declare const scoutCache: ScoutCache;