add observable

This commit is contained in:
2017-10-26 22:56:01 +02:00
parent f2699f022a
commit 9f1f006dd9
16 changed files with 568 additions and 1 deletions

View File

@ -1,3 +1,5 @@
import * as plugins from './smartrx.plugins'
export let standardExport = 'Hi there! :) This is a exported string'
export * from './smartrx.classes.observablemap'
export * from './smartrx.classes.observable'

View File

@ -0,0 +1,8 @@
import { Observable as rxjsObservable } from 'rxjs'
export {
rxjsObservable
}
export class Observable<T> extends rxjsObservable<T> {
static fromIntake () {}
}

View File

@ -0,0 +1,42 @@
import * as plugins from './smartrx.plugins'
import { Observable, rxjsObservable } from './smartrx.classes.observable'
import { Objectmap } from 'lik'
import { Stringmap } from 'lik'
/**
* bundles an observable with an emitter
*/
export interface ObservableEmitterBundle {
observable: plugins.rxjs.Observable<any>
emitter: plugins.events.EventEmitter
event: string
}
/**
* manages observables by making sure that only one observable is regsitered per event
*/
export class Observablemap {
ObservableEmitterBundleObjectmap = new Objectmap<ObservableEmitterBundle>()
/**
* creates a new observable if not yet registered for the same event.
* In case event has been registered before the same observable is returned.
*/
getObservableForEmitterEvent (emitterArg: plugins.events.EventEmitter, eventArg: string) {
let existingBundle = this.ObservableEmitterBundleObjectmap.find((bundleArg) => {
return (bundleArg.emitter === emitterArg && bundleArg.event === eventArg)
})
if (existingBundle) {
return existingBundle.observable
} else {
let emitterObservable = plugins.rxjs.Observable.fromEvent(emitterArg, eventArg)
this.ObservableEmitterBundleObjectmap.add({
observable: emitterObservable,
emitter: emitterArg,
event: eventArg
})
return emitterObservable
}
}
}

View File

@ -1 +1,10 @@
import 'typings-global'
import * as events from 'events'
import * as lik from 'lik'
import * as rxjs from 'rxjs'
export {
events,
lik,
rxjs
}