UNPKG

@thermopylae/lib.cache

Version:
50 lines (49 loc) 1.53 kB
import { Seconds, UnixTimestamp } from '@thermopylae/core.declarations'; import { CacheEntry } from '../../contracts/commons'; import { EXPIRES_AT_SYM } from '../../constants'; import { CacheReplacementPolicy, Deleter, EntryValidity } from '../../contracts/cache-replacement-policy'; /** * @private */ interface ExpirableCacheEntry<Key, Value> extends CacheEntry<Key, Value> { [EXPIRES_AT_SYM]?: UnixTimestamp; } /** * @private */ declare abstract class AbstractExpirationPolicy<Key, Value, ArgumentsBundle> implements CacheReplacementPolicy<Key, Value, ArgumentsBundle> { /** * Cache entry deleter. */ protected deleteFromCache: Deleter<Key, Value>; /** * @inheritDoc */ abstract onHit(entry: CacheEntry<Key, Value>): EntryValidity; /** * @inheritDoc */ onMiss(): void; /** * @inheritDoc */ abstract onSet(entry: CacheEntry<Key, Value>, argsBundle?: ArgumentsBundle): void; /** * @inheritDoc */ abstract onUpdate(entry: CacheEntry<Key, Value>, argsBundle?: ArgumentsBundle): void; /** * @inheritDoc */ onDelete(entry: ExpirableCacheEntry<Key, Value>): void; /** * @inheritDoc */ abstract onClear(): void; /** * @inheritDoc */ setDeleter(deleter: Deleter<Key, Value>): void; protected static setEntryExpiration<K, V>(entry: ExpirableCacheEntry<K, V>, expiresAfter: Seconds, expiresFrom?: UnixTimestamp): void; } export { AbstractExpirationPolicy, ExpirableCacheEntry };