Code coverage report for src/operator/merge-static.ts

Statements: 100% (18 / 18)      Branches: 100% (10 / 10)      Functions: 100% (1 / 1)      Lines: 100% (16 / 16)      Ignored: none     

All files » src/operator/ » merge-static.ts
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26    1 1 1   136 37 37 37 37 20 20 1   17 1     37 1     36    
import {Scheduler} from '../Scheduler';
import {Observable} from '../Observable';
import {ArrayObservable} from '../observable/fromArray';
import {MergeAllOperator} from './mergeAll-support';
import {isScheduler} from '../util/isScheduler';
 
export function merge<R>(...observables: Array<Observable<any> | Scheduler | number>): Observable<R> {
 let concurrent = Number.POSITIVE_INFINITY;
 let scheduler: Scheduler = null;
  let last: any = observables[observables.length - 1];
  if (isScheduler(last)) {
    scheduler = <Scheduler>observables.pop();
    if (observables.length > 1 && typeof observables[observables.length - 1] === 'number') {
      concurrent = <number>observables.pop();
    }
  } else if (typeof last === 'number') {
    concurrent = <number>observables.pop();
  }
 
  if (observables.length === 1) {
    return <Observable<R>>observables[0];
  }
 
  return new ArrayObservable(observables, scheduler).lift(new MergeAllOperator(concurrent));
}