In-memory caching/memoization utilities --- ## Install ```bash npm install --save @js/memo ``` ## Usage ```ts import { memo } from '@js/memo'; function get_data_from_slow_source(name: string) : string { // .... } const get_data_cached = memo({ func: get_data_from_slow_source, ttl: 30_000, }); ``` ### Custom cache key generation ```ts import { memo } from '@js/memo'; interface SomeObject { id: string; foo: string; bar: number; baz: { qux: string; }; } function get_data_from_slow_source(obj: SomeObject) : string { // .... } const get_data_cached = memo({ func: get_data_from_slow_source, ttl: 30_000, // Pull just the `id` field from the first parameter to use // as the cache key key([ obj ]) { return obj.id; }, }); ``` ### Simple functions with no params ```ts import { memo_simple } from '@js/memo'; function get_data_from_slow_source() : string { // .... } const get_data_cached = memo_simple(30_000, get_data_from_slow_source); ``` ### Full async example ```ts import { memo_async } from '@js/memo'; async function get_data_from_slow_source(name: string) : Promise { // .... } const get_data_cached = memo_async({ func: get_data_from_slow_source, ttl: 30_000, stale_ttl: 5_000, promise_ttl: 5_000, }); ```