UNPKG

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
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