public load(...params):Observable<ResultSet> { return from(<Promise<ResultSet>>this.apiInstace().load(...params)); } public sql(...params):Observable<any> { return from(this.apiInstace().sql(...params)); } public meta(...params):Observable<MetaResult> { return from(<Promise<MetaResult>>this.apiInstace().meta(...params)); } public watch(query, params = {}):Observable<ResultSet> { return Observable.create(observer => query.subscribe({ next: async query => { const resultSet = await this.apiInstace().load(query, params); observer.next(resultSet); } }) ); } }
from( fetch('https://raw.githubusercontent.com/mledoze/countries/2daadd0d5f26ada44f31e61a39bbf9b8fc8f3fa0/countries.json') ).pipe( flatMap(response => response.json()), map(countries => countries.reduce((a, { name: { common }, cioc: code }) => ({ ...a, [code]: common }), {})), startWith({}), publishReplay(1) )