import { Observable, ConnectableObservable } from 'rxjs'; import { publish, publishBehavior, publishReplay } from 'rxjs/operators'; export function publishStream(stream: Observable) { return stream.pipe(publish()) as ConnectableObservable; } export function publishBehaviorStream(stream: Observable, value: T) { return stream.pipe(publishBehavior(value)) as ConnectableObservable; } export function publishReplayStream( stream: Observable, bufferSize?: number ) { return stream.pipe(publishReplay(bufferSize)) as ConnectableObservable; }