1
0
silverbullet/plug-api/lib/memory_cache.ts
Zef Hemel a2dbf7b3db
PlugOS refactor and other tweaks (#631)
* Prep for in-process plug loading (e.g. for CF workers, Deno Deploy)
* Prototype of fixed in-process loading plugs
* Fix: buttons not to scroll with content
* Better positioning of modal especially on mobile
* Move query caching outside query
* Fix annoying mouse behavior when filter box appears
* Page navigator search tweaks
2024-01-15 16:43:12 +01:00

22 lines
480 B
TypeScript

import { LimitedMap } from "$sb/lib/limited_map.ts";
const cache = new LimitedMap<any>(50);
export async function ttlCache<K, V>(
key: K,
fn: (key: K) => Promise<V>,
ttlSecs?: number,
): Promise<V> {
if (!ttlSecs) {
return fn(key);
}
const serializedKey = JSON.stringify(key);
const cached = cache.get(serializedKey);
if (cached) {
return cached;
}
const result = await fn(key);
cache.set(serializedKey, result, ttlSecs * 1000);
return result;
}