| import { Subscriber } from '../Subscriber'; |
| import { rxSubscriber as rxSubscriberSymbol } from '../symbol/rxSubscriber'; |
| import { empty as emptyObserver } from '../Observer'; |
| import { PartialObserver } from '../types'; |
| |
| export function toSubscriber<T>( |
| nextOrObserver?: PartialObserver<T> | ((value: T) => void), |
| error?: (error: any) => void, |
| complete?: () => void): Subscriber<T> { |
| |
| if (nextOrObserver) { |
| if (nextOrObserver instanceof Subscriber) { |
| return (<Subscriber<T>> nextOrObserver); |
| } |
| |
| if (nextOrObserver[rxSubscriberSymbol]) { |
| return nextOrObserver[rxSubscriberSymbol](); |
| } |
| } |
| |
| if (!nextOrObserver && !error && !complete) { |
| return new Subscriber(emptyObserver); |
| } |
| |
| return new Subscriber(nextOrObserver, error, complete); |
| } |