UNPKG

@nexe/config-manager

Version:

Nexe Config Manager - A flexible configuration management solution with multiple sources and hot reload support

100 lines 2.92 kB
/** * 配置源接口 * 所有配置源必须实现此接口 */ export interface IConfigSource<T = unknown> { /** * 加载配置 * @param key 可选的配置键,用于获取特定配置项 * @param pathPrefix 可选的路径前缀,用于动态指定配置路径 */ load: (key?: string, pathPrefix?: string) => Promise<T>; /** * 获取配置源名称 */ getName: () => string; /** * 是否支持热更新 */ supportsHotReload: () => boolean; /** * 是否支持动态路径 */ supportsDynamicPath?: () => boolean; /** * 订阅配置变更(如果支持热更新) * @param key 配置键 * @param callback 配置变更时的回调函数 * @param pathPrefix 可选的路径前缀 */ subscribe?: (key: string, callback: (value: unknown) => void, pathPrefix?: string) => void; /** * 取消订阅配置变更 * @param key 配置键 * @param pathPrefix 可选的路径前缀 */ unsubscribe?: (key: string, pathPrefix?: string) => void; } /** * 配置获取选项 */ export interface ConfigOptions { /** * 配置路径前缀,用于指定从哪个路径获取配置 */ pathPrefix?: string; /** * 配置源名称,用于指定从哪个配置源获取配置 */ sourceName?: string; } /** * 配置管理器接口 */ export interface IConfigManager { /** * 添加配置源 * @param source 配置源实例 * @param priority 优先级,数字越大优先级越高 */ addSource: (source: IConfigSource, priority?: number) => void; /** * 获取配置值 * @param key 配置键 * @param defaultValue 默认值 * @param options 配置选项 */ get: <T>(key: string, defaultValue?: T, options?: ConfigOptions) => Promise<T>; /** * 获取强类型配置对象 * @param configClass 配置类 * @param options 配置选项,可指定配置路径前缀 */ getConfig: <T>(configClass: new () => T, options?: ConfigOptions) => Promise<T>; /** * 订阅配置变更 * @param key 配置键 * @param callback 配置变更时的回调函数 * @param options 配置选项,可指定配置路径前缀 */ subscribe: <T>(key: string, callback: (value: T) => void, options?: ConfigOptions) => void; /** * 取消订阅配置变更 * @param key 配置键 * @param options 配置选项,可指定配置路径前缀 */ unsubscribe: (key: string, options?: ConfigOptions) => void; } /** * 配置装饰器元数据键 */ export declare const CONFIG_PROPERTY_METADATA = "config:property"; export declare const CONFIG_SECTION_METADATA = "config:section"; /** * 配置属性元数据 */ export interface ConfigPropertyMetadata { key: string; propertyKey: string; } //# sourceMappingURL=interfaces.d.ts.map