You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							52 lines
						
					
					
						
							1.0 KiB
						
					
					
				
			
		
		
	
	
							52 lines
						
					
					
						
							1.0 KiB
						
					
					
				module.exports = function (max) {
 | 
						|
 | 
						|
  if (!max) throw Error('hashlru must have a max value, of type number, greater than 0')
 | 
						|
 | 
						|
  var size = 0, cache = Object.create(null), _cache = Object.create(null)
 | 
						|
 | 
						|
  function update (key, value) {
 | 
						|
    cache[key] = value
 | 
						|
    size ++
 | 
						|
    if(size >= max) {
 | 
						|
      size = 0
 | 
						|
      _cache = cache
 | 
						|
      cache = Object.create(null)
 | 
						|
    }
 | 
						|
  }
 | 
						|
 | 
						|
  return {
 | 
						|
    has: function (key) {
 | 
						|
      return cache[key] !== undefined || _cache[key] !== undefined
 | 
						|
    },
 | 
						|
    remove: function (key) {
 | 
						|
      if(cache[key] !== undefined)
 | 
						|
        cache[key] = undefined
 | 
						|
      if(_cache[key] !== undefined)
 | 
						|
        _cache[key] = undefined
 | 
						|
    },
 | 
						|
    get: function (key) {
 | 
						|
      var v = cache[key]
 | 
						|
      if(v !== undefined) return v
 | 
						|
      if((v = _cache[key]) !== undefined) {
 | 
						|
        update(key, v)
 | 
						|
        return v
 | 
						|
      }
 | 
						|
    },
 | 
						|
    set: function (key, value) {
 | 
						|
      if(cache[key] !== undefined) cache[key] = value
 | 
						|
      else update(key, value)
 | 
						|
    },
 | 
						|
    clear: function () {
 | 
						|
      cache = Object.create(null)
 | 
						|
      _cache = Object.create(null)
 | 
						|
    }
 | 
						|
  }
 | 
						|
}
 | 
						|
 | 
						|
 | 
						|
 | 
						|
 | 
						|
 | 
						|
 | 
						|
 |