You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
			
				
					90 lines
				
				3.4 KiB
			
		
		
			
		
	
	
					90 lines
				
				3.4 KiB
			| 
								 
											4 years ago
										 
									 | 
							
								"use strict";
							 | 
						||
| 
								 | 
							
								var __assign = (this && this.__assign) || function () {
							 | 
						||
| 
								 | 
							
								    __assign = Object.assign || function(t) {
							 | 
						||
| 
								 | 
							
								        for (var s, i = 1, n = arguments.length; i < n; i++) {
							 | 
						||
| 
								 | 
							
								            s = arguments[i];
							 | 
						||
| 
								 | 
							
								            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
							 | 
						||
| 
								 | 
							
								                t[p] = s[p];
							 | 
						||
| 
								 | 
							
								        }
							 | 
						||
| 
								 | 
							
								        return t;
							 | 
						||
| 
								 | 
							
								    };
							 | 
						||
| 
								 | 
							
								    return __assign.apply(this, arguments);
							 | 
						||
| 
								 | 
							
								};
							 | 
						||
| 
								 | 
							
								var __rest = (this && this.__rest) || function (s, e) {
							 | 
						||
| 
								 | 
							
								    var t = {};
							 | 
						||
| 
								 | 
							
								    for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
							 | 
						||
| 
								 | 
							
								        t[p] = s[p];
							 | 
						||
| 
								 | 
							
								    if (s != null && typeof Object.getOwnPropertySymbols === "function")
							 | 
						||
| 
								 | 
							
								        for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) if (e.indexOf(p[i]) < 0)
							 | 
						||
| 
								 | 
							
								            t[p[i]] = s[p[i]];
							 | 
						||
| 
								 | 
							
								    return t;
							 | 
						||
| 
								 | 
							
								};
							 | 
						||
| 
								 | 
							
								Object.defineProperty(exports, "__esModule", { value: true });
							 | 
						||
| 
								 | 
							
								var Observable_1 = require("../../Observable");
							 | 
						||
| 
								 | 
							
								var Subscription_1 = require("../../Subscription");
							 | 
						||
| 
								 | 
							
								var from_1 = require("../../observable/from");
							 | 
						||
| 
								 | 
							
								function fromFetch(input, initWithSelector) {
							 | 
						||
| 
								 | 
							
								    if (initWithSelector === void 0) { initWithSelector = {}; }
							 | 
						||
| 
								 | 
							
								    var selector = initWithSelector.selector, init = __rest(initWithSelector, ["selector"]);
							 | 
						||
| 
								 | 
							
								    return new Observable_1.Observable(function (subscriber) {
							 | 
						||
| 
								 | 
							
								        var controller = new AbortController();
							 | 
						||
| 
								 | 
							
								        var signal = controller.signal;
							 | 
						||
| 
								 | 
							
								        var abortable = true;
							 | 
						||
| 
								 | 
							
								        var unsubscribed = false;
							 | 
						||
| 
								 | 
							
								        var subscription = new Subscription_1.Subscription();
							 | 
						||
| 
								 | 
							
								        subscription.add(function () {
							 | 
						||
| 
								 | 
							
								            unsubscribed = true;
							 | 
						||
| 
								 | 
							
								            if (abortable) {
							 | 
						||
| 
								 | 
							
								                controller.abort();
							 | 
						||
| 
								 | 
							
								            }
							 | 
						||
| 
								 | 
							
								        });
							 | 
						||
| 
								 | 
							
								        var perSubscriberInit;
							 | 
						||
| 
								 | 
							
								        if (init) {
							 | 
						||
| 
								 | 
							
								            if (init.signal) {
							 | 
						||
| 
								 | 
							
								                if (init.signal.aborted) {
							 | 
						||
| 
								 | 
							
								                    controller.abort();
							 | 
						||
| 
								 | 
							
								                }
							 | 
						||
| 
								 | 
							
								                else {
							 | 
						||
| 
								 | 
							
								                    var outerSignal_1 = init.signal;
							 | 
						||
| 
								 | 
							
								                    var outerSignalHandler_1 = function () {
							 | 
						||
| 
								 | 
							
								                        if (!signal.aborted) {
							 | 
						||
| 
								 | 
							
								                            controller.abort();
							 | 
						||
| 
								 | 
							
								                        }
							 | 
						||
| 
								 | 
							
								                    };
							 | 
						||
| 
								 | 
							
								                    outerSignal_1.addEventListener('abort', outerSignalHandler_1);
							 | 
						||
| 
								 | 
							
								                    subscription.add(function () { return outerSignal_1.removeEventListener('abort', outerSignalHandler_1); });
							 | 
						||
| 
								 | 
							
								                }
							 | 
						||
| 
								 | 
							
								            }
							 | 
						||
| 
								 | 
							
								            perSubscriberInit = __assign({}, init, { signal: signal });
							 | 
						||
| 
								 | 
							
								        }
							 | 
						||
| 
								 | 
							
								        else {
							 | 
						||
| 
								 | 
							
								            perSubscriberInit = { signal: signal };
							 | 
						||
| 
								 | 
							
								        }
							 | 
						||
| 
								 | 
							
								        fetch(input, perSubscriberInit).then(function (response) {
							 | 
						||
| 
								 | 
							
								            if (selector) {
							 | 
						||
| 
								 | 
							
								                subscription.add(from_1.from(selector(response)).subscribe(function (value) { return subscriber.next(value); }, function (err) {
							 | 
						||
| 
								 | 
							
								                    abortable = false;
							 | 
						||
| 
								 | 
							
								                    if (!unsubscribed) {
							 | 
						||
| 
								 | 
							
								                        subscriber.error(err);
							 | 
						||
| 
								 | 
							
								                    }
							 | 
						||
| 
								 | 
							
								                }, function () {
							 | 
						||
| 
								 | 
							
								                    abortable = false;
							 | 
						||
| 
								 | 
							
								                    subscriber.complete();
							 | 
						||
| 
								 | 
							
								                }));
							 | 
						||
| 
								 | 
							
								            }
							 | 
						||
| 
								 | 
							
								            else {
							 | 
						||
| 
								 | 
							
								                abortable = false;
							 | 
						||
| 
								 | 
							
								                subscriber.next(response);
							 | 
						||
| 
								 | 
							
								                subscriber.complete();
							 | 
						||
| 
								 | 
							
								            }
							 | 
						||
| 
								 | 
							
								        }).catch(function (err) {
							 | 
						||
| 
								 | 
							
								            abortable = false;
							 | 
						||
| 
								 | 
							
								            if (!unsubscribed) {
							 | 
						||
| 
								 | 
							
								                subscriber.error(err);
							 | 
						||
| 
								 | 
							
								            }
							 | 
						||
| 
								 | 
							
								        });
							 | 
						||
| 
								 | 
							
								        return subscription;
							 | 
						||
| 
								 | 
							
								    });
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								exports.fromFetch = fromFetch;
							 | 
						||
| 
								 | 
							
								//# sourceMappingURL=fetch.js.map
							 |