synapse-storage
Version:
Набор инструментов для управления состоянием и апи-запросами
28 lines (27 loc) • 2.25 kB
TypeScript
import { IndexedDBStorage } from '../adapters/indexed-DB.service';
import { LocalStorage } from '../adapters/local-storage.service';
import { MemoryStorage } from '../adapters/memory-storage.service';
import { IAsyncStorage, IEventEmitter, ILogger, IndexedDBStorageConfig, IStorage, ISyncStorage, LocalStorageConfig, MemoryStorageConfig, StorageType, UniversalStorageConfig } from '../storage.interface';
export declare class StorageFactory {
static createMemory<T extends Record<string, any>>(config: MemoryStorageConfig<T>, eventEmitter?: IEventEmitter, logger?: ILogger): MemoryStorage<T>;
static createLocal<T extends Record<string, any>>(config: LocalStorageConfig<T>, eventEmitter?: IEventEmitter, logger?: ILogger): LocalStorage<T>;
static createIndexedDB<T extends Record<string, any>>(config: IndexedDBStorageConfig<T>, eventEmitter?: IEventEmitter, logger?: ILogger): IndexedDBStorage<T>;
static create<T extends Record<string, any>>(config: UniversalStorageConfig<T> & {
type: 'memory';
}, eventEmitter?: IEventEmitter, logger?: ILogger): ISyncStorage<T>;
static create<T extends Record<string, any>>(config: UniversalStorageConfig<T> & {
type: 'localStorage';
}, eventEmitter?: IEventEmitter, logger?: ILogger): ISyncStorage<T>;
static create<T extends Record<string, any>>(config: UniversalStorageConfig<T> & {
type: 'indexedDB';
}, eventEmitter?: IEventEmitter, logger?: ILogger): IAsyncStorage<T>;
/**
* Общая перегрузка для динамического `type`. Принимает ТОЛЬКО типы, которые фабрика
* реально создаёт (`memory`/`localStorage`/`indexedDB`). `'worker'` сюда НЕ входит
* намеренно: `WorkerCacheStorage` не создаётся лениво фабрикой (нужны воркер-опции),
* поэтому `create({ type: 'worker' })` не должен типизироваться, а не падать в рантайме (R5).
*/
static create<T extends Record<string, any>>(config: UniversalStorageConfig<T> & {
type: Exclude<StorageType, 'worker'>;
}, eventEmitter?: IEventEmitter, logger?: ILogger): IStorage<T>;
}