UNPKG

synapse-storage

Version:

Набор инструментов для управления состоянием и апи-запросами

75 lines (70 loc) 4.3 kB
import { S as SelectorAPI } from './selector.interface-CA5y-kD_.js'; import { j as IStorage } from './storage.interface-2HKvqdAJ.js'; import { ComponentType } from 'react'; import { Observable } from 'rxjs'; import { b as SynapseStoreWithEffects, a as SynapseStoreWithDispatcher, S as SynapseStoreBasic } from './createSynapse-CzeX0ONj.js'; import './dispatcher.module-DjMloBXe.js'; interface UseSelectorOptions<T> { /** Начальное значение до загрузки данных из селектора */ initialValue?: T; /** Функция сравнения для предотвращения лишних ререндеров */ equals?: (a: T, b: T) => boolean; /** Включать ли статус загрузки в возвращаемый результат */ withLoading?: boolean; } /** * Хук для использования селекторов в компонентах React. * Обеспечивает согласованность значений между всеми экземплярами хука. */ declare function useSelector<T>(selector: SelectorAPI<T>): T | undefined; declare function useSelector<T>(selector: SelectorAPI<T>, options: UseSelectorOptions<T> & { withLoading?: true; }): { data: T | undefined; isLoading: boolean; }; /** * Хук для подписки на изменения в хранилище * * @template S - Тип состояния хранилища * @template R - Тип возвращаемого значения * @param storage - Экземпляр хранилища * @param selector - Функция-селектор для выбора данных * @returns Значение из хранилища */ declare const useStorageSubscribe: <S extends Record<string, any>, R = any>(storage: IStorage<S>, selector: (state: S) => R) => R | undefined; interface Options<TStore extends Record<string, any>> { loadingComponent?: any; mergeFn?: (target: TStore, source: Record<string, any>) => void; } /** * Перегрузки для createSynapseCtx в зависимости от типа хранилища */ declare function createSynapseCtx<TStore extends Record<string, any>, TStorage extends IStorage<TStore>, TSelectors, TActions>(synapseStorePromise: Promise<SynapseStoreWithEffects<TStore, TStorage, TSelectors, TActions>> | SynapseStoreWithEffects<TStore, TStorage, TSelectors, TActions>, options?: Options<TStore>): { contextSynapse: <SelfComponentProps, PublicContextProps = Record<string, any>>(Component: ComponentType<SelfComponentProps>) => ComponentType<SelfComponentProps & { contextProps?: PublicContextProps; }>; useSynapseStorage: () => TStorage; useSynapseSelectors: () => TSelectors; useSynapseActions: () => TActions; useSynapseState$: () => Observable<TStore>; cleanupSynapse: () => Promise<void>; }; declare function createSynapseCtx<TStore extends Record<string, any>, TStorage extends IStorage<TStore>, TSelectors, TActions>(synapseStorePromise: Promise<SynapseStoreWithDispatcher<TStore, TStorage, TSelectors, TActions>> | SynapseStoreWithDispatcher<TStore, TStorage, TSelectors, TActions>, options?: Options<TStore>): { contextSynapse: <SelfComponentProps, PublicContextProps = Record<string, any>>(Component: ComponentType<SelfComponentProps>) => ComponentType<SelfComponentProps & { contextProps?: PublicContextProps; }>; useSynapseStorage: () => TStorage; useSynapseSelectors: () => TSelectors; useSynapseActions: () => TActions; cleanupSynapse: () => Promise<void>; }; declare function createSynapseCtx<TStore extends Record<string, any>, TStorage extends IStorage<TStore>, TSelectors>(synapseStorePromise: Promise<SynapseStoreBasic<TStore, TStorage, TSelectors>> | SynapseStoreBasic<TStore, TStorage, TSelectors>, options?: Options<TStore>): { contextSynapse: <SelfComponentProps, PublicContextProps = Record<string, any>>(Component: ComponentType<SelfComponentProps>) => ComponentType<SelfComponentProps & { contextProps?: PublicContextProps; }>; useSynapseStorage: () => TStorage; useSynapseSelectors: () => TSelectors; cleanupSynapse: () => Promise<void>; }; export { createSynapseCtx, useSelector, useStorageSubscribe };