@lifaon/rx-js-light
Version:
Blazing fast Observables
34 lines (33 loc) • 844 B
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.sourceObservablePipe = void 0;
function sourceObservablePipe(getSource) {
return function (subscribe) {
var unsubscribe;
var observersCounts = 0;
var source = getSource();
return function (emit) {
var running = true;
observersCounts++;
var unsubscribeSource = source.subscribe(emit);
if (observersCounts === 1) {
unsubscribe = subscribe(function (value) {
source.emit(value);
});
}
return function () {
if (running) {
running = false;
unsubscribeSource();
observersCounts--;
if (observersCounts === 0) {
unsubscribe();
}
}
};
};
};
}
exports.sourceObservablePipe = sourceObservablePipe;