import { Observable } from 'rxjs'; import { ObservableLike } from './Interfaces'; import { getObservable } from './Utils'; export function whenAny( arg1: ObservableLike, selector: (arg1: T1) => TRet, ): Observable; export function whenAny( arg1: ObservableLike, arg2: ObservableLike, selector: (arg1: T1, arg2: T2) => TRet, ): Observable; export function whenAny( arg1: ObservableLike, arg2: ObservableLike, arg3: ObservableLike, selector: (arg1: T1, arg2: T2, arg3: T3) => TRet, ): Observable; export function whenAny( arg1: ObservableLike, arg2: ObservableLike, arg3: ObservableLike, arg4: ObservableLike, selector: (arg1: T1, arg2: T2, arg3: T3, arg4: T4) => TRet, ): Observable; export function whenAny( arg1: ObservableLike, arg2: ObservableLike, arg3: ObservableLike, arg4: ObservableLike, arg5: ObservableLike, selector: (arg1: T1, arg2: T2, arg3: T3, arg4: T4, arg5: T5) => TRet, ): Observable; export function whenAny( arg1: ObservableLike, arg2: ObservableLike, arg3: ObservableLike, arg4: ObservableLike, arg5: ObservableLike, arg6: ObservableLike, selector: ( arg1: T1, arg2: T2, arg3: T3, arg4: T4, arg5: T5, arg6: T6, ) => TRet, ): Observable; export function whenAny( arg1: ObservableLike, arg2: ObservableLike, arg3: ObservableLike, arg4: ObservableLike, arg5: ObservableLike, arg6: ObservableLike, arg7: ObservableLike, selector: ( arg1: T1, arg2: T2, arg3: T3, arg4: T4, arg5: T5, arg6: T6, arg7: T7, ) => TRet, ): Observable; export function whenAny( arg1: ObservableLike, arg2: ObservableLike, arg3: ObservableLike, arg4: ObservableLike, arg5: ObservableLike, arg6: ObservableLike, arg7: ObservableLike, arg8: ObservableLike, selector: ( arg1: T1, arg2: T2, arg3: T3, arg4: T4, arg5: T5, arg6: T6, arg7: T7, arg8: T8, ) => TRet, ): Observable; export function whenAny( arg1: ObservableLike, arg2: ObservableLike, arg3: ObservableLike, arg4: ObservableLike, arg5: ObservableLike, arg6: ObservableLike, arg7: ObservableLike, arg8: ObservableLike, arg9: ObservableLike, selector: ( arg1: T1, arg2: T2, arg3: T3, arg4: T4, arg5: T5, arg6: T6, arg7: T7, arg8: T8, arg9: T9, ) => TRet, ): Observable; export function whenAny( arg1: ObservableLike, arg2: ObservableLike, arg3: ObservableLike, arg4: ObservableLike, arg5: ObservableLike, arg6: ObservableLike, arg7: ObservableLike, arg8: ObservableLike, arg9: ObservableLike, arg10: ObservableLike, selector: ( arg1: T1, arg2: T2, arg3: T3, arg4: T4, arg5: T5, arg6: T6, arg7: T7, arg8: T8, arg9: T9, arg10: T10, ) => TRet, ): Observable; export function whenAny(...args: Array>): Observable; export function whenAny(...args: any[]): Observable { let selector = args.pop(); if (!(selector instanceof Function)) { args.push(selector); selector = (...values: any[]) => { return values; }; } return Observable.combineLatest( ...args.map(x => getObservable(x)), selector, ); }