@eryx/caching Module

Small in-memory cache primitives.

Higher-level policy such as HTTP cache semantics should live in the consumer modules rather than here.

Summary

Functions

Cache:get<K, V>(key: K)(V, boolean)
Cache:set<K, V>(key: K, value: V)Cache<K, V>
Cache:has<K, V>(key: K)boolean
Cache:delete<K, V>(key: K)boolean
Cache:clear<K, V>()()
Cache:size<K, V>()number
Cache:prune<K, V>()number
caching.lru<K, V>(options: CacheOptions<K, V>?)Cache<K, V>
caching.ttl<K, V>(options: CacheOptions<K, V>?)Cache<K, V>
caching.memoize<K, V, T...>(fn: ((T...) → V), options: { maxEntries: number?, ttl: number?, touchOnGet: boolean?, clock: Clock?, onEvict: (((key: K, value: V, reason: EvictReason) → ()))?, cache: Cache<K, V>?, keyFn: (((T...) → K))? }?)((T...) → V)

API Reference

Functions

Cache:get

Cache:get<K, V>(key: K)(V, boolean)

Cache:set

Cache:set<K, V>(key: K, value: V)Cache<K, V>

Cache:has

Cache:has<K, V>(key: K)boolean

Cache:delete

Cache:delete<K, V>(key: K)boolean

Cache:clear

Cache:clear<K, V>()()

Cache:size

Cache:size<K, V>()number

Cache:prune

Cache:prune<K, V>()number

caching.lru

caching.lru<K, V>(options: CacheOptions<K, V>?)Cache<K, V>

caching.ttl

caching.ttl<K, V>(options: CacheOptions<K, V>?)Cache<K, V>

caching.memoize

caching.memoize<K, V, T...>(fn: ((T...) → V), options: { maxEntries: number?, ttl: number?, touchOnGet: boolean?, clock: Clock?, onEvict: (((key: K, value: V, reason: EvictReason) → ()))?, cache: Cache<K, V>?, keyFn: (((T...) → K))? }?)((T...) → V)

Types

EvictReason

type EvictReason = "expired" | "capacity" | "delete" | "clear" | "replace"

Clock

type Clock = (() → number)

CacheOptions<K, V>

type CacheOptions<K, V> = { maxEntries: number?, ttl: number?, touchOnGet: boolean?, clock: Clock?, onEvict: (((key: K, value: V, reason: EvictReason) → ()))? }
maxEntries: number?
ttl: number?
touchOnGet: boolean?
clock: Clock?
onEvict: (((key: K, value: V, reason: EvictReason) → ()))?

Cache<K, V>

type Cache<K, V> = CacheMethods<K, V>
Implements: CacheMethods

MemoizeOptions<K, V, T...>

type MemoizeOptions<K, V, T...> = { maxEntries: number?, ttl: number?, touchOnGet: boolean?, clock: Clock?, onEvict: (((key: K, value: V, reason: EvictReason) → ()))?, cache: Cache<K, V>?, keyFn: (((T...) → K))? }
maxEntries: number?
ttl: number?
touchOnGet: boolean?
clock: Clock?
onEvict: (((key: K, value: V, reason: EvictReason) → ()))?
cache: Cache<K, V>?
keyFn: (((T...) → K))?