UNPKG

synapse-storage

Version:

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

32 lines (31 loc) 1.64 kB
import { Observable } from 'rxjs'; import { IStorageBase } from '../../../core'; /** * Конвертирует хранилище (IStorageBase) в Observable потока состояния. * * Без `selector` поток эмитит всё состояние `T` на каждое изменение хранилища. * С `selector` поток эмитит только выбранный срез и через `distinctUntilChanged` * пропускает повторы (по умолчанию сравнение по `Object.is`, либо переданным * `equals`) — компонент/эффект получает значение только когда срез реально менялся. * * @example * ```ts * import { toObservable } from 'synapse-storage/reactive' * * const auth$ = toObservable(authStorage) * * // Использование в createEffectConfig * createEffectConfig: () => ({ * externalStates: { auth: auth$ }, * }) * * // Поток только по срезу (эмитит лишь при изменении user.id): * const userId$ = toObservable(authStorage, (s) => s.user.id) * ``` */ export declare function toObservable<T extends Record<string, any>>(storage: IStorageBase<T>): Observable<T>; export declare function toObservable<T extends Record<string, any>, R>(storage: IStorageBase<T>, selector: (state: T) => R, equals?: (a: R, b: R) => boolean): Observable<R>; /** * Проверяет, является ли значение хранилищем (IStorageBase) */ export declare function isStorage(value: any): value is IStorageBase<any>;