@lifaon/rx-js-light
Version:
Blazing fast Observables
49 lines (48 loc) • 1.37 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.notificationsToValuesObservable = void 0;
var async_unsubscribe_1 = require("../../../../../../misc/helpers/async-unsubscribe.cjs");
function notificationsToValuesObservable(subscribe, onError, maxNumberOfValues) {
if (maxNumberOfValues === void 0) {
maxNumberOfValues = Number.POSITIVE_INFINITY;
}
return function (emit) {
var running = true;
var clear = function () {
if (running) {
running = false;
(0, async_unsubscribe_1.asyncUnsubscribe)(function () {
return unsubscribe;
});
}
};
var values = [];
var unsubscribe = subscribe(function (notification) {
switch (notification.name) {
case 'next':
values.push(notification.value);
if (values.length > maxNumberOfValues) {
values.shift();
}
break;
case 'complete':
emit(values);
clear();
break;
case 'error':
if (onError !== void 0) {
onError(notification.value, function (values) {
if (running) {
emit(values);
}
});
}
break;
}
});
return clear;
};
}
exports.notificationsToValuesObservable = notificationsToValuesObservable;