UNPKG

@drift-labs/common

Version:

Common functions for Drift

24 lines 1.21 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.dedupeSubject = void 0; const operators_1 = require("rxjs/operators"); const UniqueCircularBuffer_1 = require("./CircularBuffers/UniqueCircularBuffer"); /** * Deduplicated subject, using UniqueCircularBuffer to dedupe the input subject. * * The windowSize defines the amount of unique elements to keep in memory for the sake of deduplicating. Any incoming duplicate objects will NOT be added to the buffer so won't take up space. * @param inputSubject * @param windowSize maximum size of recent unique objects which will be stored to use for deduplication * @param uniquenessKeyGenerator function that generates a unique key for an object * @returns */ function dedupeSubject(inputSubject, windowSize, uniquenessKeyGenerator) { const buffer = new UniqueCircularBuffer_1.UniqueCircularBuffer(windowSize, uniquenessKeyGenerator); const dedupedObservable = inputSubject.pipe((0, operators_1.filter)((value) => { const added = buffer.add(value); return added; }), (0, operators_1.share)()); return dedupedObservable; } exports.dedupeSubject = dedupeSubject; //# sourceMappingURL=rxjs.js.map