strong-tie/inbound-calls
0
1export type CacheConstructor<T> = new (max?: number, ttlInMsecs?: number, cacheId?: string, cacheStatistics?: HitStatisticsRecord) => T2 3export type CacheEntry<T> = {4 expiry: number5 key: any6 prev: CacheEntry<T> | null7 next: CacheEntry<T> | null8 value: T9}10 11export interface ToadCache<T> {12 first: any;13 last: any;14 max: number;15 ttl: number;16 size: number;17 clear(): void;18 delete(key: any): void;19 deleteMany(keys: any[]): void;20 evict(): void;21 expiresAt(key: any): any;22 keys(): any;23 get(key: any): T | undefined;24 getMany(keys: any[]): (T | undefined)[];25 set(key: any, value: T): void;26}27 28export class FifoMap<T> implements ToadCache<T>{29 constructor(max?: number, ttlInMsecs?: number);30 first: any;31 items: Map<any, T>;32 last: any;33 max: number;34 ttl: number;35 size: number;36 clear(): void;37 delete(key: any): void;38 deleteMany(keys: any[]): void;39 evict(): void;40 expiresAt(key: any): any;41 get(key: any): T | undefined;42 getMany(keys: any[]): (T | undefined)[];43 keys(): IterableIterator<any>;44 set(key: any, value: T): void;45}46 47export class FifoObject<T> implements ToadCache<T> {48 constructor(max?: number, ttlInMsecs?: number);49 first: any;50 items: Record<any, CacheEntry<T>>;51 last: any;52 size: number;53 max: number;54 ttl: number;55 clear(): void;56 delete(key: any): void;57 deleteMany(keys: any[]): void;58 evict(): void;59 expiresAt(key: any): any;60 get(key: any): T | undefined;61 getMany(keys: any[]): (T | undefined)[];62 keys(): string[];63 set(key: any, value: T): void;64}65 66export class LruMap<T> implements ToadCache<T> {67 constructor(max?: number, ttlInMsecs?: number);68 first: any;69 items: Map<any, T>;70 last: any;71 max: number;72 ttl: number;73 size: number;74 clear(): void;75 delete(key: any): void;76 deleteMany(keys: any[]): void;77 evict(): void;78 expiresAt(key: any): any;79 get(key: any): T | undefined;80 getMany(keys: any[]): (T | undefined)[];81 keys(): IterableIterator<any>;82 set(key: any, value: T): void;83}84 85export class LruObject<T> implements ToadCache<T> {86 constructor(max?: number, ttlInMsecs?: number);87 first: any;88 items: Record<any, CacheEntry<T>>;89 last: any;90 size: number;91 max: number;92 ttl: number;93 94 clear(): void;95 delete(key: any): void;96 deleteMany(keys: any[]): void;97 evict(): void;98 expiresAt(key: any): any;99 get(key: any): T | undefined;100 getMany(keys: any[]): (T | undefined)[];101 keys(): string[];102 set(key: any, value: T): void;103}104 105export class HitStatisticsRecord {106 records: Record<string, Record<string, {107 expirations: number,108 evictions: number,109 hits: number,110 emptyHits: number,111 falsyHits: number,112 misses: number,113 invalidateAll: number,114 invalidateOne: number,115 cacheSize: number,116 sets: number,117 }>>118 119 initForCache(cacheId: string, currentTimeStamp: string): void120 resetForCache(cacheId: string): void121}122 123export class LruObjectHitStatistics<T> extends LruObject<T>{124 constructor(max?: number, ttlInMsecs?: number, cacheId?: string, globalStatisticsRecord?: HitStatisticsRecord, statisticTtlInHours?: number);125}126 127export { FifoObject as Fifo }128export { LruObject as Lru }129 