zust
Version:
A powerful, lightweight, and fully standalone state management library for React with time-travel debugging, computed values, and zero dependencies
20 lines • 1.07 kB
TypeScript
type Listener<T> = (state: T, prevState: T) => void;
type PathListener<T> = {
path: string;
callback: (newValue: unknown, oldValue: unknown, fullState: T) => void;
};
type Unsubscribe = () => void;
export interface StoreEngine<T extends object> {
getState: () => T;
setState: (partial: Partial<T> | ((state: T) => Partial<T>), replace?: boolean) => void;
subscribe: (listener: Listener<T>) => Unsubscribe;
subscribePath: (path: string, callback: PathListener<T>["callback"]) => Unsubscribe;
destroy: () => void;
}
export declare function batch(callback: () => void): void;
export declare function createStoreEngine<T extends object>(initialState: T): StoreEngine<T>;
export declare function useStore<T extends object>(store: StoreEngine<T>): T;
export declare function useStoreSelector<T extends object, R>(store: StoreEngine<T>, selector: (state: T) => R): R;
export declare function useShallowSelector<T extends object, R extends object>(store: StoreEngine<T>, selector: (state: T) => R): R;
export {};
//# sourceMappingURL=createStore.d.ts.map