@code-gorilla-au/vue-forms
Version:
form authoring light weight framework
19 lines (18 loc) • 656 B
TypeScript
export interface DispatcherOptions {
debug?: boolean;
}
export type DispatchEventTopic = string;
export type DispatchFunction<T> = (opts: DispatcherOptions, event: DispatchEventPayload<T>) => void;
export interface DispatchEventPayload<T> {
id: string;
timestamp: number;
payload: T;
}
export interface DispatcherState<T> {
[key: DispatchEventTopic]: DispatchFunction<T>[];
}
export declare function dispatcher<T>(opts?: DispatcherOptions): {
topics(): string[];
subscribe(topic: DispatchEventTopic, fn: DispatchFunction<T>): void;
dispatch(topic: DispatchEventTopic, payload: DispatchEventPayload<T>): Promise<unknown>;
};