@thermopylae/lib.cache
Version:
68 lines (57 loc) • 1.36 kB
TypeScript
import { UnixTimestamp } from '@thermopylae/core.declarations';
import { EXPIRES_AT_SYM } from '../constants';
/**
* Callback invoked when entry expires.
*/
declare type EntryExpiredCallback<T> = (entry: T) => void;
/**
* @private
*/
declare interface ExpirableEntry {
[EXPIRES_AT_SYM]: UnixTimestamp;
}
/**
* Garbage Collector manages expiration for a set of entries.
*
* @template T Type of the entry.
*/
declare interface GarbageCollector<T extends ExpirableEntry> {
/**
* Manage entry expiration.
*
* @param entry Entry to be managed.
*/
manage(entry: T): void;
/**
* Notify GC about expiration change of the managed entry.
*
* @param oldExpiration Old expiration of the *entry*.
* @param entry Managed entry containing new expiration.
*/
update(oldExpiration: UnixTimestamp, entry: T): void;
/**
* Leaves entry without expiration, by un-managing it.
*
* @param entry Entry to be un-managed.
*/
leave(entry: T): void;
/**
* Clear all managed entries.
*/
clear(): void;
/**
* Register callback invoked when entry expires.
*
* @param cb Callback.
*/
setEntryExpiredCallback(cb: EntryExpiredCallback<T>): void;
/**
* Number of managed entries.
*/
size: number;
/**
* Whether GC is idle.
*/
idle: boolean;
}
export { GarbageCollector, ExpirableEntry, EntryExpiredCallback };