import { Subscriber } from './Subscriber'; import { Observable } from './Observable'; import { subscribeTo } from './util/subscribeTo'; export class SimpleInnerSubscriber extends Subscriber { constructor(parent) { super(); this.parent = parent; } _next(value) { this.parent.notifyNext(value); } _error(error) { this.parent.notifyError(error); this.unsubscribe(); } _complete() { this.parent.notifyComplete(); this.unsubscribe(); } } export class ComplexInnerSubscriber extends Subscriber { constructor(parent, outerValue, outerIndex) { super(); this.parent = parent; this.outerValue = outerValue; this.outerIndex = outerIndex; } _next(value) { this.parent.notifyNext(this.outerValue, value, this.outerIndex, this); } _error(error) { this.parent.notifyError(error); this.unsubscribe(); } _complete() { this.parent.notifyComplete(this); this.unsubscribe(); } } export class SimpleOuterSubscriber extends Subscriber { notifyNext(innerValue) { this.destination.next(innerValue); } notifyError(err) { this.destination.error(err); } notifyComplete() { this.destination.complete(); } } export class ComplexOuterSubscriber extends Subscriber { notifyNext(_outerValue, innerValue, _outerIndex, _innerSub) { this.destination.next(innerValue); } notifyError(error) { this.destination.error(error); } notifyComplete(_innerSub) { this.destination.complete(); } } export function innerSubscribe(result, innerSubscriber) { if (innerSubscriber.closed) { return undefined; } if (result instanceof Observable) { return result.subscribe(innerSubscriber); } let subscription; try { subscription = subscribeTo(result)(innerSubscriber); } catch (error) { innerSubscriber.error(error); } return subscription; } //# sourceMappingURL=innerSubscribe.js.map