@splitsoftware/splitio-commons
Version:
Split JavaScript SDK common components
50 lines (34 loc) • 1.02 kB
text/typescript
import { AbstractMySegmentsCacheSync } from '../AbstractMySegmentsCacheSync';
/**
* Default MySegmentsCacheInMemory implementation that stores MySegments in memory.
* Supported by all JS runtimes.
*/
export class MySegmentsCacheInMemory extends AbstractMySegmentsCacheSync {
private segmentCache: Record<string, boolean> = {};
private cn?: number;
protected addSegment(name: string): boolean {
if (this.segmentCache[name]) return false;
this.segmentCache[name] = true;
return true;
}
protected removeSegment(name: string): boolean {
if (!this.segmentCache[name]) return false;
delete this.segmentCache[name];
return true;
}
isInSegment(name: string): boolean {
return this.segmentCache[name] === true;
}
protected setChangeNumber(changeNumber?: number) {
this.cn = changeNumber;
}
getChangeNumber() {
return this.cn || -1;
}
getRegisteredSegments() {
return Object.keys(this.segmentCache);
}
getKeysCount() {
return 1;
}
}