UNPKG

@splitsoftware/splitio-commons

Version:
62 lines (61 loc) 2.58 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.RBSegmentsCacheInMemory = void 0; var sets_1 = require("../../utils/lang/sets"); var AbstractSplitsCacheSync_1 = require("../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 && (0, AbstractSplitsCacheSync_1.usesSegments)(previous)) this.segmentsCount--; this.cache[name] = rbSegment; if ((0, AbstractSplitsCacheSync_1.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 ((0, AbstractSplitsCacheSync_1.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 = (0, sets_1.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; }()); exports.RBSegmentsCacheInMemory = RBSegmentsCacheInMemory;