@studiometa/js-toolkit
Version:
A set of useful little bits of JavaScript to boost your project! 🚀
27 lines (26 loc) • 556 B
JavaScript
function memoize(fn, {
maxAge = Number.POSITIVE_INFINITY,
cacheKey = JSON.stringify,
cache = /* @__PURE__ */ new Map()
} = {}) {
return function memoized(...args) {
const key = cacheKey(args);
const date = Date.now();
if (cache.has(key)) {
const cached = cache.get(key);
if (date - cached.date < maxAge) {
return cached.data;
}
}
const data = fn(...args);
cache.set(key, {
data,
date: Date.now()
});
return data;
};
}
export {
memoize
};
//# sourceMappingURL=memoize.js.map