UNPKG

1.56 kBTypeScriptView Raw
1export declare type IMiddlewareEventType = "action" | "process_spawn" | "process_resume" | "process_resume_error" | "process_return" | "process_throw";
2export declare type IMiddlewareEvent = {
3 type: IMiddlewareEventType;
4 name: string;
5 id: number;
6 parentId: number;
7 rootId: number;
8 context: IStateTreeNode;
9 tree: IStateTreeNode;
10 args: any[];
11};
12export declare type IMiddlewareHandler = (actionCall: IMiddlewareEvent, next: (actionCall: IMiddlewareEvent) => any) => any;
13export declare function getNextActionId(): number;
14export declare function runWithActionContext(context: IMiddlewareEvent, fn: Function): any;
15export declare function getActionContext(): IMiddlewareEvent;
16export declare function createActionInvoker<T extends Function>(target: IStateTreeNode, name: string, fn: T): () => any;
17/**
18 * Middleware can be used to intercept any action is invoked on the subtree where it is attached.
19 * If a tree is protected (by default), this means that any mutation of the tree will pass through your middleware.
20 *
21 * For more details, see the [middleware docs](docs/middleware.md)
22 *
23 * @export
24 * @param {IStateTreeNode} target
25 * @param {(action: IRawActionCall, next: (call: IRawActionCall) => any) => any} middleware
26 * @returns {IDisposer}
27 */
28export declare function addMiddleware(target: IStateTreeNode, middleware: IMiddlewareHandler): IDisposer;
29export declare function decorate<T extends Function>(middleware: IMiddlewareHandler, fn: T): T;
30import { IStateTreeNode } from "./node";
31import { IDisposer } from "../utils";