| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485 | 
							- import { SimpleOuterSubscriber, SimpleInnerSubscriber, innerSubscribe } from '../innerSubscribe';
 
- export function mergeScan(accumulator, seed, concurrent = Number.POSITIVE_INFINITY) {
 
-     return (source) => source.lift(new MergeScanOperator(accumulator, seed, concurrent));
 
- }
 
- export class MergeScanOperator {
 
-     constructor(accumulator, seed, concurrent) {
 
-         this.accumulator = accumulator;
 
-         this.seed = seed;
 
-         this.concurrent = concurrent;
 
-     }
 
-     call(subscriber, source) {
 
-         return source.subscribe(new MergeScanSubscriber(subscriber, this.accumulator, this.seed, this.concurrent));
 
-     }
 
- }
 
- export class MergeScanSubscriber extends SimpleOuterSubscriber {
 
-     constructor(destination, accumulator, acc, concurrent) {
 
-         super(destination);
 
-         this.accumulator = accumulator;
 
-         this.acc = acc;
 
-         this.concurrent = concurrent;
 
-         this.hasValue = false;
 
-         this.hasCompleted = false;
 
-         this.buffer = [];
 
-         this.active = 0;
 
-         this.index = 0;
 
-     }
 
-     _next(value) {
 
-         if (this.active < this.concurrent) {
 
-             const index = this.index++;
 
-             const destination = this.destination;
 
-             let ish;
 
-             try {
 
-                 const { accumulator } = this;
 
-                 ish = accumulator(this.acc, value, index);
 
-             }
 
-             catch (e) {
 
-                 return destination.error(e);
 
-             }
 
-             this.active++;
 
-             this._innerSub(ish);
 
-         }
 
-         else {
 
-             this.buffer.push(value);
 
-         }
 
-     }
 
-     _innerSub(ish) {
 
-         const innerSubscriber = new SimpleInnerSubscriber(this);
 
-         const destination = this.destination;
 
-         destination.add(innerSubscriber);
 
-         const innerSubscription = innerSubscribe(ish, innerSubscriber);
 
-         if (innerSubscription !== innerSubscriber) {
 
-             destination.add(innerSubscription);
 
-         }
 
-     }
 
-     _complete() {
 
-         this.hasCompleted = true;
 
-         if (this.active === 0 && this.buffer.length === 0) {
 
-             if (this.hasValue === false) {
 
-                 this.destination.next(this.acc);
 
-             }
 
-             this.destination.complete();
 
-         }
 
-         this.unsubscribe();
 
-     }
 
-     notifyNext(innerValue) {
 
-         const { destination } = this;
 
-         this.acc = innerValue;
 
-         this.hasValue = true;
 
-         destination.next(innerValue);
 
-     }
 
-     notifyComplete() {
 
-         const buffer = this.buffer;
 
-         this.active--;
 
-         if (buffer.length > 0) {
 
-             this._next(buffer.shift());
 
-         }
 
-         else if (this.active === 0 && this.hasCompleted) {
 
-             if (this.hasValue === false) {
 
-                 this.destination.next(this.acc);
 
-             }
 
-             this.destination.complete();
 
-         }
 
-     }
 
- }
 
- //# sourceMappingURL=mergeScan.js.map
 
 
  |