@jovian/type-tools
Version:
TypeTools is a Typescript library for providing extensible tooling runtime validations and type helpers.
23 lines (20 loc) • 755 B
text/typescript
/* Jovian (c) 2020, License: MIT */
import { BehaviorSubject, Observable } from 'rxjs';
import { Class } from '../type-transform';
export class ConfigSource<T> {
private configData: T;
private configBehaviorSubject: BehaviorSubject<T>;
private configObservable$: Observable<T>;
constructor(configClass: Class<T>, configPartialData: Partial<T>) {
this.configData = new configClass(configPartialData);
this.configBehaviorSubject = new BehaviorSubject<T>(this.configData);
}
getConfigData() { return this.configData; }
get config() { return this.configData; }
get change$() {
if (!this.configObservable$) {
this.configObservable$ = this.configBehaviorSubject.asObservable();
}
return this.configObservable$;
}
}