synapse-storage
Version:
Набор инструментов для управления состоянием и апи-запросами
41 lines (40 loc) • 1.95 kB
TypeScript
import { IAsyncStorage, IEventEmitter, ILogger, IStorage, ISyncStorage, StorageInitStatus, StorageType, UniversalStorageConfig } from '../../core';
export interface UseSynapseStorageOptions {
/**
* Автоматически инициализировать при монтировании
*/
autoInitialize?: boolean;
/**
* Уничтожать storage при размонтировании
*/
destroyOnUnmount?: boolean;
}
export type UseSynapseStorageReturn<S> = {
storage: S;
status: StorageInitStatus;
initialize: () => Promise<void>;
destroy: () => Promise<void>;
isReady: true;
isLoading: false;
hasError: false;
} | {
storage: null;
status: StorageInitStatus;
initialize: () => Promise<void>;
destroy: () => Promise<void>;
isReady: false;
isLoading: boolean;
hasError: boolean;
};
export declare function useCreateStorage<T extends Record<string, any>>(config: UniversalStorageConfig<T> & {
type: 'memory';
}, options?: UseSynapseStorageOptions, eventEmitter?: IEventEmitter, logger?: ILogger): UseSynapseStorageReturn<ISyncStorage<T>>;
export declare function useCreateStorage<T extends Record<string, any>>(config: UniversalStorageConfig<T> & {
type: 'localStorage';
}, options?: UseSynapseStorageOptions, eventEmitter?: IEventEmitter, logger?: ILogger): UseSynapseStorageReturn<ISyncStorage<T>>;
export declare function useCreateStorage<T extends Record<string, any>>(config: UniversalStorageConfig<T> & {
type: 'indexedDB';
}, options?: UseSynapseStorageOptions, eventEmitter?: IEventEmitter, logger?: ILogger): UseSynapseStorageReturn<IAsyncStorage<T>>;
export declare function useCreateStorage<T extends Record<string, any>>(config: UniversalStorageConfig<T> & {
type: Exclude<StorageType, 'worker'>;
}, options?: UseSynapseStorageOptions, eventEmitter?: IEventEmitter, logger?: ILogger): UseSynapseStorageReturn<IStorage<T>>;