Files
med-notes/.pnpm-store/v10/files/aa/e4ffe9e66abad4a0a1f580e7229ceaf3f713a4afca22968957435cec8153806d225d959249e9951c50243b2403dddf08087341d1bcba42310a528b42c207ae
2025-05-09 05:30:08 +02:00

27 lines
1.0 KiB
Plaintext

import { AnyUpdater, Listener } from './types.js';
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;
}