UNPKG

time-cache

Version:

A key-value cache that puts a expiry date on its entries.

64 lines (53 loc) 1.26 kB
'use strict'; exports = module.exports = TimeCache; function TimeCache(options) { if (!(this instanceof TimeCache)) { return new TimeCache(options); } options = options || {}; var validity = options.validity || 30; // seconds var entries = {}; this.put = function (key, value, validity) { if (!entries[key]) { entries[key] = { value: value, timestamp: getTimeStamp(), validity: validity }; } sweep(); }; this.get = function (key) { if (entries[key]) { return entries[key].value; } else { throw new Error('key does not exist'); } }; this.has = function (key) { if (entries[key]) { return true; } else { return false; } }; function sweep() { Object.keys(entries).map(function (key) { var entry = entries[key]; var v = entry.validity || validity; var delta = getTimeElapsed(entry.timestamp); if (delta > v) { delete entries[key]; } }); } } function getTimeStamp() { return new Date(); } function getTimeElapsed(prevTime) { var currentTime = new Date(); var delta = currentTime.getTime() - prevTime.getTime(); var seconds = Math.floor(delta / 1000); return seconds; }