little-state-machine
Version:
State management made super simple
30 lines (29 loc) • 1.04 kB
TypeScript
import { PERSIST_OPTION } from './constants';
export interface GlobalState {
}
export type AnyCallback = (state: GlobalState, payload: any) => GlobalState;
export type AnyActions<TCallback> = Record<string, TCallback>;
export type ActionsOutput<TCallback extends AnyCallback, TActions extends AnyActions<TCallback>> = {
[K in keyof TActions]: (payload?: Parameters<TActions[K]>[1], options?: {
skipRender: boolean;
}) => void;
};
export type MiddleWare = (state: GlobalState, payload: any, callbackName: string) => GlobalState;
export type StateMachineOptions = Partial<{
name: string;
middleWares: MiddleWare[];
storageType: Storage;
persist: (typeof PERSIST_OPTION)[keyof typeof PERSIST_OPTION];
}>;
declare global {
interface Window {
__LSM_NAME__: any;
__LSM__: any;
__LSM_DEBUG__: any;
__LSM_RESET__: any;
__LSM_GET_STORE__: any;
__LSM_SAVE_TO__: any;
__LSM_LOAD__: any;
__LSM_DEBUG_NAME__: any;
}
}