@lifaon/rx-js-light
Version:
Blazing fast Observables
26 lines (25 loc) • 586 B
JavaScript
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
});
}