typedux
Version:
Slightly adjusted Redux (awesome by default) for TS
47 lines (36 loc) • 1.04 kB
text/typescript
//import 'reflect-metadata'
import {getLogger} from '@3fv/logger-proxy'
const log = getLogger(__filename)
//const log = require<any>('log/make')('ActionLoader')
import {VariableProxy} from "../util";
// Map type for proxies
type ProxyMap = {[key:string]:VariableProxy<any>}
// The proxy container
const proxies:ProxyMap = {}
export class ActionRouter {
private actionFactories = []
constructor(...actionFactories) {
this.actionFactories.push(...actionFactories)
}
/**
* Update a specific action factory
*
* @param key
* @param actions
*/
update<T>(key,actions:T) {
if (proxies[key]) {
proxies[key].changeTarget(actions)
} else {
proxies[key] = new VariableProxy(actions,['dispatcher'])
ActionRouter[key] = proxies[key].proxy
}
}
load() {
// TODO: Implement load
// update('LogActions', new LogActionFactory())
// update('EditorActions', new EditorActionFactory())
// update('DocumentationActions', new DocumentationActionFactory())
// update('TipActions', new TipActionFactory())
}
}