UNPKG

killa

Version:

State management for Vanilla and React

34 lines (33 loc) 1.29 kB
export interface Options<T> { compare?: (a: unknown, b: unknown) => boolean; clone?: (state: T) => T; use?: ((store: Store<T>) => void)[]; } type State = Record<string, any>; export type Selector<T, U = unknown> = (state: T) => U; export interface Subscriber<T, U = unknown> { (state: T, prevState: T): void; $$subscriber?: symbol; $$selectorState?: U; $$selector?: Selector<T, U>; } export interface Store<T = State> { $$store: symbol; getState: () => T; setState: (fn: (state: T) => Partial<T>, force?: boolean) => void; subscribe: { <U>(subscriber: Subscriber<T, U>, selector?: (State: T) => U): () => boolean; }; getServerState: () => T; } type InitializerFn<T> = (getState: Store<T>['getState'], setState: Store<T>['setState']) => T; export declare function createStore<T extends State, U = InitializerFn<T> | T>(initializer?: U, options?: Options<T>): Readonly<{ $$store: symbol; getState: () => T; setState: (fn: (state: T) => Partial<T>, force?: boolean | undefined) => void; subscribe: <U_1>(subscriber: Subscriber<T, U_1>, selector?: ((State: T) => U_1) | undefined) => () => boolean; getServerState: () => T; resetState: (state?: unknown | null) => void; destroy: () => void; }>; export {};