mirror of https://github.com/louislam/uptime-kuma
				
				
				
			
		
			
				
	
	
		
			60 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			JavaScript
		
	
	
			
		
		
	
	
			60 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			JavaScript
		
	
	
function MemoryCache() {
 | 
						|
    this.cache = {};
 | 
						|
    this.size = 0;
 | 
						|
}
 | 
						|
 | 
						|
MemoryCache.prototype.add = function (key, value, time, timeoutCallback) {
 | 
						|
    let old = this.cache[key];
 | 
						|
    let instance = this;
 | 
						|
 | 
						|
    let entry = {
 | 
						|
        value: value,
 | 
						|
        expire: time + Date.now(),
 | 
						|
        timeout: setTimeout(function () {
 | 
						|
            instance.delete(key);
 | 
						|
            return timeoutCallback && typeof timeoutCallback === "function" && timeoutCallback(value, key);
 | 
						|
        }, time)
 | 
						|
    };
 | 
						|
 | 
						|
    this.cache[key] = entry;
 | 
						|
    this.size = Object.keys(this.cache).length;
 | 
						|
 | 
						|
    return entry;
 | 
						|
};
 | 
						|
 | 
						|
MemoryCache.prototype.delete = function (key) {
 | 
						|
    let entry = this.cache[key];
 | 
						|
 | 
						|
    if (entry) {
 | 
						|
        clearTimeout(entry.timeout);
 | 
						|
    }
 | 
						|
 | 
						|
    delete this.cache[key];
 | 
						|
 | 
						|
    this.size = Object.keys(this.cache).length;
 | 
						|
 | 
						|
    return null;
 | 
						|
};
 | 
						|
 | 
						|
MemoryCache.prototype.get = function (key) {
 | 
						|
    let entry = this.cache[key];
 | 
						|
 | 
						|
    return entry;
 | 
						|
};
 | 
						|
 | 
						|
MemoryCache.prototype.getValue = function (key) {
 | 
						|
    let entry = this.get(key);
 | 
						|
 | 
						|
    return entry && entry.value;
 | 
						|
};
 | 
						|
 | 
						|
MemoryCache.prototype.clear = function () {
 | 
						|
    Object.keys(this.cache).forEach(function (key) {
 | 
						|
        this.delete(key);
 | 
						|
    }, this);
 | 
						|
 | 
						|
    return true;
 | 
						|
};
 | 
						|
 | 
						|
module.exports = MemoryCache;
 |