Skip to content
Snippets Groups Projects
Commit fb7cc16c authored by David Sehnal's avatar David Sehnal
Browse files

mol-state: transform index, behavior event helper

parent f2594993
No related branches found
No related tags found
No related merge requests found
......@@ -81,6 +81,17 @@ export namespace Transformer {
}
const registry = new Map<Id, Transformer<any, any>>();
const fromTypeIndex: Map<StateObject.Type, Transformer[]> = new Map();
function _index(tr: Transformer) {
for (const t of tr.definition.from) {
if (fromTypeIndex.has(t.type)) {
fromTypeIndex.get(t.type)!.push(tr);
} else {
fromTypeIndex.set(t.type, [tr]);
}
}
}
export function get(id: string): Transformer {
const t = registry.get(id as Id);
......@@ -90,6 +101,10 @@ export namespace Transformer {
return t;
}
export function fromType(type: StateObject.Type): ReadonlyArray<Transformer> {
return fromTypeIndex.get(type) || [];
}
export function create<A extends StateObject, B extends StateObject, P>(namespace: string, definition: Definition<A, B, P>) {
const { name } = definition;
const id = `${namespace}.${name}` as Id;
......@@ -105,6 +120,7 @@ export namespace Transformer {
definition
};
registry.set(id, t);
_index(t);
return t;
}
......
......@@ -19,6 +19,7 @@ namespace RxEventHelper {
const helper = new _RxEventHelper();
const ret: RxEventHelper = (<T>() => helper.create<T>()) as RxEventHelper;
ret.dispose = () => helper.dispose();
ret.behavior = (v) => helper.behavior(v);
return ret;
}
}
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment