£Á°èZ¨Ä…–K§‚«“ô4“ÒÙ´dîfUÙÃÅ WKbyʦ•ꎅȮFÒ¿ÊÎóCozá¬S@6{Í:›œêZÌ:Š•_%:¢¾¾~;‘Ã~芩ÊǍí`ÔÑ©ú뙵'5I¿fš×WO%ø9¾«¾DK|€ùÍD”Ýs]nHÕ¶êםӼ㞪éUWŸÈË%DÒÕ¬ï‘]/Åcx ‰ï2ß]ä6G[]S£Ôϯrs{úëóµmÒï#UQxo·õÞCe]"±/aÙ&Eã4ú9Jé_ÞåëdãöKë)AÞ ¯¹ægƒÛowЍø^d™ý½ßB7áyMä9ÜÖUã !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 'use strict'; const mimicFn = require('mimic-fn'); const cacheStore = new WeakMap(); const defaultCacheKey = function (x) { if (arguments.length === 1 && (x === null || x === undefined || (typeof x !== 'function' && typeof x !== 'object'))) { return x; } return JSON.stringify(arguments); }; module.exports = (fn, opts) => { opts = Object.assign({ cacheKey: defaultCacheKey, cache: new Map() }, opts); const memoized = function () { const cache = cacheStore.get(memoized); const key = opts.cacheKey.apply(null, arguments); if (cache.has(key)) { const c = cache.get(key); if (typeof opts.maxAge !== 'number' || Date.now() < c.maxAge) { return c.data; } } const ret = fn.apply(null, arguments); cache.set(key, { data: ret, maxAge: Date.now() + (opts.maxAge || 0) }); return ret; }; mimicFn(memoized, fn); cacheStore.set(memoized, opts.cache); return memoized; }; module.exports.clear = fn => { const cache = cacheStore.get(fn); if (cache && typeof cache.clear === 'function') { cache.clear(); } };