UNPKG

@splitsoftware/splitio-commons

Version:
59 lines (58 loc) 2.35 kB
import { isIntegerNumber } from '../../utils/lang'; /** * Default ISplitsCacheSync implementation for server-side that stores segments definitions in memory. */ var SegmentsCacheInMemory = /** @class */ (function () { function SegmentsCacheInMemory() { this.segmentCache = {}; this.segmentChangeNumber = {}; } SegmentsCacheInMemory.prototype.update = function (name, addedKeys, removedKeys, changeNumber) { var keySet = this.segmentCache[name] || new Set(); addedKeys.forEach(function (k) { return keySet.add(k); }); removedKeys.forEach(function (k) { return keySet.delete(k); }); this.segmentCache[name] = keySet; this.segmentChangeNumber[name] = changeNumber; return addedKeys.length > 0 || removedKeys.length > 0; }; SegmentsCacheInMemory.prototype.isInSegment = function (name, key) { var segmentValues = this.segmentCache[name]; if (segmentValues) { return segmentValues.has(key); } return false; }; SegmentsCacheInMemory.prototype.clear = function () { this.segmentCache = {}; this.segmentChangeNumber = {}; }; SegmentsCacheInMemory.prototype._registerSegment = function (name) { if (!this.segmentCache[name]) { this.segmentCache[name] = new Set(); } return true; }; SegmentsCacheInMemory.prototype.registerSegments = function (names) { for (var i = 0; i < names.length; i++) { this._registerSegment(names[i]); } return true; }; SegmentsCacheInMemory.prototype.getRegisteredSegments = function () { return Object.keys(this.segmentCache); }; SegmentsCacheInMemory.prototype.getKeysCount = function () { var _this = this; return Object.keys(this.segmentCache).reduce(function (acum, segmentName) { return acum + _this.segmentCache[segmentName].size; }, 0); }; SegmentsCacheInMemory.prototype.getChangeNumber = function (name) { var value = this.segmentChangeNumber[name]; return isIntegerNumber(value) ? value : undefined; }; // No-op. Not used in server-side SegmentsCacheInMemory.prototype.resetSegments = function () { return false; }; return SegmentsCacheInMemory; }()); export { SegmentsCacheInMemory };