abon
Version:
Flexible state management for React 🚀
33 lines (32 loc) • 1.23 kB
TypeScript
export interface UnsubscribeFn {
(): void;
}
export interface Listener {
(): void;
}
export interface ChangeListener<T> {
(current: T): void;
}
export interface ValueHandler<T> {
(current: T): void;
}
export interface EventListener<E, P> {
(event: E, payload: P): void;
}
export interface EventPayloadListener<P> {
(payload: P): void;
}
export interface ItemsChangeListener<T extends object, I extends keyof T> {
(current: ItemRecord<T, I>, items: T[], ids: T[I][]): any;
}
export declare type ItemRecordKey<T extends object, I extends keyof T> = T[I] & (string | number | symbol);
export declare type ItemRecord<T extends object, I extends keyof T> = Record<ItemRecordKey<T, I>, T>;
export interface Subscribeable<T> {
subscribe(listener: ChangeListener<T>): UnsubscribeFn;
}
export declare type SubscriberFlexResult = UnsubscribeFn | boolean | undefined | null | void;
export declare type ComposedSubscriberFlexResult = SubscriberFlexResult | Iterable<SubscriberFlexResult>;
export declare type ComposedSubscriberFlex = (listener: () => void) => ComposedSubscriberFlexResult;
export interface AsyncChangeListener<T> {
(current: T): void | Promise<void>;
}