UNPKG

@splitsoftware/splitio-commons

Version:
62 lines (61 loc) 2.93 kB
import { isNaNNumber } from '../../utils/lang'; import { LOG_PREFIX } from './constants'; import { setToArray } from '../../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 = 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); 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 isNaNNumber(i) ? -1 : i; }).catch(function (e) { _this.log.error(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; }()); export { RBSegmentsCachePluggable };