add observable
This commit is contained in:
@ -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'
|
||||
|
8
ts/smartrx.classes.observable.ts
Normal file
8
ts/smartrx.classes.observable.ts
Normal file
@ -0,0 +1,8 @@
|
||||
import { Observable as rxjsObservable } from 'rxjs'
|
||||
export {
|
||||
rxjsObservable
|
||||
}
|
||||
|
||||
export class Observable<T> extends rxjsObservable<T> {
|
||||
static fromIntake () {}
|
||||
}
|
42
ts/smartrx.classes.observablemap.ts
Normal file
42
ts/smartrx.classes.observablemap.ts
Normal 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
|
||||
}
|
||||
}
|
||||
}
|
@ -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
|
||||
}
|
||||
|
Reference in New Issue
Block a user