import { combineLatestInit } from '../observable/combineLatest'; import { ObservableInput, ObservableInputTuple, OperatorFunction } from '../types'; import { operate } from '../util/lift'; import { argsOrArgArray } from '../util/argsOrArgArray'; import { mapOneOrManyArgs } from '../util/mapOneOrManyArgs'; import { pipe } from '../util/pipe'; import { popResultSelector } from '../util/args'; /** @deprecated Replaced with {@link combineLatestWith}. Will be removed in v8. */ export function combineLatest( sources: [...ObservableInputTuple], project: (...values: [T, ...A]) => R ): OperatorFunction; /** @deprecated Replaced with {@link combineLatestWith}. Will be removed in v8. */ export function combineLatest(sources: [...ObservableInputTuple]): OperatorFunction; /** @deprecated Replaced with {@link combineLatestWith}. Will be removed in v8. */ export function combineLatest( ...sourcesAndProject: [...ObservableInputTuple, (...values: [T, ...A]) => R] ): OperatorFunction; /** @deprecated Replaced with {@link combineLatestWith}. Will be removed in v8. */ export function combineLatest(...sources: [...ObservableInputTuple]): OperatorFunction; /** * @deprecated Replaced with {@link combineLatestWith}. Will be removed in v8. */ export function combineLatest(...args: (ObservableInput | ((...values: any[]) => R))[]): OperatorFunction { const resultSelector = popResultSelector(args); return resultSelector ? pipe(combineLatest(...(args as Array>)), mapOneOrManyArgs(resultSelector)) : operate((source, subscriber) => { combineLatestInit([source, ...argsOrArgArray(args)])(subscriber); }); }