@aviellv/async-request-rxjs-pipe
Version:
A pipe functions for rxjs 6+ which emits a three-state 'async-request' with a typed loading/sucess/error status object
31 lines (30 loc) • 1.02 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
var rxjs_1 = require("rxjs");
/**
* This pipe emits an AsyncRequest<TValue, TError> type
*/
exports.asAsyncRequest = function () { return function (source) {
return new rxjs_1.Observable(function (observer) {
observer.next(exports.RequestLoading());
return source.subscribe({
next: function (val) {
observer.next(exports.RequestSuccess(val));
},
error: function (err) {
observer.next(exports.RequestError(err));
observer.error(err);
},
complete: function () { observer.complete(); }
});
});
}; };
exports.RequestLoading = function () { return ({ state: "loading" }); };
exports.RequestSuccess = function (value) { return ({
state: "success",
value: value,
}); };
exports.RequestError = function (value) { return ({
state: "error",
value: value,
}); };