summaryrefslogtreecommitdiff
path: root/tools/node_modules/eslint/node_modules/rxjs/src/internal/util/subscribeToObservable.ts
blob: b53c566a141d18c04ceaeb461294e87b269a9923 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
import { Subscriber } from '../Subscriber';
import { observable as Symbol_observable } from '../symbol/observable';

/**
 * Subscribes to an object that implements Symbol.observable with the given
 * Subscriber.
 * @param obj An object that implements Symbol.observable
 */
export const subscribeToObservable = <T>(obj: any) => (subscriber: Subscriber<T>) => {
  const obs = obj[Symbol_observable]();
  if (typeof obs.subscribe !== 'function') {
    // Should be caught by observable subscribe function error handling.
    throw new TypeError('Provided object does not correctly implement Symbol.observable');
  } else {
    return obs.subscribe(subscriber);
  }
};