UNPKG

@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
"use strict"; 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, }); };