UNPKG

@hazae41/glacier

Version:

Yet another React data (re)fetching library

49 lines (46 loc) 1.61 kB
import { core } from '../../core/core.mjs'; var Simple; (function (Simple) { function getCacheKey(key) { if (typeof key === "string") return key; return JSON.stringify(key); } Simple.getCacheKey = getCacheKey; async function fetchOrThrow(cacheKey, signal, settings) { const fetched = await settings.fetcher(settings.key, { signal }); return await core.replaceOrThrow(cacheKey, fetched, settings); } Simple.fetchOrThrow = fetchOrThrow; /** * Optimistic update * @param core * @param key * @param cacheKey * @param fetcher * @param updater * @param settings * @returns */ async function updateOrThrow(cacheKey, updater, signal, settings) { const uuid = crypto.randomUUID(); try { const generator = updater(); let next = await generator.next(); for (; !next.done; next = await generator.next()) await core.optimizeOrThrow(cacheKey, uuid, next.value, settings); const fetcher = next.value ?? settings.fetcher; const fetched = await fetcher(settings.key, { signal, cache: "reload" }); core.deoptimize(cacheKey, uuid); return await core.replaceOrThrow(cacheKey, fetched, settings); } catch (e) { core.deoptimize(cacheKey, uuid); core.reoptimizeOrThrow(cacheKey, settings); throw e; } } Simple.updateOrThrow = updateOrThrow; })(Simple || (Simple = {})); export { Simple }; //# sourceMappingURL=helper.mjs.map