--- /dev/null
+import { Subscriber } from '../Subscriber';
+export function find(predicate, thisArg) {
+ if (typeof predicate !== 'function') {
+ throw new TypeError('predicate is not a function');
+ }
+ return (source) => source.lift(new FindValueOperator(predicate, source, false, thisArg));
+}
+export class FindValueOperator {
+ constructor(predicate, source, yieldIndex, thisArg) {
+ this.predicate = predicate;
+ this.source = source;
+ this.yieldIndex = yieldIndex;
+ this.thisArg = thisArg;
+ }
+ call(observer, source) {
+ return source.subscribe(new FindValueSubscriber(observer, this.predicate, this.source, this.yieldIndex, this.thisArg));
+ }
+}
+export class FindValueSubscriber extends Subscriber {
+ constructor(destination, predicate, source, yieldIndex, thisArg) {
+ super(destination);
+ this.predicate = predicate;
+ this.source = source;
+ this.yieldIndex = yieldIndex;
+ this.thisArg = thisArg;
+ this.index = 0;
+ }
+ notifyComplete(value) {
+ const destination = this.destination;
+ destination.next(value);
+ destination.complete();
+ this.unsubscribe();
+ }
+ _next(value) {
+ const { predicate, thisArg } = this;
+ const index = this.index++;
+ try {
+ const result = predicate.call(thisArg || this, value, index, this.source);
+ if (result) {
+ this.notifyComplete(this.yieldIndex ? index : value);
+ }
+ }
+ catch (err) {
+ this.destination.error(err);
+ }
+ }
+ _complete() {
+ this.notifyComplete(this.yieldIndex ? -1 : undefined);
+ }
+}
+//# sourceMappingURL=find.js.map
\ No newline at end of file