@adventurelabs/scout-core
Version:
Core utilities and helpers for Adventure Labs Scout applications
63 lines (62 loc) • 1.81 kB
TypeScript
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;