UNPKG

@splitsoftware/splitio-commons

Version:
64 lines (63 loc) 2.53 kB
import { setToArray } from '../../utils/lang/sets'; import { usesSegments } from '../AbstractDefinitionsCacheSync'; var RBSegmentsCacheInMemory = /** @class */ (function () { function RBSegmentsCacheInMemory() { this.cache = {}; this.changeNumber = -1; this.segmentsCount = 0; } RBSegmentsCacheInMemory.prototype.clear = function () { this.cache = {}; this.changeNumber = -1; this.segmentsCount = 0; }; RBSegmentsCacheInMemory.prototype.update = function (toAdd, toRemove, changeNumber) { var _this = this; var updated = toAdd.map(function (toAdd) { return _this.add(toAdd); }).some(function (result) { return result; }); updated = toRemove.map(function (toRemove) { return _this.remove(toRemove); }).some(function (result) { return result; }) || updated; this.changeNumber = changeNumber; return updated; }; RBSegmentsCacheInMemory.prototype.add = function (rbSegment) { var name = rbSegment.name; var previous = this.get(name); if (previous && usesSegments(previous)) this.segmentsCount--; this.cache[name] = rbSegment; if (usesSegments(rbSegment)) this.segmentsCount++; return true; }; RBSegmentsCacheInMemory.prototype.remove = function (name) { var rbSegment = this.get(name); if (!rbSegment) return false; delete this.cache[name]; if (usesSegments(rbSegment)) this.segmentsCount--; return true; }; RBSegmentsCacheInMemory.prototype.getNames = function () { return Object.keys(this.cache); }; RBSegmentsCacheInMemory.prototype.get = function (name) { return this.cache[name] || null; }; RBSegmentsCacheInMemory.prototype.getAll = function () { var _this = this; return this.getNames().map(function (key) { return _this.get(key); }); }; RBSegmentsCacheInMemory.prototype.contains = function (names) { var namesArray = setToArray(names); var namesInStorage = this.getNames(); return namesArray.every(function (name) { return namesInStorage.indexOf(name) !== -1; }); }; RBSegmentsCacheInMemory.prototype.getChangeNumber = function () { return this.changeNumber; }; RBSegmentsCacheInMemory.prototype.usesSegments = function () { return this.segmentsCount > 0; }; return RBSegmentsCacheInMemory; }()); export { RBSegmentsCacheInMemory };