@splitsoftware/splitio-commons
Version:
Split JavaScript SDK common components
79 lines (78 loc) • 2.95 kB
JavaScript
import { __extends } from "tslib";
import { isNaNNumber } from '../../utils/lang';
import { AbstractMySegmentsCacheSync } from '../AbstractMySegmentsCacheSync';
import { LOG_PREFIX, DEFINED } from './constants';
var MySegmentsCacheInLocal = /** @class */ (function (_super) {
__extends(MySegmentsCacheInLocal, _super);
function MySegmentsCacheInLocal(log, keys) {
var _this = _super.call(this) || this;
_this.log = log;
_this.keys = keys;
return _this;
// There is not need to flush segments cache like splits cache, since resetSegments receives the up-to-date list of active segments
}
MySegmentsCacheInLocal.prototype.addSegment = function (name) {
var segmentKey = this.keys.buildSegmentNameKey(name);
try {
if (localStorage.getItem(segmentKey) === DEFINED)
return false;
localStorage.setItem(segmentKey, DEFINED);
return true;
}
catch (e) {
this.log.error(LOG_PREFIX + e);
return false;
}
};
MySegmentsCacheInLocal.prototype.removeSegment = function (name) {
var segmentKey = this.keys.buildSegmentNameKey(name);
try {
if (localStorage.getItem(segmentKey) !== DEFINED)
return false;
localStorage.removeItem(segmentKey);
return true;
}
catch (e) {
this.log.error(LOG_PREFIX + e);
return false;
}
};
MySegmentsCacheInLocal.prototype.isInSegment = function (name) {
return localStorage.getItem(this.keys.buildSegmentNameKey(name)) === DEFINED;
};
MySegmentsCacheInLocal.prototype.getRegisteredSegments = function () {
var _this = this;
// Scan current values from localStorage
return Object.keys(localStorage).reduce(function (accum, key) {
var segmentName = _this.keys.extractSegmentName(key);
if (segmentName)
accum.push(segmentName);
return accum;
}, []);
};
MySegmentsCacheInLocal.prototype.getKeysCount = function () {
return 1;
};
MySegmentsCacheInLocal.prototype.setChangeNumber = function (changeNumber) {
try {
if (changeNumber)
localStorage.setItem(this.keys.buildTillKey(), changeNumber + '');
else
localStorage.removeItem(this.keys.buildTillKey());
}
catch (e) {
this.log.error(e);
}
};
MySegmentsCacheInLocal.prototype.getChangeNumber = function () {
var n = -1;
var value = localStorage.getItem(this.keys.buildTillKey());
if (value !== null) {
value = parseInt(value, 10);
return isNaNNumber(value) ? n : value;
}
return n;
};
return MySegmentsCacheInLocal;
}(AbstractMySegmentsCacheSync));
export { MySegmentsCacheInLocal };