@splitsoftware/splitio-commons
Version:
Split JavaScript SDK common components
62 lines (61 loc) • 2.5 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.SegmentsCacheInMemory = void 0;
var lang_1 = require("../../utils/lang");
/**
* Default IDefinitionsCacheSync 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 (0, lang_1.isIntegerNumber)(value) ? value : undefined;
};
// No-op. Not used in server-side
SegmentsCacheInMemory.prototype.resetSegments = function () { return false; };
return SegmentsCacheInMemory;
}());
exports.SegmentsCacheInMemory = SegmentsCacheInMemory;