UNPKG

fluxx

Version:

Terse application state management

43 lines (32 loc) 1.03 kB
interface OnAction<S> { (action: NoArgAction, updater: (state: S) => S): void; <P>(action: Action<P>, updater: (state: S, payload: P) => S): void; } interface StoreStatics { log: boolean; } export interface Store<S> { log: boolean; state: S; subscribe(callback: (state: S) => void): () => void; } interface LocalStore<S> extends Store<S> { _isLocalStore: any; onDispose(cb: Function): LocalStore<S>; } interface GlobalStore<S> extends Store<S> { _isGlobalStore: any; } interface LocalStoreFactory { <S>(initialState: S, registerActions: (on: OnAction<S>) => void): LocalStore<S>; } interface GlobalStoreFactory { <S>(initialState: S, registerActions: (on: OnAction<S>) => void): GlobalStore<S>; } export var Store: StoreStatics; export var GlobalStore: GlobalStoreFactory; export var LocalStore: LocalStoreFactory; export type NoArgAction = () => void; export type Action<P> = (payload: P) => void; export function Action(name: string): NoArgAction; export function Action<P>(name: string): Action<P>;