import { SimpleOuterSubscriber, innerSubscribe, SimpleInnerSubscriber } from '../innerSubscribe'; export function exhaust() { return (source) => source.lift(new SwitchFirstOperator()); } class SwitchFirstOperator { call(subscriber, source) { return source.subscribe(new SwitchFirstSubscriber(subscriber)); } } class SwitchFirstSubscriber extends SimpleOuterSubscriber { constructor(destination) { super(destination); this.hasCompleted = false; this.hasSubscription = false; } _next(value) { if (!this.hasSubscription) { this.hasSubscription = true; this.add(innerSubscribe(value, new SimpleInnerSubscriber(this))); } } _complete() { this.hasCompleted = true; if (!this.hasSubscription) { this.destination.complete(); } } notifyComplete() { this.hasSubscription = false; if (this.hasCompleted) { this.destination.complete(); } } } //# sourceMappingURL=exhaust.js.map