better-npm-init
Version:
A better version of npm init, with templates and more. Usage: better-npm-init <template> [--yarn] [--install] [--git] [--yes] [--help]
36 lines (27 loc) • 801 B
text/typescript
import { Observable, Subject } from 'rxjs';
import { filter, map } from 'rxjs/operators';
import { Injectable } from '@angular/core';
interface BroadCastObject {
key: any;
value: any;
}
({ providedIn: 'root' })
/* just single subject to emit across application key-value pair */
export class BroadcasterService {
private _eventQueue: Subject<BroadCastObject>;
constructor() {
this._eventQueue = new Subject<BroadCastObject>();
}
broadcast(key: any, value: any) {
this._eventQueue.next({ key, value });
}
unsubscribe() {
this._eventQueue.complete();
}
listen<T>(key: any): Observable<T> {
return this._eventQueue.asObservable().pipe(
filter((e) => e.key === key),
map((e) => <T>e.value)
);
}
}