blob: 7f71c8fbae3334386cbc7e4d972b7f655032a1ca [file] [log] [blame]
Leo Repp58b9f112021-11-22 11:57:47 +01001var memoize = require('./memoize');
2
3/** Used as the maximum memoize cache size. */
4var MAX_MEMOIZE_SIZE = 500;
5
6/**
7 * A specialized version of `_.memoize` which clears the memoized function's
8 * cache when it exceeds `MAX_MEMOIZE_SIZE`.
9 *
10 * @private
11 * @param {Function} func The function to have its output memoized.
12 * @returns {Function} Returns the new memoized function.
13 */
14function memoizeCapped(func) {
15 var result = memoize(func, function(key) {
16 if (cache.size === MAX_MEMOIZE_SIZE) {
17 cache.clear();
18 }
19 return key;
20 });
21
22 var cache = result.cache;
23 return result;
24}
25
26module.exports = memoizeCapped;