@splitsoftware/splitio-commons
Version:
Split JavaScript SDK common components
59 lines (58 loc) • 2.33 kB
JavaScript
import { setToArray } from '../../utils/lang/sets';
import { usesSegments } from '../AbstractSplitsCacheSync';
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;
this.changeNumber = changeNumber;
var updated = toAdd.map(function (toAdd) { return _this.add(toAdd); }).some(function (result) { return result; });
return toRemove.map(function (toRemove) { return _this.remove(toRemove.name); }).some(function (result) { return result; }) || 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.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 };