import { Observable } from '../Observable';
import { Operator } from '../Operator';
import { Subscriber } from '../Subscriber';
import { noop } from '../util/noop';
import { MonoTypeOperatorFunction } from '../interfaces';
/**
* Ignores all items emitted by the source Observable and only passes calls of `complete` or `error`.
*
*
*
* @return {Observable} An empty Observable that only calls `complete`
* or `error`, based on which one is called by the source Observable.
* @method ignoreElements
* @owner Observable
*/
export function ignoreElements(): MonoTypeOperatorFunction {
return function ignoreElementsOperatorFunction(source: Observable) {
return source.lift(new IgnoreElementsOperator());
};
}
class IgnoreElementsOperator implements Operator {
call(subscriber: Subscriber, source: any): any {
return source.subscribe(new IgnoreElementsSubscriber(subscriber));
}
}
/**
* We need this JSDoc comment for affecting ESDoc.
* @ignore
* @extends {Ignored}
*/
class IgnoreElementsSubscriber extends Subscriber {
protected _next(unused: T): void {
noop();
}
}