--- /dev/null
+import { Subscriber } from '../Subscriber';
+export function filter(predicate, thisArg) {
+ return function filterOperatorFunction(source) {
+ return source.lift(new FilterOperator(predicate, thisArg));
+ };
+}
+class FilterOperator {
+ constructor(predicate, thisArg) {
+ this.predicate = predicate;
+ this.thisArg = thisArg;
+ }
+ call(subscriber, source) {
+ return source.subscribe(new FilterSubscriber(subscriber, this.predicate, this.thisArg));
+ }
+}
+class FilterSubscriber extends Subscriber {
+ constructor(destination, predicate, thisArg) {
+ super(destination);
+ this.predicate = predicate;
+ this.thisArg = thisArg;
+ this.count = 0;
+ }
+ _next(value) {
+ let result;
+ try {
+ result = this.predicate.call(this.thisArg, value, this.count++);
+ }
+ catch (err) {
+ this.destination.error(err);
+ return;
+ }
+ if (result) {
+ this.destination.next(value);
+ }
+ }
+}
+//# sourceMappingURL=filter.js.map
\ No newline at end of file