27 lines
1.0 KiB
Plaintext
27 lines
1.0 KiB
Plaintext
import { AnyUpdater, Listener } from './types.cjs';
|
|
export interface StoreOptions<TState, TUpdater extends AnyUpdater = (cb: TState) => TState> {
|
|
/**
|
|
* Replace the default update function with a custom one.
|
|
*/
|
|
updateFn?: (previous: TState) => (updater: TUpdater) => TState;
|
|
/**
|
|
* Called when a listener subscribes to the store.
|
|
*
|
|
* @return a function to unsubscribe the listener
|
|
*/
|
|
onSubscribe?: (listener: Listener<TState>, store: Store<TState, TUpdater>) => () => void;
|
|
/**
|
|
* Called after the state has been updated, used to derive other state.
|
|
*/
|
|
onUpdate?: () => void;
|
|
}
|
|
export declare class Store<TState, TUpdater extends AnyUpdater = (cb: TState) => TState> {
|
|
listeners: Set<Listener<TState>>;
|
|
state: TState;
|
|
prevState: TState;
|
|
options?: StoreOptions<TState, TUpdater>;
|
|
constructor(initialState: TState, options?: StoreOptions<TState, TUpdater>);
|
|
subscribe: (listener: Listener<TState>) => () => void;
|
|
setState: (updater: TUpdater) => void;
|
|
}
|