web-svelte => web

This commit is contained in:
Jan Prochazka
2021-02-20 19:16:05 +01:00
parent daf9e9d18b
commit 321eedefea
38 changed files with 2 additions and 3 deletions

View File

@@ -0,0 +1,40 @@
import getAsArray from './getAsArray';
let cachedByKey = {};
let cachedPromisesByKey = {};
const cachedKeysByReloadTrigger = {};
export function cacheGet(key) {
return cachedByKey[key];
}
export function cacheSet(key, value, reloadTrigger) {
cachedByKey[key] = value;
for (const item of getAsArray(reloadTrigger)) {
if (!(item in cachedKeysByReloadTrigger)) {
cachedKeysByReloadTrigger[item] = [];
}
cachedKeysByReloadTrigger[item].push(key);
}
delete cachedPromisesByKey[key];
}
export function cacheClean(reloadTrigger) {
for (const item of getAsArray(reloadTrigger)) {
const keys = cachedKeysByReloadTrigger[item];
if (keys) {
for (const key of keys) {
delete cachedByKey[key];
delete cachedPromisesByKey[key];
}
}
delete cachedKeysByReloadTrigger[item];
}
}
export function getCachedPromise(key, func) {
if (key in cachedPromisesByKey) return cachedPromisesByKey[key];
const promise = func();
cachedPromisesByKey[key] = promise;
return promise;
}