UNPKG

state-pool

Version:

Transform your React app with our state management library! Declare global and local states like variables, powered by the magic of React hooks 🪄✨

98 lines (97 loc) • 3.18 kB
import State from './State'; import { StateInitializer, Selector, Patcher, Reducer, SetState, UpdateState } from './types'; type StoreObserver = (key: string, value: unknown) => void; type PersistenceConfig = { saveState: (key: string, state: unknown, isInitialSet: boolean) => void; loadState: (key: string, noState: Empty) => unknown; removeState?: (key: string) => void; clear?: () => void; PERSIST_ENTIRE_STORE?: boolean; }; type StoreInitializer = { [key: string]: unknown; } | (() => { [key: string]: unknown; }); declare class Empty { } export default class Store { private states; private subscribers; private persistentStorage; constructor(storeInitializer?: StoreInitializer); subscribe(observer: StoreObserver): () => void; private onStoreUpdate; persist(config: PersistenceConfig): void; setState<T>(key: string, initialValue: StateInitializer<T> | T, { persist }?: { persist?: boolean; }): void; getState<T>(key: string, config?: { default?: StateInitializer<T> | T; persist?: boolean; }): State<T>; has(key: string): boolean; items(): Array<[key: string, state: unknown, persist: boolean]>; getStateValue<ST, T = unknown>(key: string, selector?: any): T | ST; clear(fn?: () => void): void; remove(Statekey: string | string[], fn?: () => void): void; useState<T>(key: string, config?: { default?: StateInitializer<T> | T; persist?: boolean; }): [ state: T, setState: SetState<T>, updateState: UpdateState<T>, stateObject: State<T> ]; useState<ST, T>(key: string, config: { selector: Selector<ST>; default?: StateInitializer<T> | T; persist?: boolean; }): [ state: ST, setState: SetState<T>, updateState: UpdateState<T>, stateObject: State<T> ]; useState<ST, T>(key: string, config: { selector: Selector<ST>; patcher: Patcher<ST>; default?: StateInitializer<T> | T; persist?: boolean; }): [ state: ST, setState: SetState<ST>, updateState: UpdateState<ST>, stateObject: State<T> ]; useReducer<T, A>(reducer: Reducer<T, A>, key: string, config?: { default?: StateInitializer<T> | T; persist?: boolean; }): [ state: T, dispatch: (action: A) => void, stateObject: State<T> ]; useReducer<ST, A, T = unknown>(reducer: Reducer<ST, A>, key: string, config: { selector?: Selector<ST>; default?: StateInitializer<T> | T | never; persist?: boolean; }): [ state: ST, dispatch: (action: A) => void, stateObject: State<T> ]; useReducer<ST, A, T = unknown>(reducer: Reducer<ST, A>, key: string, config: { selector?: Selector<ST>; patcher?: Patcher<ST>; default?: StateInitializer<T> | T | never; persist?: boolean; }): [ state: ST, dispatch: (action: A) => void, stateObject: State<T> ]; } export declare function createStore(storeInitializer?: StoreInitializer): Store; export {};