UNPKG

@daisugi/kintsugi

Version:

Kintsugi is a set of utilities to help build a fault tolerant services.

25 lines 993 B
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.reusePromise = reusePromise; const simple_memory_store_js_1 = require("./simple_memory_store.js"); const stringify_args_js_1 = require("./stringify_args.js"); function reusePromise(fn) { const simpleMemoryStore = new simple_memory_store_js_1.SimpleMemoryStore(); return async function (...args) { const cacheKey = (0, stringify_args_js_1.stringifyArgs)(args); const cacheResponse = simpleMemoryStore.get(cacheKey); if (cacheResponse.isSuccess) { return cacheResponse.getValue(); } const response = fn.apply(this, args).then((value) => { simpleMemoryStore.delete(cacheKey); return value; }, (reason) => { simpleMemoryStore.delete(cacheKey); throw reason; }); simpleMemoryStore.set(cacheKey, response); return response; }; } //# sourceMappingURL=reuse_promise.js.map