Optional
allowAllow LRUCache#get and LRUCache#fetch calls to return stale data, if available.
Optional
allowSet to true to return a stale value from the cache when the
AbortSignal
passed to the OptionsBase.fetchMethod dispatches an 'abort'
event, whether user-triggered, or due to internal cache behavior.
Unless OptionsBase.ignoreFetchAbort is also set, the underlying OptionsBase.fetchMethod will still be considered canceled, and any value it returns will be ignored and not cached.
Caveat: since fetches are aborted when a new value is explicitly
set in the cache, this can lead to fetch returning a stale value,
since that was the fallback value at the moment the fetch()
was
initiated, even though the new updated value is now present in
the cache.
For example:
const cache = new LRUCache<string, any>({
ttl: 100,
fetchMethod: async (url, oldValue, { signal }) => {
const res = await fetch(url, { signal })
return await res.json()
}
})
cache.set('https://example.com/', { some: 'data' })
// 100ms go by...
const result = cache.fetch('https://example.com/')
cache.set('https://example.com/', { other: 'thing' })
console.log(await result) // { some: 'data' }
console.log(cache.get('https://example.com/')) // { other: 'thing' }
Optional
allowSet to true to allow returning stale data when a OptionsBase.fetchMethod throws an error or returns a rejected promise.
This differs from using OptionsBase.allowStale in that stale data will ONLY be returned in the case that the LRUCache#fetch fails, not any other times.
Context provided to the OptionsBase.fetchMethod as the FetcherOptions.context param.
If the FC type is specified as unknown (the default), undefined or void, then this is optional. Otherwise, it will be required.
Optional
forceSet to true to force a re-load of the existing data, even if it is not yet stale.
Optional
ignoreSet to true to ignore the abort
event emitted by the AbortSignal
object passed to OptionsBase.fetchMethod, and still cache the
resulting resolution value, as long as it is not undefined
.
When used on its own, this means aborted LRUCache#fetch calls are not immediately resolved or rejected when they are aborted, and instead take the full time to await.
When used with OptionsBase.allowStaleOnFetchAbort, aborted
LRUCache#fetch calls will resolve immediately to their stale
cached value or undefined
, and will continue to process and eventually
update the cache when they resolve, as long as the resulting value is
not undefined
, thus supporting a "return stale on timeout while
refreshing" mechanism by passing AbortSignal.timeout(n)
as the signal.
Note: regardless of this setting, an abort
event is still
emitted on the AbortSignal
object, so may result in invalid results
when passed to other underlying APIs that use AbortSignals.
This may be overridden in the OptionsBase.fetchMethod or the call to LRUCache#fetch.
Optional
noSet to true to suppress the deletion of stale data when a OptionsBase.fetchMethod returns a rejected promise.
Optional
noDo not delete stale items when they are retrieved with LRUCache#get.
Note that the get
return value will still be undefined
unless OptionsBase.allowStale is true.
Optional
noSet to true to suppress calling the OptionsBase.dispose function if the entry key is still accessible within the cache. This may be overridden by passing an options object to LRUCache#set.
Optional
noBoolean flag to tell the cache to not update the TTL when setting a new value for an existing key (ie, when updating a value rather than inserting a new value). Note that the TTL value is always set (if provided) when adding a new entry into the cache.
Has no effect if a OptionsBase.ttl is not set.
Optional
signalOptional
sizeOptional
sizeA function that returns a number indicating the item's size.
If not provided, and OptionsBase.maxSize or OptionsBase.maxEntrySize are set, then all LRUCache#set calls must provide an explicit SetOptions.size or sizeCalculation param.
Optional
statusOptional
ttlMax time in milliseconds for items to live in cache before they are considered stale. Note that stale items are NOT preemptively removed by default, and MAY live in the cache long after they have expired.
Also, as this cache is optimized for LRU/MRU operations, some of the staleness/TTL checks will reduce performance, as they will incur overhead by deleting items.
Must be an integer number of ms. If set to 0, this indicates "no TTL"
0
Optional
updateUpdate the age of items on LRUCache#get, renewing their TTL
Has no effect if OptionsBase.ttl is not set.
false
Generated using TypeDoc
Options provided to LRUCache#fetch when the FC type is something other than
unknown
,undefined
, orvoid