@splitsoftware/splitio-commons
Version:
Split JavaScript SDK common components
65 lines (64 loc) • 3.11 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.RBSegmentsCachePluggable = void 0;
var lang_1 = require("../../utils/lang");
var constants_1 = require("./constants");
var sets_1 = require("../../utils/lang/sets");
var RBSegmentsCachePluggable = /** @class */ (function () {
function RBSegmentsCachePluggable(log, keys, wrapper) {
this.log = log;
this.keys = keys;
this.wrapper = wrapper;
}
RBSegmentsCachePluggable.prototype.get = function (name) {
return this.wrapper.get(this.keys.buildRBSegmentKey(name))
.then(function (maybeRBSegment) { return maybeRBSegment && JSON.parse(maybeRBSegment); });
};
RBSegmentsCachePluggable.prototype.getNames = function () {
var _this = this;
return this.wrapper.getKeysByPrefix(this.keys.buildRBSegmentKeyPrefix()).then(function (listOfKeys) { return listOfKeys.map(_this.keys.extractKey); });
};
RBSegmentsCachePluggable.prototype.contains = function (names) {
var namesArray = (0, sets_1.setToArray)(names);
return this.getNames().then(function (namesInStorage) {
return namesArray.every(function (name) { return namesInStorage.includes(name); });
});
};
RBSegmentsCachePluggable.prototype.update = function (toAdd, toRemove, changeNumber) {
var _this = this;
return Promise.all([
this.setChangeNumber(changeNumber),
Promise.all(toAdd.map(function (toAdd) {
var key = _this.keys.buildRBSegmentKey(toAdd.name);
var stringifiedNewRBSegment = JSON.stringify(toAdd);
return _this.wrapper.set(key, stringifiedNewRBSegment).then(function () { return true; });
})),
Promise.all(toRemove.map(function (toRemove) {
var key = _this.keys.buildRBSegmentKey(toRemove.name);
return _this.wrapper.del(key);
}))
]).then(function (_a) {
var added = _a[1], removed = _a[2];
return added.some(function (result) { return result; }) || removed.some(function (result) { return result; });
});
};
RBSegmentsCachePluggable.prototype.setChangeNumber = function (changeNumber) {
return this.wrapper.set(this.keys.buildRBSegmentsTillKey(), changeNumber + '');
};
RBSegmentsCachePluggable.prototype.getChangeNumber = function () {
var _this = this;
return this.wrapper.get(this.keys.buildRBSegmentsTillKey()).then(function (value) {
var i = parseInt(value, 10);
return (0, lang_1.isNaNNumber)(i) ? -1 : i;
}).catch(function (e) {
_this.log.error(constants_1.LOG_PREFIX + 'Could not retrieve changeNumber from storage. Error: ' + e);
return -1;
});
};
// @TODO implement if required by DataLoader or producer mode
RBSegmentsCachePluggable.prototype.clear = function () {
return Promise.resolve();
};
return RBSegmentsCachePluggable;
}());
exports.RBSegmentsCachePluggable = RBSegmentsCachePluggable;