@splitsoftware/splitio-commons
Version:
Split JavaScript SDK common components
43 lines (42 loc) • 2.17 kB
JavaScript
import { SplitsCacheInMemory } from './SplitsCacheInMemory';
import { SegmentsCacheInMemory } from './SegmentsCacheInMemory';
import { ImpressionsCacheInMemory } from './ImpressionsCacheInMemory';
import { EventsCacheInMemory } from './EventsCacheInMemory';
import { ImpressionCountsCacheInMemory } from './ImpressionCountsCacheInMemory';
import { LOCALHOST_MODE, STORAGE_MEMORY } from '../../utils/constants';
import { shouldRecordTelemetry, TelemetryCacheInMemory } from './TelemetryCacheInMemory';
import { UniqueKeysCacheInMemory } from './UniqueKeysCacheInMemory';
import { RBSegmentsCacheInMemory } from './RBSegmentsCacheInMemory';
/**
* InMemory storage factory for standalone server-side SplitFactory
*
* @param params - parameters required by EventsCacheSync
*/
export function InMemoryStorageFactory(params) {
var _a = params.settings, _b = _a.scheduler, impressionsQueueSize = _b.impressionsQueueSize, eventsQueueSize = _b.eventsQueueSize, __splitFiltersValidation = _a.sync.__splitFiltersValidation;
var splits = new SplitsCacheInMemory(__splitFiltersValidation);
var rbSegments = new RBSegmentsCacheInMemory();
var segments = new SegmentsCacheInMemory();
var storage = {
splits: splits,
rbSegments: rbSegments,
segments: segments,
impressions: new ImpressionsCacheInMemory(impressionsQueueSize),
impressionCounts: new ImpressionCountsCacheInMemory(),
events: new EventsCacheInMemory(eventsQueueSize),
telemetry: shouldRecordTelemetry(params) ? new TelemetryCacheInMemory(splits, segments) : undefined,
uniqueKeys: new UniqueKeysCacheInMemory(),
destroy: function () { }
};
// @TODO revisit storage logic in localhost mode
// No tracking data in localhost mode to avoid memory leaks
if (params.settings.mode === LOCALHOST_MODE) {
var noopTrack = function () { return true; };
storage.impressions.track = noopTrack;
storage.events.track = noopTrack;
storage.impressionCounts.track = noopTrack;
storage.uniqueKeys.track = noopTrack;
}
return storage;
}
InMemoryStorageFactory.type = STORAGE_MEMORY;