_memoizeCapped.js
 1  var memoize = require('./memoize');
 2  
 3  /** Used as the maximum memoize cache size. */
 4  var 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   */
14  function 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  
26  module.exports = memoizeCapped;