{"version":3,"file":"helper.cjs","sources":["../../../../src/mods/single/helper.ts"],"sourcesContent":["import { Some } from \"@hazae41/option\";\nimport { Ok } from \"@hazae41/result\";\nimport { DEFAULT_SERIALIZER } from \"mods/defaults.js\";\nimport { Fetched } from \"mods/result/fetched.js\";\nimport { TimesInit } from \"mods/result/times.js\";\nexport var Simple;\n(function (Simple) {\n    function getCacheKey(key, settings) {\n        if (typeof key === \"string\")\n            return key;\n        const { keySerializer = DEFAULT_SERIALIZER } = settings;\n        return keySerializer.stringify(key);\n    }\n    Simple.getCacheKey = getCacheKey;\n    async function fetch(core, cacheKey, aborter, settings) {\n        const aborted = await core.runWithTimeout(async (signal) => {\n            return await settings.fetcher(settings.key, { signal });\n        }, aborter, settings.timeout);\n        if (aborted.isErr())\n            return aborted;\n        const times = TimesInit.merge(aborted.get(), settings);\n        const timed = Fetched.from(aborted.get()).setTimes(times);\n        return new Ok(await core.mutate(cacheKey, () => new Some(timed), settings));\n    }\n    Simple.fetch = fetch;\n    /**\n     * Optimistic update\n     * @param core\n     * @param key\n     * @param cacheKey\n     * @param fetcher\n     * @param updater\n     * @param settings\n     * @returns\n     */\n    async function update(core, cacheKey, updater, aborter, settings) {\n        const uuid = crypto.randomUUID();\n        try {\n            const generator = updater();\n            let result = await generator.next();\n            for (; !result.done; result = await generator.next())\n                await core.optimize(cacheKey, uuid, result.value, settings);\n            const fetcher = result.value ?? settings.fetcher;\n            const aborted = await core.runWithTimeout(async (signal) => {\n                return await fetcher(settings.key, { signal, cache: \"reload\" });\n            }, aborter, settings.timeout);\n            if (aborted.isErr()) {\n                core.deoptimize(cacheKey, uuid);\n                core.reoptimize(cacheKey, settings);\n                return aborted;\n            }\n            core.deoptimize(cacheKey, uuid);\n            const times = TimesInit.merge(aborted.get(), settings);\n            const timed = Fetched.from(aborted.get()).setTimes(times);\n            return new Ok(await core.mutate(cacheKey, () => new Some(timed), settings));\n        }\n        catch (e) {\n            core.deoptimize(cacheKey, uuid);\n            core.reoptimize(cacheKey, settings);\n            throw e;\n        }\n    }\n    Simple.update = update;\n})(Simple || (Simple = {}));\n//# sourceMappingURL=helper.js.map"],"names":["Simple","DEFAULT_SERIALIZER","times","TimesInit","Fetched","Ok","Some","result"],"mappings":"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"}