UNPKG

@splitsoftware/splitio-commons

Version:
79 lines (78 loc) 2.95 kB
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 };