| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273 | import { map } from './map';import { from } from '../observable/from';import { SimpleOuterSubscriber, SimpleInnerSubscriber, innerSubscribe } from '../innerSubscribe';export function exhaustMap(project, resultSelector) {    if (resultSelector) {        return (source) => source.pipe(exhaustMap((a, i) => from(project(a, i)).pipe(map((b, ii) => resultSelector(a, b, i, ii)))));    }    return (source) => source.lift(new ExhaustMapOperator(project));}class ExhaustMapOperator {    constructor(project) {        this.project = project;    }    call(subscriber, source) {        return source.subscribe(new ExhaustMapSubscriber(subscriber, this.project));    }}class ExhaustMapSubscriber extends SimpleOuterSubscriber {    constructor(destination, project) {        super(destination);        this.project = project;        this.hasSubscription = false;        this.hasCompleted = false;        this.index = 0;    }    _next(value) {        if (!this.hasSubscription) {            this.tryNext(value);        }    }    tryNext(value) {        let result;        const index = this.index++;        try {            result = this.project(value, index);        }        catch (err) {            this.destination.error(err);            return;        }        this.hasSubscription = true;        this._innerSub(result);    }    _innerSub(result) {        const innerSubscriber = new SimpleInnerSubscriber(this);        const destination = this.destination;        destination.add(innerSubscriber);        const innerSubscription = innerSubscribe(result, innerSubscriber);        if (innerSubscription !== innerSubscriber) {            destination.add(innerSubscription);        }    }    _complete() {        this.hasCompleted = true;        if (!this.hasSubscription) {            this.destination.complete();        }        this.unsubscribe();    }    notifyNext(innerValue) {        this.destination.next(innerValue);    }    notifyError(err) {        this.destination.error(err);    }    notifyComplete() {        this.hasSubscription = false;        if (this.hasCompleted) {            this.destination.complete();        }    }}//# sourceMappingURL=exhaustMap.js.map
 |