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) {
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;
15 var unsubscribed = false;
16 var subscription = new Subscription();
17 subscription.add(function () {
23 var perSubscriberInit;
26 if (init.signal.aborted) {
30 var outerSignal_1 = init.signal;
31 var outerSignalHandler_1 = function () {
32 if (!signal.aborted) {
36 outerSignal_1.addEventListener('abort', outerSignalHandler_1);
37 subscription.add(function () { return outerSignal_1.removeEventListener('abort', outerSignalHandler_1); });
40 perSubscriberInit = tslib_1.__assign({}, init, { signal: signal });
43 perSubscriberInit = { signal: signal };
45 fetch(input, perSubscriberInit).then(function (response) {
47 subscription.add(from(selector(response)).subscribe(function (value) { return subscriber.next(value); }, function (err) {
50 subscriber.error(err);
54 subscriber.complete();
59 subscriber.next(response);
60 subscriber.complete();
62 }).catch(function (err) {
65 subscriber.error(err);
71 //# sourceMappingURL=fetch.js.map