import { Subscriber } from '../Subscriber'; export function createOperatorSubscriber(destination, onNext, onComplete, onError, onFinalize) { return new OperatorSubscriber(destination, onNext, onComplete, onError, onFinalize); } export class OperatorSubscriber extends Subscriber { constructor(destination, onNext, onComplete, onError, onFinalize, shouldUnsubscribe) { super(destination); this.onFinalize = onFinalize; this.shouldUnsubscribe = shouldUnsubscribe; this._next = onNext ? function (value) { try { onNext(value); } catch (err) { destination.error(err); } } : super._next; this._error = onError ? function (err) { try { onError(err); } catch (err) { destination.error(err); } finally { this.unsubscribe(); } } : super._error; this._complete = onComplete ? function () { try { onComplete(); } catch (err) { destination.error(err); } finally { this.unsubscribe(); } } : super._complete; } unsubscribe() { var _a; if (!this.shouldUnsubscribe || this.shouldUnsubscribe()) { const { closed } = this; super.unsubscribe(); !closed && ((_a = this.onFinalize) === null || _a === void 0 ? void 0 : _a.call(this)); } } } //# sourceMappingURL=OperatorSubscriber.js.map