@difizen/mana-core
Version:
46 lines • 2.06 kB
TypeScript
import type { MaybePromise } from '@difizen/mana-common';
import { Syringe } from '@difizen/mana-syringe';
import type { ConfigurationNode } from './configuration-protocol';
import type { ConfigurationStorage } from './configuration-storage';
export declare const ConfigurationProvider: Syringe.DefinedToken;
export interface ConfigurationProvider {
canHandle: (storage: ConfigurationStorage) => false | number;
has: <T>(node: ConfigurationNode<T>) => MaybePromise<boolean>;
get: <T>(node: ConfigurationNode<T>) => MaybePromise<T>;
set: <T>(node: ConfigurationNode<T>, value: T) => MaybePromise<void>;
remove: <T>(node: ConfigurationNode<T>) => MaybePromise<void>;
/**
* 开启缓存,默认false
* 对本地同步调用不用开启
* 对远端异步调用建议开启,防止请求过多
*/
enableCache?: boolean;
/**
* 提前批量获取配置作为缓存, enableCache打开后会在应用初始化调用
* @param nodes
* @returns
*/
prefetch?: (nodes: ConfigurationNode<any>[]) => MaybePromise<any[]>;
}
export declare class DefaultConfigurationProvider implements ConfigurationProvider {
protected configStore: Map<string, any>;
/**
* 默认用内存的provider
* @returns
*/
canHandle(storage: ConfigurationStorage): false | number;
has: <T>(node: ConfigurationNode<T>) => boolean;
get: <T>(node: ConfigurationNode<T>) => any;
set: <T>(node: ConfigurationNode<T>, value: T) => void;
remove: <T>(node: ConfigurationNode<T>) => void;
}
export declare class LocalStorageConfigurationProvider implements ConfigurationProvider {
protected configStore: Storage;
canHandle(storage: ConfigurationStorage): false | number;
has: <T>(node: ConfigurationNode<T>) => boolean;
get: <T>(node: ConfigurationNode<T>) => T;
set: <T>(node: ConfigurationNode<T>, value: T) => void;
remove: <T>(node: ConfigurationNode<T>) => void;
protected prefix(key: string): string;
}
//# sourceMappingURL=configuration-provider.d.ts.map