mobx-state-tree
Version:
Opinionated, transactional, MobX powered state container
32 lines (31 loc) • 1.56 kB
TypeScript
export declare type IMiddlewareEventType = "action" | "process_spawn" | "process_resume" | "process_resume_error" | "process_return" | "process_throw";
export declare type IMiddlewareEvent = {
type: IMiddlewareEventType;
name: string;
id: number;
parentId: number;
rootId: number;
context: IStateTreeNode;
tree: IStateTreeNode;
args: any[];
};
export declare type IMiddlewareHandler = (actionCall: IMiddlewareEvent, next: (actionCall: IMiddlewareEvent) => any) => any;
export declare function getNextActionId(): number;
export declare function runWithActionContext(context: IMiddlewareEvent, fn: Function): any;
export declare function getActionContext(): IMiddlewareEvent;
export declare function createActionInvoker<T extends Function>(target: IStateTreeNode, name: string, fn: T): () => any;
/**
* Middleware can be used to intercept any action is invoked on the subtree where it is attached.
* If a tree is protected (by default), this means that any mutation of the tree will pass through your middleware.
*
* For more details, see the [middleware docs](docs/middleware.md)
*
* @export
* @param {IStateTreeNode} target
* @param {(action: IRawActionCall, next: (call: IRawActionCall) => any) => any} middleware
* @returns {IDisposer}
*/
export declare function addMiddleware(target: IStateTreeNode, middleware: IMiddlewareHandler): IDisposer;
export declare function decorate<T extends Function>(middleware: IMiddlewareHandler, fn: T): T;
import { IStateTreeNode } from "./node";
import { IDisposer } from "../utils";