| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162 | import { Subscriber } from '../Subscriber';import { EmptyError } from '../util/EmptyError';export function single(predicate) {    return (source) => source.lift(new SingleOperator(predicate, source));}class SingleOperator {    constructor(predicate, source) {        this.predicate = predicate;        this.source = source;    }    call(subscriber, source) {        return source.subscribe(new SingleSubscriber(subscriber, this.predicate, this.source));    }}class SingleSubscriber extends Subscriber {    constructor(destination, predicate, source) {        super(destination);        this.predicate = predicate;        this.source = source;        this.seenValue = false;        this.index = 0;    }    applySingleValue(value) {        if (this.seenValue) {            this.destination.error('Sequence contains more than one element');        }        else {            this.seenValue = true;            this.singleValue = value;        }    }    _next(value) {        const index = this.index++;        if (this.predicate) {            this.tryNext(value, index);        }        else {            this.applySingleValue(value);        }    }    tryNext(value, index) {        try {            if (this.predicate(value, index, this.source)) {                this.applySingleValue(value);            }        }        catch (err) {            this.destination.error(err);        }    }    _complete() {        const destination = this.destination;        if (this.index > 0) {            destination.next(this.seenValue ? this.singleValue : undefined);            destination.complete();        }        else {            destination.error(new EmptyError);        }    }}//# sourceMappingURL=single.js.map
 |