import { Flowful, IFlowful } from './flowful'; import { DispatchMiddleware, DispatchMiddlewareCallback, IDispatchMiddleware } from './dispatch-middleware'; import { ActionHandlerMiddleware, ActionHandlerMiddlewareCallback, IActionHandlerMiddleware, } from './action-handler-middleware'; import { IAction } from './action'; import { createActionMap } from './action-map'; import { IActionHandler } from './action-handler'; export const dispatchMiddleware: IDispatchMiddleware = new DispatchMiddleware(); export function addDispatchMiddleware(callback: DispatchMiddlewareCallback) { return dispatchMiddleware.add(callback); } export function removeDispatchMiddleware(callback: DispatchMiddlewareCallback) { return dispatchMiddleware.remove(callback); } export const handlerMiddleware: IActionHandlerMiddleware = new ActionHandlerMiddleware(); export function addHandlerMiddleware(callback: ActionHandlerMiddlewareCallback) { return handlerMiddleware.add(callback); } export function removeHandlerMiddleware(callback: ActionHandlerMiddlewareCallback) { return handlerMiddleware.remove(callback); } export const flowful: IFlowful = new Flowful({ dispatchMiddleware, handlerMiddleware, }); export function hasHandler(handler: IActionHandler) { return flowful.hasHandler(handler); } export function addHandler(handler: IActionHandler) { return flowful.addHandler(handler); } export function removeHandler(handler: IActionHandler) { return flowful.removeHandler(handler); } export function dispatch(...actions: IAction[]) { return flowful.dispatchActionMap(createActionMap(...actions)); }