UNPKG

@tacky/store

Version:

State management framework based on react

57 lines (56 loc) 1.45 kB
import { Domain } from './core/domain'; import { Component } from 'react'; export declare type MiddlewareParam = { dispatch: (action: DispatchedAction) => DispatchedAction; }; export interface Middleware { ({ dispatch }: MiddlewareParam): (next: any) => (action: DispatchedAction) => any; } export interface Store { dispatch: (action: DispatchedAction) => DispatchedAction | Promise<DispatchedAction>; subscribe: (listener: Function, componentInstanceUid: Component) => () => void; } export interface AtomStateTree { instance: Domain<any>; plainObject: ModuleState; default: ModuleState; } export interface ModuleState { [key: string]: any; } export interface Mutation { (...restPayload: any[]): void; } export interface Effect { (...restPayload: any[]): Promise<void>; } export declare enum EMaterialType { DEFAULT = 1, MUTATION = 2, UPDATE = 3, EFFECT = 4, TIME_TRAVEL = 5 } export interface DispatchedAction { payload: any[]; original: Effect | Mutation; name?: string; type?: EMaterialType; domain?: Domain; isAtom?: boolean; isInner?: boolean; } export interface ConfigCtx { middleware: { logger: boolean; effect: boolean; }; timeTravel: { isActive: boolean; maxStepNumber: number; }; devTool: boolean; } export declare type BabelDescriptor<T> = TypedPropertyDescriptor<T> & { initializer?: () => any; };