synapse-storage
Version:
Набор инструментов для управления состоянием и апи-запросами
96 lines (89 loc) • 5.31 kB
TypeScript
import { I as ISelectorModule, a as Selector, b as SelectorOptions, S as SelectorAPI } from './selector.interface-CA5y-kD_.js';
import { p as StorageType, M as Middleware, g as IPluginManager, e as IStoragePlugin, f as IPluginExecutor, n as ILogger, c as StorageKeyType, s as BaseStorage, o as StorageConfig, m as IEventEmitter, j as IStorage } from './storage.interface-2HKvqdAJ.js';
export { B as BatchingMiddlewareOptions, C as ConfigureMiddlewares, D as DefaultMiddlewares, G as GetDefaultMiddleware, d as IPlugin, I as IndexedDBStorage, r as IndexedDBStorageConfig, L as LocalStorageConfig, q as MemoryStorageConfig, a as MiddlewareAPI, N as NextFunction, P as PluginContext, S as ShallowCompareMiddlewareOptions, b as StorageAction, l as StorageEvent, k as StorageEvents, i as StorageInitStatus, h as StorageStatus } from './storage.interface-2HKvqdAJ.js';
interface SharedStateMiddlewareProps {
storageType: StorageType;
storageName: string;
}
declare const broadcastMiddleware: (props: SharedStateMiddlewareProps) => Middleware;
declare class StoragePluginModule implements IPluginManager<IStoragePlugin>, IPluginExecutor {
protected readonly parentExecutor?: IPluginExecutor | undefined;
protected readonly logger?: ILogger | undefined;
protected readonly storageName: string;
private plugins;
constructor(parentExecutor?: IPluginExecutor | undefined, logger?: ILogger | undefined, storageName?: string);
private createContext;
add(plugin: IStoragePlugin): Promise<void>;
remove(name: string): Promise<void>;
get(name: string): IStoragePlugin | undefined;
getAll(): IStoragePlugin[];
initialize(): Promise<void>;
destroy(): Promise<void>;
executeBeforeSet<T>(value: T, metadata?: Record<string, any>): Promise<T>;
executeAfterSet<T>(key: StorageKeyType, value: T, metadata?: Record<string, any>): Promise<T>;
executeBeforeGet(key: StorageKeyType, metadata?: Record<string, any>): Promise<StorageKeyType>;
executeAfterGet<T>(key: StorageKeyType, value: T | undefined, metadata?: Record<string, any>): Promise<T | undefined>;
executeBeforeDelete(key: StorageKeyType, metadata?: Record<string, any>): Promise<boolean>;
executeAfterDelete(key: StorageKeyType, metadata?: Record<string, any>): Promise<void>;
executeOnClear(metadata?: Record<string, any>): Promise<void>;
}
declare class LocalStorage<T extends Record<string, any>> extends BaseStorage<T> {
constructor(config: StorageConfig, pluginExecutor?: IPluginExecutor, eventEmitter?: IEventEmitter, logger?: ILogger);
protected doInitialize(): Promise<this>;
protected doGet(key: StorageKeyType): Promise<any>;
protected doSet(key: StorageKeyType, value: any): Promise<void>;
protected doDelete(key: StorageKeyType): Promise<boolean>;
protected doUpdate(updates: Array<{
key: StorageKeyType;
value: any;
}>): Promise<void>;
protected doClear(): Promise<void>;
protected doKeys(): Promise<string[]>;
protected doHas(key: StorageKeyType): Promise<boolean>;
private getAllKeys;
protected doDestroy(): Promise<void>;
}
declare class MemoryStorage<T extends Record<string, any>> extends BaseStorage<T> {
private storage;
constructor(config: StorageConfig, pluginExecutor?: IPluginExecutor, eventEmitter?: IEventEmitter, logger?: ILogger);
protected doInitialize(): Promise<this>;
protected doGet(key: StorageKeyType): Promise<any>;
protected doSet(key: StorageKeyType, value: any): Promise<void>;
protected doDelete(key: StorageKeyType): Promise<boolean>;
protected doUpdate(updates: Array<{
key: StorageKeyType;
value: any;
}>): Promise<void>;
protected doClear(): Promise<void>;
protected doKeys(): Promise<string[]>;
protected doHas(key: StorageKeyType): Promise<boolean>;
protected doDestroy(): Promise<void>;
private getAllKeys;
}
declare class SelectorModule<S extends Record<string, any>> implements ISelectorModule<S> {
private readonly source;
private readonly logger?;
storageName: string;
private subscriptions;
private cachedState?;
private localSelectorCache;
private batchUpdateInProgress;
private pendingUpdates;
constructor(source: IStorage<S>, logger?: ILogger | undefined);
/**
* Генерирует имя для селектора на основе его типа и функции
*/
private generateName;
/**
* Обрабатывает отложенные обновления, чтобы избежать каскадных уведомлений
*/
private processPendingUpdates;
createSelector<T>(selector: Selector<S, T>, options?: SelectorOptions<T>): SelectorAPI<T>;
createSelector<Deps extends unknown[], T>(dependencies: {
[]: SelectorAPI<Deps[K]>;
}, resultFn: (...args: Deps) => T, options?: SelectorOptions<T>): SelectorAPI<T>;
private createSimpleSelector;
private createCombinedSelector;
destroy(): void;
}
export { IEventEmitter, ILogger, IPluginExecutor, IPluginManager, ISelectorModule, IStorage, IStoragePlugin, LocalStorage, MemoryStorage, Middleware, SelectorAPI, SelectorModule, StorageConfig, StorageKeyType, StoragePluginModule, StorageType, broadcastMiddleware };