import { isFunction } from './isiterable.js'; import { Observer, PartialObserver } from '../observer.js'; const noop = (_?: any) => { /**/ }; // eslint-disable-next-line complexity export function toObserver( next?: PartialObserver | ((value: T) => void) | null, error?: ((err: any) => void) | null, complete?: (() => void) | null ): Observer { const observer = next as PartialObserver; if (observer && typeof observer === 'object') { return { next: isFunction(observer.next) ? (x) => observer.next!(x) : noop, error: isFunction(observer.error) ? (e) => observer.error!(e) : noop, complete: isFunction(observer.complete) ? () => observer.complete!() : noop, }; } return { next: isFunction(next) ? next : noop, error: isFunction(error) ? error : noop, complete: isFunction(complete) ? complete : noop, }; }