@wealthbar/data-cache v1.1.0
data-cache
Provides a client side in-memory, limited size, data cache for storing results from server calls. It uses least-recently accessed (with a maximum) eviction algorithm instead of strict LRU.
dataCacheCtor({maxWeight,maxAccessed}): dataCacheType
function dataCacheCtor(
{
maxWeight,
maxAccessed,
}: {
maxWeight?: number,
maxAccessed?: number,
} = {}
): dataCacheTypeReturns a new dataCache. maxWeight defaults to 1000000 and maxAccessed defaults to 8. "Weight" is used
instead of a specific size measurement; dataCacheObjectWeight is provided as a default method for computing the
relative space requirements of an object and it's lookup key. Since we can't assume all objects stored will be
JSON serializable (or that the user wants to take that performance hit) the user is still responsible for providing
the weight of each entry in the cache (including the key size).
dataCacheObjectWeight({key,entry}):number
function dataCacheObjectWeight(
{
key,
entry,
}: {
key: string,
entry: object | undefined,
}
): numberConvenience function to compute the weight of a "POJO".
dataCacheEvict({dataCache,key}):void
function dataCacheEvict(
{
dataCache,
key,
}: {
dataCache: dataCacheType,
key: string,
}
):voidEvicts key from the dataCache.
dataCacheReap({ dataCache,weight}):void
function dataCacheReap(
{
dataCache,
weight,
}: {
dataCache: dataCacheType,
weight: number,
}
): voidRemove entries from the cache until a new entry of weight can be added without exceeding the maxWeight.
This will throw if weight exceeded maxWeight (i.e. the entry can't fit in the cache).
dataCachePut({dataCache,key,entry,weight}):void
function dataCachePut(
{
dataCache,
key,
entry,
weight,
}: {
dataCache: dataCacheType,
key: string,
entry: object | undefined,
weight: number,
}
): voidAdds an entry to the dataCache under the key key, evicting if needed to accommodate its weight.
dataCacheGet({dataCache,key,peek}): object | undefined
function dataCacheGet(
{
dataCache,
key,
peek,
}: {
dataCache: dataCacheType,
key: string,
peek?: boolean,
}
): object | undefinedRetrieves an entry from the dataCache under the key key. If peek is true the access count is not
incremented. If the entry is not in the cache (evicted or never been added) undefined is returned.