function memoize(fn, options = {}) { const { cache = new Map(), getCacheKey } = options; const memoizedFn = function (arg) { const key = getCacheKey ? getCacheKey(arg) : arg; if (cache.has(key)) { return cache.get(key); } const result = fn.call(this, arg); cache.set(key, result); return result; }; memoizedFn.cache = cache; return memoizedFn; } export { memoize };