A simple function for handling events with streams
/**
* @link https://github.com/johnlindquist/rx-handler
*/
import { observable, Subject } from 'rxjs';
import { share } from 'rxjs/operators';
import { OperatorFunction } from 'rxjs/interfaces';
export function handler(...operators: OperatorFunction<any, any>[]) {
const subject$: Subject<any> = new Subject();
const source$ = subject$.pipe.apply(subject$, [...operators, share()]);
const next = (...args): void => subject$.next.apply(subject$, args);
next[observable] = () => source$;
return next;
}