staticql
Version:
Type-safe query engine for static content including Markdown, YAML, JSON, and more.
32 lines (31 loc) • 847 B
JavaScript
export function cacheAsyncGen(fn, keySelector, cache) {
return async function* (...args) {
const key = keySelector(...args);
if (await cache.has(key)) {
for (const v of await cache.get(key)) {
yield v;
}
}
else {
const values = [];
for await (const v of fn(...args)) {
values.push(v);
yield v;
}
cache.set(key, values);
}
};
}
export function cacheAsyncFunc(fn, keySelector, cache) {
return async (...args) => {
const key = keySelector(...args);
if (await cache.has(key)) {
return cache.get(key);
}
else {
const value = await fn(...args);
cache.set(key, value);
return value;
}
};
}