1 import { Subscriber } from '../Subscriber';
2 export function sequenceEqual(compareTo, comparator) {
3 return (source) => source.lift(new SequenceEqualOperator(compareTo, comparator));
5 export class SequenceEqualOperator {
6 constructor(compareTo, comparator) {
7 this.compareTo = compareTo;
8 this.comparator = comparator;
10 call(subscriber, source) {
11 return source.subscribe(new SequenceEqualSubscriber(subscriber, this.compareTo, this.comparator));
14 export class SequenceEqualSubscriber extends Subscriber {
15 constructor(destination, compareTo, comparator) {
17 this.compareTo = compareTo;
18 this.comparator = comparator;
21 this._oneComplete = false;
22 this.destination.add(compareTo.subscribe(new SequenceEqualCompareToSubscriber(destination, this)));
25 if (this._oneComplete && this._b.length === 0) {
34 if (this._oneComplete) {
35 this.emit(this._a.length === 0 && this._b.length === 0);
38 this._oneComplete = true;
43 const { _a, _b, comparator } = this;
44 while (_a.length > 0 && _b.length > 0) {
49 areEqual = comparator ? comparator(a, b) : a === b;
52 this.destination.error(e);
60 const { destination } = this;
61 destination.next(value);
62 destination.complete();
65 if (this._oneComplete && this._a.length === 0) {
74 if (this._oneComplete) {
75 this.emit(this._a.length === 0 && this._b.length === 0);
78 this._oneComplete = true;
82 class SequenceEqualCompareToSubscriber extends Subscriber {
83 constructor(destination, parent) {
88 this.parent.nextB(value);
91 this.parent.error(err);
95 this.parent.completeB();
99 //# sourceMappingURL=sequenceEqual.js.map