/** * @license Use of this source code is governed by an MIT-style license that * can be found in the LICENSE file at https://github.com/cartant/rxjs-etc */ import { Observable, Operator, OperatorFunction, Subscriber, TeardownLogic, } from "rxjs"; export function dispose(callback: () => void): OperatorFunction { return (source: Observable) => source.lift(new DisposeOperator(callback)); } class DisposeOperator implements Operator { constructor(private callback: () => void) {} call(subscriber: Subscriber, source: any): TeardownLogic { const subscription = source.subscribe(subscriber); subscription.add(this.callback); return subscription; } }