239343559c519fc419dd7b4ba295719628040fd15191fa762d869ebc927d6abddb08d3a823f2f69a161e9e9c39cba11fad795feabe6f0dbf0c874dfbcf2590 779 B

1234567891011121314151617181920212223242526
  1. import { Subscriber } from '../Subscriber';
  2. import { rxSubscriber as rxSubscriberSymbol } from '../symbol/rxSubscriber';
  3. import { empty as emptyObserver } from '../Observer';
  4. import { PartialObserver } from '../types';
  5. export function toSubscriber<T>(
  6. nextOrObserver?: PartialObserver<T> | ((value: T) => void),
  7. error?: (error: any) => void,
  8. complete?: () => void): Subscriber<T> {
  9. if (nextOrObserver) {
  10. if (nextOrObserver instanceof Subscriber) {
  11. return (<Subscriber<T>> nextOrObserver);
  12. }
  13. if (nextOrObserver[rxSubscriberSymbol]) {
  14. return nextOrObserver[rxSubscriberSymbol]();
  15. }
  16. }
  17. if (!nextOrObserver && !error && !complete) {
  18. return new Subscriber(emptyObserver);
  19. }
  20. return new Subscriber(nextOrObserver, error, complete);
  21. }