@wealthbar/data-cache
TypeScript icon, indicating that this package has built-in type declarations

1.1.0 • Public • Published

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.

Readme

Keywords

Package Sidebar

Install

npm i @wealthbar/data-cache

Weekly Downloads

1

Version

1.1.0

License

MIT

Unpacked Size

182 kB

Total Files

12

Last publish

Collaborators

  • nkode0x00
  • tanglebones
  • chrisnicola