UNPKG

@lifaon/rx-js-light

Version:

Blazing fast Observables

26 lines (25 loc) 586 B
import {freeze} from "../../../../../misc/helpers/freeze.mjs"; export function createReplaySource(source, maxNumberOfValues = Number.POSITIVE_INFINITY) { let values = []; const emit = value => { values.push(value); if (values.length > maxNumberOfValues) { values.shift(); } source.emit(value); }; const subscribe = emit => { for (let i = 0; i < values.length; i++) { emit(values[i]); } return source.subscribe(emit); }; return freeze({ ...source, getValues: () => { return values; }, emit, subscribe }); }