general.utils.ts 1.1 KB

123456789101112131415161718192021222324252627282930
  1. import * as fs from 'fs'
  2. import path from 'path';
  3. import { isObservable, Observable, Observer, Subject } from 'rxjs';
  4. import ConsoleLogger from './log.utils';
  5. const console: ConsoleLogger = new ConsoleLogger(`GeneralUtils`, ['util'])
  6. function isRxObservable(value: any): value is Observable<any> {
  7. return isObservable(value);
  8. }
  9. function isRxObserver(value: any): value is Observer<any> {
  10. return (
  11. value &&
  12. typeof value === 'object' &&
  13. typeof value.next === 'function' &&
  14. typeof value.error === 'function' &&
  15. typeof value.complete === 'function'
  16. );
  17. }
  18. // Check specifically if the value is a Subject
  19. function isRxSubject(value: any): value is Subject<any> {
  20. return isRxObservable(value) && isRxObserver(value);
  21. }
  22. export function checkRxType(value: any): 'Subject' | 'Observable' | 'Observer' | 'Neither' {
  23. if (isRxSubject(value)) return 'Observer' // for now returns observer, because subject passes as Observable as well. Can modify at later date
  24. if (isRxObservable(value)) return 'Observable'
  25. if (isRxObserver(value)) return 'Observer'
  26. return 'Neither';
  27. }