zust
Version:
A powerful, lightweight, and fully standalone state management library for React with time-travel debugging, computed values, and zero dependencies
43 lines • 2.33 kB
TypeScript
import { batch } from "./createStore";
import { type HistoryConfig, type HistoryAPI } from "./historyManager";
import { type ComputedValues, type ComputedConfig } from "./computedEngine";
export type Middleware<T extends object> = (next: (state: T) => T) => (state: T) => T;
export interface Plugin<T extends object> {
onInit?: (store: EnhancedStore<T>) => void;
middleware?: Middleware<T>;
}
export type AsyncAction<T> = (state: T, setDeep: <P extends string>(path: P, action: unknown | ((prev: unknown) => unknown)) => void) => Promise<void>;
export interface StoreOptions<T extends object> {
persist?: boolean | Record<string, boolean>;
logging?: boolean;
middleware?: Middleware<T>[];
computed?: ComputedValues<T>;
plugins?: Plugin<T>[];
prefix?: string;
history?: HistoryConfig;
}
export interface EnhancedStoreMethods<T extends object> {
setDeep: <P extends string>(path: P, action: unknown | ((prev: unknown) => unknown)) => void;
dispatch: (action: AsyncAction<T>) => Promise<void>;
subscribe: (listener: (state: T, prevState: T) => void) => () => void;
subscribePath: (path: string, callback: (newValue: unknown, oldValue: unknown, fullState: T) => void) => () => void;
history?: HistoryAPI;
deleteDeep: (path: string) => boolean;
hasPath: (path: string) => boolean;
}
export type EnhancedStore<T extends object> = T & EnhancedStoreMethods<T>;
export interface StoreCreationResult<T extends object> {
useStore: () => EnhancedStore<T>;
useSelectors: <Paths extends string[]>(...selectors: Paths) => Record<string, unknown>;
getState: () => EnhancedStore<T>;
setState: (partial: Partial<T> | ((state: T) => Partial<T>), replace?: boolean) => void;
setDeep: <P extends string>(path: P, action: unknown | ((prev: unknown) => unknown)) => void;
subscribe: (listener: (state: T, prevState: T) => void) => () => void;
subscribePath: (path: string, callback: (newValue: unknown, oldValue: unknown, fullState: T) => void) => () => void;
destroy: () => void;
history?: HistoryAPI;
}
export declare function createStore<T extends object>(initialState: T, options?: StoreOptions<T>): StoreCreationResult<T>;
export { batch };
export type { HistoryAPI, HistoryConfig, ComputedConfig, ComputedValues };
//# sourceMappingURL=index.d.ts.map