@daisugi/kintsugi
Version:
Kintsugi is a set of utilities to help build a fault tolerant services.
25 lines • 993 B
JavaScript
;
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