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,
} = {}
): dataCacheType
Returns 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,
}
): number
Convenience function to compute the weight of a "POJO".
dataCacheEvict({dataCache,key}):void
function dataCacheEvict(
{
dataCache,
key,
}: {
dataCache: dataCacheType,
key: string,
}
):void
Evicts key
from the dataCache
.
dataCacheReap({ dataCache,weight}):void
function dataCacheReap(
{
dataCache,
weight,
}: {
dataCache: dataCacheType,
weight: number,
}
): void
Remove 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,
}
): void
Adds 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 | undefined
Retrieves 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.