| import { Subscriber } from '../Subscriber'; | 
| export function count(predicate) { | 
|     return (source) => source.lift(new CountOperator(predicate, source)); | 
| } | 
| class CountOperator { | 
|     constructor(predicate, source) { | 
|         this.predicate = predicate; | 
|         this.source = source; | 
|     } | 
|     call(subscriber, source) { | 
|         return source.subscribe(new CountSubscriber(subscriber, this.predicate, this.source)); | 
|     } | 
| } | 
| class CountSubscriber extends Subscriber { | 
|     constructor(destination, predicate, source) { | 
|         super(destination); | 
|         this.predicate = predicate; | 
|         this.source = source; | 
|         this.count = 0; | 
|         this.index = 0; | 
|     } | 
|     _next(value) { | 
|         if (this.predicate) { | 
|             this._tryPredicate(value); | 
|         } | 
|         else { | 
|             this.count++; | 
|         } | 
|     } | 
|     _tryPredicate(value) { | 
|         let result; | 
|         try { | 
|             result = this.predicate(value, this.index++, this.source); | 
|         } | 
|         catch (err) { | 
|             this.destination.error(err); | 
|             return; | 
|         } | 
|         if (result) { | 
|             this.count++; | 
|         } | 
|     } | 
|     _complete() { | 
|         this.destination.next(this.count); | 
|         this.destination.complete(); | 
|     } | 
| } | 
| //# sourceMappingURL=count.js.map |