UNPKG

rxjs

Version:

Reactive Extensions for modern JavaScript

131 lines 4.91 kB
import { __asyncValues, __awaiter, __generator } from "tslib"; import { isArrayLike } from '../util/isArrayLike'; import { isPromise } from '../util/isPromise'; import { iterator as Symbol_iterator } from '../symbol/iterator'; import { observable as Symbol_observable } from '../symbol/observable'; import { Observable } from '../Observable'; import { scheduled } from '../scheduled/scheduled'; import { isFunction } from '../util/isFunction'; import { reportUnhandledError } from '../util/reportUnhandledError'; import { isInteropObservable } from '../util/isInteropObservable'; import { isAsyncIterable } from '../util/isAsyncIterable'; import { createInvalidObservableTypeError } from '../util/throwUnobservableError'; import { isIterable } from '../util/isIterable'; export function from(input, scheduler) { return scheduler ? scheduled(input, scheduler) : innerFrom(input); } export function innerFrom(input) { if (input instanceof Observable) { return input; } if (input != null) { if (isInteropObservable(input)) { return fromInteropObservable(input); } if (isArrayLike(input)) { return fromArrayLike(input); } if (isPromise(input)) { return fromPromise(input); } if (isAsyncIterable(input)) { return fromAsyncIterable(input); } if (isIterable(input)) { return fromIterable(input); } } throw createInvalidObservableTypeError(input); } function fromInteropObservable(obj) { return new Observable(function (subscriber) { var obs = obj[Symbol_observable](); if (isFunction(obs.subscribe)) { return obs.subscribe(subscriber); } throw new TypeError('Provided object does not correctly implement Symbol.observable'); }); } export function fromArrayLike(array) { return new Observable(function (subscriber) { for (var i = 0; i < array.length && !subscriber.closed; i++) { subscriber.next(array[i]); } subscriber.complete(); }); } function fromPromise(promise) { return new Observable(function (subscriber) { promise .then(function (value) { if (!subscriber.closed) { subscriber.next(value); subscriber.complete(); } }, function (err) { return subscriber.error(err); }) .then(null, reportUnhandledError); }); } function fromIterable(iterable) { return new Observable(function (subscriber) { var iterator = iterable[Symbol_iterator](); while (!subscriber.closed) { var _a = iterator.next(), done = _a.done, value = _a.value; if (done) { subscriber.complete(); } else { subscriber.next(value); } } return function () { return isFunction(iterator === null || iterator === void 0 ? void 0 : iterator.return) && iterator.return(); }; }); } function fromAsyncIterable(asyncIterable) { return new Observable(function (subscriber) { process(asyncIterable, subscriber).catch(function (err) { return subscriber.error(err); }); }); } function process(asyncIterable, subscriber) { var asyncIterable_1, asyncIterable_1_1; var e_1, _a; return __awaiter(this, void 0, void 0, function () { var value, e_1_1; return __generator(this, function (_b) { switch (_b.label) { case 0: _b.trys.push([0, 5, 6, 11]); asyncIterable_1 = __asyncValues(asyncIterable); _b.label = 1; case 1: return [4, asyncIterable_1.next()]; case 2: if (!(asyncIterable_1_1 = _b.sent(), !asyncIterable_1_1.done)) return [3, 4]; value = asyncIterable_1_1.value; subscriber.next(value); _b.label = 3; case 3: return [3, 1]; case 4: return [3, 11]; case 5: e_1_1 = _b.sent(); e_1 = { error: e_1_1 }; return [3, 11]; case 6: _b.trys.push([6, , 9, 10]); if (!(asyncIterable_1_1 && !asyncIterable_1_1.done && (_a = asyncIterable_1.return))) return [3, 8]; return [4, _a.call(asyncIterable_1)]; case 7: _b.sent(); _b.label = 8; case 8: return [3, 10]; case 9: if (e_1) throw e_1.error; return [7]; case 10: return [7]; case 11: subscriber.complete(); return [2]; } }); }); } //# sourceMappingURL=from.js.map