UNPKG

prismic.io

Version:

JavaScript development kit for prismic.io

54 lines (42 loc) 909 B
"use strict"; var LRUCache = require('./lru'); /** * Api cache */ function ApiCache(limit) { this.lru = new LRUCache(limit); } ApiCache.prototype = { get: function(key, cb) { var maybeEntry = this.lru.get(key); if(maybeEntry && !this.isExpired(key)) { return cb(null, maybeEntry.data); } return cb(); }, set: function(key, value, ttl, cb) { this.lru.remove(key); this.lru.put(key, { data: value, expiredIn: ttl ? (Date.now() + (ttl * 1000)) : 0 }); return cb(); }, isExpired: function(key) { var entry = this.lru.get(key); if(entry) { return entry.expiredIn !== 0 && entry.expiredIn < Date.now(); } else { return false; } }, remove: function(key, cb) { this.lru.remove(key); return cb(); }, clear: function(cb) { this.lru.removeAll(); return cb(); } }; module.exports = ApiCache;