import { Observable, SchedulerLike } from 'rxjs'; import { shareReplay as higherOrder } from 'rxjs/operators'; import { ShareReplayConfig } from 'rxjs/internal-compatibility'; /** * @method shareReplay * @owner Observable */ export function shareReplay(this: Observable, config: ShareReplayConfig): Observable; export function shareReplay(this: Observable, bufferSize?: number, windowTime?: number, scheduler?: SchedulerLike): Observable; export function shareReplay(this: Observable, configOrBufferSize?: ShareReplayConfig | number, windowTime?: number, scheduler?: SchedulerLike): Observable { if (configOrBufferSize && typeof configOrBufferSize === 'object') { return higherOrder(configOrBufferSize as ShareReplayConfig)(this) as Observable; } return higherOrder(configOrBufferSize as number | undefined, windowTime, scheduler)(this) as Observable; }