UNPKG

ravendb

Version:
95 lines 2.62 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.HttpCacheItem = exports.ReleaseCacheItem = exports.HttpCache = void 0; const safe_memory_cache_1 = require("safe-memory-cache"); const NOT_FOUND_RESPONSE = "404 Response"; class HttpCache { _items; constructor(maxKeysSize = 500) { this._items = (0, safe_memory_cache_1.safeMemoryCache)({ limit: maxKeysSize }); } dispose() { this._items.clear(); this._items = null; } clear() { this._items.clear(); } set(url, changeVector, result) { const httpCacheItem = new HttpCacheItem(); httpCacheItem.changeVector = changeVector; httpCacheItem.payload = result; httpCacheItem.cache = this; this._items.set(url, httpCacheItem); } get(url, itemInfoCallback) { const item = this._items.get(url); if (item) { if (itemInfoCallback) { itemInfoCallback({ changeVector: item.changeVector, response: item.payload }); } return new ReleaseCacheItem(item); } if (itemInfoCallback) { itemInfoCallback({ changeVector: null, response: null }); } return new ReleaseCacheItem(null); } setNotFound(url) { const httpCacheItem = new HttpCacheItem(); httpCacheItem.changeVector = NOT_FOUND_RESPONSE; httpCacheItem.cache = this; this._items.set(url, httpCacheItem); } get numberOfItems() { return this._items["_get_buckets"]().reduce((result, next) => { return result + next.size; }, 0); } getMightHaveBeenModified() { return false; // TBD } } exports.HttpCache = HttpCache; class ReleaseCacheItem { item; constructor(item) { this.item = item; } notModified() { if (this.item) { this.item.lastServerUpdate = new Date(); } } // returns millis get age() { if (!this.item) { return Number.MAX_VALUE; } return Date.now() - this.item.lastServerUpdate.valueOf(); } get mightHaveBeenModified() { return false; // TBD } } exports.ReleaseCacheItem = ReleaseCacheItem; class HttpCacheItem { changeVector; payload; lastServerUpdate; flags; cache; constructor() { this.lastServerUpdate = new Date(); } } exports.HttpCacheItem = HttpCacheItem; //# sourceMappingURL=HttpCache.js.map