Update .bashrc
[dotfiles/.git] / dom / fetch.js
1 /** PURE_IMPORTS_START tslib,_.._Observable,_.._Subscription,_.._observable_from PURE_IMPORTS_END */
2 import * as tslib_1 from "tslib";
3 import { Observable } from '../../Observable';
4 import { Subscription } from '../../Subscription';
5 import { from } from '../../observable/from';
6 export function fromFetch(input, initWithSelector) {
7     if (initWithSelector === void 0) {
8         initWithSelector = {};
9     }
10     var selector = initWithSelector.selector, init = tslib_1.__rest(initWithSelector, ["selector"]);
11     return new Observable(function (subscriber) {
12         var controller = new AbortController();
13         var signal = controller.signal;
14         var abortable = true;
15         var unsubscribed = false;
16         var subscription = new Subscription();
17         subscription.add(function () {
18             unsubscribed = true;
19             if (abortable) {
20                 controller.abort();
21             }
22         });
23         var perSubscriberInit;
24         if (init) {
25             if (init.signal) {
26                 if (init.signal.aborted) {
27                     controller.abort();
28                 }
29                 else {
30                     var outerSignal_1 = init.signal;
31                     var outerSignalHandler_1 = function () {
32                         if (!signal.aborted) {
33                             controller.abort();
34                         }
35                     };
36                     outerSignal_1.addEventListener('abort', outerSignalHandler_1);
37                     subscription.add(function () { return outerSignal_1.removeEventListener('abort', outerSignalHandler_1); });
38                 }
39             }
40             perSubscriberInit = tslib_1.__assign({}, init, { signal: signal });
41         }
42         else {
43             perSubscriberInit = { signal: signal };
44         }
45         fetch(input, perSubscriberInit).then(function (response) {
46             if (selector) {
47                 subscription.add(from(selector(response)).subscribe(function (value) { return subscriber.next(value); }, function (err) {
48                     abortable = false;
49                     if (!unsubscribed) {
50                         subscriber.error(err);
51                     }
52                 }, function () {
53                     abortable = false;
54                     subscriber.complete();
55                 }));
56             }
57             else {
58                 abortable = false;
59                 subscriber.next(response);
60                 subscriber.complete();
61             }
62         }).catch(function (err) {
63             abortable = false;
64             if (!unsubscribed) {
65                 subscriber.error(err);
66             }
67         });
68         return subscription;
69     });
70 }
71 //# sourceMappingURL=fetch.js.map