multitude
Version:
Comprehensive streams for push and pull
20 lines • 901 B
JavaScript
import { TypeGuard } from 'type-core';
import 'symbol-observable';
export function isObservableConvertible(item) {
return isObservableLike(item) || isObservableCompatible(item) || TypeGuard.isIterable(item);
}
export function isObservableLike(item) {
return TypeGuard.isObject(item) && TypeGuard.isFunction(item.subscribe);
}
export function isObservableCompatible(item) {
return TypeGuard.isObject(item) && TypeGuard.isFunction(item[Symbol.observable]);
}
export function isObservable(item) {
return TypeGuard.isObject(item) && TypeGuard.isFunction(item[Symbol.observable]) && TypeGuard.isFunction(item.subscribe);
}
export function isSubscriptionLike(item) {
return TypeGuard.isObject(item) && TypeGuard.isFunction(item.unsubscribe);
}
export function isSubscription(item) {
return TypeGuard.isObject(item) && TypeGuard.isBoolean(item.closed) && TypeGuard.isFunction(item.unsubscribe);
}