import { Observable as RxStream } from '@reactivex/rxjs/dist/package/Observable' import { Subject } from '@reactivex/rxjs/dist/package/Subject' import { Subscription, StreamOps } from './index' import '@reactivex/rxjs/dist/package/add/operator/map' import '@reactivex/rxjs/dist/package/add/operator/merge' import '@reactivex/rxjs/dist/package/add/operator/mergeMap' import '@reactivex/rxjs/dist/package/add/operator/scan' import '@reactivex/rxjs/dist/package/add/operator/catch' import '@reactivex/rxjs/dist/package/add/operator/filter' import '@reactivex/rxjs/dist/package/add/observable/empty' import '@reactivex/rxjs/dist/package/add/observable/from' import '@reactivex/rxjs/dist/package/add/observable/of' import '@reactivex/rxjs/dist/package/add/observable/fromPromise' import '@reactivex/rxjs/dist/package/add/observable/combineLatest' declare module '.' { interface S_ { 'RxStream': RxStream } } declare module '../fantasy/typeclasses' { interface _ { 'RxStream': RxStream } } StreamOps.prototype.empty = RxStream.empty StreamOps.prototype.just = RxStream.of StreamOps.prototype.scan = function(f, base, fa) { return fa.scan(f, base) } StreamOps.prototype.combine = function ( f: (...a: any[]) => C, ...v: RxStream[] ): RxStream { return RxStream.combineLatest(v, f) } StreamOps.prototype.filter = function (f: (a: A) => boolean, fa: RxStream): RxStream { return fa.filter(f) } StreamOps.prototype.map = function (f: (a: A) => B, fa: RxStream): RxStream { return fa.map(f) } StreamOps.prototype.flatMap = function (f: (a: A) => RxStream, fa: RxStream): RxStream { return fa.mergeMap(f) } StreamOps.prototype.subject = function () { return new Subject() } StreamOps.prototype.subscribe = function (fa: RxStream, next: (v: A) => void, complete?: () => void) { return fa.catch(x => { console.error(x) return fa }).subscribe(next, x => console.error(x), complete) as Subscription } StreamOps.prototype.merge = function (a: RxStream, b: RxStream): RxStream { return a.merge(b) } StreamOps.prototype.fromPromise = RxStream.fromPromise; (StreamOps.prototype.from) = RxStream.from