synapse-storage
Version:
Набор инструментов для управления состоянием и апи-запросами
50 lines (49 loc) • 2.17 kB
TypeScript
import { type IStorageBase } from '../core';
/** Минимальная форма стора для awaiter'а: только storage (готовность читаем из storage.initStatus). */
export interface AwaitableSynapse {
storage: IStorageBase<any>;
}
export interface SynapseAwaiter<TStore extends AwaitableSynapse> {
/**
* Возвращает Promise, который резолвится когда Synapse готов
*/
waitForReady(): Promise<TStore>;
/**
* Проверяет, готов ли Synapse прямо сейчас (синхронно)
*/
isReady(): boolean;
/**
* Получает store если он готов, иначе undefined
*/
getStoreIfReady(): TStore | undefined;
/**
* Подписывается на событие готовности
* @param callback Функция, вызываемая когда store становится готов
* @returns Функция отписки
*/
onReady(callback: (store: TStore) => void): VoidFunction;
/**
* Подписывается на ошибки инициализации
* @param callback Функция, вызываемая при ошибке
* @returns Функция отписки
*/
onError(callback: (error: Error) => void): VoidFunction;
/**
* Получает текущий статус
*/
getStatus(): 'pending' | 'ready' | 'error';
/**
* Получает ошибку если есть
*/
getError(): Error | null;
/**
* Очищает ресурсы
*/
destroy(): void;
}
/**
* Создает фреймворк-независимую утилиту для ожидания готовности Synapse.
* Принимает `SynapseModule`-handle (PromiseLike), Promise готового synapse либо сам
* готовый synapse. Работает в любом JS окружении: Node.js, браузер, React Native.
*/
export declare function createSynapseAwaiter<TStore extends AwaitableSynapse>(synapseStorePromise: PromiseLike<TStore> | TStore): SynapseAwaiter<TStore>;