Cache

Members

policy : Map<string|RegExp, number>

The cache policies that this application uses.

storage : any

Any object that can be used as storage, valid values can be {}, window.localStorage, window.sessionStorage or any class that can be used as a key/value storage.

Methods

constructor(storage)

Create a cache instance that can be used in the SDK.

  • storage should match the storage member;

const myCache = new Cache(window.localStorage)

async cache(key, callback)

Attempt to get a cached value based on a key, it is not found in the cache, create it from the callback function.

The callback function can be asynchronous.

const value = await myCache.cache('key', () => 'value')

invalidate(key)

Remove a key or a cache group from the cache.

  • key must be a string that matches the cache key or a regular expression;

myCache.invalidate('key')

// ... or

myCache.invalidate(/^key/)

addPolicy(key, lifespan)

Add a new cache policy to the cache object.

  • key must be a string that matches the cache key or a regular expression;

  • lifespan specifies for how long the cache object should be valid in seconds;

myCache.addPolicy('key', 300) // keep the object for 5 minutes

// ... or

myCache.addPolicy(/^key/, 300) // the same length as above but as a regex

static use(cacheBuilder)

Use a specific cache object for the global cache.

  • cacheBuilder must be a function that returns Cache;

Cache.use(() => myCache)

// ... or

Cache.use(() => new Cache(window.sessionStorage)
    .addPolicy(/^key/, 300)
    .addPolicy('other', 5))

static get()

Get the global cache object.

const globalCache = Cache.get()

Helpers

async function cache(key, callback)

Cache something globally.

This function is an alias for Cache.get().cache(key, callback).

const value = await cache('key', () => 'value')

function invalidate(key)

Invalidate something from global cache.

This function is an alias for Cache.get().invalidate(key).

escapePolicyPart(string)

Escape a variable to be used in a regex.

const value = '/-/' // this cannot be used in a regex without modifying it
const escapedValue = escapePoliciyPart(value)

Last updated